summaryrefslogtreecommitdiff
path: root/src/server/game/Battlegrounds/Battleground.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Battlegrounds/Battleground.cpp')
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp221
1 files changed, 110 insertions, 111 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index b9a95b9457..02b00904d4 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -40,65 +40,65 @@ namespace acore
{
class BattlegroundChatBuilder
{
- public:
- BattlegroundChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, va_list* args = nullptr)
- : _msgtype(msgtype), _textId(textId), _source(source), _args(args) { }
+ public:
+ BattlegroundChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, va_list* args = nullptr)
+ : _msgtype(msgtype), _textId(textId), _source(source), _args(args) { }
- void operator()(WorldPacket& data, LocaleConstant loc_idx)
+ void operator()(WorldPacket& data, LocaleConstant loc_idx)
+ {
+ char const* text = sObjectMgr->GetAcoreString(_textId, loc_idx);
+ if (_args)
{
- char const* text = sObjectMgr->GetAcoreString(_textId, loc_idx);
- if (_args)
- {
- // we need copy va_list before use or original va_list will corrupted
- va_list ap;
- va_copy(ap, *_args);
+ // we need copy va_list before use or original va_list will corrupted
+ va_list ap;
+ va_copy(ap, *_args);
- char str[2048];
- vsnprintf(str, 2048, text, ap);
- va_end(ap);
+ char str[2048];
+ vsnprintf(str, 2048, text, ap);
+ va_end(ap);
- do_helper(data, &str[0]);
- }
- else
- do_helper(data, text);
+ do_helper(data, &str[0]);
}
+ else
+ do_helper(data, text);
+ }
- private:
- void do_helper(WorldPacket& data, char const* text)
- {
- ChatHandler::BuildChatPacket(data, _msgtype, LANG_UNIVERSAL, _source, _source, text);
- }
+ private:
+ void do_helper(WorldPacket& data, char const* text)
+ {
+ ChatHandler::BuildChatPacket(data, _msgtype, LANG_UNIVERSAL, _source, _source, text);
+ }
- ChatMsg _msgtype;
- uint32 _textId;
- Player const* _source;
- va_list* _args;
+ ChatMsg _msgtype;
+ uint32 _textId;
+ Player const* _source;
+ va_list* _args;
};
class Battleground2ChatBuilder
{
- public:
- Battleground2ChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, int32 arg1, int32 arg2)
- : _msgtype(msgtype), _textId(textId), _source(source), _arg1(arg1), _arg2(arg2) {}
+ public:
+ Battleground2ChatBuilder(ChatMsg msgtype, uint32 textId, Player const* source, int32 arg1, int32 arg2)
+ : _msgtype(msgtype), _textId(textId), _source(source), _arg1(arg1), _arg2(arg2) {}
- void operator()(WorldPacket& data, LocaleConstant loc_idx)
- {
- char const* text = sObjectMgr->GetAcoreString(_textId, loc_idx);
- char const* arg1str = _arg1 ? sObjectMgr->GetAcoreString(_arg1, loc_idx) : "";
- char const* arg2str = _arg2 ? sObjectMgr->GetAcoreString(_arg2, loc_idx) : "";
+ void operator()(WorldPacket& data, LocaleConstant loc_idx)
+ {
+ char const* text = sObjectMgr->GetAcoreString(_textId, loc_idx);
+ char const* arg1str = _arg1 ? sObjectMgr->GetAcoreString(_arg1, loc_idx) : "";
+ char const* arg2str = _arg2 ? sObjectMgr->GetAcoreString(_arg2, loc_idx) : "";
- char str[2048];
- snprintf(str, 2048, text, arg1str, arg2str);
+ char str[2048];
+ snprintf(str, 2048, text, arg1str, arg2str);
- ChatHandler::BuildChatPacket(data, _msgtype, LANG_UNIVERSAL, _source, _source, str);
- }
+ ChatHandler::BuildChatPacket(data, _msgtype, LANG_UNIVERSAL, _source, _source, str);
+ }
- private:
- ChatMsg _msgtype;
- uint32 _textId;
- Player const* _source;
- uint32 _arg1;
- uint32 _arg2;
+ private:
+ ChatMsg _msgtype;
+ uint32 _textId;
+ Player const* _source;
+ uint32 _arg1;
+ uint32 _arg2;
};
} // namespace acore
@@ -169,7 +169,7 @@ Battleground::Battleground()
m_PlayersCount[TEAM_ALLIANCE] = 0;
m_PlayersCount[TEAM_HORDE] = 0;
- m_BgInvitedPlayers[TEAM_ALLIANCE]= 0;
+ m_BgInvitedPlayers[TEAM_ALLIANCE] = 0;
m_BgInvitedPlayers[TEAM_HORDE] = 0;
m_TeamScores[TEAM_ALLIANCE] = 0;
@@ -256,7 +256,7 @@ void Battleground::Update(uint32 diff)
case STATUS_IN_PROGRESS:
if (isArena())
{
- if (GetStartTime() >= 46*MINUTE*IN_MILLISECONDS) // pussywizard: 1min startup + 45min allowed duration
+ if (GetStartTime() >= 46 * MINUTE * IN_MILLISECONDS) // pussywizard: 1min startup + 45min allowed duration
{
UpdateArenaWorldState();
CheckArenaAfterTimerConditions();
@@ -529,16 +529,16 @@ inline void Battleground::_ProcessJoin(uint32 diff)
player->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION);
player->ResetAllPowers();
// remove auras with duration lower than 30s
- Unit::AuraApplicationMap & auraMap = player->GetAppliedAuras();
+ Unit::AuraApplicationMap& auraMap = player->GetAppliedAuras();
for (Unit::AuraApplicationMap::iterator iter = auraMap.begin(); iter != auraMap.end();)
{
- AuraApplication * aurApp = iter->second;
+ AuraApplication* aurApp = iter->second;
Aura* aura = aurApp->GetBase();
if (!aura->IsPermanent()
- && aura->GetDuration() <= 30*IN_MILLISECONDS
- && aurApp->IsPositive()
- // && (!aura->GetSpellInfo()->HasAttribute(SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)) Xinef: bullshit condition, ALL buffs should be removed
- && (!aura->HasEffectType(SPELL_AURA_MOD_INVISIBILITY)))
+ && aura->GetDuration() <= 30 * IN_MILLISECONDS
+ && aurApp->IsPositive()
+ // && (!aura->GetSpellInfo()->HasAttribute(SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY)) Xinef: bullshit condition, ALL buffs should be removed
+ && (!aura->HasEffectType(SPELL_AURA_MOD_INVISIBILITY)))
player->RemoveAura(iter);
else
++iter;
@@ -564,10 +564,10 @@ inline void Battleground::_ProcessJoin(uint32 diff)
p->SetSummonPoint(t->GetMapId(), t->GetPositionX(), t->GetPositionY(), t->GetPositionZ(), 15, true);
- WorldPacket data(SMSG_SUMMON_REQUEST, 8+4+4);
+ WorldPacket data(SMSG_SUMMON_REQUEST, 8 + 4 + 4);
data << uint64(t->GetGUID());
data << uint32(t->GetZoneId());
- data << uint32(15*IN_MILLISECONDS);
+ data << uint32(15 * IN_MILLISECONDS);
p->GetSession()->SendPacket(&data);
}
m_ToBeTeleported.clear();
@@ -673,17 +673,17 @@ void Battleground::RewardHonorToTeam(uint32 honor, TeamId teamId)
void Battleground::RewardReputationToTeam(uint32 factionId, uint32 reputation, TeamId teamId)
{
- for (BattlegroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
- if (itr->second->GetBgTeamId() == teamId)
- {
- uint32 realFactionId = GetRealRepFactionForPlayer(factionId, itr->second);
+ for (BattlegroundPlayerMap::const_iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
+ if (itr->second->GetBgTeamId() == teamId)
+ {
+ uint32 realFactionId = GetRealRepFactionForPlayer(factionId, itr->second);
- uint32 repGain = reputation;
- AddPct(repGain, itr->second->GetTotalAuraModifier(SPELL_AURA_MOD_REPUTATION_GAIN));
- AddPct(repGain, itr->second->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_FACTION_REPUTATION_GAIN, realFactionId));
- if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(realFactionId))
- itr->second->GetReputationMgr().ModifyReputation(factionEntry, repGain);
- }
+ uint32 repGain = reputation;
+ AddPct(repGain, itr->second->GetTotalAuraModifier(SPELL_AURA_MOD_REPUTATION_GAIN));
+ AddPct(repGain, itr->second->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_FACTION_REPUTATION_GAIN, realFactionId));
+ if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(realFactionId))
+ itr->second->GetReputationMgr().ModifyReputation(factionEntry, repGain);
+ }
}
uint32 Battleground::GetRealRepFactionForPlayer(uint32 factionId, Player* player)
@@ -738,7 +738,7 @@ void Battleground::EndBattleground(TeamId winnerTeamId)
if (GetStatus() == STATUS_WAIT_LEAVE)
return;
uint32 startDelay = GetStartDelayTime();
- bool bValidArena = isArena() && isRated() && GetStatus() == STATUS_IN_PROGRESS && GetStartTime() >= startDelay+15000; // pussywizard: only if arena lasted at least 15 secs
+ bool bValidArena = isArena() && isRated() && GetStatus() == STATUS_IN_PROGRESS && GetStartTime() >= startDelay + 15000; // pussywizard: only if arena lasted at least 15 secs
SetStatus(STATUS_WAIT_LEAVE);
ArenaTeam* winnerArenaTeam = nullptr;
@@ -825,7 +825,7 @@ void Battleground::EndBattleground(TeamId winnerTeamId)
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_LOG_FIGHT);
stmt->setUInt32(0, fightId);
stmt->setUInt8(1, m_ArenaType);
- stmt->setUInt32(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime()-startDelay)/1000));
+ stmt->setUInt32(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime() - startDelay) / 1000));
stmt->setUInt32(3, winnerArenaTeam->GetId());
stmt->setUInt32(4, loserArenaTeam->GetId());
stmt->setUInt16(5, (uint16)winnerTeamRating);
@@ -884,7 +884,7 @@ void Battleground::EndBattleground(TeamId winnerTeamId)
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_ARENA_LOG_FIGHT);
stmt->setUInt32(0, fightId);
stmt->setUInt8(1, m_ArenaType);
- stmt->setUInt32(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime()-startDelay)/1000));
+ stmt->setUInt32(2, ((GetStartTime() <= startDelay ? 0 : GetStartTime() - startDelay) / 1000));
stmt->setUInt32(3, winnerArenaTeam->GetId());
stmt->setUInt32(4, loserArenaTeam->GetId());
stmt->setUInt16(5, (uint16)winnerTeamRating);
@@ -1364,7 +1364,7 @@ bool Battleground::HasFreeSlots() const
{
if (GetStatus() != STATUS_WAIT_JOIN && GetStatus() != STATUS_IN_PROGRESS)
return false;
- for (uint8 i=0; i<BG_TEAMS_COUNT; ++i)
+ for (uint8 i = 0; i < BG_TEAMS_COUNT; ++i)
if (GetFreeSlotsForTeam((TeamId)i) > 0)
return true;
return false;
@@ -1382,12 +1382,12 @@ void Battleground::ReadyMarkerClicked(Player* p)
return;
readyMarkerClickedSet.insert(p->GetGUIDLow());
uint32 count = readyMarkerClickedSet.size();
- uint32 req = GetArenaType()*2;
+ uint32 req = GetArenaType() * 2;
p->GetSession()->SendNotification("You are marked as ready %u/%u", count, req);
if (count == req)
{
m_Events |= BG_STARTING_EVENT_2;
- m_StartTime += GetStartDelayTime()-BG_START_DELAY_15S;
+ m_StartTime += GetStartDelayTime() - BG_START_DELAY_15S;
SetStartDelayTime(BG_START_DELAY_15S);
}
}
@@ -1427,7 +1427,7 @@ void Battleground::UpdatePlayerScore(Player* player, uint32 type, uint32 value,
itr->second->BonusHonor += value;
}
break;
- // used only in EY, but in MSG_PVP_LOG_DATA opcode
+ // used only in EY, but in MSG_PVP_LOG_DATA opcode
case SCORE_DAMAGE_DONE: // Damage Done
itr->second->DamageDone += value;
if (isArena() && isRated() && GetStatus() == STATUS_IN_PROGRESS)
@@ -1448,7 +1448,7 @@ void Battleground::UpdatePlayerScore(Player* player, uint32 type, uint32 value,
break;
default:
sLog->outError("Battleground::UpdatePlayerScore: unknown score type (%u) for BG (map: %u, instance id: %u)!",
- type, m_MapId, m_InstanceID);
+ type, m_MapId, m_InstanceID);
break;
}
}
@@ -1512,37 +1512,37 @@ bool Battleground::AddObject(uint32 type, uint32 entry, float x, float y, float
// So we must create it specific for this instance
GameObject* go = sObjectMgr->IsGameObjectStaticTransport(entry) ? new StaticTransport() : new GameObject();
if (!go->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT), entry, GetBgMap(),
- PHASEMASK_NORMAL, x, y, z, o, G3D::Quat(rotation0, rotation1, rotation2, rotation3), 100, goState))
+ PHASEMASK_NORMAL, x, y, z, o, G3D::Quat(rotation0, rotation1, rotation2, rotation3), 100, goState))
{
sLog->outErrorDb("Battleground::AddObject: cannot create gameobject (entry: %u) for BG (map: %u, instance id: %u)!",
- entry, m_MapId, m_InstanceID);
+ entry, m_MapId, m_InstanceID);
sLog->outError("Battleground::AddObject: cannot create gameobject (entry: %u) for BG (map: %u, instance id: %u)!",
- entry, m_MapId, m_InstanceID);
+ entry, m_MapId, m_InstanceID);
delete go;
return false;
}
-/*
- uint32 guid = go->GetGUIDLow();
-
- // without this, UseButtonOrDoor caused the crash, since it tried to get go info from godata
- // iirc that was changed, so adding to go data map is no longer required if that was the only function using godata from GameObject without checking if it existed
- GameObjectData& data = sObjectMgr->NewGOData(guid);
-
- data.id = entry;
- data.mapid = GetMapId();
- data.posX = x;
- data.posY = y;
- data.posZ = z;
- data.orientation = o;
- data.rotation0 = rotation0;
- data.rotation1 = rotation1;
- data.rotation2 = rotation2;
- data.rotation3 = rotation3;
- data.spawntimesecs = respawnTime;
- data.spawnMask = 1;
- data.animprogress = 100;
- data.go_state = 1;
-*/
+ /*
+ uint32 guid = go->GetGUIDLow();
+
+ // without this, UseButtonOrDoor caused the crash, since it tried to get go info from godata
+ // iirc that was changed, so adding to go data map is no longer required if that was the only function using godata from GameObject without checking if it existed
+ GameObjectData& data = sObjectMgr->NewGOData(guid);
+
+ data.id = entry;
+ data.mapid = GetMapId();
+ data.posX = x;
+ data.posY = y;
+ data.posZ = z;
+ data.orientation = o;
+ data.rotation0 = rotation0;
+ data.rotation1 = rotation1;
+ data.rotation2 = rotation2;
+ data.rotation3 = rotation3;
+ data.spawntimesecs = respawnTime;
+ data.spawnMask = 1;
+ data.animprogress = 100;
+ data.go_state = 1;
+ */
// Add to world, so it can be later looked up from HashMapHolder
if (!map->AddToMap(go))
{
@@ -1568,7 +1568,7 @@ void Battleground::DoorClose(uint32 type)
}
else
sLog->outError("Battleground::DoorClose: door gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
+ type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
}
void Battleground::DoorOpen(uint32 type)
@@ -1580,7 +1580,7 @@ void Battleground::DoorOpen(uint32 type)
}
else
sLog->outError("Battleground::DoorOpen: door gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
+ type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
}
GameObject* Battleground::GetBGObject(uint32 type)
@@ -1588,7 +1588,7 @@ GameObject* Battleground::GetBGObject(uint32 type)
GameObject* obj = GetBgMap()->GetGameObject(BgObjects[type]);
if (!obj)
sLog->outError("Battleground::GetBGObject: gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
+ type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
return obj;
}
@@ -1597,7 +1597,7 @@ Creature* Battleground::GetBGCreature(uint32 type)
Creature* creature = GetBgMap()->GetCreature(BgCreatures[type]);
if (!creature)
sLog->outError("Battleground::GetBGCreature: creature (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, GUID_LOPART(BgCreatures[type]), m_MapId, m_InstanceID);
+ type, GUID_LOPART(BgCreatures[type]), m_MapId, m_InstanceID);
return creature;
}
@@ -1608,10 +1608,9 @@ void Battleground::SpawnBGObject(uint32 type, uint32 respawntime)
{
if (respawntime)
obj->SetLootState(GO_JUST_DEACTIVATED);
- else
- if (obj->getLootState() == GO_JUST_DEACTIVATED)
- // Change state from GO_JUST_DEACTIVATED to GO_READY in case battleground is starting again
- obj->SetLootState(GO_READY);
+ else if (obj->getLootState() == GO_JUST_DEACTIVATED)
+ // Change state from GO_JUST_DEACTIVATED to GO_READY in case battleground is starting again
+ obj->SetLootState(GO_READY);
obj->SetRespawnTime(respawntime);
map->AddToMap(obj);
}
@@ -1643,7 +1642,7 @@ Creature* Battleground::AddCreature(uint32 entry, uint32 type, float x, float y,
if (!creature->Create(sObjectMgr->GenerateLowGuid(HIGHGUID_UNIT), map, PHASEMASK_NORMAL, entry, 0, x, y, z, o))
{
sLog->outError("Battleground::AddCreature: cannot create creature (entry: %u) for BG (map: %u, instance id: %u)!",
- entry, m_MapId, m_InstanceID);
+ entry, m_MapId, m_InstanceID);
delete creature;
return nullptr;
}
@@ -1654,7 +1653,7 @@ Creature* Battleground::AddCreature(uint32 entry, uint32 type, float x, float y,
if (!cinfo)
{
sLog->outError("Battleground::AddCreature: creature template (entry: %u) does not exist for BG (map: %u, instance id: %u)!",
- entry, m_MapId, m_InstanceID);
+ entry, m_MapId, m_InstanceID);
delete creature;
return nullptr;
}
@@ -1693,7 +1692,7 @@ bool Battleground::DelCreature(uint32 type)
}
sLog->outError("Battleground::DelCreature: creature (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, GUID_LOPART(BgCreatures[type]), m_MapId, m_InstanceID);
+ type, GUID_LOPART(BgCreatures[type]), m_MapId, m_InstanceID);
BgCreatures[type] = 0;
return false;
}
@@ -1711,7 +1710,7 @@ bool Battleground::DelObject(uint32 type)
return true;
}
sLog->outError("Battleground::DelObject: gameobject (type: %u, GUID: %u) not found for BG (map: %u, instance id: %u)!",
- type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
+ type, GUID_LOPART(BgObjects[type]), m_MapId, m_InstanceID);
BgObjects[type] = 0;
return false;
}
@@ -1735,7 +1734,7 @@ bool Battleground::AddSpiritGuide(uint32 type, float x, float y, float z, float
return true;
}
sLog->outError("Battleground::AddSpiritGuide: cannot create spirit guide (type: %u, entry: %u) for BG (map: %u, instance id: %u)!",
- type, entry, m_MapId, m_InstanceID);
+ type, entry, m_MapId, m_InstanceID);
EndNow();
return false;
}
@@ -1923,7 +1922,7 @@ int32 Battleground::GetObjectType(uint64 guid)
if (BgObjects[i] == guid)
return i;
sLog->outError("Battleground::GetObjectType: player used gameobject (GUID: %u) which is not in internal data for BG (map: %u, instance id: %u), cheating?",
- GUID_LOPART(guid), m_MapId, m_InstanceID);
+ GUID_LOPART(guid), m_MapId, m_InstanceID);
return -1;
}