From 8d5ebded8ca3f4a78ed1733cfd72545688e387db Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 4 Feb 2011 11:27:02 +0100 Subject: Core/Spells: Moved dungeon encounter crediting to scripts --- src/server/scripts/Spells/spell_generic.cpp | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'src/server/scripts/Spells') diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index a2ad0347540..56621dbc664 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -705,6 +705,47 @@ class spell_gen_parachute_ic : public SpellScriptLoader } }; +class spell_gen_dungeon_credit : public SpellScriptLoader +{ + public: + spell_gen_dungeon_credit() : SpellScriptLoader("spell_gen_dungeon_credit") { } + + class spell_gen_dungeon_credit_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_dungeon_credit_SpellScript); + + bool Load() + { + _handled = false; + return true; + } + + void CreditEncounter() + { + // This hook is executed for every target, make sure we only credit instance once + if (_handled) + return; + + _handled = true; + if (GetCaster()->GetTypeId() == TYPEID_UNIT) + if (InstanceScript* instance = GetCaster()->GetInstanceScript()) + instance->UpdateEncounterState(ENCOUNTER_CREDIT_CAST_SPELL, GetSpellInfo()->Id, GetCaster()); + } + + void Register() + { + AfterHit += SpellHitFn(spell_gen_dungeon_credit_SpellScript::CreditEncounter); + } + + bool _handled; + }; + + SpellScript* GetSpellScript() const + { + return new spell_gen_dungeon_credit_SpellScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -723,4 +764,5 @@ void AddSC_generic_spell_scripts() new spell_gen_divine_storm_cd_reset(); new spell_gen_parachute_ic(); new spell_gen_gunship_portal(); + new spell_gen_dungeon_credit(); } -- cgit v1.2.3