fixed last commit
authorpk910 <philipp@zoelle1.de>
Tue, 28 Jun 2011 20:58:06 +0000 (22:58 +0200)
committerpk910 <philipp@zoelle1.de>
Tue, 28 Jun 2011 20:58:06 +0000 (22:58 +0200)
ircd/channel.c

index f8f5239c59e7e4976eb929ce88646e7bfc85b418..65d37b22afb8f0b1db2dd003035215827ab10a13 100644 (file)
@@ -3497,7 +3497,7 @@ mode_process_clients(struct ParseState *state)
         SetOpLevel(member, OpLevel(state->member) + 1);
     }
        
         SetOpLevel(member, OpLevel(state->member) + 1);
     }
        
-       ulong64 old_status = member->status;
+       int user_visible = (member->status & CHFL_VOICED_OR_OPPED);
        
     /* actually effect the change */
     if (state->flags & MODE_PARSE_SET) {
        
     /* actually effect the change */
     if (state->flags & MODE_PARSE_SET) {
@@ -3520,9 +3520,9 @@ mode_process_clients(struct ParseState *state)
        
        if((member->channel->mode.mode & MODE_AUDITORIUM)) {
                //join or part the user
        
        if((member->channel->mode.mode & MODE_AUDITORIUM)) {
                //join or part the user
-               if((member->status & CHFL_VOICED_OR_OPPED) & !(old_status & CHFL_VOICED_OR_OPPED)) {
+               if((member->status & CHFL_VOICED_OR_OPPED) && !user_visible) {
                        sendcmdto_channel_butserv_butone(member->user, CMD_JOIN, member->channel, member->user, SKIP_OPS, ":%H", member->channel);
                        sendcmdto_channel_butserv_butone(member->user, CMD_JOIN, member->channel, member->user, SKIP_OPS, ":%H", member->channel);
-               } else if(!(member->status & CHFL_VOICED_OR_OPPED) & (old_status & CHFL_VOICED_OR_OPPED)) {
+               } else if(!(member->status & CHFL_VOICED_OR_OPPED) && user_visible) {
                        sendcmdto_channel_butserv_butone(member->user, CMD_PART, member->channel, member->user, SKIP_OPS, "%H :%s", member->channel, "user deoped/devoiced on a +u channel.");
                }
                if(MyUser(member->user) && (state->cli_change[i].flag & MODE_CHANOP)) {
                        sendcmdto_channel_butserv_butone(member->user, CMD_PART, member->channel, member->user, SKIP_OPS, "%H :%s", member->channel, "user deoped/devoiced on a +u channel.");
                }
                if(MyUser(member->user) && (state->cli_change[i].flag & MODE_CHANOP)) {