Bedlam access.
This commit is contained in:
parent
cdc2ea44da
commit
dadddce228
4 changed files with 107 additions and 3 deletions
|
|
@ -2,6 +2,7 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using Server;
|
||||
using Server.ContextMenus;
|
||||
using Server.Engines.MLQuests.Items;
|
||||
using Server.Engines.MLQuests.Objectives;
|
||||
using Server.Engines.MLQuests.Rewards;
|
||||
using Server.Items;
|
||||
|
|
@ -92,8 +93,6 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
public class NotQuiteThatEasy : MLQuest
|
||||
{
|
||||
// TODO: This quest allows permanent access to Bedlam (only need to do this once)
|
||||
|
||||
public override Type NextQuest { get { return typeof( ConvinceMe ); } }
|
||||
public override bool IsChainTriggered { get { return true; } }
|
||||
|
||||
|
|
@ -111,6 +110,18 @@ namespace Server.Engines.MLQuests.Definitions
|
|||
|
||||
Rewards.Add( new DummyReward( 1074634 ) ); // Tuition Reimbursement
|
||||
}
|
||||
|
||||
public override void Generate()
|
||||
{
|
||||
base.Generate();
|
||||
|
||||
PutDeco( new BedlamTeleporter(), new Point3D( 2067, 1371, -75 ), Map.Malas );
|
||||
}
|
||||
|
||||
public override void OnAccepted( MLQuestInstance instance )
|
||||
{
|
||||
instance.PlayerContext.BedlamAccess = true; // Permanent access
|
||||
}
|
||||
}
|
||||
|
||||
public class ConvinceMe : MLQuest
|
||||
|
|
|
|||
62
Scripts/Engines/MLQuests/Items/BedlamTeleporter.cs
Normal file
62
Scripts/Engines/MLQuests/Items/BedlamTeleporter.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Engines.MLQuests;
|
||||
using Server.Mobiles;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Engines.MLQuests.Items
|
||||
{
|
||||
public class BedlamTeleporter : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1074161; } } // Access to Bedlam by invitation only
|
||||
|
||||
private static readonly Point3D PointDest = new Point3D( 120, 1682, 0 );
|
||||
private static readonly Map MapDest = Map.Malas;
|
||||
|
||||
public BedlamTeleporter()
|
||||
: base( 0x124D )
|
||||
{
|
||||
Movable = false;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( !from.InRange( GetWorldLocation(), 2 ) )
|
||||
{
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
return;
|
||||
}
|
||||
|
||||
MLQuestContext context;
|
||||
|
||||
if ( from is PlayerMobile && ( context = MLQuestSystem.GetContext( (PlayerMobile)from ) ) != null && context.BedlamAccess )
|
||||
{
|
||||
BaseCreature.TeleportPets( from, PointDest, MapDest );
|
||||
from.MoveToWorld( PointDest, MapDest );
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage( 1074276 ); // You press and push on the iron maiden, but nothing happens.
|
||||
}
|
||||
}
|
||||
|
||||
public BedlamTeleporter( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int)0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -210,6 +210,23 @@ namespace Server.Engines.MLQuests
|
|||
s.MoveToWorld( loc, map );
|
||||
}
|
||||
|
||||
public void PutDeco( Item deco, Point3D loc, Map map )
|
||||
{
|
||||
// Auto cleanup on regeneration
|
||||
List<Item> toDelete = new List<Item>();
|
||||
|
||||
foreach ( Item item in map.GetItemsInRange( loc, 0 ) )
|
||||
{
|
||||
if ( item.ItemID == deco.ItemID && item.Z == loc.Z )
|
||||
toDelete.Add( item );
|
||||
}
|
||||
|
||||
foreach ( Item item in toDelete )
|
||||
item.Delete();
|
||||
|
||||
deco.MoveToWorld( loc, map );
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public MLQuestInstance CreateInstance( BaseCreature quester, PlayerMobile pm )
|
||||
|
|
@ -292,10 +309,16 @@ namespace Server.Engines.MLQuests
|
|||
pm.SendLocalizedMessage( 1049019 ); // You have accepted the Quest.
|
||||
pm.SendSound( 0x2E7 ); // private sound
|
||||
|
||||
OnAccepted( instance );
|
||||
|
||||
foreach ( BaseObjectiveInstance obj in instance.Objectives )
|
||||
obj.OnQuestAccepted();
|
||||
}
|
||||
|
||||
public virtual void OnAccepted( MLQuestInstance instance )
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void OnRefuse( BaseCreature quester, PlayerMobile pm )
|
||||
{
|
||||
pm.SendGump( new QuestConversationGump( this, pm, RefusalMessage ) );
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@ namespace Server.Engines.MLQuests
|
|||
None = 0x00,
|
||||
Spellweaving = 0x01,
|
||||
SummonFey = 0x02,
|
||||
SummonFiend = 0x04
|
||||
SummonFiend = 0x04,
|
||||
BedlamAccess = 0x08
|
||||
}
|
||||
|
||||
[PropertyObject]
|
||||
|
|
@ -95,6 +96,13 @@ namespace Server.Engines.MLQuests
|
|||
set { SetFlag( MLQuestFlag.SummonFiend, value ); }
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public bool BedlamAccess
|
||||
{
|
||||
get { return GetFlag( MLQuestFlag.BedlamAccess ); }
|
||||
set { SetFlag( MLQuestFlag.BedlamAccess, value ); }
|
||||
}
|
||||
|
||||
public MLQuestContext( PlayerMobile owner )
|
||||
{
|
||||
m_Owner = owner;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue