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/server/game/Entities | |
| 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/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 25 |
1 files changed, 25 insertions, 0 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; } |
