diff options
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 64df429601d..e5346f910bb 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1727,6 +1727,7 @@ There are only 3 possible flags Feign Death auras can apply: UNIT_DYNFLAG_DEAD,  and UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT. Some auras can apply only 2 flags  spell_gen_feign_death_all_flags applies all 3 flags +spell_gen_feign_death_all_flags_uninteractible applies all 3 flags and additionally sets UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_UNINTERACTIBLE  spell_gen_feign_death_no_dyn_flag applies no UNIT_DYNFLAG_DEAD (does not make the creature appear dead)  spell_gen_feign_death_no_prevent_emotes applies no UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT @@ -1768,6 +1769,39 @@ class spell_gen_feign_death_all_flags : public AuraScript      }  }; +class spell_gen_feign_death_all_flags_uninteractible : public AuraScript +{ +    PrepareAuraScript(spell_gen_feign_death_all_flags_uninteractible); + +    void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) +    { +        Unit* target = GetTarget(); +        target->SetUnitFlag3(UNIT_FLAG3_FAKE_DEAD); +        target->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); +        target->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_UNINTERACTIBLE); + +        if (Creature* creature = target->ToCreature()) +            creature->SetReactState(REACT_PASSIVE); +    } + +    void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) +    { +        Unit* target = GetTarget(); +        target->RemoveUnitFlag3(UNIT_FLAG3_FAKE_DEAD); +        target->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH); +        target->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_UNINTERACTIBLE); + +        if (Creature* creature = target->ToCreature()) +            creature->InitializeReactState(); +    } + +    void Register() override +    { +        OnEffectApply += AuraEffectApplyFn(spell_gen_feign_death_all_flags_uninteractible::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); +        OnEffectRemove += AuraEffectRemoveFn(spell_gen_feign_death_all_flags_uninteractible::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); +    } +}; +  // 35357 - Spawn Feign Death  // 51329 - Feign Death  class spell_gen_feign_death_no_dyn_flag : public AuraScript @@ -5426,6 +5460,7 @@ void AddSC_generic_spell_scripts()      RegisterSpellScript(spell_steal_essence_visual);      RegisterSpellScript(spell_gen_feast);      RegisterSpellScript(spell_gen_feign_death_all_flags); +    RegisterSpellScript(spell_gen_feign_death_all_flags_uninteractible);      RegisterSpellScript(spell_gen_feign_death_no_dyn_flag);      RegisterSpellScript(spell_gen_feign_death_no_prevent_emotes);      RegisterSpellScript(spell_gen_furious_rage);  | 
