diff options
-rw-r--r-- | sql/updates/world/3.3.5/2016_08_31_01_world_335.sql | 5 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 25 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 8 |
3 files changed, 30 insertions, 8 deletions
diff --git a/sql/updates/world/3.3.5/2016_08_31_01_world_335.sql b/sql/updates/world/3.3.5/2016_08_31_01_world_335.sql new file mode 100644 index 00000000000..54c4e162e1a --- /dev/null +++ b/sql/updates/world/3.3.5/2016_08_31_01_world_335.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_proc_event` WHERE `entry` IN (44401, 48108, 57761); +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(44401, 0, 3, 0x00000800, 0x00000000, 0x00000000, 4096, 0, 0, 0, 0), +(48108, 0, 3, 0x00400000, 0x00000000, 0x00000000, 65536, 0, 0, 0, 0), +(57761, 0, 3, 0x00000001, 0x00001000, 0x00000000, 65536, 0, 0, 0, 0); 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; } |