aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h5
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp50
2 files changed, 55 insertions, 0 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
index e0b70b3fa36..38c8724a6f0 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.h
@@ -78,6 +78,11 @@ enum AKGameObjectIds
GO_SPHERE_2 = 193094
};
+enum AKSpellIds
+{
+ SPELL_SHADOW_SICKLE_TRIGGERED = 56701,
+};
+
template <class AI, class T>
inline AI* GetAhnKahetAI(T* obj)
{
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
index 762368bf61b..2bbc8acc498 100644
--- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/instance_ahnkahet.cpp
@@ -24,6 +24,7 @@
#include "ScriptMgr.h"
#include "SpellInfo.h"
#include "SpellScript.h"
+#include "SpellMgr.h"
DoorData const doorData[] =
{
@@ -169,6 +170,55 @@ class spell_combined_toxins : public AuraScript
}
};
+// 56698, 59102 - Shadow Blast
+class spell_shadow_blast : public SpellScript
+{
+ PrepareSpellScript(spell_shadow_blast);
+
+ void HandleDamageCalc(SpellEffIndex effIndex)
+ {
+ Unit* target = GetHitUnit();
+ if (!target)
+ return;
+
+ SetHitDamage(target->GetMaxHealth() * GetSpellInfo()->Effects[effIndex].BasePoints / 100);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_shadow_blast::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+};
+
+// 56702, 59103 - Shadow Sickle
+class spell_shadow_sickle : public AuraScript
+{
+ PrepareAuraScript(spell_shadow_sickle);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SHADOW_SICKLE_TRIGGERED });
+ }
+
+ void HandlePeriodic(AuraEffect const* aurEff)
+ {
+ Unit* owner = GetUnitOwner();
+
+ uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(SPELL_SHADOW_SICKLE_TRIGGERED, owner);
+ if (!spellId)
+ return;
+
+ if (owner->IsAIEnabled())
+ if (Unit* target = owner->GetAI()->SelectTarget(SelectTargetMethod::Random, 0, 40.f))
+ owner->CastSpell(target, spellId, CastSpellExtraArgs(aurEff).SetTriggerFlags(TriggerCastFlags::TRIGGERED_FULL_MASK));
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_shadow_sickle::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
+ }
+};
+
void AddSC_instance_ahnkahet()
{
new instance_ahnkahet();