Battleground/Strand of the Ancients: Fix broken gate state
This commit is contained in:
@@ -534,16 +534,16 @@ void BattlegroundSA::EventPlayerDamagedGO(Player* /*player*/, GameObject* go, ui
|
|||||||
|
|
||||||
if (eventType == go->GetGOInfo()->building.damagedEvent)
|
if (eventType == go->GetGOInfo()->building.damagedEvent)
|
||||||
{
|
{
|
||||||
uint32 i = GetGateIDFromDestroyEventID(eventType);
|
uint32 i = getGateIdFromDamagedOrDestroyEventId(eventType);
|
||||||
GateStatus[i] = BG_SA_GATE_DAMAGED;
|
GateStatus[i] = BG_SA_GATE_DAMAGED;
|
||||||
uint32 uws = GetWorldStateFromGateID(i);
|
uint32 uws = getWorldStateFromGateId(i);
|
||||||
if (uws)
|
if (uws)
|
||||||
UpdateWorldState(uws, GateStatus[i]);
|
UpdateWorldState(uws, GateStatus[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eventType == go->GetGOInfo()->building.destroyedEvent)
|
if (eventType == go->GetGOInfo()->building.destroyedEvent)
|
||||||
{
|
{
|
||||||
if (go->GetGOInfo()->building.destroyedEvent == 19837)
|
if (go->GetGOInfo()->building.destroyedEvent == BG_SA_EVENT_ANCIENT_GATE_DESTROYED)
|
||||||
SendWarningToAll(LANG_BG_SA_CHAMBER_BREACHED);
|
SendWarningToAll(LANG_BG_SA_CHAMBER_BREACHED);
|
||||||
else
|
else
|
||||||
SendWarningToAll(LANG_BG_SA_WAS_DESTROYED, go->GetGOInfo()->name.c_str());
|
SendWarningToAll(LANG_BG_SA_WAS_DESTROYED, go->GetGOInfo()->name.c_str());
|
||||||
@@ -603,7 +603,7 @@ void BattlegroundSA::DemolisherStartState(bool start)
|
|||||||
|
|
||||||
void BattlegroundSA::DestroyGate(Player* player, GameObject* go)
|
void BattlegroundSA::DestroyGate(Player* player, GameObject* go)
|
||||||
{
|
{
|
||||||
uint32 i = GetGateIDFromDestroyEventID(go->GetGOInfo()->building.destroyedEvent);
|
uint32 i = getGateIdFromDamagedOrDestroyEventId(go->GetGOInfo()->building.destroyedEvent);
|
||||||
if (!GateStatus[i])
|
if (!GateStatus[i])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -612,7 +612,7 @@ void BattlegroundSA::DestroyGate(Player* player, GameObject* go)
|
|||||||
if (g->GetGOValue()->Building.Health == 0)
|
if (g->GetGOValue()->Building.Health == 0)
|
||||||
{
|
{
|
||||||
GateStatus[i] = BG_SA_GATE_DESTROYED;
|
GateStatus[i] = BG_SA_GATE_DESTROYED;
|
||||||
uint32 uws = GetWorldStateFromGateID(i);
|
uint32 uws = getWorldStateFromGateId(i);
|
||||||
if (uws)
|
if (uws)
|
||||||
UpdateWorldState(uws, GateStatus[i]);
|
UpdateWorldState(uws, GateStatus[i]);
|
||||||
bool rewardHonor = true;
|
bool rewardHonor = true;
|
||||||
|
|||||||
@@ -45,9 +45,30 @@ enum BG_SA_Status
|
|||||||
|
|
||||||
enum BG_SA_GateState
|
enum BG_SA_GateState
|
||||||
{
|
{
|
||||||
BG_SA_GATE_OK = 1,
|
BG_SA_GATE_OK = 1,
|
||||||
BG_SA_GATE_DAMAGED = 2,
|
BG_SA_GATE_DAMAGED = 2,
|
||||||
BG_SA_GATE_DESTROYED = 3
|
BG_SA_GATE_DESTROYED = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
enum BG_SA_EventIdGate
|
||||||
|
{
|
||||||
|
BG_SA_EVENT_GREEN_GATE_DAMAGED = 19041,
|
||||||
|
BG_SA_EVENT_GREEN_GATE_DESTROYED = 19046,
|
||||||
|
|
||||||
|
BG_SA_EVENT_BLUE_GATE_DAMAGED = 19040,
|
||||||
|
BG_SA_EVENT_BLUE_GATE_DESTROYED = 19045,
|
||||||
|
|
||||||
|
BG_SA_EVENT_RED_GATE_DAMAGED = 19042,
|
||||||
|
BG_SA_EVENT_RED_GATE_DESTROYED = 19047,
|
||||||
|
|
||||||
|
BG_SA_EVENT_PURPLE_GATE_DAMAGED = 19048,
|
||||||
|
BG_SA_EVENT_PURPLE_GATE_DESTROYED = 19043,
|
||||||
|
|
||||||
|
BG_SA_EVENT_YELLOW_GATE_DAMAGED = 19049,
|
||||||
|
BG_SA_EVENT_YELLOW_GATE_DESTROYED = 19044,
|
||||||
|
|
||||||
|
BG_SA_EVENT_ANCIENT_GATE_DAMAGED = 19836,
|
||||||
|
BG_SA_EVENT_ANCIENT_GATE_DESTROYED = 19837
|
||||||
};
|
};
|
||||||
|
|
||||||
enum BG_SA_Timers
|
enum BG_SA_Timers
|
||||||
@@ -443,34 +464,60 @@ class BattlegroundSA : public Battleground
|
|||||||
/// Called when a player use a gamobject (relic)
|
/// Called when a player use a gamobject (relic)
|
||||||
virtual void EventPlayerUsedGO(Player* Source, GameObject* object);
|
virtual void EventPlayerUsedGO(Player* Source, GameObject* object);
|
||||||
/// Return gate id, relative to bg data, according to gameobject id
|
/// Return gate id, relative to bg data, according to gameobject id
|
||||||
uint32 GetGateIDFromDestroyEventID(uint32 id)
|
uint32 getGateIdFromDamagedOrDestroyEventId(uint32 id)
|
||||||
{
|
{
|
||||||
uint32 i = 0;
|
|
||||||
switch (id)
|
switch (id)
|
||||||
{
|
{
|
||||||
case 19046: i = BG_SA_GREEN_GATE; break; //Green gate destroyed
|
// Green gate
|
||||||
case 19045: i = BG_SA_BLUE_GATE; break; //blue gate
|
case BG_SA_EVENT_GREEN_GATE_DAMAGED:
|
||||||
case 19047: i = BG_SA_RED_GATE; break; //red gate
|
case BG_SA_EVENT_GREEN_GATE_DESTROYED:
|
||||||
case 19048: i = BG_SA_PURPLE_GATE; break; //purple gate
|
return BG_SA_GREEN_GATE;
|
||||||
case 19049: i = BG_SA_YELLOW_GATE; break; //yellow gate
|
// Blue gate
|
||||||
case 19837: i = BG_SA_ANCIENT_GATE; break; //ancient gate
|
case BG_SA_EVENT_BLUE_GATE_DAMAGED:
|
||||||
|
case BG_SA_EVENT_BLUE_GATE_DESTROYED:
|
||||||
|
return BG_SA_BLUE_GATE;
|
||||||
|
// Red gate
|
||||||
|
case BG_SA_EVENT_RED_GATE_DAMAGED:
|
||||||
|
case BG_SA_EVENT_RED_GATE_DESTROYED:
|
||||||
|
return BG_SA_RED_GATE;
|
||||||
|
// Purple gate
|
||||||
|
case BG_SA_EVENT_PURPLE_GATE_DAMAGED:
|
||||||
|
case BG_SA_EVENT_PURPLE_GATE_DESTROYED:
|
||||||
|
return BG_SA_PURPLE_GATE;
|
||||||
|
// Yellow gate
|
||||||
|
case BG_SA_EVENT_YELLOW_GATE_DAMAGED:
|
||||||
|
case BG_SA_EVENT_YELLOW_GATE_DESTROYED:
|
||||||
|
return BG_SA_YELLOW_GATE;
|
||||||
|
// Ancient gate
|
||||||
|
case BG_SA_EVENT_ANCIENT_GATE_DAMAGED:
|
||||||
|
case BG_SA_EVENT_ANCIENT_GATE_DESTROYED:
|
||||||
|
return BG_SA_ANCIENT_GATE;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return i;
|
return 0;
|
||||||
}
|
}
|
||||||
/// Return worldstate id, according to door id
|
/// Return worldstate id, according to door id
|
||||||
uint32 GetWorldStateFromGateID(uint32 id)
|
uint32 getWorldStateFromGateId(uint32 id)
|
||||||
{
|
{
|
||||||
uint32 uws = 0;
|
|
||||||
switch (id)
|
switch (id)
|
||||||
{
|
{
|
||||||
case BG_SA_GREEN_GATE: uws = BG_SA_GREEN_GATEWS; break;
|
case BG_SA_GREEN_GATE:
|
||||||
case BG_SA_YELLOW_GATE: uws = BG_SA_YELLOW_GATEWS; break;
|
return BG_SA_GREEN_GATEWS;
|
||||||
case BG_SA_BLUE_GATE: uws = BG_SA_BLUE_GATEWS; break;
|
case BG_SA_YELLOW_GATE:
|
||||||
case BG_SA_RED_GATE: uws = BG_SA_RED_GATEWS; break;
|
return BG_SA_YELLOW_GATEWS;
|
||||||
case BG_SA_PURPLE_GATE: uws = BG_SA_PURPLE_GATEWS; break;
|
case BG_SA_BLUE_GATE:
|
||||||
case BG_SA_ANCIENT_GATE: uws = BG_SA_ANCIENT_GATEWS; break;
|
return BG_SA_BLUE_GATEWS;
|
||||||
|
case BG_SA_RED_GATE:
|
||||||
|
return BG_SA_RED_GATEWS;
|
||||||
|
case BG_SA_PURPLE_GATE:
|
||||||
|
return BG_SA_PURPLE_GATEWS;
|
||||||
|
case BG_SA_ANCIENT_GATE:
|
||||||
|
return BG_SA_ANCIENT_GATEWS;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return uws;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Called on battleground ending
|
/// Called on battleground ending
|
||||||
|
|||||||
Reference in New Issue
Block a user