From 568eec063aa67440c0cc53bba5419f62e687a77d Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sat, 7 Mar 2020 10:18:16 -0500 Subject: [PATCH] JOPL improvements, Gord can sit in chairs now --- dtext.c | 29 +++++++++++++++++ dtext.h | 13 ++++++++ end.jim | Bin 60 -> 60 bytes end.jor | 3 +- entity.jim | Bin 1643 -> 1696 bytes entity.jor | 5 ++- footer.jim | Bin 1717 -> 1717 bytes game.jim | Bin 4073 -> 4348 bytes game.jor | 88 ++++++++++++++++++++++++++++++++++++--------------- gameboot.jor | 5 +-- jiles.jim | Bin 1575 -> 1575 bytes job.jim | Bin 1149 -> 1149 bytes jopl.c | 16 ++++++++++ jopl.exe | Bin 68278 -> 77419 bytes jopl.jim | Bin 0 -> 5172 bytes jopl.jor | 37 ++++------------------ jopl.prj | Bin 4609 -> 4840 bytes lev00001.jim | Bin 1048 -> 1048 bytes lev00001.jor | 3 +- lev00002.jim | Bin 1140 -> 1140 bytes lev00002.jor | 3 +- lev00003.jim | Bin 2350 -> 2358 bytes lev00003.jor | 12 +++---- lev00004.jim | Bin 486 -> 674 bytes lev00004.jor | 14 ++++++-- lev00004.map | Bin 264 -> 264 bytes lev00005.jim | Bin 0 -> 411 bytes lev00005.jor | 34 ++++++++++++++++++++ lev00005.map | Bin 0 -> 264 bytes map.jim | Bin 1101 -> 1130 bytes map.jor | 2 ++ sprite.gfx | Bin 10240 -> 10240 bytes state.jim | Bin 277 -> 277 bytes tiles.gfx | Bin 8192 -> 8192 bytes 34 files changed, 190 insertions(+), 74 deletions(-) create mode 100755 dtext.c create mode 100755 dtext.h create mode 100755 jopl.jim create mode 100755 lev00005.jim create mode 100755 lev00005.jor create mode 100755 lev00005.map diff --git a/dtext.c b/dtext.c new file mode 100755 index 0000000..ae5b27c --- /dev/null +++ b/dtext.c @@ -0,0 +1,29 @@ +#include +#include "dtext.h" + +int dtext_x = 0; +int dtext_y = 0; +int dtext_left = 0; +int dtext_attr = 0x1f; + +void dtext_emit(char c) { + if (c == '\n') { + dtext_cr(); + return; + } + if (c == '\r') return; + WDTEXT[dtext_x + (dtext_y * 80)] = (c) | (dtext_attr << 8); + dtext_x ++; + if (dtext_x >= 80) { + dtext_cr(); + } + +} + +void dtext_emitattr(char attr) { + DTEXT[(dtext_x << 1) + (dtext_y * 160) + 1] = attr; + dtext_x ++; + if (dtext_x >= 80) { + dtext_cr(); + } +} diff --git a/dtext.h b/dtext.h new file mode 100755 index 0000000..cbde4c0 --- /dev/null +++ b/dtext.h @@ -0,0 +1,13 @@ +/* D I R E C T T E X T M O D E */ + +extern int dtext_x; +extern int dtext_y; +extern int dtext_left; +extern int dtext_attr; + +#define DTEXT ((volatile char far *)MK_FP(0xb800, 0)) +#define WDTEXT ((volatile int far *)MK_FP(0xb800, 0)) + +#define dtext_cr() { dtext_x = dtext_left; dtext_y ++; } +void dtext_emit(char c); +void dtext_emitattr(char attr); diff --git a/end.jim b/end.jim index 1238c68f81852eae8ff6d4a27f2252f5f74c51f7..bb50e46a23e63f6b2dc06b3c47fd74adc179b9f5 100755 GIT binary patch literal 60 zcmcE1JR7KJzbVjw;cQ@+K!-;;>)pWAycE6M!~%x5`Yx>O3@)tP3_kK+PPY|YSlNI) M9w09s$ZKQ;06n@8(EtDd literal 60 zcmcE13=BALXBJ?<5E#%Ukn3K~ni!Cpm!g-OSimq_--VT(!G)EZ!AJgr<81{ORyH7y M2grL0world Jaye entity.pos! 6 12 tile>world Neut entity.pos! + with-gord ; ' onload redefine diff --git a/entity.jim b/entity.jim index 5d6f9c2da15378942cb34e83ef472421b18be368..caa7cdb48278c605eaf1e68ea240685068a5ec41 100755 GIT binary patch delta 511 zcmaFOvw)Y=PE(m%Q1XY$l#QHi%yKLYX^F|H3|#`PEVEg5D=Y(I4W-#EehRWIjjRTf z`+ItJTV7s>V0KaCPs#Okn*g=%2Zt>NX(n1=w06Xd_Uh`uT=XM4h^)kn)>EjK6@V8qvDiyC|%-- zMu+!}A{3wq-TDL`8uHen7s12`>7u*P2s$+p$T5t!x;SGXSx8wc4mpUFv2t8I5&gi2 zu8k^^UQ5N3wv+S1CaUC>J{UUHX(zb&Y=nsIETl75CO+@Q8?-W-7-hYhi=FUpxTuH{ zG-`uBkt4}0Chnk584;hr*d;rIGG0L$Hnj;nVg-2g#=PclBtMt1lFM6UtZ9&aX}p@`7gtkuEFI5O7}0t7mu0M^EoqdI9$xc9*R6z~ ze#1~z$f&fJtc__W<}LZFt8-HKuoL^MQ#Ho}ByVTu{R&YA1^G@oS-*LZqgq#6k|^cm ba+S__AtnP{35$H7Ib7XlqC#|f?0wQVf-!(b diff --git a/entity.jor b/entity.jor index 2c120e4..a67f284 100755 --- a/entity.jor +++ b/entity.jor @@ -58,6 +58,8 @@ var _responder 0 > if E else NODIR then then then then ; : facing ( x1 y1 x2 y2 -- dir ) -pos pos>dir ; +: face ( e1 e2 -- ) + over swap entity>pos pos facing swap entity.dir ! ; : entity-dst ( e -- x y ) >r r@ entity.dir @ dir>pos @@ -94,7 +96,8 @@ array frames does> ( dir a -- ) swap drop lookup-frame ; -1 defsingle {blank} -0 defsingle {gord-sit} +0 defsingle {gord-floor} +1 defsingle {gord-sit} 0 defstatic {gord-stand} 0 1 2 5 defanim {gord-walk} 2 defstatic {jaye-stand} diff --git a/footer.jim b/footer.jim index a8ce8a26568ff0ba7b6ef8723e1722994b2f3957..64226a0ef6ef7f001914d062611025966162a0f8 100755 GIT binary patch literal 1717 zcmah}U1(c%6hG-WZXa=3^ zIkdP$Ok8JY!~`25F7jdo=B%<^&J}I0(J%mO%oH80iXo`jIeWh1;Xxn2Oqtw3F3Vs0 zlE?XX6piaDbB0l%Xp@JscvsZ006N~M-v)5-XX=F8l#H{s8{&Z&-3KbUda^ySlR5a0 z*tD<9&sfF0;no-iPu(sB!7TA;1n*Hx8|0;7Bis~4@_tSVL($B8)vm-h$bk3PEmY}O zg!hFkUX-|tjw@1)4M_#b!AVH~>9j;Vo`zMa&Ox3MR9Tf>mM#cujD;@ewyU zsFhu6rBbpM{9bpYC%dYwpG;@v9qCBdAL3y_Lx6R1-(m$SBrmVCpu9;^wOPj#6l9wX zgmiqy4c8-MAYU?aWonDBLPk78G%VmZa`*pzfYZP^zCr_Sb)Q}IN%3UW)7Zm9ouN72a=+QcWA&t-h*tpO|``cw1Hy>=I2! zP`&ZK6629{45>A?9_O+CqF4_8qQoGdGrjcgrL4rcFRx) z@HI68X70`XD7=t?&|JqSiC*=4zW3AsZ%M;PkCqjYy-ga;)jZhO(Cd{nZKTQK-!9rf z%ap|pmkgQey{ZQNNl`l*mJ~huxx!N|6T45lb3Uiuph8orTgngJmfyR H>FMCVEvKh8 literal 1717 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 diff --git a/game.jor b/game.jor index 44777a0..c8883c5 100755 --- a/game.jor +++ b/game.jor @@ -14,6 +14,7 @@ var player.prevdir 4 const HASNEUT userword 8 const HASGORD userword 16 const ISPROG userword +32 const GORDSIT userword 1 player.state HASNEUT f! @@ -32,9 +33,9 @@ var posessed-rexx : {gord} player.state HASGORD f@ if - isjaye? player.state MOVING f@ and + isjaye? player.state MOVING f@ and player.state GORDSIT f@ or if {gord-walk} else {gord-stand} then - else {gord-sit} then ; + else player.state GORDSIT f@ if {gord-sit} else {gord-floor} then then ; : player.canmove? ( x y -- ) player.state NOCLIP f@ not if @@ -100,24 +101,44 @@ var posessed-rexx S = if swap drop mapsize swap drop >= else drop mapsize drop >= then then then ; -defer jaye-touch ( x y -- b ) -defer neut-touch ( x y -- b ) +defer touch-override ( x y -- b ) : rexx-touch ( x y -- b ) - 2dup RUBBLE mapflag? if + 2dup RUBBLE mapflag? isrexx? and if tile 3 swap b! invalidate-map 0 - else 2dup tile b@ REXX-POD = if + else tile b@ REXX-POD = if move-player S posessed-rexx @ entity.dir ! posessed-rexx @ entity>pos Neut entity.pos! 0 posessed-rexx ! - drop drop 1 - else drop drop 0 then then ; + 1 + else 0 then then ; -: player-touch - isneut? if neut-touch else - isrexx? if rexx-touch else - jaye-touch then then ; +defer on-gord-sit + +: do-gord-sit ( x y -- b ) + player.state HASGORD f@ isjaye? and if + tile b@ CHAIR = if + 1 player.state GORDSIT f! + player.prevdir @ Gord entity.dir ! + Gord move-entity + player entity.dir @ Gord entity.dir ! + Gord move-entity + 0 player.state HASGORD f! + on-gord-sit + 1 + else 0 then + else drop drop 0 then ; + +: activate-dir ( x y dir -- ) + dir>pos +pos entity-at EVTOUCH entity>do ; + +: activate-gord + Gord entity>pos world>tile + 2dup N activate-dir + 2dup S activate-dir + 2dup E activate-dir + W activate-dir ; : touch-begin each 2dup more >rot drop drop ; : touch-next dup if rdrop done then drop rswap ; @@ -126,7 +147,9 @@ defer neut-touch ( x y -- b ) : check-player-touch ( x y -- b ) touch-begin entity-at dup if EVTOUCH entity>do 1 then - touch-next player-touch + touch-next touch-override + touch-next rexx-touch + touch-next do-gord-sit touch-next out-of-bounds touch-next player.canmove? not ;touch @@ -142,7 +165,6 @@ defer neut-touch ( x y -- b ) touch-next WALKABLE mapflag? ;touch : try-move-entity ( e -- ) - s" try-move-entity" type cr dup entity-dst check-entity-touch not if move-entity then ; var q-level @@ -153,6 +175,9 @@ var q-level player.state ISPROG fnot! isprog? if prog-view else human-view then then + ^Z key-pressed player.state GORDSIT f@ and isjaye? and if + activate-gord + then 0 ^LEFT key-down if drop 1 W player entity.dir ! then ^RIGHT key-down if drop 1 E player entity.dir ! then ^UP key-down if drop 1 N player entity.dir ! then @@ -160,22 +185,19 @@ var q-level if ' try-move-player sched then ; ( S T U F F ) -: reset-level - 0 objects ! - :| player.state HASGORD f@ not gord-present? and if Gord yield then - done |; ' entities redefine - :| drop drop 0 |; ' jaye-touch redefine - :| drop drop 0 |; ' neut-touch redefine ; userword +defer reset-level userword : mode-move player-tick -( objects @ if objects @ links each dup obj-entity EVTICK entity>do more ) + +( objects @ if objects @ links each dup obj-entity EVTICK entity>do more entities each EVTICK entity>do more party each EVTICK entity>do more - Neut EVTICK entity>do + Neut EVTICK entity>do ) DEV if tick-mapedit jiles then tick-debounce + q-level @ dup if 0 q-level ! reset-level @@ -200,7 +222,8 @@ var quaking 0 ticks 3 % 13 * 8 % scroll then - party each draw-entity more + party each dup Jaye != if draw-entity else drop then more + Jaye draw-entity player.state HASNEUT f@ if Neut draw-entity then objects @ if objects @ links each dup obj-entity draw-entity more @@ -337,10 +360,25 @@ var _dorubber Gord :noname dup EVTOUCH = isjaye? and player.state HASGORD f@ not and if - move-player - with-gord + player.state GORDSIT f@ if + 1 player.state HASGORD f! + Gord player face + Gord move-entity + 0 player.state GORDSIT f! + Gord follow + else move-player with-gord then then chain-listener ; +Gord @ const gord-listener +: chain-gord-listener gord-listener execute ; + +:noname + 0 objects ! + Gord gord-listener listener! + ' noop ' on-gord-sit redefine + :| player.state HASGORD f@ not gord-present? and if Gord yield then + done |; ' entities redefine + :| drop drop 0 |; ' touch-override redefine ; ' reset-level redefine :noname reset-level diff --git a/gameboot.jor b/gameboot.jor index 12f1ab3..d1e3812 100755 --- a/gameboot.jor +++ b/gameboot.jor @@ -1,7 +1,7 @@ : blah ' seremit task-emit ! ; blah -0 const DEV +1 const DEV : devon 1 ' DEV redefine ; @@ -35,10 +35,11 @@ intern lev00001.jor intern lev00002.jor intern lev00003.jor intern lev00004.jor +intern lev00005.jor intern end.jor :noname loadfile ; checkpoint _loadlevel ' _loadlevel ' loadlevel redefine -lev00004.jor loadlevel +lev00005.jor loadlevel diff --git a/jiles.jim b/jiles.jim index 5fffb087eff78a4b48720f8b55476f1d82d50c5a..681679a18b0672a7c0a2941635e67a12e681f457 100755 GIT binary patch literal 1575 zcmc&!-)mcS6hH0#p0*fS)2+#MuE9*FxVp^VUupNSvFSyv(3;sfwhSv>a@$?akLyh| zT|_hwfpweE$3YwLL9rqd6&Y?&X`kGf;)BSTV?GFqqCQkt5PXQ|d~aI%9~emP=kxiV z^ZB0h{hr)Idmjq*?HnB5)it3FYF&`a6mvx%V$oihAnI?>Fr3yxQ1X1Y?6`%jGfN== zuWH-Cccy)(bS6=7oUD_Ta$W1*kl}pT#tyio#Y7DkN%wr`b=RrLIQU;bpHqLbz1>t~ zQ&h#Oh=@0pG-mX9kwRBr6)~}-eM5ymq4&UJLGv73)6(kYzM2*hbGW3{Ft6VWS%0dM z@TPK3x$MZM0c`Apz&A^--|9`;!N%u+e--#u8C1U@rP`aq4{1l<=i;VO`;_?f*l7C} zqhm&s3;?dET1i~v{EV57r|jh!$=zegah1lkC(Flj5=(q<8V zwTt*(-vRmJYb7UBEc)3))V2h&sm}JU=M45t;YE5Xu%^^7ZS)3NUa`bE^q>siSP=ZJ z;k?lktk0h1g$vR5WSKSm#0a$$-B~9W+{Lo-3>D9(wnptO8wb?j91QYNP!wG^9 zz-5NV2=>D&!>0)DhOZeuPjCm^WcVb({qPgR;{+dvKTU+m)XWPWu~GOZV0MAnQRuR| zX`;QeB|jr;=(p}^S1haLQ@8PLs4ELJK>YlYPI$(;I&ga+jVG;18lhXpb;)L|ykwkl zuAMQ`k(U`w>q2xv%*!cWQ>r4!U!eRkJ%tTxUIZQ=lLsqJQoLP_NE(+d8(Xca{+47n zh;=|!|G?z6+ZNwCdweGO?~=2_vgDy;1zXm{k>jJ|PsgEwXjVl7$9vAG*W~)%#9hh9l5r~{SQGaxY2QihMH$mi{71?2l0Qs5Y;lEe zByB`;?38Sd*uT`vY1vDISgXZ;BNYFR)IKGx12(j7sohF0nh`p=XYWsi>Jl9!gzB~E z_I-EMzttb2?+?^)&*sI+c{(4yM8;`+bQslNbT-^c2gNpH^lktcRQa-O9B;FRz8+;g vcszUnYlBYSZHW*h$g|fwl?ZYqiJ^1uDjV? zX1CpBq39x^wo%A~AR2AUogp z-E+?U?zv}X@X!O{&b_x%@z#)atFILbQ>8*FfbLiagsfHwHfaPRRv0SfAXoKs#jHO| zAprZWT@d)wfnT|hEc$-d&nj73ZJRP&i+C7)$y#pE}+F zGPxq^VogNFWg~-~_M%9mX|IWHF>ZZN#{aU~;fOvw2lrYT^YhMLD=MzyxYfY8y%Vy* zWGz{qEcn%`uMQ31VJGOiS*m*3UZEX4d;<8_fIp4H<`<;YJJR?x?a2Ea+bY!T5_gXa z-M6h!i(H`s0IMdO{g!MNt(wVhiq^cD#+$arHB)bN!tk&K`snv0Bn+($5Q~sjv_9H0 z@ov+^EB0=fDP64iQ>9Xn9i(F`pbpj2+%+Y+W*U#t(||ih1KVYX&MKEGoI?-FNXR9@ z{|y|J?RtH7ju#eUrzG2K;Dih}6LYhELElAQK1SxbYwyT4k(Upf`W|W&dwzO$I#=+E zlQWxr){Xd4*6;_ZFX<=+k-Hv;XHPHR>$LV=?91Rfh5ajwRVqb51dqZZ!*PPWu;d_2q|cuz6B~vPHS>zZo`lbw zHk#=2TqT%N9=>w!X*yPJx$7Rj4D-ek4G=%CQ-`DOmtDVhWw6cNN%wI@exq2_jVs0( zuQoFVLNhAkth*3f5{qhz?-+HV^M@&a-Ad!AyC`&x=cooNXGtl?m!lcXyB=rq64%%lNUc2h@t#geR6n{%`u8>!J)ve*j?&*``!()#oU>QG^b+L?N?H9~TYW-(- z)#Q2!8f^nk7~c^Cs{W>0{ln#HyWw<;_Y_}uZ#YrGnz)}{VWovr%=Zv~P4T$m4-&tw z_@R`CNEJU(te@CAo#mW5%P6sp4bC5+_}7*8JZT}=)Y_DGB{f3(dN{H#9hM3mCxqtL zvD-&(n}3_X#6IY1;LWXzQ}c8!GDL+l_)`kaH`Lp`mm0-o9;a^uz+saw%fqoI8@2Do wSl3_Og%s*3pw~{D*w@bna^Vqbhlj@rNrm1f!)(mM-{{R@W537l#`p{O9~*jdumAu6 diff --git a/job.jim b/job.jim index b9181bc3c2f5bb885628690da9792952bbd67d7e..a9bfa30b952e68b97ad0166ff163def540caee4f 100755 GIT binary patch literal 1149 zcmZvbPiPZC6vijr8PZysCe?@)QY$L>hXtwN?9N&xwo+&jBgrW}ZJMo#rkggqOWH*b zTdap3q)2ZoDk8;83Ere&p?DFcNUyz>3W^u;>d7}VNt;6hJM4b%&CKt;_vPlL&qktu z&6vYBy-a(NX)mY`s|D3@&6;Z!(d+oRZkr~MS*dW{QKzaivlYv=MC2LmMC12vXLIS? z9h5qW&>Jb_(%Ffu5RmwNpjhO!Niu-Y7aHZE(R40-M06j{D+r=;5iQ3?eln$9D&=Gk`HegNT7f{=VL zYG5C4;i8f!ue1i$M4OM8hmZTv3IouzfGK4@SFv8x?;+6 zBPhhblyw?H);q0_XQ|Fq$trpkt9Y2!*_QTIJC1B?-c@Hzcd7({yy>EJi5LOYt~Sgu zog-%fZdhLeun-S*@b`Ame)!sk$O>TmZDM%#0mzm4S<$^cZ6cOcLcG)L;(a|KQ9Rpo zfVTxwCvWxTcuCJHn=peeJs^+uKABlJ%WgY!oqQ9it;99G7gcTHuLB#&0fcx@J0JU` z`#4X!nGX#gOY%`mJwsBgplv|LI!%gdQ|u)T$agreQg&R+R;Q~q;ZHHpVYYZ8AS0(H zlZ(_B1@Z2M*o_T!?CTkFiv{Ei>p{Zgd>bDg?7R^5@ii90&^PIz!aXy|nx#$GEK7hl zQ;&Ad57rvTE?cL(fGuzU?`xjyvXwSRwOsTbRPLgHbtB83^DIwX128W{Gfo>m9`9+n zen((s$bcco`5Sh*wFT~G4kwD|ZfF|9LJx|d#onvYONG07!~w~p^)g!%to|k2pToCONZS{U+PPB@1Vz%JL#Gb)`@PxKIk+&7+3)Z7-uwK1zwg|7^JFZc6%_7-Kp6wdseZ;UV)E#-cGB0v%n{K|IB!Z2m5XF88PYMCrPm(g|uHnqeRnNA|_G1W-F+!q; zk_PqZHZ4kdc2{Xoi*HlBDMj_f5@@5!21MV$`a%;qGy@K!?ccA+M;rt*yf@u&l&D?2>`L_qVx!{4NyB{n12A% zr&)m8S5^Qlq$BP49tZs(Kts9#7+XyY&prUTyf`nqx2{a~WTlWUH@o;x>5EW2+jD@o z1yW0!vu2dtICG8FMQSTCr}mPHE&O$0qi6sjU02Ta%&I=k zv$wG7iSZPUI?{Evqb8LSWE5b)SnZBF!2`Ag=UHXPHEnsOQWgFb1Kn4joe0?NlZDh( z?u&x3dm(juM%p)3o&8b+wx@OzVRGDtmVlk-6F&W_hA?!C4@>BoPOVwmOw}|6cr*2A z*F4u+<5<-S91GY62Vh_GY*pKcIjZHNhoGX1u4rAvv==2>qL5Fq-da4KKsBU91wU0s9YW4lu0% diff --git a/jopl.c b/jopl.c index 585363e..f83d596 100755 --- a/jopl.c +++ b/jopl.c @@ -6,6 +6,7 @@ #include "kbd.h" #include "timer.h" #include "serial.h" +#include "dtext.h" cell ontick = 0; void f_adlib_read() { @@ -79,6 +80,14 @@ void f_random() { TOP().i = random(TOP().i); } +void f_dtextemit() { + dtext_emit(TOP().i); + DROP(1); +} +void f_dtextemitattr() { + dtext_emitattr(dtext_attr); +} + void do_repl(char *exe) { adlib_init(); @@ -96,6 +105,13 @@ void do_repl(char *exe) { CDEF("key-pressed", f_keyWasPressed); CDEF("key-down", f_keydown); CDEF("rnd", f_random); + PCONST("textx", &dtext_x); + PCONST("texty", &dtext_y); + PCONST("textleft", &dtext_left); + PCONST("textattr", &dtext_attr); + CDEF("emit-direct", f_dtextemit); + CDEF("attremit", f_dtextemitattr); + f_loadfile("jopl.jor"); ontick = f_lookupcp("ontick"); timer_setcallback(timer_callback); diff --git a/jopl.exe b/jopl.exe index 97c6696feee73fcd7b0b0564ff2d8de73ae57d94..018a3067ff70655e278ab498f0a1df66fcc6a1ef 100755 GIT binary patch delta 30081 zcmc${d0Z9MAOHV8GsAW-TrOO=z(oN;cElZb#0_`D4ZW_Ih~SnfsFitDECtH4Yo=-D zlBQVP*zk=^DE`$h2!rZ3$)4pP zVY1tIBorjWad`3ANikw_O!lPkEz*y7I=8wrDJUNvlALE8h92l&RLV_HU*!Q;AfR|2K?>8Q`Fo@04PaU*pMMKxZy^n` zNn)B(FTtusk}944Bi40y#!5NE#Z0ZBrub=k_3jK=$w*WBkX7lccP6aLb3C z@c$Co{#(dBmGSR!S~-$7XDHt~oVg7_`kgCQZ_bbzr73Nl*paj~Ls{~I%~s7OxXPwD zL&@U~n_72TM8%rXql(J-}EoD%*J5|1{32GJZ7Se?{D;%67@48UM@J$c=4k(Hoz6G(|HX@PEwomFJZO zY?WG(=Ym3)2#xptkCJ{_Gf?h-2*m6E-|A;t%}~?-L#Y20s6)*_GyX3F8EiE}z4?C` z>X-5wRbl(T4D?yeK$9v1+5SfbzEU&Pl*&;5BT&nlfhPagK&hQ8DqFBi%}`VSYpCi# zr=F=*VL$EekEZlr+WbeFVZN<`@?7(0RM3BF4gcxB4$}gnr$_wvzGA~5(5T8-|KE*a z>sn>o_G<6(8eUQ8wz#IXYRu_&s)?PEXmPx$#ZlO~ zVxFXCdfXH1Ff{|J*?bI>JjvnZMM?PS_!N&hS;Xz>RB6V&=XbVMnnhJ+SgV52Ct4N! zhsX*M**q<>Cy$+JYLQjNRaG7>vNMmX>$9kHxt6gC<|YedzpCeV#WA%)IaI^SF|}Oz z+Ud?OmDCVwJJ3{lL8=x@YB}#4yr8KSxO>hgLw>32|1m`8rv<4`wGdC8VQtR9YBY%O zsWTdG#WVKqW2;)jj~{8p$WO$BvnXUwhNGF{Ta{@zVJlQ-n%k(iL(M)Oxz6l!rDdN# zhSluHBdUMoKb=nwbW~K9-8Z8O^LkkMkXl zJWn`IM_3O_M2#H-lrfL2!<~&{0FTq1iXP+FKF=#ez|T6b`U0Z-#jBofe@3b@&Y`AY zG$h9D&meh!Mw;@&L+dbSZKMw<3X#zrTq&;=kIT~;SGJ*@b_3-H2(Tu`s#VtSe>*EH zd2a^KWYS)B8o(=Zspmb zX_2Yzgx{H_(e_^6W>20Q9XCdn4l;8PuY#zis6|!PYHI(~J7FOA`aeb2F_LE< z8B*3isF}P^QOI80Vj(gNUMC+|OSBUH%W0(cCwqi3&RJ)VGSXz@m^4L<&p)U(+QXeI zjAN9q993fp@-9DvRT!*(i>tN@8>19xR%&xGqq&rL75$!?idGr=z>2wAEA;%lTh9B> zZ`q<6HumF258Iw9e_4m@KDuvJGM`taj3!$YvN?m#L^o#$>Wx}>Un{HgMm64>rp_Hd zN^<6F<>m~rdhVE2!x{q>k8GYBOj4Ya%YI5Hrv<8IbH>W8NDJPpw`Qm*RZh9`b)NDe9>D3Wq)1ybq1c^E4SlXei%^@Dc?Jk)edx0gh8)ejrg^w97)?Vln3{$ z2$GTltX1APM29xOjjJOr3fay_jGTK`HCw7>j~?lVQ!9wxO|3|i9e5}?hn&{2yh6+J zD_CxT>L-n;@(Zi-%d5@p?VEk$)z(zi)XS2ss4=x{pWn6WAHF!P)S85|7F?u%JY<|S zlxne}L<5TOuAti4Dh4RuBwH(|Lcw>f zB?HoxH||=M4;_mCBWGNZHsW*N#siexyVi7N2)r{KO0+r}@yBnjH#aOmAI^0seIA$8 zRlD5}WtDyFV42lc)C9#`GeBv4*NR4|xZcIUS2=L;?35&>D-t4Ztj4Og?A;lyI+y49 zsns;QOnoBrH2$h62~gPtFdpk6o;tcEQDwc!a0-l^9fiAW0%^{4G-A|U*(}eQPIK99 zM4IwRnN|6ml#^PA)%s#9S9Cvjt$mdksvat6xXxyz_&rh9mCJjKX-YSQuV1drsvH*h zKrB$Mo@eb*=Zcv&%Jot+z3Yxu34C6nR~?(+c>1g=n`#h)tVezfh%bTp+TTdk|Lhmi8oZEYA+)4F@R zW?FcERr8GD!D&3kX^bSf4F=gqsp{9`Tk?Yahu&J*j*+sQHm1s+>ZxM{0_cluS`(cxro@Biu|{i6=Rp+r zdRo*vc>-L1x2+{^h)ub6tH%6|KO}3%YftZKx17(kQYpRW%t4)%6uF>77fF?KFidP* zY+9X_7id#8J{faP%P_+!uj-1t;T!OvndOXLn@6N6uR7i8Xo~6=P zkfyv-id1WI9viA%`*9B6Pn9?7)DsX9Bnm)d&=pkO1)OAN}h2g-+PU$QAj zou=wgjX327xY6M)tk%X4OLQ}LHyD$MB{8p571wWJZFR_YQw~M%IOM_&pEO6?(;7~L zG1@SfU)nmo@k8arJ!PHa-PD6s&F)w;t5v@@uYPsYEmyu_&FnpcqHK{RmBVP|;EP7i z4INV?Ws(-qwJ7!R>MNDc&-_w#GREtecb#`rAEqf2gVAY`2csMVkgL<(@qK z_ikEC8u5hS!)?@Q$59J>`LqM&*{seAYg>7NN(@Zn)t7)8IZl(W zWTYwQUd&qM40+Fs9`aV0ulqMz4EjNEzU?2ifnuYMrdJv}rl>ED&L*d1a?Z=5OukW> zPkxs!-LT4aF;1VmVO46Yg;n}Me)Uir#bEI*Eb75x2k^5;Y7`A1-+egL#+OXfi?Eu= zV_F0_xlH+}`k4{08cX1V%ao+&is7l^c&^-j!tX>4alyKPmR<7K9g2z4NoC@XrCt7>vSpt%i z5mPyWx7T8t3i;FDYT@|%&Ed|j|9G&wRz8Awsb-;(n3-&5ypg0U>3q(?mM0xTvGFdQXPazbFYy zqhC3Y#A-RC#J>fcxvt7VhjQ%!&nspM7#5Oc%xnKF;HI_>4lSgdg8O>^x;A*Ij=w4$ z?(q4=>EKl|qTDK9@l8|CU$@F#Q8ibuTb1b#l!!<2PoVojyMvwp&3Yi~J=2u0fO-NI z1ND6%f2>bamI3t!vV9Jg@<9F>tN@JPw1q(R9>|vwathE8pjkkc2XZ>lNT3lw6M)H>86zI@9&O^E}V2GkVjhx_tLEVl<-w^`*`VBui9 z?#ma!B$&MowVdl9DsfZwh8PLu%!FSZ-2{kP^#&mn?dJ-hTWH! z`=lv3KwE)wfxPa^+kw)7b^(n5dU{Vj0@MNMUqHQpuHTdI12q6T4b%$gr+ad1Q<_p6 z===yA)_)%pYjeJ*EHOa&tT$A6&D_7eO7@tjgkhat6?4pesP7KyTfX zm!o=r0Qw8)7obV^4-fRQ=5bQSC3a}RUSd$?c@1auGRbs!V6>yf4m0eS#58i?-6p+H@M9s%_Ox^-7>hJZ;x&w$zi zUAQZc1Bw884wQJ!W>pT~l~;lp!RTcS`Y_vmS3V2${7;(um|JG5TIs2r^;lLJMMoFSQuDcuy4!c@$PsR0tyH60oqU|w*|U?)hb5q?7RwnlV`W&bbdEI)|YE!zG z$r(Cyda#x-`xIu)%jC&0n+4Pc=pCTQGPwX~0#FLjYe2qb@(Q5AKplayfE;(^!$4ht zIs^3uD!n7$25Jh_11JUPmpifvDTV{}wt>|HJ9I~G3FZwp0LTKg?T%asRDQ)O4+U}q zT5(7I80ZGj2%ra7@C>^nzX@~}C=2K^(Cc^P4L}Eg#sd8SH2RKw5oj~eM4(+j{qD%& z`ZSyJ30NN3Ishd-2}?NEtg~LJr1-J=p4|*+p+?*6NtY=9t0YC zTP{N`)&lK)8SQTiShw5qDlj|PA%t8G)aX%>uIA zl9vLF1PTC}0OWQ{{vId|C<16O(1TLB6sQeQ3{V%K%cZglqK^Y=FcR&rDcBFC>g^2x zD56x( z#xrvq&={bpK*mye3y>9P8c-(C^AfpPV49K&G#98h(9IIr5|pMi23i1=40Nu66bQ7XL_QAm^mlX!AQzzJCGrKJ>p+`;?){E=W{K<;oTmH) zv<>JI(6kb{C(u5iT|mcyMwQ6j@qpU|bP&k46Rb~({5H&%f*l823)Hqmwgb%rItye6 zN+^+60ObK)2AT;JRHDAYU8j^2<1L9Gw0avl77IhU$? z^jP^PUkBy0#LF;?#%_qpc{*3>cZ>>k_TA+-E7nF!Y*e`_iXbBq z^{i52GDW2+Z~kVLl)pEnTZxcQZ^zz0+NyYwH^hD~dB0>-Xk9 z#&3zX80E}FUNd>7`m!juMAk#F&f}`)Ca$)1by8-5xp}5R&W%b_S!8YQ+Xba|b=T(P zc(Ze!^FNup*2~93gu$hYlYW>Ndzac;HFAjA0|m>isBAY_x3;>TYjl zZWP`=QFnVX!Nk1UN$1_(R&BO<+H02Gvx#E5w&9sk- zt7|)$i8AgIc&xHS@%vXFRb$TIFK(WByC~HaJAfYZq}tyuOm(g6;PN)Vz@RYI-6^Hb z`rDP!-?ms+A4frdKtU(Oq*da-@V4*zLM|Vji5QKHK2z}>Fvn3wu|=8Wg=d3ExW&t}q$z{1q$i?M|Z7x_GTTDs1L z8{sgV%`9nG6mm8bKJ(`89^-I5n~7jvc_H%euxhBoLe$yJL-0X^Mm!|%9#i61V$dS` z111I?*2eatva7!d;TsiR2DGg!SdY-HxJG$YT^9X+WK?%IUCrAIJx2 zDNvKE@}D+D_9j>e*gUX0SLGJS*%+WWpgbVMRoRq~rVIdT4D>S4vn$&33#b{;OF+sM z8Jp*nhLC2>HwwOO;LFj`EAj^Tnjjxv)*fH*?Jx?n9L_dgkvGEo@1ODf(!6h?ihCe1 zNAs`9yn@d`?!GK1BQM9{+aJChO}rux0NM#O0_Y&n&@1v7$kQcOc`|;#dt_aGDpNj$ zqW<#4s-)g3X{mI5jwXsNHcjzC3X5sVd<1_Twy%}qF?9xmm_P4egq?(^;J~`%sZ3=n zKHTeWCTuf(zzkTr5QDIuYH5G+y9d-ID-%B{R^;n1N z)=~Db1`+kjM>`zp$~YgsRK?fpN_3i?{^a$k?WQ z^fs5q(-{liHoM6{#`fEPZJHIlJFCm;-C6p*(+wC3vmCC6viLR^d?iQxLz1Fu?a4CY zafXg56dkVmZXnlhmL?z1vM*0+6gz!verv~@&5EQHd~6t^b9B_Lm_Bx%+oO&GYN__j z~`mHonACWLf*C=Z`Og?60#4wCT8;)NRc5iyC@_fyLb?j zoAy$2BU~8epP|(W*#+jr?3IbxOClY%11t7sA&Cy2d_~=LR@9y>$8(v4v`4OcvPh`f z%Egx(Q9o%)bHbwSic>s{cV(C#s>1w`<*Nn~)GdT+Ak^84772A5WmBGER>kow{=KnL zHue~r@{=0?dd{lYot1|tLxXI4S&InfYxipz;q`UaCvEd*V55h5fU?Ejv1LZ+i56H* zmas7H`feBV6(QTM?$c^L^E$jzcc5&_AGEGisY4>RrP$?5zt#$2^Q)Eufv0rEv zZCM(|QpShMZHt)qpcYH#!&8pD73bREfmzUeyEur8bB#oKkiP79p*-MVah z>ux#`d;@}K!n5pTGQr>`bDKL4cWwq@O#G4`kZr|wOR+l=`Kr5okXl}*MQ51%XR z?14Sn26X~dKC#yTUXw?9T^CY%8QLtaxD);4%jycLrIBx7B%rMpOLmbU{z@N!@N)J%YT^(>1g|yE( z)LEpW!!8Z@X1lYutZKV88qjV9-Rjhw0yGMqDA68~N-~RnFXV-IICsY=`_4YWEu3X* zQ*@~?rLr_?Y2$fHMTf;hT7L2?)YLkvsqy&iUVYmNF*){LeZ%)){d;r^4;1JawNe>vcW`fpml8U6T6#xUvh)kkyDmdXbv zCX|mROLFWaR<4;1gsDG`hRm9x`@wx?j0exlCKXevIMvpwZRog1&Nx2IcA55<0w z2Sr0%^Gl>jhE^dDa&ldi_UM6%NW+I6Xc2NRCpQB7P991u*R>$&K~70nt0XXNbyE5f z|9}ewN8`P#@8v+Rewfo&nfKS=0}k(22y1_LQ0st)IYm>Yf;_2Uy6b_%t`AZ92a1v& z=GgxjWESxAcu-xBdpVRFS`-3TY?(iOusFs<>geX-mF*~a0> z^(#7GfY=L=UHgK;e*W{E++1{i<%67p&VuSwJb1L>K~A1G{=&dbJb>W8+3OEk5bHk1 z5v9ZFiPJEK=snl+ocCNSaMGB>cS1sj6eI~_3X-KU_8UV!wWhAIiboUYa~$$Gr-S$_ zYO6H9WYS+n*9sD!=3F%tOriXL2}v7ud;fTvTh@4QK`N={MTn&cu{e?lXGPA+$2qHK z)5@ngtLKm-syxSjd1$@%u4C}z5pV4LtnuER4o5-T`~$+hO;OEV@*Whp4Ij4BbYxX5EeIw+ZZ;4UmFfxFv8ECIc#CT;<1az{=-gngyL^Q+)}m~hd&K99%7pRX4*`L zD3vW35x%YEr~Rcyxud4#P9uJOO}&mAm6fZC5xKdOXw>+e+TdmlyT=ReAuqVcz2Khyg8Q8p+{>!mU9?PYtOA;Q_Y3ahFSswh z;4U4#Eo^NnlinY@aIAgI=lk8?ANZmA54X=K*i$x0A(Q=xMhnweeHtvxVFQrPe0E%N zBmVEyG5gCKy4YHviUZv#kQQ;_LBVvH3mw%W3AG)lr`id{Yhor^@;Lne2K`ZSu_a?yaYXgn7UX%{VZCmRJeqUCgq zqsH`<1P_QNXvd*kG^O#>jEf{1M?JV`M(%7f7tQG|6>!ml+}H{(TG9nN%tb5ug>G}v z8eP_;gJ?tlqLy4F(|O9^qAlH~Hz90+DO5&<9JM1?_AwXjDU&vE(Sa)HA{QO$9EIy4 zI?)ws$weyNqF!8drXOh-7hUKHWpmM$=F-Ppbffk3GZ)?I71Db`^q}jM&P7jpMwhv; z^`cAE%nRxzI!67tNTc6r78kwgEG^)o4}C*>xadnq={6Vr$b}gU5dG;fS-D83Qv3lL z!~pt(HgPeK82gnAE7k;=H^d?$8Sn}s0mrhe_F7jw5_2*&=y+L!im`b_y85h$i-$vhX^%@n?GcI1IA1D^1 zM&KJHu?}2Jr*~)?7jM!WTFS)?`j|Fxfz71sdoE_uRx0IU7X3{w{t&b2YYN~ZpXO6% zF6Phzn$E>rq|hoZ-llnEE9Po0eM#N>Kbc)KjSU_)61s5OCXJih5u+tGr=3*huqHG&iAJR11 z!o?z5Ma=>sKBARm34&Nm8)zRFOXw@Q%Eia@I=NUNmeL|x#>FyvKzq3Ogf7x?E|$|} zy1>P!w1wP)Ay&{vs>j7jT0uRzSVeEq+rfPNSxvLa&e3NW4pwlnhRW$nF4j^peG>`s zIsHj@xmZUJiJ~CZ(+$#dv4PC23m0FIi9P0GBl$6(XoxQi6YoVF216=>^c{l zDV(*A;p5L1N@5fXw3V8&-CS&=W~`Kp?bL+n;vjZVV-~^1*EEsM=i(b0&z5r`(>V4g z7dz=y)*>FFnDSVEE_Tr*c7u!EG?|$aAikwnSTYxTXe=85VGI0@a#@!RKGUP)|0Aiwii_8QHIVF2Y*ia*+npeJ*~( zX>5th@ANYD=i(C1$z1$_^L;KZQ!lokiz_%iTH$gPXB{s7#M!Eu+hYK1oC35iy@zDdW9#elB(jMXorPF&{JjL0v11`^K zB=zE=9H%OtLp~I}K5a^c(1Fz9LeG3zS1vq3MsVQ;n~hu;KyGv44H4W0!U!>% z3m=GDT_JoSlDIHIJh1hI@`IZE5`;g*+gzC02wK8L07#QGh(M$}rF!t3z+F4{x9!$k*(`CN2_c%O?-l_C{l0Vkay zKH#DY#6m8*LM-N@8^p(4bca~Rg{=qF3a)xWe8xpDCSg_q@e;%aF47=2a?u-N6Bm8h z8q6~w`m*n6a|T2|_9<=UqCX3z?Odcoe9grGwv1#h2D05$%!QSGPrJDoWMewEhpWNt zChg^72-5hAi=oV)wakPV#sn(nVmQ;$ZZ0xlbC8P>tRFkY#mgXPxEKlX6Bn5%&(={8 zqae0(kp=N}7Q|=>nTu?O`(MlzR&;1L7h@pGM?;K-sGAKj4kC(+@enawOn_*@#VZg! zxR?mhi;GveO%B8)i1u7ehDhZi7or;%c@X!wn8Nt@!_`!vhg?j9c+ACX5Kp;y9l~`C z#2XOqTug`1aq%XbPH9}s0BJoI!Ui#eig`N=rVpG9OOC zgH@%fisfho{}cr*rZSXMtYEPksS*WfjB2PV@fk>k1L+Hz`u|7R{y!)GDT~u?$EPe_ z6KhbiatF$@RxKjL=MYahSy$=BtDyqKCakYSRn{9=f))|Ki*Ec*Z(#K_@&!xO#74Z+ zt6pEiMr{q7Ab5|8f(F}vnFKZ z&3ij*N?}~=U`d+S4%SQ)Usp!-O=U4;XUT-B#J0mmjk$^}LRxC3ciJlbidl0lAGzO9jnaHah9wF-^AK#Y0YOgXYHL} zDb#=$@rTN&Pa^7rJnB=GX`E*5v^IR^-^h;$^^hC?gpxhx;%C-gyX9wD2dy=n!&F7B z25zH@^Q@CiixH|)r2d=etdVo9i$4lup1O_XT?m&oKR1IW2`6N7P zTzRUhC}V*vHww?%yDW%tLJwFl;zkLp#NP;|5>43P_W}apQM<>WWISqBJYF_E z!r~Ywfsa`X+r!g%#G=@KF3ORVdS9PIxbsviAb4BWIUv+jxs5s!kPy!>NMQW=FV;mV`^q}w!shBGv}6-dpv5ji zb5_htrbGBcyg+&gZba@7N4fA2TCw9?xC$-UblzVKm5F&Hi_iJJs~U*-&~%m?f5qCc z-Q4&LOV+aZ6>H1XEZVA&5fQ01;{%}%pH&h03Mpz4btZVJh5mP97F_8NUPE1Z5mj*= za}!krRC@8dsgfIPkmeO=L#|b{+G*|PkM&Yc0{w)k>=!QHc0RdLf$A}jF%K^Axl#T1 z4%`dy!Xd!LPdnT?EaZvM{49YxP|Z0*?it;OI~;j(fsWvpX8F$^-DKd_i6Kc-D7FEK4sFaq7m!azT_^N&{O=WmKcC#?LZ0_gD6t8P(3jotJ?|GNUTS##6;>W z)~7VF0Sy!z(O|I&4Yi3)vDlr2b?#hKsETU|Wk7%OD5}NGsF-`GUN^?Cv!HV^AddK5aTJC{$ zFppLAna67S!s9dA=COu$d#t5{9_z4%y`GMFY@n+iUr>q1msrZ)M0Y)GUy+AyGx_MY zVo7@&1?aX@eccXfruzmf+cLG$?WA;FF%8r0#sc@ZG*Y*RChNYVH+1{3&b^;z>JHF6 z-M_HXeTd%G9j3*)BlNNED1D+kM(cDZu-^RxZPuNnV%;e^s5?zR=+4l2-A`El{+X`m z&QhsOca9$F&g1p}7t-l3ke~in3eo?DW%1uBQh$jW=>MSRdcHb-mD=e4q#pXeut0vD zdg~P$qQ8kX@)8=MFQqK~Z7h@Dp$Ymjnx?-?v-S7r9sPY;q<@4}^T)JY|Af}+pVAll zXS79MPTTd*X^*~wYzOoX`j?)uBYJ@y(@X4(-j)5VcVidy?(B-*gZ-)3u^W0lyQ}wP z5A|NGT#wZVPah_D`Z709Kc@HeXGTvm3-k2mU%W}pL#ZC z>pknUEuKx;NzWwqlV>w_(X$1+?Aen2<=KjrdA4ScJ@LZrmCRhc+A?>q6lU;h&wRW( zFtb-jR?Djs3-wB6b-cQ;Sg)=u-m5!n?A4Ps^XkP~dcDNDd8M&FUba50pI2Wtz^fk{ z=9SK-dJSMUFDsknHHgje8qD7F8p;-U4Py(vhO?z!BiMGYm)UNwOt!~s6x-*O#lH8- zW`BC+uu`wF?6%i9cF$`(``c>*EBBhnTn(=>y%_{688$MwU!>5dS zuVj+uWL>;BvF_eqv6sBJFst`g zHqv`D%ktjN#(96uUh)2hP4br6>)t!ro8G&a&3iYS?forV=)H$6^WMvrd+%c_z4x;n z-Urxz?}O~9_aS!N`!GA{{XM(reS}^0KFUhGkF#6eKd`&rC)rc)Q+TsAo@Oq_GtAfc zBdcxvi8V6*%vu>Sy)~Z4SCL;>SK|fN!}u$E$ymYgaYRTrG65eVg-oM^jWJ5Xt423r zve8|bV)PJZ8g;@vqh6SAGzjk-y@f?aqp-~ABdjv|3hRs};R~amu*v8zY&V*PVq>7N z$7l-@_8Be05o54$+E`oo(HJ6}HHHd*7{i3WjNyV}j1WqUb%no;k-}4Bv`}u05d@!D z!ObU52=R#*B7EuzEqxM&wm$WRu09QfK|T$IAwG?Tkv>g@Y@Z}yoKG`hmQQn`z^8?< z)TfoO+^4m$(x;8E)hAil?$cKI#^#eE9QJ819P#NOobc%=ob%}GJPR@ zX4)uxZu(N#VA>>XHGL)QFl`aOF>Mu!P1}TTP1}XTCfg3-r0HwnjOiQUqDdD1H0>0w zn~H@Srd`5a)3?F{(;nfWX|M3av|o5;Iw(|_{v|NKLxPvzVZq<;dm+&8h!Ey?ObGWo zAw>I~6k`2O2?>6ug~onogjRk(3GMvO3LX5;3!VLb5v+a}gdD$Lh4FqDg*?CCg=v15 zgg0z{e+V=DE(;6%t_Vx~{uGw_T@#l3{UxmRyDn_>yCH1yyD4n(D-pK)l?r?OZV89{ z?g-!el?liE?h04@?g=;j9tfp=e+zf~9txuWW5LD$iQw-4RPgsN7Xth%gb;s+(7>O> z_Wq*S*}pODdzhPvFPU42z0EDfe&$xvt5@mCmSZwYierN709ya$E zkC@ZN<7V3c@vM2Ec*$%PFPjI8f0>7fx6Q-EGV^fpzBxlIH@_@am`92%AXC%_j1v6< zMvLZvY%wSxM{E)>Mr<80R!j~UC$tK-Z335xeFHxchXgJcM+UACvjSI& z(*swD9|W!z*9Cqi?g?BY9u8b9{u=nXcqMS1_-EjH@k!tYQ3(1%bPw7n8iF>7HgnKs z(Gs*p3=P^UCIoF0+XrnI2M6sCUk&o+ASbQAxy-1cLqG&lTx>!z#9+n?O zFUv{M&vHr(u$&exmNQ~q%a1lO!Sa(>-}1BA$Z}R}YB?u1x11MSS$+{aSuTh@Ex(B` zS$-D>ST2c!EPseYEtkbnmMdbm<*GQ*@~1f2a!s6K`AdAwqKLCBH^h0Cn_`irM4WFa z744Q=;v&m!afzi&TxPi|ermZVuC?43H(4HtTP%NzJ1q~z-4@$pagXJRxXJizr>ONRnc4ksexHrDqm5$zgGqq+p%o7Oa=_!Jd*S*h>lw zHb^1C-csFQqZAkHE7c1&NezSjq!z*cQgX0a>KGg#bqlsgJ%fX#-odq`{=v1Sfx)3t zhAlWu$_lO{S_dT^99GdNnx4~~`I4vv!wg5#wH!3mN*xSq5qI8j<2 zTwhud+(23#+)(-=xUuwQa1&{BaFX;*a5L#daC7O8;1<&T;FgkWtyWS{t=3XPtu|8I zTFFwMT5Y9KwNj*Mwc1HVwc1O|Yju!pTWWQb4%X@NeUfllLA6B zrMS>hQk&2$DJ^ugG%_?>ni85L6@-qFmW7U$z6u>D?GGI<{Tw<$QbJ#mo`p`73}LTI zb;2e|O~NKiox^gaL1B5)_^>I`%&@7FJ#3n^HtaQNXV~k~@vt|fOJUQcdtq-%E_G%| zfpu(Be4Uw6a-CUH?>e)k%sRGwX=Po<)W71HvEmC}}oRnkFQ#A@kW#AnjY zh&9slh_#Zj?&nfO-E~q@-Stw}x*Mb+b-$2ask>2{UH41r!@8TKb#=dzcGcZ1{ZMy{ zbh++U=|SCXl3V0<$r8Cksu%gS)IIVWDJN2v=0@(3)5`X=(Av_JA+ z(viqR((%Z{(%Hx((jSpWC7Tj?Ou7|$Lb@CIgY+Qsr1UKElvEMKNrlU83Bndz1(Di_%e6lqXG!@}b-)e|kGAfaXR8 z(z{VXv?$6#pG4K7wNbU{i>MI#J}Q)sM%AG|qQdD~RD_L6qUus4iXjj3OBQ%a9cqCwHkX-ISn8XDb_Mnt!w zoai?6YIHKa7TuO+M5oZq=yvpWbO)Lj-H{5TJJI~;RC+(UGkp}@ot8xRq;=8QD6~G> zKpU}tXLmIAnMGrZS+p-5k2cYXXg@j=ZKjLS0dy%kkgi2r=z4T8-Hfh9Wzn_iNpuLg z#)M%ZuMX*B!pSctf}&#TQesRLwTy|T)-f^EHYS!*W8$cPOgv@AB+$5+P?`YynXrEs zVVBwvU_(qKZAO4%1o#dC4k5q=1h|X<4`ULkJf;CYhhot^wlNuFn^0J65;cr%My+C- zQdew-IA zh%?Z#I3q2O^P!b-zO*~eL zH>2h8&1pq^3;H6yC4Cj&igv`erf=ih(4qKbIv(GaPRC>8!H@AB>2iE0x)$G=Zp3$? z()h0QIKCSR2|dUop(ptyyhQjDCNd}Vrq&64DLJ7ZwM*zvJrmNYf5HG7kT8%2C0Oa@ zgu#@VFobdvhS9i$;gp*&g5F4YnchtpNh=aEXy4+JdJ|}Fy;o>Wy@_<7-m7%B-ekH_FPHAt%cJsoQ%OpEojelXAn(NK zt+LO4FP9%OtKPRrC8;J|(N#Z&Z>aQo)`d^So{f*>b z|4Ry~zlp-@zlAkPezXvV(%aD7)mj)tbDeyVkVII^RF~D42#u-0$&U;E#6LT_!2T2# z;NF48LN&IX2ocyoDyZL1{uIJMv_leu>3sy|tD^2$SgSljvFOGRJ%*%g9)Kzk<^l7E64RT5J ztK#>a0YX6@*03i@v#$d#O4arOl9oUOxJ9atzpm3h5PwqJT6Q4 zOyE2`ToUOs@WyZ(TzK-@(afbOtpVqoq*}W)sKi*RY)Wgvn}NJqgRcbt9J~ei+8X>U z_&RVK-`wI722H-NVV?^J{5fqwzs4*c~Rd;|DK@DAW#)!>)F zzXb0D{-DgYR-n zpe^7%!S}jV--TfzDEpVBIh^iA#wv<)77hfkn;b%3_+iTFgzh;Q%d=w5vb#)Izw z?+-qy24Cu~WqJVka(CVWwBwjNzbQm~FU}9{)ddhd(9C)H`A!@c4-2l^5$b`jcQ}UP z4ENxjO*@)7^>8>_diYjitPn@j*T~QakTeh8=Cxz8hglUPah>A9JF|8acxb(56r8qq zJgU3R3Pkh`A{q^k&uT<;7@QwDIFHrfw>@}ABJ7RDRyB`sRr8BUr`eB(4$xI+sHF~H z5pleNvyH~J`=6oXJsvF==SW?3O}we|Qu$i^aiPwr@;qGMb=q+7v6D}Q{-g%q zpld`jM%dTDH|r9(sd`-0*;4VB_9C|MVt<`3MWeWe>$O|(CUm5}`WCd*YqiC*-A2#H zP3`EV*D^E<&fa=0)7)p6Udwbo^a#BhN9vKSZ$#fBLvQhjCg`hk^s&AbeTQ2x7ks&1 zYdAc_&-x_VivR`C7xa9z&i2N{ z%dujaV?8m(Q?{gY)a@#A6j-d3*pznFrQjPeZaWcpL+ zItD%fYlqdKMYi+$!Aqv|S7<~@@ zyP>-EGVdrl3BDd&@~-C5-gW5|_!r>u-eI_EM|bek;9tV|QVsr!w^mzUflsn|S67$K zJ5&w11=rc$)umtVov89{xUTfBF7a{iIx63R>q+krRrAX&Z!10tGwkk1xAg8`#Z!%X zRqw>LtI=K6y!~O%y;d!|p!*rMOmIHgsI`M{p{E$D+rj(BMEVi8;5+a|#_EUG9;4P% z_JQv+Ru51=I{5+cvo*M4^i$JUw;h)ltGiRVaUA`O1P&vB;FE=`c3?@F&Y@&S;2h`E zs1jqZzc$hx16k=)J<@IW(K2)b{2QO@3?1=_qw|R8Bp-iI_-LaNkL|wC0{R8r<}~zE zpF)n*1OMGRx`+Tj!Zpvghm&HTvadnaKjV7NSF2tQt~mKQ=xa52nXfPXhIoDff52_D z@}ra{E!V%o!^NaE5J>#dK{WqSw=V~p>Z+PwTAPAYeF@jLCav@w^fzg>av6G{sXj;Q zG1sKs%Bye{nyPQ5?K5Y>*WmGajfB53byNdh$Fc$xBr$t%< zp5Pb2P1U1=UsL)WCB6k$XTR!!Ynq?hgKX-q=QsSqG;3U!`e`+B7kas0bxmw?CU75o zON|7+_tR?SZ}4M&T91IlA5LgB^a%QnUv&++_-pOp2{`_jBHr9qJp%k2&?PjwXK;o1 zSC0ps{hQKdl;AmdcmL`VO!tqXE8q_Bnf}!S%PN2E*#R$F7$^4tkFUX-o3#?_!CRTDOWfP6719g5pV^b= zMLjaiVOsn1hQ~;=)aisti*BGB*8!IUhGPR11df2fFuDc%2smrwZ{Mo=U$elgbcea98?)O4 z{-zr9izVoDY<6N4jR2uRtLSfMMEiom=^=D1_`#r1Y*x||xC;IlIv&oyz@Ip|i{&GF ziiGQddsyt))1=uivsuFFIUM!j{?t-k)q5;j)$z^S`z+N}cihPvgP*LyFIehP1>$K6 z{=22R@wx>^kprA>=hg>TH`02+VHk8!|9n?>!{F+NP0!#K#NfgAcJ~f$T2&Ko2Wt(J z@9-`N)@C)_)9&PL!57uwE1bL?_-b$gaq{EKV4Y5c?f~cJU^kmia(a9d*^*qaZHVvu z-W}PL+?@O_{sTPj(4D~_L{_(6iqdMOE4YY-xXMEx)du^i@LmA!8kJCoRSHTy= zRga9z*ie3$y@_}8_7xZa4@2CJFirC6}5 zJWL7ks+2_FHz+|zU7XdJnQ)VJgPsSTlW>i7 zg)V^hNc?{axth=>f+#$1vq?=w+7wOckJ(sFll0J7JZPl|rHX>oAB?s}Y1FoYP!v(5 z9&7_1#aIZq^uCEWyxOS*tf%H?mZM z5EU*ql{l)_ufqNfLESmg-c{d2?X=RgaH0J$IEjcZg-n2T_@D{-wG-GHDxf==?4gG1 z`dQ%P1$bv&z%k(RC{GA!GKZ>Dj~oI)dZ^cEPEsF;3^_e@XlnshlI z%+y7Udw7{b(Z)7qme`*t PqTvrZT^>8?q?q$J7A*~L delta 29291 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 IWQ=A7067g!;Q#;t diff --git a/jopl.jim b/jopl.jim new file mode 100755 index 0000000000000000000000000000000000000000..7419a78cb16b5e18309e2990638837c999ce421e GIT binary patch literal 5172 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 - for dup i 1 << 1 + 0xb800 b!far next drop ; - -: clearline - textattr @ 8 << - texty @ 80 * textx @ + - texty @ 1 + 80 * - for dup i 1 << 0xb800 !far next drop ; - -: +textx! ( n -- ) - textx @ + dup 80 >= if drop cr else textx ! then ; -: emit-direct ( c -- ) - dup '\n' = if textleft @ textx ! 1 texty +! drop else - dup '\r' = if drop else - out-direct 1 +textx! then then ; +: clearline begin 0 emit-direct textx @ textleft @ = until ; : rpad ( n -- ) textleft @ + textx @ for bl next ; @@ -232,7 +206,7 @@ var textleft track @ dup if 20 0 for emit-status-cmd next then drop clearline ; -: trackstatus cr voice @ showtrack ; +: trackstatus voice @ showtrack ; var tempo userword 1 tempo ! : player @@ -250,7 +224,8 @@ var t2 t2 @ 0x03 adlib! 0x42 0x04 adlib! ; -: ontick startt2 player ' status 0 textleft textx texty preserving ( trackstatus ) ; +: ontick startt2 player + :| status trackstatus |; 0 textleft textx texty preserving ; : keynote [ inline| 44 b, 31 b, 45 b, 32 b, 46 b, 47 b, 34 b, 48 b, 35 b, 49 b, 36 b, 50 b, @@ -301,7 +276,7 @@ var stopkeys 41 key-pressed if noteoff then 88 key-pressed if rndinst then ; -: jam ' jamkeys dokeys ; userword +: jam ( todo: print? ) ' jamkeys dokeys ; userword var menuscroll var menuy diff --git a/jopl.prj b/jopl.prj index d34877d3ed1d7bf33d22e6feb70fd0c0e342c78a..24426a0bf8da4c3cf10f9e7bbcc5d1cbd7c06a3d 100755 GIT binary patch delta 480 zcmX|;Pe>b45XQfq-EKBTvJuj4jV7sJo0eioTB|i(waF$Di*~nRr6K{5l>WK(AYxIJ zTw1*J@}TtOSxRBWcoyo(gCYelig!z|mRz52H?|Mvdv9Ron;-KUeZTK)rB$V}Q+JvV z)M>T9ML-;x!ER?5R*M3#4UFGZ-4eK%7fDu&oVCmyFTkm+Qb|JoM z+RawScS%p+q*-^qD!{x1c+88;y-CSQ;VR25I;Au@bVwe3p$6TPKoMG`vh<#6)I$f7 zMc<^?66fdmi&30n7qj996m-K9lnQQZHRBfcx9Se(0`U(Jg^D9FlR0`!IbJqx_D=6x z`(IN*G9lsa*(agNMC|89Z~iRrJIa_^SbGseL1^2T^U~x*k^AT03b;S1om2#eh7dll zn6?&hgad8&UJKsW;RA4va0uK-&19IT8*EeGV;j+zO2By$?GO89&+V#PVL$XZvpVl9 xzAgLEY3Itg>Hh&N6j8u4jEN15z{FGJF^ne|!XO@F0FUqxIb@M#4Kfrl6PMStewY9N delta 281 zcmW-aJ4*vm6oltoubV_xb`xTh)j}agV$Awp-%TnN*~OrZ3Zjkv0Bytvij{>RrxgO0 z3jr~)u?T2w6MukMilrc?yWTkMeBaDx|9Sd;z>wuTGpOW@bt85qp!0fg#y{qs(TU<| z)vxTfhh%jj)YMxG;1W>cZfmOI+ZZZb^y~e(8%s%21uY zQNsp#P|DMe2?MQqk3X!WY@AemZdhqUDXc6N_}NbJll{^LL=i#e@WJOJ+p(LNCL&P1 z(XEv0@^O4sDjlxJ^RZ^T92D0Uxn?`um&nS0(N6@~c_j7a9A+_tX-vVxBqlJ9F^pma R!*G$u5ONsg9oeB5fj?M}Pmcfq diff --git a/lev00001.jim b/lev00001.jim index d201aed71233cced09fccf07c522a2f008669fb3..40210bde303f62955ac0be2f6be18d3b2b81936e 100755 GIT binary patch delta 750 zcmZuuO=uHQ5T5+Jm=-C4V)bC-2CFrcrb$s03N_J^?1&fY~MsDdx{)+q8v} z28)y&)Vff5(da?YgW$=FP*hOFQtQEjP}GYT@#4)xJ^0=>f{5=n^Zm@s_tusRnW^tXt+e;hMR7YSm5hOw|%cl_f^TRG+tD*9*@uG1Bds+36Zp$ zJTQ5j(T6mv>Oxhm2x>vl)UuwvI;~#OJd9r_88CSfz!%Gj+gr{)RtspWJZG+dsM&Y|YTRjbgI@T4dceK`zKVBT*h@2^9;y zHC-r{v;xm&B~~YYYbMB1<$dr#DB7Vg-6vC5m&eq(Nll1r)4Gsm@n*GLiGM_hnckP< z;fqw5@%v5(d?(B4z+f^FkB!E|E&P=%$zeqi6e)B*EYO5NLs8?GrQPlDF5xqwdTvMH z|IKIibVzJE-_)ZRJ=Wpl4sSgE?|N^QO+3TSnjrHgbyhK!tpTUQ%XM!QE&tAZnS4+_E7YVdh6-ft( aqzz(6CfNypP8mPMW80=8*_J*J)yZ$h^wPut delta 750 zcmZvZ%WD%+6vj`JT>4N#RH$8;cmq`lwP_OqMT#N8i5ipUo|%bMLMR#2!35hRP9{yO zv`LDK(uEXfQ}GFIM6iE=i&7B^x^Yo;;lhP0H;S%AsNlV61QGA`hFQ2))2`}Xu5Xbg)&&fb{qFcSeqy~1n9-`{u&Eof@X*!7 zugnJ10dV)f#%#g{Yp?|Xy$EQ7sz`??M7qh--FOHo9_An~z^}Hx3EyCsoy1c(%E5Gy zgPo*sPl2Y3Wt zb_*ZiZO*D4)>4EI_{{h4DL%(l*LBC1XVLyHvT5(e<@mk}oAwO(iQ+~-FwQSjE}dwY zv|Q0k;x;?U7WvzgA@AkB$W$cZRJm_W7QT=?p)Fk2X-cn|G|$gl&}S;*Bc5@XmQ%5d zX*xIR9}DyL0kB^;k!Ta?|6$!6Q}rE88WO0>5yWr*aAIxJ$7k^lKlt3t4? zSjX%m9rZ!g%G#w)Fs@op>|SR0zO-AuI{TT`$t870pBv>b;GfkhaAiay&>2-CPLN11 YgpS_iEBskyazLDIMU}`38yIhq->wAKp8x;= diff --git a/lev00001.jor b/lev00001.jor index 0deb738..25f077b 100755 --- a/lev00001.jor +++ b/lev00001.jor @@ -59,8 +59,7 @@ sexit :noname jaye say" Neut might be able to\hack it..." then chain-listener ; -:noname - reset-level O +:noname O s" lev00001.map" load-map 0 player.state HASNEUT f! diff --git a/lev00002.jim b/lev00002.jim index dc76898e988483ffa09fb1c7a7faaab462f019a8..a84524d88138cd973c3905cca769acea6e779444 100755 GIT binary patch literal 1140 zcmX|=NoW*N5Qb}E<`UxmNzO=kyjd|pcfUT7^BoECQ(PRB_q&yVGdRG*7Wv0CMtSoWa}Rw84A$_rw-7dl}B?!Z=+7shfo zWMD6L;Q^Hw#c~VSa01WbDNM>Z=~%bLeg%toP3;Fnein=g@|$b@JNOX$1+*);G3UN4>ttXf3EK4zcp~6T}E`5N?xsqpa650b2t~w*j-j2(76*~dZ zV$mh^!Wdl3+jxCIw1J2e;hn#SkMO>LXwwn72aE9ppW{;j(UC*aCU4^p|0?(KjezLF zLL%cNrr}+F!uO@=c5S++QKxBwiVXk!r=f+INEl$mix zfc6yuNc3R2sWdYbXj>7m;TA444d!_2P|2$)hm*&g{^Wc5)X2&HWRvyVI5Rt}ize%` z$$5^+6+GLx)F|hCbB^t7j_V4Z=hhiF3nMGk{M7h)*J0NdV4ON*uPdykW?sj}ZM2=N zM00G&F$MY`_-RbNl*)N^xvc9MyWZjETG#b#a{U5@g*~s!I-Y|17k-B|VfD^!`_uBN hnzO654Q8ja)@aage(L7hH+I$McZ9434a*`5{D6v}Qi>jy z2ty>gL|)GLvKO`kH`aAXyigICVljP#_6#XlLzHTMtSH(nxrXu&yh}#_*b3cDJ;hs`b$4NBE^Cs z48lV-PcPGpv}B}#fQ-U$2 zfD#8M^^|@uK-vm`1-o%Z|Ix+RvC>B?jz{jN#v*<6yWT{`B0HnQ=H~h%Q8XFbxK2Lp zIx26uw$AZ7TX2k(aZIhs=j~e8&OpaHF?Sox+G%534BT|BYc;9{T`-NtwR2WF!%@e$ zI_)a`KQLt6IxgkpYn_apcdfd#Db(0@-qJQI?H3-%bw`V_m)lRPBhlyP;NHXK{7Y;+ gw7U)VZOTOFgZwL3o=!itGSPXwTfn=1-gQU+0TQ||U;qFB diff --git a/lev00002.jor b/lev00002.jor index 56d79cb..6ebc48a 100755 --- a/lev00002.jor +++ b/lev00002.jor @@ -48,8 +48,7 @@ c2 :noname neut say" THIS INCIDENT HAS\BEEN REPORTED" then chain-listener ; -:noname - reset-level O +:noname O s" lev00002.map" load-map 11 11 tile>world Jaye entity.pos! diff --git a/lev00003.jim b/lev00003.jim index 418ca622a4c5873cc1d5037ac243dbc7ad67d479..0e869e4b95a68d3342d2dd090375471981c94116 100755 GIT binary patch literal 2358 zcmaJ?U5Fc16u#|dx-1pDDqZ|xw|AjX)~0K-E&fpHb~c%ArcGv&JCmIx9j&v;-DEb& zOqiMMHU+Vv;!iUgmls>c%MfxB<)LI1oRZ)JZ&@wOH1L*xP(V8d*Xts(QV!15{pZDB`-zso)}eiOb&BOPIk zttLK3_)$SuCn3W9>`|6rI{=tR;F~l8O?W3*hCRo007^0P&hTm0z@HfKcxb$p93la; zS%)1!02Ay2A44WDu{YS;>=+v$`@wp2B(8PcX2=Ql9y`n42b1yv0M>``c0r-d>;-m( zT?D{KpqpU^fX~@A_7nS-MF`^u5c)g!$HoCdNrwE+R%w5-L9$S{OEvD1Bf|k3+3*TY z2ue`-}0?#eCO1upA1oRF@z8ZURASa$5nAX-uw1M*jMdABgLRdwn zwb6+2umVLoCS`Ln3)NBW2B^uqdz!M=bE}(~lq6~rg&-MKLEl3Y!?C{qQ(!3QM%4;vQ00@8 zlYpaaLYIB&yAAF-oZ1e8G~iytcC7kzPbZ=G^ST`kpr>P)jRoK=lO$bMX0>QHD*zFC z86Z6gHtKW5z`VCm4u1MoCa#cG0gMg9lmB& zhUKC7n!Xf^Qkhm--1qx6tN$oH zWu2IqkJB}!$Nhy_yhAj>wo>7l09bq#t*8{rWi@CRQedbaFnR_cY8o@N=xwJYXLz|d7 zqv~=T8Yt_goRAb<-dzZTYEo)9M0*vq{kf#ww&=X;`{Sm(sX=keq9K(QEyoUAZ@i~@ zY)*8_wC%P$I?w%pE_gO~%7|jr59h?&td?P4BqpbN*cWqQrT@Dam`gQyS_-z?U4o+v`)|d|4u?IXLHxt4df?qFsVoOo@$UxGZ zG7ybYtAQ-8TV>4K=Ny}aHW}eu9`$~{m!28795kQ}cL@rw+CD9FzlMckLjM@O0t2tz z-F%cjlAomEYmUPM^6*YTWLq93E6*K>o>yF4x3cSO!i&UqYH%u9PJi_d=Ve;syh(ld z|FE43_B4P?$1K%3Pyqy?s4{)^8MLgE?~Q!FNj_^FIsJRLI2Wx zw~%hrI$W;{K;|vpN4-nXDz7)g z%vw#<7=onsW$<674qY>=E&4OOFoLYE0qR$74iEw%i?gaK-(Q3tTmN120 zmY(ajYe~0<8+kW;U#YuxAS}FrSxNo*lHQ-}VFE=+F6N5wC^C z7OXsUgToej$aC;-!g``<73xH+M|({CbP;H~$)^<;-E@R!Qp>{SVx2E-g=gDj!)lUW gpGXLUuv2SEYQvtH>$JOJ_rYoZ%4rZz0h~I*zq2l_od5s; literal 2350 zcmaJ?U5Fc16rMJjF16AvNOuL4dg7~b7 z;#avA_Z&^r7f^g`OZzN$g)7iSs?uHD(sXG1HGtOX#=fWMBNGCAFUGrk9c%)OkdV>U zyAYvFtMmeW4S*#C&J+-6!5h%G=m+!?0F`O(oqc!dC-@Ts-iUNk+*xjuUZ!8t&k?`` zd%(w#$rtoH`V+lQW85oXJvQ>X+H*^}AL%XnH@yue)sp~>M!rr!p+74RsiW#%6*5Gi zmmvjUzdEU=)G0O2Y3w9IS!45w7)LnDy{OKsC)6Qsx#3h+na^$P+oU50&XEj1%)K$* zF_ zUXyt)BaVw837Ow?T)T0+uXAB5ulvyenoD6e9|4%vMA4Aste)s)1t3CS17zgD20pTA z8e}b%e11Clj9-~P+E@7vRQh>Cy@p6+p&$}L&RBRfbx<2mVV-;S`@XV@hUKAnQeT@+ z5Q)^cQnV_2&vly02vMgqZDQ85DWJG=5GG$>lFA_r`1*Is0n_d~`z$OhdT2M^r zppec%<|5Hcl9A3?vtmw?Gl*eJ##0%d2Xeee{}>+-1#`I!E+k@@8b*{1qR3m`Zvs?U zfJrG?O(+x~7b7Rg^ST8t6Qo}cwv01oNJ%6mDW4}j5=0s4O6089iYGxwCfeS1Kl6Q+_W)Z?uv=bO&eozOyfLk$T=OGEO|jNVM$X>f?Jk|sI+3cPU!g)ea-8J;8sb;Yx`u0 z1tD4X9p+XM#i+jo3_E(YfDvbo^3iOX1(G=aq)3GG!zymn|I z!AZ^bm+Trljx$8{x~bG5>CObnvk)y{H=GcYxhQw}BgXFD;;+~pwr%B`u=1zPLF4Wf zv2mx(vG^VN%4`MverDzvIL*SXaXf0r%isaInc;VF_8(NGbtfQI7OY~Sn2=QL7a01T-sYpUQcRNQ zwI<*Jd2}Zra;Auqt><6JrK0TNx>Y@Q3NI4JU4>J{b_c8XRZ$|VjI~Gr{~wN9!=8q4 z=~$Hp11f;P_m;eHp#E1e$4JBTRs+&-U{-MXRJ?YhYBikYkN~CHPNND|sDCZr+d8 zusew!lL7Bt@i_0{(qP_0Wo*&gCBctoMCxrn99)z?lnNcvU^TLC2c+e=E~_RX?ti*P zTEI!$?T~fm)aoJeTp%9Sh^}Mh9P@z@jUFlMtkH@xYqwD2>cLa-n1cU2+td1`j5HiB zjm5DC&z6n4?XE^QBKlOynP_57=7!F;XdjlN`9bIVVQLW8_PsXjsk3Y$sUis0!?o9( z8nh}RnANmT!EP`Vb1>VRWxNVj+OX!(4F;R%Be%i71uKcBb*K}u zKGiYtTVworld Jaye entity.pos! diff --git a/lev00004.jim b/lev00004.jim index a73aeb65237162a37e23b1c48342b32f0e5896ce..fa97c8d868a70368cb7f7b6a52933c0dce6d9bac 100755 GIT binary patch literal 674 zcmYk2!D|yi6o+4v3_TR;qO^!m9ieKgO`F()2T|J+p~l!`-UJUJVA5o=*_vd-?$$K7 ztRPAbB1MGaL2n{ng7^pY;Kf5g@KA~hBH~G*C|Eq{yabDLd%thqH^1GBlXv9tOEvi@ z&=oJm03;zXx*ESOyCML^D2$D6CpNAIAP2hu@LB9oeD=S%1K-4Nu}ksnemoCPA&3SJ zqK?;fJaUaB^ICCN9Klm~6hnY&ozPP9=Xel0+CPhncn$}l5Dj~I$Al+FMy9l(Ks6pN zlcA%FWHEsj<_J)cKHy-0iEDTpn*^xJKTy};K0d|`4O~)v>8WzC1$*KdzQPv-NYw`h z)L|I6u#2w=P{%%q==vvc2fyM+4OU3?q4!-6;4QT92mZld1W45f5&a+b#E?8J4@eED zRUhQ^8=u6ujLHcDbNisBRhxK0#%0@R;mmS|t;!arSVeB4&lcn`lq|>f!lvyM!>;A& zMS!+(Z|R+Au+!rXTmt&#lXBuorKKFYuzxUAwBhvQ;y)CC9GPcA=cN zoT=W`LcYf9+UjP#vf>$jQ#DEFvl#O)r-mAAAze|oBKpitSMzoFJ`-aHA;vf literal 486 zcmYk2JxD@f6o!v>zoPA8;3i45MC4CO1c4Y_=m&q!aR~xJQwu^tN=%X<2?}f|s;$Uq zDr#_vh9GjNu^gHVqM?S6LfRUFzT+k7Zs&dAxzD|xzAt+4+)~XzID`fWg3nx;s1czN z;!d!bZNB$OBSfG90J9k8dGOy{hBU5VhG$o6_QDZt;2v)BoRf31De+204<6zf9-{)G zM2=A@aNXMmW$C}fJG{aUh&cx`(S|&g(`GUMOC47 z|Frldg-|reLIqJ&Q)5%OBsxRMMAji6w=ES-!@gY;CeVZezV7PilT{O4@)GiTlb1DE F5WkEmhbI64 diff --git a/lev00004.jor b/lev00004.jor index 4ebab06..fb28733 100755 --- a/lev00004.jor +++ b/lev00004.jor @@ -5,7 +5,7 @@ objects: O 15 6 door d1 11 6 door d2 10 4 door d3 -end.jor 0 4 exitdoor dx +lev00005.jor 0 4 exitdoor dx 15 11 defrexx Rexx @@ -25,8 +25,16 @@ defer c1-targ :noname c2 computer-on? if c2 else c3 then ; ' c1-targ redefine -:noname - reset-level O +var first-gord-sit + +:noname O + + :| first-gord-sit @ not if + 1 first-gord-sit ! + gord say" Phew, it feels good to\rest my leg for a bit." + gord say" If you need me to do something\from my chair, you can press\the Z key." + then + |; ' on-gord-sit redefine s" lev00004.map" load-map 18 4 tile>world Jaye entity.pos! diff --git a/lev00004.map b/lev00004.map index 212f8a2be4a69fde1bec98cbec6fb6bfb8d7a7dd..6a11295af77e3cb4644ebfc39fb3bbc11c9d21a7 100755 GIT binary patch delta 16 XcmeBR>R_7S!^k($x0R87;$>3+C^Q8G delta 16 XcmeBR>R_7S!^l3-x0R83;$>3+C*=hB diff --git a/lev00005.jim b/lev00005.jim new file mode 100755 index 0000000000000000000000000000000000000000..c912c693304a8cc25b7d915bbccba108f088714e GIT binary patch literal 411 zcmXAlKS)AR6vmIed!R7tQRq^ULIlBm+0qixpT`SAEWO8s2qH`$Wts2cpAwcG}FR(q>LJclW7-oO)noah+ni9$JDgj{-XNLN=aBS_l7WsHk(^ z2rVeH)Oo_eHR^_}{F`Q5Icc`Ut#4w~!Gdi1!$~ujm%L0ZvFh`%O@B(dr=&t6p3#z7 z%hvvj=l?=69$+v0SaI-*`XOWGH9M8qPi1zrg5616P>r8!QRz1cA#W8DyOLH}mA%nD z-6dSYG literal 0 HcmV?d00001 diff --git a/lev00005.jor b/lev00005.jor new file mode 100755 index 0000000..0b4b087 --- /dev/null +++ b/lev00005.jor @@ -0,0 +1,34 @@ +( L E V 0 0 0 0 5 ) + +objects: O + +16 7 defrexx Rexx + +:noname 0 MAXTILE for i tileflags + b@ RUBBLE & if i b, then next ; +array rubbletiles execute +here rubbletiles - 1 - const MAXRUBBLE + +: randomrubble ticks MAXRUBBLE % rubbletiles + b@ ; + +: rexx-pos ( -- x y ) Rexx entity>pos world>tile ; +: rexx-dest ( -- x y ) rexx-pos Rexx entity.dir @ dir>pos +pos ; + +: can-drop-rubble? ( -- b ) rexx-pos tile b@ CARPET = ; +: not-picking-up? ( -- b ) rexx-dest RUBBLE mapflag? not ; + +: touch ( x y -- b ) + drop drop + not-picking-up? can-drop-rubble? and isrexx? and if + randomrubble rexx-pos tile b! invalidate-map + then 0 ; + +:noname O + + ' touch ' touch-override redefine + + s" lev00005.map" load-map + 18 4 tile>world Jaye entity.pos! + 19 5 tile>world Neut entity.pos! + with-gord + +; ' onload redefine diff --git a/lev00005.map b/lev00005.map new file mode 100755 index 0000000000000000000000000000000000000000..645c44b517aacd428841d32383efb6e8be93611d GIT binary patch literal 264 zcmWe(;ALQ7U<6_afU|g+n3&Ko0~0e8AQ+4YCR~z%7tVw+II-zP5(8QW0SLVit>Vng YObB%_<8X+L=ze$>Q)QX*=HW=_y$^6M-_29wXG>O_;laRJp8`u(>iOxDP#fcR| zFC&QmE(O6$5HBjYm$F_gD=Y+0io0I+whDp=FXCPnL<+0#O(xaL@ZR_P=6m1od%q(G z_74v4j;4Rc52@c$acDWN?b)uq)PjTt@FBGgobxMH*Qr%ow$Z3A!_6HHZB_Hdmy`;P z=0(rG)V$!nUxJbIJ>gg3eAESGk7p*!)J5Tc zeGqcRV%f+}7iaQ0!UkZ-2(e-*UkI=`B#k)CoSK}?9uI{F;Rj=23u5UZIA+9PCYvdQ zlwEMzh=u?YM&K7Bl=JiRMybf7MxjjrEr9R*BSko+&gmB3*ORh^uPDS@#t>z)bdHx~ z*PIqnHd7;L?Y%p)AYK_cA;GwOIOyI4T~f{ofP=#?^u+LHDuKU`{WG>8z8L&hPM^~! zaHsx!>|eqXCNHoO3}j{pZ-^VB5c9>abp55~@?{?C*=K0xI#$%g@RZu6{qlA@xUp3| zL^ zRsL-bNZwhe-eSNaK$ zDjj?+8f3Jrl$D0Yt65Qm;)^F%OmdsmT9^bAUkXQYl#0rvE6S?Iw6{d7JFXkj*fOhp X+saRAt{1f~Cgq7OTgi0K7F+rXXJ8{_ literal 1101 zcmYjPO=}ZT6upzVZN& z;Gzmr7cL~YR8f$w#NsX+!S5fS-3a1NH;M~4-aDC8H;;GEJMY}{&V45i9_Z=Y``k|B z3w>2jK;88m-|?J5+*H{Op%t zn1F2N+;jxQAZ;j6I5*NhM<^KGp;E;wE&8F+m;^BZ1SuAy6(vC0#7agNOr~e2&xE>3 zSR>uh++^O&ojOI05bhJ94P>bn@YLvmv0ScTj!xvJGGl~w!^;kq%V)A7mVggN0;Xop zOpl(9qv$JMC$E}huL;z*X&pJsd zjjJic#+s3mZTv_%9W!^(vllM#9GtRSC(0|mAMJe)`sc)Tb4*AuBp(l}+hLWG#{|IP zzI(=C-z$9(Uk-d4m=n)TzSV1_j1k<@Ul05s?5)W&DuxZ2*~B%mCbIEB%$hy0P+Pvn zO?_vPdTwA*9qb!dTQou*U=ugDcaKo+3dDOeAzgNSx6%1BO{{8s?WQ~@4q0q;6Z7JT zwTW%hY;yw}*upX~rY+{SaLe2zq|uufN3C^ykLzTMzn)|v$8$C Ko6Qc42h;$>8EW4E diff --git a/state.jim b/state.jim index c26897f3f90a1011e4e4667e7f4c63d1207a7b75..57a8b84a29fe0f281479cc3f681fd0d43dda5ff4 100755 GIT binary patch literal 277 zcmcE1ROS|x)H38`^fF*K;A9L4@^{w_^K=bo_#(={;AOzY;O67#uIua{>K6hOVq}Oh zU}Z?lNlY(hkQHOdH{gJ9O7hbfx&*3NTv$06ESM_|6qsj&*$&Jutc(n^Sza(Vvep=| zLlmbe0@ZdJsPHwit~6j}1exXl7V!p(>@{F#EKV%}2?E6+y0;oMvYrPzE;%PPu?Q~1 z05lgQ^W1=oF{3m$F;BNFGqoJ3shm~8up~1lwOB7bt%6~ln2=6{!B?O{MxZYXit^JD O>O2ke&=uYWDg*!_s7WgT literal 277 zcmcE1ROS|xykWq}_(OlIJ||;9kiWZbn5Szv!xvEoh9CM|3~oM-?z+zYp?)DiAw~u+ z16GE#oW%5E23au%SpyCTrzAg(p-Z5O#f6oF!Gc-cK!JHSnC-yq!pg`no8<*_BdeAH zJ4A7sB2cZlfeK$EYq$X`Bgixdu!uKMB-?O{Eqk)@f+rE-hY?> l0g{@isKtk>bE2Zg!~`}mkQOj_{{21}z6WX9T*KBP2>@KyJw*Tj delta 99 zcmZp0XmHqYigls^i%|n(10w?p_zws6fA0T|{}uo1{%`v~aKZl*74=v^x`6b=1TG