diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 25 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 8 |
2 files changed, 25 insertions, 8 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f790d6bf807..8fcf8697e72 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7621,6 +7621,31 @@ bool Unit::HandleAuraProc(Unit* victim, uint32 damage, Aura* triggeredByAura, Sp CastCustomSpell(this, 67545, &bp0, NULL, NULL, true, NULL, triggeredByAura->GetEffect(EFFECT_0), GetGUID()); return true; } + case 44401: //Missile Barrage + case 48108: //Hot Streak + case 57761: //Fireball! + { + *handled = true; + + // Prevent double proc for Arcane missiles + if (this == victim) + return false; + + if (HasAura(70752)) // Item - Mage T10 2P Bonus + CastSpell((Unit*)nullptr, 70753, true); + + // Proc chance is unknown, we'll just use dummy aura amount + if (AuraEffect const* aurEff = GetAuraEffect(64869, EFFECT_0)) // Item - Mage T8 4P Bonus + if (roll_chance_i(aurEff->GetAmount())) // do not proc charges + return false; + + // @workaround: We'll take care of removing the aura on next update tick + // This is needed for 44401 to affect Arcane Missiles, else the spellmod will not be applied + // it only works because EventProcessor will always update first scheduled event, + // as cast is already in progress the SpellEvent for Arcane Missiles is already in queue. + triggeredByAura->DropChargeDelayed(1); + return false; + } } break; } diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 85eb993e1b2..23ebc741b37 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1406,14 +1406,6 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b // Remove the IGNORE_AURASTATE aura target->RemoveAurasDueToSpell(44544); break; - case 44401: //Missile Barrage - case 48108: //Hot Streak - case 57761: //Fireball! - if (removeMode != AURA_REMOVE_BY_EXPIRE || aurApp->GetBase()->IsExpired()) - break; - if (target->HasAura(70752)) //Item - Mage T10 2P Bonus - target->CastSpell(target, 70753, true); - break; default: break; } |