diff --git a/Server/Mobile.cs b/Server/Mobile.cs index 9197fffed..2b9ae3425 100644 --- a/Server/Mobile.cs +++ b/Server/Mobile.cs @@ -5189,64 +5189,12 @@ namespace Server { case VisibleDamageType.Related: { - NetState ourState = m_NetState, theirState = (from == null ? null : from.m_NetState); - - if( ourState == null ) - { - Mobile master = GetDamageMaster( from ); - - if( master != null ) - ourState = master.m_NetState; - } - - if( theirState == null && from != null ) - { - Mobile master = from.GetDamageMaster( this ); - - if( master != null ) - theirState = master.m_NetState; - } - - if( amount > 0 && (ourState != null || theirState != null) ) - { - Packet p = null;// = new DamagePacket( this, amount ); - - if( ourState != null ) - { - if( ourState.DamagePacket ) - p = Packet.Acquire( new DamagePacket( this, amount ) ); - else - p = Packet.Acquire( new DamagePacketOld( this, amount ) ); - - ourState.Send( p ); - } - - if( theirState != null && theirState != ourState ) - { - bool newPacket = theirState.DamagePacket; - - if( newPacket && (p == null || !(p is DamagePacket)) ) - { - Packet.Release( p ); - p = Packet.Acquire( new DamagePacket( this, amount ) ); - } - else if( !newPacket && (p == null || !(p is DamagePacketOld)) ) - { - Packet.Release( p ); - p = Packet.Acquire( new DamagePacketOld( this, amount ) ); - } - - theirState.Send( p ); - } - - Packet.Release( p ); - } - + SendVisibleDamageRelated(from, amount); break; } case VisibleDamageType.Everyone: { - SendDamageToAll( amount ); + SendVisibleDamageEveryone(amount); break; } } @@ -5273,7 +5221,63 @@ namespace Server } } - public virtual void SendDamageToAll( int amount ) + public void SendVisibleDamageRelated(Mobile from, int amount) + { + NetState ourState = m_NetState, theirState = (from == null ? null : from.m_NetState); + + if (ourState == null) + { + Mobile master = GetDamageMaster(from); + + if (master != null) + ourState = master.m_NetState; + } + + if (theirState == null && from != null) + { + Mobile master = from.GetDamageMaster(this); + + if (master != null) + theirState = master.m_NetState; + } + + if (amount > 0 && (ourState != null || theirState != null)) + { + Packet p = null;// = new DamagePacket( this, amount ); + + if (ourState != null) + { + if (ourState.DamagePacket) + p = Packet.Acquire(new DamagePacket(this, amount)); + else + p = Packet.Acquire(new DamagePacketOld(this, amount)); + + ourState.Send(p); + } + + if (theirState != null && theirState != ourState) + { + bool newPacket = theirState.DamagePacket; + + if (newPacket && (p == null || !(p is DamagePacket))) + { + Packet.Release(p); + p = Packet.Acquire(new DamagePacket(this, amount)); + } + else if (!newPacket && (p == null || !(p is DamagePacketOld))) + { + Packet.Release(p); + p = Packet.Acquire(new DamagePacketOld(this, amount)); + } + + theirState.Send(p); + } + + Packet.Release(p); + } + } + + public void SendVisibleDamageEveryone(int amount) { if( amount < 0 ) return;