Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,83 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an arcane liche's corpse" )]
public class ArcaneLich : BaseCreature
{
[Constructable]
public ArcaneLich() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an arcane lich";
Body = 79;
BaseSoundID = 412;
Hue = 2951;
SetStr( 416, 505 );
SetDex( 146, 155 );
SetInt( 682, 745 );
SetHits( 350, 403 );
SetDamage( 18, 24 );
SetDamageType( ResistanceType.Physical, 10 );
SetDamageType( ResistanceType.Cold, 60 );
SetDamageType( ResistanceType.Energy, 80 );
SetResistance( ResistanceType.Physical, 40, 50 );
SetResistance( ResistanceType.Fire, 80, 100 );
SetResistance( ResistanceType.Cold, 50, 60 );
SetResistance( ResistanceType.Poison, 50, 60 );
SetResistance( ResistanceType.Energy, 80, 100 );
SetSkill( SkillName.EvalInt, 120.1, 140.0 );
SetSkill( SkillName.Magery, 120.1, 140.0 );
SetSkill( SkillName.Focus, 120.1, 140.0 );
SetSkill( SkillName.MagicResist, 150.5, 200.0 );
SetSkill( SkillName.Tactics, 60.1, 80.0 );
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
Fame = 18000;
Karma = -18000;
VirtualArmor = 60;
PackItem( new GnarledStaff() );
PackNecroReg( 12, 40 );
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
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 override int TreasureMapLevel{ get{ return 4; } }
public ArcaneLich( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,74 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an atropal corpse" )]
public class Atropal : BaseCreature
{
public override WeaponAbility GetWeaponAbility()
{
return WeaponAbility.MortalStrike;
}
[Constructable]
public Atropal() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an atropal";
Body = 3;
Hue = 35;
BaseSoundID = 461;
SetStr( 126, 150 );
SetDex( 86, 120 );
SetInt( 106, 120 );
SetHits( 176, 180 );
SetDamage( 14, 16 );
SetDamageType( ResistanceType.Physical, 20 );
SetDamageType( ResistanceType.Cold, 60 );
SetDamageType( ResistanceType.Poison, 20 );
SetResistance( ResistanceType.Physical, 70, 80 );
SetResistance( ResistanceType.Fire, 25, 30 );
SetResistance( ResistanceType.Cold, 70, 80 );
SetResistance( ResistanceType.Poison, 30, 40 );
SetResistance( ResistanceType.Energy, 70, 80 );
SetSkill( SkillName.MagicResist, 80.1, 98.0 );
SetSkill( SkillName.Tactics, 85.1, 90.0 );
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
Fame = 10500;
Karma = -10500;
VirtualArmor = 80;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public Atropal( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an atropal scion corpse" )]
public class AtropalScion : BaseCreature
{
public override WeaponAbility GetWeaponAbility()
{
return WeaponAbility.MortalStrike;
}
[Constructable]
public AtropalScion() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an atropal scion";
Hue = 35;
BaseSoundID = 959;
switch ( Utility.Random( 2 ) )
{
case 0: // ghoul
Body = 153;
BaseSoundID = 471;
break;
case 1: // kaze kemono
Body = 196;
BaseSoundID = 0x39D;
break;
}
SetStr( 126, 150 );
SetDex( 126, 140 );
SetInt( 406, 420 );
SetHits( 276, 280 );
SetDamage( 14, 16 );
SetDamageType( ResistanceType.Physical, 20 );
SetDamageType( ResistanceType.Cold, 60 );
SetDamageType( ResistanceType.Poison, 20 );
SetResistance( ResistanceType.Physical, 70, 80 );
SetResistance( ResistanceType.Fire, 25, 30 );
SetResistance( ResistanceType.Cold, 180, 200 );
SetResistance( ResistanceType.Poison, 30, 40 );
SetResistance( ResistanceType.Energy, 180, 200 );
SetSkill( SkillName.MagicResist, 120.1, 148.0 );
SetSkill( SkillName.Tactics, 145.1, 160.0 );
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
Fame = 28500;
Karma = -28500;
VirtualArmor = 100;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public AtropalScion( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,82 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a baelnorn's corpse" )]
public class Baelnorn : BaseCreature
{
[Constructable]
public Baelnorn() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a baelnorn";
Body = 772;
BaseSoundID = 0x3E9;
Hue = 1309;
SetStr( 161, 180 );
SetDex( 146, 165 );
SetInt( 276, 305 );
SetHits( 102, 118 );
SetDamage( 26, 28 );
SetDamageType( ResistanceType.Physical, 10 );
SetDamageType( ResistanceType.Cold, 40 );
SetDamageType( ResistanceType.Energy, 50 );
SetResistance( ResistanceType.Physical, 40, 60 );
SetResistance( ResistanceType.Fire, 20, 30 );
SetResistance( ResistanceType.Cold, 50, 60 );
SetResistance( ResistanceType.Poison, 55, 65 );
SetResistance( ResistanceType.Energy, 40, 50 );
SetSkill( SkillName.EvalInt, 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() );
PackNecroReg( 17, 24 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.MedScrolls, 2 );
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override bool CanRummageCorpses{ get{ return true; } }
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override int TreasureMapLevel{ get{ return 3; } }
public Baelnorn( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,81 @@
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Beguiled : BaseCreature
{
public override bool ClickTitle{ get{ return false; } }
[Constructable]
public Beguiled() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomDyedHue();
Name = "the beguiled";
Hue = 2207;
Body = 400;
BaseSoundID = 471;
SetStr( 86, 100 );
SetDex( 81, 95 );
SetInt( 61, 75 );
SetDamage( 10, 23 );
SetSkill( SkillName.Fencing, 66.0, 97.5 );
SetSkill( SkillName.Macing, 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.Wrestling, 15.0, 37.5 );
Fame = 1000;
Karma = -1000;
AddItem( new Boots( Utility.RandomNeutralHue() ) );
AddItem( new FancyShirt());
AddItem( new LongPants());
AddItem( new Cap());
switch ( Utility.Random( 5 ))
{
case 0: AddItem( new Longsword() ); break;
case 1: AddItem( new Axe() ); break;
case 2: AddItem( new Broadsword() ); break;
case 3: AddItem( new Dagger() ); break;
case 4: AddItem( new Bokuto() ); break;
}
Utility.AssignRandomHair( this );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override bool AlwaysMurderer{ get{ return true; } }
public Beguiled( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,87 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a soggy corpse" )]
public class DrownedDead : BaseCreature
{
[Constructable]
public DrownedDead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a drowned dead";
Body = 3;
BaseSoundID = 471;
Hue = 2951;
SetStr( 86, 90 );
SetDex( 81, 90 );
SetInt( 46, 50 );
SetHits( 88, 92 );
SetDamage( 11, 13 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 65, 80 );
SetResistance( ResistanceType.Cold, 80, 90 );
SetResistance( ResistanceType.Poison, 25, 40 );
SetResistance( ResistanceType.Fire, 25, 40 );
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
SetSkill( SkillName.Tactics, 75.1, 80.0 );
SetSkill( SkillName.Wrestling, 65.1, 70.0 );
Fame = 2000;
Karma = -2000;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public DrownedDead( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,72 @@
using System;
using Server.Mobiles;
namespace Server.Mobiles
{
[CorpseName( "a festering eel corpse" )]
public class FesteringEel : BaseCreature
{
[Constructable]
public FesteringEel() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a festering eel";
Body = 52;
Hue = 1745;
BaseSoundID = 0xDB;
SetStr( 22, 34 );
SetDex( 16, 25 );
SetInt( 6, 10 );
SetHits( 25, 29 );
SetMana( 0 );
SetDamage( 2, 5 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 15, 20 );
SetResistance( ResistanceType.Poison, 50, 60 );
SetSkill( SkillName.Poisoning, 100.1, 120.0 );
SetSkill( SkillName.MagicResist, 15.1, 20.0 );
SetSkill( SkillName.Tactics, 19.3, 34.0 );
SetSkill( SkillName.Wrestling, 19.3, 34.0 );
Fame = 300;
Karma = -300;
VirtualArmor = 16;
Tamable = true;
ControlSlots = 1;
MinTameSkill = 59.1;
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public override bool DeathAdderCharmable{ get{ return true; } }
public override int Meat{ get{ return 1; } }
public override FoodType FavoriteFood{ get{ return FoodType.Eggs; } }
public FesteringEel(Serial serial) : base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int) 0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,75 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a festering mutant corpse" )]
public class FesteringMutant : BaseCreature
{
public override WeaponAbility GetWeaponAbility()
{
return WeaponAbility.BleedAttack;
}
[Constructable]
public FesteringMutant() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a festering mutant";
Body = 304;
BaseSoundID = 0x451;
Hue = 1505;
SetStr( 176, 200 );
SetDex( 121, 125 );
SetInt( 66, 80 );
SetHits( 136, 140 );
SetDamage( 20, 24 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 50, 60 );
SetResistance( ResistanceType.Fire, 25, 35 );
SetResistance( ResistanceType.Cold, 15, 25 );
SetResistance( ResistanceType.Poison, 60, 70 );
SetResistance( ResistanceType.Energy, 30, 40 );
SetSkill( SkillName.MagicResist, 50.1, 75.0 );
SetSkill( SkillName.Tactics, 75.1, 90.0 );
SetSkill( SkillName.Wrestling, 70.1, 80.0 );
Fame = 7000;
Karma = -7800;
VirtualArmor = 34;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override bool BleedImmune{ get{ return true; } }
public override int TreasureMapLevel{ get{ return 1; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public FesteringMutant( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a frankenstein corpse" )]
public class Frankenstein : BaseCreature
{
[Constructable]
public Frankenstein() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a frankenstein";
Body = 1;
BaseSoundID = 461;
Hue = 2953;
SetStr( 128, 140 );
SetDex( 111, 120 );
SetInt( 46, 60 );
SetHits( 148, 162 );
SetDamage( 25, 37 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 85, 90 );
SetResistance( ResistanceType.Cold, 80, 90 );
SetResistance( ResistanceType.Poison, 85, 90 );
SetSkill( SkillName.MagicResist, 85.1, 90.0 );
SetSkill( SkillName.Tactics, 75.1, 80.0 );
SetSkill( SkillName.Wrestling, 95.1, 100.0 );
Fame = 8000;
Karma = -8000;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public Frankenstein( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a rotting corpse" )]
public class Ghast : BaseCreature
{
[Constructable]
public Ghast() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a ghast";
Body = 3;
BaseSoundID = 471;
Hue = 39;
SetStr( 86, 100 );
SetDex( 42, 60 );
SetInt( 26, 40 );
SetHits( 78, 94 );
SetDamage( 16, 28 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 85, 100 );
SetResistance( ResistanceType.Cold, 60, 80 );
SetResistance( ResistanceType.Poison, 12, 22 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 48.1, 60.0 );
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
Fame = 1400;
Karma = -1400;
VirtualArmor = 28;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public Ghast( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,85 @@
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
public class Guilded : BaseCreature
{
public override bool ClickTitle{ get{ return false; } }
[Constructable]
public Guilded() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomDyedHue();
Name = "the guilded";
Hue = 1743;
Body = 0x191;
BaseSoundID = 471;
SetStr( 86, 100 );
SetDex( 81, 95 );
SetInt( 61, 75 );
SetDamage( 10, 23 );
SetSkill( SkillName.Fencing, 66.0, 97.5 );
SetSkill( SkillName.Macing, 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.Wrestling, 15.0, 37.5 );
Fame = 1000;
Karma = -1000;
AddItem( new Boots( Utility.RandomNeutralHue() ) );
AddItem( new FancyShirt());
AddItem( new Skirt());
switch ( Utility.Random( 7 ))
{
case 0: AddItem( new Longsword() );
AddItem( new Buckler() ); break;
case 1: AddItem( new Cutlass() );
AddItem( new ChaosShield() ); break;
case 2: AddItem( new Broadsword() );
AddItem( new WoodenShield() ); break;
case 3: AddItem( new Axe() ); break;
case 4: AddItem( new Club() ); break;
case 5: AddItem( new Dagger() ); break;
case 6: AddItem( new Spear() ); break;
}
Utility.AssignRandomHair( this );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override bool AlwaysMurderer{ get{ return true; } }
public Guilded( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a guilded corpse" )]
public class GuildedDead : BaseCreature
{
[Constructable]
public GuildedDead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a guilded dead";
Body = 3;
BaseSoundID = 412;
Hue = 1743;
SetStr( 96, 100 );
SetDex( 91, 100 );
SetInt( 86, 90 );
SetHits( 98, 102 );
SetDamage( 15, 17 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 65, 80 );
SetResistance( ResistanceType.Cold, 60, 80 );
SetResistance( ResistanceType.Poison, 25, 40 );
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
SetSkill( SkillName.Tactics, 75.1, 80.0 );
SetSkill( SkillName.Wrestling, 65.1, 70.0 );
Fame = 3000;
Karma = -3000;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public GuildedDead( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

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

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a rotting corpse" )]
public class LeftForDead : BaseCreature
{
[Constructable]
public LeftForDead() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "left for dead";
Body = 3;
BaseSoundID = 471;
Hue = 1862;
SetStr( 48, 78 );
SetDex( 38, 58 );
SetInt( 28, 48 );
SetHits( 36, 58 );
SetDamage( 5, 10 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 25, 30 );
SetResistance( ResistanceType.Cold, 30, 40 );
SetResistance( ResistanceType.Poison, 16, 20 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 35.1, 50.0 );
SetSkill( SkillName.Wrestling, 35.1, 50.0 );
Fame = 800;
Karma = -800;
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 bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public LeftForDead( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,82 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a necrobus's corpse" )]
public class Necrobus : BaseCreature
{
[Constructable]
public Necrobus() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a necrobus";
Body = 0x102;
BaseSoundID = 451;
Hue = 1743;
SetStr( 171, 200 );
SetDex( 126, 145 );
SetInt( 276, 305 );
SetHits( 120, 140 );
SetDamage( 24, 28 );
SetDamageType( ResistanceType.Physical, 10 );
SetDamageType( ResistanceType.Cold, 100 );
SetDamageType( ResistanceType.Energy, 50 );
SetResistance( ResistanceType.Physical, 40, 60 );
SetResistance( ResistanceType.Fire, 20, 30 );
SetResistance( ResistanceType.Cold, 80, 100 );
SetResistance( ResistanceType.Poison, 85, 105 );
SetResistance( ResistanceType.Energy, 40, 50 );
SetSkill( SkillName.EvalInt, 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() );
PackNecroReg( 17, 24 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.MedScrolls, 2 );
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override bool CanRummageCorpses{ get{ return true; } }
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override int TreasureMapLevel{ get{ return 3; } }
public Necrobus( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,77 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an undead organ's corpse" )]
public class OrganOfUndeath : BaseCreature
{
[Constructable]
public OrganOfUndeath() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an organ of undeath";
Body = 778;
Hue = 2968;
BaseSoundID = 0x26B;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 36, 60 );
SetHits( 20, 24 );
SetDamage( 6, 8 );
SetDamageType( ResistanceType.Physical, 50 );
SetDamageType( ResistanceType.Cold, 50 );
SetResistance( ResistanceType.Physical, 25, 30 );
SetResistance( ResistanceType.Cold, 15, 25 );
SetResistance( ResistanceType.Poison, 10, 20 );
SetSkill( SkillName.EvalInt, 35.1, 40.0 );
SetSkill( SkillName.Magery, 45.1, 50.0 );
SetSkill( SkillName.MagicResist, 45.1, 50.0 );
SetSkill( SkillName.Tactics, 25.1, 30.0 );
SetSkill( SkillName.Wrestling, 25.1, 45.0 );
Fame = 1000;
Karma = -1000;
VirtualArmor = 28;
PackReg( 10 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public OrganOfUndeath( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,87 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a plagued corpse" )]
public class PlagueBearer : BaseCreature
{
[Constructable]
public PlagueBearer() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a plague bearer ";
Body = 3;
BaseSoundID = 471;
Hue = 2967;
SetStr( 96, 100 );
SetDex( 91, 100 );
SetInt( 66, 70 );
SetHits( 100, 104 );
SetDamage( 14, 16 );
SetDamageType( ResistanceType.Physical, 100 );
SetDamageType( ResistanceType.Poison, 100 );
SetResistance( ResistanceType.Physical, 65, 80 );
SetResistance( ResistanceType.Cold, 60, 80 );
SetResistance( ResistanceType.Poison, 95, 100 );
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
SetSkill( SkillName.Tactics, 75.1, 80.0 );
SetSkill( SkillName.Wrestling, 65.1, 70.0 );
Fame = 6000;
Karma = -6000;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public PlagueBearer( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,96 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a ravaged corpse" )]
public class Ravaged : BaseCreature
{
[Constructable]
public Ravaged() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "the ravaged";
Hue = 2115;
BaseSoundID = 0x482;
switch ( Utility.Random( 2 ) )
{
case 0: // zombie
Body = 3;
break;
case 1: // ghoul
Body = 153;
break;
}
SetStr( 46, 60 );
SetDex( 42, 60 );
SetInt( 26, 40 );
SetHits( 64, 74 );
SetDamage( 8, 10 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 65, 70 );
SetResistance( ResistanceType.Cold, 60, 80 );
SetResistance( ResistanceType.Poison, 12, 22 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 48.1, 60.0 );
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
Fame = 1400;
Karma = -1400;
VirtualArmor = 28;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public Ravaged( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,67 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a redead corpse" )]
public class Redead : BaseCreature
{
public override WeaponAbility GetWeaponAbility()
{
return WeaponAbility.ParalyzingBlow;
}
[Constructable]
public Redead() : base( AIType.AI_Melee,FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a redead";
Body = 3;
BaseSoundID = 0x3E9;
Hue = 2313;
SetStr( 80, 100 );
SetDex( 101, 105 );
SetInt( 66, 85 );
SetHits( 105, 108 );
SetDamage( 12, 17 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 65, 75 );
SetResistance( ResistanceType.Fire, 65, 75 );
SetResistance( ResistanceType.Cold, 65, 75 );
SetResistance( ResistanceType.Poison, 40, 50 );
SetResistance( ResistanceType.Energy, 50, 60 );
SetSkill( SkillName.MagicResist, 65.1, 70.0 );
SetSkill( SkillName.Tactics, 87.6, 92.5 );
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
Fame = 8500;
Karma = -8500;
VirtualArmor = 27;
}
public override int TreasureMapLevel{ get{ return 1; } }
public Redead( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,114 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a mangled corpse" )]
public class ReturnedFotter : BaseCreature
{
[Constructable]
public ReturnedFotter() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a returned fotter";
Hue = 1441;
switch ( Utility.Random( 5 ) )
{
case 0: // zombie
Body = 3;
BaseSoundID = 471;
break;
case 1: // headless one
Body = 31;
BaseSoundID = 0x39D;
break;
case 2: // skeleton
Body = Utility.RandomList( 50, 56 );
BaseSoundID = 0x48D;
break;
case 3: // ghoul
Body = 153;
BaseSoundID = 0x482;
break;
case 4: // patchwork skeleton
Body = 309;
BaseSoundID = 0x48D;
break;
default:
case 5: // slime
Body = 51;
BaseSoundID = 456;
break;
}
SetStr( 76, 80 );
SetDex( 42, 60 );
SetInt( 26, 40 );
SetHits( 68, 74 );
SetDamage( 8, 12 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 65, 70 );
SetResistance( ResistanceType.Cold, 60, 80 );
SetResistance( ResistanceType.Poison, 12, 22 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 48.1, 60.0 );
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
Fame = 1400;
Karma = -1400;
VirtualArmor = 28;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public ReturnedFotter( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,78 @@
using System;
using Server.Items;
using Server.Mobiles;
namespace Server.Mobiles
{
[CorpseName( "a rotting cat corpse" )]
[TypeAlias( "Server.Mobiles.RevenantCat" )]
public class RevenantCat : BaseCreature
{
[Constructable]
public RevenantCat() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a revenant cat";
Body = 0xC9;
Hue = 1743;
BaseSoundID = 0x69;
SetStr( 51, 100 );
SetDex( 52, 150 );
SetInt( 13, 85 );
SetHits( 48, 67 );
SetDamage( 6, 12 );
SetDamageType( ResistanceType.Physical, 40 );
SetDamageType( ResistanceType.Fire, 60 );
SetResistance( ResistanceType.Physical, 25, 35 );
SetResistance( ResistanceType.Fire, 80, 90 );
SetResistance( ResistanceType.Energy, 15, 20 );
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
SetSkill( SkillName.Tactics, 40.1, 55.0 );
SetSkill( SkillName.Wrestling, 30.1, 40.0 );
Fame = 1000;
Karma = -1000;
VirtualArmor = 30;
Tamable = true;
ControlSlots = 1;
MinTameSkill = 71.1;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public override int Hides{ get{ return 10; } }
public override HideType HideType{ get{ return HideType.Spined; } }
public override FoodType FavoriteFood{ get{ return FoodType.Meat; } }
public override PackInstinct PackInstinct{ get{ return PackInstinct.Feline; } }
public RevenantCat(Serial serial) : base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int) 0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,76 @@
using System;
using Server.Mobiles;
namespace Server.Mobiles
{
[CorpseName( "a rotting wolf corpse" )]
[TypeAlias( "Server.Mobiles.RevenantWolf" )]
public class RevenantWolf : BaseCreature
{
[Constructable]
public RevenantWolf() : base( AIType.AI_Melee,FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a revenant wolf";
Body = 23;
BaseSoundID = 0xE5;
Hue = 1743;
SetStr( 96, 120 );
SetDex( 121, 145 );
SetInt( 36, 60 );
SetHits( 58, 72 );
SetMana( 0 );
SetDamage( 14, 18 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 20, 25 );
SetResistance( ResistanceType.Fire, 10, 20 );
SetResistance( ResistanceType.Cold, 5, 10 );
SetResistance( ResistanceType.Poison, 5, 10 );
SetResistance( ResistanceType.Energy, 10, 15 );
SetSkill( SkillName.MagicResist, 57.6, 75.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
Fame = 8500;
Karma = -8500;
VirtualArmor = 22;
Tamable = true;
ControlSlots = 1;
MinTameSkill = 83.1;
}
public override int Meat{ get{ return 1; } }
public override int Hides{ get{ return 7; } }
public override bool BleedImmune{ get{ return true; } }
public override HideType HideType{ get{ return HideType.Spined; } }
public override FoodType FavoriteFood{ get{ return FoodType.Meat; } }
public override PackInstinct PackInstinct{ get{ return PackInstinct.Canine; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public RevenantWolf(Serial serial) : base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int) 0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,76 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a shambling horror corpse" )]
public class ShamblingHorror : BaseCreature
{
public override WeaponAbility GetWeaponAbility()
{
return WeaponAbility.DoubleStrike;
}
[Constructable]
public ShamblingHorror() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a shambling horror";
Body = 309;
BaseSoundID = 0x3E9;
Hue = 34;
SetStr( 96, 120 );
SetDex( 71, 95 );
SetInt( 16, 40 );
SetHits( 58, 74 );
SetDamage( 18, 24 );
SetDamageType( ResistanceType.Physical, 85 );
SetDamageType( ResistanceType.Cold, 15 );
SetResistance( ResistanceType.Physical, 55, 65 );
SetResistance( ResistanceType.Fire, 50, 60 );
SetResistance( ResistanceType.Cold, 70, 80 );
SetResistance( ResistanceType.Poison, 100 );
SetResistance( ResistanceType.Energy, 40, 50 );
SetSkill( SkillName.MagicResist, 70.1, 95.0 );
SetSkill( SkillName.Tactics, 55.1, 80.0 );
SetSkill( SkillName.Wrestling, 50.1, 70.0 );
Fame = 500;
Karma = -500;
VirtualArmor = 54;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override int TreasureMapLevel{ get{ return 1; } }
public ShamblingHorror( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,96 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a slaughtered corpse" )]
public class Slaughtered : BaseCreature
{
[Constructable]
public Slaughtered() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "the slaughtered";
Hue = 1143;
BaseSoundID = 0x482;
switch ( Utility.Random( 2 ) )
{
case 0: // zombie
Body = 3;
break;
case 1: // ghoul
Body = 153;
break;
}
SetStr( 46, 60 );
SetDex( 42, 60 );
SetInt( 26, 40 );
SetHits( 82, 84 );
SetDamage( 12, 14 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 65, 70 );
SetResistance( ResistanceType.Cold, 60, 80 );
SetResistance( ResistanceType.Poison, 12, 22 );
SetSkill( SkillName.MagicResist, 18.1, 40.0 );
SetSkill( SkillName.Tactics, 58.1, 60.0 );
SetSkill( SkillName.Wrestling, 68.1, 80.0 );
Fame = 1600;
Karma = -1600;
VirtualArmor = 28;
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.Rich );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public Slaughtered( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,77 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an undead tumor's corpse" )]
public class TumorOfUndeath : BaseCreature
{
[Constructable]
public TumorOfUndeath() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a tumor of undeath";
Body = 22;
Hue = 2968;
BaseSoundID = 442;
SetStr( 76, 100 );
SetDex( 76, 95 );
SetInt( 86, 100 );
SetHits( 240, 284 );
SetDamage( 22, 28 );
SetDamageType( ResistanceType.Physical, 50 );
SetDamageType( ResistanceType.Cold, 50 );
SetResistance( ResistanceType.Physical, 35, 40 );
SetResistance( ResistanceType.Cold, 55, 85 );
SetResistance( ResistanceType.Poison, 60, 80 );
SetSkill( SkillName.EvalInt, 65.1, 80.0 );
SetSkill( SkillName.Magery, 85.1, 120.0 );
SetSkill( SkillName.MagicResist, 105.1, 120.0 );
SetSkill( SkillName.Tactics, 85.1, 100.0 );
SetSkill( SkillName.Wrestling, 65.1, 85.0 );
Fame = 10000;
Karma = -10000;
VirtualArmor = 28;
PackReg( 10 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich );
}
public override bool BleedImmune{ get{ return true; } }
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public TumorOfUndeath( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a rotting corpse" )]
public class WalkingCorpse : BaseCreature
{
[Constructable]
public WalkingCorpse() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a walking corpse";
Body = 3;
BaseSoundID = 471;
Hue = Utility.RandomSkinHue();
SetStr( 36, 50 );
SetDex( 31, 50 );
SetInt( 26, 40 );
SetHits( 20, 30 );
SetDamage( 3, 5 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 15, 20 );
SetResistance( ResistanceType.Cold, 20, 30 );
SetResistance( ResistanceType.Poison, 5, 10 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 35.1, 50.0 );
SetSkill( SkillName.Wrestling, 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 bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public WalkingCorpse( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,86 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a rotting corpse" )]
public class Wronged : BaseCreature
{
[Constructable]
public Wronged() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "the wronged";
Body = 3;
BaseSoundID = 471;
Hue = 686;
SetStr( 48, 60 );
SetDex( 38, 50 );
SetInt( 28, 30 );
SetHits( 36, 58 );
SetDamage( 5, 10 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 25, 30 );
SetResistance( ResistanceType.Cold, 30, 40 );
SetResistance( ResistanceType.Poison, 16, 20 );
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
SetSkill( SkillName.Tactics, 35.1, 50.0 );
SetSkill( SkillName.Wrestling, 35.1, 50.0 );
Fame = 800;
Karma = -800;
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 bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Regular; } }
public Wronged( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup
{
get{ return OppositionGroup.FeyAndUndead; }
}
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();
}
}
}