on !*:part:#: {
if ($nick($chan,0) > 2) { /halt }
else {
if (r isin $chan($chan).mode) {
if ($me isreg $chan) {
/hop $chan | /mode $chan $+(+v,$iif(% isin $prefix,h $me)) $me
}
}
elseif (r !isin $chan($chan).mode) {
if (($me isreg $chan) || ($me isvoice $chan)) && ($me !isop !chan) {
/hop $chan | /mode $chan $+(+v,$iif(% isin $prefix,h $me)) $me
}
}
}
}
on !*:quit: {
var %i = 1
while ($comchan($nick,%i)) {
if ($nick($comchan($nick,%i),0) > 2) { /halt }
else {
if (r !isincs $chan($comchan($nick,%i)).mode) {
if ($me !isop $comchan($nick,%i)) {
/hop -c $comchan($nick,%i) | /mode $comchan($nick,%i) $+(+v,$iif(% isin $prefix,h $me)) $me
}
}
elseif (r isincs $chan($comchan($nick,%i)).mode) {
if ($me isreg $comchan($nick,%i)) {
/hop -c $comchan($nick,%i)) | /mode $comchan($nick,%i) $+(+v,$iif(% isin $prefix,h $me)) $me
}
}
inc %i
}
/unset %i
}
}