aboutsummaryrefslogtreecommitdiff
path: root/src/game/Guild.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Guild.cpp')
-rw-r--r--src/game/Guild.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/game/Guild.cpp b/src/game/Guild.cpp
index 4086c525d57..207b91d8dd1 100644
--- a/src/game/Guild.cpp
+++ b/src/game/Guild.cpp
@@ -299,7 +299,11 @@ bool Guild::LoadRanksFromDB(uint32 GuildId)
QueryResult *result = CharacterDatabase.PQuery("SELECT rid,rname,rights,BankMoneyPerDay FROM guild_rank WHERE guildid = '%u' ORDER BY rid ASC", GuildId);
if(!result)
- return false;
+ {
+ sLog.outError("Guild %u has broken `guild_rank` data, creating new...",GuildId);
+ CreateDefaultGuildRanks(0);
+ return true;
+ }
bool broken_ranks = false;
@@ -343,7 +347,6 @@ bool Guild::LoadRanksFromDB(uint32 GuildId)
CharacterDatabase.PExecute("DELETE FROM guild_rank WHERE guildid='%u'", GuildId);
for(size_t i = 0; i < m_Ranks.size(); ++i)
{
- // guild_rank.rid always store rank+1
std::string name = m_Ranks[i].name;
uint32 rights = m_Ranks[i].rights;
CharacterDatabase.escape_string(name);
@@ -643,7 +646,8 @@ void Guild::AddRank(const std::string& name_,uint32 rights, uint32 money)
void Guild::DelRank()
{
- if(m_Ranks.empty())
+ // client won't allow to have less than GUILD_RANKS_MIN_COUNT ranks in guild
+ if(m_Ranks.size() <= GUILD_RANKS_MIN_COUNT)
return;
// delete lowest guild_rank