Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
109
Scripts/Mobiles/Void Creatures/Anlorlem.cs
Normal file
109
Scripts/Mobiles/Void Creatures/Anlorlem.cs
Normal file
@@ -0,0 +1,109 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("an Anlorlem corpse")]
|
||||
public class Anlorlem : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Grouping; } }
|
||||
public override int Stage { get { return 2; } }
|
||||
|
||||
[Constructable]
|
||||
public Anlorlem()
|
||||
: base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = "an Anlorlem";
|
||||
Body = 72;
|
||||
Hue = 2071;
|
||||
BaseSoundID = 644;
|
||||
|
||||
SetStr(900, 1000);
|
||||
SetDex(1000, 1200);
|
||||
SetInt(900, 950);
|
||||
|
||||
SetHits(500, 650);
|
||||
|
||||
SetDamage(18, 22);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Poison, 50);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 35, 45);
|
||||
SetResistance(ResistanceType.Poison, 90, 100);
|
||||
SetResistance(ResistanceType.Energy, 35, 45);
|
||||
|
||||
SetSkill(SkillName.MagicResist, 40.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
Fame = 16000;
|
||||
Karma = -16000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
|
||||
PackItem(new DaemonBone(15));
|
||||
}
|
||||
|
||||
public Anlorlem(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int TreasureMapLevel
|
||||
{
|
||||
get
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
public override bool BardImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return !Core.AOS;
|
||||
}
|
||||
}
|
||||
public override bool Unprovokable
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool ReacquireOnMovement
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override Poison PoisonImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Greater;
|
||||
}
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
this.AddLoot(LootPack.FilthyRich);
|
||||
this.AddLoot(LootPack.Average, 2);
|
||||
this.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
104
Scripts/Mobiles/Void Creatures/Anlorvaglem.cs
Normal file
104
Scripts/Mobiles/Void Creatures/Anlorvaglem.cs
Normal file
@@ -0,0 +1,104 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("an anlorvaglem corpse")]
|
||||
public class Anlorvaglem : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Grouping; } }
|
||||
public override int Stage { get { return 3; } }
|
||||
|
||||
[Constructable]
|
||||
public Anlorvaglem()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.6, 1.2)
|
||||
{
|
||||
Name = "anlorvaglem";
|
||||
Hue = 2071;
|
||||
Body = 152;
|
||||
|
||||
SetStr(1000, 1200);
|
||||
SetDex(1000, 1200);
|
||||
SetInt(100, 1200);
|
||||
|
||||
SetHits(3205);
|
||||
|
||||
SetDamage(11, 13);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 20);
|
||||
SetDamageType(ResistanceType.Fire, 20);
|
||||
SetDamageType(ResistanceType.Cold, 20);
|
||||
SetDamageType(ResistanceType.Poison, 20);
|
||||
SetDamageType(ResistanceType.Energy, 20);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 20, 50);
|
||||
SetResistance(ResistanceType.Fire, 20, 60);
|
||||
SetResistance(ResistanceType.Cold, 20, 58);
|
||||
SetResistance(ResistanceType.Poison, 80, 100);
|
||||
SetResistance(ResistanceType.Energy, 30, 50);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 75.8, 100.0);
|
||||
SetSkill(SkillName.Tactics, 50.0, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 50.9, 90.0);
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 48;
|
||||
|
||||
PackItem(new DaemonBone(30));
|
||||
}
|
||||
|
||||
public Anlorvaglem(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Lethal;
|
||||
}
|
||||
}
|
||||
public override bool Unprovokable
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool BardImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool ReacquireOnMovement
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
105
Scripts/Mobiles/Void Creatures/Anlorzen.cs
Normal file
105
Scripts/Mobiles/Void Creatures/Anlorzen.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("an anlorzen corpse")]
|
||||
public class Anlorzen : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Grouping; } }
|
||||
public override int Stage { get { return 1; } }
|
||||
|
||||
[Constructable]
|
||||
public Anlorzen()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
this.Name = "an anlorzen";
|
||||
this.Body = 11;
|
||||
this.BaseSoundID = 1170;
|
||||
|
||||
this.SetStr(600, 750);
|
||||
this.SetDex(666, 800);
|
||||
this.SetInt(850, 1000);
|
||||
|
||||
this.SetHits(300, 400);
|
||||
|
||||
this.SetDamage(15, 18);
|
||||
|
||||
this.SetDamageType(ResistanceType.Physical, 20);
|
||||
this.SetDamageType(ResistanceType.Fire, 20);
|
||||
this.SetDamageType(ResistanceType.Cold, 20);
|
||||
this.SetDamageType(ResistanceType.Poison, 20);
|
||||
this.SetDamageType(ResistanceType.Energy, 20);
|
||||
|
||||
this.SetResistance(ResistanceType.Physical, 40, 50);
|
||||
this.SetResistance(ResistanceType.Fire, 40, 50);
|
||||
this.SetResistance(ResistanceType.Cold, 30, 50);
|
||||
this.SetResistance(ResistanceType.Poison, 100);
|
||||
this.SetResistance(ResistanceType.Energy, 40, 60);
|
||||
|
||||
this.SetSkill(SkillName.MagicResist, 30.1, 60.0);
|
||||
this.SetSkill(SkillName.Tactics, 30.1, 70.0);
|
||||
this.SetSkill(SkillName.Wrestling, 50.1, 70.0);
|
||||
|
||||
this.Fame = 5000;
|
||||
this.Karma = -5000;
|
||||
|
||||
this.VirtualArmor = 56;
|
||||
|
||||
this.PackItem(new DaemonBone(5));
|
||||
}
|
||||
|
||||
public Anlorzen(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Lethal;
|
||||
}
|
||||
}
|
||||
public override Poison HitPoison
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Lethal;
|
||||
}
|
||||
}
|
||||
public override bool AlwaysMurderer
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool BardImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
this.AddLoot(LootPack.FilthyRich);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if (this.BaseSoundID == 263)
|
||||
this.BaseSoundID = 1170;
|
||||
}
|
||||
}
|
||||
}
|
||||
122
Scripts/Mobiles/Void Creatures/Anzuanord.cs
Normal file
122
Scripts/Mobiles/Void Creatures/Anzuanord.cs
Normal file
@@ -0,0 +1,122 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("an anzuanord corpse")]
|
||||
public class Anzuanord : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Survival; } }
|
||||
public override int Stage { get { return 1; } }
|
||||
|
||||
[Constructable]
|
||||
public Anzuanord()
|
||||
: base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
this.Name = "an Anzuanord";
|
||||
this.Body = 74;
|
||||
this.Hue = 2071;
|
||||
this.BaseSoundID = 422;
|
||||
|
||||
this.SetStr(705);
|
||||
this.SetDex(900, 910);
|
||||
this.SetInt(900, 1000);
|
||||
|
||||
this.SetHits(180);
|
||||
|
||||
this.SetDamage(8, 10);
|
||||
|
||||
this.SetDamageType(ResistanceType.Physical, 20);
|
||||
this.SetDamageType(ResistanceType.Fire, 20);
|
||||
this.SetDamageType(ResistanceType.Cold, 20);
|
||||
this.SetDamageType(ResistanceType.Poison, 20);
|
||||
this.SetDamageType(ResistanceType.Energy, 20);
|
||||
|
||||
this.SetResistance(ResistanceType.Physical, 0, 10);
|
||||
this.SetResistance(ResistanceType.Poison, 15, 20);
|
||||
this.SetResistance(ResistanceType.Physical, 15, 10);
|
||||
this.SetResistance(ResistanceType.Poison, 0, 20);
|
||||
this.SetResistance(ResistanceType.Physical, 100);
|
||||
|
||||
this.SetSkill(SkillName.Anatomy, 5.0, 10.0);
|
||||
this.SetSkill(SkillName.MagicResist, 40.0, 50.0);
|
||||
this.SetSkill(SkillName.Tactics, 40.0, 50.0);
|
||||
this.SetSkill(SkillName.Wrestling, 40.0, 50.0);
|
||||
this.SetSkill(SkillName.Magery, 70.0, 80.0);
|
||||
this.SetSkill(SkillName.EvalInt, 80.0, 90.0);
|
||||
this.SetSkill(SkillName.Meditation, 50.0, 60.0);
|
||||
|
||||
this.Fame = 2500;
|
||||
this.Karma = -2500;
|
||||
|
||||
this.PackItem(new DaemonBone(5));
|
||||
|
||||
this.VirtualArmor = 50;
|
||||
}
|
||||
|
||||
public Anzuanord(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool BardImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override int Meat
|
||||
{
|
||||
get
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
public override int Hides
|
||||
{
|
||||
get
|
||||
{
|
||||
return 7;
|
||||
}
|
||||
}
|
||||
public override HideType HideType
|
||||
{
|
||||
get
|
||||
{
|
||||
return HideType.Spined;
|
||||
}
|
||||
}
|
||||
public override FoodType FavoriteFood
|
||||
{
|
||||
get
|
||||
{
|
||||
return FoodType.Meat;
|
||||
}
|
||||
}
|
||||
public override PackInstinct PackInstinct
|
||||
{
|
||||
get
|
||||
{
|
||||
return PackInstinct.Daemon;
|
||||
}
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
this.AddLoot(LootPack.Meager);
|
||||
this.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
126
Scripts/Mobiles/Void Creatures/Ballem.cs
Normal file
126
Scripts/Mobiles/Void Creatures/Ballem.cs
Normal file
@@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("a Ballem corpse")]
|
||||
public class Ballem : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Killing; } }
|
||||
public override int Stage { get { return 2; } }
|
||||
|
||||
[Constructable]
|
||||
public Ballem()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = "a Ballem";
|
||||
Body = 304;
|
||||
Hue = 2071;
|
||||
BaseSoundID = 684;
|
||||
|
||||
SetStr(991);
|
||||
SetDex(1001);
|
||||
SetInt(243);
|
||||
|
||||
SetHits(500, 600);
|
||||
|
||||
SetDamage(10, 15);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 20);
|
||||
SetDamageType(ResistanceType.Fire, 20);
|
||||
SetDamageType(ResistanceType.Cold, 20);
|
||||
SetDamageType(ResistanceType.Poison, 20);
|
||||
SetDamageType(ResistanceType.Energy, 20);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 30, 50);
|
||||
SetResistance(ResistanceType.Fire, 40, 50);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 100);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetSkill(SkillName.MagicResist, 70.0, 80.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 70.1, 80.0);
|
||||
SetSkill(SkillName.Anatomy, 0.0, 10.0);
|
||||
|
||||
Fame = 1800;
|
||||
Karma = -1800;
|
||||
|
||||
VirtualArmor = 54;
|
||||
|
||||
PackItem(new DaemonBone(15));
|
||||
|
||||
SetWeaponAbility(WeaponAbility.CrushingBlow);
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
if (Utility.RandomDouble() < 0.10)
|
||||
{
|
||||
c.DropItem(new AncientPotteryFragments());
|
||||
}
|
||||
}
|
||||
|
||||
public Ballem(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Lethal;
|
||||
}
|
||||
}
|
||||
public override bool Unprovokable
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool BardImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool CanRummageCorpses
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool BleedImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
290
Scripts/Mobiles/Void Creatures/BaseVoidCreature.cs
Normal file
290
Scripts/Mobiles/Void Creatures/BaseVoidCreature.cs
Normal file
@@ -0,0 +1,290 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public enum VoidEvolution
|
||||
{
|
||||
None = 0,
|
||||
Killing = 1,
|
||||
Grouping = 2,
|
||||
Survival = 3
|
||||
}
|
||||
|
||||
public class BaseVoidCreature : BaseCreature
|
||||
{
|
||||
public static int MutateCheck { get { return Utility.RandomMinMax(30, 120); } }
|
||||
|
||||
public static bool RemoveFromSpawners { get { return true; } }
|
||||
|
||||
private DateTime m_NextMutate;
|
||||
private bool m_BuddyMutate;
|
||||
|
||||
public virtual int GroupAmount { get { return 2; } }
|
||||
public virtual VoidEvolution Evolution { get { return VoidEvolution.None; } }
|
||||
public virtual int Stage { get { return 0; } }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool BuddyMutate { get { return m_BuddyMutate; } set { m_BuddyMutate = value; } }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public DateTime NextMutate { get { return m_NextMutate; } set { m_NextMutate = value; } }
|
||||
|
||||
public override bool PlayerRangeSensitive { get { return Evolution != VoidEvolution.Killing && Stage < 3; } }
|
||||
public override bool AlwaysMurderer { get { return true; } }
|
||||
|
||||
public BaseVoidCreature(AIType aiType, FightMode fightMode, int perception, int range, double passive, double active)
|
||||
: base(aiType, FightMode.Good, perception, range, passive, active)
|
||||
{
|
||||
m_NextMutate = DateTime.UtcNow + TimeSpan.FromMinutes(MutateCheck);
|
||||
m_BuddyMutate = true;
|
||||
}
|
||||
|
||||
public override void OnThink()
|
||||
{
|
||||
base.OnThink();
|
||||
|
||||
if (Stage >= 3 || m_NextMutate > DateTime.UtcNow)
|
||||
return;
|
||||
|
||||
if (!MutateGrouped() && Alive && !Deleted)
|
||||
{
|
||||
Mutate(VoidEvolution.Survival);
|
||||
}
|
||||
}
|
||||
|
||||
public bool MutateGrouped()
|
||||
{
|
||||
if (!m_BuddyMutate)
|
||||
return false;
|
||||
|
||||
List<BaseVoidCreature> buddies = new List<BaseVoidCreature>();
|
||||
IPooledEnumerable eable = this.GetMobilesInRange(12);
|
||||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m != this && IsEvolutionType(m) && !m.Deleted && m.Alive && !buddies.Contains((BaseVoidCreature)m))
|
||||
{
|
||||
if (m is BaseVoidCreature && ((BaseVoidCreature)m).BuddyMutate)
|
||||
buddies.Add((BaseVoidCreature)m);
|
||||
}
|
||||
}
|
||||
|
||||
eable.Free();
|
||||
|
||||
if (buddies.Count >= GroupAmount)
|
||||
{
|
||||
Mutate(VoidEvolution.Grouping);
|
||||
|
||||
foreach (BaseVoidCreature k in buddies)
|
||||
k.Mutate(VoidEvolution.Grouping);
|
||||
|
||||
ColUtility.Free(buddies);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ColUtility.Free(buddies);
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsEvolutionType(Mobile from)
|
||||
{
|
||||
if (Stage == 0 && from.GetType() != this.GetType())
|
||||
return false;
|
||||
|
||||
return from is BaseVoidCreature;
|
||||
}
|
||||
|
||||
public Type[][] m_EvolutionCycle = new Type[][]
|
||||
{
|
||||
new Type[] { typeof(Betballem), typeof(Ballem), typeof(UsagralemBallem) },
|
||||
new Type[] { typeof(Anlorzen), typeof(Anlorlem), typeof(Anlorvaglem) },
|
||||
new Type[] { typeof(Anzuanord), typeof(Relanord), typeof(Vasanord) }
|
||||
};
|
||||
|
||||
private BaseCreature _MutateTo;
|
||||
|
||||
public void Mutate(VoidEvolution evolution)
|
||||
{
|
||||
if (!Alive || Deleted || Stage == 3)
|
||||
return;
|
||||
|
||||
VoidEvolution evo = evolution;
|
||||
|
||||
if (Stage > 0)
|
||||
evo = this.Evolution;
|
||||
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
{
|
||||
SpawnOrtanords();
|
||||
}
|
||||
|
||||
Type type = m_EvolutionCycle[(int)evo - 1][Stage];
|
||||
|
||||
BaseCreature bc = (BaseCreature)Activator.CreateInstance(type);
|
||||
|
||||
_MutateTo = bc;
|
||||
|
||||
if (bc != null)
|
||||
{
|
||||
//TODO: Effents/message?
|
||||
|
||||
bc.MoveToWorld(this.Location, this.Map);
|
||||
|
||||
bc.Home = this.Home;
|
||||
bc.RangeHome = this.RangeHome;
|
||||
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
SpawnOrtanords();
|
||||
|
||||
if (bc is BaseVoidCreature)
|
||||
((BaseVoidCreature)bc).BuddyMutate = m_BuddyMutate;
|
||||
|
||||
this.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public void SpawnOrtanords()
|
||||
{
|
||||
BaseCreature ortanords = new Ortanord();
|
||||
|
||||
Point3D spawnLoc = this.Location;
|
||||
|
||||
for (int i = 0; i < 25; i++)
|
||||
{
|
||||
int x = Utility.RandomMinMax(this.X - 5, this.X + 5);
|
||||
int y = Utility.RandomMinMax(this.Y - 5, this.Y + 5);
|
||||
int z = this.Map.GetAverageZ(x, y);
|
||||
|
||||
Point3D p = new Point3D(x, y, z);
|
||||
|
||||
if (this.Map.CanSpawnMobile(p))
|
||||
{
|
||||
spawnLoc = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ortanords.MoveToWorld(spawnLoc, this.Map);
|
||||
ortanords.BoltEffect(0);
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
double baseChance = 0.02;
|
||||
double chance = 0.0;
|
||||
|
||||
if (Stage > 0)
|
||||
chance = baseChance * (Stage + 3);
|
||||
|
||||
if (Stage > 0 && Utility.RandomDouble() < chance)
|
||||
c.DropItem(new VoidEssence());
|
||||
|
||||
if (Stage == 3 && Utility.RandomDouble() < 0.12)
|
||||
c.DropItem(new VoidCore());
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
if (_MutateTo != null)
|
||||
{
|
||||
ISpawner s = Spawner;
|
||||
|
||||
if (s is XmlSpawner)
|
||||
{
|
||||
XmlSpawner xml = (XmlSpawner)s;
|
||||
|
||||
if (xml.SpawnObjects == null)
|
||||
return;
|
||||
|
||||
foreach (XmlSpawner.SpawnObject so in xml.SpawnObjects)
|
||||
{
|
||||
for (int i = 0; i < so.SpawnedObjects.Count; ++i)
|
||||
{
|
||||
if (so.SpawnedObjects[i] == this)
|
||||
{
|
||||
//so.SpawnedObjects.Remove(spawn);
|
||||
so.SpawnedObjects[i] = _MutateTo;
|
||||
|
||||
Spawner = null;
|
||||
base.Delete();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
base.Delete();
|
||||
}
|
||||
|
||||
public BaseVoidCreature(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
private static bool _CheckSpawners;
|
||||
|
||||
public static void RemoveVoidSpawners()
|
||||
{
|
||||
List<XmlSpawner> list = new List<XmlSpawner>();
|
||||
|
||||
foreach (XmlSpawner spawner in World.Items.Values.OfType<XmlSpawner>())
|
||||
{
|
||||
if (list.Contains(spawner))
|
||||
break;
|
||||
|
||||
foreach (XmlSpawner.SpawnObject obj in spawner.SpawnObjects)
|
||||
{
|
||||
if(obj == null || obj.TypeName == null)
|
||||
continue;
|
||||
|
||||
Type t = ScriptCompiler.FindTypeByName(obj.TypeName, true);
|
||||
|
||||
if (t != null && t.IsSubclassOf(typeof(BaseVoidCreature)) || obj.TypeName.ToLower().StartsWith("korpre"))
|
||||
{
|
||||
list.Add(spawner);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list.ForEach(spawner => spawner.DoReset = true);
|
||||
Console.WriteLine("Reset {0} Void Spawn Spawners.", list.Count);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)1);
|
||||
|
||||
writer.Write(m_NextMutate);
|
||||
writer.Write(m_BuddyMutate);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if (version == 0 && !_CheckSpawners && RemoveFromSpawners)
|
||||
{
|
||||
Console.WriteLine("Removing Spawners...");
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(30), RemoveVoidSpawners);
|
||||
|
||||
_CheckSpawners = true;
|
||||
}
|
||||
|
||||
m_NextMutate = reader.ReadDateTime();
|
||||
|
||||
if (version > 0)
|
||||
m_BuddyMutate = reader.ReadBool();
|
||||
else
|
||||
m_BuddyMutate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
144
Scripts/Mobiles/Void Creatures/Betballem.cs
Normal file
144
Scripts/Mobiles/Void Creatures/Betballem.cs
Normal file
@@ -0,0 +1,144 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("a betballem corpse")]
|
||||
public class Betballem : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Killing; } }
|
||||
public override int Stage { get { return 1; } }
|
||||
|
||||
[Constructable]
|
||||
public Betballem()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
this.Name = "a betballem";
|
||||
this.Body = 776;
|
||||
this.Hue = 2071;
|
||||
this.BaseSoundID = 357;
|
||||
|
||||
this.SetStr(270);
|
||||
this.SetDex(890);
|
||||
this.SetInt(80);
|
||||
|
||||
this.SetHits(90, 100);
|
||||
this.SetDamage(5, 10);
|
||||
|
||||
this.SetDamageType(ResistanceType.Physical, 20);
|
||||
this.SetDamageType(ResistanceType.Fire, 20);
|
||||
this.SetDamageType(ResistanceType.Cold, 20);
|
||||
this.SetDamageType(ResistanceType.Poison, 20);
|
||||
this.SetDamageType(ResistanceType.Energy, 20);
|
||||
|
||||
this.SetResistance(ResistanceType.Physical, 30, 40);
|
||||
this.SetResistance(ResistanceType.Fire, 30, 40);
|
||||
this.SetResistance(ResistanceType.Fire, 10, 20);
|
||||
this.SetResistance(ResistanceType.Fire, 10, 20);
|
||||
this.SetResistance(ResistanceType.Fire, 100);
|
||||
|
||||
this.SetSkill(SkillName.MagicResist, 40.0, 50.0);
|
||||
this.SetSkill(SkillName.Tactics, 20.1, 30.0);
|
||||
this.SetSkill(SkillName.Wrestling, 30.1, 40.0);
|
||||
this.SetSkill(SkillName.Anatomy, 0.0, 10.0);
|
||||
|
||||
this.Fame = 500;
|
||||
this.Karma = -500;
|
||||
|
||||
this.VirtualArmor = 38;
|
||||
|
||||
this.AddItem(new LightSource());
|
||||
|
||||
this.PackItem(new FertileDirt(Utility.RandomMinMax(1, 4)));
|
||||
this.PackItem(new DaemonBone(5));
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
if (Utility.RandomDouble() < 0.10)
|
||||
{
|
||||
c.DropItem(new AncientPotteryFragments());
|
||||
}
|
||||
}
|
||||
|
||||
public Betballem(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool Unprovokable
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool BardImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool CanRummageCorpses
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool BleedImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
this.AddLoot(LootPack.Rich);
|
||||
this.AddLoot(LootPack.Meager);
|
||||
this.AddLoot(LootPack.Gems);
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 406;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 194;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
93
Scripts/Mobiles/Void Creatures/Korpre.cs
Normal file
93
Scripts/Mobiles/Void Creatures/Korpre.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("a korpre corpse")]
|
||||
public class Korpre : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.None; } }
|
||||
public override int Stage { get { return 0; } }
|
||||
|
||||
[Constructable]
|
||||
public Korpre()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
this.Name = "Korpre";
|
||||
this.Body = 51;
|
||||
this.BaseSoundID = 456;
|
||||
|
||||
this.Hue = 2071;
|
||||
|
||||
this.SetStr(22, 34);
|
||||
this.SetDex(16, 21);
|
||||
this.SetInt(16, 20);
|
||||
|
||||
this.SetHits(50, 60);
|
||||
|
||||
this.SetDamage(1, 5);
|
||||
|
||||
this.SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
this.SetResistance(ResistanceType.Physical, 5, 10);
|
||||
this.SetResistance(ResistanceType.Poison, 15, 20);
|
||||
|
||||
this.SetSkill(SkillName.Poisoning, 36.0, 49.1);
|
||||
this.SetSkill(SkillName.Anatomy, 0);
|
||||
this.SetSkill(SkillName.MagicResist, 15.9, 18.9);
|
||||
this.SetSkill(SkillName.Tactics, 24.6, 26.1);
|
||||
this.SetSkill(SkillName.Wrestling, 24.9, 26.1);
|
||||
|
||||
this.Fame = 300;
|
||||
this.Karma = -300;
|
||||
|
||||
this.VirtualArmor = 8;
|
||||
}
|
||||
|
||||
public Korpre(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Regular;
|
||||
}
|
||||
}
|
||||
public override Poison HitPoison
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Regular;
|
||||
}
|
||||
}
|
||||
public override FoodType FavoriteFood
|
||||
{
|
||||
get
|
||||
{
|
||||
return FoodType.Fish;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
this.AddLoot(LootPack.Poor);
|
||||
this.AddLoot(LootPack.Gems);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
119
Scripts/Mobiles/Void Creatures/Relanord.cs
Normal file
119
Scripts/Mobiles/Void Creatures/Relanord.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("a relanord corpse")]
|
||||
public class Relanord : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Survival; } }
|
||||
public override int Stage { get { return 2; } }
|
||||
|
||||
[Constructable]
|
||||
public Relanord()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
this.Name = "a relanord";
|
||||
this.Body = 0x2F4;
|
||||
this.Hue = 2071;
|
||||
|
||||
this.SetStr(700, 800);
|
||||
this.SetDex(60, 100);
|
||||
this.SetInt(60, 100);
|
||||
|
||||
this.SetHits(400, 500);
|
||||
|
||||
this.SetDamage(10, 15);
|
||||
|
||||
this.SetDamageType(ResistanceType.Physical, 20);
|
||||
this.SetDamageType(ResistanceType.Fire, 20);
|
||||
this.SetDamageType(ResistanceType.Cold, 20);
|
||||
this.SetDamageType(ResistanceType.Poison, 20);
|
||||
this.SetDamageType(ResistanceType.Energy, 20);
|
||||
|
||||
this.SetResistance(ResistanceType.Physical, 45, 60);
|
||||
this.SetResistance(ResistanceType.Fire, 40, 60);
|
||||
this.SetResistance(ResistanceType.Cold, 25, 35);
|
||||
this.SetResistance(ResistanceType.Poison, 100);
|
||||
this.SetResistance(ResistanceType.Energy, 30, 60);
|
||||
|
||||
this.SetSkill(SkillName.MagicResist, 30.2, 50.0);
|
||||
this.SetSkill(SkillName.Tactics, 40.2, 60.0);
|
||||
this.SetSkill(SkillName.Wrestling, 50.2, 70.0);
|
||||
|
||||
this.Fame = 10000;
|
||||
this.Karma = -10000;
|
||||
this.VirtualArmor = 50;
|
||||
|
||||
this.PackItem(new DaemonBone(15));
|
||||
}
|
||||
|
||||
public Relanord(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool AutoDispel
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override bool BardImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public override Poison PoisonImmune
|
||||
{
|
||||
get
|
||||
{
|
||||
return Poison.Lethal;
|
||||
}
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
this.AddLoot(LootPack.FilthyRich, 1);
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0xFD;
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x26C;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x211;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x23B;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x140;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
127
Scripts/Mobiles/Void Creatures/UsagralemBallem.cs
Normal file
127
Scripts/Mobiles/Void Creatures/UsagralemBallem.cs
Normal file
@@ -0,0 +1,127 @@
|
||||
using System;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName("an usagralem ballem corpse")]
|
||||
public class UsagralemBallem : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Killing; } }
|
||||
public override int Stage { get { return 3; } }
|
||||
|
||||
[Constructable]
|
||||
public UsagralemBallem()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
this.Name = "an Usagrallem Ballem";
|
||||
this.Hue = 2071;
|
||||
this.Body = 318;
|
||||
this.BaseSoundID = 0x165;
|
||||
|
||||
this.SetStr(900, 1000);
|
||||
this.SetDex(1028);
|
||||
this.SetInt(1000, 1100);
|
||||
|
||||
this.SetHits(2000, 2200);
|
||||
this.SetMana(5000);
|
||||
|
||||
this.SetDamage(17, 21);
|
||||
|
||||
this.SetDamageType(ResistanceType.Physical, 20);
|
||||
this.SetDamageType(ResistanceType.Fire, 20);
|
||||
this.SetDamageType(ResistanceType.Cold, 20);
|
||||
this.SetDamageType(ResistanceType.Poison, 20);
|
||||
this.SetDamageType(ResistanceType.Energy, 20);
|
||||
|
||||
this.SetResistance(ResistanceType.Physical, 30, 40);
|
||||
this.SetResistance(ResistanceType.Fire, 40, 60);
|
||||
this.SetResistance(ResistanceType.Cold, 40, 60);
|
||||
this.SetResistance(ResistanceType.Poison, 40, 60);
|
||||
this.SetResistance(ResistanceType.Energy, 40, 60);
|
||||
|
||||
this.SetSkill(SkillName.MagicResist, 80.0, 90.0);
|
||||
this.SetSkill(SkillName.Tactics, 80.0, 90.0);
|
||||
this.SetSkill(SkillName.Wrestling, 80.0, 90.0);
|
||||
|
||||
this.Fame = 18000;
|
||||
this.Karma = -18000;
|
||||
|
||||
this.VirtualArmor = 64;
|
||||
|
||||
this.PackItem(new DaemonBone(30));
|
||||
|
||||
SetWeaponAbility(WeaponAbility.DoubleStrike);
|
||||
SetWeaponAbility(WeaponAbility.WhirlwindAttack);
|
||||
SetWeaponAbility(WeaponAbility.CrushingBlow);
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
if (Utility.RandomDouble() < 0.30)
|
||||
{
|
||||
c.DropItem(new AncientPotteryFragments());
|
||||
}
|
||||
}
|
||||
|
||||
public UsagralemBallem(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool IgnoreYoungProtection
|
||||
{
|
||||
get
|
||||
{
|
||||
return Core.ML;
|
||||
}
|
||||
}
|
||||
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()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 1);
|
||||
AddLoot(LootPack.FilthyRich, 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
87
Scripts/Mobiles/Void Creatures/Vasanord.cs
Normal file
87
Scripts/Mobiles/Void Creatures/Vasanord.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a plant corpse" )]
|
||||
public class Vasanord : BaseVoidCreature
|
||||
{
|
||||
public override VoidEvolution Evolution { get { return VoidEvolution.Survival; } }
|
||||
public override int Stage { get { return 3; } }
|
||||
|
||||
[Constructable]
|
||||
public Vasanord() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.6, 1.2 )
|
||||
{
|
||||
Name = "vasanord";
|
||||
Body = 780;
|
||||
|
||||
SetStr( 805, 869 );
|
||||
SetDex( 51, 64 );
|
||||
SetInt( 38, 48 );
|
||||
|
||||
SetHits( 5000, 5200 );
|
||||
SetMana( 40, 70 );
|
||||
SetStam( 50, 80 );
|
||||
|
||||
SetDamage( 10, 23 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Fire, 20 );
|
||||
SetDamageType( ResistanceType.Cold, 20 );
|
||||
SetDamageType( ResistanceType.Poison, 20 );
|
||||
SetDamageType( ResistanceType.Energy, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 50 );
|
||||
SetResistance( ResistanceType.Fire, 20, 50 );
|
||||
SetResistance( ResistanceType.Cold, 20, 40 );
|
||||
SetResistance( ResistanceType.Poison, 100 );
|
||||
SetResistance( ResistanceType.Energy, 20, 50 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 72.8, 77.7 );
|
||||
SetSkill( SkillName.Tactics, 50.7, 110.0 );
|
||||
SetSkill( SkillName.EvalInt, 99.5, 120.0 );
|
||||
SetSkill( SkillName.Magery, 95.5, 106.9 );
|
||||
SetSkill( SkillName.Wrestling, 53.6, 98.6 );
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackItem( new DaemonBone( 30 ) );
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
if (Utility.RandomDouble() < 0.6)
|
||||
c.DropItem(new TaintedSeeds(2));
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.UltraRich, 2 );
|
||||
}
|
||||
|
||||
public override bool BardImmune{ get{ return !Core.AOS; } }
|
||||
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
|
||||
|
||||
public Vasanord( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user