ModernUO/Scripts/Engines/Quests/Dark Tides/Objectives.cs
2018-09-14 13:14:20 -07:00

459 lines
10 KiB
C#

using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Necro
{
public class AnimateMaabusCorpseObjective : QuestObjective
{
public override object Message => 1060102;
private static QuestItemInfo[] m_Info = {
new QuestItemInfo( 1023643, 8787 ) // spellbook
};
public override QuestItemInfo[] Info => m_Info;
public AnimateMaabusCorpseObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new MaabasConversation() );
}
}
public class FindCrystalCaveObjective : QuestObjective
{
public override object Message => 1060104;
public FindCrystalCaveObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new HorusConversation() );
}
}
public class FindMardothAboutVaultObjective : QuestObjective
{
public override object Message => 1060106;
public FindMardothAboutVaultObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new MardothVaultConversation() );
}
}
public class FindMaabusTombObjective : QuestObjective
{
public override object Message => 1060124;
public FindMaabusTombObjective()
{
}
public override void CheckProgress()
{
if ( System.From.Map == Map.Malas && System.From.InRange( new Point3D( 2024, 1240, -90 ), 3 ) )
Complete();
}
public override void OnComplete()
{
System.AddObjective( new FindMaabusCorpseObjective() );
}
}
public class FindMaabusCorpseObjective : QuestObjective
{
public override object Message => 1061142;
public FindMaabusCorpseObjective()
{
}
public override void CheckProgress()
{
if ( System.From.Map == Map.Malas && System.From.InRange( new Point3D( 2024, 1223, -90 ), 3 ) )
Complete();
}
public override void OnComplete()
{
System.AddObjective( new AnimateMaabusCorpseObjective() );
}
}
public class FindCityOfLightObjective : QuestObjective
{
public override object Message => 1060108;
public FindCityOfLightObjective()
{
}
public override void CheckProgress()
{
if ( System.From.Map == Map.Malas && System.From.InRange( new Point3D( 1076, 519, -90 ), 5 ) )
Complete();
}
public override void OnComplete()
{
System.AddObjective( new FindVaultOfSecretsObjective() );
}
}
public class FindVaultOfSecretsObjective : QuestObjective
{
public override object Message => 1060109;
private static QuestItemInfo[] m_Info = {
new QuestItemInfo( 1023676, 3679 ) // glowing rune
};
public override QuestItemInfo[] Info => m_Info;
public FindVaultOfSecretsObjective()
{
}
public override void CheckProgress()
{
if ( System.From.Map == Map.Malas && System.From.InRange( new Point3D( 1072, 455, -90 ), 1 ) )
Complete();
}
public override void OnComplete()
{
System.AddConversation( new VaultOfSecretsConversation() );
}
}
public class FetchAbraxusScrollObjective : QuestObjective
{
public override object Message => 1060196;
public FetchAbraxusScrollObjective()
{
}
public override void CheckProgress()
{
if ( System.From.Map == Map.Malas && System.From.InRange( new Point3D( 1076, 450, -84 ), 5 ) )
{
if ( Spells.Necromancy.SummonFamiliarSpell.Table[System.From] is HordeMinionFamiliar hmf && hmf.InRange( System.From, 5 ) && hmf.TargetLocation == null )
{
System.From.SendLocalizedMessage( 1060113 ); // You instinctively will your familiar to fetch the scroll for you.
hmf.TargetLocation = new Point2D( 1076, 450 );
}
}
}
public override void OnComplete()
{
System.AddObjective( new RetrieveAbraxusScrollObjective() );
}
}
public class RetrieveAbraxusScrollObjective : QuestObjective
{
public override object Message => 1060199;
public RetrieveAbraxusScrollObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new ReadAbraxusScrollConversation() );
}
}
public class ReadAbraxusScrollObjective : QuestObjective
{
public override object Message => 1060125;
public ReadAbraxusScrollObjective()
{
}
public override void OnComplete()
{
System.AddObjective( new ReturnToCrystalCaveObjective() );
}
}
public class ReturnToCrystalCaveObjective : QuestObjective
{
public override object Message => 1060115;
private static QuestItemInfo[] m_Info = {
new QuestItemInfo( 1026153, 6178 ) // teleporter
};
public override QuestItemInfo[] Info => m_Info;
public ReturnToCrystalCaveObjective()
{
}
public override void OnComplete()
{
System.AddObjective( new SpeakCavePasswordObjective() );
}
}
public class SpeakCavePasswordObjective : QuestObjective
{
public override object Message => 1060117;
public SpeakCavePasswordObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new SecondHorusConversation() );
}
}
public class FindCallingScrollObjective : QuestObjective
{
public override object Message => 1060119;
private int m_SkitteringHoppersKilled;
private bool m_HealConversationShown;
private bool m_SkitteringHoppersDisposed;
public FindCallingScrollObjective()
{
}
public override bool IgnoreYoungProtection( Mobile from )
{
return !m_SkitteringHoppersDisposed && from is SkitteringHopper;
}
public override bool GetKillEvent( BaseCreature creature, Container corpse )
{
return !m_SkitteringHoppersDisposed;
}
public override void OnKill( BaseCreature creature, Container corpse )
{
if ( creature is SkitteringHopper )
{
if ( !m_HealConversationShown )
{
m_HealConversationShown = true;
System.AddConversation( new HealConversation() );
}
if ( ++m_SkitteringHoppersKilled >= 5 )
{
m_SkitteringHoppersDisposed = true;
System.AddObjective( new FindHorusAboutRewardObjective() );
}
}
}
public override void OnComplete()
{
System.AddObjective( new FindMardothAboutKronusObjective() );
}
public override void ChildDeserialize( GenericReader reader )
{
int version = reader.ReadEncodedInt();
m_SkitteringHoppersKilled = reader.ReadEncodedInt();
m_HealConversationShown = reader.ReadBool();
m_SkitteringHoppersDisposed = reader.ReadBool();
}
public override void ChildSerialize( GenericWriter writer )
{
writer.WriteEncodedInt( (int) 0 ); // version
writer.WriteEncodedInt( (int) m_SkitteringHoppersKilled );
writer.Write( (bool) m_HealConversationShown );
writer.Write( (bool) m_SkitteringHoppersDisposed );
}
}
public class FindHorusAboutRewardObjective : QuestObjective
{
public override object Message => 1060126;
public FindHorusAboutRewardObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new HorusRewardConversation() );
}
}
public class FindMardothAboutKronusObjective : QuestObjective
{
public override object Message => 1060127;
public FindMardothAboutKronusObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new MardothKronusConversation() );
}
}
public class FindWellOfTearsObjective : QuestObjective
{
public override object Message => 1060128;
public FindWellOfTearsObjective()
{
}
private static readonly Rectangle2D m_WellOfTearsArea = new Rectangle2D( 2080, 1346, 10, 10 );
private bool m_Inside;
public override void CheckProgress()
{
if ( System.From.Map == Map.Malas && m_WellOfTearsArea.Contains( System.From.Location ) )
{
if ( DarkTidesQuest.HasLostCallingScroll( System.From ) )
{
if ( !m_Inside )
System.AddConversation( new LostCallingScrollConversation( false ) );
}
else
{
Complete();
}
m_Inside = true;
}
else
{
m_Inside = false;
}
}
public override void OnComplete()
{
System.AddObjective( new UseCallingScrollObjective() );
}
}
public class UseCallingScrollObjective : QuestObjective
{
public override object Message => 1060130;
public UseCallingScrollObjective()
{
}
}
public class FindMardothEndObjective : QuestObjective
{
private bool m_Victory;
public override object Message
{
get
{
if ( m_Victory )
{
/* Victory! You have done as Mardoth has asked of you.
* Take as much of your foe's loot as you can carry
* and return to Mardoth for your reward.
*/
return 1060131;
}
else
{
/* Although you were slain by the cowardly paladin,
* you managed to complete the rite of calling as
* instructed. Return to Mardoth.
*/
return 1060132;
}
}
}
public FindMardothEndObjective( bool victory )
{
m_Victory = victory;
}
// Serialization
public FindMardothEndObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new MardothEndConversation() );
}
public override void ChildDeserialize( GenericReader reader )
{
int version = reader.ReadEncodedInt();
m_Victory = reader.ReadBool();
}
public override void ChildSerialize( GenericWriter writer )
{
writer.WriteEncodedInt( (int) 0 ); // version
writer.Write( (bool) m_Victory );
}
}
public class FindBankObjective : QuestObjective
{
public override object Message => 1060134;
public FindBankObjective()
{
}
public override void CheckProgress()
{
if ( System.From.Map == Map.Malas && System.From.InRange( new Point3D( 2048, 1345, -84 ), 5 ) )
Complete();
}
public override void OnComplete()
{
System.AddObjective( new CashBankCheckObjective() );
}
}
public class CashBankCheckObjective : QuestObjective
{
public override object Message => 1060644;
public CashBankCheckObjective()
{
}
public override void OnComplete()
{
System.AddConversation( new BankerConversation() );
}
}
}