using System; using Server; using Server.Items; namespace Server.Mobiles { [CorpseName( "an ill soul corpse" )] public class IllSoul : BaseCreature { [Constructable] public IllSoul() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 ) // TODO apellweaving AI { Name = "an ill soul"; Body = 400; Hue = 685; BaseSoundID = 0x482; AddItem( new Hatchet() ); AddItem( new ThighBoots() ); AddItem( new Doublet() ); AddItem( new ChainLegs() ); AddItem( new NorseHelm() ); AddItem( new LeatherArms() ); SetStr( 126, 150 ); SetDex( 96, 120 ); SetInt( 151, 175 ); SetHits( 76, 90 ); SetDamage( 6, 12 ); SetDamageType( ResistanceType.Physical, 100 ); SetResistance( ResistanceType.Physical, 30, 40 ); SetResistance( ResistanceType.Fire, 25, 35 ); SetResistance( ResistanceType.Cold, 35, 45 ); SetResistance( ResistanceType.Poison, 5, 15 ); SetResistance( ResistanceType.Energy, 15, 25 ); SetSkill( SkillName.EvalInt, 95.1, 100.0 ); SetSkill( SkillName.Wrestling, 95.1, 100.0 ); SetSkill( SkillName.Meditation, 95.1, 100.0 ); SetSkill( SkillName.MagicResist, 102.5, 125.0 ); SetSkill( SkillName.Tactics, 85.0, 100.5 ); SetSkill( SkillName.Fencing, 85.0, 100.0 ); Fame = 4000; Karma = -4000; VirtualArmor = 16; if ( 0.7 > Utility.RandomDouble() ) PackItem( new ArcaneGem() ); } public override void GenerateLoot() { AddLoot( LootPack.Rich ); } public void AddArcane( Item item ) { if ( item is IArcaneEquip ) { IArcaneEquip eq = (IArcaneEquip)item; eq.CurArcaneCharges = eq.MaxArcaneCharges = 20; } item.Hue = ArcaneGem.DefaultArcaneHue; item.LootType = LootType.Newbied; AddItem( item ); } public override Poison PoisonImmune { get { return Poison.Regular; } } public override Poison HitPoison { get { return Poison.Regular; } } public override bool ClickTitle{ get{ return false; } } public override bool ShowFameTitle{ get{ return false; } } public override bool AlwaysMurderer{ get{ return true; } } public IllSoul( Serial serial ) : base( serial ) { } public override bool OnBeforeDeath() { BoneKnight rm = new BoneKnight(); rm.Team = this.Team; rm.Combatant = this.Combatant; rm.NoKillAwards = true; if ( rm.Backpack == null ) { Backpack pack = new Backpack(); pack.Movable = false; rm.AddItem( pack ); } for ( int i = 0; i < 2; i++ ) { LootPack.FilthyRich.Generate( this, rm.Backpack, true, LootPack.GetLuckChanceForKiller( this ) ); LootPack.FilthyRich.Generate( this, rm.Backpack, false, LootPack.GetLuckChanceForKiller( this ) ); } Effects.PlaySound(this, Map, GetDeathSound()); Effects.SendLocationEffect( Location, Map, 0x3709, 30, 10, 0x835, 0 ); rm.MoveToWorld( Location, Map ); Delete(); return false; } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } }