aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/BlackTemple/black_temple.h7
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp7
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp25
-rw-r--r--src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp38
4 files changed, 46 insertions, 31 deletions
diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.h b/src/server/scripts/Outland/BlackTemple/black_temple.h
index bdade01ab33..a1e1f44ab8a 100644
--- a/src/server/scripts/Outland/BlackTemple/black_temple.h
+++ b/src/server/scripts/Outland/BlackTemple/black_temple.h
@@ -40,25 +40,22 @@ enum BTDataTypes
// Additional Data
DATA_AKAMA_SHADE = 9,
-
DATA_AKAMA = 10,
DATA_MAIEV = 11,
DATA_GO_ILLIDAN_GATE = 12,
DATA_BLACK_TEMPLE_TRIGGER = 13,
-
DATA_GATHIOS_THE_SHATTERER = 14,
DATA_HIGH_NETHERMANCER_ZEREVOR = 15,
DATA_LADY_MALANDE = 16,
DATA_VERAS_DARKSHADOW = 17,
DATA_BLOOD_ELF_COUNCIL_VOICE = 18,
-
DATA_GO_DEN_OF_MORTAL_DOOR = 19,
-
DATA_ESSENCE_OF_SUFFERING = 20,
DATA_ESSENCE_OF_DESIRE = 21,
DATA_ESSENCE_OF_ANGER = 22,
-
DATA_ILLIDAN_MUSIC_CONTROLLER = 23,
+ DATA_TERON_GOREFIEND_INTRO = 24,
+ DATA_AKAMA_ILLIDAN_INTRO = 25
};
enum TriggerEmotes
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index fc6a92e203f..526f0fc59a1 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
@@ -454,7 +454,7 @@ public:
struct boss_illidan_stormrageAI : public BossAI
{
boss_illidan_stormrageAI(Creature* creature) : BossAI(creature, DATA_ILLIDAN_STORMRAGE),
- _intro(true), _minionsCount(0), _flameCount(0), _orientation(0.0f), _pillarIndex(0), _phase(0), _dead(false), _isDemon(false) { }
+ _minionsCount(0), _flameCount(0), _orientation(0.0f), _pillarIndex(0), _phase(0), _dead(false), _isDemon(false) { }
void Reset() override
{
@@ -470,7 +470,7 @@ public:
_flameCount = 0;
_phase = PHASE_1;
_isDemon = false;
- if (_intro && instance->GetBossState(DATA_ILLIDARI_COUNCIL) == DONE)
+ if (instance->GetData(DATA_AKAMA_ILLIDAN_INTRO) && instance->GetBossState(DATA_ILLIDARI_COUNCIL) == DONE)
if (Creature* akama = instance->GetCreature(DATA_AKAMA))
akama->AI()->DoAction(ACTION_ACTIVE_AKAMA_INTRO);
}
@@ -568,7 +568,7 @@ public:
akama->AI()->DoAction(ACTION_FREE);
break;
case ACTION_INTRO_DONE:
- _intro = false;
+ instance->SetData(DATA_AKAMA_ILLIDAN_INTRO, 0);
break;
case ACTION_START_MINIONS:
Talk(SAY_ILLIDAN_MINION);
@@ -1023,7 +1023,6 @@ public:
}
private:
- bool _intro;
uint8 _minionsCount;
uint8 _flameCount;
float _orientation;
diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
index 67ed253f247..727f14ed239 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
@@ -115,10 +115,16 @@ public:
struct boss_teron_gorefiendAI : public BossAI
{
- boss_teron_gorefiendAI(Creature* creature) : BossAI(creature, DATA_TERON_GOREFIEND), _intro(false)
+ boss_teron_gorefiendAI(Creature* creature) : BossAI(creature, DATA_TERON_GOREFIEND) { }
+
+ void Reset() override
{
- creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
- creature->SetReactState(REACT_PASSIVE);
+ _Reset();
+ if (instance->GetData(DATA_TERON_GOREFIEND_INTRO))
+ {
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+ me->SetReactState(REACT_PASSIVE);
+ }
}
void EnterCombat(Unit* /*who*/) override
@@ -142,9 +148,9 @@ public:
void DoAction(int32 action) override
{
- if (action == ACTION_START_INTRO && !_intro && me->IsAlive())
+ if (action == ACTION_START_INTRO && me->IsAlive())
{
- _intro = true;
+ instance->SetData(DATA_TERON_GOREFIEND_INTRO, 0);
Talk(SAY_INTRO);
events.SetPhase(PHASE_INTRO);
events.ScheduleEvent(EVENT_FINISH_INTRO, Seconds(20));
@@ -216,9 +222,6 @@ public:
DoMeleeAttackIfReady();
}
-
- private:
- bool _intro;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -364,12 +367,12 @@ public:
}
};
-class at_teron_gorefiend_entrance : public AreaTriggerScript
+class at_teron_gorefiend_entrance : public OnlyOnceAreaTriggerScript
{
public:
- at_teron_gorefiend_entrance() : AreaTriggerScript("at_teron_gorefiend_entrance") { }
+ at_teron_gorefiend_entrance() : OnlyOnceAreaTriggerScript("at_teron_gorefiend_entrance") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* teron = instance->GetCreature(DATA_TERON_GOREFIEND))
diff --git a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
index f679428e44e..3a4132ac8c7 100644
--- a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
+++ b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
@@ -101,7 +101,9 @@ class instance_black_temple : public InstanceMapScript
LoadDoorData(doorData);
LoadObjectData(creatureData, gameObjectData);
LoadBossBoundaries(boundaries);
- akamaState = AKAMA_INTRO;
+ AkamaState = AKAMA_INTRO;
+ TeronGorefiendIntro = 1;
+ AkamaIllidanIntro = 1;
}
void OnGameObjectCreate(GameObject* go) override
@@ -126,7 +128,7 @@ class instance_black_temple : public InstanceMapScript
case NPC_ASHTONGUE_STORMCALLER:
case NPC_ASHTONGUE_FERAL_SPIRIT:
case NPC_STORM_FURY:
- AshtongueGUIDs.emplace_back(creature->GetGUID());
+ AshtongueGUIDs.push_back(creature->GetGUID());
if (GetBossState(DATA_SHADE_OF_AKAMA) == DONE)
creature->SetFaction(FACTION_ASHTONGUE_DEATHSWORN);
break;
@@ -135,25 +137,37 @@ class instance_black_temple : public InstanceMapScript
}
}
- uint32 GetData(uint32 data) const override
+ uint32 GetData(uint32 type) const override
{
- if (data == DATA_AKAMA)
- return akamaState;
-
- return 0;
+ switch (type)
+ {
+ case DATA_AKAMA:
+ return AkamaState;
+ case DATA_TERON_GOREFIEND_INTRO:
+ return TeronGorefiendIntro;
+ case DATA_AKAMA_ILLIDAN_INTRO:
+ return AkamaIllidanIntro;
+ default:
+ return 0;
+ }
}
- void SetData(uint32 data, uint32 value) override
+ void SetData(uint32 type, uint32 data) override
{
- switch (data)
+ switch (type)
{
case DATA_AKAMA:
- akamaState = value;
+ AkamaState = data;
break;
case ACTION_OPEN_DOOR:
if (GameObject* illidanGate = GetGameObject(DATA_GO_ILLIDAN_GATE))
HandleGameObject(ObjectGuid::Empty, true, illidanGate);
break;
+ case DATA_TERON_GOREFIEND_INTRO:
+ TeronGorefiendIntro = data;
+ break;
+ case DATA_AKAMA_ILLIDAN_INTRO:
+ AkamaIllidanIntro = data;
default:
break;
}
@@ -211,7 +225,9 @@ class instance_black_temple : public InstanceMapScript
protected:
GuidVector AshtongueGUIDs;
- uint8 akamaState;
+ uint8 AkamaState;
+ uint8 TeronGorefiendIntro;
+ uint8 AkamaIllidanIntro;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override