implement client bandage macro handler

fix non-opl paragon chest container property display
This commit is contained in:
Mark Sturgill 2013-10-02 03:07:28 -07:00
parent 35372d1c8c
commit 893b42c3bf
4 changed files with 94 additions and 0 deletions

View file

@ -35,6 +35,7 @@ namespace Server.Items
public override void OnSingleClick( Mobile from )
{
base.OnSingleClick(from);
LabelTo( from, 1063449, m_Name );
}

View file

@ -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;

View file

@ -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;

View file

@ -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 )