fix(Scripts/BFD): Fix problem with Aku'mai event being skippable after crash (#9463)

This commit is contained in:
Noxies
2021-12-02 15:48:49 +01:00
committed by GitHub
parent 51adbffae4
commit d6e8697efe
2 changed files with 17 additions and 5 deletions

View File

@@ -25,8 +25,9 @@ enum Data
TYPE_FIRE2 = 2,
TYPE_FIRE3 = 3,
TYPE_FIRE4 = 4,
TYPE_AKU_MAI = 5,
MAX_ENCOUNTERS = 6
TYPE_AKU_MAI_EVENT = 5,
TYPE_AKU_MAI = 6,
MAX_ENCOUNTERS = 7
};
enum CreatureIds

View File

@@ -52,8 +52,13 @@ public:
unit->GetEntry() == NPC_MURKSHALLOW_SOFTSHELL || unit->GetEntry() == NPC_AKU_MAI_SNAPJAW))
{
if (--_requiredDeaths == 0)
if (_encounters[TYPE_FIRE1] == DONE && _encounters[TYPE_FIRE2] == DONE && _encounters[TYPE_FIRE3] == DONE && _encounters[TYPE_FIRE4] == DONE)
{
if (IsFireEventDone())
{
HandleGameObject(_akumaiPortalGUID, true);
_encounters[TYPE_AKU_MAI_EVENT] = DONE;
}
}
}
}
@@ -65,7 +70,7 @@ public:
case GO_FIRE_OF_AKU_MAI_2:
case GO_FIRE_OF_AKU_MAI_3:
case GO_FIRE_OF_AKU_MAI_4:
if (_encounters[gameobject->GetEntry() - GO_FIRE_OF_AKU_MAI_1 + 1] == DONE)
if (_encounters[TYPE_AKU_MAI_EVENT] == DONE)
{
gameobject->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
gameobject->SetGoState(GO_STATE_ACTIVE);
@@ -80,7 +85,7 @@ public:
gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
break;
case GO_AKU_MAI_DOOR:
if (_encounters[TYPE_FIRE1] == DONE && _encounters[TYPE_FIRE2] == DONE && _encounters[TYPE_FIRE3] == DONE && _encounters[TYPE_FIRE4] == DONE)
if (IsFireEventDone() && _encounters[TYPE_AKU_MAI_EVENT] == DONE)
HandleGameObject(ObjectGuid::Empty, true, gameobject);
_akumaiPortalGUID = gameobject->GetGUID();
break;
@@ -97,6 +102,7 @@ public:
case TYPE_FIRE3:
case TYPE_FIRE4:
case TYPE_AKU_MAI:
case TYPE_AKU_MAI_EVENT:
_encounters[type] = data;
break;
}
@@ -131,6 +137,11 @@ public:
}
}
bool IsFireEventDone()
{
return _encounters[TYPE_FIRE1] == DONE && _encounters[TYPE_FIRE2] == DONE && _encounters[TYPE_FIRE3] == DONE && _encounters[TYPE_FIRE4] == DONE;
}
private:
uint32 _encounters[MAX_ENCOUNTERS];
ObjectGuid _akumaiPortalGUID;