Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,151 @@
using System;
using System.Collections.Generic;
using Server;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Engines.Quests;
namespace Server.Engines.Khaldun
{
public class Cryptologist : BaseVendor
{
public static Cryptologist TramInstance { get; set; }
protected readonly List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
public override bool IsActiveVendor { get { return false; } }
public override void InitSBInfo()
{
}
public static void Initialize()
{
if (Core.TOL)
{
if (TramInstance == null)
{
TramInstance = new Cryptologist();
TramInstance.MoveToWorld(new Point3D(4325, 949, 10), Map.Trammel);
TramInstance.Direction = Direction.South;
}
}
}
public Cryptologist()
: base("the Cryptologist")
{
}
public override void InitBody()
{
Name = NameList.RandomName("male");
InitStats(100, 100, 25);
Female = false;
CantWalk = true;
Race = Race.Human;
Hue = Race.RandomSkinHue();
HairHue = Race.RandomHairHue();
FacialHairHue = Race.RandomHairHue();
HairItemID = Race.RandomHair(false);
FacialHairItemID = Race.RandomFacialHair(false);
}
public override void InitOutfit()
{
AddItem(new Backpack());
SetWearable(new HakamaShita());
SetWearable(new ShortPants(), 1157);
SetWearable(new Obi(), 1157);
SetWearable(new Sandals());
}
public override void OnDoubleClick(Mobile m)
{
if (m is PlayerMobile && InRange(m.Location, 5))
{
GoingGumshoeQuest3 quest = QuestHelper.GetQuest<GoingGumshoeQuest3>((PlayerMobile)m);
if (quest != null)
{
if (!quest.FoundCipherBook)
{
m.SendLocalizedMessage(1158620, null, 0x23); /*You've spoken to the Cryptologist who has agreed to help you if you acquire the Cipher Text.*/
m.SendGump(new InternalGump(1158619));
}
else
{
m.SendLocalizedMessage(1158621, null, 0x23); /*The Cytologist has successfully begun decrypting the copies of the books you found. He informs you he
* will send them to Headquarters when he is finished. Return to Inspector Jasper to follow up on the case.*/
m.SendGump(new InternalGump(1158624));
m.PlaySound(quest.UpdateSound);
quest.BegunDecrypting = true;
}
}
else
{
SayTo(m, 1073989, 1154);
Effects.PlaySound(Location, Map, 0x441);
}
}
}
private class InternalGump : Gump
{
public InternalGump(int cliloc)
: base(50, 50)
{
AddBackground(0, 0, 720, 285, 9300);
AddImage(0, 0, 1744);
AddHtmlLocalized(300, 25, 408, 250, cliloc, false, false);
/*Shhh! Can't you see the students are...*the Cryptologist pauses as you explain the reason for your visit*
* Oh, Inspector Jasper sent you did he? Well my service to the RBG is something I hold in -very- high regard.
* What can I assist you with? *You show the Cryptologist your copies of the encrypted notes* Yes...yes...a
* masterful cipher if I have ever seen one, but one that can easily be cracked! The only thing we need is the
* cipher text - but just as it were a number of our texts have been hidden by some students having a bit of
* fun with the season. I've already searched the dormitories out back, but I'm certain it's somewhere in the
* Lycaeum bookcases, if you find it, I'll be happy to assist you in decrypting the texts. */
// or //
/*Wait till I catch the students who did this! Well, I must thank you for recovering this text, it's very useful
* in my daily studies. No matter, I will begin decryption of the copies of these clues you gave me. I'll send a
* courier to headquarters when I am through. Thank you again for your assistance! */
}
}
public Cryptologist(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();
if (Map == Map.Trammel)
{
TramInstance = this;
}
if (!Core.TOL)
Delete();
}
}
}

View File

