aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/3.3.5/2016_08_31_01_world_335.sql5
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp25
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp8
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;
}