Fixes code according to modern code style. Fixes a few expression bugs.
This commit is contained in:
parent
89eea25e5f
commit
970fd563b2
3324 changed files with 441118 additions and 433755 deletions
|
|
@ -2,64 +2,64 @@ using Server.Mobiles;
|
|||
|
||||
namespace Server.Engines.Quests
|
||||
{
|
||||
public abstract class DynamicTeleporter : Item
|
||||
{
|
||||
public override int LabelNumber => 1049382; // a magical teleporter
|
||||
public abstract class DynamicTeleporter : Item
|
||||
{
|
||||
public DynamicTeleporter() : this(0x1822, 0x482)
|
||||
{
|
||||
}
|
||||
|
||||
public DynamicTeleporter() : this( 0x1822, 0x482 )
|
||||
{
|
||||
}
|
||||
public DynamicTeleporter(int itemID, int hue) : base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
Hue = hue;
|
||||
}
|
||||
|
||||
public DynamicTeleporter( int itemID, int hue ) : base( itemID )
|
||||
{
|
||||
Movable = false;
|
||||
Hue = hue;
|
||||
}
|
||||
public DynamicTeleporter(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public abstract bool GetDestination( PlayerMobile player, ref Point3D loc, ref Map map );
|
||||
public override int LabelNumber => 1049382; // a magical teleporter
|
||||
|
||||
public virtual int NotWorkingMessage // Nothing Happens.
|
||||
=> 500309;
|
||||
public virtual int NotWorkingMessage // Nothing Happens.
|
||||
=> 500309;
|
||||
|
||||
public override bool OnMoveOver( Mobile m )
|
||||
{
|
||||
if ( m is PlayerMobile pm )
|
||||
{
|
||||
Point3D loc = Point3D.Zero;
|
||||
Map map = null;
|
||||
public abstract bool GetDestination(PlayerMobile player, ref Point3D loc, ref Map map);
|
||||
|
||||
if ( GetDestination( pm, ref loc, ref map ) )
|
||||
{
|
||||
BaseCreature.TeleportPets( pm, loc, map );
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
if (m is PlayerMobile pm)
|
||||
{
|
||||
Point3D loc = Point3D.Zero;
|
||||
Map map = null;
|
||||
|
||||
pm.PlaySound( 0x1FE );
|
||||
pm.MoveToWorld( loc, map );
|
||||
if (GetDestination(pm, ref loc, ref map))
|
||||
{
|
||||
BaseCreature.TeleportPets(pm, loc, map);
|
||||
|
||||
return false;
|
||||
}
|
||||
pm.PlaySound(0x1FE);
|
||||
pm.MoveToWorld(loc, map);
|
||||
|
||||
pm.SendLocalizedMessage( NotWorkingMessage );
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return base.OnMoveOver( m );
|
||||
}
|
||||
pm.SendLocalizedMessage(NotWorkingMessage);
|
||||
}
|
||||
|
||||
public DynamicTeleporter( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
return base.OnMoveOver(m);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,186 +2,188 @@ using Server.Network;
|
|||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class EnchantedSextant : Item
|
||||
{
|
||||
//TODO: Trammel/Haven
|
||||
private static readonly Point2D[] m_TrammelBanks = {
|
||||
new Point2D( 652, 820 ),
|
||||
new Point2D( 1813, 2825 ),
|
||||
new Point2D( 3734, 2149 ),
|
||||
new Point2D( 2503, 552 ),
|
||||
new Point2D( 3764, 1317 ),
|
||||
new Point2D( 587, 2146 ),
|
||||
new Point2D( 1655, 1606 ),
|
||||
new Point2D( 1425, 1690 ),
|
||||
new Point2D( 4471, 1156 ),
|
||||
new Point2D( 1317, 3773 ),
|
||||
new Point2D( 2881, 684 ),
|
||||
new Point2D( 2731, 2192 ),
|
||||
new Point2D( 3620, 2617 ),
|
||||
new Point2D( 2880, 3472 ),
|
||||
new Point2D( 1897, 2684 ),
|
||||
new Point2D( 5346, 74 ),
|
||||
new Point2D( 5275, 3977 ),
|
||||
new Point2D( 5669, 3131 )
|
||||
};
|
||||
public class EnchantedSextant : Item
|
||||
{
|
||||
private const double m_LongDistance = 300.0;
|
||||
|
||||
private static readonly Point2D[] m_FeluccaBanks = {
|
||||
new Point2D( 652, 820 ),
|
||||
new Point2D( 1813, 2825 ),
|
||||
new Point2D( 3734, 2149 ),
|
||||
new Point2D( 2503, 552 ),
|
||||
new Point2D( 3764, 1317 ),
|
||||
new Point2D( 3695, 2511 ),
|
||||
new Point2D( 587, 2146 ),
|
||||
new Point2D( 1655, 1606 ),
|
||||
new Point2D( 1425, 1690 ),
|
||||
new Point2D( 4471, 1156 ),
|
||||
new Point2D( 1317, 3773 ),
|
||||
new Point2D( 2881, 684 ),
|
||||
new Point2D( 2731, 2192 ),
|
||||
new Point2D( 2880, 3472 ),
|
||||
new Point2D( 1897, 2684 ),
|
||||
new Point2D( 5346, 74 ),
|
||||
new Point2D( 5275, 3977 ),
|
||||
new Point2D( 5669, 3131 )
|
||||
};
|
||||
private const double m_ShortDistance = 5.0;
|
||||
|
||||
private static readonly Point2D[] m_IlshenarBanks = {
|
||||
new Point2D( 854, 680 ),
|
||||
new Point2D( 855, 603 ),
|
||||
new Point2D( 1226, 554 ),
|
||||
new Point2D( 1610, 556 )
|
||||
};
|
||||
//TODO: Trammel/Haven
|
||||
private static readonly Point2D[] m_TrammelBanks =
|
||||
{
|
||||
new Point2D(652, 820),
|
||||
new Point2D(1813, 2825),
|
||||
new Point2D(3734, 2149),
|
||||
new Point2D(2503, 552),
|
||||
new Point2D(3764, 1317),
|
||||
new Point2D(587, 2146),
|
||||
new Point2D(1655, 1606),
|
||||
new Point2D(1425, 1690),
|
||||
new Point2D(4471, 1156),
|
||||
new Point2D(1317, 3773),
|
||||
new Point2D(2881, 684),
|
||||
new Point2D(2731, 2192),
|
||||
new Point2D(3620, 2617),
|
||||
new Point2D(2880, 3472),
|
||||
new Point2D(1897, 2684),
|
||||
new Point2D(5346, 74),
|
||||
new Point2D(5275, 3977),
|
||||
new Point2D(5669, 3131)
|
||||
};
|
||||
|
||||
private static readonly Point2D[] m_MalasBanks = {
|
||||
new Point2D( 996, 519 ),
|
||||
new Point2D( 2048, 1345 )
|
||||
};
|
||||
private static readonly Point2D[] m_FeluccaBanks =
|
||||
{
|
||||
new Point2D(652, 820),
|
||||
new Point2D(1813, 2825),
|
||||
new Point2D(3734, 2149),
|
||||
new Point2D(2503, 552),
|
||||
new Point2D(3764, 1317),
|
||||
new Point2D(3695, 2511),
|
||||
new Point2D(587, 2146),
|
||||
new Point2D(1655, 1606),
|
||||
new Point2D(1425, 1690),
|
||||
new Point2D(4471, 1156),
|
||||
new Point2D(1317, 3773),
|
||||
new Point2D(2881, 684),
|
||||
new Point2D(2731, 2192),
|
||||
new Point2D(2880, 3472),
|
||||
new Point2D(1897, 2684),
|
||||
new Point2D(5346, 74),
|
||||
new Point2D(5275, 3977),
|
||||
new Point2D(5669, 3131)
|
||||
};
|
||||
|
||||
private const double m_LongDistance = 300.0;
|
||||
private const double m_ShortDistance = 5.0;
|
||||
private static readonly Point2D[] m_IlshenarBanks =
|
||||
{
|
||||
new Point2D(854, 680),
|
||||
new Point2D(855, 603),
|
||||
new Point2D(1226, 554),
|
||||
new Point2D(1610, 556)
|
||||
};
|
||||
|
||||
public override int LabelNumber => 1046226; // an enchanted sextant
|
||||
private static readonly Point2D[] m_MalasBanks =
|
||||
{
|
||||
new Point2D(996, 519),
|
||||
new Point2D(2048, 1345)
|
||||
};
|
||||
|
||||
[Constructible]
|
||||
public EnchantedSextant() : base( 0x1058 )
|
||||
{
|
||||
Weight = 2.0;
|
||||
}
|
||||
[Constructible]
|
||||
public EnchantedSextant() : base(0x1058)
|
||||
{
|
||||
Weight = 2.0;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( !from.InRange( GetWorldLocation(), 2 ) )
|
||||
{
|
||||
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
|
||||
return;
|
||||
}
|
||||
public EnchantedSextant(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
Point2D[] banks;
|
||||
PMList moongates;
|
||||
if ( from.Map == Map.Trammel )
|
||||
{
|
||||
banks = m_TrammelBanks;
|
||||
moongates = PMList.Trammel;
|
||||
}
|
||||
else if ( from.Map == Map.Felucca )
|
||||
{
|
||||
banks = m_FeluccaBanks;
|
||||
moongates = PMList.Felucca;
|
||||
}
|
||||
else if ( from.Map == Map.Ilshenar )
|
||||
{
|
||||
public override int LabelNumber => 1046226; // an enchanted sextant
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
from.LocalOverheadMessage(MessageType.Regular, 0x3B2, 1019045); // I can't reach that.
|
||||
return;
|
||||
}
|
||||
|
||||
Point2D[] banks;
|
||||
PMList moongates;
|
||||
if (from.Map == Map.Trammel)
|
||||
{
|
||||
banks = m_TrammelBanks;
|
||||
moongates = PMList.Trammel;
|
||||
}
|
||||
else if (from.Map == Map.Felucca)
|
||||
{
|
||||
banks = m_FeluccaBanks;
|
||||
moongates = PMList.Felucca;
|
||||
}
|
||||
else if (from.Map == Map.Ilshenar)
|
||||
{
|
||||
#if false
|
||||
banks = m_IlshenarBanks;
|
||||
moongates = PMList.Ilshenar;
|
||||
#else
|
||||
from.Send( new MessageLocalized( Serial, ItemID, MessageType.Label, 0x482, 3, 1061684, "", "" ) ); // The magic of the sextant fails...
|
||||
return;
|
||||
from.Send(new MessageLocalized(Serial, ItemID, MessageType.Label, 0x482, 3, 1061684, "",
|
||||
"")); // The magic of the sextant fails...
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
else if ( from.Map == Map.Malas )
|
||||
{
|
||||
banks = m_MalasBanks;
|
||||
moongates = PMList.Malas;
|
||||
}
|
||||
else
|
||||
{
|
||||
banks = null;
|
||||
moongates = null;
|
||||
}
|
||||
}
|
||||
else if (from.Map == Map.Malas)
|
||||
{
|
||||
banks = m_MalasBanks;
|
||||
moongates = PMList.Malas;
|
||||
}
|
||||
else
|
||||
{
|
||||
banks = null;
|
||||
moongates = null;
|
||||
}
|
||||
|
||||
Point3D closestMoongate = Point3D.Zero;
|
||||
double moongateDistance = double.MaxValue;
|
||||
if ( moongates != null )
|
||||
{
|
||||
foreach ( PMEntry entry in moongates.Entries )
|
||||
{
|
||||
double dist = from.GetDistanceToSqrt( entry.Location );
|
||||
if ( moongateDistance > dist )
|
||||
{
|
||||
closestMoongate = entry.Location;
|
||||
moongateDistance = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
Point3D closestMoongate = Point3D.Zero;
|
||||
double moongateDistance = double.MaxValue;
|
||||
if (moongates != null)
|
||||
foreach (PMEntry entry in moongates.Entries)
|
||||
{
|
||||
double dist = from.GetDistanceToSqrt(entry.Location);
|
||||
if (moongateDistance > dist)
|
||||
{
|
||||
closestMoongate = entry.Location;
|
||||
moongateDistance = dist;
|
||||
}
|
||||
}
|
||||
|
||||
Point2D closestBank = Point2D.Zero;
|
||||
double bankDistance = double.MaxValue;
|
||||
if ( banks != null )
|
||||
{
|
||||
foreach ( Point2D p in banks )
|
||||
{
|
||||
double dist = from.GetDistanceToSqrt( p );
|
||||
if ( bankDistance > dist )
|
||||
{
|
||||
closestBank = p;
|
||||
bankDistance = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
Point2D closestBank = Point2D.Zero;
|
||||
double bankDistance = double.MaxValue;
|
||||
if (banks != null)
|
||||
foreach (Point2D p in banks)
|
||||
{
|
||||
double dist = from.GetDistanceToSqrt(p);
|
||||
if (bankDistance > dist)
|
||||
{
|
||||
closestBank = p;
|
||||
bankDistance = dist;
|
||||
}
|
||||
}
|
||||
|
||||
int moonMsg;
|
||||
if ( moongateDistance == double.MaxValue )
|
||||
moonMsg = 1048021; // The sextant fails to find a Moongate nearby.
|
||||
else if ( moongateDistance > m_LongDistance )
|
||||
moonMsg = 1046449 + (int)from.GetDirectionTo( closestMoongate ); // A moongate is * from here
|
||||
else if ( moongateDistance > m_ShortDistance )
|
||||
moonMsg = 1048010 + (int)from.GetDirectionTo( closestMoongate ); // There is a Moongate * of here.
|
||||
else
|
||||
moonMsg = 1048018; // You are next to a Moongate at the moment.
|
||||
int moonMsg;
|
||||
if (moongateDistance == double.MaxValue)
|
||||
moonMsg = 1048021; // The sextant fails to find a Moongate nearby.
|
||||
else if (moongateDistance > m_LongDistance)
|
||||
moonMsg = 1046449 + (int)from.GetDirectionTo(closestMoongate); // A moongate is * from here
|
||||
else if (moongateDistance > m_ShortDistance)
|
||||
moonMsg = 1048010 + (int)from.GetDirectionTo(closestMoongate); // There is a Moongate * of here.
|
||||
else
|
||||
moonMsg = 1048018; // You are next to a Moongate at the moment.
|
||||
|
||||
from.Send( new MessageLocalized( Serial, ItemID, MessageType.Label, 0x482, 3, moonMsg, "", "" ) );
|
||||
from.Send(new MessageLocalized(Serial, ItemID, MessageType.Label, 0x482, 3, moonMsg, "", ""));
|
||||
|
||||
int bankMsg;
|
||||
if ( bankDistance == double.MaxValue )
|
||||
bankMsg = 1048020; // The sextant fails to find a Bank nearby.
|
||||
else if ( bankDistance > m_LongDistance )
|
||||
bankMsg = 1046462 + (int)from.GetDirectionTo( closestBank ); // A town is * from here
|
||||
else if ( bankDistance > m_ShortDistance )
|
||||
bankMsg = 1048002 + (int)from.GetDirectionTo( closestBank ); // There is a city Bank * of here.
|
||||
else
|
||||
bankMsg = 1048019; // You are next to a Bank at the moment.
|
||||
int bankMsg;
|
||||
if (bankDistance == double.MaxValue)
|
||||
bankMsg = 1048020; // The sextant fails to find a Bank nearby.
|
||||
else if (bankDistance > m_LongDistance)
|
||||
bankMsg = 1046462 + (int)from.GetDirectionTo(closestBank); // A town is * from here
|
||||
else if (bankDistance > m_ShortDistance)
|
||||
bankMsg = 1048002 + (int)from.GetDirectionTo(closestBank); // There is a city Bank * of here.
|
||||
else
|
||||
bankMsg = 1048019; // You are next to a Bank at the moment.
|
||||
|
||||
from.Send( new MessageLocalized( Serial, ItemID, MessageType.Label, 0x5AA, 3, bankMsg, "", "" ) );
|
||||
}
|
||||
from.Send(new MessageLocalized(Serial, ItemID, MessageType.Label, 0x5AA, 3, bankMsg, "", ""));
|
||||
}
|
||||
|
||||
public EnchantedSextant( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,192 +1,198 @@
|
|||
using System;
|
||||
using Server.Items;
|
||||
using Server.Regions;
|
||||
|
||||
namespace Server.Engines.Quests
|
||||
{
|
||||
public class HornOfRetreat : Item
|
||||
{
|
||||
private int m_Charges;
|
||||
public class HornOfRetreat : Item
|
||||
{
|
||||
private int m_Charges;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public Point3D DestLoc { get; set; }
|
||||
private Timer m_PlayTimer;
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public Map DestMap { get; set; }
|
||||
[Constructible]
|
||||
public HornOfRetreat() : base(0xFC4)
|
||||
{
|
||||
Hue = 0x482;
|
||||
Weight = 1.0;
|
||||
Charges = 10;
|
||||
}
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Charges
|
||||
{
|
||||
get => m_Charges;
|
||||
set{ m_Charges = value; InvalidateProperties(); }
|
||||
}
|
||||
public HornOfRetreat(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int LabelNumber => 1049117; // Horn of Retreat
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Point3D DestLoc{ get; set; }
|
||||
|
||||
[Constructible]
|
||||
public HornOfRetreat() : base( 0xFC4 )
|
||||
{
|
||||
Hue = 0x482;
|
||||
Weight = 1.0;
|
||||
Charges = 10;
|
||||
}
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Map DestMap{ get; set; }
|
||||
|
||||
public virtual bool ValidateUse( Mobile from )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Charges
|
||||
{
|
||||
get => m_Charges;
|
||||
set
|
||||
{
|
||||
m_Charges = value;
|
||||
InvalidateProperties();
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetProperties( ObjectPropertyList list )
|
||||
{
|
||||
base.GetProperties( list );
|
||||
public override int LabelNumber => 1049117; // Horn of Retreat
|
||||
|
||||
list.Add( 1060741, m_Charges.ToString() ); // charges: ~1_val~
|
||||
}
|
||||
public virtual bool ValidateUse(Mobile from)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
private Timer m_PlayTimer;
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
public override void OnDoubleClick( Mobile from )
|
||||
{
|
||||
if ( IsChildOf( from.Backpack ) )
|
||||
{
|
||||
if ( !ValidateUse( from ) )
|
||||
{
|
||||
SendLocalizedMessageTo( from, 500309 ); // Nothing Happens.
|
||||
}
|
||||
else if ( Core.ML && from.Map != Map.Trammel && from.Map != Map.Malas )
|
||||
{
|
||||
from.SendLocalizedMessage( 1076154 ); // You can only use this in Trammel and Malas.
|
||||
}
|
||||
else if ( m_PlayTimer != null )
|
||||
{
|
||||
SendLocalizedMessageTo( from, 1042144 ); // This is currently in use.
|
||||
}
|
||||
else if ( Charges > 0 )
|
||||
{
|
||||
from.Animate( 34, 7, 1, true, false, 0 );
|
||||
from.PlaySound( 0xFF );
|
||||
from.SendLocalizedMessage( 1049115 ); // You play the horn and a sense of peace overcomes you...
|
||||
list.Add(1060741, m_Charges.ToString()); // charges: ~1_val~
|
||||
}
|
||||
|
||||
--Charges;
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if (IsChildOf(from.Backpack))
|
||||
{
|
||||
if (!ValidateUse(from))
|
||||
{
|
||||
SendLocalizedMessageTo(from, 500309); // Nothing Happens.
|
||||
}
|
||||
else if (Core.ML && from.Map != Map.Trammel && from.Map != Map.Malas)
|
||||
{
|
||||
from.SendLocalizedMessage(1076154); // You can only use this in Trammel and Malas.
|
||||
}
|
||||
else if (m_PlayTimer != null)
|
||||
{
|
||||
SendLocalizedMessageTo(from, 1042144); // This is currently in use.
|
||||
}
|
||||
else if (Charges > 0)
|
||||
{
|
||||
from.Animate(34, 7, 1, true, false, 0);
|
||||
from.PlaySound(0xFF);
|
||||
from.SendLocalizedMessage(1049115); // You play the horn and a sense of peace overcomes you...
|
||||
|
||||
m_PlayTimer = Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerStateCallback( PlayTimer_Callback ), from );
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLocalizedMessageTo( from, 1042544 ); // This item is out of charges.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLocalizedMessageTo( from, 1042001 ); // That must be in your pack for you to use it.
|
||||
}
|
||||
}
|
||||
--Charges;
|
||||
|
||||
public virtual void PlayTimer_Callback( object state )
|
||||
{
|
||||
Mobile from = (Mobile)state;
|
||||
m_PlayTimer = Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerStateCallback(PlayTimer_Callback),
|
||||
from);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLocalizedMessageTo(from, 1042544); // This item is out of charges.
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SendLocalizedMessageTo(from, 1042001); // That must be in your pack for you to use it.
|
||||
}
|
||||
}
|
||||
|
||||
m_PlayTimer = null;
|
||||
public virtual void PlayTimer_Callback(object state)
|
||||
{
|
||||
Mobile from = (Mobile)state;
|
||||
|
||||
HornOfRetreatMoongate gate = new HornOfRetreatMoongate( DestLoc, DestMap, from, Hue );
|
||||
m_PlayTimer = null;
|
||||
|
||||
gate.MoveToWorld( from.Location, from.Map );
|
||||
HornOfRetreatMoongate gate = new HornOfRetreatMoongate(DestLoc, DestMap, from, Hue);
|
||||
|
||||
from.PlaySound( 0x20E );
|
||||
gate.MoveToWorld(from.Location, from.Map);
|
||||
|
||||
gate.SendLocalizedMessageTo( from, 1049102, from.Name ); // Quickly ~1_NAME~! Onward through the gate!
|
||||
}
|
||||
from.PlaySound(0x20E);
|
||||
|
||||
public HornOfRetreat( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
gate.SendLocalizedMessageTo(from, 1049102, from.Name); // Quickly ~1_NAME~! Onward through the gate!
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
writer.Write(0); // version
|
||||
|
||||
writer.Write( DestLoc );
|
||||
writer.Write( DestMap );
|
||||
writer.Write( m_Charges );
|
||||
}
|
||||
writer.Write(DestLoc);
|
||||
writer.Write(DestMap);
|
||||
writer.Write(m_Charges);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch ( version )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
DestLoc = reader.ReadPoint3D();
|
||||
DestMap = reader.ReadMap();
|
||||
m_Charges = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (version)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
DestLoc = reader.ReadPoint3D();
|
||||
DestMap = reader.ReadMap();
|
||||
m_Charges = reader.ReadInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class HornOfRetreatMoongate : Moongate
|
||||
{
|
||||
public override int LabelNumber => 1049114; // Sanctuary Gate
|
||||
public class HornOfRetreatMoongate : Moongate
|
||||
{
|
||||
private Mobile m_Caster;
|
||||
|
||||
private Mobile m_Caster;
|
||||
public HornOfRetreatMoongate(Point3D destLoc, Map destMap, Mobile caster, int hue)
|
||||
{
|
||||
m_Caster = caster;
|
||||
|
||||
public HornOfRetreatMoongate( Point3D destLoc, Map destMap, Mobile caster, int hue )
|
||||
{
|
||||
m_Caster = caster;
|
||||
Target = destLoc;
|
||||
TargetMap = destMap;
|
||||
|
||||
Target = destLoc;
|
||||
TargetMap = destMap;
|
||||
Hue = hue;
|
||||
Light = LightType.Circle300;
|
||||
|
||||
Hue = hue;
|
||||
Light = LightType.Circle300;
|
||||
Dispellable = false;
|
||||
|
||||
Dispellable = false;
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(10.0), Delete);
|
||||
}
|
||||
|
||||
Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), Delete );
|
||||
}
|
||||
public HornOfRetreatMoongate(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void BeginConfirmation( Mobile from )
|
||||
{
|
||||
EndConfirmation( from );
|
||||
}
|
||||
public override int LabelNumber => 1049114; // Sanctuary Gate
|
||||
|
||||
public override void UseGate( Mobile m )
|
||||
{
|
||||
if ( m.Region.IsPartOf( typeof( Regions.Jail ) ) )
|
||||
{
|
||||
m.SendLocalizedMessage( 1114345 ); // You'll need a better jailbreak plan than that!
|
||||
}
|
||||
else if ( m == m_Caster )
|
||||
{
|
||||
base.UseGate( m );
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
public override void BeginConfirmation(Mobile from)
|
||||
{
|
||||
EndConfirmation(from);
|
||||
}
|
||||
|
||||
public HornOfRetreatMoongate( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void UseGate(Mobile m)
|
||||
{
|
||||
if (m.Region.IsPartOf(typeof(Jail)))
|
||||
{
|
||||
m.SendLocalizedMessage(1114345); // You'll need a better jailbreak plan than that!
|
||||
}
|
||||
else if (m == m_Caster)
|
||||
{
|
||||
base.UseGate(m);
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,105 +2,91 @@ using Server.Mobiles;
|
|||
|
||||
namespace Server.Engines.Quests
|
||||
{
|
||||
public abstract class QuestItem : Item
|
||||
{
|
||||
public QuestItem( int itemID ) : base( itemID )
|
||||
{
|
||||
}
|
||||
public abstract class QuestItem : Item
|
||||
{
|
||||
public QuestItem(int itemID) : base(itemID)
|
||||
{
|
||||
}
|
||||
|
||||
public QuestItem( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public QuestItem(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public abstract bool CanDrop( PlayerMobile pm );
|
||||
public virtual bool Accepted => Deleted;
|
||||
|
||||
public virtual bool Accepted => Deleted;
|
||||
public abstract bool CanDrop(PlayerMobile pm);
|
||||
|
||||
public override bool DropToWorld( Mobile from, Point3D p )
|
||||
{
|
||||
bool ret = base.DropToWorld( from, p );
|
||||
public override bool DropToWorld(Mobile from, Point3D p)
|
||||
{
|
||||
bool ret = base.DropToWorld(from, p);
|
||||
|
||||
if ( ret && !Accepted && Parent != from.Backpack )
|
||||
{
|
||||
if ( from.AccessLevel > AccessLevel.Player )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (ret && !Accepted && Parent != from.Backpack)
|
||||
{
|
||||
if (from.AccessLevel > AccessLevel.Player) return true;
|
||||
|
||||
if ( !(from is PlayerMobile) || CanDrop( (PlayerMobile)from ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
from.SendLocalizedMessage( 1049343 ); // You can only drop quest items into the top-most level of your backpack while you still need them for your quest.
|
||||
return false;
|
||||
}
|
||||
if (!(from is PlayerMobile) || CanDrop((PlayerMobile)from)) return true;
|
||||
from.SendLocalizedMessage(
|
||||
1049343); // You can only drop quest items into the top-most level of your backpack while you still need them for your quest.
|
||||
return false;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public override bool DropToMobile( Mobile from, Mobile target, Point3D p )
|
||||
{
|
||||
bool ret = base.DropToMobile( from, target, p );
|
||||
public override bool DropToMobile(Mobile from, Mobile target, Point3D p)
|
||||
{
|
||||
bool ret = base.DropToMobile(from, target, p);
|
||||
|
||||
if ( ret && !Accepted && Parent != from.Backpack )
|
||||
{
|
||||
if ( from.AccessLevel > AccessLevel.Player )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (ret && !Accepted && Parent != from.Backpack)
|
||||
{
|
||||
if (from.AccessLevel > AccessLevel.Player) return true;
|
||||
|
||||
if ( !(from is PlayerMobile) || CanDrop( (PlayerMobile)from ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
from.SendLocalizedMessage( 1049344 ); // You decide against trading the item. You still need it for your quest.
|
||||
return false;
|
||||
}
|
||||
if (!(from is PlayerMobile) || CanDrop((PlayerMobile)from)) return true;
|
||||
from.SendLocalizedMessage(
|
||||
1049344); // You decide against trading the item. You still need it for your quest.
|
||||
return false;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
public override bool DropToItem( Mobile from, Item target, Point3D p )
|
||||
{
|
||||
bool ret = base.DropToItem( from, target, p );
|
||||
public override bool DropToItem(Mobile from, Item target, Point3D p)
|
||||
{
|
||||
bool ret = base.DropToItem(from, target, p);
|
||||
|
||||
if ( ret && !Accepted && Parent != from.Backpack )
|
||||
{
|
||||
if ( from.AccessLevel > AccessLevel.Player )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (ret && !Accepted && Parent != from.Backpack)
|
||||
{
|
||||
if (from.AccessLevel > AccessLevel.Player) return true;
|
||||
|
||||
if ( !(from is PlayerMobile) || CanDrop( (PlayerMobile)from ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
from.SendLocalizedMessage( 1049343 ); // You can only drop quest items into the top-most level of your backpack while you still need them for your quest.
|
||||
return false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
if (!(from is PlayerMobile) || CanDrop((PlayerMobile)from)) return true;
|
||||
from.SendLocalizedMessage(
|
||||
1049343); // You can only drop quest items into the top-most level of your backpack while you still need them for your quest.
|
||||
return false;
|
||||
}
|
||||
|
||||
public override DeathMoveResult OnParentDeath( Mobile parent )
|
||||
{
|
||||
if ( parent is PlayerMobile mobile && !CanDrop( mobile ) )
|
||||
return DeathMoveResult.MoveToBackpack;
|
||||
return ret;
|
||||
}
|
||||
|
||||
return base.OnParentDeath( parent );
|
||||
}
|
||||
public override DeathMoveResult OnParentDeath(Mobile parent)
|
||||
{
|
||||
if (parent is PlayerMobile mobile && !CanDrop(mobile))
|
||||
return DeathMoveResult.MoveToBackpack;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
return base.OnParentDeath(parent);
|
||||
}
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue