Wouldn't it be easier if you used $replace() to cut down the repetitive if conditions:
if (mode isin $1) {
did -c roomsettings.system $replacexcs($2,u,203,s,204,c,205,j,206,m,207,t,208,n,209,i,210,t,225)
}
and for $2 $3, you can use
$2-3
Same for $6 $7,
$6-7
and
on *:dialog:Roomsettings.System:close:*: {
var %i = 1
while (%i <= 7) {
unset $+(%,line,%i)
inc %i
}
}
mode $active $replace($did(204),0,-s,1,+s) etc...
Nice effort though and keep up the good work.