aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/world_database.sql1
-rw-r--r--sql/updates/9149_world_spell_script_names.sql3
-rw-r--r--src/server/scripts/Spells/spell_hunter.cpp50
3 files changed, 53 insertions, 1 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql
index 221f3748440..d5d2efda351 100644
--- a/sql/base/world_database.sql
+++ b/sql/base/world_database.sql
@@ -14693,6 +14693,7 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 23989, 'spell_hun_readiness'),
( 53271, 'spell_hun_masters_call'),
( 53478, 'spell_hun_last_stand_pet'),
+( 55709, 'spell_hun_pet_heart_of_the_phoenix'),
-- rogue
( 5938, 'spell_rog_shiv'),
( 14185, 'spell_rog_preparation'),
diff --git a/sql/updates/9149_world_spell_script_names.sql b/sql/updates/9149_world_spell_script_names.sql
new file mode 100644
index 00000000000..5ca5b8c2f5a
--- /dev/null
+++ b/sql/updates/9149_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `spell_id`=55709 AND `ScriptName`='spell_hun_pet_heart_of_the_phoenix';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(55709, 'spell_hun_pet_heart_of_the_phoenix');
diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp
index 17c5858f00c..f5aa0d1f1d6 100644
--- a/src/server/scripts/Spells/spell_hunter.cpp
+++ b/src/server/scripts/Spells/spell_hunter.cpp
@@ -28,6 +28,9 @@ enum HunterSpells
HUNTER_SPELL_READINESS = 23989,
HUNTER_SPELL_BESTIAL_WRATH = 19574,
HUNTER_PET_SPELL_LAST_STAND_TRIGGERED = 53479,
+ HUNTER_PET_HEART_OF_THE_PHOENIX = 55709,
+ HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED = 54114,
+ HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF = 55711,
};
class spell_hun_last_stand_pet_SpellScript : public SpellScript
@@ -121,6 +124,46 @@ SpellScript * GetSpellScript_spell_hun_readiness()
return new spell_hun_readiness_SpellScript();
}
+class spell_hun_pet_heart_of_the_phoenix : public SpellScript
+{
+ bool Validate(SpellEntry const * spellEntry)
+ {
+ if (!sSpellStore.LookupEntry(HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED))
+ return false;
+ if (!sSpellStore.LookupEntry(HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF))
+ return false;
+ return true;
+ }
+
+ void HandleScript(SpellEffIndex effIndex)
+ {
+ if (caster->HasAura(HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF))
+ return;
+ Unit *caster = GetCaster();
+ int32 bp0healPercent = 100;
+ caster->CastCustomSpell(HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED, SPELLVALUE_BASE_POINT0, 100, caster, true);
+ caster->CastSpell(caster, HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF, true);
+ }
+
+ void Register()
+ {
+ // add dummy effect spell handler to pet's Last Stand
+ EffectHandlers += EffectHandlerFn(spell_hun_pet_heart_of_the_phoenix::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+
+ bool Load()
+ {
+ if (!GetCaster()->isPet())
+ return false;
+ return true;
+ }
+};
+
+SpellScript * GetSpellScript_spell_hun_pet_heart_of_the_phoenix()
+{
+ return new spell_hun_pet_heart_of_the_phoenix();
+}
+
void AddSC_hunter_spell_scripts()
{
Script *newscript;
@@ -139,4 +182,9 @@ void AddSC_hunter_spell_scripts()
newscript->Name = "spell_hun_readiness";
newscript->GetSpellScript = &GetSpellScript_spell_hun_readiness;
newscript->RegisterSelf();
-} \ No newline at end of file
+
+ newscript = new Script;
+ newscript->Name = "spell_hun_pet_heart_of_the_phoenix";
+ newscript->GetSpellScript = &GetSpellScript_spell_hun_pet_heart_of_the_phoenix;
+ newscript->RegisterSelf();
+}