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,92 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName("an archmage corpse")]
public class Archmage : BaseCreature
{
[Constructable]
public Archmage()
: base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
this.Name = NameList.RandomName("evil mage");
this.Title = "The Insane The Archmage";
this.Body = Utility.RandomList(125, 126);
PackItem(new Robe(Utility.RandomMetalHue()));
SetStr(85, 90);
SetDex(194, 203);
SetInt(237, 241);
SetHits(3106, 3122);
SetMana(578, 616);
SetDamage(15, 20);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 65, 68);
SetResistance(ResistanceType.Fire, 65, 66);
SetResistance(ResistanceType.Cold, 62, 69);
SetResistance(ResistanceType.Poison, 62, 67);
SetResistance(ResistanceType.Energy, 64, 68);
SetSkill(SkillName.EvalInt, 88.9, 94.1);
SetSkill(SkillName.Magery, 96.9, 98.4);
SetSkill(SkillName.Meditation, 89.9, 90.7);
SetSkill(SkillName.MagicResist, 87.2, 88.7);
SetSkill(SkillName.Tactics, 78.2, 79.9);
SetSkill(SkillName.Wrestling, 84.8, 92.6);
Fame = 14500;
Karma = -14500;
VirtualArmor = 16;
switch (Utility.Random(16))
{
case 0: PackItem(new BloodOathScroll()); break;
case 1: PackItem(new CurseWeaponScroll()); break;
case 2: PackItem(new StrangleScroll()); break;
case 3: PackItem(new LichFormScroll()); break;
}
PackReg(23);
PackItem(new Sandals());
if (Utility.RandomDouble() < 0.75)
{
PackItem(new SeveredHumanEars());
}
}
public Archmage(Serial serial)
: base(serial)
{
}
public override bool CanRummageCorpses { get { return true; } }
public override bool AlwaysMurderer { get { return true; } }
public override int Meat { get { return 1; } }
public override int TreasureMapLevel { get { return Core.AOS ? 2 : 0; } }
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
AddLoot(LootPack.Meager);
AddLoot(LootPack.MedScrolls, 2);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,66 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName("Brigand Cannibal corpse")]
public class BrigandCannibal : Brigand
{
[Constructable]
public BrigandCannibal()
: base()
{
Title = "the brigand cannibal";
Hue = 33782;
SetStr(68, 95);
SetDex(81, 95);
SetInt(110, 115);
SetHits(2058, 2126);
SetMana(552, 553);
SetDamage(10, 23);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 65, 68);
SetResistance(ResistanceType.Fire, 65, 66);
SetResistance(ResistanceType.Cold, 62, 69);
SetResistance(ResistanceType.Poison, 62, 67);
SetResistance(ResistanceType.Energy, 64, 68);
SetSkill(SkillName.MagicResist, 96.9, 96.9);
SetSkill(SkillName.Tactics, 94.0, 94.0);
SetSkill(SkillName.Swords, 54.3, 54.3);
Fame = 14500;
Karma = -14500;
VirtualArmor = 16;
}
public BrigandCannibal(Serial serial)
: base(serial)
{
}
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
AddLoot(LootPack.Meager);
}
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.Items;
namespace Server.Mobiles
{
[CorpseName("an archmage corpse")]
public class BrigandCannibalMage : EvilMage
{
[Constructable]
public BrigandCannibalMage()
: base()
{
Title = "the brigand cannibal mage";
SetStr(68, 95);
SetDex(81, 95);
SetInt(110, 115);
SetHits(2058, 2126);
SetMana(552, 553);
SetDamage(10, 23);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 50, 60);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 50, 60);
SetResistance(ResistanceType.Poison, 50, 60);
SetResistance(ResistanceType.Energy, 50, 60);
SetSkill(SkillName.MagicResist, 96.9, 96.9);
SetSkill(SkillName.Tactics, 94.0, 94.0);
SetSkill(SkillName.Wrestling, 54.3, 54.3);
SetSkill(SkillName.Necromancy, 94.0, 94.0);
SetSkill(SkillName.SpiritSpeak, 54.3, 54.3);
Fame = 14500;
Karma = -14500;
if (Utility.RandomDouble() < 0.75)
{
PackItem(new SeveredHumanEars());
}
AI = AIType.AI_NecroMage;
SetSpecialAbility(SpecialAbility.LifeLeech);
}
public BrigandCannibalMage(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;
namespace Server.Mobiles
{
[CorpseName("a Cave Troll corpse")]
public class CaveTrollWrong : BaseCreature
{
[Constructable]
public CaveTrollWrong()
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = "a Cave Troll";
Body = Utility.RandomList(53, 54);
BaseSoundID = 461;
this.Hue = 674;
SetStr(118, 118);
SetDex(58, 58);
SetInt(65, 65);
SetHits(2136, 2136);
SetDamage(8, 14);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 76, 76);
SetResistance(ResistanceType.Fire, 55, 55);
SetResistance(ResistanceType.Cold, 72, 72);
SetResistance(ResistanceType.Poison, 75, 75);
SetResistance(ResistanceType.Energy, 50, 50);
SetSkill(SkillName.MagicResist, 87.4, 87.4);
SetSkill(SkillName.Tactics, 125.8, 125.8);
SetSkill(SkillName.Wrestling, 137.5, 137.5);
Fame = 3500;
Karma = -3500;
VirtualArmor = 40;
}
public CaveTrollWrong(Serial serial)
: base(serial)
{
}
public override bool CanRummageCorpses
{
get
{
return true;
}
}
public override int TreasureMapLevel
{
get
{
return 2;
}
}
public override int Meat
{
get
{
return 2;
}
}
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
}
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,182 @@
using System;
using Server;
using Server.Items;
using System.Collections;
using Server.Network;
namespace Server.Mobiles
{
public class DemonicJailor : BaseCreature
{
[Constructable]
public DemonicJailor()
: base(AIType.AI_Melee, FightMode.Closest, 15, 1, 0.1, 0.3)
{
this.Name = NameList.RandomName("male");
this.SpeechHue = Utility.RandomDyedHue();
this.Title = "the demonic jailor";
this.Hue = 34531;
this.Body = 0x190;
this.SetStr(386, 400);
this.SetDex(151, 165);
this.SetInt(161, 175);
this.SetDamage(8, 10);
this.SetDamageType(ResistanceType.Physical, 100);
this.SetResistance(ResistanceType.Physical, 35, 45);
this.SetResistance(ResistanceType.Fire, 25, 30);
this.SetResistance(ResistanceType.Cold, 25, 30);
this.SetResistance(ResistanceType.Poison, 10, 20);
this.SetResistance(ResistanceType.Energy, 10, 20);
this.SetSkill(SkillName.Anatomy, 125.0);
this.SetSkill(SkillName.Fencing, 46.0, 77.5);
this.SetSkill(SkillName.Macing, 35.0, 57.5);
this.SetSkill(SkillName.Poisoning, 60.0, 82.5);
this.SetSkill(SkillName.DetectHidden, 100);
this.SetSkill(SkillName.MagicResist, 83.5, 92.5);
this.SetSkill(SkillName.Swords, 125.0);
this.SetSkill(SkillName.Tactics, 125.0);
this.SetSkill(SkillName.Lumberjacking, 125.0);
this.Fame = 5000;
this.Karma = -5000;
this.VirtualArmor = 40;
this.SetWearable(new ShortPants(Utility.RandomRedHue()));
this.AddItem(new Sandals(Utility.RandomRedHue()));
this.AddItem(new Shirt(Utility.RandomRedHue()));
this.AddItem(new SkinningKnife());
Utility.AssignRandomHair(this);
}
public override void OnGaveMeleeAttack(Mobile defender)
{
base.OnGaveMeleeAttack(defender);
Point3D loc = new Point3D(5703, 639, 0);
Map map = this.Map;
Effects.SendLocationParticles(EffectItem.Create(loc, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 0, 0, 2023, 0);
Effects.PlaySound(loc, map, 0x1FE);
BaseCreature.TeleportPets(defender, loc, map);
defender.MoveToWorld(loc, map);
defender.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1152076); // You are captured by the jailor and returned to your cell.
}
public override void OnDamagedBySpell(Mobile caster)
{
ParalyzeAttack(caster);
}
private static Hashtable m_Table;
public virtual void ParalyzeAttack(Mobile to)
{
if (m_Table == null)
m_Table = new Hashtable();
if (to.Alive && to.Player && m_Table[to] == null)
{
to.SendSpeedControl(SpeedControlType.WalkSpeed);
to.FixedEffect(0x376A, 6, 1);
to.SendLocalizedMessage(500111); // You are frozen and cannot move.
to.PlaySound(0x204);
m_Table[to] = Timer.DelayCall(TimeSpan.FromSeconds(15), new TimerStateCallback(EndParalyze_Callback), to);
}
}
private void EndParalyze_Callback(object state)
{
if (state is Mobile)
ParalyzeEnd((Mobile)state);
}
public virtual void ParalyzeEnd(Mobile from)
{
if (m_Table == null)
m_Table = new Hashtable();
m_Table[from] = null;
from.SendSpeedControl(SpeedControlType.Disable);
}
public static bool UnderParalyzeAttack(Mobile from)
{
if (m_Table == null)
m_Table = new Hashtable();
return m_Table[from] != null;
}
public DemonicJailor(Serial serial)
: base(serial)
{
}
private DateTime m_NextTerror;
public override void OnMovement(Mobile m, Point3D oldLocation)
{
if (this.UseSkill(SkillName.DetectHidden))
m.RevealingAction();
base.OnMovement(m, oldLocation);
if (m_NextTerror < DateTime.Now && m != null && InRange(m.Location, 3) && m.AccessLevel == AccessLevel.Player)
{
m.Frozen = true;
m.SendLocalizedMessage(1080342, Title, 33); // Terror slices into your very being, destroying any chance of resisting ~1_name~ you might have had
Timer.DelayCall(TimeSpan.FromSeconds(5), new TimerStateCallback(Terrorize), m);
}
}
private void Terrorize(object o)
{
if (o is Mobile)
{
Mobile m = (Mobile)o;
m.Frozen = false;
m.SendLocalizedMessage(1005603); // You can move again!
m_NextTerror = DateTime.Now + TimeSpan.FromMinutes(1);
}
}
public override bool AlwaysMurderer { get { return true; } }
public override bool BardImmune { get { return !Core.SE; } }
public override bool Unprovokable { get { return Core.SE; } }
public override bool AreaPeaceImmune { get { return Core.SE; } }
public override Poison PoisonImmune { get { return Poison.Lethal; } }
public override void GenerateLoot()
{
this.AddLoot(LootPack.FilthyRich);
this.AddLoot(LootPack.Meager);
}
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,111 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName("an ogre corpse")]
public class Fezzik : BaseCreature
{
private DateTime m_StinkingCauldronTime;
[Constructable]
public Fezzik()
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
this.Name = "Fezzik";
this.Title = "The Ogre Cook";
this.Body = 1;
this.BaseSoundID = 427;
this.SetStr(1142, 1381);
this.SetDex(73, 90);
this.SetInt(52, 84);
this.SetMana(0);
this.SetDamage(25, 30);
this.SetDamageType(ResistanceType.Physical, 100);
this.SetResistance(ResistanceType.Physical, 75, 80);
this.SetResistance(ResistanceType.Fire, 70, 75);
this.SetResistance(ResistanceType.Cold, 65, 75);
this.SetResistance(ResistanceType.Poison, 55, 65);
this.SetResistance(ResistanceType.Energy, 65, 75);
this.SetSkill(SkillName.MagicResist, 133.3, 151.9);
this.SetSkill(SkillName.Tactics, 120.3, 130.0);
this.SetSkill(SkillName.Wrestling, 122.2, 128.9);
this.SetSkill(SkillName.Anatomy, 10.0, 15.0);
this.SetSkill(SkillName.DetectHidden, 90.0);
this.SetSkill(SkillName.Parry, 95.0, 100.0);
this.Fame = 3000;
this.Karma = -3000;
this.VirtualArmor = 52;
this.PackItem(new Club());
}
public Fezzik(Serial serial)
: base(serial)
{
}
public override int Meat { get { return 2; } }
public override void AlterDamageScalarFrom(Mobile caster, ref double scalar)
{
if (0.5 >= Utility.RandomDouble())
this.SpawnGreenGoo();
}
public override void OnGotMeleeAttack(Mobile attacker)
{
base.OnGotMeleeAttack(attacker);
if (0.5 >= Utility.RandomDouble())
this.SpawnGreenGoo();
}
public void SpawnGreenGoo()
{
if (this.m_StinkingCauldronTime <= DateTime.UtcNow)
{
new StinkingCauldron().MoveToWorld(this.Location, this.Map);
this.m_StinkingCauldronTime = DateTime.UtcNow + TimeSpan.FromMinutes(2);
}
}
public override void OnDeath(Container c)
{
base.OnDeath(c);
if (0.1 > Utility.RandomDouble())
{
c.DropItem(new RecipeScroll(603));
}
}
public override int TreasureMapLevel { get { return 3; } }
public override void GenerateLoot()
{
AddLoot(LootPack.Meager, 2);
}
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,176 @@
using Server.Network;
using System;
namespace Server.Mobiles
{
[CorpseName("a gooey maggots corpse")]
public class GooeyMaggots : BaseCreature
{
[Constructable]
public GooeyMaggots()
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
this.Name = "Gooey Maggots";
this.Body = 319;
this.BaseSoundID = 898;
this.SetStr(738, 763);
this.SetDex(61, 70);
this.SetInt(10);
this.SetMana(0);
this.SetDamage(3, 9);
this.SetDamageType(ResistanceType.Physical, 50);
this.SetDamageType(ResistanceType.Poison, 50);
this.SetResistance(ResistanceType.Physical, 60, 70);
this.SetResistance(ResistanceType.Fire, 60, 70);
this.SetResistance(ResistanceType.Cold, 50, 60);
this.SetResistance(ResistanceType.Poison, 60, 70);
this.SetResistance(ResistanceType.Energy, 60, 70);
this.SetSkill(SkillName.Tactics, 80.2, 89.7);
this.SetSkill(SkillName.Wrestling, 80.2, 87.5);
this.Fame = 1000;
this.Karma = -1000;
this.VirtualArmor = 24;
Timer selfDeleteTimer = new InternalSelfDeleteTimer(this);
selfDeleteTimer.Start();
}
public GooeyMaggots(Serial serial)
: base(serial)
{
}
public override void GenerateLoot()
{
AddLoot(LootPack.Meager, 2);
}
protected override void OnLocationChange(Point3D oldLocation)
{
new GooeyMaggotSlime().MoveToWorld(oldLocation, this.Map);
base.OnLocationChange(oldLocation);
}
public class InternalSelfDeleteTimer : Timer
{
private GooeyMaggots creature;
public InternalSelfDeleteTimer(Mobile p) : base(TimeSpan.FromMinutes(3))
{
Priority = TimerPriority.FiveSeconds;
creature = ((GooeyMaggots)p);
}
protected override void OnTick()
{
if (creature.Map != Map.Internal)
{
creature.Delete();
this.Stop();
}
}
}
public override Poison PoisonImmune { get { return Poison.Lethal; } }
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();
Timer SelfDeleteTimer = new InternalSelfDeleteTimer(this);
SelfDeleteTimer.Start();
}
}
public class GooeyMaggotSlime : Item
{
public override int LabelNumber { get { return 1015246; } } // Slime
[Constructable]
public GooeyMaggotSlime()
: this(Utility.RandomList(0x1645, 0x122A, 0x122B, 0x122C, 0x122D, 0x122E, 0x122F))
{
}
[Constructable]
public GooeyMaggotSlime(int itemID)
: base(itemID)
{
this.Movable = false;
this.Hue = 363;
new InternalTimer(this).Start();
}
public override bool OnMoveOver(Mobile from)
{
if (!from.IsStaff() && from.Alive && from.Player)
{
from.SendSpeedControl(SpeedControlType.WalkSpeed);
from.SendLocalizedMessage(1152144); // You suddenly find yourself unable to run.
Timer.DelayCall(TimeSpan.FromSeconds(1), new TimerCallback(
delegate
{
from.SendSpeedControl(SpeedControlType.Disable);
from.SendLocalizedMessage(1152145); // You are are free to move again.
}));
this.Delete();
}
return base.OnMoveOver(from);
}
public GooeyMaggotSlime(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();
new InternalTimer(this).Start();
}
private class InternalTimer : Timer
{
private readonly Item m_Slime;
public InternalTimer(Item slime)
: base(TimeSpan.FromSeconds(10.0))
{
this.Priority = TimerPriority.OneSecond;
this.m_Slime = slime;
}
protected override void OnTick()
{
this.m_Slime.Delete();
}
}
}
}

