; _ _ _ _ _ _ _ _ ;[_][_][_][_][_][_][_][_] ; ; The Land of SPUR ; ; (C)opyright 1987 ; Greg W. Davis ; and ; Peripherals Plus ; ; 06/05/88 12:08 ; _______________________ ; v3.0 ; Spur Utilities ; _ _ _ _ _ _ _ _ ;[_][_][_][_][_][_][_][_] public configure on nocar goto linkterm main input \"SPUR Utility (?=Menu): "i$ push main if i$="F" goto search if i$="S" goto scatter if i$="C" goto cross if i$="D" goto show.obj if i$="P" goto purge if i$="G" goto workshet if i$="N" goto config if i$="Q" goto quit if i$="R" goto clone if i$<>"?" return menu setint(1):print \s$\' [------------------------------------] [ Sysop Utility Menu ] [------------------------------------] [ [F] Find ] [ [C] Cross Reference ] [ [D] Room Descriptions ] [ [R] Room Clone ] [ [S] Scatter Players ] [ [P] Purge Old Users ] [ [N] New System Config ] [ [G] Grid Printer ] [ [Q] Quit ] [------------------------------------]':setint(""):return config print \"Configure New System." input @0\"Are you sure ?" i$:if i$<>"Y" return pop configure on nocar goto linkterm gosub config2 dy$=dz$+"spur.logon":link dy$ config2 print \"Enter the name of your game:" input @3\"->"g$ print \"Make sure "dx$" drive is on-line" print "and press [Return]";:get i$ print \\"Creating files to "dx$" drive..." f$=dx$+"spur.time":kill f$ create f$ f$=dx$+"spur.monsters":kill f$ create f$ f$=dx$+"spur.spells":kill f$ create f$ f$=dx$+"spur.weapons":kill f$ create f$ f$=dx$+"spur.items":kill f$ create f$ f$=dx$+"spur.stores":kill f$ create f$ f$=dx$+"spur.allies":kill f$ create f$ f$=dx$+"spur.log":kill f$ create f$ f$=dx$+"spur.users":kill f$ create f$ f$=dm$+"mail":ready f$ bk$=dx$+"spur.books" open #1,bk$:a=mark(1):close if (not a) goto config3 create bk$:open #1,bk$:gosub bld.mgfl ready bk$ msg(0)=999:update config3 f$=dx$+"weapons":open #1,f$:a=mark(1):close b=34:c=10:gosub reset:wc=x-1 f$=dx$+"items":open #1,f$:a=mark(1):close b=30:c=0:gosub reset:ic=x-1 f$=dx$+"stores":open #1,f$:a=mark(1):close b=26:c=0:gosub reset:cg=x-1 f$=dx$+"spells":open #1,f$:a=mark(1):close b=40:c=0:gosub reset:sc=x-1 f$=dx$+"allies":open #1,f$:a=mark(1):close b=26:c=0:gosub reset:ac=x-1 f$=dx$+"monsters":open #1,f$:a=mark(1):close b=32:c=0:gosub reset:mc=x-1 f$=dx$+"spur.winners":open #1,f$:a=mark(1):close if (not a) goto config4 create f$:open #1,f$:print #1,' [] [] [] [] [] [] [] [] [] [] [] [] Conquerors of SPUR [] [] [] [] [] [] [] [] [] [] [] []':close config4 x=0 config.lv x=x+1:f$="d.level"+str$(x):open #1,f$:a=mark(1):close if (not a) goto config.lv lc=x-1 config5 np=0:lg$="":go=1:oh=0:ol=5000:og=0:sd=1:pq=1:mv=0:td=0:bd=1:dh=0:dl=100 config5a f$=dx$+"spur.data":kill f$:create f$:open #2,f$ print #2,g$,np,go,oh,ol,og,lg$ print #2,lc,mc,ic,sc,wc,ac,cg print #2,sd,pq,mv,td,bd print #2,dh,dl:close print \\"System files created" return reset if a create f$ open #1,f$ print #1,c:x=1 count position #1,b,x input #1,cb$ if cb$="" close:return if cb$="*" goto count2 cb$="1":if x<=c then cb$="2" position #1,b,x print #1,cb$ count2 x=x+1:goto count bld.mgfl ed=edit(5):fill ed,255,0:poke ed,8:poke ed+1,32 write #1,ed,2:fill ed,255,0:for x=1 to 20:write #1,ed,255:next write #1,ed,26:close:return room.def input @2\"Rooms on which level? "i$ if i$="" pop:return x=val(i$):if (x<1) or (x>lc) print \lc" levels only":goto room.def dr$=dx$+"room.level"+i$:f1$=dx$+"d.level"+i$ open #1,f1$:input #1,ln$,nr,ri:close #1 dy$=dm$+"mail":ready dy$ open #1,dr$:a=mark(1):close #1 if a print \"No rooms to read":pop:return ready dr$ return search gosub room.def srch.1 print \"(I)tem (M)onster (R)ation (W)eapon" input @2\"Enter search type: "a$ if a$="" return a$=left$(a$,1) if not instr(a$,"IMRW") goto srch.1 srch.2 input @2\"Enter #: "a if a=0 return x=1 srch.3 print \"Scanning # [" x "]"; srch.4 input #msg(x),lo$,m,i,wp,fd,n setint(1) if (a$="I") and (a=i) print \\"Item # "i" found in room # "x:goto srch.6 if (a$="M") and (a=m) print \\"Monster # "m" found in room # "x:goto srch.6 if (a$="R") and (a=fd) print \\"Ration # "fd" found in room # "x:goto srch.6 if (a$="W") and (a=wp) print \\"Weapon # "wp" found in room # "x:goto srch.6 if key(1) print \\"Search aborted":goto srch.1 if xnr) goto srch.7 goto srch.3 srch.7 print \\"Search complete.":goto srch.1 cross gosub room.def gosub ptr.pmt q=0:y=18:if o=5 then y=60 x=1 gosub header rm.prt1 input #msg(x),lo$,m,i,wp,fd,n,s,e,w,rc,rt setint(1) if lo$="" goto rm.prt3 print #o,right$(" "+str$(x),4)" "; print #o,left$(lo$+" ",25)" "; if m print #o,right$(" "+str$(m),3);:else print #o," "; print #o," ";:if i print #o,right$(" "+str$(i),3);:else print #o," "; print #o," ";:if wp print #o,right$(" "+str$(wp),3);:else print #o," "; print #o," ";:if fd print #o,right$(" "+str$(fd),3);:else print #o," "; print #o," ";:if n print #o,"Y";:else print #o," "; print #o," ";:if s print #o,"Y";:else print #o," "; print #o," ";:if e print #o,"Y";:else print #o," "; print #o," ";:if w print #o,"Y";:else print #o," "; print #o," ";:if rc=1 print #o," Y";:else print #o," "; print #o," ";:if rc=2 print #o," Y";:else print #o," "; if rt>0 print #o,right$(" "+str$(rt),6):else print #o q=q+1:if (not q mod 60) and (o=5) then for i=1 to 4:print #o:next:gosub header if (not q mod 15) and (o=0) print\\:gosub header rm.prt3 if (xnr then x=nr show.1 edit(0) input #msg(x),lo$,m,i,wp,fd,n,s,e,w,rc,rt if lo$="" goto show.7 copy #6,#8 setint(1) print #o,\md$ print #o,"Room Number :"x\ print #o,"Monster :";:if (not m) print #o:goto show.2 open #1,dy$:position #1,32,m:input #1,cb$\m$:close print #o," # "right$(" "+str$(m),3)" - "mid$(m$,3) show.2 print #o,"Item :";:if (not i) print #o:goto show.3 open #1,dw$:position #1,30,i:input #1,cb$\it$:close print #o," # "right$(" "+str$(i),3)" - "mid$(it$,3) show.3 print #o,"Weapon :";:if (not wp) print #o:goto show.4 open #1,b$:position #1,34,wp:input #1,cb$\w$:close print #o," # "right$(" "+str$(wp),3)" - "mid$(w$,3) show.4 print #o,"Ration :";:if (not fd) print #o:goto show.5 open #1,a$:position #1,26,fd:input #1,cb$\it$:close print #o," # "right$(" "+str$(fd),3)" - "mid$(it$,3) show.5 print #o print #o,"Exits :"; if n print #o," North"; if s print #o," South"; if w print #o," West"; if e print #o," East"; print #o print #o,\"Room command : ";:if rc=1 print #o,"UP";:else if rc=2 print #o,"DOWN";:else print #o,"NONE":goto show.6 if (rc>0) and (rt>0) print #o," - to #"rt:else if (rc>0) and (rt=0) print #o," - Shoppe":else print #o show.6 print #o,"Room Name : "lo$ print #o,\"Room Description :"\ copy #8,#o print #o,\ show.7 x=x+1:if (x>nr) or (key(1)) return if lo$="" goto show.1 if o=0 print md$:input @2\"Q=Quit, C/R=Continue: "i$:if i$="Q" return goto show.1 scatter on nocar goto scatdrop move ram,58 to ram2 dy$=dx$+"spur.users":open #1,dy$ for x=1 to np position #1,130,x input #1,n$,b1,b2,n7,n8,b3 input #1,p1$ input #1,p2$ input #1,dx,lx,sx,gx if (not b1) goto sct.skp0 open #2,"b:users" position #2,128,b1,70 read #2,ram,58 close #2 print\ n$" in room #"n8", level#"n7\"has not called since "when$". Scatter player (Y/N)? "; input @2i$: if (i$<>"") and (i$<>"Y") goto scat.skp runaway zz$=rnd$:n7=random(lc):if lc=0 goto runaway f$=dx$+"d.level"+str$(n7):open #2,f$ input #2,ln$,nr,ri:close #2 dr$=dx$+"room.level"+str$(n7):ready dr$ runaway0 zz$=rnd$:n8=random(nr):if n8=0 goto runaway0 input #msg(n8),lo$,m,i,wp,fd,n,s,e,w,rc,rt,tp if (n=0) and (s=0) and (e=0) and (w=0) and (rc=0) then n8=n8+3:n8=n8 mod nr:n8=n8+1:goto runaway0 print\" "n$" sent to "lo$" in "ln$ position #1,130,x print #1,n$,b1,b2,n7,n8,b3 print #1,p1$ print #1,p2$ print #1,dx,lx,sx,gx goto sct.skp0 scat.skp input@2\"Delete Player ? "i$:if i$<>"Y" goto sct.skp0 if gx print\"Must delete from Guild #"gx" first.":goto sct.skp0 gosub purge.3 dy$=dx$+"spur.users":open #1,dy$ sct.skp0 next:close:move ram2,58 to ram:return close move ram2,58 to ram on nocar goto linkterm return scatdrop move ram2,58 to ram:dy$=dz$+"spur.logon":link dy$,"quit3" purge input @0\"Purge Inactive Users? "i$ if i$<>"Y" return print \"Purging users..."\\s$\ x=0 purge.1 print \"Scanning SPUR user file" dy$=dx$+"spur.users":dw$="b:users" open #1,dy$:open #2,dw$ print \"User # [" x "]"; purge.2 x=x+1:if (x>np) or (key(1)) goto purge.5 y=len(str$(x-1))+1:print chr$(8,y) x "]"; position #1,130,x input #1,n$,b1 position #2,128,b1 input #2,a$,b$ if a$<>"" goto purge.2 gosub purge.3:goto purge.1 purge.3 print \"Purging user # "x q=q+1 position #1,130,x print #1,0,0 close dy$=dx$+"weapons":dw$=dx$+"spur.weapons" open #1,dy$:open #2,dw$ position #2,64,x input #2,a,i$ if a=0 close:goto purge.4 for j=1 to a y=val(i$):i$=mid$(i$,5) if y>10 position #1,34,y:print #1,"1" next:close purge.4 dy$=dx$+"allies":dw$=dx$+"spur.allies" open #1,dy$:open #2,dw$ position #2,78,x for j=1 to 3 input #2,x1$,x1,x2 position #1,26,x2 if x2<>0 print #1,1 next:close return purge.5 close:print \q" users deleted.":return workshet if info(0) print \"Local mode only!":return if (not pq) print \"Printer not defined..."\:return o=5:l=7 print \"Print Level Development Worksheet"\ wksht.1 input @2\"Enter Number of Rooms ACROSS: "a$ if a$="" return s=val(a$):if (s<2) or (s>30) print \"Enter 2-30.":goto wksht.1 wksht.2 input @2\"Enter Character Width of PAPER: "a$ if a$="" goto wksht.1 b=val(a$):if (b<80) or (b>230) print \"Enter 80-230.":goto wksht.2 input @2\\"Ready PRINTER - Hit RETURN :"b$ print #o,chr$(9)a$"N"; w=b/10:x1=s:x2=s length b=l:if x20 goto width if x2=0 return x1=s:goto length prt.grid d=a-1:c=0 grid1 print #o,"|------|"; if d=0 then print #o:x=0:goto grid2:else for y=1 to d::print #o," |------|";:next:print #o x=0 grid2 print #o,"| |"; if d=0 then print #o:else for y=1 to d:print #o," | |";:next print #o x=x+1:if x<5 goto grid2 print #o,"|------|"; if d=0 then print #o,\\:else for y=1 to d:print #o," |------|";:next:print #o,\\ c=c+1:if cnr then print\"Room 1 to "nr" only.":goto clone0 print\"Ending room # (C/R="nr;:input @2") :"i$:er=val(i$):if er > nr then er=nr if i$="" then er=nr ready dr$ input@0\"North Exit ? "i$:if i$="Y" then n=1:else n=0 input@0"South Exit ? "i$:if i$="Y" then s=1:else s=0 input@0"East Exit ? "i$:if i$="Y" then e=1:else e=0 input@0"West Exit ? "i$:if i$="Y" then w=1:else w=0 input@2\"Room Name :"lo$:if lo$="" then z=1:else z=0 print\"Type in Room Description, .s when done"\ edit(0) ed.room3 edit(1) if edit(2)>1000 print\"Room desc. too long, please shorten."\:goto ed.room3 if not edit(2) print\"No room Description." ed.r.mon input \"Monster #: "m if (m<0) or (m>mc) print \"Enter 0-"mc:goto ed.r.mon if m=0 print \"No monster waiting!" ed.r.itm input \"Item #: "i if i=0 print \"No item in room!":goto ed.r.wep if (i<6) or (i>ic) print \"Enter 6-"ic:goto ed.r.itm ed.r.wep input \"Weapon #: "wp if wp=0 print \"No weapon here!":goto ed.r.rat if (wp<11) or (wp>wc) print \"Enter 11-"wc:goto ed.r.wep ed.r.rat input \"Ration #: "fd if (fd<0) or (fd>cg) print \"Enter 0-"cg:goto ed.r.rat if fd=0 print \"No rations in room!" ed.r.cmd input \"Room Command # (?=List): "rc$:rc=val(rc$) if rc$="?" gosub cmd.list:goto ed.r.cmd if (rc<0) or (rc>9) print \"Enter 0-9 only!":goto ed.r.cmd if rc=0 print \"No room command!":rt=0:goto clone1 if rc=1 print \"Ladder UP!" if rc=2 print \"Ladder DOWN!" if rc=3 print\"Entrance IN!" if rc=4 print\"Exit OUT!" if rc=5 print\"TELEPORT TRAP!" if rc=6 print\"Entrance to Wizard's Lair!":goto clone1 if rc=7 print\"Entrance to Rest INN!":goto clone1 if rc=8 print\"Entrance to Smithy's":goto clone1 if rc=9 print\"Entrance to Healer's":goto clone1 ed.rc2 if (lx=1) and (rc=1) then rt=x:tp=0:print\"Exit to WIN!":goto clone1 input\" Connect to Level: "tp if (tp<1) or (tp>lc) goto ed.rc2 input" Connect to Room: "rt if (rt<1) or (rt>900) goto ed.rc2 goto clone1 cmd.list print\' 1- Ladder UP 5- TELEPORT 2- Ladder DOWN 6- In to Wizard`s 3- Entrance IN 7- In to Rest INN 4- Exit OUT 8- In to Smithy`s 9- In to Healer`s' return clone1 if lo$="" then print \"Room name = Room #" if (x=1) and (lx=1) then print\'Room #1 - Level #1 must be configured separately.':x=x+1 print\"Cloning ["x"]"; clone2 y=len(str$(x+1))+1:print chr$(8,y) x"]"; if z then lo$="ROOM # "+str$(x) gosub wr.room x=x+1:if x<=er then goto clone2 print:return wr.room a=msg(x):kill #msg(x) print #msg(x),lo$,m,i,wp,fd,n,s,e,w,rc,rt,tp copy #8,#6 msg(x)=a:update return cont input @2\"Press Return to continue "a$:return ptr.pmt o=0:if info(0) return q$="":input @0\"Send output to printer? "q$ if q$="Y" then o=5 return relink dw$=ds$+"spur.sysop":link dw$,"relink" quit pop:dy$=ds$+"spur.sysop" link dy$ linkterm dy$=dz$+"spur.logon":link dy$,"quit3" on nocar goto linkterm