aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2017-12-30 20:28:41 +0100
committerGitHub <noreply@github.com>2017-12-30 20:28:41 +0100
commitd507a7e3388382960108b24143da48e5f912b4a7 (patch)
treeb4e3e62094e853cc8551126de438815779411cb7 /src/server/scripts
parent671a34a966aefa409966f6eb86f88ce671be9b36 (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')
-rw-r--r--src/server/scripts/Commands/cs_cast.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp5
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp12
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp6
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp5
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp7
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp2
-rw-r--r--src/server/scripts/Kalimdor/zone_silithus.cpp6
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp7
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp21
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp6
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp2
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp20
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp2
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp8
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp6
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp13
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp5
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp6
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp6
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp12
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp10
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp16
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp14
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp33
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp23
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp45
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp10
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp6
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp6
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp6
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp7
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp10
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp2
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp13
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp14
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp20
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp33
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp4
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp4
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp4
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_moragg.cpp8
-rw-r--r--src/server/scripts/Northrend/zone_sholazar_basin.cpp4
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp2
-rw-r--r--src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.cpp2
-rw-r--r--src/server/scripts/Outland/BlackTemple/black_temple.cpp2
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp11
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp4
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp7
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp6
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp3
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp2
-rw-r--r--src/server/scripts/Outland/GruulsLair/boss_gruul.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp2
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp2
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp2
-rw-r--r--src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp2
-rw-r--r--src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp2
-rw-r--r--src/server/scripts/Outland/boss_doomlord_kazzak.cpp4
-rw-r--r--src/server/scripts/Outland/boss_doomwalker.cpp2
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp2
-rw-r--r--src/server/scripts/Pet/pet_hunter.cpp4
-rw-r--r--src/server/scripts/Spells/spell_dk.cpp153
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp151
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp39
-rw-r--r--src/server/scripts/Spells/spell_holiday.cpp14
-rw-r--r--src/server/scripts/Spells/spell_hunter.cpp74
-rw-r--r--src/server/scripts/Spells/spell_item.cpp159
-rw-r--r--src/server/scripts/Spells/spell_mage.cpp52
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp112
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp74
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp21
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp26
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp122
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp69
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp68
-rw-r--r--src/server/scripts/World/mob_generic_creature.cpp2
-rw-r--r--src/server/scripts/World/npcs_special.cpp6
107 files changed, 1107 insertions, 665 deletions
diff --git a/src/server/scripts/Commands/cs_cast.cpp b/src/server/scripts/Commands/cs_cast.cpp
index 3143c44d567..1d136e23fad 100644
--- a/src/server/scripts/Commands/cs_cast.cpp
+++ b/src/server/scripts/Commands/cs_cast.cpp
@@ -171,8 +171,7 @@ public:
TriggerCastFlags triggered = (triggeredStr != nullptr) ? TRIGGERED_FULL_DEBUG_MASK : TRIGGERED_NONE;
float x, y, z;
handler->GetSession()->GetPlayer()->GetClosePoint(x, y, z, dist);
-
- handler->GetSession()->GetPlayer()->CastSpell(x, y, z, spellId, triggered);
+ handler->GetSession()->GetPlayer()->CastSpell({ x, y, z }, spellId, triggered);
return true;
}
@@ -274,7 +273,7 @@ public:
}
TriggerCastFlags triggered = (triggeredStr != nullptr) ? TRIGGERED_FULL_DEBUG_MASK : TRIGGERED_NONE;
- caster->CastSpell(x, y, z, spellId, triggered);
+ caster->CastSpell({ x, y, z }, spellId, triggered);
return true;
}
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
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp
index 885d611e3bc..f1495636cbf 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp
@@ -284,8 +284,10 @@ class spell_anetheron_vampiric_aura : public SpellScriptLoader
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 bp = damageInfo->GetDamage() * 3;
- eventInfo.GetActor()->CastCustomSpell(SPELL_VAMPIRIC_AURA_HEAL, SPELLVALUE_BASE_POINT0, bp, eventInfo.GetActor(), true, nullptr, aurEff);
+ Unit* actor = eventInfo.GetActor();
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, damageInfo->GetDamage() * 3);
+ actor->CastSpell(actor, SPELL_VAMPIRIC_AURA_HEAL, args);
}
void Register() override
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp
index caed3f73324..16ddfd74d73 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp
@@ -474,8 +474,10 @@ public:
DoomfireSpiritGUID = summoned->GetGUID();
break;
case NPC_DOOMFIRE:
+ {
summoned->CastSpell(summoned, SPELL_DOOMFIRE_SPAWN, false);
- summoned->CastSpell(summoned, SPELL_DOOMFIRE, true, 0, 0, me->GetGUID());
+
+ summoned->CastSpell(summoned, SPELL_DOOMFIRE, me->GetGUID());
if (Unit* DoomfireSpirit = ObjectAccessor::GetUnit(*me, DoomfireSpiritGUID))
{
@@ -483,6 +485,7 @@ public:
DoomfireSpiritGUID.Clear();
}
break;
+ }
default:
break;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp
index fc26c35a314..a7fefcf21b1 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp
@@ -216,7 +216,7 @@ class spell_mark_of_kazrogal : public SpellScriptLoader
if (target->GetPower(POWER_MANA) == 0)
{
- target->CastSpell(target, SPELL_MARK_DAMAGE, true, nullptr, aurEff);
+ target->CastSpell(target, SPELL_MARK_DAMAGE, aurEff);
// Remove aura
SetDuration(0);
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp
index d4fb3b01a68..9a602905382 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp
@@ -1339,7 +1339,7 @@ public:
{
if (StrikeTimer <= diff)
{
- me->CastSpell(DummyTarget[0], DummyTarget[1], DummyTarget[2], SPELL_GARGOYLE_STRIKE, false);
+ me->CastSpell({ DummyTarget[0], DummyTarget[1], DummyTarget[2] }, SPELL_GARGOYLE_STRIKE, false);
StrikeTimer = 2000 + rand32() % 1000;
} else StrikeTimer -= diff;
}
@@ -1452,8 +1452,9 @@ public:
EnterEvadeMode();
return;
}
- int dmg = 500 + rand32() % 700;
- me->CastCustomSpell(me->GetVictim(), SPELL_EXPLODING_SHOT, &dmg, 0, 0, false);
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, 500 + rand32() % 700);
+ me->CastSpell(me->GetVictim(), SPELL_EXPLODING_SHOT, args);
ExplodeTimer = 5000 + rand32() % 5000;
} else ExplodeTimer -= diff;
DoMeleeAttackIfReady();
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
index c657a47ddcb..90fab0eee04 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp
@@ -758,7 +758,7 @@ public:
//Set target in stomach
Stomach_Map[target->GetGUID()] = true;
target->InterruptNonMeleeSpells(false);
- target->CastSpell(target, SPELL_MOUTH_TENTACLE, true, nullptr, nullptr, me->GetGUID());
+ target->CastSpell(target, SPELL_MOUTH_TENTACLE, me->GetGUID());
StomachEnterTarget = target->GetGUID();
StomachEnterVisTimer = 3800;
}
diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp
index 525e7e688c3..63e65016bec 100644
--- a/src/server/scripts/Kalimdor/zone_silithus.cpp
+++ b/src/server/scripts/Kalimdor/zone_silithus.cpp
@@ -504,7 +504,7 @@ public:
DoCast(player, SPELL_ARCANE_CHANNELING, true);//Arcane Channeling
break;
case 35:
- me->CastSpell(-8088, 1520.43f, 2.67f, SPELL_TIME_STOP, true);
+ me->CastSpell({ -8088, 1520.43f, 2.67f }, SPELL_TIME_STOP, true);
break;
case 36:
DoCast(player, SPELL_CALL_PRISMATIC_BARRIER, true);
@@ -554,7 +554,7 @@ public:
break;
case 50:
Fandral->AI()->Talk(FANDRAL_EMOTE_2);
- Fandral->CastSpell(-8127, 1525, 17.5f, SPELL_THROW_HAMMER, true);
+ Fandral->CastSpell({ -8127, 1525, 17.5f }, SPELL_THROW_HAMMER, true);
break;
case 51:
{
@@ -1420,7 +1420,7 @@ class spell_silithus_summon_cultist_periodic : public AuraScript
// All these spells trigger a spell that requires reagents; if the
// triggered spell is cast as "triggered", reagents are not consumed
if (Unit* caster = GetCaster())
- caster->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST), nullptr, aurEff);
+ caster->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)).SetTriggeringAura(aurEff));
}
void Register() override
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
index 6eb1462da41..d578fa29d34 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp
@@ -258,7 +258,12 @@ class spell_ahn_kahet_swarm : public SpellScriptLoader
aura->RefreshDuration();
}
else
- GetCaster()->CastCustomSpell(SPELL_SWARM_BUFF, SPELLVALUE_AURA_STACK, _targetCount, GetCaster(), TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args;
+ args.TriggerFlags = TRIGGERED_FULL_MASK;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, _targetCount);
+ GetCaster()->CastSpell(GetCaster(), SPELL_SWARM_BUFF, args);
+ }
}
else
GetCaster()->RemoveAurasDueToSpell(SPELL_SWARM_BUFF);
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index e8a83be810f..0f333dc8c9c 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -348,7 +348,7 @@ class boss_halion : public CreatureScript
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true, true, -SPELL_TWILIGHT_REALM))
{
_meteorStrikePos = target->GetPosition();
- me->CastSpell(_meteorStrikePos.GetPositionX(), _meteorStrikePos.GetPositionY(), _meteorStrikePos.GetPositionZ(), SPELL_METEOR_STRIKE, true, nullptr, nullptr, me->GetGUID());
+ me->CastSpell(_meteorStrikePos, SPELL_METEOR_STRIKE, me->GetGUID());
Talk(SAY_METEOR_STRIKE);
}
events.ScheduleEvent(EVENT_METEOR_STRIKE, Seconds(38));
@@ -1241,11 +1241,15 @@ class npc_combustion_consumption : public CreatureScript
if (type != DATA_STACKS_DISPELLED || !_damageSpell || !_explosionSpell || !summoner)
return;
- me->CastCustomSpell(SPELL_SCALE_AURA, SPELLVALUE_AURA_STACK, stackAmount + 1, me);
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, stackAmount + 1);
+ me->CastSpell(me, SPELL_SCALE_AURA, args);
DoCastSelf(_damageSpell);
int32 damage = 1200 + (stackAmount * 1290); // Needs more research.
- summoner->CastCustomSpell(_explosionSpell, SPELLVALUE_BASE_POINT0, damage, summoner);
+ CastSpellExtraArgs args2;
+ args2.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, damage);
+ summoner->CastSpell(summoner, _explosionSpell, args2);
}
void UpdateAI(uint32 /*diff*/) override { }
@@ -1511,7 +1515,10 @@ class spell_halion_combustion_consumption_periodic : public SpellScriptLoader
uint32 triggerSpell = GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell;
int32 radius = caster->GetObjectScale() * M_PI * 10000 / 3;
- caster->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, radius, (Unit*)nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff, caster->GetGUID());
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = caster->GetGUID();
+ args.SpellValueOverrides.AddMod(SPELLVALUE_RADIUS_MOD, radius);
+ caster->CastSpell(nullptr, triggerSpell, args);
}
void Register() override
@@ -1563,7 +1570,9 @@ class spell_halion_marks : public SpellScriptLoader
return;
// Stacks marker
- GetTarget()->CastCustomSpell(_summonSpellId, SPELLVALUE_BASE_POINT1, aurEff->GetBase()->GetStackAmount(), GetTarget(), TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID());
+ CastSpellExtraArgs args(GetCasterGUID());
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, aurEff->GetBase()->GetStackAmount());
+ GetTarget()->CastSpell(GetTarget(), _summonSpellId, args);
}
void Register() override
@@ -1787,7 +1796,7 @@ class spell_halion_twilight_phasing : public SpellScriptLoader
void Phase()
{
Unit* caster = GetCaster();
- caster->CastSpell(caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), SPELL_SUMMON_TWILIGHT_PORTAL, true);
+ caster->CastSpell(caster->GetPosition(), SPELL_SUMMON_TWILIGHT_PORTAL, true);
caster->GetMap()->SummonCreature(NPC_TWILIGHT_HALION, HalionSpawnPos);
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
index 20d8333bbab..9a0f0cfbd2d 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
@@ -196,7 +196,11 @@ class spell_ruby_sanctum_rallying_shout : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
if (_targetCount && !GetCaster()->HasAura(SPELL_RALLY))
- GetCaster()->CastCustomSpell(SPELL_RALLY, SPELLVALUE_AURA_STACK, _targetCount, GetCaster(), TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, _targetCount);
+ GetCaster()->CastSpell(GetCaster(), SPELL_RALLY, args);
+ }
}
void Register() override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
index 2d270a2026e..34e08a43f50 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
@@ -668,7 +668,7 @@ class spell_paletress_summon_memory : public SpellScriptLoader
void HandleScript(SpellEffIndex /*effIndex*/)
{
- GetHitUnit()->CastSpell(GetHitUnit(), memorySpellId[urand(0, 24)], true, nullptr, nullptr, GetCaster()->GetGUID());
+ GetHitUnit()->CastSpell(GetHitUnit(), memorySpellId[urand(0, 24)], GetCaster()->GetGUID());
}
void Register() override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
index a5c155714e4..1f358515848 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp
@@ -310,12 +310,20 @@ class boss_anubarak_trial : public CreatureScript
events.ScheduleEvent(EVENT_FREEZE_SLASH, 15*IN_MILLISECONDS, 0, PHASE_MELEE);
return;
case EVENT_PENETRATING_COLD:
- me->CastCustomSpell(SPELL_PENETRATING_COLD, SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5, 2, 5));
- events.ScheduleEvent(EVENT_PENETRATING_COLD, 20*IN_MILLISECONDS, 0, PHASE_MELEE);
+ {
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, RAID_MODE(2, 5, 2, 5));
+ me->CastSpell(nullptr, SPELL_PENETRATING_COLD, args);
+ events.ScheduleEvent(EVENT_PENETRATING_COLD, 20 * IN_MILLISECONDS, 0, PHASE_MELEE);
return;
+ }
case EVENT_SUMMON_NERUBIAN:
if (IsHeroic() || !_reachedPhase3)
- me->CastCustomSpell(SPELL_SUMMON_BURROWER, SPELLVALUE_MAX_TARGETS, RAID_MODE(1, 2, 2, 4));
+ {
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, RAID_MODE(1, 2, 2, 4));
+ me->CastSpell(nullptr, SPELL_SUMMON_BURROWER, args);
+ }
events.ScheduleEvent(EVENT_SUMMON_NERUBIAN, 45*IN_MILLISECONDS, 0, PHASE_MELEE);
return;
case EVENT_NERUBIAN_SHADOW_STRIKE:
@@ -928,10 +936,12 @@ class spell_anubarak_leeching_swarm : public SpellScriptLoader
int32 lifeLeeched = target->CountPctFromCurHealth(aurEff->GetAmount());
if (lifeLeeched < 250)
lifeLeeched = 250;
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, lifeLeeched);
// Damage
- caster->CastCustomSpell(target, SPELL_LEECHING_SWARM_DMG, &lifeLeeched, 0, 0, true);
+ caster->CastSpell(target, SPELL_LEECHING_SWARM_DMG, args);
// Heal
- caster->CastCustomSpell(caster, SPELL_LEECHING_SWARM_HEAL, &lifeLeeched, 0, 0, true);
+ caster->CastSpell(caster, SPELL_LEECHING_SWARM_HEAL, args);
}
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
index 4157ddfedd5..f4806a37f36 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp
@@ -2265,7 +2265,7 @@ class spell_faction_champion_warl_unstable_affliction : public SpellScriptLoader
void HandleDispel(DispelInfo* dispelInfo)
{
if (Unit* caster = GetCaster())
- caster->CastSpell(dispelInfo->GetDispeller(), SPELL_UNSTABLE_AFFLICTION_DISPEL, true, nullptr, GetEffect(EFFECT_0));
+ caster->CastSpell(dispelInfo->GetDispeller(), SPELL_UNSTABLE_AFFLICTION_DISPEL, GetEffect(EFFECT_0));
}
void Register() override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
index e4da2837f62..873e85a5bdc 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp
@@ -221,9 +221,13 @@ class boss_jaraxxus : public CreatureScript
events.ScheduleEvent(EVENT_INCINERATE_FLESH, urand(20*IN_MILLISECONDS, 25*IN_MILLISECONDS));
break;
case EVENT_NETHER_POWER:
- me->CastCustomSpell(SPELL_NETHER_POWER, SPELLVALUE_AURA_STACK, RAID_MODE<uint32>(5, 10, 5, 10), me, true);
- events.ScheduleEvent(EVENT_NETHER_POWER, 40*IN_MILLISECONDS);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, RAID_MODE(5, 10, 5, 10));
+ me->CastSpell(me, SPELL_NETHER_POWER, args);
+ events.ScheduleEvent(EVENT_NETHER_POWER, 40 * IN_MILLISECONDS);
break;
+ }
case EVENT_LEGION_FLAME:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, true, -SPELL_LORD_HITTIN))
{
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
index e72a96ea0d3..8c05d9c0b01 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp
@@ -1152,7 +1152,7 @@ class spell_jormungars_paralytic_toxin : public AuraScript
slowEff->ChangeAmount(newAmount);
if (newAmount == -100 && !GetTarget()->HasAura(SPELL_PARALYSIS))
- GetTarget()->CastSpell(GetTarget(), SPELL_PARALYSIS, true, nullptr, slowEff, GetCasterGUID());
+ GetTarget()->CastSpell(GetTarget(), SPELL_PARALYSIS, CastSpellExtraArgs(slowEff).SetOriginalCaster(GetCasterGUID()));
}
}
@@ -1197,7 +1197,9 @@ class spell_jormungars_slime_pool : public AuraScript
PreventDefaultAction();
int32 const radius = static_cast<int32>(((aurEff->GetTickNumber() / 60.f) * 0.9f + 0.1f) * 10000.f * 2.f / 3.f);
- GetTarget()->CastCustomSpell(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, SPELLVALUE_RADIUS_MOD, radius, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_RADIUS_MOD, radius);
+ GetTarget()->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, args);
}
void Register() override
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
index 298c2353f6a..ab6e58bdb5f 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp
@@ -321,7 +321,11 @@ struct boss_twin_baseAI : public BossAI
break;
case EVENT_TOUCH:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 200.0f, true, true, OtherEssenceSpellId))
- me->CastCustomSpell(TouchSpellId, SPELLVALUE_MAX_TARGETS, 1, target, false);
+ {
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, 1); // @todo spellmgr correction instead?
+ me->CastSpell(target, TouchSpellId, args);
+ }
events.ScheduleEvent(EVENT_TOUCH, urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS));
break;
case EVENT_BERSERK:
@@ -726,8 +730,11 @@ class spell_bullet_controller : public AuraScript
if (!caster)
return;
- caster->CastCustomSpell(SPELL_SUMMON_PERIODIC_LIGHT, SPELLVALUE_MAX_TARGETS, urand(1, 6), GetTarget(), true);
- caster->CastCustomSpell(SPELL_SUMMON_PERIODIC_DARK, SPELLVALUE_MAX_TARGETS, urand(1, 6), GetTarget(), true);
+ CastSpellExtraArgs args1(TRIGGERED_FULL_MASK), args2(TRIGGERED_FULL_MASK);
+ args1.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, urand(1, 6));
+ args2.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, urand(1, 6));
+ caster->CastSpell(GetTarget(), SPELL_SUMMON_PERIODIC_LIGHT, args1);
+ caster->CastSpell(GetTarget(), SPELL_SUMMON_PERIODIC_DARK, args2);
}
void Register() override
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
index a70bf5992e8..763b294e5f7 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp
@@ -139,7 +139,7 @@ class boss_trollgore : public CreatureScript
case EVENT_SPAWN:
for (uint8 i = 0; i < 3; ++i)
if (Creature* trigger = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TROLLGORE_INVADER_SUMMONER_1 + i)))
- trigger->CastSpell(trigger, RAND(SPELL_SUMMON_INVADER_A, SPELL_SUMMON_INVADER_B, SPELL_SUMMON_INVADER_C), true, nullptr, nullptr, me->GetGUID());
+ trigger->CastSpell(trigger, RAND(SPELL_SUMMON_INVADER_A, SPELL_SUMMON_INVADER_B, SPELL_SUMMON_INVADER_C), me->GetGUID());
events.ScheduleEvent(EVENT_SPAWN, urand(30000, 40000));
break;
@@ -277,7 +277,7 @@ class spell_trollgore_corpse_explode : public SpellScriptLoader
{
if (aurEff->GetTickNumber() == 2)
if (Unit* caster = GetCaster())
- caster->CastSpell(GetTarget(), SPELL_CORPSE_EXPLODE_DAMAGE, true, nullptr, aurEff);
+ caster->CastSpell(GetTarget(), SPELL_CORPSE_EXPLODE_DAMAGE, aurEff);
}
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
index e0ac981b69c..e095cbad88f 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp
@@ -198,7 +198,7 @@ class boss_bronjahm : public CreatureScript
me->CastSpell(me, SPELL_SOULSTORM, false);
break;
case EVENT_FEAR:
- me->CastCustomSpell(SPELL_FEAR, SPELLVALUE_MAX_TARGETS, 1, nullptr, false);
+ me->CastSpell(nullptr, SPELL_FEAR, { SPELLVALUE_MAX_TARGETS, 1 });
events.ScheduleEvent(EVENT_FEAR, urand(8000, 12000), 0, PHASE_2);
break;
default:
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
index 32b815f1f6d..ef078cb1ed6 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
@@ -410,8 +410,9 @@ class spell_devourer_of_souls_mirrored_soul_proc : public SpellScriptLoader
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 damage = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), 45);
- GetTarget()->CastCustomSpell(SPELL_MIRRORED_SOUL_DAMAGE, SPELLVALUE_BASE_POINT0, damage, GetCaster(), true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), 45));
+ GetTarget()->CastSpell(GetCaster(), SPELL_MIRRORED_SOUL_DAMAGE, args);
}
void Register() override
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
index 9f38ef11339..2835bc389cb 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp
@@ -151,7 +151,11 @@ class spell_marwyn_shared_suffering : public SpellScriptLoader
{
int32 remainingDamage = aurEff->GetAmount() * aurEff->GetRemainingTicks();
if (remainingDamage > 0)
- caster->CastCustomSpell(SPELL_SHARED_SUFFERING_DISPEL, SPELLVALUE_BASE_POINT1, remainingDamage, GetTarget(), TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, remainingDamage);
+ caster->CastSpell(GetTarget(), SPELL_SHARED_SUFFERING_DISPEL, args);
+ }
}
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
index 8b558d8e913..373bc4d2f60 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp
@@ -266,7 +266,7 @@ class boss_ick : public CreatureScript
krick->AI()->Talk(SAY_KRICK_BARRAGE_1);
krick->AI()->Talk(SAY_KRICK_BARRAGE_2);
krick->CastSpell(krick, SPELL_EXPLOSIVE_BARRAGE_KRICK, true);
- DoCast(me, SPELL_EXPLOSIVE_BARRAGE_ICK);
+ DoCastAOE(SPELL_EXPLOSIVE_BARRAGE_ICK);
}
events.DelayEvents(20000);
break;
@@ -275,12 +275,12 @@ class boss_ick : public CreatureScript
krick->AI()->Talk(SAY_KRICK_POISON_NOVA);
Talk(SAY_ICK_POISON_NOVA);
- DoCast(me, SPELL_POISON_NOVA);
+ DoCastAOE(SPELL_POISON_NOVA);
break;
case EVENT_PURSUIT:
if (Creature* krick = GetKrick())
krick->AI()->Talk(SAY_KRICK_CHASE);
- me->CastCustomSpell(SPELL_PURSUIT, SPELLVALUE_MAX_TARGETS, 1, me);
+ DoCastSelf(SPELL_PURSUIT, { SPELLVALUE_MAX_TARGETS, 1 });
break;
default:
break;
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index 6479765f204..c335215f8ab 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -404,13 +404,21 @@ class player_overlord_brandAI : public PlayerAI
{
if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannusGUID))
if (Unit* victim = tyrannus->GetVictim())
- me->CastCustomSpell(SPELL_OVERLORD_BRAND_DAMAGE, SPELLVALUE_BASE_POINT0, damage, victim, true, nullptr, nullptr, tyrannus->GetGUID());
+ {
+ CastSpellExtraArgs args(tyrannus->GetGUID());
+ args.SpellValueOverrides.AddBP0(damage);
+ me->CastSpell(victim, SPELL_OVERLORD_BRAND_DAMAGE, args);
+ }
}
void HealDone(Unit* /*target*/, uint32& addHealth) override
{
if (Creature* tyrannus = ObjectAccessor::GetCreature(*me, _tyrannusGUID))
- me->CastCustomSpell(SPELL_OVERLORD_BRAND_HEAL, SPELLVALUE_BASE_POINT0, int32(addHealth * 5.5f), tyrannus, true, nullptr, nullptr, tyrannus->GetGUID());
+ {
+ CastSpellExtraArgs args(tyrannus->GetGUID());
+ args.SpellValueOverrides.AddBP0(addHealth * 5.5f);
+ me->CastSpell(tyrannus, SPELL_OVERLORD_BRAND_HEAL, args);
+ }
}
void UpdateAI(uint32 /*diff*/) override { }
diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
index 9eac3162096..09d5cd36388 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp
@@ -234,7 +234,9 @@ class spell_moorabi_mojo_frenzy : public SpellScriptLoader
Unit* owner = GetUnitOwner();
int32 castSpeedBonus = (100.0f - owner->GetHealthPct()) * 4; // between 0% and 400% cast speed bonus
- owner->CastCustomSpell(SPELL_MOJO_FRENZY_CAST_SPEED, SPELLVALUE_BASE_POINT0, castSpeedBonus, owner, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(castSpeedBonus);
+ owner->CastSpell(owner, SPELL_MOJO_FRENZY_CAST_SPEED, args);
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index 7b06049fce8..06d03c214f1 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -807,7 +807,7 @@ class boss_prince_valanar_icc : public CreatureScript
{
case NPC_KINETIC_BOMB_TARGET:
summon->SetReactState(REACT_PASSIVE);
- summon->CastSpell(summon, SPELL_KINETIC_BOMB, true, nullptr, nullptr, me->GetGUID());
+ summon->CastSpell(summon, SPELL_KINETIC_BOMB, me->GetGUID());
break;
case NPC_KINETIC_BOMB:
{
@@ -1471,7 +1471,7 @@ class spell_blood_council_shadow_prison : public SpellScriptLoader
void HandleDummyTick(AuraEffect const* aurEff)
{
if (GetTarget()->isMoving())
- GetTarget()->CastSpell(GetTarget(), SPELL_SHADOW_PRISON_DAMAGE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_SHADOW_PRISON_DAMAGE, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index 5c83add5b8c..269f111278f 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -728,8 +728,9 @@ class spell_blood_queen_essence_of_the_blood_queen : public SpellScriptLoader
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 heal = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_HEAL, SPELLVALUE_BASE_POINT0, heal, GetTarget(), TRIGGERED_FULL_MASK, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()));
+ GetTarget()->CastSpell(GetTarget(), SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_HEAL, args);
}
void Register() override
@@ -813,7 +814,10 @@ class spell_blood_queen_pact_of_the_darkfallen_dmg : public SpellScriptLoader
int32 damage = damageSpell->Effects[EFFECT_0].CalcValue();
float multiplier = 0.3375f + 0.1f * uint32(aurEff->GetTickNumber()/10); // do not convert to 0.01f - we need tick number/10 as INT (damage increases every 10 ticks)
damage = int32(damage * multiplier);
- GetTarget()->CastCustomSpell(SPELL_PACT_OF_THE_DARKFALLEN_DAMAGE, SPELLVALUE_BASE_POINT0, damage, GetTarget(), true);
+
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ GetTarget()->CastSpell(GetTarget(), SPELL_PACT_OF_THE_DARKFALLEN_DAMAGE, args);
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index e2951277101..526edf45b67 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -434,7 +434,11 @@ class boss_deathbringer_saurfang : public CreatureScript
case 72445:
case 72446:
if (me->GetPower(POWER_ENERGY) != me->GetMaxPower(POWER_ENERGY))
- target->CastCustomSpell(SPELL_BLOOD_LINK_DUMMY, SPELLVALUE_BASE_POINT0, 1, (Unit*)nullptr, true);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(1);
+ target->CastSpell(nullptr, SPELL_BLOOD_LINK_DUMMY, args);
+ }
break;
default:
break;
@@ -1016,7 +1020,9 @@ class spell_deathbringer_blood_link : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- GetHitUnit()->CastCustomSpell(SPELL_BLOOD_LINK_POWER, SPELLVALUE_BASE_POINT0, GetEffectValue(), GetHitUnit(), true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetEffectValue());
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_BLOOD_LINK_POWER, args);
PreventHitDefaultEffect(EFFECT_0);
}
@@ -1132,7 +1138,7 @@ class spell_deathbringer_rune_of_blood : public SpellScriptLoader
void HandleScript(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex); // make this the default handler
- GetHitUnit()->CastCustomSpell(SPELL_BLOOD_LINK_DUMMY, SPELLVALUE_BASE_POINT0, 1, (Unit*)nullptr, true);
+ GetHitUnit()->CastSpell(nullptr, SPELL_BLOOD_LINK_DUMMY, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(1));
}
void Register() override
@@ -1165,7 +1171,7 @@ class spell_deathbringer_blood_beast_blood_link : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetProcTarget()->CastCustomSpell(SPELL_BLOOD_LINK_DUMMY, SPELLVALUE_BASE_POINT0, 3, (Unit*)nullptr, true, nullptr, aurEff);
+ eventInfo.GetProcTarget()->CastSpell(nullptr, SPELL_BLOOD_LINK_DUMMY, CastSpellExtraArgs(aurEff).AddSpellBP0(3));
}
void Register() override
@@ -1197,7 +1203,7 @@ class spell_deathbringer_blood_nova : public SpellScriptLoader
void HandleScript(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex); // make this the default handler
- GetHitUnit()->CastCustomSpell(SPELL_BLOOD_LINK_DUMMY, SPELLVALUE_BASE_POINT0, 2, (Unit*)nullptr, true);
+ GetHitUnit()->CastSpell(nullptr, SPELL_BLOOD_LINK_DUMMY, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(2));
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index 3ed6cc12587..b6920f0bf79 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -201,7 +201,7 @@ class boss_festergut : public CreatureScript
// just cast and dont bother with target, conditions will handle it
++_inhaleCounter;
if (_inhaleCounter < 3)
- me->CastSpell(me, gaseousBlight[_inhaleCounter], true, nullptr, nullptr, me->GetGUID());
+ me->CastSpell(me, gaseousBlight[_inhaleCounter], me->GetGUID());
}
events.ScheduleEvent(EVENT_INHALE_BLIGHT, urand(33500, 35000));
@@ -236,7 +236,7 @@ class boss_festergut : public CreatureScript
case EVENT_GAS_SPORE:
Talk(EMOTE_WARN_GAS_SPORE);
Talk(EMOTE_GAS_SPORE);
- me->CastCustomSpell(SPELL_GAS_SPORE, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 3, 2, 3), me);
+ me->CastSpell(me, SPELL_GAS_SPORE, CastSpellExtraArgs().AddSpellMod(SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 3, 2, 3)));
events.ScheduleEvent(EVENT_GAS_SPORE, urand(40000, 45000));
events.RescheduleEvent(EVENT_VILE_GAS, urand(28000, 35000));
break;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
index 0392e2244a8..25d6520b555 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
@@ -1847,7 +1847,9 @@ class spell_igb_rocket_pack : public SpellScriptLoader
void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
SpellInfo const* damageInfo = sSpellMgr->AssertSpellInfo(SPELL_ROCKET_PACK_DAMAGE);
- GetTarget()->CastCustomSpell(SPELL_ROCKET_PACK_DAMAGE, SPELLVALUE_BASE_POINT0, 2 * (damageInfo->Effects[EFFECT_0].CalcValue() + aurEff->GetTickNumber() * aurEff->GetAmplitude()), nullptr, TRIGGERED_FULL_MASK);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(2 * (damageInfo->Effects[EFFECT_0].CalcValue() + aurEff->GetTickNumber() * aurEff->GetAmplitude()));
+ GetTarget()->CastSpell(nullptr, SPELL_ROCKET_PACK_DAMAGE, args);
GetTarget()->CastSpell(nullptr, SPELL_ROCKET_BURST, TRIGGERED_FULL_MASK);
}
@@ -2253,7 +2255,9 @@ class spell_igb_burning_pitch : public SpellScriptLoader
void HandleDummy(SpellEffIndex effIndex)
{
PreventHitDefaultEffect(effIndex);
- GetCaster()->CastCustomSpell(uint32(GetEffectValue()), SPELLVALUE_BASE_POINT0, 8000, nullptr, TRIGGERED_FULL_MASK);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(8000);
+ GetCaster()->CastSpell(nullptr, GetEffectValue(), args);
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_BURNING_PITCH, TRIGGERED_FULL_MASK);
}
@@ -2319,7 +2323,11 @@ class spell_igb_rocket_artillery_explosion : public SpellScriptLoader
void DamageGunship(SpellEffIndex /*effIndex*/)
{
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- GetCaster()->CastCustomSpell(instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? SPELL_BURNING_PITCH_DAMAGE_A : SPELL_BURNING_PITCH_DAMAGE_H, SPELLVALUE_BASE_POINT0, 5000, nullptr, TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(5000);
+ GetCaster()->CastSpell(nullptr, instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? SPELL_BURNING_PITCH_DAMAGE_A : SPELL_BURNING_PITCH_DAMAGE_H, args);
+ }
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 370ba1bffca..6a181cdada3 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -436,7 +436,9 @@ class boss_lady_deathwhisper : public CreatureScript
})
.Schedule(Seconds(12), GROUP_TWO, [this](TaskContext summonShade)
{
- me->CastCustomSpell(SPELL_SUMMON_SPIRITS, SPELLVALUE_MAX_TARGETS, Is25ManRaid() ? 2 : 1);
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, Is25ManRaid() ? 2 : 1);
+ me->CastSpell(nullptr, SPELL_SUMMON_SPIRITS, args);
summonShade.Repeat();
});
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index e19b4187138..0c3d49a9fb7 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -383,7 +383,7 @@ class boss_professor_putricide : public CreatureScript
me->SetSpeedRate(MOVE_RUN, _baseSpeed);
DoAction(ACTION_FESTERGUT_GAS);
if (Creature* festergut = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FESTERGUT)))
- festergut->CastSpell(festergut, SPELL_GASEOUS_BLIGHT_LARGE, false, nullptr, nullptr, festergut->GetGUID());
+ festergut->CastSpell(festergut, SPELL_GASEOUS_BLIGHT_LARGE, CastSpellExtraArgs().SetOriginalCaster(festergut->GetGUID()));
break;
case POINT_ROTFACE:
instance->SetBossState(DATA_ROTFACE, IN_PROGRESS); // needed here for delayed gate close
@@ -480,7 +480,7 @@ class boss_professor_putricide : public CreatureScript
case ACTION_ROTFACE_OOZE:
Talk(SAY_ROTFACE_OOZE_FLOOD);
if (Creature* dummy = ObjectAccessor::GetCreature(*me, _oozeFloodDummyGUIDs[_oozeFloodStage]))
- dummy->CastSpell(dummy, oozeFloodSpells[_oozeFloodStage], true, nullptr, nullptr, me->GetGUID()); // cast from self for LoS (with prof's GUID for logs)
+ dummy->CastSpell(dummy, oozeFloodSpells[_oozeFloodStage], me->GetGUID()); // cast from self for LoS (with prof's GUID for logs)
if (++_oozeFloodStage == 4)
_oozeFloodStage = 0;
break;
@@ -589,7 +589,7 @@ class boss_professor_putricide : public CreatureScript
EnterEvadeMode();
break;
case EVENT_FESTERGUT_GOO:
- me->CastCustomSpell(SPELL_MALLEABLE_GOO_SUMMON, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
+ DoCastAOE(SPELL_MALLEABLE_GOO_SUMMON, CastSpellExtraArgs(true).AddSpellMod(SPELLVALUE_MAX_TARGETS, 1));
events.ScheduleEvent(EVENT_FESTERGUT_GOO, (Is25ManRaid() ? 10000 : 30000) + urand(0, 5000), 0, PHASE_FESTERGUT);
break;
case EVENT_ROTFACE_DIES:
@@ -822,7 +822,9 @@ class npc_gas_cloud : public CreatureScript
void CastMainSpell() override
{
- me->CastCustomSpell(SPELL_GASEOUS_BLOAT, SPELLVALUE_AURA_STACK, 10, me, false);
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, 10);
+ me->CastSpell(me, SPELL_GASEOUS_BLOAT, args);
}
private:
@@ -851,7 +853,11 @@ class spell_putricide_gaseous_bloat : public SpellScriptLoader
{
target->RemoveAuraFromStack(GetSpellInfo()->Id, GetCasterGUID());
if (!target->HasAura(GetId()))
- caster->CastCustomSpell(SPELL_GASEOUS_BLOAT, SPELLVALUE_AURA_STACK, 10, caster, false);
+ {
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, 10);
+ caster->CastSpell(caster, SPELL_GASEOUS_BLOAT, args);
+ }
}
}
@@ -865,7 +871,9 @@ class spell_putricide_gaseous_bloat : public SpellScriptLoader
for (uint8 i = 1; i <= stack; ++i)
dmg += mod * i;
- caster->CastCustomSpell(SPELL_EXPUNGED_GAS, SPELLVALUE_BASE_POINT0, dmg);
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddBP0(dmg);
+ caster->CastSpell(nullptr, SPELL_EXPUNGED_GAS, args);
}
void Register() override
@@ -1118,7 +1126,7 @@ class spell_putricide_ooze_tank_protection : public SpellScriptLoader
PreventDefaultAction();
Unit* actionTarget = eventInfo.GetActionTarget();
- actionTarget->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff);
+ actionTarget->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, aurEff);
}
void Register() override
@@ -1152,7 +1160,7 @@ class spell_putricide_choking_gas_bomb : public SpellScriptLoader
continue;
uint32 spellId = uint32(GetSpellInfo()->Effects[i].CalcValue());
- GetCaster()->CastSpell(GetCaster(), spellId, true, nullptr, nullptr, GetCaster()->GetGUID());
+ GetCaster()->CastSpell(GetCaster(), spellId, GetCaster()->GetGUID());
}
}
@@ -1323,7 +1331,10 @@ class spell_putricide_mutated_plague : public SpellScriptLoader
damage *= int32(pow(multiplier, GetStackAmount()));
damage = int32(damage * 1.5f);
- GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_BASE_POINT0, damage, GetTarget(), true, nullptr, aurEff, GetCasterGUID());
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(damage);
+ GetTarget()->CastSpell(GetTarget(), triggerSpell, args);
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1335,7 +1346,9 @@ class spell_putricide_mutated_plague : public SpellScriptLoader
return;
int32 heal = healSpellInfo->Effects[0].CalcValue() * GetStackAmount();
- GetTarget()->CastCustomSpell(healSpell, SPELLVALUE_BASE_POINT0, heal, GetTarget(), true, nullptr, nullptr, GetCasterGUID());
+ CastSpellExtraArgs args(GetCasterGUID());
+ args.SpellValueOverrides.AddBP0(heal);
+ GetTarget()->CastSpell(GetTarget(), healSpell, args);
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index e8bea735d40..2d5621b561b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -473,7 +473,7 @@ class spell_rotface_ooze_flood : public SpellScriptLoader
return;
triggers.sort(Trinity::ObjectDistanceOrderPred(GetHitUnit()));
- GetHitUnit()->CastSpell(triggers.back(), uint32(GetEffectValue()), false, nullptr, nullptr, GetOriginalCaster() ? GetOriginalCaster()->GetGUID() : ObjectGuid::Empty);
+ GetHitUnit()->CastSpell(triggers.back(), uint32(GetEffectValue()), GetOriginalCaster() ? GetOriginalCaster()->GetGUID() : ObjectGuid::Empty);
}
void FilterTargets(std::list<WorldObject*>& targets)
@@ -550,7 +550,7 @@ class spell_rotface_mutated_infection : public SpellScriptLoader
void HandleEffectRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
- target->CastSpell(target, uint32(GetSpellInfo()->Effects[EFFECT_2].CalcValue()), true, nullptr, aurEff, GetCasterGUID());
+ target->CastSpell(target, uint32(GetSpellInfo()->Effects[EFFECT_2].CalcValue()), { aurEff, GetCasterGUID() });
}
void Register() override
@@ -678,7 +678,7 @@ class spell_rotface_large_ooze_buff_combine : public SpellScriptLoader
if (Creature* cre = GetCaster()->ToCreature())
cre->AI()->DoAction(EVENT_STICKY_OOZE);
- GetCaster()->CastSpell(GetCaster(), SPELL_UNSTABLE_OOZE_EXPLOSION, false, nullptr, nullptr, GetCaster()->GetGUID());
+ GetCaster()->CastSpell(GetCaster(), SPELL_UNSTABLE_OOZE_EXPLOSION, CastSpellExtraArgs().SetOriginalCaster(GetCaster()->GetGUID()));
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(false));
}
@@ -759,7 +759,7 @@ class spell_rotface_unstable_ooze_explosion : public SpellScriptLoader
// let Rotface handle the cast - caster dies before this executes
if (InstanceScript* script = GetCaster()->GetInstanceScript())
if (Creature* rotface = script->instance->GetCreature(script->GetGuidData(DATA_ROTFACE)))
- rotface->CastSpell(x, y, z, triggered_spell_id, true, nullptr, nullptr, GetCaster()->GetGUID());
+ rotface->CastSpell({x, y, z}, triggered_spell_id, GetCaster()->GetGUID());
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index c6ecb4960a7..bd195688030 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -194,7 +194,7 @@ class FrostBombExplosion : public BasicEvent
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
{
- _owner->CastSpell(nullptr, SPELL_FROST_BOMB, false, nullptr, nullptr, _sindragosaGUID);
+ _owner->CastSpell(nullptr, SPELL_FROST_BOMB, CastSpellExtraArgs().SetOriginalCaster(_sindragosaGUID));
_owner->RemoveAurasDueToSpell(SPELL_FROST_BOMB_VISUAL);
return true;
}
@@ -368,11 +368,15 @@ class boss_sindragosa : public CreatureScript
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1);
break;
case POINT_AIR_PHASE:
- me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6), nullptr, TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6));
+ me->CastSpell(nullptr, SPELL_ICE_TOMB_TARGET, args);
me->SetFacingTo(float(M_PI), true);
events.ScheduleEvent(EVENT_AIR_MOVEMENT_FAR, 1);
events.ScheduleEvent(EVENT_FROST_BOMB, 9000);
break;
+ }
case POINT_AIR_PHASE_FAR:
me->SetFacingTo(float(M_PI), true);
events.ScheduleEvent(EVENT_LAND, 30000);
@@ -507,9 +511,13 @@ class boss_sindragosa : public CreatureScript
me->GetMotionMaster()->MovePoint(POINT_AIR_PHASE_FAR, SindragosaAirPosFar);
break;
case EVENT_ICE_TOMB:
- me->CastCustomSpell(SPELL_ICE_TOMB_TARGET, SPELLVALUE_MAX_TARGETS, 1, nullptr, TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, 1);
+ me->CastSpell(nullptr, SPELL_ICE_TOMB_TARGET, args);
events.ScheduleEvent(EVENT_ICE_TOMB, urand(16000, 23000));
break;
+ }
case EVENT_FROST_BOMB:
{
float destX, destY, destZ;
@@ -517,7 +525,7 @@ class boss_sindragosa : public CreatureScript
destY = float(rand_norm()) * 75.0f + 2450.0f;
destZ = 205.0f; // random number close to ground, get exact in next call
me->UpdateGroundPositionZ(destX, destY, destZ);
- me->CastSpell(destX, destY, destZ, SPELL_FROST_BOMB_TRIGGER, false);
+ me->CastSpell({ destX, destY, destZ }, SPELL_FROST_BOMB_TRIGGER, false);
events.ScheduleEvent(EVENT_FROST_BOMB, urand(6000, 8000));
break;
}
@@ -1242,7 +1250,12 @@ class spell_sindragosa_instability : public SpellScriptLoader
void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
- GetTarget()->CastCustomSpell(SPELL_BACKLASH, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff, GetCasterGUID());
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ GetTarget()->CastSpell(GetTarget(), SPELL_BACKLASH, args);
+ }
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
index bd123f5e194..00c046bdec7 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -493,7 +493,7 @@ class TriggerWickedSpirit : public BasicEvent
bool Execute(uint64 /*time*/, uint32 /*diff*/) override
{
- _owner->CastCustomSpell(SPELL_TRIGGER_VILE_SPIRIT_HEROIC, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
+ _owner->CastSpell(nullptr, SPELL_TRIGGER_VILE_SPIRIT_HEROIC, { SPELLVALUE_MAX_TARGETS, 1 });
if (--_counter)
{
@@ -2140,10 +2140,9 @@ class spell_the_lich_king_necrotic_plague : public SpellScriptLoader
return;
}
- CustomSpellValues values;
- //values.AddSpellMod(SPELLVALUE_AURA_STACK, 2);
- values.AddSpellMod(SPELLVALUE_MAX_TARGETS, 1);
- GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, nullptr, TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID());
+ CastSpellExtraArgs args(GetCasterGUID());
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, 1);
+ GetTarget()->CastSpell(nullptr, SPELL_NECROTIC_PLAGUE_JUMP, args);
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_PLAGUE_SIPHON, true);
}
@@ -2237,9 +2236,9 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader
return;
}
- CustomSpellValues values;
- values.AddSpellMod(SPELLVALUE_AURA_STACK, GetStackAmount());
- GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, nullptr, TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID());
+ CastSpellExtraArgs args(GetCasterGUID());
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, GetStackAmount());
+ GetTarget()->CastSpell(nullptr, SPELL_NECROTIC_PLAGUE_JUMP, args);
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_PLAGUE_SIPHON, true);
}
@@ -2255,10 +2254,10 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader
if (aurEff->GetAmount() > _lastAmount)
return;
- CustomSpellValues values;
- values.AddSpellMod(SPELLVALUE_AURA_STACK, GetStackAmount());
- values.AddSpellMod(SPELLVALUE_BASE_POINT1, AURA_REMOVE_BY_ENEMY_SPELL); // add as marker (spell has no effect 1)
- GetTarget()->CastCustomSpell(SPELL_NECROTIC_PLAGUE_JUMP, values, nullptr, TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID());
+ CastSpellExtraArgs args(GetCasterGUID());
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, GetStackAmount());
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, AURA_REMOVE_BY_ENEMY_SPELL); // add as marker (spell has no effect 1)
+ GetTarget()->CastSpell(nullptr, SPELL_NECROTIC_PLAGUE_JUMP, args);
if (Unit* caster = GetCaster())
caster->CastSpell(caster, SPELL_PLAGUE_SIPHON, true);
@@ -2671,7 +2670,9 @@ class spell_the_lich_king_life_siphon : public SpellScriptLoader
void TriggerHeal()
{
- GetHitUnit()->CastCustomSpell(SPELL_LIFE_SIPHON_HEAL, SPELLVALUE_BASE_POINT0, GetHitDamage() * 10, GetCaster(), true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetHitDamage() * 10);
+ GetHitUnit()->CastSpell(GetCaster(), SPELL_LIFE_SIPHON_HEAL, args);
}
void Register() override
@@ -2711,7 +2712,7 @@ class spell_the_lich_king_vile_spirits : public SpellScriptLoader
void OnPeriodic(AuraEffect const* aurEff)
{
if (_is25Man || ((aurEff->GetTickNumber() - 1) % 5))
- GetTarget()->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff, GetCasterGUID());
+ GetTarget()->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, { aurEff, GetCasterGUID() });
}
void Register() override
@@ -2869,7 +2870,7 @@ class spell_the_lich_king_harvest_soul : public SpellScriptLoader
{
// m_originalCaster to allow stacking from different casters, meh
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEATH)
- GetTarget()->CastSpell(nullptr, SPELL_HARVESTED_SOUL, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
+ GetTarget()->CastSpell(nullptr, SPELL_HARVESTED_SOUL, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
}
void Register() override
@@ -2935,7 +2936,12 @@ class spell_the_lich_king_soul_rip : public SpellScriptLoader
PreventDefaultAction();
// shouldn't be needed, this is channeled
if (Unit* caster = GetCaster())
- caster->CastCustomSpell(SPELL_SOUL_RIP_DAMAGE, SPELLVALUE_BASE_POINT0, 5000 * aurEff->GetTickNumber(), GetTarget(), true, nullptr, aurEff, GetCasterGUID());
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(5000 * aurEff->GetTickNumber());
+ caster->CastSpell(GetTarget(), SPELL_SOUL_RIP_DAMAGE, args);
+ }
}
void Register() override
@@ -3031,8 +3037,9 @@ class spell_the_lich_king_dark_hunger : public SpellScriptLoader
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 heal = static_cast<int32>(damageInfo->GetDamage()) / 2;
- GetTarget()->CastCustomSpell(SPELL_DARK_HUNGER_HEAL, SPELLVALUE_BASE_POINT0, heal, GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damageInfo->GetDamage() / 2);
+ GetTarget()->CastSpell(GetTarget(), SPELL_DARK_HUNGER_HEAL, args);
}
void Register() override
@@ -3065,7 +3072,7 @@ class spell_the_lich_king_in_frostmourne_room : public SpellScriptLoader
{
// m_originalCaster to allow stacking from different casters, meh
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEATH)
- GetTarget()->CastSpell(nullptr, SPELL_HARVESTED_SOUL, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
+ GetTarget()->CastSpell(nullptr, SPELL_HARVESTED_SOUL, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
index d2cc08dcc6e..c51435b80e4 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp
@@ -184,7 +184,7 @@ class DelayedCastEvent : public BasicEvent
bool Execute(uint64 /*time*/, uint32 /*diff*/) override
{
- _trigger->CastSpell(_trigger, _spellId, false, nullptr, nullptr, _originalCaster);
+ _trigger->CastSpell(_trigger, _spellId, _originalCaster);
if (_despawnTime)
_trigger->DespawnOrUnsummon(_despawnTime);
return true;
@@ -1112,7 +1112,7 @@ class npc_dream_cloud : public CreatureScript
case EVENT_EXPLODE:
me->GetMotionMaster()->MoveIdle();
// must use originalCaster the same for all clouds to allow stacking
- me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
+ me->CastSpell(me, EMERALD_VIGOR, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
me->DespawnOrUnsummon(100);
break;
default:
@@ -1240,7 +1240,7 @@ class spell_dreamwalker_summoner : public SpellScriptLoader
if (!GetHitUnit())
return;
- GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
+ GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
}
void Register() override
@@ -1331,7 +1331,7 @@ class spell_dreamwalker_summon_suppresser_effect : public SpellScriptLoader
if (!GetHitUnit())
return;
- GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
+ GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
}
void Register() override
@@ -1467,7 +1467,7 @@ class spell_dreamwalker_twisted_nightmares : public SpellScriptLoader
// return;
if (InstanceScript* instance = GetHitUnit()->GetInstanceScript())
- GetHitUnit()->CastSpell(nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
+ GetHitUnit()->CastSpell(nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
}
void Register() override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index d59bce76df2..ea01ba27ac3 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -832,7 +832,7 @@ class boss_sister_svalna : public CreatureScript
switch (action)
{
case ACTION_KILL_CAPTAIN:
- me->CastCustomSpell(SPELL_CARESS_OF_DEATH, SPELLVALUE_MAX_TARGETS, 1, me, true);
+ DoCastSelf(SPELL_CARESS_OF_DEATH, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_MAX_TARGETS, 1));
break;
case ACTION_START_GAUNTLET:
me->setActive(true);
@@ -887,7 +887,9 @@ class boss_sister_svalna : public CreatureScript
if (TempSummon* summon = target->SummonCreature(NPC_IMPALING_SPEAR, *target))
{
Talk(EMOTE_SVALNA_IMPALE, target);
- summon->CastCustomSpell(VEHICLE_SPELL_RIDE_HARDCODED, SPELLVALUE_BASE_POINT0, 1, target, false);
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddBP0(1);
+ summon->CastSpell(target, VEHICLE_SPELL_RIDE_HARDCODED, args);
summon->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_UNK1 | UNIT_FLAG2_ALLOW_ENEMY_INTERACT);
}
break;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
index d9158249649..8b8379d07b0 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
@@ -66,7 +66,7 @@ class icecrown_citadel_teleport : public GameObjectScript
return true;
}
- player->CastSpell(player, spell, true);
+ player->CastSpell(player, spell->Id, true);
return true;
}
};
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
index 8a481bff9ce..f8fd332a2b0 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
@@ -143,7 +143,7 @@ public:
void KilledUnit(Unit* victim) override
{
if (victim->GetTypeId() == TYPEID_PLAYER)
- victim->CastSpell(victim, SPELL_SUMMON_CORPSE_SCARABS_PLR, true, nullptr, nullptr, me->GetGUID());
+ victim->CastSpell(victim, SPELL_SUMMON_CORPSE_SCARABS_PLR, me->GetGUID());
Talk(SAY_SLAY);
}
@@ -199,7 +199,7 @@ public:
if (ObjectGuid target = Trinity::Containers::SelectRandomContainerElement(guardCorpses))
if (Creature* creatureTarget = ObjectAccessor::GetCreature(*me, target))
{
- creatureTarget->CastSpell(creatureTarget, SPELL_SUMMON_CORPSE_SCARABS_MOB, true, nullptr, nullptr, me->GetGUID());
+ creatureTarget->CastSpell(creatureTarget, SPELL_SUMMON_CORPSE_SCARABS_MOB, me->GetGUID());
creatureTarget->AI()->Talk(EMOTE_SCARAB);
creatureTarget->DespawnOrUnsummon();
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
index 51deb5b4375..c835b3a47b5 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -728,7 +728,11 @@ class spell_four_horsemen_mark : public SpellScriptLoader
break;
}
if (damage)
- caster->CastCustomSpell(SPELL_MARK_DAMAGE, SPELLVALUE_BASE_POINT0, damage, GetTarget());
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ caster->CastSpell(GetTarget(), SPELL_MARK_DAMAGE, args);
+ }
}
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
index 42fbac5ff86..98a3a25ee0a 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp
@@ -316,7 +316,11 @@ public:
{
int32 damage = int32(unit->GetHealth()) - int32(unit->CountPctFromMaxHealth(5));
if (damage > 0)
- GetCaster()->CastCustomSpell(SPELL_DECIMATE_DMG, SPELLVALUE_BASE_POINT0, damage, unit);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ GetCaster()->CastSpell(unit, SPELL_DECIMATE_DMG, args);
+ }
}
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
index d76f9ec6990..b38ffa6dd8e 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp
@@ -163,7 +163,7 @@ class spell_grobbulus_mutating_injection : public SpellScriptLoader
if (Unit* caster = GetCaster())
{
caster->CastSpell(GetTarget(), SPELL_MUTATING_EXPLOSION, true);
- GetTarget()->CastSpell(GetTarget(), SPELL_POISON_CLOUD, true, nullptr, aurEff, GetCasterGUID());
+ GetTarget()->CastSpell(GetTarget(), SPELL_POISON_CLOUD, { aurEff, GetCasterGUID() });
}
}
@@ -202,7 +202,10 @@ class spell_grobbulus_poison_cloud : public SpellScriptLoader
uint32 triggerSpell = GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell;
int32 mod = int32(((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3);
- GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, mod, (Unit*)nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff);
+
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_RADIUS_MOD, mod);
+ GetTarget()->CastSpell(nullptr, triggerSpell, args);
}
void Register() override
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
index e37999c4993..ba0910d8929 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -928,7 +928,9 @@ public:
if (int32 mana = int32(target->GetMaxPower(POWER_MANA) / 10))
{
mana = target->ModifyPower(POWER_MANA, -mana);
- target->CastCustomSpell(SPELL_MANA_DETONATION_DAMAGE, SPELLVALUE_BASE_POINT0, -mana * 10, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(-mana * 10);
+ target->CastSpell(target, SPELL_MANA_DETONATION_DAMAGE, args);
}
}
@@ -960,7 +962,11 @@ class spell_kelthuzad_frost_blast : public AuraScript
// Stuns the target, dealing 26% of the target's maximum health in Frost damage every second for 4 sec.
if (Unit* caster = GetCaster())
- caster->CastCustomSpell(SPELL_FROST_BLAST_DMG, SPELLVALUE_BASE_POINT0, int32(GetTarget()->CountPctFromMaxHealth(26)), GetTarget(), true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(GetTarget()->CountPctFromMaxHealth(26));
+ caster->CastSpell(GetTarget(), SPELL_FROST_BLAST_DMG, args);
+ }
}
void Register() override
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
index 57f3e06a90a..0563bcdb1af 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp
@@ -181,7 +181,7 @@ class spell_loatheb_deathbloom : public SpellScriptLoader
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
return;
- GetTarget()->CastSpell(nullptr, SPELL_DEATHBLOOM_FINAL_DAMAGE, true, nullptr, eff, GetCasterGUID());
+ GetTarget()->CastSpell(nullptr, SPELL_DEATHBLOOM_FINAL_DAMAGE, CastSpellExtraArgs(eff).SetOriginalCaster(GetCasterGUID()));
}
void Register() override
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
index ca579f5ea4c..5a505e13f01 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp
@@ -221,7 +221,7 @@ public:
if (Unit* victim = ObjectAccessor::GetUnit(*me, victimGUID))
{
visibleTimer = (me->GetDistance2d(victim)/WEB_WRAP_MOVE_SPEED + 0.5f) * IN_MILLISECONDS;
- victim->CastSpell(victim, SPELL_WEB_WRAP, true, nullptr, nullptr, me->GetGUID());
+ victim->CastSpell(victim, SPELL_WEB_WRAP, me->GetGUID());
}
}
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 783053660e7..7e8c04ca6f2 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -778,14 +778,12 @@ public:
switch (eventId)
{
case EVENT_START_FIRST_RANDOM_PORTAL:
- me->CastCustomSpell(SPELL_RANDOM_PORTAL, SPELLVALUE_MAX_TARGETS, 1);
+ case EVENT_RANDOM_PORTAL:
+ DoCastAOE(SPELL_RANDOM_PORTAL, { SPELLVALUE_MAX_TARGETS,1 });
break;
case EVENT_STOP_PORTAL_BEAM:
me->InterruptNonMeleeSpells(true);
break;
- case EVENT_RANDOM_PORTAL:
- me->CastCustomSpell(SPELL_RANDOM_PORTAL, SPELLVALUE_MAX_TARGETS, 1);
- break;
case EVENT_LAND_START_ENCOUNTER:
if (GameObject* iris = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(DATA_FOCUSING_IRIS_GUID)))
{
@@ -2026,7 +2024,7 @@ class spell_scion_of_eternity_arcane_barrage : public SpellScriptLoader
void TriggerDamageSpellFromPlayer()
{
if (Player* hitTarget = GetHitPlayer())
- hitTarget->CastSpell(hitTarget, SPELL_ARCANE_BARRAGE_DAMAGE, true, nullptr, nullptr, GetCaster()->GetGUID());
+ hitTarget->CastSpell(hitTarget, SPELL_ARCANE_BARRAGE_DAMAGE, GetCaster()->GetGUID());
}
void Register() override
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
index e22448a54ef..5c0571e2070 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp
@@ -202,7 +202,7 @@ public:
summoned->GetMotionMaster()->MoveFollow(target, 0.0f, 0.0f);
// Why healing when just summoned?
- summoned->CastSpell(summoned, SPELL_HEAT, false, nullptr, nullptr, me->GetGUID());
+ summoned->CastSpell(summoned, SPELL_HEAT, CastSpellExtraArgs().SetOriginalCaster(me->GetGUID()));
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
index 4e69e9c2bc6..06e251d12fa 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp
@@ -736,7 +736,7 @@ class spell_assembly_rune_of_summoning : public SpellScriptLoader
void HandlePeriodic(AuraEffect const* aurEff)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_RUNE_OF_SUMMONING_SUMMON, true, nullptr, aurEff, GetTarget()->IsSummon() ? GetTarget()->ToTempSummon()->GetSummonerGUID() : ObjectGuid::Empty);
+ GetTarget()->CastSpell(GetTarget(), SPELL_RUNE_OF_SUMMONING_SUMMON, { aurEff, GetTarget()->IsSummon() ? GetTarget()->ToTempSummon()->GetSummonerGUID() : ObjectGuid::Empty });
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index 1283ca3b29a..030aa7cf56a 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -1008,7 +1008,7 @@ public:
{
if (Creature* trigger = DoSummonFlyer(NPC_MIMIRON_TARGET_BEACON, me, 20, 0, 1000, TEMPSUMMON_TIMED_DESPAWN))
{
- trigger->CastSpell(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), SPELL_MIMIRON_S_INFERNO, true);
+ trigger->CastSpell(me->GetPosition(), SPELL_MIMIRON_S_INFERNO, true);
infernoTimer = 2000;
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index 8b5039b8326..8ae301f912f 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -379,7 +379,9 @@ class boss_freya : public CreatureScript
else
Talk(SAY_AGGRO_WITH_ELDER);
- me->CastCustomSpell(SPELL_ATTUNED_TO_NATURE, SPELLVALUE_AURA_STACK, 150, me, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, 150);
+ me->CastSpell(me, SPELL_ATTUNED_TO_NATURE, args);
events.ScheduleEvent(EVENT_WAVE, 10000);
events.ScheduleEvent(EVENT_EONAR_GIFT, 25000);
@@ -754,7 +756,9 @@ class boss_elder_brightleaf : public CreatureScript
uint8 stackAmount = 0;
if (Aura* aura = me->GetAura(SPELL_FLUX_AURA))
stackAmount = aura->GetStackAmount();
- me->CastCustomSpell(SPELL_SOLAR_FLARE, SPELLVALUE_MAX_TARGETS, stackAmount, me, false);
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, stackAmount);
+ me->CastSpell(me, SPELL_SOLAR_FLARE, args);
events.ScheduleEvent(EVENT_SOLAR_FLARE, urand(5000, 10000));
break;
}
@@ -839,8 +843,9 @@ class boss_elder_stonebark : public CreatureScript
if (me->HasAura(SPELL_PETRIFIED_BARK))
{
- int32 reflect = damage;
- who->CastCustomSpell(who, SPELL_PETRIFIED_BARK_DMG, &reflect, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ who->CastSpell(who, SPELL_PETRIFIED_BARK_DMG, args);
damage = 0;
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
index cba47d66951..776d2ac3eba 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp
@@ -465,7 +465,11 @@ class spell_general_vezax_mark_of_the_faceless : public SpellScriptLoader
void HandleEffectPeriodic(AuraEffect const* aurEff)
{
if (Unit* caster = GetCaster())
- caster->CastCustomSpell(SPELL_MARK_OF_THE_FACELESS_DAMAGE, SPELLVALUE_BASE_POINT1, aurEff->GetAmount(), GetTarget(), true);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, aurEff->GetAmount());
+ caster->CastSpell(GetTarget(), SPELL_MARK_OF_THE_FACELESS_DAMAGE, args);
+ }
}
void Register() override
@@ -528,9 +532,11 @@ class spell_general_vezax_saronite_vapors : public SpellScriptLoader
if (Unit* caster = GetCaster())
{
int32 mana = int32(aurEff->GetAmount() * std::pow(2.0f, GetStackAmount())); // mana restore - bp * 2^stackamount
- int32 damage = mana * 2;
- caster->CastCustomSpell(GetTarget(), SPELL_SARONITE_VAPORS_ENERGIZE, &mana, nullptr, nullptr, true);
- caster->CastCustomSpell(GetTarget(), SPELL_SARONITE_VAPORS_DAMAGE, &damage, nullptr, nullptr, true);
+ CastSpellExtraArgs args1(TRIGGERED_FULL_MASK), args2(TRIGGERED_FULL_MASK);
+ args1.SpellValueOverrides.AddBP0(mana);
+ args2.SpellValueOverrides.AddBP0(mana * 2);
+ caster->CastSpell(GetTarget(), SPELL_SARONITE_VAPORS_ENERGIZE, args1);
+ caster->CastSpell(GetTarget(), SPELL_SARONITE_VAPORS_DAMAGE, args2);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index 5e24c699f78..b15abcff7a7 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -1049,7 +1049,9 @@ public:
return;
int32 damage = int32(200 * std::pow(2.0f, GetStackAmount()));
- caster->CastCustomSpell(caster, SPELL_BITING_COLD_DAMAGE, &damage, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ caster->CastSpell(caster, SPELL_BITING_COLD_DAMAGE, args);
if (caster->isMoving())
caster->RemoveAuraFromStack(SPELL_BITING_COLD_TRIGGERED);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
index b17a5343f71..3f4ad741408 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp
@@ -344,7 +344,7 @@ class spell_ulduar_rubble_summon : public SpellScriptLoader
ObjectGuid originalCaster = caster->GetInstanceScript() ? caster->GetInstanceScript()->GetGuidData(BOSS_KOLOGARN) : ObjectGuid::Empty;
uint32 spellId = GetEffectValue();
for (uint8 i = 0; i < 5; ++i)
- caster->CastSpell(caster, spellId, true, nullptr, nullptr, originalCaster);
+ caster->CastSpell(caster, spellId, originalCaster);
}
void Register() override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 8200ea8ca06..1edea0942c9 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -495,7 +495,7 @@ class boss_mimiron : public CreatureScript
{
case EVENT_SUMMON_FLAMES:
if (Creature* worldtrigger = instance->GetCreature(DATA_MIMIRON_WORLD_TRIGGER))
- worldtrigger->CastCustomSpell(SPELL_SCRIPT_EFFECT_SUMMON_FLAMES_INITIAL, SPELLVALUE_MAX_TARGETS, 3, nullptr, true, nullptr, nullptr, me->GetGUID());
+ worldtrigger->CastSpell(nullptr, SPELL_SCRIPT_EFFECT_SUMMON_FLAMES_INITIAL, CastSpellExtraArgs(me->GetGUID()).AddSpellMod(SPELLVALUE_MAX_TARGETS, 3));
events.RescheduleEvent(EVENT_SUMMON_FLAMES, 28000);
break;
case EVENT_INTRO_1:
@@ -1233,15 +1233,15 @@ class boss_aerial_command_unit : public CreatureScript
switch (eventId)
{
case EVENT_SUMMON_FIRE_BOTS:
- me->CastCustomSpell(SPELL_SUMMON_FIRE_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 3, nullptr, true);
+ DoCastAOE(SPELL_SUMMON_FIRE_BOT_TRIGGER, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_MAX_TARGETS, 3));
events.RescheduleEvent(EVENT_SUMMON_FIRE_BOTS, 45000, 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_JUNK_BOT:
- me->CastCustomSpell(SPELL_SUMMON_JUNK_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
+ DoCastAOE(SPELL_SUMMON_JUNK_BOT_TRIGGER, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_MAX_TARGETS, 1));
events.RescheduleEvent(EVENT_SUMMON_JUNK_BOT, urand(11000, 12000), 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_ASSAULT_BOT:
- me->CastCustomSpell(SPELL_SUMMON_ASSAULT_BOT_TRIGGER, SPELLVALUE_MAX_TARGETS, 1, nullptr, true);
+ DoCastAOE(SPELL_SUMMON_ASSAULT_BOT_TRIGGER, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_MAX_TARGETS, 1));
events.RescheduleEvent(EVENT_SUMMON_ASSAULT_BOT, 30000, 0, PHASE_AERIAL_COMMAND_UNIT);
break;
case EVENT_SUMMON_BOMB_BOT:
@@ -2169,7 +2169,7 @@ class spell_mimiron_rapid_burst : public SpellScriptLoader
void HandleDummyTick(AuraEffect const* aurEff)
{
if (GetCaster())
- GetCaster()->CastSpell(GetTarget(), aurEff->GetTickNumber() % 2 == 0 ? SPELL_RAPID_BURST_RIGHT : SPELL_RAPID_BURST_LEFT, true, nullptr, aurEff);
+ GetCaster()->CastSpell(GetTarget(), aurEff->GetTickNumber() % 2 == 0 ? SPELL_RAPID_BURST_RIGHT : SPELL_RAPID_BURST_LEFT, aurEff);
}
void Register() override
@@ -2215,7 +2215,7 @@ class spell_mimiron_rocket_strike : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- GetHitUnit()->CastSpell(nullptr, SPELL_SCRIPT_EFFECT_ROCKET_STRIKE, true, nullptr, nullptr, GetCaster()->GetGUID());
+ GetHitUnit()->CastSpell(nullptr, SPELL_SCRIPT_EFFECT_ROCKET_STRIKE, GetCaster()->GetGUID());
}
void Register() override
@@ -2313,7 +2313,7 @@ class spell_mimiron_rocket_strike_target_select : public SpellScriptLoader
void HandleScript(SpellEffIndex /*effIndex*/)
{
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
- GetCaster()->CastSpell(GetHitUnit(), SPELL_SUMMON_ROCKET_STRIKE, true, nullptr, nullptr, instance->GetGuidData(DATA_VX_001));
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_SUMMON_ROCKET_STRIKE, instance->GetGuidData(DATA_VX_001));
GetCaster()->SetDisplayId(11686);
}
@@ -2407,7 +2407,7 @@ class spell_mimiron_summon_assault_bot : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (InstanceScript* instance = caster->GetInstanceScript())
if (instance->GetBossState(BOSS_MIMIRON) == IN_PROGRESS)
- caster->CastSpell(caster, SPELL_SUMMON_ASSAULT_BOT, false, nullptr, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
+ caster->CastSpell(caster, SPELL_SUMMON_ASSAULT_BOT, { aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT) });
}
void Register() override
@@ -2474,7 +2474,7 @@ class spell_mimiron_summon_fire_bot : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (InstanceScript* instance = caster->GetInstanceScript())
if (instance->GetBossState(BOSS_MIMIRON) == IN_PROGRESS)
- caster->CastSpell(caster, SPELL_SUMMON_FIRE_BOT, false, nullptr, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
+ caster->CastSpell(caster, SPELL_SUMMON_FIRE_BOT, { aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT) });
}
void Register() override
@@ -2662,7 +2662,7 @@ class spell_mimiron_summon_junk_bot : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (InstanceScript* instance = caster->GetInstanceScript())
if (instance->GetBossState(BOSS_MIMIRON) == IN_PROGRESS)
- caster->CastSpell(caster, SPELL_SUMMON_JUNK_BOT, false, nullptr, aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT));
+ caster->CastSpell(caster, SPELL_SUMMON_JUNK_BOT, { aurEff, instance->GetGuidData(DATA_AERIAL_COMMAND_UNIT) });
}
void Register() override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
index 2fce8d7a5be..74601cc5163 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp
@@ -964,7 +964,7 @@ class spell_xt002_heart_overload_periodic : public SpellScriptLoader
{
uint8 a = urand(0, 4);
uint32 spellId = spells[a];
- toyPile->CastSpell(toyPile, spellId, true, nullptr, nullptr, instance->GetGuidData(BOSS_XT002));
+ toyPile->CastSpell(toyPile, spellId, instance->GetGuidData(BOSS_XT002));
}
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index 2dbc0d0dfbb..59d6d9f80da 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -519,7 +519,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
- me->CastCustomSpell(SPELL_SUMMON_GUARDIAN_2, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_SUMMON_GUARDIAN_2, { SPELLVALUE_MAX_TARGETS, 1 });
DoCast(me, SPELL_SANITY_PERIODIC);
events.ScheduleEvent(EVENT_LOCK_DOOR, 15000);
@@ -563,7 +563,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
events.ScheduleEvent(EVENT_EXTINGUISH_ALL_LIFE, 10000); // cast it again after a short while, players can survive
break;
case EVENT_SUMMON_GUARDIAN_OF_YOGG_SARON:
- me->CastCustomSpell(SPELL_SUMMON_GUARDIAN_2, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_SUMMON_GUARDIAN_2, { SPELLVALUE_MAX_TARGETS, 1 });
++_guardiansCount;
if (_guardiansCount <= 6 && _guardiansCount % 3 == 0)
_guardianTimer -= 5000;
@@ -574,7 +574,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
events.ScheduleEvent(EVENT_SUMMON_CORRUPTOR_TENTACLE, 30000, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
break;
case EVENT_SUMMON_CONSTRICTOR_TENTACLE:
- me->CastCustomSpell(SPELL_CONSTRICTOR_TENTACLE, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_CONSTRICTOR_TENTACLE, { SPELLVALUE_MAX_TARGETS, 1 });
events.ScheduleEvent(EVENT_SUMMON_CONSTRICTOR_TENTACLE, 25000, EVENT_GROUP_SUMMON_TENTACLES, PHASE_TWO);
break;
case EVENT_SUMMON_CRUSHER_TENTACLE:
@@ -796,15 +796,15 @@ class boss_sara : public CreatureScript
switch (eventId)
{
case EVENT_SARAS_FERVOR:
- me->CastCustomSpell(SPELL_SARAS_FERVOR_TARGET_SELECTOR, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_SARAS_FERVOR_TARGET_SELECTOR, { SPELLVALUE_MAX_TARGETS, 1 });
_events.ScheduleEvent(EVENT_SARAS_FERVOR, 6000, 0, PHASE_ONE);
break;
case EVENT_SARAS_ANGER:
- me->CastCustomSpell(SPELL_SARAS_ANGER_TARGET_SELECTOR, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_SARAS_ANGER_TARGET_SELECTOR, { SPELLVALUE_MAX_TARGETS, 1 });
_events.ScheduleEvent(EVENT_SARAS_ANGER, urand(6000, 8000), 0, PHASE_ONE);
break;
case EVENT_SARAS_BLESSING:
- me->CastCustomSpell(SPELL_SARAS_BLESSING_TARGET_SELECTOR, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_SARAS_BLESSING_TARGET_SELECTOR, { SPELLVALUE_MAX_TARGETS, 1 });
_events.ScheduleEvent(EVENT_SARAS_BLESSING, urand(6000, 30000), 0, PHASE_ONE);
break;
case EVENT_TRANSFORM_1:
@@ -838,15 +838,15 @@ class boss_sara : public CreatureScript
_events.ScheduleEvent(EVENT_DEATH_RAY, 21000, 0, PHASE_TWO);
break;
case EVENT_MALADY_OF_THE_MIND:
- me->CastCustomSpell(SPELL_MALADY_OF_THE_MIND, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_MALADY_OF_THE_MIND, { SPELLVALUE_MAX_TARGETS, 1 });
_events.ScheduleEvent(EVENT_MALADY_OF_THE_MIND, urand(18000, 25000), 0, PHASE_TWO);
break;
case EVENT_PSYCHOSIS:
- me->CastCustomSpell(SPELL_PSYCHOSIS, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_PSYCHOSIS, { SPELLVALUE_MAX_TARGETS, 1 });
_events.ScheduleEvent(EVENT_PSYCHOSIS, 4000, 0, PHASE_TWO);
break;
case EVENT_BRAIN_LINK:
- me->CastCustomSpell(SPELL_BRAIN_LINK, SPELLVALUE_MAX_TARGETS, 2);
+ DoCastAOE(SPELL_BRAIN_LINK, { SPELLVALUE_MAX_TARGETS, 2 });
_events.ScheduleEvent(EVENT_BRAIN_LINK, urand(23000, 26000), 0, PHASE_TWO);
break;
default:
@@ -1642,7 +1642,7 @@ class npc_yogg_saron_keeper : public CreatureScript
switch (eventId)
{
case EVENT_DESTABILIZATION_MATRIX:
- me->CastCustomSpell(SPELL_DESTABILIZATION_MATRIX, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_DESTABILIZATION_MATRIX, { SPELLVALUE_MAX_TARGETS, 1 });
_events.ScheduleEvent(EVENT_DESTABILIZATION_MATRIX, urand(15000, 25000), 0, PHASE_TWO);
break;
case EVENT_HODIRS_PROTECTIVE_GAZE:
@@ -2496,7 +2496,9 @@ class spell_yogg_saron_empowered : public SpellScriptLoader // 64161
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- GetTarget()->CastCustomSpell(SPELL_EMPOWERED_BUFF, SPELLVALUE_AURA_STACK, 9, GetTarget(), TRIGGERED_FULL_MASK);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, 9);
+ GetTarget()->CastSpell(GetTarget(), SPELL_EMPOWERED_BUFF, args);
}
void OnPeriodic(AuraEffect const* /*aurEff*/)
@@ -2508,7 +2510,9 @@ class spell_yogg_saron_empowered : public SpellScriptLoader // 64161
if (stack)
{
target->RemoveAurasDueToSpell(SPELL_WEAKENED);
- target->CastCustomSpell(SPELL_EMPOWERED_BUFF, SPELLVALUE_AURA_STACK, stack, target, TRIGGERED_FULL_MASK);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, stack);
+ target->CastSpell(target, SPELL_EMPOWERED_BUFF, args);
}
else if (!target->HealthAbovePct(1) && !target->HasAura(SPELL_WEAKENED))
target->CastSpell(target, SPELL_WEAKENED, true);
@@ -2736,8 +2740,9 @@ class spell_yogg_saron_grim_reprisal : public SpellScriptLoader // 63305
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 damage = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), 60);
- GetTarget()->CastCustomSpell(SPELL_GRIM_REPRISAL_DAMAGE, SPELLVALUE_BASE_POINT0, damage, damageInfo->GetAttacker(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), 60));
+ GetTarget()->CastSpell(damageInfo->GetAttacker(), SPELL_GRIM_REPRISAL_DAMAGE, args);
}
void Register() override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
index 743adbb739f..54120197ffc 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
@@ -470,7 +470,7 @@ class spell_ingvar_woe_strike : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_WOE_STRIKE_EFFECT, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetActor(), SPELL_WOE_STRIKE_EFFECT, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
index 2fa0fc38932..8a4c2c612a2 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp
@@ -223,7 +223,7 @@ class spell_uk_second_wind : public SpellScriptLoader
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActionTarget();
- caster->CastSpell(caster, SPELL_SECOND_WIND_TRIGGER, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_SECOND_WIND_TRIGGER, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
index 4d0dcd4cd74..bc8d80c3d31 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_palehoof.cpp
@@ -132,7 +132,7 @@ public:
bool Execute(uint64 /*eventTime*/, uint32 /*diff*/) override
{
- _owner->CastCustomSpell(SPELL_AWAKEN_SUBBOSS, SPELLVALUE_MAX_TARGETS, 1, _owner);
+ _owner->CastSpell(_owner, SPELL_AWAKEN_SUBBOSS, { SPELLVALUE_MAX_TARGETS, 1 });
return true;
}
@@ -287,7 +287,7 @@ public:
if (_encountersCount == _dungeonMode)
orb->CastSpell(orb, SPELL_AWAKEN_GORTOK, true);
else
- orb->CastCustomSpell(SPELL_AWAKEN_SUBBOSS, SPELLVALUE_MAX_TARGETS, 1, orb, true);
+ orb->CastSpell(orb, SPELL_AWAKEN_SUBBOSS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_MAX_TARGETS, 1));
break;
}
case ACTION_START_FIGHT:
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
index 93faab4b854..03fd8552dc6 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp
@@ -201,7 +201,7 @@ class spell_koralon_meteor_fists : public SpellScriptLoader
void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_METEOR_FISTS_DAMAGE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_METEOR_FISTS_DAMAGE, aurEff);
}
void Register() override
@@ -276,7 +276,7 @@ class spell_flame_warder_meteor_fists : public SpellScriptLoader
void TriggerFists(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_FW_METEOR_FISTS_DAMAGE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_FW_METEOR_FISTS_DAMAGE, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
index d093bb65fa8..adbbf0a306b 100644
--- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
+++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp
@@ -78,9 +78,11 @@ struct boss_toravon : public BossAI
switch (eventId)
{
case EVENT_FROZEN_ORB:
- me->CastCustomSpell(SPELL_FROZEN_ORB, SPELLVALUE_MAX_TARGETS, RAID_MODE(1, 3), me);
+ {
+ me->CastSpell(me, SPELL_FROZEN_ORB, CastSpellExtraArgs().AddSpellMod(SPELLVALUE_MAX_TARGETS, RAID_MODE(1, 3)));
events.Repeat(Seconds(32));
break;
+ }
case EVENT_WHITEOUT:
DoCastSelf(SPELL_WHITEOUT);
events.Repeat(Seconds(38));
diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp
index 8f8f875b530..da13f176596 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp
@@ -122,7 +122,7 @@ class spell_moragg_ray : public SpellScriptLoader
if (Unit* target = GetTarget()->GetAI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 45.0f, true))
{
uint32 triggerSpell = GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell;
- GetTarget()->CastSpell(target, triggerSpell, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ GetTarget()->CastSpell(target, triggerSpell, aurEff);
}
}
@@ -152,12 +152,12 @@ public:
if (Unit* caster = GetCaster())
{
if (aurEff->GetTickNumber() >= 8)
- caster->CastSpell(GetTarget(), SPELL_OPTIC_LINK_LEVEL_3, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ caster->CastSpell(GetTarget(), SPELL_OPTIC_LINK_LEVEL_3, aurEff);
if (aurEff->GetTickNumber() >= 4)
- caster->CastSpell(GetTarget(), SPELL_OPTIC_LINK_LEVEL_2, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ caster->CastSpell(GetTarget(), SPELL_OPTIC_LINK_LEVEL_2, aurEff);
- caster->CastSpell(GetTarget(), SPELL_OPTIC_LINK_LEVEL_1, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ caster->CastSpell(GetTarget(), SPELL_OPTIC_LINK_LEVEL_1, aurEff);
}
}
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
index e96c8d2f17d..05227509f60 100644
--- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
@@ -97,7 +97,7 @@ public:
break;
case 1:
Talk(SAY_WP_3);
- me->CastSpell(5918.33f, 5372.91f, -98.770f, SPELL_EXPLODE_CRYSTAL, true);
+ me->CastSpell({ 5918.33f, 5372.91f, -98.770f }, SPELL_EXPLODE_CRYSTAL, true);
me->SummonGameObject(184743, 5918.33f, 5372.91f, -98.770f, 0, QuaternionData(), TEMPSUMMON_MANUAL_DESPAWN); //approx 3 to 4 seconds
me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
break;
@@ -108,7 +108,7 @@ public:
Talk(SAY_WP_5);
break;
case 8:
- me->CastSpell(5887.37f, 5379.39f, -91.289f, SPELL_EXPLODE_CRYSTAL, true);
+ me->CastSpell({ 5887.37f, 5379.39f, -91.289f }, SPELL_EXPLODE_CRYSTAL, true);
me->SummonGameObject(184743, 5887.37f, 5379.39f, -91.289f, 0, QuaternionData(), TEMPSUMMON_MANUAL_DESPAWN); //approx 3 to 4 seconds
me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH);
break;
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index c0c22a43696..a94d460e704 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -828,7 +828,7 @@ class npc_wild_wyrm : public CreatureScript
if (seatId != SEAT_INITIAL)
return;
- me->CastCustomSpell(SPELL_GRIP, SPELLVALUE_AURA_STACK, 50);
+ me->CastSpell(nullptr, SPELL_GRIP, CastSpellExtraArgs().AddSpellMod(SPELLVALUE_AURA_STACK, 50));
DoCastAOE(SPELL_CLAW_SWIPE_PERIODIC);
_scheduler.Async([this]
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index 30ae441d7ce..31a1987d90d 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -746,7 +746,7 @@ class spell_random_ingredient : public SpellScriptLoader
if (Creature* finklestein = GetClosestCreatureWithEntry(player, NPC_FINKLESTEIN, 25.0f))
{
- finklestein->CastSpell(player, FetchIngredients[ingredient][0], true, nullptr);
+ finklestein->CastSpell(player, FetchIngredients[ingredient][0], true);
finklestein->AI()->Talk(FetchIngredients[ingredient][3], player);
}
}
diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.cpp
index cbfd8b2c197..88a1993235c 100644
--- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.cpp
+++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/shadow_labyrinth.cpp
@@ -46,7 +46,7 @@ class spell_mark_of_malice : public SpellScriptLoader
if (aurEff->GetBase()->GetCharges() > 1)
return;
- GetTarget()->CastSpell(GetTarget(), SPELL_MARK_OF_MALICE_TRIGGERED, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_MARK_OF_MALICE_TRIGGERED, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp
index 693d2be970d..6ac919afb46 100644
--- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp
+++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp
@@ -264,7 +264,7 @@ class spell_illidari_nightlord_shadow_inferno : public AuraScript
{
PreventDefaultAction();
int32 bp = aurEffect->GetTickNumber() * aurEffect->GetAmount();
- GetUnitOwner()->CastCustomSpell(SPELL_SHADOW_INFERNO_DAMAGE, SPELLVALUE_BASE_POINT0, bp, GetUnitOwner(), true);
+ GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_SHADOW_INFERNO_DAMAGE, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(bp));
}
void Register() override
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
index 72597d52d42..48435588053 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
@@ -460,8 +460,7 @@ struct boss_lady_malande : public IllidariCouncilBossAI
void HealReceived(Unit* /*who*/, uint32& addhealth) override
{
// Need be negative to heal trigger
- int32 bp = addhealth * (-1);
- me->CastCustomSpell(SPELL_SHARED_RULE, SPELLVALUE_BASE_POINT0, bp, (Unit*) nullptr, true);
+ me->CastSpell(nullptr, SPELL_SHARED_RULE, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(-int32(addhealth)));
}
void ExecuteEvent(uint32 eventId) override
@@ -607,8 +606,7 @@ class spell_illidari_council_balance_of_power : public AuraScript
void Absorb(AuraEffect* aurEff, DamageInfo& dmgInfo, uint32& /*absorbAmount*/)
{
PreventDefaultAction();
- int32 bp = dmgInfo.GetDamage();
- GetTarget()->CastCustomSpell(SPELL_SHARED_RULE, SPELLVALUE_BASE_POINT0, bp, (Unit*) nullptr, true, nullptr, aurEff);
+ GetTarget()->CastSpell(nullptr, SPELL_SHARED_RULE, CastSpellExtraArgs(aurEff).AddSpellBP0(dmgInfo.GetDamage()));
}
void Register() override
@@ -632,7 +630,7 @@ class spell_illidari_council_deadly_strike : public AuraScript
PreventDefaultAction();
if (Unit* victim = GetTarget()->GetAI()->SelectTarget(SELECT_TARGET_RANDOM, 0))
- GetTarget()->CastSpell(victim, SPELL_DEADLY_POISON, true, nullptr, aurEff);
+ GetTarget()->CastSpell(victim, SPELL_DEADLY_POISON, aurEff);
}
void Register() override
@@ -679,8 +677,7 @@ class spell_illidari_council_reflective_shield : public AuraScript
if (dmgInfo.GetAttacker() == target)
return;
- int32 bp = absorbAmount / 2;
- target->CastCustomSpell(dmgInfo.GetAttacker(), SPELL_REFLECTIVE_SHIELD_DAMAGE, &bp, nullptr, nullptr, true, nullptr, aurEff);
+ target->CastSpell(dmgInfo.GetAttacker(), SPELL_REFLECTIVE_SHIELD_DAMAGE, CastSpellExtraArgs(aurEff).AddSpellBP0(absorbAmount/2));
}
void Register() override
diff --git a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp
index fdd79cf92ea..7e14f2cff66 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_mother_shahraz.cpp
@@ -40,7 +40,7 @@ enum Spells
SPELL_FATAL_ATTRACTION_DAMAGE = 40871,
SPELL_SILENCING_SHRIEK = 40823,
SPELL_SABER_LASH_IMMUNITY = 43690,
- SPELL_FATAL_ATTACTION_TELEPORT = 40869,
+ SPELL_FATAL_ATTRACTION_TELEPORT = 40869,
SPELL_BERSERK = 45078,
SPELL_FATAL_ATTRACTION = 41001,
SPELL_SINISTER_PERIODIC = 40863,
@@ -171,7 +171,7 @@ struct boss_mother_shahraz : public BossAI
break;
case EVENT_FATAL_ATTRACTION:
Talk(SAY_SPELL);
- me->CastCustomSpell(SPELL_FATAL_ATTACTION_TELEPORT, SPELLVALUE_MAX_TARGETS, 3, me);
+ DoCastSelf(SPELL_FATAL_ATTRACTION_TELEPORT, { SPELLVALUE_MAX_TARGETS, 3 });
events.Repeat(Seconds(30));
break;
case EVENT_SILENCING_SHRIEK:
diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
index c069482f139..24ae519f806 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
@@ -377,7 +377,7 @@ struct boss_essence_of_suffering : public BossAI
switch (eventId)
{
case EVENT_SOUL_DRAIN:
- me->CastCustomSpell(SPELL_SOUL_DRAIN, SPELLVALUE_MAX_TARGETS, 5, me);
+ DoCastSelf(SPELL_SOUL_DRAIN, { SPELLVALUE_MAX_TARGETS, 5 });
events.Repeat(Seconds(30), Seconds(35));
break;
case EVENT_FRENZY:
@@ -581,7 +581,7 @@ struct boss_essence_of_anger : public BossAI
break;
case EVENT_SPITE:
Talk(ANGER_SAY_SPITE);
- me->CastCustomSpell(SPELL_SPITE, SPELLVALUE_MAX_TARGETS, 3, me);
+ DoCastSelf(SPELL_SPITE, { SPELLVALUE_MAX_TARGETS, 3 });
events.Repeat(Seconds(20));
break;
case EVENT_START_CHECK_TANKER:
@@ -680,8 +680,7 @@ class spell_reliquary_of_souls_aura_of_desire : public AuraScript
return;
Unit* caster = eventInfo.GetActor();
- int32 bp = damageInfo->GetDamage() / 2;
- caster->CastCustomSpell(SPELL_AURA_OF_DESIRE_DAMAGE, SPELLVALUE_BASE_POINT0, bp, caster, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_AURA_OF_DESIRE_DAMAGE, CastSpellExtraArgs(aurEff).AddSpellBP0(damageInfo->GetDamage() / 2));
}
void UpdateAmount(AuraEffect* /*aurEff*/)
diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
index 496212ed692..4cdaacf4192 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
@@ -198,7 +198,7 @@ struct boss_teron_gorefiend : public BossAI
events.Repeat(Seconds(30), Seconds(35));
break;
case EVENT_CRUSHING_SHADOWS:
- me->CastCustomSpell(SPELL_CRUSHING_SHADOWS, SPELLVALUE_MAX_TARGETS, 5, me);
+ DoCastSelf(SPELL_CRUSHING_SHADOWS, { SPELLVALUE_MAX_TARGETS, 5 });
Talk(SAY_CRUSHING);
events.Repeat(Seconds(18), Seconds(30));
break;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
index 730ffc2d88a..82b7865aa96 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
@@ -516,8 +516,7 @@ public:
if (me->IsWithinDist(me->GetVictim(), 30))
{
//DoCastVictim(SPELL_CHAOS_BLAST, true);
- int damage = 100;
- me->CastCustomSpell(me->GetVictim(), SPELL_CHAOS_BLAST, &damage, nullptr, nullptr, false, nullptr, nullptr, me->GetGUID());
+ me->CastSpell(me->GetVictim(), SPELL_CHAOS_BLAST, CastSpellExtraArgs().SetOriginalCaster(me->GetGUID()).AddSpellBP0(100));
}
ChaosBlast_Timer = 3000;
} else ChaosBlast_Timer -= diff;
@@ -673,8 +672,7 @@ public:
if (me->IsWithinDist(me->GetVictim(), 30))
{
//DoCastVictim(SPELL_CHAOS_BLAST, true);
- int damage = 100;
- me->CastCustomSpell(me->GetVictim(), SPELL_CHAOS_BLAST, &damage, nullptr, nullptr, false, nullptr, nullptr, me->GetGUID());
+ me->CastSpell(me->GetVictim(), SPELL_CHAOS_BLAST, CastSpellExtraArgs().SetOriginalCaster(me->GetGUID()).AddSpellBP0(100));
ChaosBlast_Timer = 3000;
}
} else ChaosBlast_Timer -= diff;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
index 71408b14ddb..ec728838f93 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp
@@ -438,9 +438,8 @@ public:
if (ShootBowTimer <= diff)
{
- int bp0 = 1100;
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
- me->CastCustomSpell(target, SPELL_SHOOT, &bp0, nullptr, nullptr, true);
+ me->CastSpell(target, SPELL_SHOOT, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(1100));
ShootBowTimer = 4000 + rand32() % 5000;
MultiShotTimer += 1500; // add global cooldown
} else ShootBowTimer -= diff;
diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
index b7d7c10f6c7..288c65430a2 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp
@@ -1014,7 +1014,7 @@ public:
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
{
- GetCaster()->CastSpell(GetHitDest()->GetPositionX(), GetHitDest()->GetPositionY(), GetHitDest()->GetPositionZ(), SPELL_ICE_BOMBARDMENT, true);
+ GetCaster()->CastSpell(GetHitDest()->GetPosition(), SPELL_ICE_BOMBARDMENT, true);
}
void Register() override
diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
index ac6c9e62072..161cf5e523e 100644
--- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
+++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp
@@ -134,11 +134,11 @@ class boss_gruul : public CreatureScript
switch (urand(0, 1))
{
case 0:
- target->CastSpell(target, SPELL_MAGNETIC_PULL, true, nullptr, nullptr, me->GetGUID());
+ target->CastSpell(target, SPELL_MAGNETIC_PULL, me->GetGUID());
break;
case 1:
- target->CastSpell(target, SPELL_KNOCK_BACK, true, nullptr, nullptr, me->GetGUID());
+ target->CastSpell(target, SPELL_KNOCK_BACK, me->GetGUID());
break;
}
}
diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
index e35db1add89..0a751480e58 100644
--- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp
@@ -182,7 +182,7 @@ class spell_broggok_poison_cloud : public SpellScriptLoader
uint32 triggerSpell = GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell;
int32 mod = int32(((float(aurEff->GetTickNumber()) / aurEff->GetTotalTicks()) * 0.9f + 0.1f) * 10000 * 2 / 3);
- GetTarget()->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, mod, (Unit*)nullptr, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ GetTarget()->CastSpell(nullptr, triggerSpell, CastSpellExtraArgs(aurEff).AddSpellMod(SPELLVALUE_RADIUS_MOD, mod));
}
void Register() override
diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
index f0cf459acfe..f4b2c83e0c9 100644
--- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp
@@ -237,11 +237,11 @@ class boss_magtheridon : public CreatureScript
events.Repeat(Seconds(10));
break;
case EVENT_BLAZE:
- me->CastCustomSpell(SPELL_BLAZE_TARGET, SPELLVALUE_MAX_TARGETS, 1);
+ DoCastAOE(SPELL_BLAZE_TARGET, { SPELLVALUE_MAX_TARGETS, 1 });
events.Repeat(Seconds(20));
break;
case EVENT_QUAKE:
- me->CastCustomSpell(SPELL_QUAKE, SPELLVALUE_MAX_TARGETS, 5);
+ DoCastAOE(SPELL_QUAKE, { SPELLVALUE_MAX_TARGETS, 5 });
events.Repeat(Seconds(60));
break;
case EVENT_START_FIGHT:
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
index b6dcb21af5c..d28c3ce98c5 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp
@@ -214,7 +214,7 @@ class boss_grand_warlock_nethekurse : public CreatureScript
//triggered spell of consumption does not properly show it's SpellVisual, wrong spellid?
summoned->CastSpell(summoned, SPELL_TEMPORARY_VISUAL, true);
- summoned->CastSpell(summoned, SPELL_CONSUMPTION, false, 0, 0, me->GetGUID());
+ summoned->CastSpell(summoned, SPELL_CONSUMPTION, CastSpellExtraArgs().SetOriginalCaster(me->GetGUID()));
}
void KilledUnit(Unit* /*victim*/) override
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
index 59b0982e189..061f7cbcd9a 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp
@@ -609,7 +609,7 @@ class spell_alar_flame_quills : public AuraScript
// cast 24 spells 34269-34289, 34314-34316
for (uint32 spellId : flameQuillsSpells)
- GetTarget()->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ GetTarget()->CastSpell(nullptr, spellId, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
index f2720b4ffe9..3e22a430ec6 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp
@@ -126,7 +126,7 @@ class boss_void_reaver : public CreatureScript
target = me->GetVictim();
if (target)
- me->CastSpell(target, SPELL_ARCANE_ORB, false, nullptr, nullptr);
+ me->CastSpell(target, SPELL_ARCANE_ORB);
events.ScheduleEvent(EVENT_ARCANE_ORB, 3000);
break;
diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp
index 4d804355423..dec7a2722cb 100644
--- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp
@@ -245,7 +245,7 @@ class spell_capacitus_polarity_shift : public SpellScriptLoader
Unit* target = GetHitUnit();
Unit* caster = GetCaster();
- target->CastSpell(target, roll_chance_i(50) ? SPELL_POSITIVE_POLARITY : SPELL_NEGATIVE_POLARITY, true, nullptr, nullptr, caster->GetGUID());
+ target->CastSpell(target, roll_chance_i(50) ? SPELL_POSITIVE_POLARITY : SPELL_NEGATIVE_POLARITY, caster->GetGUID());
}
void Register() override
diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
index 49f7ffde633..61cf9fa594a 100644
--- a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
+++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp
@@ -108,7 +108,7 @@ class npc_warp_splinter_treant : public CreatureScript
if (me->IsWithinMeleeRange(Warp))
{
int32 CurrentHP_Treant = (int32)me->GetHealth();
- Warp->CastCustomSpell(Warp, SPELL_HEAL_FATHER, &CurrentHP_Treant, 0, 0, true, 0, 0, me->GetGUID());
+ Warp->CastSpell(Warp, SPELL_HEAL_FATHER, CastSpellExtraArgs(me->GetGUID()).AddSpellBP0(CurrentHP_Treant));
me->DealDamage(me, me->GetHealth(), nullptr, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, nullptr, false);
return;
}
diff --git a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp
index 240ec55c215..d7a1e74e676 100644
--- a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp
+++ b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp
@@ -202,7 +202,7 @@ class spell_mark_of_kazzak : public SpellScriptLoader
if (target->GetPower(POWER_MANA) == 0)
{
- target->CastSpell(target, SPELL_MARK_OF_KAZZAK_DAMAGE, true, nullptr, aurEff);
+ target->CastSpell(target, SPELL_MARK_OF_KAZZAK_DAMAGE, aurEff);
// Remove aura
SetDuration(0);
}
@@ -242,7 +242,7 @@ class spell_twisted_reflection : public SpellScriptLoader
if (!damageInfo || !damageInfo->GetDamage())
return;
- eventInfo.GetActionTarget()->CastSpell(eventInfo.GetActor(), SPELL_TWISTED_REFLECTION_HEAL, true, nullptr, aurEff);
+ eventInfo.GetActionTarget()->CastSpell(eventInfo.GetActor(), SPELL_TWISTED_REFLECTION_HEAL, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Outland/boss_doomwalker.cpp b/src/server/scripts/Outland/boss_doomwalker.cpp
index 68dae506fa3..78f402c3303 100644
--- a/src/server/scripts/Outland/boss_doomwalker.cpp
+++ b/src/server/scripts/Outland/boss_doomwalker.cpp
@@ -78,7 +78,7 @@ class boss_doomwalker : public CreatureScript
void KilledUnit(Unit* victim) override
{
- victim->CastSpell(victim, SPELL_MARK_DEATH, 0);
+ victim->CastSpell(victim, SPELL_MARK_DEATH, true);
if (urand(0, 4))
return;
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index 11ad0fb801a..b1231642d36 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -852,7 +852,7 @@ class npc_simon_bunny : public CreatureScript
if (spell->Id == SPELL_BAD_PRESS_TRIGGER)
{
int32 bp = (int32)((float)(fails)*0.33f*target->GetMaxHealth());
- target->CastCustomSpell(target, SPELL_BAD_PRESS_DAMAGE, &bp, nullptr, nullptr, true);
+ target->CastSpell(target, SPELL_BAD_PRESS_DAMAGE, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(bp));
}
}
diff --git a/src/server/scripts/Pet/pet_hunter.cpp b/src/server/scripts/Pet/pet_hunter.cpp
index ed5f9ea48ed..01386d83c31 100644
--- a/src/server/scripts/Pet/pet_hunter.cpp
+++ b/src/server/scripts/Pet/pet_hunter.cpp
@@ -236,7 +236,7 @@ class spell_pet_guard_dog : public SpellScriptLoader
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(nullptr, SPELL_PET_GUARD_DOG_HAPPINESS, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, SPELL_PET_GUARD_DOG_HAPPINESS, aurEff);
float addThreat = CalculatePct(ASSERT_NOTNULL(eventInfo.GetSpellInfo())->Effects[EFFECT_0].CalcValue(caster), aurEff->GetAmount());
eventInfo.GetProcTarget()->GetThreatManager().AddThreat(caster, addThreat, GetSpellInfo(), false, true);
@@ -288,7 +288,7 @@ class spell_pet_silverback : public SpellScriptLoader
PreventDefaultAction();
uint32 spellId = triggerSpell[GetSpellInfo()->GetRank() - 1];
- eventInfo.GetActor()->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, spellId, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp
index fde570b8c6b..31118c39f46 100644
--- a/src/server/scripts/Spells/spell_dk.cpp
+++ b/src/server/scripts/Spells/spell_dk.cpp
@@ -187,7 +187,7 @@ public:
}
if (Unit* target = eventInfo.GetActionTarget())
- target->CastSpell(target, triggerspell, true, nullptr, aurEff);
+ target->CastSpell(target, triggerspell, aurEff);
}
void Register() override
@@ -341,8 +341,9 @@ class spell_dk_anti_magic_shell_self : public SpellScriptLoader
{
// damage absorbed by Anti-Magic Shell energizes the DK with additional runic power.
// This, if I'm not mistaken, shows that we get back ~20% of the absorbed damage as runic power.
- int32 bp = CalculatePct(absorbAmount, 20);
- GetTarget()->CastCustomSpell(SPELL_DK_RUNIC_POWER_ENERGIZE, SPELLVALUE_BASE_POINT0, bp, GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(absorbAmount, 2));
+ GetTarget()->CastSpell(GetTarget(), SPELL_DK_RUNIC_POWER_ENERGIZE, args);
}
void Register() override
@@ -525,8 +526,9 @@ class spell_dk_blood_gorged : public SpellScriptLoader
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 bp = static_cast<int32>(damageInfo->GetDamage() * 1.5f);
- GetTarget()->CastCustomSpell(SPELL_DK_BLOOD_GORGED_HEAL, SPELLVALUE_BASE_POINT0, bp, _procTarget, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damageInfo->GetDamage() * 1.5f);
+ GetTarget()->CastSpell(_procTarget, SPELL_DK_BLOOD_GORGED_HEAL, args);
}
void Register() override
@@ -590,7 +592,9 @@ class spell_dk_butchery : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastCustomSpell(SPELL_DK_BUTCHERY_RUNIC_POWER, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_DK_BUTCHERY_RUNIC_POWER, args);
}
void Register() override
@@ -679,10 +683,17 @@ class spell_dk_corpse_explosion : public SpellScriptLoader
void HandleDamage(SpellEffIndex effIndex, Unit* target)
{
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
if (effIndex == EFFECT_0)
- GetCaster()->CastCustomSpell(GetSpellInfo()->Effects[EFFECT_1].CalcValue(), SPELLVALUE_BASE_POINT0, GetEffectValue(), target, true);
+ {
+ args.SpellValueOverrides.AddBP0(GetEffectValue());
+ GetCaster()->CastSpell(target, GetSpellInfo()->Effects[EFFECT_1].CalcValue(), args);
+ }
else if (effIndex == EFFECT_1)
- GetCaster()->CastCustomSpell(GetEffectValue(), SPELLVALUE_BASE_POINT0, GetSpell()->CalculateDamage(EFFECT_0, nullptr), target, true);
+ {
+ args.SpellValueOverrides.AddBP0(GetSpell()->CalculateDamage(EFFECT_0, nullptr));
+ GetCaster()->CastSpell(target, GetEffectValue(), args);
+ }
}
void HandleCorpseExplosion(SpellEffIndex effIndex)
@@ -796,8 +807,12 @@ class spell_dk_death_and_decay : public SpellScriptLoader
void HandleDummyTick(AuraEffect const* aurEff)
{
- if (Unit* caster = GetCaster())
- caster->CastCustomSpell(SPELL_DK_DEATH_AND_DECAY_DAMAGE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff);
+ Unit* caster = GetCaster();
+ if (!caster)
+ return;
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ caster->CastSpell(GetTarget(), SPELL_DK_DEATH_AND_DECAY_DAMAGE, args);
}
void Register() override
@@ -829,20 +844,23 @@ class spell_dk_death_coil : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- int32 damage = GetEffectValue();
Unit* caster = GetCaster();
if (Unit* target = GetHitUnit())
{
if (caster->IsFriendlyTo(target))
{
- int32 bp = int32(damage * 1.5f);
- caster->CastCustomSpell(target, SPELL_DK_DEATH_COIL_HEAL, &bp, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetEffectValue() * 1.5f);
+ caster->CastSpell(target, SPELL_DK_DEATH_COIL_HEAL, args);
}
else
{
+ int32 damage = GetEffectValue();
if (AuraEffect const* auraEffect = caster->GetAuraEffect(SPELL_DK_ITEM_SIGIL_VENGEFUL_HEART, EFFECT_1))
damage += auraEffect->GetBaseAmount();
- caster->CastCustomSpell(target, SPELL_DK_DEATH_COIL_DAMAGE, &damage, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ caster->CastSpell(target, SPELL_DK_DEATH_COIL_DAMAGE, args);
}
}
}
@@ -930,13 +948,9 @@ class spell_dk_death_grip : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- int32 damage = GetEffectValue();
- Position const* pos = GetExplTargetDest();
if (Unit* target = GetHitUnit())
- {
if (!target->HasAuraType(SPELL_AURA_DEFLECT_SPELLS)) // Deterrence
- target->CastSpell(pos->GetPositionX(), pos->GetPositionY(), pos->GetPositionZ(), damage, true);
- }
+ target->CastSpell(GetExplTargetDest()->GetPosition(), GetEffectValue(), true);
}
void Register() override
@@ -1123,7 +1137,11 @@ class spell_dk_death_strike : public SpellScriptLoader
// Improved Death Strike
if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_AURA_ADD_PCT_MODIFIER, SPELLFAMILY_DEATHKNIGHT, DK_ICON_ID_IMPROVED_DEATH_STRIKE, 0))
AddPct(bp, caster->CalculateSpellDamage(caster, aurEff->GetSpellInfo(), 2));
- caster->CastCustomSpell(caster, SPELL_DK_DEATH_STRIKE_HEAL, &bp, nullptr, nullptr, false);
+
+ // @todo castspell refactor note: this is not triggered - is this intended??
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddBP0(bp);
+ caster->CastSpell(caster, SPELL_DK_DEATH_STRIKE_HEAL, args);
}
}
@@ -1237,7 +1255,7 @@ class spell_dk_glyph_of_scourge_strike : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DK_GLYPH_OF_SCOURGE_STRIKE_SCRIPT, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DK_GLYPH_OF_SCOURGE_STRIKE_SCRIPT, aurEff);
}
void Register() override
@@ -1374,7 +1392,11 @@ class spell_dk_improved_blood_presence : public SpellScriptLoader
{
Unit* target = GetTarget();
if ((target->HasAura(SPELL_DK_FROST_PRESENCE) || target->HasAura(SPELL_DK_UNHOLY_PRESENCE)) && !target->HasAura(SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT1, aurEff->GetAmount(), target, true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, aurEff->GetAmount());
+ target->CastSpell(target, SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED, args);
+ }
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1424,8 +1446,11 @@ public:
{
PreventDefaultAction();
if (DamageInfo* dmgInfo = eventInfo.GetDamageInfo())
- eventInfo.GetActor()->CastCustomSpell(SPELL_DK_IMPROVED_BLOOD_PRESENCE_HEAL, SPELLVALUE_BASE_POINT0, CalculatePct(static_cast<int32>(dmgInfo->GetDamage()), aurEff->GetAmount()),
- eventInfo.GetActor(), true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(dmgInfo->GetDamage(), aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_DK_IMPROVED_BLOOD_PRESENCE_HEAL, args);
+ }
}
void Register() override
@@ -1466,7 +1491,11 @@ class spell_dk_improved_frost_presence : public SpellScriptLoader
{
Unit* target = GetTarget();
if ((target->HasAura(SPELL_DK_BLOOD_PRESENCE) || target->HasAura(SPELL_DK_UNHOLY_PRESENCE)) && !target->HasAura(SPELL_DK_FROST_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_FROST_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), target, true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ target->CastSpell(target, SPELL_DK_FROST_PRESENCE_TRIGGERED, args);
+ }
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1518,11 +1547,18 @@ class spell_dk_improved_unholy_presence : public SpellScriptLoader
{
// Not listed as any effect, only base points set in dbc
int32 basePoints = GetSpellInfo()->Effects[EFFECT_1].CalcValue();
- target->CastCustomSpell(target, SPELL_DK_IMPROVED_UNHOLY_PRESENCE_TRIGGERED, &basePoints, &basePoints, &basePoints, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ args.SpellValueOverrides.AddMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), basePoints);
+ target->CastSpell(target, SPELL_DK_IMPROVED_UNHOLY_PRESENCE_TRIGGERED, args);
}
if ((target->HasAura(SPELL_DK_BLOOD_PRESENCE) || target->HasAura(SPELL_DK_FROST_PRESENCE)) && !target->HasAura(SPELL_DK_UNHOLY_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_UNHOLY_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), target, true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ target->CastSpell(target, SPELL_DK_UNHOLY_PRESENCE_TRIGGERED, args);
+ }
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1575,7 +1611,7 @@ class spell_dk_pvp_4p_bonus : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActionTarget()->CastSpell(nullptr, SPELL_DK_RUNIC_RETURN, true, nullptr, aurEff);
+ eventInfo.GetActionTarget()->CastSpell(nullptr, SPELL_DK_RUNIC_RETURN, aurEff);
}
void Register() override
@@ -1609,7 +1645,7 @@ class spell_dk_mark_of_blood : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DK_MARK_OF_BLOOD_HEAL, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DK_MARK_OF_BLOOD_HEAL, aurEff);
}
void Register() override
@@ -1647,8 +1683,9 @@ class spell_dk_necrosis : public SpellScriptLoader
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 amount = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- eventInfo.GetActor()->CastCustomSpell(SPELL_DK_NECROSIS_DAMAGE, SPELLVALUE_BASE_POINT0, amount, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DK_NECROSIS_DAMAGE, args);
}
void Register() override
@@ -1786,7 +1823,11 @@ class spell_dk_presence : public SpellScriptLoader
target->CastSpell(target, SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED, true);
else if (AuraEffect const* impAurEff = target->GetAuraEffectOfRankedSpell(SPELL_DK_IMPROVED_BLOOD_PRESENCE_R1, EFFECT_0))
if (!target->HasAura(SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT1, impAurEff->GetAmount(), target, true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, impAurEff->GetAmount());
+ target->CastSpell(target, SPELL_DK_IMPROVED_BLOOD_PRESENCE_TRIGGERED, args);
+ }
}
void HandleImprovedFrostPresence(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -1797,7 +1838,11 @@ class spell_dk_presence : public SpellScriptLoader
target->CastSpell(target, SPELL_DK_FROST_PRESENCE_TRIGGERED, true);
else if (AuraEffect const* impAurEff = target->GetAuraEffectOfRankedSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_R1, EFFECT_0))
if (!target->HasAura(SPELL_DK_FROST_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_FROST_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, impAurEff->GetAmount(), target, true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(impAurEff->GetAmount());
+ target->CastSpell(target, SPELL_DK_FROST_PRESENCE_TRIGGERED, args);
+ }
}
void HandleImprovedUnholyPresence(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
@@ -1813,10 +1858,17 @@ class spell_dk_presence : public SpellScriptLoader
{
// Not listed as any effect, only base points set
int32 bp = impAurEff->GetSpellInfo()->Effects[EFFECT_1].CalcValue();
- target->CastCustomSpell(target, SPELL_DK_IMPROVED_UNHOLY_PRESENCE_TRIGGERED, &bp, &bp, &bp, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ args.SpellValueOverrides.AddMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), bp);
+ target->CastSpell(target, SPELL_DK_IMPROVED_UNHOLY_PRESENCE_TRIGGERED, args);
}
else if (!target->HasAura(SPELL_DK_UNHOLY_PRESENCE_TRIGGERED))
- target->CastCustomSpell(SPELL_DK_UNHOLY_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, impAurEff->GetAmount(), target, true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(impAurEff->GetAmount());
+ target->CastSpell(target, SPELL_DK_UNHOLY_PRESENCE_TRIGGERED, args);
+ }
}
}
@@ -1971,11 +2023,7 @@ class spell_dk_raise_dead : public SpellScriptLoader
void HandleRaiseDead(SpellEffIndex /*effIndex*/)
{
- SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(GetGhoulSpellId());
- SpellCastTargets targets;
- targets.SetDst(*GetHitUnit());
-
- GetCaster()->CastSpell(targets, spellInfo, nullptr, TRIGGERED_FULL_MASK);
+ GetCaster()->CastSpell(GetHitUnit()->GetPosition(), GetGhoulSpellId(), TRIGGERED_FULL_MASK);
}
void OverrideCooldown()
@@ -2090,7 +2138,7 @@ class spell_dk_scent_of_blood : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_DK_SCENT_OF_BLOOD, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_DK_SCENT_OF_BLOOD, aurEff);
ModStackAmount(-1);
}
@@ -2183,7 +2231,9 @@ class spell_dk_scourge_strike : public SpellScriptLoader
if (AuraEffect* aurEff = caster->GetAuraEffectOfRankedSpell(SPELL_DK_BLACK_ICE_R1, EFFECT_0))
AddPct(bp, aurEff->GetAmount());
- caster->CastCustomSpell(unitTarget, SPELL_DK_SCOURGE_STRIKE_TRIGGERED, &bp, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(bp);
+ caster->CastSpell(unitTarget, SPELL_DK_SCOURGE_STRIKE_TRIGGERED, args);
}
}
@@ -2286,7 +2336,7 @@ class spell_dk_sudden_doom : public SpellScriptLoader
if (!spellId)
return;
- caster->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
+ caster->CastSpell(eventInfo.GetProcTarget(), spellId, aurEff);
}
void Register() override
@@ -2364,7 +2414,7 @@ class spell_dk_threat_of_thassarian : public SpellScriptLoader
return;
spellId = sSpellMgr->GetSpellWithRank(spellId, spellInfo->GetRank());
- caster->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
+ caster->CastSpell(eventInfo.GetProcTarget(), spellId, aurEff);
}
void Register() override
@@ -2420,7 +2470,9 @@ class spell_dk_unholy_blight : public SpellScriptLoader
// Add remaining ticks to healing done
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_DK_UNHOLY_BLIGHT_DAMAGE, SPELL_AURA_PERIODIC_DAMAGE);
- caster->CastCustomSpell(SPELL_DK_UNHOLY_BLIGHT_DAMAGE, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_DK_UNHOLY_BLIGHT_DAMAGE, args);
}
void Register() override
@@ -2479,9 +2531,10 @@ class spell_dk_vendetta : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- Unit* caster = eventInfo.GetActor();
- int32 amount = caster->CountPctFromMaxHealth(aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_DK_VENDETTA_HEAL, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ Unit* const caster = eventInfo.GetActor();
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(caster->CountPctFromMaxHealth(aurEff->GetAmount()));
+ caster->CastSpell(nullptr, SPELL_DK_VENDETTA_HEAL, args);
}
void Register() override
@@ -2524,7 +2577,9 @@ class spell_dk_wandering_plague : public SpellScriptLoader
return;
int32 amount = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_DK_WANDERING_PLAGUE_DAMAGE, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_DK_WANDERING_PLAGUE_DAMAGE, args);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp
index 6840cd02f27..b498e121036 100644
--- a/src/server/scripts/Spells/spell_druid.cpp
+++ b/src/server/scripts/Spells/spell_druid.cpp
@@ -259,7 +259,7 @@ class spell_dru_eclipse : public SpellScriptLoader
PreventDefaultAction();
_solarProcCooldownEnd = GameTime::GetGameTimeSteadyPoint() + Seconds(30);
- eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_DRUID_ECLIPSE_SOLAR_PROC, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_DRUID_ECLIPSE_SOLAR_PROC, aurEff);
}
void ProcLunar(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
@@ -267,7 +267,7 @@ class spell_dru_eclipse : public SpellScriptLoader
PreventDefaultAction();
_lunarProcCooldownEnd = GameTime::GetGameTimeSteadyPoint() + Seconds(30);
- eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_DRUID_ECLIPSE_LUNAR_PROC, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetActor(), SPELL_DRUID_ECLIPSE_LUNAR_PROC, aurEff);
}
void Register() override
@@ -331,7 +331,11 @@ class spell_dru_enrage : public SpellScriptLoader
{
Unit* target = GetTarget();
if (AuraEffect const* aurEff = target->GetAuraEffectOfRankedSpell(SPELL_DRUID_KING_OF_THE_JUNGLE, EFFECT_0))
- target->CastCustomSpell(SPELL_DRUID_ENRAGE_MOD_DAMAGE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), target, true);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ target->CastSpell(target, SPELL_DRUID_ENRAGE_MOD_DAMAGE, args);
+ }
// Item - Druid T10 Feral 4P Bonus
if (target->HasAura(SPELL_DRUID_ITEM_T10_FERAL_4P_BONUS))
@@ -431,7 +435,7 @@ public:
return;
}
- target->CastSpell(target, triggerspell, true, nullptr, aurEff);
+ target->CastSpell(target, triggerspell, aurEff);
}
void Register() override
@@ -501,7 +505,9 @@ class spell_dru_frenzied_regeneration : public AuraScript
int32 const mod = std::min(static_cast<int32>(rage), 100);
int32 const regen = CalculatePct(GetTarget()->GetMaxHealth(), GetTarget()->CalculateSpellDamage(nullptr, GetSpellInfo(), EFFECT_1) * mod / 100.f);
- GetTarget()->CastCustomSpell(SPELL_DRUID_FRENZIED_REGENERATION_HEAL, SPELLVALUE_BASE_POINT0, regen, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(regen);
+ GetTarget()->CastSpell(nullptr, SPELL_DRUID_FRENZIED_REGENERATION_HEAL, args);
GetTarget()->SetPower(POWER_RAGE, rage - mod);
}
@@ -529,7 +535,7 @@ class spell_dru_glyph_of_barkskin : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_DRUID_BARKSKIN_01, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_DRUID_BARKSKIN_01, aurEff);
}
void Register() override
@@ -570,7 +576,9 @@ class spell_dru_glyph_of_innervate : public SpellScriptLoader
ASSERT(spellInfo->GetMaxTicks() > 0);
amount /= spellInfo->GetMaxTicks();
- caster->CastCustomSpell(SPELL_DRUID_GLYPH_OF_INNERVATE_REGEN, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(nullptr, SPELL_DRUID_GLYPH_OF_INNERVATE_REGEN, args);
}
void Register() override
@@ -608,7 +616,7 @@ class spell_dru_glyph_of_rake : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_GLYPH_OF_RAKE_TRIGGERED, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_GLYPH_OF_RAKE_TRIGGERED, aurEff);
}
void Register() override
@@ -651,8 +659,9 @@ class spell_dru_glyph_of_rejuvenation : public SpellScriptLoader
if (!healInfo || !healInfo->GetHeal())
return;
- int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), aurEff->GetAmount());
- eventInfo.GetActor()->CastCustomSpell(SPELL_DRUID_GLYPH_OF_REJUVENATION_HEAL, SPELLVALUE_BASE_POINT0, amount, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_GLYPH_OF_REJUVENATION_HEAL, args);
}
void Register() override
@@ -798,7 +807,7 @@ class spell_dru_glyph_of_starfire_dummy : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_GLYPH_OF_STARFIRE_SCRIPT, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_GLYPH_OF_STARFIRE_SCRIPT, aurEff);
}
void Register() override
@@ -947,8 +956,9 @@ class spell_dru_leader_of_the_pack : public SpellScriptLoader
if (caster->GetSpellHistory()->HasCooldown(SPELL_DRUID_IMP_LEADER_OF_THE_PACK_HEAL))
return;
- int32 amount = caster->CountPctFromMaxHealth(aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_DRUID_IMP_LEADER_OF_THE_PACK_HEAL, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(caster->CountPctFromMaxHealth(aurEff->GetAmount()));
+ caster->CastSpell(nullptr, SPELL_DRUID_IMP_LEADER_OF_THE_PACK_HEAL, args);
// Because of how proc system works, we can't store proc cd on db, it would be applied to entire aura
// so aura could only proc once per 6 seconds, independently of caster
@@ -961,8 +971,9 @@ class spell_dru_leader_of_the_pack : public SpellScriptLoader
AuraEffect const* impLotpMana = caster->GetAuraEffectOfRankedSpell(SPELL_DRUID_IMP_LEADER_OF_THE_PACK_R1, EFFECT_0, aurEff->GetCasterGUID());
ASSERT(impLotpMana);
- int32 manaAmount = CalculatePct(static_cast<int32>(caster->GetMaxPower(POWER_MANA)), impLotpMana->GetSpellInfo()->Effects[EFFECT_1].CalcValue());
- caster->CastCustomSpell(SPELL_DRUID_IMP_LEADER_OF_THE_PACK_MANA, SPELLVALUE_BASE_POINT0, manaAmount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args2(aurEff);
+ args2.SpellValueOverrides.AddBP0(CalculatePct(caster->GetMaxPower(POWER_MANA), impLotpMana->GetSpellInfo()->Effects[EFFECT_1].CalcValue()));
+ caster->CastSpell(nullptr, SPELL_DRUID_IMP_LEADER_OF_THE_PACK_MANA, args2);
}
void Register() override
@@ -996,54 +1007,42 @@ class spell_dru_lifebloom : public SpellScriptLoader
});
}
- void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ void OnRemoveEffect(Unit* target, AuraEffect const* aurEff, uint32 stack)
{
- // Final heal only on duration end
- if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
- return;
-
- // final heal
- int32 stack = GetStackAmount();
int32 healAmount = aurEff->GetAmount();
if (Unit* caster = GetCaster())
{
- healAmount = caster->SpellHealingBonusDone(GetTarget(), GetSpellInfo(), healAmount, HEAL, stack);
- healAmount = GetTarget()->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, stack);
-
- GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, aurEff, GetCasterGUID());
+ healAmount = caster->SpellHealingBonusDone(target, GetSpellInfo(), healAmount, HEAL, stack);
+ healAmount = target->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, stack);
// restore mana
- int32 returnMana = CalculatePct(caster->GetCreateMana(), GetSpellInfo()->ManaCostPercentage) * stack / 2;
- caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, nullptr, nullptr, true, nullptr, aurEff, GetCasterGUID());
- return;
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(CalculatePct(caster->GetCreateMana(), GetSpellInfo()->ManaCostPercentage) * stack / 2);
+ caster->CastSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, args);
}
- GetTarget()->CastCustomSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, aurEff, GetCasterGUID());
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(healAmount);
+ target->CastSpell(GetTarget(), SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, args);
+ }
+
+ void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
+ {
+ // Final heal only on duration end
+ if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
+ return;
+
+ // final heal
+ OnRemoveEffect(GetTarget(), aurEff, GetStackAmount());
}
void HandleDispel(DispelInfo* dispelInfo)
{
if (Unit* target = GetUnitOwner())
- {
if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
- {
- // final heal
- int32 healAmount = aurEff->GetAmount();
- if (Unit* caster = GetCaster())
- {
- healAmount = caster->SpellHealingBonusDone(target, GetSpellInfo(), healAmount, HEAL, dispelInfo->GetRemovedCharges());
- healAmount = target->SpellHealingBonusTaken(caster, GetSpellInfo(), healAmount, HEAL, dispelInfo->GetRemovedCharges());
- target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, nullptr, GetCasterGUID());
-
- // restore mana
- int32 returnMana = CalculatePct(caster->GetCreateMana(), GetSpellInfo()->ManaCostPercentage) * dispelInfo->GetRemovedCharges() / 2;
- caster->CastCustomSpell(caster, SPELL_DRUID_LIFEBLOOM_ENERGIZE, &returnMana, nullptr, nullptr, true, nullptr, nullptr, GetCasterGUID());
- return;
- }
-
- target->CastCustomSpell(target, SPELL_DRUID_LIFEBLOOM_FINAL_HEAL, &healAmount, nullptr, nullptr, true, nullptr, nullptr, GetCasterGUID());
- }
- }
+ OnRemoveEffect(target, aurEff, dispelInfo->GetRemovedCharges()); // final heal
}
void Register() override
@@ -1082,8 +1081,9 @@ class spell_dru_living_seed : public SpellScriptLoader
if (!healInfo || !healInfo->GetHeal())
return;
- int32 amount = CalculatePct(healInfo->GetHeal(), aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_DRUID_LIVING_SEED_PROC, SPELLVALUE_BASE_POINT0, amount, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()));
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_LIVING_SEED_PROC, args);
}
void Register() override
@@ -1116,7 +1116,9 @@ class spell_dru_living_seed_proc : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastCustomSpell(SPELL_DRUID_LIVING_SEED_HEAL, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ GetTarget()->CastSpell(GetTarget(), SPELL_DRUID_LIVING_SEED_HEAL, args);
}
void Register() override
@@ -1205,7 +1207,7 @@ class spell_dru_omen_of_clarity : public SpellScriptLoader
{
Unit* target = GetTarget();
if (target->HasAura(SPELL_DRUID_BALANCE_T10_BONUS))
- target->CastSpell(nullptr, SPELL_DRUID_BALANCE_T10_BONUS_PROC, true, nullptr, aurEff);
+ target->CastSpell(nullptr, SPELL_DRUID_BALANCE_T10_BONUS_PROC, aurEff);
}
void Register() override
@@ -1375,7 +1377,7 @@ class spell_dru_revitalize : public SpellScriptLoader
return;
}
- eventInfo.GetActor()->CastSpell(target, spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(target, spellId, aurEff);
}
void Register() override
@@ -1457,8 +1459,9 @@ class spell_dru_savage_defense : public SpellScriptLoader
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- int32 amount = static_cast<int32>(CalculatePct(caster->GetTotalAttackPowerValue(BASE_ATTACK), aurEff->GetAmount()));
- caster->CastCustomSpell(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(caster->GetTotalAttackPowerValue(BASE_ATTACK), aurEff->GetAmount()));
+ caster->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, args);
}
void Register() override
@@ -1510,7 +1513,7 @@ class spell_dru_savage_roar : public SpellScriptLoader
void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
- target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, true, nullptr, aurEff, GetCasterGUID());
+ target->CastSpell(target, SPELL_DRUID_SAVAGE_ROAR, { aurEff, GetCasterGUID() });
}
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1646,8 +1649,9 @@ class spell_dru_survival_instincts : public SpellScriptLoader
void AfterApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
Unit* target = GetTarget();
- int32 bp0 = target->CountPctFromMaxHealth(aurEff->GetAmount());
- target->CastCustomSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, &bp0, nullptr, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(target->CountPctFromMaxHealth(aurEff->GetAmount()));
+ target->CastSpell(target, SPELL_DRUID_SURVIVAL_INSTINCTS, args);
}
void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -1720,7 +1724,11 @@ class spell_dru_tiger_s_fury : public SpellScriptLoader
void OnHit()
{
if (AuraEffect const* aurEff = GetHitUnit()->GetAuraEffectOfRankedSpell(SPELL_DRUID_KING_OF_THE_JUNGLE, EFFECT_1))
- GetHitUnit()->CastCustomSpell(SPELL_DRUID_TIGER_S_FURY_ENERGIZE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetHitUnit(), true);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_DRUID_TIGER_S_FURY_ENERGIZE, args);
+ }
}
void Register() override
@@ -1812,7 +1820,7 @@ class spell_dru_t3_2p_bonus : public SpellScriptLoader
return;
}
- eventInfo.GetActor()->CastSpell(target, spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(target, spellId, aurEff);
}
void Register() override
@@ -1846,7 +1854,7 @@ class spell_dru_t3_6p_bonus : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_BLESSING_OF_THE_CLAW, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_DRUID_BLESSING_OF_THE_CLAW, aurEff);
}
void Register() override
@@ -1885,7 +1893,9 @@ class spell_dru_t3_8p_bonus : public SpellScriptLoader
Unit* caster = eventInfo.GetActor();
int32 amount = CalculatePct(spellInfo->CalcPowerCost(caster, spellInfo->GetSchoolMask()), aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_DRUID_EXHILARATE, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(nullptr, SPELL_DRUID_EXHILARATE, args);
}
void Register() override
@@ -1919,7 +1929,7 @@ class spell_dru_t4_2p_bonus : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_DRUID_INFUSION, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_DRUID_INFUSION, aurEff);
}
void Register() override
@@ -1985,7 +1995,7 @@ class spell_dru_item_t6_trinket : public SpellScriptLoader
return;
if (roll_chance_i(chance))
- eventInfo.GetActor()->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, spellId, aurEff);
}
void Register() override
@@ -2056,7 +2066,7 @@ public:
return;
}
- target->CastSpell(target, triggerspell, true, nullptr, aurEff);
+ target->CastSpell(target, triggerspell, aurEff);
}
void Register() override
@@ -2106,7 +2116,9 @@ class spell_dru_t10_balance_4p_bonus : public SpellScriptLoader
// Add remaining ticks to damage done
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_DRUID_LANGUISH, SPELL_AURA_PERIODIC_DAMAGE);
- caster->CastCustomSpell(SPELL_DRUID_LANGUISH, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_DRUID_LANGUISH, args);
}
void Register() override
@@ -2212,8 +2224,9 @@ class spell_dru_t10_restoration_4p_bonus_dummy : public SpellScriptLoader
{
PreventDefaultAction();
- int32 amount = static_cast<int32>(eventInfo.GetHealInfo()->GetHeal());
- eventInfo.GetActor()->CastCustomSpell(SPELL_DRUID_REJUVENATION_T10_PROC, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(eventInfo.GetHealInfo()->GetHeal());
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_DRUID_REJUVENATION_T10_PROC, args);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index d40d8a59a7c..3c1a63d9fce 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -138,7 +138,7 @@ class spell_gen_adaptive_warding : public AuraScript
default:
return;
}
- GetTarget()->CastSpell(GetTarget(), spellId, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), spellId, aurEff);
}
void Register() override
@@ -492,7 +492,9 @@ class spell_gen_blood_reserve : public AuraScript
PreventDefaultAction();
Unit* caster = eventInfo.GetActionTarget();
- caster->CastCustomSpell(SPELL_GEN_BLOOD_RESERVE_HEAL, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), caster, TRIGGERED_FULL_MASK, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ caster->CastSpell(caster, SPELL_GEN_BLOOD_RESERVE_HEAL, args);
caster->RemoveAura(SPELL_GEN_BLOOD_RESERVE_AURA);
}
@@ -531,7 +533,9 @@ class spell_gen_blade_warding : public AuraScript
for (uint8 i = 0; i < stacks; ++i)
bp += spellInfo->Effects[EFFECT_0].CalcValue(caster);
- caster->CastCustomSpell(SPELL_GEN_BLADE_WARDING_TRIGGERED, SPELLVALUE_BASE_POINT0, bp, eventInfo.GetActor(), TRIGGERED_FULL_MASK, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ caster->CastSpell(eventInfo.GetActor(), SPELL_GEN_BLADE_WARDING_TRIGGERED, args);
}
void Register() override
@@ -811,7 +815,11 @@ class spell_gen_chaos_blast : public SpellScript
int32 basepoints0 = 100;
Unit* caster = GetCaster();
if (Unit* target = GetHitUnit())
- caster->CastCustomSpell(target, SPELL_CHAOS_BLAST, &basepoints0, nullptr, nullptr, true);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(basepoints0);
+ caster->CastSpell(target, SPELL_CHAOS_BLAST, args);
+ }
}
void Register() override
@@ -1257,7 +1265,7 @@ class spell_gen_defend : public AuraScript
for (uint8 i = 0; i < GetSpellInfo()->StackAmount; ++i)
target->RemoveAurasDueToSpell(SPELL_VISUAL_SHIELD_1 + i);
- target->CastSpell(target, SPELL_VISUAL_SHIELD_1 + GetAura()->GetStackAmount() - 1, true, nullptr, aurEff);
+ target->CastSpell(target, SPELL_VISUAL_SHIELD_1 + GetAura()->GetStackAmount() - 1, aurEff);
}
else
GetTarget()->RemoveAurasDueToSpell(GetId());
@@ -1464,7 +1472,7 @@ class spell_gen_elune_candle : public SpellScript
else
spellId = SPELL_ELUNE_CANDLE_NORMAL;
- GetCaster()->CastSpell(GetHitUnit(), spellId, true, nullptr);
+ GetCaster()->CastSpell(GetHitUnit(), spellId, true);
}
void Register() override
@@ -1637,7 +1645,7 @@ class spell_gen_lifebloom : public SpellScriptLoader
return;
// final heal
- GetTarget()->CastSpell(GetTarget(), _spellId, true, nullptr, aurEff, GetCasterGUID());
+ GetTarget()->CastSpell(GetTarget(), _spellId, { aurEff, GetCasterGUID() });
}
void Register() override
@@ -2038,7 +2046,7 @@ class spell_gen_moss_covered_feet : public AuraScript
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActionTarget()->CastSpell(nullptr, SPELL_FALL_DOWN, true, nullptr, aurEff);
+ eventInfo.GetActionTarget()->CastSpell(nullptr, SPELL_FALL_DOWN, aurEff);
}
void Register() override
@@ -2061,7 +2069,9 @@ class spell_gen_negative_energy_periodic : public AuraScript
{
PreventDefaultAction();
- GetTarget()->CastCustomSpell(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, SPELLVALUE_MAX_TARGETS, aurEff->GetTickNumber() / 10 + 1, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, aurEff->GetTickNumber() / 10 + 1);
+ GetTarget()->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, args);
}
void Register() override
@@ -2240,7 +2250,7 @@ class spell_gen_obsidian_armor : public AuraScript
default:
return;
}
- GetTarget()->CastSpell(GetTarget(), spellId, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), spellId, aurEff);
}
void Register() override
@@ -2359,7 +2369,7 @@ class spell_gen_paralytic_poison : public AuraScript
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
return;
- GetTarget()->CastSpell(nullptr, SPELL_PARALYSIS, true, nullptr, aurEff);
+ GetTarget()->CastSpell(nullptr, SPELL_PARALYSIS, aurEff);
}
void Register() override
@@ -3091,7 +3101,7 @@ class spell_gen_turkey_marker : public AuraScript
// on stack 15 cast the achievement crediting spell
if (GetStackAmount() >= 15)
- target->CastSpell(target, SPELL_TURKEY_VENGEANCE, true, nullptr, aurEff, GetCasterGUID());
+ target->CastSpell(target, SPELL_TURKEY_VENGEANCE, { aurEff, GetCasterGUID() });
}
void OnPeriodic(AuraEffect const* /*aurEff*/)
@@ -3172,8 +3182,9 @@ class spell_gen_vampiric_touch : public AuraScript
return;
Unit* caster = eventInfo.GetActor();
- int32 bp = damageInfo->GetDamage() / 2;
- caster->CastCustomSpell(SPELL_VAMPIRIC_TOUCH_HEAL, SPELLVALUE_BASE_POINT0, bp, caster, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damageInfo->GetDamage() / 2);
+ caster->CastSpell(caster, SPELL_VAMPIRIC_TOUCH_HEAL, args);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp
index 8c395077c96..dfaaaff9d6a 100644
--- a/src/server/scripts/Spells/spell_holiday.cpp
+++ b/src/server/scripts/Spells/spell_holiday.cpp
@@ -569,7 +569,7 @@ class spell_pilgrims_bounty_feast_on : public SpellScriptLoader
if (Player* player = target->ToPlayer())
{
player->CastSpell(player, SPELL_ON_PLATE_EAT_VISUAL, true);
- caster->CastSpell(player, _spellId, true, nullptr, nullptr, player->GetGUID());
+ caster->CastSpell(player, _spellId, player->GetGUID());
}
if (Aura* aura = caster->GetAura(GetEffectValue()))
@@ -1183,15 +1183,23 @@ class spell_brewfest_ram : public SpellScriptLoader
target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_GREEN, true);
break;
case SPELL_RAM_CANTER:
- target->CastCustomSpell(SPELL_RAM_FATIGUE, SPELLVALUE_AURA_STACK, 1, target, TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, 1);
+ target->CastSpell(target, SPELL_RAM_FATIGUE, args);
if (aurEff->GetTickNumber() == 8)
target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_YELLOW, true);
break;
+ }
case SPELL_RAM_GALLOP:
- target->CastCustomSpell(SPELL_RAM_FATIGUE, SPELLVALUE_AURA_STACK, target->HasAura(SPELL_RAM_FATIGUE) ? 4 : 5 /*Hack*/, target, TRIGGERED_FULL_MASK);
+ {
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, target->HasAura(SPELL_RAM_FATIGUE) ? 4 : 5 /*Hack*/);
+ target->CastSpell(target, SPELL_RAM_FATIGUE, args);
if (aurEff->GetTickNumber() == 8)
target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_RED, true);
break;
+ }
default:
break;
}
diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp
index eaee7a93fd9..fe2ba85de5b 100644
--- a/src/server/scripts/Spells/spell_hunter.cpp
+++ b/src/server/scripts/Spells/spell_hunter.cpp
@@ -179,14 +179,16 @@ class spell_hun_ascpect_of_the_viper : public SpellScriptLoader
if (AuraEffect const* glyph = GetTarget()->GetAuraEffect(SPELL_HUNTER_GLYPH_OF_ASPECT_OF_THE_VIPER, EFFECT_0))
AddPct(mana, glyph->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE, SPELLVALUE_BASE_POINT0, mana, GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(mana);
+ GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_ASPECT_OF_THE_VIPER_ENERGIZE, args);
}
void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
// Hunter T7 4P Bonus
if (GetTarget()->HasAura(SPELL_HUNTER_VIPER_ATTACK_SPEED))
- GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_VICIOUS_VIPER, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_VICIOUS_VIPER, aurEff);
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -288,7 +290,11 @@ class spell_hun_chimera_shot : public SpellScriptLoader
}
if (spellId)
- caster->CastCustomSpell(spellId, SPELLVALUE_BASE_POINT0, basePoint, unitTarget, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD));
+ {
+ CastSpellExtraArgs args(TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD));
+ args.SpellValueOverrides.AddBP0(basePoint);
+ caster->CastSpell(unitTarget, spellId, args);
+ }
}
}
@@ -324,7 +330,10 @@ class spell_hun_cobra_strikes : public SpellScriptLoader
PreventDefaultAction();
SpellInfo const* triggeredSpellInfo = sSpellMgr->AssertSpellInfo(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell);
- GetTarget()->CastCustomSpell(triggeredSpellInfo->Id, SPELLVALUE_AURA_STACK, triggeredSpellInfo->StackAmount, (Unit*)nullptr, true);
+
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, triggeredSpellInfo->StackAmount);
+ GetTarget()->CastSpell(nullptr, triggeredSpellInfo->Id, args);
}
void Register() override
@@ -441,7 +450,10 @@ class spell_hun_glyph_of_arcane_shot : public SpellScriptLoader
int32 mana = procSpell->CalcPowerCost(GetTarget(), procSpell->GetSchoolMask());
ApplyPct(mana, aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_HUNTER_GLYPH_OF_ARCANE_SHOT, SPELLVALUE_BASE_POINT0, mana, GetTarget());
+ // castspell refactor note: this is not triggered - is this intended?
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddBP0(mana);
+ GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_GLYPH_OF_ARCANE_SHOT, args);
}
void Register() override
@@ -475,7 +487,7 @@ class spell_hun_glyph_of_mend_pet : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetProcTarget()->CastSpell(nullptr, SPELL_HUNTER_GLYPH_OF_MEND_PET_HAPPINESS, true, nullptr, aurEff);
+ eventInfo.GetProcTarget()->CastSpell(nullptr, SPELL_HUNTER_GLYPH_OF_MEND_PET_HAPPINESS, aurEff);
}
void Register() override
@@ -503,7 +515,11 @@ class spell_hun_explosive_shot : public AuraScript
void PeriodicTick(AuraEffect const* aurEff)
{
if (Unit* caster = GetCaster())
- caster->CastCustomSpell(SPELL_HUNTER_EXPLOSIVE_SHOT_DAMAGE, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ caster->CastSpell(GetTarget(), SPELL_HUNTER_EXPLOSIVE_SHOT_DAMAGE, args);
+ }
}
void Register() override
@@ -530,7 +546,7 @@ class spell_hun_feeding_frenzy : public AuraScript
uint32 spellId = triggerSpells[rank - 1];
if (GetTarget()->GetVictim() && GetTarget()->EnsureVictim()->HasAuraState(AURA_STATE_HEALTHLESS_35_PERCENT))
- GetTarget()->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ GetTarget()->CastSpell(nullptr, spellId, aurEff);
else
GetTarget()->RemoveAurasDueToSpell(spellId);
}
@@ -559,7 +575,7 @@ class spell_hun_hunting_party : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_REPLENISHMENT, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_REPLENISHMENT, aurEff);
}
void Register() override
@@ -597,7 +613,7 @@ class spell_hun_improved_mend_pet : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_IMPROVED_MEND_PET, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_IMPROVED_MEND_PET, aurEff);
}
void Register() override
@@ -704,8 +720,9 @@ class spell_hun_last_stand_pet : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
- int32 healthModSpellBasePoints0 = int32(caster->CountPctFromMaxHealth(30));
- caster->CastCustomSpell(caster, SPELL_HUNTER_PET_LAST_STAND_TRIGGERED, &healthModSpellBasePoints0, nullptr, nullptr, true, nullptr);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(caster->CountPctFromMaxHealth(30));
+ caster->CastSpell(caster, SPELL_HUNTER_PET_LAST_STAND_TRIGGERED, args);
}
void Register() override
@@ -905,7 +922,7 @@ class spell_hun_misdirection : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_MISDIRECTION_PROC, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_MISDIRECTION_PROC, aurEff);
}
void Register() override
@@ -1035,7 +1052,9 @@ class spell_hun_pet_heart_of_the_phoenix : public SpellScriptLoader
{
if (!caster->HasAura(SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF))
{
- owner->CastCustomSpell(SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED, SPELLVALUE_BASE_POINT0, 100, caster, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(100); // @todo shouldn't this be in spellmgr if it's constant?
+ owner->CastSpell(caster, SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED, args);
caster->CastSpell(caster, SPELL_HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF, true);
}
}
@@ -1091,7 +1110,9 @@ public:
uint32 bp = CalculatePct(int32(dmg), aurEff->GetAmount()) / (duration / int32(amplitude));
bp += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_HUNTER_PIERCING_SHOTS, SPELL_AURA_PERIODIC_DAMAGE);
- caster->CastCustomSpell(SPELL_HUNTER_PIERCING_SHOTS, SPELLVALUE_BASE_POINT0, bp, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ caster->CastSpell(target, SPELL_HUNTER_PIERCING_SHOTS, args);
}
}
@@ -1128,9 +1149,9 @@ class spell_hun_rapid_recuperation : public SpellScriptLoader
PreventDefaultAction();
Unit* target = GetTarget();
- uint32 mana = CalculatePct(target->GetMaxPower(POWER_MANA), aurEff->GetAmount());
-
- target->CastCustomSpell(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, SPELLVALUE_BASE_POINT0, int32(mana), target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(target->GetMaxPower(POWER_MANA), aurEff->GetAmount()));
+ target->CastSpell(target, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, args);
}
void Register() override
@@ -1188,7 +1209,7 @@ class spell_hun_rapid_recuperation_trigger : public SpellScriptLoader
uint8 rank = GetSpellInfo()->GetRank();
uint32 spellId = triggerSpells[rank - 1];
- eventInfo.GetActor()->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, spellId, aurEff);
}
void Register() override
@@ -1280,8 +1301,9 @@ class spell_hun_roar_of_sacrifice : public SpellScriptLoader
{
PreventDefaultAction();
- uint32 damage = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount());
- eventInfo.GetActor()->CastCustomSpell(SPELL_ROAR_OF_SACRIFICE_TRIGGERED, SPELLVALUE_BASE_POINT0, damage, GetCaster(), TRIGGERED_FULL_MASK, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(GetCaster(), SPELL_ROAR_OF_SACRIFICE_TRIGGERED, args);
}
void Register() override
@@ -1355,7 +1377,7 @@ class spell_hun_sniper_training : public SpellScriptLoader
{
Unit* target = GetTarget();
uint32 spellId = SPELL_HUNTER_SNIPER_TRAINING_BUFF_R1 + GetId() - SPELL_HUNTER_SNIPER_TRAINING_R1;
- target->CastSpell(target, spellId, true, 0, aurEff);
+ target->CastSpell(target, spellId, aurEff);
if (Player* playerTarget = GetUnitOwner()->ToPlayer())
{
int32 baseAmount = aurEff->GetBaseAmount();
@@ -1517,7 +1539,9 @@ class spell_hun_thrill_of_the_hunt : public SpellScriptLoader
if (!amount)
return;
- caster->CastCustomSpell(SPELL_HUNTER_THRILL_OF_THE_HUNT_MANA, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(nullptr, SPELL_HUNTER_THRILL_OF_THE_HUNT_MANA, args);
}
void Register() override
@@ -1559,7 +1583,7 @@ public:
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(caster->ToPlayer()->GetPet(), SPELL_HUNTER_T9_4P_GREATNESS, true, nullptr, aurEff);
+ caster->CastSpell(caster->ToPlayer()->GetPet(), SPELL_HUNTER_T9_4P_GREATNESS, aurEff);
}
void Register() override
@@ -1597,7 +1621,7 @@ class spell_hun_viper_attack_speed : public SpellScriptLoader
void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
if (GetTarget()->HasAura(SPELL_HUNTER_ASPECT_OF_THE_VIPER))
- GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_VICIOUS_VIPER, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_HUNTER_VICIOUS_VIPER, aurEff);
}
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index a3ec935866d..91887c1b9f3 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -65,7 +65,7 @@ class spell_item_trigger_spell : public SpellScriptLoader
{
Unit* caster = GetCaster();
if (Item* item = GetCastItem())
- caster->CastSpell(caster, _triggeredSpellId, true, item);
+ caster->CastSpell(caster, _triggeredSpellId, item);
}
void Register() override
@@ -98,7 +98,7 @@ class spell_item_aegis_of_preservation : public AuraScript
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_AEGIS_HEAL, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_AEGIS_HEAL, aurEff);
}
void Register() override
@@ -129,7 +129,7 @@ class spell_item_absorb_eye_of_grillok : public AuraScript
if (!GetCaster() || GetTarget()->GetTypeId() != TYPEID_UNIT)
return;
- GetCaster()->CastSpell(GetCaster(), SPELL_EYE_OF_GRILLOK, true, nullptr, aurEff);
+ GetCaster()->CastSpell(GetCaster(), SPELL_EYE_OF_GRILLOK, aurEff);
GetTarget()->ToCreature()->DespawnOrUnsummon();
}
@@ -191,8 +191,9 @@ class spell_item_alchemists_stone : public AuraScript
continue;
}
- int32 amount = CalculatePct(spellInfo->Effects[i].CalcValue(caster), 40);
- caster->CastCustomSpell(spellId, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(spellInfo->Effects[i].CalcValue(caster), 40));
+ caster->CastSpell(nullptr, spellId, args);
}
}
@@ -252,7 +253,7 @@ class spell_item_anger_capacitor : public SpellScriptLoader
if (player->GetWeaponForAttack(OFF_ATTACK, true) && roll_chance_i(50))
spellId = SPELL_MANIFEST_ANGER_OFF_HAND;
- caster->CastSpell(target, spellId, true, nullptr, aurEff);
+ caster->CastSpell(target, spellId, aurEff);
}
void Register() override
@@ -358,7 +359,7 @@ class spell_item_aura_of_madness : public AuraScript
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
uint32 spellId = Trinity::Containers::SelectRandomContainerElement(triggeredSpells[caster->getClass()]);
- caster->CastSpell(caster, spellId, true, nullptr, aurEff);
+ caster->CastSpell(caster, spellId, aurEff);
if (roll_chance_i(10))
caster->Unit::Say(SAY_MADNESS);
@@ -387,7 +388,7 @@ class spell_item_dementia : public AuraScript
void HandlePeriodicDummy(AuraEffect const* aurEff)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), RAND(SPELL_DEMENTIA_POS, SPELL_DEMENTIA_NEG), true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), RAND(SPELL_DEMENTIA_POS, SPELL_DEMENTIA_NEG), aurEff);
}
void Register() override
@@ -434,7 +435,11 @@ class spell_item_blessing_of_ancient_kings : public AuraScript
protEff->GetBase()->RefreshDuration();
}
else
- GetTarget()->CastCustomSpell(SPELL_PROTECTION_OF_ANCIENT_KINGS, SPELLVALUE_BASE_POINT0, absorb, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(absorb);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PROTECTION_OF_ANCIENT_KINGS, args);
+ }
}
void Register() override
@@ -495,7 +500,9 @@ class spell_item_deadly_precision_dummy : public SpellScript
void HandleDummy(SpellEffIndex /*effIndex*/)
{
SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(SPELL_DEADLY_PRECISION);
- GetCaster()->CastCustomSpell(spellInfo->Id, SPELLVALUE_AURA_STACK, spellInfo->StackAmount, GetCaster(), true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_AURA_STACK, spellInfo->StackAmount);
+ GetCaster()->CastSpell(GetCaster(), spellInfo->Id, args);
}
void Register() override
@@ -584,7 +591,7 @@ class spell_item_deathbringers_will : public SpellScriptLoader
return;
uint32 spellId = Trinity::Containers::SelectRandomContainerElement(randomSpells);
- caster->CastSpell(caster, spellId, true, nullptr, aurEff);
+ caster->CastSpell(caster, spellId, aurEff);
}
void Register() override
@@ -670,7 +677,7 @@ class spell_item_defibrillate : public SpellScriptLoader
{
PreventHitDefaultEffect(effIndex);
if (_failSpell)
- GetCaster()->CastSpell(GetCaster(), _failSpell, true, GetCastItem());
+ GetCaster()->CastSpell(GetCaster(), _failSpell, GetCastItem());
}
}
@@ -711,7 +718,7 @@ class spell_item_desperate_defense : public AuraScript
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_DESPERATE_RAGE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_DESPERATE_RAGE, aurEff);
}
void Register() override
@@ -749,7 +756,7 @@ class spell_item_deviate_fish : public SpellScript
{
Unit* caster = GetCaster();
uint32 spellId = urand(SPELL_SLEEPY, SPELL_HEALTHY_SPIRIT);
- caster->CastSpell(caster, spellId, true, nullptr);
+ caster->CastSpell(caster, spellId, true);
}
void Register() override
@@ -776,7 +783,7 @@ class spell_item_discerning_eye_beast_dummy : public AuraScript
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_DISCERNING_EYE_BEAST, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_DISCERNING_EYE_BEAST, aurEff);
}
void Register() override
@@ -914,7 +921,7 @@ class spell_item_flask_of_the_north : public SpellScript
break;
}
- caster->CastSpell(caster, possibleSpells[urand(0, (possibleSpells.size() - 1))], true, nullptr);
+ caster->CastSpell(caster, possibleSpells[urand(0, (possibleSpells.size() - 1))], true);
}
void Register() override
@@ -946,9 +953,10 @@ class spell_item_frozen_shadoweave : public AuraScript
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 amount = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
Unit* caster = eventInfo.GetActor();
- caster->CastCustomSpell(SPELL_SHADOWMEND, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()));
+ caster->CastSpell(nullptr, SPELL_SHADOWMEND, args);
}
void Register() override
@@ -1038,7 +1046,7 @@ class spell_item_healing_touch_refund : public AuraScript
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_HEALING_TOUCH_MANA, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_HEALING_TOUCH_MANA, aurEff);
}
void Register() override
@@ -1112,7 +1120,7 @@ class spell_item_heartpierce : public SpellScriptLoader
return;
}
- caster->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, spellId, aurEff);
}
void Register() override
@@ -1192,7 +1200,7 @@ class spell_item_make_a_wish : public SpellScript
case 3: spellId = SPELL_SUMMON_FURIOUS_MR_PINCHY; break;
case 4: spellId = SPELL_TINY_MAGICAL_CRAWDAD; break;
}
- caster->CastSpell(caster, spellId, true, nullptr);
+ caster->CastSpell(caster, spellId, true);
}
void Register() override
@@ -1225,7 +1233,7 @@ class spell_item_mark_of_conquest : public AuraScript
// in that case, do not cast heal spell
PreventDefaultAction();
// but mana instead
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_MARK_OF_CONQUEST_ENERGIZE, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_MARK_OF_CONQUEST_ENERGIZE, aurEff);
}
}
@@ -1307,8 +1315,9 @@ class spell_item_necrotic_touch : public AuraScript
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 bp = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_ITEM_NECROTIC_TOUCH_PROC, SPELLVALUE_BASE_POINT0, bp, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()));
+ GetTarget()->CastSpell(nullptr, SPELL_ITEM_NECROTIC_TOUCH_PROC, args);
}
void Register() override
@@ -1352,7 +1361,7 @@ class spell_item_net_o_matic : public SpellScript
else if (roll < 4) // 2% for 20 sec root, charge to target (off-like chance unknown)
spellId = SPELL_NET_O_MATIC_TRIGGERED2;
- GetCaster()->CastSpell(target, spellId, true, nullptr);
+ GetCaster()->CastSpell(target, spellId, true);
}
}
@@ -1400,7 +1409,7 @@ class spell_item_noggenfogger_elixir : public SpellScript
case 2: spellId = SPELL_NOGGENFOGGER_ELIXIR_TRIGGERED2; break;
}
- caster->CastSpell(caster, spellId, true, nullptr);
+ caster->CastSpell(caster, spellId, true);
}
void Register() override
@@ -1459,7 +1468,9 @@ class spell_item_persistent_shield : public AuraScript
if (shield->GetAmount() > bp0)
return;
- caster->CastCustomSpell(SPELL_PERSISTENT_SHIELD_TRIGGERED, SPELLVALUE_BASE_POINT0, bp0, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp0);
+ caster->CastSpell(target, SPELL_PERSISTENT_SHIELD_TRIGGERED, args);
}
void Register() override
@@ -1493,9 +1504,9 @@ class spell_item_pet_healing : public AuraScript
if (!damageInfo || !damageInfo->GetDamage())
return;
- int32 bp = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- Unit* caster = eventInfo.GetActor();
- caster->CastCustomSpell(SPELL_HEALTH_LINK, SPELLVALUE_BASE_POINT0, bp, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_HEALTH_LINK, args);
}
void Register() override
@@ -1563,7 +1574,7 @@ class spell_item_savory_deviate_delight : public SpellScript
// Yaaarrrr - pirate
case 2: spellId = (caster->getGender() == GENDER_MALE ? SPELL_YAAARRRR_MALE : SPELL_YAAARRRR_FEMALE); break;
}
- caster->CastSpell(caster, spellId, true, nullptr);
+ caster->CastSpell(caster, spellId, true);
}
void Register() override
@@ -1720,14 +1731,14 @@ class spell_item_shadowmourne : public AuraScript
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_SHADOWMOURNE_SOUL_FRAGMENT, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_SHADOWMOURNE_SOUL_FRAGMENT, aurEff);
// this can't be handled in AuraScript of SoulFragments because we need to know victim
if (Aura* soulFragments = GetTarget()->GetAura(SPELL_SHADOWMOURNE_SOUL_FRAGMENT))
{
if (soulFragments->GetStackAmount() >= 10)
{
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_SHADOWMOURNE_CHAOS_BANE_DAMAGE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_SHADOWMOURNE_CHAOS_BANE_DAMAGE, aurEff);
soulFragments->Remove();
}
}
@@ -1846,7 +1857,7 @@ class spell_item_six_demon_bag : public SpellScript
target = caster;
}
- caster->CastSpell(target, spellId, true, GetCastItem());
+ caster->CastSpell(target, spellId, GetCastItem());
}
}
@@ -1876,8 +1887,9 @@ class spell_item_swift_hand_justice_dummy : public AuraScript
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- int32 amount = caster->CountPctFromMaxHealth(aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_SWIFT_HAND_OF_JUSTICE_HEAL, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(caster->CountPctFromMaxHealth(aurEff->GetAmount()));
+ caster->CastSpell(nullptr, SPELL_SWIFT_HAND_OF_JUSTICE_HEAL, args);
}
void Register() override
@@ -1905,7 +1917,7 @@ class spell_item_totem_of_flowing_water : public AuraScript
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_LESSER_HEALING_WAVE_MANA, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_LESSER_HEALING_WAVE_MANA, aurEff);
}
void Register() override
@@ -1968,7 +1980,7 @@ class spell_item_underbelly_elixir : public SpellScript
case 1: spellId = SPELL_UNDERBELLY_ELIXIR_TRIGGERED1; break;
case 2: spellId = SPELL_UNDERBELLY_ELIXIR_TRIGGERED2; break;
}
- caster->CastSpell(caster, spellId, true, nullptr);
+ caster->CastSpell(caster, spellId, true);
}
void Register() override
@@ -2364,7 +2376,7 @@ class spell_item_purify_helboar_meat : public SpellScript
void HandleDummy(SpellEffIndex /* effIndex */)
{
Unit* caster = GetCaster();
- caster->CastSpell(caster, roll_chance_i(50) ? SPELL_SUMMON_PURIFIED_HELBOAR_MEAT : SPELL_SUMMON_TOXIC_HELBOAR_MEAT, true, nullptr);
+ caster->CastSpell(caster, roll_chance_i(50) ? SPELL_SUMMON_PURIFIED_HELBOAR_MEAT : SPELL_SUMMON_TOXIC_HELBOAR_MEAT, true);
}
void Register() override
@@ -2487,9 +2499,9 @@ class spell_item_nigh_invulnerability : public SpellScript
if (Item* castItem = GetCastItem())
{
if (roll_chance_i(86)) // Nigh-Invulnerability - success
- caster->CastSpell(caster, SPELL_NIGH_INVULNERABILITY, true, castItem);
+ caster->CastSpell(caster, SPELL_NIGH_INVULNERABILITY, castItem);
else // Complete Vulnerability - backfire in 14% casts
- caster->CastSpell(caster, SPELL_COMPLETE_VULNERABILITY, true, castItem);
+ caster->CastSpell(caster, SPELL_COMPLETE_VULNERABILITY, castItem);
}
}
@@ -2517,7 +2529,7 @@ class spell_item_poultryizer : public SpellScript
void HandleDummy(SpellEffIndex /* effIndex */)
{
if (GetCastItem() && GetHitUnit())
- GetCaster()->CastSpell(GetHitUnit(), roll_chance_i(80) ? SPELL_POULTRYIZER_SUCCESS : SPELL_POULTRYIZER_BACKFIRE, true, GetCastItem());
+ GetCaster()->CastSpell(GetHitUnit(), roll_chance_i(80) ? SPELL_POULTRYIZER_SUCCESS : SPELL_POULTRYIZER_BACKFIRE, GetCastItem());
}
void Register() override
@@ -2637,7 +2649,7 @@ class spell_item_complete_raptor_capture : public SpellScript
GetHitCreature()->DespawnOrUnsummon();
//cast spell Raptor Capture Credit
- caster->CastSpell(caster, SPELL_RAPTOR_CAPTURE_CREDIT, true, nullptr);
+ caster->CastSpell(caster, SPELL_RAPTOR_CAPTURE_CREDIT, true);
}
}
@@ -2770,7 +2782,7 @@ class spell_item_nitro_boosts : public SpellScript
bool success = true;
if (areaEntry && areaEntry->IsFlyable() && !caster->GetMap()->IsDungeon())
success = roll_chance_i(95); // nitro boosts can only fail in flying-enabled locations on 3.3.5
- caster->CastSpell(caster, success ? SPELL_NITRO_BOOSTS_SUCCESS : SPELL_NITRO_BOOSTS_BACKFIRE, true, GetCastItem());
+ caster->CastSpell(caster, success ? SPELL_NITRO_BOOSTS_SUCCESS : SPELL_NITRO_BOOSTS_BACKFIRE, GetCastItem());
}
void Register() override
@@ -2800,7 +2812,7 @@ class spell_item_nitro_boosts_backfire : public AuraScript
if (curZ < lastZ)
{
if (roll_chance_i(80)) // we don't have enough sniffs to verify this, guesstimate
- GetTarget()->CastSpell(GetTarget(), SPELL_NITRO_BOOSTS_PARACHUTE, true, nullptr, effect);
+ GetTarget()->CastSpell(GetTarget(), SPELL_NITRO_BOOSTS_PARACHUTE, effect);
GetAura()->Remove();
}
else
@@ -2876,7 +2888,7 @@ class spell_item_rocket_boots : public SpellScript
bg->EventPlayerDroppedFlag(caster);
caster->GetSpellHistory()->ResetCooldown(SPELL_ROCKET_BOOTS_PROC);
- caster->CastSpell(caster, SPELL_ROCKET_BOOTS_PROC, true, nullptr);
+ caster->CastSpell(caster, SPELL_ROCKET_BOOTS_PROC, true);
}
SpellCastResult CheckCast()
@@ -3103,10 +3115,10 @@ class spell_item_shard_of_the_scale : public SpellScriptLoader
Unit* target = eventInfo.GetProcTarget();
if (eventInfo.GetTypeMask() & PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS)
- caster->CastSpell(target, HealProc, true, nullptr, aurEff);
+ caster->CastSpell(target, HealProc, aurEff);
if (eventInfo.GetTypeMask() & PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG)
- caster->CastSpell(target, DamageProc, true, nullptr, aurEff);
+ caster->CastSpell(target, DamageProc, aurEff);
}
void Register() override
@@ -3153,16 +3165,16 @@ class spell_item_soul_preserver : public AuraScript
switch (caster->getClass())
{
case CLASS_DRUID:
- caster->CastSpell(caster, SPELL_SOUL_PRESERVER_DRUID, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_SOUL_PRESERVER_DRUID, aurEff);
break;
case CLASS_PALADIN:
- caster->CastSpell(caster, SPELL_SOUL_PRESERVER_PALADIN, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_SOUL_PRESERVER_PALADIN, aurEff);
break;
case CLASS_PRIEST:
- caster->CastSpell(caster, SPELL_SOUL_PRESERVER_PRIEST, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_SOUL_PRESERVER_PRIEST, aurEff);
break;
case CLASS_SHAMAN:
- caster->CastSpell(caster, SPELL_SOUL_PRESERVER_SHAMAN, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_SOUL_PRESERVER_SHAMAN, aurEff);
break;
default:
break;
@@ -3237,10 +3249,10 @@ class spell_item_sunwell_neck : public SpellScriptLoader
// Aggression checks are in the spell system... just cast and forget
if (player->GetReputationRank(FACTION_ALDOR) == REP_EXALTED)
- player->CastSpell(target, Aldors, true, nullptr, aurEff);
+ player->CastSpell(target, Aldors, aurEff);
if (player->GetReputationRank(FACTION_SCRYERS) == REP_EXALTED)
- player->CastSpell(target, Scryers, true, nullptr, aurEff);
+ player->CastSpell(target, Scryers, aurEff);
}
void Register() override
@@ -3320,17 +3332,17 @@ class spell_item_death_choice : public AuraScript
case SPELL_DEATH_CHOICE_NORMAL_AURA:
{
if (str > agi)
- caster->CastSpell(caster, SPELL_DEATH_CHOICE_NORMAL_STRENGTH, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_DEATH_CHOICE_NORMAL_STRENGTH, aurEff);
else
- caster->CastSpell(caster, SPELL_DEATH_CHOICE_NORMAL_AGILITY, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_DEATH_CHOICE_NORMAL_AGILITY, aurEff);
break;
}
case SPELL_DEATH_CHOICE_HEROIC_AURA:
{
if (str > agi)
- caster->CastSpell(caster, SPELL_DEATH_CHOICE_HEROIC_STRENGTH, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_DEATH_CHOICE_HEROIC_STRENGTH, aurEff);
else
- caster->CastSpell(caster, SPELL_DEATH_CHOICE_HEROIC_AGILITY, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_DEATH_CHOICE_HEROIC_AGILITY, aurEff);
break;
}
default:
@@ -3389,7 +3401,7 @@ public:
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(caster, _stackSpell, true, nullptr, aurEff); // cast the stack
+ caster->CastSpell(caster, _stackSpell, aurEff); // cast the stack
Aura* dummy = caster->GetAura(_stackSpell); // retrieve aura
@@ -3400,7 +3412,7 @@ public:
// if right amount, remove the aura and cast real trigger
caster->RemoveAurasDueToSpell(_stackSpell);
if (Unit* target = eventInfo.GetActionTarget())
- caster->CastSpell(target, _triggerSpell, true, nullptr, aurEff);
+ caster->CastSpell(target, _triggerSpell, aurEff);
}
void Register() override
@@ -3483,7 +3495,7 @@ class spell_item_darkmoon_card_greatness : public AuraScript
stat = spi;
}
- caster->CastSpell(caster, spellTrigger, true, nullptr, aurEff);
+ caster->CastSpell(caster, spellTrigger, aurEff);
}
void Register() override
@@ -3511,13 +3523,12 @@ class spell_item_charm_witch_doctor : public AuraScript
{
PreventDefaultAction();
- Unit* caster = eventInfo.GetActor();
- Unit* target = eventInfo.GetActionTarget();
-
- if (target)
+ if (Unit* target = eventInfo.GetActionTarget())
{
int32 bp = CalculatePct(target->GetCreateHealth(),aurEff->GetSpellInfo()->Effects[1].CalcValue());
- caster->CastCustomSpell(target, SPELL_CHARM_WITCH_DOCTOR_PROC, &bp, nullptr, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ eventInfo.GetActor()->CastSpell(target, SPELL_CHARM_WITCH_DOCTOR_PROC, args);
}
}
@@ -3555,10 +3566,10 @@ class spell_item_mana_drain : public AuraScript
Unit* target = eventInfo.GetActionTarget();
if (caster->IsAlive())
- caster->CastSpell(caster, SPELL_MANA_DRAIN_ENERGIZE, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_MANA_DRAIN_ENERGIZE, aurEff);
if (target && target->IsAlive())
- caster->CastSpell(target, SPELL_MANA_DRAIN_LEECH, true, nullptr, aurEff);
+ caster->CastSpell(target, SPELL_MANA_DRAIN_LEECH, aurEff);
}
void Register() override
@@ -3648,7 +3659,7 @@ class spell_item_mind_control_cap : public SpellScript
if (Unit* target = GetHitUnit())
{
if (roll_chance_i(ROLL_CHANCE_NO_BACKFIRE))
- caster->CastSpell(target, roll_chance_i(ROLL_CHANCE_DULLARD) ? SPELL_DULLARD : SPELL_GNOMISH_MIND_CONTROL_CAP, true, GetCastItem());
+ caster->CastSpell(target, roll_chance_i(ROLL_CHANCE_DULLARD) ? SPELL_DULLARD : SPELL_GNOMISH_MIND_CONTROL_CAP, GetCastItem());
else
target->CastSpell(caster, SPELL_GNOMISH_MIND_CONTROL_CAP, true); // backfire - 5% chance
}
@@ -3690,11 +3701,11 @@ class spell_item_universal_remote : public SpellScript
{
uint8 chance = urand(0, 99);
if (chance < 15)
- GetCaster()->CastSpell(target, SPELL_TARGET_LOCK, true, GetCastItem());
+ GetCaster()->CastSpell(target, SPELL_TARGET_LOCK, GetCastItem());
else if (chance < 25)
- GetCaster()->CastSpell(target, SPELL_MOBILITY_MALFUNCTION, true, GetCastItem());
+ GetCaster()->CastSpell(target, SPELL_MOBILITY_MALFUNCTION, GetCastItem());
else
- GetCaster()->CastSpell(target, SPELL_CONTROL_MACHINE, true, GetCastItem());
+ GetCaster()->CastSpell(target, SPELL_CONTROL_MACHINE, GetCastItem());
}
}
@@ -3827,7 +3838,7 @@ class spell_item_mad_alchemists_potion : public SpellScript
}
if (useElixir)
- target->CastSpell(target, chosenElixir, true, GetCastItem());
+ target->CastSpell(target, chosenElixir, GetCastItem());
}
void Register() override
@@ -3867,7 +3878,7 @@ class spell_item_crazy_alchemists_potion : public SpellScript
uint32 chosenElixir = Trinity::Containers::SelectRandomContainerElement(availableElixirs);
- target->CastSpell(target, chosenElixir, true, GetCastItem());
+ target->CastSpell(target, chosenElixir, GetCastItem());
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp
index 8edb3e9cf03..750ee7e8ecf 100644
--- a/src/server/scripts/Spells/spell_mage.cpp
+++ b/src/server/scripts/Spells/spell_mage.cpp
@@ -98,7 +98,9 @@ class spell_mage_incanters_absorbtion_base_AuraScript : public AuraScript
if (AuraEffect* talentAurEff = target->GetAuraEffectOfRankedSpell(SPELL_MAGE_INCANTERS_ABSORBTION_R1, EFFECT_0))
{
int32 bp = CalculatePct(absorbAmount, talentAurEff->GetAmount());
- target->CastCustomSpell(target, SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED, &bp, nullptr, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ target->CastSpell(target, SPELL_MAGE_INCANTERS_ABSORBTION_TRIGGERED, args);
}
}
};
@@ -139,7 +141,7 @@ class spell_mage_arcane_potency : public SpellScriptLoader
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
uint32 spellId = triggerSpell[GetSpellInfo()->GetRank() - 1];
- caster->CastSpell(caster, spellId, true, nullptr, aurEff);
+ caster->CastSpell(caster, spellId, aurEff);
}
void Register() override
@@ -207,7 +209,7 @@ public:
{
PreventDefaultAction();
if (Unit* target = eventInfo.GetActionTarget())
- target->CastSpell(target, SPELL_MAGE_BLAZING_SPEED, true, nullptr, aurEff);
+ target->CastSpell(target, SPELL_MAGE_BLAZING_SPEED, aurEff);
}
void Register() override
@@ -285,7 +287,9 @@ class spell_mage_burnout : public SpellScriptLoader
int32 mana = eventInfo.GetDamageInfo()->GetSpellInfo()->CalcPowerCost(GetTarget(), eventInfo.GetDamageInfo()->GetSchoolMask());
mana = CalculatePct(mana, aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_MAGE_BURNOUT, SPELLVALUE_BASE_POINT0, mana, GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(mana);
+ GetTarget()->CastSpell(GetTarget(), SPELL_MAGE_BURNOUT, args);
}
void Register() override
@@ -448,7 +452,7 @@ class spell_mage_imp_blizzard : public SpellScriptLoader
{
PreventDefaultAction();
uint32 triggerSpellId = sSpellMgr->GetSpellWithRank(SPELL_MAGE_CHILLED, GetSpellInfo()->GetRank());
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), triggerSpellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), triggerSpellId, aurEff);
}
void Register() override
@@ -482,7 +486,7 @@ class spell_mage_imp_mana_gems : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_MAGE_MANA_SURGE, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_MAGE_MANA_SURGE, aurEff);
}
void Register() override
@@ -526,8 +530,9 @@ class spell_mage_empowered_fire : public SpellScriptLoader
PreventDefaultAction();
Unit* target = GetTarget();
- int32 bp0 = int32(CalculatePct(target->GetCreateMana(), aurEff->GetAmount()));
- target->CastCustomSpell(SPELL_MAGE_EMPOWERED_FIRE_PROC, SPELLVALUE_BASE_POINT0, bp0, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(target->GetCreateMana(), aurEff->GetAmount()));
+ target->CastSpell(target, SPELL_MAGE_EMPOWERED_FIRE_PROC, args);
}
void Register() override
@@ -628,7 +633,9 @@ class spell_mage_fire_frost_ward : public SpellScriptLoader
{
int32 bp = dmgInfo.GetDamage();
dmgInfo.AbsorbDamage(bp);
- target->CastCustomSpell(target, SPELL_MAGE_FROST_WARDING_TRIGGERED, &bp, nullptr, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ target->CastSpell(target, SPELL_MAGE_FROST_WARDING_TRIGGERED, args);
absorbAmount = 0;
PreventDefaultAction();
}
@@ -673,7 +680,7 @@ class spell_mage_focus_magic : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(_procTarget, SPELL_MAGE_FOCUS_MAGIC_PROC, true, nullptr, aurEff);
+ GetTarget()->CastSpell(_procTarget, SPELL_MAGE_FOCUS_MAGIC_PROC, aurEff);
}
void Register() override
@@ -880,7 +887,7 @@ class spell_mage_hot_streak : public SpellScriptLoader
return;
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(caster, SPELL_MAGE_HOT_STREAK_PROC, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_MAGE_HOT_STREAK_PROC, aurEff);
}
// reset counter
@@ -942,7 +949,7 @@ class spell_mage_ice_barrier : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (AuraEffect* dummy = caster->GetDummyAuraEffect(SPELLFAMILY_MAGE, SPELL_ICON_MAGE_SHATTERED_BARRIER, EFFECT_0))
if (roll_chance_i(dummy->GetSpellInfo()->ProcChance))
- caster->CastSpell(GetTarget(), SPELL_MAGE_SHATTERED_BARRIER, true, nullptr, aurEff);
+ caster->CastSpell(GetTarget(), SPELL_MAGE_SHATTERED_BARRIER, aurEff);
}
void Register() override
@@ -989,7 +996,10 @@ class spell_mage_ignite : public SpellScriptLoader
ASSERT(igniteDot->GetMaxTicks() > 0);
int32 amount = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), pct) / igniteDot->GetMaxTicks());
amount += eventInfo.GetProcTarget()->GetRemainingPeriodicAmount(eventInfo.GetActor()->GetGUID(), SPELL_MAGE_IGNITE, SPELL_AURA_PERIODIC_DAMAGE);
- GetTarget()->CastCustomSpell(SPELL_MAGE_IGNITE, SPELLVALUE_BASE_POINT0, amount, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_MAGE_IGNITE, args);
}
void Register() override
@@ -1027,7 +1037,7 @@ class spell_mage_living_bomb : public SpellScriptLoader
return;
if (Unit* caster = GetCaster())
- caster->CastSpell(GetTarget(), uint32(aurEff->GetAmount()), true, nullptr, aurEff);
+ caster->CastSpell(GetTarget(), uint32(aurEff->GetAmount()), aurEff);
}
void Register() override
@@ -1060,9 +1070,11 @@ class spell_mage_magic_absorption : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
+
Unit* caster = eventInfo.GetActionTarget();
- int32 bp = CalculatePct(static_cast<int32>(caster->GetMaxPower(POWER_MANA)), aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_MAGE_MAGIC_ABSORPTION_MANA, SPELLVALUE_BASE_POINT0, bp, caster, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(caster->GetMaxPower(POWER_MANA), aurEff->GetAmount()));
+ caster->CastSpell(caster, SPELL_MAGE_MAGIC_ABSORPTION_MANA, args);
}
void Register() override
@@ -1111,7 +1123,7 @@ class spell_mage_mana_shield : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
Unit* caster = eventInfo.GetActionTarget();
- caster->CastSpell(caster, SPELL_MAGE_ARCANE_SURGE, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_MAGE_ARCANE_SURGE, aurEff);
}
void Register() override
@@ -1161,7 +1173,11 @@ class spell_mage_master_of_elements : public SpellScriptLoader
mana = CalculatePct(mana, aurEff->GetAmount());
if (mana > 0)
- GetTarget()->CastCustomSpell(SPELL_MAGE_MASTER_OF_ELEMENTS_ENERGIZE, SPELLVALUE_BASE_POINT0, mana, GetTarget(), true, nullptr, aurEff);
+ {
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(mana);
+ GetTarget()->CastSpell(GetTarget(), SPELL_MAGE_MASTER_OF_ELEMENTS_ENERGIZE, args);
+ }
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index 811778eacc5..962861cf70d 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -184,12 +184,13 @@ class spell_pal_ardent_defender : public SpellScriptLoader
float defenseSkillValue = victim->GetDefenseSkillValue();
// Max heal when defense skill denies critical hits from raid bosses
- // Formula: max defense at level + 140 (raiting from gear)
+ // Formula: max defense at level + 140 (rating from gear)
float reqDefForMaxHeal = victim->GetMaxSkillValueForLevel() + 140.0f;
float defenseFactor = std::min(1.0f, defenseSkillValue / reqDefForMaxHeal);
- int32 healAmount = int32(victim->CountPctFromMaxHealth(static_cast<uint32>(lroundf(_healPct * defenseFactor))));
- victim->CastCustomSpell(PAL_SPELL_ARDENT_DEFENDER_HEAL, SPELLVALUE_BASE_POINT0, healAmount, victim, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(victim->CountPctFromMaxHealth(lroundf(_healPct * defenseFactor)));
+ victim->CastSpell(victim, PAL_SPELL_ARDENT_DEFENDER_HEAL, args);
victim->GetSpellHistory()->AddCooldown(PAL_SPELL_ARDENT_DEFENDER_HEAL, 0, std::chrono::minutes(2));
}
else if (remainingHealth < int32(allowedHealth))
@@ -309,8 +310,9 @@ class spell_pal_avenging_wrath : public SpellScriptLoader
Unit* target = GetTarget();
if (AuraEffect const* aurEff = target->GetAuraEffectOfRankedSpell(SPELL_PALADIN_SANCTIFIED_WRATH_TALENT_R1, EFFECT_2))
{
- int32 basepoints = aurEff->GetAmount();
- target->CastCustomSpell(target, SPELL_PALADIN_SANCTIFIED_WRATH, &basepoints, &basepoints, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ target->CastSpell(target, SPELL_PALADIN_SANCTIFIED_WRATH, args);
}
}
@@ -347,7 +349,7 @@ class spell_pal_beacon_of_light : public AuraScript
PreventDefaultAction();
// area aura owner casts the spell
- GetAura()->GetUnitOwner()->CastSpell(GetTarget(), GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff, GetAura()->GetUnitOwner()->GetGUID());
+ GetAura()->GetUnitOwner()->CastSpell(GetTarget(), GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, { aurEff, GetAura()->GetUnitOwner()->GetGUID() });
}
void Register() override
@@ -457,7 +459,7 @@ class spell_pal_blessing_of_sanctuary : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_BLESSING_OF_SANCTUARY_ENERGIZE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_BLESSING_OF_SANCTUARY_ENERGIZE, aurEff);
}
void Register() override
@@ -584,7 +586,9 @@ class spell_pal_divine_storm : public SpellScriptLoader
void TriggerHeal()
{
Unit* caster = GetCaster();
- caster->CastCustomSpell(SPELL_PALADIN_DIVINE_STORM_DUMMY, SPELLVALUE_BASE_POINT0, (GetHitDamage() * _healPct) / 100, caster, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(CalculatePct(GetHitDamage(), _healPct));
+ caster->CastSpell(caster, SPELL_PALADIN_DIVINE_STORM_DUMMY, args);
}
void Register() override
@@ -625,8 +629,9 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader
if (!_targetCount || ! GetHitUnit())
return;
- int32 heal = GetEffectValue() / _targetCount;
- GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_PALADIN_DIVINE_STORM_HEAL, &heal, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetEffectValue() / _targetCount);
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_PALADIN_DIVINE_STORM_HEAL, args);
}
uint32 _targetCount = 0;
@@ -704,7 +709,9 @@ class spell_pal_eye_for_an_eye : public SpellScriptLoader
// return damage % to attacker but < 50% own total health
int32 damage = std::min(CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount()), static_cast<int32>(GetTarget()->GetMaxHealth()) / 2);
- GetTarget()->CastCustomSpell(SPELL_PALADIN_EYE_FOR_AN_EYE_DAMAGE, SPELLVALUE_BASE_POINT0, damage, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damage);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PALADIN_EYE_FOR_AN_EYE_DAMAGE, args);
}
void Register() override
@@ -745,8 +752,9 @@ class spell_pal_glyph_of_divinity : public SpellScriptLoader
if (caster == eventInfo.GetProcTarget())
return;
- int32 mana = spellInfo->Effects[EFFECT_1].CalcValue() * 2;
- caster->CastCustomSpell(SPELL_PALADIN_GLYPH_OF_DIVINITY_PROC, SPELLVALUE_BASE_POINT1, mana, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, spellInfo->Effects[EFFECT_1].CalcValue() * 2);
+ caster->CastSpell(nullptr, SPELL_PALADIN_GLYPH_OF_DIVINITY_PROC, args);
}
void Register() override
@@ -816,11 +824,9 @@ class spell_pal_glyph_of_holy_light_dummy : public SpellScriptLoader
if (!healInfo || !healInfo->GetHeal())
return;
- Unit* caster = eventInfo.GetActor();
- Unit* target = eventInfo.GetProcTarget();
- int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), aurEff->GetAmount());
-
- caster->CastCustomSpell(SPELL_PALADIN_GLYPH_OF_HOLY_LIGHT_HEAL, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_PALADIN_GLYPH_OF_HOLY_LIGHT_HEAL, args);
}
void Register() override
@@ -956,7 +962,7 @@ class spell_pal_heart_of_the_crusader : public SpellScriptLoader
PreventDefaultAction();
uint32 spellId = sSpellMgr->GetSpellWithRank(SPELL_PALADIN_HEART_OF_THE_CRUSADER_EFF_R1, GetSpellInfo()->GetRank());
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, aurEff);
}
void Register() override
@@ -1082,7 +1088,9 @@ public:
{
Unit* target = eventInfo.GetActor(); // Paladin is the target of the energize
uint32 bp = CalculatePct(originalSpell->CalcPowerCost(target, originalSpell->GetSchoolMask()), aurEff->GetSpellInfo()->Effects[EFFECT_1].CalcValue());
- target->CastCustomSpell(SPELL_PALADIN_ILLUMINATION_ENERGIZE, SPELLVALUE_BASE_POINT0, bp, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ target->CastSpell(target, SPELL_PALADIN_ILLUMINATION_ENERGIZE, args);
}
}
}
@@ -1225,7 +1233,7 @@ class spell_pal_improved_lay_of_hands : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActionTarget()->CastSpell(eventInfo.GetActionTarget(), GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, true, nullptr, aurEff, GetTarget()->GetGUID());
+ eventInfo.GetActionTarget()->CastSpell(eventInfo.GetActionTarget(), GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, { aurEff, GetTarget()->GetGUID() });
}
void Register() override
@@ -1287,7 +1295,9 @@ class spell_pal_infusion_of_light : public SpellScriptLoader
if (AuraEffect const* bonus = target->GetAuraEffect(SPELL_PALADIN_T9_HOLY_4P_BONUS, 0))
AddPct(bp0, bonus->GetAmount());
- target->CastCustomSpell(SPELL_PALADIN_FLASH_OF_LIGHT_PROC, SPELLVALUE_BASE_POINT0, bp0, procTarget, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp0);
+ target->CastSpell(procTarget, SPELL_PALADIN_FLASH_OF_LIGHT_PROC, args);
}
}
// but should not proc on non-critical Holy Shocks
@@ -1326,7 +1336,7 @@ class spell_pal_item_healing_discount : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_ITEM_HEALING_TRANCE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_ITEM_HEALING_TRANCE, aurEff);
}
void Register() override
@@ -1386,7 +1396,7 @@ class spell_pal_item_t6_trinket : public SpellScriptLoader
return;
if (roll_chance_i(chance))
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, aurEff);
}
void Register() override
@@ -1478,8 +1488,7 @@ class spell_pal_judgement_of_command : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
if (Unit* unitTarget = GetHitUnit())
- if (SpellInfo const* spell_proto = sSpellMgr->GetSpellInfo(GetEffectValue()))
- GetCaster()->CastSpell(unitTarget, spell_proto, true, nullptr);
+ GetCaster()->CastSpell(unitTarget, GetEffectValue(), true);
}
void Register() override
@@ -1514,9 +1523,11 @@ class spell_pal_judgement_of_light_heal : public SpellScriptLoader
PreventDefaultAction();
Unit* caster = eventInfo.GetProcTarget();
- int32 amount = static_cast<int32>(caster->CountPctFromMaxHealth(aurEff->GetAmount()));
- caster->CastCustomSpell(SPELL_PALADIN_JUDGEMENT_OF_LIGHT_HEAL, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff, GetCasterGUID());
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(caster->CountPctFromMaxHealth(aurEff->GetAmount()));
+ caster->CastSpell(nullptr, SPELL_PALADIN_JUDGEMENT_OF_LIGHT_HEAL, args);
}
void Register() override
@@ -1559,7 +1570,10 @@ class spell_pal_judgement_of_wisdom_mana : public SpellScriptLoader
Unit* caster = eventInfo.GetProcTarget();
int32 const amount = CalculatePct(static_cast<int32>(caster->GetCreateMana()), spellInfo->Effects[EFFECT_0].CalcValue());
- caster->CastCustomSpell(spellInfo->Id, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff, GetCasterGUID());
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(nullptr, spellInfo->Id, args);
}
void Register() override
@@ -1593,7 +1607,7 @@ class spell_pal_judgements_of_the_just : public SpellScriptLoader
void OnProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetActionTarget(), SPELL_PALADIN_JUDGEMENTS_OF_THE_JUST_PROC, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetActionTarget(), SPELL_PALADIN_JUDGEMENTS_OF_THE_JUST_PROC, aurEff);
}
void Register() override
@@ -1632,8 +1646,8 @@ class spell_pal_judgements_of_the_wise : public SpellScriptLoader
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(nullptr, SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE_MANA, true, nullptr, aurEff);
- caster->CastSpell(nullptr, SPELL_REPLENISHMENT, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE_MANA, aurEff);
+ caster->CastSpell(nullptr, SPELL_REPLENISHMENT, aurEff);
}
void Register() override
@@ -1754,7 +1768,9 @@ class spell_pal_light_s_beacon : public SpellScriptLoader
/// @todo: caster must be the healed unit to perform distance checks correctly
/// but that will break animation on clientside
/// caster in spell packets must be the healing unit
- eventInfo.GetActor()->CastCustomSpell(healSpellId, SPELLVALUE_BASE_POINT0, heal, beaconTarget, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(heal);
+ eventInfo.GetActor()->CastSpell(beaconTarget, healSpellId, args);
}
void Register() override
@@ -1866,7 +1882,9 @@ class spell_pal_righteous_vengeance : public SpellScriptLoader
// Add remaining ticks to damage done
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_PALADIN_RIGHTEOUS_VENGEANCE_DAMAGE, SPELL_AURA_PERIODIC_DAMAGE);
- caster->CastCustomSpell(SPELL_PALADIN_RIGHTEOUS_VENGEANCE_DAMAGE, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_PALADIN_RIGHTEOUS_VENGEANCE_DAMAGE, args);
}
void Register() override
@@ -1961,7 +1979,7 @@ class spell_pal_sacred_shield_dummy : public SpellScriptLoader
cooldown = Seconds(bonus->GetAmount());
_cooldownEnd = now + cooldown;
- caster->CastSpell(eventInfo.GetActionTarget(), SPELL_PALADIN_SACRED_SHIELD_TRIGGER, true, nullptr, aurEff);
+ caster->CastSpell(eventInfo.GetActionTarget(), SPELL_PALADIN_SACRED_SHIELD_TRIGGER, aurEff);
}
void Register() override
@@ -2007,7 +2025,9 @@ class spell_pal_seal_of_righteousness : public SpellScriptLoader
int32 holy = GetTarget()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY);
holy += eventInfo.GetProcTarget()->SpellBaseDamageBonusTaken(SPELL_SCHOOL_MASK_HOLY);
int32 bp = int32((ap * 0.022f + 0.044f * holy) * GetTarget()->GetAttackTime(BASE_ATTACK) / 1000);
- GetTarget()->CastCustomSpell(SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS, SPELLVALUE_BASE_POINT0, bp, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS, args);
}
void Register() override
@@ -2075,7 +2095,7 @@ class spell_pal_seal_of_vengeance : public SpellScriptLoader
}
// don't cast triggered, spell already has SPELL_ATTR4_CAN_CAST_WHILE_CASTING attr
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), DoTSpell, TRIGGERED_DONT_RESET_PERIODIC_TIMER, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), DoTSpell, CastSpellExtraArgs(TRIGGERED_DONT_RESET_PERIODIC_TIMER).SetTriggeringAura(aurEff));
}
void HandleSeal(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
@@ -2101,7 +2121,9 @@ class spell_pal_seal_of_vengeance : public SpellScriptLoader
amount *= stacks;
amount /= maxStacks;
- caster->CastCustomSpell(DamageSpell, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, DamageSpell, args);
}
void Register() override
@@ -2183,7 +2205,9 @@ class spell_pal_spiritual_attunement : public SpellScriptLoader
HealInfo* healInfo = eventInfo.GetHealInfo();
int32 amount = CalculatePct(static_cast<int32>(healInfo->GetEffectiveHeal()), aurEff->GetAmount());
- eventInfo.GetActionTarget()->CastCustomSpell(SPELL_PALADIN_SPIRITUAL_ATTUNEMENT_MANA, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ eventInfo.GetActionTarget()->CastSpell(nullptr, SPELL_PALADIN_SPIRITUAL_ATTUNEMENT_MANA, args);
}
void Register() override
@@ -2233,7 +2257,9 @@ class spell_pal_sheath_of_light : public SpellScriptLoader
// Add remaining ticks to healing done
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_PALADIN_SHEATH_OF_LIGHT_HEAL, SPELL_AURA_PERIODIC_HEAL);
- caster->CastCustomSpell(SPELL_PALADIN_SHEATH_OF_LIGHT_HEAL, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_PALADIN_SHEATH_OF_LIGHT_HEAL, args);
}
void Register() override
@@ -2300,7 +2326,7 @@ class spell_pal_t3_6p_bonus : public SpellScriptLoader
return;
}
- caster->CastSpell(target, spellId, true, nullptr, aurEff);
+ caster->CastSpell(target, spellId, aurEff);
}
void Register() override
@@ -2349,7 +2375,9 @@ class spell_pal_t8_2p_bonus : public SpellScriptLoader
// Add remaining ticks to healing done
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_PALADIN_HOLY_MENDING, SPELL_AURA_PERIODIC_HEAL);
- caster->CastCustomSpell(SPELL_PALADIN_HOLY_MENDING, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_PALADIN_HOLY_MENDING, args);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index ee7fc69b71c..58bf170d012 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -130,8 +130,9 @@ class spell_pri_aq_3p_bonus : public SpellScriptLoader
if (!healInfo || !healInfo->GetHeal())
return;
- int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), 10);
- caster->CastCustomSpell(SPELL_PRIEST_ORACULAR_HEAL, SPELLVALUE_BASE_POINT0, amount, caster, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(healInfo->GetHeal(), 10));
+ caster->CastSpell(caster, SPELL_PRIEST_ORACULAR_HEAL, args);
}
void Register() override
@@ -177,7 +178,10 @@ public:
ASSERT(triggerInfo->GetMaxTicks() > 0);
bp /= triggerInfo->GetMaxTicks();
bp += target->GetRemainingPeriodicAmount(target->GetGUID(), triggerSpell, SPELL_AURA_PERIODIC_HEAL);
- target->CastCustomSpell(triggerSpell, SPELLVALUE_BASE_POINT0, bp, target, true, nullptr, aurEff);
+
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp);
+ target->CastSpell(target, triggerSpell, args);
}
void Register() override
@@ -236,7 +240,7 @@ class spell_pri_body_and_soul : public SpellScriptLoader
return;
if (roll_chance_i(aurEff->GetAmount()))
- caster->CastSpell(caster, SPELL_PRIEST_BODY_AND_SOUL_POISON_TRIGGER, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_PRIEST_BODY_AND_SOUL_POISON_TRIGGER, aurEff);
}
void Register() override
@@ -328,7 +332,9 @@ class spell_pri_divine_aegis : public SpellScriptLoader
absorb = std::min(absorb, eventInfo.GetProcTarget()->getLevel() * 125);
- GetTarget()->CastCustomSpell(SPELL_PRIEST_DIVINE_AEGIS, SPELLVALUE_BASE_POINT0, absorb, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(absorb);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_DIVINE_AEGIS, args);
}
void Register() override
@@ -402,11 +408,11 @@ class spell_pri_glyph_of_dispel_magic : public SpellScriptLoader
if (!spellInfo || spellInfo->SpellIconID != 74)
return;
- Unit* caster = eventInfo.GetActor();
Unit* target = eventInfo.GetProcTarget();
- int32 amount = static_cast<int32>(target->CountPctFromMaxHealth(aurEff->GetAmount()));
- caster->CastCustomSpell(SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(target->CountPctFromMaxHealth(aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(target, SPELL_PRIEST_GLYPH_OF_DISPEL_MAGIC_HEAL, args);
}
void Register() override
@@ -447,8 +453,9 @@ class spell_pri_glyph_of_prayer_of_healing : public SpellScriptLoader
SpellInfo const* triggeredSpellInfo = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL);
ASSERT(triggeredSpellInfo->GetMaxTicks() > 0);
- int32 heal = int32(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()) / triggeredSpellInfo->GetMaxTicks());
- GetTarget()->CastCustomSpell(SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL, SPELLVALUE_BASE_POINT0, heal, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()) / triggeredSpellInfo->GetMaxTicks());
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_GLYPH_OF_PRAYER_OF_HEALING_HEAL, args);
}
void Register() override
@@ -501,7 +508,9 @@ class spell_pri_guardian_spirit : public SpellScriptLoader
int32 healAmount = int32(target->CountPctFromMaxHealth(healPct));
// remove the aura now, we don't want 40% healing bonus
Remove(AURA_REMOVE_BY_ENEMY_SPELL);
- target->CastCustomSpell(target, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL, &healAmount, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(healAmount);
+ target->CastSpell(target, SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL, args);
absorbAmount = dmgInfo.GetDamage();
}
@@ -652,10 +661,10 @@ class spell_pri_item_t6_trinket : public SpellScriptLoader
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
if (eventInfo.GetSpellTypeMask() & PROC_SPELL_TYPE_HEAL)
- caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_BLESSING, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_BLESSING, aurEff);
if (eventInfo.GetSpellTypeMask() & PROC_SPELL_TYPE_DAMAGE)
- caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_WRATH, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, SPELL_PRIEST_DIVINE_WRATH, aurEff);
}
void Register() override
@@ -781,7 +790,7 @@ class spell_pri_mana_leech : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(_procTarget, SPELL_PRIEST_MANA_LEECH_PROC, true, nullptr, aurEff);
+ GetTarget()->CastSpell(_procTarget, SPELL_PRIEST_MANA_LEECH_PROC, aurEff);
}
void Register() override
@@ -1025,8 +1034,9 @@ class spell_pri_power_word_shield : public SpellScriptLoader
if (AuraEffect* talentAurEff = target->GetAuraEffectOfRankedSpell(SPELL_PRIEST_REFLECTIVE_SHIELD_R1, EFFECT_0))
{
- int32 bp = CalculatePct(absorbAmount, talentAurEff->GetAmount());
- target->CastCustomSpell(dmgInfo.GetAttacker(), SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED, &bp, nullptr, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(absorbAmount, talentAurEff->GetAmount()));
+ target->CastSpell(dmgInfo.GetAttacker(), SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED, args);
}
}
@@ -1110,8 +1120,9 @@ class spell_pri_renew : public SpellScriptLoader
heal *= GetSpellInfo()->GetMaxTicks();
- int32 basepoints0 = CalculatePct(heal, empoweredRenewAurEff->GetAmount());
- caster->CastCustomSpell(SPELL_PRIEST_EMPOWERED_RENEW, SPELLVALUE_BASE_POINT0, basepoints0, GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(heal, empoweredRenewAurEff->GetAmount()));
+ caster->CastSpell(GetTarget(), SPELL_PRIEST_EMPOWERED_RENEW, args);
}
}
@@ -1159,7 +1170,7 @@ class spell_pri_shadowfiend_death : public SpellScriptLoader
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActionTarget()->GetOwner();
- caster->CastSpell(caster, SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_PRIEST_GLYPH_OF_SHADOWFIEND_MANA, aurEff);
}
void Register() override
@@ -1193,7 +1204,9 @@ class spell_pri_shadow_word_death : public SpellScriptLoader
if (AuraEffect* aurEff = GetCaster()->GetDummyAuraEffect(SPELLFAMILY_PRIEST, PRIEST_ICON_ID_PAIN_AND_SUFFERING, EFFECT_1))
AddPct(damage, aurEff->GetAmount());
- GetCaster()->CastCustomSpell(GetCaster(), SPELL_PRIEST_SHADOW_WORD_DEATH, &damage, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_SHADOW_WORD_DEATH, args);
}
void Register() override
@@ -1232,8 +1245,10 @@ class spell_pri_vampiric_embrace : public SpellScriptLoader
int32 selfHeal = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
int32 partyHeal = selfHeal / 5;
- Unit* caster = eventInfo.GetActor();
- caster->CastCustomSpell((Unit*)nullptr, SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL, &partyHeal, &selfHeal, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(partyHeal);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, selfHeal);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_PRIEST_VAMPIRIC_EMBRACE_HEAL, args);
}
void Register() override
@@ -1280,9 +1295,10 @@ class spell_pri_vampiric_touch : public SpellScriptLoader
{
if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
{
- int32 damage = aurEff->GetAmount() * 8;
// backfire damage
- caster->CastCustomSpell(SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, SPELLVALUE_BASE_POINT0, damage, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount() * 8);
+ caster->CastSpell(target, SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, args);
}
}
}
@@ -1291,7 +1307,7 @@ class spell_pri_vampiric_touch : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(nullptr, SPELL_REPLENISHMENT, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_REPLENISHMENT, aurEff);
}
void Register() override
@@ -1327,7 +1343,7 @@ class spell_pri_t3_4p_bonus : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_ARMOR_OF_FAITH, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_PRIEST_ARMOR_OF_FAITH, aurEff);
}
void Register() override
@@ -1371,7 +1387,7 @@ class spell_pri_t5_heal_2p_bonus : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_ITEM_EFFICIENCY, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_ITEM_EFFICIENCY, aurEff);
}
void Register() override
@@ -1421,7 +1437,9 @@ class spell_pri_t10_heal_2p_bonus : public SpellScriptLoader
Unit* target = eventInfo.GetProcTarget();
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_PRIEST_BLESSED_HEALING, SPELL_AURA_PERIODIC_HEAL);
- caster->CastCustomSpell(SPELL_PRIEST_BLESSED_HEALING, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_PRIEST_BLESSED_HEALING, args);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index eb6885f7e34..f29055af42f 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -157,7 +157,7 @@ class spell_q5206_test_fetid_skull : public SpellScriptLoader
{
Unit* caster = GetCaster();
uint32 spellId = roll_chance_i(50) ? SPELL_CREATE_RESONATING_SKULL : SPELL_CREATE_BONE_DUST;
- caster->CastSpell(caster, spellId, true, nullptr);
+ caster->CastSpell(caster, spellId, true);
}
void Register() override
@@ -321,7 +321,7 @@ class spell_q11396_11399_scourging_crystal_controller : public SpellScriptLoader
if (target->GetTypeId() == TYPEID_UNIT && target->HasAura(SPELL_FORCE_SHIELD_ARCANE_PURPLE_X3))
// Make sure nobody else is channeling the same target
if (!target->HasAura(SPELL_SCOURGING_CRYSTAL_CONTROLLER))
- GetCaster()->CastSpell(target, SPELL_SCOURGING_CRYSTAL_CONTROLLER, true, GetCastItem());
+ GetCaster()->CastSpell(target, SPELL_SCOURGING_CRYSTAL_CONTROLLER, GetCastItem());
}
void Register() override
@@ -498,7 +498,7 @@ class spell_q11730_ultrasonic_screwdriver : public SpellScriptLoader
default:
return;
}
- caster->CastSpell(caster, spellId, true, castItem);
+ caster->CastSpell(caster, spellId, castItem);
caster->CastSpell(caster, SPELL_ROBOT_KILL_CREDIT, true);
target->DespawnOrUnsummon();
}
@@ -608,7 +608,7 @@ class spell_q12634_despawn_fruit_tosser : public SpellScriptLoader
// sometimes, if you're lucky, you get a dwarf
if (roll_chance_i(5))
spellId = SPELL_SUMMON_ADVENTUROUS_DWARF;
- GetCaster()->CastSpell(GetCaster(), spellId, true, nullptr);
+ GetCaster()->CastSpell(GetCaster(), spellId, true);
}
void Register() override
@@ -642,7 +642,7 @@ class spell_q12683_take_sputum_sample : public SpellScriptLoader
if (caster->HasAuraEffect(reqAuraId, 0))
{
uint32 spellId = GetSpellInfo()->Effects[EFFECT_0].CalcValue();
- caster->CastSpell(caster, spellId, true, nullptr);
+ caster->CastSpell(caster, spellId, true);
}
}
@@ -752,7 +752,7 @@ class spell_q12937_relief_for_the_fallen : public SpellScriptLoader
Player* caster = GetCaster()->ToPlayer();
if (Creature* target = GetHitCreature())
{
- caster->CastSpell(caster, SPELL_TRIGGER_AID_OF_THE_EARTHEN, true, nullptr);
+ caster->CastSpell(caster, SPELL_TRIGGER_AID_OF_THE_EARTHEN, true);
caster->KilledMonsterCredit(NPC_FALLEN_EARTHEN_DEFENDER);
target->DespawnOrUnsummon();
}
@@ -1922,7 +1922,7 @@ class spell_q13086_cannons_target : public SpellScriptLoader
void HandleEffectDummy(SpellEffIndex /*effIndex*/)
{
if (WorldLocation const* pos = GetExplTargetDest())
- GetCaster()->CastSpell(pos->GetPositionX(), pos->GetPositionY(), pos->GetPositionZ(), GetEffectValue(), true);
+ GetCaster()->CastSpell(pos->GetPosition(), GetEffectValue(), true);
}
void Register() override
@@ -2215,7 +2215,7 @@ class spell_q12619_emblazon_runeblade : public SpellScriptLoader
{
PreventDefaultAction();
if (Unit* caster = GetCaster())
- caster->CastSpell(caster, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff);
+ caster->CastSpell(caster, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, aurEff);
}
void Register() override
@@ -2279,10 +2279,11 @@ class spell_q12919_gymers_grab : public SpellScriptLoader
void HandleScript(SpellEffIndex /*effIndex*/)
{
- int8 seatId = 2;
if (!GetHitCreature())
return;
- GetHitCreature()->CastCustomSpell(SPELL_RIDE_GYMER, SPELLVALUE_BASE_POINT0, seatId, GetCaster(), true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(2);
+ GetHitCreature()->CastSpell(GetCaster(), SPELL_RIDE_GYMER, args);
GetHitCreature()->CastSpell(GetHitCreature(), SPELL_GRABBED, true);
}
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp
index d7c0e61ec1e..8f024b95d7d 100644
--- a/src/server/scripts/Spells/spell_rogue.cpp
+++ b/src/server/scripts/Spells/spell_rogue.cpp
@@ -83,8 +83,9 @@ class spell_rog_blade_flurry : public SpellScriptLoader
PreventDefaultAction();
if (DamageInfo* damageInfo = eventInfo.GetDamageInfo())
{
- int32 damage = damageInfo->GetDamage();
- GetTarget()->CastCustomSpell(SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK, SPELLVALUE_BASE_POINT0, damage, _procTarget, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damageInfo->GetDamage());
+ GetTarget()->CastSpell(_procTarget, SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK, args);
}
}
@@ -221,7 +222,7 @@ class spell_rog_deadly_brew : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_ROGUE_CRIPPLING_POISON, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_ROGUE_CRIPPLING_POISON, aurEff);
}
void Register() override
@@ -306,9 +307,9 @@ class spell_rog_deadly_poison : public SpellScriptLoader
continue;
if (spellInfo->IsPositive())
- player->CastSpell(player, enchant->spellid[s], true, item);
+ player->CastSpell(player, enchant->spellid[s], item);
else
- player->CastSpell(target, enchant->spellid[s], true, item);
+ player->CastSpell(target, enchant->spellid[s], item);
}
}
}
@@ -590,8 +591,9 @@ class spell_rog_prey_on_the_weak : public SpellScriptLoader
{
if (!target->HasAura(SPELL_ROGUE_PREY_ON_THE_WEAK))
{
- int32 bp = GetSpellInfo()->Effects[EFFECT_0].CalcValue();
- target->CastCustomSpell(target, SPELL_ROGUE_PREY_ON_THE_WEAK, &bp, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetSpellInfo()->Effects[EFFECT_0].CalcValue());
+ target->CastSpell(target, SPELL_ROGUE_PREY_ON_THE_WEAK, args);
}
}
else
@@ -634,7 +636,9 @@ class spell_rog_quick_recovery : public SpellScriptLoader
Unit* caster = eventInfo.GetActor();
int32 amount = CalculatePct(spellInfo->CalcPowerCost(caster, spellInfo->GetSchoolMask()), aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_ROGUE_QUICK_RECOVERY_ENERGY, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(nullptr, SPELL_ROGUE_QUICK_RECOVERY_ENERGY, args);
}
void Register() override
@@ -733,7 +737,7 @@ class spell_rog_glyph_of_backstab : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_ROGUE_GLYPH_OF_BACKSTAB_TRIGGER, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), SPELL_ROGUE_GLYPH_OF_BACKSTAB_TRIGGER, aurEff);
}
void Register() override
@@ -995,7 +999,7 @@ public:
return;
Unit* target = GetTarget();
- target->CastSpell(target, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true, nullptr, aurEff, caster->GetGUID());
+ target->CastSpell(target, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, { aurEff, caster->GetGUID() });
}
void Register() override
@@ -1097,7 +1101,7 @@ class spell_rog_turn_the_tables : public SpellScriptLoader
if (!caster)
return;
- caster->CastSpell(nullptr, GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, aurEff);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp
index 87d426d4df9..3f03cb6a899 100644
--- a/src/server/scripts/Spells/spell_shaman.cpp
+++ b/src/server/scripts/Spells/spell_shaman.cpp
@@ -120,8 +120,9 @@ class spell_sha_ancestral_awakening : public SpellScriptLoader
if (!healInfo || !healInfo->GetHeal())
return;
- int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), aurEff->GetAmount());
- eventInfo.GetActor()->CastCustomSpell(SPELL_SHAMAN_ANCESTRAL_AWAKENING_DUMMY, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()));
+ eventInfo.GetActor()->CastSpell(nullptr, SPELL_SHAMAN_ANCESTRAL_AWAKENING_DUMMY, args);
}
void Register() override
@@ -165,9 +166,13 @@ class spell_sha_ancestral_awakening_proc : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- int32 damage = GetEffectValue();
- if (GetHitUnit())
- GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC, &damage, nullptr, nullptr, true);
+ Unit* target = GetHitUnit();
+ if (!target)
+ return;
+
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetEffectValue());
+ GetCaster()->CastSpell(target, SPELL_SHAMAN_ANCESTRAL_AWAKENING_PROC, args);
}
void Register() override
@@ -392,9 +397,12 @@ class spell_sha_cleansing_totem_pulse : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- int32 bp = 1;
if (GetCaster() && GetHitUnit() && GetOriginalCaster())
- GetCaster()->CastCustomSpell(GetHitUnit(), SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT, nullptr, &bp, nullptr, true, nullptr, nullptr, GetOriginalCaster()->GetGUID());
+ {
+ CastSpellExtraArgs args(GetOriginalCaster()->GetGUID());
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, 1);
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_SHAMAN_CLEANSING_TOTEM_EFFECT, args);
+ }
}
void Register() override
@@ -435,7 +443,10 @@ class spell_sha_earth_shield : public SpellScriptLoader
{
PreventDefaultAction();
- GetTarget()->CastCustomSpell(SPELL_SHAMAN_EARTH_SHIELD_HEAL, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), GetTarget(), true, nullptr, aurEff, GetCasterGUID());
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_EARTH_SHIELD_HEAL, args);
}
void Register() override
@@ -751,8 +762,10 @@ class spell_sha_flametongue_weapon : public SpellScriptLoader
spellPowerBonus *= spCoeff * attackSpeed;
// All done, now proc damage
- int32 amount = static_cast<int32>(fireDamage + spellPowerBonus);
- player->CastCustomSpell(SPELL_SHAMAN_FLAMETONGUE_ATTACK, SPELLVALUE_BASE_POINT0, amount, target, true, item, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.CastItem = item;
+ args.SpellValueOverrides.AddBP0(fireDamage + spellPowerBonus);
+ player->CastSpell(target, SPELL_SHAMAN_FLAMETONGUE_ATTACK, args);
}
void Register() override
@@ -798,7 +811,7 @@ class spell_sha_frozen_power : public SpellScriptLoader
if (caster->GetDistance(target) < minDistance)
return;
- caster->CastSpell(target, SPELL_SHAMAN_FREEZE, true, nullptr, aurEff);
+ caster->CastSpell(target, SPELL_SHAMAN_FREEZE, aurEff);
}
void Register() override
@@ -878,8 +891,9 @@ class spell_sha_glyph_of_healing_wave : public SpellScriptLoader
if (!healInfo || !healInfo->GetHeal())
return;
- int32 amount = CalculatePct(static_cast<int32>(healInfo->GetHeal()), aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_SHAMAN_GLYPH_OF_HEALING_WAVE_HEAL, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()));
+ caster->CastSpell(nullptr, SPELL_SHAMAN_GLYPH_OF_HEALING_WAVE_HEAL, args);
}
void Register() override
@@ -937,7 +951,10 @@ class spell_sha_glyph_of_totem_of_wrath : public SpellScriptLoader
int32 bp0 = CalculatePct(totemSpell->Effects[EFFECT_0].CalcValue(caster), aurEff->GetAmount());
int32 bp1 = CalculatePct(totemSpell->Effects[EFFECT_1].CalcValue(caster), aurEff->GetAmount());
- caster->CastCustomSpell((Unit*)nullptr, SPELL_SHAMAN_TOTEM_OF_WRATH_SPELL_POWER, &bp0, &bp1, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp0);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, bp1);
+ caster->CastSpell(nullptr, SPELL_SHAMAN_TOTEM_OF_WRATH_SPELL_POWER, args);
}
void Register() override
@@ -992,7 +1009,9 @@ class spell_sha_healing_stream_totem : public SpellScriptLoader
damage = int32(target->SpellHealingBonusTaken(owner, triggeringSpell, damage, HEAL));
}
- caster->CastCustomSpell(SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL, SPELLVALUE_BASE_POINT0, damage, target, true, nullptr, nullptr, GetOriginalCaster()->GetGUID());
+ CastSpellExtraArgs args(GetOriginalCaster()->GetGUID());
+ args.SpellValueOverrides.AddBP0(damage);
+ caster->CastSpell(target, SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL, args);
}
}
}
@@ -1093,7 +1112,7 @@ class spell_sha_imp_water_shield : public SpellScriptLoader
return;
uint32 spellId = waterShield->GetSpellInfo()->Effects[waterShield->GetEffIndex()].TriggerSpell;
- caster->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, spellId, aurEff);
}
void Register() override
@@ -1154,7 +1173,7 @@ class spell_sha_lightning_overload : public SpellScriptLoader
spellId = sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD_R1, spellInfo->GetRank());
}
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, aurEff);
}
void Register() override
@@ -1187,7 +1206,7 @@ class spell_sha_item_lightning_shield : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD, aurEff);
}
void Register() override
@@ -1220,7 +1239,7 @@ class spell_sha_item_lightning_shield_trigger : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD_DAMAGE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_ITEM_LIGHTNING_SHIELD_DAMAGE, aurEff);
}
void Register() override
@@ -1258,9 +1277,10 @@ class spell_sha_item_mana_surge : public SpellScriptLoader
return;
int32 mana = spellInfo->CalcPowerCost(GetTarget(), eventInfo.GetSchoolMask());
- int32 damage = CalculatePct(mana, 35);
- GetTarget()->CastCustomSpell(SPELL_SHAMAN_ITEM_MANA_SURGE, SPELLVALUE_BASE_POINT0, damage, GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(mana, 35));
+ GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_ITEM_MANA_SURGE, args);
}
void Register() override
@@ -1326,7 +1346,7 @@ class spell_sha_item_t6_trinket : public SpellScriptLoader
return;
if (roll_chance_i(chance))
- eventInfo.GetActor()->CastSpell(nullptr, spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(nullptr, spellId, aurEff);
}
void Register() override
@@ -1447,7 +1467,7 @@ public:
PreventDefaultAction();
uint32 triggerSpell = sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_LIGHTNING_SHIELD_R1, aurEff->GetSpellInfo()->GetRank());
- eventInfo.GetActionTarget()->CastSpell(eventInfo.GetActor(), triggerSpell, true, nullptr, aurEff);
+ eventInfo.GetActionTarget()->CastSpell(eventInfo.GetActor(), triggerSpell, aurEff);
}
void Register() override
@@ -1492,7 +1512,7 @@ class spell_sha_maelstrom_weapon : public SpellScriptLoader
if (!aurEff || !roll_chance_i(aurEff->GetAmount()))
return;
- caster->CastSpell(nullptr, SPELL_SHAMAN_MAELSTROM_POWER, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, SPELL_SHAMAN_MAELSTROM_POWER, aurEff);
}
void Register() override
@@ -1524,11 +1544,14 @@ class spell_sha_mana_spring_totem : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- int32 damage = GetEffectValue();
if (Unit* target = GetHitUnit())
if (Unit* caster = GetCaster())
if (target->getPowerType() == POWER_MANA)
- caster->CastCustomSpell(target, SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE, &damage, nullptr, nullptr, true, nullptr, nullptr, GetOriginalCaster()->GetGUID());
+ {
+ CastSpellExtraArgs args(GetOriginalCaster()->GetGUID());
+ args.SpellValueOverrides.AddBP0(GetEffectValue());
+ caster->CastSpell(target, SPELL_SHAMAN_MANA_SPRING_TOTEM_ENERGIZE, args);
+ }
}
void Register() override
@@ -1558,7 +1581,9 @@ class spell_sha_mana_tide : public AuraScript
{
PreventDefaultAction();
- GetTarget()->CastCustomSpell(GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ GetTarget()->CastSpell(nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, args);
}
void Register() override
@@ -1596,8 +1621,9 @@ class spell_sha_mana_tide_totem : public SpellScriptLoader
if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_SHAMAN_GLYPH_OF_MANA_TIDE, 0))
effValue += dummy->GetAmount();
// Regenerate 6% of Total Mana Every 3 secs
- int32 effBasePoints0 = int32(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), effValue));
- caster->CastCustomSpell(SPELL_SHAMAN_MANA_TIDE_TOTEM, SPELLVALUE_BASE_POINT0, effBasePoints0, unitTarget, true, nullptr, nullptr, GetOriginalCaster()->GetGUID());
+ CastSpellExtraArgs args(GetOriginalCaster()->GetGUID());
+ args.SpellValueOverrides.AddBP0(CalculatePct(unitTarget->GetMaxPower(POWER_MANA), effValue));
+ caster->CastSpell(unitTarget, SPELL_SHAMAN_MANA_TIDE_TOTEM, args);
}
}
}
@@ -1643,8 +1669,9 @@ public:
{
if (target->HealthBelowPctDamaged(healthpct, damageInfo->GetDamage()))
{
- uint32 bp = CalculatePct(target->GetMaxHealth(), aurEff->GetAmount());
- target->CastCustomSpell(SPELL_SHAMAN_NATURE_GUARDIAN, SPELLVALUE_BASE_POINT0, bp, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(target->GetMaxHealth(), aurEff->GetAmount()));
+ target->CastSpell(target, SPELL_SHAMAN_NATURE_GUARDIAN, args);
// Threat reduction is around 10% confirmed in retail and from wiki
Unit* attacker = eventInfo.GetActor();
@@ -1730,7 +1757,9 @@ class spell_sha_shamanistic_rage : public SpellScriptLoader
Unit* target = GetTarget();
int32 amount = CalculatePct(static_cast<int32>(target->GetTotalAttackPowerValue(BASE_ATTACK)), aurEff->GetAmount());
- target->CastCustomSpell(SPELL_SHAMAN_SHAMANISTIC_RAGE_PROC, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ target->CastSpell(target, SPELL_SHAMAN_SHAMANISTIC_RAGE_PROC, args);
}
void Register() override
@@ -1772,9 +1801,10 @@ class spell_sha_spirit_hunt : public SpellScriptLoader
if (!target)
return;
- int32 amount = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_SHAMAN_SPIRIT_HUNT_HEAL, SPELLVALUE_BASE_POINT0, amount, caster, true, nullptr, aurEff);
- caster->CastCustomSpell(SPELL_SHAMAN_SPIRIT_HUNT_HEAL, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()));
+ caster->CastSpell(caster, SPELL_SHAMAN_SPIRIT_HUNT_HEAL, args);
+ caster->CastSpell(target, SPELL_SHAMAN_SPIRIT_HUNT_HEAL, args);
}
void Register() override
@@ -1816,7 +1846,7 @@ class spell_sha_static_shock : public SpellScriptLoader
return;
uint32 spellId = sSpellMgr->GetSpellWithRank(SPELL_SHAMAN_LIGHTNING_SHIELD_DAMAGE_R1, lightningShield->GetSpellInfo()->GetRank());
- eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, true, nullptr, aurEff);
+ eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, aurEff);
lightningShield->GetBase()->DropCharge();
}
@@ -1916,7 +1946,7 @@ public:
if (!target->m_SummonSlot[i])
return;
- target->CastSpell(target, SPELL_SHAMAN_TOTEMIC_MASTERY, true, nullptr, aurEff);
+ target->CastSpell(target, SPELL_SHAMAN_TOTEMIC_MASTERY, aurEff);
PreventDefaultAction();
}
@@ -1984,7 +2014,7 @@ class spell_sha_t3_6p_bonus : public SpellScriptLoader
return;
}
- caster->CastSpell(target, spellId, true, nullptr, aurEff);
+ caster->CastSpell(target, spellId, aurEff);
}
void Register() override
@@ -2053,7 +2083,9 @@ class spell_sha_t8_elemental_4p_bonus : public SpellScriptLoader
Unit* target = eventInfo.GetProcTarget();
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_SHAMAN_ELECTRIFIED, SPELL_AURA_PERIODIC_DAMAGE);
- caster->CastCustomSpell(SPELL_SHAMAN_ELECTRIFIED, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_SHAMAN_ELECTRIFIED, args);
}
void Register() override
@@ -2102,7 +2134,9 @@ class spell_sha_t9_elemental_4p_bonus : public SpellScriptLoader
Unit* target = eventInfo.GetProcTarget();
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_SHAMAN_LAVA_BURST_BONUS_DAMAGE, SPELL_AURA_PERIODIC_DAMAGE);
- caster->CastCustomSpell(SPELL_SHAMAN_LAVA_BURST_BONUS_DAMAGE, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_SHAMAN_LAVA_BURST_BONUS_DAMAGE, args);
}
void Register() override
@@ -2196,7 +2230,9 @@ class spell_sha_t10_restoration_4p_bonus : public SpellScriptLoader
Unit* target = eventInfo.GetProcTarget();
amount += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_SHAMAN_CHAINED_HEAL, SPELL_AURA_PERIODIC_HEAL);
- caster->CastCustomSpell(SPELL_SHAMAN_CHAINED_HEAL, SPELLVALUE_BASE_POINT0, amount, target, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(target, SPELL_SHAMAN_CHAINED_HEAL, args);
}
void Register() override
@@ -2290,9 +2326,11 @@ class spell_sha_windfury_weapon : public SpellScriptLoader
// Value gained from additional AP
int32 amount = static_cast<int32>(extraAttackPower / 14.f * player->GetAttackTime(attType) / 1000.f);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
// Attack twice
for (uint8 i = 0; i < 2; ++i)
- player->CastCustomSpell(spellId, SPELLVALUE_BASE_POINT0, amount, eventInfo.GetProcTarget(), true, item, aurEff);
+ player->CastSpell(eventInfo.GetProcTarget(), spellId, args);
}
void Register() override
diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp
index 3ee5f8f4e7c..22d85effdf3 100644
--- a/src/server/scripts/Spells/spell_warlock.cpp
+++ b/src/server/scripts/Spells/spell_warlock.cpp
@@ -255,7 +255,7 @@ class spell_warl_curse_of_doom : public SpellScriptLoader
return;
if (GetCaster()->ToPlayer()->isHonorOrXPTarget(GetTarget()))
- GetCaster()->CastSpell(GetTarget(), SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT, true, nullptr, aurEff);
+ GetCaster()->CastSpell(GetTarget(), SPELL_WARLOCK_CURSE_OF_DOOM_EFFECT, aurEff);
}
void Register() override
@@ -424,8 +424,10 @@ class spell_warl_demonic_empowerment : public SpellScriptLoader
case CREATURE_FAMILY_VOIDWALKER:
{
SpellInfo const* spellInfo = sSpellMgr->AssertSpellInfo(SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER);
- int32 hp = int32(targetCreature->CountPctFromMaxHealth(GetCaster()->CalculateSpellDamage(targetCreature, spellInfo, 0)));
- targetCreature->CastCustomSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER, &hp, nullptr, nullptr, true);
+ int32 hp = targetCreature->CountPctFromMaxHealth(GetCaster()->CalculateSpellDamage(targetCreature, spellInfo, 0));
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(hp);
+ targetCreature->CastSpell(targetCreature, SPELL_WARLOCK_DEMONIC_EMPOWERMENT_VOIDWALKER, args);
//unitTarget->CastSpell(unitTarget, 54441, true);
break;
}
@@ -487,7 +489,9 @@ class spell_warl_drain_soul : public SpellScriptLoader
return;
int32 amount = CalculatePct(caster->GetMaxPower(POWER_MANA), impDrainSoul->GetSpellInfo()->Effects[EFFECT_2].CalcValue());
- caster->CastCustomSpell(SPELL_WARLOCK_IMPROVED_DRAIN_SOUL_PROC, SPELLVALUE_BASE_POINT0, amount, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ caster->CastSpell(nullptr, SPELL_WARLOCK_IMPROVED_DRAIN_SOUL_PROC, args);
}
void Register() override
@@ -568,7 +572,9 @@ class spell_warl_fel_synergy : public SpellScriptLoader
PreventDefaultAction();
int32 heal = CalculatePct(static_cast<int32>(eventInfo.GetDamageInfo()->GetDamage()), aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_WARLOCK_FEL_SYNERGY_HEAL, SPELLVALUE_BASE_POINT0, heal, (Unit*)nullptr, true, nullptr, aurEff); // TARGET_UNIT_PET
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(heal);
+ GetTarget()->CastSpell(nullptr, SPELL_WARLOCK_FEL_SYNERGY_HEAL, args); // TARGET_UNIT_PET
}
void Register() override
@@ -604,7 +610,7 @@ class spell_warl_glyph_of_corruption_nightfall : public SpellScriptLoader
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(caster, SPELL_WARLOCK_SHADOW_TRANCE, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_WARLOCK_SHADOW_TRANCE, aurEff);
}
void Register() override
@@ -638,7 +644,7 @@ public:
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(caster, SPELL_WARLOCK_GLYPH_OF_LIFE_TAP_TRIGGERED, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_WARLOCK_GLYPH_OF_LIFE_TAP_TRIGGERED, aurEff);
}
void Register() override
@@ -671,7 +677,7 @@ class spell_warl_glyph_of_shadowflame : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARLOCK_GLYPH_OF_SHADOWFLAME, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARLOCK_GLYPH_OF_SHADOWFLAME, aurEff);
}
void Register() override
@@ -722,8 +728,10 @@ class spell_warl_haunt : public SpellScriptLoader
{
if (Unit* caster = GetCaster())
{
- int32 amount = aurEff->GetAmount();
- GetTarget()->CastCustomSpell(caster, SPELL_WARLOCK_HAUNT_HEAL, &amount, nullptr, nullptr, true, nullptr, aurEff, GetCasterGUID());
+ CastSpellExtraArgs args(aurEff);
+ args.OriginalCaster = GetCasterGUID();
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount());
+ GetTarget()->CastSpell(caster, SPELL_WARLOCK_HAUNT_HEAL, args);
}
}
@@ -822,7 +830,10 @@ class spell_warl_life_tap : public SpellScriptLoader
if (AuraEffect const* aurEff = caster->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_IMPROVED_LIFE_TAP, 0))
AddPct(mana, aurEff->GetAmount());
- caster->CastCustomSpell(target, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, &mana, nullptr, nullptr, false);
+ // @todo castspell refactor note: this is not triggered - intended?
+ CastSpellExtraArgs args;
+ args.SpellValueOverrides.AddBP0(mana);
+ caster->CastSpell(target, SPELL_WARLOCK_LIFE_TAP_ENERGIZE, args);
// Mana Feed
int32 manaFeedVal = 0;
@@ -832,7 +843,9 @@ class spell_warl_life_tap : public SpellScriptLoader
if (manaFeedVal > 0)
{
ApplyPct(manaFeedVal, mana);
- caster->CastCustomSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, &manaFeedVal, nullptr, nullptr, true, nullptr);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(manaFeedVal);
+ caster->CastSpell(caster, SPELL_WARLOCK_LIFE_TAP_ENERGIZE_2, args);
}
}
}
@@ -931,7 +944,7 @@ public:
}
if (Unit* target = eventInfo.GetActionTarget())
- target->CastSpell(target, triggerspell, true, nullptr, aurEff);
+ target->CastSpell(target, triggerspell, aurEff);
}
void Register() override
@@ -976,7 +989,9 @@ class spell_warl_demonic_pact : public SpellScriptLoader
if (AuraEffect* aurEff = owner->GetDummyAuraEffect(SPELLFAMILY_WARLOCK, WARLOCK_ICON_ID_DEMONIC_PACT, EFFECT_0))
{
int32 bp0 = static_cast<int32>((aurEff->GetAmount() * owner->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_MAGIC) + 100.0f) / 100.0f);
- owner->CastCustomSpell(SPELL_WARLOCK_DEMONIC_PACT_PROC, SPELLVALUE_BASE_POINT0, bp0, (Unit*)nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(bp0);
+ owner->CastSpell(nullptr, SPELL_WARLOCK_DEMONIC_PACT_PROC, args);
}
}
}
@@ -1126,7 +1141,7 @@ class spell_warl_seed_of_corruption_dummy : public SpellScriptLoader
return;
uint32 spellId = sSpellMgr->GetSpellWithRank(SPELL_WARLOCK_SEED_OF_CORRUPTION_DAMAGE_R1, GetSpellInfo()->GetRank());
- caster->CastSpell(eventInfo.GetActionTarget(), spellId, true, nullptr, aurEff);
+ caster->CastSpell(eventInfo.GetActionTarget(), spellId, aurEff);
}
void Register() override
@@ -1182,7 +1197,7 @@ class spell_warl_seed_of_corruption_generic : public SpellScriptLoader
if (!caster)
return;
- caster->CastSpell(eventInfo.GetActionTarget(), SPELL_WARLOCK_SEED_OF_CORRUPTION_GENERIC, true, nullptr, aurEff);
+ caster->CastSpell(eventInfo.GetActionTarget(), SPELL_WARLOCK_SEED_OF_CORRUPTION_GENERIC, aurEff);
}
void Register() override
@@ -1271,7 +1286,9 @@ class spell_warl_siphon_life : public SpellScriptLoader
if (AuraEffect const* glyph = GetTarget()->GetAuraEffect(SPELL_WARLOCK_GLYPH_OF_SIPHON_LIFE, EFFECT_0))
AddPct(amount, glyph->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_WARLOCK_SIPHON_LIFE_HEAL, SPELLVALUE_BASE_POINT0, amount, GetTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(amount);
+ GetTarget()->CastSpell(GetTarget(), SPELL_WARLOCK_SIPHON_LIFE_HEAL, args);
}
void Register() override
@@ -1322,8 +1339,9 @@ class spell_warl_soul_leech : public SpellScriptLoader
return;
Unit* caster = eventInfo.GetActor();
- int32 bp = CalculatePct(static_cast<int32>(damageInfo->GetDamage()), aurEff->GetAmount());
- caster->CastCustomSpell(SPELL_WARLOCK_SOUL_LEECH_HEAL, SPELLVALUE_BASE_POINT0, bp, caster, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()));
+ caster->CastSpell(caster, SPELL_WARLOCK_SOUL_LEECH_HEAL, args);
// Improved Soul Leech code below
AuraEffect const* impSoulLeech = GetTarget()->GetAuraEffectOfRankedSpell(SPELL_WARLOCK_IMP_SOUL_LEECH_R1, EFFECT_1, aurEff->GetCasterGUID());
@@ -1334,11 +1352,11 @@ class spell_warl_soul_leech : public SpellScriptLoader
uint32 selfSpellId = casterMana[impSoulLeechRank - 1];
uint32 petSpellId = petMana[impSoulLeechRank - 1];
- caster->CastSpell(nullptr, selfSpellId, true, nullptr, aurEff);
- caster->CastSpell(nullptr, petSpellId, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, selfSpellId, aurEff);
+ caster->CastSpell(nullptr, petSpellId, aurEff);
if (roll_chance_i(impSoulLeech->GetAmount()))
- caster->CastSpell(nullptr, SPELL_REPLENISHMENT, true, nullptr, aurEff);
+ caster->CastSpell(nullptr, SPELL_REPLENISHMENT, aurEff);
}
void Register() override
@@ -1412,7 +1430,7 @@ class spell_warl_t4_2p_bonus : public SpellScriptLoader
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(caster, Trigger, true, nullptr, aurEff);
+ caster->CastSpell(caster, Trigger, aurEff);
}
void Register() override
@@ -1447,9 +1465,10 @@ class spell_warl_unstable_affliction : public SpellScriptLoader
if (Unit* caster = GetCaster())
if (AuraEffect const* aurEff = GetEffect(EFFECT_0))
{
- int32 damage = aurEff->GetAmount() * 9;
// backfire damage and silence
- caster->CastCustomSpell(dispelInfo->GetDispeller(), SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL, &damage, nullptr, nullptr, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(aurEff->GetAmount() * 9);
+ caster->CastSpell(dispelInfo->GetDispeller(), SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL, args);
}
}
diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp
index be7e0d0421d..2ef5a2361f2 100644
--- a/src/server/scripts/Spells/spell_warrior.cpp
+++ b/src/server/scripts/Spells/spell_warrior.cpp
@@ -110,8 +110,9 @@ class spell_warr_bloodthirst : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- int32 damage = GetEffectValue();
- GetCaster()->CastCustomSpell(GetCaster(), SPELL_WARRIOR_BLOODTHIRST, &damage, nullptr, nullptr, true, nullptr);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetEffectValue());
+ GetCaster()->CastSpell(GetCaster(), SPELL_WARRIOR_BLOODTHIRST, args);
}
void Register() override
@@ -172,9 +173,10 @@ class spell_warr_charge : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- int32 chargeBasePoints0 = GetEffectValue();
Unit* caster = GetCaster();
- caster->CastCustomSpell(caster, SPELL_WARRIOR_CHARGE, &chargeBasePoints0, nullptr, nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetEffectValue());
+ caster->CastSpell(caster, SPELL_WARRIOR_CHARGE, args);
// Juggernaut crit bonus
if (caster->HasAura(SPELL_WARRIOR_JUGGERNAUT_CRIT_BONUS_TALENT))
@@ -241,7 +243,9 @@ class spell_warr_damage_shield : public SpellScriptLoader
// % of amount blocked
int32 damage = CalculatePct(int32(GetTarget()->GetShieldBlockValue()), aurEff->GetAmount());
- GetTarget()->CastCustomSpell(SPELL_WARRIOR_DAMAGE_SHIELD_DAMAGE, SPELLVALUE_BASE_POINT0, damage, eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damage);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARRIOR_DAMAGE_SHIELD_DAMAGE, args);
}
void Register() override
@@ -292,7 +296,10 @@ class spell_warr_deep_wounds : public SpellScriptLoader
// Add remaining ticks to damage done
damage += target->GetRemainingPeriodicAmount(caster->GetGUID(), SPELL_WARRIOR_DEEP_WOUNDS_PERIODIC, SPELL_AURA_PERIODIC_DAMAGE);
- caster->CastCustomSpell(SPELL_WARRIOR_DEEP_WOUNDS_PERIODIC, SPELLVALUE_BASE_POINT0, damage, target, true);
+
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(damage);
+ caster->CastSpell(target, SPELL_WARRIOR_DEEP_WOUNDS_PERIODIC, args);
}
}
@@ -344,7 +351,9 @@ class spell_warr_deep_wounds_aura : public SpellScriptLoader
else
damage = (actor->GetFloatValue(UNIT_FIELD_MINDAMAGE) + actor->GetFloatValue(UNIT_FIELD_MAXDAMAGE)) / 2.f;
- actor->CastCustomSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, SPELLVALUE_BASE_POINT0, int32(damage), eventInfo.GetProcTarget(), true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damage);
+ actor->CastSpell(eventInfo.GetProcTarget(), GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, args);
}
void Register() override
@@ -398,7 +407,9 @@ class spell_warr_execute : public SpellScriptLoader
int32 bp = GetEffectValue() + int32(rageUsed * spellInfo->Effects[effIndex].DamageMultiplier + caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.2f);
- caster->CastCustomSpell(target, SPELL_WARRIOR_EXECUTE, &bp, nullptr, nullptr, true, nullptr, nullptr, GetOriginalCaster()->GetGUID());
+ CastSpellExtraArgs args(GetOriginalCaster()->GetGUID());
+ args.SpellValueOverrides.AddBP0(bp);
+ caster->CastSpell(target, SPELL_WARRIOR_EXECUTE, args);
}
}
@@ -446,13 +457,13 @@ class spell_warr_extra_proc : public SpellScriptLoader
if (!roll_chance_i(bonusAurEff->GetAmount()))
return;
- target->CastSpell(nullptr, SPELL_WARRIOR_EXTRA_CHARGE, true, nullptr, aurEff);
+ target->CastSpell(nullptr, SPELL_WARRIOR_EXTRA_CHARGE, aurEff);
SpellInfo const* auraInfo = aurEff->GetSpellInfo();
if (auraInfo->IsRankOf(sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_BLOODSURGE_R1)))
- target->CastSpell(nullptr, SPELL_WARRIOR_SLAM_GCD_REDUCED, true, nullptr, aurEff);
+ target->CastSpell(nullptr, SPELL_WARRIOR_SLAM_GCD_REDUCED, aurEff);
else if (auraInfo->IsRankOf(sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_SUDDEN_DEATH_R1)))
- target->CastSpell(nullptr, SPELL_WARRIOR_EXECUTE_GCD_REDUCED, true, nullptr, aurEff);
+ target->CastSpell(nullptr, SPELL_WARRIOR_EXECUTE_GCD_REDUCED, aurEff);
}
void Register() override
@@ -486,7 +497,7 @@ class spell_warr_glyph_of_blocking : public SpellScriptLoader
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastSpell(caster, SPELL_WARRIOR_GLYPH_OF_BLOCKING, true, nullptr, aurEff);
+ caster->CastSpell(caster, SPELL_WARRIOR_GLYPH_OF_BLOCKING, aurEff);
}
void Register() override
@@ -556,7 +567,9 @@ class spell_warr_improved_spell_reflection : public SpellScriptLoader
{
PreventDefaultAction();
Unit* caster = eventInfo.GetActor();
- caster->CastCustomSpell(SPELL_WARRIOR_IMPROVED_SPELL_REFLECTION_TRIGGER, SPELLVALUE_MAX_TARGETS, aurEff->GetAmount(), caster, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddMod(SPELLVALUE_MAX_TARGETS, aurEff->GetAmount());
+ caster->CastSpell(caster, SPELL_WARRIOR_IMPROVED_SPELL_REFLECTION_TRIGGER, args);
}
void Register() override
@@ -620,7 +633,9 @@ class spell_warr_item_t10_prot_4p_bonus : public SpellScriptLoader
Unit* target = eventInfo.GetActionTarget();
int32 bp0 = CalculatePct(target->GetMaxHealth(), GetSpellInfo()->Effects[EFFECT_1].CalcValue());
- target->CastCustomSpell(SPELL_WARRIOR_STOICISM, SPELLVALUE_BASE_POINT0, bp0, (Unit*)nullptr, true);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(bp0);
+ target->CastSpell(nullptr, SPELL_WARRIOR_STOICISM, args);
}
void Register() override
@@ -653,8 +668,9 @@ class spell_warr_last_stand : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
- int32 healthModSpellBasePoints0 = int32(caster->CountPctFromMaxHealth(GetEffectValue()));
- caster->CastCustomSpell(caster, SPELL_WARRIOR_LAST_STAND_TRIGGERED, &healthModSpellBasePoints0, nullptr, nullptr, true, nullptr);
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(caster->CountPctFromMaxHealth(GetEffectValue()));
+ caster->CastSpell(caster, SPELL_WARRIOR_LAST_STAND_TRIGGERED, args);
}
void Register() override
@@ -777,7 +793,7 @@ class spell_warr_retaliation : public SpellScriptLoader
void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
{
PreventDefaultAction();
- GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARRIOR_RETALIATION_DAMAGE, true, nullptr, aurEff);
+ GetTarget()->CastSpell(eventInfo.GetProcTarget(), SPELL_WARRIOR_RETALIATION_DAMAGE, aurEff);
}
void Register() override
@@ -828,7 +844,7 @@ class spell_warr_second_wind : public SpellScriptLoader
PreventDefaultAction();
Unit* caster = eventInfo.GetActionTarget();
uint32 spellId = triggeredSpells[GetSpellInfo()->GetRank() - 1];
- caster->CastSpell(caster, spellId, true, nullptr, aurEff);
+ caster->CastSpell(caster, spellId, aurEff);
}
void Register() override
@@ -892,8 +908,11 @@ class spell_warr_slam : public SpellScriptLoader
void HandleDummy(SpellEffIndex /*effIndex*/)
{
- if (GetHitUnit())
- GetCaster()->CastCustomSpell(SPELL_WARRIOR_SLAM, SPELLVALUE_BASE_POINT0, GetEffectValue(), GetHitUnit(), TRIGGERED_FULL_MASK);
+ if (!GetHitUnit())
+ return;
+ CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
+ args.SpellValueOverrides.AddBP0(GetEffectValue());
+ GetCaster()->CastSpell(GetHitUnit(), SPELL_WARRIOR_SLAM, args);
}
void Register() override
@@ -938,12 +957,13 @@ class spell_warr_sweeping_strikes : public SpellScriptLoader
if (spellInfo && (spellInfo->Id == SPELL_WARRIOR_BLADESTORM_PERIODIC_WHIRLWIND || (spellInfo->Id == SPELL_WARRIOR_EXECUTE && !_procTarget->HasAuraState(AURA_STATE_HEALTHLESS_20_PERCENT))))
{
// If triggered by Execute (while target is not under 20% hp) or Bladestorm deals normalized weapon damage
- GetTarget()->CastSpell(_procTarget, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2, true, nullptr, aurEff);
+ GetTarget()->CastSpell(_procTarget, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2, aurEff);
}
else
{
- int32 damage = damageInfo->GetDamage();
- GetTarget()->CastCustomSpell(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1, SPELLVALUE_BASE_POINT0, damage, _procTarget, true, nullptr, aurEff);
+ CastSpellExtraArgs args(aurEff);
+ args.SpellValueOverrides.AddBP0(damageInfo->GetDamage());
+ GetTarget()->CastSpell(_procTarget, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1, args);
}
}
}
@@ -1083,7 +1103,7 @@ class spell_warr_vigilance : public SpellScriptLoader
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
{
PreventDefaultAction();
- GetTarget()->CastSpell(_procTarget, SPELL_WARRIOR_VIGILANCE_PROC, true, nullptr, aurEff);
+ GetTarget()->CastSpell(_procTarget, SPELL_WARRIOR_VIGILANCE_PROC, aurEff);
}
void Register() override
diff --git a/src/server/scripts/World/mob_generic_creature.cpp b/src/server/scripts/World/mob_generic_creature.cpp
index 0c71177ccac..1516d09e9ee 100644
--- a/src/server/scripts/World/mob_generic_creature.cpp
+++ b/src/server/scripts/World/mob_generic_creature.cpp
@@ -43,7 +43,7 @@ public:
if (timer <= diff)
{
if (spell)
- me->CastSpell(me, spell, true);
+ me->CastSpell(me, spell->Id, true);
timer = interval;
}
else
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index 047149f1f00..fb2823df20c 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -473,10 +473,10 @@ public:
{
_scheduler.Schedule(Seconds(2), [this](TaskContext context)
{
- me->CastCustomSpell(SPELL_TORCH_TARGET_PICKER, SPELLVALUE_MAX_TARGETS, 1);
+ me->CastSpell(nullptr, SPELL_TORCH_TARGET_PICKER);
_scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/)
{
- me->CastCustomSpell(SPELL_TORCH_TARGET_PICKER, SPELLVALUE_MAX_TARGETS, 1);
+ me->CastSpell(nullptr, SPELL_TORCH_TARGET_PICKER);
});
context.Repeat(Seconds(5));
});
@@ -2325,7 +2325,7 @@ public:
}
else
//me->CastSpell(me, GetFireworkSpell(me->GetEntry()), true);
- me->CastSpell(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), GetFireworkSpell(me->GetEntry()), true);
+ me->CastSpell(me->GetPosition(), GetFireworkSpell(me->GetEntry()), true);
}
};