From a2b78ff4e69a4072b1ce2cb48d40ae79c6a50458 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Thu, 24 Aug 2023 16:52:18 -0400 Subject: [PATCH] [Combat Messages] Fix issue where pet proc damage was not showing up (#3551) * [Combat Messages] Fix issue where pet proc damage was not showing up * Put back needed "skip" for some melee messages. * spacing --- zone/attack.cpp | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/zone/attack.cpp b/zone/attack.cpp index 150dd499e..6791dfe69 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -4230,7 +4230,7 @@ void Mob::CommonDamage(Mob* attacker, int64 &damage, const uint16 spell_id, cons //attacker is a pet, let pet owners see their pet's damage Mob* owner = attacker->GetOwner(); if (owner && owner->IsClient()) { - if ((IsValidSpell(spell_id) || (FromDamageShield)) && damage > 0) { + if (FromDamageShield && damage > 0) { //special crap for spell damage, looks hackish to me char val1[20] = { 0 }; owner->MessageString(Chat::NonMelee, OTHER_HIT_NONMELEE, GetCleanName(), ConvertArray(damage, val1)); @@ -4249,7 +4249,15 @@ void Mob::CommonDamage(Mob* attacker, int64 &damage, const uint16 spell_id, cons filter = FilterPetMisses; if (!FromDamageShield) - owner->CastToClient()->QueuePacket(outapp, true, CLIENT_CONNECTED, filter); + entity_list.QueueCloseClients( + this, /* Sender */ + outapp, /* packet */ + false, /* Skip Sender */ + ((IsValidSpell(spell_id)) ? RuleI(Range, SpellMessages) : RuleI(Range, DamageMessages)), + 0, /* don't skip anyone on spell */ + true, /* Packet ACK */ + filter /* eqFilterType filter */ + ); } } @@ -4351,16 +4359,21 @@ void Mob::CommonDamage(Mob* attacker, int64 &damage, const uint16 spell_id, cons CastToClient()->QueuePacket(outapp); } - // Otherwise, send normal spell or melee message to observers. - entity_list.QueueCloseClients( - this, /* Sender */ - outapp, /* packet */ - true, /* Skip Sender */ - range, /* distance packet travels at the speed of sound */ - (IsValidSpell(spell_id) && skill_used != EQ::skills::SkillTigerClaw) ? 0 : skip, - true, /* Packet ACK */ - filter /* eqFilterType filter */ - ); + // Send normal message to observers + // Exclude damage done by client pets as that's handled + // elsewhere using proper "my pet damage filter" + Mob *owner = attacker->GetOwner(); + if (!owner || (owner && !owner->IsClient())) { + entity_list.QueueCloseClients( + this, /* Sender */ + outapp, /* packet */ + true, /* Skip Sender */ + range, /* distance packet travels at the speed of sound */ + (IsValidSpell(spell_id) && skill_used != EQ::skills::SkillTigerClaw) ? 0 : skip, + true, /* Packet ACK */ + filter /* eqFilterType filter */ + ); + } } }