All pastes #279452 Raw Edit

hangman

public text v1 · immutable
·published 2006-12-15 01:10 UTC
rendered paste body
alias hc1 { return } 
alias hc2 { return } 
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))) { 
    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 - Game: Hangman - Channel: $chan - Answer: %hangmanword [ $+ [ $chan ] ] - 
    hmsg $msg.hang.start 
  } 
  if ($1 == !shangman) { 
    if (%hangman [ $+ [ $chan ] ] == on) { 
      hfree hangman 
      set %hangman [ $+ [ $chan ] ] off 
      unset %hangmanword [ $+ [ $chan ] ] 
      msg $chan Hangman game has been stopped in $chan by $nick $+ . 
    } 
    else { 
      msg $chan There is not a current hangman game on. Type "!hangman" to start one. 
  } } 
  if ($1 == !answer) { 
    if ($2- == %hangmanword [ $+ [ $chan ] ]) { 
      msg $chan Good job $nick $+ ! You have just saved $hget(hangman,man) by guessing the correct word. Answer: ( %hangmanword [ $+ [ $chan ] ] ) 
      hfree hangman 
      set %hangman [ $+ [ $chan ] ] off 
      unset %hangmanword [ $+ [ $chan ] ] 
      halt 
    } 
    else { msg $chan Sorry $nick $+ , 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 # There is no hangman game currently on. Type: "!hangman" 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 You can use "!answer Word(s)" 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 }