ROOM ID 279 NOCYBORGS NAME "Connect 4" PICT "cfour1.gif" PICTURE ID 1 NAME "onep.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 2 NAME "c4b.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 3 NAME "c4r.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 4 NAME "c4bb.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 5 NAME "c4rb.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 6 NAME "c4br.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 8 NAME "c4rr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 9 NAME "c4bbb.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 10 NAME "c4rbb.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 11 NAME "c4brb.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 12 NAME "c4rrb.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 13 NAME "c4bbr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 14 NAME "c4rbr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 15 NAME "c4brr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 16 NAME "c4rrr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 17 NAME "twrarr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 18 NAME "arrowll.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 19 NAME "arrowrr.gif" TRANSCOLOR 0 ENDPICTURE SPOT ID 1 OUTLINE 161,205 163,205 163,207 161,207 LOC 162,206 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 2 OUTLINE 191,205 193,205 193,207 191,207 LOC 192,206 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 3 OUTLINE 221,205 223,205 223,207 221,207 LOC 222,206 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 4 OUTLINE 251,205 253,205 253,207 251,207 LOC 252,206 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 5 OUTLINE 281,205 283,205 283,207 281,207 LOC 282,206 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 6 OUTLINE 311,205 313,205 313,207 311,207 LOC 312,206 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 7 OUTLINE 341,205 343,205 343,207 341,207 LOC 342,206 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 8 OUTLINE 161,115 163,115 163,117 161,117 LOC 162,116 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 9 OUTLINE 191,115 193,115 193,117 191,117 LOC 192,116 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 10 OUTLINE 221,115 223,115 223,117 221,117 LOC 222,116 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 11 OUTLINE 251,115 253,115 253,117 251,117 LOC 252,116 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 12 OUTLINE 281,115 283,115 283,117 281,117 LOC 282,116 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 13 OUTLINE 311,115 313,115 313,117 311,117 LOC 312,116 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 14 OUTLINE 341,115 343,115 343,117 341,117 LOC 342,116 PICTS 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 8,0,0 9,0,0 10,0,0 11,0,0 12,0,0 13,0,0 14,0,0 15,0,0 16,0,0 ENDPICTS ENDSPOT SPOT ID 15 NAME "board" DONTMOVEHERE OUTLINE 133,32 371,32 371,250 133,250 LOC 252,141 PICTS 1,0,0 17,-90,-95 17,-60,-95 17,-30,-95 17,0,-95 17,30,-95 17,60,-95 17,90,-95 ENDPICTS SCRIPT ;~MediaList~;fhclick ON INCHAT { mytrn GLOBAL { { 1 mytrn = 1 ME SETALARM } { 0 mytrn = 0 ME SETSPOTSTATELOCAL } 18 GETSPOTSTATE 15 + GETSPOTSTATE WHOME == IFELSE } CHATSTR ")fhclick" == IF } ON ALARM { mytrn GLOBAL { MOUSEPOS POP 146 - 30 / x = { 0 x = } x 0 < IF { 6 x = } x 6 > IF x 1 + ME SETSPOTSTATELOCAL 20 ME SETALARM } mytrn IF } ON ENTER { getspot GLOBAL 0 255 0 PENCOLOR 8 PENSIZE { gy = gx = gy 3 < 7 * gx + 1 + gsp = gsp GETSPOTSTATE gsv = gy 3 % gy = { 0 } { [ " 7 9 11 13 " " 3 5 7 8 11 12 " " 1 3 4 7 8 9 10 " ] gy GET " " gsv ITOA & " " & SUBSTR 1 + } gsv [ 7 3 1 ] gy GET < IFELSE } getspot DEF } ON SELECT { getspot GLOBAL mytrn GLOBAL { MOUSEPOS 71 - 30 / y = 146 - 30 / x = -1 y = 0 z = { y ++ x y getspot EXEC z = { 1 z = } y 6 == IF } { z NOT } WHILE y -- { y 3 < 7 * x + 1 + gsp = gsp GETSPOTSTATE gsv = gsv 2 * 3 18 GETSPOTSTATE - + gsp SETSPOTSTATE ;x & y are dropped checker spot 0 win = 0 stale = 18 GETSPOTSTATE colr = ;win detection { EXEC sx = sy = 0 ndl = 0 rdl = colr fcv = { ndl ++ x sx ndl * + lx = y sy ndl * + ly = { lx ly getspot EXEC fcv = } { 0 fcv = } lx 0 >= lx 7 < AND ly 0 >= ly 6 < AND AND IFELSE } { fcv colr == } WHILE ndl -- colr fcv = { rdl ++ x sx rdl * - lx = y sy rdl * - ly = { lx ly getspot EXEC fcv = } { 0 fcv = } lx 0 >= lx 7 < AND ly 0 >= ly 6 < AND AND IFELSE } { fcv colr == } WHILE rdl -- { 1 win = x 30 * 157 + y 30 * 82 + PENPOS sx -30 * rdl * sy -30 * rdl * PENTO sx 30 * rdl ndl + * sy 30 * rdl ndl + * LINETO } ndl rdl + 2 > IF } [ { -1 -1 } { -1 0 } { 1 -1 } { 0 -1 } ] FOREACH { ")applause @240,280 !" USERNAME " has won!" & & ROOMMSG mytrn GLOBAL 0 mytrn = { { cr ++ 0 cr SETSPOTSTATE } { cr 18 < } WHILE ")fhclick" SAY PAINTCLEAR } 200 ALARMEXEC } win IF ;stalemate detection { { GETSPOTSTATE 6 > stale += } [ 8 9 10 11 12 13 14 ] FOREACH stale 6 == x 8 + GETSPOTSTATE 7 < y 0 == AND AND stale 7 == OR stale = { "@240,100 !Stalemate" ROOMMSG { { cr ++ 0 cr SETSPOTSTATE } { cr 18 < } WHILE ")fhclick" SAY "@240,200 Game Over" SAY } 200 ALARMEXEC } stale IF } win NOT IF ;turn over to other player, if game is not ended-- { 3 18 GETSPOTSTATE - 18 SETSPOTSTATE 0 ME SETSPOTSTATELOCAL ")fhclick" SAY 0 mytrn = } win NOT stale NOT AND IF } y -1 > IF } mytrn IF } ; "fhclick.wav-*" ENDSCRIPT ENDSPOT SPOT ID 16 NAME "red" DONTMOVEHERE OUTLINE 132,251 188,251 188,291 132,291 LOC 256,258 SCRIPT ON SELECT { { WHOME ME SETSPOTSTATE "@155,265 " USERNAME " is playing Red." & & ROOMMSG { 1 ME SETALARM } 17 GETSPOTSTATE WHONAME "" != IF } ME GETSPOTSTATE WHONAME "" == IF } ON ALARM { 2 RANDOM pl = "@216,180 !" [ "Red" "Black" ] pl GET " goes first!" & & ROOMMSG pl 1 + 18 SETSPOTSTATE ")fhclick" SAY "fhclick" SOUND } ENDSCRIPT ENDSPOT SPOT ID 17 NAME "black" DONTMOVEHERE OUTLINE 312,251 371,251 371,290 312,290 LOC 310,234 SCRIPT ON SELECT { { WHOME ME SETSPOTSTATE "@340,265 " USERNAME " is playing Black." & & ROOMMSG { 1 16 SETALARM } 16 GETSPOTSTATE WHONAME "" != IF } ME GETSPOTSTATE WHONAME "" == IF } ENDSCRIPT ENDSPOT SPOT ID 18 DONTMOVEHERE OUTLINE 189,251 311,251 311,291 189,291 LOC 256,195 SCRIPT ON ENTER { "Script by Foxy, background by Speck, both ©2001" STATUSMSG "For free distribution only!" LOGMSG } ON SELECT { { 16 GETSPOTSTATE WHONAME rn = 17 GETSPOTSTATE WHONAME bn = { { cr ++ 0 cr SETSPOTSTATE } { cr 18 < } WHILE ")fhclick" SAY "Game Reset" ROOMMSG } rn "" == bn "" == OR rn USERNAME == bn USERNAME == OR OR ISWIZARD OR IF } { ;help "Instructions in your log!" STATUSMSG "To start a game, click on the color of checker you want to play." LOGMSG "After both colors have been picked, you will hear one or two clicks, and an announcement as to who is first shows up." LOGMSG "When it is your turn, an arrow appears above the board, following your mouse." LOGMSG "Just move it to the column you want to drop your checker down and click on the board there." LOGMSG "That's it! Wins and stalemates are automatically detected and ended." LOGMSG "To reset the game, click the reset button." LOGMSG "This will work if 1. you are a wizard." LOGMSG "2. you are a player" LOGMSG "3. you are in the room and one or both players from the last game are gone." LOGMSG } MOUSEPOS POP 256 < IFELSE } ENDSCRIPT ENDSPOT DOOR ID 19 DONTMOVEHERE DEST 291 OUTLINE 4,354 62,354 62,380 4,380 LOC 33,366 PICTS 18,0,0 ENDPICTS ENDDOOR DOOR ID 20 DONTMOVEHERE DEST 270 OUTLINE 448,354 508,354 508,379 448,379 LOC 480,368 PICTS 19,0,0 ENDPICTS SCRIPT ON INCHAT { nDoIt GLOBAL nDoIt EXEC } ON ENTER { { CLEARLOOSEPROPS PAINTCLEAR } NBRROOMUSERS 2 < IF } ENDSCRIPT ENDDOOR ENDROOM