@@ -0,0 +1,138 @@
using System;
using System.Collections.Generic;
using Server;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Engines.Quests;
namespace Server.Engines.Khaldun
{
public class GraveDigger : BaseVendor
{
protected readonly List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
public override bool IsActiveVendor { get { return false; } }
public override void InitSBInfo()
{
}
public static GraveDigger TramInstance { get; set; }
//public static GraveDigger FelInstance { get; set; }
public static void Initialize()
{
if (Core.TOL)
{
if (TramInstance == null)
{
TramInstance = new GraveDigger();
TramInstance.MoveToWorld(new Point3D(1382, 1447, 10), Map.Trammel);
TramInstance.Direction = Direction.South;
}
}
}
public GraveDigger()
: base("the Grave Digger")
{
}
public override void InitBody()
{
Name = NameList.RandomName("male");
InitStats(100, 100, 25);
Female = false;
CantWalk = true;
Race = Race.Human;
Hue = Race.RandomSkinHue();
HairHue = Race.RandomHairHue();
FacialHairHue = Race.RandomHairHue();
HairItemID = 0x203C;
FacialHairItemID = 0x203E;
}
public override void InitOutfit()
{
AddItem(new Backpack());
SetWearable(new Surcoat(), 1634);
SetWearable(new Kilt(), 946);
SetWearable(new FancyShirt(), 1411);
SetWearable(new ThighBoots(), 2013);
SetWearable(new GoldBracelet());
SetWearable(new GoldRing());
}
public override void OnDoubleClick(Mobile m)
{
if (m is PlayerMobile && InRange(m.Location, 5))
{
GoingGumshoeQuest2 quest = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
if (quest != null)
{
m.SendLocalizedMessage(1158606, null, 0x23); /* You've spoken to the Grave Digger and have paid your respects to those who
perished in the fight against the titans. How someone could defile a grave
stone, you have no idea. You decide to take a closer look... */
m.PlaySound(quest.UpdateSound);
m.SendGump(new InternalGump());
}
}
}
private class InternalGump : Gump
{
public InternalGump()
: base(50, 50)
{
AddBackground(0, 0, 720, 285, 9300);
AddImage(0, 0, 1743);
AddHtmlLocalized(300, 25, 408, 250, 1158570, false, false);
/*Solemn job you know, but someone has to do it. Been pretty busy since the invasions, hardly a day goes by we don't
* have the kin of someone who embraced Sacrifice and gave themselves in defense of the realm against the Titans.
* Ah well, makes me feel good knowing me shovel gives em a good final resting place. Worst part ya know though -
* plenty of people been in and out of the cemetery for sure, but I don't know why they insist on messing up the
* headstones!? To think, some people have no Shame!*/
}
}
public GraveDigger(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();
if (Map == Map.Trammel)
{
TramInstance = this;
}
/*else if (Map == Map.Felucca)
{
FelInstance = this;
}*/
if (!Core.TOL)
Delete();
}
}
}

View File

