From ad26178c3b5c393594c7038fb44a98e9cd9e7733 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Wed, 22 Aug 2012 18:21:12 +0200 Subject: Core/Battlefield: Fix vehicle count --- src/server/game/Battlefield/Zones/BattlefieldWG.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') 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; } } -- cgit v1.2.3 From 85ed0e32a9b2b029c1db3cf1a914b3940cf72b9b Mon Sep 17 00:00:00 2001 From: Kandera Date: Wed, 22 Aug 2012 13:08:57 -0400 Subject: Core/Wintergrasp: fix possible crash when rebuild hits non rebuildable buildings --- src/server/game/Battlefield/Zones/BattlefieldWG.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') 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]); } -- cgit v1.2.3 From 53db3d9700408c4053608e00370c0dfe5bce20fb Mon Sep 17 00:00:00 2001 From: Kandera Date: Thu, 23 Aug 2012 11:58:57 -0400 Subject: Core/Gameobject: fix collision handling. --- src/server/game/Entities/GameObject/GameObject.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 08518217e26..99c9f91fb0a 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); @@ -1929,7 +1929,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) @@ -1951,13 +1951,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) - startOpen = !startOpen; + 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); } } -- cgit v1.2.3 From a1b3ec2e21d8510b99c2422a76dc5af004fbdc26 Mon Sep 17 00:00:00 2001 From: Kandera Date: Thu, 23 Aug 2012 12:10:04 -0400 Subject: Core/Gameobject: fix build --- src/server/game/Entities/GameObject/GameObject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 99c9f91fb0a..b229f00fcd7 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1952,7 +1952,7 @@ void GameObject::SetGoState(GOState state) bool startOpen = (GetGoType() == GAMEOBJECT_TYPE_DOOR || GetGoType() == GAMEOBJECT_TYPE_BUTTON ? GetGOInfo()->door.startOpen : false); if (state != GO_STATE_READY) - startOpen = !startOpen + startOpen = !startOpen; EnableCollision(startOpen); } -- cgit v1.2.3