summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew <47818697+Nyeriah@users.noreply.github.com>2024-11-11 02:56:27 -0300
committerGitHub <noreply@github.com>2024-11-11 02:56:27 -0300
commit0ce15f0f5a15401dabf6358ecf8a7aae05542d0c (patch)
treebe241c374a831276236044067d1f492379afb4d9 /src
parente741a9a87f9a6af8efe1a2e6c856f2100e90ac25 (diff)
refactor(Scripts/SunwellPlateau): Refactor areatriggers to OnlyOnceAr… (#20515)
refactor(Scripts/SunwellPlateau): Refactor areatriggers to OnlyOnceAreatrigger
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp23
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp22
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp46
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h25
4 files changed, 46 insertions, 70 deletions
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
index e8e46a03f3..96e15eb4f2 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
@@ -109,7 +109,7 @@ struct boss_brutallus : public BossAI
Talk(YELL_DEATH);
me->CastSpell(me, SPELL_SUMMON_BRUTALLUS_DEATH_CLOUD, true);
- if (Creature* madrigosa = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_MADRIGOSA)))
+ if (Creature* madrigosa = instance->GetCreature(DATA_MADRIGOSA))
madrigosa->AI()->DoAction(ACTION_SPAWN_FELMYST);
}
@@ -204,10 +204,11 @@ struct npc_madrigosa : public NullCreatureAI
npc_madrigosa(Creature* creature) : NullCreatureAI(creature)
{
instance = creature->GetInstanceScript();
- bool appear = instance->GetBossState(DATA_BRUTALLUS) != DONE && instance->GetBossState(DATA_MADRIGOSA) == DONE;
- creature->SetVisible(appear);
creature->SetStandState(UNIT_STAND_STATE_DEAD);
creature->SetDynamicFlag(UNIT_DYNFLAG_DEAD);
+
+ if (instance->IsBossDone(DATA_BRUTALLUS))
+ creature->SetVisible(false);
}
EventMap events;
@@ -475,21 +476,17 @@ class spell_brutallus_burn : public SpellScript
}
};
-class AreaTrigger_at_sunwell_madrigosa : public AreaTriggerScript
+class at_sunwell_madrigosa : public OnlyOnceAreaTriggerScript
{
public:
- AreaTrigger_at_sunwell_madrigosa() : AreaTriggerScript("at_sunwell_madrigosa") {}
+ at_sunwell_madrigosa() : OnlyOnceAreaTriggerScript("at_sunwell_madrigosa") {}
- bool OnTrigger(Player* player, AreaTrigger const* /*trigger*/) override
+ bool _OnTrigger(Player* player, AreaTrigger const* /*trigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
- if (instance->GetBossState(DATA_MADRIGOSA) != DONE)
- {
- instance->SetBossState(DATA_MADRIGOSA, NOT_STARTED);
- instance->SetBossState(DATA_MADRIGOSA, DONE);
- if (Creature* creature = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_MADRIGOSA)))
+ if (!instance->IsBossDone(DATA_BRUTALLUS))
+ if (Creature* creature = instance->GetCreature(DATA_MADRIGOSA))
creature->AI()->DoAction(ACTION_START_EVENT);
- }
return true;
}
@@ -502,5 +499,5 @@ void AddSC_boss_brutallus()
RegisterSpellScript(spell_madrigosa_activate_barrier);
RegisterSpellScript(spell_madrigosa_deactivate_barrier);
RegisterSpellScript(spell_brutallus_burn);
- new AreaTrigger_at_sunwell_madrigosa();
+ new at_sunwell_madrigosa();
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
index b3751e4278..6b2cef92b5 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp
@@ -451,22 +451,20 @@ class spell_eredar_twins_blaze : public SpellScript
}
};
-class AreaTrigger_at_sunwell_eredar_twins : public AreaTriggerScript
+class at_sunwell_eredar_twins : public OnlyOnceAreaTriggerScript
{
public:
- AreaTrigger_at_sunwell_eredar_twins() : AreaTriggerScript("at_sunwell_eredar_twins") {}
+ at_sunwell_eredar_twins() : OnlyOnceAreaTriggerScript("at_sunwell_eredar_twins") {}
- bool OnTrigger(Player* player, AreaTrigger const* /*trigger*/) override
+ bool _OnTrigger(Player* player, AreaTrigger const* /*trigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
- if (instance->GetBossState(DATA_EREDAR_TWINS_INTRO) != DONE)
- {
- instance->SetBossState(DATA_EREDAR_TWINS_INTRO, DONE);
- if (Creature* creature = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_LADY_SACROLASH)))
- creature->AI()->Talk(YELL_INTRO_SAC);
- if (Creature* creature = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_GRAND_WARLOCK_ALYTHESS)))
- creature->AI()->Talk(YELL_INTRO_ALY);
- }
+ {
+ if (Creature* creature = instance->GetCreature(DATA_SACROLASH))
+ creature->AI()->Talk(YELL_INTRO_SAC);
+ if (Creature* creature = instance->GetCreature(DATA_ALYTHESS))
+ creature->AI()->Talk(YELL_INTRO_ALY);
+ }
return true;
}
@@ -480,5 +478,5 @@ void AddSC_boss_eredar_twins()
RegisterSpellScript(spell_eredar_twins_apply_flame_touched);
RegisterSpellScript(spell_eredar_twins_handle_touch);
RegisterSpellScript(spell_eredar_twins_blaze);
- new AreaTrigger_at_sunwell_eredar_twins();
+ new at_sunwell_eredar_twins();
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
index 20ef8f39bd..9c51e79c18 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp
@@ -33,6 +33,14 @@ DoorData const doorData[] =
{ 0, 0, DOOR_TYPE_ROOM } // END
};
+ObjectData const creatureData[] =
+{
+ { NPC_LADY_SACROLASH, DATA_SACROLASH },
+ { NPC_GRAND_WARLOCK_ALYTHESS, DATA_ALYTHESS },
+ { NPC_MADRIGOSA, DATA_MADRIGOSA },
+ { 0, 0, }
+};
+
class instance_sunwell_plateau : public InstanceMapScript
{
public:
@@ -45,6 +53,7 @@ public:
SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTERS);
LoadDoorData(doorData);
+ LoadObjectData(creatureData, nullptr);
}
void OnPlayerEnter(Player* player) override
@@ -90,18 +99,9 @@ public:
case NPC_BRUTALLUS:
BrutallusGUID = creature->GetGUID();
break;
- case NPC_MADRIGOSA:
- MadrigosaGUID = creature->GetGUID();
- break;
case NPC_FELMYST:
FelmystGUID = creature->GetGUID();
break;
- case NPC_GRAND_WARLOCK_ALYTHESS:
- AlythessGUID = creature->GetGUID();
- break;
- case NPC_LADY_SACROLASH:
- SacrolashGUID = creature->GetGUID();
- break;
case NPC_MURU:
MuruGUID = creature->GetGUID();
break;
@@ -144,6 +144,8 @@ public:
default:
break;
}
+
+ InstanceScript::OnCreatureCreate(creature);
}
void OnGameObjectCreate(GameObject* go) override
@@ -179,23 +181,6 @@ public:
}
}
- void OnGameObjectRemove(GameObject* go) override
- {
- switch (go->GetEntry())
- {
- case GO_FIRE_BARRIER:
- case GO_MURUS_GATE_1:
- case GO_MURUS_GATE_2:
- case GO_BOSS_COLLISION_1:
- case GO_BOSS_COLLISION_2:
- case GO_FORCE_FIELD:
- RemoveDoor(go);
- break;
- default:
- break;
- }
- }
-
ObjectGuid GetGuidData(uint32 id) const override
{
switch (id)
@@ -206,14 +191,8 @@ public:
return SathrovarrGUID;
case NPC_BRUTALLUS:
return BrutallusGUID;
- case NPC_MADRIGOSA:
- return MadrigosaGUID;
case NPC_FELMYST:
return FelmystGUID;
- case NPC_GRAND_WARLOCK_ALYTHESS:
- return AlythessGUID;
- case NPC_LADY_SACROLASH:
- return SacrolashGUID;
case NPC_MURU:
return MuruGUID;
case NPC_ANVEENA:
@@ -240,10 +219,7 @@ public:
ObjectGuid KalecgosDragonGUID;
ObjectGuid SathrovarrGUID;
ObjectGuid BrutallusGUID;
- ObjectGuid MadrigosaGUID;
ObjectGuid FelmystGUID;
- ObjectGuid AlythessGUID;
- ObjectGuid SacrolashGUID;
ObjectGuid MuruGUID;
ObjectGuid KilJaedenGUID;
ObjectGuid KilJaedenControllerGUID;
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h
index e6e993d649..74969b0bb2 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/sunwell_plateau.h
@@ -24,18 +24,23 @@
#define SWPScriptName "instance_sunwell_plateau"
-enum DataTypes
+enum BossIds
{
DATA_KALECGOS = 0,
- DATA_MADRIGOSA = 1,
- DATA_BRUTALLUS = 2,
- DATA_FELMYST = 3,
- DATA_FELMYST_DOORS = 4,
- DATA_EREDAR_TWINS_INTRO = 5,
- DATA_EREDAR_TWINS = 6,
- DATA_MURU = 7,
- DATA_KILJAEDEN = 8,
- MAX_ENCOUNTERS = 9,
+ DATA_BRUTALLUS = 1,
+ DATA_FELMYST = 2,
+ DATA_FELMYST_DOORS = 3,
+ DATA_EREDAR_TWINS = 4,
+ DATA_MURU = 5,
+ DATA_KILJAEDEN = 6,
+ MAX_ENCOUNTERS
+};
+
+enum DataTypes
+{
+ DATA_SACROLASH = 0,
+ DATA_ALYTHESS = 1,
+ DATA_MADRIGOSA = 2,
// GameObject GUIDs
DATA_ORB_OF_THE_BLUE_DRAGONFLIGHT_1 = 10,