Files
abysmal-isle/Scripts/Quests/The Ritual/Items.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

309 lines
8.4 KiB
C#

using System;
using Server.Mobiles;
using Server.Engines.Quests;
using Server.Spells;
using Server.Items;
namespace Server.Engines.Quests.RitualQuest
{
public class DreamSerpentScale : BaseDecayingItem
{
public override int LabelNumber { get { return 1151167; } } // Dream Serpent Scales
public override int Lifespan { get { return 86400; } }
public override bool HiddenQuestItemHue { get { return true; } }
public DreamSerpentScale()
: base(0x1F13)
{
Hue = 2069;
QuestItem = true;
}
public override bool DropToWorld(Mobile from, Point3D p)
{
Delete();
from.SendLocalizedMessage(500461); // You destroy the item.
return true;
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
list.Add(1075269); // Destroyed when dropped
}
public DreamSerpentScale(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
}
}
public class DreamSerpentCharm : BaseDecayingItem
{
public override int LabelNumber { get { return 1151187; } } // Dream Serpent Charm
public override int Lifespan { get { return 86400; } }
public DreamSerpentCharm()
: base(6463)
{
Hue = 91;
}
private static Rectangle2D WarpBounds = new Rectangle2D(659, 3815, 6, 8);
private static TimeSpan WarpTime = TimeSpan.FromSeconds(30);
private static TimeSpan Cooldown = TimeSpan.FromMinutes(1);
private DateTime _NextUse;
private Timer _Timer;
public override void OnDoubleClick(Mobile m)
{
if (_NextUse > DateTime.UtcNow)
{
m.SendLocalizedMessage(1072529, String.Format("{0}\t{1}", ((int)(_NextUse - DateTime.UtcNow).TotalSeconds).ToString(), "seconds"));
}
else if (m is PlayerMobile)
{
var quest = QuestHelper.GetQuest<CatchMeIfYouCanQuest>((PlayerMobile)m);
if (quest != null && SpellHelper.CheckCanTravel(m) && _Timer == null && WarpBounds.Contains(m.Location))
{
TeleportTo(m);
}
}
}
public void TeleportTo(Mobile m)
{
BaseCreature.TeleportPets(m, new Point3D(403, 3391, 38), Map.TerMur);
m.MoveToWorld(new Point3D(403, 3391, 38), Map.TerMur);
m.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);
_Timer = Timer.DelayCall(WarpTime, () =>
{
TeleportFrom(m, this, false);
});
}
public static void CompleteQuest(Mobile m)
{
DreamSerpentCharm charm = m.Backpack.FindItemByType<DreamSerpentCharm>();
TeleportFrom(m, charm, true);
}
public static void TeleportFrom(Mobile m, DreamSerpentCharm charm, bool completeQuest)
{
BaseCreature.TeleportPets(m, new Point3D(662, 3819, -43), Map.TerMur);
m.MoveToWorld(new Point3D(662, 3819, -43), Map.TerMur);
m.FixedParticles(0x373A, 10, 15, 5018, EffectLayer.Waist);
if (charm._Timer != null)
{
charm._Timer.Stop();
charm._Timer = null;
}
charm._NextUse = DateTime.UtcNow + Cooldown;
if (!completeQuest && m is PlayerMobile)
{
var quest = QuestHelper.GetQuest<CatchMeIfYouCanQuest>((PlayerMobile)m);
quest.Objectives[0].CurProgress = 0;
}
}
public DreamSerpentCharm(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
}
}
public class SoulbinderTear : BaseDecayingItem
{
public override int LabelNumber { get { return 1151170; } } // Soulbinder's Tears
public override int Lifespan { get { return 86400; } }
public override bool HiddenQuestItemHue { get { return true; } }
public SoulbinderTear()
: base(0xE2A)
{
Hue = 2076;
QuestItem = true;
}
public override bool DropToWorld(Mobile from, Point3D p)
{
Delete();
from.SendLocalizedMessage(500461); // You destroy the item.
return true;
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
list.Add(1075269); // Destroyed when dropped
}
public SoulbinderTear(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
}
}
public class PristineCrystalLotus : BaseDecayingItem
{
public override int LabelNumber { get { return 1151169; } } // Pristine Crystal Lotus
public override int Lifespan { get { return 86400; } }
public override bool HiddenQuestItemHue { get { return true; } }
public PristineCrystalLotus()
: base(0x283B)
{
Hue = 1152;
QuestItem = true;
}
public override bool DropToWorld(Mobile from, Point3D p)
{
Delete();
from.SendLocalizedMessage(500461); // You destroy the item.
return true;
}
public override void GetProperties(ObjectPropertyList list)
{
base.GetProperties(list);
list.Add(1075269); // Destroyed when dropped
}
public PristineCrystalLotus(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
}
}
public class ChronicleOfTheGargoyleQueen2 : GargishDocumentBook
{
public static void Initialize()
{
for (int i = 0; i < 42; i++)
{
m_Contents[i] = 1150976 + i;
}
}
private static int[] m_Contents = new int[42];
public override object Title { get { return 1151164; } } // Chronicle of the Gargoyle Queen Vol. II
public override object Author { get { return "Queen Zhah"; } }
public override int[] Contents { get { return m_Contents; } }
[Constructable]
public ChronicleOfTheGargoyleQueen2()
{
Hue = 573;
}
public ChronicleOfTheGargoyleQueen2(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 v = reader.ReadInt();
}
}
public class TerMurSnowglobe : Item
{
public override int LabelNumber { get { return 1151172; } } // Ter Mur Snowglobe
public TerMurSnowglobe()
: base(0xE2F)
{
Light = LightType.Circle150;
Hue = 2599;
}
public TerMurSnowglobe(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
}
}
}