From a1df5eec5dc3c36838dbcf78128a83cf98a9b1ac Mon Sep 17 00:00:00 2001 From: Haru Date: Thu, 29 May 2014 19:24:42 +0200 Subject: Fixed a bug causing players to see unrelated guilds' #ally channels - The issue would only happen if the #ally channel is on auto-join, when a guild is first loaded. - Follow-up to cd2f5e4a687b2abbdb9d795e5c91b874aa0d2546 - Special thanks to Ind. Signed-off-by: Haru --- src/map/guild.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) (limited to 'src/map') diff --git a/src/map/guild.c b/src/map/guild.c index 042a6e801..4bf9c9da0 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -487,21 +487,27 @@ int guild_recv_info(struct guild *sg) { } for( sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); sd = (TBL_PC*)mapit->next(iter) ) { - if( sd->status.guild_id ) { - if( sd->status.guild_id == sg->guild_id ) { - clif->chsys_join(channel,sd); - sd->guild = g; - } - + if (!sd->status.guild_id) + continue; // Not interested in guildless users + + if (sd->status.guild_id == sg->guild_id) { + // Guild member + clif->chsys_join(channel,sd); + sd->guild = g; + for (i = 0; i < MAX_GUILDALLIANCE; i++) { - if( sg->alliance[i].opposition == 0 && sg->alliance[i].guild_id ) { - if( sg->alliance[i].guild_id == sd->status.guild_id ) { - clif->chsys_join(channel,sd); - } else if( tg[i] != NULL ) { - if( !(tg[i]->channel->banned && idb_exists(tg[i]->channel->banned, sd->status.account_id))) - clif->chsys_join(tg[i]->channel,sd); - } - } + // Join channels from allied guilds + if (tg[i] && !(tg[i]->channel->banned && idb_exists(tg[i]->channel->banned, sd->status.account_id))) + clif->chsys_join(tg[i]->channel, sd); + } + continue; + } + + for (i = 0; i < MAX_GUILDALLIANCE; i++) { + if (tg[i] && sd->status.guild_id == tg[i]->guild_id) { // Shortcut to skip the alliance checks again + // Alliance member + if( !(channel->banned && idb_exists(channel->banned, sd->status.account_id))) + clif->chsys_join(channel, sd); } } } -- cgit v1.2.3-60-g2f50