66 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
145 for (
uint32 i = 0; i < size; ++i)
149 for (
uint32 i = 0; i < size; ++i)
164 bgRaid->SetBattlegroundGroup(
nullptr);
249 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
253 if (player->IsGameMaster())
260 TC_LOG_DEBUG(
"bg.battleground",
"BATTLEGROUND: Sending {} back to start location (map: {}) (possible exploit)", player->GetName(),
GetMapId());
282 stmt->
setUInt32(0, itr->first.GetCounter());
309 for (GuidVector::const_iterator itr2 = (itr->second).begin(); itr2 != (itr->second).end(); ++itr2)
328 (itr->second).clear();
411 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
413 player->ResetAllPowers();
470 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
477 player->SendDirectMessage(battlefieldStatus.
Write());
480 player->ResetAllPowers();
481 if (!player->IsGameMaster())
502 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
506 player->ResetAllPowers();
525 BattlegroundPlayerMap::iterator itr, next;
545 TC_LOG_ERROR(
"bg.battleground",
"Battleground::{}: player ({}) not found for BG (map: {}, instance id: {})!",
556 uint32 team = itr->second.Team;
579 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
581 player->SendDirectMessage(packet);
586 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
590 if (self || sender != player)
591 player->SendDirectMessage(packet);
605 TC_LOG_ERROR(
"bg.battleground",
"Battleground::SendBroadcastText: `broadcast_text` (ID: {}) was not found",
id);
621 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
630 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
632 player->CastSpell(player, SpellID,
true);
637 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
639 player->RemoveAura(SpellID);
644 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
655 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
661 uint32 repGain = Reputation;
672 worldstate.
Value = value;
689 else if (winner ==
HORDE)
704 uint64 battlegroundId = 1;
712 Field* fields = result->Fetch();
713 battlegroundId = fields[0].
GetUInt64() + 1;
730 pvpMatchStatistics.
Write();
734 for (BattlegroundPlayerMap::iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
736 uint32 team = itr->second.Team;
766 stmt->
setBool (2, team == winner);
767 stmt->
setUInt32(3, score->second->GetKillingBlows());
768 stmt->
setUInt32(4, score->second->GetDeaths());
769 stmt->
setUInt32(5, score->second->GetHonorableKills());
770 stmt->
setUInt32(6, score->second->GetBonusHonor());
771 stmt->
setUInt32(7, score->second->GetDamageDone());
772 stmt->
setUInt32(8, score->second->GetHealingDone());
773 stmt->
setUInt32(9, score->second->GetAttr1());
774 stmt->
setUInt32(10, score->second->GetAttr2());
775 stmt->
setUInt32(11, score->second->GetAttr3());
776 stmt->
setUInt32(12, score->second->GetAttr4());
777 stmt->
setUInt32(13, score->second->GetAttr5());
837 bool participant =
false;
839 BattlegroundPlayerMap::iterator itr =
m_Players.find(guid);
848 BattlegroundScoreMap::iterator itr2 =
PlayerScores.find(guid);
912 if (!group->RemoveMember(guid))
925 playerLeft.
Guid = guid;
942 TC_LOG_DEBUG(
"bg.battleground",
"Removed player {} from Battleground.", player->
GetName());
959 TC_LOG_ERROR(
"bg.battleground",
"Battleground::Reset: one of the counters is not 0 (alliance: {}, horde: {}) for BG (map: {}, instance id: {})!",
1012 if (!isInBattleground)
1041 if (!isInBattleground)
1072 if (originalGroup->IsLeader(playerGuid))
1151 uint32 otherTeamInvitedCount;
1152 uint32 thisTeamInvitedCount;
1153 uint32 otherTeamPlayersCount;
1154 uint32 thisTeamPlayersCount;
1177 if (otherTeamInvitedCount == thisTeamInvitedCount)
1180 else if (otherTeamInvitedCount > thisTeamInvitedCount)
1181 diff = otherTeamInvitedCount - thisTeamInvitedCount;
1190 if (otherTeamPlayersCount == thisTeamPlayersCount)
1193 else if (otherTeamPlayersCount > thisTeamPlayersCount)
1194 diff3 = otherTeamPlayersCount - thisTeamPlayersCount;
1202 diff = std::min(diff, diff2);
1204 return std::min(diff, diff3);
1240 score->AppendToPacket(pvpLogData.
Players.emplace_back());
1252 itr->second->UpdateScore(type, value);
1272 for (GuidVector::iterator itr2 = itr->second.begin(); itr2 != itr->second.end(); ++itr2)
1274 if (*itr2 == player_guid)
1276 itr->second.erase(itr2);
1289 if (!ghostList.empty())
1292 for (GuidVector::const_iterator itr = ghostList.begin(); itr != ghostList.end(); ++itr)
1308bool Battleground::AddObject(
uint32 type,
uint32 entry,
float x,
float y,
float z,
float o,
float rotation0,
float rotation1,
float rotation2,
float rotation3,
uint32 ,
GOState goState)
1319 if (!rotation0 && !rotation1 && !rotation2 && !rotation3)
1321 TC_LOG_DEBUG(
"bg.battleground",
"Battleground::AddObject: gameoobject [entry: {}, object type: {}] for BG (map: {}) has zeroed rotation fields, "
1322 "orientation used temporally, but please fix the spawn", entry, type,
m_MapId);
1331 if (!go->
Create(
GetBgMap()->GenerateLowGuid<HighGuid::GameObject>(), entry,
GetBgMap(),
PHASEMASK_NORMAL,
Position(x, y, z, o), rot, 255, goState))
1333 TC_LOG_ERROR(
"bg.battleground",
"Battleground::AddObject: cannot create gameobject (entry: {}) for BG (map: {}, instance id: {})!",
1372 return AddObject(type, entry, pos.
GetPositionX(), pos.
GetPositionY(), pos.
GetPositionZ(), pos.
GetOrientation(), rotation0, rotation1, rotation2, rotation3, respawnTime, goState);
1389 TC_LOG_ERROR(
"bg.battleground",
"Battleground::DoorClose: door gameobject (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1401 TC_LOG_ERROR(
"bg.battleground",
"Battleground::DoorOpen: door gameobject (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1411 TC_LOG_ERROR(
"bg.battleground",
"Battleground::GetBGObject: gameobject (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1414 TC_LOG_INFO(
"bg.battleground",
"Battleground::GetBGObject: gameobject (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1426 TC_LOG_ERROR(
"bg.battleground",
"Battleground::GetBGCreature: creature (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1429 TC_LOG_INFO(
"bg.battleground",
"Battleground::GetBGCreature: creature (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1457 obj->SetRespawnTime(respawntime);
1486 TC_LOG_ERROR(
"bg.battleground",
"Battleground::AddCreature: cannot create creature (entry: {}) for BG (map: {}, instance id: {})!",
1497 TC_LOG_ERROR(
"bg.battleground",
"Battleground::AddCreature: creature template (entry: {}) does not exist for BG (map: {}, instance id: {})!",
1529 creature->AddObjectToRemoveList();
1534 TC_LOG_ERROR(
"bg.battleground",
"Battleground::DelCreature: creature (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1547 obj->SetRespawnTime(0);
1552 TC_LOG_ERROR(
"bg.battleground",
"Battleground::DelObject: gameobject (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1565 obj->RemoveFromWorld();
1569 TC_LOG_INFO(
"bg.battleground",
"Battleground::RemoveObjectFromWorld: gameobject (type: {}, {}) not found for BG (map: {}, instance id: {})!",
1580 creature->SetChannelObjectGuid(creature->GetGUID());
1587 creature->SetModCastingSpeed(1.0f);
1591 TC_LOG_ERROR(
"bg.battleground",
"Battleground::AddSpiritGuide: cannot create spirit guide (type: {}, entry: {}) for BG (map: {}, instance id: {})!",
1618 va_start(ap, source);
1641 TC_LOG_ERROR(
"bg.battleground",
"Battleground::HandleTriggerBuff called with null bg map, {}", go_guid.
ToString());
1651 while (index >= 0 &&
BgObjects[index] != go_guid)
1655 TC_LOG_ERROR(
"bg.battleground",
"Battleground::HandleTriggerBuff: cannot find buff gameobject ({}, entry: {}, type: {}) in internal data for BG (map: {}, instance id: {})!",
1668 for (
uint8 currBuffTypeIndex = 0; currBuffTypeIndex < 3; ++currBuffTypeIndex)
1671 index -= currBuffTypeIndex;
1689 if (killer == victim)
1695 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
1698 if (!creditedPlayer || creditedPlayer == killer)
1718 BattlegroundPlayerMap::const_iterator itr =
m_Players.find(guid);
1720 return itr->second.Team;
1731 BattlegroundPlayerMap::const_iterator itr =
m_Players.find(guid);
1758 for (BattlegroundPlayerMap::const_iterator itr =
m_Players.begin(); itr !=
m_Players.end(); ++itr)
1760 if (itr->second.Team ==
Team)
1780 TC_LOG_ERROR(
"bg.battleground",
"Battleground::GetObjectType: player used gameobject ({}) which is not in internal data for BG (map: {}, instance id: {}), cheating?",
1802 for (BattlegroundPlayerMap::const_iterator itr =
GetPlayers().begin(); itr !=
GetPlayers().end(); ++itr)
1804 player->StartTimedAchievement(type, entry);
1830 TC_LOG_DEBUG(
"bg.battleground",
"Unhandled AreaTrigger {} in Battleground {}. Player coords (x: {}, y: {}, z: {})",
1836 TC_LOG_ERROR(
"bg.battleground",
"Battleground::CheckAchievementCriteriaMeet: No implementation for criteria {}", criteriaId);
@ BG_QUEUE_INVITATION_TYPE_NO_BALANCE
@ CHECK_PLAYER_POSITION_INVERVAL
const uint32 Buff_Entries[3]
@ BG_DESERTION_TYPE_OFFLINE
@ BG_CREATURE_ENTRY_H_SPIRITGUIDE
@ BG_CREATURE_ENTRY_A_SPIRITGUIDE
@ BG_TEXT_START_TWO_MINUTES
@ BG_TEXT_BATTLE_HAS_BEGUN
@ BG_TEXT_START_ONE_MINUTE
@ BG_TEXT_START_HALF_MINUTE
@ SPELL_SPIRIT_HEAL_CHANNEL
@ SPELL_ARENA_PREPARATION
@ SPELL_HONORABLE_DEFENDER_25Y
@ SPELL_RESURRECTION_VISUAL
@ SPELL_WAITING_FOR_RESURRECT
@ SPELL_HONORABLE_DEFENDER_60Y
@ BG_STARTING_EVENT_THIRD
@ BG_STARTING_EVENT_SECOND
@ BG_STARTING_EVENT_FIRST
@ BG_STARTING_EVENT_FOURTH
@ CHAR_SEL_PVPSTATS_MAXID
@ CHAR_INS_PVPSTATS_PLAYER
@ CHAR_INS_PVPSTATS_BATTLEGROUND
@ CHAR_INS_DESERTER_TRACK
AchievementCriteriaTimedTypes
@ ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP
@ ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND
@ ACHIEVEMENT_CRITERIA_TYPE_WIN_BG
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
std::shared_ptr< PreparedResultSet > PreparedQueryResult
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
@ LANG_BG_STARTED_ANNOUNCE_WORLD
@ LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING
@ LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING_SECS
#define TC_LOG_DEBUG(filterType__,...)
#define TC_LOG_ERROR(filterType__,...)
#define TC_LOG_INFO(filterType__,...)
@ TEMPSUMMON_MANUAL_DESPAWN
std::vector< ObjectGuid > GuidVector
uint32 urand(uint32 min, uint32 max)
uint8 constexpr PVP_TEAMS_COUNT
@ SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY
@ CHAT_MSG_BG_SYSTEM_NEUTRAL
@ SPELL_AURA_MOD_SHAPESHIFT
@ SPELL_AURA_SPIRIT_OF_REDEMPTION
@ SPELL_AURA_MOD_INVISIBILITY
@ SPELL_AURA_MOD_REPUTATION_GAIN
@ SPELL_AURA_MOD_FACTION_REPUTATION_GAIN
@ FORM_SPIRITOFREDEMPTION
int32 GetDuration() const
bool HasEffectType(AuraType type) const
SpellInfo const * GetSpellInfo() const
void SetBG(Battleground *bg)
static BattlegroundQueueTypeId BGQueueTypeId(BattlegroundTypeId bgTypeId, uint8 bracketId, uint8 arenaType)
static void BuildBattlegroundStatusNone(WorldPackets::Battleground::BattlefieldStatusNone *battlefieldStatus, uint32 queueSlot)
static bool IsBGWeekend(BattlegroundTypeId bgTypeId)
static void BuildBattlegroundStatusActive(WorldPackets::Battleground::BattlefieldStatusActive *battlefieldStatus, Battleground const *bg, Player const *player, uint32 queueSlot, BattlegroundQueueTypeId queueId)
Player * _GetPlayerForTeam(uint32 teamId, BattlegroundPlayerMap::const_iterator itr, char const *context) const
virtual void AddPlayer(Player *player)
GuidVector m_ResurrectQueue
uint32 m_ArenaTeamMMR[PVP_TEAMS_COUNT]
uint32 GetAlivePlayersCountByTeam(uint32 Team) const
BattlegroundTypeId GetTypeID(bool GetRandom=false) const
virtual void EndBattleground(uint32 winner)
void HandleTriggerBuff(ObjectGuid go_guid)
void AddPlayerToResurrectQueue(ObjectGuid npc_guid, ObjectGuid player_guid)
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)
ArenaTeamScore _arenaTeamScores[PVP_TEAMS_COUNT]
void RelocateDeadPlayers(ObjectGuid guideGuid)
Relocate all players in ReviveQueue to the closest graveyard.
uint32 GetReviveQueueSize() const
void SendPacketToAll(WorldPacket const *packet) const
uint32 GetMinLevel() const
void ModifyStartDelayTime(int diff)
Position const * GetTeamStartPosition(TeamId teamId) const
void BuildPvPLogDataPacket(WorldPackets::Battleground::PVPMatchStatistics &pvpLogData)
void CastSpellOnTeam(uint32 SpellID, uint32 TeamID)
virtual void HandleKillPlayer(Player *player, Player *killer)
static TeamId GetTeamIndexByTeamId(uint32 Team)
uint32 m_ArenaTeamIds[PVP_TEAMS_COUNT]
virtual bool SetupBattleground()
void DoorOpen(uint32 type)
std::deque< ObjectGuid > m_OfflineQueue
uint32 GetMinPlayersPerTeam() const
void PlayerAddedToBGCheckIfBGIsRunning(Player *player)
bool DelCreature(uint32 type)
uint8 GetArenaType() const
BattlegroundPlayerMap m_Players
void SpawnBGObject(uint32 type, uint32 respawntime)
uint32 GetMaxPlayersPerTeam() const
uint32 m_ValidStartPositionTimer
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)
void SetWinner(PvPTeamId winnerTeamId)
uint8 GetUniqueBracketId() const
void AddOrSetPlayerToCorrectBgGroup(Player *player, uint32 team)
uint32 m_ClientInstanceID
int32 GetObjectType(ObjectGuid guid)
void AddToBGFreeSlotQueue()
uint32 GetPlayerTeam(ObjectGuid guid) const
BattlegroundTypeId m_TypeID
Group * GetBgRaid(uint32 TeamID) const
Creature * GetBGCreature(uint32 type, bool logError=true)
uint32 m_LastResurrectTime
bool CanAwardArenaPoints() const
uint32 GetOtherTeam(uint32 teamId) const
uint32 GetMaxPlayers() const
BattlegroundMap * GetBgMap() const
virtual void PostUpdateImpl(uint32)
Post-update hook.
BattlegroundTypeId m_RandomTypeID
void SetBracket(PvPDifficultyEntry const *bracketEntry)
void DecreaseInvitedCount(uint32 team)
std::string const & GetName() const
PvPTeamId GetWinner() const
virtual void RemovePlayer(Player *, ObjectGuid, uint32)
void _ProcessResurrect(uint32 diff)
BattlegroundMap * FindBgMap() const
void BlockMovement(Player *player)
void RemoveAuraOnTeam(uint32 SpellID, uint32 TeamID)
Player * _GetPlayer(ObjectGuid guid, bool offlineRemove, char const *context) const
virtual bool AddSpiritGuide(uint32 type, float x, float y, float z, float o, TeamId teamId=TEAM_NEUTRAL)
virtual void ResetBGSubclass()
void DoorClose(uint32 type)
std::map< ObjectGuid, GuidVector > m_ReviveQueue
void SetBgRaid(uint32 TeamID, Group *bg_raid)
bool m_PrematureCountDown
uint32 m_PlayersCount[PVP_TEAMS_COUNT]
Group * m_BgRaids[PVP_TEAMS_COUNT]
uint32 m_PrematureCountDownTimer
void SetStartTime(uint32 Time)
void SetEndTime(uint32 Time)
void PlaySoundToTeam(uint32 soundID, uint32 teamID)
void SendPacketToTeam(uint32 TeamID, WorldPacket const *packet, Player *sender=nullptr, bool self=true) const
void SetLevelRange(uint32 min, uint32 max)
int32 m_TeamScores[PVP_TEAMS_COUNT]
void PSendMessageToAll(uint32 entry, ChatMsg type, Player const *source,...)
void SendMessageToAll(uint32 entry, ChatMsg type, Player const *source=nullptr)
void EventPlayerLoggedOut(Player *player)
virtual WorldSafeLocsEntry const * GetClosestGraveyard(Player *player)
void SendChatMessage(Creature *source, uint8 textId, WorldObject *target=nullptr)
void RewardXPAtKill(Player *killer, Player *victim)
void SetStatus(BattlegroundStatus Status)
virtual void StartingEventCloseDoors()
BattlegroundBracketId m_BracketId
void BroadcastWorker(Do &_do)
bool IsPlayerInBattleground(ObjectGuid guid) const
BattlegroundStartTimeIntervals StartDelayTimes[BG_STARTING_EVENT_COUNT]
void SendBroadcastText(uint32 id, ChatMsg msgType, WorldObject const *target=nullptr)
bool DelObject(uint32 type)
uint32 GetStartTime() const
BattlegroundPlayerMap const & GetPlayers() const
int32 GetStartDelayTime() const
BattlegroundScoreMap PlayerScores
virtual void StartingEventOpenDoors()
float GetStartMaxDist() const
Position StartPosition[PVP_TEAMS_COUNT]
bool isBattleground() const
uint32 m_MinPlayersPerTeam
void SetLastResurrectTime(uint32 Time)
void RewardHonorToTeam(uint32 Honor, uint32 TeamID)
BattlegroundStatus GetStatus() const
bool HasFreeSlots() const
virtual bool UpdatePlayerScore(Player *player, uint32 type, uint32 value, bool doAddHonor=true)
virtual void HandleAreaTrigger(Player *, uint32)
void _ProcessOfflineQueue()
void RemoveFromBGFreeSlotQueue()
void _ProcessProgress(uint32 diff)
void SetHoliday(bool is_holiday)
uint32 GetPlayersCountByTeam(uint32 Team) const
virtual bool PreUpdateImpl(uint32)
Pre-update hook.
void SetTeamStartPosition(TeamId teamId, Position const &pos)
uint32 GetTeamScore(uint32 TeamID) const
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry)
virtual bool CheckAchievementCriteriaMeet(uint32, Player const *, Unit const *=nullptr, uint32=0)
virtual void CheckWinConditions()
uint32 m_MaxPlayersPerTeam
void EventPlayerLoggedIn(Player *player)
void _CheckSafePositions(uint32 diff)
void _ProcessJoin(uint32 diff)
BattlegroundBracketId GetBracketId() const
void UpdateWorldState(uint32 variable, uint32 value)
void UpdatePlayersCountByTeam(uint32 Team, bool remove)
bool RemoveObjectFromWorld(uint32 type)
uint32 GetBonusHonorFromKill(uint32 kills) const
void RewardReputationToTeam(uint32 faction_id, uint32 Reputation, uint32 TeamID)
uint32 GetMaxLevel() const
uint32 GetPlayersSize() const
void RemovePlayerFromResurrectQueue(ObjectGuid player_guid)
void SetStartDelayTime(int Time)
virtual void RemovePlayerAtLeave(ObjectGuid guid, bool Transport, bool SendPacket)
GameObject * GetBGObject(uint32 type, bool logError=true)
uint32 GetFreeSlotsForTeam(uint32 Team) const
void PlaySoundToAll(uint32 soundID)
uint32 GetInvitedCount(uint32 team) const
void _ProcessLeave(uint32 diff)
virtual uint32 GetPrematureWinner()
BattlegroundStatus m_Status
uint32 StartMessageIds[BG_STARTING_EVENT_COUNT]
void SetHomePosition(float x, float y, float z, float o)
void SetRespawnDelay(uint32 delay)
bool Create(ObjectGuid::LowType guidlow, Map *map, uint32 phaseMask, uint32 entry, Position const &pos, CreatureData const *data=nullptr, uint32 vehId=0, bool dynamic=false)
Class used to access individual fields of database query result.
GameobjectTypes GetGoType() const
bool Create(ObjectGuid::LowType guidlow, uint32 name_id, Map *map, uint32 phaseMask, Position const &pos, QuaternionData const &rotation, uint32 animprogress, GOState go_state, uint32 artKit=0, bool dynamic=false, ObjectGuid::LowType spawnid=0)
uint8 GetMemberGroup(ObjectGuid guid) const
bool AddMember(Player *player)
void ChangeLeader(ObjectGuid guid)
void SetBattlegroundGroup(Battleground *bg)
bool IsMember(ObjectGuid guid) const
bool Create(Player *leader)
ObjectGuid::LowType GenerateLowGuid()
GameObject * GetGameObject(ObjectGuid const &guid)
Creature * GetCreature(ObjectGuid const &guid)
LowType GetCounter() const
std::string ToString() const
bool HasFlag(uint16 index, uint32 flag) const
static ObjectGuid GetGUID(Object const *o)
void SetClientControl(Unit *target, bool allowMove)
void SetBGTeam(uint32 team)
void SendDirectMessage(WorldPacket const *data) const
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, WorldObject *ref=nullptr)
static void OfflineResurrect(ObjectGuid const &guid, CharacterDatabaseTransaction trans)
void SpawnCorpseBones(bool triggerSave=true)
Group * GetOriginalGroup() const
bool IsAtGroupRewardDistance(WorldObject const *pRewardSource) const
void DestroyConjuredItems(bool update)
void UnsummonPetTemporaryIfAny()
void RemoveBattlegroundQueueId(BattlegroundQueueTypeId val)
bool GetRandomWinner() const
void RewardPlayerAndGroupAtKill(Unit *victim, bool isBattleGround)
void RemovePet(Pet *pet, PetSaveMode mode, bool returnreagent=false)
bool TeleportToBGEntryPoint()
void ResetAchievementCriteria(AchievementCriteriaCondition condition, uint32 value, bool evenIfCriteriaComplete=false)
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
uint32 GetBattlegroundQueueIndex(BattlegroundQueueTypeId bgQueueTypeId) const
void ModifyArenaPoints(int32 value, CharacterDatabaseTransaction trans=CharacterDatabaseTransaction(nullptr))
If trans is specified, honor save query will be added to trans.
bool RewardHonor(Unit *victim, uint32 groupsize, int32 honor=-1, bool pvptoken=false)
void ResummonPetTemporaryUnSummonedIfAny()
void SetBattlegroundId(uint32 val, BattlegroundTypeId bgTypeId)
void SetBattlegroundOrBattlefieldRaid(Group *group, int8 subgroup=-1)
ReputationMgr & GetReputationMgr()
void RemoveArenaEnchantments(EnchantmentSlot slot)
void SetRandomWinner(bool isWinner)
void ResurrectPlayer(float restore_percent, bool applySickness=false)
void setUInt32(uint8 index, uint32 value)
void setBool(uint8 index, bool value)
void setUInt64(uint8 index, uint64 value)
void setUInt8(uint8 index, uint8 value)
bool ModifyReputation(FactionEntry const *factionEntry, int32 standing, bool spillOverOnly=false)
bool HasAttribute(SpellAttr0 attribute) const
TempSummon * SummonPassenger(uint32 entry, Position const &pos, TempSummonType summonType, SummonPropertiesEntry const *properties=nullptr, uint32 duration=0, Unit *summoner=nullptr, uint32 spellId=0, uint32 vehId=0)
Temporarily summons a creature as passenger on this transport.
void RemoveAurasByType(AuraType auraType, std::function< bool(AuraApplication const *)> const &check, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
ShapeshiftForm GetShapeshiftForm() const
bool HasAuraType(AuraType auraType) const
int32 GetTotalAuraModifier(AuraType auraType) const
int32 GetTotalAuraModifierByMiscValue(AuraType auraType, int32 misc_value) const
void CombatStop(bool includingCast=false, bool mutualPvP=true)
void SetUnitFlag(UnitFlags flags)
void CombatStopWithPets(bool includingCast=false)
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
std::string const & GetName() const
void SendObjectDeSpawnAnim(ObjectGuid guid)
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
std::vector< PVPLogData_Player > Players
Optional< PVPLogData_Arena > Arena
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * GetRawPacket() const
WorldPacket const * Write() override
@ CONFIG_BG_REWARD_LOSER_HONOR_LAST
@ CONFIG_BATTLEGROUND_INVITATION_TYPE
@ CONFIG_BG_REWARD_WINNER_ARENA_FIRST
@ CONFIG_BG_REWARD_WINNER_ARENA_LAST
@ CONFIG_BG_REWARD_WINNER_HONOR_FIRST
@ CONFIG_BG_REWARD_LOSER_HONOR_FIRST
@ CONFIG_BG_REWARD_WINNER_HONOR_LAST
@ CONFIG_BATTLEGROUND_STORE_STATISTICS_ENABLE
@ CONFIG_BATTLEGROUND_TRACK_DESERTERS
@ CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
uint32 hk_honor_at_level(uint8 level, float multiplier=1.0f)
uint16 BattlemasterListId
virtual void BuildObjectivesBlock(WorldPackets::Battleground::PVPLogData_Player &playerData)=0
virtual void AppendToPacket(WorldPackets::Battleground::PVPLogData_Player &playerData)
float GetPositionZ() const
float GetOrientation() const
float GetPositionX() const
void GetPosition(float &x, float &y) const
float GetPositionY() const
float GetExactDistSq(float x, float y, float z) const
BattlegroundBracketId GetBracketId() const
static QuaternionData fromEulerAnglesZYX(float Z, float Y, float X)
PVPLogData_RatingData Ratings
std::array< std::string_view, 2 > TeamName
std::variant< PVPLogData_Honor, uint8 > HonorOrFaction
std::array< int32, 2 > PrematchMMR
std::array< int32, 2 > Postmatch
std::array< int32, 2 > Prematch