0,]']±>S•,ÿÍu§ðp8·dY0,)6o;]ÉA¦ö²‰™ôôô”°ÂVl†3ã33=3ÐÝ=ÞÝ>3îîî3ðÿÿÿÿppp`g6´c– ´³–y033330333´f–y03333Ö~}}}}}}}}}}}}}}}}}}}}}}}}}|``z}}}}}}}}}}}}}vusvussvussssvussv~~qppppppppppppppppppr`qpp€€€€€€€€€€€€€€€€€€€€ppr~~usppppppppppppppppppppppsvxtt‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ppr~~aqppppptttpppppppppppppppppprqprussssssssssssssv~usssŸ~qpppprqpppttpppppppppppprusspprqppttttttttttppr~qppppppr~qpppprqpprxppppppppppprqpp€€€€€€€€€€€€€€€€€€€€pprusvqprqpr~qppppppr~qpppprqpppvxppppptpppprqpp‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ttwqppprusssssssssssssssssssŸqprqprussssssssŸ~|``z}}}pppppppr~qpppppsspppprxtttwqppprqprqpppp}}|``z}}}ppppppppppppppppppppppp|``z}}}ttwxtt}}}}}}}|``zppppppppppr~~qppppppr~qppptttttttttwqppprqppsvqppprxtttttttttttttttttttpprxtttttttppr~~qppppppr~qpprussvqppprxtt‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚pprxtttwqprqpr~~qppppppr~qpppsssssvqppppppspppprqprqprqpr~~xttttttw~qppptttttttttwqpppppppppppruspprqprqpr~~~xpprxtttpppppppprxtt‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚‚ttwxpwqpr~~~xtt}}}}}}|xtttttttw`{xtw†¤””””””””””””””””””””””””¥ˆ{```‰‰```usŒsvusŒsv`‰‰‰ussssssssssssssssssssvyussssvy†‡””„„Ž„„””””””””””””„„Ž„„ˆussssŒsssŒsssŒsvuvxtpttttttttttttttttttprusssssssssssssssssssssspsv}}}}}}}}}}}}|``z}}}}}}ppppppppp}}}}}}}}}vu}}}}}}sssssssssssssssssv~qrqpŠprqpŠprqppppŠpppŠpppŠppssssssssspr~qrqpppppppppppppppppppppppppprqprqpppppppr~~qppppppppppppppppr~qrxtŠtwxtŠtw†„„„„„Ž„„„Ž„„„Ž„„„„„„„„„„„„„ˆuspsssssssssssssssvqrqpppppppppppppppppppppppppprqprxtttttttw~~z}vqpppppppppppppppppv~qr••qppppŠpppŠpppŠpptttttttttprxttttttttttttttttptwqrqpppppppppppppppppppppppppprqpr~~qrqpppppppppppppppppp|``z}}}}}}}}}}}}}t}}}}}}}}}}}Ÿqr••qppppŠpppŠpppŠprqr~qrqpppppppppppppppppppppppppprqprussŸ~q}}}prqpppppppppppppppppw~qr••qppppŠpppŠpppŠppsssssssssprussssssssssssssspsvqrqpppppppppppppppppppppppppprqprqppruv~~qrqppppppppppppppppr}}}}}}}}}}}}}}}}}}}Ÿ~qr••†„„„„„Ž„„„Ž„„„Ž„„„„„„„„„„„„„ˆxtpttttttttttttttttwqrqpppppppppppppppppppppppppprqprqppp}}}}}}ppr~~usprqppppppppppppppppr~~~qr••qppppŠpppŠpppŠpptttttttttpr~qrqpppppppppppppppppppppppppprqprqpprxpw~~xttwqppppppppppppppppr~~~qr••xttttŠtttŠtttŠtwqruspssssssssssssssssvqrqpppppppppppppppppppppppppprqprxttw~~~qppppppppppppppppr~u}}}}}}}}}}}v~~qr••‹‹‹qrxttttppptttttttttttwqrqpppppppppppppppppppppppppprqpr~~qsssssspppppppppppppppppr~~~~~qrusŠsvussssv•qrqprqrxtttttttttttttpptttttttttttwqpr~~qpppppppppppppppppppppppr~~ž~~~qpppppŠppp}}}}}pppppr–svusvqrqpru}}}}twqrqprx}}}}}}}}}}}}}wqpppppppppppppppppppppppr~~upv~~~xtttppŠppr~qppppppŠpr``qppssssssssssssssssssssssprqpr~qrxpwxttttttttpttttttttttttttw~x}}}}tpt}}}}wx}}}}wxtŠttw~xttttw–tw†ˆxtwx}}}}}|``z}}}}}}}}}}}}}tw{{{{‹`‹`````````````yyusvyyyy~~qpr~u}}vu}}}}}|``z}|~~~pŸqssssssssssssssssssssvqpr†¦”””””””””„”””””””””””ˆu}vus}}wx}}}}}w~x}}}}}}}}}}wussvqprqppppppppppppppppppppr``z}}}}}}}}}ttwž~~qspr~qpppprqprxttttttttttttttttttttw~~u}}wxtpr~qpppprqpr~~~xt}}vu}}}}}v~qpppppsssssspprupv†¦”””””””””„”””””””””””ˆx}vx}}wx}}}}}|``z}}}}}}}}}wqpppppttttttppruvussssssvqprusvusvusv~xvqpppprqprqpp|``z}}}}}}}}}}vqppppppprqprqppprqppprqpppr~xvqpppprqprxpw~qppppppprqpp}}}ppppp}}ppppp}}ppppp}|``z}}}}}}}}}}}}p}}}}}}}}}}|x}vxttttwqpr~usssspsssssvxtttptttwqprqppprqppprqpppr~~xpw~qpppppppppppppppppp}}}v~xpwxtttwxtttwxtttw†¦”””””””””„”””””””””””ˆuw~~qpppppppppppppppppr~~~~u}vuw~~xtttttttttttttttttw~~~†¦”””””””””„”””””””””””ˆuwx}w†¤”””””””””””¥ˆ{{{{{``````````yyyyyvu|ussssssssssssssssssssssssssvuss}}}}}}}}}sssv~~~~~uvzs}spp}}s}pwu|``z}}}}}}}}}}}}}}}}}}}Ÿqpppppppppppppppppppppppppprqprqppr~~~~x}ptvy~xpw{~w~qpppppppppppppppppppppppppprqprqppr~uvupsv~~~xpv{~~}Ÿ~~qpppppppppppppppppppppppppprqprusssvqppr~uppvuppppv~~{qprzrssspssr~~~qpppppppppppppppppppppppppprqprqppprqppr~upttpsptptppv~~qtry~qpppppppr~pŸqpppppppppppppppppppppppppprqprqppprqppr~upwxpw~xppvupvuvuv~~~qs}t}ppptttptpp}wppppppppppŸqpppppppppppppppppppppppppprqprxtptwqppp}}}}}}|``z}}}}}}}}}}}}}}}}}}}}}}}}wqr{~xpp}}}s}|``zppp}}}}}}}}ppp}}}}}ppp}}}}|``z}}}}}}}}}}}}t}}}}}}}}}}}vyzwqprqtw~qwppppppppppppŸqpppppppppppppppppppppppppprqpr~qppru}}}pruv~qr~xtwxpwxtw~u}rqppru}wyqrœttpttttttttttt›qpppppppppppppppppppppppppprqppssspssspppr~qrxt}}}}wqw~~~~xsss}ptttsrut}ppr~qpppppppppppppppppppppppppprqppppppppppppppr~xruw~~~~qpw{qru|~xpp}|†´”””””‡””””””””µˆqpppppppppppppppppppppppppprxttttttptttttttw~xvusvuw~~~x|xwuspppwq|qr~~~qppppppppppppppppppppppppppr~~x}}ttt}}}w~~~yqptpr{utry~~~qppppppppppppppppppppppppppr~~~~~zt}twxt|zwx}}w~~~xttttttptttttttttttttttttttw{{{{{{{{{``````````````````yyyyyyyyy~~~~†””””””””””””””””””””””””§ˆ~~~~~}}}}}}}}}}}}}}}}}}}}}}}}}|``z}}w~~~~~~~ussssssssvusssssspssssssssv~~~z}}}}}}}}}}p}}}}}}}}}}}}|``z}}}}}}}}}}}}}sv~~~~qpttttttprqpppppppppppppppppppppr~~~~qrqr~~~~qrqrqpppppppppppppppppppppr~~~us}}|``z}}}}}}}}}}}wqrusssppssssv~~~~qrqrqpppppppppppppppppppppr~~~qrqrqpppppppppppppppr~~~qsssssssprusppsvqpppppppppppppppppppppr~~~qrqrqpppppppppppppppr~~~xttttttttwqpppprqpppppppppppppppppppppr~~~qpssvqrqpppppppppppppppr~~~qpppprqpppppppppppppppppppppr~~~xttprqrqpppppppppppppppr~~~qpppprqpppppppppppppppppppppr~x}|``z}}}ssssssssspsssssssvqrqrqpppppppppppppppr~~~qpppprqpppppppppppppppppppppr~qpppppppppppppppppssssprqrqpppppppppppppppr~~~ussssssssvxttptwqpppppppppppppppppppppr~u|``z}|xttttttttttttttttttttttrqrxttttttttttpttptw}t}}}}t}}}}}}t}Ÿqppppppppr~xtttttttttttttttttttttwx}}}}}}}}}}}}}s}}}}}}}}}}}|``z}v~~qr~~~~~~~~qttttttttw~{{{{xt|``z}}}}}}}}}}}}}}}}}w{{{{{{{{{``````````````````````````}}}}}}Ÿ†´”””””””””””””””µˆyyysssssssssssŸyusssssssssssssvusssvyyyyyyyyy~~~~~q}}}}}}}}}}}}}}}}}}}}}}}rqtttttttttttr~qppppppppppppppprqpppppr~~~~~~~~~~ussv~~y~usssssssssspsssssvu}}|``z}wx|``z}}r~~qppppppppppppppprqpppppr~†´”””””””””””””””¥ˆ~~~qppp}w~u}}}v~~qppppppppppppppppr~~~~qppppppppppppppprxttpptw~~~pŸ~xttw~u}w~z}tv~qppppppppppppppppp}}wqsssssssvqsssssssssssrqppptttttttttttprqr~~~qpr~u}}w~~~~xttttttttttptttttwqtttttppttwqtttttttttttwqpprqrusppvussspssssv~~qprx}}}}}}wx}}}vx}}vq}}w~~qr~qpprussssssssprqppppprqpppppppprupv~qpr~q}w~~qr~qpprxtttpttttttwqppppprqpppppppprqpr†ƒ””””””””””””””””””””„„…ˆz}}}s}}}}}}}}}vx}}v~~qsssssppssssr}}}}|``z}pppr~qppppprqppppppppp|``z}}}}ppr~qpr~~~q}}}v~qtttttttttttw~qpprussspssssssspppppprqpppppppprqpr~qpru}v~xvu}w{~ussssspsssv~~qpprxttttttttptttpppppprqpppppppprxtw~qpr~~~u}}}}}v~~~qpppppppppr~~qppr~qppppprxtttpttttw~qpr~x}w~~~x}vusspvqpppppppppr†„‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡„‡‡‡‡‡ˆqpprusssssssspsvqpppppr~~xtw~~~~~qppprxtttttttttw†ˆxtpt}ppppppppppprqpppppr~~x}}}}}w{x}}}wxtttw{xttttttttttwxtttttw{{````````y}}}}}}}}}}}Ÿyyyussssspsssssv~~~~x}}}}}}}}}}}}}}}}}}}}}}}Ÿqpppppppppppppppppppppr~upvusssvussssvusssvussru}}}}}|``z}}}}}}}}}}}}}}}}}}}}rqrqpppppppppppppppppppppp}}|``z}}rupppvqpppprqppppprqppppp}}|``z}}}}}}}}}}}}}}}}}}}}}}}}}}|``zpppr~~Ÿqrqpppppppppppppppppppppr~upppppvqppppp}}}pppppprqpppprxttw~~}}}}}}}}}}}ppppp}}}}}}}twqpppppppppppppppppppppr~xpppppwqpppprqppppprqpppprusssspssssv~~xtttwqpppppppppppppppppppppr~xpppwqpppprqppppprqpppprqpptttttppr~~qpppppppppppppppppppppr~xpwxtpttwxttpttwxtpttwqprqpr~~qpppppppppppppppppppppr~~~~~qprusvqpr~~Ÿqpppppppppppppppppppppr~~~~~qprxpwqpr~x}}}}}}}}}}}ppppp}}}}}}}Ÿqpppppppppppppppppppppr~~~~~qpr~qpr~xtttwqrqpppppppppppppppppppppr~~~~~qppsspssppr~qrxpttttttttttttttttttttw~x}}}}}}}}}}}|``z}}wx}}}}}}}wxtttttttttwx}}}}}|``z}}}vu}}}}}}}}}}tw~~~~{{{{``````‰‰‰‰‰‰``yyvž¶ž¶ž¶ž¶ž¶ž¶žyy~~qpp|``z}}}}}}}}vu}}}}|``zp}Š}p}Š}p}Š}p}Š}p}Š}p}Š}p}|``z}}}}}}}}}}}}}}}}}}}}}}}}}Ÿ~ussspsssv~‰‰‰‰‰‰‰~qpw~~~•~•~•~•~•~•~~~qpppppppr~¶¶¶¶¶¶¶~qr~~{·{·{·{·{·{·{}}}}}}}}}}}}}}}}}}}}}}}}w~ssvqpppppppr~•••••••~qr~~‹‹‹‹‹‹~~qpppprxtttpttpw~•••••••~‰‰‰qr~~x}}}}}}}}}}}}}}}}}}}}}}}}Ÿ~qppppr~~†¤”””Ž””Ž””Ž””Ž””Ž””Ž””Ž”µˆ~¶¶¶qrusssspssssvusspsssv~~qppppr~~•••••••~~•••qrqppppppppprqppppppr}}}}}}}}}}}}}}}}}}}}}}}}wq}}}}}}}}}}}}}}}}}}}}}}|``z}}pppppp}}}}}}w~·······~x}}}}}}}}}}}}}}}}}}}}}}}|``z}Š}}Š}}Š|sssssssssppvqppppppppprqppppppr~~qppppr~‹‹‹‹‹‹‹~•••qptttttttttttwqppppppppprqpppppprx}}}}}}}}}}}}}}}}}}}}}}}}Ÿ~qpppprusv~~•••qr†ƒ„„„„„„„„„„””””„„„„„„„…ˆ~~qpppprqpp}v~†´”””””””””””””””””””””””¥ˆ•••qrqppppppppprqppppppr}}}}}}}}}}}}}}}}}}}}}}}}w~xttttwxtw~~~•••qrqppppppppprqppppppr~~~~~•••qrqppppppppprqpppppprx}}}}}}}}}}}}}}}}}}}}}}}}}|``z}}}wx}}wx}}}}}}}}}}}}}}}}}}}}}}}|``z}}}}}}}}}}}}}}}}}}}}}}}}}}|``z}š}}š}}š}}}}twxtttttttttwxttttttw‹‹‹ |"R         !"##$%&&'()*+,}~]Z9V]SRS~WK[^ø_Ö_´_“_ƒ_‚___€_€_€_€_€_€_€_€_€_€_€_€_€_€     & ' ) < > O _ o       o n ] K :"9$'&(*./   sðâÀ   sðâÀ  " " 3 D U g y z { } ~   p p | x v!t"@%'),///// hhhhhhhhggggfecba````7`7`I`Z`k```popoogecaaacfghhgfbaaacefffecbaabdf Ÿ€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€À?33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333300000000!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""33CD4330D330DC403CD033303330333!""""""" "" " """""""""""""""""""""""""""" """""""""""""""" "" """""""033D03CD0D33DDC403DC433303330333!" " ""  "" ""  " """""""""  """"" """"" "  " """""""033D@4D34D3C0D3303D4433303330333!  ""   """ "  "  """""  """" """  "  """""""00DDD0@D@D000! """"   " "" "  " """"""""  """" """"  "  """"""""3CD4CD3CD3DDC433CD33333333! "   ""   """  " """" """"" " """ """"""" "  """""""333333333333333333033333!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""333333333333333303333333!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""30000000003330333033303330333002#3330333033303330333002#02#333033303330333002#333002#3330333002#333002#333033303330333033303330333033303330333000333033303330333033300000333033303330333000333000333033300033300033303330333033303330333033303330333033303 3333033303330333033303 33 333303330333033303 333303 3333033303 333303 3333033303330333033300000000000000000000000033333333333333333333333333333333333333333303303333333333333333333333330330333333333333330000 """!"""""""00 """""""!!"""""""00 """!""""!""""""""!""""!"""00003330333033303330 """"""""""""02# """"""""""""""""""02# """"""""""""""""""""""""""""""33303330333033303330333033303330 """"""""""""""00 """"""""""""""""""""""00 """"""""""""""""""""""""""""""""""""""33303330333033303330333033303330 """"""""""""""3 3 """"""""""""""""""""""3 3 """"""""""""""""""""""""""""""""""""""33303330333033300000 """""""""""""" """""""""""""""""""""" """"""""""""""""""""""""""""""""""""""000033333333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""33333333333333333330333 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""333330333333333333033333 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""33303333333300000 """""""""""""""!""""""""""""""""""""""""!"""""""""""""""""""""""""""""""""""""""000003330333002#3330 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""333002#3330333033303330003330 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""33300033303330333033303 33330 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""33303 333303330000 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""0003C43""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3333Ä43""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3333ÄL3"""""""""""""""""""""""""""""""""""""""""""""""""""""R%"""""""""""""""""""""""""""""""""333@L """!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU"""""""""""""""""""""""""""""""""""""!"""03s0 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""UU""""""""""""""""""""""""""""""""""""""""""33303ÝÝ0 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""R%""""""""""""""""""""""""""""""""""""""""""""33303q70 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3330p """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""ÿÿ""""""""""""""""""""""""""""""""""""""""""""03333 """"B$""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""33333 """"²+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""333ªª0 """bff&"""""5#""R#""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""333ªª0 """bb&&"""""U3""R3""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""0ªª0 """²b&+"""""U3""R3""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3330ªª0 """"’)""""""5#""R#""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3330ff0 """")’""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3330ff0 """"÷""""""ÿÿ""ÿÿ""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""0333 """òÿÿ/"""""""""""""""333333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""333343 """"ÿÿ""""""""""""""""333333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3333CL3 """"""""""""""""""""""333333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""333@L """"""""""""""""""""""000 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""0q70 """"""""""""""""""""""333033303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3330ÝÝ0 """"""""""""""""""""""333033303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3330q0 """"""""""""""""""""""333033303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3330p """"""""""""""""""""""000 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""0333 """"""""""""""""""""""333333333 """"""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""""""""""333333333 """"""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""""""""""333333333 """"""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""000 """"""""""""""00 """"""""""""""""""""""""""""""""""""""""""""""""""03330 """"""""""""""""""""""333033303330 """"""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""""""""""333033303330 """"""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""""""""""333033303330 """"""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""33300 """"""""""""""""""""""000 """"""""""""""00"""""""""""""""""""""""""""""""""""""""""""""""0333 """"""""""""""""""""""33333333 """""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""""""""""343330343 """""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""""""""""3CL30333CL3 """"""""""""U#"333333 """"""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""@L00@L """""""""""RU5""""00 """"""""""""""""""""""""""""""""""""""""""""""03330 """"""""""""""""""""""q7002#q70 """""""""""RU5""""33303330 """"""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""""""""""ÝÝ000ÝÝ0 """"""""""""U#""""33303330 """"""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""""""""""q03 3q0 """"""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""33300 """"""""""""""""""""""pp """""""""""òÿÿ""""00"""""""""""""""""""""""""""""""""""""""0333 """"""""""""""""""""""""""""""""""""""""""333333333 """"""""""""""""""343 """"""""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""333333333 """"""""""""""""""3C43 """"""""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""333333333 """"""""""""""""""3ÄL3 """"""""""""""""""3330 """""""""""""""""""""""""""!"""""""""""""""""""""""000 """"""""""""""""""ÄL """"""""""""""""""03330 """"""""""""""""""""""""""""""""""""""""""""""""""""333033303330 """"""""""""""""""3q0 """"""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""333033303330 """"""""""""""""""3ÝÝ0 """"""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""333033303330 """"""""""""""""""3q0 """"""""""""""""""33300 """"""""""""""""""""""""""""""""""""""""""""""""""""""000p """"""""""""""""""0333 """"""""""""""""""""""""""""""""""""""""""""""""""""""333333333333333333333333 """"""""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""333333330333330333330333333 """"""""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""333333033333033333033333333 """"""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""""""000000000000 """"""""""""""""""03330 """"""""""""""""""""""""""""""""""""""""""""""""""""""3330333002#333002#333002#33303330 """"""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""333033300033300033300033303330 """"""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""333033303 333303 333303 333303330 """"""""""""""""""33300 """""""""""""""000000 """"""""""""""""""0333 """"""""""""""33333333333333333333333333333333 """"""""""""""""""333333 """"""""""""""333330333330333330333330333333333343 """"""""""""""""""333333 """"""""""""""3330333330333330333330333333333333CL3 """"""""""""""""""3330 """"""""""""""000000000000000 """!""""!""""!"""@L """"""""""""""""""03330 """"""""""""""333002#333002#333002#333002#333033303330 """"""""""""""""""""q70 """"""""""""""""""33303330 """"""""""""""333000333000333000333000333033303330 """"""""""""""""""""""""""ÝÝ0 """"""""""""""""""33303330 """"""""""""""33303 333303 333303 333303 3333033303330 """"""""""""""""""""""""""q0 """"""""""""""""""33300 """"""""""""""0000000 """"""""""""""""""""""""""p """"""""""""""""""0333 """""""""""""""333 """"""""""""""""""""""""""""""""""""""""""""""333333 """""""""""""""333 """"""""""""""""""""""""""""""""""""""""""""""333333 """"S%"""""""""333 """"""""""""""""""""""""""""""""""""""""""""""3330 """2UU"""""""""""""!""""!""""!""""!"""""""0 """"""""""""""""""""""""""""""""""""""""""""""""""03330 """2UU""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"S%""""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""33300 """òÿÿ""""""""""""""""""""""""""""""""""""""""""""""""0 """"""""""""""""""""""""""""""""""""""""""""""""""0333 """"""""""""""""""""""""""""""""""""""""""""""""""""""333 """"""""""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""333 """"""""""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""""""""""""""""""""""""""""""""""""""""""333 """"""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""""""0 """"""""""""""""""""""""""""""""""""""""""""""""""03330 """"""""""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""""""""""""""""""""""""""""""""""""""33300 """""""""""""""0 """"""""""""""""""""""""""""""""""""""""""""""""""0333 """"""""""""""333333333333333333333333333333333 """"""""""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""333333333333333333333333333333333 """"""""""""""""""""""""""""""""""""""""""""""""""333333 """"""""""""""333333333333333333333333333333333 """"""""""""""""""""""""""""""""""""""""""""""""""3330 """"""""""""""00000000000 """"""""""""""""""""""""""""""""""""""""""""""""""03330 """"""""""""""33303330333033303330333033303330333033303330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""33303330333033303330333033303330333033303330 """"""""""""""""""""""""""""""""""""""""""""""""""33303330 """"""""""""""33303330333033303330333033303330333033303330 """"""""""""""""""""""""""""""""""""""""""""""""""33300"""""""""""00000000000"""""""""""""""""""""""""""""""""""0333333 """""""""""333333333333333333333333 """"""""""""""""""""""""""""""""""333333333 """""""""""333333333333333333333333 """"""""""""""""""""""""""""""""""333333333 """""""""""333333333333333333333333 """"""""""""""""""""""""""""""""""33300 """"""""""""""""""""""""""""""""""""""00000000 """"""""""""""""""""""""""""""""""033303330 """"""""""""""""""""""""""""""""""""""33303330333033303330333033303330 """"""""""""""""""""""""""""""""""333033303330 """"""""""""""""""""""""""""""""""""""33303330333033303330333033303330 """"""""""""""""""""""""""""""""""333033303330 """"""""""""""""""""""""""""""""""""""33303330333033303330333033303330 """"""""""""""""""""""""""""""""""333000000000000333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333000000000000000000000000000000333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330000000000000000000000000000000—ý-- title: QuickSand! -- author: The Wandering Wizard -- site: https://the-wizards-tales.itch.io/ --VARIABLES alldeaths=0 g=.1 init=true nEvent=1 nEventT=500 bgc=4 sg=5 ds=1.25 aMess=nil godmode=false noclip=false state="title" exit_warned = false last_gold = 0 last_deaths = 0 was_cheater=false last_was_cheater=false --GLOBAL VARIABLES local DSR=45 local STEP_CH=2 local SFX_STEP_A=3 local SFX_STEP_B=4 local WALK_INTERVAL=14 local RUN_INTERVAL=7 --MAP/SCREEN/ROOMS local SW,SH=240,136 local TILE=8 local EPS=0.001 local room={rx=0,ry=0} local STW,STH=30,17 local RW,RH=30,17 local RWP,RHP=RW*TILE,RH*TILE local rooms={} local HALF_W=4 local HALF_H=4 local TOP_OVERLAP_ALLOWANCE=3 --PLAYER OBJECT player = { foot_t = 0, canPlay = true, gold=0, ts=20, ps=256, pmove=false, frames=4, pspeed=.5, runspeed=1, walkspeed=.5, animwalk=100, animrun=50, px=100, py=60, jumping=false, ground=0, jv=0, jump=2 } player.ground=player.py --OBJECTS golds={} goldA=272 goldO=279 goldF=8 goldT=100 torchT=50 torchA=2 torchO=7 torchF=6 --TEXTBOX tb={ x=62, y=2, w=176, h=10, cw=0, speed=5, bg=1, fg=2, tc=0, canEnd=false } -- ROOM TRANSITION transition = { active=false, phase="in", dir="right", axis="x", e=0, v=12, loaded=false, hold=0, to=nil } --SPECIAL SPRITES local DEATH_DART = 496 local DEATH_ROCK = 497 local DOOR_IMG=96 dartimg=288 rockimg=304 --HELPER FUNCTIONS --CHECK CURRENT ROOM function CurrentRoom() local rn=room.rx..","..room.ry local R=rooms[rn] return R end --SET TRAP PHASE local function trap_phase(rx,ry,tx,ty,dir,idx) local d=(dir=="l" and 7) or (dir=="r" and 11) or (dir=="d" and 17) or 19 return ((tx*17+ty*31+rx*13+ry*29+(idx or 0)*3+d)%DSR) end -- TILE ORIGIN OF CURRENT ROOM local function roomTileOrigin() return room.rx*RW,room.ry*RH end --CONVERT TILE NUMBER X FROM LOCAL TO WORLD local function RoomCellX(n) local ox,oy=roomTileOrigin() return ox+n end --CONVERT TILE NUMBER Y FROM LOCAL TO WORLD local function RoomCellY(n) local ox,oy=roomTileOrigin() return oy+n end --CONVERT LOCAL TO WORLD COORDINATES local function roomCell(cx,cy) local ox,oy=roomTileOrigin() return ox+cx,oy+cy end --CONVERT ROOM PLACEMENT X local function W(world_coord,target_room_coord) local offset=target_room_coord*RW return world_coord-offset end -- CONVERT ROOM PLACEMENT Y local function WY(world_coord,target_room_coord) local offset=target_room_coord*RH return world_coord-offset end -- SOLID TILE CHECK local function cellSolid(cx,cy) if not noclip then local wx,wy=roomCell(cx,cy) if wx<0 or wy<0 then return true end return mget(wx,wy)<15 else return false end end -- SOLID PIXEL CHECK local function solidAtPixels(px, py) return cellSolid(px//TILE,py//TILE) end --CHECK COLLISION function checkOverlap(px,py,gx,gy) local col=false if px>=gx and px<=gx+8 and py>=gy and py<=gy+8 then col=true end return col end -- PICK RANDOM NON-SOLID TILE function randomOpenTile() local cx,cy repeat cx=math.random(1,RW-2) cy=math.random(1,RH-2) until not cellSolid(cx,cy) or not mget(cx,cy)==96 return cx,cy end --PLAYER FUNCTIONS function moveGuy() local dx,dy=0,0 if btn(0) then dy=dy-player.pspeed end if btn(1) then dy=dy+player.pspeed end if btn(2) then dx=dx-player.pspeed end if btn(3) then dx=dx+player.pspeed end player.pmove=(dx~=0 or dy~=0) if btn(4) then player.pspeed=player.runspeed player.ts=player.animrun else player.pspeed=player.walkspeed player.ts=player.animwalk end if btnp(5) and not player.jumping then sfx(2,60) player.jumping=true player.ground=player.py if btn(0) then player.jv=player.jump+.5 elseif btn(1) then player.jv=player.jump-.5 else player.jv=player.jump end end moveShadowX(dx) moveShadowY(dy) if not player.jumping then checkTouch() end end -- ANIMATE PLAYER local function animateGuy() local t=time()//player.ts local frame=(t%player.frames) drawShadow() updateFootstep() spr(player.ps+frame,player.px-4,player.py-4,0) end -- POSITION PLAYER function positionGuy() if not player.jumping and not godmode then CheckGuyHit() end if player.jumping then player.jv=player.jv-g player.py=player.py-player.jv if player.py>=player.ground then player.py=player.ground player.jv=0 player.jumping=false end else player.ground=player.py end if player.jumping then drawShadow() spr(260,player.px-4,player.py-4,0) elseif player.pmove then animateGuy() else drawShadow() spr(256,player.px-4,player.py-4,0) end end --PLAYER DOOR COLLISION function CheckDoors() local rn=room.rx..","..room.ry local R=rooms[rn] for i=1,#R.doors do local door=R.doors[i] if door.active then local ox, oy = roomTileOrigin() mset(ox+door.x,oy+door.y,DOOR_IMG) local doorX=door.x*8 local doorY=door.y*8 if not player.jumping and checkOverlap(player.px,player.py,doorX,doorY) then if not transition.active then beginTransition(door.dir,door.to) end end end end end --MOVE PLAYER TO ROOM START ZONE function MoveToStart() local rn=room.rx..","..room.ry local R=rooms[rn] if R and R.sX and R.sY then placeP(R.sX,R.sY,nil) end end --CHECK IF PLAYER IS HIT BY TRAP function CheckGuyHit() local px=player.px local py=player.py local R=CurrentRoom() local rocks=(R and R.rocks) or nil if rocks then for i=1,#rocks do if rocks[i] and rocks[i].active and checkOverlap(px,py,rocks[i].x,rocks[i].y) then rocks[i].img=307 addDeath(px-4,py-4,"rock") sfx(6,20) MoveToStart() return end end end if darts then for i=1, #darts do if darts[i] and darts[i].active and checkOverlap(px,py,darts[i].x,darts[i].y) then addDeath(px-4, py-4,"dart") darts[i].x,darts[i].y=darts[i].sx,darts[i].sy darts[i].t=0 sfx(1,40) MoveToStart() return end end end end --CHECK IF PLAYER TRIES TO LEAVE function CheckExit() local px=player.px local py=player.py local rn=room.rx..","..room.ry if rn=="0,0" then if player.px<12 then if not exit_warned then exit_warned = true player.px=15.1 PlayEvent(500) else last_gold=player.gold last_was_cheater = was_cheater last_deaths=alldeaths state = "gameover" init=true player.gold=0 rooms = {} room.rx, room.ry = 0,0 return true end end end end --CHECK PLAYER COLLISION WITH GOLD OR OUTSIDE DOOR function checkTouch() local px=player.px local py=player.py if golds then for i=1,#golds do if golds[i] and golds[i].active then local gx=golds[i].x local gy=golds[i].y if checkOverlap(px,py,gx,gy) then golds[i].active=false player.gold=player.gold+1 sfx(0,60) end end end end end function moveShadowX(dx) if dx==0 then return end local baseY=player.jumping and player.ground or player.py local rowTop=(baseY-HALF_H+TOP_OVERLAP_ALLOWANCE)//TILE local rowBottom=(baseY+HALF_H-EPS)//TILE if dx>0 then local newRight=player.px+HALF_W+dx local col=newRight//TILE if cellSolid(col,rowTop) or cellSolid(col,rowBottom) then local tileLeft=col*TILE player.px=tileLeft-HALF_W-EPS return end else local newLeft=player.px-HALF_W+dx local col=newLeft//TILE if cellSolid(col,rowTop) or cellSolid(col,rowBottom) then local tileRight=(col+1)*TILE player.px=tileRight+HALF_W+EPS return end end player.px=player.px+dx end --MOVE SHADOW function moveShadowY(dy) if dy==0 then return end local baseY=player.jumping and player.ground or player.py local centerCol=player.px//TILE if dy>0 then local newBase=baseY+dy local rowDown=(newBase+HALF_H)//TILE if cellSolid(centerCol,rowDown) then local top=rowDown*TILE baseY=top-HALF_H-EPS else baseY=newBase end else local newBase=baseY+dy local rowUp=(newBase-HALF_H+TOP_OVERLAP_ALLOWANCE)//TILE if cellSolid(centerCol, rowUp) then local bottom=(rowUp+1)*TILE baseY=bottom+HALF_H-TOP_OVERLAP_ALLOWANCE+EPS else baseY=newBase end end if player.jumping then player.ground=baseY else player.py=baseY player.ground=player.py end end function playFootstep() local id=(math.random(0,1)==0) and SFX_STEP_A or SFX_STEP_B local note=50 local dur=8 local vol=10-math.random(0,2) local spd=3+math.random(-1,1) sfx(id,note,dur,STEP_CH,vol,-1) end --CHECK IF FOOTSTEPS SHOULD PLAY function updateFootstep() local grounded=not player.jumping local moving=player.pmove local running=player.pspeed==1 if moving then local interval=running and RUN_INTERVAL or WALK_INTERVAL player.foot_t=player.foot_t-1 if player.foot_t<=0 then playFootstep() player.foot_t=interval end else player.foot_t = 0 end end --ADD DEAD BODY function addDeath(x,y,deathType) if not deadguys then deadguys={} end local sprite=DEATH_DART if deathType=="dart" then sprite=DEATH_DART elseif deathType=="rock" then sprite=DEATH_ROCK elseif deathType=="trap" then sprite=DEATH_TRAP elseif deathType=="enemy" then sprite=DEATH_ENEMY end alldeaths=alldeaths+1 table.insert(deadguys,{ x=x, y=y, sprite=sprite, deathType=deathType }) end --MAIN LOOP function TIC() if state == "title" or state == "gameover" then draw_title() if anyKey() then state="game" end elseif state == "game" then if init then initialize() init=false end cls(bgc) local ox,oy=roomTileOrigin() map(ox,oy,STW,STH,0,0) CheckDoors() drawDeadGuys() drawGold() CheckTraps() if CheckExit() then return end DrawTorches() if player.canPlay then moveGuy() end positionGuy() drawGUI() if aMess then SendMessage(aMess) end updateTransition() drawTransition() CheckEvent() CheckCheat() end end --TITLE SCREEN function draw_title() cls(0) rect(5,5,SW-10,SH-10,3) rectb(10,10,SW-20,SH-20,4) print("QUICKSAND!",90,20,12) print("A Game With Surprisingly No Quicksand",20,40,12) print("By",SW/2-8,55,12) print("The Wandering Wizard Simon Kalimanus",23,65,12) if state == "gameover" then print("Last Run",95,85,14) print("Gold: "..last_gold.." Deaths: "..last_deaths,70,95,6) if last_was_cheater then print("WAS A CHEATER!",86,105,0) end BlinkText("PRESS ANY BUTTON TO RETRY", 50, 115, 5,100) else BlinkText("PRESS ANY BUTTON TO START",50,115,5,100) end end --START ROOM TRANSITION WIPE function beginTransition(dir,toTarget) local t=transition t.active=true t.loaded=false t.phase="in" t.dir=dir t.to=toTarget t.hold=3 if dir=="left" then t.axis="x";t.v=-12;t.e=SW elseif dir=="right" then t.axis="x";t.v= 12;t.e=-SW elseif dir=="up" then t.axis="y";t.v=-12;t.e=SH elseif dir=="down" then t.axis="y";t.v= 12;t.e=-SH end player.canPlay = false end --UPDATE TRANSITION WIPE function updateTransition() local t = transition if not t.active then return end if t.phase=="in" then t.e = t.e + t.v if ((t.dir=="left" or t.dir=="up") and t.e<=0) or ((t.dir=="right" or t.dir=="down") and t.e>=0) then t.e = 0 t.phase = "hold" end elseif t.phase=="hold" then if not t.loaded and t.to then saveCurrentRoom() room.rx,room.ry=t.to.rx,t.to.ry loadRoom(t.to.rx,t.to.ry) placeP(t.to.sx, t.to.sy, t.dir) t.loaded=true end t.hold=t.hold - 1 if t.hold<=0 then t.phase="out" end elseif t.phase=="out" then t.e=t.e+t.v if (t.dir=="left" and t.e<=-SW) or (t.dir=="right" and t.e>= SW) or (t.dir=="up" and t.e<=-SH) or (t.dir=="down" and t.e>= SH) then t.active=false player.canPlay=true end end end --DRAW TRANSITION WIPE function drawTransition() local t=transition if not t.active then return end if t.axis=="x" then rect(t.e,0,SW,SH,0) else rect(0,t.e,SW,SH,0) end end --DRAW TORCHES function DrawTorches() local R=CurrentRoom() local t=time()//torchT local ox,oy=roomTileOrigin() if R.torches then for i=1,#R.torches do local offset=R.torches[i].frame local frameIndex=(t+offset)%torchF local frame=torchA+frameIndex if frame>torchO then frame=torchA end mset(ox+R.torches[i].x,oy+R.torches[i].y,frame) end end end -- DRAW PLAYER SHADOW function drawShadow() spr(261, player.px-4,player.ground-2,0) end -- DRAW GAME GUI function drawGUI() local R=CurrentRoom() local rc=(R and R.rocks) and #R.rocks or 0 print("Gold: "..player.gold,4,4,4) local col = math.random(1,13) if noclip and godmode then print ("SUPERCHEATER!!!!",80,4,col) elseif godmode then print ("GOD MODE ACTIVATED!",80,4,col) elseif noclip then print ("NOCLIP MODE ACTIVATED!",80,4,col) end end --DRAW DEAD BODIES function drawDeadGuys() if deadguys then for i=1,#deadguys do spr(deadguys[i].sprite,deadguys[i].x,deadguys[i].y,0) end end end --DRAW TREASURE function drawGold() if golds then for g=1,#golds do local t=time()//goldT local offset=golds[g].img local frameIndex=(t+offset)%goldF local frame=goldA+frameIndex if frame>goldO then frame=goldA end if golds[g].active then spr(frame,golds[g].x,golds[g].y,0) end end end end --TURN ON THE TRAPS function ActivateTraps() local R=CurrentRoom() if traps then for i=1,#traps do if traps[i] then local a=traps[i].x*8 local b=traps[i].y*8 local sp=ds local im=dartimg if traps[i].dir=="r" then im=dartimg+1 elseif traps[i].dir=="l" then im=dartimg+2 end local phase=traps[i].phase or trap_phase(room.rx,room.ry,traps[i].x,traps[i].y,traps[i].dir,i) if not darts then darts={} end if not darts[i] then darts[i]={ x=a,y=b,sx=a,sy=b, s=sp,img=im,dir=traps[i].dir, t=-phase, phase=phase, active=true } else darts[i].sx,darts[i].sy=a,b darts[i].x,darts[i].y=a,b darts[i].s=sp darts[i].img=im darts[i].dir=traps[i].dir darts[i].phase=phase darts[i].t=-phase darts[i].active=true end end end end end --CHECK TO SEE IF TRAPS ARMED function CheckTraps() --ROCK TRAPS do local R=CurrentRoom() local rocks=(R and R.rocks) or nil if rocks then for j=1,#rocks do local r=rocks[j] if r and r.active then r.t=r.t+1 if r.dir=="d" then r.y=r.y+r.s if solidAtPixels(r.x,r.y+8) and r.t>10 then r.x,r.y,r.t=r.sx,r.sy,0 end elseif r.dir=="u" then r.y = r.y - r.s if solidAtPixels(r.x,r.y) and r.t>10 then r.x,r.y,r.t=r.sx,r.sy,0 end elseif r.dir=="l" then r.x=r.x-r.s if solidAtPixels(r.x,r.y) and r.t>10 then r.x,r.y,r.t=r.sx,r.sy,0 end elseif r.dir=="r" then r.x=r.x+r.s if solidAtPixels(r.x+8,r.y) and r.t>10 then r.x,r.y,r.t=r.sx,r.sy,0 end end local frame=(time()//200)%3 spr(r.img+frame,r.x,r.y,0) end end end end --DART TRAPS if darts then for i=1,#darts do local d=darts[i] if d and d.active then d.t=d.t+1 if d.t>=0 then if d.dir=="d" then d.y=d.y+d.s if solidAtPixels(d.x,d.y+8) and d.t>10 then d.x,d.y=d.sx,d.sy d.t=-(d.phase or 0) end elseif d.dir == "r" then d.x=d.x+d.s if solidAtPixels(d.x+8,d.y) and d.t>10 then d.x,d.y=d.sx,d.sy d.t=-(d.phase or 0) end elseif d.dir=="l" then d.x=d.x-d.s if solidAtPixels(d.x-1,d.y) and d.t>10 then d.x,d.y=d.sx,d.sy d.t=-(d.phase or 0) end end end spr(d.img,d.x,d.y,0) end end end end --ACTIVATE EVENTS function PlayEvent(n) player.canPlay=false player.pmove=false tb.canEnd=false aMess=n end --ANIMATES TEXT BOX ON SCREEN function SendMessage(n) rect(tb.x,tb.y,tb.cw,tb.h,tb.fg) rectb(tb.x,tb.y,tb.cw,tb.h,tb.bg) tb.cw = tb.cw+tb.speed if tb.cw>=tb.w then tb.cw=tb.w print(TextMessage(n),tb.x+3,tb.y+2,tb.tc) tb.canEnd=true end if btnp(4) or btnp(5) then if tb.canEnd then SetNext(n) tb.cw=0 player.canPlay=true aMess=nil end end end --MESSAGE DATA function TextMessage(n) local tx = "..." if n==500 then tx="So much gold! I can't leave now!" end if n==1 then tx="Wow! This cave is full of gold!" end if n==2 then tx="Use the arrow keys to go get it." end if n==3 then tx="I can run with the Z key." end if n==4 then tx="Hey!" end if n==5 then tx="I hear a door opening somewhere!" end if n==6 then tx="This is a big staircase!" end if n==7 then tx="It goes deep down into the dark." end if n==8 then tx="Ahhh! More traps!" end if n==9 then tx="I can use X to jump over them!" end return tx end --SET WHICH EVENT HAPPENS NEXT AND WHEN function SetNext(n) if n==500 then elseif nEvent==1 then nEvent=2 nEventT=time() elseif nEvent==2 then nEvent=3 nEventT=time()+5000 elseif nEvent == 3 then nEvent=4 nEventT=0 elseif nEvent==4 then nEvent=5 nEventT=time() OpenDoors() elseif nEvent==5 then nEvent=6 nEventT=0 ActivateTraps() elseif nEvent==6 then nEvent=7 nEventT=time() elseif nEvent==7 then nEvent=8 nEventT=0 elseif nEvent==8 then nEvent=9 nEventT=time() elseif nEvent==9 then nEvent=10 nEventT=0 ActivateTraps() end end function OpenDoors() local rn=room.rx..","..room.ry local R=rooms[rn] local ox,oy=roomTileOrigin() for i=1,#R.doors do R.doors[i].active=true mset(ox+R.doors[i].x,oy+R.doors[i].y,DOOR_IMG) sfx(5) end end --CHECK TO SEE IF EVENT STARTED function CheckEvent() local rn=room.rx..","..room.ry local R=rooms[rn] local event=false if nEvent==8 then if rn=="1,0" and player.py>=42 then event=true end end if nEvent==6 then if rn=="1,0" and player.px>=40 then event=true end end if time()>=nEventT and nEventT~=0 then event=true end if player.gold==sg and nEvent==4 then event = true end if event then PlayEvent(nEvent) end end --SETS LOCAL COORDINATES FROM TILE COORDINATES function TileToRoom(rx,ry) local nx=rx*8 local ny=ry*8 return nx,ny end --LOAD ROOM function loadRoom(rx,ry) local R=ensureRoom(rx,ry) if R then golds=R.golds or {} traps=R.traps or {} darts=R.darts or {} torches=R.torches or {} deadguys=R.deadguys or {} if traps and #traps>0 then for i=1,#traps do local t = traps[i] if t and t.phase == nil then t.phase=trap_phase(rx,ry,t.x,t.y,t.dir,i) end end end ensureGoldForRoom(R) if R.traps and #R.traps>0 then for i=1,#R.traps do if R.traps[i].active then ActivateTraps() break end end end if R.sX and R.sY then placeP(R.sX,R.sY,nil) end else golds={} traps={} darts={} rocks={} deadguys={} torches={} end end --MAKE ROOMS PERSISTENT function ensureRoom(rx,ry) local rn=rx..","..ry local R=rooms[rn] if not R then R={ gc=math.random(2,5), sX=2,sY=5, traps={}, golds={}, darts={}, rocks={}, deadguys={}, doors={}, } rooms[rn]=R end R.traps=R.traps or {} R.golds=R.golds or {} R.darts=R.darts or {} R.doors=R.doors or {} R.rocks=R.rocks or {} R.deadguys= R.deadguys or {} return R end --PLACE GOLD IF NOT ALREADY function ensureGoldForRoom(R) if R and R.golds then if #R.golds==0 and (R.gc or 0) > 0 and not R.goldGenerated then for i=1,R.gc do local cx,cy=randomOpenTile() table.insert(R.golds, { x = cx*TILE, y = cy*TILE,active=true, img = math.random(goldA,goldO) }) end R.goldGenerated=true end end end -- PLACE GOLD RANDOMLY IN ROOM function placeGold(count) for i=1,count do local cx,cy=randomOpenTile() local x=cx * TILE local y=cy * TILE golds[i]={x=x,y=y,active=true,img=math.random(goldA,goldO)} end end --ENSURE ROOM PERSISTENCE function saveCurrentRoom() local rn = room.rx..","..room.ry local R = rooms[rn] end function placeP(cx,cy,from_dir) -- center-of-tile local px = cx*TILE+HALF_W local py = cy*TILE+HALF_H if from_dir=="left" then px=px+(HALF_W+1) end if from_dir=="right" then px=px-(HALF_W+1) end if from_dir=="up" then py=py+(HALF_H+1) end if from_dir=="down" then py=py-(HALF_H+1) end player.px=px player.py=py player.ground=py local tcx,tcy=player.px//TILE,player.py//TILE if cellSolid(tcx,tcy) then local candidates={ {1,0},{-1,0},{0,1},{0,-1}, {2,0},{-2,0},{0,2},{0,-2} } for i=1,#candidates do local nx,ny=cx+candidates[i][1],cy+candidates[i][2] if not cellSolid(nx,ny) then player.px=nx*TILE+HALF_W player.py=ny*TILE+HALF_H player.ground=player.py break end end end end --CHEAT CODE CHEAT CODE CHEAT CODE CHEAT CODE CHEAT CODE function CheckCheat() if noclip or godmode then was_cheater=true end local xx = room.rx local yy = room.ry if key(64) then local col = math.random(1,15) print ("Hey! Don't you cheat, buddy!!!", 40,65,col) if keyp(28) then xx=0 elseif keyp(28) then xx=0 elseif keyp(29) then xx=1 elseif keyp(30) then xx=2 elseif keyp(31) then xx=3 elseif keyp(32) then xx=4 elseif keyp(33) then xx=5 elseif keyp(34) then xx=6 elseif keyp(35) then xx=7 elseif keyp(17) then yy=0 elseif keyp(23) then yy=1 elseif keyp(5) then yy=2 elseif keyp(18) then yy=3 elseif keyp(20) then yy=4 elseif keyp(25) then yy=5 elseif keyp(21) then yy=6 elseif keyp(9) then yy=7 elseif keyp(50) then noclip = not noclip elseif keyp(48) then godmode = not godmode end if xx ~= room.rx or yy ~= room.ry then Warp(xx,yy) end end end function Warp(x,y) local rn = x..","..y local R = rooms[rn] if R then saveCurrentRoom() room.rx=x room.ry=y loadRoom(x,y) end end --STARTING ROOM GOLD function gC() return math.random(3,10) end --ROOM DATA --INITIALIZE ROOMS function initialize() math.randomseed(tstamp()) alldeaths=0 nEvent=1 nEventT=500 godmode=false noclip=false exit_warned = false last_gold = 0 last_deaths = 0 was_cheater=false last_was_cheater=false deadguys={} rooms["0,0"]={ gc=sg, sX=W(2,0), sY=WY(5,0), traps={ MakeTrap(W(5,0),WY(1,0),false,"d"), MakeTrap(W(11,0),WY(1,0),false,"d"), MakeTrap(W(15,0),WY(2,0),false,"d"), MakeTrap(W(19,0),WY(1,0),false,"d"), MakeTrap(W(24,0),WY(1,0),false,"d"), MakeTrap(W(17,0),WY(10,0),false,"d"), MakeTrap(W(21,0),WY(10,0),false,"d"), MakeTrap(W(8,0),WY(11,0),false,"d"), MakeTrap(W(12,0),WY(11,0),false,"d"), }, doors={ MakeDoor(W(8,0),WY(8,0),"up",false,1,0,W(33,1),WY(2,0)), }, torches={ MakeTorch(W(7,0),WY(8,0)), MakeTorch(W(9,0),WY(8,0)), MakeTorch(W(23,0),WY(9,0)), MakeTorch(W(23,0),WY(11,0)), MakeTorch(W(0,0),WY(4,0)), MakeTorch(W(0,0),WY(6,0)), } } rooms["1,0"]={ gc=gC(), sX=W(33,1), sY=W(3,0), traps={ MakeTrap(W(39,1),WY(1,0),false,"d"), MakeTrap(W(45,1),WY(1,0),false,"d"), MakeTrap(W(58,1),WY(7,0),false,"l"), MakeTrap(W(56,1),WY(1,0),false,"d"), MakeTrap(W(48,1),WY(5,0),false,"d"), MakeTrap(W(54,1),WY(5,0),false,"d"), MakeTrap(W(58,1),WY(10,0),false,"l"), MakeTrap(W(46,1),WY(5,0),false,"d"), MakeTrap(W(31,1),WY(8,0),false,"r"), MakeTrap(W(56,1),WY(9,0),false,"d"), MakeTrap(W(31,1),WY(13,0),false,"r"), }, doors={ MakeDoor(W(31,1),W(3,0),"left",true,0,0,W(8,0),W(9,0)), MakeDoor(W(33,1),WY(15,0),"down",true,1,1,W(33,1),WY(20,1)), }, torches={ MakeTorch(W(39,1), WY(1,0)), MakeTorch(W(45,1), WY(1,0)), MakeTorch(W(51,1), WY(1,0)), MakeTorch(W(39,1), WY(5,0)), MakeTorch(W(45,1), WY(5,0)), MakeTorch(W(51,1), WY(5,0)), MakeTorch(W(39,1), WY(9,0)), MakeTorch(W(45,1), WY(9,0)), MakeTorch(W(51,1), WY(9,0)), MakeTorch(W(39,1), WY(12,0)), MakeTorch(W(45,1), WY(12,0)), MakeTorch(W(51,1), WY(12,0)), MakeTorch(W(39,1), WY(15,0)), MakeTorch(W(45,1), WY(15,0)), MakeTorch(W(51,1), WY(15,0)), MakeTorch(W(58,1), WY(5,0)), MakeTorch(W(31,1), WY(9,0)), MakeTorch(W(58,1), WY(12,0)), } } rooms["2,0"]={ gc=gC(), sX=W(87,2), sY=WY(9,0), traps={ MakeTrap(W(82,2),WY(6,0),true,"d"), MakeTrap(W(84,2),WY(6,0),true,"d"), MakeTrap(W(80,2),WY(8,0),true,"r"), MakeTrap(W(80,2),WY(10,0),true,"r"), }, doors={ MakeDoor(W(89,2),WY(9,0),"right",true,3,0,W(92,3),WY(9,0)), }, torches={ MakeTorch(W(83,2), WY(6,0)), MakeTorch(W(80,2), WY(9,0)), MakeTorch(W(86,2), WY(8,0)), MakeTorch(W(83,2), WY(12,0)), } } rooms["3,0"]={ gc=math.random(3,10), sX=W(92,3), sY=W(9,0), traps={ MakeTrap(W(115,3),WY(7,0),true,"d"), MakeTrap(W(116,3),WY(7,0),true,"d"), MakeTrap(W(117,3),WY(7,0),true,"d"), }, doors={ MakeDoor(W(90,3),WY(9,0),"left",true,2,0,W(87,2),WY(9,0)), MakeDoor(W(119,3),WY(9,0),"right",true,4,0,W(122,4),WY(9,0)), MakeDoor(W(116,3),WY(16,0),"down",true,3,1,W(116,3),WY(19,1)), }, torches={ MakeTorch(W(99,3), WY(7,0)), MakeTorch(W(104,3), WY(7,0)), MakeTorch(W(109,3), WY(7,0)), MakeTorch(W(114,3), WY(7,0)), } } rooms["4,0"]={ gc=gC(), sX=W(122,4), sY=WY(9,0), doors={ MakeDoor(W(120,4),WY(9,0),"left",true,3,0,W(117,3),WY(9,0)), MakeDoor(W(149,4),WY(9,0),"right",true,5,0,W(152,5),WY(9,0)), }, torches={ MakeTorch(W(143,4), WY(8,0)), MakeTorch(W(146,4), WY(8,0)), MakeTorch(W(123,4), WY(8,0)), MakeTorch(W(136,4), WY(4,0)), MakeTorch(W(129,4), WY(4,0)), } } rooms["5,0"]={ gc=gC(), sX=W(152,5), sY=WY(9,0), doors={ MakeDoor(W(150,5),WY(9,0),"left",true,4,0,W(147,4),WY(9,0)), MakeDoor(W(161,5),WY(16,0),"down",true,5,1,W(161,5),WY(19,1)), }, torches={ MakeTorch(W(154,5), WY(7,0)), MakeTorch(W(161,5), WY(7,0)), }, traps={ MakeTrap(W(160,5),WY(7,0),true,"d"), MakeTrap(W(162,5),WY(7,0),true,"d"), } } rooms["6,0"]={ gc=gC(), sX=W(208,6), sY=WY(1,0), doors={ MakeDoor(W(209,6),WY(1,0),"right",true,7,0,W(212,7),WY(1,0)), MakeDoor(W(209,6),WY(8,0),"right",true,7,0,W(212,7),WY(8,0)), }, torches={ MakeTorch(W(185,6), WY(0,0)), MakeTorch(W(185,6), WY(14,0)), MakeTorch(W(189,6), WY(0,0)), MakeTorch(W(189,6), WY(14,0)), MakeTorch(W(193,6), WY(0,0)), MakeTorch(W(193,6), WY(14,0)), MakeTorch(W(197,6), WY(0,0)), MakeTorch(W(197,6), WY(14,0)), MakeTorch(W(201,6), WY(0,0)), MakeTorch(W(201,6), WY(14,0)), MakeTorch(W(205,6), WY(0,0)), MakeTorch(W(205,6), WY(14,0)), }, traps={ MakeTrap(W(182,6),WY(0,0),true,"d"), MakeTrap(W(207,6),WY(7,0),true,"d"), }, rocks={ MakeRock(W(190,6), WY(15,0), W(181,6), WY(15,0), "r"), } } rooms["7,0"]={ gc=gC(), sX=W(225,7), sY=WY(15,0), doors={ MakeDoor(W(210,7),WY(1,0),"left",true,6,0,W(207,6),WY(1,0)), MakeDoor(W(210,7),WY(8,0),"left",true,6,0,W(207,6),WY(8,0)), MakeDoor(W(225,7),WY(16,0),"down",true,7,1,W(225,7),WY(19,1)), }, torches={ MakeTorch(W(215,7), WY(4,0)), MakeTorch(W(217,7), WY(4,0)), MakeTorch(W(219,7), WY(4,0)), MakeTorch(W(221,7), WY(4,0)), MakeTorch(W(214,7), WY(6,0)), MakeTorch(W(214,7), WY(10,0)), MakeTorch(W(223,7), WY(8,0)), MakeTorch(W(216,7), WY(13,0)), MakeTorch(W(218,7), WY(13,0)), MakeTorch(W(220,7), WY(13,0)), }, traps={ MakeTrap(W(214,7),WY(5,0),true,"r"), MakeTrap(W(214,7),WY(7,0),true,"r"), MakeTrap(W(214,7),WY(9,0),true,"r"), MakeTrap(W(214,7),WY(11,0),true,"r"), MakeTrap(W(223,7),WY(6,0),true,"l"), MakeTrap(W(223,7),WY(10,0),true,"l"), MakeTrap(W(216,7),WY(4,0),true,"d"), MakeTrap(W(218,7),WY(4,0),true,"d"), MakeTrap(W(220,7),WY(4,0),true,"d"), MakeTrap(W(222,7),WY(4,0),true,"d"), } } rooms["0,1"]={ gc=gC(), sX=W(26,0), sY=WY(31,1), doors={ MakeDoor(W(28,0),WY(31,1),"right",true,1,1,W(33,1),WY(31,1)), MakeDoor(W(14,0),WY(33,1),"down",true,0,2,W(14,0),WY(36,2)), }, traps={ MakeTrap(W(14,0),WY(29,1),true,"d"), MakeTrap(W(2,0),WY(18,1),true,"d"), MakeTrap(W(3,0),WY(18,1),true,"d"), MakeTrap(W(7,0),WY(17,1),true,"d"), MakeTrap(W(9,0),WY(17,1),true,"d"), MakeTrap(W(24,0),WY(17,1),true,"d"), MakeTrap(W(26,0),WY(17,1),true,"d"), MakeTrap(W(10,0),WY(28,1),true,"d"), MakeTrap(W(1,0),WY(30,1),true,"r"), MakeTrap(W(10,0),WY(28,1),true,"d"), MakeTrap(W(19,0),WY(28,1),true,"d"), MakeTrap(W(22,0),WY(28,1),true,"d"), }, rocks={ MakeRock(W(15,0), WY(19,1), W(1,0), WY(19,1), "r"), MakeRock(W(8,0), WY(21,1), W(8,0), WY(17,1), "d"), MakeRock(W(25,0), WY(24,1), W(25,0), WY(33,1), "u"), }, torches={ MakeTorch(W(13,0), WY(18,1)), MakeTorch(W(20,0), WY(18,1)), MakeTorch(W(18,0), WY(28,1)), MakeTorch(W(23,0), WY(28,1)), MakeTorch(W(6,0), WY(28,1)), MakeTorch(W(11,0), WY(28,1)), } } rooms["1,1"]={ gc=gC(), sX=W(33,1), sY=WY(19,1), doors={ MakeDoor(W(33,1),WY(18,1),"up",true,1,0,W(33,1),WY(13,0)), MakeDoor(W(31,1),WY(31,1),"left",true,0,1,W(26,0),WY(31,1)), MakeDoor(W(37,1),WY(33,1),"down",true,1,2,W(37,1),WY(36,2)), }, traps={ MakeTrap(W(57,1),WY(18,1),true,"d"), MakeTrap(W(58,1),WY(18,1),true,"d"), }, rocks={ MakeRock(W(37,1), WY(20,1), W(37,1), WY(18,1), "d"), MakeRock(W(41,1), WY(23,1), W(41,1), WY(28,1), "u"), MakeRock(W(45,1), WY(26,1), W(45,1), WY(18,1), "d"), MakeRock(W(53,1), WY(25,1), W(31,1), WY(25,1), "r"), MakeRock(W(40,1), WY(21,1), W(59,1), WY(21,1), "l"), MakeRock(W(57,1), WY(32,1), W(31,1), WY(32,1), "r"), }, torches={ MakeTorch(W(38,1), WY(30,1)), MakeTorch(W(39,1), WY(18,1)), MakeTorch(W(43,1), WY(18,1)), MakeTorch(W(50,1), WY(19,1)), MakeTorch(W(50,1), WY(23,1)), MakeTorch(W(54,1), WY(19,1)), MakeTorch(W(54,1), WY(23,1)), MakeTorch(W(45,1), WY(30,1)), MakeTorch(W(33,1), WY(29,1)), MakeTorch(W(52,1), WY(30,1)), } } rooms["2,1"]={ gc=gC(), sX=W(72,2), sY=WY(32,1), doors={ MakeDoor(W(72,2),WY(33,1),"down",true,2,2,W(72,2),WY(36,2)), MakeDoor(W(89,2),WY(32,1),"right",true,3,1,W(92,3),WY(32,1)), }, torches={ MakeTorch(W(69,2), WY(20,1)), MakeTorch(W(67,2), WY(20,1)), MakeTorch(W(82,2), WY(23,1)), MakeTorch(W(84,2), WY(23,1)), MakeTorch(W(67,2), WY(26,1)), MakeTorch(W(69,2), WY(26,1)), }, traps={ MakeTrap(W(68,2),WY(17,1),true,"d"), MakeTrap(W(83,2),WY(20,1),true,"d"), MakeTrap(W(68,2),WY(23,1),true,"d"), MakeTrap(W(65,2),WY(18,1),true,"r"), MakeTrap(W(89,2),WY(19,1),true,"l"), MakeTrap(W(65,2),WY(22,1),true,"r"), MakeTrap(W(86,2),WY(21,1),true,"l"), MakeTrap(W(65,2),WY(24,1),true,"r"), MakeTrap(W(86,2),WY(25,1),true,"l"), MakeTrap(W(86,2),WY(27,1),true,"l"), MakeTrap(W(65,2),WY(28,1),true,"r"), } } rooms["3,1"]={ gc=gC(), sX=W(92,3), sY=WY(32,1), doors={ MakeDoor(W(90,3),WY(32,1),"left",true,2,1,W(87,2),WY(32,1)), MakeDoor(W(116,3),WY(17,1),"up",true,3,0,W(116,3),WY(14,0)), }, torches={ MakeTorch(W(94,3), WY(18,1)), MakeTorch(W(101,3), WY(18,1)), MakeTorch(W(110,3), WY(18,1)), MakeTorch(W(115,3), WY(18,1)), MakeTorch(W(117,3), WY(18,1)), }, traps={ MakeTrap(W(105,3),WY(18,1),true,"d"), MakeTrap(W(106,3),WY(18,1),true,"d"), } } rooms["4,1"]={ gc=gC(), sX=W(134,4), sY=WY(31,1), doors={ MakeDoor(W(134,4),WY(33,1),"down",true,4,2,W(134,4),WY(36,2)), MakeDoor(W(149,4),WY(19,1),"right",true,5,1,W(152,5),WY(19,1)), }, torches={ MakeTorch(W(133,4), WY(32,1)), MakeTorch(W(135,4), WY(32,1)), MakeTorch(W(148,4), WY(18,1)), MakeTorch(W(148,4), WY(20,1)), }, traps={ MakeTrap(W(133,4),WY(18,1),true,"d"), MakeTrap(W(134,4),WY(18,1),true,"d"), MakeTrap(W(135,4),WY(18,1),true,"d"), } } rooms["5,1"]={ gc=gC(), sX=W(152,5), sY=WY(19,1), doors={ MakeDoor(W(150,5),WY(19,1),"left",true,4,1,W(147,4),WY(19,1)), MakeDoor(W(161,5),WY(17,1),"up",true,5,0,W(161,5),WY(14,0)), }, torches={ MakeTorch(W(161,5), WY(23,1)), MakeTorch(W(163,5), WY(23,1)), MakeTorch(W(160,5), WY(17,1)), MakeTorch(W(162,5), WY(17,1)), MakeTorch(W(164,5), WY(17,1)), }, traps={ MakeTrap(W(159,5),WY(17,1),true,"d"), MakeTrap(W(163,5),WY(17,1),true,"d"), MakeTrap(W(165,5),WY(17,1),true,"d"), MakeTrap(W(162,5),WY(23,1),true,"d"), MakeTrap(W(154,5),WY(22,1),true,"d"), MakeTrap(W(152,5),WY(22,1),true,"d"), MakeTrap(W(150,5),WY(24,1),true,"r"), MakeTrap(W(150,5),WY(26,1),true,"r"), } } rooms["6,1"]={ gc=gC(), sX=W(191,6), sY=WY(31,1), doors={ MakeDoor(W(191,6),WY(33,1),"down",true,6,2,W(191,6),WY(36,2)), MakeDoor(W(209,6),WY(22,1),"right",true,7,1,W(212,7),WY(22,1)), }, torches={ MakeTorch(W(207,6), WY(20,1)), MakeTorch(W(207,6), WY(24,1)), MakeTorch(W(185,6), WY(22,1)), MakeTorch(W(185,6), WY(24,1)), }, traps={ MakeTrap(W(186,6),WY(20,1),true,"d"), MakeTrap(W(187,6),WY(20,1),true,"d"), } } rooms["7,1"]={ gc=gC(), sX=W(212,7), sY=WY(31,1), doors={ MakeDoor(W(210,7),WY(22,1),"left",true,6,1,W(207,6),WY(22,1)), MakeDoor(W(225,7),WY(17,1),"up",true,7,0,W(225,7),WY(14,0)), MakeDoor(W(223,7),WY(33,1),"down",true,7,2,W(223,7),WY(36,2)), MakeDoor(W(212,7),WY(33,1),"down",true,7,2,W(212,7),WY(36,2)), }, torches={ MakeTorch(W(224,7), WY(21,1)), MakeTorch(W(226,7), WY(21,1)), MakeTorch(W(221,7), WY(30,1)), MakeTorch(W(222,7), WY(29,1)), MakeTorch(W(224,7), WY(29,1)), MakeTorch(W(225,7), WY(30,1)), }, traps={ MakeTrap(W(212,7),WY(23,1),true,"d"), MakeTrap(W(223,7),WY(28,1),true,"d"), MakeTrap(W(232,7),WY(23,1),true,"d"), MakeTrap(W(237,7),WY(21,1),true,"d"), } } rooms["0,2"]={ gc=gC(), sX=W(14,0), sY=WY(36,2), doors={ MakeDoor(W(29,0),WY(43,2),"right",true,1,2,W(32,1),WY(43,2)), MakeDoor(W(14,0),WY(34,2),"up",true,0,1,W(14,0),WY(31,1)), }, torches={ MakeTorch(W(8,0), WY(40,2)), MakeTorch(W(11,0), WY(40,2)), MakeTorch(W(25,0), WY(41,2)), MakeTorch(W(27,0), WY(41,2)), }, rocks={ MakeRock(W(19,0), WY(49,2), W(13,0), WY(49,2), "r"), MakeRock(W(23,0), WY(49,2), W(27,0), WY(49,2), "l"), }, traps={ MakeTrap(W(2,0),WY(37,2),true,"d"), MakeTrap(W(5,0),WY(37,2),true,"d"), MakeTrap(W(13,0),WY(36,2),true,"d"), MakeTrap(W(15,0),WY(36,2),true,"d"), MakeTrap(W(26,0),WY(41,2),true,"d"), } } rooms["1,2"]={ gc=gC(), sX=W(37,1), sY=WY(36,2), doors={ MakeDoor(W(37,1),WY(34,2),"up",true,1,1,W(37,1),WY(31,1)), MakeDoor(W(59,1),WY(38,2),"right",true,2,2,W(62,2),WY(38,2)), MakeDoor(W(30,1),WY(43,2),"left",true,0,2,W(27,0),WY(43,2)), MakeDoor(W(56,1),WY(50,2),"down",true,1,3,W(56,1),WY(53,3)), }, torches={ MakeTorch(W(41,1), WY(44,2)), MakeTorch(W(43,1), WY(44,2)), MakeTorch(W(59,1), WY(37,2)), MakeTorch(W(59,1), WY(39,2)), MakeTorch(W(36,1), WY(35,2)), MakeTorch(W(38,1), WY(35,2)), MakeTorch(W(53,1), WY(45,2)), MakeTorch(W(53,1), WY(47,2)), }, traps={ MakeTrap(W(36,1),WY(44,2),true,"d"), MakeTrap(W(38,1),WY(44,2),true,"d"), MakeTrap(W(40,1),WY(44,2),true,"d"), MakeTrap(W(44,1),WY(44,2),true,"d"), MakeTrap(W(46,1),WY(44,2),true,"d"), MakeTrap(W(48,1),WY(44,2),true,"d"), MakeTrap(W(50,1),WY(44,2),true,"d"), } } rooms["2,2"]={ gc=gC(), sX=W(62,2), sY=WY(38,2), doors={ MakeDoor(W(60,2),WY(38,2),"left",true,1,2,W(57,1),WY(38,2)), MakeDoor(W(72,2),WY(34,2),"up",true,2,1,W(72,2),WY(31,1)), MakeDoor(W(77,2),WY(50,2),"down",true,2,3,W(77,2),WY(53,3)), }, torches={ MakeTorch(W(76,2), WY(41,2)), MakeTorch(W(78,2), WY(41,2)), MakeTorch(W(76,2), WY(46,2)), MakeTorch(W(78,2), WY(46,2)), MakeTorch(W(71,2), WY(34,2)), MakeTorch(W(73,2), WY(34,2)), }, traps={ MakeTrap(W(72,2),WY(43,2),true,"r"), MakeTrap(W(82,2),WY(44,2),true,"l"), MakeTrap(W(77,2),WY(41,2),true,"d"), } } rooms["3,2"]={ gc=gC(), sX=W(93,3), sY=WY(48,2), doors={ MakeDoor(W(93,3),WY(50,2),"down",true,3,3,W(93,3),WY(53,3)), MakeDoor(W(119,3),WY(44,2),"right",true,4,2,W(122,4),WY(44,2)), }, torches={ MakeTorch(W(100,3), WY(41,2)), MakeTorch(W(107,3), WY(41,2)), MakeTorch(W(114,3), WY(41,2)), }, traps={ MakeTrap(W(93,3),WY(37,2),true,"d"), MakeTrap(W(99,3),WY(41,2),true,"d"), MakeTrap(W(101,3),WY(41,2),true,"d"), MakeTrap(W(106,3),WY(41,2),true,"d"), MakeTrap(W(108,3),WY(41,2),true,"d"), MakeTrap(W(113,3),WY(41,2),true,"d"), MakeTrap(W(115,3),WY(41,2),true,"d"), } } rooms["4,2"]={ gc=gC(), sX=W(122,4), sY=WY(44,2), doors={ MakeDoor(W(120,4),WY(44,2),"left",true,3,2,W(117,3),WY(44,2)), MakeDoor(W(134,4),WY(50,2),"down",true,4,3,W(134,4),WY(53,3)), MakeDoor(W(134,4),WY(34,2),"up",true,4,1,W(134,4),WY(31,1)), }, torches={ MakeTorch(W(125,4), WY(43,2)), MakeTorch(W(129,4), WY(43,2)), MakeTorch(W(133,4), WY(43,2)), MakeTorch(W(135,4), WY(43,2)), MakeTorch(W(140,4), WY(43,2)), MakeTorch(W(145,4), WY(43,2)), }, rocks={ MakeRock(W(130,4), WY(37,2), W(123,4), WY(37,2), "r"), MakeRock(W(137,4), WY(41,2), W(146,4), WY(41,2), "l"), MakeRock(W(127,4), WY(46,2), W(123,4), WY(46,2), "r"), MakeRock(W(131,4), WY(48,2), W(146,4), WY(48,2), "l"), }, traps={ MakeTrap(W(146,4),WY(44,2),true,"l"), } } rooms["5,2"]={ gc=gC(), sX=W(152,5), sY=WY(48,2), doors={ MakeDoor(W(151,5),WY(50,2),"down",true,5,3,W(151,5),WY(53,3)), MakeDoor(W(179,5),WY(36,2),"right",true,6,2,W(182,6),WY(36,2)), MakeDoor(W(179,5),WY(41,2),"right",true,6,2,W(182,6),WY(41,2)), }, torches={ MakeTorch(W(169,5), WY(36,2)), MakeTorch(W(169,5), WY(41,2)), }, traps={ MakeTrap(W(161,5),WY(38,2),true,"l"), MakeTrap(W(161,5),WY(39,2),true,"l"), } } rooms["6,2"]={ gc=gC(), sX=W(182,6), sY=WY(41,2), doors={ MakeDoor(W(180,6),WY(36,2),"left",true,5,2,W(177,5),WY(36,2)), MakeDoor(W(180,6),WY(41,2),"left",true,5,2,W(177,5),WY(41,2)), MakeDoor(W(191,6),WY(34,2),"up",true,6,1,W(191,6),WY(31,1)), }, torches={ MakeTorch(W(182,6), WY(35,2)), MakeTorch(W(182,6), WY(40,2)), MakeTorch(W(189,6), WY(40,2)), }, traps={ MakeTrap(W(184,6),WY(36,2),true,"l"), } } rooms["7,2"]={ gc=math.random(3,10), sX=W(213,7), sY=WY(36,2), doors={ MakeDoor(W(212,7),WY(34,2),"up",true,7,1,W(212,7),WY(31,1)), MakeDoor(W(223,7),WY(34,2),"up",true,7,1,W(223,7),WY(31,1)), } } rooms["0,3"]={ gc=gC(), sX=W(27,0), sY=WY(59,3), doors={ MakeDoor(W(29,0),WY(59,3),"right",true,1,3,W(32,1),WY(59,3)), MakeDoor(W(13,0),WY(67,3),"down",true,0,4,W(13,0),WY(70,4)), }, torches={ MakeTorch(W(13,0), WY(55,3)), MakeTorch(W(12,0), WY(60,3)), MakeTorch(W(14,0), WY(60,3)), }, traps={ MakeTrap(W(10,0),WY(60,3),true,"d"), MakeTrap(W(16,0),WY(60,3),true,"d"), } } rooms["1,3"]={ gc=gC(), sX=W(56,1), sY=WY(53,3), doors={ MakeDoor(W(30,1),WY(59,3),"left",true,0,3,W(27,0),WY(59,3)), MakeDoor(W(56,1),WY(51,3),"up",true,1,2,W(56,1),WY(48,2)), }, torches={ MakeTorch(W(55,1), WY(58,3)), }, traps={ MakeTrap(W(57,1),WY(59,3),true,"l"), } } rooms["2,3"]={ gc=gC(), sX=W(64,2), sY=WY(65,3), doors={ MakeDoor(W(64,2),WY(67,3),"down",true,2,4,W(64,2),WY(70,4)), MakeDoor(W(86,2),WY(67,3),"down",true,2,4,W(86,2),WY(70,4)), MakeDoor(W(89,2),WY(59,3),"right",true,3,3,W(92,3),WY(59,3)), MakeDoor(W(77,2),WY(51,3),"up",true,2,2,W(77,2),WY(48,2)), }, torches={ MakeTorch(W(74,2), WY(56,3)), MakeTorch(W(76,2), WY(54,3)), MakeTorch(W(78,2), WY(54,3)), } } rooms["3,3"]={ gc=gC(), sX=W(92,3), sY=WY(59,3), doors = { MakeDoor(W(90,3),WY(59,3),"left",true,2,3,W(87,2),WY(59,3)), MakeDoor(W(93,3),WY(51,3),"up",true,3,2,W(93,3),WY(48,2)), MakeDoor(W(104,3),WY(67,3),"down",true,3,4,W(104,3),WY(70,4)), MakeDoor(W(119,3),WY(59,3),"right",true,4,3,W(122,4),WY(59,3)), }, torches = { MakeTorch(W(103,3), WY(57,3)), MakeTorch(W(105,3), WY(57,3)), MakeTorch(W(111,3), WY(57,3)), MakeTorch(W(113,3), WY(57,3)), }, traps = { MakeTrap(W(104,3),WY(57,3),true,"d"), MakeTrap(W(112,3),WY(57,3),true,"d"), } } rooms["4,3"]={ gc=gC(), sX=W(92,3), sY=WY(59,3), doors = { MakeDoor(W(120,4),WY(59,3),"left",true,3,3,W(117,3),WY(59,3)), MakeDoor(W(134,4),WY(51,3),"up",true,4,2,W(134,4),WY(48,2)), MakeDoor(W(146,4),WY(67,3),"down",true,4,4,W(146,4),WY(70,4)), }, torches={ MakeTorch(W(133,4), WY(58,3)), MakeTorch(W(135,4), WY(58,3)), MakeTorch(W(134,4), WY(60,3)), } } rooms["5,3"]={ gc=gC(), sX=W(178,5), sY=WY(53,3), doors = { MakeDoor(W(151,5),WY(51,3),"up",true,5,2,W(151,5),WY(47,2)), MakeDoor(W(179,5),WY(53,3),"right",true,6,3,W(182,6),WY(53,3)), }, traps = { MakeTrap(W(150,5),WY(54,3),true,"r"), MakeTrap(W(156,5),WY(54,3),true,"d"), MakeTrap(W(159,5),WY(58,3),true,"r"), MakeTrap(W(159,5),WY(63,3),true,"r"), MakeTrap(W(165,5),WY(55,3),true,"d"), MakeTrap(W(172,5),WY(59,3),true,"d"), MakeTrap(W(173,5),WY(56,3),true,"l"), MakeTrap(W(172,5),WY(54,3),true,"d"), MakeTrap(W(174,5),WY(54,3),true,"d"), MakeTrap(W(163,5),WY(51,3),true,"d"), MakeTrap(W(165,5),WY(64,3),true,"l"), MakeTrap(W(169,5),WY(52,3),true,"d"), MakeTrap(W(176,5),WY(53,3),true,"d"), } } rooms["6,3"]={ gc=gC(), sX=W(206,6), sY=WY(65,3), doors={ MakeDoor(W(180,6),WY(53,3),"left",true,5,3,W(177,5),WY(53,3)), MakeDoor(W(190,6),WY(67,3),"down",true,6,4,W(190,6),WY(70,4)), MakeDoor(W(197,6),WY(67,3),"down",true,6,4,W(197,6),WY(70,4)), MakeDoor(W(206,6),WY(67,3),"down",true,6,4,W(206,6),WY(70,4)), }, rocks={ MakeRock(W(197,6), WY(62,3), W(189,6), WY(62,3), "r"), MakeRock(W(198,6), WY(62,3), W(207,6), WY(62,3), "l"), }, torches={ MakeTorch(W(193,6), WY(61,3)), MakeTorch(W(195,6), WY(61,3)), }, traps={ MakeTrap(W(190,6),WY(60,3),true,"r"), MakeTrap(W(191,6),WY(59,3),true,"r"), MakeTrap(W(192,6),WY(58,3),true,"r"), MakeTrap(W(193,6),WY(57,3),true,"r"), MakeTrap(W(194,6),WY(56,3),true,"d"), MakeTrap(W(195,6),WY(56,3),true,"d"), MakeTrap(W(196,6),WY(56,3),true,"d"), MakeTrap(W(197,6),WY(56,3),true,"d"), MakeTrap(W(197,6),WY(61,3),true,"d"), MakeTrap(W(198,6),WY(56,3),true,"d"), MakeTrap(W(199,6),WY(56,3),true,"d"), MakeTrap(W(200,6),WY(56,3),true,"d"), MakeTrap(W(204,6),WY(57,3),true,"l"), MakeTrap(W(205,6),WY(58,3),true,"l"), MakeTrap(W(206,6),WY(59,3),true,"l"), MakeTrap(W(207,6),WY(60,3),true,"l"), MakeTrap(W(201,6),WY(52,3),true,"d"), } } rooms["7,3"]={ gc=gC(), sX=W(218,7), sY=WY(65,3), doors={ MakeDoor(W(218,7),WY(67,3),"down",true,7,4,W(218,7),WY(70,4)), }, torches={ MakeTorch(W(217,7), WY(66,3)), MakeTorch(W(219,7), WY(66,3)), } } rooms["0,4"]={ gc=gC(), sX=W(13,0), sY=WY(70,4), doors={ MakeDoor(W(13,0),WY(68,4),"up",true,0,3,W(13,0),WY(65,3)), }, torches={ MakeTorch(W(12,0),WY(71,4)), MakeTorch(W(14,0),WY(71,4)), }, traps={ MakeTrap(W(2,0),WY(79,4),true,"r"), MakeTrap(W(2,0),WY(75,4),true,"r"), MakeTrap(W(26,0),WY(75,4),true,"l"), MakeTrap(W(26,0),WY(79,4),true,"l"), MakeTrap(W(5,0),WY(71,4),true,"d"), MakeTrap(W(8,0),WY(71,4),true,"d"), MakeTrap(W(11,0),WY(71,4),true,"d"), MakeTrap(W(15,0),WY(71,4),true,"d"), MakeTrap(W(18,0),WY(71,4),true,"d"), MakeTrap(W(21,0),WY(71,4),true,"d"), } } rooms["1,4"]={ gc=gC(), sX=W(57,1), sY=WY(71,4), doors={ MakeDoor(W(59,1),WY(71,4),"right",true,2,4,W(62,2),WY(71,4)), MakeDoor(W(59,1),WY(82,4),"right",true,2,4,W(62,2),WY(82,4)), MakeDoor(W(46,1),WY(84,4),"down",true,1,5,W(46,1),WY(87,5)), }, torches={ MakeTorch(W(32,1),WY(83,4)), MakeTorch(W(45,1),WY(83,4)), MakeTorch(W(47,1),WY(83,4)), }, traps={ MakeTrap(W(32,1),WY(70,4),true,"d"), MakeTrap(W(31,1),WY(71,4),true,"r"), MakeTrap(W(31,1),WY(82,4),true,"r"), } } rooms["2,4"]={ gc=gC(), sX=W(86,2), sY=WY(70,4), doors={ MakeDoor(W(60,2),WY(71,4),"left",true,1,4,W(57,1),WY(71,4)), MakeDoor(W(60,2),WY(82,4),"left",true,1,4,W(57,1),WY(82,4)), MakeDoor(W(63,2),WY(84,4),"down",true,2,5,W(63,2),WY(87,5)), MakeDoor(W(64,2),WY(68,4),"up",true,2,3,W(64,2),WY(65,3)), MakeDoor(W(86,2),WY(68,4),"up",true,2,3,W(86,2),WY(65,3)), MakeDoor(W(89,2),WY(79,4),"right",true,3,4,W(92,3),WY(79,4)), MakeDoor(W(89,2),WY(81,4),"right",true,3,4,W(92,3),WY(81,4)), MakeDoor(W(87,2),WY(84,4),"down",true,2,5,W(87,2),WY(87,5)), }, torches={ MakeTorch(W(62,2),WY(83,4)), MakeTorch(W(88,2),WY(82,4)), MakeTorch(W(87,2),WY(78,4)), MakeTorch(W(63,2),WY(70,4)), } } rooms["3,4"]={ gc=gC(), sX=W(91,3), sY=WY(79,4), doors={ MakeDoor(W(90,3),WY(79,4),"left",true,2,4,W(87,2),WY(79,4)), MakeDoor(W(90,3),WY(81,4),"left",true,2,4,W(87,2),WY(81,4)), MakeDoor(W(104,3),WY(68,4),"up",true,3,3,W(104,3),WY(65,3)), MakeDoor(W(119,3),WY(74,4),"right",true,4,4,W(122,4),WY(74,4)), MakeDoor(W(118,3),WY(84,4),"down",true,3,5,W(118,3),WY(87,5)), }, torches={ MakeTorch(W(104,3),WY(82,4)), }, traps={ MakeTrap(W(94,3),WY(81,4),true,"l"), MakeTrap(W(113,3),WY(78,4),true,"r"), MakeTrap(W(119,3),WY(77,4),true,"l"), } } rooms["4,4"]={ gc=gC(), sX=W(122,4), sY=WY(74,4), doors={ MakeDoor(W(120,4),WY(74,4),"left",true,3,4,W(117,3),WY(74,4)), MakeDoor(W(146,4),WY(68,4),"up",true,4,3,W(146,4),WY(65,3)), MakeDoor(W(149,4),WY(72,4),"right",true,5,4,W(152,5),WY(72,4)), MakeDoor(W(149,4),WY(83,4),"right",true,5,4,W(152,5),WY(83,4)), }, rocks={ MakeRock(W(130,4),WY(70,4),W(121,4),WY(70,4), "r"), }, torches={ MakeTorch(W(132,4),WY(71,4)), MakeTorch(W(134,4),WY(71,4)), MakeTorch(W(145,4),WY(73,4)), MakeTorch(W(148,4),WY(73,4)), }, traps={ MakeTrap(W(133,4),WY(69,4),true,"d"), MakeTrap(W(146,4),WY(71,4),true,"d"), MakeTrap(W(147,4),WY(71,4),true,"d"), MakeTrap(W(121,4),WY(72,4),true,"r"), } } rooms["5,4"]={ gc=gC(), sX=W(152,5), sY=WY(72,4), doors={ MakeDoor(W(150,5),WY(72,4),"left",true,4,4,W(147,4),WY(72,4)), MakeDoor(W(150,5),WY(83,4),"left",true,4,4,W(147,4),WY(83,4)), MakeDoor(W(172,5),WY(84,4),"down",true,5,5,W(172,5),WY(87,5)), }, torches={ MakeTorch(W(161,5),WY(73,4)), MakeTorch(W(163,5),WY(73,4)), MakeTorch(W(168,5),WY(73,4)), MakeTorch(W(171,5),WY(82,4)), MakeTorch(W(173,5),WY(82,4)), MakeTorch(W(170,5),WY(73,4)), }, traps={ MakeTrap(W(160,5),WY(73,4),true,"d"), MakeTrap(W(162,5),WY(73,4),true,"d"), MakeTrap(W(164,5),WY(73,4),true,"d"), MakeTrap(W(167,5),WY(73,4),true,"d"), MakeTrap(W(169,5),WY(73,4),true,"d"), MakeTrap(W(171,5),WY(73,4),true,"d"), } } rooms["6,4"]={ gc=gC(), sX=W(203,6), sY=WY(82,4), doors={ MakeDoor(W(188,6),WY(84,4),"down",true,6,5,W(188,6),WY(87,5)), MakeDoor(W(192,6),WY(84,4),"down",true,6,5,W(192,6),WY(87,5)), MakeDoor(W(195,6),WY(84,4),"down",true,6,5,W(195,6),WY(87,5)), MakeDoor(W(199,6),WY(84,4),"down",true,6,5,W(199,6),WY(87,5)), MakeDoor(W(203,6),WY(84,4),"down",true,6,5,W(203,6),WY(87,5)), MakeDoor(W(208,6),WY(84,4),"down",true,6,5,W(208,6),WY(87,5)), MakeDoor(W(190,6),WY(68,4),"up",true,6,3,W(190,6),WY(65,3)), MakeDoor(W(197,6),WY(68,4),"up",true,6,3,W(197,6),WY(65,3)), MakeDoor(W(206,6),WY(68,4),"up",true,6,3,W(206,6),WY(65,3)), }, torches={ MakeTorch(W(190,6),WY(82,4)), MakeTorch(W(206,6),WY(82,4)), MakeTorch(W(196,6),WY(69,4)), MakeTorch(W(198,6),WY(69,4)), }, traps={ MakeTrap(W(188,6),WY(80,4),true,"d"), MakeTrap(W(192,6),WY(80,4),true,"d"), MakeTrap(W(195,6),WY(80,4),true,"d"), MakeTrap(W(199,6),WY(80,4),true,"d"), MakeTrap(W(208,6),WY(80,4),true,"d"), } } rooms["7,4"]={ gc=gC(), sX=W(235,7), sY=WY(82,4), doors={ MakeDoor(W(213,7),WY(84,4),"down",true,7,5,W(213,7),WY(87,5)), MakeDoor(W(235,7),WY(84,4),"down",true,7,5,W(235,7),WY(87,5)), MakeDoor(W(218,7),WY(68,4),"up",true,7,3,W(218,7),WY(65,3)), }, torches={ MakeTorch(W(233,7),WY(74,4)), MakeTorch(W(236,7),WY(74,4)), }, traps={ MakeTrap(W(8,8),WY(8,8),true,"d"), } } rooms["0,5"]={ gc=gC(), sX=W(14,0), sY=WY(100,5), doors={ MakeDoor(W(14,0),WY(101,5),"down",true,0,6,W(14,0),WY(104,6)), }, rocks={ MakeRock(W(19,0),WY(86,5),W(11,0),WY(86,5), "r") }, torches={ MakeTorch(W(3,0),WY(88,5)), MakeTorch(W(3,0),WY(90,5)), }, traps={ MakeTrap(W(28,0),WY(85,5),true,"d"), MakeTrap(W(25,0),WY(89,5),true,"d"), MakeTrap(W(21,0),WY(90,5),true,"r"), MakeTrap(W(23,0),WY(91,5),true,"d"), MakeTrap(W(27,0),WY(94,5),true,"d"), MakeTrap(W(23,0),WY(100,5),true,"r"), MakeTrap(W(23,0),WY(99,5),true,"r"), MakeTrap(W(23,0),WY(98,5),true,"r"), MakeTrap(W(22,0),WY(100,5),true,"l"), MakeTrap(W(17,0),WY(95,5),true,"d"), MakeTrap(W(22,0),WY(95,5),true,"l"), MakeTrap(W(16,0),WY(93,5),true,"d"), MakeTrap(W(19,0),WY(92,5),true,"r"), MakeTrap(W(15,0),WY(89,5),true,"r"), MakeTrap(W(12,0),WY(85,5),true,"d"), MakeTrap(W(9,0),WY(85,5),true,"d"), MakeTrap(W(2,0),WY(85,5),true,"d"), MakeTrap(W(4,0),WY(87,5),true,"d"), MakeTrap(W(6,0),WY(87,5),true,"d"), MakeTrap(W(3,0),WY(89,5),true,"r"), MakeTrap(W(2,0),WY(85,5),true,"d"), MakeTrap(W(1,0),WY(92,5),true,"r"), MakeTrap(W(1,0),WY(94,5),true,"r"), MakeTrap(W(6,0),WY(93,5),true,"d"), MakeTrap(W(1,0),WY(100,5),true,"r"), MakeTrap(W(15,0),WY(97,5),true,"l"), } } rooms["1,5"]={ gc=gC(), sX=W(46,1), sY=WY(87,5), doors={ MakeDoor(W(46,1),WY(85,5),"up",true,1,4,W(46,1),WY(82,4)), MakeDoor(W(59,1),WY(88,5),"right",true,2,5,W(62,2),WY(88,5)), }, torches={ MakeTorch(W(45,1),WY(87,5)), MakeTorch(W(47,1),WY(87,5)), MakeTorch(W(45,1),WY(92,5)), MakeTorch(W(47,1),WY(92,5)), MakeTorch(W(45,1),WY(95,5)), MakeTorch(W(47,1),WY(95,5)), }, traps={ MakeTrap(W(34,1),WY(88,5),true,"r"), MakeTrap(W(34,1),WY(90,5),true,"r"), MakeTrap(W(53,1),WY(89,5),true,"l"), MakeTrap(W(53,1),WY(91,5),true,"l"), MakeTrap(W(39,1),WY(96,5),true,"r"), MakeTrap(W(39,1),WY(98,5),true,"r"), MakeTrap(W(51,1),WY(97,5),true,"l"), MakeTrap(W(51,1),WY(99,5),true,"l"), } } rooms["2,5"]={ gc=gC(), sX=W(62,2), sY=WY(88,5), doors={ MakeDoor(W(60,2),WY(88,5),"left",true,1,5,W(57,1),WY(88,5)), MakeDoor(W(63,2),WY(85,5),"up",true,2,4,W(63,2),WY(82,4)), MakeDoor(W(87,2),WY(85,5),"up",true,2,4,W(87,2),WY(82,4)), MakeDoor(W(89,2),WY(88,5),"right",true,3,5,W(92,3),WY(88,5)), }, torches={ MakeTorch(W(65,2),WY(86,5)), MakeTorch(W(69,2),WY(86,5)), MakeTorch(W(73,2),WY(86,5)), MakeTorch(W(77,2),WY(86,5)), MakeTorch(W(81,2),WY(86,5)), MakeTorch(W(85,2),WY(86,5)), }, } rooms["3,5"]={ gc=gC(), sX=W(92,3), sY=WY(88,5), doors={ MakeDoor(W(90,3),WY(88,5),"left",true,2,5,W(87,2),WY(88,5)), MakeDoor(W(118,3),WY(85,5),"up",true,3,4,W(118,3),WY(82,4)), MakeDoor(W(119,3),WY(94,5),"right",true,4,5,W(122,4),WY(94,5)), }, rocks={ MakeRock(W(102,3),WY(98,5),W(119,3),WY(98,5),"l"), MakeRock(W(109,3),WY(99,5),W(93,3),WY(99,5),"r"), }, torches={ MakeTorch(W(99,3),WY(92,5)), MakeTorch(W(102,3),WY(92,5)), MakeTorch(W(99,3),WY(93,5)), MakeTorch(W(102,3),WY(93,5)), }, traps={ MakeTrap(W(100,3),WY(89,5),true,"d"), MakeTrap(W(101,3),WY(89,5),true,"d"), MakeTrap(W(113,3),WY(93,5),true,"d"), MakeTrap(W(94,3),WY(85,5),true,"d"), MakeTrap(W(106,3),WY(85,5),true,"d"), } } rooms["4,5"]={ gc=gC(), sX=W(122,4), sY=WY(94,5), doors={ MakeDoor(W(120,4),WY(94,5),"left",true,3,5,W(117,3),WY(94,5)), MakeDoor(W(125,4),WY(101,5),"down",true,4,6,W(125,4),WY(104,6)), }, torches={ MakeTorch(W(131,4),WY(94,5)), MakeTorch(W(133,4),WY(94,5)), }, traps={ MakeTrap(W(124,4),WY(85,5),true,"d"), MakeTrap(W(126,4),WY(85,5),true,"d"), MakeTrap(W(132,4),WY(91,5),true,"d"), MakeTrap(W(137,4),WY(94,5),true,"d"), MakeTrap(W(140,4),WY(99,5),true,"l"), MakeTrap(W(142,4),WY(90,5),true,"d"), MakeTrap(W(146,4),WY(90,5),true,"d"), MakeTrap(W(144,4),WY(85,5),true,"d"), MakeTrap(W(145,4),WY(85,5),true,"d"), } } rooms["5,5"]={ gc=gC(), sX=W(172,5), sY=WY(87,5), doors={ MakeDoor(W(172,5),WY(85,5),"up",true,5,4,W(172,5),WY(82,4)), MakeDoor(W(179,5),WY(94,5),"right",true,6,5,W(182,6),WY(94,5)), MakeDoor(W(172,5),WY(101,5),"down",true,5,6,W(172,5),WY(104,6)), }, torches={ MakeTorch(W(171,5),WY(90,5)), MakeTorch(W(173,5),WY(90,5)), MakeTorch(W(178,5),WY(93,5)), MakeTorch(W(178,5),WY(95,5)), MakeTorch(W(171,5),WY(98,5)), MakeTorch(W(173,5),WY(98,5)), }, traps={ MakeTrap(W(167,5),WY(93,5),true,"r"), MakeTrap(W(167,5),WY(95,5),true,"r"), MakeTrap(W(170,5),WY(90,5),true,"d"), MakeTrap(W(174,5),WY(90,5),true,"d"), MakeTrap(W(178,5),WY(91,5),true,"l"), MakeTrap(W(178,5),WY(97,5),true,"l"), } } rooms["6,5"]={ gc=gC(), sX=W(182,6), sY=WY(94,5), doors={ MakeDoor(W(180,6),WY(94,5),"left",true,5,5,W(177,5),WY(94,5)), MakeDoor(W(188,6),WY(85,5),"up",true,6,4,W(188,6),WY(82,4)), MakeDoor(W(192,6),WY(85,5),"up",true,6,4,W(192,6),WY(82,4)), MakeDoor(W(195,6),WY(85,5),"up",true,6,4,W(195,6),WY(82,4)), MakeDoor(W(199,6),WY(85,5),"up",true,6,4,W(199,6),WY(82,4)), MakeDoor(W(203,6),WY(85,5),"up",true,6,4,W(203,6),WY(82,4)), MakeDoor(W(208,6),WY(85,5),"up",true,6,4,W(208,6),WY(82,4)), }, rocks={ MakeRock(W(206,6),WY(88,5),W(209,6),WY(88,5),"l") }, torches={ MakeTorch(W(186,6),WY(91,5)), MakeTorch(W(188,6),WY(91,5)), MakeTorch(W(185,6),WY(93,5)), MakeTorch(W(185,6),WY(95,5)), }, traps={ MakeTrap(W(187,6),WY(87,5),true,"d"), } } rooms["7,5"]={ gc=gC(), sX=W(213,7), sY=WY(99,5), doors={ MakeDoor(W(213,7),WY(85,5),"up",true,7,4,W(213,7),WY(82,4)), MakeDoor(W(213,7),WY(101,5),"down",true,7,6,W(213,7),WY(104,6)), MakeDoor(W(235,7),WY(85,5),"up",true,7,4,W(235,7),WY(82,4)), }, rocks={ MakeRock(W(223,7),WY(93,5),W(237,7),WY(93,5), "l") }, torches={ MakeTorch(W(235,7),WY(99,5)), }, traps={ MakeTrap(W(234,7),WY(88,5),true,"d"), MakeTrap(W(236,7),WY(88,5),true,"d"), } } rooms["0,6"]={ gc=gC(), sX=W(27,0), sY=WY(106,6), doors={ MakeDoor(W(14,0),WY(102,6),"up",true,0,5,W(14,0),WY(99,5)), MakeDoor(W(29,0),WY(106,6),"right",true,1,6,W(32,1),WY(106,6)), MakeDoor(W(4,0),WY(118,6),"down",true,0,7,W(4,0),WY(121,7)), }, traps={ MakeTrap(W(4,0),WY(103,6),true,"d"), MakeTrap(W(6,0),WY(103,6),true,"d"), MakeTrap(W(8,0),WY(103,6),true,"d"), MakeTrap(W(10,0),WY(103,6),true,"d"), MakeTrap(W(12,0),WY(103,6),true,"d"), MakeTrap(W(16,0),WY(103,6),true,"d"), MakeTrap(W(18,0),WY(103,6),true,"d"), MakeTrap(W(20,0),WY(103,6),true,"d"), MakeTrap(W(22,0),WY(103,6),true,"d"), MakeTrap(W(24,0),WY(103,6),true,"d"), MakeTrap(W(2,0),WY(104,6),true,"r"), MakeTrap(W(2,0),WY(106,6),true,"r"), MakeTrap(W(2,0),WY(108,6),true,"r"), MakeTrap(W(2,0),WY(110,6),true,"r"), MakeTrap(W(2,0),WY(112,6),true,"r"), MakeTrap(W(2,0),WY(114,6),true,"r"), MakeTrap(W(26,0),WY(105,6),true,"l"), MakeTrap(W(26,0),WY(107,6),true,"l"), MakeTrap(W(26,0),WY(109,6),true,"l"), MakeTrap(W(26,0),WY(111,6),true,"l"), MakeTrap(W(26,0),WY(113,6),true,"l"), MakeTrap(W(26,0),WY(115,6),true,"l"), } } rooms["1,6"]={ gc=gC(), sX=W(32,1), sY=WY(106,6), doors={ MakeDoor(W(30,1),WY(106,6),"left",true,0,6,W(27,0),WY(106,6)), MakeDoor(W(59,1),WY(115,6),"right",true,2,6,W(62,2),WY(115,6)), MakeDoor(W(34,1),WY(118,6),"down",true,1,7,W(34,1),WY(121,7)), }, traps={ MakeTrap(W(34,1),WY(102,6),true,"d"), MakeTrap(W(46,1),WY(102,6),true,"d"), MakeTrap(W(42,1),WY(108,6),true,"r"), MakeTrap(W(50,1),WY(107,6),true,"l"), } } rooms["2,6"]={ gc=gC(), sX=W(62,2), sY=WY(115,6), doors={ MakeDoor(W(60,2),WY(115,6),"left",true,1,6,W(57,1),WY(115,6)), MakeDoor(W(89,2),WY(106,6),"right",true,3,6,W(92,3),WY(106,6)), }, torches={ MakeTorch(W(63,2),WY(111,6)), MakeTorch(W(65,2),WY(111,6)), MakeTorch(W(73,2),WY(111,6)), MakeTorch(W(75,2),WY(111,6)), MakeTorch(W(81,2),WY(111,6)), MakeTorch(W(83,2),WY(111,6)), }, traps={ MakeTrap(W(61,2),WY(107,6),true,"r"), MakeTrap(W(64,2),WY(104,6),true,"d"), MakeTrap(W(74,2),WY(104,6),true,"d"), MakeTrap(W(82,2),WY(104,6),true,"d"), MakeTrap(W(79,2),WY(106,6),true,"r"), } } rooms["3,6"]={ gc=gC(), sX=W(92,3), sY=WY(106,6), doors={ MakeDoor(W(90,3),WY(106,6),"left",true,2,6,W(87,2),WY(106,6)), MakeDoor(W(119,3),WY(106,6),"right",true,4,6,W(122,4),WY(106,6)), } } rooms["4,6"]={ gc=gC(), sX=W(122,4), sY=WY(106,6), doors={ MakeDoor(W(120,4),WY(106,6),"left",true,3,6,W(117,3),WY(106,6)), MakeDoor(W(125,4),WY(102,6),"up",true,4,5,W(125,4),WY(99,5)), MakeDoor(W(149,4),WY(105,6),"right",true,5,6,W(152,5),WY(105,6)), }, torches={ MakeTorch(W(141,4),WY(113,6)), MakeTorch(W(143,4),WY(113,6)), }, traps={ MakeTrap(W(136,4),WY(108,6),true,"r"), MakeTrap(W(136,4),WY(115,6),true,"r"), MakeTrap(W(148,4),WY(109,6),true,"l"), MakeTrap(W(148,4),WY(114,6),true,"l"), MakeTrap(W(142,4),WY(110,6),true,"d"), } } rooms["5,6"]={ gc=gC(), sX=W(152,5), sY=WY(105,6), doors={ MakeDoor(W(150,5),WY(105,6),"left",true,4,6,W(147,4),WY(105,6)), MakeDoor(W(172,5),WY(102,6),"up",true,5,5,W(172,5),WY(99,5)), MakeDoor(W(179,5),WY(115,6),"right",true,6,6,W(182,6),WY(115,6)), }, } rooms["6,6"]={ gc=gC(), sX=W(182,6), sY=WY(115,6), doors={ MakeDoor(W(180,6),WY(115,6),"left",true,5,6,W(177,5),WY(115,6)), MakeDoor(W(185,6),WY(118,6),"down",true,6,7,W(185,6),WY(121,7)), }, } rooms["7,6"]={ gc=gC(), sX=W(226,7), sY=WY(116,6), doors={ MakeDoor(W(213,7),WY(102,6),"up",true,7,5,W(213,7),WY(99,5)), MakeDoor(W(226,7),WY(118,6),"down",true,7,7,W(226,7),WY(121,7)), }, torches={ MakeTorch(W(224,7),WY(106,6)), MakeTorch(W(230,7),WY(106,6)), MakeTorch(W(224,7),WY(111,6)), MakeTorch(W(230,7),WY(111,6)), }, traps={ MakeTrap(W(237,7),WY(103,6),true,"d"), MakeTrap(W(238,7),WY(103,6),true,"d"), MakeTrap(W(213,7),WY(105,6),true,"d"), MakeTrap(W(225,7),WY(105,6),true,"d"), MakeTrap(W(226,7),WY(105,6),true,"d"), MakeTrap(W(227,7),WY(105,6),true,"d"), MakeTrap(W(228,7),WY(105,6),true,"d"), MakeTrap(W(229,7),WY(105,6),true,"d"), MakeTrap(W(225,7),WY(110,6),true,"d"), MakeTrap(W(226,7),WY(110,6),true,"d"), MakeTrap(W(227,7),WY(110,6),true,"d"), MakeTrap(W(228,7),WY(110,6),true,"d"), MakeTrap(W(229,7),WY(110,6),true,"d"), MakeTrap(W(237,7),WY(111,6),true,"d"), MakeTrap(W(238,7),WY(111,6),true,"d"), } } rooms["0,7"]={ gc=gC(), sX=W(4,0), sY=WY(121,7), doors={ MakeDoor(W(4,0),WY(119,7),"up",true,0,6,W(4,0),WY(116,6)), MakeDoor(W(29,0),WY(134,7),"right",true,1,7,W(32,1),WY(134,7)), }, rocks={ MakeRock(W(15,0),WY(131,7),W(29,0),WY(131,7), "l"), MakeRock(W(8,0),WY(125,7),W(8,0),WY(129,7), "u"), MakeRock(W(11,0),WY(127,7),W(11,0),WY(122,7), "d"), MakeRock(W(14,0),WY(124,7),W(14,0),WY(129,7), "u"), MakeRock(W(17,0),WY(127,7),W(17,0),WY(122,7), "d"), MakeRock(W(20,0),WY(126,7),W(20,0),WY(129,7), "u"), MakeRock(W(23,0),WY(124,7),W(23,0),WY(122,7), "d"), MakeRock(W(26,0),WY(126,7),W(26,0),WY(129,7), "u"), MakeRock(W(14,0),WY(126,7),W(3,0),WY(126,7), "r"), }, } rooms["1,7"]={ gc=gC(), sX=W(32,1), sY=WY(134,7), doors={ MakeDoor(W(34,1),WY(119,7),"up",true,1,6,W(34,1),WY(116,6)), MakeDoor(W(59,1),WY(128,7),"right",true,2,7,W(62,2),WY(128,7)), MakeDoor(W(30,1),WY(134,7),"left",true,0,7,W(27,0),WY(134,7)), MakeDoor(W(59,1),WY(134,7),"right",true,2,7,W(62,2),WY(134,7)) } } rooms["2,7"]={ gc=gC(), sX=W(62,2), sY=WY(134,7), doors={ MakeDoor(W(60,2),WY(128,7),"left",true,1,7,W(57,1),WY(128,7)), MakeDoor(W(60,2),WY(134,7),"left",true,1,7,W(57,1),WY(134,7)), MakeDoor(W(89,2),WY(121,7),"right",true,3,7,W(92,3),WY(121,7)), }, rocks={ MakeRock(W(63,2),WY(130,7),W(63,2),WY(125,7), "d"), MakeRock(W(66,2),WY(131,7),W(66,2),WY(135,7), "u"), MakeRock(W(69,2),WY(127,7),W(69,2),WY(125,7), "d"), }, torches={ MakeTorch(W(84,2),WY(127,7)), MakeTorch(W(87,2),WY(127,7)), }, traps={ MakeTrap(W(74,2),WY(127,7),true,"d"), MakeTrap(W(75,2),WY(127,7),true,"d"), MakeTrap(W(85,2),WY(119,7),true,"d"), MakeTrap(W(86,2),WY(119,7),true,"d"), } } rooms["3,7"]={ gc=gC(), sX=W(92,3), sY=WY(121,7), doors={ MakeDoor(W(90,3),WY(121,7),"left",true,2,7,W(87,2),WY(121,7)), MakeDoor(W(119,3),WY(121,7),"right",true,4,7,W(122,4),WY(121,7)), }, rocks={ MakeRock(W(106,3),WY(130,7),W(94,3),WY(130,7), "r") }, torches={ MakeTorch(W(112,3),WY(125,7)), MakeTorch(W(114,3),WY(125,7)), }, traps={ MakeTrap(W(100,3),WY(120,7),true,"d"), MakeTrap(W(113,3),WY(120,7),true,"d"), } } rooms["4,7"]={ gc=gC(), sX=W(121,4), sY=WY(121,7), doors={ MakeDoor(W(120,4),WY(121,7),"left",true,3,7,W(117,3),WY(121,7)), MakeDoor(W(149,4),WY(121,7),"right",true,5,7,W(152,5),WY(121,7)), }, rocks={ MakeRock(W(124,4),WY(121,7),W(124,4),WY(124,7), "u"), MakeRock(W(128,4),WY(121,7),W(128,4),WY(119,7), "d"), MakeRock(W(132,4),WY(121,7),W(132,4),WY(124,7), "u"), MakeRock(W(136,4),WY(121,7),W(136,4),WY(119,7), "d"), MakeRock(W(140,4),WY(121,7),W(140,4),WY(124,7), "u"), MakeRock(W(144,4),WY(121,7),W(144,4),WY(119,7), "d"), }, torches={ MakeTorch(W(123,4),WY(120,7)), MakeTorch(W(125,4),WY(120,7)), MakeTorch(W(127,4),WY(120,7)), MakeTorch(W(129,4),WY(120,7)), MakeTorch(W(131,4),WY(120,7)), MakeTorch(W(133,4),WY(120,7)), MakeTorch(W(135,4),WY(120,7)), MakeTorch(W(137,4),WY(120,7)), MakeTorch(W(139,4),WY(120,7)), MakeTorch(W(141,4),WY(120,7)), MakeTorch(W(143,4),WY(120,7)), MakeTorch(W(145,4),WY(120,7)), MakeTorch(W(123,4),WY(122,7)), MakeTorch(W(125,4),WY(122,7)), MakeTorch(W(127,4),WY(122,7)), MakeTorch(W(129,4),WY(122,7)), MakeTorch(W(131,4),WY(122,7)), MakeTorch(W(133,4),WY(122,7)), MakeTorch(W(135,4),WY(122,7)), MakeTorch(W(137,4),WY(122,7)), MakeTorch(W(139,4),WY(122,7)), MakeTorch(W(141,4),WY(122,7)), MakeTorch(W(143,4),WY(122,7)), MakeTorch(W(145,4),WY(122,7)), }, traps={ MakeTrap(W(122,4),WY(119,7),true,"d"), MakeTrap(W(126,4),WY(119,7),true,"d"), MakeTrap(W(130,4),WY(119,7),true,"d"), MakeTrap(W(134,4),WY(119,7),true,"d"), MakeTrap(W(138,4),WY(119,7),true,"d"), MakeTrap(W(142,4),WY(119,7),true,"d"), MakeTrap(W(146,4),WY(119,7),true,"d"), } } rooms["5,7"]={ gc=gC(), sX=W(152,5), sY=WY(121,7), doors={ MakeDoor(W(150,5),WY(121,7),"left",true,4,7,W(147,4),WY(121,7)), MakeDoor(W(179,5),WY(133,7),"left",true,6,7,W(182,6),WY(133,7)), }, torches={ MakeTorch(W(153,5),WY(124,7)), MakeTorch(W(176,5),WY(126,7)), MakeTorch(W(153,5),WY(128,7)), MakeTorch(W(176,5),WY(130,7)), MakeTorch(W(153,5),WY(132,7)), } } rooms["6,7"]={ gc=gC(), sX=W(182,6), sY=WY(133,7), doors={ MakeDoor(W(180,6),WY(133,7),"left",true,5,7,W(177,5),WY(133,7)), MakeDoor(W(185,6),WY(119,7),"up",true,6,6,W(185,6),WY(116,6)), MakeDoor(W(209,6),WY(127,7),"right",true,7,7,W(212,7),WY(127,7)), } } rooms["7,7"]={ gc=gC(), sX=W(212,7), sY=WY(127,7), doors={ MakeDoor(W(210,7),WY(127,7),"left",true,6,7,W(207,6),WY(127,7)), MakeDoor(W(226,7),WY(119,7),"up",true,7,6,W(226,7),WY(116,6)), }, traps={ MakeTrap(W(213,7),WY(124,7),true,"r"), MakeTrap(W(213,7),WY(126,7),true,"r"), MakeTrap(W(213,7),WY(129,7),true,"r"), MakeTrap(W(213,7),WY(131,7),true,"r"), MakeTrap(W(214,7),WY(122,7),true,"d"), MakeTrap(W(215,7),WY(122,7),true,"d"), MakeTrap(W(216,7),WY(122,7),true,"d"), MakeTrap(W(217,7),WY(122,7),true,"d"), MakeTrap(W(218,7),WY(122,7),true,"d"), MakeTrap(W(219,7),WY(122,7),true,"d"), MakeTrap(W(220,7),WY(123,7),true,"l"), MakeTrap(W(220,7),WY(125,7),true,"l"), MakeTrap(W(220,7),WY(128,7),true,"l"), MakeTrap(W(220,7),WY(130,7),true,"l"), MakeTrap(W(221,7),WY(121,7),true,"r"), MakeTrap(W(221,7),WY(123,7),true,"r"), MakeTrap(W(231,7),WY(122,7),true,"l"), MakeTrap(W(231,7),WY(124,7),true,"l"), } } loadRoom(room.rx, room.ry) end function anyKey() for i=0,7 do if btnp(i) then return true end end return false end function BlinkText(mes,x,y,col,sp) local visible = (math.floor(time() / sp) % 2) == 0 if visible then print(mes,x,y,col) end end function MakeTrap(x, y, active, dir) return {x = x, y = y, active = active, dir = dir} end function MakeTorch(x, y) return {x = x, y = y, frame = math.random(2, 5)} end function MakeRock(x, y, sx, sy, dir) return { img = rockimg, x = x * 8, y = y * 8, sx = sx * 8, sy = sy * 8, s = math.random(1, 5) * 0.5, t = 0, active = true, dir = dir } end function MakeDoor(x, y, dir, active, rx, ry, sx, sy) return { x = x, y = y, dir = dir, active = active, to = {rx = rx, ry = ry, sx = sx, sy = sy} } end