fix(Scripts/HallowsEnd): Fixed starting "Let the fires come" event. (#13487)

Fixes #13440
Fixes #13441
This commit is contained in:
UltraNix
2022-10-23 17:04:55 +02:00
committed by GitHub
parent 55a5684c87
commit dbd785593d
2 changed files with 107 additions and 104 deletions
@@ -0,0 +1,2 @@
--
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x00000200 WHERE `entry`=23543;
+29 -28
View File
@@ -233,8 +233,6 @@ enum costumedOrphan
// Actions // Actions
ACTION_START_EVENT = 1, ACTION_START_EVENT = 1,
DATA_EVENT = 1,
DATA_ALLOW_START = 2,
// Talks // Talks
TALK_SHADE_CONFLAGRATION = 0, TALK_SHADE_CONFLAGRATION = 0,
@@ -323,7 +321,7 @@ class spell_hallows_end_base_fire : public AuraScript
struct npc_costumed_orphan_matron : public ScriptedAI struct npc_costumed_orphan_matron : public ScriptedAI
{ {
npc_costumed_orphan_matron(Creature* c) : ScriptedAI(c) { } npc_costumed_orphan_matron(Creature* c) : ScriptedAI(c) {}
uint32 eventStarted; uint32 eventStarted;
bool allowQuest; bool allowQuest;
@@ -403,14 +401,6 @@ struct npc_costumed_orphan_matron : public ScriptedAI
} }
} }
uint32 GetData(uint32 param) const override
{
if (param == DATA_ALLOW_START)
return allowQuest;
return 0;
}
void UpdateAI(uint32 diff) override void UpdateAI(uint32 diff) override
{ {
if (eventStarted) if (eventStarted)
@@ -423,12 +413,11 @@ struct npc_costumed_orphan_matron : public ScriptedAI
} }
} }
} }
};
bool OnGossipHello(Player* player, Creature* creature) void sGossipHello(Player* player) override
{ {
QuestRelationBounds pObjectQR = sObjectMgr->GetCreatureQuestRelationBounds(creature->GetEntry()); QuestRelationBounds pObjectQR = sObjectMgr->GetCreatureQuestRelationBounds(me->GetEntry());
QuestRelationBounds pObjectQIR = sObjectMgr->GetCreatureQuestInvolvedRelationBounds(creature->GetEntry()); QuestRelationBounds pObjectQIR = sObjectMgr->GetCreatureQuestInvolvedRelationBounds(me->GetEntry());
QuestMenu& qm = player->PlayerTalkClass->GetQuestMenu(); QuestMenu& qm = player->PlayerTalkClass->GetQuestMenu();
qm.ClearMenu(); qm.ClearMenu();
@@ -438,33 +427,45 @@ bool OnGossipHello(Player* player, Creature* creature)
uint32 quest_id = i->second; uint32 quest_id = i->second;
QuestStatus status = player->GetQuestStatus(quest_id); QuestStatus status = player->GetQuestStatus(quest_id);
if (status == QUEST_STATUS_COMPLETE) if (status == QUEST_STATUS_COMPLETE)
{
qm.AddMenuItem(quest_id, 4); qm.AddMenuItem(quest_id, 4);
}
else if (status == QUEST_STATUS_INCOMPLETE) else if (status == QUEST_STATUS_INCOMPLETE)
{
qm.AddMenuItem(quest_id, 4); qm.AddMenuItem(quest_id, 4);
} }
}
for (QuestRelations::const_iterator i = pObjectQR.first; i != pObjectQR.second; ++i) for (QuestRelations::const_iterator i = pObjectQR.first; i != pObjectQR.second; ++i)
{ {
uint32 quest_id = i->second; uint32 quest_id = i->second;
Quest const* pQuest = sObjectMgr->GetQuestTemplate(quest_id); Quest const* pQuest = sObjectMgr->GetQuestTemplate(quest_id);
if (!pQuest) if (!pQuest)
{
continue; continue;
}
if (!player->CanTakeQuest(pQuest, false)) if (!player->CanTakeQuest(pQuest, false))
{
continue; continue;
}
else if (player->GetQuestStatus(quest_id) == QUEST_STATUS_NONE) else if (player->GetQuestStatus(quest_id) == QUEST_STATUS_NONE)
{ {
switch (quest_id) switch (quest_id)
{ {
case QUEST_LET_THE_FIRES_COME_A: case QUEST_LET_THE_FIRES_COME_A:
case QUEST_LET_THE_FIRES_COME_H: case QUEST_LET_THE_FIRES_COME_H:
if (!creature->AI()->GetData(DATA_ALLOW_START)) if (!allowQuest)
{
qm.AddMenuItem(quest_id, 2); qm.AddMenuItem(quest_id, 2);
}
break; break;
case QUEST_STOP_THE_FIRES_A: case QUEST_STOP_THE_FIRES_A:
case QUEST_STOP_THE_FIRES_H: case QUEST_STOP_THE_FIRES_H:
if (creature->AI()->GetData(DATA_ALLOW_START)) if (allowQuest)
{
qm.AddMenuItem(quest_id, 2); qm.AddMenuItem(quest_id, 2);
}
break; break;
default: default:
qm.AddMenuItem(quest_id, 2); qm.AddMenuItem(quest_id, 2);
@@ -473,17 +474,17 @@ bool OnGossipHello(Player* player, Creature* creature)
} }
} }
player->SendPreparedQuest(creature->GetGUID()); player->SendPreparedQuest(me->GetGUID());
return true; }
}
bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* quest) void sQuestAccept(Player* /*player*/, Quest const* quest) override
{ {
if ((quest->GetQuestId() == QUEST_LET_THE_FIRES_COME_A || quest->GetQuestId() == QUEST_LET_THE_FIRES_COME_H) && !creature->AI()->GetData(DATA_ALLOW_START)) if ((quest->GetQuestId() == QUEST_LET_THE_FIRES_COME_A || quest->GetQuestId() == QUEST_LET_THE_FIRES_COME_H) && !allowQuest)
creature->AI()->DoAction(ACTION_START_EVENT); {
DoAction(ACTION_START_EVENT);
return true; }
} }
};
struct npc_soh_fire_trigger : public NullCreatureAI struct npc_soh_fire_trigger : public NullCreatureAI
{ {