Goatform

SMSG_PERIODICAURALOG

Nov 27th, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.54 KB | None | 0 0
  1. void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo* pInfo)
  2. {
  3.     constAuraEffectPtr aura = pInfo->auraEff;
  4.  
  5.         data.append(GetPackGUID());
  6.         data.appendPackGUID(aura->GetCasterGUID());
  7.         data << uint32(aura->GetId());
  8.         data << uint32(1);
  9.         data << uint32(aura->GetAuraType());
  10.     switch (aura->GetAuraType())
  11.     {
  12.     case SPELL_AURA_PERIODIC_DAMAGE:
  13.     case SPELL_AURA_PERIODIC_DAMAGE_PERCENT:
  14.         data << uint32(pInfo->damage);
  15.         data << uint32(pInfo->overDamage);
  16.         data << uint32(aura->GetSpellInfo()->GetSchoolMask());
  17.         data << uint32(pInfo->absorb);
  18.         data << uint32(pInfo->resist);
  19.         data << uint8(pInfo->critical);
  20.         break;
  21.     case SPELL_AURA_PERIODIC_HEAL:
  22.     case SPELL_AURA_OBS_MOD_HEALTH:
  23.         data << uint32(pInfo->damage);
  24.         data << uint32(pInfo->overDamage);
  25.         data << uint32(pInfo->absorb);
  26.         data << uint8(pInfo->critical);
  27.         break;
  28.     case SPELL_AURA_OBS_MOD_POWER:
  29.     case SPELL_AURA_PERIODIC_ENERGIZE:
  30.         data << uint32(aura->GetMiscValue());
  31.         data << uint32(pInfo->damage);
  32.         break;
  33.     case SPELL_AURA_PERIODIC_MANA_LEECH:
  34.         data << uint32(aura->GetMiscValue());
  35.         data << uint32(pInfo->damage);
  36.         data << float(pInfo->multiplier);
  37.         break;
  38.     default:
  39.         sLog->outError(LOG_FILTER_UNITS, "Unit::SendPeriodicAuraLog: unknown aura %u", uint32(aura->GetAuraType()));
  40.         return;
  41.     }
  42.  
  43.     WorldPacket data(SMSG_PERIODICAURALOG, 8 + 8 + 4 + 4 + 4 + 4 + 4);
  44.  
  45.     data.WriteBit(casterGUID[8]);
  46.     data.WriteBit(casterGUID[8]);
  47.    
  48.     ObjectGuid targetGUID = GetGUID();
  49.     ObjectGuid casterGUID = aura->GetCasterGUID();
  50.  
  51.     data.WriteBit(targetGUID[7]);
  52.     data.WriteBit(casterGUID[0]);
  53.     data.WriteBit(casterGUID[7]);
  54.     data.WriteBit(casterGUID[1]);
  55.  
  56.     data.WriteBits(1, 21);
  57.  
  58.     data.WriteBit(targetGUID[0]);
  59.  
  60.     if (pInfo->overDamage)
  61.         data << uint32(pInfo->overDamage);
  62.     if (pInfo->resist)
  63.         data << uint32(pInfo->resist);
  64.     if (pInfo->absorb)
  65.         data << uint32(pInfo->absorb);
  66.    
  67.     data.WriteBit(targetGUID[5]);
  68.     data.WriteBit(targetGUID[3]);
  69.     data.WriteBit(casterGUID[1]);
  70.     data.WriteBit(targetGUID[2]);
  71.     data.WriteBit(casterGUID[6]);
  72.     data.WriteBit(casterGUID[3]);
  73.     data.WriteBit(casterGUID[4]);
  74.     data << uint32(0);
  75.     data.WriteBit(casterGUID[2]);
  76.     data.WriteBit(targetGUID[6]);
  77.     data.WriteBit(casterGUID[5]);
  78.  
  79.     data.WriteBits(0, 21);
  80.  
  81.     data.WriteBit(!pInfo->overDamage);
  82.     data.WriteBit(!pInfo->damage);                          // damage
  83.     data.WriteBit(!aura->GetAuraType());                    // auraId
  84.     data.WriteBit(!pInfo->resist);
  85.     data.WriteBit(!pInfo->absorb);
  86.     data.WriteBit(pInfo->critical);
  87.    
  88.     data.WriteByteSeq(casterGUID[5]);
  89.     data.WriteByteSeq(casterGUID[3]);
  90.     data.WriteByteSeq(targetGUID[4]);
  91.  
  92.     data << uint32(aura->GetId());
  93.  
  94.     data.WriteByteSeq(targetGUID[6]);
  95.     data.WriteByteSeq(casterGUID[7]);
  96.     data.WriteByteSeq(casterGUID[1]);
  97.  
  98.     if (ToPlayer())
  99.     {
  100.         data << uint32(GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NORMAL));  // Spell power
  101.         data << uint32(GetStat(STAT_STRENGTH));   // Attack power;
  102.  
  103.         data << GetHealth();
  104.  
  105.         for (uint32 l_I = 0; l_I < 1; ++l_I)
  106.         {
  107.             data << (uint32)GetPower(getPowerType());
  108.             data << (uint32)getPowerType();
  109.         }
  110.     }
  111.  
  112.     data.WriteByteSeq(targetGUID[5]);
  113.     data.WriteByteSeq(casterGUID[0]);
  114.     data.WriteByteSeq(targetGUID[1]);
  115.     data.WriteByteSeq(targetGUID[7]);
  116.     data.WriteByteSeq(casterGUID[4]);
  117.     data.WriteByteSeq(targetGUID[3]);
  118.     data.WriteByteSeq(casterGUID[2]);
  119.     data.WriteByteSeq(targetGUID[0]);
  120.     data.WriteByteSeq(targetGUID[2]);
  121.     data.WriteByteSeq(casterGUID[6]);
  122.  
  123.     SendMessageToSet(&data, true);
  124. }
Advertisement
Add Comment
Please, Sign In to add comment