TrinityCore
Loading...
Searching...
No Matches
BattlegroundRV.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "BattlegroundRV.h"
19#include "GameObject.h"
20#include "Log.h"
21#include "ObjectAccessor.h"
22#include "Player.h"
23#include "WorldPacket.h"
24#include "WorldStatePackets.h"
25
27{
29
30 _timer = 0;
31 _state = 0;
32 _pillarCollision = false;
33}
34
36{
38 return;
39
40 if (_timer < diff)
41 {
42 switch (_state)
43 {
45 // Open fire (only at game start)
47 DoorOpen(i);
50 break;
53 DoorClose(i);
54 // Fire got closed after five seconds, leaves twenty seconds before toggling pillars
57 break;
61 break;
62 }
63 }
64 else
65 _timer -= diff;
66}
67
69{
70 // Buff respawn
73 // Elevators
76
79
80 // Should be false at first, TogglePillarCollision will do it.
81 _pillarCollision = true;
83}
84
86{
88 return;
89
90 switch (trigger)
91 {
92 case 5224:
93 case 5226:
94 // fire was removed in 3.2.0
95 case 5473:
96 case 5474:
97 break;
98 default:
99 Battleground::HandleAreaTrigger(player, trigger);
100 break;
101 }
102}
103
110
112{
113 // elevators
114 if (!AddObject(BG_RV_OBJECT_ELEVATOR_1, BG_RV_OBJECT_TYPE_ELEVATOR_1, 763.536377f, -294.535767f, 0.505383f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
115 || !AddObject(BG_RV_OBJECT_ELEVATOR_2, BG_RV_OBJECT_TYPE_ELEVATOR_2, 763.506348f, -273.873352f, 0.505383f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
116 // buffs
117 || !AddObject(BG_RV_OBJECT_BUFF_1, BG_RV_OBJECT_TYPE_BUFF_1, 735.551819f, -284.794678f, 28.276682f, 0.034906f, 0, 0, 0, RESPAWN_IMMEDIATELY)
118 || !AddObject(BG_RV_OBJECT_BUFF_2, BG_RV_OBJECT_TYPE_BUFF_2, 791.224487f, -284.794464f, 28.276682f, 2.600535f, 0, 0, 0, RESPAWN_IMMEDIATELY)
119 // fire
120 || !AddObject(BG_RV_OBJECT_FIRE_1, BG_RV_OBJECT_TYPE_FIRE_1, 743.543457f, -283.799469f, 28.286655f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
121 || !AddObject(BG_RV_OBJECT_FIRE_2, BG_RV_OBJECT_TYPE_FIRE_2, 782.971802f, -283.799469f, 28.286655f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
122 || !AddObject(BG_RV_OBJECT_FIREDOOR_1, BG_RV_OBJECT_TYPE_FIREDOOR_1, 743.711060f, -284.099609f, 27.542587f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
123 || !AddObject(BG_RV_OBJECT_FIREDOOR_2, BG_RV_OBJECT_TYPE_FIREDOOR_2, 783.221252f, -284.133362f, 27.535686f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
124 // Gear
125 || !AddObject(BG_RV_OBJECT_GEAR_1, BG_RV_OBJECT_TYPE_GEAR_1, 763.664551f, -261.872986f, 26.686588f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
126 || !AddObject(BG_RV_OBJECT_GEAR_2, BG_RV_OBJECT_TYPE_GEAR_2, 763.578979f, -306.146149f, 26.665222f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
127 // Pulley
128 || !AddObject(BG_RV_OBJECT_PULLEY_1, BG_RV_OBJECT_TYPE_PULLEY_1, 700.722290f, -283.990662f, 39.517582f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
129 || !AddObject(BG_RV_OBJECT_PULLEY_2, BG_RV_OBJECT_TYPE_PULLEY_2, 826.303833f, -283.996429f, 39.517582f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
130 // Pilars
131 || !AddObject(BG_RV_OBJECT_PILAR_1, BG_RV_OBJECT_TYPE_PILAR_1, 763.632385f, -306.162384f, 25.909504f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
132 || !AddObject(BG_RV_OBJECT_PILAR_2, BG_RV_OBJECT_TYPE_PILAR_2, 723.644287f, -284.493256f, 24.648525f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
133 || !AddObject(BG_RV_OBJECT_PILAR_3, BG_RV_OBJECT_TYPE_PILAR_3, 763.611145f, -261.856750f, 25.909504f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
134 || !AddObject(BG_RV_OBJECT_PILAR_4, BG_RV_OBJECT_TYPE_PILAR_4, 802.211609f, -284.493256f, 24.648525f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
135
136 // Pilars Collision
137 || !AddObject(BG_RV_OBJECT_PILAR_COLLISION_1, BG_RV_OBJECT_TYPE_PILAR_COLLISION_1, 763.632385f, -306.162384f, 30.639660f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY)
138 || !AddObject(BG_RV_OBJECT_PILAR_COLLISION_2, BG_RV_OBJECT_TYPE_PILAR_COLLISION_2, 723.644287f, -284.493256f, 32.382710f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
139 || !AddObject(BG_RV_OBJECT_PILAR_COLLISION_3, BG_RV_OBJECT_TYPE_PILAR_COLLISION_3, 763.611145f, -261.856750f, 30.639660f, 0.000000f, 0, 0, 0, RESPAWN_IMMEDIATELY)
140 || !AddObject(BG_RV_OBJECT_PILAR_COLLISION_4, BG_RV_OBJECT_TYPE_PILAR_COLLISION_4, 802.211609f, -284.493256f, 32.382710f, 3.141593f, 0, 0, 0, RESPAWN_IMMEDIATELY))
141 {
142 TC_LOG_ERROR("sql.sql", "BatteGroundRV: Failed to spawn some object!");
143 return false;
144 }
145 return true;
146}
147
149{
150 // Toggle visual pillars, pulley, gear, and collision based on previous state
153
156
158 {
159 if (GameObject* go = GetBGObject(i))
160 {
162 {
163 GOState state = ((go->GetGOInfo()->door.startOpen != 0) == _pillarCollision) ? GO_STATE_ACTIVE : GO_STATE_READY;
164 go->SetGoState(state);
165 }
166
167 for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
168 if (Player* player = ObjectAccessor::FindPlayer(itr->first))
169 go->SendUpdateToPlayer(player);
170 }
171 }
172
174}
@ BG_RV_OBJECT_PILAR_1
@ BG_RV_OBJECT_PULLEY_2
@ BG_RV_OBJECT_PILAR_COLLISION_1
@ BG_RV_OBJECT_PILAR_4
@ BG_RV_OBJECT_ELEVATOR_1
@ BG_RV_OBJECT_MAX
@ BG_RV_OBJECT_PILAR_COLLISION_3
@ BG_RV_OBJECT_FIRE_2
@ BG_RV_OBJECT_GEAR_1
@ BG_RV_OBJECT_ELEVATOR_2
@ BG_RV_OBJECT_FIREDOOR_2
@ BG_RV_OBJECT_FIREDOOR_1
@ BG_RV_OBJECT_PILAR_COLLISION_4
@ BG_RV_OBJECT_PULLEY_1
@ BG_RV_OBJECT_GEAR_2
@ BG_RV_OBJECT_PILAR_2
@ BG_RV_OBJECT_PILAR_COLLISION_2
@ BG_RV_OBJECT_BUFF_1
@ BG_RV_OBJECT_BUFF_2
@ BG_RV_OBJECT_FIRE_1
@ BG_RV_OBJECT_PILAR_3
@ BG_RV_OBJECT_TYPE_PILAR_2
@ BG_RV_OBJECT_TYPE_PILAR_1
@ BG_RV_OBJECT_TYPE_PILAR_4
@ BG_RV_OBJECT_TYPE_ELEVATOR_1
@ BG_RV_OBJECT_TYPE_BUFF_1
@ BG_RV_OBJECT_TYPE_BUFF_2
@ BG_RV_OBJECT_TYPE_PULLEY_2
@ BG_RV_OBJECT_TYPE_PILAR_COLLISION_2
@ BG_RV_OBJECT_TYPE_GEAR_2
@ BG_RV_OBJECT_TYPE_PILAR_COLLISION_3
@ BG_RV_OBJECT_TYPE_FIREDOOR_2
@ BG_RV_OBJECT_TYPE_PILAR_COLLISION_4
@ BG_RV_OBJECT_TYPE_PILAR_COLLISION_1
@ BG_RV_OBJECT_TYPE_PILAR_3
@ BG_RV_OBJECT_TYPE_FIREDOOR_1
@ BG_RV_OBJECT_TYPE_FIRE_2
@ BG_RV_OBJECT_TYPE_ELEVATOR_2
@ BG_RV_OBJECT_TYPE_GEAR_1
@ BG_RV_OBJECT_TYPE_PULLEY_1
@ BG_RV_OBJECT_TYPE_FIRE_1
@ BG_RV_PILLAR_SWITCH_TIMER
@ BG_RV_CLOSE_FIRE_TIMER
@ BG_RV_FIRST_TIMER
@ BG_RV_FIRE_TO_PILLAR_TIMER
@ BG_RV_STATE_SWITCH_PILLARS
@ BG_RV_STATE_CLOSE_FIRE
@ BG_RV_WORLD_STATE
@ BG_RV_STATE_OPEN_FENCES
@ RESPAWN_IMMEDIATELY
@ STATUS_IN_PROGRESS
uint8_t uint8
Definition Define.h:135
uint32_t uint32
Definition Define.h:133
#define TC_LOG_ERROR(filterType__,...)
Definition Log.h:165
GOState
@ GO_STATE_READY
@ GO_STATE_ACTIVE
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
Definition Arena.cpp:92
void StartingEventOpenDoors() override
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
void HandleAreaTrigger(Player *Source, uint32 Trigger) override
void PostUpdateImpl(uint32 diff) override
Post-update hook.
bool SetupBattleground() override
void DoorOpen(uint32 type)
void SpawnBGObject(uint32 type, uint32 respawntime)
virtual bool AddObject(uint32 type, uint32 entry, float x, float y, float z, float o, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime=0, GOState goState=GO_STATE_READY)
GuidVector BgObjects
void DoorClose(uint32 type)
BattlegroundPlayerMap const & GetPlayers() const
BattlegroundStatus GetStatus() const
virtual void HandleAreaTrigger(Player *, uint32)
GameObject * GetBGObject(uint32 type, bool logError=true)
std::vector< WorldStateInfo > Worldstates
TC_GAME_API Player * FindPlayer(ObjectGuid const &)