From 00abd601ce87faecbb6635100b908b4cfdec4164 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Mon, 17 Feb 2020 20:43:14 -0500 Subject: [PATCH] implement Rexx clearing rubble --- footer.jim | Bin 1700 -> 1717 bytes footer.jor | 1 + game.jim | Bin 3568 -> 3937 bytes game.jor | 107 +++++++++++++++++++++++++++++++++------------------ jiles.jim | Bin 1575 -> 1575 bytes job.jim | Bin 1149 -> 1149 bytes lev00001.jim | Bin 1048 -> 1046 bytes lev00001.jor | 4 +- lev00002.jor | 4 +- lev00003.jim | Bin 1173 -> 1542 bytes lev00003.jor | 26 ++++++++++++- map.jim | Bin 926 -> 941 bytes map.jor | 9 +++-- portrait.gfx | Bin 8192 -> 8192 bytes state.jim | Bin 277 -> 277 bytes 15 files changed, 104 insertions(+), 47 deletions(-) diff --git a/footer.jim b/footer.jim index 78718a928d2b89dac3107895ecb30c6388b5b5f7..fd28552ab885683aa08b289ee94b7564695da029 100755 GIT binary patch delta 92 zcmZ3&yOo#Ih(VeAr^E~Gl^Z#o*j$TJD=HX##3pI;F)%W0)n;MLN~}x;3ve=3otXVG91%p cWz5UZ&r4 dup @ text-color ! cell + @ draw-portrait ; 0 LGREEN character neut userword +1 YELLOW character rexx userword 3 LBLUE character jaye userword 5 CYAN character gord userword diff --git a/game.jim b/game.jim index 03bdd94f4ea061a7591bd2d870960e259e35d00d..90993af2bf5c9b5046e7e915b3bb12e85b7ccd23 100755 GIT binary patch literal 3937 zcmZWseQZhu)B$top6_l=JpE??t z0rqE=fn+Mnl{7f#RCPqYDTjURV_Ow#$7ML;4#`nmRRdOuf_Le5yf%9nLwd+n!Z+?&M(Dslk3{4NK+v zvzZ6dXn6shp}5@`S$Zd>+wG(;FrY#`(_E=#akCiP!~>k=j{llKm5!+eMlh1dBYTgCh_B?QJ62jzf^-yoQ>sJB;smcW`HXu#$+-EQE|c<1Hbs2LhysA3u{5Np{kJ5jZh8DbiPLGb_@7!n_7*B~YeEPy01#3KR|tJw&< z#&#hX#xn>GgnJN-GHca{Xf~+WDIol!Ul!+b)_*9ZzdlI(HD)qvF?Hd+{e=p-5{Ga^1&riC!gXryH70 z^Fg@o8n*s)&GZrtR;<|>FfMs=Sv+xHVvMp{x+nmju@5Am($Z=YnUP6)3 zb!zaT%fd346q#;&SEisQbI9dM3rXxVm3YASna-O6mcFJj;W_$?tMiz&S$8c~NLQ7}tI;Sk^X2zTzqPjJ*Ek#t`Z|7{|9THz0x_=UTkQCZmY znL?tMXOu;%XFP{zp;m;brVJ@!e*v>U2HT{A%Ox(_^mMQBVqsfel+f_YfVEx6*a;sl;|9yl&wU zTfK9e(Ja?{>z#erzF)?>i+EpO8HM%U;gyt!TNb`zi@|oUUQCDDrbQ}|9*$}Tde}e% z96fBHM-8;V(US&x!ay+tyb^5n%*TRW=rvbmm7J2VuqMkhj%KWcy`ltfi&3)#qxgj# z&^!pYyu;RrRRakwI%r+v8^#1Fr>6vqBto122gU3(YjDNp z*+3cjgzu8kB(_$t4#Y-9lGr>y1{vQf`>U%DE&AMJ!=@2~BR=9wk-p%S7U&J;u&?ML zZO`J#D7@sO2G{O0vt%|tINRE&K~`g%nG_cC-_&x>2pe11wa?fzIEwN;=~O<^JA1=Z zKD_Zld^@%de&c`j)v@kEI&CM#=+7;mjW=?;e_ABX68xAwY?>BHzXadH?>n|A`256p zT@#hK(z{4(2mD2B^SXQi z<@Jb;8XCTf2u1CO{vKK{*BC$;*TA}DGm|2b4R&`Z(&>>9 zt7F+R7KwVo9II#h<$Bh+S>EXO8>-CgMY*m5k+Qk$BwFiqi(x}#9(xn5=>Q4X*k#nL z_kwl#R9ZpmH1!TH#|NN1_ud_vDJ9{iyh7NGli=TSBlh@Qe@0CzS$>lCr&>yaIiSG< zfjVrdJ@^_Jh^Gcd4eIQM<4CQARVk}kAfOJuvCL^(9F8hadms8ZQp4KRgdE^$3hG4 zZ#jcn`hympZuqFFNKLieXt4>8Rcr7=)L?{#auThSgt}l1t_PO|V(`b{wZ&0*FL-nD zSg<6}o91sp^7r-NT$af6^%wF=7Q;!msmgSh9|jxC>helj>Ca?oMxI08C!BAXRC!r| zo@kEHSg2wfixmy* zL3UI+B(^nFhyLdBimGHO1xmb-_J$fLKb0&Mc`}p95@($kz4%|?%rtlr?bEKktO2Ep z!pTq!-Vfb&y&!)_eg(ap3<+EcH#b>DFVU<#Iq>6Ba>lm^~C~3PgfJ8=wql+~t6S=`1`w0@E_WL}(xlgp6 z=8uKh(M?GKH9G%Cc&Xax-^aa&sLM{ RU5=NvIKM(WO>1bt{}=h@j~M^} literal 3568 zcmZWseQZ~ zw*6tp_jk`d=XcNN%?9G=+28$5^sa5nL$)%KPZYF$?&`c@(xqn6?Y{IQuS~Dbqg7 zMUR8NZBf{mfWL0qQF26>rkClTJt&_AxoMEkgC#t-9oAvnBrwt0GNGj|pGoXf3*Rql z2~CAdHInCqR$_wrf;y5)7x-O&BP^-wi9HqS4UjJ!b>ti@dt*{G6o+L!c?*`IzFyx? zx5JW>IiaC0C|1{vWFEG&xnw4t2QN$sSA|`zI{O%e(#5P=(mWh}Ux)zufTO#C6r#;y zp9Oe|OUQnN4glm5r-a{wC|)`wez7{vBI4gx>uinKR^^>cWQTJjTmc%3wDy7Q^J258 zu>Im|>*DNycy!(8@b@JV9U-$iqO%?mVvk1Px|8&WVm+B83uFRO`iegDJF;1lp9GbCdVlIN*uSpuz7x!&f2!>?6znnT%x9F zR>ZtmC6pnCk9%*e$hzWejn^QEmtNh9{!m!idq!~33eSoWZ<)@DDL{wd*Cv+(GOP>{ z-sI|}pNg1Wc`u@8giaoR!FwI9JS)zx!pt(Xg4abG$(1yBZou82D`itfxYte_N*uIQ zcy1oFT(g92!|kW&A^Z!gYY>@nZzIX5i4n+k3|E<+Sa|@b`~yg1vKtEG>@lfKC-{y< zGCYoo5kJe(4hf})+xa)gaRnbR@kehn!LYcsTq!xk>#$2|CK!{4pe<6184(l2+)>zW zDImpJM%pOpEFxJ6*WvD02h&-gi?wn{+G)eOcurcZi!A6jB(v%m7A^+l4G@UgC+R#C z&QWRH6v!lsC?K<#eTG5or5DLogXp;Z9qHXVo!yeYMIalJd)!8xYy5sG8IiWjmmt!Z zgr}uvq|?%Gy{DxF#5rdFKx!jeVV{vl4`s>ORbNY(2eRDi)tO6PLI!e~Ol}m29Dx)% zMX$KtT!{hKnP0A2H=5LcSvPE9Da7na`5{}ihBnH6C)XI5=rPvYSf*!Jm1X4cj*R*I zvfM!Sx-;sCn&I7IPPW$VEvY5d#K!HnWu)^L*;)%zI=Kf3cXu3fObH*D1--^MCA<&a z0b}>L?^o*~|9!jHV;b$~IOkB9*Jo72#L8I_GklPvJ52P5iH13vHPI6$TH@#nCVJLH zAp?9e+bIA0Nu7NTtP5&U)oQHK@&tly74{v)52qzZ}A#Xf|yp&mNIW!k~N zu{+Gr?XK>wI}V+t{8loUNo&cW#c2N8578|p_CS^M=$`R6kzJ`=q14~68q;CMzl4~} zar;%j0|wJoKL&gbL?jGMI<4!qhyU`RzxZ?dj@{rcf{F`0(iOZ zc9~g-V3C=PtcUML_O5|8}B&017zBENC_w zMYopDs6ZWO+WvJqdoS4X@D9$43cVZr0X+a+{0kE4E*)dEx;fYYF#vfk}J85 z>UKWVLWUCA6ujDU+1$VYY@UKzySD;I+8;v3NP9jMXP<=1bb+IP0(6pAu?HNx3)oF( z*tUa9;yzM549fWp;0a)d z*^Xi~(ggP{YHC(3VALu+_rDiu#gtMDSeL0>u7I48mkW4}b6z?VBQ}D2?&^7vDbwu{ zg}o4I^^ONeg2zKT8;DRY1)E=mWi}T1aRkO%1pWgUOKW%>Haa7t?A-{S9*f}lxrpKN zPh_2;_=(68QXIwJX$p5lQMl?Th5ZW*8f%5wqBornpt-wX)Y+o(3_63!rS#ST!m`Q8d{f+y<&Inu?v#26&++vfxXT=+&A& zjHtq1g;Q0Hx6C*zYzC~{<5q42FM+-rHL7D#D=B4@IZ&C@)D(0ALgu1};Ng=4_Eaq_o38V_(9j>(RJXX8(jiw*h{QvaLP%z7fnZ iT;XH54=|ZcEH|Wa5Z~E^vcnv&Y7y4r&X=&Gv;P3nwHoXI diff --git a/game.jor b/game.jor index d77043c..912479e 100755 --- a/game.jor +++ b/game.jor @@ -5,35 +5,26 @@ var objects : obj-entity ( optr -- entity ) cell + @ ; -: single-entity-at ( x y 0 entity -- x y entity|0 b ) - swap drop >r 2dup ( x y x y r:e ) - r@ entity>pos world>tile 2= ( x y b r:e ) - if r r@ obj-entity single-entity-at if rdrop break else rot drop drop ; - ( P L A Y E R ) var player.state userword var player.prevdir 1 const MOVING userword 2 const NOCLIP userword -4 const ISNEUT userword +4 const ISREXX userword 8 const HASNEUT userword +16 const ISPROG userword 1 player.state HASNEUT f! : noclip player.state NOCLIP fnot! ; userword -: isneut? player.state ISNEUT f@ ; userword -: isjaye? isneut? not ; userword +: f-rexx ( -- v f ) player.state ISREXX ; + +: isprog? player.state ISPROG f@ ; +: isneut? isprog? f-rexx f@ not and ; userword +: isjaye? isprog? not ; userword +: isrexx? isprog? f-rexx f@ and ; userword : {jaye} isjaye? player.state MOVING f@ and @@ -44,10 +35,33 @@ var player.prevdir isneut? if NEUTABLE else WALKABLE then mapflag? else drop drop 1 then ; -14 9 N ' {jaye} defentity pjaye -17 5 N ' {neut} defentity pneut +: {-neut-} f-rexx f@ if {blank} else {neut} then ; +14 9 N ' {jaye} defentity Jaye +17 5 N ' {-neut-} defentity Neut -: player isneut? if pneut else pjaye then ; +defer player-prog +defer player-human + +: player isprog? if player-prog else player-human then ; + +: replace-entity-at ( x y 0 entity -- x y entity|0 b ) + swap drop >r 2dup ( x y x y r:e ) + r@ entity>pos world>tile 2= ( x y b r:e ) + if r r@ obj-entity replace-entity-at if rdrop break else rot drop drop ; : sched-move-entity ( entity -- ) :| jobdata move-entity |; sched-with ; : move-player @@ -56,7 +70,7 @@ var player.prevdir 1 player.state MOVING f! - isneut? not if ( only jaye can have a party ) + isjaye? if ( only jaye can have a party ) player.prevdir @ party each dup player != if dup entity.dir @ >r @@ -82,7 +96,15 @@ var player.prevdir defer jaye-touch ( x y -- b ) defer neut-touch ( x y -- b ) -: player-touch isneut? if neut-touch else jaye-touch then ; +: rexx-touch ( x y -- b ) + 2dup RUBBLE mapflag? if + tile 3 swap b! invalidate-map + else drop drop then 0 ; + +: player-touch + isneut? if neut-touch else + isrexx? if rexx-touch else + jaye-touch then then ; : touch-begin each 2dup more >rot drop drop ; : touch-next dup if rdrop done then drop rswap ; @@ -99,7 +121,7 @@ defer neut-touch ( x y -- b ) player entity-dst check-player-touch not if move-player then ; : follow ( e -- ) - pjaye entity>pos pos do more ) entities each EVTICK entity>do more party each EVTICK entity>do more - pneut EVTICK entity>do + Neut EVTICK entity>do DEV if tick-mapedit jiles then tick-debounce @@ -155,9 +179,6 @@ var q-level var glitchlevel var quaking -var _dorubber -: rubber _dorubber @ not _dorubber ! ; - : full-draw quaking @ not if player entity.x @ 152 - @@ -167,12 +188,12 @@ var _dorubber 0 ticks 3 % 13 * 8 % scroll then - _dorubber @ objects @ and if + party each draw-entity more + player.state HASNEUT f@ if Neut draw-entity then + objects @ if objects @ links each dup obj-entity draw-entity more then entities each draw-entity more - party each draw-entity more - player.state HASNEUT f@ if pneut draw-entity then DEV if mouseworldpos 4 draw-sprite @@ -220,7 +241,11 @@ does> @ objects ! ; : statechange? ( ev -- b ) dup EVACT = over EVDEACT = or swap EVTOG = or ; -: blankentity array here >r N ' {duck} allotentity r N ' {tileent} allotentity @ objects ! ; : handle-teleport ( ev -- ) EVTOUCH = isneut? and COMP-ON responder>tile? and if linked-entity dup computer-on? if - entity>pos pneut entity.pos! + entity>pos Neut entity.pos! else drop then then ; @@ -244,7 +269,7 @@ does> @ objects ! ; : listener! ( entity listener ) swap ! ; : entering-door? ( ev -- b ) - EVTOUCH = isjaye? and DOOR-OPENED responder>tile? and ; + EVTOUCH = isneut? not and DOOR-OPENED responder>tile? and ; : door-listener ( ev -- ) dup entering-door? if move-player then @@ -259,7 +284,7 @@ does> @ objects ! ; : switch create-linked-object :| dup EVTOUCH = isneut? and if move-player then - dup EVTOUCH = if + dup EVTOUCH = isrexx? not and if responder EVTOG entity>do isjaye? if wait-for-arrow-up then then @@ -291,11 +316,19 @@ does> @ objects ! ; : chain-listener ( entity xp -- ) swap dup @ , ! ; immediate : cancel-ev ( ev -- EVNOP ) drop EVNOP ; +Neut :noname + dup EVTOUCH = isrexx? and if + move-player + 0 f-rexx f! + S player-prog entity.dir ! + ' Neut ' player-prog redefine + then chain-listener ; + :noname reset-level ' mode-move ' tick redefine ' full-draw ' draw redefine - :| pjaye yield done |; ' party redefine + :| Jaye yield done |; ' party redefine :| ' tick-debounce ' tick redefine |; ' any-job-started redefine :| ' mode-move ' tick redefine hide-footer |; ' all-jobs-complete redefine ; ' onload redefine diff --git a/jiles.jim b/jiles.jim index 33f429e1b5c1f7277df09928a302d2f96398faf3..e8b9b25794eeb157b8178afe9e5ef8afaf0cfe20 100755 GIT binary patch literal 1575 zcmc&!-)mcS6hG{@L*imYq8`!lT-WOdhRg>{*AvjiEI!n zwkR$S1?^D!XoD`JV5|HQ`|FpZ(X82cm2GH9ZRXOfg^dp+jwkHKP6wZGm6(7?ewXuHxkiS#O3y z0RGf>gYQlHUin<2;CWduE9JW0xFf?ti;EFxH9ABMRihC~zV~|0tI9a|UqAgu6y))` z$mDe~CsssUys4z|j*N)vgnQt{-W0bJYzLES7>9Wk%d4lbSq{#D=)rC0lcl)2^<9yAvP?-Mn53WZ(b z?s1{khYEd5g;>3zvDx>{6)|K~HFh&(%xfvUVg|UX1sfezTxsj1T?Vk6)O%ql#-NlPAuPo63@$)O{@Ll_A`_1+=esABV`xvu6mF%v) zE*WRM9cBzhre($<=aRZ47UdM*SLQ^JA9rr+t40bnXHf(-o^aNsa)^}i1IzI=4md8> z>zl@uWX}?dz^2h<^V(^LZ=GxON$yF`6$T`qcd9t+j18X|8GWu3mhmlXPAubS(>d)K zx&D!JL*sg#G};OrRlXqxR6QeCKXZ86F54ZVAo;3u*^Ud=#QtvMgw%eNG5d&*OTI37 z5Ag-bx5zJ2#Wy5Vk}hu3SzeH5(TLUSTyK!#FG%e$X%X1b{%Ye>jwMyv*G01}6{}l} zdI+KRwK~#wNBdj*S$(&?hF2b3oSdhHmR2J!(s(tA+N<*4{U|kxlTXmQ0iajo%W`ov zWSY4}*9PHR_vIu8Q$T;az{Kxl%xufWRB8ts$dMIBlTuH`T>QiijQyr=sr-if7uB?g Ay8r+H literal 1575 zcmc&!?{8CO6h7;H-)&H`6`{S@t#OmgM5OHA``%k?V$28?#2=%A5^M~*taqc>wasmz zqftT?5`~a7@#EYV{V=~E@dv^ZG-*hj8TbvqNX!z6#Q4SVV_VcjJm=hQ!N0&Jz4v*Z z_nhaR_q^v`3pNM;+;lS0(|*o4X|zLrw3sh?5Q}ufIi%hS4Z&q22<4KOtGKyB)}6!< zfU8Cqc9r8rDPl2F=C=FmryTx?$MlEz# z$n&Bmnj$RT(K7NIvmw&*irEw~5iozi!ap)Q;R%296nw+T=wGkDVT8p8GGNx_oVgCN z-bgiG8p*qrip!e@NXhl!`)1MgaqB!jAtm zwTKs6MGRUSV4`@W?2ZHUr*Np!L*WEb>gtTX@&twpN#4S>1kCsaU2QykW*Q zYf8|+E`PT={q@OXv~VW!50_b&YgMq7n45I-{#oeiIV_&K_JV2(T|K4y=dc-L$Hyke za(TBfGO^NUzY!-?RlcqKL)wNxSlzs$+4GlY)fa>PMn=wH*e9w`L5p%L>;g&`)Pu@A zD)XvT^eWy+uEJq;xkq)uVM>b^^VxVMH~JP2@wNZRGzKi+Q~@}cfqUVt@E5@Y2;(4a zg!>Ra0wIF0AlwK&1a~6rhsOx+MYsV>f;$jygQp4ZM>q((YzYU`?Ai95x9d6nm_g?AE$S>_nI6_K&&a7$A zF{6z4TN%l=3C>vKoQX_{22b&AttR~ZMa-Wu({kBv2;ZZ_nPX**(+~%Gro$PjJ1Kep z{&jPl*#NROxNf%DwB|T;>g2JG`LoQ)L1*qdRr#8;Z~Ok;!@K%mTE3xbVp z_4k}vo&5T6v^5ygt|9|;-@&UNI`mT1?3fs4KI7Evupmur3Yc-$E^^F9p` zk>u8&^}G5{k+Z#Zd3^QYc%Dv&?x1l-zMGKx5WhALW24CCCHyu3Y|-hkQgXP(md!;x yHfViypG-)93h=e_i}(%;v!c1+l8Ry00HOs(J6TT$Q}V1$dOG-PWHCZtxPJkq-G=x8 diff --git a/job.jim b/job.jim index 1023fd59846b4075e054f0ef80611ad15b68ccba..e96c3e678d05c568d88e9cddb332fd2bbb8891d3 100755 GIT binary patch literal 1149 zcmZvbPiPZC6vn6B8B(oHQ#GZCmH3YeWiO>lH z!zu;oDWK5m9=v!GB%Z7u6ms$)J$m!xr9F5Sq$0jIo3wjqV2923-pu^od*4ow+nGNj zsmwY(OutDF65ZaEA66ISx}(<|(;%-C*ZU9CLqxAsP_N62)z!6%>6juycpsU)H&rZU zOVea@n2<}MP|6nbMIjLJ8|PHyMWir5$P|xZD3>i|Pl?XMc?*KbGRSr!pgGnLhLbUais~-kMMYd1@?W*p4OVyh2rx@s-`sAX|?u^VO z|E4`r5Oy!1PJE(wUM;Xss?T1k14Nh{x8d+$=gpW$->Cr%UEwJSJ@Z}dl(tkeO#$9X zJ>50;weC1d+8DgZK9hIP85%Bjykz7(*k2mis_cwKP{xfX5!nHX#9!OXOjECgVnXf zx7IrL`-cwcD~%Ch9=OfX-fBLJXU>L-+_0QwAtUr>j=^xg2P$5MYp+-(Sbg>%BVH{y literal 1149 zcmZvbF=!J}7{_08?{U@8Hq}P66soqMlv_&4ySq>!8Y#Aefn-XjYjQQw^wQ?;NOItC zVwZxD$s&h{lY>Jh!9j$$*ukzYin!T9I*N*j-}f$QZ)o5icmMBu@BO~-`)7enXMU$h zW}EJ(AEhUVVRe*yjdjI#jHY8&$n(UN_BBV#cW})rkkKX20o}@l&!={0L2?8ijgWTl_QUl#F?E6a7wXB+T7s5G4Ncd3F zqaN+kid161c#o!dpW;nPnwKAdcEr07eFKj-k!K&_>i~{@$tUqPaq7Bjca)8~5uQ6j z0(vOPJbgND)wZ;sX`fw#^XfI*F)d}I(G>m^1KraePWkL+YAyLC z?TLc0djWOE7h+3Vo;}rk*3rg@Fgb3+;la*1*`trO0EV98GZK2{wKgbiqiLD~e2{v& zYp(0VaV+XG#{&A`0PJgtE$ZEfqlPYufr>8rti_3GZM&u`t^t@IDmKH>J-RYBbp5=* z%Coi}jx(pniPP+$n-NYFk8X}S`4E`;bV^LO#J=hw6*d#!c0}V(oW7hq03NKaC;n@_ wW4}Kcka{{J!aQ(WQQy^lcBG#T6{S^kszOHSXB>m!d_QP-8Llz0O0fFuKV3{KZU6uP diff --git a/lev00001.jim b/lev00001.jim index c80468790c9a1a62db09c8e7f4faabd8ad32582f..fa2c0ad85a81d28c106b307d35861d6bd3b77a33 100755 GIT binary patch delta 743 zcmZWmziSgw9RDWiqiK*55K2)RUo=I7cqSp>Aeywj)W#p5y7IMIEagzkhZiI2XT-L&f*`?A%la1?_Dy8-g0-JU*GThye<2ty%B&% z$=1~_ItC7;w-SM+qOO&o-GU&1<_&vA;xKh! z>bSy#>Aa%Tno^-kk*bQO=T}yh`>LDio8&;U077iUm^mh&!=VNgl!|^qSG8q$;XK43 zT4BKtVdmVH02Cdwk84IO9t25n*sb9Y5k{+(7~h>VqYnaT{hBz&0#O z9sG&k8CU6ZpG+UHoqymFg4}Yh4eYw=w#-D^7RO&R&1l<}At9M}bVZJ`hDyb=4V{+C zYLRynjWx;No(wsW*baBYv%@Lo>zKYZIj%gst5Qi_)oG5^n^y~Eei83j=rdW0+(^@^ zPq^e4f?CcWxQ$XQDnTCmv4+Mq@A3G*yX_?ovBS=kAuFb`WNcUicFoIOI|*aYI>TcBw>6Vo;4nNk-(XKX zXWX(y`ri%XjqNmQ-kdouG%a9_JWm$Xs*gQ>VOc4|+(nVF{>?2#G7KUag5W9VgO{7+4^i#eJpcdz delta 745 zcmZuuOK1~882PKs5CHY7n2!BVr`Xk(N7lTAWt@X$3~NHMP_+eU?w z=AcLw6&6b`;sf+5Cn2h6GS#=H0c?{gw6h$~I~BK(BQ_!M8^x)>DX z#AZ}Drl1V(@H2iCg9O|fG*#!!C;W!n_(Mz*%uGTUj)4O<(8_i&8zV5Sot@D+=WNCU z+=iEN7aL+8&Q;r-LlHjUJMU*lScEM(&RZY47c32F&9aOiB2y>VEE#f%iHworld pjaye entity.pos! - c1 entity>pos pneut entity.pos! + 14 9 tile>world Jaye entity.pos! + c1 entity>pos Neut entity.pos! DEV not if ' intro sched then diff --git a/lev00002.jor b/lev00002.jor index 8b166f4..56d79cb 100755 --- a/lev00002.jor +++ b/lev00002.jor @@ -52,7 +52,7 @@ c2 :noname reset-level O s" lev00002.map" load-map - 11 11 tile>world pjaye entity.pos! - 10 12 tile>world pneut entity.pos! + 11 11 tile>world Jaye entity.pos! + 10 12 tile>world Neut entity.pos! ; ' onload redefine diff --git a/lev00003.jim b/lev00003.jim index 3be38adebbdc941e846a226a2da93733df02dc9c..d48e77ff2851f7959d99489f839ff42264c065e4 100755 GIT binary patch literal 1542 zcmaJ>U1%It6uxbC3>azF2ScDFIe`?7#_c8+1ffYLJ2$)6?9RRO*KNvxo$O9`*CsPz zb~c*`7FPnoKBee`QiA$c#J-3Hp-@v4M9>HEMSQ9cT2OrOL6lO8=gw}TKIje$d(Zcs zbIk`1=@MlkEADWN+egm4D3d@J}Ql`8^EeTUh3ME?C~PGfI-vWmi*7f)29Xq5J9@>S5gP#uMXT=yghJ1xi0=( z(v)N5>f+Q1P1zQja#IyUd#R2RieVCA^0SQ~j>2lI;>+UXU-<{(iIg=U>)bPBl>;%B zy75d~NgE};#EKM5zQk>o14n1J%QULnYAi0eMQ>;;WDj3)cc^M)E!VJB=wu;w>oxD++~pej*$Yiy`ca7wBU%mSu^pe8H! zv9}F*DX5mkEL+uc6gjR*4TqUj>sSB6SPfec_y64~KSIkM@Q338Xv#2Yk9U+`jA2s4 zVf~-AC(T1^PdU=sljc~eJZhoUyS5bTn?0$*q!vXzu10N|vlB6Y7`;dG-ZJO=ru?UN zNxOqIw*0q!y|T6|id405j?@xdmqsm4ce97}?_%N)X1R{Saafs525}ivEY?gs3j-e- zK{CnMk2V^Cw=Uh29Iy`i!eRAqL+GQd?B*3M6W*A;>ix`>cnkOQ_rr;ZI< z+065^nKMykcCJr(11bH!an?2kT`f^ibkFAGPw_l=5WwrnNOY0}N^{ zzu7$0bPu^jnwQrKrt4J0oz|!c8nsqjM^~3{+ieadevV?9o{Uj@9&)&jxO(WInk!)E z6s$6{a|L&a7MQL{Oj^=wNZ5r|eF1nq+5QO4Yl7!C+l{zVmo8!??Ah7&*4GbPd)?Ok zEk8m+*s9fI@Ydwcws9 zsrU||(kjk~=S{U#Ld|wT)mJPRTc3fxZ*nyEkyxfsX2oLvMN5=hJSo;wIN{8LT2`5y zZ1O(<1zHp{$taT>1AV{LQM&0bmv?zvQJrqOA{Nuz_~q%2qA6c3h@rM}-dXpzviNx} iv*B%$+G$N0B$_fr&P?p8pW%!42%a9p(>r+TD1QNX|HAG7 delta 778 zcmX|8Pe>F|9R4{oPc1E{gBwY^Jy~VZwr$+JC94ZF>@M#7-t6pdVu#Y)E%RTCnrl?( z9xRd$(kna!<~;==2)YOn9XbUDU4jatI(ZVJF4cREI&U7l-}imL?|Xml)jv5j7ln{} zJJ!G+XxsLdT?Gu%zGKO^xNR#?=m5WOwzsBLfh92j6#OIM=mG3N3F`3#>ZrgKss6UB zE(sVghz5ovA@v?%2$SR3g(>V2#84FGp6LtNFW0g=#AH?p92menj$;8;xGYqDUsqZ( z2F$}K-opEMSF{vn1@Uq>ut)fA+8kGLSrAi_c(~i)2x0}-@D*;L28kP!1wk!oPg`Wn z0KAI|)Gf}+h9#}NRRt=-KVuDC9lJg>TAYMMeH8x&Ca6gopd6@>9puYOAaFRosRmi2 zmQ^>^izMipqzZz}udSahlOp4vl%~di=nV-yW-*$~+i~Pam8NQmyk@*z4YiCI`?B`} z{KEQ%2dC-ua4`~zz+{`mREL+kF= z_yjq5$20W1F&giSr{pPUKg+u`X{DVoMJw+e^@!b-u8>82)!MPkq}yH8x3EY5DJIh^ w#3XCoPFhWO4!#s^D~IBSv`Fi9PBo?4E-5sz6ds(Mkai>gBY100Fe5C8xG diff --git a/lev00003.jor b/lev00003.jor index ef6e3a3..ef78f74 100755 --- a/lev00003.jor +++ b/lev00003.jor @@ -15,6 +15,25 @@ end.jor 0 4 exitdoor dx 6 7 N ' {gord-sit} defentity Gord 5 2 S ' {rexx} defentity Rexx +Rexx :noname + dup EVTOUCH = isneut? and if + move-player + 1 f-rexx f! + ' Rexx ' player-prog redefine + then chain-listener ; + +var rexx-introduced +Rexx :noname + dup EVTOUCH = isneut? and rexx-introduced @ not and if + 1 rexx-introduced ! + neut say" MOBILE ROBOTIC UNIT\IDENTIFY YOURSELF" + rexx say" Hiya boss!\I'm Rexx, the janitor!" + rexx say" And your best friend!" + neut say" A HUMAN IS IN PERIL" + neut say" YOUR ASSISTANCE IS\REQUIRED" + rexx say" You need me to take out\some garbage??" + rexx say" Oh boy! Let me at it!" + then chain-listener ; : flicker c1 EVTOG entity>do 15 sleep ; @@ -22,10 +41,12 @@ var gord-introduced c1 :noname dup EVTOUCH = isneut? and gord-introduced @ not and if 1 gord-introduced ! +DEV not if neut say" HUMAN PRESENCE\DETECTED" flicker flicker flicker flicker neut say" > HUMAN ASSISTANCE IS\REQUIRED" neut say" > IF HUMAN IS PRESENT\PLEASE RESPOND" + hide-footer human-view flicker flicker flicker flicker gord say" What the..." @@ -44,6 +65,7 @@ c1 :noname human-view gord say" Huh? Oh, there is a\switch there on the wall." gord say" Never thought about what\it connected to." +then 5 sleep b1 EVACT entity>do 15 sleep gord say" > I TURNED IT ON" prog-view @@ -61,7 +83,7 @@ c1 :noname :| Gord yield Rexx yield done |; ' entities redefine s" lev00003.map" load-map - 7 11 tile>world pjaye entity.pos! - 6 12 tile>world pneut entity.pos! + 7 11 tile>world Jaye entity.pos! + 6 12 tile>world Neut entity.pos! ; ' onload redefine diff --git a/map.jim b/map.jim index 010b830ac6e59b7a9850639c26540b8f05fb5dde..a1edbe0bdaf669f17cf214ec8444643e71fcdc11 100755 GIT binary patch literal 941 zcmYjPL2DCH5PqATw@q7D&7oVx27~cX@a=9b)SE~{Dzu&moCD zLtu7#aUldE?5$AP{9>wm4(tQ!lXS%?u6Tjbh{Pg{0h1yT{DQ;)i^zfKV>c&nEu;h8 zVfG7k@eOqC8oJ1+`@)1nk&sRJj6S%20%c3L>77>Dt|4Vy48icZ=R-N3)~C3{M&%1Z zw-j^o~!9Zd*VUO?e*{IJi z>VvFQUE8Lip0$EATaZ`dv5eZmh$x^Yw2!LSAouzFi9R5$Tb^C-t)vOAM%Q-b9RD3y zYeSYtj5c&llg$>?p#x=PBn;wq;Emo!q<$*P!Dzq%G|(2U_CN=UX)9cm&xH{Hs{!yz z_4!p}fK@9M&#Hz0L>&h)M&s|IRF-=NEq2!Em%LTG(qmmWcHyr&Dz|XZL|A9kyjswj zuxt=ECNCSAp#QG+5UTR(25KJ~oq$7`99Q(n|DTsMTi~daR5uXSoIp3EPTwp)i~VTO z)3+DFw=jYR#*h|1-!P(*SKRC+JghX~D|gZ8yfUx28m(qi;fl{Mn^DQB7RzB0MEt~U t#a8kvk?t!y8qsn{tJsbc(#SHY9B<`4+O9)E>p((I9oc$nb~i(o{sD*M=cE7t literal 926 zcmYjPO-vI(6rSzAS<26-CFx=!jYXruIJ+e#Mq)w~0tYJ+K!{3B$cAoVb!!P*AQUcZ z!U4H79<5$X^hO$QB%B(q8c)i_iw5J#n-}86_ogklo6NrV=9}+*^S!;sF185*~hI`<|%!>?GwTw}fZ1(n@USyCV7j9rg? zmx)-9Ou*aj{q7n5$f8qEQQ9kwbgsKPrD@`T;S3b|b1 z78^f72^%p+?I-Lqw!UxEByGD@3l_Xw6Ls0%gukL!uVSNkBTkEqm^CXfU{kG6AF$IZ z|0S9giZWsux%cdv!jLB?5nb~C>*=W~_=23O8}i$ZqZ(qTb(|kz-m7w2n-=V&ZnA*h zei`y%POVnvPjZDAb#R- diff --git a/map.jor b/map.jor index f9d2917..b661783 100755 --- a/map.jor +++ b/map.jor @@ -7,6 +7,7 @@ var tileselect 1 const WALKABLE 2 const NEUTABLE +4 const RUBBLE array tileflags ( sky ) 0 b, @@ -17,18 +18,18 @@ array tileflags ( comp-on ) NEUTABLE b, ( table ) 0 b, ( chair ) 0 b, -( table-brok ) 0 b, +( table-brok ) RUBBLE b, ( door-close ) 0 b, ( door-open ) WALKABLE b, ( switch-off ) NEUTABLE b, ( switch-on ) NEUTABLE b, ( window ) 0 b, -( chair-brok ) 0 b, +( chair-brok ) RUBBLE b, ( bookcase ) 0 b, -( bookcase-broke ) 0 b, +( bookcase-broke ) RUBBLE b, ( scattered books ) WALKABLE b, ( plant ) 0 b, -( tipped plant ) 0 b, +( tipped plant ) RUBBLE b, ( scanner-off ) NEUTABLE b, ( scanner-on ) NEUTABLE b, ( cracked-wall ) 0 b, diff --git a/portrait.gfx b/portrait.gfx index c1eb0bfadda5cccd4b57f440bbdc3440b5662487..e9b95b8d572125cc589bcce46fbe9796b52e5c8b 100755 GIT binary patch delta 303 zcmZp0XmHqI!o*?E!0-ozCo<+l{AXbJPYh;eU^oE7VD*d*|NqPAZ~z+@a0H@J?hPn)?{!LBNLGO{ zVo8|f%S>jzNoI7QgLNxY%maQF@Lq(D?-hVi7r0FUB4`So)}PaxJ_IJ@21KqVk{{TY zOw$snn6Y$M*4*X7d>zHEirz@hDM{&KlFHR2;%ZKAygv(@kl?ukBB2St5qj0W;8q!k zCBx^&9pKOajtbaSffeTisL#vML*}GJ;HV0E>77Ma&J@8H-a(K!QLqh;Ds@MpjRt6O(gN6N}(7 z3_x>1GKmIUj2Wf5iFvwZnW^PKP35e!3`#O{Qj7J{(<&I&iFxW=($5DftOgoUP?VpJ OPP$2-C*Gn`2 literal 277 zcmXqFQ0D$A(PF^KxI{lupOY~l$lqNz%+ocT;fp8(!xDWi1~(r^cU@=yP`?nM5F^7j zeO89FoW%5E23awNllmMGPDy?mLzh4miwi3Ug9Y#OiJvN9X6GJ;HV0E>77MZ^u*8H-a(K!QLqh;Dv^MpjLr6O(gN6N}(7 z3_x>1GL8mZj2Wf5iFvwZnW^PKP35dr1|^v}sl|HfX%!6X#4L0+>H7l}Mgxr~D9TSq Os9S81hpx~Rs1N`?>Pj#G