aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/world_database.sql6
-rw-r--r--sql/updates/9835_world_spell_script_names.sql8
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp30
3 files changed, 44 insertions, 0 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql
index 385d1a1151a..e167b927a65 100644
--- a/sql/base/world_database.sql
+++ b/sql/base/world_database.sql
@@ -26717,6 +26717,12 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
-- generic
( 58601, 'spell_gen_remove_flight_auras'),
( 6962, 'spell_gen_pet_summoned'),
+( 29266, 'spell_creature_permanent_feign_death'),
+( 57685, 'spell_creature_permanent_feign_death'),
+( 58951, 'spell_creature_permanent_feign_death'),
+( 70592, 'spell_creature_permanent_feign_death'),
+( 70628, 'spell_creature_permanent_feign_death'),
+( 74490, 'spell_creature_permanent_feign_death'),
-- instances
( 69057, 'spell_marrowgar_bone_spike_graveyard'),
( 69140, 'spell_marrowgar_coldflame'),
diff --git a/sql/updates/9835_world_spell_script_names.sql b/sql/updates/9835_world_spell_script_names.sql
new file mode 100644
index 00000000000..cce026188f1
--- /dev/null
+++ b/sql/updates/9835_world_spell_script_names.sql
@@ -0,0 +1,8 @@
+DELETE FROM `spell_script_names` WHERE `spell_id` IN(29266,57685,58951,70592,70628,74490) AND `ScriptName`='spell_creature_permanent_feign_death';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(29266, 'spell_creature_permanent_feign_death'),
+(57685, 'spell_creature_permanent_feign_death'),
+(58951, 'spell_creature_permanent_feign_death'),
+(70592, 'spell_creature_permanent_feign_death'),
+(70628, 'spell_creature_permanent_feign_death'),
+(74490, 'spell_creature_permanent_feign_death');
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index c7ac6ccb88d..a45ebda6f2f 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -115,8 +115,38 @@ public:
}
};
+class spell_creature_permanent_feign_death : public SpellScriptLoader
+{
+ public:
+ spell_creature_permanent_feign_death() : SpellScriptLoader("spell_creature_permanent_feign_death") { }
+
+ class spell_creature_permanent_feign_deathAuraScript : public AuraScript
+ {
+ void HandleEffectApply(AuraEffect const * /*aurEff*/, AuraApplication const * aurApp, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* pTarget = aurApp->GetTarget();
+ if (!pTarget)
+ return;
+
+ pTarget->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
+ pTarget->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
+ }
+
+ void Register()
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_creature_permanent_feign_deathAuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript *GetAuraScript() const
+ {
+ return new spell_creature_permanent_feign_deathAuraScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_pet_summoned();
new spell_gen_remove_flight_auras();
+ new spell_creature_permanent_feign_death();
}