82 { 0.0f, 5.0f, 9.6f, 3.14f },
83 { -6.0f, -3.0f, 8.6f, 0.0f }
173 door->ResetDoorOrButton();
197 for (
auto const& [playerGuid, _] :
GetPlayers())
203 boat->BuildValuesUpdateBlockForPlayer(&data, player);
205 player->SendDirectMessage(&pkt);
272 for (
const auto& [playerGuid, bp] :
GetPlayers())
324 if (!isInBattleground)
332 for (
auto const& [playerGuid, bp] :
GetPlayers())
340 if (!player->IsAlive())
342 player->ResurrectPlayer(1.0f);
343 player->SpawnCorpseBones();
346 player->ResetAllPowers();
347 player->CombatStopWithPets(
true);
371 transport->AddPassenger(player);
375 transport->CalculatePassengerPosition(x, y, z, &o);
412 switch (go->GetGoType())
423 uint32 gateId = gate->GameObjectId;
426 if (eventId == go->GetGOInfo()->destructibleBuilding.DamagedEvent)
438 else if (eventId == go->GetGOInfo()->destructibleBuilding.DestroyedEvent)
447 bool rewardHonor =
true;
555 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
571 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
599 else if (winner ==
HORDE)
614 boat->BuildCreateUpdateBlockForPlayer(&transData, player);
626 boat->BuildOutOfRangeUpdateBlock(&transData);
644 if (!graveyardBanner || !player)
652 switch (graveyardBanner->
GetEntry())
673 auto makeInteractable = [&](
ObjectGuid const& guid) ->
void
693 door->UseDoorOrButton();
StrandOfTheAncientsPvpStats
@ PVP_STAT_GATES_DESTROYED
@ PVP_STAT_DEMOLISHERS_DESTROYED
StrandOfTheAncientsCreatures
@ NPC_ANTIPERSONNEL_CANNON
StrandOfTheAncientsSpawnPositions
Position const spawnPositionOnTransport[]
StrandOfTheAncientsEvents
@ EVENT_TITAN_RELIC_ACTIVATED
@ EVENT_HORDE_ASSAULT_STARTED
@ EVENT_ALLIANCE_ASSAULT_STARTED
@ SPELL_TELEPORT_DEFENDER
@ SPELL_TELEPORT_ATTACKERS
@ SPELL_HORDE_CONTROL_PHASE_SHIFT
@ SPELL_ALLIANCE_CONTROL_PHASE_SHIFT
@ SPELL_CARRYING_SEAFORIUM_CHARGE
@ ACTION_SOTA_CAPTURE_GRAVEYARD
StrandOfTheAncientsGraveyard
@ BG_SA_HORDE_GATE_DAMAGED
@ BG_SA_HORDE_GATE_DESTROYED
@ BG_SA_ALLIANCE_GATE_DESTROYED
@ BG_SA_ALLIANCE_GATE_DAMAGED
@ GO_GATE_OF_THE_BLUE_SAPPHIRE
@ GO_GATE_OF_THE_PURPLE_AMETHYST
@ GO_GATE_OF_THE_GREEN_EMERALD
@ TEXT_SPARKLIGHT_RIGSPARK_SPAWN
@ SOUND_WALL_DESTROYED_HORDE
@ SOUND_WALL_ATTACKED_HORDE
@ SOUND_WALL_DESTROYED_ALLIANCE
@ SOUND_WALL_ATTACKED_ALLIANCE
uint32 const BG_SA_Factions[2]
@ BG_SA_DESTROYED_HORDE_VEHICLES
@ BG_SA_LEFT_ATT_TOKEN_ALL
@ BG_SA_CENTER_GY_ALLIANCE
@ BG_SA_RIGHT_ATT_TOKEN_HRD
@ BG_SA_RIGHT_ATT_TOKEN_ALL
@ BG_SA_ALLIANCE_DEFENCE_TOKEN
@ BG_SA_DESTROYED_ALLIANCE_VEHICLES
@ BG_SA_RIGHT_GY_ALLIANCE
@ BG_SA_HORDE_DEFENCE_TOKEN
@ BG_SA_LEFT_ATT_TOKEN_HRD
@ BG_SA_TEXT_ROUND_TWO_START_ONE_MINUTE
@ BG_SA_TEXT_ALLIANCE_CAPTURED_TITAN_PORTAL
@ BG_SA_TEXT_ROUND_TWO_START_HALF_MINUTE
@ BG_SA_TEXT_HORDE_CAPTURED_TITAN_PORTAL
@ BG_STARTING_EVENT_FOURTH
uint32 urand(uint32 min, uint32 max)
@ GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
@ CHAT_MSG_BG_SYSTEM_HORDE
@ CHAT_MSG_BG_SYSTEM_NEUTRAL
@ GO_STATE_TRANSPORT_STOPPED
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_SPIRIT_OF_REDEMPTION
bool TimerEnabled
used for know we are in timer phase or not (used for worldstate update)
GateInfo const * GetGate(uint32 entry)
Return GateInfo, relative to bg data, according to gameobject entry.
void SendTransportInit(Player *player)
Send packet to player for create boats (client part)
void ToggleTimer()
Switch on/off timer worldstate.
BG_SA_Status Status
Statu of battle (Start or not, and what round)
void PostUpdateImpl(uint32 diff) override
Called every time for update battle data -Update timer -Round switch.
TeamId Attackers
Id of attacker team.
uint32 EndRoundTimer
Max time of round.
BattlegroundSA(BattlegroundTemplate const *battlegroundTemplate)
bool SignaledRoundTwo
for know if warning about second round start has been sent
void TeleportPlayers() const
Called between the two round -Teleport all players to good location.
uint32 GetData(uint32 dataId) const override
std::array< GuidUnorderedSet, PVP_TEAMS_COUNT > _staticBombGUIDs
Creature * FindKanrethad() const
void RemovePlayer(Player *player, ObjectGuid guid, uint32 team) override
Called when a player leave battleground.
void OnCreatureCreate(Creature *creature) override
void OnMapSet(BattlegroundMap *map) override
bool SignaledRoundTwoHalfMin
for know if warning about second round start has been sent
ObjectGuid _graveyardCentral
ObjectGuid _collisionDoorGUID
void DestroyGate(Player *player, GameObject *go) override
Called when a gate is destroy -Give honor to player witch destroy it -Update worldstate -Delete gameo...
BG_SA_RoundScore RoundScores[2]
Score of each round.
uint32 UpdateWaitTimer
5secs before starting the 1min countdown for second round
void EndBattleground(Team winner) override
Called on battleground ending.
void DoAction(uint32 actionId, WorldObject *source, WorldObject *target) override
std::array< std::array< ObjectGuid, 2 >, PVP_TEAMS_COUNT > _boatGUIDs
void HandleCaptureGraveyardAction(GameObject *graveyardBanner, Player *player)
void MakeObjectsInteractable(DefenseLine defenseLine)
void OnGameObjectCreate(GameObject *gameobject) override
bool SetupBattleground() override
Called for ini battleground, after that the first player be entered.
bool ShipsStarted
For know if boats has start moving or not yet.
bool InitSecondRound
for know if second round has been init
ObjectGuid _graveyardWest
bool IsGateDestroyed(GateInfo const *gateInfo) const
bool ResetObjs()
Called on setup and between the two round -Delete all gameobject / creature -Respawn all gameobject /...
void AddPlayer(Player *player, BattlegroundQueueTypeId queueId) override
Called when a player join battle.
void CaptureGraveyard(StrandOfTheAncientsGraveyard graveyard, TeamId teamId)
Called when a graveyard is capture -Update spiritguide -Update gameobject (flag) -Update Worldstate -...
GuidUnorderedSet _dynamicBombGUIDs
void TeleportToEntrancePosition(Player *player) const
ObjectGuid _graveyardEast
void TitanRelicActivated(Player *clicker)
Called when a player clicked on relic.
void StartShips()
Called for start ship movement.
void ProcessEvent(WorldObject *, uint32, WorldObject *=nullptr) override
Called when someone activates an event.
void SendTransportsRemove(Player *player)
Send packet to player for destroy boats (client part)
ObjectGuid _kanrethadGUID
void HandleKillUnit(Creature *creature, Unit *killer) override
Called when a player kill a unit in bg.
ObjectGuid _titanRelicGUID
GuidUnorderedSet _gateGUIDs
uint32 TotalTime
Totale elapsed time of current round.
virtual void OnMapSet(BattlegroundMap *map)
void PlaySoundToAll(uint32 SoundID)
void RewardHonorToTeam(uint32 Honor, Team team)
BattlegroundMap * GetBgMap() const
void RemoveAuraOnTeam(uint32 SpellID, Team team)
void TriggerGameEvent(uint32 gameEventId, WorldObject *source=nullptr, WorldObject *target=nullptr) override
void SendChatMessage(Creature *source, uint8 textId, WorldObject *target=nullptr)
static TeamId GetTeamIndexByTeamId(Team team)
void UpdateWorldState(int32 worldStateId, int32 value, bool hidden=false)
void SetStatus(BattlegroundStatus Status)
virtual void EndBattleground(Team winner)
bool IsPlayerInBattleground(ObjectGuid guid) const
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
BattlegroundPlayerMap const & GetPlayers() const
virtual void AddPlayer(Player *player, BattlegroundQueueTypeId queueId)
BattlegroundStatus GetStatus() const
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
Team GetPlayerTeam(ObjectGuid guid) const
uint32 GetBonusHonorFromKill(uint32 kills) const
void UpdatePvpStat(Player *player, uint32 pvpStatId, uint32 value)
void CastSpellOnTeam(uint32 SpellID, Team team)
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void RemoveFlag(GameObjectFlags flags)
GameobjectTypes GetGoType() const
void UpdateSpawnGroupConditions()
int32 GetWorldStateValue(int32 worldStateId) const
GameObject * GetGameObject(ObjectGuid const &guid)
void UpdateAreaDependentAuras()
Creature * GetCreature(ObjectGuid const &guid)
static Unit * ToUnit(Object *o)
GameObject * ToGameObject()
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
void SendDirectMessage(WorldPacket const *data) const
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, TeleportToOptions options=TELE_TO_NONE, Optional< uint32 > instanceId={})
void SetFaction(uint32 faction) override
void NearTeleportTo(Position const &pos, bool casting=false)
bool BuildPacket(WorldPacket *packet)
constexpr void WorldRelocate(WorldLocation const &loc)
constexpr uint32 GetMapId() const
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
MovementInfo m_movementInfo
virtual uint32 GetData(uint32) const
virtual void OnCreatureCreate(Creature *)
virtual void OnGameObjectCreate(GameObject *)
TC_GAME_API GameObject * GetGameObject(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
struct MovementInfo::TransportInfo transport
constexpr void GetPosition(float &x, float &y) const
constexpr void Relocate(float x, float y)