ROOM ID 304 NOCYBORGS NAME "Towers of Hanoi" PICT "towrhn.gif" PICTURE ID 1 NAME "twrdsk1.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 2 NAME "twrdsk2.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 3 NAME "twrdsk3.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 4 NAME "twrdsk4.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 5 NAME "twrdsk5.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 6 NAME "twrdsk6.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 7 NAME "twrdsk7.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 8 NAME "twrdsk8.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 9 NAME "otp9.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 11 NAME "twrarr.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 12 NAME "arrowll.gif" TRANSCOLOR 0 ENDPICTURE PICTURE ID 13 NAME "arrowrr.gif" TRANSCOLOR 0 ENDPICTURE SPOT ID 26 DONTMOVEHERE OUTLINE 75,110 437,110 454,289 55,289 LOC 256,192 PICTS 9,0,0 11,-145,-40 11,-4,-40 11,135,-40 ENDPICTS SCRIPT ON SELECT { mvm GLOBAL mvh GLOBAL MOUSEPOS POP sl = sl 182 > sl 325 > 1 + + sl = { { ME GETSPOTSTATE fr = fr 8 * tdf = sl 8 * tdt = { tdf -- } { tdf GETSPOTSTATE NOT fr 1 - 8 * tdf < AND } WHILE { tdf ++ } fr 1 - 8 * tdf == IF tdf GETSPOTSTATE tdfv = { { tdt -- } { tdt GETSPOTSTATE NOT sl 1 - 8 * tdt < AND } WHILE { tdt ++ } sl 1 - 8 * tdt == IF tdt GETSPOTSTATE tdtv = { 0 tdf SETSPOTSTATELOCAL tdfv tdt tdtv 0 > + SETSPOTSTATELOCAL mvm ++ mvh fr ITOA sl ITOA + + mvh = "fhclick" SOUND { ")applause !" USERNAME + " has solved the puzzle in " + mvm ITOA + " moves!" + ROOMMSG { 25 SELECT } 120 ALARMEXEC } tdt 1 + 8 / sl == sl 1 > AND IF } tdtv 0 == tdtv tdfv > OR IF } tdfv IF } sl ME GETSPOTSTATE == NOT IF 0 ME SETSPOTSTATELOCAL } { sl ME SETSPOTSTATELOCAL } ME GETSPOTSTATE IFELSE } ENDSCRIPT ENDSPOT SPOT ID 1 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,278 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 ENDPICTS ENDSPOT SPOT ID 2 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,268 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 ENDPICTS ENDSPOT SPOT ID 3 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,258 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 ENDPICTS ENDSPOT SPOT ID 4 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,248 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 ENDPICTS ENDSPOT SPOT ID 5 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,238 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 ENDPICTS ENDSPOT SPOT ID 6 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,228 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 ENDPICTS ENDSPOT SPOT ID 7 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,218 PICTS 9,0,0 1,0,0 2,0,0 ENDPICTS ENDSPOT SPOT ID 8 OUTLINE 111,111 112,111 112,112 111,112 LOC 111,208 PICTS 9,0,0 1,0,0 ENDPICTS ENDSPOT SPOT ID 9 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,278 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 ENDPICTS ENDSPOT SPOT ID 10 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,268 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 ENDPICTS ENDSPOT SPOT ID 11 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,258 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 ENDPICTS ENDSPOT SPOT ID 12 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,248 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 ENDPICTS ENDSPOT SPOT ID 13 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,238 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 ENDPICTS ENDSPOT SPOT ID 14 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,228 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 ENDPICTS ENDSPOT SPOT ID 15 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,218 PICTS 9,0,0 1,0,0 2,0,0 ENDPICTS ENDSPOT SPOT ID 16 OUTLINE 252,252 253,252 253,253 252,253 LOC 252,208 PICTS 9,0,0 1,0,0 ENDPICTS ENDSPOT SPOT ID 17 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,278 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 8,0,0 ENDPICTS ENDSPOT SPOT ID 18 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,268 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0 ENDPICTS ENDSPOT SPOT ID 19 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,258 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 ENDPICTS ENDSPOT SPOT ID 20 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,248 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 ENDPICTS ENDSPOT SPOT ID 21 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,238 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 4,0,0 ENDPICTS ENDSPOT SPOT ID 22 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,228 PICTS 9,0,0 1,0,0 2,0,0 3,0,0 ENDPICTS ENDSPOT SPOT ID 23 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,218 PICTS 9,0,0 1,0,0 2,0,0 ENDPICTS ENDSPOT SPOT ID 24 OUTLINE 392,393 393,392 393,393 392,393 LOC 392,208 PICTS 9,0,0 1,0,0 ENDPICTS ENDSPOT SPOT ID 25 NAME "Play" DONTMOVEHERE OUTLINE 57,294 141,294 141,340 57,340 LOC 111,311 SCRIPT ON ENTER { "Script and Graphics by Foxy, ©1999" STATUSMSG } ON SELECT { mvh GLOBAL mvm GLOBAL 0 mvm = "0" mvh = 25 cr = { cr -- 0 cr SETSPOTSTATELOCAL } { cr 9 > } WHILE { cr -- cr 9 cr - setspotstatelocal } { cr 1 > } while 0 26 SETSPOTSTATELOCAL } ;~MediaList~;fhclick.wav ; "fhclick.wav-*" ENDSCRIPT ENDSPOT SPOT ID 27 NAME "Undo" DONTMOVEHERE OUTLINE 164,297 256,297 256,337 164,337 LOC 210,310 SCRIPT ON SELECT { mvh GLOBAl mvm GLOBAL { "$1" GREPSUB mvh = "$3" GREPSUB ATOI fr = "$2" GREPSUB ATOI sl = fr 8 * tdf = sl 8 * tdt = { tdf -- } { tdf GETSPOTSTATE NOT fr 1 - 8 * tdf < AND } WHILE { tdf ++ } fr 1 - 8 * tdf == IF tdf GETSPOTSTATE tdfv = { tdt -- } { tdt GETSPOTSTATE NOT sl 1 - 8 * tdt < AND } WHILE { tdt ++ } sl 1 - 8 * tdt == IF tdt GETSPOTSTATE tdtv = 0 tdf SETSPOTSTATELOCAL tdfv tdt tdtv 0 > + SETSPOTSTATELOCAL mvm -- "fhclick" SOUND } mvh "^(.*)(.)(.)$" GREPSTR IF } ENDSCRIPT ENDSPOT SPOT ID 28 NAME "Score" DONTMOVEHERE OUTLINE 282,299 389,299 389,334 282,334 LOC 299,308 SCRIPT ON SELECT { mvm GLOBAL "@256,250 Current number of moves is " mvm ITOA + LOCALMSG } ENDSCRIPT ENDSPOT SPOT ID 29 NAME "Info" DONTMOVEHERE OUTLINE 414,296 452,296 452,333 414,333 LOC 435,308 SCRIPT ON SELECT { "Instructions are in your log." LOCALMSG "Goal: to transfer the pile of disks from one pole to another." LOGMSG "Method: move one disk at a time from the top of one stack to another." LOGMSG "You can not put a larger disk on top of a smaller one." LOGMSG "To play: press the play button." LOGMSG "To move, click on the pole you want to move from- an arrow will show up there." LOGMSG "Click on the pole you want to move to to make your move." LOGMSG "If you don't want to move from a pole you marked, click on that pole again to unmark." LOGMSG "If you made a move- or moves- that you don't want, click on undo to back up." LOGMSG "You can back up all the way to start by clicking undo repeatedly, but clicking on play will reset as well." LOGMSG "To see how many moves you have currently made, click on score." LOGMSG "Minimum number of moves to solve is 255. Good luck!" LOGMSG } ENDSCRIPT ENDSPOT DOOR ID 30 DONTMOVEHERE DEST 290 OUTLINE 7,6 63,6 63,28 7,28 LOC 33,17 PICTS 12,0,0 ENDPICTS ENDDOOR DOOR ID 31 DONTMOVEHERE DEST 285 OUTLINE 450,4 505,4 505,24 450,24 LOC 479,14 PICTS 13,0,0 ENDPICTS SCRIPT ON INCHAT { nDoIt GLOBAL nDoIt EXEC } ON ENTER { { CLEARLOOSEPROPS PAINTCLEAR } NBRROOMUSERS 2 < IF } ENDSCRIPT ENDDOOR ENDROOM