Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
111
Scripts/Services/Revamped Dungeons/WrongDungeon/Mobile/Fezzik.cs
Normal file
111
Scripts/Services/Revamped Dungeons/WrongDungeon/Mobile/Fezzik.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user