0e0 up8d%qyH6o;]AVl333???????3?3?wwww A 33333333333333333333333333333333@@333333PUUPPPPP333333343311131343313113C13DDD 033A@@DD@DD<,,   `P`Ppww M PUf`  ʬʩʪ ̪`P @0 V4p0P` P@0 ^2ȫDDADDDADDADDADDDADDADIDDIDDID Μ   """""""""""""""""""""""""""""""""""""""""""""""""""""-""-""""""""""""m~~~w~~~~ """r""r""""rw"r"w""w/"""'""""w'""'"ww"w/"/UeUUfeWvffVffwfffvvugWuggwgwwwwwwwwwwpp @@@D@DDDDDDDD@DDDDDDDDD@D@DDDDDDD@DDDDDmmm~~MDDMDDVfUf^fU^m-""""""-""""m"""m& wwwwwwwwwUw_UUUefefwWefWUffwUUeUUffUwwUuwfWuwfVwVuWfVuwVUuffUUeUUUeffVUeVUefVVUeVUUffUffffffVe@DDD@@DDDDDD@DD@@@DDDDDDDDDDD@DDDDDD@@ 0"0"0DDD""""HHDDD O0"0"0DDD""""NDDMD D0"0"0DDD""""LLDDD O0"00DDD"", L L DD O  0000 030  0000""" "2"30  BC2"2$2"#"2""" "2"30DD! "" JD- 3"DD? 03DJ"DDߪ ""H0#"DDߪ ""3    3ߪ003#IM ""@ߩ003" D D   ""ߪ 3"DD "DD  ""  >3###NN""""DDD#""#""ҪJ"M33#"3#""N"BNDDNJD񪯪NJ@D@DߡD D3D߯?J"=C#NDNDDNJDDA D@@HHDDDDDDD@@DDDDDDDDDDDDDD D@@HHDDDDDDD@DDDDDDDDDDDDDD@ D@@HHDDDDDDD@DDDDDDDDDDDDDD@DDDDD@DDD@@DDDDDDDDDDDDDD@DDD@@DDDDDDDDDDDDDD@DDD@@DDDDDDDDD@@D@@DDDDDD@@DDDD@@D@@DDDDDD@@DDD@@DD@D@DD@DDD@@DDDD~ee=aaeee============================QQ eeeee==?33??3333?====== ==33 33333=====33333333333333333 33?==gg====333 33 33333? 3?3333===Dgg===================33333333333333? 3======?33 3==gg=?>?33?3>33=== 3===========3333?=lllllllij=33>> 333333>3? 3?=...=?3=....===333==%&'h&&&&=33>3333333? 3=============...==..(..==?3333==gg756h Q&%&&&&&'==3>33 ========.................==33 3?3==!!!!!!!!!!!!gg5gb&&&Q%5'== >====>3>>=?(..(..==33 3====!||!!!!!!gg 5g6b&&'%&&'5=?3>===>3>==:::.....==?3333 3?3==! !!!!gg!!!hg@`b%%&&&'%&'A&&&& &&Q&& 5========?=====:..(..==333 3==! i!!!***hgb%&'8'C%D&&&&&&&'% &5Q=>>>>>>3 (.......11....===?33333===!,h!!!)))hg b88%'&&&'%&&&5=>><>>>3<EF========..................((..====333===!q!!!!!!!!!hg07568%&'%5%5&&&5%&&&=>>>>>>3UV?==!!!........===33333?==!!!!!!hg 85%&'58%&'5QQ5%5'Q5&&&'=========>=========!!!$!!!...:....===?33=hg6ee5 5 8B5%'8&' 55Q555===<==!!!##!!..(..=== 33 ?=gAee555&&Q85555Q 5Q==< =!!!#""!!..,..===3333=lllgcee55  =========!!!$,--!!../........==333=lllg3ggj!!###--!!../........=33=lllg}e3ggh!!-$!!../.. .(.....==333=aaag}e3ggh!!-#!...3///(..=3 ===g}3ggh!!$;$"-$!...33(//.==?333>>==g}gEF~~lggh!!!!!!!!!!!;!...........1.1..(:.==3>>>>>==g}gUV~~~~zDDDDDDDDggh!!!!!!!!!!!!$!!!!!#-!!!!!!!!!..........==>>>33?=QQQQQgQQg lllD~lllzDDDDDDDDggh!!!$!!!!!!!!!!!!!####!!!$;"$""$-!!!!!$$((.//(.=3333==  wwg~~~~~z!!!$+$####;-!!--!!!$!!.//.=3>>>==g~~~~~~~z!!!!!"""""""""""!****************!!!;/././/.=3>> ==676g~D~~~~Dz!!!!!";""$!!!!!!!!!))))))))))))))))!!!!!!! /.///.:/.=>33>==776g~~~~~~~z!;!!!!!****!!!!!$##!!!!!!!!!!!!!))))))))))))))))!-----!$!!!!!!.....:.//.==>>?3=g~~~~~~~z!C`$##!!!!!######$!!!!!!!!!!!!!!!))))!-----;!KKKK..K.(/./.==3 >==g~~~D~~~!!!!!$;####!!!!!!!!!!)!-----!K!!...K./(//.=?33>=gaaaaaaaaaaaaaa~~~~~~~g!!!!++!!!####+$!!!!!!!!!!!!!!!!K!!L..K..:.==>>3=bg~~~~~D~g!!!!!!!!!!;!!!!!!!!!$"""######!!KK!!K!KS..KK..=3333bg~D~~~~~g!!!!!!!""""!!!!!!!!!!!!"+!!KK!!!!!G!!SKGKS.........=>3>==b g~~~D~~~Dgg!!!!! ####!!!!;;!$!!KKKKKKKKKSSKKKSSK33=3333= "gbbbbg~~D~~~~gg!!!!!!!!! !!!;;#!!#!!!!!$!KMMMMMSSS33=====> >?=bbbbgbg~~D~~D~Degeeg 7$#$$!!KMMMMMS33====?>3>==gbc gg~~~~~~~egeegC87  $!KMMMMMOGS33GGK3==řgg~~~D~~~Deeegeeeeeg8 7!!!!!!""""!KMMMMMKKKKSG33 ==KKggD~~~~~~e!!e e87 !!!"!!!!!!KMMMMMKKKKKKKKKKKK3===?==KKTKg g~~~~~eeeD8 7!!!!!!!KMMMMMKKKKKKKKKKKK333===HH==KKTKKKKKKKKKGg c0g~~D~~D Dee  7 !!!!!!!!!!!!!!!!!KMMMMMKKKKKKKKKKTKKKKKKKKKKKTKKKKKKKKMMMMMMKKKg,,--~D~~e B @KMMMMMKKKKKKKKKKSWKTSNSKKMMMMMMMMMMKKg baaa KMMMMMKKKKKKKKKKOK,TNKKMMMMGMMKKMMKKg0b@KMMMMMSNNNMMKKKKNNK`GSKMMMMMKXXNMMMMMKKMMMMKg-b00@KMMMMMNNNMMKKKKNNKKKKKMMKKKKKYYNOMMMMMKKMMMGKgS b  @KMMMMMONNNGMMKKKKMMKKKK11111KKKKMMMMMMMMMMMMKKKgg @ KKKKKKKKKKKKKKKKKKKKKKMMKKK22K222KKKKMMMMMMGMMMKKgg KMMKKK22222KKMMMMMMMMMMMKgg@KXXXKGMMKKKK22KKMMMMMMKKMMMMKgKKKKKKKKKKKKKKKKKMMMMGMMKKMMMKKgKKKKKMMMMMMMKKMMKKg@@@KKKKKKMMMMMMMKKKg@KKKKKKMTMMMMKKKg@KKKKKKMSMMMKKg@@ KKKKKKMMMMKg` 8KKKKKKMOMMKg@875ZZKKKgebb@85Z ZMKg ec bb`RG5RRKKKKKKKMKgGGRR8RR***R****KKKKNSZZKg-!IIRRIIII** R))*))))KKKKNKZZKg!!!f[!--!HHHHHHHH3))))))))KKKKKMKg!!!!!!!!!!!!!!ffffRR--!!!![[[!HHHHRRHH33!!!!!KKg!!!!!!fffffffff!fffffR^]!!!!!!!!!!HHHHHHHH33!!!gpppp !!!!!!!!h$hffffffg!-\]bTe\^]RR!!!![![![![![!!!!!!!!!!!!!g!!n!!!!!!!!!!!eehhi$jg!!!^-bSe!!!![\[[\[!!!!!!!!!!!!!!!,,g!!mmg!!!!!eehhhhg!!!![-be !!!!!!!!!,g!!!qq!g!!!!ee!!!hhhg!!!!-bce!!g!!!!g `ee !!!!hhg!!!!!!!!!!g!!gg!!!!!!!lll!!!!kkkhg!gr!gg!gg!!!l!!!!!!!!!!!g!g _!gg!!!!!!!!!!!gg!!!!!mmmmmm!!gg !gg !!!gg!ggqqqee eeee ee!!!!!gg!g{}wwwwweeeeeeeee!***!!!!`ggo!g{}!)))!!!!!!!!!!!!!!!g!!!!!gggg  ,;HG8%      @Z@K@;BCE@H@ICL@MHOMOOKLMMNOOOMNO1VziT^MF}B^.>>??????#???>>>>>>??3 02R0C0D0%01#111223333 57 8:;=>>??>>>?#* !*")9)Y (e (w(w%$w#!y g' 'W)@+& $" + *** *('&$$$# $$% %%&&&'()** ++++++,-/aQB4 :5FZЙzj[[lЍ&A=- -@-P-p--.a%9jppxy`P@k^PM:4 , n]J0#(#3%`Pp `Pa QP P[P]OPPPPCUV W X Y[\]^^___$\  $ $$ (( $C    CC C ?fUUUeUfUUUeUfUeefeUVefUeefeUVePPUfeUeuVfVPUffUeuVfVVwP`efwVwWUuwVU`efwfwgUuwVUP`uP`egfUeuWewfV`egfUefwewfVwfpgwfwfffvwgvpgwfwgffvwgvvwUe`gvwvwUefVUu`gvwfwWUfVUu`wf`vggfwfUfVww`vggfvgVfVwwUUWWeUUUUUWWeffgfUUUeUUUeUUUeUfUuvfwgefeuvfwgfvgfUeefeeefeeefeUVePUfeVfffUeufvffvwwfPUffUeufUeufUeuVfV`efwVwWvgwgUewgvgfff`efwfwgUewgUewgUuwVUeegfWguVVefwwwwfffvw0`egfUefwUefwUefwewfVvgwfwvffvgfffvffvfww pgwfwgffvgffvgffvwgvfgvwvwUefwWUffwwvwgv@`gvwfwWUfwWUfwWUfVUufvggfwfugvgVvwwww#$`vggfvgVfvgVfvgVfVwwVuggUUWWeffg0@0fUUUeUUUeUUUeU`ffVvvfwgfvg@ @fUeefeeefeeefeUVepffVfvffvwwf10$@1PUffUeufUeufUeuVfVpwfffwgvgfff$@`efwfwgUewgUewgUuwVUfwggwwwfffvw@$@@`egfUefwUefwUefwewfVpvggvffvfww@DD$@pgwfwgffvgffvgffvwgvpwvgfwwvwgv$@B`gvwfwWUfwWUfwWUfVUu`wwwww41$@@41`vggfvgVfvgVfvgVfVww0@DDD0fU&$0fffgPuggfU 0@fUUVe@fUefvg@`ffVVVe@03131PUfVfV1PUfvwwfD$pffVUfV#$#0`efwvwVU`efwffffBpwffvwVUD4BL2@@`egfewfV@`egfefvw@D$`wggfwfV$$@@pgwfwwgv@pgwfwfww@"$pvgwwgv4D$`gvwfVUu`gvwvwgv@$pwvgVUu"$4141`vggfVww41`vggv $`gVww$00@DDDDDDDDDDD0PuggfUUUeU5BL2UUeffg@10AAA@`ffVfefeeefedefeefvg10313313111pffVeUeueUeubUeuvwwf0pwfffwgUVwWUcwgUefff@0@ga@`wggVefwUeuWUefwefvw@@```@pvgwgffwfffvgffvfwwe`UpwvgwWUvwUefwWUvwgv411141`41`gvgVfwfUfvgVv11A11fUUUeU@DDDDDDDDDDDPuggUUWWeffgfUUUeU01C131fUeefeUVe0AAA`ffVvvfwgfvgfUeefeUVe3313PUfeUeuVfV031331311pffVfvffvwwfPUfeUeuVfVA11`efwVwWUuwVU0pwfffwgvgfff`efwVwWUuwVUA13`egfUeuWewfV@ga`wggwwwfffvw`egfUeuWewfVC33pgwfwfffvwgv@```pvggvffvfwwpgwfwfffvwgv3`gvwvwUefVUue`Upwvgfwwvwgv`gvwvwUefVUu1D1`vggfwfUfVww41``wwwww`vggfwfUfVww0A1PuggUUWWeffg0A1@DDDfUPuggUUWWeffgC1`ffVvvfwgfvgC10fUUVe`ffVvvfwgfvgpffVfvffvwwf0313PUfVfVpffVfvffvwwf@1pwfffwgvgfff@10`efwvwVUpwfffwgvgfffA1`wggwwwfffvwA1@`egfewfVewggwwwfffvw@33pvggvffvfww@33@pgwfwwgvpvggvffvfww3pwvgfwwvwgv3`gvwfVUupwvgfwwvwgv0D1`wwwww0D141`vggfVww`wwwwwPDDDD4A1PDDDDD@DD4A1#""0Puggfffg@DDDAC11AC1#""@``ffVffvg0P131P1331331#1fPuVfVuwwf0313O10O1ND`VwPVwVfffff0fA1f@A1NDD@`fP`uPPguWffvw@`v@33`v@@33N@`fwfwvffwfww@pa3pa3@DfvwUevwUewwgv`v0D1`v410D1 41`wf`wfew410A1CDDDD00A10UUWWUUWWeU0C1AA@C1@fUuvfwwvfwWVe@3111@PPPP1PPUffvfffvffVfV1@1@1@HPPPPP`efwfwgvgwgvwwVUA1ga@A1ߪPPPP@PeegfwwwfwwwffwfV@@33```@@33 PPPPPPPPPPPPPPPP@PPPPpgwfgvfffvffvwgv@3e`U3RV`PVV`PVV`PVV`PPV`PfgvwffwwffwwfVUu0D1`410D1 ""0#beUfeeUfeeUfeeUf41`eUfevggvwwwwwwwgVww410A1PUUU0@PUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0@C1`fff@D`fffffffffffffffffffffffffffffffffffffffffffffffffffffff@DPPPP`wvv1 `wvvgwvvgwvvgwvvgwvvgwvvgwvvgwvvgwvvgwvvgwvvgwvvgwvvgwvv1- PP@1PPpLDpwwwwwwwwwwwww-LDPPA1PP@L@-"LPPPPPPPP@33SPPPPPPP0@03333333333333@-VV`PVV`P3SV`PVV`P610111111111111111111111111111-eeUfeeUf5D1ceUfeeUf5131410131313131313131313131313131313131313131313131313131313141 UUUUUUUUUUUUUUUUUUUUDADADADADADADADADADADADAffffffffffffffffffff6A1A1A1A1A1A0A1A1A1A1A1Agwvvgwvvgwvvgwvvgwvv333333333333333333333333wwwwwG13CA13CA13CA13CA13CA13C@13CA13CA13CA13CA13CA13C33333313131313131013131313131111111111133333333333331313131313131313131????????????0?????>???3???03030303""..""N.$>$BC2..>D$."C""2$2.B.2"""#"2.ND.""2""".>N"$""."2N$.2"3.>N$>.+-- title: Vuk Karadzic -- author: Bananaft -- desc: historical platformer -- site: website link -- license: copiright -- version: 0.1 -- script: lua t=0 x=3*8 y=4*8 vx=0 vy=0 acc=0.1 maxspd = 1/3*2 face = 0 respX = 0 respY = 0 w=0 s=0 st=0 floored = false headstuck = false fall = 3 duck = 0 camX = -x+170 camY = y-700 health = 5 maxHealth = 6 hurt = 0 buttonTimer =0 inv={} maxInv = 8 fxn=1 fx = {} for i=1,64 do fx[i] = { x=0, y=0, vx=0, vy=0, lifetime=60 } end for i=1,maxInv do inv[i] = { x=0, y=0, sprite = 0, } end function BOOT() respX = x respY = y end function spawnParticle(x,y) fx[fxn].lifetime = 20 fx[fxn].x=x fx[fxn].y=y fx[fxn].vx = math.random()*2-1 fx[fxn].vy = math.random()*2-1 fxn = fxn + 1 if (fxn>64)then fxn =1 end end dpal = 0x01a1c2c956530ea1c0c810804ffd675a7f07038b76425717948366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57 dpal2 = 0x1a1c2c7d6561e6593cff7544ffeacaceffb691f2a56d9daea171916981d659beeebeeef7ffffffbed2e27189a1505581 palette = {} for i=0,47 do palette[i] = peek(0x3FC0+i) end function defaultPal() for i=0, 47 do poke(0x3FC0+i,palette[i]) end end function bgPal(btightness,fade) for i=0, 47 do poke(0x3FC0+i,math.min(palette[i]*btightness*fade,255)) end end function fadePal(fade) for i=0, 47 do poke(0x3FC0+i,math.min(math.max(palette[i]*fade,0),255)) end end function drawBG() vbank(0) if(camY<200)then bgPal(1.4,math.min(math.max(250-fall,0)/200,1)) cls(11) for i=0,20 do spr(230,((i*8)-t*0.1+(i*11.189)%32)%256-16,20+10*math.sin(i*9.2145),0,1,0,0,2,2) end map(00,124,30,12,(camX*0.2)%240-240,30-camY*0.2,2,1,nil) map(00,124,30,12,(camX*0.2)%240,30-camY*0.2,2,1,nil) rect(0,30+12*8-camY*0.2,240,120,0) elseif(camY<400)then bgPal(0.4,math.min(math.max(250-fall,0)/200,1)) cls(8) circ(60,30,12,12) circ(68,33,12,8) for i=0,20 do spr(236,((i*8)-t*0.1+(i*11.189)%32)%256-16,20+10*math.sin(i*9.2145),0,1,0,0,2,1) end map(30,124,30,12,(camX*0.2)%240-240,70-camY*0.2,2,1,nil) map(30,124,30,12,(camX*0.2)%240,70-camY*0.2,2,1,nil) rect(0,70+12*8-camY*0.2,240,120,0) else bgPal(0.4,math.min(math.max(250-fall,0)/200,1)) cls(0) map(60,124,30,12,(camX*0.2)%240-240,154-camY*0.2,0,1,nil) map(60,124,30,12,(camX*0.2)%240,154-camY*0.2,0,1,nil) end vbank(1) fadePal(math.min(math.max(150-fall,0)/100,1)) end function draw_vuk(ix,iy,face,walk) r = math.random() if(fall<=0 and duck == 0)then if(st>10)then if(s==0)then if(r>0.95)then s=2 st=0 end if(r<0.02)then s=4 st=0 end elseif (s==2)then s=0 elseif (s==4)then if(r<0.1)then s=0 st=0 end elseif (s==6)then s =0 st=0 end if(vy>1.4)then s = 6 st = -120 end end local fs = 256+s st=st+1 spr(fs,ix,iy-8,0,1,face,0,2,1) flip = 0 if (vx<0) then flip = 1 end if(floored)then if(walk>0) then frame = math.ceil(walk*0.2)%6 if(frame == 3) then sfx(2,-1,11,0)end spr(256+20+frame*2,ix,iy,0,1,flip,0,2,1) else spr(256+16,ix,iy,0,1,0,0,2,1) end else spr(256+18,ix,iy,0,1,flip,0,2,1) end elseif(fall>0)then if(health>0)then fall=fall-1/30 else fall=fall+1 end if(fall<0.2)then spr(290,ix,iy-8,0,1,face,0,2,2) return else spr(288,ix,iy-8,0,1,face,0,2,2) return end else if(duck<4)then spr(290,ix,iy-8,0,1,face,0,2,2) return end spr(292,ix,iy-8,0,1,face,0,2,2) end end function remap(tile, tx,ty) local sx = (camX//8+tx)*8 +camX%8+1 local sy = (-camY//8+ty)*8+8 - camY%8 if(fget(tile,2)==true)then return end if(fget(tile,3)==true)then vbank(0) rect(sx,sy+1,8,128,0) vbank(1) end if(fget(tile,4)==true)then if((t+tx)%15==0)then spawnParticle(tx*8,ty*8) end spr(tile,sx,sy+2*math.sin(t/4+tx),0) return end if(tile == 98)then return 0 elseif (tile == 119)then if(t%120)> 60 then mset(tx,ty-1,128) spr(114 + (7*tx+t//3)%5,sx,sy-8,0,1,0,0) else mset(tx,ty-1,0) end elseif (tile == 120)then if(t%120)> 60 then mset(tx,ty+1,128) spr(114 + (7*tx+t//3)%5,sx,sy+8,0,1,0,2) else mset(tx,ty+1,0) end elseif (tile == 121)then if(t%120)> 60 then mset(tx-1,ty,128) spr(114 + (7*tx+t//3)%5,sx-8,sy,0,1,0,3) else mset(tx-1,ty,0) end elseif (tile == 122)then if(t%120)> 60 then mset(tx+1,ty,128) spr(114 + (7*tx+t//3)%5,sx+8,sy,0,1,0,1) else mset(tx+1,ty,0) end elseif (tile == 161) then return end return tile end function updateCam(dt) local tX= math.min(0,(-x+170)//120*120)//8 local tY= math.max(0,(y-34)//68*68)//8 local dcx = camX-tX*8 local dcy = camY-tY*8 if(math.abs(dcx)>0.1)then camX = camX-(dcx) * dt else camX = tX*8+0.05 end if(math.abs(dcy)>0.1)then camY = camY-(dcy) * dt else camY = tY*8+0.05 end end function TIC() updateCam(0.1) drawBG() --bgPal() --spr(128,0,0,-1,2,0,0,8,8) --spr(128,128,0,-1,2,0,0,8,8) --defaultPal() cls(0) map(-camX//8,camY//8-16,31,17+16,camX%8-8,-camY%8-8-128,0,1,remap) if(fall > 300)then vx=0 vy=0 x=respX y=respY health=maxHealth fall = 3 for i=1,maxInv do if inv[i].sprite>0 then mset(inv[i].x,inv[i].y,inv[i].sprite) inv[i].sprite = 0 end end elseif(fall<=0)then if(floored)then if btnp(0)or btnp(4) and headstuck == false then sfx(0) vy=-1.7 floored = flase end end local facc = acc if (floored == false)then facc = acc*0.7 end if (duck>0)then facc = 0 end if btn(2) then vx=vx-1*facc face = 1 end if btn(3) then vx=vx+1*facc face = 0 end end y=y+vy if(floored==true)then vx=vx*0.92 vx = math.min(math.max(vx,-maxspd),maxspd) else vx=vx*0.93 end vy=vy*0.93+1/10; headstuck = false ysprite1 = mget((x+12)//8,(y-8)//8) ysprite2 = mget((x+4)//8,(y-8)//8) if(fget(ysprite1,0)==true or fget(ysprite2,0)==true)then vy=math.max(vy,0) headstuck =true end if(vy>-0.1)then ysprite1 = mget((x+12)//8,(y+8)//8) ysprite2 = mget((x+4)//8,(y+8)//8) if(fget(ysprite1,1)==true or fget(ysprite2,1)==true)then if(ysprite1==6 or ysprite2==6)then vy=-3 sfx(3) else if(vy>1.4)then sfx(1) fall = 5 health = health - 4 elseif(vy>1.2)then sfx(1) fall = 1.5 health = health - 1 elseif(vy>1)then fall = 0.2 sfx(2) end vy=0 end if btn(1)or fall>0.2 then if(fget(ysprite1,0)==false and fget(ysprite2,0)==false)then vy=0.8 y=y+1 floored = false else y=(y+2)//8*8 floored = true end else y=(y+2)//8*8 floored = true if(ysprite1==7 or ysprite2==7)then vx = vx*1.5 s=6 st = 5 w=0 sfx(4) end end else floored = false end if(floored and btn(1))then duck = duck+1 else duck = 0 end end if(math.abs(vx)>0.01)then checkX = (x+16)//8 if (vx<0)then checkX =(x)//8 end if(floored)then xsprite1 = mget(checkX,(y-2)//8) end xsprite2 = mget(checkX,(y+6)//8) if(fget(xsprite1,0)==true or fget(xsprite2,0)) then vx=0 else x=x+vx end else vx=0 end if(fall<=0)then if(duck == 0)then checkInteraction((x+8)//8,(y-6)//8) checkInteraction((x+2)//8,(y-6)//8) end checkInteraction((x+2)//8,(y)//8) checkInteraction((x+8)//8,(y)//8) end if(math.abs(vx)>0.2)then w=w+1 else w=-1 if(math.random()>0.993 and fall<=0)then face=(face+1)%2 end end draw_vuk(camX+x+1,-camY+y+1,face,w) for i=1,64 do if(fx[i].lifetime>0)then fx[i].lifetime = fx[i].lifetime - 1 spr(80,camX+fx[i].x,-camY+fx[i].y,0,1) fx[i].x = fx[i].x + fx[i].vx fx[i].y = fx[i].y + fx[i].vy fx[i].vx = fx[i].vx *0.95 fx[i].vy = fx[i].vy *0.95 end end if btn(6)then spawnParticle(x,y) vy = vy - 0.2 end map(-camX//8,camY//8,31,17,camX%8-8,-camY%8-8,0,1,remapFG) rect(0,124,240,12,14) rectb(1,125,238,10,15) for i=1,maxHealth//2 do local sp = 271 if(i>health//2)then sp=269 end if(health-i*2==-1)then sp=270 end spr(sp,2+i*9,126,0) end local invn = 0 for i=1,maxInv do if (inv[i].sprite > 0) then if health <= 0 and fall > 30 then local f = math.max((fall-30)/270) local p = math.sin(f) spr(inv[i].sprite,camX+x+f*(inv[i].x*8-x),-camY+y+f*(inv[i].y*8-y)-p*120,0) else spr(inv[i].sprite,100+i*9,126,0) invn = invn +1 end end end if invn >= maxInv then maxHealth = maxHealth + 2 sfx(9,55,-1,2) for i=1,maxInv do inv[i].sprite = 0 end end --rectb((x+8)//8*8,(y-20-)//8*8,8,8,12) --rectb((x+16)//8*8,(y-16)//8*8,8,8,12) -- print(,64,64) -- rectb(20,20,240-40,136-12-40,5) -- rectb(50,30,240-100,136-12-60,4) -- print(camX,20,20) -- print(camY,20,40) hurt = math.max(hurt-1,0) t=t+1 end function remapFG(tile,tx,ty) if (tile==96)then if (math.abs(x-tx*8+4)<20 and math.abs(y-ty*8-4)<20)then else local coverTile = mget(tx,ty+1) for i=-2,2 do for u=-2,2 do spr(coverTile,camX+(tx+i)*8+1,-camY+(ty+u)*8+1) end end end return elseif(tile == 114)then return 114 + (7*tx+t//3)%5 elseif(tile==128)then return end if(fget(tile,2)==true)then return tile end if(tile==38)then spr(81,camX+tx*8,-camY+ty*8-7,0) spr(97,camX+tx*8,-camY+ty*8+1,0) end end function checkInteraction(x,y) sprite = mget(x,y) if(fget(sprite,4)==true) then pickup(x,y) elseif(fget(sprite,5)==true) then health = 0 fall = 20 elseif(fget(sprite,7)==true) then if(hurt<=0)then for i=0,16 do spawnParticle(x*8-4,y*8+4) end sfx(8,5+health*10,-1,1) s=6 st=-20 hurt = 60 health = health-1 vy = vy -1.2 if(vx>0)then vx = -3 else vx = 1 end if(health <= 0)then fall=fall+1 end else floored = true end end if(floored == true)then if(sprite == 9)then sfx(6,-1,-1,1) mset(x,y,52) for i=-10,10 do for u=-10,10 do sprite = mget(x+i,y+u) if(sprite == 51)then mset(x+i,y+u,98) spawnParticle((x+i)*8,(y+u)*8) elseif(sprite == 100)then mset(x+i,y+u,99) spawnParticle((x+i)*8,(y+u)*8) elseif(fget(sprite,6)==true)then mset(x+i,y+u,0) spawnParticle((x+i)*8,(y+u)*8) end end end elseif(sprite == 99)then sfx(6,-1,-1,1) mset(x,y,100) for i=-10,10 do for u=-10,10 do sprite = mget(x+i,y+u) if(sprite == 98)then mset(x+i,y+u,51) spawnParticle((x+i)*8,(y+u)*8) elseif(sprite == 52)then mset(x+i,y+u,9) spawnParticle((x+i)*8,(y+u)*8) end end end end end if(sprite == 13)then if(respX==x*8 and respY==y*8)then else respX=x*8 respY=y*8 sfx(7,30,-1,1) end elseif(sprite == 161)then if(btnp(5))then for i =0,123 do if mget(x,i)==161 then if(y==i)then i=i else movePlayer(x*8,i*8) end end end end end end function movePlayer(nx,ny) x=nx y=ny -- updateCam(0.9) -- updateCam(0.1) end function pickup(x,y) for i=1,maxInv do if(inv[i].sprite == 0)then inv[i].sprite = mget(x,y) inv[i].x = x inv[i].y = y mset(x,y,0) sfx(5,55,-1,1) health = math.min(health + 1,maxHealth) break end end end