diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-06-05 01:19:25 +0200 | 
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-06-05 01:19:25 +0200 | 
| commit | 6ce84d9401a630958d3aec11e69c1382c56d6bf9 (patch) | |
| tree | 5227fb8b18e6ac48a8b727725a8587a77cc76b47 /src/server/game/Spells/Spell.cpp | |
| parent | dd1533b315bda37e1d43ebe0fb8bde87381c6e66 (diff) | |
Core/PacketIO: Fixed sending SMSG_SPELL_EXECUTE_LOG
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 54 | 
1 files changed, 15 insertions, 39 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index aa02dfa3f63..31bcfc39980 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -616,7 +616,6 @@ m_spellValue(new SpellValue(caster->GetMap()->GetDifficultyID(), m_spellInfo)),          && !m_spellInfo->IsPassive() && !m_spellInfo->IsPositive();      CleanupTargetList(); -    CleanupExecuteLogList();      for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)          m_destTargets[i] = SpellDestination(*m_caster); @@ -645,7 +644,6 @@ Spell::~Spell()          ASSERT(m_caster->ToPlayer()->m_spellModTakingSpell != this);      delete m_spellValue; -    CleanupExecuteLogList();  }  void Spell::InitExplicitTargets(SpellCastTargets const& targets) @@ -4178,45 +4176,33 @@ void Spell::UpdateSpellCastDataAmmo(WorldPackets::Spells::SpellAmmo& ammo)  void Spell::SendSpellExecuteLog()  {      WorldPackets::CombatLog::SpellExecuteLog spellExecuteLog; -      spellExecuteLog.Caster = m_caster->GetGUID();      spellExecuteLog.SpellID = m_spellInfo->Id; -    if (_powerDrainTargets->empty() && _extraAttacksTargets->empty() && -        _durabilityDamageTargets->empty() && _genericVictimTargets->empty() && -        _tradeSkillTargets->empty() && _feedPetTargets->empty()) -        return; -      for (SpellEffectInfo const* effect : GetEffects())      { -        WorldPackets::CombatLog::SpellExecuteLog::SpellLogEffect spellLogEffect;          if (!effect)              continue; -        spellLogEffect.Effect = effect->Effect; - -        for (SpellLogEffectPowerDrainParams const& powerDrainParam : _powerDrainTargets[effect->EffectIndex]) -            spellLogEffect.PowerDrainTargets.push_back(powerDrainParam); - -        for (SpellLogEffectExtraAttacksParams const& extraAttacksTarget : _extraAttacksTargets[effect->EffectIndex]) -            spellLogEffect.ExtraAttacksTargets.push_back(extraAttacksTarget); - -        for (SpellLogEffectDurabilityDamageParams const& durabilityDamageTarget : _durabilityDamageTargets[effect->EffectIndex]) -            spellLogEffect.DurabilityDamageTargets.push_back(durabilityDamageTarget); - -        for (SpellLogEffectGenericVictimParams const& genericVictimTarget : _genericVictimTargets[effect->EffectIndex]) -            spellLogEffect.GenericVictimTargets.push_back(genericVictimTarget); - -        for (SpellLogEffectTradeSkillItemParams const& tradeSkillTarget : _tradeSkillTargets[effect->EffectIndex]) -            spellLogEffect.TradeSkillTargets.push_back(tradeSkillTarget); +        if (_powerDrainTargets[effect->EffectIndex].empty() && _extraAttacksTargets[effect->EffectIndex].empty() && +            _durabilityDamageTargets[effect->EffectIndex].empty() && _genericVictimTargets[effect->EffectIndex].empty() && +            _tradeSkillTargets[effect->EffectIndex].empty() && _feedPetTargets[effect->EffectIndex].empty()) +            continue; -        for (SpellLogEffectFeedPetParams const& feedPetTarget : _feedPetTargets[effect->EffectIndex]) -            spellLogEffect.FeedPetTargets.push_back(feedPetTarget); +        spellExecuteLog.Effects.emplace_back(); -        spellExecuteLog.Effects.push_back(spellLogEffect); +        WorldPackets::CombatLog::SpellExecuteLog::SpellLogEffect& spellLogEffect = spellExecuteLog.Effects.back(); +        spellLogEffect.Effect = effect->Effect; +        spellLogEffect.PowerDrainTargets = std::move(_powerDrainTargets[effect->EffectIndex]); +        spellLogEffect.ExtraAttacksTargets = std::move(_extraAttacksTargets[effect->EffectIndex]); +        spellLogEffect.DurabilityDamageTargets = std::move(_durabilityDamageTargets[effect->EffectIndex]); +        spellLogEffect.GenericVictimTargets = std::move(_genericVictimTargets[effect->EffectIndex]); +        spellLogEffect.TradeSkillTargets = std::move(_tradeSkillTargets[effect->EffectIndex]); +        spellLogEffect.FeedPetTargets = std::move(_feedPetTargets[effect->EffectIndex]);      } -    m_caster->SendCombatLogMessage(&spellExecuteLog); +    if (!spellExecuteLog.Effects.empty()) +        m_caster->SendCombatLogMessage(&spellExecuteLog);  }  void Spell::ExecuteLogEffectTakeTargetPower(uint8 effIndex, Unit* target, uint32 powerType, uint32 points, float amplitude) @@ -4309,16 +4295,6 @@ void Spell::ExecuteLogEffectResurrect(uint8 effect, Unit* target)      _genericVictimTargets[effect].push_back(spellLogEffectGenericVictimParams);  } -void Spell::CleanupExecuteLogList() -{ -    _durabilityDamageTargets->clear(); -    _extraAttacksTargets->clear(); -    _feedPetTargets->clear(); -    _genericVictimTargets->clear(); -    _powerDrainTargets->clear(); -    _tradeSkillTargets->clear(); -} -  void Spell::SendInterrupted(uint8 result)  {      WorldPackets::Spells::SpellFailure failurePacket;  | 
