here's what I have MikeChat, I used your code, and, it works, but the problem is that I tested it, and, it always leaves, even if I come back within the amount of time given, i don't know if this is just me, but, if someone can look at why this is doing so, I tried to look at it, but, I hate working with timers.
on *:start:{ start-timer }

alias f8 {
  scon -a windows
  if ($timer(deop_and_part)) timerdeop_and_part off

alias start-timer {
  timerdeop_and_part 1 6 scon -at1 deop_and_part

alias -l deop_and_part {
  if ($me isop #dynasty_help) { mode #dynasty_help -o $me }
  if ($me isop #helpcom) { mode #helpcom -o $me }
  if ($me isop #dyn_staff) { mode #dyn_staff -o $me }
  if ($me isop #dyn_scripting) { mode #dyn_scripting -o $me }
  if ($me isop #xbc_opers) { mode #xbc_opers -o $me }
  if ($me ison #testing) { echo -a LEFT TESTING }
  ;if ($me ison #ascii_art) { part #ascii_art }
  if ($me ison #xbc_help) { part #xbc_help }
  if ($me ison #xbc_game) { part #xbc_game }
alias windows {
  var %z = 1
  while ($chan(%z)) {
    window $iif($window($v1).state == hidden,-w,-h) [ $v1 ]
    inc %z
  window $iif($window(Status Window).state == hidden,-w,-h) "Status Window"

notice: i took out the dots before the timers so I could see if it worked.
Please help if you can.