spell
Build (Windows x64) / build (push) Canceled after 0s
Build (Windows x64) / linux-build (push) Canceled after 0s

This commit is contained in:
luis
2026-08-26 00:51:30 -03:00
parent 70ec10f139
commit 399239a89c
16 changed files with 60 additions and 356 deletions
@@ -43,9 +43,7 @@ enum ApothecarySpells
SPELL_BUNNY_LOCKDOWN = 69039,
SPELL_THROW_PERFUME = 68799,
SPELL_PERFUME_SPILL = 68798,
SPELL_COLOGNE_SPILL = 68614,
SPELL_PERFUME_SPILL_DAMAGE = 68927,
SPELL_COLOGNE_SPILL_DAMAGE = 68934
SPELL_COLOGNE_SPILL = 68614
};
enum ApothecarySays
@@ -445,34 +443,6 @@ class spell_apothecary_throw_perfume : public SpellScript
}
};
// 68798 - Concentrated Alluring Perfume Spill
class spell_apothecary_perfume_spill : public AuraScript
{
void OnPeriodic(AuraEffect const* /*aurEff*/)
{
GetTarget()->CastSpell(GetTarget(), SPELL_PERFUME_SPILL_DAMAGE, true);
}
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_apothecary_perfume_spill::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
// 68614 - Concentrated Irresistible Cologne Spill
class spell_apothecary_cologne_spill : public AuraScript
{
void OnPeriodic(AuraEffect const* /*aurEff*/)
{
GetTarget()->CastSpell(GetTarget(), SPELL_COLOGNE_SPILL_DAMAGE, true);
}
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_apothecary_cologne_spill::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
};
void AddSC_boss_apothecary_hummel()
{
RegisterShadowfangKeepCreatureAI(boss_apothecary_hummel);
@@ -482,6 +452,4 @@ void AddSC_boss_apothecary_hummel()
RegisterSpellScript(spell_apothecary_validate_area);
RegisterSpellScript(spell_apothecary_throw_cologne);
RegisterSpellScript(spell_apothecary_throw_perfume);
RegisterSpellScript(spell_apothecary_perfume_spill);
RegisterSpellScript(spell_apothecary_cologne_spill);
}
@@ -406,18 +406,9 @@ class spell_baleroc_decimation_blade : public AuraScript
// http://www.wowhead.com/spell=99353/decimating-strike
class spell_baleroc_decimating_strike : public SpellScript
{
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } })
&& ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValue()) });
}
void ChangeDamage()
{
int32 healthPctDmg = GetHitUnit()->CountPctFromMaxHealth(GetEffectInfo(EFFECT_0).CalcValue(GetCaster()));
int32 flatDmg = GetEffectInfo(EFFECT_2).CalcValue(GetCaster());
SetHitDamage(healthPctDmg < flatDmg ? flatDmg : healthPctDmg);
SetHitDamage(GetHitUnit()->CountPctFromMaxHealth(GetEffectInfo(EFFECT_0).CalcValue(GetCaster())));
}
void Register() override
@@ -1826,6 +1826,9 @@ class spell_halion_summon_exit_portals : public SpellScriptLoader
void Register() override
{
if (m_scriptSpellId != 74805) // Summon Exit Portals
return;
OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_halion_summon_exit_portals_SpellScript::SetDest0, EFFECT_0, TARGET_DEST_CASTER);
OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_halion_summon_exit_portals_SpellScript::SetDest1, EFFECT_1, TARGET_DEST_CASTER);
}
@@ -1323,7 +1323,7 @@ class spell_icehowl_massive_crash : public AuraScript
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_icehowl_massive_crash::HandleSpeed, EFFECT_2, SPELL_AURA_MOD_STUN, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_icehowl_massive_crash::HandleSpeed, EFFECT_0, SPELL_AURA_MOD_STUN, AURA_EFFECT_HANDLE_REAL);
}
};
@@ -790,7 +790,7 @@ class spell_fjord_worg_disguise_dummy : public AuraScript
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_worg_disguise_dummy::AfterRemove, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_worg_disguise_dummy::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
+1 -1
View File
@@ -310,7 +310,7 @@ class spell_pet_gen_toxic_wasteling_devour : public SpellScript
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_pet_gen_toxic_wasteling_devour::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
OnEffectHitTarget += SpellEffectFn(spell_pet_gen_toxic_wasteling_devour::HandleScript, EFFECT_1, SPELL_EFFECT_INSTAKILL);
}
};
-21
View File
@@ -79,7 +79,6 @@ enum DeathKnightSpells
SPELL_DK_DEATH_STRIKE_ENABLER = 89832, // Server Side
SPELL_DK_DEATH_STRIKE_HEAL = 45470,
SPELL_DK_DEATH_STRIKE_OFFHAND = 66188,
SPELL_DK_FESTERING_WOUND = 194310,
SPELL_DK_FROST = 137006,
SPELL_DK_FROST_FEVER = 55095,
SPELL_DK_FROST_SCYTHE = 207230,
@@ -808,25 +807,6 @@ private:
std::array<uint32, LAST_SECONDS> _damagePerSecond = { };
};
// 85948 - Festering Strike
class spell_dk_festering_strike : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_DK_FESTERING_WOUND });
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
{
GetCaster()->CastSpell(GetHitUnit(), SPELL_DK_FESTERING_WOUND, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, GetEffectValueAsInt()));
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_dk_festering_strike::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_DUMMY);
}
};
// 195621 - Frost Fever
class spell_dk_frost_fever_proc : public AuraScript
{
@@ -2045,7 +2025,6 @@ void AddSC_deathknight_spell_scripts()
RegisterSpellScript(spell_dk_death_pact);
RegisterSpellScript(spell_dk_death_strike);
RegisterSpellScript(spell_dk_death_strike_enabler);
RegisterSpellScript(spell_dk_festering_strike);
RegisterSpellScript(spell_dk_frost_fever_proc);
RegisterSpellScript(spell_dk_ghoul_explode);
RegisterSpellScript(spell_dk_glyph_of_scourge_strike_script);
+18 -15
View File
@@ -1449,14 +1449,11 @@ enum Feast
SPELL_FEAST_FOOD = 45548,
SPELL_FEAST_DRINK = 57073,
SPELL_BOUNTIFUL_FEAST_DRINK = 66041,
SPELL_BOUNTIFUL_FEAST_FOOD = 66478,
SPELL_GREAT_FEAST_REFRESHMENT = 57338,
SPELL_FISH_FEAST_REFRESHMENT = 57398,
SPELL_GIGANTIC_FEAST_REFRESHMENT = 58467,
SPELL_SMALL_FEAST_REFRESHMENT = 58477,
SPELL_BOUNTIFUL_FEAST_REFRESHMENT = 66622
SPELL_SMALL_FEAST_REFRESHMENT = 58477
};
/* 57337 - Great Feast
@@ -1472,14 +1469,11 @@ class spell_gen_feast : public SpellScript
{
SPELL_FEAST_FOOD,
SPELL_FEAST_DRINK,
SPELL_BOUNTIFUL_FEAST_DRINK,
SPELL_BOUNTIFUL_FEAST_FOOD,
SPELL_GREAT_FEAST_REFRESHMENT,
SPELL_FISH_FEAST_REFRESHMENT,
SPELL_GIGANTIC_FEAST_REFRESHMENT,
SPELL_SMALL_FEAST_REFRESHMENT,
SPELL_BOUNTIFUL_FEAST_REFRESHMENT
SPELL_SMALL_FEAST_REFRESHMENT
});
}
@@ -1509,11 +1503,6 @@ class spell_gen_feast : public SpellScript
target->CastSpell(target, SPELL_FEAST_DRINK);
target->CastSpell(target, SPELL_SMALL_FEAST_REFRESHMENT);
break;
case SPELL_BOUNTIFUL_FEAST:
target->CastSpell(target, SPELL_BOUNTIFUL_FEAST_REFRESHMENT);
target->CastSpell(target, SPELL_BOUNTIFUL_FEAST_DRINK);
target->CastSpell(target, SPELL_BOUNTIFUL_FEAST_FOOD);
break;
default:
break;
}
@@ -1521,6 +1510,10 @@ class spell_gen_feast : public SpellScript
void Register() override
{
// 66477 - Bountiful Feast is fully handled by dbc (triggers 175780/175787 and periodic 65418)
if (m_scriptSpellId == SPELL_BOUNTIFUL_FEAST)
return;
OnEffectHitTarget += SpellEffectFn(spell_gen_feast::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
@@ -5302,6 +5295,9 @@ class spell_gen_random_aggro_taunt : public SpellScript
void Register() override
{
if (m_scriptSpellId == 81690)
return;
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gen_random_aggro_taunt::SelectRandomTarget, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
OnEffectHitTarget += SpellEffectFn(spell_gen_random_aggro_taunt::HandleTauntEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
@@ -5594,16 +5590,23 @@ class spell_gen_cast_caster_to_target : public SpellScript
{
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) });
return !spellInfo->GetEffect(EFFECT_0).CalcValueAsInt() || ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()));
uint32 spellId = uint32(GetEffectValueAsInt());
if (!spellId)
return;
GetCaster()->CastSpell(GetHitUnit(), spellId);
}
void Register() override
{
if (m_scriptSpellId == 65797) // Starfall
OnEffectHitTarget += SpellEffectFn(spell_gen_cast_caster_to_target::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY);
else
OnEffectHitTarget += SpellEffectFn(spell_gen_cast_caster_to_target::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
+3 -63
View File
@@ -1048,67 +1048,6 @@ private:
uint32 _text;
};
// http://www.wowhead.com/item=47499 Flask of the North
// 67019 Flask of the North
enum FlaskOfTheNorthSpells
{
SPELL_FLASK_OF_THE_NORTH_SP = 67016,
SPELL_FLASK_OF_THE_NORTH_AP = 67017,
SPELL_FLASK_OF_THE_NORTH_STR = 67018,
};
class spell_item_flask_of_the_north : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_FLASK_OF_THE_NORTH_SP, SPELL_FLASK_OF_THE_NORTH_AP, SPELL_FLASK_OF_THE_NORTH_STR });
}
void HandleDummy(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
std::vector<uint32> possibleSpells;
switch (caster->GetClass())
{
case CLASS_WARLOCK:
case CLASS_MAGE:
case CLASS_PRIEST:
possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_SP);
break;
case CLASS_DEATH_KNIGHT:
case CLASS_WARRIOR:
possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_STR);
break;
case CLASS_ROGUE:
case CLASS_HUNTER:
possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_AP);
break;
case CLASS_DRUID:
case CLASS_PALADIN:
possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_SP);
possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_STR);
break;
case CLASS_SHAMAN:
possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_SP);
possibleSpells.push_back(SPELL_FLASK_OF_THE_NORTH_AP);
break;
}
if (possibleSpells.empty())
{
TC_LOG_WARN("spells", "Missing spells for class {} in script spell_item_flask_of_the_north", caster->GetClass());
return;
}
caster->CastSpell(caster, Trinity::Containers::SelectRandomContainerElement(possibleSpells), true);
}
void Register() override
{
OnEffectHit += SpellEffectFn(spell_item_flask_of_the_north::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
enum FrozenShadoweave
{
SPELL_SHADOWMEND = 39373
@@ -3944,11 +3883,13 @@ class spell_item_water_strider : public AuraScript
{
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } });
return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } })
&& (spellInfo->GetEffects().size() <= EFFECT_1 || ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }));
}
void OnRemove(AuraEffect const* /*effect*/, AuraEffectHandleModes /*mode*/)
{
if (GetSpellInfo()->GetEffects().size() > EFFECT_1)
GetTarget()->RemoveAurasDueToSpell(GetSpellInfo()->GetEffect(EFFECT_1).TriggerSpell);
}
@@ -4832,7 +4773,6 @@ void AddSC_item_spell_scripts()
RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_gigantic_feast", TEXT_GIGANTIC_FEAST);
RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_small_feast", TEXT_SMALL_FEAST);
RegisterSpellScriptWithArgs(spell_item_feast, "spell_item_bountiful_feast", TEXT_BOUNTIFUL_FEAST);
RegisterSpellScript(spell_item_flask_of_the_north);
RegisterSpellScript(spell_item_frozen_shadoweave);
RegisterSpellScript(spell_item_gnomish_death_ray);
RegisterSpellScript(spell_item_harm_prevention_belt);
+6 -68
View File
@@ -108,7 +108,6 @@ enum MageSpells
SPELL_MAGE_IGNITION_BURST = 1217359,
SPELL_MAGE_IMPROVED_COMBUSTION = 383967,
SPELL_MAGE_IMPROVED_SCORCH = 383608,
SPELL_MAGE_INCANTERS_FLOW = 116267,
SPELL_MAGE_LIVING_BOMB_EXPLOSION = 44461,
SPELL_MAGE_LIVING_BOMB_PERIODIC = 217694,
SPELL_MAGE_MANA_SURGE = 37445,
@@ -781,7 +780,7 @@ class spell_mage_fiery_rush_aura : public AuraScript
void Register() override
{
AfterEffectRemove += AuraEffectRemoveFn(spell_mage_fiery_rush_aura::AfterRemove, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
AfterEffectRemove += AuraEffectRemoveFn(spell_mage_fiery_rush_aura::AfterRemove, EFFECT_4, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
@@ -896,28 +895,6 @@ class spell_mage_flame_accelerant : public AuraScript
}
};
// 205029 - Flame On
class spell_mage_flame_on : public AuraScript
{
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellInfo({ SPELL_MAGE_FIRE_BLAST })
&& sSpellCategoryStore.HasRecord(sSpellMgr->AssertSpellInfo(SPELL_MAGE_FIRE_BLAST, DIFFICULTY_NONE)->ChargeCategoryId)
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } });
}
void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated)
{
canBeRecalculated = false;
amount = -GetPctOf<SpellEffectValue>(GetEffectInfo(EFFECT_2).CalcValue() * int32(IN_MILLISECONDS), sSpellCategoryStore.AssertEntry(sSpellMgr->AssertSpellInfo(SPELL_MAGE_FIRE_BLAST, DIFFICULTY_NONE)->ChargeCategoryId)->ChargeRecoveryTime);
}
void Register() override
{
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_flame_on::CalculateAmount, EFFECT_1, SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER);
}
};
// 205037 - Flame Patch (attached to 2120 - Flamestrike)
class spell_mage_flame_patch : public SpellScript
{
@@ -1364,7 +1341,7 @@ class spell_mage_frozen_orb_damage : public SpellScript
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mage_frozen_orb_damage::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mage_frozen_orb_damage::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
OnEffectLaunchTarget += SpellEffectFn(spell_mage_frozen_orb_damage::HandleLaunch, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
OnEffectHitTarget += SpellEffectFn(spell_mage_frozen_orb_damage::HandleHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
@@ -2042,7 +2019,7 @@ class spell_mage_improved_combustion : public AuraScript
void Register() override
{
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_mage_improved_combustion::CalcAmount, EFFECT_1, SPELL_AURA_MOD_RATING);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_mage_improved_combustion::UpdatePeriodic, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_mage_improved_combustion::UpdatePeriodic, EFFECT_4, SPELL_AURA_PERIODIC_DUMMY);
}
};
@@ -2220,46 +2197,6 @@ class spell_mage_glacial_spike : public SpellScript
}
};
// 1463 - Incanter's Flow
class spell_mage_incanters_flow : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_MAGE_INCANTERS_FLOW });
}
void HandlePeriodicTick(AuraEffect const* /*aurEff*/)
{
// Incanter's flow should not cycle out of combat
if (!GetTarget()->IsInCombat())
return;
if (Aura* aura = GetTarget()->GetAura(SPELL_MAGE_INCANTERS_FLOW))
{
uint32 stacks = aura->GetStackAmount();
// Force always to values between 1 and 5
if ((modifier == -1 && stacks == 1) || (modifier == 1 && stacks == 5))
{
modifier *= -1;
return;
}
aura->ModStackAmount(modifier);
}
else
GetTarget()->CastSpell(GetTarget(), SPELL_MAGE_INCANTERS_FLOW, true);
}
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_mage_incanters_flow::HandlePeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
}
private:
int8 modifier = 1;
};
// 44457 - Living Bomb
class spell_mage_living_bomb : public SpellScript
{
@@ -2620,6 +2557,9 @@ class spell_mage_ring_of_frost : public AuraScript
void Register() override
{
if (m_scriptSpellId == SPELL_MAGE_RING_OF_FROST_SUMMON)
return;
OnEffectPeriodic += AuraEffectPeriodicFn(spell_mage_ring_of_frost::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
OnEffectApply += AuraEffectApplyFn(spell_mage_ring_of_frost::Apply, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
}
@@ -3050,7 +2990,6 @@ void AddSC_mage_spell_scripts()
RegisterSpellScript(spell_mage_firestarter_dots);
RegisterSpellScript(spell_mage_fire_blast);
RegisterSpellScript(spell_mage_flame_accelerant);
RegisterSpellScript(spell_mage_flame_on);
RegisterSpellScript(spell_mage_flame_patch);
RegisterAreaTriggerAI(at_mage_flame_patch);
RegisterAreaTriggerAI(at_mage_frozen_orb);
@@ -3082,7 +3021,6 @@ void AddSC_mage_spell_scripts()
RegisterSpellScript(spell_mage_imp_mana_gems);
RegisterSpellScript(spell_mage_improved_combustion);
RegisterSpellScript(spell_mage_improved_scorch);
RegisterSpellScript(spell_mage_incanters_flow);
RegisterSpellScript(spell_mage_living_bomb);
RegisterSpellScript(spell_mage_living_bomb_explosion);
RegisterSpellScript(spell_mage_living_bomb_periodic);
-3
View File
@@ -68,7 +68,6 @@ enum MonkSpells
SPELL_MONK_SAVE_THEM_ALL_HEAL_BONUS = 390105,
SPELL_MONK_SONG_OF_CHI_JI_STUN = 198909,
SPELL_MONK_SOOTHING_MIST = 115175,
SPELL_MONK_STANCE_OF_THE_SPIRITED_CRANE = 154436,
SPELL_MONK_STAGGER_DAMAGE_AURA = 124255,
SPELL_MONK_STAGGER_HEAVY = 124273,
SPELL_MONK_STAGGER_LIGHT = 124275,
@@ -165,7 +164,6 @@ class spell_monk_crackling_jade_lightning : public AuraScript
{
return ValidateSpellInfo(
{
SPELL_MONK_STANCE_OF_THE_SPIRITED_CRANE,
SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC
});
}
@@ -173,7 +171,6 @@ class spell_monk_crackling_jade_lightning : public AuraScript
void OnTick(AuraEffect const* /*aurEff*/)
{
if (Unit* caster = GetCaster())
if (caster->HasAura(SPELL_MONK_STANCE_OF_THE_SPIRITED_CRANE))
caster->CastSpell(caster, SPELL_MONK_CRACKLING_JADE_LIGHTNING_CHI_PROC, TRIGGERED_FULL_MASK);
}
+4 -37
View File
@@ -907,7 +907,7 @@ class spell_pal_grand_crusader : public AuraScript
void Register() override
{
DoCheckProc += AuraCheckProcFn(spell_pal_grand_crusader::CheckProc);
OnEffectProc += AuraEffectProcFn(spell_pal_grand_crusader::HandleEffectProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
OnEffectProc += AuraEffectProcFn(spell_pal_grand_crusader::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
}
};
@@ -1137,7 +1137,10 @@ class spell_pal_holy_prism_selector : public SpellScript
else if (m_scriptSpellId == SPELL_PALADIN_HOLY_PRISM_TARGET_ALLY)
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::FilterTargets, EFFECT_1, TARGET_UNIT_DEST_AREA_ENEMY);
if (m_scriptSpellId == SPELL_PALADIN_HOLY_PRISM_TARGET_ENEMY)
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::ShareTargets, EFFECT_2, TARGET_UNIT_DEST_AREA_ENTRY);
else
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::ShareTargets, EFFECT_2, TARGET_UNIT_DEST_AREA_ENEMY);
OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism_selector::SaveTargetGuid, EFFECT_0, SPELL_EFFECT_ANY);
OnEffectHitTarget += SpellEffectFn(spell_pal_holy_prism_selector::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
@@ -1452,41 +1455,6 @@ class spell_pal_light_hammer_periodic : public AuraScript
}
};
// 204074 - Righteous Protector
class spell_pal_righteous_protector : public AuraScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_PALADIN_AVENGING_WRATH, SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS });
}
bool CheckEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo)
{
if (SpellInfo const* procSpell = eventInfo.GetSpellInfo())
_baseHolyPowerCost = procSpell->CalcPowerCost(POWER_HOLY_POWER, false, eventInfo.GetActor(), eventInfo.GetSchoolMask());
else
_baseHolyPowerCost.reset();
return _baseHolyPowerCost.has_value();
}
void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/)
{
int32 value = aurEff->GetAmountAsInt() * 100 * _baseHolyPowerCost->Amount;
GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_AVENGING_WRATH, Milliseconds(-value));
GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS, Milliseconds(-value));
}
void Register() override
{
DoCheckEffectProc += AuraCheckEffectProcFn(spell_pal_righteous_protector::CheckEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
OnEffectProc += AuraEffectProcFn(spell_pal_righteous_protector::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
}
Optional<SpellPowerCost> _baseHolyPowerCost;
};
// 267610 - Righteous Verdict
class spell_pal_righteous_verdict : public AuraScript
{
@@ -2022,7 +1990,6 @@ void AddSC_paladin_spell_scripts()
RegisterSpellScript(spell_pal_light_s_beacon);
RegisterSpellScript(spell_pal_light_hammer_init_summon);
RegisterSpellScript(spell_pal_light_hammer_periodic);
RegisterSpellScript(spell_pal_righteous_protector);
RegisterSpellScript(spell_pal_righteous_verdict);
RegisterSpellScript(spell_pal_selfless_healer);
RegisterSpellScript(spell_pal_shield_of_the_righteous);
+9 -12
View File
@@ -2260,9 +2260,9 @@ class spell_pri_halo_effect_selector : public SpellScript
if (Unit* caster = GetSpell() ? GetCaster() : nullptr)
{
if (caster->HasAura(SPELL_PRIEST_DIVINE_HALO))
selectedEffect = caster->HasAura(SPELL_PRIEST_PHANTOM_REACH) ? EFFECT_5 : EFFECT_2;
selectedEffect = caster->HasAura(SPELL_PRIEST_PHANTOM_REACH) ? EFFECT_3 : EFFECT_2;
else if (caster->HasAura(SPELL_PRIEST_POWER_SURGE))
selectedEffect = caster->HasAura(SPELL_PRIEST_PHANTOM_REACH) ? EFFECT_4 : EFFECT_1;
selectedEffect = caster->HasAura(SPELL_PRIEST_PHANTOM_REACH) ? EFFECT_3 : EFFECT_1;
else
selectedEffect = caster->HasAura(SPELL_PRIEST_PHANTOM_REACH) ? EFFECT_3 : EFFECT_0;
}
@@ -2271,19 +2271,13 @@ class spell_pri_halo_effect_selector : public SpellScript
OnEffectLaunch += SpellEffectFn(spell_pri_halo_effect_selector::PreventHitDefaultEffect, EFFECT_0, SPELL_EFFECT_CREATE_AREATRIGGER);
if (selectedEffect != EFFECT_1)
OnEffectLaunch += SpellEffectFn(spell_pri_halo_effect_selector::PreventHitDefaultEffect, EFFECT_1, SPELL_EFFECT_CREATE_AREATRIGGER);
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_pri_halo_effect_selector::PreventUnwantedAura, EFFECT_1, TARGET_UNIT_CASTER);
if (selectedEffect != EFFECT_2)
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_pri_halo_effect_selector::PreventUnwantedAura, EFFECT_2, TARGET_UNIT_CASTER);
OnEffectLaunch += SpellEffectFn(spell_pri_halo_effect_selector::PreventHitDefaultEffect, EFFECT_2, SPELL_EFFECT_CREATE_AREATRIGGER);
if (selectedEffect != EFFECT_3)
OnEffectLaunch += SpellEffectFn(spell_pri_halo_effect_selector::PreventHitDefaultEffect, EFFECT_3, SPELL_EFFECT_CREATE_AREATRIGGER);
if (selectedEffect != EFFECT_4)
OnEffectLaunch += SpellEffectFn(spell_pri_halo_effect_selector::PreventHitDefaultEffect, EFFECT_4, SPELL_EFFECT_CREATE_AREATRIGGER);
if (selectedEffect != EFFECT_5)
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_pri_halo_effect_selector::PreventUnwantedAura, EFFECT_5, TARGET_UNIT_CASTER);
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_pri_halo_effect_selector::PreventUnwantedAura, EFFECT_3, TARGET_UNIT_CASTER);
}
};
@@ -2328,7 +2322,7 @@ class spell_pri_halo_shadow : public SpellScript
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_pri_halo_shadow::HandleHitTarget, EFFECT_6, SPELL_EFFECT_ENERGIZE);
OnEffectHitTarget += SpellEffectFn(spell_pri_halo_shadow::HandleHitTarget, EFFECT_4, SPELL_EFFECT_ENERGIZE);
}
};
@@ -3093,6 +3087,9 @@ class spell_pri_phantasm : public SpellScript
void Register() override
{
if (m_scriptSpellId != 114239) // Phantasm triggered spell
return;
OnEffectHit += SpellEffectFn(spell_pri_phantasm::HandleEffectHit, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
+6 -6
View File
@@ -374,9 +374,9 @@ class spell_sha_ascendance_restoration : public AuraScript
return procInfo.GetHealInfo() && procInfo.GetHealInfo()->GetOriginalHeal() && procInfo.GetSpellInfo()->Id != SPELL_SHAMAN_RESTORATIVE_MISTS_INITIAL;
}
void OnProcHeal(AuraEffect const* aurEff, ProcEventInfo const& procInfo)
void OnProcHeal(AuraEffect const* /*aurEff*/, ProcEventInfo const& procInfo)
{
_healToDistribute += CalculatePct(int32(procInfo.GetHealInfo()->GetOriginalHeal()), aurEff->GetAmount());
_healToDistribute += procInfo.GetHealInfo()->GetOriginalHeal();
}
void HandleEffectPeriodic(AuraEffect const* aurEff)
@@ -395,7 +395,7 @@ class spell_sha_ascendance_restoration : public AuraScript
void Register() override
{
DoCheckProc += AuraCheckProcFn(spell_sha_ascendance_restoration::CheckProc);
OnEffectProc += AuraEffectProcFn(spell_sha_ascendance_restoration::OnProcHeal, EFFECT_8, SPELL_AURA_DUMMY);
OnEffectProc += AuraEffectProcFn(spell_sha_ascendance_restoration::OnProcHeal, EFFECT_14, SPELL_AURA_DUMMY);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_ascendance_restoration::HandleEffectPeriodic, EFFECT_6, SPELL_AURA_PERIODIC_DUMMY);
}
@@ -650,7 +650,7 @@ class spell_sha_deluge_healing_rain : public AuraScript
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_deluge_healing_rain::HandleEffectPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_deluge_healing_rain::HandleEffectPeriodic, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY);
}
};
@@ -1384,8 +1384,8 @@ private:
void Register() override
{
OnEffectRemove += AuraEffectRemoveFn(spell_sha_healing_rain_aura::HandleEffecRemoved, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_healing_rain_aura::HandleEffectPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
OnEffectRemove += AuraEffectRemoveFn(spell_sha_healing_rain_aura::HandleEffecRemoved, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_sha_healing_rain_aura::HandleEffectPeriodic, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY);
}
ObjectGuid _visualDummy;
@@ -476,32 +476,6 @@ class spell_warl_chaos_bolt : public SpellScript
}
};
// 77220 - Mastery: Chaotic Energies
class spell_warl_chaotic_energies : public AuraScript
{
void HandleAbsorb(AuraEffect* /*aurEff*/, DamageInfo& dmgInfo, uint32& absorbAmount)
{
AuraEffect const* effect1 = GetEffect(EFFECT_1);
if (!effect1 || !GetTargetApplication()->HasEffect(EFFECT_1))
{
PreventDefaultAction();
return;
}
// You take ${$s2/3}% reduced damage
float damageReductionPct = effect1->GetAmount() / 3;
// plus a random amount of up to ${$s2/3}% additional reduced damage
damageReductionPct += frand(0.0f, damageReductionPct);
absorbAmount = CalculatePct(dmgInfo.GetDamage(), damageReductionPct);
}
void Register() override
{
OnEffectAbsorb += AuraEffectAbsorbFn(spell_warl_chaotic_energies::HandleAbsorb, EFFECT_2);
}
};
// 17962 - Conflagrate
class spell_warl_conflagrate : public SpellScript
{
@@ -2040,7 +2014,6 @@ void AddSC_warlock_spell_scripts()
RegisterSpellScript(spell_warl_channel_demonfire_periodic);
RegisterSpellScript(spell_warl_channel_demonfire_selector);
RegisterSpellScript(spell_warl_chaos_bolt);
RegisterSpellScript(spell_warl_chaotic_energies);
RegisterSpellScript(spell_warl_conflagrate);
RegisterSpellScript(spell_warl_create_healthstone);
RegisterSpellScript(spell_warl_dark_pact);
+3 -55
View File
@@ -411,7 +411,7 @@ class spell_warr_avatar : public SpellScript
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_warr_avatar::HandleRemoveImpairingAuras, EFFECT_5, SPELL_EFFECT_SCRIPT_EFFECT);
OnEffectHitTarget += SpellEffectFn(spell_warr_avatar::HandleRemoveImpairingAuras, EFFECT_5, SPELL_EFFECT_APPLY_AURA);
}
};
@@ -1901,9 +1901,6 @@ class spell_warr_rampaging_ruin : public SpellScript
OnEffectLaunchTarget += SpellEffectFn(spell_warr_rampaging_ruin::HandleSingleTarget, EFFECT_4, SPELL_EFFECT_TRIGGER_SPELL);
OnEffectLaunch += SpellEffectFn(spell_warr_rampaging_ruin::HandleCone, EFFECT_5, SPELL_EFFECT_TRIGGER_SPELL);
OnEffectLaunch += SpellEffectFn(spell_warr_rampaging_ruin::HandleCone, EFFECT_6, SPELL_EFFECT_TRIGGER_SPELL);
OnEffectLaunch += SpellEffectFn(spell_warr_rampaging_ruin::HandleCone, EFFECT_7, SPELL_EFFECT_TRIGGER_SPELL);
OnEffectLaunch += SpellEffectFn(spell_warr_rampaging_ruin::HandleCone, EFFECT_8, SPELL_EFFECT_TRIGGER_SPELL);
}
};
@@ -3073,28 +3070,6 @@ class spell_warr_fervor_of_battle : public SpellScript
}
};
// 228920 - Ravager
class spell_warr_ravager : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_WARRIOR_RAVAGER_SUMMON });
}
void SummonRavager(SpellEffIndex /*effIndex*/) const
{
GetCaster()->CastSpell(*GetHitDest(), SPELL_WARRIOR_RAVAGER_SUMMON, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
.TriggeringSpell = GetSpell()
});
}
void Register() override
{
OnEffectHit += SpellEffectFn(spell_warr_ravager::SummonRavager, EFFECT_1, SPELL_EFFECT_DUMMY);
}
};
// 228920 - Ravager - Periodic AuraScript
class spell_warr_ravager_aurascript : public AuraScript
{
@@ -3130,7 +3105,7 @@ class spell_warr_ravager_aurascript : public AuraScript
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_warr_ravager_aurascript::HandlePeriodic, EFFECT_2, SPELL_AURA_PERIODIC_DUMMY);
OnEffectPeriodic += AuraEffectPeriodicFn(spell_warr_ravager_aurascript::HandlePeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY);
}
};
@@ -3268,32 +3243,6 @@ class spell_warr_shattering_throw_damage : public SpellScript
}
};
/// Shattering Throw - 64382
class spell_warr_shattering_throw : public SpellScript
{
enum eSpells
{
SPELL_WARR_SHATTERING_THROW_DISPEL = 64380
};
void HandleDamage(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
if (!caster || !target)
return;
if (Player* player = caster->ToPlayer())
if (player->GetPrimarySpecialization() == ChrSpecialization::WarriorFury)
SetHitDamage(int32(GetHitDamage() * 1.2f));
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_warr_shattering_throw::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
void AddSC_warrior_spell_scripts()
{
RegisterSpellScript(spell_warr_anger_management_proc);
@@ -3378,10 +3327,9 @@ void AddSC_warrior_spell_scripts()
RegisterSpellScript(spell_warr_indomitable);
RegisterAreaTriggerAI(at_warr_champions_spear);
RegisterSpellScript(spell_warr_fervor_of_battle);
RegisterSpellAndAuraScriptPair(spell_warr_ravager, spell_warr_ravager_aurascript);
RegisterSpellScript(spell_warr_ravager_aurascript);
RegisterSpellScript(spell_warr_ravager_damage_rage_gain);
RegisterSpellScript(spell_warr_bloodthirst_enrage);
RegisterSpellScript(spell_warr_shattering_throw);
RegisterSpellScript(spell_warr_shattering_throw_damage);
RegisterSpellScript(spell_warr_warriors_wrath);
}