implement client bandage macro handler
fix non-opl paragon chest container property display
This commit is contained in:
parent
35372d1c8c
commit
893b42c3bf
4 changed files with 94 additions and 0 deletions
|
|
@ -35,6 +35,7 @@ namespace Server.Items
|
|||
|
||||
public override void OnSingleClick( Mobile from )
|
||||
{
|
||||
base.OnSingleClick(from);
|
||||
LabelTo( from, 1063449, m_Name );
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@ namespace Server.Items
|
|||
get { return 0.1; }
|
||||
}
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
EventSink.BandageTargetRequest += new BandageTargetRequestEventHandler(EventSink_BandageTargetRequest);
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public Bandage() : this( 1 )
|
||||
{
|
||||
|
|
@ -74,6 +79,37 @@ namespace Server.Items
|
|||
}
|
||||
}
|
||||
|
||||
private static void EventSink_BandageTargetRequest(BandageTargetRequestEventArgs e)
|
||||
{
|
||||
Bandage b = e.Bandage as Bandage;
|
||||
|
||||
if (b == null || b.Deleted)
|
||||
return;
|
||||
|
||||
Mobile from = e.Mobile;
|
||||
|
||||
if (from.InRange(b.GetWorldLocation(), Range))
|
||||
{
|
||||
Target t = from.Target;
|
||||
|
||||
if (t != null)
|
||||
{
|
||||
Target.Cancel(from);
|
||||
from.Target = null;
|
||||
}
|
||||
|
||||
from.RevealingAction();
|
||||
|
||||
from.SendLocalizedMessage(500948); // Who will you use the bandages on?
|
||||
|
||||
new InternalTarget(b).Invoke(from, e.Target);
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500295); // You are too far away to do that.
|
||||
}
|
||||
}
|
||||
|
||||
private class InternalTarget : Target
|
||||
{
|
||||
private Bandage m_Bandage;
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ namespace Server
|
|||
public delegate void StunRequestEventHandler( StunRequestEventArgs e );
|
||||
public delegate void OpenSpellbookRequestEventHandler( OpenSpellbookRequestEventArgs e );
|
||||
public delegate void CastSpellRequestEventHandler( CastSpellRequestEventArgs e );
|
||||
public delegate void BandageTargetRequestEventHandler( BandageTargetRequestEventArgs e );
|
||||
public delegate void AnimateRequestEventHandler( AnimateRequestEventArgs e );
|
||||
public delegate void LogoutEventHandler( LogoutEventArgs e );
|
||||
public delegate void SocketConnectEventHandler( SocketConnectEventArgs e );
|
||||
|
|
@ -464,6 +465,24 @@ namespace Server
|
|||
}
|
||||
}
|
||||
|
||||
public class BandageTargetRequestEventArgs : EventArgs
|
||||
{
|
||||
private Mobile m_Mobile;
|
||||
private Item m_Bandage;
|
||||
private Mobile m_Target;
|
||||
|
||||
public Mobile Mobile { get { return m_Mobile; } }
|
||||
public Item Bandage { get { return m_Bandage; } }
|
||||
public Mobile Target { get { return m_Target; } }
|
||||
|
||||
public BandageTargetRequestEventArgs(Mobile m, Item bandage, Mobile target)
|
||||
{
|
||||
m_Mobile = m;
|
||||
m_Bandage = bandage;
|
||||
m_Target = target;
|
||||
}
|
||||
}
|
||||
|
||||
public class OpenSpellbookRequestEventArgs : EventArgs
|
||||
{
|
||||
private Mobile m_Mobile;
|
||||
|
|
@ -805,6 +824,7 @@ namespace Server
|
|||
public static event StunRequestEventHandler StunRequest;
|
||||
public static event OpenSpellbookRequestEventHandler OpenSpellbookRequest;
|
||||
public static event CastSpellRequestEventHandler CastSpellRequest;
|
||||
public static event BandageTargetRequestEventHandler BandageTargetRequest;
|
||||
public static event AnimateRequestEventHandler AnimateRequest;
|
||||
public static event LogoutEventHandler Logout;
|
||||
public static event SocketConnectEventHandler SocketConnect;
|
||||
|
|
@ -998,6 +1018,12 @@ namespace Server
|
|||
CastSpellRequest( e );
|
||||
}
|
||||
|
||||
public static void InvokeBandageTargetRequest( BandageTargetRequestEventArgs e )
|
||||
{
|
||||
if ( BandageTargetRequest != null )
|
||||
BandageTargetRequest( e );
|
||||
}
|
||||
|
||||
public static void InvokeOpenSpellbookRequest( OpenSpellbookRequestEventArgs e )
|
||||
{
|
||||
if ( OpenSpellbookRequest != null )
|
||||
|
|
@ -1104,6 +1130,7 @@ namespace Server
|
|||
StunRequest = null;
|
||||
OpenSpellbookRequest = null;
|
||||
CastSpellRequest = null;
|
||||
BandageTargetRequest = null;
|
||||
AnimateRequest = null;
|
||||
Logout = null;
|
||||
SocketConnect = null;
|
||||
|
|
|
|||
|
|
@ -168,6 +168,7 @@ namespace Server.Network
|
|||
RegisterExtended( 0x1A, true, new OnPacketReceive( StatLockChange ) );
|
||||
RegisterExtended( 0x1C, true, new OnPacketReceive( CastSpell ) );
|
||||
RegisterExtended( 0x24, false, new OnPacketReceive( UnhandledBF ) );
|
||||
RegisterExtended( 0x2C, true, new OnPacketReceive( BandageTarget ) );
|
||||
|
||||
RegisterEncoded( 0x19, true, new OnEncodedPacketReceive( SetAbility ) );
|
||||
RegisterEncoded( 0x28, true, new OnEncodedPacketReceive( GuildGumpRequest ) );
|
||||
|
|
@ -1619,6 +1620,35 @@ namespace Server.Network
|
|||
EventSink.InvokeCastSpellRequest( new CastSpellRequestEventArgs( from, spellID, spellbook ) );
|
||||
}
|
||||
|
||||
public static void BandageTarget(NetState state, PacketReader pvSrc)
|
||||
{
|
||||
Mobile from = state.Mobile;
|
||||
|
||||
if (from == null)
|
||||
return;
|
||||
|
||||
if (from.AccessLevel >= AccessLevel.Counselor || DateTime.Now >= from.NextActionTime)
|
||||
{
|
||||
Item bandage = World.FindItem(pvSrc.ReadInt32());
|
||||
|
||||
if (bandage == null)
|
||||
return;
|
||||
|
||||
Mobile target = World.FindMobile(pvSrc.ReadInt32());
|
||||
|
||||
if (target == null)
|
||||
return;
|
||||
|
||||
EventSink.InvokeBandageTargetRequest(new BandageTargetRequestEventArgs(from, bandage, target));
|
||||
|
||||
from.NextActionTime = DateTime.Now + Mobile.ActionDelay;
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendActionMessage();
|
||||
}
|
||||
}
|
||||
|
||||
public static void BatchQueryProperties( NetState state, PacketReader pvSrc )
|
||||
{
|
||||
if ( !ObjectPropertyList.Enabled )
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue