home *** CD-ROM | disk | FTP | other *** search
Wrap
AMOS Source Code | 1992-09-02 | 14.6 KB | 340 lines
'Paranoia Character Generator 'By Adam Booth ' PINT=30 Dim SG$(8),M$(20),SS$(20),AGISKILL$(6),DEXSKILL$(8),MOXSKILL$(14),CHUSKILL$(11),MECSKILL$(11),SGAGI(6),SGDEX(8),SGMOX(14),SGCHU(11),SGMEC(11),AGI(6),CHU(11),DEX(8),MEC(11),MOX(14),SN$(15),SN(15),SM(15) Data "Internal Security","Tech Services","HPD & MC","Armed Forces","PLC","Power Services","R&D","CPU" For I=1 To 8 : Read SG$(I) : Next Data "Adrenalin Control","Charm","Deep Probe","ElectroShock","Empathy","Energy Field","Hypersenses","Levitation","Machine Empathy*","Matter Eater","Mechanical Intuition","Mental Blast","Polymorphism","Precognition","Pyrokinesis","Regeneration" Data "Telekinesis","Telepathy","Teleport","X-Ray Vision" For I=1 To 20 : Read M$(I) : Next Data "Anti-Mutant","Computer Phreaks","Communists","Corpore Metal","Death Leopard","Death Leopard","FCCCP","FCCCP","Frankenstein Destroyers","Free Enterprise" Data "Humanists","Illuminati","Mystics","Pro Tech","Psion","Purge","Romantics","Sierra Club","Sierra Club","Other" For I=1 To 20 : Read SS$(I) : Next Data "Force Sword","Grenade","Neurowhip","Primitive Melee Weapons","Truncheon","Unarmed" For I=1 To 6 : Read AGISKILL$(I) : SGAGI(I)=12 : Next Data "Energy Weapons","Field Weapons","Laser Weapons","Primitve Missile Weapons","Projectile Weapons","Vehicle Aimed Weapons","Vehicle Field Weapons","Vehicle Launched Weapons" For I=1 To 8 : Read DEXSKILL$(I) : SGDEX(I)=12 : Next Data "Biochemical Therapy","Biosciences","Chemical Engineering","Data Analysis","Data Search","Demolition","Electronic Engineering","Mechanical Engineering","Medical" Data "Nuclear Engineering","Security","Stealth","Surveillance","Survival" For I=1 To 14 : Read MOXSKILL$(I) : SGMOX(I)=12 : Next Data "Bootlicking","Bribery","Con","Fast Talk","Forgery","Interrogation","Intimidation","Motivation","Oratory","Pychescan","Spurious Logic" For I=1 To 11 : Read CHUSKILL$(I) : SGCHU(I)=12 : Next Data "Autocar Op. & Maint.","Copter Op. & Maint.","Crawler Op & Maint.","Docbot Op. & Maint.","Flybot Op. & Maint.","Habitat Engineering","Hover Op. & Maint.","Jackobot Op. & Maint.","Scrubot Op. & Maint.","Transbot Op & MAint." Data "Vulturecraft Op. & Maint." For I=1 To 11 : Read MECSKILL$(I) : SGMEC(I)=12 : Next Randomize Timer Def Fn D20(R)=Rnd(19)+1 Screen Open 0,640,256,16,Hires Curs Off Cls 0 Hide Flash Off Unpack 16 To 0 Palette 0,0 Wind Open 1,64,50,64,22 Curs Off MAIN: Window 1 Clw Centre "Paranoia Character Generator 1.0" Locate 1,1 Centre "A Game Master Aid By Adam Booth" Wait Key Clw Print "Computer Rolls Dice?" Print " Yes" Print " No" Repeat I$=Inkey$ If I$="y" Then COMPROLL=1 : Q=1 If I$="n" Then COMPROLL=0 : Q=1 Until Q=1 Clw Centre "Attributes" Locate 3,3 : Print "Strength........ __ Carrying Capacity... __" Locate 3,4 : Print " Damage Bonus........ __" Locate 3,5 : Print "Endurance....... __ Macho Bonus......... __" Locate 3,6 : Print "Agility......... __ Agility Skillbase... __" Locate 3,7 : Print "Dexterity....... __ Dexterity Skillbase. __" Locate 3,8 : Print "Moxie........... __ Moxie Skillbase..... __" Locate 3,9 : Print "Chutzpah........ __ Chutzpah Skillbase.. __" Locate 3,10 : Print "Mech. Aptitude.. __ Mech. Skillbase..... __" Locate 3,11 : Print "Power........... __" Rem *** Strength *** X=19 : Y=3 : Locate 0,Y : Print "->" : Gosub ROLL : STR=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " If STR<13 Then CARRYCAP=25 If STR>12 Then CARRYCAP=25+(STR-12)*5 Locate 47,3 : Print CARRYCAP DB=0 : If STR>13 Then DB=1 : If STR>18 Then DB=2 Locate 47,4 : Print DB;" " Rem *** Endurance *** X=19 : Y=5 : Locate 0,Y : Print "->" : Gosub ROLL : ENU=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " MB=0 : If ENU>13 Then MB=1 : If ENU>18 Then MB=2 Locate 47,5 : Print MB;" " Rem *** Agility *** X=19 : Y=6 : Locate 0,Y : Print "->" : Gosub ROLL : AGI=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " AGISB=0 If AGI>3 Then AGISB=1 : If AGI>6 Then AGISB=2 : If AGI>10 Then AGISB=3 : If AGI>14 Then AGISB=4 : If AGI>17 Then AGISB=5 Locate 47,Y : Print AGISB;" " Rem *** Dexterity *** X=19 : Y=7 : Locate 0,Y : Print "->" : Gosub ROLL : DEX=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " DEXSB=0 If DEX>3 Then DEXSB=1 : If DEX>6 Then DEXSB=2 : If DEX>10 Then DEXSB=3 : If DEX>14 Then DEXSB=4 : If DEX>17 Then DEXSB=5 Locate 47,Y : Print DEXSB;" " Rem *** Moxie *** X=19 : Y=8 : Locate 0,Y : Print "->" : Gosub ROLL : MOX=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " MOXSB=0 If MOX>3 Then MOXSB=1 : If MOX>6 Then MOXSB=2 : If MOX>10 Then MOXSB=3 : If MOX>14 Then MOXSB=4 : If MOX>17 Then MOXSB=5 Locate 47,Y : Print MOXSB;" " Rem *** Chutzpah *** X=19 : Y=9 : Locate 0,Y : Print "->" : Gosub ROLL : CHU=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " CHUSB=0 If CHU>3 Then CHUSB=1 : If CHU>6 Then CHUSB=2 : If CHU>10 Then CHUSB=3 : If CHU>14 Then CHUSB=4 : If CHU>17 Then CHUSB=5 Locate 47,Y : Print CHUSB;" " Rem *** Mechanical Aptitude *** X=19 : Y=10 : Locate 0,Y : Print "->" : Gosub ROLL : MEC=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " MECSB=0 If MEC>3 Then MECSB=1 : If MEC>6 Then MECSB=2 : If MEC>10 Then MECSB=3 : If MEC>14 Then MECSB=4 : If AGI>17 Then AGISB=5 Locate 47,Y : Print MECSB;" " Rem *** Power *** X=19 : Y=11 : Locate 0,Y : Print "->" : Gosub ROLL : POW=R : Locate X,Y : Print R;" " : Locate 0,Y : Print " " Rem *** Service Group *** Locate 3,14 : Print "Service Group Roll:" : X=22 : Y=14 : Gosub ROLL : Locate X,Y : Print R;" " If R<3 Then SG=1 If R>2 Then SG=2 If R>4 Then SG=3 If R>8 Then SG=4 If R>11 Then SG=5 If R>14 Then SG=6 If R>16 Then SG=7 If R>18 Then SG=8 Locate X,Y : Print SG$(SG) Rem *** Mutation *** Locate 3,16 : Print "Mutation Roll:" : X=17 : Y=16 : Gosub ROLL M=R : Locate X,Y : Print M$(M) Rem *** Secret Society *** SECRET: Locate 3,18 : Print "Secret Society Roll:" : X=23 : Y=18 : Gosub ROLL SS=R : If SS=15 and M<>3 and M<>5 and M<>6 and M<>8 and M<>12 and M<>14 and M<>15 and M<>17 and M<>18 and M<>19 Then Goto SECRET Locate X,Y : Print SS$(SS) Locate 1,20 : Centre "Press Any Key to choose Skills" : Wait Key Clw If SG=1 Then SGAGI(5)=14 : SGAGI(6)=14 : SGCHU(6)=14 : SGCHU(7)=14 : SGDEX(3)=14 : SGMOX(11)=14 : SGMOX(13)=14 If SG=2 Then SGCHU(11)=14 : SGMEC(1)=14 : SGMEC(4)=14 : SGMEC(8)=14 : SGMEC(9)=14 : SGMOX(7)=14 : SGMOX(8)=14 : SGMEC(10)=14 If SG=3 Then SGCHU(1)=14 : SGCHU(3)=14 : SGCHU(5)=14 : SGCHU(9)=14 : SGMEC(4)=14 : SGMOX(1)=14 : SGMOX(9)=14 If SG=4 Then SGAGI(1)=14 : SGAGI(4)=14 : SGAGI(6)=14 : SGCHU(8)=14 : SGDEX(3)=14 : SGDEX(5)=14 : SGMEC(11)=14 : SGMOX(6)=14 : SGMOX(14)=14 If SG=5 Then SGCHU(2)=14 : SGCHU(4)=14 : SGCHU(5)=14 : SGMEC(6)=14 : SGMEC(8)=14 : SGMOX(2)=14 If SG=6 Then SGCHU(11)=14 : SGMEC(6)=14 : SGMEC(8)=14 : SGMOX(3)=14 : SGMOX(7)=14 : SGMOX(8)=14 : SGMOX(10)=14 If SG=7 Then SGMEC(8)=14 : SGMOX(2)=14 : SGMOX(4)=14 : SGMOX(5)=14 : SGMOX(7)=14 : SGMOX(8)=14 If SG=8 Then SGCHU(4)=14 : SGCHU(7)=14 : SGCHU(8)=14 : SGCHU(10)=14 : SGMOX(4)=14 : SGMOX(5)=14 Locate 1,0 : Print "[1] Agility" : Locate 13,0 : Print "[2] Dexterity" : Locate 27,0 : Print "[3] Moxie" : Locate 37,0 : Print "[4] Chutzpah" : Locate 50,0 : Print "[5] Mechanical" Locate 2,20 : Centre "Use Numbers for skill type, Arrows to select, +/- to" Locate 2,21 : Centre "increase/decrease points on skills [ESC] when finished" Locate 1,19 : Print "<Skill> "; : Pen 6 : Print "<Skill Max>"; : Pen 4 : Print " <SkillBase> "; : Pen 3 : Print "<Points on skill>"; : Pen 2 : Print " <Skill Total>" Wind Open 2,64,58,64,18 Curs Off NOSK=6 : POS=1 AGILITY: SB=AGISB For I=1 To NOSK : SN$(I)=AGISKILL$(I) : SN(I)=AGI(I) : SM(I)=SGAGI(I) : Next 0 Gosub SHIFT Locate 0,0 : Centre "Agility" Locate 53,0 : Print "Points:";PINT;" " Gosub SHO Repeat I$=Inkey$ If I$=Chr$(27) Then Goto FINISH Until I$<>"" If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL If I$="+" and AGI(POS)+AGISB<SGAGI(POS) and PINT>0 Then PINT=PINT-1 : AGI(POS)=AGI(POS)+1 : SN(POS)=AGI(POS) If I$="-" and AGI(POS)>0 Then PINT=PINT+1 : AGI(POS)=AGI(POS)-1 : SN(POS)=AGI(POS) Goto 0 End DEXTERITY: SB=DEXSB For I=1 To NOSK : SN$(I)=DEXSKILL$(I) : SN(I)=DEX(I) : SM(I)=SGDEX(I) : Next 1 Gosub SHIFT Locate 0,0 : Centre "Dexterity" Locate 53,0 : Print "Points:";PINT;" " Gosub SHO Repeat I$=Inkey$ If I$=Chr$(27) Then Goto FINISH Until I$<>"" If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL If I$="+" and DEX(POS)+DEXSB<SGDEX(POS) and PINT>0 Then PINT=PINT-1 : DEX(POS)=DEX(POS)+1 : SN(POS)=DEX(POS) If I$="-" and DEX(POS)>0 Then PINT=PINT+1 : DEX(POS)=DEX(POS)-1 : SN(POS)=DEX(POS) Goto 1 MOXIE: SB=MOXSB For I=1 To NOSK : SN$(I)=MOXSKILL$(I) : SN(I)=MOX(I) : SM(I)=SGMOX(I) : Next 2 Gosub SHIFT Locate 0,0 : Centre "Moxie" Locate 53,0 : Print "Points:";PINT;" " Gosub SHO Repeat I$=Inkey$ Until I$<>"" If I$=Chr$(27) Then Goto FINISH If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL If I$="+" and MOX(POS)+MOXSB<SGMOX(POS) and PINT>0 Then PINT=PINT-1 : MOX(POS)=MOX(POS)+1 : SN(POS)=MOX(POS) If I$="-" and MOX(POS)>0 Then PINT=PINT+1 : MOX(POS)=MOX(POS)-1 : SN(POS)=MOX(POS) Goto 2 CHUTZPAH: SB=CHUSB For I=1 To NOSK : SN$(I)=CHUSKILL$(I) : SN(I)=CHU(I) : SM(I)=SGCHU(I) : Next 3 Gosub SHIFT Locate 0,0 : Centre "Chutzpah" Locate 53,0 : Print "Points:";PINT;" " Gosub SHO Repeat I$=Inkey$ Until I$<>"" If I$=Chr$(27) Then Goto FINISH If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE If I$="5" Then Clw : POS=1 : NOSK=11 : Goto MECHANICAL If I$="+" and CHU(POS)+CHUSB<SGCHU(POS) and PINT>0 Then PINT=PINT-1 : CHU(POS)=CHU(POS)+1 : SN(POS)=CHU(POS) If I$="-" and CHU(POS)>0 Then PINT=PINT+1 : CHU(POS)=CHU(POS)-1 : SN(POS)=CHU(POS) Goto 3 MECHANICAL: SB=MECSB For I=1 To NOSK : SN$(I)=MECSKILL$(I) : SN(I)=MEC(I) : SM(I)=SGMEC(I) : Next 4 Gosub SHIFT Locate 0,0 : Centre "Mechanical Aptitude" Locate 53,0 : Print "Points:";PINT;" " Gosub SHO Repeat I$=Inkey$ Until I$<>"" If I$=Chr$(27) Then Goto FINISH If I$="2" Then Clw : POS=1 : NOSK=8 : Goto DEXTERITY If I$="1" Then Clw : POS=1 : NOSK=6 : Goto AGILITY If I$="3" Then Clw : POS=1 : NOSK=14 : Goto MOXIE If I$="4" Then Clw : POS=1 : NOSK=11 : Goto CHUTZPAH If I$="+" and MEC(POS)+MECSB<SGMEC(POS) and PINT>0 Then PINT=PINT-1 : CHU(POS)=CHU(POS)+1 : SN(POS)=CHU(POS) If I$="-" and MEC(POS)>0 Then PINT=PINT+1 : MEC(POS)=MEC(POS)-1 : SN(POS)=MEC(POS) Goto 4 FINISH: Clw Wind Close Clw Curs Off 9 Locate 0,10 : Centre "Save?" Repeat I$=Inkey$ Until I$<>"" If I$="n" Then Cls : Print "Program Terminted..." : End If I$="y" Then Goto 10 Goto 9 10 Locate 10,12 Input "Filename (Specify Drive) :";F$ If F$="" Then Goto 9 Open Out 1,F$ Print #1," ---------------------------------------------------------------------------" Print #1," Paranoia Character - Created with Paranoia Character Generator 1.0" Print #1," ---------------------------------------------------------------------------" Print #1, Print #1,"Name: Player:" Print #1," Security Clearance (IR) R O Y G B I V (UV) Service Group:";SG$(SG) Print #1, Print #1," ATTRIBUTES " Print #1," Strength ";STR; : If Len(Str$(STR))=2 Then Print #1," "; Print #1," Carrying Capacity ";CARRYCAP Print #1," Damage Bonus ";DB Print #1," Endurance ";ENU; : If Len(Str$(ENU))=2 Then Print #1," "; Print #1," Macho Bonus ";MB Print #1," Agility ";AGI; : If Len(Str$(AGI))=2 Then Print #1," "; Print #1," Agility Skillbase ";AGISB Print #1," Dexterity ";DEX; : If Len(Str$(DEX))=2 Then Print #1," "; Print #1," Dexterity Skillbase ";DEXSB Print #1," Moxie ";MOX; : If Len(Str$(MOX))=2 Then Print #1," "; Print #1," Moxie Skillbase ";MOXSB Print #1," Chutzpah ";CHU; : If Len(Str$(CHU))=2 Then Print #1," "; Print #1," Chutzpah Skillbase ";CHUSB Print #1," Mechanical Apt. ";MEC; : If Len(Str$(MEC))=2 Then Print #1," "; Print #1," Mech. Skillbase ";MECSB Print #1," Power ";POW Print #1, Print #1," SKILLS" Print #1, Print #1,"Agility Skill Base :";AGISB For I=1 To 6 If AGI(I)>0 Then A$=AGISKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;AGISB+AGI(I) Next Print #1, Print #1,"Dexterity Skill Base :";DEXSB For I=1 To 8 If DEX(I)>0 Then A$=DEXSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;DEXSB+DEX(I) Next Print #1, Print #1,"Moxie Skill Base :";MOXSB For I=1 To 14 If MOX(I)>0 Then A$=MOXSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;MOXSB+MOX(I) Next Print #1, Print #1,"Chutzpah Skill Base :";CHUSB For I=1 To 11 If CHU(I)>0 Then A$=CHUSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;CHUSB+CHU(I) Next Print #1, Print #1,"Mechanical Skill Base :";MECSB For I=1 To 11 If MEC(I)>0 Then A$=MECSKILL$(I) : B=30-Len(A$) : For K=1 To B : A$=A$+" " : Next : A$=A$+":" : Print #1,A$;MECSB+MEC(I) Next Print #1, Print #1," S E C R E T S T U F F" Print #1,"Secret Society :";SS$(SS) Print #1,"Mutation :";M$(M) End SHO: For I=1 To NOSK Locate 3,I+2 : Print SN$(I); : Locate 28,I+2 : Pen 6 : Locate 30,I+2 : Print SM(I); : Pen 4 : Locate 34,I+2 : Print SB; : Pen 3 : Locate 37,I+2 : Print SN(I);" " : Pen 2 : Locate 41,I+2 : Print SB+SN(I);" " Next Return SHIFT: If I$=Chr$(30) Then Locate 0,POS+2 : Print " " : POS=POS-1 : If POS<1 Then POS=NOSK If I$=Chr$(31) Then Locate 0,POS+2 : Print " " : POS=POS+1 : If POS>NOSK Then POS=1 Locate 0,POS+2 : Print "->"; Return ROLL: If COMPROLL=1 Then R= Fn D20(20) : Return Locate X,Y Repeat Repeat I$=Inkey$ Until I$<>"" I=Asc(I$)-48 Until I>-1 and I<10 Print I Locate X+1,Y Repeat Repeat I$=Inkey$ Until I$<>"" If I$=Chr$(13) Then R=I : Goto ROLL1 J=Asc(I$)-48 Until I>-1 and I<10 Print J R=I*10+J ROLL1: If R>0 and R<21 Then Return Goto ROLL