diff options
-rw-r--r-- | sql/base/world_database.sql | 6 | ||||
-rw-r--r-- | sql/updates/9835_world_spell_script_names.sql | 8 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 30 |
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(); } |