void BattlegroundSA::EventPlayerDamagedGO(Player* /*plr*/, GameObject* go, uint8 hitType, uint32 destroyedEvent) { if (!go || !go->GetGOInfo()) return; switch(hitType) { case BG_OBJECT_DMG_HIT_TYPE_JUST_DAMAGED://under attack SendWarningToAll(LANG_BG_SA_IS_UNDER_ATTACK, go->GetGOInfo()->name); break; case BG_OBJECT_DMG_HIT_TYPE_DAMAGED: break; case BG_OBJECT_DMG_HIT_TYPE_JUST_HIGH_DAMAGED: { uint32 i = GetGateIDFromDestroyEventID(destroyedEvent); GateStatus[i] = BG_SA_GATE_DAMAGED; uint32 uws = GetWorldStateFromGateID(i); if (uws) UpdateWorldState(uws, GateStatus[i]); break; } case BG_OBJECT_DMG_HIT_TYPE_HIGH_DAMAGED: break; case BG_OBJECT_DMG_HIT_TYPE_JUST_DESTROYED://handled at DestroyGate() if (destroyedEvent == 19837) SendWarningToAll(LANG_BG_SA_CHAMBER_BREACHED); else SendWarningToAll(LANG_BG_SA_WAS_DESTROYED, go->GetGOInfo()->name); break; } }
void BattlegroundSA::EventPlayerDamagedGO(Player* /*player*/, GameObject* go, uint32 eventType) { if (!go || !go->GetGOInfo()) return; if (eventType == go->GetGOInfo()->building.damagedEvent) { uint32 i = GetGateIDFromDestroyEventID(eventType); GateStatus[i] = BG_SA_GATE_DAMAGED; uint32 uws = GetWorldStateFromGateID(i); if (uws) UpdateWorldState(uws, GateStatus[i]); } if (eventType == go->GetGOInfo()->building.destroyedEvent) { if (go->GetGOInfo()->building.destroyedEvent == 19837) SendWarningToAll(LANG_BG_SA_CHAMBER_BREACHED); else SendWarningToAll(LANG_BG_SA_WAS_DESTROYED, go->GetGOInfo()->name.c_str()); } if (eventType == go->GetGOInfo()->building.damageEvent) SendWarningToAll(LANG_BG_SA_IS_UNDER_ATTACK, go->GetGOInfo()->name.c_str()); }
void BattlegroundSA::DestroyGate(Player* player, GameObject* go) { uint32 i = GetGateIDFromDestroyEventID(go->GetGOInfo()->building.destroyedEvent); if (!GateStatus[i]) return; if (GameObject* g = GetBGObject(i)) { if (g->GetGOValue()->Building.Health == 0) { GateStatus[i] = BG_SA_GATE_DESTROYED; uint32 uws = GetWorldStateFromGateID(i); if (uws) UpdateWorldState(uws, GateStatus[i]); bool rewardHonor = true; gateDestroyed = true; switch (i) { case BG_SA_GREEN_GATE: if (GateStatus[BG_SA_BLUE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_BLUE_GATE: if (GateStatus[BG_SA_GREEN_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_RED_GATE: if (GateStatus[BG_SA_PURPLE_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; case BG_SA_PURPLE_GATE: if (GateStatus[BG_SA_RED_GATE] == BG_SA_GATE_DESTROYED) rewardHonor = false; break; } if (i < 5) DelObject(i+9); UpdatePlayerScore(player, SCORE_DESTROYED_WALL, 1); if (rewardHonor) UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(1)); } } }