mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 01:15:35 +01:00
Core/Spells: fix damage from touch the nightmare for the caster and fix damage and healing for dream funnel. closes #6669 closes #6676
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (50341,50344);
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(50341, 'spell_gen_touch_the_nightmare'),
|
||||
(50344, 'spell_gen_dream_funnel');
|
||||
@@ -2052,9 +2052,9 @@ class spell_gen_defend : public SpellScriptLoader
|
||||
public:
|
||||
spell_gen_defend() : SpellScriptLoader("spell_gen_defend") { }
|
||||
|
||||
class spell_gen_defendAuraScript : public AuraScript
|
||||
class spell_gen_defend_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_gen_defendAuraScript);
|
||||
PrepareAuraScript(spell_gen_defend_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellEntry*/)
|
||||
{
|
||||
@@ -2103,26 +2103,26 @@ class spell_gen_defend : public SpellScriptLoader
|
||||
// Defend spells casted by NPCs (add visuals)
|
||||
if (spell->Effects[EFFECT_0].ApplyAuraName == SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN)
|
||||
{
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_gen_defendAuraScript::RefreshVisualShields, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_defendAuraScript::RemoveVisualShields, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_gen_defend_AuraScript::RefreshVisualShields, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_defend_AuraScript::RemoveVisualShields, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
|
||||
}
|
||||
|
||||
// Remove Defend spell from player when he dismounts
|
||||
if (spell->Effects[EFFECT_2].ApplyAuraName == SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN)
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_defendAuraScript::RemoveDummyFromDriver, EFFECT_2, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_defend_AuraScript::RemoveDummyFromDriver, EFFECT_2, SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN, AURA_EFFECT_HANDLE_REAL);
|
||||
|
||||
// Defend spells casted by players (add/remove visuals)
|
||||
if (spell->Effects[EFFECT_1].ApplyAuraName == SPELL_AURA_DUMMY)
|
||||
{
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_gen_defendAuraScript::RefreshVisualShields, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_defendAuraScript::RemoveVisualShields, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_gen_defend_AuraScript::RefreshVisualShields, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_defend_AuraScript::RemoveVisualShields, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_gen_defendAuraScript();
|
||||
return new spell_gen_defend_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2326,9 +2326,9 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader
|
||||
public:
|
||||
spell_gen_on_tournament_mount() : SpellScriptLoader("spell_gen_on_tournament_mount") { }
|
||||
|
||||
class spell_gen_on_tournament_mountAuraScript : public AuraScript
|
||||
class spell_gen_on_tournament_mount_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_gen_on_tournament_mountAuraScript);
|
||||
PrepareAuraScript(spell_gen_on_tournament_mount_AuraScript);
|
||||
|
||||
uint32 _pennantSpellId;
|
||||
|
||||
@@ -2468,14 +2468,14 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader
|
||||
|
||||
void Register()
|
||||
{
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_gen_on_tournament_mountAuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_on_tournament_mountAuraScript::HandleRemoveEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
AfterEffectApply += AuraEffectApplyFn(spell_gen_on_tournament_mount_AuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_gen_on_tournament_mount_AuraScript::HandleRemoveEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_gen_on_tournament_mountAuraScript();
|
||||
return new spell_gen_on_tournament_mount_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2484,9 +2484,9 @@ class spell_gen_tournament_pennant : public SpellScriptLoader
|
||||
public:
|
||||
spell_gen_tournament_pennant() : SpellScriptLoader("spell_gen_tournament_pennant") { }
|
||||
|
||||
class spell_gen_tournament_pennantAuraScript : public AuraScript
|
||||
class spell_gen_tournament_pennant_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_gen_tournament_pennantAuraScript);
|
||||
PrepareAuraScript(spell_gen_tournament_pennant_AuraScript);
|
||||
|
||||
bool Load()
|
||||
{
|
||||
@@ -2502,13 +2502,13 @@ class spell_gen_tournament_pennant : public SpellScriptLoader
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectApply += AuraEffectApplyFn(spell_gen_tournament_pennantAuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
OnEffectApply += AuraEffectApplyFn(spell_gen_tournament_pennant_AuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_gen_tournament_pennantAuraScript();
|
||||
return new spell_gen_tournament_pennant_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2688,6 +2688,63 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_touch_the_nightmare : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_touch_the_nightmare() : SpellScriptLoader("spell_gen_touch_the_nightmare") { }
|
||||
|
||||
class spell_gen_touch_the_nightmare_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_touch_the_nightmare_SpellScript);
|
||||
|
||||
void HandleDamageCalc(SpellEffIndex effIndex)
|
||||
{
|
||||
uint32 bp = GetCaster()->GetMaxHealth() * 0.3f;
|
||||
SetHitDamage(bp);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_gen_touch_the_nightmare_SpellScript::HandleDamageCalc, EFFECT_2, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_gen_touch_the_nightmare_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_dream_funnel: public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_dream_funnel() : SpellScriptLoader("spell_gen_dream_funnel") { }
|
||||
|
||||
class spell_gen_dream_funnel_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_gen_dream_funnel_AuraScript);
|
||||
|
||||
void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated)
|
||||
{
|
||||
if (GetCaster())
|
||||
amount = GetCaster()->GetMaxHealth() * 0.05f;
|
||||
|
||||
canBeRecalculated = false;
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_dream_funnel_AuraScript::HandleEffectCalcAmount, EFFECT_0, SPELL_AURA_PERIODIC_HEAL);
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_dream_funnel_AuraScript::HandleEffectCalcAmount, EFFECT_2, SPELL_AURA_PERIODIC_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_gen_dream_funnel_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_generic_spell_scripts()
|
||||
{
|
||||
new spell_gen_absorb0_hitlimit1();
|
||||
@@ -2742,4 +2799,6 @@ void AddSC_generic_spell_scripts()
|
||||
new spell_gen_count_pct_from_max_hp("spell_gen_default_count_pct_from_max_hp");
|
||||
new spell_gen_count_pct_from_max_hp("spell_gen_50pct_count_pct_from_max_hp", 50);
|
||||
new spell_gen_despawn_self();
|
||||
new spell_gen_touch_the_nightmare();
|
||||
new spell_gen_dream_funnel();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user