; _ _ _ _ _ _ _ _ _ _ ;[_][_][_][_][_][_][_][_][_][_] ;| | ;| The Land of SPUR | ;| | ;| (C)opyright 1987 | ;| | ;| Greg W. Davis/Peripherals+ | ;|____________________________| ;| | ;| SPUR Guilds | ;| GuildMaster Segment | ;| | ;| 09/13/87 09:30 | ;|_ _ _ _ _ _ _ _ _ _| ;[_][_][_][_][_][_][_][_][_][_] on nocar goto linktm1 ; *********************** ; * GuildMaster Logon * ; *********************** guildmaster if (not gn) goto gm.note1 if xw=0 goto gm.note dy$=dx$+"weapons":open #1,dy$ for x=1 to xw:y=(x*4)-3:a=val(mid$(xw$,y)) position #1,34,a,2 input #1,n0$:if instr("STAFF",n0$) x=xw:next:close:gosub rd.data:x=0:goto guild.m next:close:goto gm.note guild.m echo="%":input\"Enter Guild Password: "i$:echo="" if (i$=gw$) and (pn=gm) gosub rd.guild:else goto guild.m0 gosub rd.req:goto guild.m1 guild.m0 x=x+1:if x=2 goto gm.note1 print\"Password Invalid!":goto guild.m gm.note print\' Ye must have a STAFF of POWER to enter as a GUILDMASTER!':goto linkm1 gm.note1 print\' Thou art NOT a GUILDMASTER! Ye must first find the STAFF of POWER and apply to the DUNGEON MASTER to begin your GUILD!':goto linkm1 ; ********************** ; * GuildMaster Menu * ; ********************** guild.m1 on nocar goto linkterm input\"GuildMaster (?=Menu): "i$ push guild.m1 if not instr(i$,"ISDRLTQC?") return if i$="L" gosub view.g:return if i$="T" goto transfer if i$="Q" pop:goto linkmain if i$="S" goto status if i$="R" goto resign if i$="I" goto impart if i$="D" goto display if i$="C" goto delete setint(1):print \s$\' [-----------------------------------]' print"(";lt$;g$;rt$")" print'(-----GuildMaster Command Menu------) [ ] ===================================== [ L: List Guild members ] ( S: Status of Guild members ) ( D: Display Guild property ) ( T: Transfer gold/goods ) ( I: Impart Spells ) ( C: Cast out a member ) ( R: Resign as GuildMaster ) ===================================== [ Q: Quit GuildMaster Menu ] -----------------------------------':setint(""):return ; ******************************* ; * View Guild Requests * ; ******************************* rd.req print\"[ Checking Requests to join Guild ]" f$=dx$+"guild.req"+str$(gn) open #1,f$:if mark(1) close:print\"** Request file Empty **":return if gu=10 print\"You may accept no new members (10 max)":close:kill f$:return rd.req1 input #1,n$:if n$<>"" goto rd.req2 rd.req1a close :kill f$:return rd.req2 input #1,a,b edit(0):copy#1,#8 print\md$\"Request to become a Guild member" print\"Adventurers Name: "n$ print"System #: "a print"Player #: "b print\"Plea for acceptance:"\ copy#8,#0 rd.req3 input@0\"Accept new member ?"i$ if i$="Y" h$=" ** Guild Acceptance Notification < **":goto rd.req4 if i$<>"N" goto rd.req3 h$="** > Guild Membership Decline < **":gosub accept:goto rd.req1 rd.req4 x=b:gosub rd.user if (not b1) print\"Player no longer in game.":goto rd.req1 if gx print\"Player is already a Guildmember.":goto rd.req1 gx=gn:gosub wr.user:gosub accept print\"Player notified.":goto rd.req1 accept dw$=dm$+"mail" edit(0) print \"Wait...": ready dw$ if info(6)<29 print \"Mail bit-map full":return print #msg(a),un:print #6,h$\ print #6,"From -> "n1$ print #6,"Date -> "date$" "time$\ if i$="Y" print #6,\"You have been accepted into the" if i$="N" print #6,\"You have been declined membership in the" print #6,gn$" Guild." copy #8,#6:print #msg(a),chr$(4);chr$(0); msg(a)=1:update if i$="N" return gosub fix.num:gu$=gu$+b$:gs=gs+5:gu=gu+1 return ; ************************ ; * List Guild Members * ; ************************ view.g b=1:dy$=dx$+"spur.users" print \\" # Guild Member"\"--- ---------------" open #1,dy$ view.g1 y=(b*4)-3:a=val(mid$(gu$,y)) position #1,130,a input #1,n$,l1 setint(1) if (not l1) goto view.g3 if a=pn then n$=n1$ view.g2 print right$(" "+str$(b),3)" "; print left$(n$+" ",15) view.g3 b=b+1:if (b>gu) or (key(1)) close:return goto view.g1 ; **************************** ; * Display Guild Property * ; **************************** display print\"[ Display Guild Property ]" input@2\"Guild member # or [A]ll: "i$:if i$="" return if i$="A" goto display0 x=val(i$):if (x<1) or (x>gu) print\"No such member":goto display y=(x*4)-3:x=val(mid$(gu$,y)):gosub rd.user if (not b1) print\"Player no longer in game":goto display gosub display1:goto display display0 for z=1 to gu y=(z*4)-3:x=val(mid$(gu$,y)):gosub rd.user if (not b1) next:goto display gosub display1:next:goto display display1 g1=g3:g2=g4:gosub prt.gold print\n$"'s Inventory:"\ print \"Gold - In Hand:"gd$ print \"Items Carried:" gosub pr.items print \"Rations:" gosub pr.food print \"Weapons:" gosub pr.weapons print \"Spells Known:" gosub prspell return ; ************************* ; * Display Subroutines * ; ************************* prspell gosub rd.spells if a=0 print \"No Spells.":return dy$=dx$+"spells" open #1,dy$ print:for i=1 to a y=(i*4)-3:b=val(mid$(a$,y)) position #1,40,b input #1,cb$\q$,q2$,q3,q4 print right$(" "+str$(i),3)". - "; print q$;chr$(32,21-len(q$))" Success: "q3"0%" next:close:return pr.items gosub rd.items if a=0 print \"No Items.":return dy$=dx$+"items" open #1,dy$ print:for i=1 to a y=(i*4)-3:b=val(mid$(a$,y)) position #1,30,b,2 input #1,n0$ print right$(" "+str$(b),3)". - "mid$(n0$,3) next:close:return pr.food gosub rd.stores if a=0 print \"No Rations.":return dy$=dx$+"stores" open #1,dy$ print:for i=1 to a y=(i*4)-3:b=val(mid$(a$,y)) position #1,26,b,2 input #1,n0$ print right$(" "+str$(i),3)". - "mid$(n0$,3) next:close:return pr.weapons gosub rd.wep if a=0 print \"No Weapons.":return dy$=dx$+"weapons" open #1,dy$ print:for i=1 to a y=(i*4)-3:b=val(mid$(a$,y)) position #1,34,b,2 input #1,n0$ print right$(" "+str$(i),3)". - "mid$(n0$,3) next:close:return ; **************************** ; * Guild member Status * ; **************************** status print\"[ Guild Members Status ]" input@2\"Guild member # or [L]ist: "i$:if i$="" return if i$="L" gosub view.g:goto status x=val(i$):if (x<1) or (x>gu) print\"No such member":goto status y=(x*4)-3:x=val(mid$(gu$,y)):gosub rd.user if (not b1) print\"Player no longer in game":goto status print \n$"'s Current Status:"\ g1=g3:g2=g4:gosub prt.gold print "Gold - In Hand:"gd$ g1=g5:g2=g6:gosub prt.gold print " In Bank:"gd$ print \"Experience Pts :"right$(" "+str$(m1),3)" Hit Points :"right$(" "+str$(b3),3) print "Monsters Kills :"right$(" "+str$(m2),3)" Player Level :"right$(" "+str$(m4),3) a=n1*4:print \"Strength: "right$(" "+str$(n1),2)right$(" "+str$(a),4)"% "; a=n2*4:print "Const'n :"right$(" "+str$(n2),2)right$(" "+str$(a),4)"%" a=n3*4:print "Intel : "right$(" "+str$(n3),2)right$(" "+str$(a),4)"% "; a=n6*4:print "Dexterity:"right$(" "+str$(n6),2)right$(" "+str$(a),4)"%" a=n5*4:print "Wisdom : "right$(" "+str$(n5),2)right$(" "+str$(a),4)"% "; a=n4*4:print "Energy :"right$(" "+str$(n4),2)right$(" "+str$(a),4)"%" print \"Shield : "right$(" "+str$(s),3)"% "; print "Armor : "right$(" "+str$(ax),3)"%" print \"Class : "; if z1=1 print "Alchemist ";:else if z1=2 print "Druid "; if z1=3 print "Fighter ";:else if z1=4 print "Paladin "; if z1=5 print "Ranger ";:else if z1=6 print "Thief "; if z1=7 print "Archer ";:else if z1=8 print "Assassin "; if z1=9 print "Knight "; print " Race: "; if z2=1 print "Human":else if z2=2 print"Ogre" if z2=3 print "Gnome":else if z2=4 print"Elf" if z2=5 print "Hobbit":else if z2=6 print"Hafling" if z2=7 print "Dwarf":else if z2=8 print"Orc" if z2=9 print "Half-Elf" print \"SPUR : ";:if (sx) print "Alive!":else print "Dead..." g1=dh:g2=dl:gosub prt.gold print "Dwarf: ";:if (dx) print "Alive! ["gd$" gold]":else print "Dead..." goto status ; *********************************** ; * Transfer to other Guild members * ; *********************************** transfer print\"[ Transfer ]" input@2\"[G]old [W]eapons [I]tems [R]ations: "i$:if i$="" return if not instr(i$,"IWRG") print\"Invalid choice":goto transfer if i$="I" tr$="Items":o=30:tt=60:goto trans1 if i$="W" tr$="Weapons":o=34:tt=6:goto trans1 if i$="R" tr$="Stores":o=26:tt=10:goto trans1 if i$="G" goto trans.g trans0 print\"Transfer "a$" Guild member #: ";:input@2i$ if (i$="") and (a$="to") then print\"You MUST Transfer to another member!"\:goto trans0 if i$="" pop:return x=val(i$):if (x<1) or (x>gu) print\"Not a Guild member":goto trans0 y=(x*4)-3:x=val(mid$(gu$,y)) gosub rd.user:if not b1 print \"Player no longer in game":goto trans0 print\"Transfer "a$" "n$"? ";:input i$:if i$<>"Y" goto trans0 return ; ************************ ; * Transfer gold * ; ************************ trans.g a$="from":gosub trans0:gosub trans.g3 print\"Transfer "a$" [B]ank or [H]and? ";:input i$ if i$="B" g1=g5:g2=g6:gosub prt.gold if i$="H" g1=g3:g2=g4:gosub prt.gold tr$=gd$ trans.g1 print\"Transfer amount (max. "tr$"): ";:input gd$ gosub val.gold:if a=0 print\"Invalid amount!":goto trans.g1 gosub spl.gold if i$="H" g7=g3:g8=g4:gosub chk.gold if i$="B" g7=g5:g8=g6:gosub chk.gold if a=0 print\"Max amount "tr$:goto trans.g1 if i$="H" g7=g3:g8=g4:gosub sub.gold:g3=g7:g4=g8 if i$="B" g7=g5:g8=g6:gosub sub.gold:g5=g7:g6=g8 gosub wr.user:print\"Gold taken.." g9=g1:g0=g2 a$="to":gosub trans0:gosub trans.g3 g1=g9:g2=g0 print\"Transfer "a$" [B]ank or [H]and? ";:input i$ if i$="H" g7=g3:g8=g4:gosub add.gold:g3=g7:g4=g8 if i$="B" g7=g5:g8=g6:gosub add.gold:g5=g7:g6=g8 gosub wr.user print\"Tranfer of gold complete..":return trans.g3 print \"User #"b1" Player #"b2" Name: "n$ g1=g5:g2=g6:gosub prt.gold:print "Gold in bank :"gd$ g1=g3:g2=g4:gosub prt.gold:print "Gold in hand :"gd$ return ; ******************************* ; * Transfer food/items/weapons * ; ******************************* trans1 print\"[ Transfer "tr$" ]" a$="from":gosub trans0 gosub get.data print \n$" is carrying:"\ if a=0 print "No "tr$"!!":goto trans1 dy$=dx$+tr$ open #1,dy$ for i=1 to a y=(i*4)-3 z=val(mid$(a$,y)) position #1,o,z,2 input #1,n$ print right$(" "+str$(i),3)". - "mid$(n$,3) next:close trans2 input @2\"Transfer which number? "i$:z=val(i$):if i$="" return if (z<1) or (z>a) print "Player NOT carrying that!!":goto trans2 gosub remove gosub put.data gosub fix.num print \"Taken...." trans3 a$="to":gosub trans0:gosub get.data if (a>tt) print \"Player can carry no more.":goto trans3 a=a+1:a$=a$+b$:gosub put.data print\"Transfer of "tr$" complete..":return get.data if tr$="Weapons" gosub rd.wep if tr$="Items" gosub rd.items if tr$="Stores" gosub rd.stores return put.data if tr$="Weapons" gosub wr.wep if tr$="Items" gosub wr.items if tr$="Stores" gosub wr.stores return ; *************************** ; * Impart Spells to Member * ; *************************** impart print\"[ Impart Spells to Guild Members ]" if gs<=0 then gs=0:print\"No spell points":goto buy.sp print\gn$" Guild has "gs" spell point(s)" impart0 input@2\"Member # [L]ist: "i$:if i$="" return if i$="L" gosub view.g:goto impart0 x=val(i$):if (x<1) or (x>gu) print\"No such member":goto impart0 y=(x*4)-3:x=val(mid$(gu$,y)) gosub rd.spells if a=10 print\"Player can learn no more spells.": goto impart0 impart1 input@2\"Impart spell # or [L]ist: "i$:if i$="" return if i$="L" print\"[ Spells List ]"\:gosub g.spells:goto impart1 z=val(i$):if (z<1) or (z>sc) print\"No such spell":goto impart0 dy$=dx$+"spells":open #1,dy$ position #1,40,z:input #1,cb$\q$,q2$,q3,q4:close xx=(q4/100):if xx>gs print\"You haven't enough Spell Points":goto buy.sp print\"Impart: "q$ input\"Correct ?"i$:if i$<>"Y" return a=a+1:b=z:gosub fix.num:a$=a$+b$:gosub wr.spells if xx<1 then xx=1 gs=gs-xx:print\"Spell imparted":goto impart0 g.spells dy$=dx$+"spells" z=1:open #1,dy$ g.spell0 gosub g.spell2 g.spell1 z=z+1:if (z>sc) or (key(1)) close:return goto g.spell0 g.spell2 position #1,40,z input #1,cb$\q$,q2$,q3,q4 setint(1) if (cb$="*") or (cb$="") goto g.spell1 print right$(" "+str$(z),3)". "left$(q$+" ",20)" -"right$(" "+str$(q4),5)" Gold) return buy.sp input@0\"Do you wish to buy Spell Points? "i$:if i$<>"Y" return print\"Spell Points are 100 gold each." buy.sp0 print\gn$" Guild has "gs" spell point(s)" input@2\"How many do you wish to purchase? "i$:xx=val(i$) if (xx=0) or (i$="") return if (xx+gs)>100 print\"** 100 points max. **":goto buy.sp0 xx=xx*100:gd$=str$(xx):gosub spl.gold g7=gh:g8=gl:gosub chk.gold if a=0 print\"You do NOT have enough gold on hand.":goto buy.sp0 gosub sub.gold:gh=g7:gl=g8:gs=gs+(xx/100) goto impart ; ******************************* ; * Delete Guild Member * ; ******************************* delete print\"[ Delete Guild Members ]" input@2\"Player # or [L]ist: "i$:if i$="" return if i$="L" gosub view.g:goto delete x=val(i$):if (x<1) or (x>gu) print\"No such member":goto delete y=(x*4)-3:a=val(mid$(gu$,y)) dy$=dx$+"spur.users":open #1,dy$ position #1,130,a input #1,n$,z close:if (not z) print\"No such player":goto delete print \"Player #"a print "Name "n$\ input @0 "Cast member from Guild? "i$ if i$<>"Y" goto delete z=x:a=gu:a$=gu$:gosub remove:gu=a:gu$=a$ gs=gs-1:if gs<0 then gs=0 x=b:gosub rd.user:gx=0:gosub wr.user return ; ***************************** ; * Resign as GuildMaster * ; ***************************** resign input\"Do you wish to Abdicate? "i$ if i$<>"Y" return for i=1 to gu y=(i*4)-1:x=val(mid$(gu$,y)) gosub rd.user:gx=0:gosub wr.user:next gm=0:gosub wr.data gu=0:gosub wr.guild print\"Position vacated..Guild disolved!!" pop:goto linkgame ; ********************** ; * GOLD Subroutines * ; ********************** prt.gold a$=str$(g1):gd$="0000":if g1=0 then gd$=" ":a$=" " gd$=right$(" "+a$,5)+right$(gd$+str$(g2),4) return spl.gold gd$=right$("00000000"+gd$,9) g1=val(left$(gd$,5)):g2=val(right$(gd$,4)) return chk.gold a=0 if g7>g1 then a=1:return if (g7=g1) and (g8=>g2) then a=1:return return val.gold l=len(gd$) for i=1 to l:a=instr(mid$(gd$,i,1),"0123456789") if (not a) then i=l:next:return next:return add.gold g8=g8+g2:if g8=> 10000 then g8=g8-10000:g7=g7+1 g7=g7+g1 return sub.gold if g2>g8 then g8=g8+10000:g7=g7-1 g8=g8-g2:g7=g7-g1:return ; ****************** ; * Sub-routines * ; ****************** rd.guild dy$=dx$+"guild.members" open #1,dy$ position #1,85,gn input #1,gu\gu$:close return wr.guild dy$=dx$+"guild.members" open #1,dy$ position #1,85,gn print #1,gu\gu$:close return rd.data dy$=dx$+"guild.data":open #1,dy$ position #1,41,gn input #1,gm,gs,gn$,gw$:close return wr.data dy$=dx$+"guild.data":open #1,dy$ position #1,41,gn print #1,gm,gs,gn$,gw$:close return ck.plr y=(x*4)-3:a=val(mid$(gu$,y)) dy$=dx$+"spur.users":open #1,dy$ position #1,130,a input #1,n$,x close:if (not x) print\"No such player":pop:return return fix.num b$=right$("000"+str$(b),3)+"," return remove l=len(a$) y=(z*4)-3:b=val(mid$(a$,y)) a=a-1:if a=0 then a$="":return if y=1 then a$=mid$(a$,5):return if (y+4)>l then a$=left$(a$,y-1):return a$=left$(a$,y-1)+mid$(a$,y+4) return ; *********************** ; * Read Player Stats * ; *********************** rd.user if x=pn gosub pull:return dy$=dx$+"spur.users" open #2,dy$ position #2,130,x input #2,n$,b1,b2,n7,n8,b3 input #2,n1,n2,n3,n4,n5,n6 input #2,g3,g4,g5,g6,s,ax,z1,z2,m1,m2,m3,m4 input #2,dx,lx,sx,gx close #2:return pull b1=sn:b2=pn:b3=hp:n$=n1$:n1=ps:n2=pt:n3=pi:n4=pe:n5=pw:n6=pd:z1=pc:z2=pr:gx=gn s=sh:ax=ar:g3=gh:g4=gl:g5=bh:g6=bl:m1=ep:m2=mk:m3=mm:m4=xp:sx=sr:dx=df:return rd.wep if x=pn a=xw:a$=xw$:return dy$=dx$+"spur.weapons" open #1,dy$:position #1,64,x input #1,a\a$:close return rd.stores if x=pn a=xf:a$=xf$:return dy$=dx$+"spur.stores" open #1,dy$:position #1,44,x input #1,a\a$:close return rd.items if x=pn a=xi:a$=xi$:return dy$=dx$+"spur.items" open #1,dy$:position #1,84,x input #1,a\a$:close return rd.spell if x=pn a=xs:a$=xs$:return dy$=dx$+"spur.spells" open #1,dy$:position #1,44,x input #1,a\a$:close return ; ************************ ; * Write Player Stats * ; ************************ wr.user if x=pn gosub put:return dy$=dx$+"spur.users" open #2,dy$ position #2,130,x print #2,n$,b1,b2,n7,n8,b3 print #2,n1,n2,n3,n4,n5,n6 print #2,g3,g4,g5,g6,s,ax,z1,z2,m1,m2,m3,m4 print #2,dx,lx,sx,gx close #2:return put sn=b1:pn=b2:hp=b3:n1$=n$:ps=n1:pt=n2:pi=n3:pe=n4:pw=n5:pd=n6:pc=z1:pr=z2:gn=gx sh=s:ar=ax:gh=g3:gl=g4:bh=g5:bl=g6:ep=m1:mk=m2:mm=m3:xp=m4:sr=sx:df=dx:return wr.wep if x=pn xw=a:xw$=a$:return dy$=dx$+"spur.weapons" open #1,dy$:position #1,64,x print #1,a\a$:close return wr.stores if x=pn xf=a:xf$=a$:return dy$=dx$+"spur.stores" open #1,dy$:position #1,44,x print #1,a\a$:close return wr.items if x=pn xi=a:xi$=a$:return dy$=dx$+"spur.items" open #1,dy$:position #1,84,x print #1,a\a$:close return wr.spell if x=pn xs=a:xs$=a$:return dy$=dx$+"spur.spells" open #1,dy$:position #1,44,x print #1,a\a$:close return ; *************************** ; * Quit from GuildMaster * ; *************************** linkterm gosub wr.data:gosub wr.guild linktm1 dy$=dz$+"spur.logon" link dy$,"quit3" linkmain gosub wr.data:gosub wr.guild linkm1 dy$=dz$+"guild.main" link dy$,"main" linkgame gosub wr.data:gosub wr.guild dy$=dz$+"spur.shop" link dy$,"main1"