aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp42
1 files changed, 42 insertions, 0 deletions
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();
}