ROOM ID 308 NOCYBORGS NAME "Foxy's Othello" PICT "fhothello.gif" PICTURE ID 1 NAME "otbl.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 3 NAME "otp1.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 4 NAME "otp2.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 5 NAME "otp3.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 6 NAME "otp4.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 7 NAME "otp5.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 8 NAME "otp6.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 9 NAME "otp7.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 10 NAME "otp8.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 11 NAME "otp9.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 13 NAME "otgr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 14 NAME "arrowll.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 15 NAME "arrowrr.gif" TRANSCOLOR 0 ENDPICTURE SPOT ID 1 NAME "Green" DONTMOVEHERE OUTLINE 43,32 82,31 83,69 43,69 LOC 62,50 PICTS 13,0,0 ENDPICTS SCRIPT ON SELECT { { WHOME ME SETSPOTSTATE USERNAME " will play as Green." + ROOMMSG { ";,00" SAY } 2 GETSPOTSTATE IF } { ME GETSPOTSTATE WHONAME " is playing Green now." + LOCALMSG } ME GETSPOTSTATE NOT IFELSE } ENDSCRIPT ENDSPOT SPOT ID 2 DONTMOVEHERE OUTLINE 437,28 476,29 477,70 437,70 LOC 456,51 PICTS 1,0,0 ENDPICTS SCRIPT ON SELECT { { WHOME ME SETSPOTSTATE USERNAME " will play as Blue." + ROOMMSG { ";,00" SAY } 1 GETSPOTSTATE IF } { ME GETSPOTSTATE WHONAME " is playing Blue now." + LOCALMSG } ME GETSPOTSTATE NOT IFELSE } ENDSCRIPT ENDSPOT SPOT ID 3 DONTMOVEHERE OUTLINE 168,60 344,60 344,236 168,236 LOC 256,148 SCRIPT ON SELECT { { ";," MOUSEPOS 60 - 22 / 8 * SWAP 168 - 22 / + ITOA + SAY } 1 GETSPOTSTATE WHOME == 2 GETSPOTSTATE WHOME == OR IF } ON OUTCHAT { { "" CHATSTR = } CHATSTR "^;," GREPSTR IF { [ 941024963 941024982 941024996 941025006 941025024 941025039 941025060 941025070 ] SETPROPS } CHATSTR "refresh" == ISWIZARD AND IF { CLEARLOOSEPROPS 0 1 SETSPOTSTATE 0 2 SETSPOTSTATE 4 osp = { 0 osp SETSPOTSTATE osp ++ } { osp 20 < } WHILE } CHATSTR "reset" == ISWIZARD AND IF } ON ENTER { "Script and Graphics by Foxy, ©1999" STATUSMSG "fhclick" SOUND } ON INCHAT { ocpr GLOBAL ; Othello captured row string ocpc GLOBAL ; Othello captured column string ogs GLOBAL ; Othello game state variable oplt GLOBAL ; number of Othello player whose turn it is 1=green 2=blue otb GLOBAL ;string containing contents of Othello Board Array updtbrd GLOBAL cssp GLOBAL ;consecutive passes { 0 ogs = } WHOME 1 GETSPOTSTATE == NOT IF { CLEARLOOSEPROPS 0 pwh = otb global 4 osp = { 0 osp SETSPOTSTATE osp ++ } { osp 24 < } WHILE { pwh 8 / rw = pwh pwh 8 / 8 * - cl = otb STRTOATOM EXEC rw GET tr = tr cl GET 3 * tr cl 1 + GET + pp = { [ 941024963 941024982 941024996 941025006 941025024 941025039 941025060 941025070 ] pp 1 - GET 168 cl 22 * + 60 rw 22 * + ADDLOOSEPROP } pp pwh 24 < AND IF { pwh 2 / 8 - sp = pp sp SETSPOTSTATE } pwh 24 >= IF 2 pwh += } { pwh 64 < } WHILE } updtbrd DEF { "" ocpr = "" ocpc = 3 oplt - enm = otb STRTOATOM EXEC otba = -1 chc = { chc chr = chc = "" tocpr = "" tocpc = 1 ma = chr ma * mr + cshr = chc ma * mc + cshc = { otba cshr GET cshc GET endll = { cshr ITOA " " + tocpr + tocpr = cshc ITOA " " + tocpc + tocpc = ma ++ chr ma * mr + cshr = chc ma * mc + cshc = 0 endll = { otba cshr GET cshc GET endll = } cshr -1 > cshr 8 < AND cshc -1 > AND cshc 8 < AND IF } { endll enm == } WHILE { tocpr ocpr + ocpr = tocpc ocpc + ocpc = } endll oplt == IF } cshr -1 > cshr 8 < AND cshc -1 > AND cshc 8 < AND IF }[ -1 0 -1 1 1 0 1 -1 ] FOREACH { "[ " ocpr + ocpr = "[ " ocpc + ocpc = } "" ocpr == NOT IF } makecapt DEF { { "[0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0]" tbr = "[ " tbr + " [0 0 0 1 2 0 0 0] [0 0 0 2 1 0 0 0] " + tbr + " ]" + otb = 1 oplt = 1 ogs = updtbrd EXEC "" CHATSTR = 0 cssp = } ogs 0 == CHATSTR ";,00" == AND IF { { -1 ogs *= "Sorry, " oplt GETSPOTSTATE WHONAME + ", it's your turn." + ROOMMSG } CHATSTR "no" == IF { -1 ogs *= 3 oplt - oplt = "Pass granted. It is your turn now, " oplt GETSPOTSTATE WHONAME + ROOMMSG cssp ++ } CHATSTR "yes" == IF } ogs 0 < WHOCHAT 3 oplt - GETSPOTSTATE == AND IF { "" CHATSTR = 0 vp = 0 cs = [ 0 0 0 ] sc = { tr = { ep = sc ep GET 1 + sc ep PUT } tr FOREACH } otb STRTOATOM EXEC FOREACH { 2 cssp = } { oplt GETSPOTSTATE WHONAME " has requested a pass. " + 3 oplt - GETSPOTSTATE WHONAME ", say yes or no to grant it or not." + + ROOMMSG -1 ogs *= } sc 1 GET sc 2 GET AND NOT IFELSE } CHATSTR ";,01" == WHOCHAT oplt GETSPOTSTATE == AND IF { [ 0 0 0 ] sc = { tr = { ep = sc ep GET 1 + sc ep PUT } tr FOREACH } otb STRTOATOM EXEC FOREACH "@37,358 Current score is" ROOMMSG "@178,358 Green: " sc 1 GET ITOA + ROOMMSG "@287,358 Blue: " sc 2 GET ITOA + ROOMMSG "" CHATSTR = } CHATSTR ";,02" == WHOCHAT 1 GETSPOTSTATE == WHOCHAT 2 GETSPOTSTATE == OR AND IF { CLEARLOOSEPROPS "" otb = 0 1 SETSPOTSTATE 0 2 SETSPOTSTATE 0 ogs = 4 osp = { 0 osp SETSPOTSTATE osp ++ } { osp 24 < } WHILE } CHATSTR "reset" == IF { updtbrd EXEC } CHATSTR "redraw" == IF { { { otb STRTOATOM EXEC otba = "$1" GREPSUB ATOI wh = wh 8 / mr = wh wh 8 / 8 * - mc = otba mr GET mc GET occ = { makecapt EXEC { ocpr troubr = "" ocpr = ocpc troubc = "" ocpc = troubr mr ITOA + " ]" + STRTOATOM EXEC ocpr = troubc mc ITOA + " ]" + STRTOATOM EXEC ocpc = [ "[ " "[ " "[ " "[ " "[ " "[ " "[ " "[ " ] ttba = 0 tcol = { row = ttba row GET " " + ocpc tcol GET ITOA + ttba row PUT tcol ++ } ocpr FOREACH 0 trow = { row = ttba trow GET "]" + STRTOATOM EXEC trowa = { spotc = oplt row spotc PUT } trowa FOREACH " [ " { ITOA + " " + } row FOREACH "] " + ttba trow PUT trow ++ } otba FOREACH "[ " { + } ttba FOREACH " ]" + otb = ")fhclick" SAY 0 cssp = { updtbrd GLOBAL updtbrd EXEC } 60 ALARMEXEC 3 oplt - oplt = ogs ++ } { "Invalid move, " WHOCHAT WHONAME + ROOMMSG } "" ocpr == NOT IFELSE } { "Invalid move, " WHOCHAT WHONAME + ROOMMSG } 0 occ == IFELSE } CHATSTR ";,(.*)" GREPSTR IF } WHOCHAT oplt GETSPOTSTATE == IF } ogs 0 > ogs 61 < * IF { [ 0 0 0 ] sc = 0 ogs = { tr = { ep = sc ep GET 1 + sc ep PUT } tr FOREACH } otb STRTOATOM EXEC FOREACH "@230,60 Green: " sc 1 GET itoa + ROOMMSG "@230,100 Blue: " sc 2 GET itoa + ROOMMSG "\"@230,200 )applause !" { sc 1 GET sc 2 GET < 1 + GETSPOTSTATE WHONAME + " is our WINNER!\"" } { "We have a TIE!\"" } sc 1 GET sc 2 GET == NOT IFELSE + " ROOMMSG" + STRTOATOM 90 ALARMEXEC 0 1 SETSPOTSTATE 0 2 SETSPOTSTATE } ogs 61 == cssp 2 == OR IF } 1 GETSPOTSTATE WHOME == IF } ; "fhclick.wav-*" ;~MediaList~;fhclick.wav ENDSCRIPT ENDSPOT SPOT ID 4 OUTLINE 189,137 191,137 191,139 189,139 LOC 190,138 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 5 OUTLINE 233,137 235,137 235,139 233,139 LOC 234,138 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 6 OUTLINE 277,137 279,137 279,139 279,137 LOC 278,138 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 7 OUTLINE 321,137 323,137 323,139 321,139 LOC 322,138 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 8 OUTLINE 189,159 191,159 191,161 189,161 LOC 190,160 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 9 OUTLINE 233,159 235,159 235,161 233,161 LOC 234,160 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 10 OUTLINE 277,159 279,159 279,161 277,161 LOC 278,160 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 11 OUTLINE 321,159 323,159 323,161 321,161 LOC 322,160 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 12 OUTLINE 189,181 191,181 191,183 189,183 LOC 190,182 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 13 OUTLINE 233,181 235,181 235,183 233,183 LOC 234,182 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 14 OUTLINE 277,181 279,181 279,183 277,183 LOC 278,182 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 15 OUTLINE 321,181 323,181 323,183 321,183 LOC 322,182 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 16 OUTLINE 189,203 191,203 191,205 189,205 LOC 190,204 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 17 OUTLINE 233,203 235,203 235,205 233,205 LOC 234,204 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 18 OUTLINE 277,203 279,203 279,205 277,205 LOC 278,204 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 19 OUTLINE 321,203 323,203 323,205 321,205 LOC 322,204 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 20 OUTLINE 189,225 191,225 191,227 189,227 LOC 190,226 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 21 OUTLINE 233,225 235,225 235,227 233,227 LOC 234,226 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 22 OUTLINE 277,225 279,225 279,227 277,227 LOC 278,226 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 23 OUTLINE 321,225 323,225 323,227 321,227 LOC 322,226 PICTS 11,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 ENDPICTS ENDSPOT SPOT ID 24 DONTMOVEHERE OUTLINE 151,347 222,347 222,380 151,380 LOC 256,365 SCRIPT ON SELECT { { ";,01" SAY } WHOME 1 GETSPOTSTATE == WHOME 2 GETSPOTSTATE == OR IF } ENDSCRIPT ENDSPOT SPOT ID 25 DONTMOVEHERE OUTLINE 30,349 115,349 115,377 29,377 LOC 74,365 SCRIPT ON SELECT { { ";,02" SAY } WHOME 1 GETSPOTSTATE == WHOME 2 GETSPOTSTATE == OR IF } ENDSCRIPT ENDSPOT SPOT ID 26 DONTMOVEHERE OUTLINE 271,348 348,348 348,376 271,376 LOC 311,363 SCRIPT ON SELECT { "The rules for Othello are in your log." LOCALMSG "After the game is started, players take turns putting down a piece in a blank spot." LOGMSG "When you trap one or more of your opponent's pieces between two of yours by doing this, they change to your color." LOGMSG "You must turn one or more pieces when you move. If you can't, you have to pass." LOGMSG "Play ends when neither player can put down a piece. Whoever has the most wins." LOGMSG } ENDSCRIPT ENDSPOT SPOT ID 27 DONTMOVEHERE OUTLINE 400,347 465,347 465,381 400,381 LOC 445,367 SCRIPT ON SELECT { "Instructions are in your log." LOCALMSG "Make sure both green and blue fox heads are showing." LOGMSG "If not, either the person playing green or a wizard must say reset." LOGMSG "Next, click on blue to play blue, and green to play green." LOGMSG "After both are clicked on, the board is set up. Green goes first." LOGMSG "Click on a blank spot to go there." LOCALMSG "If you can't move, click on Pass." LOGMSG "WARNING: this game stresses the limits of palace. Crashes may happen, but do not panic at delays, do not assume you are locked up." LOGMSG "At any point, the Green player can start the game over by saying reset." LOGMSG "If the pieces get moved or are cleaned accidentally, the Green player can put them back by saying redraw-- USE SPARINGLY!" LOGMSG "Find out the current score by clicking on the score button. (Players only)." LOGMSG { "Say refresh to put on all of the props." LOGMSG } ISWIZARD IF } ENDSCRIPT ENDSPOT DOOR ID 28 DONTMOVEHERE DEST 309 OUTLINE 7,6 63,6 63,28 7,28 LOC 33,17 PICTS 14,0,0 ENDPICTS ENDDOOR DOOR ID 29 DONTMOVEHERE DEST 241 OUTLINE 450,4 505,4 505,24 450,24 LOC 479,14 PICTS 15,0,0 ENDPICTS SCRIPT ON INCHAT { nDoIt GLOBAL nDoIt EXEC } ON ENTER { { CLEARLOOSEPROPS PAINTCLEAR } NBRROOMUSERS 2 < IF } ENDSCRIPT ENDDOOR ENDROOM