diff options
| author | Shauren <shauren.trinity@gmail.com> | 2021-10-03 16:36:39 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-10-03 16:36:39 +0200 |
| commit | 555b2d40ecc22eb0ea4bf913b534ffa7197fa6fe (patch) | |
| tree | 8aa39c7f9314d4958c17c652b15a1f73458682d9 /src/server/game/Entities | |
| parent | 0146eefee4fb8d72f02dee353af49af740db3973 (diff) | |
Core/Spells: Send OriginalCastId in SMSG_SPELL_START and SMSG_SPELL_GO for triggered spells in 'game' project
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/AreaTrigger/AreaTrigger.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 16 |
3 files changed, 8 insertions, 13 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp index 7e22c4d3a58..55f6cb7f04c 100644 --- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp +++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp @@ -660,7 +660,8 @@ void AreaTrigger::DoActions(Unit* unit) switch (action.ActionType) { case AREATRIGGER_ACTION_CAST: - caster->CastSpell(unit, action.Param, true); + caster->CastSpell(unit, action.Param, CastSpellExtraArgs(TRIGGERED_FULL_MASK) + .SetOriginalCastId(m_areaTriggerData->CreatingEffectGUID->IsCast() ? *m_areaTriggerData->CreatingEffectGUID : ObjectGuid::Empty)); break; case AREATRIGGER_ACTION_ADDAURA: caster->AddAura(action.Param, unit); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index ba5573d171b..130f6ffd8d9 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2638,7 +2638,7 @@ void WorldObject::CastSpell(SpellCastTargets const& targets, uint32 spellId, Cas return; } - Spell* spell = new Spell(this, info, args.TriggerFlags, args.OriginalCaster); + Spell* spell = new Spell(this, info, args.TriggerFlags, args.OriginalCaster, args.OriginalCastId); for (auto const& pair : args.SpellValueOverrides) spell->SetSpellValue(pair.first, pair.second); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6fc02b4f74d..e86156cc3bf 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1885,7 +1885,7 @@ void Unit::HandleEmoteCommand(uint32 anim_id, Trinity::IteratorPair<int32 const* uint32 split_absorb = 0; Unit::DealDamageMods(damageInfo.GetAttacker(), caster, splitDamage, &split_absorb); - SpellNonMeleeDamage log(damageInfo.GetAttacker(), caster, (*itr)->GetSpellInfo(), (*itr)->GetBase()->GetSpellVisual(), damageInfo.GetSchoolMask(), (*itr)->GetBase()->GetCastGUID()); + SpellNonMeleeDamage log(damageInfo.GetAttacker(), caster, (*itr)->GetSpellInfo(), (*itr)->GetBase()->GetSpellVisual(), damageInfo.GetSchoolMask(), (*itr)->GetBase()->GetCastId()); CleanDamage cleanDamage = CleanDamage(splitDamage, 0, BASE_ATTACK, MELEE_HIT_NORMAL); Unit::DealDamage(damageInfo.GetAttacker(), caster, splitDamage, &cleanDamage, DIRECT_DAMAGE, damageInfo.GetSchoolMask(), (*itr)->GetSpellInfo(), false); log.damage = splitDamage; @@ -2025,10 +2025,7 @@ void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extr } else { - CastSpellExtraArgs args; - args.TriggerFlags = TRIGGERED_FULL_MASK; - args.TriggeringAura = meleeAttackAuraEffect; - CastSpell(victim, meleeAttackSpellId, args); + CastSpell(victim, meleeAttackSpellId, meleeAttackAuraEffect); uint32 hitInfo = HITINFO_AFFECTS_VICTIM | HITINFO_NO_ANIMATION; if (attType == OFF_ATTACK) @@ -3370,7 +3367,7 @@ void Unit::_RemoveNoStackAurasDueToAura(Aura* aura) { Unit* caster = aura->GetCaster(); if (caster && caster->GetTypeId() == TYPEID_PLAYER) - Spell::SendCastResult(caster->ToPlayer(), aura->GetSpellInfo(), aura->GetSpellVisual(), aura->GetCastGUID(), SPELL_FAILED_AURA_BOUNCED); + Spell::SendCastResult(caster->ToPlayer(), aura->GetSpellInfo(), aura->GetSpellVisual(), aura->GetCastId(), SPELL_FAILED_AURA_BOUNCED); } aura->Remove(); @@ -3737,7 +3734,7 @@ void Unit::RemoveAurasDueToSpellBySteal(uint32 spellId, ObjectGuid casterGUID, W if (aura->IsSingleTarget()) aura->UnregisterSingleTarget(); - AuraCreateInfo createInfo(aura->GetCastGUID(), aura->GetSpellInfo(), aura->GetCastDifficulty(), effMask, unitStealer); + AuraCreateInfo createInfo(aura->GetCastId(), aura->GetSpellInfo(), aura->GetCastDifficulty(), effMask, unitStealer); createInfo .SetCasterGUID(aura->GetCasterGUID()) .SetBaseAmount(baseDamage); @@ -9029,10 +9026,7 @@ void Unit::TriggerOnPowerChangeAuras(Powers power, int32 oldVal, int32 newVal) break; } - CastSpellExtraArgs args; - args.TriggerFlags = TRIGGERED_FULL_MASK; - args.TriggeringAura = effect; - CastSpell(this, triggerSpell, args); + CastSpell(this, triggerSpell, effect); } } } |
