mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 21:26:23 +00:00
committed by
Poszer
parent
b7863dc4f1
commit
9a7084e42d
@@ -265,6 +265,19 @@ bool ArenaTeam::LoadMembersFromDB(QueryResult result)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ArenaTeam::SetName(std::string const& name)
|
||||
{
|
||||
if (TeamName == name || name.empty() || name.length() > 24 || sObjectMgr->IsReservedName(name) || !ObjectMgr::IsValidCharterName(name))
|
||||
return false;
|
||||
|
||||
TeamName = name;
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_ARENA_TEAM_NAME);
|
||||
stmt->setString(0, TeamName);
|
||||
stmt->setUInt32(1, GetId());
|
||||
CharacterDatabase.Execute(stmt);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ArenaTeam::SetCaptain(uint64 guid)
|
||||
{
|
||||
// Disable remove/promote buttons
|
||||
@@ -353,6 +366,29 @@ void ArenaTeam::Disband(WorldSession* session)
|
||||
sArenaTeamMgr->RemoveArenaTeam(TeamId);
|
||||
}
|
||||
|
||||
void ArenaTeam::Disband()
|
||||
{
|
||||
// Remove all members from arena team
|
||||
while (!Members.empty())
|
||||
DelMember(Members.front().Guid, false);
|
||||
|
||||
// Update database
|
||||
SQLTransaction trans = CharacterDatabase.BeginTransaction();
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM);
|
||||
stmt->setUInt32(0, TeamId);
|
||||
trans->Append(stmt);
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_ARENA_TEAM_MEMBERS);
|
||||
stmt->setUInt32(0, TeamId);
|
||||
trans->Append(stmt);
|
||||
|
||||
CharacterDatabase.CommitTransaction(trans);
|
||||
|
||||
// Remove arena team from ObjectMgr
|
||||
sArenaTeamMgr->RemoveArenaTeam(TeamId);
|
||||
}
|
||||
|
||||
void ArenaTeam::Roster(WorldSession* session)
|
||||
{
|
||||
Player* player = NULL;
|
||||
@@ -587,7 +623,7 @@ uint32 ArenaTeam::GetPoints(uint32 memberRating)
|
||||
points *= 0.76f;
|
||||
else if (Type == ARENA_TEAM_3v3)
|
||||
points *= 0.88f;
|
||||
|
||||
|
||||
points *= sWorld->getRate(RATE_ARENA_POINTS);
|
||||
|
||||
return (uint32) points;
|
||||
@@ -671,7 +707,7 @@ int32 ArenaTeam::GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won
|
||||
if (ownRating < 1300)
|
||||
{
|
||||
float win_rating_modifier1 = sWorld->getFloatConfig(CONFIG_ARENA_WIN_RATING_MODIFIER_1);
|
||||
|
||||
|
||||
if (ownRating < 1000)
|
||||
mod = win_rating_modifier1 * (1.0f - chance);
|
||||
else
|
||||
|
||||
@@ -77,7 +77,7 @@ enum ArenaTeamTypes
|
||||
struct ArenaTeamMember
|
||||
{
|
||||
uint64 Guid;
|
||||
//std::string Name;
|
||||
std::string Name;
|
||||
uint8 Class;
|
||||
uint16 WeekGames;
|
||||
uint16 WeekWins;
|
||||
@@ -111,6 +111,7 @@ class ArenaTeam
|
||||
|
||||
bool Create(uint64 captainGuid, uint8 type, std::string const& teamName, uint32 backgroundColor, uint8 emblemStyle, uint32 emblemColor, uint8 borderStyle, uint32 borderColor);
|
||||
void Disband(WorldSession* session);
|
||||
void Disband();
|
||||
|
||||
typedef std::list<ArenaTeamMember> MemberList;
|
||||
|
||||
@@ -126,6 +127,7 @@ class ArenaTeam
|
||||
uint32 GetAverageMMR(Group* group) const;
|
||||
|
||||
void SetCaptain(uint64 guid);
|
||||
bool SetName(std::string const& name);
|
||||
bool AddMember(uint64 playerGuid);
|
||||
|
||||
// Shouldn't be uint64 ed, because than can reference guid from members on Disband
|
||||
|
||||
Reference in New Issue
Block a user