void BattlegroundRV::StartingEventOpenDoors() { // Buff respawn SpawnBGObject(BG_RV_OBJECT_BUFF_1, 90); SpawnBGObject(BG_RV_OBJECT_BUFF_2, 90); // Elevators DoorOpen(BG_RV_OBJECT_ELEVATOR_1); DoorOpen(BG_RV_OBJECT_ELEVATOR_2); setState(BG_RV_STATE_OPEN_FENCES); setTimer(BG_RV_FIRST_TIMER); // Add all DynLoS to the map m_DynLos[0] = GetBgMap()->AddDynLOSObject(763.632385f, -306.162384f, 25.909504f, BG_RV_PILLAR_SMALL_RADIUS, BG_RV_PILLAR_SMALL_HEIGHT); m_DynLos[1] = GetBgMap()->AddDynLOSObject(763.611145f, -261.856750f, 25.909504f, BG_RV_PILLAR_SMALL_RADIUS, BG_RV_PILLAR_SMALL_HEIGHT); m_DynLos[2] = GetBgMap()->AddDynLOSObject(723.644287f, -284.493256f, 24.648525f, BG_RV_PILLAR_BIG_RADIUS, BG_RV_PILLAR_BIG_RADIUS); m_DynLos[3] = GetBgMap()->AddDynLOSObject(802.211609f, -284.493256f, 24.648525f, BG_RV_PILLAR_BIG_RADIUS, BG_RV_PILLAR_BIG_HEIGHT); // Activate the small ones for (uint8 i = 0; i <= 1; i++) GetBgMap()->SetDynLOSObjectState(m_DynLos[i], true); // Should be false at first, TogglePillarCollision will do it. SetPillarCollision(true); TogglePillarCollision(); }
void BattlegroundRV::TogglePillarCollision() { bool apply = GetPillarCollision(); // Toggle visual pillars, pulley, gear, and collision based on previous state for (uint8 i = BG_RV_OBJECT_PILAR_1; i <= BG_RV_OBJECT_GEAR_2; ++i) apply ? DoorOpen(i) : DoorClose(i); for (uint8 i = BG_RV_OBJECT_PILAR_2; i <= BG_RV_OBJECT_PULLEY_2; ++i) apply ? DoorClose(i) : DoorOpen(i); for (uint8 i = BG_RV_OBJECT_PILAR_1; i <= BG_RV_OBJECT_PILAR_COLLISION_4; ++i) { if (GameObject* gob = GetBgMap()->GetGameObject(BgObjects[i])) { if (i >= BG_RV_OBJECT_PILAR_COLLISION_1) { uint32 _state = GO_STATE_READY; if (gob->GetGOInfo()->door.startOpen) _state = GO_STATE_ACTIVE; gob->SetGoState(apply ? (GOState)_state : (GOState)(!_state)); if (gob->GetGOInfo()->door.startOpen) gob->EnableCollision(!apply); // Forced collision toggle } for (BattlegroundPlayerMap::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER))) gob->SendUpdateToPlayer(player); } } SetPillarCollision(!apply); }
void BattlegroundRV::StartingEventOpenDoors() { // Buff respawn SpawnBGObject(BG_RV_OBJECT_BUFF_1, 90); SpawnBGObject(BG_RV_OBJECT_BUFF_2, 90); // Elevators DoorOpen(BG_RV_OBJECT_ELEVATOR_1); DoorOpen(BG_RV_OBJECT_ELEVATOR_2); setState(BG_RV_STATE_OPEN_FENCES); setTimer(BG_RV_FIRST_TIMER); // Should be false at first, TogglePillarCollision will do it. SetPillarCollision(true); TogglePillarCollision(); }