#W# Initial Commit: Avatars Conquest

This commit is contained in:
WarrentyExpired 2026-07-03 20:19:48 -04:00
commit 8eae46895e
7512 changed files with 416187 additions and 0 deletions

View file

@ -0,0 +1,95 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an ancient liche's corpse" )]
public class AncientLich : BaseCreature
{
[Constructable]
public AncientLich() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "lich" );
HiddenTitle = "the ancient lich";
Body = 24;
Hue = 2101;
BaseSoundID = 412;
Clan = Clan.Undead;
SetStr( 216, 305 );
SetDex( 96, 115 );
SetInt( 966, 1045 );
SetHits( 560, 595 );
SetDamage( 15, 27 );
SetSkill( SkillName.Concentration, 120.1, 130.0 );
SetSkill( SkillName.Magery, 120.1, 130.0 );
SetSkill( SkillName.Meditation, 100.1, 101.0 );
SetSkill( SkillName.Poisoning, 100.1, 101.0 );
SetSkill( SkillName.MagicResist, 175.2, 200.0 );
SetSkill( SkillName.Tactics, 90.1, 100.0 );
SetSkill( SkillName.HandToHand, 75.1, 100.0 );
Fame = 23000;
Karma = -23000;
VirtualArmor = 60;
PackReg( 30, 275 );
PackItem( new Bone( Utility.RandomList(3,4,5,6) ) );
}
public override int GetIdleSound()
{
return 0x19D;
}
public override int GetAngerSound()
{
return 0x175;
}
public override int GetDeathSound()
{
return 0x108;
}
public override int GetAttackSound()
{
return 0xE2;
}
public override int GetHurtSound()
{
return 0x28B;
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 3 );
AddLoot( LootPack.HighScrolls, 2 );
}
public override bool Unprovokable{ get{ return true; } }
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public AncientLich( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,68 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a vampire corpse" )]
public class AncientVampire : BaseCreature
{
[Constructable]
public AncientVampire() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "vampire" );
HiddenTitle = "the ancient vampire";
Body = 128;
BaseSoundID = 0x47D;
AnimationMod = 3;
Clan = Clan.Undead;
SetStr( 216, 305 );
SetDex( 96, 115 );
SetInt( 966, 1045 );
SetHits( 560, 595 );
SetDamage( 15, 27 );
SetSkill( SkillName.Concentration, 120.1, 130.0 );
SetSkill( SkillName.Magery, 120.1, 130.0 );
SetSkill( SkillName.Meditation, 100.1, 101.0 );
SetSkill( SkillName.Poisoning, 100.1, 101.0 );
SetSkill( SkillName.MagicResist, 175.2, 200.0 );
SetSkill( SkillName.Tactics, 90.1, 100.0 );
SetSkill( SkillName.HandToHand, 75.1, 100.0 );
Fame = 23000;
Karma = -23000;
VirtualArmor = 60;
PackReg( 30, 275 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 3 );
AddLoot( LootPack.HighScrolls, 2 );
}
public override bool Unprovokable{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public AncientVampire( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a skeletal corpse" )]
public class BoneClaw : BaseCreature
{
[Constructable]
public BoneClaw() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a bone claw";
Body = 331;
BaseSoundID = 0x48D;
Clan = Clan.Undead;
SetStr( 156, 180 );
SetDex( 156, 175 );
SetInt( 16, 40 );
SetHits( 134, 148 );
SetDamage( 13, 17 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 85.1, 100.0 );
SetSkill( SkillName.HandToHand, 85.1, 105.0 );
Fame = 650;
Karma = -650;
VirtualArmor = 28;
switch ( Utility.Random( 5 ))
{
case 0: PackItem( new BoneArms() ); break;
case 1: PackItem( new BoneChest() ); break;
case 2: PackItem( new BoneGloves() ); break;
case 3: PackItem( new BoneLegs() ); break;
case 4: PackItem( new BoneHelm() ); break;
}
PackItem( new Bone( Utility.RandomList(1,2,3,4) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Poor );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public BoneClaw( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a drake corpse" )]
public class BoneDrake : BaseCreature
{
[Constructable]
public BoneDrake () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a bone drake";
Body = 360;
BaseSoundID = 0x488;
Clan = Clan.Undead;
SetStr( 401, 430 );
SetDex( 133, 152 );
SetInt( 336, 375 );
SetHits( 241, 258 );
SetDamage( 11, 17 );
SetSkill( SkillName.Tactics, 65.1, 90.0 );
SetSkill( SkillName.HandToHand, 65.1, 80.0 );
SetSkill( SkillName.Concentration, 30.1, 40.0 );
SetSkill( SkillName.Magery, 30.1, 40.0 );
SetSkill( SkillName.MagicResist, 99.1, 100.0 );
Fame = 7500;
Karma = -7500;
VirtualArmor = 46;
PackItem( new Bone( Utility.RandomList(3,4,5,6) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich, 2 );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool ReacquireOnMovement{ get{ return !Controlled; } }
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public BoneDrake( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,76 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a skeletal corpse" )]
public class BoneKnight : BaseCreature
{
[Constructable]
public BoneKnight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a bone knight";
Body = 57;
BaseSoundID = 451;
Clan = Clan.Undead;
SetStr( 196, 250 );
SetDex( 176, 195 );
SetInt( 36, 60 );
SetHits( 178, 220 );
SetDamage( 8, 18 );
SetSkill( SkillName.MagicResist, 85.1, 100.0 );
SetSkill( SkillName.Tactics, 95.1, 100.0 );
SetSkill( SkillName.HandToHand, 85.1, 100.0 );
Fame = 5000;
Karma = -5000;
VirtualArmor = 40;
switch ( Utility.Random( 6 ) )
{
case 0: PackItem( new PlateArms() ); break;
case 1: PackItem( new PlateChest() ); break;
case 2: PackItem( new PlateGloves() ); break;
case 3: PackItem( new PlateGorget() ); break;
case 4: PackItem( new PlateLegs() ); break;
case 5: PackItem( new PlateHelm() ); break;
}
PackItem( new Scimitar() );
PackItem( new WoodenShield() );
PackItem( new Bone( Utility.RandomList(1,2,3,4) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public BoneKnight( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,67 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a skeletal corpse" )]
public class BoneMagi : BaseCreature
{
[Constructable]
public BoneMagi() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a bone magi";
Body = Utility.RandomList ( 74, 332, 121 );
BaseSoundID = 451;
Clan = Clan.Undead;
SetStr( 176, 200 );
SetDex( 156, 175 );
SetInt( 286, 310 );
SetHits( 90, 120 );
SetDamage( 7, 12 );
SetSkill( SkillName.Concentration, 80.1, 90.0 );
SetSkill( SkillName.Magery, 80.1, 90.0 );
SetSkill( SkillName.MagicResist, 75.1, 90.0 );
SetSkill( SkillName.Tactics, 65.1, 80.0 );
SetSkill( SkillName.HandToHand, 65.1, 75.0 );
Fame = 6000;
Karma = -6000;
VirtualArmor = 38;
PackReg( 6, 20 );
PackItem( new Bone( Utility.RandomList(1,1,2,3) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.LowScrolls );
AddLoot( LootPack.MedPotions );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public BoneMagi( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,67 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a corpse" )]
public class CorpseGolem : BaseCreature
{
[Constructable]
public CorpseGolem () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a corpse golem";
Body = 318;
BaseSoundID = 471;
AnimationMod = 3;
SetStr( 256, 305 );
SetDex( 66, 95 );
SetInt( 31, 55 );
SetHits( 148, 196 );
SetMana( 0 );
SetDamage( 9, 16 );
SetSkill( SkillName.MagicResist, 60.3, 85.0 );
SetSkill( SkillName.Tactics, 70.1, 80.0 );
SetSkill( SkillName.HandToHand, 80.1, 90.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 40;
PackItem( new Bandage( Utility.RandomMinMax( 15, 25 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Average );
AddLoot( LootPack.MedPotions );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public override int Meat{ get{ return 2; } }
public CorpseGolem( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,69 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a liche's corpse" )]
public class Demilich : BaseCreature
{
[Constructable]
public Demilich() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "lich" );
HiddenTitle = "the demilich";
Body = 142;
BaseSoundID = 0x3E9;
AnimationMod = 3;
Clan = Clan.Undead;
SetStr( 541, 657 );
SetDex( 190, 215 );
SetInt( 735, 852 );
SetHits( 325, 394 );
SetDamage( 14, 17 );
SetSkill( SkillName.Concentration, 117.1, 130.0 );
SetSkill( SkillName.Magery, 117.1, 130.0 );
SetSkill( SkillName.MagicResist, 150.5, 200.0 );
SetSkill( SkillName.Tactics, 65.1, 91.0 );
SetSkill( SkillName.HandToHand, 78.1, 104.0 );
Fame = 20000;
Karma = -20000;
VirtualArmor = 55;
PackReg( 22, 50 );
PackItem( new Bone( Utility.RandomList(2,3,4,5) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 2 );
AddLoot( LootPack.MedScrolls );
AddLoot( LootPack.HighScrolls );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Demilich( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,67 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a corpse" )]
public class FleshGolem : BaseCreature
{
[Constructable]
public FleshGolem () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a flesh golem";
Body = 262;
BaseSoundID = 471;
AnimationMod = 1;
SetStr( 166, 195 );
SetDex( 46, 65 );
SetInt( 46, 70 );
SetHits( 100, 117 );
SetMana( 0 );
SetDamage( 9, 11 );
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
SetSkill( SkillName.Tactics, 60.1, 70.0 );
SetSkill( SkillName.HandToHand, 70.1, 80.0 );
Fame = 3000;
Karma = -3000;
VirtualArmor = 32;
PackItem( new Club() );
PackItem( new Bandage( Utility.RandomMinMax( 10, 20 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.LowPotions );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 2; } }
public override Poison PoisonImmune{ get{ return Poison.Lesser; } }
public FleshGolem( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,68 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a corpse" )]
public class FleshGoliath : BaseCreature
{
[Constructable]
public FleshGoliath () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a flesh goliath";
Body = 49;
BaseSoundID = 471;
SetStr( 336, 385 );
SetDex( 96, 115 );
SetInt( 31, 55 );
SetHits( 202, 231 );
SetMana( 0 );
SetDamage( 7, 23 );
SetSkill( SkillName.MagicResist, 60.3, 105.0 );
SetSkill( SkillName.Tactics, 80.1, 100.0 );
SetSkill( SkillName.HandToHand, 80.1, 90.0 );
Fame = 4500;
Karma = -4500;
VirtualArmor = 48;
PackItem( new Axe() );
PackItem( new Axe() );
PackItem( new Bandage( Utility.RandomMinMax( 20, 30 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Average );
AddLoot( LootPack.MedPotions );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public override int Meat{ get{ return 2; } }
public FleshGoliath( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,86 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a ghastly corpse" )]
public class Ghoul : BaseCreature
{
[Constructable]
public Ghoul() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a ghoul";
Body = 38;
BaseSoundID = 471;
Clan = Clan.Undead;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 46, 60 );
SetMana( 0 );
SetDamage( 7, 9 );
SetSkill( SkillName.Poisoning, 45.1, 60.0 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
Fame = 2500;
Karma = -2500;
VirtualArmor = 28;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lesser; } }
public void DrainBlood( Mobile m )
{
DoHarmful( m );
new Blood().MoveToWorld( m.Location, m.Map );
m.SendMessage( "The creature feeds on your flesh!" );
int toDrain = Utility.RandomMinMax( 2, 10 );
m.PlaySound( 0x23F );
Hits += toDrain;
m.Damage( toDrain, this );
}
public override void OnGaveMeleeAttack( Mobile defender )
{
base.OnGaveMeleeAttack( defender );
DrainBlood( defender );
}
public override void OnGotMeleeAttack( Mobile attacker )
{
base.OnGotMeleeAttack( attacker );
DrainBlood( attacker );
}
public Ghoul( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,67 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a liche's corpse" )]
public class Lich : BaseCreature
{
[Constructable]
public Lich() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a lich";
Body = 24;
BaseSoundID = 0x3E9;
Clan = Clan.Undead;
SetStr( 171, 200 );
SetDex( 126, 145 );
SetInt( 276, 305 );
SetHits( 103, 120 );
SetDamage( 24, 26 );
SetSkill( SkillName.Concentration, 100.0 );
SetSkill( SkillName.Magery, 70.1, 80.0 );
SetSkill( SkillName.Meditation, 85.1, 95.0 );
SetSkill( SkillName.MagicResist, 80.1, 100.0 );
SetSkill( SkillName.Tactics, 70.1, 90.0 );
Fame = 8000;
Karma = -8000;
VirtualArmor = 50;
PackItem( new GnarledStaff() );
PackReg( 17, 24 );
PackItem( new Bone( Utility.RandomList(1,2,3,4) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Lich( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,67 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a liche's corpse" )]
public class LichLord : BaseCreature
{
[Constructable]
public LichLord() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a lich lord";
Body = 24;
BaseSoundID = 412;
Clan = Clan.Undead;
SetStr( 416, 505 );
SetDex( 146, 165 );
SetInt( 566, 655 );
SetHits( 250, 303 );
SetDamage( 11, 13 );
SetSkill( SkillName.Concentration, 90.1, 100.0 );
SetSkill( SkillName.Magery, 90.1, 100.0 );
SetSkill( SkillName.MagicResist, 150.5, 200.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
Fame = 18000;
Karma = -18000;
VirtualArmor = 50;
PackItem( new GnarledStaff() );
PackReg( 12, 40 );
PackItem( new Bone( Utility.RandomList(2,3,4,5) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public LichLord( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a mummy corpse" )]
public class Mummy : BaseCreature
{
[Constructable]
public Mummy() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8 )
{
Name = "a mummy";
Body = 65;
BaseSoundID = 471;
Clan = Clan.Undead;
SetStr( 346, 370 );
SetDex( 71, 90 );
SetInt( 26, 40 );
SetHits( 208, 222 );
SetDamage( 13, 23 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 35.1, 50.0 );
SetSkill( SkillName.HandToHand, 35.1, 50.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 50;
PackItem( new Garlic( 5 ) );
PackItem( new Bandage( 10 ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Gems );
AddLoot( LootPack.LowPotions );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lesser; } }
public Mummy( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a mummy corpse" )]
public class MummyLord : BaseCreature
{
[Constructable]
public MummyLord() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8 )
{
Name = "the mummy lord";
Body = 65;
BaseSoundID = 471;
AnimationMod = 1;
Clan = Clan.Undead;
SetStr( 546, 570 );
SetDex( 271, 290 );
SetInt( 26, 40 );
SetHits( 408, 422 );
SetDamage( 18, 28 );
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
SetSkill( SkillName.Tactics, 85.1, 110.0 );
SetSkill( SkillName.HandToHand, 85.1, 110.0 );
Fame = 8500;
Karma = -8500;
VirtualArmor = 50;
PackItem( new Garlic( Utility.RandomMinMax( 10, 20 ) ) );
PackItem( new Bandage( Utility.RandomMinMax( 10, 20 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich, 2 );
AddLoot( LootPack.Gems, 2 );
AddLoot( LootPack.MedPotions );
}
public override Poison PoisonImmune{ get{ return Poison.Greater; } }
public MummyLord( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a ghoulish corpse" )]
public class Nazghoul : BaseCreature
{
[Constructable]
public Nazghoul() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a nazghoul";
Body = 297;
BaseSoundID = 471;
Clan = Clan.Undead;
SetStr( 416, 505 );
SetDex( 146, 165 );
SetInt( 566, 655 );
SetHits( 250, 303 );
SetDamage( 11, 13 );
SetSkill( SkillName.Concentration, 90.1, 100.0 );
SetSkill( SkillName.Magery, 90.1, 100.0 );
SetSkill( SkillName.MagicResist, 150.5, 200.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
Fame = 18000;
Karma = -18000;
VirtualArmor = 50;
PackReg( 12, 40 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Nazghoul( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,64 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a rotting corpse" )]
public class RottingCorpse : BaseCreature
{
[Constructable]
public RottingCorpse() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a rotting corpse";
Body = 332;
BaseSoundID = 471;
Clan = Clan.Undead;
SetStr( 301, 350 );
SetDex( 75 );
SetInt( 151, 200 );
SetHits( 1200 );
SetStam( 150 );
SetMana( 0 );
SetDamage( 8, 10 );
SetSkill( SkillName.Poisoning, 120.0 );
SetSkill( SkillName.MagicResist, 250.0 );
SetSkill( SkillName.Tactics, 100.0 );
SetSkill( SkillName.HandToHand, 90.1, 100.0 );
Fame = 6000;
Karma = -6000;
VirtualArmor = 40;
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 2 );
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public RottingCorpse( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a drake corpse" )]
public class RottingDrake : BaseCreature
{
[Constructable]
public RottingDrake () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a rotting drake";
Body = 225;
Hue = 1186;
BaseSoundID = 362;
Clan = Clan.Undead;
SetStr( 401, 430 );
SetDex( 133, 152 );
SetInt( 101, 140 );
SetHits( 241, 258 );
SetDamage( 11, 17 );
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
SetSkill( SkillName.Tactics, 65.1, 90.0 );
SetSkill( SkillName.HandToHand, 65.1, 80.0 );
Fame = 5500;
Karma = -5500;
VirtualArmor = 46;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
}
public override bool ReacquireOnMovement{ get{ return !Controlled; } }
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Regular; } }
public RottingDrake( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a ghostly corpse" )]
public class Shade : BaseCreature
{
[Constructable]
public Shade() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a shade";
Body = 26;
Hue = 1181;
BaseSoundID = 0x482;
Clan = Clan.Undead;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 46, 60 );
SetDamage( 7, 11 );
SetSkill( SkillName.Concentration, 55.1, 70.0 );
SetSkill( SkillName.Magery, 55.1, 70.0 );
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 28;
PackReg( 10 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Shade( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,73 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a skeletal dragon corpse" )]
public class SkeletalDragon : BaseCreature
{
[Constructable]
public SkeletalDragon () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a skeletal dragon";
Body = 104;
BaseSoundID = 0x488;
Clan = Clan.Undead;
SetStr( 898, 1030 );
SetDex( 68, 200 );
SetInt( 488, 620 );
SetHits( 558, 599 );
SetDamage( 29, 35 );
SetSkill( SkillName.Concentration, 80.1, 100.0 );
SetSkill( SkillName.Magery, 80.1, 100.0 );
SetSkill( SkillName.MagicResist, 100.3, 130.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.HandToHand, 97.6, 100.0 );
Fame = 22500;
Karma = -22500;
VirtualArmor = 80;
PackItem( new Bone( Utility.RandomList(6,7,8,9) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 4 );
AddLoot( LootPack.Gems, 5 );
}
public override bool ReacquireOnMovement{ get{ return true; } }
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override int BreathFireDamage{ get{ return 0; } }
public override int BreathColdDamage{ get{ return 100; } }
public override int BreathEffectHue{ get{ return 0x480; } }
public override double BonusPetDamageScalar{ get{ return 1.0; } }
public override bool AutoDispel{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override bool BleedImmune{ get{ return true; } }
public override int Meat{ get{ return 19; } } // where's it hiding these? :)
public override int Hides{ get{ return 20; } }
public SkeletalDragon( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,76 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a skeletal corpse" )]
public class SkeletalKnight : BaseCreature
{
[Constructable]
public SkeletalKnight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a skeletal knight";
Body = 160;
BaseSoundID = 451;
AnimationMod = 4;
Clan = Clan.Undead;
SetStr( 196, 250 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 118, 150 );
SetDamage( 6, 12 );
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
SetSkill( SkillName.Tactics, 85.1, 100.0 );
SetSkill( SkillName.HandToHand, 85.1, 95.0 );
Fame = 3000;
Karma = -3000;
VirtualArmor = 30;
switch ( Utility.Random( 6 ) )
{
case 0: PackItem( new PlateArms() ); break;
case 1: PackItem( new PlateChest() ); break;
case 2: PackItem( new PlateGloves() ); break;
case 3: PackItem( new PlateGorget() ); break;
case 4: PackItem( new PlateLegs() ); break;
case 5: PackItem( new PlateHelm() ); break;
}
PackItem( new Longsword() );
PackItem( new Bone( Utility.RandomList(1,2,3,4) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public SkeletalKnight( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a skeletal corpse" )]
public class SkeletalMage : BaseCreature
{
[Constructable]
public SkeletalMage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a skeletal mage";
Body = Utility.RandomList ( 74, 332, 121 );
BaseSoundID = 451;
Clan = Clan.Undead;
SetStr( 76, 100 );
SetDex( 56, 75 );
SetInt( 186, 210 );
SetHits( 46, 60 );
SetDamage( 3, 7 );
SetSkill( SkillName.Concentration, 60.1, 70.0 );
SetSkill( SkillName.Magery, 60.1, 70.0 );
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
Fame = 3000;
Karma = -3000;
VirtualArmor = 28;
PackReg( 3, 10 );
PackItem( new Bone( Utility.RandomList(1,1,2,3) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.LowScrolls );
AddLoot( LootPack.LowPotions );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public SkeletalMage( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,75 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a skeletal corpse" )]
public class Skeleton : BaseCreature
{
[Constructable]
public Skeleton() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a skeleton";
Body = Utility.RandomList( 50, 56 );
BaseSoundID = 0x48D;
Clan = Clan.Undead;
SetStr( 56, 80 );
SetDex( 56, 75 );
SetInt( 16, 40 );
SetHits( 34, 48 );
SetDamage( 3, 7 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
Fame = 450;
Karma = -450;
VirtualArmor = 16;
switch ( Utility.Random( 5 ))
{
case 0: PackItem( new BoneArms() ); break;
case 1: PackItem( new BoneChest() ); break;
case 2: PackItem( new BoneGloves() ); break;
case 3: PackItem( new BoneLegs() ); break;
case 4: PackItem( new BoneHelm() ); break;
}
PackItem( new Bone( Utility.RandomList(1,1,1,2) ) );
if ( Body == 56 )
PackItem( new BattleAxe() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Poor );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Skeleton( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,76 @@
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a skeletal corpse" )]
public class SkeletonArcher : BaseCreature
{
[Constructable]
public SkeletonArcher() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a skeleton";
Body = 250;
BaseSoundID = 0x48D;
Clan = Clan.Undead;
SetStr( 56, 80 );
SetDex( 56, 75 );
SetInt( 16, 40 );
SetHits( 34, 48 );
SetDamage( 3, 7 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
SetSkill( SkillName.Archery, 45.1, 55.0 );
Fame = 450;
Karma = -450;
VirtualArmor = 16;
switch ( Utility.Random( 5 ))
{
case 0: PackItem( new BoneArms() ); break;
case 1: PackItem( new BoneChest() ); break;
case 2: PackItem( new BoneGloves() ); break;
case 3: PackItem( new BoneLegs() ); break;
case 4: PackItem( new BoneHelm() ); break;
}
PackItem( new Bone( Utility.RandomList(1,1,1,2) ) );
PackItem( new Bow() );
PackItem( new Arrow( Utility.RandomMinMax( 10, 30 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Poor );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public SkeletonArcher( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a ghostly corpse" )]
public class Spectre : BaseCreature
{
[Constructable]
public Spectre() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a spectre";
Body = 26;
Hue = 0x4001;
BaseSoundID = 0x482;
Clan = Clan.Undead;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 46, 60 );
SetDamage( 7, 11 );
SetSkill( SkillName.Concentration, 55.1, 70.0 );
SetSkill( SkillName.Magery, 55.1, 70.0 );
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 28;
PackReg( 10 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Spectre( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
using Server.Misc;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a vampire corpse" )]
public class Vampire : BaseCreature
{
[Constructable]
public Vampire() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a vampire";
Body = 298;
BaseSoundID = 0x47D;
Clan = Clan.Undead;
SetStr( 81, 105 );
SetDex( 91, 115 );
SetInt( 96, 120 );
SetHits( 49, 63 );
SetDamage( 5, 10 );
SetSkill( SkillName.Concentration, 75.1, 100.0 );
SetSkill( SkillName.Magery, 75.1, 100.0 );
SetSkill( SkillName.MagicResist, 75.0, 97.5 );
SetSkill( SkillName.Tactics, 65.0, 87.5 );
SetSkill( SkillName.HandToHand, 20.2, 60.0 );
Fame = 2500;
Karma = -2500;
VirtualArmor = 16;
PackReg( 6 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.MedScrolls );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override int Meat{ get{ return 1; } }
public Vampire( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,68 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a vampire corpse" )]
public class VampireLord : BaseCreature
{
[Constructable]
public VampireLord() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "vampire" );
Title = "the vampire lord";
Body = 34;
BaseSoundID = 0x47D;
Clan = Clan.Undead;
SetStr( 81, 105 );
SetDex( 191, 215 );
SetInt( 126, 150 );
SetHits( 49, 63 );
SetDamage( 5, 10 );
SetSkill( SkillName.Concentration, 80.2, 100.0 );
SetSkill( SkillName.Magery, 95.1, 100.0 );
SetSkill( SkillName.Meditation, 27.5, 50.0 );
SetSkill( SkillName.MagicResist, 77.5, 100.0 );
SetSkill( SkillName.Tactics, 65.0, 87.5 );
SetSkill( SkillName.HandToHand, 20.3, 80.0 );
Fame = 10500;
Karma = -10500;
VirtualArmor = 16;
PackReg( 23 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override int Meat{ get{ return 1; } }
public VampireLord( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,79 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a dragon corpse" )]
public class VampiricDragon : BaseCreature
{
[Constructable]
public VampiricDragon() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "dragon" );
Title = "the vampiric wyrm";
Body = 336;
BaseSoundID = 362;
Clan = Clan.Undead;
SetStr( 796, 825 );
SetDex( 86, 105 );
SetInt( 436, 475 );
SetHits( 478, 495 );
SetDamage( 16, 22 );
SetSkill( SkillName.Concentration, 30.1, 40.0 );
SetSkill( SkillName.Magery, 30.1, 40.0 );
SetSkill( SkillName.MagicResist, 99.1, 100.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.HandToHand, 90.1, 92.5 );
Fame = 15000;
Karma = -15000;
VirtualArmor = 60;
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 2 );
AddLoot( LootPack.Gems, 8 );
AddLoot( LootPack.MedScrolls, 2 );
}
public override int GetIdleSound()
{
return 0x2D5;
}
public override int GetHurtSound()
{
return 0x2D1;
}
public override bool ReacquireOnMovement{ get{ return true; } }
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override bool AutoDispel{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override int Hides{ get{ return 20; } }
public VampiricDragon( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,66 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a drake corpse" )]
public class VampiricDrake : BaseCreature
{
[Constructable]
public VampiricDrake () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a vampiric drake";
Body = 337;
BaseSoundID = 362;
Clan = Clan.Undead;
SetStr( 401, 430 );
SetDex( 133, 152 );
SetInt( 336, 375 );
SetHits( 241, 258 );
SetDamage( 11, 17 );
SetSkill( SkillName.Tactics, 65.1, 90.0 );
SetSkill( SkillName.HandToHand, 65.1, 80.0 );
SetSkill( SkillName.Concentration, 30.1, 40.0 );
SetSkill( SkillName.Magery, 30.1, 40.0 );
SetSkill( SkillName.MagicResist, 99.1, 100.0 );
Fame = 7500;
Karma = -7500;
VirtualArmor = 46;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich, 2 );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool ReacquireOnMovement{ get{ return !Controlled; } }
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override bool AutoDispel{ get{ return !Controlled; } }
public override int Hides{ get{ return 20; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public VampiricDrake( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,88 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a ghastly corpse" )]
public class Wight : BaseCreature
{
[Constructable]
public Wight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a wight";
Body = 152;
BaseSoundID = 471;
Clan = Clan.Undead;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 46, 60 );
SetMana( 0 );
SetDamage( 7, 9 );
SetSkill( SkillName.Poisoning, 45.1, 60.0 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
Fame = 2500;
Karma = -2500;
VirtualArmor = 28;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lesser; } }
public void DrainBrain( Mobile m )
{
if ( m.Mana > 0 )
{
DoHarmful( m );
m.SendMessage( "The creature's touch drains your mind!" );
int toDrain = Utility.RandomMinMax( 2, 10 );
m.PlaySound( 0x181 );
Mana += toDrain;
m.Mana -= toDrain;
}
}
public override void OnGaveMeleeAttack( Mobile defender )
{
base.OnGaveMeleeAttack( defender );
DrainBrain( defender );
}
public override void OnGotMeleeAttack( Mobile attacker )
{
base.OnGotMeleeAttack( attacker );
DrainBrain( attacker );
}
public Wight( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a ghostly corpse" )]
public class Wraith : BaseCreature
{
[Constructable]
public Wraith() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a wraith";
Body = 26;
BaseSoundID = 0x482;
Clan = Clan.Undead;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 46, 60 );
SetDamage( 7, 11 );
SetSkill( SkillName.Concentration, 55.1, 70.0 );
SetSkill( SkillName.Magery, 55.1, 70.0 );
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.HandToHand, 45.1, 55.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 28;
PackReg( 10 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Wraith( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,74 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a rotting corpse" )]
public class Zombie : BaseCreature
{
[Constructable]
public Zombie() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a zombie";
Body = Utility.RandomList( 3, 94 );
BaseSoundID = 471;
Clan = Clan.Undead;
SetStr( 46, 70 );
SetDex( 31, 50 );
SetInt( 26, 40 );
SetHits( 28, 42 );
SetDamage( 3, 7 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 35.1, 50.0 );
SetSkill( SkillName.HandToHand, 35.1, 50.0 );
Fame = 600;
Karma = -600;
VirtualArmor = 18;
switch ( Utility.Random( 10 ))
{
case 0: PackItem( new LeftArm() ); break;
case 1: PackItem( new RightArm() ); break;
case 2: PackItem( new Torso() ); break;
case 3: PackItem( new Bone() ); break;
case 4: PackItem( new RibCage() ); break;
case 5: PackItem( new RibCage() ); break;
case 6: PackItem( new BonePile() ); break;
case 7: PackItem( new BonePile() ); break;
case 8: PackItem( new BonePile() ); break;
case 9: PackItem( new BonePile() ); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public Zombie( Serial serial ) : base( serial )
{
}
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();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a dragon corpse" )]
public class ZombieDragon : BaseCreature
{
[Constructable]
public ZombieDragon () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a rotting dragon";
Body = Utility.RandomList( 334, 334, 334, 358 );
BaseSoundID = 362;
Clan = Clan.Undead;
SetStr( 796, 825 );
SetDex( 86, 105 );
SetInt( 136, 175 );
SetHits( 478, 495 );
SetDamage( 16, 22 );
SetSkill( SkillName.MagicResist, 99.1, 100.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.HandToHand, 90.1, 92.5 );
Fame = 15000;
Karma = -15000;
VirtualArmor = 60;
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 2 );
AddLoot( LootPack.Gems, 8 );
}
public override bool ReacquireOnMovement{ get{ return !Controlled; } }
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Greater; } }
public ZombieDragon( Serial serial ) : base( serial )
{
}
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();
}
}
}