Full Version : Evolution Dragon to strong
xmlspawner >>Scripting Support >>Evolution Dragon to strong


<< Prev | Next >>

Erica- 01-13-2007
Hi ArteGordon ok what im trying to do is set the evolution dragon to a good fighting pet when it evos but they are way to strong so i want it to where a baby snake and giant snake, alligator lizard, drake, dragon and ancient look and ancient wyrm, ect, ect have a good stat and str so meaning make the ancient wyrm about the same str as a nightmare or a regular dragon theres 7 stages they go thru so from baby weak and a adult str as dragon or nightmare just trying to balance my shard i cant figure out what to change so it be balanced cause once its in 7 stage can kill a reg dragon in about one hit heres the script
CODE
using System;
using System.Collections;
using Server.Mobiles;
using Server.Items;
using Server.Network;
using Server.Targeting;
using Server.Gumps;


namespace Server.Mobiles
{
[CorpseName( "a dragon hatchling corpse" )]
public class EvolutionDragon : BaseCreature
{
 private Timer m_BreatheTimer;
 private DateTime m_EndBreathe;
 //private Timer m_MatingTimer;
 //private DateTime m_EndMating;
 
 private Timer m_PetLoyaltyTimer;
 private DateTime m_EndPetLoyalty;
 
 //public DateTime EndMating{ get{ return m_EndMating; } set{ m_EndMating = value; } }
 
 public DateTime EndPetLoyalty{ get{ return m_EndPetLoyalty; } set{ m_EndPetLoyalty = value; } }
 
 public int m_Stage;
 public int m_KP;
 //public bool m_AllowMating;
 //public bool m_HasEgg;
 //public bool m_Pregnant;
 
 public bool m_S1;
 public bool m_S2;
 public bool m_S3;
 public bool m_S4;
 public bool m_S5;
 public bool m_S6;
 
 public bool S1
 {
  get{ return m_S1; }
  set{ m_S1 = value; }
 }
 public bool S2
 {
  get{ return m_S2; }
  set{ m_S2 = value; }
 }
 public bool S3
 {
  get{ return m_S3; }
  set{ m_S3 = value; }
 }
 public bool S4
 {
  get{ return m_S4; }
  set{ m_S4 = value; }
 }
 public bool S5
 {
  get{ return m_S5; }
  set{ m_S5 = value; }
 }
 public bool S6
 {
  get{ return m_S6; }
  set{ m_S6 = value; }
 }
 
 //[CommandProperty( AccessLevel.GameMaster )]
 //public bool AllowMating
 //{
 // get{ return m_AllowMating; }
 // set{ m_AllowMating = value; }
 //}
 
 //[CommandProperty( AccessLevel.GameMaster )]
 //public bool HasEgg
 //{
 // get{ return m_HasEgg; }
 // set{ m_HasEgg = value; }
 //}
 //[CommandProperty( AccessLevel.GameMaster )]
 //public bool Pregnant
 //{
 // get{ return m_Pregnant; }
 // set{ m_Pregnant = value; }
 //}
 
 [CommandProperty( AccessLevel.GameMaster )]
 public int KP
 {
  get{ return m_KP; }
  set{ m_KP = value; }
 }
 
 [CommandProperty( AccessLevel.GameMaster )]
 public int Stage
 {
  get{ return m_Stage; }
  set{ m_Stage = value; }
 }
 
 [Constructable]
 public EvolutionDragon() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
 {
  Female = Utility.RandomBool();
  Name = "a dragon hatchling";
  Body = 52;
  Hue = Utility.RandomList( 1157, 1175, 1172, 1171, 1170, 1169, 1168, 1167, 1166, 1165, 1260, 1153 );
  BaseSoundID = 0xDB;
  Stage = 1;
 
  S1 = true;
  S2 = true;
  S3 = true;
  S4 = true;
  S5 = true;
  S6 = true;
 
  SetStr( 296, 325 );
  SetDex( 56, 75 );
  SetInt( 76, 96 );
 
  SetHits( 200, 250 );
 
  SetDamage( 11, 17 );
 
  SetDamageType( ResistanceType.Physical, 100 );
 
  SetResistance( ResistanceType.Physical, 15 );
 
  SetSkill( SkillName.Magery, 49.1, 60.0 );
  SetSkill( SkillName.Meditation, 40.1, 60.0 );
  SetSkill( SkillName.EvalInt, 40.1, 60.0 );
  SetSkill( SkillName.MagicResist, 100.5, 110.0 );
  SetSkill( SkillName.Tactics, 59.3, 60.0 );
  SetSkill( SkillName.Wrestling, 68.3, 69.0 );
  SetSkill( SkillName.Anatomy, 69.3, 100.0 );
 
  Fame = 300;
  Karma = -300;
 
  VirtualArmor = 30;
 
  ControlSlots = 3;
 
 
  m_PetLoyaltyTimer = new PetLoyaltyTimer( this, TimeSpan.FromSeconds( 5.0 ) );
  m_PetLoyaltyTimer.Start();
  m_EndPetLoyalty = DateTime.Now + TimeSpan.FromSeconds( 5.0 );
 }
 
