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

388 lines
14 KiB
C#

using Server;
using System;
using Server.Items;
using Server.Mobiles;
using Server.Services.TownCryer;
namespace Server.Engines.Quests
{
public class RightingWrongQuest : BaseQuest
{
/* Righting Wrong */
public override object Title { get { return 1158150; } }
/*The situation at the Prison Dungeon Wrong seems to have gotten out of control. The article mentioned the Royal
* Britannian' Guard has started contracting adventuring groups to handle the situation. Perhaps it would be
* prudent to inquire about opportunities with the Guard at the Court of Truth in Yew.*/
public override object Description { get { return 1158151; } }
/* You decide against accepting the quest. */
public override object Refuse { get { return 1158130; } }
/* Inquire about the events at Wrong with the Royal Britannian Guard at the Court of Truth in Yew. */
public override object Uncomplete { get { return 1158152; } }
public override object Complete { get { return 1158170; } }
/*You have brought Justice to the forgotten prison dungeon Wrong! The Royal Britannian Guard thanks you for your service,
* and for not leaving the Lieutenant behind. You fought bravely this day and escaped the prison. As a thank you for your
* service, and a testament to your accomplishment, you have been granted the title Warden of Wrong!*/
public override int CompleteMessage { get { return 1158291; } } // You've found the Royal Guard Captain! Speak to him to learn more!
public override int AcceptSound { get { return 0x2E8; } }
public override bool DoneOnce { get { return true; } }
public RightingWrongQuest()
{
AddObjective(new InternalObjective());
AddReward(new BaseReward(1158153)); // A unique opportunity with the Royal Britannian Guard
}
public override void GiveRewards()
{
base.GiveRewards();
QuestHelper.Delay(Owner, typeof(RightingWrongQuest), RestartDelay);
}
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 RightingWrongQuest2 : BaseQuest
{
public override QuestChain ChainID { get { return QuestChain.RightingWrong; } }
public override Type NextQuest { get { return typeof(RightingWrongQuest3); } }
/* Righting Wrong */
public override object Title { get { return 1158150; } }
/*Another wanna-be guardsman expecting to wrangle this mess? You should know that inside Wrong there are many terrors.
* Lizardman have squatted in the entire prison, eaten most of the prisoners and staff. The few staff that are left have
* gone mad. If you expect to make it as a Guardsman you are going to need to thin out the heard. Head inside and kill
* the creatures within!*/
public override object Description { get { return 1158155; } }
/* You decide against accepting the quest. */
public override object Refuse { get { return 1158130; } }
/* Go inside the prison dungeon Wrong and slay the creatures within! */
public override object Uncomplete { get { return 1158156; } }
/* Well then, I guess you aren't as useless as you look. Made quick work of the Lizards, that's fine work indeed!
* Your next test is going to require you travel deeper into the prison. Seems there is an ogre who has taken to mastering
* his cooking skills at the expense of the former prisoners. The Guard can't have that, so you need to go in there and make
* sure this cook is prepping his last meal! */
public override object Complete { get { return 1158157; } }
public override int AcceptSound { get { return 0x2E8; } }
public override bool DoneOnce { get { return true; } }
public RightingWrongQuest2()
{
AddObjective(new SlayObjective(typeof(LizardmanDefender), "lizardman defenders", 5));
AddObjective(new SlayObjective(typeof(LizardmanSquatter), "lizardman squatters", 5));
AddObjective(new SlayObjective(typeof(CaveTrollWrong), "cave trolls", 5));
AddObjective(new SlayObjective(typeof(HungryOgre), "hungry ogres", 5));
AddReward(new BaseReward(1158167)); // A step closer to righting Wrong
}
}
public class RightingWrongQuest3 : BaseQuest
{
public override QuestChain ChainID { get { return QuestChain.RightingWrong; } }
public override Type NextQuest { get { return typeof(RightingWrongQuest4); } }
/* Righting Wrong */
public override object Title { get { return 1158150; } }
/* Well then, I guess you aren't as useless as you look. Made quick work of the Lizards, that's fine work indeed!
* Your next test is going to require you travel deeper into the prison. Seems there is an ogre who has taken to mastering
* his cooking skills at the expense of the former prisoners. The Guard can't have that, so you need to go in there and make
* sure this cook is prepping his last meal! */
public override object Description { get { return 1158157; } }
/* You decide against accepting the quest. */
public override object Refuse { get { return 1158130; } }
/* Go inside the prison dungeon Wrong and slay Fezzik the Ogre Cook */
public override object Uncomplete { get { return 1158158; } }
/* Looks like Fezzik won't be making anymore stew! Hah! Well done! Your final task is going to require you to learn the
* most important lesson of being a Guardsman - we never leave a man behind. One of our comrades was captured by the
* demonic jailers and taken to the prison. You need to get yourself captured by the jailers and taken inside the deepest
* part of the prison. Once inside, find our fallen comrade and escape. Here's a copy of his orders to help you find his corpse. */
public override object Complete { get { return 1158163; } }
//public override int CompleteMessage { get { return 1158291; } } // You've found the Royal Guard Captain! Speak to him to learn more!
public override int AcceptSound { get { return 0x2E8; } }
public RightingWrongQuest3()
{
AddObjective(new SlayObjective(typeof(Fezzik), "fezzik the ogre cook", 1));
AddReward(new BaseReward(1158167)); // A step closer to righting Wrong
}
}
public class RightingWrongQuest4 : BaseQuest
{
public override QuestChain ChainID { get { return QuestChain.RightingWrong; } }
private RoyalBritannianGuardOrders Orders { get; set; }
/* Righting Wrong */
public override object Title { get { return 1158150; } }
/* Looks like Fezzik won't be making anymore stew! Hah! Well done! Your final task is going to require you to learn the
* most important lesson of being a Guardsman - we never leave a man behind. One of our comrades was captured by the
* demonic jailers and taken to the prison. You need to get yourself captured by the jailers and taken inside the deepest
* part of the prison. Once inside, find our fallen comrade and escape. Here's a copy of his orders to help you find his corpse. */
public override object Description { get { return 1158163; } }
/* You decide against accepting the quest. */
public override object Refuse { get { return 1158130; } }
/* Go inside the prison dungeon Wrong and get yourself captured by the Demonic Jailors. Once inside, find the fallen Guard and escape
* with his corpse. */
public override object Uncomplete { get { return 1158166; } }
/* You have brought Justice to the forgotten prison dungeon Wrong! The Royal Britannian Guard thanks you for your service,
* and for not leaving the Lieutenant behind. You fought bravely this day and escaped the prison. As a thank you for your
* service, and a testament to your accomplishment, you have been granted the title Warden of Wrong! */
public override object Complete { get { return 1158170; } }
public override int CompleteMessage { get { return 1158169; } }
/*You have found the corpse of Lieutenant Bennet Yardley of the Royal Britannian Guard. Unfortunately, it seems there
* is not much left to return to the Field Commander. Regardless, you hold back your urge to become sick and gather his
* remains. Escape the prison and return to the Field Commander.*/
public override int AcceptSound { get { return 0x2E8; } }
public RightingWrongQuest4()
{
AddObjective(new InternalObjective());
AddReward(new BaseReward(typeof(RightingWrongRewardTitleDeed), 1158165)); // A Unique Honor from the Royal Britannian Guard
}
public override void OnAccept()
{
base.OnAccept();
Orders = new RoyalBritannianGuardOrders();
Owner.Backpack.DropItem(Orders);
Owner.SendLocalizedMessage(1154489); // You received a Quest Item!
}
public void CompleteQuest()
{
TownCryerSystem.CompleteQuest(Owner, new RightingWrongQuest());
OnCompleted();
GiveRewards();
QuestHelper.Delay(Owner, typeof(RightingWrongQuest2), RestartDelay);
}
public override void RemoveQuest(bool removeChain)
{
base.RemoveQuest(removeChain);
if (Orders != null && !Orders.Deleted)
{
Orders.Delete();
}
}
private class InternalObjective : BaseObjective
{
public override object ObjectiveDescription { get { return 1158164; } } // Find the fallen Guard's corpse and escape the prison.
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 override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
writer.Write(Orders);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
Orders = reader.ReadItem() as RoyalBritannianGuardOrders;
}
}
public class Arnold : MondainQuester
{
public override Type[] Quests { get { return new Type[] { typeof(RightingWrongQuest2) }; } }
public static Arnold TramInstance { get; set; }
public static Arnold FelInstance { get; set; }
public static void Initialize()
{
if (Core.TOL)
{
if (TramInstance == null)
{
TramInstance = new Arnold();
TramInstance.MoveToWorld(new Point3D(363, 913, 0), Map.Trammel);
TramInstance.Direction = Direction.East;
}
if (FelInstance == null)
{
FelInstance = new Arnold();
FelInstance.MoveToWorld(new Point3D(363, 913, 0), Map.Felucca);
FelInstance.Direction = Direction.East;
}
}
}
public Arnold()
: base("Arnold", "the Royal Britannian Guard")
{
}
public override void InitBody()
{
InitStats(100, 100, 25);
Female = false;
CantWalk = true;
Body = 0x190;
Hue = Race.RandomSkinHue();
HairItemID = 0x203C;
FacialHairItemID = 0x204C;
HairHue = 0x8A8;
FacialHairHue = 0x8A8;
}
public override void InitOutfit()
{
AddItem(new Backpack());
SetWearable(new ChainChest());
SetWearable(new ThighBoots());
SetWearable(new BodySash(), 1157);
SetWearable(new Epaulette(), 1157);
SetWearable(new ChaosShield());
SetWearable(new Broadsword());
}
public override void OnDoubleClick(Mobile m)
{
if (m is PlayerMobile && m.InRange(Location, 5))
{
RightingWrongQuest4 quest = QuestHelper.GetQuest<RightingWrongQuest4>((PlayerMobile)m);
if (quest != null && quest.Completed)
{
quest.CompleteQuest();
}
else
{
base.OnDoubleClick(m);
}
}
}
public override void OnMovement(Mobile m, Point3D oldLocation)
{
if (m is PlayerMobile && InRange(m.Location, 5) && !InRange(oldLocation, 5))
{
RightingWrongQuest quest = QuestHelper.GetQuest<RightingWrongQuest>((PlayerMobile)m);
if (quest != null)
{
quest.OnCompleted();
quest.GiveRewards();
}
}
}
public Arnold(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();
}
}
}