Skip to content

Commit 846d352

Browse files
committed
GO: Fix aura generator not applying other effects and add condition for cloak dome
1 parent 7c65eed commit 846d352

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

src/game/AI/ScriptDevAI/scripts/world/go_scripts.cpp

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,6 +1133,30 @@ struct go_aura_generator : public GameObjectAI
11331133
ChangeState(bool(miscValue));
11341134
}
11351135

1136+
bool CustomCondition(Player const* player)
1137+
{
1138+
switch (m_spellInfo->Id)
1139+
{
1140+
case 59652: // Cloak Dome (Aura Generator)
1141+
case 61342: // Cloak Dome (Aura Generator 2)
1142+
{
1143+
{
1144+
QuestStatus questStatus = player->GetQuestStatus(13379);
1145+
if (questStatus == QUEST_STATUS_INCOMPLETE || questStatus == QUEST_STATUS_COMPLETE)
1146+
return true;
1147+
}
1148+
{
1149+
QuestStatus questStatus = player->GetQuestStatus(13383);
1150+
if (questStatus == QUEST_STATUS_INCOMPLETE || questStatus == QUEST_STATUS_COMPLETE)
1151+
return true;
1152+
}
1153+
return false;
1154+
}
1155+
}
1156+
1157+
return true;
1158+
}
1159+
11361160
void ChangeState(bool apply)
11371161
{
11381162
m_started = apply;
@@ -1165,6 +1189,8 @@ struct go_aura_generator : public GameObjectAI
11651189
for (auto& ref : m_go->GetMap()->GetPlayers())
11661190
{
11671191
Player* player = ref.getSource();
1192+
if (!CustomCondition(player))
1193+
continue;
11681194
float x, y, z;
11691195
m_go->GetPosition(x, y, z);
11701196
auto bounds = player->GetSpellAuraHolderBounds(m_spellInfo->Id);
@@ -1184,8 +1210,14 @@ struct go_aura_generator : public GameObjectAI
11841210
if (isCloseEnough)
11851211
{
11861212
myHolder = CreateSpellAuraHolder(m_spellInfo, player, m_go);
1187-
GameObjectAura* Aur = new GameObjectAura(m_spellInfo, EFFECT_INDEX_0, nullptr, nullptr, myHolder, player, m_go);
1188-
myHolder->AddAura(Aur, EFFECT_INDEX_0);
1213+
for (uint32 i = 0; i < MAX_EFFECT_INDEX; ++i)
1214+
{
1215+
if (m_spellInfo->EffectApplyAuraName[i] > 0)
1216+
{
1217+
GameObjectAura* Aur = new GameObjectAura(m_spellInfo, SpellEffectIndex(i), nullptr, nullptr, myHolder, player, m_go);
1218+
myHolder->AddAura(Aur, SpellEffectIndex(i));
1219+
}
1220+
}
11891221
if (!player->AddSpellAuraHolder(myHolder))
11901222
delete myHolder;
11911223
}

0 commit comments

Comments
 (0)