using Server.Mobiles; using Server.Items; namespace Server.Engines.Quests.Matriarch { public class KillInfiltratorsObjective : QuestObjective { public override object Message => ((SolenMatriarchQuest)System).RedSolen ? 1054086 : 1054085; public override int MaxProgress => 7; public KillInfiltratorsObjective() { } public override void RenderProgress( BaseQuestGump gump ) { if ( !Completed ) { // Black/Red Solen Infiltrators killed: gump.AddHtmlLocalized( 70, 260, 270, 100, ((SolenMatriarchQuest)System).RedSolen ? 1054088 : 1054087, BaseQuestGump.Blue, false, false ); gump.AddLabel( 70, 280, 0x64, CurProgress.ToString() ); gump.AddLabel( 100, 280, 0x64, "/" ); gump.AddLabel( 130, 280, 0x64, MaxProgress.ToString() ); } else { base.RenderProgress( gump ); } } public override bool IgnoreYoungProtection( Mobile from ) { if ( Completed ) return false; bool redSolen = ((SolenMatriarchQuest)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)System).RedSolen; if ( redSolen ) { if ( creature is BlackSolenInfiltratorWarrior || creature is BlackSolenInfiltratorQueen ) CurProgress++; } else { if ( creature is RedSolenInfiltratorWarrior || creature is RedSolenInfiltratorQueen ) CurProgress++; } } public override void OnComplete() { System.AddObjective( new ReturnAfterKillsObjective() ); } } public class ReturnAfterKillsObjective : QuestObjective { public override object Message => 1054090; public ReturnAfterKillsObjective() { } public override void OnComplete() { System.AddConversation( new GatherWaterConversation() ); } } public class GatherWaterObjective : QuestObjective { public override object Message => 1054092; public override int MaxProgress => 40; public GatherWaterObjective() { } public override void RenderProgress( BaseQuestGump gump ) { if ( !Completed ) { gump.AddHtmlLocalized( 70, 260, 270, 100, 1054093, BaseQuestGump.Blue, false, false ); // Gallons of Water gathered: gump.AddLabel( 70, 280, 0x64, (CurProgress / 5).ToString() ); gump.AddLabel( 100, 280, 0x64, "/" ); gump.AddLabel( 130, 280, 0x64, (MaxProgress / 5).ToString() ); } else { base.RenderProgress( gump ); } } public override void OnComplete() { System.AddObjective( new ReturnAfterWaterObjective() ); } } public class ReturnAfterWaterObjective : QuestObjective { public override object Message => 1054095; public ReturnAfterWaterObjective() { } public override void OnComplete() { PlayerMobile player = System.From; bool redSolen = ((SolenMatriarchQuest)System).RedSolen; bool friend = SolenMatriarchQuest.IsFriend( player, redSolen ); System.AddConversation( new ProcessFungiConversation( friend ) ); if ( redSolen ) player.SolenFriendship = SolenFriendship.Red; else player.SolenFriendship = SolenFriendship.Black; } } public class ProcessFungiObjective : QuestObjective { public override object Message => 1054098; public ProcessFungiObjective() { } public override void OnComplete() { if ( SolenMatriarchQuest.GiveRewardTo( System.From ) ) { System.Complete(); } else { System.AddConversation( new FullBackpackConversation( true ) ); } } } public class GetRewardObjective : QuestObjective { public override object Message => 1054149; public GetRewardObjective() { } public override void OnComplete() { System.AddConversation( new EndConversation() ); } } }