#W# Grouped Mobs based on Clan.
This commit is contained in:
parent
84f48a0512
commit
38b91de7ba
81 changed files with 0 additions and 0 deletions
69
Scripts/Mobiles/Clans/Demonic/Balron.cs
Normal file
69
Scripts/Mobiles/Clans/Demonic/Balron.cs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a balron corpse" )]
|
||||
public class Balron : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Balron () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "balron" );
|
||||
Body = Utility.RandomList( 90, 113 );
|
||||
BaseSoundID = 357;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 986, 1185 );
|
||||
SetDex( 177, 255 );
|
||||
SetInt( 151, 250 );
|
||||
|
||||
SetHits( 592, 711 );
|
||||
|
||||
SetDamage( 22, 29 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 95.5, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 25.1, 50.0 );
|
||||
SetSkill( SkillName.MagicResist, 100.5, 150.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.HandToHand, 90.1, 100.0 );
|
||||
|
||||
Fame = 24000;
|
||||
Karma = -24000;
|
||||
|
||||
VirtualArmor = 90;
|
||||
|
||||
if ( Body == 90 )
|
||||
PackItem( new Longsword() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 2 );
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.HighScrolls, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Deadly; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public Balron( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
73
Scripts/Mobiles/Clans/Demonic/Daemon.cs
Normal file
73
Scripts/Mobiles/Clans/Demonic/Daemon.cs
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a daemon corpse" )]
|
||||
public class Daemon : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 125.0; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public Daemon () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "daemon" );
|
||||
HiddenTitle = "the daemon";
|
||||
Body = Utility.RandomList( 9, 10 );
|
||||
BaseSoundID = 357;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 476, 505 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 301, 325 );
|
||||
|
||||
SetHits( 286, 303 );
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
VirtualArmor = 58;
|
||||
ControlSlots = 5;
|
||||
|
||||
if ( Body == 10 )
|
||||
PackItem( new Longsword() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public Daemon( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Demonic/DemonClaw.cs
Normal file
65
Scripts/Mobiles/Clans/Demonic/DemonClaw.cs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a demon corpse" )]
|
||||
public class DemonClaw : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 125.0; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public DemonClaw () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a demon claw";
|
||||
Body = 190;
|
||||
BaseSoundID = 357;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 476, 505 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 301, 325 );
|
||||
|
||||
SetHits( 286, 303 );
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
|
||||
|
||||
Fame = 11000;
|
||||
Karma = -11000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public DemonClaw( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Demonic/Demoness.cs
Normal file
65
Scripts/Mobiles/Clans/Demonic/Demoness.cs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a demoness corpse" )]
|
||||
public class Demoness : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 125.0; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public Demoness () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a demoness";
|
||||
Body = 154;
|
||||
BaseSoundID = 0x4B0;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 476, 505 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 301, 325 );
|
||||
|
||||
SetHits( 286, 303 );
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
|
||||
|
||||
Fame = 11000;
|
||||
Karma = -11000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public Demoness( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/Mobiles/Clans/Demonic/DemonicSpirit.cs
Normal file
67
Scripts/Mobiles/Clans/Demonic/DemonicSpirit.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a ghostly corpse" )]
|
||||
public class DemonicSpirit : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public DemonicSpirit () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a demonic spirit";
|
||||
Body = 285;
|
||||
BaseSoundID = 0x482;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 276, 305 );
|
||||
SetDex( 46, 65 );
|
||||
SetInt( 201, 225 );
|
||||
AnimationMod = 1;
|
||||
|
||||
SetHits( 186, 203 );
|
||||
|
||||
SetDamage( 4, 10 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
|
||||
|
||||
Fame = 9000;
|
||||
Karma = -9000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
|
||||
PackReg( 17, 24 );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Average, 1 );
|
||||
AddLoot( LootPack.MedScrolls, 1 );
|
||||
}
|
||||
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public DemonicSpirit( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
71
Scripts/Mobiles/Clans/Demonic/Deviless.cs
Normal file
71
Scripts/Mobiles/Clans/Demonic/Deviless.cs
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a devil corpse" )]
|
||||
public class Deviless : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 125.0; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public Deviless () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "daemoness" );
|
||||
HiddenTitle = "the deviless";
|
||||
Body = 135;
|
||||
BaseSoundID = 0x53B;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 476, 505 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 301, 325 );
|
||||
|
||||
SetHits( 286, 303 );
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
VirtualArmor = 58;
|
||||
|
||||
PackItem( new Whip() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public Deviless( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/Mobiles/Clans/Demonic/FireMephit.cs
Normal file
67
Scripts/Mobiles/Clans/Demonic/FireMephit.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an imp corpse" )]
|
||||
public class FireImp : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public FireImp() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "imp" );
|
||||
HiddenTitle = "the fire imp";
|
||||
Body = 258;
|
||||
BaseSoundID = 422;
|
||||
AnimationMod = 1;
|
||||
Hue = 1188;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 111, 165 );
|
||||
SetDex( 61, 80 );
|
||||
SetInt( 136, 155 );
|
||||
|
||||
SetHits( 105, 120 );
|
||||
|
||||
SetDamage( 15, 20 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 60.1, 84.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 60.1, 84.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 84.0 );
|
||||
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
public override int Hides{ get{ return 6; } }
|
||||
|
||||
public FireImp( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
70
Scripts/Mobiles/Clans/Demonic/HornedDevil.cs
Normal file
70
Scripts/Mobiles/Clans/Demonic/HornedDevil.cs
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a devilish corpse" )]
|
||||
public class HornedDevil : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 125.0; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public HornedDevil() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "daemon" );
|
||||
HiddenTitle = "the horned devil";
|
||||
Body = 188;
|
||||
BaseSoundID = 357;
|
||||
AnimationMod = 5;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 476, 505 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 301, 325 );
|
||||
|
||||
SetHits( 286, 303 );
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
VirtualArmor = 58;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public HornedDevil( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
70
Scripts/Mobiles/Clans/Demonic/IceDevil.cs
Normal file
70
Scripts/Mobiles/Clans/Demonic/IceDevil.cs
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a devilish corpse" )]
|
||||
public class IceDevil : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 125.0; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public IceDevil () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "daemon" );
|
||||
HiddenTitle = "the ice devil";
|
||||
Body = 187;
|
||||
BaseSoundID = 357;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 714, 758 );
|
||||
SetDex( 114, 143 );
|
||||
SetInt( 452, 488 );
|
||||
|
||||
SetHits( 429, 455 );
|
||||
|
||||
SetDamage( 11, 21 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 105.2, 120.0 );
|
||||
SetSkill( SkillName.Magery, 105.2, 120.0 );
|
||||
SetSkill( SkillName.MagicResist, 127.7, 142.5 );
|
||||
SetSkill( SkillName.Tactics, 105.2, 120.0 );
|
||||
SetSkill( SkillName.HandToHand, 90.2, 120.0 );
|
||||
|
||||
Fame = 22500;
|
||||
Karma = -22500;
|
||||
|
||||
VirtualArmor = 85;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Rich, 2 );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
AddLoot( LootPack.HighScrolls );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Greater; } }
|
||||
public override int Meat{ get{ return 2; } }
|
||||
|
||||
public IceDevil( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Scripts/Mobiles/Clans/Demonic/IceFiend.cs
Normal file
63
Scripts/Mobiles/Clans/Demonic/IceFiend.cs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an ice fiend corpse" )]
|
||||
public class IceFiend : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public IceFiend () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an ice fiend";
|
||||
Body = 114;
|
||||
BaseSoundID = 357;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 376, 405 );
|
||||
SetDex( 176, 195 );
|
||||
SetInt( 201, 225 );
|
||||
|
||||
SetHits( 226, 243 );
|
||||
|
||||
SetDamage( 8, 19 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Magery, 80.1, 90.0 );
|
||||
SetSkill( SkillName.MagicResist, 75.1, 85.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 90.0 );
|
||||
SetSkill( SkillName.HandToHand, 80.1, 100.0 );
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
|
||||
VirtualArmor = 60;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public IceFiend( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/Mobiles/Clans/Demonic/IceMephit.cs
Normal file
67
Scripts/Mobiles/Clans/Demonic/IceMephit.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an imp corpse" )]
|
||||
public class IceImp : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public IceImp() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "imp" );
|
||||
HiddenTitle = "the ice imp";
|
||||
Body = 258;
|
||||
BaseSoundID = 422;
|
||||
AnimationMod = 1;
|
||||
Hue = 1079;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 111, 165 );
|
||||
SetDex( 61, 80 );
|
||||
SetInt( 136, 155 );
|
||||
|
||||
SetHits( 105, 120 );
|
||||
|
||||
SetDamage( 15, 20 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 60.1, 84.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 60.1, 84.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 84.0 );
|
||||
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
public override int Hides{ get{ return 6; } }
|
||||
|
||||
public IceImp( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
64
Scripts/Mobiles/Clans/Demonic/Imp.cs
Normal file
64
Scripts/Mobiles/Clans/Demonic/Imp.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an imp corpse" )]
|
||||
public class Imp : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Imp() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "imp" );
|
||||
HiddenTitle = "the imp";
|
||||
Body = 62;
|
||||
BaseSoundID = 422;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 91, 115 );
|
||||
SetDex( 61, 80 );
|
||||
SetInt( 86, 105 );
|
||||
|
||||
SetHits( 55, 70 );
|
||||
|
||||
SetDamage( 10, 14 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 20.1, 30.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 30.1, 50.0 );
|
||||
SetSkill( SkillName.Tactics, 42.1, 50.0 );
|
||||
SetSkill( SkillName.HandToHand, 40.1, 44.0 );
|
||||
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
VirtualArmor = 30;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
public override int Hides{ get{ return 6; } }
|
||||
|
||||
public Imp( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Demonic/Minion.cs
Normal file
65
Scripts/Mobiles/Clans/Demonic/Minion.cs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
using Server.Misc;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a devilish corpse" )]
|
||||
public class Minion : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Minion() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a minion";
|
||||
Body = 340;
|
||||
BaseSoundID = 0x45A;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
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;
|
||||
|
||||
PackItem( new Mace() );
|
||||
PackItem( new Torch() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public Minion( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Demonic/MinionWarrior.cs
Normal file
65
Scripts/Mobiles/Clans/Demonic/MinionWarrior.cs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Misc;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a devilish corpse" )]
|
||||
public class MinionWarrior : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public MinionWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a minion warrior";
|
||||
Body = 338;
|
||||
BaseSoundID = 0x45A;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
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;
|
||||
|
||||
PackItem( new Scimitar() );
|
||||
PackItem( new Buckler() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager, 2 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public MinionWarrior( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
69
Scripts/Mobiles/Clans/Demonic/MinionWizard.cs
Normal file
69
Scripts/Mobiles/Clans/Demonic/MinionWizard.cs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Misc;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a devilish corpse" )]
|
||||
public class MinionWizard : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public MinionWizard () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a minion wizard";
|
||||
Body = 339;
|
||||
BaseSoundID = 0x45A;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
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 );
|
||||
|
||||
PackItem( new Dagger() );
|
||||
PackItem( new BlackStaff() );
|
||||
}
|
||||
|
||||
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 MinionWizard( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
71
Scripts/Mobiles/Clans/Demonic/SeaDevil.cs
Normal file
71
Scripts/Mobiles/Clans/Demonic/SeaDevil.cs
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a devilish corpse" )]
|
||||
public class SeaDevil : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 125.0; } }
|
||||
public override double DispelFocus{ get{ return 45.0; } }
|
||||
|
||||
[Constructable]
|
||||
public SeaDevil () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "daemon" );
|
||||
HiddenTitle = "the sea devil";
|
||||
Body = 303;
|
||||
BaseSoundID = 357;
|
||||
Clan = Clan.Demonic;
|
||||
CanSwim = true;
|
||||
|
||||
SetStr( 714, 758 );
|
||||
SetDex( 114, 143 );
|
||||
SetInt( 452, 488 );
|
||||
|
||||
SetHits( 429, 455 );
|
||||
|
||||
SetDamage( 11, 21 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 105.2, 120.0 );
|
||||
SetSkill( SkillName.Magery, 105.2, 120.0 );
|
||||
SetSkill( SkillName.MagicResist, 127.7, 142.5 );
|
||||
SetSkill( SkillName.Tactics, 105.2, 120.0 );
|
||||
SetSkill( SkillName.HandToHand, 90.2, 120.0 );
|
||||
|
||||
Fame = 22500;
|
||||
Karma = -22500;
|
||||
|
||||
VirtualArmor = 85;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Rich, 2 );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
AddLoot( LootPack.HighScrolls );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Greater; } }
|
||||
public override int Meat{ get{ return 2; } }
|
||||
|
||||
public SeaDevil( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
69
Scripts/Mobiles/Clans/Demonic/ShadowDemon.cs
Normal file
69
Scripts/Mobiles/Clans/Demonic/ShadowDemon.cs
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a demon corpse" )]
|
||||
public class ShadowDemon : BaseCreature
|
||||
{
|
||||
public override double DispelDifficulty{ get{ return 95.0; } }
|
||||
public override double DispelFocus{ get{ return 50.0; } }
|
||||
|
||||
[Constructable]
|
||||
public ShadowDemon () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a shadow demon";
|
||||
Body = 120;
|
||||
AnimationMod = 3;
|
||||
BaseSoundID = 0x2B8;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 276, 305 );
|
||||
SetDex( 46, 65 );
|
||||
SetInt( 201, 225 );
|
||||
|
||||
SetHits( 186, 203 );
|
||||
|
||||
SetDamage( 4, 10 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 80.0 );
|
||||
|
||||
Fame = 9000;
|
||||
Karma = -9000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Average, 1 );
|
||||
AddLoot( LootPack.MedScrolls, 1 );
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses{ get{ return true; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
public override bool BleedImmune{ get{ return true; } }
|
||||
|
||||
public ShadowDemon( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
111
Scripts/Mobiles/Clans/Demonic/Succubus.cs
Normal file
111
Scripts/Mobiles/Clans/Demonic/Succubus.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a succubus corpse" )]
|
||||
public class Succubus : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Succubus () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a succubus";
|
||||
Body = 78;
|
||||
BaseSoundID = 0x4B0;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 388, 420 );
|
||||
SetDex( 121, 170 );
|
||||
SetInt( 298, 457 );
|
||||
|
||||
SetHits( 212, 253 );
|
||||
|
||||
SetDamage( 12, 20 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 99.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 100.5, 150.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 90.0 );
|
||||
SetSkill( SkillName.HandToHand, 80.1, 90.0 );
|
||||
|
||||
Fame = 16000;
|
||||
Karma = -16000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich, 2 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public void DrainLife()
|
||||
{
|
||||
ArrayList list = new ArrayList();
|
||||
|
||||
foreach ( Mobile m in this.GetMobilesInRange( 2 ) )
|
||||
{
|
||||
if ( m == this || !CanBeHarmful( m ) )
|
||||
continue;
|
||||
|
||||
if ( m is BaseCreature && (((BaseCreature)m).Controlled || ((BaseCreature)m).Summoned || ((BaseCreature)m).Team != this.Team) )
|
||||
list.Add( m );
|
||||
else if ( m.Player )
|
||||
list.Add( m );
|
||||
}
|
||||
|
||||
foreach ( Mobile m in list )
|
||||
{
|
||||
DoHarmful( m );
|
||||
|
||||
m.FixedParticles( 0x374A, 10, 15, 5013, 0x496, 0, EffectLayer.Waist );
|
||||
m.PlaySound( 0x231 );
|
||||
|
||||
m.SendMessage( "You feel the life drain out of you!" );
|
||||
|
||||
int toDrain = Utility.RandomMinMax( 5, 20 );
|
||||
|
||||
Hits += toDrain;
|
||||
m.Damage( toDrain, this );
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnGaveMeleeAttack( Mobile defender )
|
||||
{
|
||||
base.OnGaveMeleeAttack( defender );
|
||||
|
||||
if ( 0.1 >= Utility.RandomDouble() )
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
public override void OnGotMeleeAttack( Mobile attacker )
|
||||
{
|
||||
base.OnGotMeleeAttack( attacker );
|
||||
|
||||
if ( 0.1 >= Utility.RandomDouble() )
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
public Succubus( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
112
Scripts/Mobiles/Clans/Demonic/SuccubusQueen.cs
Normal file
112
Scripts/Mobiles/Clans/Demonic/SuccubusQueen.cs
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a succubus corpse" )]
|
||||
public class SuccubusQueen : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public SuccubusQueen () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "daemoness" );
|
||||
HiddenTitle = "the succubus queen";
|
||||
Body = 63;
|
||||
BaseSoundID = 0x4B0;
|
||||
Clan = Clan.Demonic;
|
||||
|
||||
SetStr( 488, 620 );
|
||||
SetDex( 121, 170 );
|
||||
SetInt( 498, 657 );
|
||||
|
||||
SetHits( 312, 353 );
|
||||
|
||||
SetDamage( 18, 28 );
|
||||
|
||||
SetSkill( SkillName.Concentration, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 99.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 100.5, 150.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 90.0 );
|
||||
SetSkill( SkillName.HandToHand, 80.1, 90.0 );
|
||||
|
||||
Fame = 24000;
|
||||
Karma = -24000;
|
||||
|
||||
VirtualArmor = 80;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 2 );
|
||||
AddLoot( LootPack.HighScrolls, 2 );
|
||||
}
|
||||
|
||||
public override int Meat{ get{ return 1; } }
|
||||
|
||||
public void DrainLife()
|
||||
{
|
||||
ArrayList list = new ArrayList();
|
||||
|
||||
foreach ( Mobile m in this.GetMobilesInRange( 2 ) )
|
||||
{
|
||||
if ( m == this || !CanBeHarmful( m ) )
|
||||
continue;
|
||||
|
||||
if ( m is BaseCreature && (((BaseCreature)m).Controlled || ((BaseCreature)m).Summoned || ((BaseCreature)m).Team != this.Team) )
|
||||
list.Add( m );
|
||||
else if ( m.Player )
|
||||
list.Add( m );
|
||||
}
|
||||
|
||||
foreach ( Mobile m in list )
|
||||
{
|
||||
DoHarmful( m );
|
||||
|
||||
m.FixedParticles( 0x374A, 10, 15, 5013, 0x496, 0, EffectLayer.Waist );
|
||||
m.PlaySound( 0x231 );
|
||||
|
||||
m.SendMessage( "You feel the life drain out of you!" );
|
||||
|
||||
int toDrain = Utility.RandomMinMax( 10, 40 );
|
||||
|
||||
Hits += toDrain;
|
||||
m.Damage( toDrain, this );
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnGaveMeleeAttack( Mobile defender )
|
||||
{
|
||||
base.OnGaveMeleeAttack( defender );
|
||||
|
||||
if ( 0.1 >= Utility.RandomDouble() )
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
public override void OnGotMeleeAttack( Mobile attacker )
|
||||
{
|
||||
base.OnGotMeleeAttack( attacker );
|
||||
|
||||
if ( 0.1 >= Utility.RandomDouble() )
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
public SuccubusQueen( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
91
Scripts/Mobiles/Clans/Humanoids/BlackKnight.cs
Normal file
91
Scripts/Mobiles/Clans/Humanoids/BlackKnight.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
89
Scripts/Mobiles/Clans/Humanoids/Brigand.cs
Normal file
89
Scripts/Mobiles/Clans/Humanoids/Brigand.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
62
Scripts/Mobiles/Clans/Humanoids/Caveman.cs
Normal file
62
Scripts/Mobiles/Clans/Humanoids/Caveman.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
80
Scripts/Mobiles/Clans/Humanoids/Dwarf.cs
Normal file
80
Scripts/Mobiles/Clans/Humanoids/Dwarf.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
80
Scripts/Mobiles/Clans/Humanoids/DwarfKnight.cs
Normal file
80
Scripts/Mobiles/Clans/Humanoids/DwarfKnight.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
79
Scripts/Mobiles/Clans/Humanoids/DwarfWarrior.cs
Normal file
79
Scripts/Mobiles/Clans/Humanoids/DwarfWarrior.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
88
Scripts/Mobiles/Clans/Humanoids/Executioner.cs
Normal file
88
Scripts/Mobiles/Clans/Humanoids/Executioner.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Humanoids/Goblin.cs
Normal file
65
Scripts/Mobiles/Clans/Humanoids/Goblin.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Humanoids/GoblinArcher.cs
Normal file
66
Scripts/Mobiles/Clans/Humanoids/GoblinArcher.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Humanoids/GoblinWarrior.cs
Normal file
66
Scripts/Mobiles/Clans/Humanoids/GoblinWarrior.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
74
Scripts/Mobiles/Clans/Humanoids/Hobgoblin.cs
Normal file
74
Scripts/Mobiles/Clans/Humanoids/Hobgoblin.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
73
Scripts/Mobiles/Clans/Humanoids/HobgoblinArcher.cs
Normal file
73
Scripts/Mobiles/Clans/Humanoids/HobgoblinArcher.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
75
Scripts/Mobiles/Clans/Humanoids/HobgoblinChief.cs
Normal file
75
Scripts/Mobiles/Clans/Humanoids/HobgoblinChief.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/Mobiles/Clans/Humanoids/HobgoblinShaman.cs
Normal file
67
Scripts/Mobiles/Clans/Humanoids/HobgoblinShaman.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
84
Scripts/Mobiles/Clans/Humanoids/Orc.cs
Normal file
84
Scripts/Mobiles/Clans/Humanoids/Orc.cs
Normal 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 StandardOrc : BaseCreature
|
||||
{
|
||||
public override InhumanSpeech SpeechType{ get{ return InhumanSpeech.Orc; } }
|
||||
|
||||
[Constructable]
|
||||
public StandardOrc() : 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 StandardOrc( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
77
Scripts/Mobiles/Clans/Humanoids/OrcCaptain.cs
Normal file
77
Scripts/Mobiles/Clans/Humanoids/OrcCaptain.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
76
Scripts/Mobiles/Clans/Humanoids/OrcishLord.cs
Normal file
76
Scripts/Mobiles/Clans/Humanoids/OrcishLord.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
69
Scripts/Mobiles/Clans/Humanoids/OrcishMage.cs
Normal file
69
Scripts/Mobiles/Clans/Humanoids/OrcishMage.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
143
Scripts/Mobiles/Clans/Humanoids/Pirate.cs
Normal file
143
Scripts/Mobiles/Clans/Humanoids/Pirate.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Humanoids/Ratman.cs
Normal file
65
Scripts/Mobiles/Clans/Humanoids/Ratman.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
75
Scripts/Mobiles/Clans/Humanoids/RatmanArcher.cs
Normal file
75
Scripts/Mobiles/Clans/Humanoids/RatmanArcher.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
77
Scripts/Mobiles/Clans/Humanoids/RatmanMage.cs
Normal file
77
Scripts/Mobiles/Clans/Humanoids/RatmanMage.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
72
Scripts/Mobiles/Clans/Humanoids/Savage.cs
Normal file
72
Scripts/Mobiles/Clans/Humanoids/Savage.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
68
Scripts/Mobiles/Clans/Humanoids/SavageLeader.cs
Normal file
68
Scripts/Mobiles/Clans/Humanoids/SavageLeader.cs
Normal 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 = 0x191;
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
229
Scripts/Mobiles/Clans/Humanoids/SavageShaman.cs
Normal file
229
Scripts/Mobiles/Clans/Humanoids/SavageShaman.cs
Normal file
|
|
@ -0,0 +1,229 @@
|
|||
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" );
|
||||
HiddenTitle = "the savage shaman";
|
||||
Hue = 0;
|
||||
Body = 0x190;
|
||||
Clan = Clan.Humanoid;
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
95
Scripts/Mobiles/Clans/Undead/AncientLich.cs
Normal file
95
Scripts/Mobiles/Clans/Undead/AncientLich.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
68
Scripts/Mobiles/Clans/Undead/AncientVampire.cs
Normal file
68
Scripts/Mobiles/Clans/Undead/AncientVampire.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
72
Scripts/Mobiles/Clans/Undead/BoneClaw.cs
Normal file
72
Scripts/Mobiles/Clans/Undead/BoneClaw.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/BoneDrake.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/BoneDrake.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
76
Scripts/Mobiles/Clans/Undead/BoneKnight.cs
Normal file
76
Scripts/Mobiles/Clans/Undead/BoneKnight.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/Mobiles/Clans/Undead/BoneMagi.cs
Normal file
67
Scripts/Mobiles/Clans/Undead/BoneMagi.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
69
Scripts/Mobiles/Clans/Undead/Demilich.cs
Normal file
69
Scripts/Mobiles/Clans/Undead/Demilich.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
59
Scripts/Mobiles/Clans/Undead/GargoyleUndead.cs
Normal file
59
Scripts/Mobiles/Clans/Undead/GargoyleUndead.cs
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a gargoyle corpse" )]
|
||||
public class GargoyleUndead : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public GargoyleUndead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a rotting gargoyle";
|
||||
Body = 310;
|
||||
BaseSoundID = 471;
|
||||
Clan = Clan.Undead;
|
||||
|
||||
SetStr( 369, 413 );
|
||||
SetDex( 114, 143 );
|
||||
SetInt( 122, 158 );
|
||||
|
||||
SetHits( 222, 248 );
|
||||
|
||||
SetDamage( 17, 26 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 105.1, 120.0 );
|
||||
SetSkill( SkillName.Tactics, 100.1, 120.0 );
|
||||
SetSkill( SkillName.HandToHand, 80.1, 120.0 );
|
||||
|
||||
Fame = 7000;
|
||||
Karma = -7000;
|
||||
|
||||
VirtualArmor = 60;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Gems, 3 );
|
||||
}
|
||||
|
||||
public GargoyleUndead( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
86
Scripts/Mobiles/Clans/Undead/Ghoul.cs
Normal file
86
Scripts/Mobiles/Clans/Undead/Ghoul.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/Mobiles/Clans/Undead/Lich.cs
Normal file
67
Scripts/Mobiles/Clans/Undead/Lich.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
67
Scripts/Mobiles/Clans/Undead/LichLord.cs
Normal file
67
Scripts/Mobiles/Clans/Undead/LichLord.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/Mummy.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/Mummy.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/MummyLord.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/MummyLord.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Undead/Nazghoul.cs
Normal file
65
Scripts/Mobiles/Clans/Undead/Nazghoul.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
64
Scripts/Mobiles/Clans/Undead/RottingCorpse.cs
Normal file
64
Scripts/Mobiles/Clans/Undead/RottingCorpse.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Scripts/Mobiles/Clans/Undead/RottingDrake.cs
Normal file
63
Scripts/Mobiles/Clans/Undead/RottingDrake.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/Shade.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/Shade.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
73
Scripts/Mobiles/Clans/Undead/SkeletalDragon.cs
Normal file
73
Scripts/Mobiles/Clans/Undead/SkeletalDragon.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
76
Scripts/Mobiles/Clans/Undead/SkeletalKnight.cs
Normal file
76
Scripts/Mobiles/Clans/Undead/SkeletalKnight.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/SkeletalMage.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/SkeletalMage.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
75
Scripts/Mobiles/Clans/Undead/Skeleton.cs
Normal file
75
Scripts/Mobiles/Clans/Undead/Skeleton.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
76
Scripts/Mobiles/Clans/Undead/SkeletonArcher.cs
Normal file
76
Scripts/Mobiles/Clans/Undead/SkeletonArcher.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/Spectre.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/Spectre.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/Vampire.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/Vampire.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
68
Scripts/Mobiles/Clans/Undead/VampireLord.cs
Normal file
68
Scripts/Mobiles/Clans/Undead/VampireLord.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
79
Scripts/Mobiles/Clans/Undead/VampiricDragon.cs
Normal file
79
Scripts/Mobiles/Clans/Undead/VampiricDragon.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Undead/VampiricDrake.cs
Normal file
66
Scripts/Mobiles/Clans/Undead/VampiricDrake.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
88
Scripts/Mobiles/Clans/Undead/Wight.cs
Normal file
88
Scripts/Mobiles/Clans/Undead/Wight.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Scripts/Mobiles/Clans/Undead/Wraith.cs
Normal file
65
Scripts/Mobiles/Clans/Undead/Wraith.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
74
Scripts/Mobiles/Clans/Undead/Zombie.cs
Normal file
74
Scripts/Mobiles/Clans/Undead/Zombie.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
63
Scripts/Mobiles/Clans/Undead/ZombieDragon.cs
Normal file
63
Scripts/Mobiles/Clans/Undead/ZombieDragon.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
59
Scripts/Mobiles/Clans/Undead/ZombieGargoyle.cs
Normal file
59
Scripts/Mobiles/Clans/Undead/ZombieGargoyle.cs
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a gargoyle corpse" )]
|
||||
public class ZombieGargoyle : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public ZombieGargoyle() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a gargoyle corpse";
|
||||
Body = 333;
|
||||
BaseSoundID = 471;
|
||||
Clan = Clan.Undead;
|
||||
|
||||
SetStr( 246, 275 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 81, 105 );
|
||||
|
||||
SetHits( 148, 165 );
|
||||
|
||||
SetDamage( 11, 17 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.HandToHand, 60.1, 100.0 );
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Gems, 1 );
|
||||
}
|
||||
|
||||
public ZombieGargoyle( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
83
Scripts/Mobiles/Clans/Wizards/EvilMage.cs
Normal file
83
Scripts/Mobiles/Clans/Wizards/EvilMage.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
84
Scripts/Mobiles/Clans/Wizards/EvilMageLord.cs
Normal file
84
Scripts/Mobiles/Clans/Wizards/EvilMageLord.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
90
Scripts/Mobiles/Clans/Wizards/MindFlayer.cs
Normal file
90
Scripts/Mobiles/Clans/Wizards/MindFlayer.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
66
Scripts/Mobiles/Clans/Wizards/Pharaoh.cs
Normal file
66
Scripts/Mobiles/Clans/Wizards/Pharaoh.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue