diff options
author | ariel- <ariel-@users.noreply.github.com> | 2016-08-31 22:43:19 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2016-08-31 22:43:19 -0300 |
commit | 81ec57b94f2ded0504a3d4755d6cc410c93597ff (patch) | |
tree | b219c39665f8a787084a24137525fbfac1f9233a /src | |
parent | 9f15482b849d7a77a4a0cc68f18aabb8ee6c58c9 (diff) |
Core/Spells: Move Missile Barrage, Hot Streak and Brain Freeze mage talents to proc system. Also implement T8 4P Bonus.
Closes #1536
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; } |