aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2015-04-19 00:59:27 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2015-04-19 00:59:27 +0200
commit3499b77d5fa0b56a8a749982ef984ccbd30dc1fc (patch)
treea4261ac41deb673dbdc2b1e20e58277e1bdd6a46 /src/server/game/Entities
parent8bde737d3ac282c470208b1fccd9f17c4a3de057 (diff)
Core/PacketIO: Updated and enabled SMSG_SPELL_HEAL_LOG for WoD
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp43
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
2 files changed, 32 insertions, 13 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 0394911d9fe..8d6e36631bb 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -8108,19 +8108,38 @@ void Unit::UnsummonAllTotems()
}
}
-void Unit::SendHealSpellLog(Unit* victim, uint32 SpellID, uint32 Damage, uint32 OverHeal, uint32 Absorb, bool critical)
+void Unit::SendHealSpellLog(Unit* victim, uint32 spellID, uint32 health, uint32 overHeal, uint32 absorbed, bool crit)
{
- // we guess size
- WorldPacket data(SMSG_SPELL_HEAL_LOG, 8 + 8 + 4 + 4 + 4 + 4 + 1 + 1);
- data << victim->GetPackGUID();
- data << GetPackGUID();
- data << uint32(SpellID);
- data << uint32(Damage);
- data << uint32(OverHeal);
- data << uint32(Absorb); // Absorb amount
- data << uint8(critical ? 1 : 0);
- data << uint8(0); // unused
- SendMessageToSet(&data, true);
+ WorldPackets::CombatLog::SpellHealLog spellHealLog;
+
+ spellHealLog.CasterGUID = GetGUID();
+ spellHealLog.TargetGUID = victim->GetGUID();
+
+ spellHealLog.SpellID = spellID;
+ spellHealLog.Health = health;
+ spellHealLog.OverHeal = overHeal;
+ spellHealLog.Absorbed = absorbed;
+
+ spellHealLog.Crit = crit;
+
+ /// @todo: 6.x Has to be implemented
+ /*
+ packet.ReadBit("Multistrike");
+
+ var hasCritRollMade = packet.ReadBit("HasCritRollMade");
+ var hasCritRollNeeded = packet.ReadBit("HasCritRollNeeded");
+ var hasLogData = packet.ReadBit("HasLogData");
+
+ if (hasCritRollMade)
+ packet.ReadSingle("CritRollMade");
+
+ if (hasCritRollNeeded)
+ packet.ReadSingle("CritRollNeeded");
+
+ if (hasLogData)
+ SpellParsers.ReadSpellCastLogData(packet);
+ */
+ SendMessageToSet(spellHealLog.Write(), true);
}
int32 Unit::HealBySpell(Unit* victim, SpellInfo const* spellInfo, uint32 addHealth, bool critical)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index e6f6ff13f37..79d402c3695 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1600,7 +1600,7 @@ class Unit : public WorldObject
virtual void UpdateUnderwaterState(Map* m, float x, float y, float z);
bool isInAccessiblePlaceFor(Creature const* c) const;
- void SendHealSpellLog(Unit* victim, uint32 SpellID, uint32 Damage, uint32 OverHeal, uint32 Absorb, bool critical = false);
+ void SendHealSpellLog(Unit* victim, uint32 spellID, uint32 health, uint32 overHeal, uint32 absorbed, bool crit = false);
int32 HealBySpell(Unit* victim, SpellInfo const* spellInfo, uint32 addHealth, bool critical = false);
void SendEnergizeSpellLog(Unit* victim, uint32 spellID, int32 damage, Powers powertype);
void EnergizeBySpell(Unit* victim, uint32 SpellID, int32 Damage, Powers powertype);