aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2017-09-15 03:53:02 +0200
committerShauren <shauren.trinity@gmail.com>2020-08-29 00:41:22 +0200
commitfe938b99f843df3f6c120695db38f327bd55ea94 (patch)
treeb6e47409a22c4262ac6657272842c1205f986f0c /src/server/scripts/Northrend
parent77d13a7b97d4b9d243ce753ca02ae94d9e10b17e (diff)
Core/Scripts: Implemented OnlyOnceAreaTriggerScript (#20288)
(cherry picked from commit 971ed856a49dc56ea33d9a0779b1386eea5cd3ca)
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h3
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp7
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp27
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp7
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp6
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp11
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp75
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp13
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp15
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp14
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp9
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp9
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp9
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp21
-rw-r--r--src/server/scripts/Northrend/Naxxramas/naxxramas.h3
17 files changed, 118 insertions, 123 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
index d886437ca47..732fa3aac64 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h
@@ -37,7 +37,8 @@ enum ANDataTypes
DATA_WATCHER_GASHRA,
DATA_WATCHER_SILTHIK,
DATA_ANUBARAK_WALL,
- DATA_ANUBARAK_WALL_2
+ DATA_ANUBARAK_WALL_2,
+ DATA_GATEWATCHER_GREET
};
enum ANCreatureIds
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
index 326ded1713b..7c3eb46d99a 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
@@ -132,7 +132,7 @@ class boss_krik_thir : public CreatureScript
struct boss_krik_thirAI : public BossAI
{
- boss_krik_thirAI(Creature* creature) : BossAI(creature, DATA_KRIKTHIR), _hadGreet(false), _hadFrenzy(false), _petsInCombat(false), _watchersActive(0) { }
+ boss_krik_thirAI(Creature* creature) : BossAI(creature, DATA_KRIKTHIR), _hadFrenzy(false), _petsInCombat(false), _watchersActive(0) { }
void SummonAdds()
{
@@ -212,9 +212,9 @@ class boss_krik_thir : public CreatureScript
switch (action)
{
case -ACTION_GATEWATCHER_GREET:
- if (!_hadGreet && me->IsAlive() && !me->IsInCombat() && !_petsInCombat)
+ if (!instance->GetData(DATA_GATEWATCHER_GREET) && me->IsAlive() && !me->IsInCombat() && !_petsInCombat)
{
- _hadGreet = true;
+ instance->SetData(DATA_GATEWATCHER_GREET, 1);
Talk(SAY_PREFIGHT);
}
break;
@@ -307,7 +307,6 @@ class boss_krik_thir : public CreatureScript
}
private:
- bool _hadGreet;
bool _hadFrenzy;
bool _petsInCombat;
uint8 _watchersActive;
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
index bcb4ee87547..e5b49d744e2 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp
@@ -70,6 +70,7 @@ class instance_azjol_nerub : public InstanceMapScript
LoadBossBoundaries(boundaries);
LoadDoorData(doorData);
LoadObjectData(creatureData, gameobjectData);
+ GateWatcherGreet = 0;
}
void OnUnitDeath(Unit* who) override
@@ -97,6 +98,32 @@ class instance_azjol_nerub : public InstanceMapScript
return true;
}
+
+ uint32 GetData(uint32 type) const override
+ {
+ switch (type)
+ {
+ case DATA_GATEWATCHER_GREET:
+ return GateWatcherGreet;
+ default:
+ return 0;
+ }
+ }
+
+ void SetData(uint32 type, uint32 data) override
+ {
+ switch (type)
+ {
+ case DATA_GATEWATCHER_GREET:
+ GateWatcherGreet = data;
+ break;
+ default:
+ break;
+ }
+ }
+
+ protected:
+ uint8 GateWatcherGreet;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index 1440f800260..2c8a9075d6c 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -74,8 +74,7 @@ class boss_baltharus_the_warborn : public CreatureScript
struct boss_baltharus_the_warbornAI : public BossAI
{
- boss_baltharus_the_warbornAI(Creature* creature) : BossAI(creature, DATA_BALTHARUS_THE_WARBORN),
- _cloneCount(0), _introDone(false) { }
+ boss_baltharus_the_warbornAI(Creature* creature) : BossAI(creature, DATA_BALTHARUS_THE_WARBORN), _cloneCount(0) { }
void Reset() override
{
@@ -92,9 +91,6 @@ class boss_baltharus_the_warborn : public CreatureScript
switch (action)
{
case ACTION_INTRO_BALTHARUS:
- if (_introDone)
- return;
- _introDone = true;
me->setActive(true);
events.ScheduleEvent(EVENT_INTRO_TALK, Seconds(7), 0, PHASE_INTRO);
break;
@@ -233,7 +229,6 @@ class boss_baltharus_the_warborn : public CreatureScript
private:
uint8 _cloneCount;
- bool _introDone;
};
CreatureAI* GetAI(Creature* creature) const override
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
index 69bf1e645e3..d1fc9f9bbec 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
@@ -153,12 +153,12 @@ class npc_xerestrasza : public CreatureScript
}
};
-class at_baltharus_plateau : public AreaTriggerScript
+class at_baltharus_plateau : public OnlyOnceAreaTriggerScript
{
public:
- at_baltharus_plateau() : AreaTriggerScript("at_baltharus_plateau") { }
+ at_baltharus_plateau() : OnlyOnceAreaTriggerScript("at_baltharus_plateau") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
// Only trigger once
if (InstanceScript* instance = player->GetInstanceScript())
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
index 85247eef42d..e21e57e524b 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp
@@ -547,18 +547,18 @@ class spell_tyrannus_rimefang_icy_blast : public SpellScriptLoader
}
};
-class at_tyrannus_event_starter : public AreaTriggerScript
+class at_tyrannus_event_starter : public OnlyOnceAreaTriggerScript
{
public:
- at_tyrannus_event_starter() : AreaTriggerScript("at_tyrannus_event_starter") { }
+ at_tyrannus_event_starter() : OnlyOnceAreaTriggerScript("at_tyrannus_event_starter") { }
- bool OnTrigger(Player* player, const AreaTriggerEntry* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
InstanceScript* instance = player->GetInstanceScript();
if (player->IsGameMaster() || !instance)
return false;
- if (instance->GetBossState(DATA_TYRANNUS) != IN_PROGRESS && instance->GetBossState(DATA_TYRANNUS) != DONE)
+ if (instance->GetBossState(DATA_TYRANNUS) != DONE)
if (Creature* tyrannus = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_TYRANNUS)))
{
tyrannus->AI()->DoAction(ACTION_START_INTRO);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index 1ef1018a447..1c3728d0d06 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -222,7 +222,7 @@ class boss_blood_council_controller : public CreatureScript
struct boss_blood_council_controllerAI : public BossAI
{
- boss_blood_council_controllerAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL), _intro(true)
+ boss_blood_council_controllerAI(Creature* creature) : BossAI(creature, DATA_BLOOD_PRINCE_COUNCIL)
{
Initialize();
SetCombatMovement(false);
@@ -240,7 +240,7 @@ class boss_blood_council_controller : public CreatureScript
Initialize();
me->SummonCreatureGroup(SUMMON_PRINCES_GROUP);
- if (!_intro)
+ if (!instance->GetData(DATA_BLOOD_PRINCE_COUNCIL_INTRO))
for (uint32 bossData : PrincesData)
if (Creature* prince = ObjectAccessor::GetCreature(*me, instance->GetGuidData(bossData)))
{
@@ -311,7 +311,7 @@ class boss_blood_council_controller : public CreatureScript
uint32 GetData(uint32 data) const override
{
- if (data == DATA_INTRO && !_intro)
+ if (data == DATA_INTRO && !instance->GetData(DATA_BLOOD_PRINCE_COUNCIL_INTRO))
return DATA_INTRO_DONE;
return 0;
}
@@ -338,9 +338,9 @@ class boss_blood_council_controller : public CreatureScript
void DoAction(int32 actionId) override
{
- if (actionId == ACTION_START_INTRO && _intro && instance->GetBossState(DATA_BLOOD_PRINCE_COUNCIL) != DONE)
+ if (actionId == ACTION_START_INTRO && instance->GetData(DATA_BLOOD_PRINCE_COUNCIL_INTRO) && instance->GetBossState(DATA_BLOOD_PRINCE_COUNCIL) != DONE)
{
- _intro = false;
+ instance->SetData(DATA_BLOOD_PRINCE_COUNCIL_INTRO, 0);
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL_COUNCIL)))
bloodQueen->AI()->DoAction(ACTION_START_INTRO);
}
@@ -425,7 +425,6 @@ class boss_blood_council_controller : public CreatureScript
uint32 _invocationStage;
uint32 _resetCounter;
- bool _intro;
};
CreatureAI* GetAI(Creature* creature) const override
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 75990d02c92..51422aefc9b 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -203,7 +203,7 @@ class boss_lady_deathwhisper : public CreatureScript
struct boss_lady_deathwhisperAI : public BossAI
{
boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER),
- _dominateMindCount(RAID_MODE<uint8>(0, 1, 1, 3)), _introDone(false)
+ _dominateMindCount(RAID_MODE<uint8>(0, 1, 1, 3))
{
Initialize();
}
@@ -237,43 +237,39 @@ class boss_lady_deathwhisper : public CreatureScript
if (action != ACTION_START_INTRO)
return;
- if (!_introDone)
+ Talk(SAY_INTRO_1);
+ _phase = PHASE_INTRO;
+ scheduler.Schedule(Seconds(10), GROUP_INTRO, [this](TaskContext context)
{
- _introDone = true;
- Talk(SAY_INTRO_1);
- _phase = PHASE_INTRO;
- scheduler.Schedule(Seconds(10), GROUP_INTRO, [this](TaskContext context)
+ switch (context.GetRepeatCounter())
{
- switch (context.GetRepeatCounter())
- {
- case 0:
- Talk(SAY_INTRO_2);
- context.Repeat(Seconds(21));
- break;
- case 1:
- Talk(SAY_INTRO_3);
- context.Repeat(Seconds(11));
- break;
- case 2:
- Talk(SAY_INTRO_4);
- context.Repeat(Seconds(9));
- break;
- case 3:
- Talk(SAY_INTRO_5);
- context.Repeat(Seconds(21));
- break;
- case 4:
- Talk(SAY_INTRO_6);
- context.Repeat(Seconds(10));
- break;
- case 5:
- Talk(SAY_INTRO_7);
- return;
- default:
- break;
- }
- });
- }
+ case 0:
+ Talk(SAY_INTRO_2);
+ context.Repeat(Seconds(21));
+ break;
+ case 1:
+ Talk(SAY_INTRO_3);
+ context.Repeat(Seconds(11));
+ break;
+ case 2:
+ Talk(SAY_INTRO_4);
+ context.Repeat(Seconds(9));
+ break;
+ case 3:
+ Talk(SAY_INTRO_5);
+ context.Repeat(Seconds(21));
+ break;
+ case 4:
+ Talk(SAY_INTRO_6);
+ context.Repeat(Seconds(10));
+ break;
+ case 5:
+ Talk(SAY_INTRO_7);
+ return;
+ default:
+ break;
+ }
+ });
}
void AttackStart(Unit* victim) override
@@ -585,7 +581,6 @@ class boss_lady_deathwhisper : public CreatureScript
uint32 _waveCounter;
uint8 const _dominateMindCount;
uint8 _phase;
- bool _introDone;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -1022,12 +1017,12 @@ class spell_deathwhisper_mana_barrier : public SpellScriptLoader
}
};
-class at_lady_deathwhisper_entrance : public AreaTriggerScript
+class at_lady_deathwhisper_entrance : public OnlyOnceAreaTriggerScript
{
public:
- at_lady_deathwhisper_entrance() : AreaTriggerScript("at_lady_deathwhisper_entrance") { }
+ at_lady_deathwhisper_entrance() : OnlyOnceAreaTriggerScript("at_lady_deathwhisper_entrance") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
if (instance->GetBossState(DATA_LADY_DEATHWHISPER) != DONE)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index c432352bdea..80d826d9211 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -139,7 +139,6 @@ class boss_lord_marrowgar : public CreatureScript
_boneStormDuration = RAID_MODE<uint32>(20000, 30000, 20000, 30000);
_baseSpeed = creature->GetSpeedRate(MOVE_RUN);
_coldflameLastPos.Relocate(creature);
- _introDone = false;
_boneSlice = false;
}
@@ -154,7 +153,6 @@ class boss_lord_marrowgar : public CreatureScript
events.ScheduleEvent(EVENT_COLDFLAME, 5000, EVENT_GROUP_SPECIAL);
events.ScheduleEvent(EVENT_WARN_BONE_STORM, urand(45000, 50000));
events.ScheduleEvent(EVENT_ENRAGE, 600000);
- _introDone = false;
_boneSlice = false;
_boneSpikeImmune.clear();
}
@@ -332,11 +330,7 @@ class boss_lord_marrowgar : public CreatureScript
_boneSpikeImmune.clear();
break;
case ACTION_TALK_ENTER_ZONE:
- if (!_introDone)
- {
Talk(SAY_ENTER_ZONE);
- _introDone = true;
- }
break;
default:
break;
@@ -349,7 +343,6 @@ class boss_lord_marrowgar : public CreatureScript
ObjectGuid _coldflameTarget;
uint32 _boneStormDuration;
float _baseSpeed;
- bool _introDone;
bool _boneSlice;
};
@@ -761,12 +754,12 @@ class spell_marrowgar_bone_slice : public SpellScriptLoader
}
};
-class at_lord_marrowgar_entrance : public AreaTriggerScript
+class at_lord_marrowgar_entrance : public OnlyOnceAreaTriggerScript
{
public:
- at_lord_marrowgar_entrance() : AreaTriggerScript("at_lord_marrowgar_entrance") { }
+ at_lord_marrowgar_entrance() : OnlyOnceAreaTriggerScript("at_lord_marrowgar_entrance") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* lordMarrowgar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_LORD_MARROWGAR)))
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index 928a94e4694..b33cc623d91 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -229,7 +229,7 @@ class boss_sindragosa : public CreatureScript
struct boss_sindragosaAI : public BossAI
{
- boss_sindragosaAI(Creature* creature) : BossAI(creature, DATA_SINDRAGOSA), _summoned(false)
+ boss_sindragosaAI(Creature* creature) : BossAI(creature, DATA_SINDRAGOSA)
{
Initialize();
}
@@ -254,7 +254,7 @@ class boss_sindragosa : public CreatureScript
events.ScheduleEvent(EVENT_AIR_PHASE, 50000);
Initialize();
- if (!_summoned)
+ if (instance->GetData(DATA_SINDRAGOSA_INTRO))
{
me->SetCanFly(true);
me->SetDisableGravity(true);
@@ -314,10 +314,8 @@ class boss_sindragosa : public CreatureScript
{
if (action == ACTION_START_FROSTWYRM)
{
- if (_summoned)
- return;
- _summoned = true;
+ instance->SetData(DATA_SINDRAGOSA_INTRO, 0);
if (TempSummon* summon = me->ToTempSummon())
summon->SetTempSummonType(TEMPSUMMON_DEAD_DESPAWN);
@@ -567,7 +565,6 @@ class boss_sindragosa : public CreatureScript
uint8 _mysticBuffetStack;
bool _isInAirPhase;
bool _isThirdPhase;
- bool _summoned;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -1620,12 +1617,12 @@ public:
}
};
-class at_sindragosa_lair : public AreaTriggerScript
+class at_sindragosa_lair : public OnlyOnceAreaTriggerScript
{
public:
- at_sindragosa_lair() : AreaTriggerScript("at_sindragosa_lair") { }
+ at_sindragosa_lair() : OnlyOnceAreaTriggerScript("at_sindragosa_lair") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
index 8fff8922983..b019ecb8640 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
@@ -120,7 +120,9 @@ enum ICDataTypes
DATA_TERENAS_MENETHIL = 39,
DATA_ENEMY_GUNSHIP = 40,
DATA_UPPERSPIRE_TELE_ACT = 41, /// also used by conditions
- DATA_BLOOD_QUEEN_LANA_THEL_COUNCIL = 42
+ DATA_BLOOD_QUEEN_LANA_THEL_COUNCIL = 42,
+ DATA_BLOOD_PRINCE_COUNCIL_INTRO = 43,
+ DATA_SINDRAGOSA_INTRO = 44
};
enum ICCreaturesIds
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 53785f1f064..0a11d6e7830 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -149,6 +149,8 @@ class instance_icecrown_citadel : public InstanceMapScript
UpperSpireTeleporterActiveState = NOT_STARTED;
BloodQuickeningState = NOT_STARTED;
BloodQuickeningMinutes = 0;
+ BloodPrinceIntro = 1;
+ SindragosaIntro = 1;
}
// A function to help reduce the number of lines for teleporter management.
@@ -734,6 +736,10 @@ class instance_icecrown_citadel : public InstanceMapScript
return BloodQuickeningState;
case DATA_HEROIC_ATTEMPTS:
return HeroicAttempts;
+ case DATA_BLOOD_PRINCE_COUNCIL_INTRO:
+ return BloodPrinceIntro;
+ case DATA_SINDRAGOSA_INTRO:
+ return SindragosaIntro;
default:
break;
}
@@ -1099,6 +1105,12 @@ class instance_icecrown_citadel : public InstanceMapScript
SaveToDB();
}
break;
+ case DATA_BLOOD_PRINCE_COUNCIL_INTRO:
+ BloodPrinceIntro = data;
+ break;
+ case DATA_SINDRAGOSA_INTRO:
+ SindragosaIntro = data;
+ break;
default:
break;
}
@@ -1529,6 +1541,8 @@ class instance_icecrown_citadel : public InstanceMapScript
uint32 BloodQuickeningState;
uint32 HeroicAttempts;
uint16 BloodQuickeningMinutes;
+ uint8 BloodPrinceIntro;
+ uint8 SindragosaIntro;
bool IsBonedEligible;
bool IsOozeDanceEligible;
bool IsNauseaEligible;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
index bf5e30de4de..b6783166857 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
@@ -238,20 +238,19 @@ public:
};
-class at_anubrekhan_entrance : public AreaTriggerScript
+class at_anubrekhan_entrance : public OnlyOnceAreaTriggerScript
{
public:
- at_anubrekhan_entrance() : AreaTriggerScript("at_anubrekhan_entrance") { }
+ at_anubrekhan_entrance() : OnlyOnceAreaTriggerScript("at_anubrekhan_entrance") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
InstanceScript* instance = player->GetInstanceScript();
- if (!instance || instance->GetData(DATA_HAD_ANUBREKHAN_GREET) || instance->GetBossState(BOSS_ANUBREKHAN) != NOT_STARTED)
+ if (!instance || instance->GetBossState(BOSS_ANUBREKHAN) != NOT_STARTED)
return true;
if (Creature* anub = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_ANUBREKHAN)))
anub->AI()->Talk(SAY_GREET);
- instance->SetData(DATA_HAD_ANUBREKHAN_GREET, 1u);
return true;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
index 7f0a5cdc6ed..8e3dbb5a271 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
@@ -261,20 +261,19 @@ class achievement_momma_said_knock_you_out : public AchievementCriteriaScript
}
};
-class at_faerlina_entrance : public AreaTriggerScript
+class at_faerlina_entrance : public OnlyOnceAreaTriggerScript
{
public:
- at_faerlina_entrance() : AreaTriggerScript("at_faerlina_entrance") { }
+ at_faerlina_entrance() : OnlyOnceAreaTriggerScript("at_faerlina_entrance") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
InstanceScript* instance = player->GetInstanceScript();
- if (!instance || instance->GetData(DATA_HAD_FAERLINA_GREET) || instance->GetBossState(BOSS_FAERLINA) != NOT_STARTED)
+ if (!instance || instance->GetBossState(BOSS_FAERLINA) != NOT_STARTED)
return true;
if (Creature* faerlina = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_FAERLINA)))
faerlina->AI()->Talk(SAY_GREET);
- instance->SetData(DATA_HAD_FAERLINA_GREET, 1u);
return true;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 33b48c08c9c..39461928c99 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -1224,20 +1224,19 @@ class spell_thaddius_magnetic_pull : public SpellScriptLoader
}
};
-class at_thaddius_entrance : public AreaTriggerScript
+class at_thaddius_entrance : public OnlyOnceAreaTriggerScript
{
public:
- at_thaddius_entrance() : AreaTriggerScript("at_thaddius_entrance") { }
+ at_thaddius_entrance() : OnlyOnceAreaTriggerScript("at_thaddius_entrance") { }
- bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
+ bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/, bool /*entered*/) override
{
InstanceScript* instance = player->GetInstanceScript();
- if (!instance || instance->GetData(DATA_HAD_THADDIUS_GREET) || instance->GetBossState(BOSS_THADDIUS) == DONE)
+ if (!instance || instance->GetBossState(BOSS_THADDIUS) == DONE)
return true;
if (Creature* thaddius = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_THADDIUS)))
thaddius->AI()->Talk(SAY_GREET);
- instance->SetData(DATA_HAD_THADDIUS_GREET, 1u);
return true;
}
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index 0244f7539a5..9c7ae6063a5 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -123,9 +123,6 @@ class instance_naxxramas : public InstanceMapScript
LoadDoorData(doorData);
LoadObjectData(nullptr, objectData);
- hadAnubRekhanGreet = false;
- hadFaerlinaGreet = false;
- hadThaddiusGreet = false;
hadSapphironBirth = false;
CurrentWingTaunt = SAY_KELTHUZAD_FIRST_WING_TAUNT;
@@ -281,15 +278,6 @@ class instance_naxxramas : public InstanceMapScript
if (GameObject* gate = instance->GetGameObject(GothikGateGUID))
gate->SetGoState(GOState(value));
break;
- case DATA_HAD_ANUBREKHAN_GREET:
- hadAnubRekhanGreet = (value == 1u);
- break;
- case DATA_HAD_FAERLINA_GREET:
- hadFaerlinaGreet = (value == 1u);
- break;
- case DATA_HAD_THADDIUS_GREET:
- hadThaddiusGreet = (value == 1u);
- break;
case DATA_HAD_SAPPHIRON_BIRTH:
hadSapphironBirth = (value == 1u);
break;
@@ -302,12 +290,6 @@ class instance_naxxramas : public InstanceMapScript
{
switch (id)
{
- case DATA_HAD_ANUBREKHAN_GREET:
- return hadAnubRekhanGreet ? 1u : 0u;
- case DATA_HAD_FAERLINA_GREET:
- return hadFaerlinaGreet ? 1u : 0u;
- case DATA_HAD_THADDIUS_GREET:
- return hadThaddiusGreet ? 1u : 0u;
case DATA_HAD_SAPPHIRON_BIRTH:
return hadSapphironBirth ? 1u : 0u;
default:
@@ -625,9 +607,6 @@ class instance_naxxramas : public InstanceMapScript
ObjectGuid PortalsGUID[4];
ObjectGuid KelthuzadDoorGUID;
ObjectGuid LichKingGUID;
- bool hadAnubRekhanGreet;
- bool hadFaerlinaGreet;
- bool hadThaddiusGreet;
bool hadSapphironBirth;
uint8 CurrentWingTaunt;
diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
index c9f0dcaa3fc..82f148af184 100644
--- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h
+++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
@@ -47,9 +47,6 @@ enum NAXEncounter
enum NAXData
{
DATA_GOTHIK_GATE,
- DATA_HAD_ANUBREKHAN_GREET,
- DATA_HAD_FAERLINA_GREET,
- DATA_HAD_THADDIUS_GREET,
DATA_HAD_SAPPHIRON_BIRTH,
DATA_HORSEMEN_CHECK_ACHIEVEMENT_CREDIT,