diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2017-12-30 20:28:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-12-30 20:28:41 +0100 |
| commit | d507a7e3388382960108b24143da48e5f912b4a7 (patch) | |
| tree | b4e3e62094e853cc8551126de438815779411cb7 /src/server/scripts/EasternKingdoms | |
| parent | 671a34a966aefa409966f6eb86f88ce671be9b36 (diff) | |
[3.3.5] CastSpell unclusterfucking (that's a word now) (#21123)
Core/Spell: The giant CastSpell unclusterfucking (that's a word now) of this generation.
- CastSpell now always takes three arguments - target, spellId, and a struct containing extra arguments
- This struct (CastSpellExtraArgs, see SpellDefines.h) serves as a conglomerate of every previous combination of the 20 billion different CastSpell overloads, all merged into one
- It has some great utility constructors - check them out! All of these can be used to implicitly construct the ExtraArgs object.
- A gajillion refactors to make everything behave the way it always has
Diffstat (limited to 'src/server/scripts/EasternKingdoms')
7 files changed, 42 insertions, 10 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp index a58a24da301..fe66aa4f87c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp @@ -259,9 +259,14 @@ struct boss_coren_direbrew : public BossAI SummonSister(NPC_URSULA_DIREBREW); break; case EVENT_SUMMON_MOLE_MACHINE: - me->CastCustomSpell(SPELL_MOLE_MACHINE_TARGET_PICKER, SPELLVALUE_MAX_TARGETS, 1, nullptr, true); + { + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, 1); + me->CastSpell(nullptr, SPELL_MOLE_MACHINE_TARGET_PICKER, args); events.Repeat(Seconds(15)); break; + } case EVENT_DIREBREW_DISARM: DoCastSelf(SPELL_DIREBREW_DISARM_PRE_CAST, true); events.Repeat(Seconds(20)); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp index f2e2a8e3e15..92636ea82e4 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp @@ -137,8 +137,12 @@ class spell_baron_geddon_inferno : public SpellScriptLoader void OnPeriodic(AuraEffect const* aurEff) { PreventDefaultAction(); - int32 damageForTick[8] = { 500, 500, 1000, 1000, 2000, 2000, 3000, 5000 }; - GetTarget()->CastCustomSpell(SPELL_INFERNO_DMG, SPELLVALUE_BASE_POINT0, damageForTick[aurEff->GetTickNumber() - 1], (Unit*)nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff); + static const int32 damageForTick[8] = { 500, 500, 1000, 1000, 2000, 2000, 3000, 5000 }; + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.TriggeringAura = aurEff; + args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, damageForTick[aurEff->GetTickNumber() - 1]); + GetTarget()->CastSpell(nullptr, SPELL_INFERNO_DMG, args); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp index 2cb87b96262..71064907e2d 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp @@ -340,7 +340,10 @@ public: enfeeble_targets[i] = target->GetGUID(); enfeeble_health[i] = target->GetHealth(); - target->CastSpell(target, SPELL_ENFEEBLE, true, 0, 0, me->GetGUID()); + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.OriginalCaster = me->GetGUID(); + target->CastSpell(target, SPELL_ENFEEBLE, args); target->SetHealth(1); } } diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp index 3ed2240d2a7..c5af513d78e 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp @@ -460,7 +460,7 @@ public: Unit* unit = ObjectAccessor::GetUnit(*me, FlameWreathTarget[i]); if (unit && !unit->IsWithinDist2d(FWTargPosX[i], FWTargPosY[i], 3)) { - unit->CastSpell(unit, 20476, true, 0, 0, me->GetGUID()); + unit->CastSpell(unit, 20476, me->GetGUID()); unit->CastSpell(unit, 11027, true); FlameWreathTarget[i].Clear(); } diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp index 3a10b0f5619..70eb2290903 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp @@ -236,8 +236,13 @@ public: { Unit* unit = ObjectAccessor::GetUnit(*me, (*i)->getUnitGuid()); if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) + { // Knockback into the air - unit->CastSpell(unit, SPELL_GRAVITY_LAPSE_DOT, true, 0, 0, me->GetGUID()); + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.OriginalCaster = me->GetGUID(); + unit->CastSpell(unit, SPELL_GRAVITY_LAPSE_DOT, args); + } } } @@ -251,7 +256,10 @@ public: if (unit && (unit->GetTypeId() == TYPEID_PLAYER)) { // Also needs an exception in spell system. - unit->CastSpell(unit, SPELL_GRAVITY_LAPSE_FLY, true, 0, 0, me->GetGUID()); + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.OriginalCaster = me->GetGUID(); + unit->CastSpell(unit, SPELL_GRAVITY_LAPSE_FLY, args); unit->SetCanFly(true); } } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index 42c9dd9d766..73339b8c820 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -171,7 +171,13 @@ class boss_akilzon : public CreatureScript if (Unit* target = (*i)) { if (Cloud && !Cloud->IsWithinDist(target, 6, false)) - Cloud->CastCustomSpell(target, SPELL_ZAP, &bp0, nullptr, nullptr, true, 0, 0, me->GetGUID()); + { + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.OriginalCaster = me->GetGUID(); + args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, bp0); + Cloud->CastSpell(target, SPELL_ZAP, args); + } } } @@ -190,7 +196,13 @@ class boss_akilzon : public CreatureScript trigger->SetHealth(100000); trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); if (Cloud) - Cloud->CastCustomSpell(trigger, /*43661*/SPELL_ZAP, &bp0, nullptr, nullptr, true, 0, 0, Cloud->GetGUID()); + { + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_FULL_MASK; + args.OriginalCaster = Cloud->GetGUID(); + args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, bp0); + Cloud->CastSpell(trigger, SPELL_ZAP, args); + } } } } diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp index fa617532e00..3bd255bd26a 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp @@ -1024,7 +1024,7 @@ class spell_hexlord_unstable_affliction : public SpellScriptLoader void HandleDispel(DispelInfo* dispelInfo) { if (Unit* caster = GetCaster()) - caster->CastSpell(dispelInfo->GetDispeller(), SPELL_WL_UNSTABLE_AFFL_DISPEL, true, nullptr, GetEffect(EFFECT_0)); + caster->CastSpell(dispelInfo->GetDispeller(), SPELL_WL_UNSTABLE_AFFL_DISPEL, GetEffect(EFFECT_0)); } void Register() override |
