void BattlefieldWG::ProcessEvent(WorldObject *obj, uint32 eventId) { if (!obj || !IsWarTime()) return; // We handle only gameobjects here GameObject* go = obj->ToGameObject(); if (!go) return; // On click on titan relic if (go->GetEntry() == GO_WINTERGRASP_TITAN_S_RELIC) { if (CanInteractWithRelic()) EndBattle(false); else GetRelic()->SetRespawnTime(RESPAWN_IMMEDIATELY); } // if destroy or damage event, search the wall/tower and update worldstate/send warning message for (GameObjectBuilding::const_iterator itr = BuildingsInZone.begin(); itr != BuildingsInZone.end(); ++itr) { if (go->GetEntry() == (*itr)->m_Build->GetEntry()) { if ((*itr)->m_Build->GetGOInfo()->building.damagedEvent == eventId) (*itr)->Damaged(); if ((*itr)->m_Build->GetGOInfo()->building.destroyedEvent == eventId) (*itr)->Destroyed(); break; } } }
void BattlefieldWG::ProcessEvent(WorldObject* obj, uint32 eventId) { if (!obj || !IsWarTime()) return; // We handle only gameobjects here GameObject* go = obj->ToGameObject(); if (!go) return; // On click on titan relic if (go->GetEntry() == GO_WINTERGRASP_TITAN_S_RELIC) { if (CanInteractWithRelic()) EndBattle(false); else if (GameObject* relic = GetRelic()) relic->SetRespawnTime(RESPAWN_IMMEDIATELY); } // if destroy or damage event, search the wall/tower and update worldstate/send warning message for (GameObjectBuilding::const_iterator itr = BuildingsInZone.begin(); itr != BuildingsInZone.end(); ++itr) { if (GameObject* build = GetGameObject((*itr)->m_BuildGUID)) { if (go->GetEntry() == build->GetEntry()) { if (build->GetGOInfo()->building.damagedEvent == eventId) (*itr)->Damaged(); if (build->GetGOInfo()->building.destroyedEvent == eventId) (*itr)->Destroyed(); // Add Support of Quests Toppling the Towers & Southern Sabotage if (go->GetEntry()==190356 || go->GetEntry()==190357 || go->GetEntry()==190358) { for (GuidSet::const_iterator itr = m_PlayersInWar[GetDefenderTeam()].begin(); itr != m_PlayersInWar[GetDefenderTeam()].end(); ++itr) if (Player* player = sObjectAccessor->FindPlayer(*itr)) player->RewardPlayerAndGroupAtEvent(35074, go); } break; } } } }