on *:Text:!*:#:{ do.hang $1- }
on *:Input:#:{ if ((.* iswm $1) || (!* iswm $1)) { do.hang ! $+ $right($1-,-1) } }
alias do.hang {
if (($1 == !hangman) && (!$hget(hangman))) {
hmake hangman 10
hadd hangman word $read(hangman.txt)
hadd hangman chan $chan
hadd hangman man $iif($2 ison $chan, $2, $nick($chan, $rand(1,$nick($chan,0))))
hmsg $msg.hang.start
}
if (!$hget(hangman)) { return }
if ($1 == !hang) {
if (($2 !isalpha) || ($len($2) != 1)) {
hmsg $+ You gotta pick a letter moron.
return
}
elseif ($hget(hangman,Picked. $+ $2)) {
hmsg $+ Idiot... Try picking a letter that somebody else hasn't picked.
return
}
else {
hadd hangman Picked. $+ $2 1
if ($2 isin $hget(hangman,word)) {
hmsg $msg.hang.right
hang.checkwin
}
else {
var %hang.part = $hang.part
hmsg $msg.hang.wrong(%hang.part)
}
}
}
}
alias hang.part {
hadd hangman wrong $calc($hget(hangman, wrong) + 1)
if ($hang.partname($hget(hangman, wrong)) == hanging) {
hmsg $msg.hang.dead
hfree hangman
halt
}
return $hang.partname($hget(hangman, wrong))
}
alias hang.checkwin {
if ($hang.got != $hget(hangman,word)) { return }
hmsg $msg.hang.save
hfree hangman
halt
}
alias hang.partname { return $gettok(a head;a neck;torso;arms;hands;legs;feet;hanging, $1, $asc(;)) }
alias hang.got {
var %i = 1,%hang.got = $hget(hangman, word)
unset %hang.left
while (%i <= 26) {
if (!$hget(hangman, Picked. $+ $chr($calc(96 + %i)))) {
%hang.got = $replace(%hang.got, $chr($calc(96 + %i)), @)
set -u120 %hang.left %hang.left $+ $chr($calc(96 + %i))
}
inc %i
}
return %hang.got
}
alias hmsg { msg $$hget(hangman,chan) $1- }
alias msg.hang.clue { return Current clue: $hang.got $+ Letters remaining: %hang.left }
alias msg.hang.save { return $hget(hangman,man) $+ is saved! You're the best channelmates a person could want. }
alias msg.hang.dead { return $hget(hangman,man) $+ is DEAD! You all suck. Word: $hget(hangman,word) }
alias msg.hang.wrong { return Smooth gimp! One step closer to dead. You just got $hget(hangman, man) $+ $+ : $+ $1 $+ ! $msg.hang.clue }
alias msg.hang.right { return Well done, $nick $+ $+ ! You picked a winning letter. $msg.hang.clue }
alias msg.hang.start { return Get ready for some hangman... We are hanging $hget(hangman,man) $+ $+ , unless you can prevent it. !hang <letter> to guess a letter. $msg.hang.clue }