View File

@@ -0,0 +1,73 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName("a hungry ogre corpse")]
public class HungryOgre : BaseCreature
{
[Constructable]
public HungryOgre()
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
this.Name = "Hungry Ogre";
this.Body = 0x1;
this.BaseSoundID = 427;
this.SetStr(188, 223);
this.SetDex(62, 79);
this.SetInt(49, 59);
this.SetHits(1107, 1205);
this.SetMana(49, 59);
this.SetDamage(15, 20);
this.SetDamageType(ResistanceType.Physical, 100);
this.SetResistance(ResistanceType.Physical, 50, 60);
this.SetResistance(ResistanceType.Fire, 70, 80);
this.SetResistance(ResistanceType.Cold, 50, 60);
this.SetResistance(ResistanceType.Poison, 70, 80);
this.SetResistance(ResistanceType.Energy, 60, 70);
this.SetSkill(SkillName.MagicResist, 61.1, 69.9);
this.SetSkill(SkillName.Tactics, 102.3, 109.6);
this.SetSkill(SkillName.Wrestling, 100.9, 108.7);
this.Fame = 12000;
this.Karma = -12000;
this.VirtualArmor = 32;
this.PackItem(new Club());
}
public HungryOgre(Serial serial)
: base(serial)
{
}
public override bool CanRummageCorpses { get { return true; } }
public override int TreasureMapLevel { get { return 1; } }
public override int Meat { get { return 2; } }
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
AddLoot(LootPack.Potions);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,73 @@
using System;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName("a lizardman corpse")]
public class LizardmanDefender : BaseCreature
{
[Constructable]
public LizardmanDefender()
: base(AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4)
{
this.Name = NameList.RandomName("lizardman");
this.Title = "the defender";
this.Body = Utility.RandomList(35, 36);
this.BaseSoundID = 417;
this.Hue = 1949;
SetStr(157, 180);
SetDex(105, 108);
SetInt(50, 57);
SetHits(1100, 1157);
SetDamage(10, 15);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 50, 60);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 50, 60);
SetResistance(ResistanceType.Poison, 50, 60);
SetSkill(SkillName.MagicResist, 65.1, 90.0);
SetSkill(SkillName.Tactics, 95.1, 120.0);
SetSkill(SkillName.Wrestling, 95.1, 120.0);
Fame = 11000;
Karma = -11000;
VirtualArmor = 28;
}
public LizardmanDefender(Serial serial)
: base(serial)
{
}
public override InhumanSpeech SpeechType { get { return InhumanSpeech.Lizardman; } }
public override bool CanRummageCorpses { get { return true; } }
public override int TreasureMapLevel { get { return 3; } }
public override int Meat { get { return 1; } }
public override int Hides { get { return 12; } }
public override HideType HideType { get { return HideType.Spined; } }
public override void GenerateLoot()
{
AddLoot(LootPack.Meager);
}
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,107 @@
using System;
using Server.Misc;
namespace Server.Mobiles
{
[CorpseName("a lizardman squatter corpse")]
public class LizardmanSquatter : BaseCreature
{
[Constructable]
public LizardmanSquatter()
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
this.Name = NameList.RandomName("lizardman");
this.Title = "the squatter";
Body = Utility.RandomList(35, 36);
BaseSoundID = 417;
SetStr(105, 138);
SetDex(89, 114);
SetInt(50, 66);
SetHits(787, 869);
SetDamage(10, 15);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 60, 70);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 50, 60);
SetResistance(ResistanceType.Poison, 50, 60);
SetSkill(SkillName.MagicResist, 35.1, 90.0);
SetSkill(SkillName.Tactics, 95.1, 120.0);
SetSkill(SkillName.Wrestling, 95.1, 120.0);
Fame = 10000;
Karma = -10000;
VirtualArmor = 28;
}
public LizardmanSquatter(Serial serial)
: base(serial)
{
}
public override InhumanSpeech SpeechType
{
get
{
return InhumanSpeech.Lizardman;
}
}
public override bool CanRummageCorpses
{
get
{
return true;
}
}
public override int Meat
{
get
{
return 1;
}
}
public override int Hides
{
get
{
return 12;
}
}
public override int TreasureMapLevel
{
get
{
return 2;
}
}
public override HideType HideType
{
get
{
return HideType.Spined;
}
}
public override void GenerateLoot()
{
AddLoot(LootPack.Meager);
}
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,70 @@
using System;
namespace Server.Mobiles
{
[CorpseName("a rat corpse")]
public class PrisonRat : BaseCreature
{
[Constructable]
public PrisonRat()
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
this.Name = "a prison rat";
this.Body = 0xEE;
this.Hue = 443;
this.BaseSoundID = 0xCC;
this.SetStr(9);
this.SetDex(35);
this.SetInt(7, 10);
this.SetHits(50);
this.SetStam(25);
this.SetMana(7, 10);
this.SetDamage(5, 8);
this.SetDamageType(ResistanceType.Physical, 100);
this.SetResistance(ResistanceType.Physical, 5, 10);
this.SetResistance(ResistanceType.Poison, 15, 25);
this.SetResistance(ResistanceType.Energy, 5, 10);
this.SetSkill(SkillName.MagicResist, 3.7, 20.7);
this.SetSkill(SkillName.Tactics, 6.7, 17.0);
this.SetSkill(SkillName.Wrestling, 9.1, 19.5);
this.Fame = 150;
this.Karma = -150;
this.VirtualArmor = 6;
}
public PrisonRat(Serial serial)
: base(serial)
{
}
public override int Meat { get { return 1; } }
public override FoodType FavoriteFood { get { return FoodType.Fish; } }
public override void GenerateLoot()
{
this.AddLoot(LootPack.Poor);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,68 @@
using System;
namespace Server.Mobiles
{
[CorpseName("a wolf corpse")]
[TypeAlias("Server.Mobiles.SavagePackwolf")]
public class SavagePackWolf : BaseCreature
{
[Constructable]
public SavagePackWolf()
: base(AIType.AI_Melee, FightMode.Weakest, 10, 1, 0.2, 0.4)
{
Name = "a savage pack wolf";
Body = 0xE1;
BaseSoundID = 0xE5;
SetStr(100, 116);
SetDex(51, 61);
SetInt(11, 21);
SetHits(650, 671);
SetMana(0);
SetDamage(9, 12);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 50, 60);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 60, 70);
SetResistance(ResistanceType.Poison, 50, 60);
SetResistance(ResistanceType.Energy, 50, 60);
SetSkill(SkillName.MagicResist, 60.7, 74.0);
SetSkill(SkillName.Tactics, 80.9, 94.4);
SetSkill(SkillName.Wrestling, 89.0, 97.1);
Fame = 450;
Karma = -450;
VirtualArmor = 26;
Tamable = false;
}
public SavagePackWolf(Serial serial)
: base(serial)
{
}
public override bool AlwaysMurderer { get { return true; } }
public override int Meat { get { return 1; } }
public override int Hides { get { return 5; } }
public override FoodType FavoriteFood { get { return FoodType.Meat; } }
public override PackInstinct PackInstinct { get { return PackInstinct.Canine; } }
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,59 @@
using System;
using Server.Items;
namespace Server.Engines.Quests
{
public class WrongPrisoner : BaseEscort
{
[Constructable]
public WrongPrisoner()
: base()
{
this.Title = "the prisoner";
this.IsPrisoner = true;
this.Female = false;
this.Body = 0x190;
this.Hue = 33802;
this.Name = NameList.RandomName("male");
this.SetWearable(new PlateChest());
this.SetWearable(new PlateArms());
this.SetWearable(new PlateGloves());
this.SetWearable(new PlateLegs());
}
public WrongPrisoner(Serial serial)
: base(serial)
{
}
public override void InitOutfit() { }
public override bool IsInvulnerable { get { return !this.Controlled; } }
public override Type[] Quests
{
get
{
return new Type[]
{
typeof(EscortToWrongEntrance)
};
}
}
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();
}
}
}