slight refactor of visible damage

This commit is contained in:
Mark Sturgill 2014-02-06 23:17:23 -07:00
parent 6571b05f33
commit 18bc7b84d9

View file

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