ROOM ID 133 NOCYBORGS NAME "TicTacToe" PICT "foxttt.gif" PICTURE ID 1 NAME "x.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 2 NAME "o.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 3 NAME "arrowll.gif" TRANSCOLOR 56 ENDPICTURE PICTURE ID 4 NAME "arrowrr.gif" TRANSCOLOR 56 ENDPICTURE SPOT ID 11 DONTMOVEHERE OUTLINE 27,63 99,63 99,131 27,131 LOC 62,100 PICTS 1,0,0 ENDPICTS SCRIPT ON SELECT { ME GETSPOTSTATE occ = {1 ME SETSPOTSTATE "—¡I will play as X." SAY } 0 occ == IF } ON ENTER { { CLEARLOOSEPROPS PAINTCLEAR } NBRROOMUSERS 2 < IF } ENDSCRIPT ENDSPOT SPOT ID 1 DONTMOVEHERE OUTLINE 150,126 220,126 220,191 150,191 LOC 184,158 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 2 DONTMOVEHERE OUTLINE 223,127 289,127 289,192 223,192 LOC 256,160 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 3 DONTMOVEHERE OUTLINE 293,127 357,127 357,191 293,191 LOC 325,158 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 4 DONTMOVEHERE OUTLINE 150,195 219,195 219,261 150,261 LOC 185,227 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 5 DONTMOVEHERE OUTLINE 223,195 289,195 289,262 223,262 LOC 257,229 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 6 DONTMOVEHERE OUTLINE 293,195 357,195 357,261 293,261 LOC 327,229 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 7 DONTMOVEHERE OUTLINE 152,265 219,265 219,332 152,332 LOC 186,298 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 8 DONTMOVEHERE OUTLINE 223,265 289,265 289,331 223,331 LOC 257,299 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 9 DONTMOVEHERE OUTLINE 293,265 358,265 358,331 293,331 LOC 326,301 PICTS 1,0,0 2,0,0 ENDPICTS SCRIPT ON SELECT {{ME ITOA SAY} ME GETSPOTSTATE 2 == IF} ENDSCRIPT ENDSPOT SPOT ID 10 DONTMOVEHERE OUTLINE 411,63 480,63 480,131 411,131 LOC 446,99 PICTS 2,0,0 ENDPICTS SCRIPT ON SELECT { ME GETSPOTSTATE occ = {1 ME SETSPOTSTATE "—¡I will play as O." SAY } 0 occ == IF } ENDSCRIPT ENDSPOT SPOT ID 12 OUTLINE 6,7 22,7 22,23 6,23 LOC 134,103 SCRIPT ON ENTER { "!Welcome to Tic-Tac-Toe!" LOCALMSG "@350,0 Say the word help for playing instructions" LOCALMSG } ON INCHAT { playerx GLOBAL playero GLOBAL plt GLOBAL pln GLOBAL {"I will play as X." CHATSTR = WHOCHAT WHONAME playerx = playerx plt = 0 pln = } CHATSTR "—¡I will play as X." == IF {"I will play as O." CHATSTR = WHOCHAT WHONAME playero = } CHATSTR "—¡I will play as O." == IF { { {"$1" GREPSUB ATOI sp = pln sp SETSPOTSTATE } CHATSTR "^([123456789])$" GREPSTR IF } plt WHOME WHONAME == IF } WHOCHAT WHOME == IF { 1 pln - pln = {"–" SAY} WHOME WHONAME plt == IF {playerx plt = } {playero plt = } 0 pln == IFELSE "" CHATSTR = } CHATSTR "^[123456789]$" GREPSTR IF { { pw = pw 0 GET GETSPOTSTATE ITOA pw 1 GET GETSPOTSTATE ITOA + pw 2 GET GETSPOTSTATE ITOA + pwi = {3 pln = } "000" pwi == IF {4 pln = } "111" pwi == IF } [ [1 2 3] [4 5 6] [7 8 9] [1 4 7] [2 5 8] [3 6 9] [1 5 9] [7 5 3] ] FOREACH {1 cat = { GETSPOTSTATE sp = {0 cat = BREAK } 2 sp == IF } [1 2 3 4 5 6 7 8 9] FOREACH }3 pln > IF {{ "!CAT WINS! MEOW!" ROOMMSG [ "-:sob:-" "Rats!" "Boohoo!" "Not Fair!" ] 4 RANDOM GET SAY } playerx WHOME WHONAME == IF { 1 reset = [ "-:sob:-" "Rats!" "Boohoo!" "Not Fair!" ] 4 RANDOM GET SAY } playero WHOME WHONAME == IF } 1 cat == IF { { "!" USERNAME + " WINS!" + ROOMMSG [ "All right!" "Yes!" "I'm number one!" "Yippee!" ] 4 RANDOM GET SAY } playerx WHOME WHONAME == IF { 1 reset = [ "-:sob:-" "Rats!" "Boohoo!" "Not Fair!" ] 4 RANDOM GET SAY } playero WHOME WHONAME == IF } 3 pln == IF { { "!" USERNAME + " WINS!" + ROOMMSG [ "All right!" "Yes!" "I'm number one!" "Yippee!" ] 4 RANDOM GET SAY } playero WHOME WHONAME == IF { 1 reset = [ "-:sob:-" "Rats!" "Boohoo!" "Not Fair!" ] 4 RANDOM GET SAY } playerx WHOME WHONAME == IF } 4 pln == IF { {sp = 2 sp SETSPOTSTATE } [1 2 3 4 5 6 7 8 9] FOREACH 0 10 SETSPOTSTATE 0 11 SETSPOTSTATE "" playerx = "" playero = "" plt = 2 pln = } reset IF "" CHATSTR = } CHATSTR "–" == IF } ON OUTCHAT { playerx GLOBAL playero GLOBAL plt GLOBAL pln GLOBAL { {sp = 2 sp SETSPOTSTATE } [1 2 3 4 5 6 7 8 9] FOREACH 0 10 SETSPOTSTATE 0 11 SETSPOTSTATE "" playerx = "" playero = "" plt = 2 pln = } CHATSTR "reset" == IF { "" CHATSTR = } CHATSTR "^([123456789])$" GREPSTR IF } ENDSCRIPT ENDSPOT SPOT ID 13 OUTLINE 29,8 46,8 46,23 29,23 LOC 157,104 SCRIPT ON OUTCHAT { {"@170,0 To start a game, the board must be clear, and the X and O above the board must be visible." LOCALMSG { "@300,0 If they're not, say the word reset" LOCALMSG } 60 ALARMEXEC { "@60,91 Then you can click on me to play as X!" LOCALMSG "@448,90 or click on me to play as O!" LOCALMSG } 240 ALARMEXEC { "X always moves first. To move, just click on the spot you want to move at." LOCALMSG "Finished games are automatically detected, and appropriate messages printed." LOCALMSG } 350 ALARMEXEC } CHATSTR "help" == IF } ENDSCRIPT ENDSPOT DOOR ID 16 DONTMOVEHERE DEST 245 OUTLINE 2,351 53,351 53,382 2,382 LOC 27,366 PICTS 3,0,0 ENDPICTS ENDDOOR DOOR ID 17 DONTMOVEHERE DEST 290 OUTLINE 456,356 508,356 508,380 456,380 LOC 482,368 PICTS 4,0,0 ENDPICTS SCRIPT ON INCHAT { nDoIt GLOBAL nDoIt EXEC } ENDSCRIPT ENDDOOR ENDROOM