1 CLS 2 CLEAR 3 INPUT "Name "; T$ 4 INPUT "Number of weapons (1-10): "; W 5 LET W = INT(W): IF W > 10 OR W < 1 THEN GOTO 4 6 DIM AT$(W): DIM DAM$(W): DIM THACO(W): DIM SPEED$(W): DIM WEAPON$(W): DIM KD$(W) 7 FOR A = 1 TO W 8 PRINT "Weapon Number"; A; ":"; : INPUT WEAPON$(A) 9 PRINT "Number of Attacks with "; WEAPON$(A); ":"; : INPUT AT$(A) 10 PRINT "THAC0 with "; WEAPON$(A); ":"; : INPUT THACO(A) 11 PRINT "Damage with "; WEAPON$(A); ":"; : INPUT DAM$(A) 12 PRINT "Speed with "; WEAPON$(A); ":"; : INPUT SPEED$(A) 13 PRINT "Knockdown Dice with "; WEAPON$(A); " D"; : INPUT KD$(A) 14 NEXT A 15 INPUT "Armour Class:"; AC 16 INPUT "Magic Resistance:"; MR$ 17 INPUT "Special Attacks:"; SATT$ 18 INPUT "Special Defences:"; SDEF$ 19 INPUT "Hit dice type "; D 20 INPUT "Number of hit dice "; N 21 INPUT "Bonus Hit Points "; BO 22 INPUT "Warrior? (Y/N) "; WAR$ 23 INPUT "Number of creatures "; T 24 INPUT "CON "; C 25 INPUT "CON Bonus "; conbonus 26 INPUT "Max CON "; m 27 INPUT "Min CON "; MIN 28 IF m < 3 + conbonus THEN GOTO 25 32 INPUT "Minimum hit points "; MINHP 33 IF MINHP > (N * D) + BO + ((m - 14) * (m > 14) * N) THEN GOTO 32 35 DIM CON(C) 36 INPUT "Hard Copy? (Y/N)"; P$ 37 LET WEB = 0 38 PRINT 39 PRINT T$: PRINT 40 IF P$ = "Y" OR P$ = "y" THEN LPRINT T$: LPRINT : LPRINT 41 GOSUB 3000 44 FOR A = 1 TO T 46 FOR F = 1 TO C: LET CON(F) = 1 + INT(RND * 6): NEXT F 47 GOTO 1000 48 IF CO > 14 AND CO < 20 THEN LET CONBON = (CO - 14) 49 IF CO > 19 THEN LET CONBON = 4 + (INT(CO - 17) / 2) 50 IF CO < 7 AND CO > 3 THEN LET CONBON = -1 51 IF CO < 4 AND CO > 1 THEN LET CONBON = -2 52 IF CO = 1 THEN LET CONBON = -3 53 IF CONBON > 2 AND (WAR$ = "N" OR WAR$ = "n") THEN LET CONBON = 2 54 LET TOT = BO + 1 + INT((D + 1) / 2) + INT(RND * ((D) / 2)) + CONBON: 55 FOR B = 1 TO N - 1 60 LET NUM = 1 + INT(RND * (D)) + CONBON 65 IF NUM < 1 THEN LET NUM = 1 70 LET TOT = TOT + NUM 80 NEXT B 85 IF TOT < MINHP THEN GOTO 46 90 PRINT TAB(WEB * 27); A; ";"; TOT; 95 IF P$ = "Y" OR P$ = "y" THEN LPRINT TAB(WEB * 27); A; ";"; TOT; 99 LET WEB = WEB + 1: IF WEB = 3 THEN LET WEB = 0 100 NEXT A 105 LET I$ = INKEY$ 110 IF I$ = "" THEN GOTO 105 120 IF P$ = "y" OR P$ = "Y" THEN LPRINT : LPRINT 123 IF I$ = "f" OR I$ = "F" THEN LPRINT : GOTO 105 125 IF I$ = "Q" OR I$ = "q" THEN END 129 CLS 130 GOTO 2 140 REM 1000 LET S = 0 1010 FOR R = 1 TO C - 1 1020 IF CON(R) < CON(R + 1) THEN GOSUB 2000 1030 NEXT R 1040 FOR R = 1 TO C - 1 1050 IF CON(R) < CON(R + 1) THEN GOTO 1000 1060 NEXT R 1100 LET U = C 1110 IF C >= 3 THEN LET U = 3 1120 LET CO = 0 1130 FOR R = 1 TO U 1140 LET CO = CO + CON(R) 1150 NEXT R 1152 LET CO = CO + conbonus 1155 IF CO > m OR CO < MIN THEN GOTO 46 1160 GOTO 48 2000 LET S = CON(R) 2010 LET CON(R) = CON(R + 1) 2020 LET CON(R + 1) = S 2030 RETURN 3000 FOR WC = 1 TO W 3010 PRINT WEAPON$(WC); ": #AT: "; AT$(WC); " THAC0:"; THACO(WC); "DAM: "; DAM$(WC); " KD: D"; KD$(WC); " SPEED: "; SPEED$(WC) 3020 NEXT WC 3030 IF SATT$ <> "" THEN PRINT "Special Attacks: "; SATT$ 3040 IF SDEF$ <> "" THEN PRINT "Special Defences: "; SDEF$ 3050 PRINT "HD:"; N; "AC:"; AC; "MR: "; MR$; "%" 3060 PRINT 3070 IF NOT P$ = "y" AND NOT P$ = "Y" THEN RETURN 3080 FOR WC = 1 TO W 3090 LPRINT WEAPON$(WC); ": #AT: "; AT$(WC); " THAC0:"; THACO(WC); "DAM: "; DAM$(WC); " KD: D"; KD$(WC); " SPEED: "; SPEED$(WC) 3100 NEXT WC 3110 IF SATT$ <> "" THEN LPRINT "Special Attacks: "; SATT$ 3120 IF SDEF$ <> "" THEN LPRINT "Special Defences: "; SDEF$ 3130 LPRINT "HD:"; N; "AC:"; AC; "MR: "; MR$; "%" 3140 LPRINT 3150 RETURN 9999 REM T$, W, D, N, BO, T, C, M, MIN, CONBONUS, CON(C), P$, A, TOT, F, CO, B, NUM, WEB, S, R, U, WC, MINHP, WAR$