From c772262469361d1e76b3e15c00c35cc3285aa5c8 Mon Sep 17 00:00:00 2001 From: Aleos Date: Wed, 10 Apr 2019 09:15:54 -0400 Subject: [PATCH] Corrected guild level increases (#4094) * Resolves guild levels being capped to various hard coded limits rather than using the constant. Thanks to @datleeroy! --- src/char/int_guild.cpp | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/src/char/int_guild.cpp b/src/char/int_guild.cpp index b273d9413b..b88f9c7db5 100644 --- a/src/char/int_guild.cpp +++ b/src/char/int_guild.cpp @@ -758,7 +758,7 @@ int inter_guild_sql_init(void) //Read exp file for(i = 0; i 0); + sv_readdb(db_path, filename[i], ',', 1, 1, MAX_GUILDLEVEL, exp_guild_parse_row, i > 0); } add_timer_func_list(guild_save_timer, "guild_save_timer"); @@ -829,7 +829,10 @@ unsigned int guild_nextexp(int level) { if (level == 0) return 1; - return level < 100 && level > 0 ? guild_exp[level-1] : 0; + if (level < 0 || level > MAX_GUILDLEVEL) + return 0; + + return guild_exp[level-1]; } int guild_checkskill(struct guild *g,int id) @@ -867,7 +870,7 @@ int guild_calcinfo(struct guild *g) g->max_member = MAX_GUILD; } - // Compute the guild average level level + // Compute the guild average level g->average_lv=0; g->connect_member=0; for(i=c=0;imax_member;i++) @@ -1451,23 +1454,22 @@ int mapif_parse_GuildMessage(int fd,int guild_id,uint32 account_id,char *mes,int // Modification of the guild int mapif_parse_GuildBasicInfoChange(int fd,int guild_id,int type,const char *data,int len) { - struct guild * g; - short dw=*((short *)data); - g = inter_guild_fromsql(guild_id); - if(g==NULL) + struct guild *g = inter_guild_fromsql(guild_id); + + if (!g) return 0; - switch(type) - { + short data_value = *((short *)data); + + switch(type) { case GBI_GUILDLV: - if(dw>0 && g->guild_lv+dw<=50) - { - g->guild_lv+=dw; - g->skill_point+=dw; - } - else if(dw<0 && g->guild_lv+dw>=1) - g->guild_lv+=dw; - mapif_guild_info(-1,g); + if (data_value > 0 && g->guild_lv + data_value <= MAX_GUILDLEVEL) { + g->guild_lv += data_value; + g->skill_point += data_value; + } else if (data_value < 0 && g->guild_lv + data_value >= 1) + g->guild_lv += data_value; + + mapif_guild_info(-1, g); g->save_flag |= GS_LEVEL; return 0; default: