aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/zone_westfall.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/server/scripts/EasternKingdoms/zone_westfall.cpp b/src/server/scripts/EasternKingdoms/zone_westfall.cpp
index 60162630e80..a4e8e5287be 100644
--- a/src/server/scripts/EasternKingdoms/zone_westfall.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_westfall.cpp
@@ -30,6 +30,14 @@ namespace Creatures
{
static constexpr uint32 EnergizedHarvestReaper = 42342;
static constexpr uint32 OverloadedHarvestGolem = 42601;
+ static constexpr uint32 JangolodeMineGlubtok = 42492;
+ static constexpr uint32 JangolodeMineFigure = 42515;
+}
+
+namespace Spells
+{
+ static constexpr uint32 JangolodeMineSummonFigure = 79265;
+ static constexpr uint32 JangolodeMineSummonGlubtok = 79263;
}
namespace Events
@@ -182,6 +190,105 @@ class spell_westfall_wake_harvest_golem : public SpellScript
OnEffectHitTarget += SpellEffectFn(spell_westfall_wake_harvest_golem::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
+
+// 79262 - Summon Lou's House
+class spell_westfall_summon_lous_house : public SpellScript
+{
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ Unit* caster = GetCaster();
+ caster->CastSpell(nullptr, Spells::JangolodeMineSummonFigure, CastSpellExtraArgs(TRIGGERED_FULL_MASK));
+ caster->CastSpell(nullptr, Spells::JangolodeMineSummonGlubtok, CastSpellExtraArgs(TRIGGERED_FULL_MASK));
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_westfall_summon_lous_house::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 79275 - Quest Credit: Jangolde Event
+class spell_westfall_quest_credit_jangolode_event : public SpellScript
+{
+ void HandleScriptEffect(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->ExitVehicle();
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_westfall_quest_credit_jangolode_event::HandleScriptEffect, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 79290 - General Trigger 1: Glubtok
+// 79292 - General Trigger 2: Glubtok
+// 79294 - General Trigger 3: Glubtok
+// 79297 - General Trigger 4: Glubtok
+class spell_westfall_livin_the_life_ping_glubtok : public SpellScript
+{
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ Player* player = Object::ToPlayer(GetCaster());
+ if (!player)
+ return;
+
+ targets.clear();
+ if (Creature* creature = player->FindNearestCreatureWithOptions(50.0f, { .CreatureId = Creatures::JangolodeMineGlubtok, .OwnerGuid = player->GetGUID() }))
+ targets.push_back(creature);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_westfall_livin_the_life_ping_glubtok::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
+ }
+};
+
+// 79279 - General Trigger 1: Figure
+// 79283 - General Trigger 2: Figure
+// 79284 - General Trigger 3: Figure
+// 79287 - General Trigger 4: Figure
+class spell_westfall_livin_the_life_ping_figure : public SpellScript
+{
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ Player* player = Object::ToPlayer(GetCaster());
+ if (!player)
+ return;
+
+ targets.clear();
+ if (Creature* creature = player->FindNearestCreatureWithOptions(50.0f, { .CreatureId = Creatures::JangolodeMineFigure, .OwnerGuid = player->GetGUID() }))
+ targets.push_back(creature);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_westfall_livin_the_life_ping_figure::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
+ }
+};
+
+// 79273 - Despawn Jangolode Actor
+class spell_westfall_despawn_jangolode_actor : public SpellScript
+{
+ void FilterTargets(std::list<WorldObject*>& targets)
+ {
+ Player* player = Object::ToPlayer(GetCaster());
+ if (!player)
+ return;
+
+ targets.clear();
+ if (Creature* creature = player->FindNearestCreatureWithOptions(50.0f, { .CreatureId = Creatures::JangolodeMineGlubtok, .OwnerGuid = player->GetGUID() }))
+ targets.push_back(creature);
+
+ if (Creature* creature = player->FindNearestCreatureWithOptions(50.0f, { .CreatureId = Creatures::JangolodeMineFigure, .OwnerGuid = player->GetGUID() }))
+ targets.push_back(creature);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_westfall_despawn_jangolode_actor::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENTRY);
+ }
+};
}
void AddSC_westfall()
@@ -195,4 +302,9 @@ void AddSC_westfall()
RegisterSpellScript(spell_westfall_unbound_energy);
RegisterSpellScript(spell_westfall_reaping_blows);
RegisterSpellScript(spell_westfall_wake_harvest_golem);
+ RegisterSpellScript(spell_westfall_summon_lous_house);
+ RegisterSpellScript(spell_westfall_quest_credit_jangolode_event);
+ RegisterSpellScript(spell_westfall_despawn_jangolode_actor);
+ RegisterSpellScript(spell_westfall_livin_the_life_ping_glubtok);
+ RegisterSpellScript(spell_westfall_livin_the_life_ping_figure);
}