41 for (
uint8 i = 0; i < 2; i++)
43 for (
uint8 j = 0; j < 9; j++)
112 TC_LOG_ERROR(
"bg.battleground",
"Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
120 for (
uint8 i=0; i <= 9; i++)
131 TC_LOG_ERROR(
"bg.battleground",
"Killed a Captain twice, please report this bug, if you haven't done \".respawn\"");
139 for (
uint8 i=0; i <= 9; i++)
158 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed", questid);
168 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed starting with unit upgrading..", questid);
183 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
190 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
197 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
207 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
214 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
216 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
224 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
226 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here - ground assault ready", questid);
234 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
236 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
244 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here", questid);
246 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed (need to implement some events here - rider assault ready", questid);
250 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV Quest {} completed but is not interesting at all", questid);
284 bool isStatic =
false;
325 uint32 triggerSpawnID = 0;
347 if (triggerSpawnID && newFaction)
351 trigger->SetFaction(newFaction);
362 for (
uint8 i=0; i <= 1; i++)
387 for (
uint8 mine=0; mine <2; mine++)
424 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV: start spawning mine stuff");
446 if (!isInBattleground)
454 uint8 kills[2] = {0, 0};
455 uint8 rep[2] = {0, 0};
494 TC_LOG_ERROR(
"bg.battleground",
"bg_AV no player at remove");
565 TC_LOG_DEBUG(
"bg.battleground",
"bg_av: player destroyed point node {} object {}", node,
object);
582 for (
uint8 i=0; i <= 9; i++)
603 for (
uint8 i = 0; i < 4; i++)
613 herold->AI()->Talk(owner ==
ALLIANCE ? nodeInfo->TextIds.AllianceCapture : nodeInfo->TextIds.HordeCapture);
632 TC_LOG_DEBUG(
"bg.battleground",
"bg_av depopulating mine {} (0=north, 1=south)", mine);
643 TC_LOG_DEBUG(
"bg.battleground",
"bg_av populating mine {} (0=north, 1=south)", mine);
650 else if (team ==
HORDE)
660 else if (team ==
HORDE)
668 else if (team ==
HORDE)
738 TC_LOG_ERROR(
"bg.battleground",
"AV: couldn't spawn spiritguide at node {}", node);
740 for (
uint8 i=0; i<4; i++)
768 for (
uint8 i=0; i<4; i++)
782 TC_LOG_DEBUG(
"bg.battleground",
"bg_AV getnodethroughobject {}",
object);
797 TC_LOG_ERROR(
"bg.battleground",
"BattlegroundAV: ERROR! GetPlace got a wrong object :(");
804 TC_LOG_DEBUG(
"bg.battleground",
"bg_AV GetObjectThroughNode {}", node);
835 TC_LOG_ERROR(
"bg.battleground",
"BattlegroundAV: Error! GetPlaceNode couldn't resolve node {}", node);
847 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV using gameobject {} with type {}", target_obj->
GetEntry(),
object);
886 TC_LOG_DEBUG(
"bg.battleground",
"player defends point object: {} node: {}",
object, node);
887 if (
m_Nodes[node].PrevOwner != team)
889 TC_LOG_ERROR(
"bg.battleground",
"BG_AV: player defends point which doesn't belong to his team {}", node);
921 for (
uint8 i = 0; i < 4; i++)
930 herold->AI()->Talk(team ==
ALLIANCE ? nodeInfo->TextIds.AllianceCapture : nodeInfo->TextIds.HordeCapture);
943 TC_LOG_DEBUG(
"bg.battleground",
"bg_av: player assaults point object {} node {}",
object, node);
944 if (owner == team || team ==
m_Nodes[node].TotalOwner)
982 for (
uint8 i = 0; i < 4; i++)
1021 herold->AI()->Talk(team ==
ALLIANCE ? nodeInfo->TextIds.AllianceAttack : nodeInfo->TextIds.HordeAttack);
1083 uint8 owner, prevowner, mine2;
1099 if (prevowner != owner)
1114 minDist = (pGraveyard->
Loc.
X - x)*(pGraveyard->
Loc.
X - x)+(pGraveyard->
Loc.
Y - y)*(pGraveyard->
Loc.
Y - y);
1122 dist = (entry->
Loc.
X - x)*(entry->
Loc.
X - x)+(entry->
Loc.
Y - y)*(entry->
Loc.
Y - y);
1141 TC_LOG_ERROR(
"sql.sql",
"BatteGroundAV: Failed to spawn some object Battleground not created!1");
1173 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!2");
1200 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!3");
1225 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!4");
1229 for (
uint8 j=0; j <= 9; j++)
1240 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!5.{}", i);
1246 for (
uint8 i=0; i<2; i++)
1248 for (
uint8 j=0; j <= 9; j++)
1261 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!6.{}", i);
1276 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!7.{}", i);
1293 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.5.{}", i);
1308 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some mine supplies Battleground not created!7.6.{}", i);
1322 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!8");
1325 for (
uint8 i = 0; i < 4; i++)
1340 TC_LOG_ERROR(
"bg.battleground",
"BatteGroundAV: Failed to spawn some object Battleground not created!9.{}", i);
1346 TC_LOG_DEBUG(
"bg.battleground",
"Alterac Valley: entering state STATUS_WAIT_JOIN ...");
1386 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV start poputlating nodes");
1393 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV: start spawning static creatures");
1397 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV: start spawning spiritguides creatures");
1401 TC_LOG_DEBUG(
"bg.battleground",
"BG_AV: start spawning marshal creatures");
1410 if (
m_Nodes[node].TotalOwner == team)
1412 TC_LOG_FATAL(
"bg.battleground",
"Assaulting team is TotalOwner of node");
1415 if (
m_Nodes[node].Owner == team)
1417 TC_LOG_FATAL(
"bg.battleground",
"Assaulting team is owner of node");
1422 TC_LOG_FATAL(
"bg.battleground",
"Destroyed node is being assaulted");
1427 TC_LOG_FATAL(
"bg.battleground",
"Assault on an not assaulted node with total owner");
1475 for (
uint8 i=0; i<2; i++)
1477 for (
uint8 j=0; j<9; j++)
1509 for (
uint8 mine = 0; mine < 2; mine++)
1538 else if (team ==
HORDE)
1571 if (allianceScore > hordeScore)
1573 else if (hordeScore > allianceScore)
@ BG_AV_OBJECTID_BANNER_H
@ BG_AV_OBJECTID_BANNER_CONT_A
@ BG_AV_OBJECTID_BANNER_H_B
@ BG_AV_OBJECTID_BANNER_A_B
@ BG_AV_OBJECTID_SNOWFALL_CANDY_A
@ BG_AV_OBJECTID_BANNER_SNOWFALL_N
@ BG_AV_OBJECTID_SNOWFALL_CANDY_PH
@ BG_AV_OBJECTID_BANNER_A
@ BG_AV_OBJECTID_TOWER_BANNER_PA
@ BG_AV_OBJECTID_TOWER_BANNER_H
@ BG_AV_OBJECTID_SNOWFALL_CANDY_H
@ BG_AV_OBJECTID_SNOWFALL_CANDY_PA
@ BG_AV_OBJECTID_TOWER_BANNER_PH
@ BG_AV_OBJECTID_BANNER_CONT_H
@ BG_AV_OBJECTID_BANNER_CONT_H_B
@ BG_AV_OBJECTID_BANNER_CONT_A_B
@ BG_AV_OBJECTID_TOWER_BANNER_A
@ BG_AV_NODES_SNOWFALL_GRAVE
@ BG_AV_NODES_FIRSTAID_STATION
@ BG_AV_NODES_STONEHEART_GRAVE
@ BG_AV_NODES_ICEBLOOD_TOWER
@ BG_AV_NODES_STONEHEART_BUNKER
@ BG_AV_NODES_FROSTWOLF_WTOWER
@ BG_AV_NODES_DUNBALDAR_SOUTH
@ BG_AV_NODES_FROSTWOLF_HUT
@ BG_AV_NODES_ICEBLOOD_GRAVE
#define BG_AV_RES_CAPTAIN
Position const BG_AV_ObjectPos[AV_OPLACE_MAX]
const uint32 BG_AV_StaticCreatureInfo[51]
#define BG_AV_KILL_SURVIVING_TOWER
const uint32 BG_AV_MineWorldStates[2][3]
Position const BG_AV_DoorPositons[2]
#define BG_AV_EVENT_START_BATTLE
@ AV_OPLACE_BURN_DUNBALDAR_SOUTH
@ AV_OPLACE_MINE_SUPPLY_N_MIN
@ AV_OPLACE_MINE_SUPPLY_S_MIN
@ AV_OPLACE_BURN_BUILDING_A
@ BG_AV_OBJECT_MINE_SUPPLY_N_MIN
@ BG_AV_OBJECT_MINE_SUPPLY_N_MAX
@ BG_AV_OBJECT_MINE_SUPPLY_S_MIN
@ BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT
@ BG_AV_OBJECT_MINE_SUPPLY_S_MAX
@ BG_AV_OBJECT_AURA_N_FIRSTAID_STATION
@ BG_AV_OBJECT_BURN_BUILDING_HORDE
@ BG_AV_OBJECT_BURN_DUNBALDAR_SOUTH
@ BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER
@ BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION
@ BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE
@ BG_AV_OBJECT_FLAG_C_H_SNOWFALL_GRAVE
@ BG_AV_OBJECT_AURA_A_FIRSTAID_STATION
@ BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_HUT
@ BG_AV_OBJECT_FLAG_C_H_STONEHEART_BUNKER
@ BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER
@ BG_AV_OBJECT_BURN_BUILDING_ALLIANCE
@ BG_AV_OBJECT_FLAG_C_A_SNOWFALL_GRAVE
@ BG_AV_OBJECT_SNOW_EYECANDY_A
@ BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER
@ BG_AV_OBJECT_AURA_H_FIRSTAID_STATION
@ BG_AV_OBJECT_TAURA_H_DUNBALDAR_SOUTH
@ BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER
@ BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH
@ BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE
@ BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER
@ BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE
@ BG_AV_OBJECT_SNOW_EYECANDY_PH
@ BG_AV_OBJECT_SNOW_EYECANDY_H
@ BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH
@ BG_AV_OBJECT_TAURA_A_DUNBALDAR_SOUTH
@ BG_AV_OBJECT_FLAG_C_A_FROSTWOLF_WTOWER
@ BG_AV_OBJECT_TFLAG_H_DUNBALDAR_SOUTH
@ BG_AV_OBJECT_SNOW_EYECANDY_PA
@ BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE
Position const BG_AV_CreaturePos[AV_CPLACE_MAX]
#define BG_AV_REP_SURVIVING_CAPTAIN
@ AV_OBJECTIVE_DEFEND_GRAVEYARD
@ AV_OBJECTIVE_ASSAULT_GRAVEYARD
@ AV_OBJECTIVE_ASSAULT_TOWER
@ AV_OBJECTIVE_DEFEND_TOWER
const float BG_AV_StaticCreaturePos[AV_STATICCPLACE_MAX][5]
const uint32 BG_AV_GraveyardIds[9]
@ TEXT_FROSTWOLF_GENERAL_DEAD
@ TEXT_STORMPIKE_GENERAL_DEAD
@ TEXT_COLDTOOTH_MINE_HORDE_TAKEN
@ TEXT_IRONDEEP_MINE_ALLIANCE_TAKEN
@ TEXT_IRONDEEP_MINE_HORDE_TAKEN
@ TEXT_COLDTOOTH_MINE_ALLIANCE_TAKEN
#define BG_AV_SNOWFALL_FIRSTCAP
QuaternionData const BG_AV_DoorRotation[2]
@ AV_NPC_H_MARSHAL_WTOWER
#define BG_AV_KILL_CAPTAIN
#define BG_AV_REP_SURVIVING_TOWER
const uint32 BG_AV_CreatureInfo[AV_NPC_INFO_MAX]
@ AV_CPLACE_A_MARSHAL_SOUTH
@ AV_CPLACE_DEFENSE_STORM_AID
#define BG_AV_SCORE_INITIAL_POINTS
static StaticNodeInfo const BGAVNodeInfo[]
#define SEND_MSG_NEAR_LOSE
#define BG_AV_KILL_SURVIVING_CAPTAIN
@ BG_AV_TEXT_ALLIANCE_NEAR_LOSE
@ BG_AV_TEXT_START_HALF_MINUTE
@ BG_AV_TEXT_START_ONE_MINUTE
@ BG_AV_TEXT_HORDE_NEAR_LOSE
@ BG_AV_TEXT_BATTLE_HAS_BEGUN
#define BG_AV_REP_CAPTAIN
@ SCORE_GRAVEYARDS_ASSAULTED
@ SCORE_GRAVEYARDS_DEFENDED
@ BG_CRITERIA_CHECK_AV_PERFECTION
@ BG_CRITERIA_CHECK_EVERYTHING_COUNTS
@ BG_STARTING_EVENT_THIRD
@ BG_STARTING_EVENT_SECOND
@ BG_STARTING_EVENT_FOURTH
@ ACHIEVEMENT_TIMED_TYPE_EVENT
@ ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
DBCStorage< WorldSafeLocsEntry > sWorldSafeLocsStore(WorldSafeLocsEntryfmt)
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_FATAL(filterType__,...)
uint32 urand(uint32 min, uint32 max)
@ CHAT_MSG_BG_SYSTEM_ALLIANCE
@ CHAT_MSG_BG_SYSTEM_HORDE
@ FACTION_ALLIANCE_GENERIC
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
StaticNodeInfo const * GetStaticNodeInfo(BG_AV_Nodes node) const
void PopulateNode(BG_AV_Nodes node)
void StartingEventOpenDoors() override
BG_AV_NodeInfo m_Nodes[BG_AV_NODES_MAX]
void ChangeMineOwner(uint8 mine, uint32 team, bool initial=false)
void InitNode(BG_AV_Nodes node, uint16 team, bool tower)
void EventPlayerAssaultsPoint(Player *player, uint32 object)
bool SetupBattleground() override
bool m_IsInformedNearVictory[2]
void AddPlayer(Player *player) override
uint32 GetObjectThroughNode(BG_AV_Nodes node)
void HandleAreaTrigger(Player *player, uint32 trigger) override
void ResetBGSubclass() override
void DePopulateNode(BG_AV_Nodes node)
void EndBattleground(uint32 winner) override
BG_AV_Nodes GetNodeThroughObject(uint32 object)
void PostUpdateImpl(uint32 diff) override
Post-update hook.
bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true) override
void HandleKillUnit(Creature *unit, Player *killer) override
void EventPlayerClickedOnFlag(Player *source, GameObject *target_obj) override
bool CheckAchievementCriteriaMeet(uint32 criteriaId, Player const *source, Unit const *target=nullptr, uint32 miscvalue1=0) override
uint32 m_CaptainBuffTimer[2]
void HandleQuestComplete(uint32 questid, Player *player) override
bool IsTower(BG_AV_Nodes node)
WorldSafeLocsEntry const * GetClosestGraveyard(Player *player) override
bool CanActivateGO(int32 GOId, uint32 team) const override
void EventPlayerDestroyedPoint(BG_AV_Nodes node)
void StartingEventCloseDoors() override
void HandleKillPlayer(Player *player, Player *killer) override
Creature * AddAVCreature(uint16 cinfoid, uint16 type)
void SendMineWorldStates(uint32 mine)
void RemovePlayer(Player *player, ObjectGuid guid, uint32 team) override
void DefendNode(BG_AV_Nodes node, uint16 team)
void UpdateScore(uint16 team, int16 points)
void AssaultNode(BG_AV_Nodes node, uint16 team)
void UpdateNodeWorldState(BG_AV_Nodes node)
uint32 m_Mine_Reclaim_Timer[2]
uint32 GetPrematureWinner() override
uint32 m_Team_QuestStatus[2][9]
void DestroyNode(BG_AV_Nodes node)
void EventPlayerDefendsPoint(Player *player, uint32 object)
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
uint32 m_Mine_PrevOwner[2]
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 RelocateDeadPlayers(ObjectGuid guideGuid)
Relocate all players in ReviveQueue to the closest graveyard.
void CastSpellOnTeam(uint32 SpellID, uint32 TeamID)
virtual void HandleKillPlayer(Player *player, Player *killer)
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)
int32 GetObjectType(ObjectGuid guid)
Creature * GetBGCreature(uint32 type, bool logError=true)
virtual bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId=TEAM_NEUTRAL)
void DoorClose(uint32 type)
bool IsPlayerInBattleground(ObjectGuid guid) const
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
BattlegroundScoreMap PlayerScores
void RewardHonorToTeam(uint32 Honor, uint32 TeamID)
BattlegroundStatus GetStatus() const
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
virtual void HandleAreaTrigger(Player *, uint32)
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
void RewardReputationToTeam(uint32 faction_id, uint32 Reputation, uint32 TeamID)
void PlaySoundToAll(uint32 soundID)
virtual uint32 GetPrematureWinner()
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
void Respawn(bool force=false)
void setDeathState(DeathState s) override
void SetRespawnDelay(uint32 delay)
ObjectGuid::LowType GetSpawnId() const
LowType GetCounter() const
static ObjectGuid GetGUID(Object const *o)
void LeaveBattleground(bool teleportToEntryPoint=true, bool withoutDeserterDebuff=false)
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, WorldObject *ref=nullptr)
WorldSession * GetSession() const
void SetFaction(uint32 faction) override
MotionMaster * GetMotionMaster()
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
std::vector< WorldStateInfo > Worldstates
void SendAreaTriggerMessage(char const *Text,...) ATTR_PRINTF(2
uint32 GraveyardsAssaulted
void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player &playerData) override
uint32 GraveyardsDefended
void GetPosition(float &x, float &y) const
std::vector< uint32 > Stats