 public EvolutionDragon(Serial serial) : base(serial)
 {
 }
 public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
 
 public override void Damage( int amount, Mobile defender )
 {
  int kpgainmin, kpgainmax;
 
  if ( this.Stage == 1 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 10;
     kpgainmax = 5 + ( bc.HitsMax ) / 5;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 5000 )
   {
    if ( this.S1 == true )
    {
     this.S1 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 500 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 1 );
     maxdamage = this.DamageMax + ( 1 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 89;
     this.BaseSoundID = 219;
     this.VirtualArmor = va;
     this.Stage = 2;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 25 );
     this.SetDamageType( ResistanceType.Cold, 25 );
     this.SetDamageType( ResistanceType.Poison, 25 );
     this.SetDamageType( ResistanceType.Energy, 25 );
     
     this.SetResistance( ResistanceType.Physical, 20 );
     this.SetResistance( ResistanceType.Fire, 20 );
     this.SetResistance( ResistanceType.Cold, 20 );
     this.SetResistance( ResistanceType.Poison, 20 );
     this.SetResistance( ResistanceType.Energy, 20 );
     
     this.RawStr += 200;
     this.RawInt += 30;
     this.RawDex += 20;
    }
   }
  }
 
  else if ( this.Stage == 2 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 20;
     kpgainmax = 5 + ( bc.HitsMax ) / 10;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 10000 )
   {
    if ( this.S2 == true )
    {
     this.S2 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 1 );
     maxdamage = this.DamageMax + ( 1 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 0xCE;
     this.BaseSoundID = 0x5A;
     this.VirtualArmor = va;
     this.Stage = 3;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 25 );
     this.SetDamageType( ResistanceType.Cold, 25 );
     this.SetDamageType( ResistanceType.Poison, 25 );
     this.SetDamageType( ResistanceType.Energy, 25 );
     
     this.SetResistance( ResistanceType.Physical, 30 );
     this.SetResistance( ResistanceType.Fire, 30 );
     this.SetResistance( ResistanceType.Cold, 30 );
     this.SetResistance( ResistanceType.Poison, 30 );
     this.SetResistance( ResistanceType.Energy, 30 );
     
     this.RawStr += 100;
     this.RawInt += 20;
     this.RawDex += 10;
    }
   }
  }
 
  else if ( this.Stage == 3 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 30;
     kpgainmax = 5 + ( bc.HitsMax ) / 20;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 15000 )
   {
    if ( this.S3 == true )
    {
     this.S3 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 1 );
     maxdamage = this.DamageMax + ( 1 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = Utility.RandomList( 60, 61 );
     this.BaseSoundID = 362;
     this.VirtualArmor = va;
     this.Stage = 4;
     
     this.SetResistance( ResistanceType.Physical, 40 );
     this.SetResistance( ResistanceType.Fire, 40 );
     this.SetResistance( ResistanceType.Cold, 40 );
     this.SetResistance( ResistanceType.Poison, 40 );
     this.SetResistance( ResistanceType.Energy, 40 );
     
     this.RawStr += 100;
     this.RawInt += 120;
     this.RawDex += 10;
    }
   }
  }
 
  else if ( this.Stage == 4 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 50;
     kpgainmax = 5 + ( bc.HitsMax ) / 40;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 35000 )
   {
    if ( this.S4 == true )
    {
     this.S4 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 5 );
     maxdamage = this.DamageMax + ( 5 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 59;
     this.VirtualArmor = va;
     this.Stage = 5;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 50 );
     this.SetDamageType( ResistanceType.Cold, 50 );
     this.SetDamageType( ResistanceType.Poison, 50 );
     this.SetDamageType( ResistanceType.Energy, 50 );
     
     this.SetResistance( ResistanceType.Physical, 50 );
     this.SetResistance( ResistanceType.Fire, 50 );
     this.SetResistance( ResistanceType.Cold, 50 );
     this.SetResistance( ResistanceType.Poison, 50 );
     this.SetResistance( ResistanceType.Energy, 50 );
     
     this.RawStr += 100;
     this.RawInt += 120;
     this.RawDex += 20;
    }
   }
  }
 
  else if ( this.Stage == 5 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 160;
     kpgainmax = 5 + ( bc.HitsMax ) / 100;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 150000 )
   {
    if ( this.S5 == true )
    {
     this.S5 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 100 );
     
     mindamage = this.DamageMin + ( 5 );
     maxdamage = this.DamageMax + ( 5 );
     
     //this.AllowMating = true;
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 46;
     this.VirtualArmor = va;
     this.Stage = 6;
     
     this.SetResistance( ResistanceType.Physical, 70 );
     this.SetResistance( ResistanceType.Fire, 65 );
     this.SetResistance( ResistanceType.Cold, 65 );
     this.SetResistance( ResistanceType.Poison, 65 );
     this.SetResistance( ResistanceType.Energy, 65 );
     
     this.RawStr += 100;
     this.RawInt += 120;
     this.RawDex += 20;
    }
   }
  }
 
  else if ( this.Stage == 6 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 540;
     kpgainmax = 5 + ( bc.HitsMax ) / 480;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 250000 )
   {
    if ( this.S6 == true )
    {
     this.S6 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 350 );
     
     va = ( this.VirtualArmor + 100 );
     
     mindamage = this.DamageMin + ( 25 );
     maxdamage = this.DamageMax + ( 25 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" is now an ancient dragon*");
     this.Title = "the Ancient Dragon";
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 172;
     this.VirtualArmor = va;
     this.Stage = 7;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 55 );
     this.SetDamageType( ResistanceType.Cold, 55 );
     this.SetDamageType( ResistanceType.Poison, 55 );
     this.SetDamageType( ResistanceType.Energy, 55 );
     
     this.RawStr += 125;
     this.RawInt += 125;
     this.RawDex += 35;
    }
   }
  }
 
  else if ( this.Stage == 7 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.Hits ) / 740;
     kpgainmax = 5 + ( bc.Hits ) / 660;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
  }
 
  base.Damage( amount, defender );
 }
 public override void OnGaveMeleeAttack( Mobile defender )
 {
  int kpgainmin, kpgainmax;
 
  if ( this.Stage == 1 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 10;
     kpgainmax = 5 + ( bc.HitsMax ) / 5;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 5000 )
   {
    if ( this.S1 == true )
    {
     this.S1 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 500 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 1 );
     maxdamage = this.DamageMax + ( 1 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 89;
     this.BaseSoundID = 219;
     this.VirtualArmor = va;
     this.Stage = 2;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 25 );
     this.SetDamageType( ResistanceType.Cold, 25 );
     this.SetDamageType( ResistanceType.Poison, 25 );
     this.SetDamageType( ResistanceType.Energy, 25 );
     
     this.SetResistance( ResistanceType.Physical, 20 );
     this.SetResistance( ResistanceType.Fire, 20 );
     this.SetResistance( ResistanceType.Cold, 20 );
     this.SetResistance( ResistanceType.Poison, 20 );
     this.SetResistance( ResistanceType.Energy, 20 );
     
     this.RawStr += 200;
     this.RawInt += 30;
     this.RawDex += 20;
    }
   }
  }
 
  else if ( this.Stage == 2 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 20;
     kpgainmax = 5 + ( bc.HitsMax ) / 10;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 10000 )
   {
    if ( this.S2 == true )
    {
     this.S2 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 1 );
     maxdamage = this.DamageMax + ( 1 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 0xCE;
     this.BaseSoundID = 0x5A;
     this.VirtualArmor = va;
     this.Stage = 3;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 25 );
     this.SetDamageType( ResistanceType.Cold, 25 );
     this.SetDamageType( ResistanceType.Poison, 25 );
     this.SetDamageType( ResistanceType.Energy, 25 );
     
     this.SetResistance( ResistanceType.Physical, 30 );
     this.SetResistance( ResistanceType.Fire, 30 );
     this.SetResistance( ResistanceType.Cold, 30 );
     this.SetResistance( ResistanceType.Poison, 30 );
     this.SetResistance( ResistanceType.Energy, 30 );
     
     this.RawStr += 100;
     this.RawInt += 20;
     this.RawDex += 10;
    }
   }
  }
 
  else if ( this.Stage == 3 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 30;
     kpgainmax = 5 + ( bc.HitsMax ) / 20;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 15000 )
   {
    if ( this.S3 == true )
    {
     this.S3 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 1 );
     maxdamage = this.DamageMax + ( 1 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = Utility.RandomList( 60, 61 );
     this.BaseSoundID = 362;
     this.VirtualArmor = va;
     this.Stage = 4;
     
     this.SetResistance( ResistanceType.Physical, 40 );
     this.SetResistance( ResistanceType.Fire, 40 );
     this.SetResistance( ResistanceType.Cold, 40 );
     this.SetResistance( ResistanceType.Poison, 40 );
     this.SetResistance( ResistanceType.Energy, 40 );
     
     this.RawStr += 100;
     this.RawInt += 120;
     this.RawDex += 10;
    }
   }
  }
 
  else if ( this.Stage == 4 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 50;
     kpgainmax = 5 + ( bc.HitsMax ) / 40;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 35000 )
   {
    if ( this.S4 == true )
    {
     this.S4 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 10 );
     
     mindamage = this.DamageMin + ( 5 );
     maxdamage = this.DamageMax + ( 5 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 59;
     this.VirtualArmor = va;
     this.Stage = 5;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 50 );
     this.SetDamageType( ResistanceType.Cold, 50 );
     this.SetDamageType( ResistanceType.Poison, 50 );
     this.SetDamageType( ResistanceType.Energy, 50 );
     
     this.SetResistance( ResistanceType.Physical, 50 );
     this.SetResistance( ResistanceType.Fire, 50 );
     this.SetResistance( ResistanceType.Cold, 50 );
     this.SetResistance( ResistanceType.Poison, 50 );
     this.SetResistance( ResistanceType.Energy, 50 );
     
     this.RawStr += 100;
     this.RawInt += 120;
     this.RawDex += 20;
    }
   }
  }
 
  else if ( this.Stage == 5 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 160;
     kpgainmax = 5 + ( bc.HitsMax ) / 100;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 150000 )
   {
    if ( this.S5 == true )
    {
     this.S5 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 100 );
     
     va = ( this.VirtualArmor + 100 );
     
     mindamage = this.DamageMin + ( 10 );
     maxdamage = this.DamageMax + ( 10 );
     
     //this.AllowMating = true;
     this.Warmode = false;
     this.Say( "*"+ this.Name +" evolves*");
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 46;
     this.VirtualArmor = va;
     this.Stage = 6;
     
     this.SetResistance( ResistanceType.Physical, 70 );
     this.SetResistance( ResistanceType.Fire, 65 );
     this.SetResistance( ResistanceType.Cold, 65 );
     this.SetResistance( ResistanceType.Poison, 65 );
     this.SetResistance( ResistanceType.Energy, 65 );
     
     this.RawStr += 100;
     this.RawInt += 120;
     this.RawDex += 20;
    }
   }
  }
 
  else if ( this.Stage == 6 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.HitsMax ) / 540;
     kpgainmax = 5 + ( bc.HitsMax ) / 480;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
   
   if ( this.KP >= 250000 )
   {
    if ( this.S6 == true )
    {
     this.S6 = false;
     int hits, va, mindamage, maxdamage;
     
     hits = ( this.HitsMax + 350 );
     
     va = ( this.VirtualArmor + 100 );
     
     mindamage = this.DamageMin + ( 25 );
     maxdamage = this.DamageMax + ( 25 );
     
     this.Warmode = false;
     this.Say( "*"+ this.Name +" is now an ancient dragon*");
     this.Title = "the Ancient Dragon";
     this.SetDamage( mindamage, maxdamage );
     this.SetHits( hits );
     this.BodyValue = 172;
     this.VirtualArmor = va;
     this.Stage = 7;
     
     this.SetDamageType( ResistanceType.Physical, 100 );
     this.SetDamageType( ResistanceType.Fire, 55 );
     this.SetDamageType( ResistanceType.Cold, 55 );
     this.SetDamageType( ResistanceType.Poison, 55 );
     this.SetDamageType( ResistanceType.Energy, 55 );
     
     this.RawStr += 125;
     this.RawInt += 125;
     this.RawDex += 35;
    }
   }
  }
 
  else if ( this.Stage == 7 )
  {
   if ( defender is BaseCreature )
   {
    BaseCreature bc = (BaseCreature)defender;
   
    if ( bc.Controlled != true )
    {
     kpgainmin = 5 + ( bc.Hits ) / 740;
     kpgainmax = 5 + ( bc.Hits ) / 660;
     
     this.KP += Utility.RandomList( kpgainmin, kpgainmax );
    }
   }
  }
 
  base.OnGaveMeleeAttack( defender );
 }
 
 public override bool OnDragDrop( Mobile from, Item dropped )
 {
  PlayerMobile player = from as PlayerMobile;
 
  if ( player != null )
  {
   if ( dropped is DragonDust )
   {
    DragonDust dust = ( DragonDust )dropped;
   
    int amount = ( dust.Amount * 10 );
   
    this.PlaySound( 665 );
    this.KP += amount;
    dust.Delete();
    this.Say( "*"+ this.Name +" absorbs the dragon dust*" );
   
    return false;
   }
   else
   {
   }
  }
  return base.OnDragDrop( from, dropped );
 }
 
 
 public override void OnDoubleClick( Mobile from )
 {
  if ( this.Controlled == true && this.ControlMaster == from )
  {
   //from.SendMessage( "DNA dragon you need tools to dna it." );
   //   from.BeginTarget( -1, false, TargetFlags.Harmful, new TargetCallback( MatingTarget_Callback ) );
  }
  //else
  //{
  // from.SendMessage( "target a DNA dragon you need tools to dna it!" );
  //}
 }
 // }
 // }
 
 private DateTime m_NextBreathe;
 
 public override void OnActionCombat()
 {
  Mobile combatant = Combatant;
 
  if ( combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 12 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
   return;
 
  if ( DateTime.Now >= m_NextBreathe )
  {
   Breathe( combatant );
   
   m_NextBreathe = DateTime.Now + TimeSpan.FromSeconds( 12.0 + (3.0 * Utility.RandomDouble()) ); // 12-15 seconds
  }
 }
 
 public void Breathe( Mobile m )
 {
  DoHarmful( m );
 
  m_BreatheTimer = new BreatheTimer( m, this, this, TimeSpan.FromSeconds( 1.0 ) );
  m_BreatheTimer.Start();
  m_EndBreathe = DateTime.Now + TimeSpan.FromSeconds( 1.0 );
 
  this.Frozen = true;
 
  if ( this.Stage == 1 )
  {
   this.MovingParticles( m, 0x1FA8, 1, 0, false, true, ( this.Hue - 1 ), 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
  }
  else if ( this.Stage == 2 )
  {
   this.MovingParticles( m, 0x1FA9, 1, 0, false, true, ( this.Hue - 1 ), 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
  }
  else if ( this.Stage == 3 )
  {
   this.MovingParticles( m, 0x1FAB, 1, 0, false, true, ( this.Hue - 1 ), 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
  }
  else if ( this.Stage == 4 )
  {
   this.MovingParticles( m, 0x1FBC, 1, 0, false, true, ( this.Hue - 1 ), 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
  }
  else if ( this.Stage == 5 )
  {
   this.MovingParticles( m, 0x1FBD, 1, 0, false, true, ( this.Hue - 1 ), 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
  }
  else if ( this.Stage == 6 )
  {
   this.MovingParticles( m, 0x1FBF, 1, 0, false, true, ( this.Hue - 1 ), 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
  }
  else if ( this.Stage == 7 )
  {
   this.MovingParticles( m, 0x1FBE, 1, 0, false, true, ( this.Hue - 1 ), 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
  }
  else
  {
   
   this.PublicOverheadMessage( MessageType.Regular, this.SpeechHue, true, "Please call a GM if you are getting this message, they will fix the breathe, thank you :)", false );
  }
 }
 
 private class BreatheTimer : Timer
 {
  private EvolutionDragon ed;
  private Mobile m_Mobile, m_From;
 
  public BreatheTimer( Mobile m, EvolutionDragon owner, Mobile from, TimeSpan duration ) : base( duration )
  {
   ed = owner;
   m_Mobile = m;
   m_From = from;
   Priority = TimerPriority.TwoFiftyMS;
  }
 
  protected override void OnTick()
  {
   int damagemin = ed.Hits / 20;
   int damagemax = ed.Hits / 25;
   ed.Frozen = false;
   
   m_Mobile.PlaySound( 0x11D );
   AOS.Damage( m_Mobile, m_From, Utility.RandomMinMax( damagemin, damagemax ), 0, 100, 0, 0, 0 );
   Stop();
  }
 }
 
 public override void Serialize(GenericWriter writer)
 {
  base.Serialize(writer);
 
  writer.Write((int) 1);
  //  writer.Write( m_AllowMating );
  //  writer.Write( m_HasEgg );
  //  writer.Write( m_Pregnant );
  writer.Write( m_S1 );
  writer.Write( m_S2 );
  writer.Write( m_S3 );
  writer.Write( m_S4 );
  writer.Write( m_S5 );
  writer.Write( m_S6 );
  writer.Write( (int) m_KP );
  writer.Write( (int) m_Stage );
  // writer.WriteDeltaTime( m_EndMating );
  writer.WriteDeltaTime( m_EndBreathe );
  writer.WriteDeltaTime( m_EndPetLoyalty );
 }
 
 public override void Deserialize(GenericReader reader)
 {
  base.Deserialize(reader);
 
  int version = reader.ReadInt();
 
  switch ( version )
  {
   case 1:
    {
     //  m_AllowMating = reader.ReadBool();
     ////  m_HasEgg = reader.ReadBool();
     //  m_Pregnant = reader.ReadBool();
     m_S1 = reader.ReadBool();
     m_S2 = reader.ReadBool();
     m_S3 = reader.ReadBool();
     m_S4 = reader.ReadBool();
     m_S5 = reader.ReadBool();
     m_S6 = reader.ReadBool();
     m_KP = reader.ReadInt();
     m_Stage = reader.ReadInt();
     
     //m_EndMating = reader.ReadDeltaTime();
     //m_MatingTimer = new MatingTimer( this, m_EndMating - DateTime.Now );
     //m_MatingTimer.Start();
     
     m_EndBreathe = reader.ReadDeltaTime();
     m_BreatheTimer = new BreatheTimer( this, this, this, m_EndBreathe - DateTime.Now );
     m_BreatheTimer.Start();
     
     m_EndPetLoyalty = reader.ReadDeltaTime();
     m_PetLoyaltyTimer = new PetLoyaltyTimer( this, m_EndPetLoyalty - DateTime.Now );
     m_PetLoyaltyTimer.Start();
     
     break;
    }
   case 0:
    {
     TimeSpan durationbreathe = TimeSpan.FromSeconds( 1.0 );
     TimeSpan durationmating = TimeSpan.FromDays( 3.0 );
     TimeSpan durationloyalty = TimeSpan.FromSeconds( 5.0 );
     
     m_BreatheTimer = new BreatheTimer( this, this, this, durationbreathe );
     m_BreatheTimer.Start();
     m_EndBreathe = DateTime.Now + durationbreathe;
     
     //m_MatingTimer = new MatingTimer( this, durationmating );
     //m_MatingTimer.Start();
     //m_EndMating = DateTime.Now + durationmating;
     
     m_PetLoyaltyTimer = new PetLoyaltyTimer( this, durationloyalty );
     m_PetLoyaltyTimer.Start();
     m_EndPetLoyalty = DateTime.Now + durationloyalty;
     
     break;
    }
  }
 }
}

public class PetLoyaltyTimer : Timer
{
 private EvolutionDragon ed;
 
 public PetLoyaltyTimer( EvolutionDragon owner, TimeSpan duration ) : base( duration )
 {
  Priority = TimerPriority.OneSecond;
  ed = owner;
 }
 
 protected override void OnTick()
 {
  if ( Core.SE )
   ed.Loyalty = BaseCreature.MaxLoyalty; // Wonderfully happy
  //ed.Loyalty = PetLoyalty.WonderfullyHappy;
 
  PetLoyaltyTimer lt = new PetLoyaltyTimer( ed, TimeSpan.FromSeconds( 5.0 ) );
  lt.Start();
  ed.EndPetLoyalty = DateTime.Now + TimeSpan.FromSeconds( 5.0 );
 
  Stop();
 }
}
}
//}
All im wanting to make it fair can you tell me what codes numbers to change so it can be balanced. Thanks.

ArteGordon- 01-13-2007
dont increment the RawStr so much.