mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Spells: Implement spell no NPC damage below override (#30932)
This commit is contained in:
9
sql/updates/world/master/2025_05_11_02_world.sql
Normal file
9
sql/updates/world/master/2025_05_11_02_world.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- Scriptname
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_no_npc_damage_below_override_70';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(155893, 'spell_gen_no_npc_damage_below_override_70');
|
||||
|
||||
-- Template Addon
|
||||
DELETE FROM `creature_template_addon` WHERE `entry` IN (128703 /*128703 (Vengeful Bones) - No NPC Damage Below Override Points%*/);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(128703, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '155893'); -- 128703 (Vengeful Bones) - No NPC Damage Below Override Points%
|
||||
@@ -5575,6 +5575,40 @@ class spell_gen_force_phase_update : public AuraScript
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_no_npc_damage_below_override : public AuraScript
|
||||
{
|
||||
public:
|
||||
spell_gen_no_npc_damage_below_override(float healthPct) : _healthPct(healthPct) {}
|
||||
|
||||
static void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
amount = -1;
|
||||
}
|
||||
|
||||
void HandleAbsorb(AuraEffect const* /*aurEff*/, DamageInfo const& dmgInfo, uint32& absorbAmount)
|
||||
{
|
||||
if (!dmgInfo.GetAttacker() || !dmgInfo.GetAttacker()->IsCreature())
|
||||
{
|
||||
PreventDefaultAction();
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetTarget()->GetHealthPct() <= _healthPct)
|
||||
absorbAmount = dmgInfo.GetDamage();
|
||||
else
|
||||
PreventDefaultAction();
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_no_npc_damage_below_override::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB);
|
||||
OnEffectAbsorb += AuraEffectAbsorbFn(spell_gen_no_npc_damage_below_override::HandleAbsorb, EFFECT_0);
|
||||
}
|
||||
|
||||
private:
|
||||
float _healthPct;
|
||||
};
|
||||
|
||||
void AddSC_generic_spell_scripts()
|
||||
{
|
||||
RegisterSpellScript(spell_gen_absorb0_hitlimit1);
|
||||
@@ -5761,4 +5795,5 @@ void AddSC_generic_spell_scripts()
|
||||
RegisterSpellScript(spell_gen_spatial_rift);
|
||||
RegisterAreaTriggerAI(at_gen_spatial_rift);
|
||||
RegisterSpellScript(spell_gen_force_phase_update);
|
||||
RegisterSpellScriptWithArgs(spell_gen_no_npc_damage_below_override, "spell_gen_no_npc_damage_below_override_70", 70.0f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user