Core/PacketIO: updated structure of SMSG_SPELL_INTERRUPT_LOG, SMSG_SPELL_ENERGIZE_LOG
This commit is contained in:
@@ -8129,13 +8129,14 @@ int32 Unit::HealBySpell(Unit* victim, SpellInfo const* spellInfo, uint32 addHeal
|
||||
|
||||
void Unit::SendEnergizeSpellLog(Unit* victim, uint32 spellId, int32 damage, Powers powerType)
|
||||
{
|
||||
WorldPacket data(SMSG_SPELL_ENERGIZE_LOG, (8+8+4+4+4+1));
|
||||
data << victim->GetPackGUID();
|
||||
data << GetPackGUID();
|
||||
data << uint32(spellId);
|
||||
data << uint32(powerType);
|
||||
data << int32(damage);
|
||||
SendMessageToSet(&data, true);
|
||||
WorldPackets::CombatLog::SpellEnergizeLog data;
|
||||
data.CasterGUID = GetGUID();
|
||||
data.TargetGUID = victim->GetGUID();
|
||||
data.SpellID = spellId;
|
||||
data.Type = powerType;
|
||||
data.Amount = damage;
|
||||
|
||||
SendMessageToSet(data.Write(), true);
|
||||
}
|
||||
|
||||
void Unit::EnergizeBySpell(Unit* victim, uint32 spellId, int32 damage, Powers powerType)
|
||||
|
||||
@@ -184,3 +184,30 @@ WorldPacket const* WorldPackets::CombatLog::SpellPeriodicAuraLog::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::CombatLog::SpellInterruptLog::Write()
|
||||
{
|
||||
_worldPacket << Caster;
|
||||
_worldPacket << Victim;
|
||||
_worldPacket << int32(InterruptedSpellID);
|
||||
_worldPacket << int32(SpellID);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::CombatLog::SpellEnergizeLog::Write()
|
||||
{
|
||||
_worldPacket << CasterGUID;
|
||||
_worldPacket << TargetGUID;
|
||||
|
||||
_worldPacket << int32(SpellID);
|
||||
_worldPacket << int32(Type);
|
||||
_worldPacket << int32(Amount);
|
||||
|
||||
_worldPacket.WriteBit(LogData.is_initialized());
|
||||
_worldPacket.FlushBits();
|
||||
if (LogData)
|
||||
_worldPacket << *LogData;
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -140,6 +140,34 @@ namespace WorldPackets
|
||||
std::vector<SpellLogEffect> Effects;
|
||||
Optional<Spells::SpellCastLogData> LogData; /// @todo: find the correct way where to use it, in sniff always false
|
||||
};
|
||||
|
||||
class SpellInterruptLog final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
SpellInterruptLog() : ServerPacket(SMSG_SPELL_INTERRUPT_LOG, 16 + 16 + 4 + 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid Caster;
|
||||
ObjectGuid Victim;
|
||||
int32 InterruptedSpellID = 0;
|
||||
int32 SpellID = 0;
|
||||
};
|
||||
|
||||
class SpellEnergizeLog final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
SpellEnergizeLog() : ServerPacket(SMSG_SPELL_ENERGIZE_LOG, 16 + 16 + 4 + 4 + 4 + 1) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid CasterGUID;
|
||||
ObjectGuid TargetGUID;
|
||||
int32 SpellID = 0;
|
||||
int32 Type = 0;
|
||||
int32 Amount = 0;
|
||||
Optional<Spells::SpellCastLogData> LogData; /// @todo: find the correct way where to use it, in sniff always false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1646,14 +1646,14 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DAMAGE_SHIELD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DELAYED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DISPELL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ENERGIZE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ENERGIZE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EXECUTE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILED_OTHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILURE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_GO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_HEAL_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INSTAKILL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INTERRUPT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INTERRUPT_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_MISS_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_MULTISTRIKE_EFFECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_NON_MELEE_DAMAGE_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
|
||||
@@ -4150,47 +4150,13 @@ void Spell::ExecuteLogEffectExtraAttacks(uint8 effIndex, Unit* victim, uint32 nu
|
||||
|
||||
void Spell::ExecuteLogEffectInterruptCast(uint8 /*effIndex*/, Unit* victim, uint32 spellId)
|
||||
{
|
||||
ObjectGuid casterGuid = m_caster->GetGUID();
|
||||
ObjectGuid targetGuid = victim->GetGUID();
|
||||
WorldPackets::CombatLog::SpellInterruptLog data;
|
||||
data.Caster = m_caster->GetGUID();
|
||||
data.Victim = victim->GetGUID();
|
||||
data.InterruptedSpellID = m_spellInfo->Id;
|
||||
data.SpellID = spellId;
|
||||
|
||||
WorldPacket data(SMSG_SPELL_INTERRUPT_LOG, 8 + 8 + 4 + 4);
|
||||
data.WriteBit(targetGuid[4]);
|
||||
data.WriteBit(casterGuid[5]);
|
||||
data.WriteBit(casterGuid[6]);
|
||||
data.WriteBit(casterGuid[1]);
|
||||
data.WriteBit(casterGuid[3]);
|
||||
data.WriteBit(casterGuid[0]);
|
||||
data.WriteBit(targetGuid[3]);
|
||||
data.WriteBit(targetGuid[5]);
|
||||
data.WriteBit(targetGuid[1]);
|
||||
data.WriteBit(casterGuid[4]);
|
||||
data.WriteBit(casterGuid[7]);
|
||||
data.WriteBit(targetGuid[7]);
|
||||
data.WriteBit(targetGuid[6]);
|
||||
data.WriteBit(targetGuid[2]);
|
||||
data.WriteBit(casterGuid[2]);
|
||||
data.WriteBit(targetGuid[0]);
|
||||
|
||||
data.WriteByteSeq(casterGuid[7]);
|
||||
data.WriteByteSeq(casterGuid[6]);
|
||||
data.WriteByteSeq(casterGuid[3]);
|
||||
data.WriteByteSeq(casterGuid[2]);
|
||||
data.WriteByteSeq(targetGuid[3]);
|
||||
data.WriteByteSeq(targetGuid[6]);
|
||||
data.WriteByteSeq(targetGuid[2]);
|
||||
data.WriteByteSeq(targetGuid[4]);
|
||||
data.WriteByteSeq(targetGuid[7]);
|
||||
data.WriteByteSeq(targetGuid[0]);
|
||||
data.WriteByteSeq(casterGuid[4]);
|
||||
data << uint32(m_spellInfo->Id);
|
||||
data.WriteByteSeq(targetGuid[1]);
|
||||
data.WriteByteSeq(casterGuid[0]);
|
||||
data.WriteByteSeq(casterGuid[5]);
|
||||
data.WriteByteSeq(casterGuid[1]);
|
||||
data << uint32(spellId);
|
||||
data.WriteByteSeq(targetGuid[5]);
|
||||
|
||||
m_caster->SendMessageToSet(&data, true);
|
||||
m_caster->SendMessageToSet(data.Write(), true);
|
||||
}
|
||||
|
||||
void Spell::ExecuteLogEffectDurabilityDamage(uint8 effIndex, Unit* victim, int32 itemId, int32 amount)
|
||||
|
||||
Reference in New Issue
Block a user