fix(Scripts/BFD): Fix problem with Aku'mai event being skippable after crash (#9463)
This commit is contained in:
parent
51adbffae4
commit
d6e8697efe
2 changed files with 17 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue