41 for (
uint8 i = 0; i <= 5; i++)
61 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
77 for (
uint8 i = 0; i < 6; i++)
82 if (!
AddObject(i,
BG_SA_ObjEntries[i],
BG_SA_ObjSpawnlocs[i][0],
BG_SA_ObjSpawnlocs[i][1],
BG_SA_ObjSpawnlocs[i][2],
BG_SA_ObjSpawnlocs[i][3], 0, 0, 0, 0,
RESPAWN_ONE_DAY))
146 for (
uint8 i = 0; i <= 5; i++)
177 SF_LOG_ERROR(
"bg.battleground",
"SOTA: couldn't spawn GY: %u", i);
243 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
261 if (!boatOne || !boatTwo)
263 SF_LOG_ERROR(
"bg.battleground",
"SOTA: cannot start ships, one or more boat objects are missing");
267 uint32 shipTravelTime = 0;
283 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
293 transport->BuildValuesUpdateBlockForPlayer(&createData, player);
319 std::ostringstream marker;
320 marker <<
"SOTA_BOAT_DEBUG action=" << action
321 <<
" elapsed_ms=" << elapsedMs
323 session->LogPacketMarker(marker.str());
331 if (!boatOne || !boatTwo)
352 if (!boatOne || !boatTwo)
371 std::ostringstream status;
380 status <<
" boat" <<
uint32(i) <<
"=missing";
384 status <<
" boat" <<
uint32(i)
385 <<
"{entry=" << transport->
GetEntry()
415 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
424 if (++activePlayers >= 2)
495 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
612 player->
TeleportTo(607, 2682.936f, -830.368f, 15.0f, 2.895f, 0);
614 player->
TeleportTo(607, 2577.003f, 980.261f, 15.0f, 0.807f, 0);
617 player->
TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0);
622 player->
TeleportTo(607, 1600.381f, -106.263f, 8.8745f, 3.78f, 0);
624 player->
TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0);
654 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
662 if (!player->IsAlive())
664 player->ResurrectPlayer(1.0f);
665 player->SpawnCorpseBones();
668 player->ResetAllPowers();
669 player->CombatStopWithPets(
true);
674 player->CastSpell(player, 12438,
true);
677 player->TeleportTo(607, 2682.936f, -830.368f, 15.0f, 2.895f, 0);
679 player->TeleportTo(607, 2577.003f, 980.261f, 15.0f, 0.807f, 0);
682 player->TeleportTo(607, 1209.7f, -65.16f, 70.1f, 0.0f, 0);
770 if (g->GetGOValue()->Building.Health == 0)
776 bool rewardHonor =
true;
825 nearest = sqrt((closest->
x - x) * (closest->
x - x) + (closest->
y - y) * (closest->
y - y) + (closest->
z - z) * (closest->
z - z));
833 dist = sqrt((ret->
x - x) * (ret->
x - x) + (ret->
y - y) * (ret->
y - y) + (ret->
z - z) * (ret->
z - z));
999 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
1023 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
1057 else if (winner ==
HORDE)
1066 std::vector<uint64> players;
1069 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
1070 players.push_back(itr->first);
1072 for (std::vector<uint64>::const_iterator itr = players.begin(); itr != players.end(); ++itr)
1084 if (Demolisher->isDead())
1098 Demolisher->Respawn();
1113 if (boatOne || boatTwo)
1139 if (boatOne || boatTwo)
@ BG_CRITERIA_CHECK_DEFENSE_OF_THE_ANCIENTS
@ BG_CRITERIA_CHECK_NOT_EVEN_A_SCRATCH
@ SCORE_DESTROYED_DEMOLISHER
@ BG_STARTING_EVENT_THIRD
@ BG_STARTING_EVENT_SECOND
@ BG_STARTING_EVENT_FIRST
@ BG_STARTING_EVENT_FOURTH
@ BG_SA_CENTRAL_CAPTURABLE_GY
@ BG_SA_LEFT_CAPTURABLE_GY
@ BG_SA_RIGHT_CAPTURABLE_GY
@ 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
const uint32 BG_SA_GYEntries[BG_SA_MAX_GY]
uint32 const BG_SA_ObjEntries[BG_SA_MAXOBJ+BG_SA_FLAG_AMOUNT]
float const BG_SA_GYOrientation[BG_SA_MAX_GY]
float const BG_SA_NpcSpawnlocs[BG_SA_MAXNPC+BG_SA_DEMOLISHER_AMOUNT][4]
uint32 const BG_SA_Factions[2]
@ BG_SA_EVENT_ANCIENT_GATE_DESTROYED
@ BG_SA_PORTAL_DEFFENDER_RED
float const BG_SA_ObjSpawnlocs[BG_SA_MAXOBJ][4]
uint32 const BG_SA_NpcEntries[BG_SA_MAXNPC]
@ ACHIEVEMENT_TIMED_TYPE_EVENT
@ ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET
DBCStorage< WorldSafeLocsEntry > sWorldSafeLocsStore(WorldSafeLocsEntryfmt)
@ LANG_BG_SA_START_TWO_MINUTES
@ LANG_BG_SA_WAS_DESTROYED
@ LANG_BG_SA_ROUND_TWO_START_HALF_MINUTE
@ LANG_BG_SA_START_HALF_MINUTE
@ LANG_BG_SA_HORDE_CAPTURED_RELIC
@ LANG_BG_SA_ROUND_TWO_ONE_MINUTE
@ LANG_BG_SA_CHAMBER_BREACHED
@ LANG_BG_SA_ROUND_ONE_END
@ LANG_BG_SA_IS_UNDER_ATTACK
@ LANG_BG_SA_ALLIANCE_CAPTURED_RELIC
@ LANG_BG_SA_START_ONE_MINUTE
#define SF_LOG_ERROR(filterType__,...)
@ CHAT_MSG_BG_SYSTEM_NEUTRAL
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_SPIRIT_OF_REDEMPTION
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
@ UNIT_FLAG_NON_ATTACKABLE
@ UNIT_FLAG_NOT_SELECTABLE
@ GAMEOBJECT_FIELD_FACTION_TEMPLATE
virtual void AddPlayer(Player *player)
void EndBattleground(uint32 winner)
static TeamId GetTeamIndexByTeamId(uint32 Team)
bool DelCreature(uint32 type)
void SpawnBGObject(uint32 type, uint32 respawntime)
uint32 GetInstanceID() const
virtual void RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPacket)
void UpdateWorldState(uint32 Field, uint32 Value)
void SetStatus(BattlegroundStatus Status)
bool DelObject(uint32 type)
BattlegroundPlayerMap const & GetPlayers() const
BattlegroundScoreMap PlayerScores
void RewardHonorToTeam(uint32 Honor, uint32 TeamID)
void SendWarningToAll(int32 entry,...)
bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, uint32 team)
BattlegroundStatus GetStatus() const
virtual bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=NULL, uint32=0)
GameObject * GetBGObject(uint32 type)
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
uint32 GetBonusHonorFromKill(uint32 kills) const
virtual void UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
Creature * AddCreature(uint32 entry, uint32 type, uint32 teamval, float x, float y, float z, float o, uint32 respawntime=0)
uint32 GetPlayersSize() const
void SendMessageToAll(int32 entry, ChatMsg type, Player const *source=NULL)
Creature * GetBGCreature(uint32 type)
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)
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
bool TimerEnabled
used for know we are in timer phase or not (used for worldstate update)
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).
TeamId Attackers
Id of attacker team.
void EndBattleground(uint32 winner)
Called on battleground ending.
void AddPlayer(Player *player) OVERRIDE
Called when a player join battle.
void EventPlayerClickedOnFlag(Player *Source, GameObject *target_obj) OVERRIDE
Called when a player click on flag (graveyard flag).
void EventPlayerUsedGO(Player *Source, GameObject *object) OVERRIDE
Called when a player use a gamobject (relic).
uint32 EndRoundTimer
Max time of round.
bool SignaledRoundTwo
for know if warning about second round start has been sent
void SendBoatDebugTimerUpdate()
bool DebugStartBoats(Player *player)
uint32 BoatDebugStartTime
bool SetupBattleground() OVERRIDE
Called for ini battleground, after that the first player be entered.
void DemolisherStartState(bool start)
Set selectable or not demolisher, called on battle start, when boats arrive to dock.
uint32 getGateIdFromDamagedOrDestroyEventId(uint32 id)
Return gate id, relative to bg data, according to gameobject id.
void OverrideGunFaction()
Called on start and between the two round -Update faction of all vehicle.
void EventPlayerDamagedGO(Player *player, GameObject *go, uint32 eventType) OVERRIDE
Called when a player deal damage to building (door).
bool BoatLaunchWindowStarted() const
bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const *source, Unit const *target=NULL, uint32 miscvalue1=0) OVERRIDE
void HandleAreaTrigger(Player *Source, uint32 Trigger) OVERRIDE
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.
void SendTime()
Update timer worldstate.
void HandleKillUnit(Creature *creature, Player *killer) OVERRIDE
Called when a player kill a unit in bg.
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 SendBoatTransportUpdates()
void UpdateDemolisherSpawns()
Respawn dead demolisher.
uint32 BoatDebugUpdateTimer
bool DebugStopBoats(Player *player)
void LogBoatDebugMarker(Player *player, char const *action, uint32 elapsedMs=0)
BG_SA_GateState GateStatus[6]
Status of each gate (Destroy/Damage/Intact).
uint64 BoatDebugPlayerGuid
void UpdatePlayerScore(Player *Source, uint32 type, uint32 value, bool doAddHonor=true) OVERRIDE
Update score board.
uint32 GetTimerWorldState() const
void PostUpdateImpl(uint32 diff) OVERRIDE
Called every time for update battle data -Update timer -Round switch.
void FillInitialWorldStates(WorldStateBuilder &builder) OVERRIDE
Called for generate packet contain worldstate data.
std::string GetBoatDebugStatus()
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 _allVehiclesAlive[BG_TEAMS_COUNT]
void DestroyGate(Player *player, GameObject *go) OVERRIDE
Called when a gate is destroy -Give honor to player witch destroy it -Update worldstate -Delete gameo...
bool BoatDebugTimerActive
void StartingEventCloseDoors() OVERRIDE
Called when battle start.
WorldSafeLocsEntry const * GetClosestGraveYard(Player *player) OVERRIDE
Return the nearest graveyard where player can respawn.
uint32 getWorldStateFromGateId(uint32 id)
Return worldstate id, according to door id.
void StartingEventOpenDoors() OVERRIDE
bool ShouldDelayStartForDebug() const OVERRIDE
void StartShips()
Called for start ship movement.
void RemovePlayer(Player *player, uint64 guid, uint32 team) OVERRIDE
CAlled when a player leave battleground.
void SendTransportsRemove(Player *player)
Send packet to player for destroy boats (client part).
TeamId GraveyardStatus[BG_SA_MAX_GY]
Team witch conntrol each graveyard.
uint32 TotalTime
Totale elapsed time of current round.
GameObjectTemplate const * GetGOInfo() const
uint32 GetTransportPathProgress() const
GOState GetGoState() const
void UpdateRotationFields(float rotation2=0.0f, float rotation3=0.0f)
uint32 GetTransportPeriod() const
void StartLegacyTransportToFirstStop(uint32 travelTime)
void StopLegacyTransportAtInitialStop()
void StopLegacyTransportAtCurrentProgress()
static Player * FindPlayer(uint64)
virtual void BuildCreateUpdateBlockForPlayer(UpdateData *data, Player *target) const
void BuildOutOfRangeUpdateBlock(UpdateData *data) const
void SetUInt32Value(uint16 index, uint32 value)
void SendDirectMessage(WorldPacket *data)
WorldSession * GetSession() const
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
void CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=NULL, AuraEffect const *triggeredByAura=NULL, uint64 originalCaster=0)
bool BuildPacket(WorldPacket *packet)
uint32 GetInstanceId() const
Player session in the World.
void AppendState(uint32 worldstate, uint32 value)
struct GameObjectTemplate::@046065176235271051340241126110345143267101032070::@240010171105306235035040051230330371375266145364 building
void GetPosition(float &x, float &y) const