58 for (
uint8 i = 0; i < 2; i++)
77 for (
uint8 i = 0; i <= 5; i++)
93 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
146 TC_LOG_ERROR(
"bg.battleground",
"SOTA: couldn't spawn one of the BG_SA_BOAT, Entry: {}", boatid);
212 TC_LOG_ERROR(
"bg.battleground",
"SOTA: couldn't spawn GY: {}", i);
283 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
304 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
312 p->SendDirectMessage(&pkt);
377 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
485 if (!isInBattleground)
490 if (!isInBattleground)
505 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
513 if (!player->IsAlive())
515 player->ResurrectPlayer(1.0f);
516 player->SpawnCorpseBones();
519 player->ResetAllPowers();
520 player->CombatStopWithPets(
true);
538 player->
TeleportTo(607, 2682.936f, -830.368f, 15.0f, 2.895f, 0);
540 player->
TeleportTo(607, 2577.003f, 980.261f, 15.0f, 0.807f, 0);
543 player->
TeleportTo(607, 1600.381f, -106.263f, 8.8745f, 3.78f, 0);
546 player->
TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0);
553 switch (go->GetGoType())
564 uint8 gateId = gate->GateId;
567 if (eventId == go->GetGOInfo()->building.damagedEvent)
577 else if (eventId == go->GetGOInfo()->building.destroyedEvent)
590 bool rewardHonor =
true;
912 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
942 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
971 else if (winner ==
HORDE)
989 if (Demolisher->isDead())
1001 Demolisher->Respawn();
@ BG_SA_CENTRAL_CAPTURABLE_GY
@ BG_SA_LEFT_CAPTURABLE_GY
@ BG_SA_RIGHT_CAPTURABLE_GY
@ SPELL_HORDE_CONTROL_PHASE_SHIFT
@ SPELL_ALLIANCE_CONTROL_PHASE_SHIFT
const uint32 BG_SA_GYEntries[BG_SA_MAX_GY]
Position const BG_SA_ObjSpawnlocs[BG_SA_MAXOBJ]
@ TEXT_EAST_GRAVEYARD_CAPTURED_A
@ TEXT_SPARKLIGHT_RIGSPARK_SPAWN
@ TEXT_SOUTH_GRAVEYARD_CAPTURED_A
@ TEXT_WEST_GRAVEYARD_CAPTURED_A
@ TEXT_WEST_GRAVEYARD_CAPTURED_H
@ TEXT_EAST_GRAVEYARD_CAPTURED_H
@ TEXT_SOUTH_GRAVEYARD_CAPTURED_H
uint32 const BG_SA_ObjEntries[BG_SA_MAXOBJ+BG_SA_FLAG_AMOUNT]
@ SOUND_WALL_DESTROYED_HORDE
@ SOUND_WALL_ATTACKED_HORDE
@ SOUND_WALL_DESTROYED_ALLIANCE
@ SOUND_WALL_ATTACKED_ALLIANCE
float const BG_SA_GYOrientation[BG_SA_MAX_GY]
uint32 const BG_SA_Factions[2]
@ 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_RIGHT_GY_ALLIANCE
@ BG_SA_HORDE_DEFENCE_TOKEN
@ BG_SA_LEFT_ATT_TOKEN_HRD
@ BG_SA_PORTAL_DEFFENDER_RED
@ BG_SA_EVENT_TITAN_RELIC_ACTIVATED
Position const BG_SA_NpcSpawnlocs[BG_SA_MAXNPC]
uint32 const BG_SA_NpcEntries[BG_SA_MAXNPC]
@ 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
@ SCORE_DESTROYED_DEMOLISHER
@ BG_CRITERIA_CHECK_DEFENSE_OF_THE_ANCIENTS
@ BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH
@ BG_STARTING_EVENT_FOURTH
@ ACHIEVEMENT_TIMED_TYPE_EVENT
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
DBCStorage< WorldSafeLocsEntry > sWorldSafeLocsStore(WorldSafeLocsEntryfmt)
#define TC_LOG_ERROR(filterType__,...)
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
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_SPIRIT_OF_REDEMPTION
@ MOVEMENTFLAG_ONTRANSPORT
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_UNINTERACTIBLE
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
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.
void EventPlayerClickedOnFlag(Player *source, GameObject *go) override
Called when a player click on flag (graveyard flag)
bool SignaledRoundTwo
for know if warning about second round start has been sent
void EndBattleground(uint32 winner) override
Called on battleground ending.
void DemolisherStartState(bool start)
Set selectable or not demolisher, called on battle start, when boats arrive to dock.
void OverrideGunFaction()
Called on start and between the two round -Update faction of all vehicle.
void RemovePlayer(Player *player, ObjectGuid guid, uint32 team) override
Called when a player leave battleground.
void StartingEventCloseDoors() override
Called when battle start.
bool SignaledRoundTwoHalfMin
for know if warning about second round start has been sent
void TeleportPlayers()
Called between the two round -Teleport all players to good location.
bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const *source, Unit const *target=nullptr, uint32 miscValue=0) override
void SendTime()
Update timer worldstate.
bool _allVehiclesAlive[PVP_TEAMS_COUNT]
void HandleKillUnit(Creature *creature, Player *killer) override
Called when a player kill a unit in bg.
void DestroyGate(Player *player, GameObject *go) override
Called when a gate is destroy -Give honor to player witch destroy it -Update worldstate -Delete gameo...
void StartingEventOpenDoors() override
BG_SA_RoundScore RoundScores[2]
Score of each round.
void CaptureGraveyard(BG_SA_Graveyards i, Player *Source)
Called when a graveyard is capture -Update spiritguide -Update gameobject (flag) -Update Worldstate -...
uint32 UpdateWaitTimer
5secs before starting the 1min countdown for second round
void HandleAreaTrigger(Player *Source, uint32 Trigger) override
void AddPlayer(Player *player) override
Called when a player join battle.
void UpdateDemolisherSpawns()
Respawn dead demolisher.
BG_SA_GateState GateStatus[MAX_GATES]
Status of each gate (Destroy/Damage/Intact)
WorldSafeLocsEntry const * GetClosestGraveyard(Player *player) override
Return the nearest graveyard where player can respawn.
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
bool ResetObjs()
Called on setup and between the two round -Delete all gameobject / creature -Respawn all gameobject /...
std::map< uint32, uint32 > DemoliserRespawnList
bool IsSpellAllowed(uint32 spellId, Player const *player) const override
void TeleportToEntrancePosition(Player *player)
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
Called for generate packet contain worldstate data.
void TitanRelicActivated(Player *clicker)
Called when a player clicked on relic.
void StartShips()
Called for start ship movement.
bool CanInteractWithObject(uint32 objectId)
Checks if a player can interact with the given object.
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)
void UpdateObjectInteractionFlags()
TeamId GraveyardStatus[BG_SA_MAX_GY]
Team witch conntrol each graveyard.
uint32 TotalTime
Totale elapsed time of current round.
virtual void AddPlayer(Player *player)
virtual void EndBattleground(uint32 winner)
virtual Creature * AddCreature(uint32 entry, uint32 type, float x, float y, float z, float o, TeamId teamId=TEAM_NEUTRAL, uint32 respawntime=0, Transport *transport=nullptr)
void CastSpellOnTeam(uint32 SpellID, uint32 TeamID)
static TeamId GetTeamIndexByTeamId(uint32 Team)
void DoorOpen(uint32 type)
bool DelCreature(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)
Creature * GetBGCreature(uint32 type, bool logError=true)
BattlegroundMap * GetBgMap() const
virtual bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId=TEAM_NEUTRAL)
void SendChatMessage(Creature *source, uint8 textId, WorldObject *target=nullptr)
void SetStatus(BattlegroundStatus Status)
bool IsPlayerInBattleground(ObjectGuid guid) const
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
bool DelObject(uint32 type)
BattlegroundPlayerMap const & GetPlayers() const
BattlegroundScoreMap PlayerScores
void RewardHonorToTeam(uint32 Honor, uint32 TeamID)
BattlegroundStatus GetStatus() const
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
virtual bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=nullptr, uint32=0)
void UpdateWorldState(uint32 variable, uint32 value)
uint32 GetBonusHonorFromKill(uint32 kills) const
GameObject * GetBGObject(uint32 type, bool logError=true)
void PlaySoundToAll(uint32 soundID)
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
void SetParentRotation(QuaternionData const &rotation)
void SetFaction(uint32 faction) override
void UpdateAreaDependentAuras()
void BuildValuesUpdateBlockForPlayer(UpdateData *data, Player const *target) const
static Unit * ToUnit(Object *o)
static GameObject * ToGameObject(Object *o)
virtual void BuildCreateUpdateBlockForPlayer(UpdateData *data, Player *target) const
static ObjectGuid GetGUID(Object const *o)
void BuildOutOfRangeUpdateBlock(UpdateData *data) const
static Player * ToPlayer(Object *o)
void SendDirectMessage(WorldPacket const *data) const
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
void SetFaction(uint32 faction) override
void AddUnitMovementFlag(uint32 f)
bool BuildPacket(WorldPacket *packet)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Player * GetCharmerOrOwnerPlayerOrPlayerItself() const
std::vector< WorldStateInfo > Worldstates
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
uint32 DemolishersDestroyed
void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player &playerData) override
void GetPosition(float &x, float &y) const
float GetExactDistSq(float x, float y, float z) const
std::vector< uint32 > Stats