ModernUO/Projects/Scripts/Engines/Quests/Ambitious Solen Queen/AmbitiousQueenQuest.cs
2019-08-02 18:16:11 -07:00

118 lines
No EOL
2.9 KiB
C#

using System;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Ambitious
{
public class AmbitiousQueenQuest : QuestSystem
{
private static Type[] m_TypeReferenceTable =
{
typeof(DontOfferConversation),
typeof(AcceptConversation),
typeof(DuringKillQueensConversation),
typeof(GatherFungiConversation),
typeof(DuringFungiGatheringConversation),
typeof(EndConversation),
typeof(FullBackpackConversation),
typeof(End2Conversation),
typeof(KillQueensObjective),
typeof(ReturnAfterKillsObjective),
typeof(GatherFungiObjective),
typeof(GetRewardObjective)
};
public AmbitiousQueenQuest(PlayerMobile from, bool redSolen) : base(from)
{
RedSolen = redSolen;
}
// Serialization
public AmbitiousQueenQuest()
{
}
public override Type[] TypeReferenceTable => m_TypeReferenceTable;
public override object Name => 1054146;
public override object OfferMessage => 1054060;
public override TimeSpan RestartDelay => TimeSpan.Zero;
public override bool IsTutorial => false;
public override int Picture => 0x15C9;
public bool RedSolen{ get; private set; }
public override void ChildDeserialize(GenericReader reader)
{
int version = reader.ReadEncodedInt();
RedSolen = reader.ReadBool();
}
public override void ChildSerialize(GenericWriter writer)
{
writer.WriteEncodedInt(0); // version
writer.Write(RedSolen);
}
public override void Accept()
{
base.Accept();
AddConversation(new AcceptConversation());
}
public static void GiveRewardTo(PlayerMobile player, ref bool bagOfSending, ref bool powderOfTranslocation,
ref bool gold)
{
if (bagOfSending)
{
Item reward = new BagOfSending();
if (player.PlaceInBackpack(reward))
{
player.SendLocalizedMessage(1054074, "", 0x59); // You have been given a bag of sending.
bagOfSending = false;
}
else
{
reward.Delete();
}
}
if (powderOfTranslocation)
{
Item reward = new PowderOfTranslocation(Utility.RandomMinMax(10, 12));
if (player.PlaceInBackpack(reward))
{
player.SendLocalizedMessage(1054075, "", 0x59); // You have been given some powder of translocation.
powderOfTranslocation = false;
}
else
{
reward.Delete();
}
}
if (gold)
{
Item reward = new Gold(Utility.RandomMinMax(250, 350));
if (player.PlaceInBackpack(reward))
{
player.SendLocalizedMessage(1054076, "", 0x59); // You have been given some gold.
gold = false;
}
else
{
reward.Delete();
}
}
}
}
}