; ---------------------------------------------------------------------------!
; ---! away sys for mIRC by HBK
; ---! created and tested in mIRCv5.82
; ---! find me in #heh DALnet
; ---! don't rip this script off kthx!!@#
; ---! put this file in your mIRC dir and type /load -rs away.txt
; ---! report bugs to hbk@dork.com
; ---------------------------------------------------------------------------!

on *:load:{
  echo -a ---------------------------------------------------------------------------!
  echo -a ---! away system by HBK (hbk@dork.com/#heh DALnet) loaded.
  echo -a ---! created and testing in mIRCv5.82
  echo -a ---! use channel popups to operate
  echo -a ---------------------------------------------------------------------------!
}
on *:connect:{ idle.check }
on *:disconnect:{ .timerIDLE off }

menu channel {
  Away
  .Away:away.away
  .Silent:silent.away
  .-
  .Back:{
    if (%idle.away == on) { idle.back | halt }
    elseif (%silent.away == on) { silent.back | halt }
    else { away.back | halt }
  }
  .-
  .Log
  ..View $chr(91) $+ %away.msgs $+ $chr(93) $+ :/run away.log.txt
  ..Clear:/write -c away.log.txt | set %away.msgs 0 | echo -a ---! Away log has been cleared.
}
alias away.away {
  if ($away == $true) { echo -a ---! Error: You are already set as being away. Use the channel popup to set youreslf back first. | halt }
  set %away.reason $?="Reason?"
  if (%away.reason == $null) { halt | unset %away.reason }
  set %away.nick $me
  set %away.time $ctime
  if ($?!="Log on?" == $true) set %away.log on | else set %away.log off 
  if (%away.log == on) { amsg .away:[ $+ %away.reason $+ /log:on]. | away %away.reason $+ , since $time(h:nntt) [log:on] }
  elseif (%away.log == off) { amsg .away:[ $+ %away.reason $+ /log:off]. | away %away.reason $+ , since $time(h:nntt) [log:off] }
  if ($?!="Use away nick?") nick $me $+ $?="Suffix? e.g. -[a]"
  .timerIDLE off
}
alias silent.away {
  if ($away == $true) { echo -a ---! Error: You are already set as being away. Use the channel popup to set yourself back first. | halt }
  set %away.reason $?="Reason?"
  if (%away.reason == $null) { halt | unset %away.reason }
  set %away.nick $me
  set %silent.away on
  if ($?!="Log on?" == $true) set %away.log on | else set %away.log off 
  if (%away.log == on) { away %away.reason $+ , since $time(h:nntt) [log:on] }
  elseif (%away.log == off) { away %away.reason $+ , since $time(h:nntt) [log:off] }
  if ($?!="Use away nick?") nick $me $+ $?="Suffix? e.g. -[a]"
  .timerIDLE off
}
alias away.back {
  if ($away == $false) { echo -a ---! Error: You're not away damnit! | halt }
  unset %away.log
  set %away.duration $calc($ctime - %away.time)
  nick %away.nick
  amsg .back:[ $+ %away.reason $+ / $+ $remove($replace($duration(%away.duration),wks,w,wk,w,hrs,h,hr,h,mins,m,min,m,secs,s,sec,s),$chr(32)) $+ ].
  echo -a ---! Welcome back. You have %away.msgs messages.
  away
  unset %away.duration
  unset %away.time
  unset %away.reason
  unset %away.nick
  idle.check
}
alias silent.back {
  if ($away == $false) { echo -a ---! Error: You're not away damnit! | halt }
  unset %away.log
  nick %away.nick
  echo -a ---! Welcome back. You have %away.msgs messages.
  away
  unset %away.reason
  unset %away.nick
  unset %silent.away
  idle.check
}
alias idle.check { .timerIDLE 0 20 if ($idle >= 900) && (!$away) idle.away }
alias idle.away {
  set %away.reason autoaway [15m]
  set %idle.away on
  set %away.log on
  set %away.time $ctime
  away  $+ %away.reason since $time(h:nntt) $+ .
  ame fades away.. [log:on]
  .timerIDLE off
}
alias idle.back {
  unset %away.log
  ame reappears after $duration($calc($ctime - %away.time)) $+ .
  away
  unset %idle.away
  unset %away.reason
  unset %away.time
  idle.check
}
on *:text:*:?:if ($away) && (%away.log == on) { .inc %away.msgs 1 | .notice $nick I am away but your message has been logged | write away.log.txt %away.msgs $+ ) $date @ $time $+ , $nick $+ : $1-  | closemsg $nick }
on *:text:*:#:if ($away) && (%away.log == on) && ($me isin $1-) { .inc %away.msgs 1 | .notice $nick I am away [response to text $me in $chan $+ ] | write away.log.txt %away.msgs $+ ) $date @ $time $+ , $nick in $chan $+ : $1- }
