Core/BattleGrounds: update Gameobject hook to support multiple destructable building events.

little cleanup in GameObject.cpp
This commit is contained in:
Supabad
2011-04-10 20:55:17 +02:00
parent 9bed8e49db
commit 3771798a2e
6 changed files with 32 additions and 49 deletions
@@ -524,36 +524,30 @@ void BattlegroundSA::TeleportPlayers()
}
}
void BattlegroundSA::EventPlayerDamagedGO(Player* /*plr*/, GameObject* go, uint8 hitType, uint32 destroyedEvent)
void BattlegroundSA::EventPlayerDamagedGO(Player* /*plr*/, GameObject* go, uint32 eventType)
{
if (!go || !go->GetGOInfo())
return;
switch(hitType)
if (eventType == go->GetGOInfo()->building.damagedEvent)
{
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;
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);
}
if (eventType == go->GetGOInfo()->building.damageEvent)
SendWarningToAll(LANG_BG_SA_IS_UNDER_ATTACK, go->GetGOInfo()->name);
}
void BattlegroundSA::HandleKillUnit(Creature* unit, Player* killer)