@@ -0,0 +1,213 @@
using System;
using Server;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Engines.Quests;
namespace Server.Engines.Khaldun
{
public class InspectorJasper : MondainQuester
{
public override Type[] Quests { get { return null; } }
public static InspectorJasper TramInstance { get; set; }
public static void Initialize()
{
if (Core.TOL)
{
if (TramInstance == null)
{
TramInstance = new InspectorJasper();
TramInstance.MoveToWorld(new Point3D(1675, 1584, 7), Map.Trammel);
TramInstance.Direction = Direction.South;
}
}
}
public InspectorJasper()
: base("Jasper", "the Inspector")
{
}
public override void InitBody()
{
InitStats(100, 100, 25);
Female = false;
CantWalk = true;
Race = Race.Elf;
Hue = 33770;
HairItemID = 0x2FCF;
HairHue = Race.RandomHairHue();
}
public override void InitOutfit()
{
AddItem(new Backpack());
SetWearable(new LongPants(), 1156);
SetWearable(new FancyShirt());
SetWearable(new Epaulette(), 1156);
SetWearable(new BodySash(), 1175);
SetWearable(new Obi(), 1156);
SetWearable(new Shoes(), 1910);
}
public override void OnDoubleClick(Mobile m)
{
if (m is PlayerMobile && m.InRange(Location, 5))
{
GoingGumshoeQuest quest = QuestHelper.GetQuest<GoingGumshoeQuest>((PlayerMobile)m);
if (quest != null && quest.Completed)
{
quest.GiveRewards();
BaseQuest newquest = QuestHelper.RandomQuest((PlayerMobile)m, new Type[] { typeof(GoingGumshoeQuest2) }, this);
if (newquest != null)
m.SendGump(new MondainQuestGump(newquest));
}
else
{
GoingGumshoeQuest2 quest2 = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
if (quest2 != null)
{
if (quest2.IsComplete)
{
quest2.Objectives[0].CurProgress++;
quest2.GiveRewards(); // TODO: Does this quest end here?
BaseQuest newquest = QuestHelper.RandomQuest((PlayerMobile)m, new Type[] { typeof(GoingGumshoeQuest3) }, this);
if (newquest != null)
m.SendGump(new MondainQuestGump(newquest));
}
else
{
m.SendGump(new MondainQuestGump(quest2, MondainQuestGump.Section.InProgress, false));
quest2.InProgress();
}
}
else
{
GoingGumshoeQuest3 quest3 = QuestHelper.GetQuest<GoingGumshoeQuest3>((PlayerMobile)m);
if (quest3 != null)
{
if (quest3.IsComplete)
{
quest3.Objectives[0].CurProgress++;
quest3.GiveRewards(); // TODO: Does this quest end here?
BaseQuest newquest = QuestHelper.RandomQuest((PlayerMobile)m, new Type[] { typeof(GoingGumshoeQuest4) }, this);
if (newquest != null)
m.SendGump(new MondainQuestGump(newquest));
}
else
{
m.SendGump(new MondainQuestGump(quest3, MondainQuestGump.Section.InProgress, false));
quest3.InProgress();
}
}
else
{
GoingGumshoeQuest4 quest4 = QuestHelper.GetQuest<GoingGumshoeQuest4>((PlayerMobile)m);
if (quest4 != null && !quest4.IsComplete)
{
m.SendGump(new MondainQuestGump(quest4, MondainQuestGump.Section.InProgress, false));
quest4.InProgress();
}
else if (quest4 == null)
{
SayTo(m, 1080107); // I'm sorry, I have nothing for you at this time.
}
}
}
}
}
}
public override void OnMovement(Mobile m, Point3D oldLocation)
{
if (m is PlayerMobile && InLOS(m) && InRange(m.Location, 3) && !InRange(oldLocation, 3))
{
var quest = QuestHelper.GetQuest<GoingGumshoeQuest>((PlayerMobile)m);
if (quest != null)
{
quest.Objectives[0].CurProgress++;
quest.OnCompleted();
}
else
{
var quest2 = QuestHelper.GetQuest<GoingGumshoeQuest4>((PlayerMobile)m);
if (quest2 != null && quest2.IsComplete)
{
quest2.Objectives[0].CurProgress++;
m.SendGump(new InternalGump());
m.PlaySound(quest2.CompleteSound);
quest2.GiveRewards();
}
}
}
}
private class InternalGump : Gump
{
public InternalGump()
: base(50, 50)
{
AddBackground(0, 0, 400, 600, 9300);
AddImage(58, 30, 1745);
AddHtmlLocalized(0, 340, 400, 20, 1154645, "#1158625", 0x0, false, false); // It all comes together...
AddHtmlLocalized(5, 365, 390, 200, 1158626, BaseGump.C32216(0x0D0D0D), false, true);
/**You approach Inspector Jasper and relay to him what Sage Humbolt told you...he remains expressionless*
* This is much more sinister than any of us could have ever imagined. I had little doubt your investigatory
* skills would yield anything but a major revelation - but this? Who could have thought. I have dispatched
* a team to the location Sage Humbolt spoke of. It is up to everyone now to prevent this coming evil. Here
* you go, you've earned this. Wear this title proudly. This official credential identifies you as a member
* of the RBG Detective Branch and will allow you past the guards at the site Sage Humbolt spoke of near
* 57o 7'S, 5o 20'E in the Lost Lands.*/
}
}
public InspectorJasper(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();
if (Map == Map.Trammel)
{
TramInstance = this;
}
if (!Core.TOL)
Delete();
}
}
}

View File

