ROOM ID 127 NOPAINTING NOCYBORGS NAME "*New* Scrabble" PICT "sboard.gif" PICTURE ID 3 NAME "n0.gif" ENDPICTURE PICTURE ID 4 NAME "n1.gif" ENDPICTURE PICTURE ID 5 NAME "n3.gif" ENDPICTURE PICTURE ID 6 NAME "n4.gif" ENDPICTURE PICTURE ID 7 NAME "n5.gif" ENDPICTURE PICTURE ID 8 NAME "n6.gif" ENDPICTURE PICTURE ID 9 NAME "n7.gif" ENDPICTURE PICTURE ID 10 NAME "n8.gif" ENDPICTURE PICTURE ID 11 NAME "n9.gif" ENDPICTURE PICTURE ID 12 NAME "n2.gif" ENDPICTURE PICTURE ID 21 NAME "blank.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 22 NAME "sr1.gif" ENDPICTURE PICTURE ID 23 NAME "sr2.gif" ENDPICTURE PICTURE ID 24 NAME "sr3.gif" ENDPICTURE PICTURE ID 25 NAME "sr4.gif" ENDPICTURE PICTURE ID 26 NAME "sr5.gif" ENDPICTURE PICTURE ID 27 NAME "unl.gif" ENDPICTURE PICTURE ID 28 NAME "lck.gif" ENDPICTURE PICTURE ID 29 NAME "arrowll.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 30 NAME "arrowrr.gif" TRANSCOLOR 0 ENDPICTURE DOOR ID 1 NAME "Board" DONTMOVEHERE OUTLINE 4,1 382,1 382,378 4,378 LOC 256,193 SCRIPT ;Scrabble original by TJ. ;Scrabble room and rules graphics by Logan. ON SELECT {letter GLOBAL {"You have to select one letter" LOCALMSG EXIT} letter 0 == IF {GLOBAL} [SBX CutUTile m] FOREACH MOUSEPOS x = y = "tile" letter & y 6 - x 12 - ADDLOOSEPROP 0 i = {a = {BREAK} a 0 GET y >= IF i++} SBX FOREACH 0 n = {b = {a n 1 + GET m = BREAK} b 0 GET x >= IF n++} SBX FOREACH "letter" key = {m 10 / m = "word" key =} m 10 > IF "@" y ITOA & "," & x ITOA & " Tile " & letter & " positioned " & {"(This will multiply the " & key & " by " & m ITOA & ")" &} m 1 > IF SAY CutUTile EXEC ; Now take it out from the "UsrTile" array [[m] [key]] m = ; For score purpose 0 letter = } ENDSCRIPT ENDDOOR DOOR ID 2 NAME "A-D" DONTMOVEHERE OUTLINE 385,17 399,17 399,75 385,75 LOC 411,112 SCRIPT ON SELECT {{GLOBAL} [letter UsrTiles TT] FOREACH [["A" 1 31] ["B" 3 48] ["C" 3 64] ["D" 2 79]] pack = TT EXEC } ENDSCRIPT ENDDOOR DOOR ID 3 NAME "E-H" DONTMOVEHERE OUTLINE 401,17 419,17 419,75 401,75 LOC 436,111 SCRIPT ON SELECT {{GLOBAL} [letter UsrTiles TT] FOREACH [["E" 1 31] ["F" 4 48] ["G" 2 64] ["H" 4 79]] pack = TT EXEC } ENDSCRIPT ENDDOOR DOOR ID 4 NAME "I-L" DONTMOVEHERE OUTLINE 422,17 439,17 439,75 422,75 LOC 312,109 SCRIPT ON SELECT {{GLOBAL} [letter UsrTiles TT] FOREACH [["I" 1 31] ["J" 3 48] ["K" 3 64] ["L" 2 79]] pack = TT EXEC } ENDSCRIPT ENDDOOR DOOR ID 5 NAME "M-P" DONTMOVEHERE OUTLINE 441,17 457,17 457,75 441,75 LOC 330,112 SCRIPT ON SELECT {{GLOBAL} [letter UsrTiles TT] FOREACH [["M" 1 31] ["N" 1 48] ["O" 1 64] ["P" 3 79]] pack = TT EXEC } ENDSCRIPT ENDDOOR DOOR ID 6 NAME "Q-T" DONTMOVEHERE OUTLINE 459,17 475,17 475,75 459,75 LOC 346,112 SCRIPT ON SELECT {{GLOBAL} [letter UsrTiles TT] FOREACH [["Q" 10 31] ["R" 1 48] ["S" 1 64] ["T" 1 79]] pack = TT EXEC } ENDSCRIPT ENDDOOR DOOR ID 7 NAME "U-X" DONTMOVEHERE OUTLINE 477,17 494,17 494,75 477,75 LOC 367,110 SCRIPT ON SELECT {{GLOBAL} [letter UsrTiles TT] FOREACH [["U" 1 31] ["V" 4 48] ["W" 4 64] ["X" 8 79]] pack = TT EXEC } ENDSCRIPT ENDDOOR DOOR ID 8 NAME "Y-BLANK" DONTMOVEHERE OUTLINE 496,17 510,17 510,62 496,62 LOC 380,112 SCRIPT ON SELECT {{GLOBAL} [letter UsrTiles TT] FOREACH [["Y" 4 31] ["Z" 10 48] ["BLANK" 0 64]] pack = TT EXEC } ENDSCRIPT ENDDOOR DOOR ID 9 NAME "DRAW" DONTMOVEHERE OUTLINE 385,0 422,0 422,13 385,13 LOC 300,98 SCRIPT ON SELECT {{GLOBAL} [UsrTiles GETTile Tile] FOREACH {["$" "$" "$" "$" "$" "$" "$"] UsrTiles =} UsrTiles 0 == IF 0 i = {UsrTiles i GET Tile = {GETTile EXEC} Tile "$" == IF Tile UsrTiles i PUT i++} {i 7 <} WHILE "" str = 205 x = {lt = {str lt & str =} lt "$" <> IF "tile" lt & 483 x ADDLOOSEPROP 25 x +=} UsrTiles FOREACH USERNAME " Your letters are '" & str & "'. Please take the tiles!" & ROOMMSG } ENDSCRIPT ENDDOOR SPOT ID 10 NAME "Scripts" OUTLINE 390,120 435,120 435,151 390,151 LOC 411,129 SCRIPT ON ENTER {{GLOBAL} [SBX ptiles NewPack GETTile CutUTile TT] FOREACH ;Scrabble Board Map [[25 30 1 1 2 1 1 1 30 1 1 1 2 1 1 30] [50 1 20 1 1 1 3 1 1 1 3 1 1 1 20 1] [75 1 1 20 1 1 1 2 1 2 1 1 1 20 1 1] [100 2 1 1 20 1 1 1 2 1 1 1 20 1 1 2] [125 1 1 1 1 20 1 1 1 1 1 20 1 1 1 1] [150 1 3 1 1 1 3 1 1 1 3 1 1 1 3 1] [175 1 1 2 1 1 1 2 1 2 1 1 1 2 1 1] [200 30 1 1 2 1 1 1 20 1 1 1 2 1 1 30] [225 1 1 2 1 1 1 2 1 2 1 1 1 2 1 1] [250 1 3 1 1 1 3 1 1 1 3 1 1 1 3 1] [275 1 1 1 1 20 1 1 1 1 1 20 1 1 1 1] [300 2 1 1 20 1 1 1 2 1 1 1 20 1 1 2] [325 1 1 20 1 1 1 2 1 2 1 1 1 20 1 1] [350 1 20 1 1 1 3 1 1 1 3 1 1 1 20 1] [375 30 1 1 2 1 1 1 30 1 1 1 2 1 1 30] ] SBX = ; Create/Refresh the whole Tiles array {ptiles GLOBAL ["A" "A" "A" "A" "A" "A" "A" "A" "A" "B" "B" "C" "C" "D" "D" "D" "D" "E" "E" "E" "E" "E" "E" "E" "E" "E" "E" "E" "E" "F" "F" "G" "G" "H" "H" "H" "H" "I" "I" "I" "I" "I" "I" "I" "I" "I" "J" "K" "L" "L" "L" "L" "M" "M" "N" "N" "N" "N" "N" "N" "O" "O" "O" "O" "O" "O" "O" "O" "P" "P" "Q" "R" "R" "R" "R" "R" "R" "S" "S" "S" "S" "T" "T" "T" "T" "T" "T" "U" "U" "U" "U" "V" "V" "W" "W" "X" "Y" "Y" "Z" "BLANK" "BLANK" ] ptiles = } NewPack DEF {NewPack EXEC} ptiles 0 == IF ; ; Routine for letters table {MOUSEPOS x = y = {"@" y ITOA & "," & x ITOA & " You have first to get your 7 tail letters clicking on the 'Draw' button" & SAY EXIT} UsrTiles 0 == IF [76 93 109 127] cx = 0 i ={xx ={pack i GET 0 GET letter = pack i GET 1 GET worth = BREAK} x pack i GET 2 GET <= IF i++} cx FOREACH "" str = 0 t ={l = {str l & str =} l "$" <> IF {1 t =} letter l == IF} UsrTiles FOREACH "@" y ITOA & "," & x ITOA & " " & {letter & " = " & worth ITOA} {"" letter = "Sorry, you don't have this letter! Your letters are '" & str & "'"} t IFELSE & SAY } TT DEF ; ; Supply one tile and take it out of the "ptiles" array {{GLOBAL} [ptiles Tile] FOREACH ptiles LENGTH pl = ptiles tp = pl RANDOM cp = ptiles cp GET Tile = pl -- pl ARRAY tp = 0 ic = 0 xc = {{ptiles xc GET tp ic PUT ic ++} xc cp <> IF xc ++} {xc pl <=} WHILE tp ptiles = } GETTile DEF ; ; Routine to cut off the laid letter from the "UsrTiles" array {{GLOBAL} [UsrTiles letter] FOREACH {["$" "$" "$" "$" "$" "$" "$"] UsrTiles =} UsrTiles 0 == IF 0 cp = {m = {"$" UsrTiles cp PUT BREAK} m letter == IF cp ++} UsrTiles FOREACH } CutUTile DEF } ; ON OUTCHAT {{GLOBAL} [UsrTiles GETTile Tile] FOREACH { 9 SELECT "" CHATSTR = } CHATSTR LOWERCASE "draw" == IF ; {{GLOBAL} [NewPack UsrTiles] FOREACH NewPack EXEC 0 UsrTiles = "" letter = ; Add here, the user score counter var, to reset it "" CHATSTR = USERNAME " did a 'reset' on his/her game!" & ROOMMSG } CHATSTR LOWERCASE "reset" == IF } ENDSCRIPT ENDSPOT DOOR ID 12 NAME "1 digit 1st counter" DONTMOVEHERE OUTLINE 437,79 448,79 448,92 437,92 LOC 443,86 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s1_1 GLOBAL ME s1_1 = } ON SELECT { s1_10 GLOBAL { 0 ME SETSPOTSTATE s1_10 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 13 NAME "10 digit 1st counter" DONTMOVEHERE OUTLINE 424,79 435,79 435,92 424,92 LOC 430,86 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s1_10 GLOBAL ME s1_10 = } ON SELECT { s1_100 GLOBAL { 0 ME SETSPOTSTATE s1_100 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 14 NAME "100 dig 1st count" DONTMOVEHERE OUTLINE 411,79 422,79 422,92 411,92 LOC 417,86 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s1_100 GLOBAL ME s1_100 = } ON SELECT { 10 N = ME GETSPOTSTATE 1 + N % ME SETSPOTSTATELOCAL } ENDSCRIPT ENDDOOR DOOR ID 15 NAME "1 digit 2nd count" DONTMOVEHERE OUTLINE 499,79 510,79 510,92 499,92 LOC 505,86 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s2_1 GLOBAL ME s2_1 = } ON SELECT { s2_10 GLOBAL { 0 ME SETSPOTSTATE s2_10 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 16 NAME "10 digit 2nd count" DONTMOVEHERE OUTLINE 486,79 497,79 497,92 486,92 LOC 492,86 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s2_10 GLOBAL ME s2_10 = } ON SELECT { s2_100 GLOBAL { 0 ME SETSPOTSTATE s2_100 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 17 NAME "100digit 2nd count" DONTMOVEHERE OUTLINE 473,79 484,79 484,92 473,92 LOC 479,86 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s2_100 GLOBAL ME s2_100 = } ON SELECT { 10 N = ME GETSPOTSTATE 1 + N % ME SETSPOTSTATELOCAL } ENDSCRIPT ENDDOOR DOOR ID 18 NAME "1 digit 3rd count" DONTMOVEHERE OUTLINE 437,100 448,100 448,113 437,113 LOC 443,107 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s3_1 GLOBAL ME s3_1 = } ON SELECT { s3_10 GLOBAL { 0 ME SETSPOTSTATE s3_10 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 19 NAME "10digit 3rd counter" DONTMOVEHERE OUTLINE 424,100 435,100 435,113 424,113 LOC 430,107 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s3_10 GLOBAL ME s3_10 = } ON SELECT { s3_100 GLOBAL { 0 ME SETSPOTSTATE s3_100 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 20 NAME "100digit 3rd count" DONTMOVEHERE OUTLINE 411,100 422,100 422,113 411,113 LOC 417,107 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s3_100 GLOBAL ME s3_100 = } ON SELECT { 10 N = ME GETSPOTSTATE 1 + N % ME SETSPOTSTATELOCAL } ENDSCRIPT ENDDOOR DOOR ID 21 NAME "1digit 4th counter" DONTMOVEHERE OUTLINE 499,100 510,100 510,113 499,113 LOC 505,107 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s4_1 GLOBAL ME s4_1 = } ON SELECT { s4_10 GLOBAL { 0 ME SETSPOTSTATE s4_10 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 22 NAME "10digit 4th count" DONTMOVEHERE OUTLINE 486,100 497,100 497,113 486,113 LOC 492,107 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s4_10 GLOBAL ME s4_10 = } ON SELECT { s4_100 GLOBAL { 0 ME SETSPOTSTATE s4_100 SELECT } { ME GETSPOTSTATE 1 + ME SETSPOTSTATE } ME GETSPOTSTATE 9 == IFELSE } ENDSCRIPT ENDDOOR DOOR ID 23 NAME "100digit 4th count" DONTMOVEHERE OUTLINE 473,100 484,100 484,113 473,113 LOC 479,107 PICTS 3,0,0 4,0,0 12,0,0 5,0,0 6,0,0 7,0,0 8,0,0 9,0,0 10,0,0 11,0,0 ENDPICTS SCRIPT ON ENTER { s4_100 GLOBAL ME s4_100 = } ON SELECT { 10 N = ME GETSPOTSTATE 1 + N % ME SETSPOTSTATELOCAL } ENDSCRIPT ENDDOOR DOOR ID 24 NAME "rules" DONTMOVEHERE OUTLINE 471,1 511,1 511,13 471,13 LOC 256,192 PICTS 21,0,0 22,0,0 23,0,0 24,0,0 25,0,0 26,0,0 ENDPICTS SCRIPT ON ENTER { doorpics GLOBAL ME doorpics = } ON SELECT {doorpics GLOBAL doorpics GETSPOTSTATE dst = {-1 dst =} dst 5 > IF dst 1 + doorpics SETSPOTSTATE } ENDSCRIPT ENDDOOR DOOR LOCKABLE ID 25 NAME "room lock & enter msg" DONTMOVEHERE OUTLINE 443,1 457,1 457,13 443,13 LOC 450,8 PICTS 27,0,0 28,0,0 ENDPICTS SCRIPT ON SELECT { { ME UNLOCK } { ME LOCK } ME ISLOCKED IFELSE } ON ENTER { NAKED 425 260 SETPOS "Welcome to SCRABBLE! An addictive, fun word game in which you're given 7 letter tiles to build words in exchange for points. Check the Log for instructions." LOCALMSG "Player 1 clicks or says 'Draw' and is given 7 tiles cascading on the menu face up." LOGMSG "If he has the tiles 'SCRIPTS' and that's the word he wants to spell, he clicks the 'S' at the top in the alphabet listing, clicks the board where he wants to place it, clicks the letter 'C' at the top, the board again, etc. until he has spelled his word." LOGMSG "After you have laid down your word, delete those tiles from your tiles laying face up next to you" LOGMSG "Draw again, write down your letters, delete your tiles left on the board and change the score to reflect what you just earned in points for whichever player you are." LOGMSG "Next player does the same thing. When it's your turn again, click or say 'Draw' again to get your letters placed back on the board and repeat." LOGMSG } ON INCHAT { nDoIt GLOBAL nDoIt EXEC } ENDSCRIPT ENDSPOT DOOR ID 26 NAME "Draw" DONTMOVEHERE OUTLINE 385,0 422,0 422,13 385,13 LOC 300,98 SCRIPT ON SELECT {{GLOBAL} [UsrTiles GETTile Tile] FOREACH {["$" "$" "$" "$" "$" "$" "$"] UsrTiles =} UsrTiles 0 == IF 7 ARRAY temp = UsrTiles LENGTH sl = 0 i = {UsrTiles i GET Tile = {GETTile EXEC} Tile "$" == IF Tile temp i PUT i++} {i sl <} WHILE temp UsrTiles = "" str = 205 x = {lt = {str lt & str =} lt "$" <> IF "tile" lt & 483 x ADDLOOSEPROP 25 x +=} UsrTiles FOREACH USERNAME " Your letters now are '" & str & "'. Please take the tiles!" & ROOMMSG } ENDSCRIPT ENDDOOR DOOR ID 27 DONTMOVEHERE DEST 307 OUTLINE 388,356 445,356 445,380 388,380 LOC 417,367 PICTS 29,0,0 ENDPICTS ENDDOOR DOOR ID 28 DONTMOVEHERE DEST 305 OUTLINE 449,357 509,357 509,380 449,380 LOC 479,368 PICTS 30,0,0 ENDPICTS SCRIPT ON INCHAT { nDoIt GLOBAL nDoIt EXEC } ON ENTER { { CLEARLOOSEPROPS PAINTCLEAR } NBRROOMUSERS 2 < IF } ENDSCRIPT ENDDOOR ENDROOM