Files
abysmal-isle/Scripts/Services/Seasonal Events/TreasuresOfKhaldun/Generate.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

293 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Server;
using Server.Engines.CannedEvil;
using Server.Items;
using Server.Mobiles;
using Server.Gumps;
using Server.Engines.Points;
using Server.Engines.Quests;
namespace Server.Engines.Khaldun
{
public static class TreasuresOfKhaldunGeneration
{
public static void Initialize()
{
if (Core.EJ)
{
EventSink.WorldSave += OnWorldSave;
if (!Siege.SiegeShard)
{
KhaldunCampRegion.InstanceTram = new KhaldunCampRegion(Map.Trammel);
}
KhaldunCampRegion.InstanceFel = new KhaldunCampRegion(Map.Felucca);
}
}
private static void OnWorldSave(WorldSaveEventArgs e)
{
CheckEnabled(true);
}
public static void CheckEnabled(bool timed = false)
{
var khaldun = PointsSystem.Khaldun;
if (khaldun.Enabled && !khaldun.InSeason)
{
if (timed)
{
Timer.DelayCall(TimeSpan.FromSeconds(30), () =>
{
Utility.WriteConsoleColor(ConsoleColor.Green, "Disabling Treasures of Khaldun");
Remove();
khaldun.Enabled = false;
});
}
else
{
Utility.WriteConsoleColor(ConsoleColor.Green, "Auto Disabling Treasures of Khaldun");
Remove();
khaldun.Enabled = false;
}
}
else if (!khaldun.Enabled && khaldun.InSeason)
{
if (timed)
{
Timer.DelayCall(TimeSpan.FromSeconds(30), () =>
{
Utility.WriteConsoleColor(ConsoleColor.Green, "Enabling Treasures of Khaldun");
Generate();
khaldun.Enabled = true;
});
}
else
{
Utility.WriteConsoleColor(ConsoleColor.Green, "Auto Enabling Treasures of Khaldun");
Generate();
khaldun.Enabled = true;
}
if(!khaldun.QuestContentGenerated)
{
GenerateQuestContent();
khaldun.QuestContentGenerated = true;
}
}
}
public static void Generate()
{
if (KhaldunResearcher.InstanceTram == null && !Siege.SiegeShard)
{
KhaldunResearcher.InstanceTram = new KhaldunResearcher();
KhaldunResearcher.InstanceTram.MoveToWorld(new Point3D(6009, 3771, 21), Map.Trammel);
}
if (KhaldunResearcher.InstanceFel == null)
{
KhaldunResearcher.InstanceFel = new KhaldunResearcher();
KhaldunResearcher.InstanceFel.MoveToWorld(new Point3D(6009, 3771, 21), Map.Felucca);
}
if (LeadInvestigator.InstanceTram == null && !Siege.SiegeShard)
{
LeadInvestigator.InstanceTram = new LeadInvestigator();
LeadInvestigator.InstanceTram.MoveToWorld(new Point3D(6010, 3776, 19), Map.Trammel);
}
if (LeadInvestigator.InstanceFel == null)
{
LeadInvestigator.InstanceFel = new LeadInvestigator();
LeadInvestigator.InstanceFel.MoveToWorld(new Point3D(6010, 3776, 19), Map.Felucca);
}
if (CaddelliteVendor.InstanceTram == null && !Siege.SiegeShard)
{
CaddelliteVendor.InstanceTram = new CaddelliteVendor();
CaddelliteVendor.InstanceTram.MoveToWorld(new Point3D(6018, 3749, 21), Map.Trammel);
}
if (CaddelliteVendor.InstanceFel == null)
{
CaddelliteVendor.InstanceFel = new CaddelliteVendor();
CaddelliteVendor.InstanceFel.MoveToWorld(new Point3D(6018, 3749, 21), Map.Felucca);
}
ChampionSpawn champ = null;
if (!Siege.SiegeShard)
{
champ = new ChampionSpawn();
champ.Type = ChampionSpawnType.Khaldun;
champ.MoveToWorld(new Point3D(5469, 1461, 20), Map.Trammel);
ChampionSystem.AllSpawns.Add(champ);
}
champ = new ChampionSpawn();
champ.Type = ChampionSpawnType.Khaldun;
champ.MoveToWorld(new Point3D(5469, 1461, 20), Map.Felucca);
ChampionSystem.AllSpawns.Add(champ);
}
public static void Remove()
{
ChampionSystem.AllSpawns.Where(s => s.Type == ChampionSpawnType.Khaldun && Region.Find(s.Location, s.Map).IsPartOf("Khaldun")).IterateReverse(s =>
{
s.Delete();
});
}
public static void GenerateQuestContent()
{
var map = Siege.SiegeShard ? Map.Felucca : Map.Trammel;
var addon = new KhaldunDecorationAddon();
addon.MoveToWorld(new Point3D(6232, 2887, -1), map);
// Britain
var door = new TrapDoor("boreas", new Point3D(6242, 2892, 17), map);
var book = new MysteriousBook(door);
var dust = new DustPile(door);
var teleporter = new Teleporter(new Point3D(1369, 1465, 10), map);
door.MoveToWorld(new Point3D(1369, 1465, 10), map);
book.MoveToWorld(new Point3D(6240, 2885, 8), map);
dust.MoveToWorld(new Point3D(6256, 2889, 13), map);
teleporter.MoveToWorld(new Point3D(6242, 2892, 17), map);
new GumshoeBottles().MoveToWorld(new Point3D(6154, 2901, 6), map);
new GumshoeBottles().MoveToWorld(new Point3D(6154, 2902, 6), map);
new GumshoeDeed().MoveToWorld(new Point3D(6161, 2901, 6), map);
new GumshoeRope().MoveToWorld(new Point3D(6163, 2896, 0), map);
new GumshoeRope().MoveToWorld(new Point3D(6163, 2896, 1), map);
new GumshoeMap().MoveToWorld(new Point3D(6166, 2895, 6), map);
new GumshoeMap().MoveToWorld(new Point3D(6166, 2895, 7), map);
new GumshoeTools().MoveToWorld(new Point3D(6160, 2901, 6), map);
// Moonglow
door = new TrapDoor("carthax", new Point3D(6198, 2893, 17), map);
book = new MysteriousBook(door);
dust = new DustPile(door);
teleporter = new Teleporter(new Point3D(4550, 1306, 8), map);
door.MoveToWorld(new Point3D(4550, 1306, 8), map);
book.MoveToWorld(new Point3D(6207, 2884, 7), map);
dust.MoveToWorld(new Point3D(6208, 2885, 12), map);
teleporter.MoveToWorld(new Point3D(6198, 2893, 17), map);
new GumshoeBottles().MoveToWorld(new Point3D(6198, 2888, 6), map);
new GumshoeRope().MoveToWorld(new Point3D(6200, 2887, 0), map);
new GumshoeRope().MoveToWorld(new Point3D(6200, 2887, 1), map);
new GumshoeMap().MoveToWorld(new Point3D(6198, 2887, 6), map);
new GumshoeMap().MoveToWorld(new Point3D(6198, 2887, 7), map);
new GumshoeTools().MoveToWorld(new Point3D(6198, 2889, 6), map);
// Vesper
door = new TrapDoor("moriens", new Point3D(6154, 2898, 17), map);
book = new MysteriousBook(door);
dust = new DustPile(door);
teleporter = new Teleporter(new Point3D(2762, 848, 0), map);
door.MoveToWorld(new Point3D(2762, 848, 0), map);
book.MoveToWorld(new Point3D(6167, 2896, 6), map);
dust.MoveToWorld(new Point3D(6163, 2885, 0), map);
teleporter.MoveToWorld(new Point3D(6154, 2898, 17), map);
new GumshoeBottles().MoveToWorld(new Point3D(6240, 2884, 6), map);
new GumshoeBottles().MoveToWorld(new Point3D(6239, 2885, 6), map);
new GumshoeRope().MoveToWorld(new Point3D(6241, 2884, 0), map);
new GumshoeRope().MoveToWorld(new Point3D(6241, 2884, 1), map);
new GumshoeMap().MoveToWorld(new Point3D(6240, 2885, 6), map);
new GumshoeMap().MoveToWorld(new Point3D(6240, 2885, 7), map);
new GumshoeTools().MoveToWorld(new Point3D(6239, 2886, 6), map);
// Yew
door = new TrapDoor("tenebrae", new Point3D(6294, 2891, 17), map);
book = new MysteriousBook(door);
dust = new DustPile(door);
teleporter = new Teleporter(new Point3D(712, 1104, 0), map);
door.MoveToWorld(new Point3D(712, 1104, 0), map);
book.MoveToWorld(new Point3D(6294, 2887, 6), map);
dust.MoveToWorld(new Point3D(6291, 2875, 9), map);
teleporter.MoveToWorld(new Point3D(6294, 2891, 17), map);
new GumshoeBottles().MoveToWorld(new Point3D(6303, 2887, 6), map);
new GumshoeBottles().MoveToWorld(new Point3D(6304, 2887, 6), map);
new GumshoeRope().MoveToWorld(new Point3D(6299, 2887, 0), map);
new GumshoeRope().MoveToWorld(new Point3D(6299, 2887, 1), map);
new GumshoeMap().MoveToWorld(new Point3D(6294, 2888, 6), map);
new GumshoeMap().MoveToWorld(new Point3D(6294, 2888, 7), map);
new GumshoeTools().MoveToWorld(new Point3D(6294, 2889, 6), map);
// Gravestones
var grave = new DamagedHeadstone(1158607); // brit
grave.MoveToWorld(new Point3D(1378, 1445, 10), map);
grave = new DamagedHeadstone(1158608); // vesper
grave.ItemID = 4477;
grave.MoveToWorld(new Point3D(2747, 882, 0), map);
grave = new DamagedHeadstone(1158609); // moonglow
grave.MoveToWorld(new Point3D(4545, 1316, 8), map);
grave = new DamagedHeadstone(1158610); // yew
grave.MoveToWorld(new Point3D(723, 1104, 0), map);
// footprints
var footprints = new BloodyFootPrints(0x1E06);
footprints.MoveToWorld(new Point3D(1383, 1452, 10), map);
footprints = new BloodyFootPrints(0x1E06);
footprints.MoveToWorld(new Point3D(1383, 1456, 10), map);
footprints = new BloodyFootPrints(0x1E06);
footprints.MoveToWorld(new Point3D(1383, 1461, 10), map);
footprints = new BloodyFootPrints(0x1E06);
footprints.MoveToWorld(new Point3D(1383, 1464, 10), map);
footprints = new BloodyFootPrints(0x1E03);
footprints.MoveToWorld(new Point3D(1378, 1464, 10), map);
var st = new Static(0x2006);
st.Stackable = true;
st.Amount = 0x191;
st.Hue = 0x47E;
st.MoveToWorld(new Point3D(5808, 3270, -15), map);
st.Name = "A Corpse of Liane";
st = new Static(0x2006);
st.Stackable = true;
st.Amount = 86;
st.Hue = 0x47E;
st.MoveToWorld(new Point3D(5807, 3268, -15), map);
st.Name = "A Corpse of an Ophidian Beserker";
}
}
}