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();  } | 
