mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Scripts/BFD): Fix problem with Aku'mai event being skippable after crash (#9463)
This commit is contained in:
@@ -25,8 +25,9 @@ enum Data
|
|||||||
TYPE_FIRE2 = 2,
|
TYPE_FIRE2 = 2,
|
||||||
TYPE_FIRE3 = 3,
|
TYPE_FIRE3 = 3,
|
||||||
TYPE_FIRE4 = 4,
|
TYPE_FIRE4 = 4,
|
||||||
TYPE_AKU_MAI = 5,
|
TYPE_AKU_MAI_EVENT = 5,
|
||||||
MAX_ENCOUNTERS = 6
|
TYPE_AKU_MAI = 6,
|
||||||
|
MAX_ENCOUNTERS = 7
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CreatureIds
|
enum CreatureIds
|
||||||
|
|||||||
@@ -52,8 +52,13 @@ public:
|
|||||||
unit->GetEntry() == NPC_MURKSHALLOW_SOFTSHELL || unit->GetEntry() == NPC_AKU_MAI_SNAPJAW))
|
unit->GetEntry() == NPC_MURKSHALLOW_SOFTSHELL || unit->GetEntry() == NPC_AKU_MAI_SNAPJAW))
|
||||||
{
|
{
|
||||||
if (--_requiredDeaths == 0)
|
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);
|
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_2:
|
||||||
case GO_FIRE_OF_AKU_MAI_3:
|
case GO_FIRE_OF_AKU_MAI_3:
|
||||||
case GO_FIRE_OF_AKU_MAI_4:
|
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->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
|
||||||
gameobject->SetGoState(GO_STATE_ACTIVE);
|
gameobject->SetGoState(GO_STATE_ACTIVE);
|
||||||
@@ -80,7 +85,7 @@ public:
|
|||||||
gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
gameobject->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||||
break;
|
break;
|
||||||
case GO_AKU_MAI_DOOR:
|
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);
|
HandleGameObject(ObjectGuid::Empty, true, gameobject);
|
||||||
_akumaiPortalGUID = gameobject->GetGUID();
|
_akumaiPortalGUID = gameobject->GetGUID();
|
||||||
break;
|
break;
|
||||||
@@ -97,6 +102,7 @@ public:
|
|||||||
case TYPE_FIRE3:
|
case TYPE_FIRE3:
|
||||||
case TYPE_FIRE4:
|
case TYPE_FIRE4:
|
||||||
case TYPE_AKU_MAI:
|
case TYPE_AKU_MAI:
|
||||||
|
case TYPE_AKU_MAI_EVENT:
|
||||||
_encounters[type] = data;
|
_encounters[type] = data;
|
||||||
break;
|
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:
|
private:
|
||||||
uint32 _encounters[MAX_ENCOUNTERS];
|
uint32 _encounters[MAX_ENCOUNTERS];
|
||||||
ObjectGuid _akumaiPortalGUID;
|
ObjectGuid _akumaiPortalGUID;
|
||||||
|
|||||||
Reference in New Issue
Block a user