aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2022-06-20 20:04:52 +0300
committerShauren <shauren.trinity@gmail.com>2022-09-05 19:01:28 +0200
commitc8d56b8c6741b237ebf6c7f8f023c4b5ebd0d0ca (patch)
tree8acedafbfb11668cb8b4c00adf91030d0dd7d0c7 /src/server/scripts/Outland
parenta2e68ccabf1cfda56de44946c1390dbdd1627240 (diff)
Scripts/Quest: Update 'Dissension Amongst the Ranks...' (10769, 10776) (#28044)
(cherry picked from commit ffcc976524e3b1ba99023e40e7fc9cce4d01a2f7)
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index 5b13b473208..a5dd73a2f37 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -1592,6 +1592,75 @@ public:
}
};
+/*######
+## Quest 10769, 10776: Dissension Amongst the Ranks...
+######*/
+
+enum DissensionAmongstTheRanks
+{
+ SPELL_ILLIDARI_DISGUISE_MALE = 38225,
+ SPELL_ILLIDARI_DISGUISE_FEMALE = 38227,
+ SPELL_KILL_CREDIT_CRAZED_COLOSSUS = 38228
+};
+
+// 38224 - Illidari Agent Illusion
+class spell_shadowmoon_illidari_agent_illusion : public AuraScript
+{
+ PrepareAuraScript(spell_shadowmoon_illidari_agent_illusion);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ILLIDARI_DISGUISE_MALE, SPELL_ILLIDARI_DISGUISE_FEMALE });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Player* target = GetTarget()->ToPlayer())
+ target->CastSpell(target, target->GetNativeGender() == GENDER_MALE ?
+ SPELL_ILLIDARI_DISGUISE_MALE : SPELL_ILLIDARI_DISGUISE_FEMALE);
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->RemoveAurasDueToSpell(SPELL_ILLIDARI_DISGUISE_MALE);
+ target->RemoveAurasDueToSpell(SPELL_ILLIDARI_DISGUISE_FEMALE);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_shadowmoon_illidari_agent_illusion::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectApplyFn(spell_shadowmoon_illidari_agent_illusion::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
+// 38223 - Quest Credit: Crazed Colossus
+class spell_shadowmoon_quest_credit_crazed_colossus : public SpellScript
+{
+ PrepareSpellScript(spell_shadowmoon_quest_credit_crazed_colossus);
+
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ return ValidateSpellInfo(
+ {
+ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()),
+ SPELL_KILL_CREDIT_CRAZED_COLOSSUS
+ });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Unit* target = GetHitUnit();
+ if (target->HasAura(uint32(GetEffectValue())))
+ target->CastSpell(target, SPELL_KILL_CREDIT_CRAZED_COLOSSUS);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_shadowmoon_quest_credit_crazed_colossus::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_shadowmoon_valley()
{
new npc_invis_infernal_caster();
@@ -1606,4 +1675,6 @@ void AddSC_shadowmoon_valley()
new npc_enraged_spirit();
new spell_unlocking_zuluheds_chains();
new npc_shadowmoon_tuber_node();
+ RegisterSpellScript(spell_shadowmoon_illidari_agent_illusion);
+ RegisterSpellScript(spell_shadowmoon_quest_credit_crazed_colossus);
}