mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 00:08:01 +00:00
fix(Scripts/BlackTemple): Implement emotes when opening Najentus and … (#19946)
* fix(Scripts/BlackTemple): Implement emotes when opening Najentus and Den of Mortal Delights * only check if state is done
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
--
|
||||||
|
UPDATE `creature_text` SET `TextRange` = 3 WHERE `CreatureId` = 22984;
|
||||||
@@ -761,6 +761,24 @@ void InstanceScript::LoadInstanceSavedGameobjectStateData()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool InstanceScript::AllBossesDone() const
|
||||||
|
{
|
||||||
|
for (auto const& boss : bosses)
|
||||||
|
if (boss.state != DONE)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool InstanceScript::AllBossesDone(std::initializer_list<uint32> bossIds) const
|
||||||
|
{
|
||||||
|
for (auto const& bossId : bossIds)
|
||||||
|
if (!IsBossDone(bossId))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
std::string InstanceScript::GetBossStateName(uint8 state)
|
std::string InstanceScript::GetBossStateName(uint8 state)
|
||||||
{
|
{
|
||||||
// See enum EncounterState in InstanceScript.h
|
// See enum EncounterState in InstanceScript.h
|
||||||
|
|||||||
@@ -275,6 +275,10 @@ public:
|
|||||||
|
|
||||||
void LoadInstanceSavedGameobjectStateData();
|
void LoadInstanceSavedGameobjectStateData();
|
||||||
|
|
||||||
|
[[nodiscard]] bool IsBossDone(uint32 bossId) const { return GetBossState(bossId) == DONE; };
|
||||||
|
[[nodiscard]] bool AllBossesDone() const;
|
||||||
|
[[nodiscard]] bool AllBossesDone(std::initializer_list<uint32> bossIds) const;
|
||||||
|
|
||||||
TaskScheduler scheduler;
|
TaskScheduler scheduler;
|
||||||
protected:
|
protected:
|
||||||
void SetHeaders(std::string const& dataHeaders);
|
void SetHeaders(std::string const& dataHeaders);
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ enum DataTypes
|
|||||||
DATA_GATHIOS_THE_SHATTERER = 12,
|
DATA_GATHIOS_THE_SHATTERER = 12,
|
||||||
DATA_HIGH_NETHERMANCER_ZEREVOR = 13,
|
DATA_HIGH_NETHERMANCER_ZEREVOR = 13,
|
||||||
DATA_LADY_MALANDE = 14,
|
DATA_LADY_MALANDE = 14,
|
||||||
DATA_VERAS_DARKSHADOW = 15
|
DATA_VERAS_DARKSHADOW = 15,
|
||||||
|
DATA_BLACK_TEMPLE_TRIGGER = 16
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CreatureIds
|
enum CreatureIds
|
||||||
@@ -82,7 +83,8 @@ enum CreatureIds
|
|||||||
NPC_ASHTONGUE_STALKER = 23374,
|
NPC_ASHTONGUE_STALKER = 23374,
|
||||||
NPC_STORM_FURY = 22848,
|
NPC_STORM_FURY = 22848,
|
||||||
|
|
||||||
NPC_DRAGON_TURTLE = 22885
|
NPC_DRAGON_TURTLE = 22885,
|
||||||
|
NPC_BLACK_TEMPLE_TRIGGER = 22984
|
||||||
};
|
};
|
||||||
|
|
||||||
enum GameObjectIds
|
enum GameObjectIds
|
||||||
@@ -113,6 +115,12 @@ enum MiscIds
|
|||||||
SPELL_SUMMON_SHADOWFIENDS = 41159
|
SPELL_SUMMON_SHADOWFIENDS = 41159
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum Texts
|
||||||
|
{
|
||||||
|
EMOTE_NAJENTUS_DEFEATED = 0,
|
||||||
|
EMOTE_LOWER_TEMPLE_DEFEATED = 1
|
||||||
|
};
|
||||||
|
|
||||||
template <class AI, class T>
|
template <class AI, class T>
|
||||||
inline AI* GetBlackTempleAI(T* obj)
|
inline AI* GetBlackTempleAI(T* obj)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ ObjectData const creatureData[] =
|
|||||||
{ NPC_VERAS_DARKSHADOW, DATA_VERAS_DARKSHADOW },
|
{ NPC_VERAS_DARKSHADOW, DATA_VERAS_DARKSHADOW },
|
||||||
{ NPC_AKAMA_ILLIDAN, DATA_AKAMA_ILLIDAN },
|
{ NPC_AKAMA_ILLIDAN, DATA_AKAMA_ILLIDAN },
|
||||||
{ NPC_ILLIDAN_STORMRAGE, DATA_ILLIDAN_STORMRAGE },
|
{ NPC_ILLIDAN_STORMRAGE, DATA_ILLIDAN_STORMRAGE },
|
||||||
|
{ NPC_BLACK_TEMPLE_TRIGGER, DATA_BLACK_TEMPLE_TRIGGER },
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -165,18 +166,31 @@ public:
|
|||||||
if (!InstanceScript::SetBossState(type, state))
|
if (!InstanceScript::SetBossState(type, state))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (type == DATA_SHADE_OF_AKAMA && state == DONE)
|
if (state == DONE)
|
||||||
{
|
{
|
||||||
for (ObjectGuid const& guid : ashtongueGUIDs)
|
switch (type)
|
||||||
if (Creature* ashtongue = instance->GetCreature(guid))
|
{
|
||||||
ashtongue->SetFaction(FACTION_ASHTONGUE_DEATHSWORN);
|
case DATA_HIGH_WARLORD_NAJENTUS:
|
||||||
}
|
if (Creature* trigger = GetCreature(DATA_BLACK_TEMPLE_TRIGGER))
|
||||||
else if (type == DATA_ILLIDARI_COUNCIL && state == DONE)
|
trigger->AI()->Talk(EMOTE_NAJENTUS_DEFEATED);
|
||||||
{
|
break;
|
||||||
if (Creature* akama = GetCreature(DATA_AKAMA_ILLIDAN))
|
case DATA_SHADE_OF_AKAMA:
|
||||||
akama->AI()->DoAction(0);
|
for (ObjectGuid const& guid : ashtongueGUIDs)
|
||||||
}
|
if (Creature* ashtongue = instance->GetCreature(guid))
|
||||||
|
ashtongue->SetFaction(FACTION_ASHTONGUE_DEATHSWORN);
|
||||||
|
break;
|
||||||
|
case DATA_ILLIDARI_COUNCIL:
|
||||||
|
if (Creature* akama = GetCreature(DATA_AKAMA_ILLIDAN))
|
||||||
|
akama->AI()->DoAction(0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AllBossesDone({ DATA_SHADE_OF_AKAMA, DATA_TERON_GOREFIEND, DATA_GURTOGG_BLOODBOIL, DATA_RELIQUARY_OF_SOULS }))
|
||||||
|
if (Creature* trigger = GetCreature(DATA_BLACK_TEMPLE_TRIGGER))
|
||||||
|
trigger->AI()->Talk(EMOTE_LOWER_TEMPLE_DEFEATED);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user