Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* pInfo)
- {
- constAuraEffectPtr aura = pInfo->auraEff;
- data.append(GetPackGUID());
- data.appendPackGUID(aura->GetCasterGUID());
- data << uint32(aura->GetId());
- data << uint32(1);
- data << uint32(aura->GetAuraType());
- switch (aura->GetAuraType())
- {
- case SPELL_AURA_PERIODIC_DAMAGE:
- case SPELL_AURA_PERIODIC_DAMAGE_PERCENT:
- data << uint32(pInfo->damage);
- data << uint32(pInfo->overDamage);
- data << uint32(aura->GetSpellInfo()->GetSchoolMask());
- data << uint32(pInfo->absorb);
- data << uint32(pInfo->resist);
- data << uint8(pInfo->critical);
- break;
- case SPELL_AURA_PERIODIC_HEAL:
- case SPELL_AURA_OBS_MOD_HEALTH:
- data << uint32(pInfo->damage);
- data << uint32(pInfo->overDamage);
- data << uint32(pInfo->absorb);
- data << uint8(pInfo->critical);
- break;
- case SPELL_AURA_OBS_MOD_POWER:
- case SPELL_AURA_PERIODIC_ENERGIZE:
- data << uint32(aura->GetMiscValue());
- data << uint32(pInfo->damage);
- break;
- case SPELL_AURA_PERIODIC_MANA_LEECH:
- data << uint32(aura->GetMiscValue());
- data << uint32(pInfo->damage);
- data << float(pInfo->multiplier);
- break;
- default:
- sLog->outError(LOG_FILTER_UNITS, "Unit::SendPeriodicAuraLog: unknown aura %u", uint32(aura->GetAuraType()));
- return;
- }
- WorldPacket data(SMSG_PERIODICAURALOG, 8 + 8 + 4 + 4 + 4 + 4 + 4);
- data.WriteBit(casterGUID[8]);
- data.WriteBit(casterGUID[8]);
- ObjectGuid targetGUID = GetGUID();
- ObjectGuid casterGUID = aura->GetCasterGUID();
- data.WriteBit(targetGUID[7]);
- data.WriteBit(casterGUID[0]);
- data.WriteBit(casterGUID[7]);
- data.WriteBit(casterGUID[1]);
- data.WriteBits(1, 21);
- data.WriteBit(targetGUID[0]);
- if (pInfo->overDamage)
- data << uint32(pInfo->overDamage);
- if (pInfo->resist)
- data << uint32(pInfo->resist);
- if (pInfo->absorb)
- data << uint32(pInfo->absorb);
- data.WriteBit(targetGUID[5]);
- data.WriteBit(targetGUID[3]);
- data.WriteBit(casterGUID[1]);
- data.WriteBit(targetGUID[2]);
- data.WriteBit(casterGUID[6]);
- data.WriteBit(casterGUID[3]);
- data.WriteBit(casterGUID[4]);
- data << uint32(0);
- data.WriteBit(casterGUID[2]);
- data.WriteBit(targetGUID[6]);
- data.WriteBit(casterGUID[5]);
- data.WriteBits(0, 21);
- data.WriteBit(!pInfo->overDamage);
- data.WriteBit(!pInfo->damage); // damage
- data.WriteBit(!aura->GetAuraType()); // auraId
- data.WriteBit(!pInfo->resist);
- data.WriteBit(!pInfo->absorb);
- data.WriteBit(pInfo->critical);
- data.WriteByteSeq(casterGUID[5]);
- data.WriteByteSeq(casterGUID[3]);
- data.WriteByteSeq(targetGUID[4]);
- data << uint32(aura->GetId());
- data.WriteByteSeq(targetGUID[6]);
- data.WriteByteSeq(casterGUID[7]);
- data.WriteByteSeq(casterGUID[1]);
- if (ToPlayer())
- {
- data << uint32(GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NORMAL)); // Spell power
- data << uint32(GetStat(STAT_STRENGTH)); // Attack power;
- data << GetHealth();
- for (uint32 l_I = 0; l_I < 1; ++l_I)
- {
- data << (uint32)GetPower(getPowerType());
- data << (uint32)getPowerType();
- }
- }
- data.WriteByteSeq(targetGUID[5]);
- data.WriteByteSeq(casterGUID[0]);
- data.WriteByteSeq(targetGUID[1]);
- data.WriteByteSeq(targetGUID[7]);
- data.WriteByteSeq(casterGUID[4]);
- data.WriteByteSeq(targetGUID[3]);
- data.WriteByteSeq(casterGUID[2]);
- data.WriteByteSeq(targetGUID[0]);
- data.WriteByteSeq(targetGUID[2]);
- data.WriteByteSeq(casterGUID[6]);
- SendMessageToSet(&data, true);
- }
Advertisement
Add Comment
Please, Sign In to add comment