diff --git a/docs/modelists/channel-modes.csv b/docs/modelists/channel-modes.csv
index 9bc29bf..a57e9c6 100644
--- a/docs/modelists/channel-modes.csv
+++ b/docs/modelists/channel-modes.csv
@@ -1,68 +1,68 @@
Channel Mode / IRCd,rfc1459,hybrid,inspircd/insp20,inspircd/insp3,ngircd,p10/ircu,p10/nefarious,p10/snircd,ts6/charybdis,ts6/chatircd,ts6/elemental,ts6/ratbox,unreal
-admin,,,"a (m_customprefix, m_chanprotect)",a (m_customprefix),a,,,,,a (when enabled),a (when enabled),,a
+admin,,,"a (m_customprefix, m_chanprotect)",a (customprefix),a,,,,,a (when enabled),a (when enabled),,a
adminonly,,,,,,,a,,A (ext/chm_adminonly),A (ext/chm_adminonly),A (ext/chm_adminonly.so),,
-allowinvite,,,A (m_allowinvite),A (m_allowinvite),,,,,g,g,g,,
-auditorium,,,u (m_auditorium),u (m_auditorium),,,,,,,,,
-autoop,,,w (m_autoop),w (m_autoop),,,,,,,,,
+allowinvite,,,A (m_allowinvite),A (allowinvite),,,,,g,g,g,,
+auditorium,,,u (m_auditorium),u (auditorium),,,,,,,,,
+autoop,,,w (m_autoop),w (autoop),,,,,,,,,
ban,b,b,b,b,b,b,b,b,b,b,b,b,b
-banexception,,e,e (m_banexception),e (m_banexception),e,,e,,e,e,e,e,e
-blockcaps,,,B (m_blockcaps),"B (m_anticaps, m_blockcaps)",,,,,,,G (ext/chm_nocaps.so),,
-blockcolor,,c,c (m_blockcolor),c (m_blockcolor),,c,c,c,,,,,c (chanmodes/nocolor)
-blockhighlight,,,V (contrib/m_blockhighlight),V (contrib/m_blockhighlight),,,,,,,,,
-censor,,,G (m_censor),G (m_censor),,,,,,,,,G (chanmodes/censor)
-delayjoin,,,D (m_delayjoin),D (m_delayjoin),,D,D,D,,,,,D (chanmodes/delayjoin)
-delaymsg,,,d (m_delaymsg),d (m_delaymsg),,,,,,,,,
-exemptchanops,,,X (m_exemptchanops),X (m_exemptchanops),,,,,,,,,
-filter,,,g (m_filter),g (m_filter),,,,,,,,,(via extban ~T:block:)
-flood,,,f (m_messageflood),f (m_messageflood),,,,,,,,,
+banexception,,e,e (m_banexception),e (banexception),e,,e,,e,e,e,e,e
+blockcaps,,,B (m_blockcaps),"B (anticaps, blockcaps)",,,,,,,G (ext/chm_nocaps.so),,
+blockcolor,,c,c (m_blockcolor),c (blockcolor),,c,c,c,,,,,c (chanmodes/nocolor)
+blockhighlight,,,V (contrib/m_blockhighlight),V (contrib/blockhighlight),,,,,,,,,
+censor,,,G (m_censor),G (censor),,,,,,,,,G (chanmodes/censor)
+delayjoin,,,D (m_delayjoin),D (delayjoin),,D,D,D,,,,,D (chanmodes/delayjoin)
+delaymsg,,,d (m_delaymsg),d (delaymsg),,,,,,,,,
+exemptchanops,,,X (m_exemptchanops),X (exemptchanops),,,,,,,,,
+filter,,,g (m_filter),g (filter),,,,,,,,,(via extban ~T:block:)
+flood,,,f (m_messageflood),f (messageflood),,,,,,,,,
flood_unreal,,,,,,,,,,,,,f (chanmodes/floodprot)
freetarget,,,,,,,,,F,F,F,,
had_delayjoin,,,,,,d,d,d,,,,,
-halfop,,h,"h (m_customprefix, m_halfop)",h (m_customprefix),h,,,,,h (when enabled),h (when enabled),,h
+halfop,,h,"h (m_customprefix, m_halfop)",h (customprefix),h,,,,,h (when enabled),h (when enabled),,h
hiddenbans,,,,,,,,,,,u,,
hidequits,,,,,,,Q,u,,,,,
-history,,,H (m_chanhistory),H (m_chanhistory),,,,,,,,,
-invex,,I,I (m_inviteexception),I (m_inviteexception),I,,,,I,I,I,I,I
+history,,,H (m_chanhistory),H (chanhistory),,,,,,,,,
+invex,,I,I (m_inviteexception),I (inviteexception),I,,,,I,I,I,I,I
inviteonly,i,i,i,i,i,i,i,i,i,i,i,i,i
issecure,,,,,,,,,,,,,Z (chanmodes/issecure)
-joinflood,,,j (m_joinflood),j (m_joinflood),,,,,j,j,j,,
+joinflood,,,j (m_joinflood),j (joinflood),,,,,j,j,j,,
key,k,k,k,k,k,k,k,k,k,k,k,k,k
kicknorejoin,,,,,,,,,,,J,,
-kicknorejoin_insp,,,J (m_kicknorejoin),J (m_kicknorejoin),,,,,,,,,
+kicknorejoin_insp,,,J (m_kicknorejoin),J (kicknorejoin),,,,,,,,,
largebanlist,,,,,,,,,L,L,L,,
limit,l,l,l,l,l,l,l,l,l,l,l,l,l
moderated,m,m,m,m,m,m,m,m,m,m,m,m,m
netadminonly,,,,,,,,,,N (ext/chm_netadminonly),,,
-nickflood,,,F (m_nickflood),F (m_nickflood),,,,,,,,,
+nickflood,,,F (m_nickflood),F (nickflood),,,,,,,,,
noamsg,,,,,,,T,T,,,,,
-noctcp,,C,C (m_noctcp),C (m_noctcp),,C,C,C,C,C,C,,C (chanmodes/noctcp)
+noctcp,,C,C (m_noctcp),C (noctcp),,C,C,C,C,C,C,,C (chanmodes/noctcp)
noextmsg,n,n,n,n,n,n,n,n,n,n,n,n,n
noforwards,,,,,,,,,Q,Q,Q,,
noinvite,,,,,V,,,,,,,,V (chanmodes/noinvite)
-nokick,,,Q (m_nokicks),Q (m_nokicks),Q,,,,,,E,,Q (chanmodes/nokick)
-noknock,,p*,K (m_knock),K (m_knock),,,,,p*,p*,p*,p*,K (chanmodes/noknock)
-nonick,,,N (m_nonicks),N (m_nonicks),N,,,,,,d,,N (chanmodes/nonickchange)
-nonotice,,,T (m_nonotice),T (m_nonotice),,,N,N,T (ext/chm_nonotice),T (ext/chm_nonotice),T,,T (chanmodes/nonotice)
-official-join,,,Y (m_ojoin),Y (m_ojoin),,,,,,,,,
+nokick,,,Q (m_nokicks),Q (nokicks),Q,,,,,,E,,Q (chanmodes/nokick)
+noknock,,p*,K (m_knock),K (knock),,,,,p*,p*,p*,p*,K (chanmodes/noknock)
+nonick,,,N (m_nonicks),N (nonicks),N,,,,,,d,,N (chanmodes/nonickchange)
+nonotice,,,T (m_nonotice),T (nonotice),,,N,N,T (ext/chm_nonotice),T (ext/chm_nonotice),T,,T (chanmodes/nonotice)
+official-join,,,Y (m_ojoin),Y (ojoin),,,,,,,,,
op,o,o,o,o,o,o,o,o,o,o,o,o,o
-operonly,,O,O (m_operchans),O (m_operchans),O,,O,,O (ext/chm_operonly),O (ext/chm_operonly),O (ext/chm_operonly.so),,O (chanmodes/operonly)
+operonly,,O,O (m_operchans),O (operchans),O,,O,,O (ext/chm_operonly),O (ext/chm_operonly),O (ext/chm_operonly.so),,O (chanmodes/operonly)
oplevel_apass,,,,,,A,A,A,,,,,
oplevel_upass,,,,,,U,U,U,,,,,
opmoderated,,,U (contrib/m_opmoderated),,,,,,z,z,z,,
-owner,,,"q (m_customprefix, m_chanprotect)",q (m_customprefix),q,,,,,y (when enabled),y (when enabled),,q
+owner,,,"q (m_customprefix, m_chanprotect)",q (customprefix),q,,,,,y (when enabled),y (when enabled),,q
paranoia,,p*,,,,,,,,,,,
-permanent,,,P (m_permchannels),P (m_permchannels),P,,z,,P,P,P,,P (chanmodes/permanent)
+permanent,,,P (m_permchannels),P (permchannels),P,,z,,P,P,P,,P (chanmodes/permanent)
private,p,p*,p,p,p,p,p,p,p*,p*,p*,p*,p
quiet,,,(via extban m:),(via extban m:),,,(via extban ~q:),,q,q,q,,(via extban ~q:)
-redirect,,,L (m_redirect),L (m_redirect),,,L,,f,f,f,,L (chanmodes/link)
-registered,,r,r (m_services_account),r (m_services_account),r,R,R,R,,,,,r
-regmoderated,,M,M (m_services_account),M (m_services_account),M,,M,M,,,,,M (chanmodes/regonlyspeak)
-regonly,,R,R (m_services_account),R (m_services_account),R,r,r,r,r,r,r,r,R (chanmodes/regonly)
+redirect,,,L (m_redirect),L (redirect),,,L,,f,f,f,,L (chanmodes/link)
+registered,,r,r (m_services_account),r (services_account),r,R,R,R,,,,,r
+regmoderated,,M,M (m_services_account),M (services_account),M,,M,M,,,,,M (chanmodes/regonlyspeak)
+regonly,,R,R (m_services_account),R (services_account),R,r,r,r,r,r,r,r,R (chanmodes/regonly)
repeat,,,,,,,,,,,K (ext/chm_norepeat.c),,
-repeat_insp,,,,E (m_repeat),,,,,,,,,
+repeat_insp,,,,E (repeat),,,,,,,,,
secret,s,s,s,s,s,s,s,s,s,s,s,s,s
-sslonly,,S,z (m_sslmodes),z (m_sslmodes),z,,,,S (ext/chm_sslonly),S (ext/chm_sslonly),S (ext/chm_sslonly.c),S,z (chanmodes/secureonly)
-stripcolor,,,S (m_stripcolor),S (m_stripcolor),,,S,,c,c,c,,S (chanmodes/stripcolor)
+sslonly,,S,z (m_sslmodes),z (sslmodes),z,,,,S (ext/chm_sslonly),S (ext/chm_sslonly),S (ext/chm_sslonly.c),S,z (chanmodes/secureonly)
+stripcolor,,,S (m_stripcolor),S (stripcolor),,,S,,c,c,c,,S (chanmodes/stripcolor)
topiclock,t,t,t,t,t,t,t,t,t,t,t,t,t
voice,v,v,v,v,v,v,v,v,v,v,v,v,v
,,,,,,,,,,,,,
diff --git a/docs/modelists/channel-modes.html b/docs/modelists/channel-modes.html
index 32096cb..f60e510 100644
--- a/docs/modelists/channel-modes.html
+++ b/docs/modelists/channel-modes.html
@@ -78,52 +78,52 @@ td:first-child, th[scope="row"] {
admin |
-n/a | n/a | +a (m_customprefix, m_chanprotect) | +a (m_customprefix) | +a | n/a | n/a | n/a | n/a | +a (when enabled) | +a (when enabled) | n/a | +a |
+n/a | n/a | +a (m_customprefix, m_chanprotect) | +a (customprefix) | +a | n/a | n/a | n/a | n/a | +a (when enabled) | +a (when enabled) | n/a | +a |
adminonly |
n/a | n/a | n/a | n/a | n/a | n/a | +a | n/a | +A (ext/chm_adminonly) | +A (ext/chm_adminonly) | +A (ext/chm_adminonly.so) | n/a | n/a |
allowinvite |
-n/a | n/a | +A (m_allowinvite) | +A (m_allowinvite) | n/a | n/a | n/a | n/a | +g | +g | +g | n/a | n/a |
+n/a | n/a | +A (m_allowinvite) | +A (allowinvite) | n/a | n/a | n/a | n/a | +g | +g | +g | n/a | n/a |
auditorium |
-n/a | n/a | +u (m_auditorium) | +u (m_auditorium) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +u (m_auditorium) | +u (auditorium) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
autoop |
-n/a | n/a | +w (m_autoop) | +w (m_autoop) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +w (m_autoop) | +w (autoop) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
ban |
+b | +b | +b | +b | +b | +b | +b | +b | +b | +b | +b | +b | +b |
banexception |
-n/a | +e | +e (m_banexception) | +e (m_banexception) | +e | n/a | +e | n/a | +e | +e | +e | +e | +e |
+n/a | +e | +e (m_banexception) | +e (banexception) | +e | n/a | +e | n/a | +e | +e | +e | +e | +e |
blockcaps |
-n/a | n/a | +B (m_blockcaps) | +B (m_anticaps, m_blockcaps) | n/a | n/a | n/a | n/a | n/a | n/a | +G (ext/chm_nocaps.so) | n/a | n/a |
+n/a | n/a | +B (m_blockcaps) | +B (anticaps, blockcaps) | n/a | n/a | n/a | n/a | n/a | n/a | +G (ext/chm_nocaps.so) | n/a | n/a |
blockcolor |
-n/a | +c | +c (m_blockcolor) | +c (m_blockcolor) | n/a | +c | +c | +c | n/a | n/a | n/a | n/a | +c (chanmodes/nocolor) |
+n/a | +c | +c (m_blockcolor) | +c (blockcolor) | n/a | +c | +c | +c | n/a | n/a | n/a | n/a | +c (chanmodes/nocolor) |
blockhighlight |
-n/a | n/a | +V (contrib/m_blockhighlight) | +V (contrib/m_blockhighlight) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +V (contrib/m_blockhighlight) | +V (contrib/blockhighlight) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
censor |
-n/a | n/a | +G (m_censor) | +G (m_censor) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +G (chanmodes/censor) |
+n/a | n/a | +G (m_censor) | +G (censor) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +G (chanmodes/censor) |
delayjoin |
-n/a | n/a | +D (m_delayjoin) | +D (m_delayjoin) | n/a | +D | +D | +D | n/a | n/a | n/a | n/a | +D (chanmodes/delayjoin) |
+n/a | n/a | +D (m_delayjoin) | +D (delayjoin) | n/a | +D | +D | +D | n/a | n/a | n/a | n/a | +D (chanmodes/delayjoin) |
delaymsg |
-n/a | n/a | +d (m_delaymsg) | +d (m_delaymsg) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +d (m_delaymsg) | +d (delaymsg) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
exemptchanops |
-n/a | n/a | +X (m_exemptchanops) | +X (m_exemptchanops) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +X (m_exemptchanops) | +X (exemptchanops) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
filter |
-n/a | n/a | +g (m_filter) | +g (m_filter) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | (via extban ~T:block:) |
+n/a | n/a | +g (m_filter) | +g (filter) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | (via extban ~T:block:) |
flood |
-n/a | n/a | +f (m_messageflood) | +f (m_messageflood) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +f (m_messageflood) | +f (messageflood) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
flood_unreal |
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +f (chanmodes/floodprot) |
@@ -135,7 +135,7 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | +d | +d | +d | n/a | n/a | n/a | n/a | n/a |
halfop |
-n/a | +h | +h (m_customprefix, m_halfop) | +h (m_customprefix) | +h | n/a | n/a | n/a | n/a | +h (when enabled) | +h (when enabled) | n/a | +h |
+n/a | +h | +h (m_customprefix, m_halfop) | +h (customprefix) | +h | n/a | n/a | n/a | n/a | +h (when enabled) | +h (when enabled) | n/a | +h |
hiddenbans |
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +u | n/a | n/a |
@@ -144,10 +144,10 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | n/a | +Q | +u | n/a | n/a | n/a | n/a | n/a |
history |
-n/a | n/a | +H (m_chanhistory) | +H (m_chanhistory) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +H (m_chanhistory) | +H (chanhistory) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
invex |
-n/a | +I | +I (m_inviteexception) | +I (m_inviteexception) | +I | n/a | n/a | n/a | +I | +I | +I | +I | +I |
+n/a | +I | +I (m_inviteexception) | +I (inviteexception) | +I | n/a | n/a | n/a | +I | +I | +I | +I | +I |
inviteonly |
+i | +i | +i | +i | +i | +i | +i | +i | +i | +i | +i | +i | +i |
@@ -156,7 +156,7 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +Z (chanmodes/issecure) |
joinflood |
-n/a | n/a | +j (m_joinflood) | +j (m_joinflood) | n/a | n/a | n/a | n/a | +j | +j | +j | n/a | n/a |
+n/a | n/a | +j (m_joinflood) | +j (joinflood) | n/a | n/a | n/a | n/a | +j | +j | +j | n/a | n/a |
key |
+k | +k | +k | +k | +k | +k | +k | +k | +k | +k | +k | +k | +k |
@@ -165,7 +165,7 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +J | n/a | n/a |
kicknorejoin_insp |
-n/a | n/a | +J (m_kicknorejoin) | +J (m_kicknorejoin) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +J (m_kicknorejoin) | +J (kicknorejoin) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
largebanlist |
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +L | +L | +L | n/a | n/a |
@@ -180,13 +180,13 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +N (ext/chm_netadminonly) | n/a | n/a | n/a |
nickflood |
-n/a | n/a | +F (m_nickflood) | +F (m_nickflood) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +F (m_nickflood) | +F (nickflood) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
noamsg |
n/a | n/a | n/a | n/a | n/a | n/a | +T | +T | n/a | n/a | n/a | n/a | n/a |
noctcp |
-n/a | +C | +C (m_noctcp) | +C (m_noctcp) | n/a | +C | +C | +C | +C | +C | +C | n/a | +C (chanmodes/noctcp) |
+n/a | +C | +C (m_noctcp) | +C (noctcp) | n/a | +C | +C | +C | +C | +C | +C | n/a | +C (chanmodes/noctcp) |
noextmsg |
+n | +n | +n | +n | +n | +n | +n | +n | +n | +n | +n | +n | +n |
@@ -198,25 +198,25 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | +V | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +V (chanmodes/noinvite) |
nokick |
-n/a | n/a | +Q (m_nokicks) | +Q (m_nokicks) | +Q | n/a | n/a | n/a | n/a | n/a | +E | n/a | +Q (chanmodes/nokick) |
+n/a | n/a | +Q (m_nokicks) | +Q (nokicks) | +Q | n/a | n/a | n/a | n/a | n/a | +E | n/a | +Q (chanmodes/nokick) |
noknock |
-n/a | +p* | +K (m_knock) | +K (m_knock) | n/a | n/a | n/a | n/a | +p* | +p* | +p* | +p* | +K (chanmodes/noknock) |
+n/a | +p* | +K (m_knock) | +K (knock) | n/a | n/a | n/a | n/a | +p* | +p* | +p* | +p* | +K (chanmodes/noknock) |
nonick |
-n/a | n/a | +N (m_nonicks) | +N (m_nonicks) | +N | n/a | n/a | n/a | n/a | n/a | +d | n/a | +N (chanmodes/nonickchange) |
+n/a | n/a | +N (m_nonicks) | +N (nonicks) | +N | n/a | n/a | n/a | n/a | n/a | +d | n/a | +N (chanmodes/nonickchange) |
nonotice |
-n/a | n/a | +T (m_nonotice) | +T (m_nonotice) | n/a | n/a | +N | +N | +T (ext/chm_nonotice) | +T (ext/chm_nonotice) | +T | n/a | +T (chanmodes/nonotice) |
+n/a | n/a | +T (m_nonotice) | +T (nonotice) | n/a | n/a | +N | +N | +T (ext/chm_nonotice) | +T (ext/chm_nonotice) | +T | n/a | +T (chanmodes/nonotice) |
official-join |
-n/a | n/a | +Y (m_ojoin) | +Y (m_ojoin) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | +Y (m_ojoin) | +Y (ojoin) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
op |
+o | +o | +o | +o | +o | +o | +o | +o | +o | +o | +o | +o | +o |
operonly |
-n/a | +O | +O (m_operchans) | +O (m_operchans) | +O | n/a | +O | n/a | +O (ext/chm_operonly) | +O (ext/chm_operonly) | +O (ext/chm_operonly.so) | n/a | +O (chanmodes/operonly) |
+n/a | +O | +O (m_operchans) | +O (operchans) | +O | n/a | +O | n/a | +O (ext/chm_operonly) | +O (ext/chm_operonly) | +O (ext/chm_operonly.so) | n/a | +O (chanmodes/operonly) |
oplevel_apass |
n/a | n/a | n/a | n/a | n/a | +A | +A | +A | n/a | n/a | n/a | n/a | n/a |
@@ -228,13 +228,13 @@ td:first-child, th[scope="row"] {
n/a | n/a | +U (contrib/m_opmoderated) | n/a | n/a | n/a | n/a | n/a | +z | +z | +z | n/a | n/a |
owner |
-n/a | n/a | +q (m_customprefix, m_chanprotect) | +q (m_customprefix) | +q | n/a | n/a | n/a | n/a | +y (when enabled) | +y (when enabled) | n/a | +q |
+n/a | n/a | +q (m_customprefix, m_chanprotect) | +q (customprefix) | +q | n/a | n/a | n/a | n/a | +y (when enabled) | +y (when enabled) | n/a | +q |
paranoia |
n/a | +p* | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
permanent |
-n/a | n/a | +P (m_permchannels) | +P (m_permchannels) | +P | n/a | +z | n/a | +P | +P | +P | n/a | +P (chanmodes/permanent) |
+n/a | n/a | +P (m_permchannels) | +P (permchannels) | +P | n/a | +z | n/a | +P | +P | +P | n/a | +P (chanmodes/permanent) |
private |
+p | +p* | +p | +p | +p | +p | +p | +p | +p* | +p* | +p* | +p* | +p |
@@ -243,31 +243,31 @@ td:first-child, th[scope="row"] {
n/a | n/a | (via extban m:) | (via extban m:) | n/a | n/a | (via extban ~q:) | n/a | +q | +q | +q | n/a | (via extban ~q:) |
redirect |
-n/a | n/a | +L (m_redirect) | +L (m_redirect) | n/a | n/a | +L | n/a | +f | +f | +f | n/a | +L (chanmodes/link) |
+n/a | n/a | +L (m_redirect) | +L (redirect) | n/a | n/a | +L | n/a | +f | +f | +f | n/a | +L (chanmodes/link) |
registered |
-n/a | +r | +r (m_services_account) | +r (m_services_account) | +r | +R | +R | +R | n/a | n/a | n/a | n/a | +r |
+n/a | +r | +r (m_services_account) | +r (services_account) | +r | +R | +R | +R | n/a | n/a | n/a | n/a | +r |
regmoderated |
-n/a | +M | +M (m_services_account) | +M (m_services_account) | +M | n/a | +M | +M | n/a | n/a | n/a | n/a | +M (chanmodes/regonlyspeak) |
+n/a | +M | +M (m_services_account) | +M (services_account) | +M | n/a | +M | +M | n/a | n/a | n/a | n/a | +M (chanmodes/regonlyspeak) |
regonly |
-n/a | +R | +R (m_services_account) | +R (m_services_account) | +R | +r | +r | +r | +r | +r | +r | +r | +R (chanmodes/regonly) |
+n/a | +R | +R (m_services_account) | +R (services_account) | +R | +r | +r | +r | +r | +r | +r | +r | +R (chanmodes/regonly) |
repeat |
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +K (ext/chm_norepeat.c) | n/a | n/a |
repeat_insp |
-n/a | n/a | n/a | +E (m_repeat) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | n/a | +E (repeat) | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
secret |
+s | +s | +s | +s | +s | +s | +s | +s | +s | +s | +s | +s | +s |
sslonly |
-n/a | +S | +z (m_sslmodes) | +z (m_sslmodes) | +z | n/a | n/a | n/a | +S (ext/chm_sslonly) | +S (ext/chm_sslonly) | +S (ext/chm_sslonly.c) | +S | +z (chanmodes/secureonly) |
+n/a | +S | +z (m_sslmodes) | +z (sslmodes) | +z | n/a | n/a | n/a | +S (ext/chm_sslonly) | +S (ext/chm_sslonly) | +S (ext/chm_sslonly.c) | +S | +z (chanmodes/secureonly) |
stripcolor |
-n/a | n/a | +S (m_stripcolor) | +S (m_stripcolor) | n/a | n/a | +S | n/a | +c | +c | +c | n/a | +S (chanmodes/stripcolor) |
+n/a | n/a | +S (m_stripcolor) | +S (stripcolor) | n/a | n/a | +S | n/a | +c | +c | +c | n/a | +S (chanmodes/stripcolor) |
topiclock |
+t | +t | +t | +t | +t | +t | +t | +t | +t | +t | +t | +t | +t |
diff --git a/docs/modelists/user-modes.html b/docs/modelists/user-modes.html
index 0c81fb8..97b707f 100644
--- a/docs/modelists/user-modes.html
+++ b/docs/modelists/user-modes.html
@@ -83,7 +83,7 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | +a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
bot |
-n/a | n/a | +B | +B | n/a | +B | n/a | n/a | +B | +B | n/a | +B |
+n/a | n/a | +B | +B | n/a | +B | n/a | n/a | +B | +B | n/a | +B (usermodes/bot) |
callerid |
n/a | +g | +g | n/a | n/a | n/a | n/a | +g | +g | +g | +g | n/a |
@@ -91,6 +91,9 @@ td:first-child, th[scope="row"] {
callerid_sslonly |
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +t | n/a | n/a | n/a |
+censor |
+n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +G (usermodes/censor) |
+
cloak |
n/a | +x | +x | +x | +x | +x | +x | +x | +x | +x | n/a | +x |
@@ -107,7 +110,7 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | +h | +h | n/a | n/a | n/a | n/a | n/a |
deaf |
-n/a | +D | +d | +b | +d | +d | +d | +D | +D | +D | +D | +d |
+n/a | +D | +d | n/a | +d | +d | +d | +D | +D | +D | +D | +d |
deaf_commonchan |
n/a | +G | +c | +C | n/a | +q | n/a | n/a | n/a | n/a | n/a | n/a |
@@ -119,13 +122,13 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +G |
floodexempt |
-n/a | n/a | n/a | +f | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | n/a | +F | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
helpop |
n/a | n/a | +h | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
hidechans |
-n/a | +p | +I | +I | n/a | +n | +n | n/a | n/a | +I | n/a | +p |
+n/a | +p | +I | +I | n/a | +n | +n | n/a | n/a | +I | n/a | +p (usermodes/privacy) |
hideidle |
n/a | +q | n/a | n/a | n/a | +I | +I | n/a | n/a | n/a | n/a | +I |
@@ -143,7 +146,7 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +N | n/a | n/a | n/a |
noctcp |
-n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +C | n/a | +T |
+n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +C | n/a | +T (usermodes/noctcp) |
noforward |
n/a | n/a | n/a | n/a | n/a | +L | n/a | +Q | +Q | +Q | n/a | n/a |
@@ -161,13 +164,13 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | n/a | n/a | +X | +X | +p | +p | +p | n/a | n/a |
privdeaf |
-n/a | n/a | n/a | n/a | n/a | +D | n/a | n/a | n/a | n/a | n/a | n/a |
+n/a | n/a | n/a | +b | n/a | +D | n/a | n/a | n/a | n/a | n/a | +D (usermodes/privdeaf) |
protected |
-n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +q |
+n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +q (usermodes/nokick) |
regdeaf |
-n/a | +R | +R | n/a | n/a | +R | +R | +R | +R | +R | n/a | +R |
+n/a | +R | +R | n/a | n/a | +R | +R | +R | +R | +R | n/a | +R (usermodes/regonlymsg) |
registered |
n/a | +r | +r | +R | +r | +r | +r | n/a | n/a | n/a | n/a | +r |
@@ -176,10 +179,10 @@ td:first-child, th[scope="row"] {
n/a | n/a | n/a | +r | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
servprotect |
-n/a | n/a | +k | +q | +k | +k | +k | +S | +S | +S | +S | +S |
+n/a | n/a | +k | +q | +k | +k | +k | +S | +S | +S | +S | +S (usermodes/servicebot) |
showwhois |
-n/a | n/a | +W | n/a | n/a | +W | n/a | n/a | n/a | n/a | n/a | +W |
+n/a | n/a | +W | n/a | n/a | +W | n/a | n/a | n/a | n/a | n/a | +W (usermodes/showwhois) |
sno_badclientconnections |
n/a | +u | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +u | n/a |
@@ -223,6 +226,9 @@ td:first-child, th[scope="row"] {
ssl |
n/a | +S | n/a | n/a | n/a | +z | n/a | n/a | n/a | n/a | n/a | +z |
+sslonlymsg |
+n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | +Z (usermodes/secureonlymsg) |
+
stripcolor |
n/a | n/a | +S | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a |