+ changes->args[used++].u.member = mn;
+ }
+ }
+ else if(!cData->lvlOpts[lvlGiveHalfOps]
+ || (uData && uData->access >= cData->lvlOpts[lvlGiveHalfOps]))
+ {
+ if(!(mn->modes & MODE_HALFOP))
+ {
+ changes->args[used].mode = MODE_HALFOP;
+ changes->args[used++].u.member = mn;
+ }
+ if(mn->modes & MODE_CHANOP)
+ {
+ changes->args[used].mode = MODE_REMOVE | (mn->modes & ~MODE_CHANOP);
+ changes->args[used++].u.member = mn;
+ }
+ if(mn->modes & MODE_VOICE)
+ {
+ changes->args[used].mode = MODE_REMOVE | (mn->modes & ~MODE_VOICE);
+ changes->args[used++].u.member = mn;