diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp index 4b595d3f1..7eff99f5f 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp @@ -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); } diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp index 9f2ea8a4b..0579c4b86 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp @@ -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 diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 67117eb67..bbe0b0abb 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -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); } 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 0c3043aa4..4ffc9c18a 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -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); } }; diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 89f2f92e3..848d65744 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -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); } }; diff --git a/src/server/scripts/Pet/pet_generic.cpp b/src/server/scripts/Pet/pet_generic.cpp index 4d8712fbd..f44fc4d6b 100644 --- a/src/server/scripts/Pet/pet_generic.cpp +++ b/src/server/scripts/Pet/pet_generic.cpp @@ -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); } }; diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 41034a4a9..11d75f6ba 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -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 _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); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 34a936b3d..001ce6c06 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -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,17 +5590,24 @@ 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 { - OnEffectHitTarget += SpellEffectFn(spell_gen_cast_caster_to_target::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + 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); } }; diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 58a6a0a5e..ef82f3e95 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -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 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,12 +3883,14 @@ 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*/) { - GetTarget()->RemoveAurasDueToSpell(GetSpellInfo()->GetEffect(EFFECT_1).TriggerSpell); + if (GetSpellInfo()->GetEffects().size() > EFFECT_1) + GetTarget()->RemoveAurasDueToSpell(GetSpellInfo()->GetEffect(EFFECT_1).TriggerSpell); } void Register() override @@ -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); diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 44a7d807c..e70d08891 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -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(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); diff --git a/src/server/scripts/Spells/spell_monk.cpp b/src/server/scripts/Spells/spell_monk.cpp index 631672456..ace7eee35 100644 --- a/src/server/scripts/Spells/spell_monk.cpp +++ b/src/server/scripts/Spells/spell_monk.cpp @@ -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); } diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 2c97e7191..32b79278e 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -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); - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_pal_holy_prism_selector::ShareTargets, EFFECT_2, TARGET_UNIT_DEST_AREA_ENTRY); + 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 _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); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 53c0f228f..140473bf6 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -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); } }; diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index d5227e8e3..74c409266 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -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; diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 8b72fc204..57bce1f8a 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -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); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 036bd5a9e..6be767a5d 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -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); }