diff options
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Battlefield/Zones/BattlefieldWG.h | 11 | ||||
-rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.cpp | 11 |
3 files changed, 17 insertions, 17 deletions
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 8e58dcdc5c0..634b1bb2cea 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -523,13 +523,13 @@ void BattlefieldWG::OnCreatureCreate(Creature* creature) case NPC_WINTERGRASP_CATAPULT: case NPC_WINTERGRASP_DEMOLISHER: { - if (!creature->GetCreatorGUID() || !sObjectAccessor->FindPlayer(creature->GetCreatorGUID())) + if (!creature->ToTempSummon()->GetSummonerGUID() || !sObjectAccessor->FindPlayer(creature->ToTempSummon()->GetSummonerGUID())) { creature->setDeathState(DEAD); creature->RemoveFromWorld(); return; } - Player* creator = sObjectAccessor->FindPlayer(creature->GetCreatorGUID()); + Player* creator = sObjectAccessor->FindPlayer(creature->ToTempSummon()->GetSummonerGUID()); TeamId team = creator->GetTeamId(); if (team == TEAM_HORDE) @@ -554,7 +554,7 @@ void BattlefieldWG::OnCreatureCreate(Creature* creature) if (GetData(BATTLEFIELD_WG_DATA_VEHICLE_A) < GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A)) { UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_A, 1); - creature->AddAura(SPELL_ALLIANCE_FLAG,creature); + creature->AddAura(SPELL_ALLIANCE_FLAG, creature); creature->setFaction(creator->getFaction()); m_vehicles[team].insert(creature->GetGUID()); UpdateVehicleCountWG(); @@ -699,10 +699,10 @@ bool BattlefieldWG::FindAndRemoveVehicleFromList(Unit* vehicle) if (m_vehicles[itr].find(vehicle->GetGUID()) != m_vehicles[itr].end()) { m_vehicles[itr].erase(vehicle->GetGUID()); - if (itr == WintergraspFaction[TEAM_HORDE]) - UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_H,-1); + if (itr == TEAM_HORDE) + UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_H, -1); else - UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_A,-1); + UpdateData(BATTLEFIELD_WG_DATA_VEHICLE_A, -1); return true; } } diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 924ff1ad454..be062704b52 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -1192,11 +1192,14 @@ struct BfWGGameObjectBuilding } // Rebuild gameobject - m_Build->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, NULL, true); + if (m_Build->IsDestructibleBuilding()) + { + m_Build->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, NULL, true); - // Update worldstate - m_State = BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT - (m_Team * 3); - m_WG->SendUpdateWorldState(m_WorldState, m_State); + // Update worldstate + m_State = BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT - (m_Team * 3); + m_WG->SendUpdateWorldState(m_WorldState, m_State); + } UpdateCreatureAndGo(); m_Build->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[m_Team]); } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index e1b312d83d0..18ed5632793 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -135,7 +135,7 @@ void GameObject::AddToWorld() sObjectAccessor->AddObject(this); bool startOpen = (GetGoType() == GAMEOBJECT_TYPE_DOOR || GetGoType() == GAMEOBJECT_TYPE_BUTTON ? GetGOInfo()->door.startOpen : false); // The state can be changed after GameObject::Create but before GameObject::AddToWorld - bool toggledState = GetGOData() ? GetGOData()->go_state == GO_STATE_READY : false; + bool toggledState = GetGOData() ? GetGOData()->go_state != GO_STATE_READY : false; if (m_model) GetMap()->InsertGameObjectModel(*m_model); @@ -1930,7 +1930,7 @@ void GameObject::SetLootState(LootState state, Unit* unit) bool startOpen = (GetGoType() == GAMEOBJECT_TYPE_DOOR || GetGoType() == GAMEOBJECT_TYPE_BUTTON ? GetGOInfo()->door.startOpen : false); // Use the current go state - if (GetGoState() != GO_STATE_ACTIVE) + if (GetGoState() != GO_STATE_READY) startOpen = !startOpen; if (state == GO_ACTIVATED || state == GO_JUST_DEACTIVATED) @@ -1952,13 +1952,10 @@ void GameObject::SetGoState(GOState state) // startOpen determines whether we are going to add or remove the LoS on activation bool startOpen = (GetGoType() == GAMEOBJECT_TYPE_DOOR || GetGoType() == GAMEOBJECT_TYPE_BUTTON ? GetGOInfo()->door.startOpen : false); - if (GetGOData() && GetGOData()->go_state == GO_STATE_READY) + if (state != GO_STATE_READY) startOpen = !startOpen; - if (state == GO_STATE_ACTIVE || state == GO_STATE_ACTIVE_ALTERNATIVE) - EnableCollision(startOpen); - else if (state == GO_STATE_READY) - EnableCollision(!startOpen); + EnableCollision(startOpen); } } |