Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
301
Scripts/Quests/The Ritual/Mobiles.cs
Normal file
301
Scripts/Quests/The Ritual/Mobiles.cs
Normal file
@@ -0,0 +1,301 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Engines.Quests.RitualQuest
|
||||
{
|
||||
public class Prugyilonus : MondainQuester
|
||||
{
|
||||
public static Prugyilonus Instance { get; set; }
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
if (Core.SA && Instance == null)
|
||||
{
|
||||
Instance = new Prugyilonus();
|
||||
Instance.MoveToWorld(new Point3D(750, 3344, 61), Map.TerMur);
|
||||
}
|
||||
}
|
||||
|
||||
public override Type[] Quests { get { return new Type[] { typeof(ScalesOfADreamSerpentQuest) }; } }
|
||||
|
||||
public Prugyilonus()
|
||||
: base("Prugyilonus", "the Advisor to the Queen")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
Race = Race.Gargoyle;
|
||||
|
||||
CantWalk = true;
|
||||
|
||||
Hue = 34547;
|
||||
HairItemID = Race.RandomHair(false);
|
||||
HairHue = Race.RandomHairHue();
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new GargishFancyRobe(), 1345);
|
||||
}
|
||||
|
||||
public Prugyilonus(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
reader.ReadInt(); // version
|
||||
|
||||
if (Core.SA)
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Bexil : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(CatchMeIfYouCanQuest) }; } }
|
||||
|
||||
public static Bexil Instance { get; set; }
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
if(Core.SA && Instance == null)
|
||||
{
|
||||
Instance = new Bexil();
|
||||
Instance.MoveToWorld(new Point3D(662, 3819, -43), Map.TerMur);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
if (m.Backpack.GetAmount(typeof(DreamSerpentScale)) == 0)
|
||||
{
|
||||
base.OnDoubleClick(m);
|
||||
}
|
||||
else
|
||||
{
|
||||
SayTo(m, 1151355, 0x3B2); // You may not obtain more than one of this item.
|
||||
SayTo(m, 1080107, 0x3B2); // I'm sorry, I have nothing for you at this time.
|
||||
}
|
||||
}
|
||||
|
||||
public Bexil()
|
||||
: base("Bexil", "the Dream Serpent")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
Body = 0xCE;
|
||||
Hue = 2069;
|
||||
|
||||
CantWalk = true;
|
||||
}
|
||||
|
||||
public Bexil(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
reader.ReadInt(); // version
|
||||
|
||||
if (Core.SA)
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class BexilPunchingBag : BaseCreature
|
||||
{
|
||||
public override bool InitialInnocent { get { return true; } }
|
||||
|
||||
private Dictionary<Mobile, int> _Table = new Dictionary<Mobile, int>();
|
||||
private DateTime _NextTeleport;
|
||||
|
||||
public BexilPunchingBag()
|
||||
: base(AIType.AI_Animal, FightMode.None, 10, 1, 0.4, 0.8)
|
||||
{
|
||||
Name = "Bexil";
|
||||
Title = "the Dream Serpent";
|
||||
|
||||
Body = 0xCE;
|
||||
Hue = 1976;
|
||||
BaseSoundID = 0x5A;
|
||||
|
||||
SetHits(1000000);
|
||||
}
|
||||
|
||||
private IDamageable _Combatant;
|
||||
|
||||
public override IDamageable Combatant
|
||||
{
|
||||
get { return _Combatant; }
|
||||
set { _Combatant = value; }
|
||||
}
|
||||
|
||||
public override void OnThink()
|
||||
{
|
||||
base.OnThink();
|
||||
|
||||
if (Combatant is Mobile && _NextTeleport < DateTime.UtcNow)
|
||||
{
|
||||
var map = Map;
|
||||
var c = (Mobile)Combatant;
|
||||
|
||||
Point3D p;
|
||||
|
||||
do
|
||||
{
|
||||
int x = X + Utility.RandomMinMax(-10, 10);
|
||||
int y = Y + Utility.RandomMinMax(-10, 10);
|
||||
|
||||
p = new Point3D(x, y, map.GetAverageZ(x, y));
|
||||
}
|
||||
while (!map.CanSpawnMobile(p.X, p.Y, map.GetAverageZ(p.X, p.Y)) || !Region.Find(p, map).IsPartOf<CatchMeIfYouCanQuest.BexilRegion>());
|
||||
|
||||
Effects.SendLocationParticles(EffectItem.Create(Location, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
|
||||
MoveToWorld(p, map);
|
||||
Effects.SendLocationParticles(EffectItem.Create(Location, map, EffectItem.DefaultDuration), 0x3728, 10, 10, 5023);
|
||||
|
||||
_NextTeleport = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(1, 3));
|
||||
}
|
||||
}
|
||||
|
||||
public override int Damage(int amount, Mobile from, bool informMount, bool checkDisrupt)
|
||||
{
|
||||
if (from is PlayerMobile)
|
||||
{
|
||||
var quest = QuestHelper.GetQuest<CatchMeIfYouCanQuest>((PlayerMobile)from);
|
||||
|
||||
if (quest != null)
|
||||
{
|
||||
quest.Objectives[0].Update(this);
|
||||
|
||||
if (quest.Completed)
|
||||
{
|
||||
DreamSerpentCharm.CompleteQuest(from);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
var bex = new BexilPunchingBag();
|
||||
bex.MoveToWorld(new Point3D(403, 3391, 38), Map.TerMur);
|
||||
|
||||
base.Delete();
|
||||
}
|
||||
|
||||
public BexilPunchingBag(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
reader.ReadInt(); // version
|
||||
|
||||
if (!Core.SA)
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Grubbix : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(FilthyLifeStealersQuest) }; } }
|
||||
|
||||
public static Grubbix Instance { get; set; }
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
if (Core.SA && Instance == null)
|
||||
{
|
||||
Instance = new Grubbix();
|
||||
Instance.MoveToWorld(new Point3D(1106, 3138, -43), Map.TerMur);
|
||||
}
|
||||
}
|
||||
|
||||
public Grubbix()
|
||||
: base("Grubbix", "the Soulbinder")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
CantWalk = true;
|
||||
|
||||
InitStats(100, 100, 25);
|
||||
Body = 0x100;
|
||||
Hue = 2076;
|
||||
}
|
||||
|
||||
public Grubbix(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
reader.ReadInt(); // version
|
||||
|
||||
if (Core.SA)
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user