0,]']>S}Wup8d%qy)6o;]AsVl3""-ffffffffffffffffffffffffffffffffS533S533S533S5"2S533""3333333333"""" "PPPPP"""""""""""""""3333"""""""1"""1"""1"""!"""113333""""383383383"("38333333333""""333333""3333333333""""33Ve3CVe3CVE""VE33VE33Ve33Ve""ff332#3C2#3C2C""2C332C332#332#""""333C3CJ""J33J3333""33333= =- ==<3""""333333333333""""323332333#33""""ffffvWvgvgvwwgwwwwwwvgvgffff33!3"!#!""""333333333333""""ff33f3CD6CDD6DDD3DDDCDDDCDDDCDDD3333DDDDDDDDDDDDDDDDDDDDDDDDDDDD33ffD43fDD4cDDDcDDD3DDD4DDD4DDD4CDDDCDDDCDDDCDDDCDDDCDDDCDDDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD4DDD4DDD4DDD4DDD4DDD4DDD4DDD4CDDDCDDDCDDD3DDD6DDD6CDDf3CDff33DDDDDDDDDDDDDDDDDDDDDDDDDDDD3333DDD4DDD4DDD4DDD3DDDcDD4cD43f33ff""   "  ":::::::: "     36f3f6ff3ff6fff33333:3:c3f:cf3ff:cff3fff"""""""""""""""""""":::""""""""""""""""""""fffffFdffFdf"2#"V6cf"2#"f6cff6cf""""2333223323""2#""2#""2#""2#"2""""333#33##"23#"33#232#3#2#3"2#""""2333223323#"233"2#3#2#232#"3""""333#33##"23#"33#232#3#2#3"2#""""2333223323#"233"2#3#2#232#"3""""333#33##""3#""2#""2#""2##"2#"""""""":::::--""-----"-"fffffVfDfVfDVVf3Vff#fff#fff#fff#fffffFdffFdf"2#"V6cf"2#"f6cff6cfffffDVffDVff3Vff2fff2fff2fff2fff--""--""--""-""-""-"""-"""-"""-""""""""""""-""-""-"""""""2#"32#232#3#233"23#"22332333""""#"2#""2#""2#""2#""3#33##333#""""2#"32#232#3#233"23#"22332333""""3"2#3#2#232#"33#"23#33##333#""""2#"22#""2#""2#""23""22332333""""3"2#3#2#232#"33#"23#33##333#""""3=33333=̪3333=3=3̬-----""""fff&fVfDfVfDVVf3Vff#fff#fff#fff#fffffVfDfVfDVVf3Vff3fff3fff3fff3bfffDVffDVff3Vff2fff2fff2fff2fff--""--""--""-""-"""-"""-"""-"""""""""-""-""-"""""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU . ܭ ܭ ܭ:DԢ0DԢ:DԢ̬#Z2Ze%"VVV""""""""fff&fVfDfVfDVVf3Vff3fff3fff3fff3ffffDVffDVff3Vff3fff3fff3fff3fffbfffDVffDVff3Vff3fff3fff3fff3fffUUUUUUUUUUUUUUUUUUUUffffffff""UUUUUff""/UUUUUUUUUUUUUUUUUUUUffffffff""""UUUUUUUUUUUUUUUUUUUUffffffff""/3333"333"33;33"333"fffDVff3""-""DffV3ffV"-""""-"""eff3efV3ffV3""-""3fff3fVf3fVffff3ff6ff3f6f36333333fff:cff3ff:cf3f:c3:fffDVff3DffV3ffV::::::::eff3efV3ffV33fff3fVf3fVfw:3*33#zzzzwwww36f3f6ff3ff6fff33333:3:c3f:cf3ff:cff3fff "" " "/" """"//"""" "" " "/" ""//"""""" """"" /" """"""" "" " "/" """"""//"" "" " "/" """"//"""" "" " "/" ""//"""""" """"" /" """"""" "" " "/" """"""//"" " """ """""""" " """ """""""" """"""" """"" " """ """""""" " """ """""""" " """ """""""" """"""" """"" " """ """"""""PUPUPU_PU U _ __UU UUUUPUP_UPU _ __ UUU UUUPUUUP_UPU  _ UU U_UPUPUPU_UP U UU ___ UUPUPUPU_PU U _ __UU UUUUPUP_UPU _ __ UUU UUUPUUUP_UPU  _ UU U_UPUPUPU_UP U UU ___ UUPUPUUUPUUUUUUUUPUPUUUPUUUUUUUUPUUUUUUUPUUUUUPUPUUUPUUUUUUUUPUPUUUPUUUUUUUUPUPUUUPUUUUUUUUPUUUUUUUPUUUUUPUPUUUPUUUUUUUU "" " "/" """"//"""" """"" /" """"""" "" " "/""""//""" """"" /""""""PUPUPU_PUU___UUUUUPPUUUUUUU0,U_0_?U0UPPUUUU_U0,U_0U? " """ """""""" """"""" """"" " " """ """"""""" " """"""" """"""PUPUUUPUUUUUUUUUUUUPUPUUUUUUUUUUUUUPUPUUU0UUUUU  "" " """"//"" " " """"/""/" " " """ """""""""/" " " """ """""""""/""offJJJ""""2#322#2#2222""""#32#12#2C1C1C1#1#!0333333C333C333C333C0333!DDDDDD@DD""DDDDD@DDDDDCD3333333"DD43333𙙙𙙙𙙙"""""""""/"/"/""fffffffffofofoffJJڭڮJJJ2#322C422C422=22>22#322#32""""#32##32##32C#32C#32C#32##32#""""!!!!C3333330D43333"3333333"3"0""33  `f `fpf " "" "333""""""""""3""""//ffffVeUVVeuwVeVuVuVuVuwwffffeUVewWVepVEWEWEWewwWe0333333C333"3"333333D4D@D@D@D@DD3334333433343334333333DD@DD@DD0DD033"""" " " " """  ݠ " "" """"""""""/"""VeUVVETVVETVV]VV]VVeUVVeUVffffeUVeeUVeeUVEeUVEeUVEeUVeeUVeffffDD@DDDDD""""233#13303303303333"""""""""""""""""" " " " " " " " """ """ """"""""""ʬ:::̬̪ʪ:ʪ"/"///"/""//"//OO??"""""""""""""" " " " " """""""""" """ """ """""ʣ:ʬ̬̪:::::/"/""/"""/""///"/""//"?!??2?1?? !fg ! vw!"fgvw""fg02vw02@B"@B@B@B fg"@A2vw"PAB! @B !ssst@BssssstPRsst#fg  vw !ƍ# #  ! ! !02!@B@B02@B@B0ARPA2PRfussssss@BvwrstPRrsstssssststrsst02@B!""""""""""""""""""""""`apq VKKKKKKKLMNOOOOOOOOOOOOOOOOOOOO               @@@@@ABCDEFGHIJKLKJKLMNOOOOOOO&&&&&&&&&''(())**++,,--../////                                      !"#$%&'()*+,-./`````abcdefghijklmnooooooooooo            !"#$&(*+,-.//////////// } @ @ @@ @ @ @@ @ @ @@ @ @ @@ 0@`aaaAAaaaaAAaaaaAAaaaaAA0bbb b b b b b b bb b b b b bcbb b b b bbb b b b b             c c cc c c c c c c cc c c  c c cc c c c c c c cc c c C c c c c c c c c c c c c c c c c c c c c c c c c c c c c # e e e ee e e e e e e e e f f f f f f fff f f f f f f f f f f f f f f f f f f ff f f f f f f f f f f f f f f f f f f f f f f f f f f f f g g g g g g g g g g g g gg gg gg f fff f fff f f f fff f fff f f f ff f f f GG GG G GG GG G G G f f f ff f f f f f f f f f f f f f f f f f f ff f f f f f f f f f f f f f ff f f f ff f f f f ff fgggggggggggggggggggggggggggggggggggg               F F F F F F F F F F F F F F F FFF FFF F F F F F F F F F F F F j j jj j j j jj j jj j jj J 0gggggggggggggggggggggggggggggggggggg i i i ii i i i i i i i i i i i i i i i i i i ii i i i i i i i i i i i i i ii i i i ii i i i i ii iii iii i iii iii i iii i i iii i i iii i i iii i i iii         K K K K KK K KK K KKK K KKK K Kk k k K Kk k k K K K kKkK Ke?fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffVfDfFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdf--"""-"""-"""-"""-"""-"""-"""-"""-""f`fFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdf--"""-"""-"""-"""-"""-"""-"""-"""-""V "2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#"--"""-"""-"""-"""-"""-"""-"""-"""-""V`V6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cff "2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#"-""""""""""""""""""""""""""f`f6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cf-""""""""""""""""""""""""""f`f6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cf-"""""f`ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33333333UUUUU3333f`fVfffVfffVfffVfffVfffffffVfffVfffffffVfffffffVfffVfffffffVfffffffffffVfffVff--"""-".33333333UUUUU3333f`fVffVfffVfffVfffVfffffffVfffVfffffffVfffffffVfffVfffffffVfffffffffffVffVff--"""-" 33333333UUUUU3333V`VnVVffVVffVVffVVffffffVVffVVffffffVVffffffVVffVVffffffVVffffffffffVnVVff--"""-" """"""""UUUUU""""V`nVfffVfffVfffVfffffffVfffVfffffffVfffffffVfffVfffffffVfffffffffffnVfff33333333UUUUU3333f`nffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffnffff-""""33333333fffff3333f`ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-""""33333333fffff3333fff#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-""""""""""""""""/""""fff&ffffffffffffffffffffffffffff3333333333333333ffffffffffffffffffffffffffffffffffff3330333333333333333333333fVfDfVfffVfffffffffUUV6ffVffffff#233#2U3#233#2U3fVfffVfffffffVfffffffVfffffffVfffVff--"""-"3303333333333333333333333fVfDfVfffVffffffffVfVffffff33333S3533333S35fVfffVfffffffVfffffffVfffffffVfffVff--"""-"3303333333333333333333333VVf3VVffVVffffffffV,VVffffff33"23S"233"23S"2VVffVVffffffVVffffffVVffffffVVffVVff--"""-"""""""""""""""""""""""""""Vff#VfffVfffffffffUUUVfffffff33333S3333333S33VfffVfffffffVfffffffVfffffffVfffVfff33333332333333333333333333fff#ffffffffffffffU_=nffffffff3#233S333#233S33ffffffffffffffffffffffffffffffffffff-""""3303332333333333333333333fff#fffffffffffffU_?fffffffff33333"2333333"23ffffffffffffffffffffffffffffffffffff-""""330333#333333333333333333fff#fffffffffffffoUUUf6fffffffff3333333333333333ffffffffffffffffffffffffffffffffffff-""""""" """""""""""""""""""""fff&ffffffffffffffUUUfffffffffff3333333333333333ffffffffffffffffffffffffffffffffffff3333333333333333333333333333fVfDfffffVfffffffVUUUUfffffffVff#2U3#233#233#2U3ffffffffZfffffffVfffffffffffVffffff--"""-"3333333333333333333333333333fVfDfffffVfffffffVVUUUfffffffVff3S35333333333S35ffffffffJZ"bfffffVfffffffffffVffffff-3333333333333333333333333333VVf3ffffVVffffffVVVUUUffffffVVff3S"233"233"23S"2ffffffffZBbffffVVffffffffffVVffffff-""""""""""""""""""""""""""""Vff#ffffVfffffffVffUUfffffffVfff3S33333333333S33ffffffffvf"bffffVfffffffffffVfffffff3333333333333333333332333333fff#fffffffffffffffofffffffffff3S333#233#233S33ffffffffvfvfffffffffffffffffffffffff-3333333333333333333332333333fff#fffffffffffffffofffffffffff3"23333333333"23ffffffffvfvfffffffffffffffffffffffff-33333333133333#333333fff#ffffffffffffffffffffffffffff3333333333333333ffffffffffffffffffffffffffffffffffff-""""""""""""""!""""""""""""fff&ffff""""""""""""""""ffffffff3333333333333333ffffffffffffffff""""""""ffffffffffff33:3333""""""1333333333333fVfDfVff2333333#2333333#fVffffff#2U3#233#2U3#233ffffffffffffffff2333333#fVffffffffff-33J:3333""""""1333333333333fVfDfVff223333##223333##fVffffff3S3533333S353333ffffffffffffffff223333##fVffffffffff-33:3333""""""1333333333333VVf3VVff23#"""3#23"""23#VVffffff3S"233"23S"233"2ffffffffffffffff23#""23#VVffffffffff-""b"""""""""""!""""""""""""Vff#Vfff233"""2#2#"""33#Vfffffff3S3333333S333333ffffffffffffffff233""33#Vfffffffffff3c33333""""""1333333333333fff#ffff2#3#""2#2#""232#ffffffff3S333#233S333#23ffffffffffffffff2#3#232#ffffffffffff-3=33331333333333333fff#ffff2#23""2#2#""3#2#ffffffff3"2333333"233333ffffffffffffffff2#233#2#ffffffffffff-""""33>333333333333333333333333fff#ffff2#"3#"2#2#"23"2#ffffffff3333333333333333ffffffffffffffff2#"33"2#ffffffffffff""-""""""""""""""""""""""""fff&ffff2#"23"2#2#"3#"2#ffffffff3333333333333333ffffffffffffffff2#"33"2#ffffffffffffݙfVfDfVff2#""3#2#2#23""2#fVfffVff#233#2U3#233#2U3fffffffffffffVff2#233#2#fVfffffffVff--"""-"""-"""-"ҩ--"""-""-""fVfDfVff2#""232#2#3#""2#fVfffVff33333S3533333S35fffffffffffffVff2#3#232#fVfffffffVff--"""-"""-"""-"ҩ-"-""VVf3VVff2#"""33#233"""2#VVffVVff33"23S"233"23S"2ffffffffffffVVff233""33#VVffffffVVff--"""-"""-"""-"ҩ(""J-"-""Vff#Vfff23"""23#23#"""3#VfffVfff33333S3333333S33ffffffffffffVfff23#""23#VfffffffVfffݩ3333Jfff#ffff223333##223333##ffffffff3#233S333#233S33ffffffffffffffff223333##ffffffffffff-""""""""""ҩ3333J-"""fff#ffff2333333#2333333#ffffffff33333"2333333"23ffffffffffffffff2333333#ffffffffffff-""""""""""ҩ3333-"""fff#ffff""""""""""""""""ffffffff3333333333333333ffffffffffffffff""""""""ffffffffffff-""""""""""ҩ-"""fff&ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff""""""""ffffffffffffݩfVfDfffffVfffffffVfffVfffVfffffffVfffffffffffffffVfffffffffffVff2333333#fVffffffffff--"""-"""-"""-"ҩJ-"-""fVfDfffffVfffffffVfffVfffVfffffffVfffffffffffffffVfffffffffffVff223333##fVffffffffff--"""-"""-"""-"ҩJJ-"-""VVf3ffffVVffffffVVffVVffVVffffffVVffffffffffffffVVffffffffffVVff23"""23#VVffffffffff--"""-"""-"""-"ҩڭJ-"-""Vff#ffffVfffffffVfffVfffVfffffffVfffffffffffffffVfffffffffffVfff2#"""33#VfffffffffffݩڮJfff#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2#""232#ffffffffffff-""""""""""ҩ-"""fff#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2#""3#2#ffffffffffff-""""""""""ҩ-"""""""fff#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2#"23"2#ffffffffffffݙfff&ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2#"3#"2#ffffffffffffffffffffffffffffffffffffffffffffbffffVfDfVfffffffffffffffVfffVfffffffffffffffVfffVffffffffffffffffff2#23""2#fffffffffVfffffffVfffVfffVfffffffVfffVfffVffDVfffVfDfVfffffffffffffffVfffVfffffffffffffffVfffVffffffffffffffffff2#3#""2#fffffffffVfffffffVfffVffVfffffffVfffVfffVffDVffVVf3VVffffffffffffffVVffVVffffffffffffffVVffVVffffffffffffffffff233"""2#ffffffffVVffffffVVffVnVVffffffVVffVVffVVff3VffVff#VfffffffffffffffVfffVfffffffffffffffVfffVfffffffffffffffffff23#"""3#ffffffffVfffffffVfffnVfffffffVfffVfffVfff2ffffff#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff223333##ffffffffffffffffffffnffffffffffffffffffff2ffffff#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2333333#ffffffffffffffffffffffffffffffffffffffffffff2ffffff#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff""""""""ffffffffffffffffffffffffffffffffffffffffffff2ffffff&ffffffffffffffffffff""""""""ffffffff33333333ffffffffffffffff""""""""fffffffffwbfffffffffffffffffffffffffffffffffbffffVfDfVfffVfffVfffffffVff2333333#fVffffff#2SUU233fVfffffffVffffff2333333#fVfffffffVbffVfffffffffffffffVfffVffffffffffDVfffVfDfVffVfffVfffffffVff223333##fVffffff33UUU533fVfffffffVffffff223333##fVfffffff63ffVfffffffffffffffVfffVffffffffffDVffVVf3VnVVffVVffffffVVff23"""23#VVffffff33U2U5"2VVffffffVVffffff23"""23#VVffffffVcVVffffffffffffffVVffVVffffffffff3VffVff#nVfffVfffffffVfff2#"""33#Vfffffff3#"3S533VfffffffVfffffff2#"""33#Vfffffff&33#VfffffffffffffffVfffVfffffffffff2ffffff#nffffffffffffffff2#""232#ffffffff32S%23ffffffffffffffff2#""232#fffffffff33cffffffffffffffffffffffffffffffff2ffffff#ffffffffffffffffffff2#""3#2#ffffffff3""2S533ffffffffffffffff2#""3#2#fffffffff63fffffffffffffffffffffffffffffffff2ffffff#ffffffffffffffffffff2#"23"2#ffffffff3#2S533ffffffffffffffff2#"23"2#ffffffffffffffffffffffffffffffffffffffffff2ffffff&ffffffffffffffffffff2#"3#"2#ffffffff3""2S533ffffffffffffffff2#"3#"2#ffffffffffffffffffffffffffffffffffffffffffffbffffVfDfVfffVfffVfffVfffVff2#23""2#ffffffff#""2S533fVfffVfffVfffVff2#23""2#fVfffffffVfffVfffffffffffVffffffZfffVffffffDVfffVfDfVfffVfffVfffVfffVff2#3#""2#ffffffff3#"3S533fVfffVfffVffVff2#3#""2#fVfffffffVfffVfffffffffffVffffffJZ"bfVffffffDVffVVf3VVffVVffVVffVVffVVff233"""2#ffffffff33"2S5"2VVffVVffVnVVff233"""2#VVffffffVVffVVffffffffffVVffffffZBbVVffffff3VffVff#VfffVfffVfffVfffVfff23#"""3#ffffffff3333S533VfffVfffnVfff23#"""3#VfffffffVfffVfffffffffffVfffffffvf"bVfffffff2ffffff#ffffffffffffffffffff223333##ffffffff3#23""33ffffffffnffff223333##ffffffffffffffffffffffffffffffffvfvfffffffff2ffffff#ffffffffffffffffffff2333333#ffffffff33333333ffffffffffffffff2333333#ffffffffffffffffffffffffffffffffvfvfffffffff2ffffff#ffffffffffffffffffff""""""""ffffffff33333333ffffffffffffffff""""""""ffffffffffffffffffffffffffffffffffffffffffff2ffffff&ffff33333333ffffffff""""""""ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffVfDfVff#233#233fffffVff2333333#fffffffffffffVfffVfffffffVfffVfffVfffffffVfffffffffffffffffffVfffffffVfffVfffffffVffDVfffVfDfVff33333333fffffVff223333##fffffffffffffVfffVfffffffVfffVfffVfffffffVfffffffffffffffffffVfffffffVfffVfffffffVffDVffVVf3VVff33"233"2ffffVVff23#""23#ffffffffffffVVffVVffffffVVffVVffVVffffffVVffffffffffffffffffVVffffffVVffVVffffffVVff3VffVff#Vfff33333333ffffVfff233""33#ffffffffffffVfffVfffffffVfffVfffVfffffffVfffffffffffffffffffVfffffffVfffVfffffffVfff2ffffff#ffff3#233#23ffffffff2#3#232#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2ffffff#ffff33333333ffffffff2#233#2#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2ffffff#ffff33333333ffffffff2#"33"2#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2ffffff&ffff33333333ffffffff2#"33"2#ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffVfDfVff#233#2U3fVfffVff2#233#2#fVfffffffVfffVffffffffffffffffffffffZfffffffVfffVfffffffVfffVfffffffVfffffffffffVffDVfffVfDfVff33333S35fVfffVff2#3#232#fVfffffffVfffVffffffffffffffffffffffJZ"bfffffVfffVfffffffVfffVfffffffVfffffffffffVffDVffVVf3VVff33"23S"2VVffVVff233""33#VVffffffVVffVVffffffffffffffffffffffZBbffffVVffVVffffffVVffVVffffffVVffffffffffVVff3VffVff#Vfff33333S33VfffVfff23#""23#VfffffffVfffVfffffffffffffffffffffffvf"bffffVfffVfffffffVfffVfffffffVfffffffffffVfff2ffffff#ffff3#233S33ffffffff223333##ffffffffffffffffffffffffffffffffffffvfvfffffffffffffffffffffffffffffffffffffffffffff2ffffff#ffff33333"23ffffffff2333333#ffffffffffffffffffffffffffffffffffffvfvfffffffffffffffffffffffffffffffffffffffffffff2ffffff#ffff33333333ffffffff""""""""ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2ffffff&ffffffffffffffffffff""""""""""""""""""""""""ffffffffffffffffffffffffffffffffffffffff""""""""""""""""ffffffffffffbffffVfDfffffVffffffffffffff2333333#2333333#2333333#fVfffffffffffVfffVfffVfffffffffffVffffff2333333#2333333#fVffffffffffDVfffVfDfffffVffffffffffffff223333##223333##223333##fVfffffffffffVfffVfffVfffffffffffVffffff223333##223333##fVffffffffffDVffVVf3ffffVVffffffffffffff23#"""3#23"""23#23"""23#VVffffffffffVVffVVffVVffffffffffVVffffff23#""23#23#"""3#VVffffffffff3VffVff#ffffVfffffffffffffff233"""2#2#"""33#2#"""33#VfffffffffffVfffVfffVfffffffffffVfffffff233""33#233"""2#Vfffffffffff2ffffff#ffffffffffffffffffff2#3#""2#2#""232#2#""232#ffffffffffffffffffffffffffffffffffffffff2#3#232#2#3#""2#ffffffffffff2ffffff#ffffffffffffffffffff2#23""2#2#""3#2#2#""3#2#ffffffffffffffffffffffffffffffffffffffff2#233#2#2#23""2#ffffffffffff2ffffff#ffffffffffffffffffff2#"3#"2#2#"23"2#2#"23"2#ffffffffffffffffffffffffffffffffffffffff2#"33"2#2#"3#"2#ffffffffffff2ffffff&ffffffffffffffffffff2#"23"2#2#"3#"2#2#"3#"2#ffffffffffffffffffffffffffffffffffffffff2#"33"2#2#"23"2#ffffffffffffbffffVfDfffffVfffVfffffffVff2#""3#2#2#23""2#2#23""2#fffffVfffffffVfffffffVfffVfffVfffVfffVff2#233#2#2#""3#2#fVfffVfffVffDVfffVfDfffffVfffVfffffffVff2#""232#2#3#""2#2#3#""2#fffffVfffffffVfffffffVfffVfffVfffVfffVff2#3#232#2#""232#fVfffVfffVffDVffVVf3ffffVVffVVffffffVVff2#"""33#233"""2#233"""2#ffffVVffffffVVffffffVVffVVffVVffVVffVVff233""33#2#"""33#VVffVVffVVff3VffVff#ffffVfffVfffffffVfff23"""23#23#"""3#23#"""3#ffffVfffffffVfffffffVfffVfffVfffVfffVfff23#""23#23"""23#VfffVfffVfff2ffffff#ffffffffffffffffffff223333##223333##223333##ffffffffffffffffffffffffffffffffffffffff223333##223333##ffffffffffff2ffffff#ffffffffffffffffffff2333333#2333333#2333333#ffffffffffffffffffffffffffffffffffffffff2333333#2333333#ffffffffffff2ffffff#ffffffffffffffffffff""""""""""""""""""""""""ffffffffffffffffffffffffffffffffffffffff""""""""""""""""ffffffffffff2ffffff&ffffffffffffffffffffffffffffffffffffffffffffffffff""""""""ffffffffff3333ffffffffffffffffffffffffffffffffffffffbffffVfDfVffffffffffffVfffffffffffVfffVfffVfffffffffffVff2333333#fVfffVfff3CDD43ffffffffffffffVfffVfffVfffffffVffZffDVfffVfDfVffffffffffffVfffffffffffVfffVfffVfffffffffffVff223333##fVfffVff6CDDDD4cfffffffffffffVfffVfffVfffffffVffJZ"bDVffVVf3VVffffffffffVVffffffffffVVffVVffVVffffffffffVVff23#""23#VVffVVff6DDDDDDcffffffffffffVVffVVffVVffffffVVffZBb3VffVff#VfffffffoffffVfffffffffffVfffVfffVfffffffffffVfff233""33#VfffVfff3DDDDDD3ffffffffffffVfffVfffVfffffffVfffvf"b2ffffff#ffffffffffffffffffffffffffffffffffffffffffffffff2#3#232#ffffffffCDDDDDD4ffffffffffffffffffffffffffffffffvfvf2ffffff#fffffofffffffffffffffffffffffffffffffffffffffff2#233#2#ffffffffCDDDDDD4ffffffffffffffffffffffffffffffffvfvf2ffffff#fffffffffffffffffffffffffffffffffffffffffffffff2#"33"2#ffffffffCDDDDDD4ffffffffffffffffffffffffffffffffffff2ffffff&ffffoffffffffffffffffffffffffffffffffffffffffff2#"33"2#ffffffffCDDDDDD4ffffffffffffffffffffffffffffffffffffbffffVfDfVffffffffffVfffVfffffffVfffffffffffffffVfffVff2#233#2#fVffffffCDDDDDD4fVfffVfffffffffffffffVfffVfffVfffVffDVfffVfDfVffffffffffVfffVfffffffVffffffffffffffVfffVff2#3#232#fVffffffCDDDDDD4fVfffVfffffffffffffffVfffVfffVfffVffDVffVVf3VVfffffffffVVffVVffffffVnffffffffffffVVffVVff233""33#VVffffffCDDDDDD4VVffVVffffffffffffffVVffVVffVVffVVff3VffVff#VffffffffffVfffVfffffffnffffffffffffVfffVfff23#""23#VfffffffCDDDDDD4VfffVfffffffffffffffVfffVfffVfffVfff2ffffff#fffffofffffffffffffffffffnffffffffffffffffffff223333##ffffffffCDDDDDD4ffffffffffffffffffffffffffffffffffff2ffffff#fffffffffffffffffffffffffffffffffffffffffffffffff2333333#ffffffffCDDDDDD4ffffffffffffffffffffffffffffffffffff2ffffff#ffffffffffffffffffffffffffffffffffffffffffffffffffff""""""""ffffffffCDDDDDD4ffffffffffffffffffffffffffffffffffff2ffffff&ffffffffffffffffffffffffffffffffffffffffffffffffffff""""""""fVfDfFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdf--"""-"""-"""-"2#32#32#--"""-"""-"""-"""-"""-"""-"""-"""-"""-"fVfDfFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdffFdf--"""-"""-"""-"2#12#--"""-"""-"""-"""-"""-"""-"""-"""-"""-"VVf3"2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#"--"""-"""-"""-"2#!""2C--"""-"""-"""-"""-"""-"""-"""-"""-"""-"Vff3V6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cfV6cf233331Cfff3"2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#""2#"-""""""""""233331C-""""""""""""""""""""""""""""fff3f6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cf-""""""""""233331#-""""""""""""""""""""""""""""fff3f6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cff6cf-""""""""""21#-""""""""""""""""""""""""""""P-- title: Bean -- author: Alvaro Luis -- desc: b e a n -- script: lua --treco embaixo eh util e inutil lol Tela = { INICIO = { atualiza = atualizaOTitulo, desenha = desenhaOTitulo }, JOGO = { atualiza = atualizaOJogo, desenha = desenhaOJogo }, FINAL = { atualiza = atualizaFinal, desenha = desenhaFinal}} --, --musica = musica, --animacaoParado = animacaoParado } } objetos = {} --Constantes!!! LarguraDaTela = 240 AlturaDaTela = 138 VelocidadeAnimacaoJogador = 0.1 sprChave = 416 sprPorta = 422 chaveSfx = 2 portaSfx = 4 musica = false sprInimigo = 330 morteSfx = 8 INIMIGO = "INIMIGO" sprJogador = 6 sprParado = 320 dancinha = 0 direcao = { cima = 1, baixo = 2, esquerda = 3, direita = 4 } inimigoDelay = 0.5 parado = 0 movendo = 1 JOGADOR = "JOGADOR" sprTitulo = 492 estados = { parado = "Parado", perseguindo = "Perseguindo" } t = 0 MARTELO = "MARTELO" spawnX = 88 --58*8 spawnY = 72 --30*8 bandeira = 0 marteloSwing = 40 tomb = 1 RIP = false coverBeanTime = -50 coverBean = 322 nuvem1 = -50 nuvem2 = -70 nuvem3 = -100 nuvem4 = -200 inimigoNumero = 8 rest = false senta = 1 function temColisaoComMapa(ponto) blocoX = ponto.x / 8 blocoY = ponto.y / 8 blocoId = mget(blocoX, blocoY) if blocoId >= 128 then return true else return false end end function tentaMoverPara(personagem, delta, direcao) local novaPosicao = { x = personagem.x + delta.deltaX, y = personagem.y + delta.deltaY } if verificaColisaoComObjetos(personagem, novaPosicao) then return end local superiorEsquerdo = { x = personagem.x - 5 + delta.deltaX, y = personagem.y - 7 + delta.deltaY } local superiorDireito = { x = personagem.x + 4 + delta.deltaX, y = personagem.y - 7 + delta.deltaY } local inferiorDireito = { x = personagem.x + 4 + delta.deltaX, y = personagem.y + 6 + delta.deltaY } local inferiorEsquerdo = { x = personagem.x - 5 + delta.deltaX, y = personagem.y + 6 + delta.deltaY } if not (temColisaoComMapa(inferiorDireito) or temColisaoComMapa(inferiorEsquerdo) or temColisaoComMapa(superiorEsquerdo) or temColisaoComMapa(superiorDireito)) then personagem.quadroDeAnimacao = personagem.quadroDeAnimacao + VelocidadeAnimacaoJogador if personagem.quadroDeAnimacao >= 3 then personagem.quadroDeAnimacao = 1 end personagem.y = personagem.y + delta.deltaY personagem.x = personagem.x + delta.deltaX personagem.direcao = direcao end end function distancia(inimigo, jogador) local distanciaX = inimigo.x - jogador.x local distanciaY = inimigo.y - jogador.y local distancia = distanciaX * distanciaX + distanciaY * distanciaY return math.sqrt(distancia) end function atualizaInimigo(inimigo) t = t + 1/inimigoNumero if RIP == false then if t >= 0 then inimigo.sprite = 330 if t >= 30 then inimigo.sprite = 332 if t >= 60 then t = 0 end end end if distancia(inimigo, jogador) < 64 then inimigo.estado = estados.perseguindo else inimigo.estado = estados.parado end if inimigo.estado == estados.perseguindo then t = 0 local delta = { deltaX = 0, deltaY = 0 } if jogador.y > inimigo.y then delta.deltaY = 1 - inimigoDelay inimigo.direcao = direcao.baixo elseif jogador.y < inimigo.y then delta.deltaY = -1 + inimigoDelay inimigo.direcao = direcao.cima end tentaMoverPara(inimigo, delta, inimigo.direcao) delta = { deltaX = 0, deltaY = 0 } if jogador.x > inimigo.x then delta.deltaX = 1 - inimigoDelay inimigo.direcao = direcao.direita elseif jogador.x < inimigo.x then delta.deltaX = -1 + inimigoDelay inimigo.direcao = direcao.esquerda end tentaMoverPara(inimigo, delta, inimigo.direcao) local animacaoInimigo = { {290, 298}, {294, 302}, {292, 300}, {288, 296} } local quadros = animacaoInimigo[inimigo.direcao] local quadro = math.floor(inimigo.quadroDeAnimacao) inimigo.sprite = quadros[quadro] end end end function atualizaMartelo() local DadosMartelo = { {x = 2, y = -14, sprite = 430 }, {x = 0, y = 14, sprite = 428 }, {x = -10, y = -2, sprite = 462 }, {x = 10, y = -2, sprite = 461 }, } local Direcao = DadosMartelo[jogador.direcao] if key(63) and jogador.direcao then if marteloSwing <= 35 then jogador.martelo.visivel = true jogador.martelo.sprite = Direcao.sprite jogador.martelo.x = jogador.x + Direcao.x jogador.martelo.y = jogador.y + Direcao.y jogador.martelo.tempo = 15 if marteloSwing == 35 then sfx(12, 30, 30, 2, 15, 4) end end end if jogador.martelo.visivel == true then verificaColisaoComObjetos(jogador.martelo, jogador.martelo) jogador.martelo.tempo = jogador.martelo.tempo - 1 if jogador.martelo.tempo <= 0 then jogador.martelo.visivel = false end end end --camera.x = (jogador.x // 240) * 240 --camera.y = (jogador.y // 136) * 136 function atualizaMartelo2() if RIP == false then if key(63) then marteloSwing = marteloSwing - 1 if key(63) and jogador.direcao then if marteloSwing >= 35 then if jogador.direcao == direcao.esquerda then spr(426,(jogador.x-12)-camera.x,(jogador.y-12)-camera.y,0,1,0,0,2,2) end if jogador.direcao == direcao.direita then spr(459,(jogador.x-4)-camera.x,(jogador.y-12)-camera.y,0,1,0,0,2,2) end if jogador.direcao == direcao.baixo then spr(457,(jogador.x-8)-camera.x,(jogador.y-3)-camera.y,0,1,0,0,2,2) end if jogador.direcao == direcao.cima then spr(457,(jogador.x-8)-camera.x,(jogador.y-17)-camera.y,0,1,0,0,2,2) end end end end end if not key(63) then marteloSwing = 40 end end function atualizaOJogo() AnimacoesJogador = { {258, 266}, {262, 270}, {260, 268}, {256, 264} } DirecaoJogador = { {deltaX = 0, deltaY = -1}, {deltaX = 0, deltaY = 1}, {deltaX = -1, deltaY = 0}, {deltaX = 1, deltaY = 0} } for tecla = 0,3 do if btn(tecla) then if RIP == false then if jogador.martelo.visivel == false then jogador.estado = movendo local direcao = tecla + 1 local quadros = AnimacoesJogador[direcao] local quadro = math.floor(jogador.quadroDeAnimacao) jogador.sprite = quadros[quadro] tentaMoverPara(jogador, DirecaoJogador[direcao], direcao) rest = true senta = 0 if not btn(tecla) then jogador.estado = parado end end end end atualizaMartelo() end verificaColisaoComObjetos(jogador, {x = jogador.x, y = jogador.y}) for indice, objeto in pairs(objetos) do if objeto.tipo == INIMIGO then atualizaInimigo(objeto) end end end function animacaoParado() if btn(0) then sprParado = 320 else if btn(1) then sprParado = 320 else if btn(2) then sprParado = 322 else if btn(3) then sprParado = 320 end end end end if btn(0) or btn(1) or btn(2) or btn(3) then if jogador.estado == movendo then jogador.sprite = sprParado end end camera.x = (jogador.x // 240) * 240 camera.y = (jogador.y // 136) * 136 end function desenhaMapa() local blocoX = camera.x/8 local blocoY = camera.y/8 map (blocoX, -- posicao X no mapa blocoY, -- posicao Y no mapa LarguraDaTela, -- quanto desenhar X AlturaDaTela, -- quanto desenhar Y 0, -- em qual ponto colocar X 0) -- em qual ponto colocar Y end function desenhaJogador() spr(jogador.sprite, jogador.x - 8 - camera.x, jogador.y - 8 - camera.y, jogador.corDeFundo, 1, -- escala 0, -- espelhar 0, -- rotacionar 2, -- blocos direita 2) -- blocos esquerda end function desenhaObjetos() for indice, objeto in pairs(objetos) do if objeto.visivel then spr(objeto.sprite, objeto.x - 8 - camera.x, objeto.y - 8 - camera.y, objeto.corDeFundo, 1, 0, 0, 2, 2) end end end function desenhaExtra() --print("There is a strike ", 160-camera.x, 144-camera.y, 0, false, 1, true) --print("happening at a nearby farm ", 160-camera.x, 152-camera.y, 0, false, 1, true) inventario() end function inventario() spr(480,1,1,2,1,0,0,2,2) if jogador.chaves > 0 then spr(464,5,5,2,1,0,0) end if jogador.chaves2 > 0 then spr(465,5,5,10,1,0,0) end if jogador.chaves3 > 0 then spr(448,5,5,10,1,0,0) end if jogador.tabuas > 0 then spr(449,5,5,10,1,0,0) end end function desenhaOJogo() cls() desenhaMapa() desenhaObjetos() desenhaJogador() desenhaExtra() end function fazColisaoDoJogadorComAChave(indice) jogador.chaves = jogador.chaves + 1 table.remove(objetos, indice) sfx(chaveSfx, 61, 32, 2, 9, 4) return false end function fazColisaoDoJogadorComAChave2(indice) jogador.chaves2 = jogador.chaves2 + 1 table.remove(objetos, indice) sfx(chaveSfx, 61, 32, 2, 9, 4) return false end function fazColisaoDoJogadorComAChave3(indice) jogador.chaves3 = jogador.chaves3 + 1 table.remove(objetos, indice) sfx(chaveSfx, 61, 32, 2, 9, 4) return false end function fazColisaoDoJogadorComATabua(indice) jogador.tabuas = jogador.tabuas + 1 table.remove(objetos, indice) sfx(portaSfx, 25, 32, 2, 15, 5) return false end function fazColisaoDoJogadorComOCheckpoint(indice) bandeira = bandeira + 1 table.remove(objetos, indice) sfx(chaveSfx, 61, 32, 2, 9, 4) return false end function checkpoint() if bandeira == 1 then spawnX = 58 * 8 spawnY = 30 * 8 end end function temColisao(objetoA, objetoB) local esquerdaDeB = objetoB.x - 8 local direitaDeB = objetoB.x + 7 local baixoDeB = objetoB.y + 7 local cimaDeB = objetoB.y - 8 local direitaDeA = objetoA.x + 7 local esquerdaDeA = objetoA.x - 8 local baixoDeA = objetoA.y + 7 local cimaDeA = objetoA.y - 8 if esquerdaDeB > direitaDeA or direitaDeB < esquerdaDeA or baixoDeA < cimaDeB or cimaDeA > baixoDeB then return false end return true end function fazColisaoDoJogadorComAPorta(indice) if jogador.chaves > 0 then jogador.chaves = jogador.chaves - 1 table.remove(objetos, indice) sfx(portaSfx, 25, 32, 2, 15, 4) return false end return true end function fazColisaoDoJogadorComAPorta2(indice) if jogador.chaves2 > 0 then jogador.chaves2 = jogador.chaves2 - 1 table.remove(objetos, indice) sfx(portaSfx, 25, 32, 2, 15, 4) return false end return true end function fazColisaoDoJogadorComAPorta3(indice) if jogador.chaves3 > 0 then jogador.chaves3 = jogador.chaves3 - 1 table.remove(objetos, indice) sfx(portaSfx, 25, 32, 2, 15, 4) return false end return true end function fazColisaoDoJogadorComORio(indice) if jogador.tabuas > 0 then jogador.tabuas = jogador.tabuas - 1 table.remove(objetos, indice) sfx(portaSfx, 25, 32, 2, 15, 4) return false end return true end function fazColisaoDoJogadorComOInimigo(indice) RIP = true rest = false if tomb <= -50 then RIP = false tomb = 1 inicializaAsVariaveis() mudaTela(Tela.JOGO) return true end end function verificaColisaoComObjetos(personagem, novaPosicao) for indice, objeto in pairs(objetos) do if temColisao(novaPosicao, objeto) then local funcaoDeColisao = objeto.colisoes[personagem.tipo] return funcaoDeColisao(indice) end end return false end function desenhaOTitulo() cls(10) spr(490, nuvem1, -10, 0, 3, 0, 0, 2, 2) spr(490, nuvem2, 30, 0, 2, 0, 0, 2, 2) spr(490, nuvem3, 60, 0, 1, 0, 0, 2, 2) spr(505, nuvem4, 75, 0, 1, 0, 0, 1, 1) spr(sprTitulo, 65, 10, 0, 3, 0, 0, 4, 2) print("Arrow keys, ctrl", 60, 70, 12) print("Press space bar to start :D", 40, 80, 12) spr(0, 0, 112, 0, 3, 0, 0, 1, 1) spr(20, 24, 112, 0, 3, 0, 0, 1, 1) spr(0, 48, 112, 0, 3, 0, 0, 1, 1) spr(0, 72, 112, 0, 3, 0, 0, 1, 1) spr(20, 96, 112, 0, 3, 0, 0, 1, 1) spr(0, 120, 112, 0, 3, 0, 0, 1, 1) spr(0, 144, 112, 0, 3, 0, 0, 1, 1) spr(0, 168, 112, 0, 3, 0, 0, 1, 1) spr(0, 192, 112, 0, 3, 0, 0, 1, 1) spr(20, 216, 112, 0, 3, 0, 0, 1, 1) spr(coverBean, 190, 67, 0, 3, 0, 0, 2, 2) end function atualizaOTitulo() coverBeanTime = coverBeanTime - 1 nuvem1 = nuvem1 + 1 nuvem2 = nuvem2 + 0.5 nuvem3 = nuvem3 + 0.25 nuvem4 = nuvem4 + 0.1 if nuvem1 >= 280 then nuvem1 = -50 end if nuvem2 >= 280 then nuvem2 = -70 end if nuvem3 >= 280 then nuvem3 = -100 end if nuvem4 >= 280 then nuvem4 = -200 end if coverBeanTime <= -100 then coverBean = 322 coverBeanTime = 1 end if coverBeanTime <= -50 then coverBean = 326 end if keyp(48) then --coverBeanTime = 1 sfx(8, 40, 32, 0, 15, 4) --esse som eh do titulo mudaTela(Tela.JOGO) end end function TIC() if proximaTela then if tempoMudaTela > 0 then tempoMudaTela = tempoMudaTela - 1 end if tempoMudaTela == 0 then tela = proximaTela proximaTela = nil end end if tela == Tela.INICIO then atualizaOTitulo() desenhaOTitulo() end if tela == Tela.JOGO then atualizaOJogo() desenhaOJogo() musica() animacaoParado() checkpoint() atualizaMartelo2() tombstone() reseta() idle() end if tela == Tela.FINAL then atualizaFinal() desenhaFinal() end --atualizaExtra() --print(musicTempo, 7, 6, 12) --print(senta, 7, 14, 12) end soundtrack = false function idle() senta = senta - 1 if rest == true then if senta == -500 then sfx(12, 36, 30, 2, 15, 4) end if senta <= -500 then jogador.sprite = 352 end if senta <= -1500 then jogador.sprite = 354 end end end function reseta() if keyp(18) then inicializaAsVariaveis() rest = false end end function tombstone() if RIP == true then tomb = tomb - 1 end if tomb == 0 then sfx(morteSfx, 33, 32, 1, 15, 7) end if tomb <= 0 then jogador.sprite = 334 end end function musica() if not soundtrack then music(0, 0, 64, true, false, 150, 14) --11 12 soundtrack = "jogo" end end function fazColisaoDoInimigoComAPorta(indice) return true end function criaPorta(coluna, linha) local porta = { sprite = sprPorta, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = fazColisaoDoInimigoComAPorta, JOGADOR = fazColisaoDoJogadorComAPorta, MARTELO = deixaPassar } } return porta end function fazColisaoDoMarteloComOInimigo(indice) inimigoNumero = inimigoNumero - 1 table.remove(objetos, indice) return false end function criaPorta2(coluna, linha) local porta2 = { sprite = 424, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = fazColisaoDoInimigoComAPorta, JOGADOR = fazColisaoDoJogadorComAPorta2, MARTELO = deixaPassar } } return porta2 end function criaPorta3(coluna, linha) local porta3 = { sprite = 454, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = fazColisaoDoInimigoComAPorta, JOGADOR = fazColisaoDoJogadorComAPorta3, MARTELO = deixaPassar } } return porta3 end function criaRio(coluna, linha) local rio = { sprite = 484, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = fazColisaoDoInimigoComAPorta, JOGADOR = fazColisaoDoJogadorComORio, MARTELO = deixaPassar } } return rio end function deixaPassar(indice) return false end function criaChave(coluna, linha) local chave = { sprite = sprChave, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = deixaPassar, JOGADOR = fazColisaoDoJogadorComAChave, MARTELO = deixaPassar } } return chave end function criaChave2(coluna, linha) local chave2 = { sprite = 418, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = deixaPassar, JOGADOR = fazColisaoDoJogadorComAChave2, MARTELO = deixaPassar } } return chave2 end function criaChave3(coluna, linha) local chave3 = { sprite = 420, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = deixaPassar, JOGADOR = fazColisaoDoJogadorComAChave3, MARTELO = deixaPassar } } return chave3 end function criaTabua(coluna, linha) local tabua = { sprite = 482, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = deixaPassar, JOGADOR = fazColisaoDoJogadorComATabua, MARTELO = deixaPassar } } return tabua end function criaCheckpoint(coluna, linha) local checkpoint = { sprite = 450, x = coluna * 8 + 8, y = linha * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = deixaPassar, JOGADOR = fazColisaoDoJogadorComOCheckpoint, MARTELO = deixaPassar } } return checkpoint end function criaInimigo(coluna, linha) local inimigo = { tipo = INIMIGO, estado = estados.parado, sprite = sprInimigo, x = coluna * 8 + 8, y = linha * 8 + 8, visivel = true, corDeFundo = 0, quadroDeAnimacao = 1, colisoes = { INIMIGO = deixaPassar, JOGADOR = fazColisaoDoJogadorComOInimigo, MARTELO = fazColisaoDoMarteloComOInimigo } } return inimigo end function chegaNoFinal() sfx(12, 30, 15, 2, 15, 4) mudaTela(Tela.FINAL) bandeira = 0 spawnX = 88 spawnY = 72 end function mudaTela(novaTela) tempoMudaTela = 45 proximaTela = novaTela end function atualizaFinal() if keyp(48) then inicializaAsVariaveis() mudaTela(Tela.JOGO) end end function desenhaFinal() cls() print("The end lol", 50, 40) print("Press space bar to restart", 40, 80) end function inicializaAsVariaveis() objetos = { } local chave = criaChave(2, 14) table.insert(objetos, chave) local chave = criaChave(26, 19) table.insert(objetos, chave) local chave2 = criaChave2(55, 2) table.insert(objetos, chave2) local chave2 = criaChave2(42, 18) table.insert(objetos, chave2) local chave3 = criaChave3(7, 18) table.insert(objetos, chave3) local tabua = criaTabua(31, 7) table.insert(objetos, tabua) local tabua = criaTabua(56, 48) table.insert(objetos, tabua) local porta = criaPorta(25, 5) table.insert(objetos, porta) local porta = criaPorta(4, 24) table.insert(objetos, porta) local porta2 = criaPorta2(18, 16) table.insert(objetos, porta2) local porta2 = criaPorta2(38, 49) table.insert(objetos, porta2) local porta3 = criaPorta3(53, 25) table.insert(objetos, porta3) local rio = criaRio(49, 5) table.insert(objetos, rio) local rio = criaRio(39, 19) table.insert(objetos, rio) local inimigo = criaInimigo(4, 2) table.insert(objetos, inimigo) local inimigo = criaInimigo(43, 5) table.insert(objetos, inimigo) local inimigo = criaInimigo(52, 12) table.insert(objetos, inimigo) local inimigo = criaInimigo(12, 21) table.insert(objetos, inimigo) local inimigo = criaInimigo(24, 23) table.insert(objetos, inimigo) local inimigo = criaInimigo(44, 27) table.insert(objetos, inimigo) local inimigo = criaInimigo(44, 46) table.insert(objetos, inimigo) local inimigo = criaInimigo(53, 44) table.insert(objetos, inimigo) local checkpoint = criaCheckpoint(57, 29) table.insert(objetos, checkpoint) local martelo = { tipo = MARTELO, x = 0 + 8, y = 0 + 8, corDeFundo = 0, visivel = false, tempo = 0, colisoes = { INIMIGO = deixaPassar, JOGADOR = deixaPassar, MARTELO = deixaPassar } } table.insert(objetos,martelo) jogador = { sprite = sprJogador, corDeFundo=0, x= spawnX, y= spawnY, quadroDeAnimacao = 1, chaves = 0, chaves2 = 0, chaves3 = 0, tabuas = 0, checkpoint = bandeira, estado = planta, tipo = JOGADOR, martelo = martelo, inimigoNumero = 5} camera = {x = 0, y = 0} inimigoNumero = 8 local posicaoDaSaida = { sprite = 96, --sprite saida x = 45 * 8 + 8, y = 59 * 8 + 8, corDeFundo = 0, visivel = true, colisoes = { INIMIGO = deixaPassar, JOGADOR = chegaNoFinal, ESPADA = deixaPassar } } table.insert(objetos, posicaoDaSaida) end tela = Tela.INICIO inicializaAsVariaveis()