#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,91 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "an evil corpse" )]
public class BlackKnight : BaseCreature
{
[Constructable]
public BlackKnight () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "villians" );
Clan = Clan.Humanoid;
switch ( Utility.Random( 6 ) )
{
case 0: Title = "the dark knight"; break;
case 1: Title = "the black knight"; break;
case 2: Title = "the evil knight"; break;
case 3: Title = "the vile champion"; break;
case 4: Title = "the knight of evil"; break;
case 5: Title = "the knight of darkness"; break;
}
Body = Utility.RandomList( 191, 199, 304 );
if ( Body == 191 )
AnimationMod = 4;
BaseSoundID = 0x47D;
SetStr( 767, 945 );
SetDex( 66, 75 );
SetInt( 46, 70 );
SetHits( 476, 552 );
SetDamage( 20, 25 );
SetSkill( SkillName.MagicResist, 125.1, 140.0 );
SetSkill( SkillName.Tactics, 90.1, 100.0 );
SetSkill( SkillName.HandToHand, 90.1, 100.0 );
Fame = 15000;
Karma = -15000;
VirtualArmor = 50;
PackItem( new Longsword() );
switch ( Utility.Random( 6 ) )
{
case 0: PackItem( new PlateGorget() ); break;
case 1: PackItem( new PlateChest() ); break;
case 2: PackItem( new PlateLegs() ); break;
case 3: PackItem( new PlateArms() ); break;
case 4: PackItem( new PlateGloves() ); break;
case 5: PackItem( new NorseHelm() ); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Rich, 2 );
AddLoot( LootPack.FilthyRich );
AddLoot( LootPack.MedPotions, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 2; } }
public BlackKnight( 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,89 @@
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Brigand : BaseCreature
{
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle{ get{ return false; } }
[Constructable]
public Brigand() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomSpeechHue();
Hue = Utility.RandomSkinHue();
Clan = Clan.Humanoid;
Title = "the brigand";
switch ( Utility.Random( 4 ))
{
case 0: Title = "the brigand"; break;
case 1: Title = "the bandit"; break;
case 2: Title = "the outlaw"; break;
case 3: Title = "the robber"; break;
}
int hair = Utility.RandomHairHue();
if ( this.Female = Utility.RandomBool() )
{
Body = 0x191;
Name = NameList.RandomName( "female" );
}
else
{
Body = 0x190;
Name = NameList.RandomName( "male" );
if ( Utility.RandomBool() ){ Utility.AssignRandomFacialHair( this, hair ); }
}
Utility.AssignRandomHair( this, hair );
SetStr( 86, 100 );
SetDex( 81, 95 );
SetInt( 61, 75 );
SetDamage( 10, 23 );
SetSkill( SkillName.Fencing, 66.0, 97.5 );
SetSkill( SkillName.Bludgeoning, 65.0, 87.5 );
SetSkill( SkillName.MagicResist, 25.0, 47.5 );
SetSkill( SkillName.Swords, 65.0, 87.5 );
SetSkill( SkillName.Tactics, 65.0, 87.5 );
SetSkill( SkillName.HandToHand, 15.0, 37.5 );
Fame = 1000;
Karma = -1000;
Server.Misc.CitizenDressing.CitizenDress( this, 4 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public Brigand( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,63 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a bugbear corpse" )]
public class Bugbear : BaseCreature
{
[Constructable]
public Bugbear () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a bugbear";
Body = 111;
BaseSoundID = 0x56F;
SetStr( 176, 205 );
SetDex( 46, 65 );
SetInt( 46, 70 );
SetHits( 106, 123 );
SetDamage( 8, 14 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.HandToHand, 50.1, 70.0 );
Fame = 3500;
Karma = -3500;
VirtualArmor = 40;
PackItem( new Mace() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 2; } }
public override int Hides{ get{ return 9; } }
public Bugbear( 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,62 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a caveman corpse" )]
public class Caveman : BaseCreature
{
[Constructable]
public Caveman () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a caveman";
Body = Utility.RandomList( 320, 25 );
BaseSoundID = 0x59D;
Clan = Clan.Humanoid;
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;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Poor );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 2; } }
public Caveman( 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,80 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "a dwarven corpse" )]
public class Dwarf : BaseCreature
{
[Constructable]
public Dwarf() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "dwarf" );
HiddenTitle = "the dwarf";
Body = 288;
BaseSoundID = 0x5FB;
Clan = Clan.Humanoid;
SetStr( 96, 120 );
SetDex( 81, 105 );
SetInt( 36, 60 );
SetHits( 58, 72 );
SetDamage( 5, 7 );
SetSkill( SkillName.MagicResist, 50.1, 75.0 );
SetSkill( SkillName.Tactics, 55.1, 80.0 );
SetSkill( SkillName.HandToHand, 50.1, 70.0 );
Fame = 1500;
Karma = -1500;
VirtualArmor = 28;
switch ( Utility.Random( 6 ) )
{
case 0: PackItem( new StuddedGorget() ); break;
case 1: PackItem( new StuddedChest() ); break;
case 2: PackItem( new StuddedLegs() ); break;
case 3: PackItem( new StuddedArms() ); break;
case 4: PackItem( new StuddedGloves() ); break;
case 5: PackItem( new Helmet() ); break;
}
PackItem( new Axe() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public override int GetIdleSound()
{
return Utility.RandomList( 0x41D, 0x41F, 0x420, 0x42E, 0x442, 0x444, 0x448 );
}
public Dwarf( 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,80 @@
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a dwarven corpse" )]
public class DwarfKnight : BaseCreature
{
[Constructable]
public DwarfKnight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "dwarf" );
HiddenTitle = "the dwarven knight";
Body = 286;
BaseSoundID = 0x5FB;
Clan = Clan.Humanoid;
SetStr( 147, 215 );
SetDex( 91, 115 );
SetInt( 61, 85 );
SetHits( 95, 123 );
SetDamage( 4, 14 );
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
SetSkill( SkillName.Swords, 60.1, 85.0 );
SetSkill( SkillName.Tactics, 75.1, 90.0 );
SetSkill( SkillName.HandToHand, 60.1, 85.0 );
Fame = 2500;
Karma = -2500;
switch ( Utility.Random( 6 ) )
{
case 0: PackItem( new PlateGorget() ); break;
case 1: PackItem( new PlateChest() ); break;
case 2: PackItem( new PlateLegs() ); break;
case 3: PackItem( new PlateArms() ); break;
case 4: PackItem( new PlateGloves() ); break;
case 5: PackItem( new NorseHelm() ); break;
}
PackItem( new DoubleAxe() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
AddLoot( LootPack.Average );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public override int GetIdleSound()
{
return Utility.RandomList( 0x41D, 0x41F, 0x420, 0x42E, 0x442, 0x444, 0x448 );
}
public DwarfKnight( 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 System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a dwarven corpse" )]
public class DwarfWarrior : BaseCreature
{
[Constructable]
public DwarfWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "dwarf" );
HiddenTitle = "the dwarven warrior";
Body = 287;
BaseSoundID = 0x5FB;
Clan = Clan.Humanoid;
SetStr( 111, 145 );
SetDex( 101, 135 );
SetInt( 86, 110 );
SetHits( 67, 87 );
SetDamage( 5, 15 );
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
SetSkill( SkillName.Swords, 70.1, 95.0 );
SetSkill( SkillName.Tactics, 85.1, 100.0 );
Fame = 2500;
Karma = -2500;
VirtualArmor = 34;
switch ( Utility.Random( 5 ) )
{
case 0: PackItem( new RingmailChest() ); break;
case 1: PackItem( new RingmailLegs() ); break;
case 2: PackItem( new RingmailArms() ); break;
case 3: PackItem( new RingmailGloves() ); break;
case 4: PackItem( new CloseHelm() ); break;
}
PackItem( new BattleAxe() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public override int GetIdleSound()
{
return Utility.RandomList( 0x41D, 0x41F, 0x420, 0x42E, 0x442, 0x444, 0x448 );
}
public DwarfWarrior( 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,83 @@
using System;
using Server;
using Server.Misc;
using Server.Items;
namespace Server.Mobiles
{
public class EvilMage : BaseCreature
{
[Constructable]
public EvilMage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "evil mage" );
SpeechHue = Utility.RandomSpeechHue();
Hue = Utility.RandomSkinHue();
Clan = Clan.Wizard;
int hair = Utility.RandomHairHue();
if ( this.Female = Utility.RandomBool() )
{
Body = 0x191;
Name = NameList.RandomName( "evil witch" );
}
else
{
Body = 0x190;
Name = NameList.RandomName( "evil mage" );
if ( Utility.RandomBool() ){ Utility.AssignRandomFacialHair( this, hair ); }
}
Utility.AssignRandomHair( this, hair );
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 );
Server.Misc.CitizenDressing.CitizenDress( this, 5 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.MedScrolls );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle{ get{ return false; } }
public EvilMage( 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,84 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class EvilMageLord : BaseCreature
{
[Constructable]
public EvilMageLord() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "evil mage lord" );
SpeechHue = Utility.RandomSpeechHue();
Hue = Utility.RandomSkinHue();
Clan = Clan.Wizard;
int hair = Utility.RandomHairHue();
if ( this.Female = Utility.RandomBool() )
{
Body = 0x191;
Name = NameList.RandomName( "evil witch" );
}
else
{
Body = 0x190;
Name = NameList.RandomName( "evil mage lord" );
if ( Utility.RandomBool() ){ Utility.AssignRandomFacialHair( this, hair ); }
}
Utility.AssignRandomHair( this, hair );
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 );
Server.Misc.CitizenDressing.CitizenDress( this, 5 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle{ get{ return false; } }
public override int Meat{ get{ return 1; } }
public EvilMageLord( 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.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Executioner : BaseCreature
{
[Constructable]
public Executioner() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomSpeechHue();
Title = "the executioner";
Hue = Utility.RandomSkinHue();
Clan = Clan.Humanoid;
if ( this.Female = Utility.RandomBool() )
{
this.Body = 0x191;
this.Name = NameList.RandomName( "female" );
}
else
{
this.Body = 0x190;
this.Name = NameList.RandomName( "male" );
}
SetStr( 386, 400 );
SetDex( 151, 165 );
SetInt( 161, 175 );
SetDamage( 8, 10 );
SetSkill( SkillName.Fencing, 46.0, 77.5 );
SetSkill( SkillName.Bludgeoning, 35.0, 57.5 );
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
SetSkill( SkillName.MagicResist, 83.5, 92.5 );
SetSkill( SkillName.Swords, 125.0 );
SetSkill( SkillName.Tactics, 125.0 );
Fame = 5000;
Karma = -5000;
VirtualArmor = 40;
AddItem( new ThighBoots() );
AddItem( new LongPants() );
AddItem( new FancyShirt( Utility.RandomDarkHue() ) );
AddItem( new Hood( Utility.RandomDarkHue() ) );
AddItem( new GreatAxe());
if ( Utility.RandomBool() )
AddItem( new Cloak( Utility.RandomDarkHue() ) );
Utility.AssignRandomHair( this );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich );
AddLoot( LootPack.Meager );
}
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle{ get{ return false; } }
public Executioner( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,62 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a frost troll corpse" )]
public class FrostTroll : BaseCreature
{
[Constructable]
public FrostTroll() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a frost troll";
Body = 157;
BaseSoundID = 461;
SetStr( 227, 265 );
SetDex( 66, 85 );
SetInt( 46, 70 );
SetHits( 140, 156 );
SetDamage( 14, 20 );
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
SetSkill( SkillName.Tactics, 80.1, 100.0 );
SetSkill( SkillName.HandToHand, 80.1, 100.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 50;
PackItem( new DoubleAxe() ); // TODO: Weapon??
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Gems );
}
public override int Meat{ get{ return 2; } }
public FrostTroll( 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 System.Collections;
using Server.Items;
using Server.Targeting;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "a goblin corpse" )]
public class Goblin : BaseCreature
{
[Constructable]
public Goblin() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a goblin";
Body = 242;
BaseSoundID = 0x5DA;
Clan = Clan.Humanoid;
SetStr( 55, 66 );
SetDex( 25, 36 );
SetInt( 10, 20 );
SetHits( 45, 58 );
SetDamage( 3, 9 );
SetSkill( SkillName.MagicResist, 50.1, 75.0 );
SetSkill( SkillName.Tactics, 55.1, 80.0 );
SetSkill( SkillName.HandToHand, 50.1, 70.0 );
Fame = 600;
Karma = -600;
VirtualArmor = 16;
PackItem( new Buckler() );
PackItem( new Hatchet() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Poor );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public Goblin( 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;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "a goblin corpse" )]
public class GoblinArcher : BaseCreature
{
[Constructable]
public GoblinArcher() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a goblin archer";
Body = 243;
BaseSoundID = 0x5DA;
Clan = Clan.Humanoid;
SetStr( 56, 80 );
SetDex( 101, 130 );
SetInt( 16, 40 );
SetHits( 34, 48 );
SetDamage( 3, 7 );
SetSkill( SkillName.MagicResist, 50.1, 75.0 );
SetSkill( SkillName.Tactics, 55.1, 80.0 );
SetSkill( SkillName.HandToHand, 50.1, 70.0 );
SetSkill( SkillName.Archery, 50.1, 70.0 );
Fame = 620;
Karma = -620;
VirtualArmor = 12;
AddItem( new Bow() );
PackItem( new Arrow( Utility.RandomMinMax( 5, 15 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Poor );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public GoblinArcher( 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;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "a goblin corpse" )]
public class GoblinWarrior : BaseCreature
{
[Constructable]
public GoblinWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "goblin" );
HiddenTitle = "the hobgoblin warrior";
Body = 294;
BaseSoundID = 0x5DA;
Clan = Clan.Humanoid;
SetStr( 85, 96 );
SetDex( 45, 56 );
SetInt( 18, 28 );
SetHits( 65, 88 );
SetDamage( 5, 14 );
SetSkill( SkillName.MagicResist, 60.1, 85.0 );
SetSkill( SkillName.Tactics, 65.1, 90.0 );
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
Fame = 900;
Karma = -900;
VirtualArmor = 26;
PackItem( new Buckler() );
PackItem( new Scimitar() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public GoblinWarrior( 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.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a hobgoblin corpse" )]
public class Hobgoblin : BaseCreature
{
[Constructable]
public Hobgoblin() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "goblin" );
HiddenTitle = "the hobgoblin";
Body = 196;
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
SetStr( 111, 145 );
SetDex( 101, 135 );
SetInt( 86, 110 );
SetHits( 67, 87 );
SetDamage( 5, 15 );
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
SetSkill( SkillName.Swords, 70.1, 95.0 );
SetSkill( SkillName.Tactics, 85.1, 100.0 );
Fame = 2500;
Karma = -2500;
VirtualArmor = 34;
switch ( Utility.Random( 7 ) )
{
case 0: PackItem( new Arrow() ); break;
case 1: PackItem( new Lockpick() ); break;
case 2: PackItem( new Shaft() ); break;
case 3: PackItem( new Ribs() ); break;
case 4: PackItem( new Bandage() ); break;
case 5: PackItem( new BeverageBottle( BeverageType.Wine ) ); break;
case 6: PackItem( new Jug( BeverageType.Cider ) ); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public Hobgoblin( 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 System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a hobgoblin corpse" )]
public class HobgoblinArcher : BaseCreature
{
[Constructable]
public HobgoblinArcher() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "goblin" );
HiddenTitle = "the hobgoblin archer";
Body = 300;
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
SetStr( 146, 180 );
SetDex( 101, 130 );
SetInt( 116, 140 );
SetHits( 88, 108 );
SetDamage( 4, 10 );
SetSkill( SkillName.Archery, 80.1, 90.0 );
SetSkill( SkillName.MagicResist, 65.1, 90.0 );
SetSkill( SkillName.Tactics, 50.1, 75.0 );
SetSkill( SkillName.HandToHand, 50.1, 75.0 );
Fame = 6500;
Karma = -6500;
VirtualArmor = 56;
AddItem( new Bow() );
PackItem( new Arrow( Utility.RandomMinMax( 50, 70 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Hides{ get{ return 8; } }
public HobgoblinArcher( 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();
if ( Body == 42 )
{
Body = 0x8E;
Hue = 0;
}
}
}
}

View file

@ -0,0 +1,75 @@
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a hobgoblin corpse" )]
public class HobgoblinChief : BaseCreature
{
[Constructable]
public HobgoblinChief() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "goblin" );
HiddenTitle = "the hobgoblin chief";
Body = 342;
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
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;
switch ( Utility.Random( 7 ) )
{
case 0: PackItem( new Arrow() ); break;
case 1: PackItem( new Lockpick() ); break;
case 2: PackItem( new Shaft() ); break;
case 3: PackItem( new Ribs() ); break;
case 4: PackItem( new Bandage() ); break;
case 5: PackItem( new BeverageBottle( BeverageType.Wine ) ); break;
case 6: PackItem( new Jug( BeverageType.Cider ) ); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public HobgoblinChief( 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.Misc;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a hobgoblin corpse" )]
public class HobgoblinShaman : BaseCreature
{
[Constructable]
public HobgoblinShaman () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "goblin" );
HiddenTitle = "the hobgoblin shaman";
Body = 299;
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
SetStr( 116, 150 );
SetDex( 91, 115 );
SetInt( 161, 185 );
SetHits( 70, 90 );
SetDamage( 4, 14 );
SetSkill( SkillName.Concentration, 60.1, 72.5 );
SetSkill( SkillName.Magery, 60.1, 72.5 );
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
SetSkill( SkillName.Tactics, 50.1, 65.0 );
SetSkill( SkillName.HandToHand, 40.1, 50.0 );
Fame = 3000;
Karma = -3000;
VirtualArmor = 30;
PackReg( 6 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.LowScrolls );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public HobgoblinShaman( 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,90 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class MindFlayer : BaseCreature
{
[Constructable]
public MindFlayer() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a mindflayer";
Body = 132;
BaseSoundID = 0x605;
AnimationMod = 4;
Clan = Clan.Wizard;
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 void DrainBrain( Mobile m )
{
if ( m.Mana > 0 )
{
DoHarmful( m );
m.SendMessage( "The creature feeds on your mind!" );
int toDrain = Utility.RandomMinMax( 2, 10 );
m.PlaySound( 0x386 );
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 override bool CanRummageCorpses{ get{ return true; } }
public MindFlayer( 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,61 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "a minotaur corpse" )]
public class Minotaur : BaseCreature
{
[Constructable]
public Minotaur() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a minotaur";
Body = Utility.RandomList( 97, 343 );
BaseSoundID = 0x5DF;
SetStr( 256, 280 );
SetDex( 116, 135 );
SetInt( 61, 80 );
SetHits( 196, 220 );
SetStam( 76, 95 );
SetMana( 0 );
SetDamage( 12, 24 );
SetSkill( SkillName.MagicResist, 56.1, 64.0 );
SetSkill( SkillName.Tactics, 80.1, 90.0 );
SetSkill( SkillName.HandToHand, 80.1, 90.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 40;
PackItem( new DoubleAxe() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average, 2 );
}
public Minotaur( 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,61 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "a minotaur corpse" )]
public class MinotaurChief : BaseCreature
{
[Constructable]
public MinotaurChief() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a minotaur chief";
Body = 329;
BaseSoundID = 0x5DF;
SetStr( 579, 653 );
SetDex( 144, 173 );
SetInt( 47, 83 );
SetHits( 453, 497 );
SetMana( 0 );
SetDamage( 14, 25 );
SetSkill( SkillName.MagicResist, 105.5, 157.5 );
SetSkill( SkillName.Tactics, 142.7, 165.0 );
SetSkill( SkillName.HandToHand, 142.7, 165.0 );
Fame = 9750;
Karma = -9750;
VirtualArmor = 65;
PackItem( new WarHammer() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich, 2 );
AddLoot( LootPack.Average );
}
public MinotaurChief( 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,61 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "a minotaur corpse" )]
public class MinotaurLord : BaseCreature
{
[Constructable]
public MinotaurLord() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a minotaur knight";
Body = 244;
BaseSoundID = 0x5DF;
AnimationMod = 1;
SetStr( 386, 435 );
SetDex( 96, 115 );
SetInt( 31, 55 );
SetHits( 302, 331 );
SetMana( 0 );
SetDamage( 9, 25 );
SetSkill( SkillName.MagicResist, 70.3, 105.0 );
SetSkill( SkillName.Tactics, 95.1, 110.0 );
SetSkill( SkillName.HandToHand, 95.1, 110.0 );
Fame = 6500;
Karma = -6500;
VirtualArmor = 52;
PackItem( new DoubleAxe() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average, 2 );
}
public MinotaurLord( 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,84 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName( "an orcish corpse" )]
public class Orc : BaseCreature
{
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Orc; } }
[Constructable]
public Orc() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "orc" );
HiddenTitle = "the orc";
Body = Utility.RandomList( 17, 41 );
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
SetStr( 96, 120 );
SetDex( 81, 105 );
SetInt( 36, 60 );
SetHits( 58, 72 );
SetDamage( 5, 7 );
SetSkill( SkillName.MagicResist, 50.1, 75.0 );
SetSkill( SkillName.Tactics, 55.1, 80.0 );
SetSkill( SkillName.HandToHand, 50.1, 70.0 );
Fame = 1500;
Karma = -1500;
VirtualArmor = 28;
switch ( Utility.Random( 20 ) )
{
case 0: PackItem( new Scimitar() ); break;
case 1: PackItem( new Katana() ); break;
case 2: PackItem( new WarMace() ); break;
case 3: PackItem( new WarHammer() ); break;
case 4: PackItem( new Kryss() ); break;
case 5: PackItem( new Pitchfork() ); break;
}
PackItem( new ThighBoots() );
switch ( Utility.Random( 3 ) )
{
case 0: PackItem( new Ribs() ); break;
case 1: PackItem( new Shaft() ); break;
case 2: PackItem( new Candle() ); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public Orc( 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,77 @@
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "an orcish corpse" )]
public class OrcCaptain : BaseCreature
{
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Orc; } }
[Constructable]
public OrcCaptain() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "orc" );
HiddenTitle = "the orc chief";
Body = 7;
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
SetStr( 111, 145 );
SetDex( 101, 135 );
SetInt( 86, 110 );
SetHits( 67, 87 );
SetDamage( 5, 15 );
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
SetSkill( SkillName.Swords, 70.1, 95.0 );
SetSkill( SkillName.Tactics, 85.1, 100.0 );
Fame = 2500;
Karma = -2500;
VirtualArmor = 34;
// TODO: Skull?
switch ( Utility.Random( 7 ) )
{
case 0: PackItem( new Arrow() ); break;
case 1: PackItem( new Lockpick() ); break;
case 2: PackItem( new Shaft() ); break;
case 3: PackItem( new Ribs() ); break;
case 4: PackItem( new Bandage() ); break;
case 5: PackItem( new BeverageBottle( BeverageType.Wine ) ); break;
case 6: PackItem( new Jug( BeverageType.Cider ) ); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public OrcCaptain( 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( "an orcish corpse" )]
public class OrcishLord : BaseCreature
{
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Orc; } }
[Constructable]
public OrcishLord() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "orc" );
HiddenTitle = "the orcish lord";
Body = 7;
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
SetStr( 147, 215 );
SetDex( 91, 115 );
SetInt( 61, 85 );
SetHits( 95, 123 );
SetDamage( 4, 14 );
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
SetSkill( SkillName.Swords, 60.1, 85.0 );
SetSkill( SkillName.Tactics, 75.1, 90.0 );
SetSkill( SkillName.HandToHand, 60.1, 85.0 );
Fame = 2500;
Karma = -2500;
switch ( Utility.Random( 5 ) )
{
case 0: PackItem( new Lockpick() ); break;
case 1: PackItem( new MortarPestle() ); break;
case 2: PackItem( new Bottle() ); break;
case 3: PackItem( new RawRibs() ); break;
case 4: PackItem( new Shovel() ); break;
}
PackItem( new RingmailChest() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
AddLoot( LootPack.Average );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public OrcishLord( 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.Misc;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a glowing orc corpse" )]
public class OrcishMage : BaseCreature
{
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Orc; } }
[Constructable]
public OrcishMage () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "orc" );
HiddenTitle = "the orcish mage";
Body = 17;
BaseSoundID = 0x45A;
Clan = Clan.Humanoid;
SetStr( 116, 150 );
SetDex( 91, 115 );
SetInt( 161, 185 );
SetHits( 70, 90 );
SetDamage( 4, 14 );
SetSkill( SkillName.Concentration, 60.1, 72.5 );
SetSkill( SkillName.Magery, 60.1, 72.5 );
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
SetSkill( SkillName.Tactics, 50.1, 65.0 );
SetSkill( SkillName.HandToHand, 40.1, 50.0 );
Fame = 3000;
Karma = -3000;
VirtualArmor = 30;
PackReg( 6 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.LowScrolls );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public OrcishMage( 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 pharaoh's corpse" )]
public class Pharaoh : BaseCreature
{
[Constructable]
public Pharaoh() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "villians" );
Title = "the pharaoh";
Body = 279;
BaseSoundID = 0x47D;
AnimationMod = 1;
Clan = Clan.Wizard;
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 BlackStaff() );
PackReg( 17, 24 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool CanRummageCorpses{ get{ return true; } }
public Pharaoh( 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,143 @@
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Pirate : BaseCreature
{
[Constructable]
public Pirate() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomSpeechHue();
Hue = Utility.RandomSkinHue();
Clan = Clan.Humanoid;
Title = "the pirate";
switch ( Utility.Random( 4 ))
{
case 0: Title = "the pirate"; break;
case 1: Title = "the sailor"; break;
case 2: Title = "the privateer"; break;
case 3: Title = "the freebooter"; break;
}
int hair = Utility.RandomHairHue();
if ( this.Female = Utility.RandomBool() )
{
Body = 0x191;
Name = NameList.RandomName( "female" );
}
else
{
Body = 0x190;
Name = NameList.RandomName( "male" );
if ( Utility.RandomBool() ){ Utility.AssignRandomFacialHair( this, hair ); }
}
Utility.AssignRandomHair( this, hair );
SetStr( 96, 110 );
SetDex( 91, 105 );
SetInt( 71, 85 );
SetDamage( 10, 23 );
SetSkill( SkillName.Fencing, 76.0, 97.5 );
SetSkill( SkillName.Bludgeoning, 75.0, 87.5 );
SetSkill( SkillName.MagicResist, 35.0, 47.5 );
SetSkill( SkillName.Swords, 75.0, 87.5 );
SetSkill( SkillName.Tactics, 75.0, 87.5 );
SetSkill( SkillName.HandToHand, 25.0, 37.5 );
Fame = 1500;
Karma = -1500;
switch ( Utility.Random( 7 ))
{
case 0: AddItem( new Longsword() ); break;
case 1: AddItem( new Cutlass() ); break;
case 2: AddItem( new Scimitar() ); break;
case 3: AddItem( new Kryss() ); break;
case 4: AddItem( new Dagger() ); break;
case 5: AddItem( new Spear() ); break;
case 6: AddItem( new Rapier() ); break;
}
switch ( Utility.Random( 5 ) )
{
case 0: AddItem( new FancyShirt( Utility.RandomHue() ) ); break;
case 1: AddItem( new Doublet( Utility.RandomHue() ) ); break;
case 2: AddItem( new Shirt( Utility.RandomHue() ) ); break;
case 3: AddItem( new Tunic( Utility.RandomHue() ) ); break;
case 4: AddItem( new Surcoat( Utility.RandomHue() ) ); break;
}
if ( Female )
{
switch ( Utility.Random( 4 ) )
{
case 0: AddItem( new Skirt( Utility.RandomHue() ) ); break;
case 1: AddItem( new Kilt( Utility.RandomHue() ) ); break;
case 2: AddItem( new LongPants( Utility.RandomHue() ) ); break;
case 3: AddItem( new ShortPants( Utility.RandomHue() ) ); break;
}
}
else
{
switch ( Utility.Random( 3 ) )
{
case 0: AddItem( new LongPants( Utility.RandomHue() ) ); break;
case 1: AddItem( new ShortPants( Utility.RandomHue() ) ); break;
case 2: AddItem( new Kilt( Utility.RandomHue() ) ); break;
}
}
switch ( Utility.Random( 4 ) )
{
case 0: AddItem( new Shoes( Utility.RandomNeutralHue() ) ); break;
case 1: AddItem( new Boots( Utility.RandomNeutralHue() ) ); break;
case 2: AddItem( new Sandals( Utility.RandomNeutralHue() ) ); break;
case 3: AddItem( new ThighBoots( Utility.RandomNeutralHue() ) ); break;
}
switch ( Utility.Random( 4 ) )
{
case 0: AddItem( new SkullCap( Utility.RandomHue() ) ); break;
case 1: AddItem( new SkullCap( Utility.RandomHue() ) ); break;
case 2: AddItem( new SkullCap( Utility.RandomHue() ) ); break;
case 3: AddItem( new Bandana( Utility.RandomHue() ) ); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle{ get{ return false; } }
public Pirate( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a ratman's corpse" )]
public class Ratman : BaseCreature
{
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Ratman; } }
[Constructable]
public Ratman() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "ratman" );
HiddenTitle = "the ratman";
Body = Utility.RandomList( 42, 44, 45 );
BaseSoundID = 437;
Clan = Clan.Humanoid;
SetStr( 96, 120 );
SetDex( 81, 100 );
SetInt( 36, 60 );
SetHits( 58, 72 );
SetDamage( 4, 5 );
SetSkill( SkillName.MagicResist, 35.1, 60.0 );
SetSkill( SkillName.Tactics, 50.1, 75.0 );
SetSkill( SkillName.HandToHand, 50.1, 75.0 );
Fame = 1500;
Karma = -1500;
VirtualArmor = 28;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Hides{ get{ return 8; } }
public Ratman( 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.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a ratman archer corpse" )]
public class RatmanArcher : BaseCreature
{
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Ratman; } }
[Constructable]
public RatmanArcher() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "ratman" );
HiddenTitle = "the ratman archer";
Body = 42;
BaseSoundID = 437;
Clan = Clan.Humanoid;
SetStr( 146, 180 );
SetDex( 101, 130 );
SetInt( 116, 140 );
SetHits( 88, 108 );
SetDamage( 4, 10 );
SetSkill( SkillName.Archery, 80.1, 90.0 );
SetSkill( SkillName.MagicResist, 65.1, 90.0 );
SetSkill( SkillName.Tactics, 50.1, 75.0 );
SetSkill( SkillName.HandToHand, 50.1, 75.0 );
Fame = 6500;
Karma = -6500;
VirtualArmor = 56;
AddItem( new Bow() );
PackItem( new Arrow( Utility.RandomMinMax( 50, 70 ) ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Hides{ get{ return 8; } }
public RatmanArcher( 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();
if ( Body == 42 )
{
Body = 0x8E;
Hue = 0;
}
}
}
}

View file

@ -0,0 +1,77 @@
using System;
using System.Collections;
using Server.Misc;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a glowing ratman corpse" )]
public class RatmanMage : BaseCreature
{
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Ratman; } }
[Constructable]
public RatmanMage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "ratman" );
HiddenTitle = "the ratman mage";
Body = 42;
BaseSoundID = 437;
Clan = Clan.Humanoid;
SetStr( 146, 180 );
SetDex( 101, 130 );
SetInt( 186, 210 );
SetHits( 88, 108 );
SetDamage( 7, 14 );
SetSkill( SkillName.Concentration, 70.1, 80.0 );
SetSkill( SkillName.Magery, 70.1, 80.0 );
SetSkill( SkillName.MagicResist, 65.1, 90.0 );
SetSkill( SkillName.Tactics, 50.1, 75.0 );
SetSkill( SkillName.HandToHand, 50.1, 75.0 );
Fame = 7500;
Karma = -7500;
VirtualArmor = 44;
PackReg( 6 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.LowScrolls );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public override int Hides{ get{ return 8; } }
public RatmanMage( 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();
if ( Body == 42 )
{
Body = 0x8F;
Hue = 0;
}
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using Server;
using Server.Misc;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a savage corpse" )]
public class Savage : BaseCreature
{
[Constructable]
public Savage() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "savage" );
HiddenTitle = "the savage";
Hue = 0;
Clan = Clan.Humanoid;
if ( Female = Utility.RandomBool() )
Body = 0x191;
else
Body = 0x190;
SetStr( 96, 115 );
SetDex( 86, 105 );
SetInt( 51, 65 );
SetDamage( 7, 16 );
SetSkill( SkillName.Fencing, 60.0, 82.5 );
SetSkill( SkillName.Bludgeoning, 60.0, 82.5 );
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
SetSkill( SkillName.MagicResist, 57.5, 80.0 );
SetSkill( SkillName.Swords, 60.0, 82.5 );
SetSkill( SkillName.Tactics, 60.0, 82.5 );
Fame = 1000;
Karma = -1000;
PackItem( new Bandage( Utility.RandomMinMax( 1, 15 ) ) );
AddItem( new Spear() );
AddItem( new BoneArms() );
AddItem( new BoneLegs() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override int Meat{ get{ return 1; } }
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle{ get{ return false; } }
public Savage( 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 savage corpse" )]
public class SavageLeader : BaseCreature
{
[Constructable]
public SavageLeader() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "savage" );
HiddenTitle = "the savage chief";
Body = 183;
BaseSoundID = 0x25C;
Clan = Clan.Humanoid;
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;
AddItem( new BoneArms() );
AddItem( new BoneLegs() );
AddItem( new BoneChest() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Average );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 4; } }
public SavageLeader( 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,233 @@
using System;
using System.Collections;
using Server;
using Server.Misc;
using Server.Items;
using Server.Spells;
namespace Server.Mobiles
{
[CorpseName( "a savage corpse" )]
public class SavageShaman : BaseCreature
{
[Constructable]
public SavageShaman() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = NameList.RandomName( "savage shaman" );
HiddenTitle = "the savage shaman";
Hue = 0;
Clan = Clan.Humanoid;
if ( Utility.RandomBool() )
Body = 0x191;
else
Body = 0x190;
SetStr( 126, 145 );
SetDex( 91, 110 );
SetInt( 161, 185 );
SetDamage( 4, 10 );
SetSkill( SkillName.Concentration, 77.5, 100.0 );
SetSkill( SkillName.Fencing, 62.5, 85.0 );
SetSkill( SkillName.Bludgeoning, 62.5, 85.0 );
SetSkill( SkillName.Magery, 72.5, 95.0 );
SetSkill( SkillName.Meditation, 77.5, 100.0 );
SetSkill( SkillName.MagicResist, 77.5, 100.0 );
SetSkill( SkillName.Swords, 62.5, 85.0 );
SetSkill( SkillName.Tactics, 62.5, 85.0 );
SetSkill( SkillName.HandToHand, 62.5, 85.0 );
Fame = 1000;
Karma = -1000;
PackReg( 10, 15 );
PackItem( new Bandage( Utility.RandomMinMax( 1, 15 ) ) );
AddItem( new BoneArms() );
AddItem( new BoneLegs() );
AddItem( new DeerMask() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override int Meat{ get{ return 1; } }
public override bool ClickTitle{ get{ return false; } }
public override bool ShowFameTitle{ get{ return false; } }
public override void OnGotMeleeAttack( Mobile attacker )
{
base.OnGotMeleeAttack( attacker );
if ( 0.1 > Utility.RandomDouble() )
BeginSavageDance();
}
public void BeginSavageDance()
{
if( this.Map == null )
return;
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 8 ) )
{
if ( m != this && m is SavageShaman )
list.Add( m );
}
Animate( 111, 5, 1, true, false, 0 ); // Do a little dance...
if ( AIObject != null )
AIObject.NextMove = DateTime.Now + TimeSpan.FromSeconds( 1.0 );
if ( list.Count >= 3 )
{
for ( int i = 0; i < list.Count; ++i )
{
SavageShaman dancer = (SavageShaman)list[i];
dancer.Animate( 111, 5, 1, true, false, 0 ); // Get down tonight...
if ( dancer.AIObject != null )
dancer.AIObject.NextMove = DateTime.Now + TimeSpan.FromSeconds( 1.0 );
}
Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerCallback( EndSavageDance ) );
}
}
public void EndSavageDance()
{
if ( Deleted )
return;
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 8 ) )
list.Add( m );
if ( list.Count > 0 )
{
switch ( Utility.Random( 3 ) )
{
case 0: /* greater heal */
{
foreach ( Mobile m in list )
{
bool isFriendly = ( m is Savage || m is SavageShaman );
if ( !isFriendly )
continue;
if ( m.Poisoned || !CanBeBeneficial( m ) )
continue;
DoBeneficial( m );
// Algorithm: (40% of magery) + (1-10)
int toHeal = (int)(Skills[SkillName.Magery].Value * 0.4);
toHeal += Utility.Random( 1, 10 );
m.Heal( toHeal, this );
m.FixedParticles( 0x376A, 9, 32, 5030, EffectLayer.Waist );
m.PlaySound( 0x202 );
}
break;
}
case 1: /* lightning */
{
foreach ( Mobile m in list )
{
bool isFriendly = ( m is Savage || m is SavageShaman );
if ( isFriendly )
continue;
if ( !CanBeHarmful( m ) )
continue;
DoHarmful( m );
double damage = Utility.Random( 12, 9 );
m.BoltEffect( 0 );
SpellHelper.Damage( TimeSpan.FromSeconds( 0.25 ), m, this, damage );
}
break;
}
case 2: /* poison */
{
foreach ( Mobile m in list )
{
bool isFriendly = ( m is Savage || m is SavageShaman );
if ( isFriendly )
continue;
if ( !CanBeHarmful( m ) )
continue;
DoHarmful( m );
if ( m.Spell != null )
m.Spell.OnCasterHurt();
m.Paralyzed = false;
double total = Skills[SkillName.Magery].Value + Skills[SkillName.Poisoning].Value;
double dist = GetDistanceToSqrt( m );
if ( dist >= 3.0 )
total -= (dist - 3.0) * 10.0;
int level;
if ( total >= 200.0 && Utility.Random( 1, 100 ) <= 10 )
level = 3;
else if ( total > 170.0 )
level = 2;
else if ( total > 130.0 )
level = 1;
else
level = 0;
m.ApplyPoison( this, Poison.GetPoison( level ) );
m.FixedParticles( 0x374A, 10, 15, 5021, EffectLayer.Waist );
m.PlaySound( 0x474 );
}
break;
}
}
}
}
public SavageShaman( 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,60 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a troll corpse" )]
public class Troll : BaseCreature
{
[Constructable]
public Troll () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a troll";
Body = Utility.RandomList( 53, 54, 55 );
BaseSoundID = 461;
SetStr( 176, 205 );
SetDex( 46, 65 );
SetInt( 46, 70 );
SetHits( 106, 123 );
SetDamage( 8, 14 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.HandToHand, 50.1, 70.0 );
Fame = 3500;
Karma = -3500;
VirtualArmor = 40;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 2; } }
public Troll( 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,62 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a yeti corpse" )]
public class Yeti : BaseCreature
{
[Constructable]
public Yeti () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a yeti";
Body = 108;
BaseSoundID = 0x56F;
AnimationMod = 4;
SetStr( 176, 205 );
SetDex( 46, 65 );
SetInt( 46, 70 );
SetHits( 106, 123 );
SetDamage( 8, 14 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.HandToHand, 50.1, 70.0 );
Fame = 3500;
Karma = -3500;
VirtualArmor = 40;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Poor );
}
public override bool CanRummageCorpses{ get{ return true; } }
public override int Meat{ get{ return 2; } }
public override int Hides{ get{ return 9; } }
public Yeti( 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();
}
}
}