mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 01:15:35 +01:00
Merge remote-tracking branch 'origin/master' into 4.3.4
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user