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,345 @@
using System;
namespace Server.Engines.Quests.Matriarch
{
public class DontOfferConversation : QuestConversation
{
private bool m_Friend;
public DontOfferConversation(bool friend)
{
this.m_Friend = friend;
}
public DontOfferConversation()
{
}
public override object Message
{
get
{
if (this.m_Friend)
{
/* <I>The Solen Matriarch smiles as you greet her.</I><BR><BR>
*
* It is good to see you again. I would offer to process some zoogi fungus for you,
* but you seem to be busy with another task at the moment. Perhaps you should
* finish whatever is occupying your attention at the moment and return to me once
* you're done.
*/
return 1054081;
}
else
{
/* <I>The Solen Matriarch smiles as she eats the seed you offered.</I><BR><BR>
*
* Thank you for that seed. It was quite delicious. <BR><BR>
*
* I would offer to make you a friend of my colony, but you seem to be busy with
* another task at the moment. Perhaps you should finish whatever is occupying
* your attention at the moment and return to me once you're done.
*/
return 1054079;
}
}
}
public override bool Logged
{
get
{
return false;
}
}
public override void ChildDeserialize(GenericReader reader)
{
int version = reader.ReadEncodedInt();
this.m_Friend = reader.ReadBool();
}
public override void ChildSerialize(GenericWriter writer)
{
writer.WriteEncodedInt((int)0); // version
writer.Write((bool)this.m_Friend);
}
}
public class AcceptConversation : QuestConversation
{
public AcceptConversation()
{
}
public override object Message
{
get
{
/* <I>The Solen Matriarch looks pleased that you've accepted.</I><BR><BR>
*
* Very good. Please start by hunting some infiltrators from the other solen
* colony and eliminating them. Slay 7 of them and then return to me.<BR><BR>
*
* Farewell for now and good hunting.
*/
return 1054084;
}
}
public override void OnRead()
{
this.System.AddObjective(new KillInfiltratorsObjective());
}
}
public class DuringKillInfiltratorsConversation : QuestConversation
{
public DuringKillInfiltratorsConversation()
{
}
public override object Message
{
get
{
/* <I>The Solen Matriarch looks up as you approach.</I><BR><BR>
*
* You're back, but you have not yet eliminated 7 infiltrators from the enemy
* colony. Return when you have completed this task.<BR><BR>
*
* Carry on. I'll be waiting for your return.
*/
return 1054089;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
public class GatherWaterConversation : QuestConversation
{
public GatherWaterConversation()
{
}
public override object Message
{
get
{
/* <I>The Solen Matriarch nods favorably as you approach her.</I><BR><BR>
*
* Marvelous! I'm impressed at your ability to hunt and kill enemies for me.
* My colony is thankful.<BR><BR>
*
* Now I must ask that you gather some water for me. A standard pitcher of water
* holds approximately one gallon. Please decant 8 gallons of fresh water
* into our water vats.<BR><BR>
*
* Farewell for now.
*/
return 1054091;
}
}
public override void OnRead()
{
this.System.AddObjective(new GatherWaterObjective());
}
}
public class DuringWaterGatheringConversation : QuestConversation
{
public DuringWaterGatheringConversation()
{
}
public override object Message
{
get
{
/* <I>The Solen Matriarch looks up as you approach.</I><BR><BR>
*
* You're back, but you have not yet gathered 8 gallons of water. Return when
* you have completed this task.<BR><BR>
*
* Carry on. I'll be waiting for your return.
*/
return 1054094;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
public class ProcessFungiConversation : QuestConversation
{
private bool m_Friend;
public ProcessFungiConversation(bool friend)
{
this.m_Friend = friend;
}
public ProcessFungiConversation()
{
}
public override object Message
{
get
{
if (this.m_Friend)
{
/* <I>The Solen Matriarch listens as you report the completion of your
* tasks to her.</I><BR><BR>
*
* I give you my thanks for your help, and I will gladly process some zoogi
* fungus into powder of translocation for you. Two of the zoogi fungi are
* required for each measure of the powder. I will process up to 200 zoogi fungi
* into 100 measures of powder of translocation.<BR><BR>
*
* I will also give you some gold for assisting me and my colony, but first let's
* take care of your zoogi fungus.
*/
return 1054097;
}
else
{
/* <I>The Solen Matriarch listens as you report the completion of your
* tasks to her.</I><BR><BR>
*
* I give you my thanks for your help, and I will gladly make you a friend of my
* solen colony. My warriors, workers, and queens will not longer look at you
* as an intruder and attack you when you enter our lair.<BR><BR>
*
* I will also process some zoogi fungus into powder of translocation for you.
* Two of the zoogi fungi are required for each measure of the powder. I will
* process up to 200 zoogi fungi into 100 measures of powder of translocation.<BR><BR>
*
* I will also give you some gold for assisting me and my colony, but first let's
* take care of your zoogi fungus.
*/
return 1054096;
}
}
}
public override void OnRead()
{
this.System.AddObjective(new ProcessFungiObjective());
}
public override void ChildDeserialize(GenericReader reader)
{
int version = reader.ReadEncodedInt();
this.m_Friend = reader.ReadBool();
}
public override void ChildSerialize(GenericWriter writer)
{
writer.WriteEncodedInt((int)0); // version
writer.Write((bool)this.m_Friend);
}
}
public class DuringFungiProcessConversation : QuestConversation
{
public DuringFungiProcessConversation()
{
}
public override object Message
{
get
{
/* <I>The Solen Matriarch smiles as you greet her.</I><BR><BR>
*
* I will gladly process some zoogi fungus into powder of translocation for you.
* Two of the zoogi fungi are required for each measure of the powder.
* I will process up to 200 zoogi fungi into 100 measures of powder of translocation.
*/
return 1054099;
}
}
public override bool Logged
{
get
{
return false;
}
}
}
public class FullBackpackConversation : QuestConversation
{
private readonly bool m_Logged;
public FullBackpackConversation(bool logged)
{
this.m_Logged = logged;
}
public FullBackpackConversation()
{
this.m_Logged = true;
}
public override object Message
{
get
{
/* <I>The Solen Matriarch looks at you with a smile.</I><BR><BR>
*
* While I'd like to finish conducting our business, it seems that you're a
* bit overloaded with equipment at the moment.<BR><BR>
*
* Perhaps you should free some room in your backpack before we proceed.
*/
return 1054102;
}
}
public override bool Logged
{
get
{
return this.m_Logged;
}
}
public override void OnRead()
{
if (this.m_Logged)
this.System.AddObjective(new GetRewardObjective());
}
}
public class EndConversation : QuestConversation
{
public EndConversation()
{
}
public override object Message
{
get
{
/* <I>The Solen Matriarch smiles as you greet her.</I><BR><BR>
*
* Ah good, you've returned. I will conclude our business by giving you
* gold I owe you for aiding me.
*/
return 1054101;
}
}
public override void OnRead()
{
this.System.Complete();
}
}
}

View File

@@ -0,0 +1,219 @@
using System;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Matriarch
{
public class KillInfiltratorsObjective : QuestObjective
{
public KillInfiltratorsObjective()
{
}
public override object Message
{
get
{
// Kill 7 black/red solen infiltrators.
return ((SolenMatriarchQuest)this.System).RedSolen ? 1054086 : 1054085;
}
}
public override int MaxProgress
{
get
{
return 7;
}
}
public override void RenderProgress(BaseQuestGump gump)
{
if (!this.Completed)
{
// Black/Red Solen Infiltrators killed:
gump.AddHtmlLocalized(70, 260, 270, 100, ((SolenMatriarchQuest)this.System).RedSolen ? 1054088 : 1054087, BaseQuestGump.Blue, false, false);
gump.AddLabel(70, 280, 0x64, this.CurProgress.ToString());
gump.AddLabel(100, 280, 0x64, "/");
gump.AddLabel(130, 280, 0x64, this.MaxProgress.ToString());
}
else
{
base.RenderProgress(gump);
}
}
public override bool IgnoreYoungProtection(Mobile from)
{
if (this.Completed)
return false;
bool redSolen = ((SolenMatriarchQuest)this.System).RedSolen;
if (redSolen)
return from is BlackSolenInfiltratorWarrior || from is BlackSolenInfiltratorQueen;
else
return from is RedSolenInfiltratorWarrior || from is RedSolenInfiltratorQueen;
}
public override void OnKill(BaseCreature creature, Container corpse)
{
bool redSolen = ((SolenMatriarchQuest)this.System).RedSolen;
if (redSolen)
{
if (creature is BlackSolenInfiltratorWarrior || creature is BlackSolenInfiltratorQueen)
this.CurProgress++;
}
else
{
if (creature is RedSolenInfiltratorWarrior || creature is RedSolenInfiltratorQueen)
this.CurProgress++;
}
}
public override void OnComplete()
{
this.System.AddObjective(new ReturnAfterKillsObjective());
}
}
public class ReturnAfterKillsObjective : QuestObjective
{
public ReturnAfterKillsObjective()
{
}
public override object Message
{
get
{
/* You've completed your task of slaying solen infiltrators. Return to the
* Matriarch who gave you this task.
*/
return 1054090;
}
}
public override void OnComplete()
{
this.System.AddConversation(new GatherWaterConversation());
}
}
public class GatherWaterObjective : QuestObjective
{
public GatherWaterObjective()
{
}
public override object Message
{
get
{
// Gather 8 gallons of water for the water vats of the solen ant lair.
return 1054092;
}
}
public override int MaxProgress
{
get
{
return 40;
}
}
public override void RenderProgress(BaseQuestGump gump)
{
if (!this.Completed)
{
gump.AddHtmlLocalized(70, 260, 270, 100, 1054093, BaseQuestGump.Blue, false, false); // Gallons of Water gathered:
gump.AddLabel(70, 280, 0x64, (this.CurProgress / 5).ToString());
gump.AddLabel(100, 280, 0x64, "/");
gump.AddLabel(130, 280, 0x64, (this.MaxProgress / 5).ToString());
}
else
{
base.RenderProgress(gump);
}
}
public override void OnComplete()
{
this.System.AddObjective(new ReturnAfterWaterObjective());
}
}
public class ReturnAfterWaterObjective : QuestObjective
{
public ReturnAfterWaterObjective()
{
}
public override object Message
{
get
{
// You've completed your task of gathering water. Return to the Matriarch who gave you this task.
return 1054095;
}
}
public override void OnComplete()
{
PlayerMobile player = this.System.From;
bool redSolen = ((SolenMatriarchQuest)this.System).RedSolen;
bool friend = SolenMatriarchQuest.IsFriend(player, redSolen);
this.System.AddConversation(new ProcessFungiConversation(friend));
if (redSolen)
player.SolenFriendship = SolenFriendship.Red;
else
player.SolenFriendship = SolenFriendship.Black;
}
}
public class ProcessFungiObjective : QuestObjective
{
public ProcessFungiObjective()
{
}
public override object Message
{
get
{
// Give the Solen Matriarch a stack of zoogi fungus to process into powder of translocation.
return 1054098;
}
}
public override void OnComplete()
{
if (SolenMatriarchQuest.GiveRewardTo(this.System.From))
{
this.System.Complete();
}
else
{
this.System.AddConversation(new FullBackpackConversation(true));
}
}
}
public class GetRewardObjective : QuestObjective
{
public GetRewardObjective()
{
}
public override object Message
{
get
{
// Return to the solen matriarch for your reward.
return 1054149;
}
}
public override void OnComplete()
{
this.System.AddConversation(new EndConversation());
}
}
}

View File

@@ -0,0 +1,182 @@
using System;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Matriarch
{
public class SolenMatriarchQuest : QuestSystem
{
private static readonly Type[] m_TypeReferenceTable = new Type[]
{
typeof(Matriarch.DontOfferConversation),
typeof(Matriarch.AcceptConversation),
typeof(Matriarch.DuringKillInfiltratorsConversation),
typeof(Matriarch.GatherWaterConversation),
typeof(Matriarch.DuringWaterGatheringConversation),
typeof(Matriarch.ProcessFungiConversation),
typeof(Matriarch.DuringFungiProcessConversation),
typeof(Matriarch.FullBackpackConversation),
typeof(Matriarch.EndConversation),
typeof(Matriarch.KillInfiltratorsObjective),
typeof(Matriarch.ReturnAfterKillsObjective),
typeof(Matriarch.GatherWaterObjective),
typeof(Matriarch.ReturnAfterWaterObjective),
typeof(Matriarch.ProcessFungiObjective),
typeof(Matriarch.GetRewardObjective)
};
private bool m_RedSolen;
public SolenMatriarchQuest(PlayerMobile from, bool redSolen)
: base(from)
{
this.m_RedSolen = redSolen;
}
// Serialization
public SolenMatriarchQuest()
{
}
public override Type[] TypeReferenceTable
{
get
{
return m_TypeReferenceTable;
}
}
public override object Name
{
get
{
// Solen Matriarch Quest
return 1054147;
}
}
public override object OfferMessage
{
get
{
if (IsFriend(this.From, this.RedSolen))
{
/* <I>The Solen Matriarch smiles happily as you greet her.</I><BR><BR>
*
* Hello again. It is always good to see a friend of our colony.<BR><BR>
*
* Would you like me to process some zoogi fungus into powder of translocation
* for you? I would be happy to do so if you will first undertake a couple
* tasks for me.<BR><BR>
*
* First, I would like for you to eliminate some infiltrators from the other
* solen colony. They are spying on my colony, and I fear for the safety of my
* people. They must be slain.<BR><BR>
*
* After that, I must ask that you gather some water for me. Our water supplies
* are inadequate, so we must try to supplement our reserve using water vats here
* in our lair.<BR><BR>
*
* Will you accept my offer?
*/
return 1054083;
}
else
{
/* <I>The Solen Matriarch smiles happily as she eats the seed you offered.</I><BR><BR>
*
* I think you for that seed. I was quite delicious. So full of flavor.<BR><BR>
*
* Hmm... if you would like, I could make you a friend of my colony. This would stop
* the warriors, workers, and queens of my colony from thinking you are an intruder,
* thus they would not attack you. In addition, as a friend of my colony I will process
* zoogi fungus into powder of translocation for you.<BR><BR>
*
* To become a friend of my colony, I ask that you complete a couple tasks for me. These
* are the same tasks I will ask of you when you wish me to process zoogi fungus,
* by the way.<BR><BR>
*
* First, I would like for you to eliminate some infiltrators from the other solen colony.
* They are spying on my colony, and I fear for the safety of my people. They must
* be slain.<BR><BR>
*
* After that, I must ask that you gather some water for me. Our water supplies are
* inadequate, so we must try to supplement our reserve using water vats here in our
* lair.<BR><BR>
*
* Will you accept my offer?
*/
return 1054082;
}
}
}
public override TimeSpan RestartDelay
{
get
{
return TimeSpan.Zero;
}
}
public override bool IsTutorial
{
get
{
return false;
}
}
public override int Picture
{
get
{
return 0x15C9;
}
}
public bool RedSolen
{
get
{
return this.m_RedSolen;
}
}
public static bool IsFriend(PlayerMobile player, bool redSolen)
{
if (redSolen)
return player.SolenFriendship == SolenFriendship.Red;
else
return player.SolenFriendship == SolenFriendship.Black;
}
public static bool GiveRewardTo(PlayerMobile player)
{
Gold gold = new Gold(Utility.RandomMinMax(250, 350));
if (player.PlaceInBackpack(gold))
{
player.SendLocalizedMessage(1054076); // You have been given some gold.
return true;
}
else
{
gold.Delete();
return false;
}
}
public override void ChildDeserialize(GenericReader reader)
{
int version = reader.ReadEncodedInt();
this.m_RedSolen = reader.ReadBool();
}
public override void ChildSerialize(GenericWriter writer)
{
writer.WriteEncodedInt((int)0); // version
writer.Write((bool)this.m_RedSolen);
}
public override void Accept()
{
base.Accept();
this.AddConversation(new AcceptConversation());
}
}
}