ModernUO/Scripts/Engines/Quests/Emino's Undertaking/EminosUndertakingQuest.cs
2018-09-14 13:14:20 -07:00

134 lines
3.5 KiB
C#

using System;
using Server.Mobiles;
namespace Server.Engines.Quests.Ninja
{
public class EminosUndertakingQuest : QuestSystem
{
private static Type[] m_TypeReferenceTable = {
typeof( AcceptConversation ),
typeof( FindZoelConversation ),
typeof( RadarConversation ),
typeof( EnterCaveConversation ),
typeof( SneakPastGuardiansConversation ),
typeof( NeedToHideConversation ),
typeof( UseTeleporterConversation ),
typeof( GiveZoelNoteConversation ),
typeof( LostNoteConversation ),
typeof( GainInnInformationConversation ),
typeof( ReturnFromInnConversation ),
typeof( SearchForSwordConversation ),
typeof( HallwayWalkConversation ),
typeof( ReturnSwordConversation ),
typeof( SlayHenchmenConversation ),
typeof( ContinueSlayHenchmenConversation ),
typeof( GiveEminoSwordConversation ),
typeof( LostSwordConversation ),
typeof( EarnGiftsConversation ),
typeof( EarnLessGiftsConversation ),
typeof( FindEminoBeginObjective ),
typeof( FindZoelObjective ),
typeof( EnterCaveObjective ),
typeof( SneakPastGuardiansObjective ),
typeof( UseTeleporterObjective ),
typeof( GiveZoelNoteObjective ),
typeof( GainInnInformationObjective ),
typeof( ReturnFromInnObjective ),
typeof( SearchForSwordObjective ),
typeof( HallwayWalkObjective ),
typeof( ReturnSwordObjective ),
typeof( SlayHenchmenObjective ),
typeof( GiveEminoSwordObjective )
};
public override Type[] TypeReferenceTable => m_TypeReferenceTable;
public override object Name => 1063173;
public override object OfferMessage => 1063174;
public override TimeSpan RestartDelay => TimeSpan.MaxValue;
public override bool IsTutorial => true;
public override int Picture => 0x15D5;
public EminosUndertakingQuest( PlayerMobile from ) : base( from )
{
}
// Serialization
public EminosUndertakingQuest()
{
}
public override void Accept()
{
base.Accept();
AddConversation( new AcceptConversation() );
}
private bool m_SentRadarConversion;
public override void Slice()
{
if ( !m_SentRadarConversion && ( From.Map != Map.Malas || From.X < 407 || From.X > 431 || From.Y < 801 || From.Y > 830 ) )
{
m_SentRadarConversion = true;
AddConversation( new RadarConversation() );
}
base.Slice();
}
public override void ChildDeserialize( GenericReader reader )
{
int version = reader.ReadEncodedInt();
m_SentRadarConversion = reader.ReadBool();
}
public override void ChildSerialize( GenericWriter writer )
{
writer.WriteEncodedInt( (int) 0 ); // version
writer.Write( (bool) m_SentRadarConversion );
}
public static bool HasLostNoteForZoel( Mobile from )
{
if ( !(from is PlayerMobile pm) )
return false;
QuestSystem qs = pm.Quest;
if ( qs is EminosUndertakingQuest )
{
if ( qs.IsObjectiveInProgress( typeof( GiveZoelNoteObjective ) ) )
{
return ( from.Backpack?.FindItemByType( typeof( NoteForZoel ) ) == null );
}
}
return false;
}
public static bool HasLostEminosKatana( Mobile from )
{
if ( !(from is PlayerMobile pm) )
return false;
QuestSystem qs = pm.Quest;
if ( qs is EminosUndertakingQuest )
{
if ( qs.IsObjectiveInProgress( typeof( GiveEminoSwordObjective ) ) )
{
return ( from.Backpack?.FindItemByType( typeof( EminosKatana ) ) == null );
}
}
return false;
}
}
}