'$DYNAMIC 'current library; DIRESTUF.QLB DEFINT A-Z DECLARE SUB texttalk (y%, wsay%(), dia%(), dctr%, arg%, big%(), bobpal%(), pale%(), sayx%(), sayy%(), sayw%(), sayl%(), dpage%, vpage%, kp%(), saypx%(), saypy%(), set%) DECLARE SUB newscreen (plot%(), picset%(), pict%(), nice%(), targ%(), leap%(), dbefore%(), week$(), ts$, day$, timeoday%, pal$, needf%, mainpal%(), hnb%, chp%(), hp%(), ap%(), nbhp%(), nba%(), xyc%(), room%(), mx%, my%, set%, mapset%(), buffer%(), _ blocker%(), chroma%(), dpage%, vpage%, ickcon%(), itset%(), iactive%(), name$(), oddpal%, speed%()) DECLARE SUB corspeed (speed%(), pict%(), picset%(), plot%()) DECLARE SUB drawmap (room%(), blocker%(), chroma%(), dpage%, vpage%) DECLARE SUB loadrow (room%(), my%, mx%) DECLARE SUB loadscreen (set%, mapset%(), mx%, my%, buffer%()) DECLARE SUB showtext (set%, dia%(), dctr%, arg%, sayl%(), sayx%(), sayy%(), dpage%) DECLARE SUB debugg (w%, weapon%(), pict%(), nice%(), speed%(), x%(), y%()) DECLARE SUB equip (weapon%(), wnum%(), speed%(), nice%(), pict%(), pale%(), picset%(), csr%(), defence%(), guard%(), apic%(), apal%(), apicset%(), armsp%(), inice%(), ap%(), maim%(), nbhp%(), nitel%(), nba%(), niteh%(), flee%(), iflee%(), plot%(), _ ptemp%(), inft#(), tempinf#(), chp%(), tempchp%(), swim%(), ranatemp%) DECLARE SUB weirset (plot%(), picset%(), pict%(), nice%()) DECLARE SUB ctrlcode (delay%, oddpal%, timeoday%, plot%(), pal$, needf%, mainpal%(), hnb%, chp%(), hp%(), ap%(), nbhp%(), nba%(), font%, font%(), pale%()) DECLARE SUB sethepal (mainpal%(), pal$, needf%) DECLARE SUB animate (o%, cfull%, aframe%, aframe%(), acounter%(), aspeed%(), anim%()) DECLARE SUB menu (menuset() AS STRING, menuc%, visrows%, menux%, menuy%, menup%, skip%, csrcol%, txtcol) DECLARE FUNCTION LARGE% (n1%, n2%) DECLARE FUNCTION SMALL% (n1%, n2%) DECLARE SUB hitit (i%, o%, aframe%, aframe%(), picset%(), speed%(), cfull2%, stemp%(), kd%(), d%(), kspeed%(), knock%(), say%(), inuse%(), ai1%(), rate!, target%(), defence%(), chp%(), hp%(), drain%, ap%(), charge%, absorb%(), ahit%) DECLARE SUB dizzy (o%, spinctr%(), spin%(), cfull2%, d%(), inuse%(), x%(), y%()) DECLARE SUB align (o%, x%(), y%(), speed%()) DECLARE SUB checkinf (o, plot(), infplot(), inf$(), dpage, speed(), inft#(), inftime(), picset(), pict(), ranatemp, ranaset, ranapic, rananice, nice(), pale(), ptemp(), pois#, drain, doom(), bobpal(), x(), y(), btog()) DECLARE SUB toad (ranatemp, ranaset, ranapic, rananice, picset(), pict(), nice(), pale(), ptemp(), inft#(), inftime(), plot%()) DECLARE SUB eventitem (dia(), sayx(), sayy(), sayw(), sayl(), font, ivname$(), ivpic(), ivpal(), ivset(), ivcon(), ivuse$(), plot(), kp(), rate!, vpage, placer(), bobpal(), font(), buffer%(), dpage) DECLARE SUB wepup (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) DECLARE SUB wepright (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) DECLARE SUB wepdown (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) DECLARE SUB wepleft (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) DECLARE SUB sethtarg (targx(), targy(), o, x(), y(), htarg(), speed(), cfull3, xaim(), yaim(), dist!, divnum!) DECLARE SUB setonkill (o, target(), picset(), beat(), bobpal(), x(), y(), mx, my, ickcon(), chp(), plot(), itset(), iactive(), xper(), levelup(), hp()) DECLARE SUB itemscon (plot(), itset(), picset(), iactive(), mx, my) DECLARE SUB checkcon (plot(), ickcon(), mx, my, picset()) DECLARE SUB inform (mx, my, plot(), dpage, x(), y(), pict(), pale(), speed(), code$, absorb(), ickcon(), pal$, charge, inuse(), code(), weapon(), target()) DECLARE SUB sloth (speed(), inft#(), inftime(), plot(), pict(), picset()) DECLARE SUB drawshop (font, dia(), sayx(), sayy(), sayw(), sayl(), stock, shx(), shy(), buffer(), spicset(), vpage, placer(), spict(), bobpal(), ptr, ptr2, ptr3, product$(), price(), seed(), descr$(), spale(), chp(), hp(), font(), dest, arg) DECLARE SUB bossmeter (boss(), chp(), ap(), hp(), dpage) DECLARE SUB takeitem (hp(), take, chp(), cmax, ap(), seed(), ic1(), ic2(), ic3(), ic4(), itset(), mx, my, plot(), infplot(), inftemp(), inft#(), ickcon(), picset(), iactive(), say(), timef(), inert(), inftime%()) DECLARE SUB reaper (plot(), inft#(), inftime(), drain, doom(), bobpal(), x(), y(), btog(), dpage) DECLARE SUB fontset (font, font()) DECLARE SUB statusscr (font, font(), csr2, dia(), sayx(), sayy(), sayw(), sayl(), big(), bobpal(), pale(), chp(), hp(), seed(), xper(), levelup(), maim(), csr(), fulpow(), armsp(), iname$(), arm$(), guard(), cmax, day$, ix(), iy(), arm, weps, plot() _ , conptr(), ipicset(), placer(), vpage, dpage, buffer(), ipal(), ipic()) DECLARE SUB poison (pois#, drain, pale(), inft#(), inftime(), plot(), picset(), pict()) DECLARE SUB intox (speed(), inft#(), inftime(), picset(), pict(), plot()) DECLARE SUB charload () DECLARE SUB bigsprite (buffer(), nice(), boss(), wbig, u) DECLARE SUB debugest (code(), code$, plot(), seed(), store, boss(), debug, nice(), picset(), bobpal(), x(), y(), hp(), cmax, target(), allitems, inft#(), pict(), beat%()) DECLARE SUB buyit (ptr, cmax, ptr3, seed(), price(), hp(), liup(), chp(), scure(), chup(), plot(), infplot(), inftemp(), sset1(), sset2(), inft#(), inftime()) DECLARE SUB drawbox (sayx(), sayy(), sayw(), sayl(), dia(), dctr, dest, arg) DECLARE SUB getday (leap(), dbefore(), week$(), plot(), ts$, day$) DECLARE SUB loadstock (inum(), product$(), spict(), spale(), spicset(), scure(), chup(), liup(), sset1(), sset2(), shx(), shy(), apear1(), apear2(), plot(), ptr, stock) DECLARE SUB timeofday (timeoday, plot(), pal$, needf, mainpal(), hnb, chp(), hp(), ap(), nbhp(), nba()) DECLARE SUB clock (rtime$) DECLARE SUB meter (charge#, fulpow(), cmet!, cmax, fcol, dpage) DECLARE SUB allsprite (vframe(), d(), af(), aframe(), picset(), order(), boss(), btog(), bobpal(), pale(), x(), y(), placer(), ty(), dpage, big()) DECLARE SUB setmodex () DECLARE SUB copypage (BYVAL page1, BYVAL page2) DECLARE SUB setvispage (BYVAL page) DECLARE SUB drawsprite (pic(), pal(), BYVAL po, BYVAL x, BYVAL y, BYVAL page) DECLARE SUB loadsprite (pic(), BYVAL x, BYVAL y, BYVAL w, BYVAL h, BYVAL page) DECLARE SUB stosprite (pic(), BYVAL x, BYVAL y, BYVAL page) DECLARE SUB fadeto (palbuff(), BYVAL red, BYVAL green, BYVAL blue) DECLARE SUB fadetopal (pal(), palbuff()) DECLARE SUB setpal (pal()) DECLARE SUB clearpage (BYVAL page) DECLARE SUB loadpage (buf(), fil$, BYVAL p) DECLARE SUB setkeys () DECLARE SUB setfont (F()) DECLARE SUB printstr (s$, BYVAL x, BYVAL y, BYVAL p) DECLARE SUB textcolor (BYVAL F, BYVAL b) DECLARE SUB setitup (fil$, buff(), BYVAL p) DECLARE SUB resetdsp DECLARE SUB playsnd (BYVAL n, BYVAL F) DECLARE SUB closefile DECLARE SUB setpicstuf (buf(), BYVAL b, BYVAL p) DECLARE SUB loadset (fil$, BYVAL i, BYVAL l) DECLARE SUB storeset (fil$, BYVAL i, BYVAL l) DECLARE SUB setwait (b(), BYVAL t) DECLARE FUNCTION Keyseg () DECLARE FUNCTION keyoff () DECLARE FUNCTION keyval (BYVAL a) DECLARE FUNCTION getkey () TYPE Regtype ax AS INTEGER bx AS INTEGER cx AS INTEGER dx AS INTEGER bp AS INTEGER si AS INTEGER di AS INTEGER flags AS INTEGER ds AS INTEGER es AS INTEGER END TYPE DIM SHARED regs AS Regtype regs.ax = &H3509: CALL interruptx(&H21, regs, regs) off9 = regs.bx: seg9 = regs.es 'DIM voice(16385), game(1000), room(288), mainpal(767), tile(2000), tilex(2000), tiley(2000), timing(1) 'DIM SHARED placer(250), blocker(200), chroma(16 * 30), bobpal(16 * 99), buffer(8000), mapset(512), doorx(500), doory(500), exitx(500), exity(500), font(1024), ickloc(1536), ickcon(3200), order(16) 'DIM SHARED x(16), y(16), pict(16), pale(16), aspeed(16), picset(16), aframe(16), vframe(16), acounter(16), plot(400), whosay(1536), wsay(400), sayx(400), sayy(400), sayl(400), sayw(400), saypx(400), saypy(400), big(1250), fade(1536), item(4300) 'DIM SHARED boss(16), ic1(16), ic2(16), ic3(16), ic4(16), push(16), timef(16), nice(16), hp(16), chp(16), ap(16), defence(16), anim(16), ty(16), name$(16), seed(16), speed(16), stemp(16), kspeed(16), number(16), af(6), nbhp(16), nba(16) 'DIM SHARED itset(4400), ptemp(12), code(16), xtemp(12), ytemp(12), ltemp(12), beat(180), targ(1600), d(16), range(16), homing(16), knock(16), muser(16), boomer(16), inuse(16), absorb(16), passall(16), fuser(16), story!(2000), plotos(512) 'DIM SHARED iname$(30), ipic(30), ipal(30), ipicset(30), wnum(30), apic(30), apal(30), apicset(30), maim(30), guard(30), nitel(30), niteh(30), iflee(30), smaim(30), armsp(30), inice(30), conptr(30), rtime$, cmax, dpage, vpage, charge#, pal$, needf, hnb, day$, fcol, leap(10), dbefore(12) 'DIM SHARED week$(7), x, y, ptr, stock, product$(10), spict(10), spale(10), spicset(10), scure(10), chup(10), liup(10), sset1(10), sset2(10), inum(10), shx(10), shy(10), apear1(10), apear2(10), dia(20), dctr, arg, ptr3, price(10), noise(10), allitems, target(16), xyc(16) 'DIM SHARED ai1(16), swim(4), chase(4), rand(4), atack(4), inert(4), mimic(4), flee(4), eitem(4), itemp(4), seedp(4), xper(16), spin(16), weapon(4), nbe(4), iactive(16), mx, my, store, debug, index$(30), scribe$(8), wbig, presp, conv, btog(8), inft#(10), inflict(8), infprob(10) 'DIM SHARED infplot(10), inftime(10), drain, pois#, font, csr2, levelup(4), csr(3), arm$(30), ix(40), iy(40), weps, arm, doom(150), take, inftemp(10), tempchp(4), descr$(20), ptr2, xaim(16), yaim(16), targx(10), targy(10), htarg(10), cant, look, o, cfull2, cfull3, tempc, tempe 'DIM SHARED boomf(10), r(10), code$, ivname$(40), ivuse$(40), ivpic(40), ivpal(40), ivcon(40), ivset(40), ranaset, ranapic, ranatemp, kp(15), kp$, rananice, begin$(250), cred, cred#, spinctr(4), fulpow(30), say(16), rate! REM $STATIC SUB animate (o, cfull, aframe, aframe(), acounter(), aspeed(), anim()) chargea = 0: IF o = 5 AND cfull = 1 THEN chargea = 8 aframe = aframe(o) acounter(o) = acounter(o) + 1: IF acounter(o) > aspeed(o + chargea) THEN acounter(o) = 0: aframe = aframe + 1: IF aframe > (4 - anim(o + chargea)) THEN aframe = 1 END SUB SUB charload2 (mcur, my, mx, buffer(), ty(), picset(), pict(), nice(), boss(), name$(), o) mcur = ((16 * (my - 1)) + mx) setpicstuf buffer(), 500, 3 FOR i = 9 TO 12 ty(i) = 122 + i * 2 IF picset(i) > 0 THEN loadset "data\item.mxs" + CHR$(0), pict(i), ty(i) NEXT bigsprite buffer(), nice(), boss(), wbig, u textcolor 16, 0 printstr "", 320 - (8 * 20), 0, 2 textcolor 15, 0 printstr name$(5), 320 - (8 * LEN(name$(5))), 0, 2 o = 1 END SUB SUB charload3 (b, i, xyc(), item(), x(), y(), aframe()) DEF SEG = VARSEG(item(0)): BLOAD "data\itemx.dat", VARPTR(item(0)) x(b) = item(i) DEF SEG = VARSEG(item(0)): BLOAD "data\itemy.dat", VARPTR(item(0)) y(b) = item(i) + 25 DEF SEG = VARSEG(item(0)): BLOAD "data\itemloc.dat", VARPTR(item(0)) END SUB SUB corspeed (speed(), pict(), picset(), plot()) speed(1) = 4 IF pict(1) = 3 AND picset(1) = 1 THEN speed(1) = 2 IF pict(1) = 0 AND picset(1) = 2 AND plot(27) = 0 THEN speed(1) = 5 END SUB SUB ctrlcode (delay, oddpal, timeoday, plot(), pal$, needf, mainpal(), hnb, chp(), hp(), ap(), nbhp(), nba(), font, font(), pale()) IF keyval(3) > 1 THEN setvispage 2: w = getkey IF keyval(4) > 1 THEN setvispage 3: w = getkey IF keyval(78) > 1 THEN delay = LARGE(delay - 10, 0) IF keyval(74) > 1 THEN delay = SMALL(delay + 10, 200) IF keyval(13) > 1 THEN delay = 60 IF keyval(59) > 1 THEN oddpal = oddpal XOR 1: IF pal$ = "1" THEN CALL timeofday(timeoday, plot(), pal$, needf, mainpal(), hnb, chp(), hp(), ap(), nbhp(), nba()) ELSE pal$ = "1": sethepal mainpal(), pal$, needf IF keyval(61) > 1 THEN font = font + 1: IF font = 7 THEN font = 1 CALL fontset(font, font()) IF font >= 6 THEN font = 0 END IF IF keyval(62) > 1 THEN pale(1) = pale(1) + 1: IF pale(1) > 35 THEN pale(1) = -1 dire2: END SUB SUB debugg (w, weapon(), pict(), nice(), speed(), x(), y()) IF w = 26 AND weapon(1) > 1 THEN weapon(1) = weapon(1) - 1 IF w = 27 AND weapon(1) < 17 THEN weapon(1) = weapon(1) + 1 IF w = 58 THEN pict(1) = pict(1) + 1: IF pict(1) > 9 THEN pict(1) = 0 IF w = 15 THEN nice(1) = nice(1) + 1: IF nice(1) > 28 THEN nice(1) = 1 IF w = 52 AND speed(1) = 1 THEN speed(1) = 2: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB IF w = 52 AND speed(1) = 2 THEN speed(1) = 4: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB IF w = 52 AND speed(1) = 4 THEN speed(1) = 5: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB IF w = 52 AND speed(1) = 5 THEN speed(1) = 10: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB IF w = 51 AND speed(1) = 10 THEN speed(1) = 5: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB IF w = 51 AND speed(1) = 5 THEN speed(1) = 4: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB IF w = 51 AND speed(1) = 4 THEN speed(1) = 2: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB IF w = 51 AND speed(1) = 2 THEN speed(1) = 1: o = 1: CALL align(o, x(), y(), speed()): EXIT SUB END SUB SUB drawmap (room(), blocker(), chroma(), dpage, vpage) xx = 0: yy = 0: clearpage 2 FOR i = 0 TO 287 STEP 2 cyy = INT(((room(i) - 1) / 320) * 200) cxx = (((room(i) - 1) / 320) * 200 - cyy) * 320 IF room(i) > 0 THEN loadsprite blocker(), cxx, cyy, 20, 20, 3: drawsprite blocker(), chroma(), (room(i + 1) AND 255) * 16, (xx * 20), (yy * 20) + 20, 2 xx = xx + 1: IF xx > 15 THEN xx = 0: yy = yy + 1 NEXT i clearpage 3 copypage 2, dpage: copypage 2, vpage END SUB SUB dropitem (o, iactive(), picset(), x(), y(), xyc()) IF iactive(o) = 1 THEN iactive(o) = 0: picset(o + 8) = 1 x(o + 8) = x(o): y(o + 8) = y(o) xyc(o + 8) = 1 END IF END SUB SUB equip (weapon(), wnum(), speed(), nice(), pict(), pale(), picset(), csr(), defence(), guard(), apic(), apal(), apicset(), armsp(), inice(), ap(), maim(), nbhp(), nitel(), nba(), niteh(), flee(), iflee(), plot(), ptemp(), inft#(), tempinf#(), _ chp(), tempchp(), swim(), ranatemp) weapon(1) = wnum(csr(2)): speed(1) = 4: nice(1) = 1 pict(1) = 0: pale(1) = 0: picset(1) = 1 IF csr(1) > 0 THEN defence(1) = guard(csr(1)) pict(1) = apic(csr(1)) pale(1) = apal(csr(1)) picset(1) = apicset(csr(1)) speed(1) = armsp(csr(1)) nice(1) = inice(csr(1)) END IF ap(1) = maim(csr(2)): nbhp(1) = nitel(csr(1)) + nitel(csr(2)) nba(1) = niteh(csr(1)) + niteh(csr(2)): flee(1) = iflee(csr(1)) plot(169) = 0: IF pict(1) = 0 AND picset(1) = 2 THEN plot(169) = 1 IF plot(169) = 1 THEN weirset plot(), picset(), pict(), nice() FOR j = 1 TO 12: ptemp(j) = picset(j): NEXT j charload FOR j = 1 TO 12: picset(j) = ptemp(j): NEXT j FOR j = 1 TO 6 IF inft#(j) > 0 THEN inft#(j) = inft#(j) + (TIMER - tempinf#(j)) NEXT j FOR j = 2 TO 4: chp(j) = tempchp(j): NEXT j swim(1) = 0: IF picset(1) = 2 AND pict(1) = 1 THEN swim(1) = 1 ranatemp = 0 END SUB SUB loadrow (room(), my, mx) setpicstuf room(), 576, -1 loadset "data\direspam.map" + CHR$(0), ((my - 1) * 16) + (mx - 1), 0 END SUB SUB loadscreen (set, mapset(), mx, my, buffer()) set = mapset(((my - 1) * 16) + mx) F$ = "data\block" + MID$(STR$(set), 2, LEN(STR$(set)) - 1) + ".mxs" loadpage buffer(), F$ + CHR$(0), 3 END SUB SUB meter (charge#, fulpow(), cmet!, cmax, fcol, dpage) cmet! = INT((TIMER - charge#) * 10) / 10 IF cmet! > fulpow(5) THEN cmet! = fulpow(5) IF cmet! > cmax THEN cmet! = cmax fcol = fcol XOR 54 FOR i = 1 TO INT(cmet! - .1) + 1 IF i = INT(cmet!) + 1 THEN textcolor 34 + ((cmet! - INT(cmet!)) * 10), 0 IF i <> INT(cmet!) + 1 THEN textcolor 44, 0 IF cmet! = fulpow(5) THEN textcolor fcol, 0 printstr CHR$(15), 9 * i, 8, dpage NEXT END SUB SUB moveaim (o, cfull, aframe, aframe(), acounter(), aspeed(), anim(), y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), targx(), targy(), xaim(), yaim()) stempx = speed(o) IF targx(o - 4) > 0 THEN speed(o) = xaim(o): animate o, cfull, aframe, aframe(), acounter(), aspeed(), anim(): CALL wepright(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), _ acounter()) IF targx(o - 4) < 0 THEN speed(o) = xaim(o): animate o, cfull, aframe, aframe(), acounter(), aspeed(), anim(): CALL wepleft(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), _ acounter()) IF targy(o - 4) < 0 THEN speed(o) = yaim(o): animate o, cfull, aframe, aframe(), acounter(), aspeed(), anim(): CALL wepup(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), _ acounter()) IF targy(o - 4) > 0 THEN speed(o) = yaim(o): animate o, cfull, aframe, aframe(), acounter(), aspeed(), anim(): CALL wepdown(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), _ acounter()) speed(o) = stempx END SUB SUB poison (pois#, drain, pale(), inft#(), inftime(), plot(), picset(), pict()) IF pois# = 0 THEN pois# = TIMER IF pois# + 1.2 < TIMER THEN pois# = 0: drain = drain + 1 pale(1) = 17 IF TIMER - inft#(1) > inftime(1) THEN plot(62) = 0 pale(1) = 0 IF picset(1) = 2 AND (pict(1) = 1 OR pict(1) = 2) THEN pale(1) = 16 END IF END SUB SUB predire1 (plot(), buffer(), begin$(), ttp, big(), bobpal(), mainpal(), ttx!, tty!, spamc, t#, fade()) plot(157) = 0: plot(158) = 0 loadpage buffer(), "data\title.mxs" + CHR$(0), 2 loadpage buffer(), "data\startanm.mxs" + CHR$(0), 3 begin$(0) = "New Game" begin$(1) = "Load Game" begin$(2) = "Quit" menu begin$(), ttp, 3, 126, 94, 2, 8, 0, 15 copypage 2, 0 loadsprite big(), 0, 1 * 4, 50, 50, 3: drawsprite big(), bobpal(), 0 * 16, 150, 134, 0 loadsprite big(), 0, 0 * 4, 50, 50, 3: drawsprite big(), bobpal(), 22 * 16, 102, 139, 0 fadetopal mainpal(), fade() ttx! = 102: tty! = 139 t# = TIMER: spamc = 0: setkeys END SUB SUB predire2 (spamc, ttx!, tty!, t#, rate!, big(), bobpal()) IF spamc = 1 THEN ttx! = ttx! - .8: tty! = tty! - 4.8 IF spamc = 2 THEN ttx! = ttx! - 1.6: tty! = tty! - 2.4 IF spamc = 3 THEN ttx! = ttx! - 1.4: tty! = tty! + 2.3 IF spamc = 4 THEN ttx! = ttx! - .6: tty! = tty! + 5.1 IF TIMER - t# > 5.3 AND spamc = 0 THEN spamc = 1: playsnd 28, rate! IF spamc = 1 AND tty! < 100 THEN spamc = 2 IF spamc = 2 AND tty! < 70 THEN spamc = 3 IF spamc = 3 AND tty! > 100 THEN spamc = 4 IF spamc = 4 AND tty! > 142 THEN spamc = 5: playsnd 15, rate! IF TIMER - t# < 4.5 OR TIMER - t# > 5.7 THEN loadsprite big(), 0, 1 * 4, 50, 50, 3: drawsprite big(), bobpal(), 0 * 16, 150, 134, 1 IF TIMER - t# > 4.49 AND TIMER - t# < 5.1 THEN loadsprite big(), 0, 2 * 4, 50, 50, 3: drawsprite big(), bobpal(), 0 * 16, 150, 134, 1 IF TIMER - t# > 5 AND TIMER - t# < 5.7 THEN loadsprite big(), 0, 3 * 4, 50, 50, 3: drawsprite big(), bobpal(), 0 * 16, 140, 134, 1 IF TIMER - t# > 4.9 AND TIMER - t# < 5.6 THEN loadsprite big(), 0, 4 * 4, 50, 50, 3: drawsprite big(), bobpal(), 6 * 16, 110, 134, 1 IF spamc = 5 THEN loadsprite big(), 0, 6 * 4, 50, 50, 3: drawsprite big(), bobpal(), 22 * 16, INT(ttx!), INT(tty!) + 5, 1 loadsprite big(), 0, 0 * 4, 50, 50, 3: drawsprite big(), bobpal(), 22 * 16, INT(ttx!), INT(tty!), 1 copypage 1, 0 END SUB SUB reaper (plot(), inft#(), inftime(), drain, doom(), bobpal(), x(), y(), btog(), dpage) IF plot(172) = 1 THEN inft#(2) = TIMER: plot(172) = 0 IF TIMER - inft#(2) > inftime(2) THEN plot(61) = 0: drain = 9999 drawsprite doom(), bobpal(), 10 * 16, x(1) - 3 - btog(1), y(1) - 18, dpage IF x(1) > 10 AND x(1) < 310 THEN printstr STR$(400 - INT(TIMER - inft#(2))), x(1) + 10 - INT((LEN(STR$(400 - INT(TIMER - inft#(2))))) * 4), y(1) + 22, dpage END SUB SUB restgraf (ptemp(), picset(), ranatemp, speed(), pict(), plot(), o, x(), y()) FOR j = 1 TO 12: ptemp(j) = picset(j): NEXT j charload FOR j = 1 TO 12: picset(j) = ptemp(j): NEXT j corspeed speed(), pict(), picset(), plot(): o = 1: CALL align(o, x(), y(), speed()) ranatemp = 0 END SUB SUB runplot2 (mcur, my, mx, ickloc(), story!(), pcon, item()) mcur = ((16 * (my - 1)) + mx) ickloc(((mcur - 1) * 3)) = story!(pcon): pcon = pcon + 1 ickloc(((mcur - 1) * 3) + 1) = story!(pcon): pcon = pcon + 1 ickloc(((mcur - 1) * 3) + 2) = story!(pcon): pcon = pcon + 4 item(((mcur - 1) * 4)) = story!(pcon): pcon = pcon + 1 item(((mcur - 1) * 4) + 1) = story!(pcon): pcon = pcon + 1 item(((mcur - 1) * 4) + 2) = story!(pcon): pcon = pcon + 1 item(((mcur - 1) * 4) + 3) = story!(pcon): pcon = pcon + 1 END SUB SUB selfaim (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter(), kp(), d()) IF x(o) < 20 OR x(o) > 300 OR y(o) < 20 OR y(o) > 180 THEN EXIT SUB IF keyval(kp(1)) > 0 THEN IF (d(o) = 1 OR d(o) = 3) AND speed(o + (8 * (SGN(cfull2)))) > 0 THEN GOTO sf1 stempa = speed(o + (8 * (SGN(cfull2)))): speed(o) = 5 CALL wepup(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()): speed(o + (8 * (SGN(cfull2)))) = stempa sf1: END IF IF keyval(kp(2)) > 0 THEN IF (d(o) = 1 OR d(o) = 3) AND speed(o + (8 * (SGN(cfull2)))) > 0 THEN GOTO sf2 stempa = speed(o + (8 * (SGN(cfull2)))): speed(o) = 5 CALL wepdown(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()): speed(o + (8 * (SGN(cfull2)))) = stempa sf2: END IF IF keyval(kp(4)) > 0 THEN IF (d(o) = 2 OR d(o) = 4) AND speed(o + (8 * (SGN(cfull2)))) > 0 THEN GOTO sf3 stempa = speed(o + (8 * (SGN(cfull2)))): speed(o) = 5 CALL wepleft(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()): speed(o + (8 * (SGN(cfull2)))) = stempa sf3: END IF IF keyval(kp(3)) > 0 THEN IF (d(o) = 2 OR d(o) = 4) AND speed(o + (8 * (SGN(cfull2)))) > 0 THEN GOTO sf4 stempa = speed(o + (8 * (SGN(cfull2)))): speed(o) = 5 CALL wepright(o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()): speed(o + (8 * (SGN(cfull2)))) = stempa sf4: END IF END SUB SUB sethepal (mainpal(), pal$, needf) DEF SEG = VARSEG(mainpal(0)): BLOAD "data\palette." + pal$, VARPTR(mainpal(0)) needf = 1 END SUB SUB sethtarg (targx(), targy(), o, x(), y(), htarg(), speed(), cfull3, xaim(), yaim(), dist!, divnum!) targx(o - 4) = x(htarg(o - 4)) - x(o - 4) targy(o - 4) = y(htarg(o - 4)) - y(o - 4) dist! = SQR((ABS(targx(o - 4)) ^ 2) + (ABS(targy(o - 4)) ^ 2)) IF speed(o + (8 * (SGN(cfull3)))) > 0 THEN divnum! = dist! / speed(o + (8 * (SGN(cfull3)))): ELSE divnum! = 1 xaim(o) = ABS(INT(targx(o - 4) / divnum!)) yaim(o) = ABS(INT(targy(o - 4) / divnum!)) END SUB SUB setonkill (o, target(), picset(), beat(), bobpal(), x(), y(), mx, my, ickcon(), chp(), plot(), itset(), iactive(), xper(), levelup(), hp()) FOR j = 2 TO 4 IF picset(target(j) + 1) = 0 THEN target(j) = 0 NEXT j drawsprite beat(), bobpal(), 32, x(o) - 2, y(o) + 8, 2 tmcur = ((my * 16) + mx) DEF SEG = VARSEG(ickcon(0)): BLOAD "data\eneset.dat", VARPTR(ickcon(0)) FOR j = 0 TO 2 IF ickcon((tmcur * 6) + j) > 0 AND chp(j + 2) <= 0 THEN plot(ABS(ickcon((tmcur * 6) + j))) = 1 IF ickcon((tmcur * 6) + j) < 0 AND chp(j + 2) <= 0 THEN plot(ABS(ickcon((tmcur * 6) + j))) = 0 IF ickcon((tmcur * 6) + j + 3) > 0 AND chp(j + 2) <= 0 THEN plot(ABS(ickcon((tmcur * 6) + j + 3))) = 1 IF ickcon((tmcur * 6) + j + 3) < 0 AND chp(j + 2) <= 0 THEN plot(ABS(ickcon((tmcur * 6) + j + 3))) = 0 NEXT DEF SEG = VARSEG(ickcon(0)): BLOAD "data\enecon.dat", VARPTR(ickcon(0)) CALL checkcon(plot(), ickcon(), mx, my, picset()): CALL itemscon(plot(), itset(), picset(), iactive(), mx, my) xper(1) = xper(1) + xper(o) IF xper(1) > levelup(1) THEN hp(1) = hp(1) + 5: hp(1) = SMALL(hp(1), 200) chp(1) = hp(1) xper(1) = 0 IF levelup(1) > 20000 THEN levelup(1) = 32000: EXIT SUB levelup(1) = INT(levelup(1) * 1.5) END IF END SUB SUB showtext (set, dia(), dctr, arg, sayl(), sayx(), sayy(), dpage) OPEN "data\text" + RIGHT$(STR$(set), LEN(STR$(set)) - 1) + ".bob" FOR INPUT AS #1 IF dia(dctr) + arg = 1 THEN GOTO st1 FOR jj = 2 TO dia(dctr) + arg FOR j = 1 TO 20 INPUT #1, phr$ NEXT j: NEXT jj st1: FOR j = 1 TO sayl(dia(dctr) + arg) INPUT #1, phr$ printstr phr$, sayx(dia(dctr) + arg) + 16, sayy(dia(dctr) + arg) + (j * 8) + 8, dpage NEXT j CLOSE #1 END SUB SUB sloth (speed(), inft#(), inftime(), plot(), pict(), picset()) IF RND * 100 > 50 THEN speed(1) = 2 IF TIMER - inft#(4) > inftime(4) THEN plot(63) = 0 speed(1) = 4 IF pict(1) = 3 AND picset(1) = 1 THEN speed(1) = 2 IF pict(1) = 0 AND picset(1) = 2 THEN speed(1) = 5 END IF END SUB FUNCTION SMALL (n1, n2) SMALL = n1 IF n2 < n1 THEN SMALL = n2 END FUNCTION SUB statusscr (font, font(), csr2, dia(), sayx(), sayy(), sayw(), sayl(), big(), bobpal(), pale(), chp(), hp(), seed(), xper(), levelup(), maim(), csr(), fulpow(), armsp(), iname$(), arm$(), guard(), cmax, day$, ix(), iy(), arm, weps, plot(), _ conptr(), ipicset(), placer(), vpage, dpage, buffer(), ipal(), ipic()) textcolor 15, 0 fontb = font: font = 4: CALL fontset(font, font()): font = fontb IF csr2 = 0 THEN textcolor 11, 0 dctr = 0: arg = 0: dia(0) = 0 sayx(0) = 8: sayy(0) = 8: sayw(0) = 27: sayl(0) = 5 CALL drawbox(sayx(), sayy(), sayw(), sayl(), dia(), dctr, 3, arg) IF csr2 = 0 THEN textcolor 15, 0 IF csr2 = 1 THEN textcolor 11, 0 sayx(0) = 8: sayy(0) = 76: sayw(0) = 32: sayl(0) = 2 CALL drawbox(sayx(), sayy(), sayw(), sayl(), dia(), dctr, 3, arg) IF csr2 = 1 THEN textcolor 15, 0 IF csr2 = 2 THEN textcolor 11, 0 sayx(0) = 8: sayy(0) = 120: sayw(0) = 32: sayl(0) = 6 CALL drawbox(sayx(), sayy(), sayw(), sayl(), dia(), dctr, 3, arg) IF csr2 = 2 THEN textcolor 15, 0 CALL fontset(font, font()) textcolor 16, 0 drawsprite big(), bobpal(), pale(1) * 16, 260, 15, 3 printstr "Health:" + STR$(chp(1)) + "/" + RIGHT$(STR$(hp(1)), LEN(STR$(hp(1))) - 1), 18, 16, 3 printstr "Seeds x" + STR$(seed(1)), 152, 16, 3 printstr "Experience:" + STR$(xper(1)) + "/" + RIGHT$(STR$(levelup(1)), LEN(STR$(levelup(1))) - 1), 18, 24, 3 printstr CHR$(2) + STR$(maim(csr(2))), 160, 32, 3 printstr CHR$(15) + STR$(fulpow(csr(2))), 160, 40, 3 printstr CHR$(10) + STR$(armsp(csr(1))), 160, 48, 3 printstr iname$(csr(2)), 18, 32, 3 printstr CHR$(7) + " " + arm$(guard(csr(1))), 18, 48, 3 printstr "Skill:" + STR$(cmax), 18, 56, 3 printstr iname$(csr(1)), 18, 40, 3 printstr "INVENTORY", 18, 64, 3 printstr "Eat a Seed", 110, 64, 3 textcolor 15, 0 printstr day$ + " " + DATE$, 10, 0, 3 textcolor 4, 0 IF csr(1) > 0 THEN printstr "^", ix(csr(1)) + 6, iy(csr(1)) + 25, 3 printstr "^", ix(csr(2)) + 6, iy(csr(2)) + 25, 3 textcolor 4, 0 FOR i = 1 TO arm + weps: IF plot(conptr(i)) = 0 THEN GOTO status4 loadpage buffer(), "data\item" + MID$(STR$(ipicset(i)), 2, LEN(STR$(ipicset(i))) - 1) + ".mxs" + CHR$(0), vpage loadsprite placer(), (ipic(i) + 1) * 500, 0, 20, 25, vpage drawsprite placer(), bobpal(), 11 * 16, ix(i), iy(i), 3 status4: NEXT i IF csr(1) > 0 THEN loadpage buffer(), "data\item" + MID$(STR$(ipicset(csr(1))), 2, LEN(STR$(ipicset(csr(1)))) - 1) + ".mxs" + CHR$(0), vpage loadsprite placer(), (ipic(csr(1)) + 1) * 500, 0, 20, 25, vpage drawsprite placer(), bobpal(), ipal(csr(1)) * 16, ix(csr(1)), iy(csr(1)), 3 END IF loadpage buffer(), "data\item" + MID$(STR$(ipicset(csr(2))), 2, LEN(STR$(ipicset(csr(2)))) - 1) + ".mxs" + CHR$(0), vpage loadsprite placer(), (ipic(csr(2)) + 1) * 500, 0, 20, 25, vpage drawsprite placer(), bobpal(), ipal(csr(2)) * 16, ix(csr(2)), iy(csr(2)), 3 IF csr2 = 0 AND csr(0) = 0 THEN textcolor 2, 0: printstr "INVENTORY", 19, 65, 3: textcolor 16, 0 IF csr2 = 0 AND csr(0) = 1 THEN textcolor 2, 0: printstr "Eat a Seed", 111, 65, 3: textcolor 16, 0 END SUB SUB takeitem (hp(), take, chp(), cmax, ap(), seed(), ic1(), ic2(), ic3(), ic4(), itset(), mx, my, plot(), infplot(), inftemp(), inft#(), ickcon(), picset(), iactive(), say(), timef(), inert(), inftime()) hp(1) = hp(1) + hp(take) chp(1) = chp(1) + chp(take): chp(1) = SMALL(chp(1), hp(1)) cmax = cmax + ap(take): IF cmax > 20 THEN cmax = 20 seed(1) = seed(1) + seed(take): IF seed(1) > 4444 THEN seed(1) = 4444 ic3(take) = itset(((((my - 1) * 16) + (mx - 1)) * 8) + 136 + (take - 9)) ic4(take) = itset(((((my - 1) * 16) + 4 + (mx - 1)) * 8) + 136 + (take - 9)) FOR j = 1 TO 6: IF plot(infplot(j)) = 1 THEN inftemp(j) = 1 NEXT j IF ic1(take) > 0 THEN plot(ABS(ic1(take))) = 1 IF ic1(take) < 0 THEN plot(ABS(ic1(take))) = 0 IF ic2(take) > 0 THEN plot(ABS(ic2(take))) = 1 IF ic2(take) < 0 THEN plot(ABS(ic2(take))) = 0 IF ic3(take) > 0 THEN plot(ABS(ic3(take))) = 1 IF ic3(take) < 0 THEN plot(ABS(ic3(take))) = 0 IF ic4(take) > 0 THEN plot(ABS(ic4(take))) = 1 IF ic4(take) < 0 THEN plot(ABS(ic4(take))) = 0 CALL checkcon(plot(), ickcon(), mx, my, picset()): CALL itemscon(plot(), itset(), picset(), iactive(), mx, my): IF say(take) > 0 THEN playsnd say(take), -90.8858 FOR j = 1 TO 6 IF plot(infplot(j)) = 1 AND inftemp(j) = 0 THEN inft#(j) = TIMER IF plot(infplot(j)) = 0 AND inftemp(j) = 1 THEN inft#(j) = TIMER - inftime(j): plot(infplot(j)) = 1: IF j = 2 THEN plot(infplot(j)) = 0 inftemp(j) = 0: NEXT j IF timef(take) <> 0 THEN FOR i = 2 TO 4: inert(i) = inert(i) + timef(take): NEXT i END SUB SUB texttalk (y, wsay(), dia(), dctr, arg, big(), bobpal(), pale(), sayx(), sayy(), sayw(), sayl(), dpage, vpage, kp(), saypx(), saypy(), set) t# = TIMER: WHILE t# + .6 > TIMER: WEND: uu = 0 setkeys tt1: setkeys IF TIMER - t# > .4 THEN uu = uu XOR 1: t# = TIMER y = (wsay(dia(dctr) + arg) * 8) loadsprite big(), uu * 1250, y, 50, 50, 3 drawsprite big(), bobpal(), pale(wsay(dia(dctr) + arg) + 1) * 16, saypx(dia(dctr) + arg), saypy(dia(dctr) + arg), dpage CALL drawbox(sayx(), sayy(), sayw(), sayl(), dia(), dctr, dpage, arg): textcolor 17, 0: showtext set, dia(), dctr, arg, sayl(), sayx(), sayy(), dpage: textcolor 15, 0 copypage dpage, vpage: copypage 2, dpage setkeys IF keyval(kp(12)) > 0 OR keyval(kp(13)) > 0 THEN copypage 2, dpage: EXIT SUB GOTO tt1 END SUB SUB timeofday (timeoday, plot(), pal$, needf, mainpal(), hnb, chp(), hp(), ap(), nbhp(), nba()) timeoday = VAL(MID$(TIME$, 1, 2)) plot(27) = 0: pal$ = "2" IF timeoday > 5 THEN plot(27) = 1: pal$ = "0": needf = 1 IF timeoday > 17 THEN plot(27) = 0: pal$ = "2": needf = 1 plot(29) = 0: plot(30) = 0 IF timeoday > 10 AND timeoday < 12 THEN plot(29) = 1: pal$ = "3": needf = 1 IF timeoday < 1 OR timeoday > 22 THEN plot(30) = 1: pal$ = "4": needf = 1 IF needf = 1 THEN DEF SEG = VARSEG(mainpal(0)): BLOAD "data\palette." + pal$, VARPTR(mainpal(0)) IF hnb = 0 AND plot(27) = 0 THEN FOR i = 1 TO 4 chp(i) = chp(i) + nbhp(i) hp(i) = hp(i) + nbhp(i) ap(i) = ap(i) + nba(i) NEXT i hnb = 1 END IF IF hnb = 1 AND plot(27) = 1 THEN FOR i = 1 TO 4 chp(i) = chp(i) - nbhp(i) hp(i) = hp(i) - nbhp(i) ap(i) = ap(i) - nba(i) NEXT i hnb = 0 END IF IF plot(27) = 1 THEN plot(169) = 0 END SUB SUB toad (ranatemp, ranaset, ranapic, rananice, picset(), pict(), nice(), pale(), ptemp(), inft#(), inftime(), plot()) IF ranatemp = 0 THEN ranaset = picset(1): ranapic = pict(1): rananice = nice(1): ranatemp = 1 picset(1) = 2: pict(1) = 9: pale(1) = 26: nice(1) = 25 FOR j = 1 TO 12: ptemp(j) = picset(j): NEXT j charload FOR j = 1 TO 12: picset(j) = ptemp(j): NEXT j END IF picset(1) = 2: pict(1) = 9: pale(1) = 26 IF TIMER - inft#(5) > inftime(5) THEN plot(64) = 0: pict(1) = ranapic: picset(1) = ranaset: nice(1) = rananice: ranatemp = 0 END IF END SUB SUB weirset (plot(), picset(), pict(), nice()) IF plot(27) = 1 THEN picset(1) = 1: pict(1) = 0: nice(1) = 1 IF plot(27) = 0 THEN picset(1) = 2: pict(1) = 0: nice(1) = 20 END SUB SUB wepdown (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) cant = 0: look = 0 IF y(o) + speed(o + (8 * (SGN(cfull2)))) > 170 THEN cant = 1: GOTO wd1 tempa = 19 + speed(o + (8 * (SGN(cfull2)))) tempb = (INT(x(o) / 20)) + INT(((y(o) - 15) + tempa) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 1) = 1 THEN cant = 1 tempa = 19 + speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) + 19) / 20)) + INT(((y(o) - 15) + tempa) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 1) = 1 THEN cant = 1 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND x(o) / 20 <> INT(x(o) / 20) THEN tempa = 19 + speed(o + (8 * (SGN(cfull2)))) tempb = (INT(x(o) / 20)) + INT(((y(o) - 15) + tempa) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 cant = cant + (tempc AND 2) tempa = 19 + speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) + 19) / 20)) + INT(((y(o) - 15) + tempa) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 cant = cant + (tempc AND 8) END IF IF boomf(o) = 1 THEN cant = 0 wd1: IF cant > 0 AND boomer(o + (8 * (SGN(cfull2)))) = 1 AND boomf(o) = 0 THEN boomf(o) = 1: htarg(o - 4) = o - 4: EXIT SUB IF cant > 0 THEN picset(o) = 0: acounter(o) = 0: boomf(o) = 0 IF cant = 0 THEN y(o) = y(o) + speed(o + (8 * (SGN(cfull2)))) END SUB SUB wepleft (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) cant = 0: look = 0 IF y(o) - speed(o + (8 * (SGN(cfull2)))) < 0 THEN cant = 1: GOTO wl1 IF x(o) - speed(o + (8 * (SGN(cfull2)))) < -19 THEN cant = 1: GOTO wl1 tempa = speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) - tempa) / 20)) + INT((y(o) - 15) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 2) = 2 THEN cant = 1 tempa = speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) - tempa) / 20)) + INT(((y(o) - 15) + 19) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 2) = 2 THEN cant = 1 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (y(o) + 5) / 20 <> INT((y(o) + 5) / 20) THEN tempa = speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) - tempa) / 20)) + INT((y(o) - 15) / 20) * 16 tempc = room((tempb) * 2 + 1) / 256 cant = cant + (tempc AND 4) tempa = speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) - tempa) / 20)) + INT(((y(o) - 15) + 19) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 cant = cant + (tempc AND 1) END IF IF boomf(o) = 1 THEN cant = 0 wl1: IF cant > 0 AND boomer(o + (8 * (SGN(cfull2)))) = 1 AND boomf(o) = 0 THEN boomf(o) = 1: htarg(o - 4) = o - 4: r(o) = range(o) * 3: EXIT SUB IF cant > 0 THEN picset(o) = 0: acounter(o) = 0: boomf(o) = 0 IF cant = 0 THEN x(o) = x(o) - speed(o + (8 * (SGN(cfull2)))) END SUB SUB wepright (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) cant = 0: look = 0 IF y(o) - speed(o + (8 * (SGN(cfull2)))) < 0 THEN cant = 1: GOSUB wr1 IF x(o) + speed(o + (8 * (SGN(cfull2)))) > 319 THEN cant = 1: GOSUB wr1 tempa = 19 + speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) + tempa) / 20)) + INT((y(o) - 15) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 8) = 8 THEN cant = 1 tempb = (INT((x(o) + tempa) / 20)) + INT((y(o) - 15 + 19) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 8) = 8 THEN cant = 1 IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (y(o) + 5) / 20 <> INT((y(o) + 5) / 20) THEN tempa = 19 + speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) + tempa) / 20)) + INT((y(o) - 15) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 cant = cant + (tempc AND 4) tempa = 19 + speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) + tempa) / 20)) + INT(((y(o) - 15) + 19) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 cant = cant + (tempc AND 1) END IF IF boomf(o) = 1 THEN cant = 0 GOSUB wr1 EXIT SUB wr1: IF cant > 0 AND boomer(o + (8 * (SGN(cfull2)))) = 1 AND boomf(o) = 0 THEN boomf(o) = 1: htarg(o - 4) = o - 4: r(o) = range(o) * 3: EXIT SUB IF cant > 0 THEN picset(o) = 0: acounter(o) = 0: boomf(o) = 0 IF cant = 0 THEN x(o) = x(o) + speed(o + (8 * (SGN(cfull2)))) RETURN END SUB SUB wepup (o, y(), x(), mx, my, speed(), cfull2, cant, look, passall(), room(), boomf(), boomer(), htarg(), r(), range(), picset(), acounter()) cant = 0: look = 0 IF y(o) - speed(o + (8 * (SGN(cfull2)))) < 20 THEN cant = 1: GOTO wu1 tempa = 15 - speed(o + (8 * (SGN(cfull2)))) tempb = (INT(x(o) / 20)) + INT((y(o) - tempa) / 20) * 16 tempc = room((tempb) * 2 + 1) / 256 tempc = -tempc * (tempc >= 0) IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 4) = 4 THEN cant = 1 tempa = 15 - speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) + 19) / 20)) + INT((y(o) - tempa) / 20) * 16 tempc = room((tempb) * 2 + 1) / 256 tempc = -tempc * (tempc >= 0) IF passall(o + (8 * (SGN(cfull2)))) = 0 AND (tempc AND 4) = 4 THEN cant = 1 tempc = passall(o + (8 * (SGN(cfull2)))) IF tempc = 0 AND x(o) / 20 <> INT(x(o) / 20) THEN tempa = 15 - speed(o + (8 * (SGN(cfull2)))) tempb = (INT(x(o) / 20)) + INT((y(o) - tempa) / 20) * 16 tempc = room(tempb * 2 + 1) / 256 tempc = -tempc * (tempc >= 0) cant = cant + (tempc AND 2) tempa = 15 - speed(o + (8 * (SGN(cfull2)))) tempb = (INT((x(o) + 19) / 20)) + INT((y(o) - tempa) / 20) * 16 tempc = room((tempb) * 2 + 1) / 256 tempc = -tempc * (tempc >= 0) cant = cant + (tempc AND 8) END IF IF boomf(o) = 1 THEN cant = 0 wu1: IF cant > 0 AND boomer(o + (8 * (SGN(cfull2)))) = 1 AND boomf(o) = 0 THEN boomf(o) = 1: htarg(o - 4) = o - 4: r(o) = range(o) * 3: EXIT SUB IF cant > 0 THEN picset(o) = 0: acounter(o) = 0: boomf(o) = 0 IF cant = 0 THEN y(o) = y(o) - speed(o + (8 * (SGN(cfull2)))) END SUB