Files
abysmal-isle/Scripts/Services/Town Cryer/Quests/PaladinsOfTrinsic.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

252 lines
9.0 KiB
C#

using Server;
using System;
using Server.Items;
using Server.Mobiles;
using Server.Services.TownCryer;
namespace Server.Engines.Quests
{
public class PaladinsOfTrinsic : BaseQuest
{
public override QuestChain ChainID{get {return QuestChain.PaladinsOfTrinsic; } }
public override Type NextQuest { get { return typeof(PaladinsOfTrinsic2); } }
/* The Paladins of Trinsic */
public override object Title { get { return 1158093; } }
/*It seems the Paladins of Trinsic are working hard to see the threats of Shame are kept inside Shame,
* perhaps it would be a good idea to visit their headquarters in Northeast Trinsic.*/
public override object Description { get { return 1158114; } }
/* You decide against accepting the quest. */
public override object Refuse { get { return 1158130; } }
/* Find the Lord Commander of the Paladins of Trinsic. */
public override object Uncomplete { get { return 1158117; } }
/*You have proven yourself honorable and the Lord Commander has invited you to join the elite order of the Paladin of Trinsic!
* Congratulations, Paladin!*/
public override object Complete { get { return 1158317; } }
public override int CompleteMessage { get { return 1156585; } } // You've completed a quest!
public override int AcceptSound { get { return 0x2E8; } }
public override bool DoneOnce { get { return true; } }
public PaladinsOfTrinsic()
{
AddObjective(new InternalObjective());
AddReward(new BaseReward(1158120)); // A unique opportunity to join the Paladins of Trinsic.
}
private class InternalObjective : BaseObjective
{
public override object ObjectiveDescription { get { return Quest.Uncomplete; } }
public InternalObjective()
: base(1)
{
}
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();
}
}
}
public class PaladinsOfTrinsic2 : BaseQuest
{
public override QuestChain ChainID { get { return QuestChain.PaladinsOfTrinsic; } }
/* The Paladins of Trinsic */
public override object Title { get { return 1158093; } }
/*Another who wishes to walk the path of the Paladins of Trinsic? Well you should know the path is not an easy one to walk,
* and only those with the courage to pursue truth are admitted to the order. If you prove you are honorable, then you shall
* join our ranks and gain the prestigious title of Paladin of Trinsic. We are bound by Honor, and thus we stand against
* Shame! To prove yourself you must venture deep within the dungeon Shame and slay the vile within. Succeed in this task
* and you will prove your worth, fail and you will bring to your name what you hope to defeat - Shame.*/
public override object Description { get { return 1158096; } }
/* The way of the Paladin is not for everyone, I understand your decision but hope you reconsider... */
public override object Refuse { get { return 1158102; } }
/* Go to the dungeon Shame and slay the creatures within, only then will you have the Honor of calling thyself a Paladin of
* Trinsic. */
public override object Uncomplete { get { return 1158105; } }
/*You have proven yourself honorable and the Lord Commander has invited you to join the elite order of the Paladin of Trinsic!
* Congratulations, Paladin!*/
public override object Complete { get { return 1158317; } }
public override int AcceptSound { get { return 0x2E8; } }
public override bool DoneOnce { get { return true; } }
public override int CompleteMessage { get { return 1158108; } }
public bool SentMessage { get; set; }
public PaladinsOfTrinsic2()
{
AddObjective(new SlayObjective(typeof(QuartzElemental), "quartz elemental", 1, "Shame"));
AddObjective(new SlayObjective(typeof(FlameElemental), "flame elemental", 1, "Shame"));
AddObjective(new SlayObjective(typeof(WindElemental), "wind elemental", 1, "Shame"));
AddObjective(new SlayObjective(typeof(UnboundEnergyVortex), "unbound energy vortex", 1, "Shame"));
AddReward(new BaseReward(typeof(PaladinOfTrinsicRewardTitleDeed), 1158099)); // Becoming a Paladin of Trinsic
}
public void CompleteQuest()
{
TownCryerSystem.CompleteQuest(Owner, new PaladinsOfTrinsic());
OnCompleted();
GiveRewards();
QuestHelper.Delay(Owner, typeof(PaladinsOfTrinsic), RestartDelay);
}
}
public class Morz : MondainQuester
{
public override Type[] Quests { get { return new Type[] { typeof(PaladinsOfTrinsic) }; } }
public static Morz TramInstance { get; set; }
public static Morz FelInstance { get; set; }
public static void Initialize()
{
if (Core.TOL)
{
if (TramInstance == null)
{
TramInstance = new Morz();
TramInstance.MoveToWorld(new Point3D(2018, 2745, 30), Map.Trammel);
TramInstance.Direction = Direction.South;
}
if (FelInstance == null)
{
FelInstance = new Morz();
FelInstance.MoveToWorld(new Point3D(2018, 2745, 30), Map.Felucca);
FelInstance.Direction = Direction.South;
}
}
}
public Morz()
: base("Morz", "the Lord Commander")
{
}
public override void InitBody()
{
InitStats(100, 100, 25);
Female = false;
CantWalk = true;
Body = 0x190;
Hue = Race.RandomSkinHue();
HairItemID = 0;
FacialHairItemID = 0x204D;
}
public override void InitOutfit()
{
AddItem(new Backpack());
SetWearable(new PlateChest(), 0x8A5);
SetWearable(new PlateLegs(), 0x8A5);
SetWearable(new PlateArms(), 0x8A5);
SetWearable(new PlateGloves(), 0x8A5);
SetWearable(new BodySash(), 1158);
SetWearable(new Cloak(), 1158);
}
public override void OnDoubleClick(Mobile m)
{
if (m is PlayerMobile && m.InRange(Location, 5))
{
PaladinsOfTrinsic quest = QuestHelper.GetQuest((PlayerMobile)m, typeof(PaladinsOfTrinsic)) as PaladinsOfTrinsic;
if (quest != null)
{
quest.GiveRewards();
}
else
{
PaladinsOfTrinsic2 quest2 = QuestHelper.GetQuest((PlayerMobile)m, typeof(PaladinsOfTrinsic2)) as PaladinsOfTrinsic2;
if (quest2 != null)
{
if (quest2.Completed)
{
quest2.CompleteQuest();
}
else
{
m.SendGump(new MondainQuestGump(quest2, MondainQuestGump.Section.InProgress, false));
quest2.InProgress();
}
}
}
}
}
public override void OnMovement(Mobile m, Point3D oldLocation)
{
if(m is PlayerMobile && InRange(m.Location, 5) && !InRange(oldLocation, 5))
{
PaladinsOfTrinsic2 quest = QuestHelper.GetQuest<PaladinsOfTrinsic2>((PlayerMobile)m);
if(quest != null && !quest.SentMessage && quest.Completed)
{
m.SendLocalizedMessage(1158111); // You have proven yourself Honorable, the Lord Commander looks overjoyed as you approach him triumphantly! Speak to him to claim your reward!
quest.SentMessage = true;
}
}
}
public Morz(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();
}
}
}