@@ -0,0 +1,151 @@
using System;
using System.Collections.Generic;
using Server;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Engines.Quests;
namespace Server.Engines.Khaldun
{
public class SageHumbolt : BaseVendor
{
public static SageHumbolt TramInstance { get; set; }
protected readonly List<SBInfo> m_SBInfos = new List<SBInfo>();
protected override List<SBInfo> SBInfos { get { return m_SBInfos; } }
public override bool IsActiveVendor { get { return false; } }
public override void InitSBInfo()
{
}
public static void Initialize()
{
if (Core.TOL)
{
if (TramInstance == null)
{
TramInstance = new SageHumbolt();
TramInstance.MoveToWorld(new Point3D(5808, 3270, -15), Map.Trammel);
TramInstance.Direction = Direction.North;
}
}
}
public SageHumbolt()
: base("the Ghost")
{
IsDeadPet = true;
}
public override void InitBody()
{
Name = "Sage Humbolt";
InitStats(100, 100, 25);
Female = false;
CantWalk = true;
Race = Race.Human;
Hue = Race.RandomSkinHue();
}
public override void InitOutfit()
{
AddItem(new Backpack());
var robe = new DeathRobe();
robe.ItemID = 9863;
SetWearable(robe);
}
public bool OnSpiritSpeak(Mobile m)
{
var pm = m as PlayerMobile;
if (pm != null)
{
var quest = QuestHelper.GetQuest<GoingGumshoeQuest4>(pm);
if (quest != null && !quest.IsComplete)
{
/*You have successfully found Sage Humbolt who has opened you eyes to the entire conspiracy, and the danger that looms ahead
* if no steps are taken to alter the current course of events. Return to Inspector Jasper to report your findings.*/
m.SendLocalizedMessage(1158636, null, 0x23);
m.SendGump(new InternalGump());
m.PlaySound(quest.UpdateSound);
quest.IsComplete = true;
return true;
}
}
return false;
}
private class InternalGump : Gump
{
public InternalGump()
: base(50, 50)
{
AddBackground(0, 0, 400, 600, 9300);
AddImage(58, 30, 1746);
AddHtmlLocalized(0, 340, 400, 20, 1154645, "#1158623", 0x0, false, false); // The Prophecy
AddHtmlLocalized(5, 365, 390, 200, 1158622, BaseGump.C32216(0x0D0D0D), false, true);
/**The ghostly figure looks at you with disappointment* You've brought the cheese haven't you? Gah,
* I can never find it! *the ghost goes back to waving its hands through the barrels* You explain
* who you are, and the circumstances that have lead you to this moment. With each word the ghost
* becomes increasingly alarmed, yet an expression of expectation and satisfaction is apparent from
* their reaction. The ghost nods and begins to speak in a tongue you can understand,<br><br> "That's
* right. I am Sage Humbolt, or I was. What you speak of is especially concerning. The events you
* describe - the invasion by otherworldly cultist, the titans, all of it - it was something foretold
* long ago. But these most recent revelations, I was hopeful that, like most prophecies, this was a
* bit of embellishment by sages through the millenia. Alas, it seems this prophecy has come full
* circle.<br><br>Long ago, a great warrior named Khal Ankur lead a cult devoted to death and sacrifice
* . Like most zealots of such a twisted dogma, Khal Ankur met his end and was sealed inside a tomb deep
* in the Lost Lands. Not until four explorers uncovered the tomb did we even know for sure it existed.
* The prophecy tells of a fallen star that would allow Khal Ankur to rise again and lead an army of
* zealots against those who imprisoned him. With the strength of this fallen star Khal Ankur would be
* impossible to kill, save for with the very power the fallen star gives to Khal Ankur. You must never
* allow Khal Ankur to rise again, lest the cultists may use their power to recall the Titans to this
* world! The fallen star is rich with a material called Caddellite, which gives Khal Ankur unmatched
* power. I hope you know a good tinker, as Caddellite is a fiercely strong material that is otherwise
* impossible to harvest. With Caddellite infused resources you will be able to supply an army of the
* willing with weapons, arcana, and provisions to dispatch this threat once and for all. Go now, there
* is little time to lose. Now I've got to get back to my cheese, what a new and exciting place Papua is... */
}
}
public SageHumbolt(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();
if (Map == Map.Trammel)
{
TramInstance = this;
}
if (!Core.TOL)
Delete();
}
}
}