All pastes #257077 Raw Edit

Hangman

public text v1 · immutable
#257077 ·published 2006-11-24 23:08 UTC
rendered paste body
alias hc1 { return 12 }
alias hc2 { return 4 }
on *:Text:!*:#:{ if ($chan == #pc-hq) { halt
  }
  else {
do.hang $1- } }
on *:Input:#:{
if ((.* iswm $1) || (!* iswm $1)) { do.hang ! $+ $right($1-,-1) } }
alias do.hang {
  if (($1 == !hangman) && (!$hget(hangman))) {
    set %hangman [ $+ [ $chan ] ] on
    hmake hangman 10
    set %hangmanword [ $+ [ $chan ] ] $read(hangman.txt)
    hadd hangman word %hangmanword [ $+ [ $chan ] ]
    hadd hangman chan $chan
    hadd hangman man $iif($2 ison $chan, $2, $nick($chan, $rand(1,$nick($chan,0))))
    echo 1-12 Game:4 Hangman 1- Channel:4 $chan 1- 12Answer:4 %hangmanword [ $+ [ $chan ] ] 1-
    hmsg $msg.hang.start
  }
  if ($1 == !shangman) {
    if (%hangman [ $+ [ $chan ] ] == on) {
      hfree hangman
      set %hangman [ $+ [ $chan ] ] off
      unset %hangmanword [ $+ [ $chan ] ]
      msg $chan 12Hangman game has been stopped in4 $chan 12by4 $nick $+ 12.
    }
    else {
      msg $chan 12There is not a current hangman game on. Type "4!hangman12" to start one.
  } }
  if ($1 == !answer) {
    if ($2- == %hangmanword [ $+ [ $chan ] ]) {
      msg $chan 12Good job4 $nick $+ 12! You have just saved4 $hget(hangman,man) 12by guessing the correct word.7 Answer:1 (4 %hangmanword [ $+ [ $chan ] ] 1)
      hfree hangman
      set %hangman [ $+ [ $chan ] ] off
      unset %hangmanword [ $+ [ $chan ] ]
      halt
    }
    else { msg $chan 12Sorry4 $nick $+ 12, but that is not the correct answer.
  } }
  if (!$hget(hangman)) { return }
  if ($1 == !hang) {
    if (%hangman [ $+ [ $chan ] ] == on) {
      if (($2 !isalpha) || ($len($2) != 1)) {
        hmsg $hc1 $+  $+ You gotta pick a letter moron.
        return 
      }
      elseif (%hangman [ $+ [ $chan ] ] == off) { 
        msg # 12There is no hangman game currently on. Type: "4!hangman12" to start one.
      }
      elseif ($hget(hangman,Picked. $+ $2)) {
        hmsg $hc1 $+  $+ 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)
          hmsg $msg.hang.answerc
        }
      }
    }
} }
alias hang.part {
  hadd hangman wrong $calc($hget(hangman, wrong) + 1)
  if ($hang.partname($hget(hangman, wrong)) == hanging) {
    hmsg $msg.hang.dead
    hfree hangman
    set %hangman [ $+ [ $chan ] ] off
    unset %hangmanword [ $+ [ $chan ] ]
    halt
  }
  return $hang.partname($hget(hangman, wrong))
}
alias hang.checkwin {
  if ($hang.got != $hget(hangman,word)) { return }
  hmsg $msg.hang.save
  hfree hangman
  set %hangman [ $+ [ $chan ] ] off
  unset %hangmanword [ $+ [ $chan ] ]
  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 $hc1 $+ Current clue: $hc2 $+ $hang.got $hc1 $+ Letters remaining: $hc2 $+ %hang.left }
alias msg.hang.save { return $hc2 $+  $+ $hget(hangman,man) $+ $hc1 is saved! You're the best channelmates a person could want. }
alias msg.hang.dead { return $hc2 $+  $+ $hget(hangman,man) $+ $hc1 is DEAD! You all suck. Word: $hc2 $+ $hget(hangman,word) }
alias msg.hang.wrong { return $hc1 $+  $+ Smooth gimp! One step closer to dead. You just got $hc2 $+ $hget(hangman, man) $+ $hc1 $+ : $+ $hc2 $1 $+ $hc1 $+ ! $msg.hang.clue }
alias msg.hang.answerc { return 12You can use "4!answer Word(s)12" to guess the word(s) straight off. }
alias msg.hang.right { return $hc1 $+  $+ Well done, $hc2 $+ $nick $+ $hc1 $+ ! You picked a winning letter. $msg.hang.clue }
alias msg.hang.start { return $hc1 $+  $+ Get ready for some hangman... We are hanging $hc2 $+ $hget(hangman,man) $+ $hc1 $+ , unless you can prevent it. $hc2 $+ !hang <letter> $+ $hc1 to guess a letter. $msg.hang.clue }