Skip to content

Commit cfa9fb7

Browse files
authored
Scripts/Spells: Implement Revive Self & Knock Away spells (TrinityCore#31069)
1 parent 761786c commit cfa9fb7

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--
2+
DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
3+
'spell_gen_knock_away_threat_reduction_100',
4+
'spell_gen_knock_away_threat_reduction_50',
5+
'spell_gen_knock_away_threat_reduction_25');
6+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
7+
(10101, 'spell_gen_knock_away_threat_reduction_100'),
8+
(18670, 'spell_gen_knock_away_threat_reduction_50'),
9+
(18945, 'spell_gen_knock_away_threat_reduction_50'),
10+
(18813, 'spell_gen_knock_away_threat_reduction_25'),
11+
(25778, 'spell_gen_knock_away_threat_reduction_25');
12+
13+
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_revive_self';
14+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
15+
(32343, 'spell_gen_revive_self');

src/server/scripts/Spells/spell_generic.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2171,6 +2171,29 @@ class spell_gen_injured : public SpellScript
21712171
}
21722172
};
21732173

2174+
// To be added: 19633, 20686, 23382, 31389, 32959
2175+
class spell_gen_knock_away_threat_reduction : public SpellScript
2176+
{
2177+
PrepareSpellScript(spell_gen_knock_away_threat_reduction);
2178+
2179+
public:
2180+
explicit spell_gen_knock_away_threat_reduction(int32 threatPercent) : _threatPercent(threatPercent) { }
2181+
2182+
private:
2183+
int32 _threatPercent;
2184+
2185+
void HandleScript(SpellEffIndex /*effIndex*/)
2186+
{
2187+
if (GetCaster()->CanHaveThreatList())
2188+
GetCaster()->GetThreatManager().ModifyThreatByPercent(GetHitUnit(), -_threatPercent);
2189+
}
2190+
2191+
void Register() override
2192+
{
2193+
OnEffectHitTarget += SpellEffectFn(spell_gen_knock_away_threat_reduction::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
2194+
}
2195+
};
2196+
21742197
class spell_gen_lifeblood : public AuraScript
21752198
{
21762199
PrepareAuraScript(spell_gen_lifeblood);
@@ -3322,6 +3345,23 @@ class spell_gen_replenishment_aura : public AuraScript
33223345
}
33233346
};
33243347

3348+
// 32343 - Revive Self
3349+
class spell_gen_revive_self : public SpellScript
3350+
{
3351+
PrepareSpellScript(spell_gen_revive_self);
3352+
3353+
void HandleDummy(SpellEffIndex /*effIndex*/)
3354+
{
3355+
GetCaster()->SetFullHealth();
3356+
GetCaster()->SetFullPower(POWER_MANA);
3357+
}
3358+
3359+
void Register() override
3360+
{
3361+
OnEffectHit += SpellEffectFn(spell_gen_revive_self::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
3362+
}
3363+
};
3364+
33253365
enum SeaforiumSpells
33263366
{
33273367
SPELL_PLANT_CHARGES_CREDIT_ACHIEVEMENT = 60937
@@ -4718,6 +4758,9 @@ void AddSC_generic_spell_scripts()
47184758
RegisterSpellScript(spell_gen_hate_to_50);
47194759
RegisterSpellScript(spell_gen_hate_to_75);
47204760
RegisterSpellScript(spell_gen_injured);
4761+
RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_100", 100); // 10101
4762+
RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_50", 50); // 18670, 18945
4763+
RegisterSpellScriptWithArgs(spell_gen_knock_away_threat_reduction, "spell_gen_knock_away_threat_reduction_25", 25); // 18813, 25778
47214764
RegisterSpellScript(spell_gen_lifeblood);
47224765
RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_hexlord_lifebloom", SPELL_HEXLORD_MALACRASS_LIFEBLOOM_FINAL_HEAL);
47234766
RegisterSpellScriptWithArgs(spell_gen_lifebloom, "spell_tur_ragepaw_lifebloom", SPELL_TUR_RAGEPAW_LIFEBLOOM_FINAL_HEAL);
@@ -4763,6 +4806,7 @@ void AddSC_generic_spell_scripts()
47634806
RegisterSpellScript(spell_gen_remove_on_health_pct);
47644807
RegisterSpellScript(spell_gen_remove_on_full_health);
47654808
RegisterSpellScript(spell_gen_remove_on_full_health_pct);
4809+
RegisterSpellScript(spell_gen_revive_self);
47664810
RegisterSpellScript(spell_gen_seaforium_blast);
47674811
RegisterSpellScript(spell_gen_spectator_cheer_trigger);
47684812
RegisterSpellScript(spell_gen_spirit_healer_res);

0 commit comments

Comments
 (0)