My AD&D 1e website - Articles - Game Aids maps, scenarios, and cities, etc. tag:crestofastar.jimsmaps.net,2005:41b9e06e4775041fe9f5e0b879357f08/articles/game-aids Textpattern 2024-03-28T17:27:24+00:00 Bill George https://crestofastar.jimsmaps.net/ Bill George 2015-02-26T19:40:37+00:00 2021-11-11T21:23:16+00:00 vtt 75' x 50' downloads, 5 tag:crestofastar.jimsmaps.net,2015-02-06:41b9e06e4775041fe9f5e0b879357f08/146d882c520f9cbe4807e207d220789b Zips linked below. The maps are 2000 pixels across. I shrank them by 50% so they will load on this page faster.

Column 5

29. dirt, various bushes

30. narrow yellow paths, broken stone walls, rock piles, 2 skeletons, cacti, bushes

31. 3 paths, 3 tree stumps, broken stone walls, 3 cacti, 2 green shrubs, part of a blue fairy circle

32. a yellow path, a brown path, skeleton inside a sqaure broken wall area, leafless bushes, pumpkin patch, large bushes,part of a tree stump

33. 2 broken barrles, a chest, rock piles, a campfire, a stone circle, 2 dirt paths, large bushes

34. cracks in the dirt, a path leading to an elephant statue, an elephant statue beside one of the paths, 2 rock piles, leafless bushes, medium size green bushes

35. 3 dirt path, dirt path, 2 broken barrels, a chest hidden by various bushes, an open pit, large and small bushes.

7 maps, jpg, 5’ grid 4.9 megabytes, 7 maps.

7 maps, jpg 4.6 megabytes, 7 maps.

7 maps, png, 5’ grid 33 megabytes, 7 maps.

7 maps, png 33 megabytes, 7 maps.

Examples of some of the maps in these zip files.





]]>
Bill George 2015-02-10T01:13:55+00:00 2021-11-11T21:39:22+00:00 vtt 75' x 50' downloads, 7 tag:crestofastar.jimsmaps.net,2015-02-09:41b9e06e4775041fe9f5e0b879357f08/0a0cff7566a4040cf5ffd486ee0734b5 Zips linked below. The maps are 2000 pixels across. I shrank them by 50% so they will load on this page faster.

Column 7

43. water, a boulder with moss

44. blue fairy circle, leafless bushes, yellow dirt path, medium green bushes

45. dark yellow path, rock piles, leafless and leafy bushes

46. dark yellow path, yellow path, 2 tree stumps, 2 wall pieces, a small pumpkin patch, red and green medium bushes, 3 pumpkin patches

47. 2 paths, 4 trimmed tree trunks, 2 open pits, 3 rubble piles, small bushes of various colors, pit with a metal grate

48. small ruined temple, 2 skeletons, 3 dirt pathsvarious medium bushes

49. dirt path with small rocks on it, various color bushes

7 maps, jpg, 5’ grid 4 megabytes, 7 maps. | 7 maps, jpg, no grid 3.8 megabytes, 7 maps.

7 maps, png, 5’ grid 316 megabytes, 7 maps. | 7 maps, png, no grid 29.5 megabytes, 7 maps.

Examples of some of the maps in these zip files.





]]>
Bill George 2015-02-10T00:16:47+00:00 2021-11-11T21:31:44+00:00 vtt 75' x 50' downloads, 6 tag:crestofastar.jimsmaps.net,2015-02-09:41b9e06e4775041fe9f5e0b879357f08/14fd631a48486b73eb3adf720e9f5baf Zips linked below. The maps are 2000 pixels across. I shrank them by 50% so they will load on this page faster.

Column 6

36. marsh area with a dirt ridge, and some plants growing on a rock.

37. table with 2 skeletons, a yellow dirt path, cacti, rock piles, small bushes

38. 2 pergole, wide yellow dirt path, rock pile, cactus, several large bushes

39. 2 paths, 2 pergole, small and large bushes, a tree stump.

40. ruined small house, 2 dirt paths, 2 box remnants, broken stone structure, 2 rock piles, large and small bushes

41. skeleton pile next to a pergole and a broken wood box, smal ruined building, 3 dirt paths, small to medium buses, cactus, rock pile

42. lots of cactus, 2 open pits, 2 broken dirt paths, a few bushes.

7 maps, jpg, 5’ grid 4 megabytes, 7 maps.

7 maps, jpg 3.8 megabytes, 7 maps.

7 maps, png, 5’ grid 30.7 megabytes, 7 maps.

7 maps, png 29.6 megabytes, 7 maps.

Examples of some of the maps in these zip files.





]]>
Bill George 2015-02-07T04:54:07+00:00 2023-01-11T21:59:45+00:00 basic: experience points tag:crestofastar.jimsmaps.net,2015-02-06:41b9e06e4775041fe9f5e0b879357f08/008130cd26aa8b5a16ef7de1844c7567 This is the page for my AmigaBASIC experience point calculator program on my campaign World, Crestar.

I left out anything I felt was copyrighted.



‘ Experience points program CLEAR ,150000, 20000
‘ X = 0 : xpgp.all.get$ = “FALSE” : xpgp.all = 0
‘ setup of experience points tables
DIM fighter&(23), thief&(23), magicuser&(23), cleric&(23), illusionist&(23), ranger&(23), paladin&(23) DIM druid&(23), monk&(23), bard&(23), barbarian&(23), cavalier&(23), minstrel&(23), thiefacr&(18) DIM CHINGRP$(150)

‘ barbarian experience points

‘ data goes here as array assignments


‘ bard experience points

‘ data goes here


‘ cavalier experience points

‘ data goes here


‘ cleric experience points

‘ data goes here


‘ druid experience points

‘ data goes here


‘ fighter experience points

‘ data goes here


‘ illusionist experience points

‘ data goes here


‘ magicuser experience points

‘ data goes here


‘ monk experience points

‘ data goes here


‘ paladin experience points

‘ data goes here


‘ ranger experience points

‘ data goes here


‘ thief experience points

‘ data goes here


‘ minstrel experience points

‘ data goes here


‘ thief acrobat experience points

‘ data goes here



‘ initialization of variables

7000 total.silver = 0 : total.electrum = 0 : total.gold = 0 total.platinum = 0 : total.gem = 0 : total.jewelry = 0 misc.item.gp = 0 : total.copper = 0 : sold.magic.gp = 0 gem.eval = 0 : jewel.charges = 0 : jewel.eval = 0
‘ misc.item.charges = 0 : misc.item.eval = 0 : total.charges = 0 gem.charges = 0 : number.in.group = 1 : WW = 100
‘ charge.per.char = 0 : EW = 0 : total.xpgp = 0 : character.name$ = ““ char.class.1$ = “” : char.class.2$ = “” : char.class.3$ = “” class.1.bonus = 0 : class.2.bonus = 0 : class.3.bonus = 0
‘ total.xp.1 = 0 : total.xp.2 = 0 : total.xp.3 = 0
‘ total.magicxp.13 = 0 : total.xp.magic.123 = 0 : total.magicxp.23 = 0 total.magicxp.1 = 0 : total.magicxp.2 = 0 : total.magicxp.3 = 0 total.monster.xp = 0 : total.xpgp.1 = 0 : total.xpgp.2 = 0 total.magicxp.12 = 0 : total.xpgp.3 = 0 : total.xpgp.12 = 0 BP = 0 : total.sold.magic.gp = 0 : EY = 0 total.xpgp.123 = 0 : total.xpgp.23 = 0
‘ L$ = “ Magic Item XPs (0=continue)” : M$ = “ Total Magic XPs for “
‘ tot.a = 0 : tot.b = 0 : tot.c = 0 : tot.d = 0 : tot.e = 0 tot.f = 0 : tot.g = 0 : tot.h = 0 : tot.i = 0 : tot.j = 0
‘ next.xp.11 = 0 : next.xp.12 = 0 : next.xp.21 = 0 : NN$ = “” next.xp.22 = 0 : next.xp.31 = 0 : next.xp.32 = 0
‘ total.magic.gp = 0 : group.number = 0 GOTO 10860

group: CLS : PRINT “ Enter number of group.” INPUT group.number RETURN

all.get: CLS : PRINT : PRINT “Does all of this group get the same XPGP amount ?” INPUT all.xpgp$ IF UCASE$(all.xpgp$) = “Y” OR UCASE$(all.xpgp$) = “YES” THEN xpgp.all.get$ = “TRUE” PRINT : PRINT “Enter XPGP all of group gets.” : INPUT xpgp.all END IF
RETURN

divide.it: CLS: PRINT: PRINT “ Divide two numbers.” : PRINT PRINT “enter first number of first / second.” : INPUT tot.a PRINT “Enter second number of first / second.” : INPUT tot.b PRINT: PRINT “first / second = “;tot.a/tot.b PRINT “ Press to continue.” : INPUT echi$
RETURN

multiply.it: CLS: PRINT: PRINT “ Multiply two numbers.” : PRINT PRINT “enter first number of first * second.” : INPUT tot.c PRINT “Enter second number of first * second.” : INPUT tot.d PRINT: PRINT “first * second = “;tot.c*tot.d PRINT “ Press to continue.” : INPUT echi$
RETURN

add.it: CLS: PRINT: PRINT “ Add two numbers.” : PRINT PRINT “enter first number of first + second.” : INPUT tot.e PRINT “Enter second number of first + second.” : INPUT tot.f PRINT: PRINT “first + second = “;tot.e+tot.f PRINT “ Press to continue.” : INPUT echi$
RETURN

add.multiple.it: CLS : PRINT : PRINT “Totalizer for a string of numbers.” PRINT “ Total = “; tot.g PRINT “ “;tot.h; “ (Just entered)” INPUT tot.h IF tot.h = 0 THEN RETURN tot.i = tot.h + tot.g : tot.g = tot.i : GOTO add.multiple.it

list.it: PRINT : PRINT “LIST of characters.” FOR ggr = 1 TO 150 IF CHINGRP$(ggr) <> “” THEN PRINT ggr;”) “; CHINGRP$(ggr) END IF NEXT ggr PRINT : INPUT “ Press for Main Menu”; N$ : RETURN
RETURN

redo.1: this.and.old.1 = total.xp.1 + old.1 level.next.11 = next.xp.11 – this.and.old.1 level.next.12 = next.xp.12 – this.and.old.1
RETURN

redo.2: this.and.old.2 = total.xp.2 + old.2 level.next.21 = next.xp.21 – this.and.old.2 level.next.22 = next.xp.22 – this.and.old.2
RETURN

redo.3: this.and.old.3 = total.xp.3 + old.3 level.next.31 = next.xp.31 – this.and.old.3 level.next.32 = next.xp.32 – this.and.old.3
RETURN

enter.class: PRINT : PRINT “Pick the character class by typing the number in front of it.” PRINT : PRINT “ 1 Barbarian 2 Bard” PRINT “ 3 Cavalier 4 Cleric” PRINT “ 5 Druid 6 Fighter” PRINT “ 7 Illusionist 8 M-U” PRINT “ 9 Monk 10 Paladin” PRINT “11 Ranger 12 Thief” PRINT “13 Thief-Acrobat ( 6-23 )” INPUT samename
‘ IF samename = 1 THEN george$ = “Barbarian” ELSEIF samename = 2 THEN george$ = “Bard” ELSEIF samename = 3 THEN george$ = “Cavalier” ELSEIF samename = 4 THEN george$ = “Cleric” ELSEIF samename = 5 THEN george$ = “Druid” ELSEIF samename = 6 THEN george$ = “Fighter” ELSEIF samename = 7 THEN george$ = “Illusionist” ELSEIF samename = 8 THEN george$ = “M-U” ELSEIF samename = 9 THEN george$ = “Monk” ELSEIF samename = 10 THEN george$ = “Paladin” ELSEIF samename = 11 THEN george$ = “Ranger” ELSEIF samename = 12 THEN george$ = “Thief” ELSEIF samename = 13 THEN george$ = “Thief-Acrobat” END IF
RETURN

‘ original group
CHART1:

FOR J = 1 TO 16 CLS : PRINT “Enter names of characters and the players playing them in the adventure group. ( 1-15)” PRINT “In the form character name and classes ][ player name” PRINT : PRINT “Use any punctuation except double quotes !” PRINT : PRINT “Type QUIT or Q when finished.” PRINT : PRINT “Name; class & level/class & level/class & level” PRINT “ number just entered… “; J – 1 INPUT CHINGRP$(J)
‘ IF UCASE$(CHINGRP$(J)) = “QUIT” OR UCASE$(CHINGRP$(J)) = “Q” THEN PRINT “ 1. view list of starting characters.” PRINT “ 2. print list of starting characters.” PRINT “ [ printer nedds to be on.]” PRINT “ 3. just go back to main menu without printout or viewing.” INPUT GHD
‘ IF GHD = 1 THEN ‘ screen list J3 = J : J = 50 PRINT : PRINT TAB;“Starting Character list.” PRINT “ Dungeon/adventure name = “;name.of.dungeon$ PRINT “ Game Date = “; game.date$ : PRINT
FOR L = 1 TO J3-1 IF CHINGRP$(L) <> “QUIT” OR CHINGRP$(L) <> “Q” THEN PRINT L;”) “;CHINGRP$(L) END IF NEXT L
ELSEIF GHD = 2 THEN ‘ dump to disk J3 = J : J = 50 OPEN “A”,#5,“df2:starting.characters” PRINT #5, “ “ PRINT #5, TAB;“Starting Character list.” PRINT #5, “ Dungeon/adventure name = “;name.of.dungeon$ PRINT #5, “ Game Date = “; game.date$ PRINT #5, “ group number = “;group.number PRINT #5, “ “
FOR L = 1 TO J3-1 IF CHINGRP$(L) <> “QUIT” OR CHINGRP$(L) <> “Q” THEN PRINT #5, L;”) “;CHINGRP$(L) END IF NEXT L CLOSE #5 ELSEIF GHD = 3 THEN RETURN END IF END IF
NEXT J

PRINT : INPUT “ Press for Main Menu”; N$
RETURN

‘ inactivating characters
CHART2: CLS : PRINT “Inactivating characters input.” PRINT “ Dungeon/adventure name = “;name.of.dungeon$ PRINT “ Game Date = “; game.date$ : PRINT
FOR J3 = 1 TO 15 FOR LA = 1 TO 15 IF CHINGRP$(LA) <> “QUIT” OR CHINGRP$(LA) <> “Q” THEN PRINT LA;”) “;CHINGRP$(LA) END IF NEXT LA
PRINT : PRINT “Number of character to inactivate ? (Q = Quit) “ INPUT, (LZZ)
‘ IF UCASE$(CHINGRP$(LZZ)) <> “Q” OR UCASE$(CHINGRP$(LZZ)) <> “QUIT” THEN CHINGRP$(LZZ+45) = CHINGRP$(LZZ) END IF
‘ IF UCASE$(CHINGRP$(L)) = “Q” OR UCASE$(CHINGRP$(L)) = “QUIT” THEN J4 = L
PRINT “ 1. view list of inactivating characters.” PRINT “ 2. dump list to disk of inactivating characters.” PRINT “ 3. just go back to main menu without printout or viewing.” INPUT, GHD
‘ IF GHD = 1 THEN ‘ screen list J3 = J : J = 50 ELSEIF GHD = 2 THEN ‘ dump to disk J3 = J : J = 50 OPEN “A”,#5,“df2:inactivate.characters” PRINT #5, “ “ PRINT #5, TAB;“Inactivating character list.” PRINT #5, “ Dungeon/adventure name = “;name.of.dungeon$ PRINT #5, “ Game Date = “; game.date$ PRINT #5, “ “
FOR MA = WW TO J4 IF UCASE$(CHINGRP$(MA)) <> “QUIT” OR UCASE$(CHINGRP$(MA)) <> “Q” THEN PRINT #5, MA;”) “;CHINGRP$(MA) END IF NEXT MA CLOSE #5
END IF ELSEIF GHD = 3 THEN RETURN END IF
CLS NEXT LZZ
PRINT : INPUT “ Press for Main Menu”; N$
RETURN

‘ activating characters
CHART3: CLS : PRINT “ACTIVATING characters input” PRINT : INPUT “HAVE YOU DONE THIS EARLIER ON this ADVENTURE ? (Y/N) “,BB$
‘ IF UCASE$(BB$) = “YES” OR UCASE$(BB$) = “Y” THEN WW = J5 + 1 : WX = J5 + 16 ELSE WW = J4 + 1 : WX = J4 + 16 END IF
FOR L = WW TO WX PRINT : PRINT “Name of the new character ? (Q = quit) “ PRINT “ new characters = “; L-1 INPUT CHINGRP$(L)
‘ IF UCASE$(CHINGRP$(L)) = “Q” OR UCASE$(CHINGRP$(L)) = “QUIT” THEN J5 = L : L = WX + 1
PRINT “ 1. view activating character list.” PRINT “ 2. dump list to disk of activating character list.” PRINT “ 3. just go to main menu without viewing or printout.” INPUT GHS
‘ IF GHS = 1 THEN PRINT TAB;“ACTIVATING characters.” PRINT “ Dungeon/adventure name = “;name.of.dungeon$ PRINT “ Game Date = “; game.date$ : PRINT
END IF FOR MA = WW TO J5 IF CHINGRP$(MA) <> “Q” OR CHINGRP$(MA) <> “QUIT” THEN PRINT #5, MA;”) “; CHINGRP$(MA) END IF NEXT MA ELSEIF GHS = 2 THEN OPEN “A”,#5,“df2:activate.characters” PRINT #5, “ “ PRINT #5, TAB;“ACTIVATING characters.” PRINT #5, “ Dungeon/adventure name = “;name.of.dungeon$ PRINT #5, “ Game Date = “; game.date$
FOR MA = WW TO J5 IF CHNIGRP$(MA) <> “Q” OR CHINGRP$(MA) <> “QUIT” THEN PRINT #5, MA;”) “; CHINGRP$(MA) END IF NEXT MA CLOSE #5 ELSEIF GHS = 3 THEN RETURN END IF
NEXT L

PRINT : INPUT “ Press for Main Menu”; N$
RETURN

‘ adventure group character list menu
CHARTMENU:
CLS : PRINT PRINT “Type the number desired and press “ : PRINT PRINT “1. original group list input” : PRINT PRINT “2. inactivating characters list input” : PRINT PRINT “3. activating characters list input” : PRINT PRINT “4. Not needed after all.” INPUT B%
‘ IF B% < 1 OR B% > 4 GOTO CHARTMENU ON B% GOSUB CHART1,CHART2,CHART3, RETURN RETURN

PRINT : PRINT “1. Dice Generator”

‘ Dice Program
50 RANDOMIZE TIMER CLS : C# = 0 : CB# = 0 : GG& = 0 PRINTDICE GENERTOR [Maximum number of sides is 1 million]” PRINT ,,” [ (1 × 10+6) minimum is 1 ].” PRINT : PRINTHOW MANY SIDES?” INPUT AR#
‘ IF AR# > 1000000# THEN PRINT “ Too many sides. 1 million maximum.” FOR k = 1 TO 32765 : NEXT k END IF
‘ IF AR# < 1 OR AR# > 1000000# GOTO 50
PRINT : INPUT “ Number of Dice ? “,BE# PRINT : INPUT “ Adds per die ? “,APD# PRINT : INPUT “ Adds for all dice ? “,AFAD# CLS : PRINT
WHILE (C# <> BE# OR C# < BE#) H# = INT + 1 + APD# PRINT H#;”+”; GG& = GG& + 1
‘ IF (GG& >= 19 AND AR# >= 1 AND AR# < 10) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 15 AND AR# >= 10 AND AR# < 100) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 12 AND AR# >= 100 AND AR# < 1000) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 10 AND AR# >= 1000 AND AR# < 10000) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 9 AND AR# >= 10000 AND AR# < 100000#) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 9 AND AR# >= 100000# AND AR# < 1000000# ) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 7 AND AR# = 1000000#) THEN PRINT : PRINT : GG& = 0 END IF
‘ C# = C# +1# : CB# = CB# + H# WEND
‘ CB# = CB# + AFAD# : PRINT : PRINT
PRINT “ Total Roll =”;CB#;” ON “;BE#;“d”;AR# : PRINT PRINT “+”;APD#;” adds per die +”;AFAD#;” add for all dice” : PRINT INPUT “ Finished with the dice generator (y/n)? “,A$ IF UCASE$(A$) = “YES” OR UCASE$(A$) = “Y” THEN RETURN GOTO 50


19009 CLS PRINT : INPUT “ What is the name of this dungeon/adventure “; name.of.dungeon$ PRINT PRINT : INPUT “ Enter the Game date of this groups adventure “; game.date$
RETURN

barbarian.class:

‘ a series of nested if then goes here

RETURN


bard.class:

‘ a series of nested if then goes here

RETURN

cavalier.class:

‘ a series of nested if then goes here

RETURN

cleric.class:

‘ a series of nested if then goes here

RETURN

druid.class:

‘ a series of nested if then goes here

RETURN

fighter.class:

‘ a series of nested if then goes here

RETURN


illusionist.class:

‘ a series of nested if then goes here

RETURN

magicuser.class:

‘ a series of nested if then goes here

RETURN

minstrel.class:

‘ a series of nested if then goes here

RETURN


monk.class:

‘ a series of nested if then goes here

RETURN

paladin.class:

‘ a series of nested if then goes here

RETURN

ranger.class:

‘ a series of nested if then goes here

RETURN


thief.class:

‘ a series of nested if then goes here

RETURN

thief.acrobat.class:

‘ a series of nested if then goes here

RETURN

Get.Any.Magic: INPUT “ Does this character get any magic item XPs ?”; ZZ$
RETURN


Part.1:
‘ class.lev = class.lev.1
‘ IF UCASE$(char.class.1$) = “FIGHTER” THEN GOSUB fighter.class ELSEIF UCASE$(char.class.1$) = “THIEF” THEN GOSUB thief.class ELSEIF UCASE$(char.class.1$) = “M-U” THEN GOSUB magicuser.class ELSEIF UCASE$(char.class.1$) = “CLERIC” THEN GOSUB cleric.class ELSEIF UCASE$(char.class.1$) = “ILLUSIONIST” THEN GOSUB illusionist.class ELSEIF UCASE$(char.class.1$) = “RANGER” THEN GOSUB ranger.class ELSEIF UCASE$(char.class.1$) = “PALADIN” THEN GOSUB paladin.class ELSEIF UCASE$(char.class.1$) = “DRUID” THEN GOSUB druid.class ELSEIF UCASE$(char.class.1$) = “MONK” THEN GOSUB monk.class ELSEIF UCASE$(char.class.1$) = “BARD” THEN GOSUB bard.class ELSEIF UCASE$(char.class.1$) = “BARBARIAN” THEN GOSUB barbarian.class ELSEIF UCASE$(char.class.1$) = “CAVALIER” THEN GOSUB cavalier.class ELSEIF UCASE$(char.class.1$) = “MINSTREL” THEN GOSUB minstrel.class ELSEIF UCASE$(char.class.1$) = “THIEF-ACROBATTHEN GOSUB thief.acrobat.class END IF

RETURN

Part.2:
‘ class.lev = class.lev.2
‘ IF UCASE$(char.class.2$) = “FIGHTER” THEN GOSUB fighter.class ELSEIF UCASE$(char.class.2$) = “THIEF” THEN GOSUB thief.class ELSEIF UCASE$(char.class.2$) = “M-U” THEN GOSUB magicuser.class ELSEIF UCASE$(char.class.2$) = “CLERIC” THEN GOSUB cleric.class ELSEIF UCASE$(char.class.2$) = “ILLUSIONIST” THEN GOSUB illusionist.class ELSEIF UCASE$(char.class.2$) = “RANGER” THEN GOSUB ranger.class ELSEIF UCASE$(char.class.2$) = “PALADIN” THEN GOSUB paladin.class ELSEIF UCASE$(char.class.2$) = “DRUID” THEN GOSUB druid.class ELSEIF UCASE$(char.class.2$) = “MONK” THEN GOSUB monk.class ELSEIF UCASE$(char.class.2$) = “BARD” THEN GOSUB bard.class ELSEIF UCASE$(char.class.2$) = “BARBARIAN” THEN GOSUB barbarian.class ELSEIF UCASE$(char.class.2$) = “CAVALIER” THEN GOSUB cavalier.class ELSEIF UCASE$(char.class.2$) = “MINSTREL” THEN GOSUB minstrel.class ELSEIF UCASE$(char.class.1$) = “THIEF-ACROBATTHEN GOSUB thief.acrobat.class END IF

RETURN

Part.3:
‘ class.lev = class.lev.3
‘ IF UCASE$(char.class.3$) = “FIGHTER” THEN GOSUB fighter.class ELSEIF UCASE$(char.class.3$) = “THIEF” THEN GOSUB thief.class ELSEIF UCASE$(char.class.3$) = “M-U” THEN GOSUB magicuser.class ELSEIF UCASE$(char.class.3$) = “ILLUSIONIST” THEN GOSUB illusionist.class ELSEIF UCASE$(char.class.3$) = “RANGER” THEN GOSUB ranger.class ELSEIF UCASE$(char.class.3$) = “PALADIN” THEN GOSUB paladin.class ELSEIF UCASE$(char.class.3$) = “DRUID” THEN GOSUB druid.class ELSEIF UCASE$(char.class.3$) = “MONK” THEN GOSUB monk.class ELSEIF UCASE$(char.class.3$) = “BARD” THEN GOSUB bard.class ELSEIF UCASE$(char.class.3$) = “BARBARIAN” THEN GOSUB barbarian.class ELSEIF UCASE$(char.class.3$) = “CAVALIER” THEN GOSUB cavalier.class ELSEIF UCASE$(char.class.3$) = “MINSTREL” THEN GOSUB minstrel.class ELSEIF UCASE$(char.class.1$) = “THIEF-ACROBATTHEN GOSUB thief.acrobat.class END IF

RETURN

‘ magic item totalizer for one class

7885 CLS : GOSUB 7160 : PRINT “ Input “; L$ PRINT “ Total = “; total.magicxp.1; M$; char.class.1$ PRINT “ “;BC; “ (Just entered)” INPUT BC IF BC = 0 THEN RETURN CBB = BC + total.magicxp.1 : total.magicxp.1 = CBB : GOTO 7885

‘ magic item totalizer for second class

8260 CLS : GOSUB 7160 : PRINT “ Input “; L$ PRINT “ Total = “; total.magicxp.2; M$; char.class.2$ PRINT “ “; PL; “ (Just entered)” INPUT PL IF PL = 0 THEN RETURN PD = PL + total.magicxp.2 : total.magicxp.2 = PD : GOTO 8260

‘ magic item totalizer for third character class

9180 CLS : GOSUB 7160 : PRINT “ Input “; L$ PRINT “ Total = “; total.magicxp.3; M$; char.class.3$ PRINT “ “; PN; “ (Just entered )” INPUT PN IF PN = 0 THEN RETURN EA = PN + total.magicxp.3 : total.magicxp.3 = EA : GOTO 9180

‘ magic item totalizer for 1st and 2nd character classes

8360 CLS : GOSUB 7160 : PRINT “ Input “; L$ PRINT “ Total = “; total.magicxp.12; M$; char.class.1$;”/”;char.class.2$ PRINT “ “; PM; “ (Just entered)” INPUT PM IF PM = 0 THEN RETURN AW = PM + total.magicxp.12 : total.magicxp.12 = AW : GOTO 8360

‘ magic item totalizer for first and third character classes

9380 CLS : GOSUB 7160 : PRINT “ Input “; L$ PRINT “ Total = “; total.magicxp.13; M$; char.class.1$;”/”;char.class.3$ PRINT “ “; BK; “ (Just entered)” INPUT BK IF BK = 0 THEN RETURN EE = BK + total.magicxp.13 : total.magicxp.13 = EE : GOTO 9380

‘ magic item totalizer for second and third character classes

9280 CLS : GOSUB 7160 : PRINT “ Input “; L$ PRINT “ Total = “; total.magicxp.23; M$; char.class.2$;”/”;char.class.3$ PRINT “ “; BJ; “ (Just entered)” INPUT BJ IF BJ = 0 THEN RETURN EC = BJ + total.magicxp.23 : total.magicxp.23 = EC : GOTO 9280

‘ magic item totalizer for first, second, and third character classes

9480 CLS : GOSUB 7160 : PRINT “ Input “; L$ PRINT “ Total = “; total.magicxp.123; M$; char.class.1$;”/”;char.class.2$;”/”;char.class.3$ PRINT “ “; BL; “ (Just entered)” INPUT BL IF BL = 0 THEN RETURN EG = BL + total.magicxp.123 : total.magicxp.123 = EG : GOTO 9480

‘ enter old.1 xp total

old.1.enter: PRINT” “; char.class.1$; class.lev.1; “ Old XP total = “ INPUT old.1
RETURN

‘ enter old.2 xp total

old.2.enter: PRINT “ “; char.class.2$; class.lev.2; “ Old XP total = “ INPUT old.2
RETURN

‘ enter old.3 xp total

old.3.enter: PRINT “ “; char.class.3$; class.lev.2; “ Old XP total = “ INPUT old.3
RETURN


‘ screen output for first

first.out: PRINT char.class.1$; “ class level “;class.lev.1 PRINT “ This adventure XPs = “; total.xp.1 PRINT “ Old total = “; old.1; “ new total = “; this.and.old.1
‘ IF level.next.11 > 0 THEN PRINT “ XPs needed for Level “; class.lev.1+1; “ = “;level.next.11 ELSEIF level.next.11 <= 0 THEN PRINT “ can go up to level “ ; class.lev.1+1; “ !” PRINT “ XPs over for”; class.lev.1+1; “ are = “;level.next.11 END IF
‘ IF level.next.12 > 0 THEN PRINT “ XPs needed for Level “; class.lev.1+2; “ = “;level.next.12 ELSEIF level.next.12 <= 0 THEN PRINT “ can go up to “; class.lev.1+2; “ level !” PRINT “ XPs over for “; class.lev.1+2; “ are = “;level.next.12 END IF
PRINT “—————————————————”
RETURN

‘ screen output for second

second.out: PRINT char.class.2$; “ class level “;class.lev.2 PRINT “ This adventure XPs = “;total.xp.2 PRINT “ Old total = “; old.2; “ new total = “; this.and.old.2
‘ IF level.next.21 > 0 THEN PRINT “ XPs needed for Level “; class.lev.2+1; “ = “;level.next.21 ELSEIF level.next.21 <= 0 THEN PRINT “ can go up to “; class.lev.2+1; “ level !” PRINT “ XPs over for “; class.lev.2+1; “ are = “;level.next.21 END IF
‘ IF level.next.22 > 0 THEN PRINT “ XPs needed for Level “; class.lev.2+2; “ = “;level.next.22 ELSEIF level.next.22 <= 0 THEN PRINT “ can go up to “; class.lev.2+2; “ level !” PRINT “ XPs over for “; class.lev.2+2; “ are = “;level.next.22 END IF
PRINT “—————————————————”
RETURN

‘ screen output for third

third.out: PRINT char.class.3$; “ class level “;class.lev.3 PRINT “ This adventure XPs = “; total.xp.3 PRINT “ Old total = “; old.3; “ new total = “;this.and.old.3
‘ IF level.next.31 > 0 THEN PRINT “ XPs needed for Level “; class.lev.3+1; “ = “;level.next.31 ELSEIF level.next.31 <= 0 THEN PRINT “ can go up to “; class.lev.3+1; “ level !” PRINT “ XPs over “; class.lev.3+1; “ are = “;level.next.31 END IF
‘ IF level.next.32 > 0 THEN PRINT “ XPs needed for Level “; class.lev.3+2; “ = “;level.next.32 ELSEIF level.next.32 <= 0 THEN PRINT “ can go up to “; class.lev.3+2; “ level !” PRINT “ XPs over “; class.lev.3+2; “ are = “;level.next.32 END IF
PRINT “—————————————————”
RETURN

‘ disk output for first

dsk.first.out: OPEN “A”,#2,“df2:palewood.game” PRINT #2, “ “ PRINT #2, “ “ PRINT #2, “ “ PRINT #2, “ “; char.class.1$; “ class level “;class.lev.1 PRINT #2, “ This adventure XPs = “; total.xp.1 PRINT #2, “ Old total = “; old.1; “ new total = “; this.and.old.1
‘ IF level.next.11 > 0 THEN PRINT #2, “ XPs needed for Level “; class.lev.1+1; “ = “;level.next.11 ELSEIF level.next.11 <= 0 THEN PRINT #2, “ can go up to level “ ; class.lev.1+1; “ !” PRINT #2, “ XPs over for”; class.lev.1+1; “ are = “;level.next.11 END IF
‘ IF level.next.12 > 0 THEN PRINT #2, “ XPs needed for Level “; class.lev.1+2; “ = “;level.next.12 ELSEIF level.next.12 <= 0 THEN PRINT #2, “ can go up to “; class.lev.1+2; “ level !” PRINT #2, “ XPs over for “; class.lev.1+2; “ are = “;level.next.12 END IF
PRINT #2, “—————————————————” CLOSE #2
RETURN

‘ disk output for second

dsk.second.out: OPEN “A”,#2,“df2:palewood.game” PRINT #2, “ “ PRINT #2, “ “ PRINT #2, “ “; char.class.2$; “ class level “;class.lev.2 PRINT #2, “ This adventure XPs = “;total.xp.2 PRINT #2, “ Old total = “; old.2; “ new total = “; this.and.old.2
‘ IF level.next.21 > 0 THEN PRINT #2, “ XPs needed for Level “; class.lev.2+1; “ = “;level.next.21 ELSEIF level.next.21 <= 0 THEN PRINT #2, “ can go up to “; class.lev.2+1; “ level !” PRINT #2, “ XPs over for “; class.lev.2+1; “ are = “;level.next.21 END IF
‘ IF level.next.22 > 0 THEN PRINT #2, “ XPs needed for Level “; class.lev.2+2; “ = “;level.next.22 ELSEIF level.next.22 <= 0 THEN PRINT #2, “ can go up to “; class.lev.2+2; “ level !” PRINT #2, “ XPs over for “; class.lev.2+2; “ are = “;level.next.22 END IF
PRINT #2, “—————————————————” CLOSE #2
RETURN

‘ disk output for third

dsk.third.out: OPEN “A”,#2,“df2:palewood.game” PRINT #2, “ “ PRINT #2, “ “ PRINT #2, “ “; char.class.3$; “ class level “;class.lev.3 PRINT #2, “ This adventure XPs = “; total.xp.3 PRINT #2, “ Old total = “; old.3; “ new total = “;this.and.old.3
‘ IF level.next.31 > 0 THEN PRINT #2, “ XPs needed for Level “; class.lev.3+1; “ = “;level.next.31 ELSEIF level.next.31 <= 0 THEN PRINT #2, “ can go up to “; class.lev.3+1; “ level !” PRINT #2, “ XPs over “; class.lev.3+1; “ are = “;level.next.31 END IF
‘ IF level.next.32 > 0 THEN PRINT #2, “ XPs needed for Level “; class.lev.3+2; “ = “;level.next.32 ELSEIF level.next.32 <= 0 THEN PRINT #2, “ can go up to “; class.lev.3+2; “ level !” PRINT #2, “ XPs over “; class.lev.3+2; “ are = “;level.next.32 END IF
PRINT #2, “—————————————————” CLOSE #2
RETURN

‘ character name enter

7145 INPUT “enter character name “; character.name$
7160 CLS : PRINT character.name$ : PRINT : RETURN

‘ bonus XP % enter

7180 PRINT “Input “; char.class.3$; “ Bonus XP decimal % “ INPUT class.3.bonus

7200 PRINT “Input “; char.class.2$; “ Bonus XP decimal % “ INPUT class.2.bonus

7220 PRINT “Input “; char.class.1$; “ Bonus XP decimal % “ INPUT class.1.bonus
‘ ON number.of.classes GOTO 7860, 8160, 8865

7260 CLS : PRINT character.name$ IF number.of.classes = 1 THEN GOTO 7220 IF number.of.classes = 2 THEN GOTO 7200 IF number.of.classes = 3 THEN GOTO 7180 IF number.of.classes < 1 OR number.of.classes > 3 THEN GOTO 10860

‘ convert monster hp to monster xp worth

7360 CLS : PRINT “Monster Name/Type: 5 + 1/HP This 5 = XP/Level”
PRINT “ 1/HP = XP/HP” : INPUT “enter monster name “;Z$ INPUT “ XP per level “; monster.xp.lev
‘ IF monster.xp.lev < 0 OR monster.xp.lev > 1000000& THEN GOTO 7380

7400 INPUT “ XP/HP “; xp.hp : IF xp.hp < 1 OR xp.hp > 100000& THEN GOTO 7400

7420 INPUT “ Monsters HP “;monster.hp : PRINT

7440 INPUT “ Number of characters that attacked it “; number.of.char IF number.of.char < 0 OR number.of.char > 18 THEN GOTO 7440

7460 xp.worth = monster.xp.lev + xp.hp * monster.hp : CLS : PRINT PRINT E$ : PRINT xp.worth; “ XPs worth”
‘ IF number.of.char <> 0 THEN PRINT : PRINT USING “#####.##”; xp.worth/number.of.char; END IF
PRINT” XPs/Character of “; number.of.char; “ Character(s)” : PRINT PRINT “ 1. Repeat with same monster type (Different HPs)” PRINT “ 2. Main Menu” PRINT “ 3. another monster type “ INPUT BY
‘ IF BY < 1 OR BY > 3 THEN GOTO 7460 IF BY = 3 THEN GOTO 7360 IF BY = 2 THEN RETURN IF BY = 1 THEN GOTO 7420

‘ character’s share of monster xp worth

7580 CLS : PRINT “ Enter “; character.name$; “s Share of each monster XPs” PRINT boing; “ (Just entered)” : PRINT total.monster.xp; “ Total” INPUT boing : IF boing = 0 THEN GOTO 7720
PRINT : PRINT “Combat Difficulty % Input decimal number only “ PRINT “ from chart on page 84 of DMG.” PRINT “If a loss, use negative decimal percent enter” INPUT diff.percent : EX = diff.percent * boing + boing total.monster.xp = total.monster.xp + EX : EX = 0 : GOTO 7580

‘ a Character’s XPGP share

7720 ‘IF xpgp.all.get$ = “TRUE” THEN ‘ total.xpgp = xpgp.all ‘ELSE PRINT PRINT character.name$; “s share of XPGP is equal to (0 to continue)” PRINT presto;” (Just entered)” : PRINT total.xpgp; “ Total” INPUT presto : IF presto = 0 THEN GOTO 7260 EY = presto + total.xpgp : total.xpgp = EY : GOTO 7720 ‘END IF
GOTO 7260

‘ start/enter for one character class

7800 CLS : PRINT “ One Character Class ? (Y/N)” : INPUT F$ IF UCASE$(F$) = “N” THEN RETURN OPEN “A”,#2,“df2:palewood.game” PRINT #2, “ “ PRINT #2, “=============================================== ] ] ] ] ]” PRINT #2, “ “ CLOSE #2 CLS : GOSUB 7145 : PRINT “ Character class ?” : GOSUB enter.class char.class.1$ = george$ INPUT “ class level “;class.lev.1 : GOSUB old.1.enter number.of.classes = 1 : GOTO 7580
7860 CLS : EZ1 = total.monster.xp + total.xpgp total.xp.1 = EZ1 * class.1.bonus + EZ1

‘ magic item totalizer for first class

GOSUB Get.Any.Magic

IF UCASE$(ZZ$) = “N” THEN GOTO 9901
END IF

GOSUB 7885

‘ results for one character class

9901 CLS GOSUB Part.1 : next.xp.11 = next.xp.1 : next.xp.12 = next.xp.2 GOSUB 7160 total.xp.1 = total.magicxp.1 + total.xp.1 GOSUB redo.1 : GOSUB first.out
PRINT : INPUT “ Do you want to dump this information to disk ?”; NN$
‘ IF UCASE$(NN$) = “Y” THEN OPEN “A”,#1,“df2:palewood.game” PRINT #1, character.name$ PRINT #1, “ “ PRINT #1, “ “ GOSUB dsk.first.out CLOSE #1 END IF
PRINT : INPUT “ Press for Main Menu”; N$ : RETURN

‘ start/enter for two character classes

8120 CLS : PRINT “ Two Character classes ? (Y/N) “ : INPUT F$ IF UCASE$(F$) = “N” THEN RETURN
OPEN “A”,#2,“df2:palewood.game” PRINT #2, “ “ PRINT #2, “=============================================== ] ] ] ] ]” PRINT #2, “ “ CLOSE #2 CLS : GOSUB 7145 : PRINT “Class 1 of 2 ?” : GOSUB enter.class char.class.1$ = george$ INPUT “ class level “;class.lev.1 : GOSUB old.1.enter
PRINT “Class 2 of 2 ?” : GOSUB enter.class : char.class.2$ = george$ INPUT “ class level “;class.lev.2 : GOSUB old.2.enter number.of.classes = 2 : GOTO 7580

8160 CLS : EZ2 = (total.monster.xp + total.xpgp)/2 total.xp.2 = EZ2 * class.2.bonus + EZ2 total.xp.1 = EZ2 * class.1.bonus + EZ2

GOSUB Get.Any.Magic

IF UCASE$(ZZ$) = “N” THEN GOTO 9902
END IF

9922 CLS : PRINT : PRINT “Which class/combinations get magic item XPs ? “
PRINT : PRINT “ 1. “;char.class.1$” only.”
PRINT : PRINT “ 2. “;char.class.2$” only.”
PRINT : PRINT “ 3. “;char.class.1$” and “; char.class.2$; “.”
PRINT : PRINT “ 4. done”
INPUT GGZ

IF GGZ = 1 THEN GOSUB 7885
ELSEIF GGZ = 2 THEN GOSUB 8260
ELSEIF GGZ = 3 THEN GOSUB 8360
END IF

IF GGZ <> 4 THEN GOTO 9922
IF GGZ < 1 OR GGZ > 4 THEN GOTO 9922

‘ ‘ results with two classes ‘ 9902 CLS GOSUB Part.1 : next.xp.11 = next.xp.1 : next.xp.12 = next.xp.2 GOSUB Part.2 : next.xp.21 = next.xp.1 : next.xp.22 = next.xp.2 GOSUB 7160 ‘ total.xp.1 = total.magicxp.1 + total.xp.1 + total.magicxp.12/2 total.xp.2 = total.magicxp.2 + total.xp.2 + total.magicxp.12/2 ‘ GOSUB redo.1 : GOSUB first.out GOSUB redo.2 : GOSUB second.out ‘ PRINT : INPUT “ Do you want to dump this information to disk ?”; NN$ ‘ IF UCASE$(NN$) = “Y” THEN OPEN “A”,#1,“df2:palewood.game” PRINT #1, character.name$ PRINT #1, “ “ PRINT #1, “ “ GOSUB dsk.first.out : GOSUB dsk.second.out CLOSE #1 END IF ‘ INPUT “ Press for Main Menu”; N$ : RETURN ‘ ‘ start/enter for three character classes ‘ 8840 CLS : PRINT” Three Character classes ? (Y/N) “ : INPUT F$ IF UCASE$(F$) = “N” THEN RETURNOPEN “A”,#2,“df2:palewood.game” PRINT #2, “ “ PRINT #2, “=============================================== ] ] ] ] ]” PRINT #2, “ “ CLOSE #2 CLS : GOSUB 7145 : PRINT “ Class 1 of 3 ?” : GOSUB enter.class char.class.1$ = george$ INPUT “ class level “;class.lev.1 : GOSUB old.1.enter ‘ PRINT “ Class 2 of 3 ?” : GOSUB enter.class : char.class.2$ = george$ INPUT “ class level “;class.lev.2 : GOSUB old.2.enter ‘ PRINT “ Class 3 of 3 ?” : GOSUB enter.class : char.class.3$=george$ INPUT “ class level “;class.lev.3 : GOSUB old.3.enter ‘ PRINT : number.of.classes = 3 : GOTO 7580 ‘ 8865 CLS : EZ3 = (total.monster.xp + total.xpgp)/3 total.xp.3 = EZ3 * class.3.bonus + EZ3 total.xp.2 = EZ3 * class.2.bonus + EZ3 total.xp.1 = EZ3 * class.1.bonus + EZ3 ‘ GOSUB Get.Any.Magic IF UCASE$(ZZ$) = “N” THEN GOTO 9903 END IF ‘ 9933 CLS : PRINT : PRINT “Which class/combinations get magic item XPs ? “ PRINT : PRINT “ 1. “;char.class.1$;” only.” PRINT “ 2. “;char.class.2$;” only.” PRINT “ 3. “;char.class.3$;” only.” PRINT : PRINT “ 4. “;char.class.1$;” and “; char.class.2$; “ .” PRINT : PRINT “ 5. “;char.class.1$;” and “; char.class.3$; “ .” PRINT : PRINT “ 6. “;char.class.2$ ;” and “; char.class.3$; “ .” : PRINT PRINT “ 7. “;char.class.1$”, “; char.class.2$; “, and “; char.class.3$; “.” PRINT : PRINT “ 8. done” INPUT GGZ ‘ IF GGZ = 1 THEN GOSUB 7885 ELSEIF GGZ = 2 THEN GOSUB 8260 ELSEIF GGZ = 3 THEN GOSUB 9180 ELSEIF GGZ = 4 THEN GOSUB 8360 ELSEIF GGZ = 5 THEN GOSUB 9380 ELSEIF GGZ = 6 THEN GOSUB 9280 ELSEIF GGZ = 7 THEN GOSUB 9480 END IF ‘ IF GGZ <> 8 THEN GOTO 9933 IF GGZ < 1 OR GGZ > 8 THEN GOTO 9933 ‘ ‘ results for three character classes ‘ 9903 CLS : GOSUB 7160 ‘ total.xp.1 = total.magicxp.1 + total.xp.1 + total.magicxp.123/3 + total.magicxp.13/2 + total.magicxp.12/2 total.xp.2 = total.magicxp.2 + total.xp.2 + total.magicxp.123/3 + total.magicxp.23/2 + total.magicxp.12/2 total.xp.3 = total.magicxp.3 + total.xp.3 + total.magicxp.123/3 + total.magicxp.13/2 + total.magicxp.23/2 ‘ GOSUB Part.1 : next.xp.11 = next.xp.1 : next.xp.12 = next.xp.2 GOSUB Part.2 : next.xp.21 = next.xp.1 : next.xp.22 = next.xp.2 GOSUB Part.3 : next.xp.31 = next.xp.1 : next.xp.32 = next.xp.2 ‘ ‘ output for all three character classes ‘ GOSUB redo.1 : GOSUB first.out : GOSUB redo.2 : GOSUB second.out GOSUB redo.3 : GOSUB third.out ‘ ‘ PRINT : INPUT “ Do you want to print this information out ?”; NN$ ‘ PRINT : INPUT “ Do you want to dump this information to disk ?”; NN$ ‘ IF UCASE$(NN$) = “Y” THEN OPEN “A”,#1,“df2:palewood.game” PRINT #1, character.name$ PRINT #1, “ “ PRINT #1, “ “ GOSUB dsk.first.out : GOSUB dsk.second.out : GOSUB dsk.third.out CLOSE #1 END IF ‘ PRINT : INPUT “ Press for Main Menu”; N$ : RETURN ‘ ‘ Money enter to money menu ‘ 10060 INPUT “ copper pieces “;CB : PRINT CB; “ (Just entered)” PRINT total.copper; “ total copper pieces” IF CB = 0 THEN RETURN CC = CB + total.copper : total.copper = CC : GOTO 10060 ‘ 10100 INPUT “ silver pieces “;CE : PRINT CE; “ (Just entered)” PRINT total.silver; “ total silver pieces” IF CE = 0 THEN RETURN CF = CE + total.silver : total.silver = CF : GOTO 10100 ‘ 10140 INPUT “ electrum pieces “;CI : PRINT CI; “ (Just entered)” PRINT total.electrum; “ total electrum pieces” IF CI = 0 THEN RETURN CJ = CI + total.electrum : total.electrum = CJ : GOTO 10140 ‘ 10180 INPUT “ gold pieces “;CK : PRINT CK; “ (Just entered)” PRINT total.gold; “ total gold pieces” IF CK = 0 THEN RETURN CM = CK + total.gold : total.gold = CM : GOTO 10180 ‘ 10220 INPUT “ platinum pieces “;CP : PRINT CP; “ (Just entered)” PRINT total.platinum; “ total platinum pieces” IF CP = 0 THEN RETURN CQ = CP + total.platinum : total.platinum = CQ : GOTO 10220 ‘ 10260 INPUT “ gem gp value “;CS : PRINT CS; “ (Just entered)” PRINT total.gem; “ total gem gp value” IF CS = 0 THEN RETURN CT = CS + total.gem : total.gem = CT : GOTO 10260 ‘ 10300 INPUT “ Jewelry gp value “;CV : PRINT CV; “ (Just entered)” PRINT total.jewelry; “ total jewelry gp value” IF CV = 0 THEN RETURN CW = CV + total.jewelry : total.jewelry = CW : GOTO 10300 ‘ 10340 INPUT “ miscellaneous item gp value “;DH : PRINT DH; “ (Just entered)” PRINT misc.item.gp; “ miscellaneous item gp value” IF DH = 0 THEN RETURN DB = DH + misc.item.gp : misc.item.gp = DB : GOTO 10340 ‘ 10380 INPUTGEM evaluation % ( .25 = 25%) “; gem.eval : RETURN ‘ 10400 INPUT “ Jewelry evaluation % ( .25 = 25% ) “; jewel.eval : RETURN ‘ 10420 INPUT “ Miscellaneous item evaluation % ( .25 = 25%) “; misc.item.eval : RETURN ‘ 10440 INPUT “ Number of party members ? ( 1 thru 15 )”; number.in.group IF number.in.group < 1 OR number.in.group > 15 THEN 10440 RETURN ‘ 10480 PRINTXPGP difficulty % ( .45 = 45%) “ : PRINT INPUT “ .1 thru 2 ( .1 = very easy / 2 = very hard “; percent.xpgp.diff IF percent.xpgp.diff < 0 OR percent.xpgp.diff > 2 THEN 10480 RETURN ‘ 10540 INPUT “ Sold magic item gp value “; sold.magic.gp PRINT sold.magic.gp; “ (Just entered )” : PRINT total.sold.magic.gp; “ total “ IF sold.magic.gp = 0 THEN RETURN QB = sold.magic.gp + total.sold.magic.gp : total.sold.magic.gp = QB : GOTO 10540 ‘ ‘ total money screen printout ‘ 10560 total.gp.value = total.copper / 200 + total.silver / 20 + total.electrum / 2 + total.gold + total.platinum*5 + total.gem + total.jewelry + misc.item.gp + total.sold.magic.gp gem.charges = total.gem * gem.eval jewel.charges = total.jewelry*jewel.eval misc.item.charges = misc.item.gp*misc.item.eval total.charges = gem.charges + jewel.charges + misc.item.charges total.gp.left = total.gp.value – total.charges total.xpgp.value = total.gp.value*percent.xpgp.diff xpgp.char = total.xpgp.value/number.in.group gp.value.char = total.gp.left/number.in.group charge.per.char = total.charges/number.in.group ‘ CLS : PRINT “ Adventure/dungeon location = “; name.of.dungeon$; “ Game Date = “; game.date$ PRINT : PRINT USING “########,#.##”; total.gp.value; PRINT “ total gp value” ‘ IF total.gp.value <> total.gp.left OR total.gp.left <> 0 THEN PRINT USING “#######,##.##”; total.gp.left; PRINT “ total gp value after charges” : PRINT END IF ‘ IF number.in.group <> 0 THEN PRINT USING “########,#.##”; total.xpgp.value; PRINT “ total XPGP”, PRINT USING “######,##.##”; xpgp.char; PRINTXPGP/character” PRINT USING “######,##.##”; gp.value.char; PRINT “ gp value/character” : PRINT END IF ‘ IF total.gem <> 0 THEN PRINT : PRINT total.gem; “ total Gem gp value “ IF gem.charges <> 0 THEN PRINT USING “####,##.##”; gem.charges; PRINT “ gp charges at “; gem.eval*WW;”%” END IF END IF ‘ IF total.jewelry <> 0 THEN PRINT total.jewelry; “ total Jewelry gp value “ IF jewel.charges <> 0 THEN PRINT USING “#####.##”; jewel.charges; PRINT” gp charges at “; jewel.eval*WW;”%” : PRINT END IF END IF ‘ IF misc.item.gp <> 0 THEN PRINT USING “####,###.##”; misc.item.gp; PRINT “ total Misc. item gp value”; END IF ‘ IF misc.item.charges <> 0 THEN PRINT USING “####,###.##”; misc.item.charges; PRINT “ charges at “misc.item.eval*WW;”%” : PRINT END IF ‘ IF charge.per.char <> 0 THEN PRINT USING “#####,#.##”; charge.per.char; PRINT “ gp Evaluation cost/character” END IF ‘ IF total.sold.magic.gp <> 0 THEN PRINT total.sold.magic.gp; “ sold magic item gp value” END IF ‘ IF percent.xpgp.diff <> 0 THEN PRINT percent.xpgp.diff*WW; “% XPGP difficulty of encounter” END IF ‘ PRINT ‘ IF total.platinum <> 0 THEN PRINT total.platinum; “ PP “; END IF ‘ IF total.gold <> 0 THEN PRINT total.gold; “ GP “; END IF ‘ IF total.electrum <> 0 THEN PRINT total.electrum; “ EP “; END IF ‘ IF total.silver <> 0 THEN PRINT total.silver; “ SP “; END IF ‘ IF total.copper <> 0 THEN PRINT total.copper; “ CP” : PRINT END IF ‘ PRINT PRINT INPUT “ Do you want to save this information to disk ?”; NN$ ‘ ‘ total money print out ‘ IF UCASE$(NN$) = “Y” THEN OPEN “A”,#1,“df2:palewood.xpgp” PRINT #1, “ “ PRINT #1, “ Adventure/dungeon location = “; name.of.dungeon$ PRINT #1, “ Game Date = “; game.date$ PRINT #1, “ Start of group number = “;group.number PRINT #1, “ “ PRINT #1, USING “Total GP Value ########,#.##”; total.gp.value PRINT #1, USING “Total GP Value left after charges = #######,##.##”; total.gp.left PRINT #1, “ “ PRINT #1, USING “########,#.##”; total.xpgp.value; PRINT #1, “ total XPGP “; PRINT #1, USING “######,##.##”; xpgp.char; PRINT #1, “ XPGP/character” PRINT #1, “ “ PRINT #1, USING “######,##.##”; gp.value.char; PRINT #1, “ gp value/character”; PRINT #1, percent.xpgp.diff*WW; “ % XPGP difficulty of encounter” PRINT #1, “ “ ‘ IF total.gem <> 0 THEN PRINT #1, total.gem; “ total Gem gp value “; PRINT #1, USING “####,##.##”; gem.charges; PRINT #1, “ gp charges at “; gem.eval*WW;”%” PRINT #1, “ “ END IF ‘ IF total.jewelry <> 0 THEN PRINT #1, total.jewelry; “ total Jewelry gp value “; PRINT #1, USING “#####.##”; jewel.charges; PRINT #1, “ gp charges at “; jewel.eval*WW;”%” PRINT #1, “ “ END IF ‘ IF misc.item.gp <> 0 THEN PRINT #1, misc.item.gp; “ total Miscellaneous item gp value”; PRINT #1, USING “#######,##.##”; misc.item.charges; PRINT #1, “ charges at “misc.item.eval*WW;”%” PRINT #1, “ “ END IF ‘ IF charge.per.char <> 0 THEN PRINT #1, USING “#####,#.##”; charge.per.char; PRINT #1, “ gp Evaluation cost/character” PRINT #1, “ “ END IF ‘ IF total.sold.magic.gp <> 0 THEN PRINT #1, total.sold.magic.gp; “ sold magic item gp value” PRINT #1, “ “ END IF ‘ IF total.platinum <> 0 THEN PRINT #1, total.platinum; “ Platinum Pieces “; END IF ‘ IF total.gold <> 0 THEN PRINT #1, total.gold; “ Gold Pieces “; END IF ‘ IF total.electrum <> 0 THEN PRINT #1, total.electrum; “ Electrum Pieces “ END IF ‘ IF total.silver <> 0 THEN PRINT #1, total.silver; “ Silver Pieces “; END IF ‘ IF total.copper <> 0 THEN PRINT #1, total.copper; “ Copper Pieces” PRINT #1, “ “ END IF ‘ PRINT #1, “ “ PRINT #1, “ end of group number = “;group.number PRINT #1, “ “ PRINT #1, “ end of adventure/dungeon monies found at/in “; name.of.dungeon$ PRINT #1, “ “ CLOSE #1 END IF ‘ INPUT “ Press for Main Menu”; N$ : RETURN ‘ 10720 CLS : PRINT TAB (15); “ Money menu”;TAB; “Input” : PRINT PRINT “ 1. copper pieces 2. silver pieces” : PRINT PRINT “ 3. electrum pieces 4. gold pieces” PRINT “ 5. platinum pieces 6. gem gp value” : PRINT PRINT “ 7. jewelry gp value 8. misc. gp value” : PRINT PRINT “ 9. gem evaluation % 10. jewelry evaluation %” PRINT “11. misc. evaluation % 12. # of characters” : PRINT PRINT “13. xpgp difficulty 14. sold magic gp” : PRINT PRINT “15. readout of money entered 16. Quit” INPUT “ Enter menu item desired. “; FD : CLS ‘ IF FD < 1 OR FD > 16 THEN 10720 ‘ ON FD GOSUB 10060, 10100, 10140, 10180, 10220, 10260, 10300, 10340, 10380, 10400, 10420, 10440, 10480, 10540, 10560, 10860 ‘ GOTO 10720 ‘ ‘ character experience section main menu ‘ 10860 CLS : PRINT : PRINT, “ Experience Menu” PRINT “ 1. One character class 2. Two character classes” PRINT “ 3. Three character classes “ : PRINT PRINT “ 4. clear variables [ between each character ]” : PRINT PRINT “ 5. Money Menu 6. Monster HP to XP” PRINT “ 7. input name and date of dungeon/adventure !” PRINT “ 8. dice section” PRINT “ 9. starting/inactive/active player characters” PRINT “10. look at list of characters in the file.” PRINT “11. divide two numbers. 12. multiply two numbers.” PRINT “13. add two numbers. 14. total a list of numbers.” PRINT “15. all of the group get the same XPGP ?” PRINT “16. enter group number” : INPUT “17. quit “, AG ‘ IF AG < 1 OR AG > 17 THEN GOTO 10860 IF AG = 4 THEN X = 1 IF AG = 17 THEN END ‘ ON AG GOSUB 7800, 8120, 8840, 7000, 10720, 7360, 19009, 50, CHARTMENU, list.it, divide.it, multiply.it, add.it, add.multiple.it, all.get, group GOTO 10860 END

]]>
Bill George 2015-02-07T04:51:48+00:00 2023-01-11T22:00:00+00:00 basic: game timer/clock/dice program tag:crestofastar.jimsmaps.net,2015-02-06:41b9e06e4775041fe9f5e0b879357f08/5146dc66746df547a22f08c3c4e1ec57 This is my AmigaBASIC adventure timer program on my campaign World, Crestar.


‘
‘ This program needs to be: clear ,76800, 10000
‘                    Setup
‘
LM = 366
DIM Mnhr1%(LM),Mnhr2%(LM),Mnmn1%(LM),Mnmn2%(LM),Sunrise$(LM),Sunset$(LM)
DIM CHINGRP$(150)
DIM CRG$(18)
W$ = “ Rise “ : X$ = “ SET “ : ACK$ = “ A.M. “ : PCK$ =” P.M.”
ABONUS% = 0 : BBONUS% = 0
‘
‘ country inputs
 FOR CRTS = 1 TO 16
    READ CRG$(CRTS)
 NEXT CRTS
‘
‘
DATA “Dank Forest”,“Gahstra”,“Grand Isle of Karenth”,“Groz”,“Isle of Fools”,“Land of Strife”
‘
DATA “Land of the Giants”,“Mountains of Fire”,Nalo Island”,“Nomads”,“Noral”,“Plains of Dareth”
‘
DATA “Tanoria”,“Teslarc”,“The Great Open”,“Trillolara”
‘
‘
CLS:PRINT
FOR cvg = 1 TO 16
  IF cvg < 10 THEN
    PRINT “ “;cvg;” ) “;CRG$(cvg)
  ELSE
    PRINT cvg;” ) “;CRG$(cvg)
  END IF
  NEXT cvg
‘
INPUT “Country number ? “,brill
CNTRY$ = CRG$(brill)
INPUT “Town where adventure starts  ? “,TWN$
‘
INPUT “Name of the adventure area (dungeon/castle/forest/etc.) ? “,DNGN$
AGE%=11
‘INPUT “Age (epoch)  ? “,AGE%
‘INPUT “Year (maximum depends on epoch) ? “,YEAR%
INPUT “Year ? “,YEAR%
YR1% = YEAR% : YR2% = YEAR%
‘
INPUT “Month (1 thru 12)  ? “,MNTH%
INPUT “Year Day (1 thru 366) ? “,YRD%
INPUT “Month day (1 thru 30)  ? “,MND%
INPUT “Hour (24 hour clock)  ? “,HR%
INPUT “Minutes (0 thru 59)  ? “,MIN%
INPUT “Seconds (0 thru 59)  ? “,SCND%
CLS : PRINT , “Loading sun rise and set times. ( Please wait !)”
‘
SUN:
   FOR LL = 1 TO 366 STEP 3
     READ Sunrise$(LL),Sunset$(LL),Sunrise$(LL+1),Sunset$(LL+1),Sunrise$(LL+2),Sunset$(LL+2)
   NEXT LL
‘
‘ Sun data for my game planet
‘
‘    day 1-6   #1 Month 1
DATA “7:30::23”,“4:21::47”,“7:30::27”,“4:22::40”,“7:30::32”,“4:23::34”,“7:30::36”,“4:24::27”,“7:30::40”,“4:25::21”,
“7:30::44”,“4:26::15”
‘
‘    day 7-12  #2
DATA “7:30::49”,“4:27::08”,“7:30::53”,“4:28::02”,“7:30::57”,“4:28::55”,“7:31::02”,“4:29::49”,“7:31::06”,“4:30::42”,
“7:31::10”,“4:31::36”
‘
‘    day 13-18  #3
DATA “7:31::14”,“4:32::30”,“7:31::19”,“4:33::23”,“7:31::23”,“4:34::17”,“7:30::17”,“4:35::10”,“7:29::10”,“4:36::04”,
“7:28::04”,“4:36::57”
‘
‘    day 19-24  #4
DATA “7:26::57”,“4:37::51”,“7:25::45”,“4:38::45”,“7:24::44”,“4:39::38”,“7:23::38”,“4:40::32”,“7:22::32”,“4:41::25”,
“7:21::25”,“4:42::19”
‘
‘    day 25-30  #5
DATA “7:20::19”,“4:43::12”,“7:19::12”,“4:44::06”,“7:18::06”,“4:45::00”,“7:16::59”,“4:45::53”,“7:15::53”,“4:47::08”,
“7:14::47”,“4:48::23”
‘
‘    day 31-36  #6 Month 2
DATA “7:13::40”,“4:49::38”,“7:12::34”,“4:50::53”,“7:11::27”,“4:52::08”,“7:10::21”,“4:53::23”,“7:09::14”,“4:54::38”,
“7:08::08”,“4:55::53”
‘
‘    day 37-42  #7
DATA “7:07::02”,“4:57::08”,“7:05::55”,“4:58::23”,“7:04::49”,“4:59::38”,“7:03::42”,“5:00::53”,“7:02::36”,“5:02::08”,
“7:01::29”,“5:03::23”
‘
‘    day 43-48  #8
DATA “7:00::23”,“5:04::38”,“6:59::17”,“5:05::53”,“6:58::10”,“5:07::08”,“6:57::04”,“5:08::23”,“6:55::57”,“5:09::38”,
“6:54::51”,“5:10::53”
‘
‘    day 49-54  #9
DATA “6:53::44”,“5:12::09”,“6:52::12”,“5:13::23”,“6:50::40”,“5:14::38”,“6:49::08”,“5:15::53”,“6:47::36”,“5:17::08”,
“6:46::04”,“5:18::23”
‘
‘    day 55-60  #10
DATA “6:44::32”,“5:19::38”,“6:42::59”,“5:20::53”,“6:41::27”,“5:22::09”,“6:39::55”,“5:23::24”,“6:38::23”,“5:24::31”,
“6:36::51”,“5:25::39”
‘
‘    day 61-66  #11 Month 3
DATA “6:35::19”,“5:26::49”,“6:33::47”,“5:27::54”,“6:32::15”,“5:29::02”,“6:30::42”,“5:30::09”,“6:29::10”,“5:31::18”,
“6:27::38”,“5:32::25”
‘
‘    day 67-72  #12
DATA “6:26::06”,“5:33::33”,“6:24::34”,“5:34::41”,“6:23::02”,“5:35::48”,“6:21::30”,“5:36::56”,“6:19::57”,“5:38::03”,
“6:18::25”,“5:39::12”
‘
‘    day 73-78  #13
DATA “6:16::53”,“5:40::19”,“6:15::21”,“5:41::27”,“6:13::49”,“5:42::34”,“6:12::17”,“5:43::42”,“6:10::45”,“5:44::50”,
“6:09::12”,“5:45::57”
‘
‘    day 79-84  #14
DATA “6:07::40”,“5:47::06”,“6:06::08”,“5:48::13”,“6:04::36”,“5:49::21”,“6:03::04”,“5:50::29”,“6:01::32”,“5:51::36”,
“5:59::49”,“5:52::44”
‘
‘    day 85-90  #15
DATA “5:58::06”,“5:53::52”,“5:56::23”,“5:54::59”,“5:54::40”,“5:56::02”,“5:52::57”,“5:57::04”,“5:51::15”,“5:58::06”,
“5:49::32”,“5:59::09”
‘
‘    day 91-96  #16 Month 4
DATA “5:47::49”,“6:00::11”,“5:46::06”,“6:01::13”,“5:44::23”,“6:02::16”,“5:42::40”,“6:03::18”,“5:39::15”,“6:04::20”,
“5:37::32”,“6:05::22”
‘
‘    day 97-102  #17
DATA “5:35::49”,“6:06::24”,“5:34::06”,“6:07::27”,“5:32::23”,“6:08::29”,“5:30::40”,“6:09::32”,“5:28::57”,“6:10::33”,
“5:27::15”,“6:11::36”
‘
‘    day 103-108  #18
DATA “5:25::32”,“6:12::38”,“5:23::49”,“6:13::40”,“5:22::06”,“6:14::43”,“5:20::23”,“6:15::45”,“5:18::40”,“6:16::48”,
“5:16::57”,“6:17::50”
‘
‘    day 109-114  #19
DATA “5:15::15”,“6:18::52”,“5:13::32”,“6:19::54”,“5:11:49”,“6:20::56”,“5:10::06”,“6:21::59”,“5:08::23”,“6:23::01”,
“5:06::40”,“6:24::03”
‘
‘    day 115-120  #20
DATA “5:04::57”,“6:25::06”,“5:03::15”,“6:26::08”,“5:01::32”,“6:27::10”,“5:00::47”,“6:28::15”,“5:00::03”,“6:29::19”,
“4:59::19”,“6:30::23”
‘
‘    day 121-126  #21   Month 5
DATA “4:58::34”,“6:31::27”,“4:57::50”,“6:32::31”,“4:57::06”,“6:33::36”,“4:56::21”,“6:34::40”,“4:55::37”,“6:35::44”,
“4:54::53”,“6:36::49”
‘
‘    day 127-132  #22
DATA “4:54::08”,“6:37::53”,“4:53::24”,“6:38::57”,“4:52::40”,“6:40::02”,“4:51::55”,“6:41::06”,“4:51::11”,“6:42::10”,
“4:50::27”,“6:43::14”
‘
‘    day 133-138  #23
DATA “4:49::42”,“6:44::19”,“4:48::58”,“6:45::23”,“4:48::14”,“6:46::28”,“4:47::29”,“6:47::32”,“4:46::45”,“6:48::36”,
“4:46::01”,“6:49::40”
‘
‘    day 139-144  #24
DATA “4:45::16”,“6:50::45”,“4:44::32”,“6:51::48”,“4:43::48”,“6:52::53”,“4:43::03”,“6:53::57”,“4:42::19”,“6:55::02”,
“4:41::35”,“6:56::06”
‘
‘    day 145-150  #25
DATA “4:40::51”,“6:57::10”,“4:40::06”,“6:58::15”,“4:39::22”,“6:59::19”,“4:38::38”,“7:00::23”,“4:37::53”,“7:01::27”,
“4:37::38”,“7:02::21”
‘
‘    day 151-156  #26   Month 6
DATA “4:37::23”,“7:03::15”,“4:37::08”,“7:04::08”,“4:36::54”,“7:05::02”,“4:36::39”,“7:05::55”,“4:36::24”,“7:06::48”,
“4:36::09”,“7:07::42”
‘
‘    day 157-162  #27
DATA “4:35::55”,“7:08::36”,“4:35::40”,“7:09::29”,“4:35::25”,“7:10::23”,“4:35::10”,“7:11:16”,“4:34::56”,“7:12::10”,
“4:34::41”,“7:13::03”
‘
‘    day 163-168  #28
DATA “4:34::26”,“7:13::56”,“4:34::11”,“7:14::50”,“4:33::56”,“715::43”,“4:33::42”,“7:16::37”,“4:33::27”,“7:17::30”,
“4:33::12”,“7:18::24”
‘
‘    day 169-174  #29
DATA “4:32::57”,“7:19::18”,“4:32::43”,“7:20::11”,“4:32::28”,“7:21::05”,“4:32::13”,“7:21::58”,“4:31::59”,“7:22::52”,
“4:31::44”,“7:23::45”
‘
‘    day 175-180  #30
DATA “4:31::29”,“7:24::38”,“4:31::14”,“7:25::32”,“4:31::00”,“7:26::25”,“4:30::45”,“7:27::19”,“4:30::30”,“7:28::12”,
“4:30::15”,“7:29::06”
‘
‘    day 181-186  #31   Lithe 1-3 and Month 7
999 DATA “4:30::06”,“7:29::59”,“4:30::00”,“7:30::00”,“4:30::27”,“7:29::54”,“4:30::55”,“7:29::47”,“4:31::23”,“7:29::41”,
“4:31::51”,“7:29::34”
‘
‘    day 187-192  #32
DATA “4:32::19”,“7:29::28”,“4:32::47”,“7:29::21”,“4:33::15”,“7:29::15”,“4:33::42”,“7:29::09”,“4:34::10”,“7:29::02”,
“4:34::38”,“7:28::56”
‘
‘    day 193-198  #33
DATA “4:35::06”,“7:28::49”,“4:35::34”,“7:28::43”,“4:36::02”,“7:28::36”,“4:36::30”,“7:28::30”,“4:36::57”,“7:28::24”,
“4:37::25”,“7:28::17”
‘
‘    day 199-204  #34
DATA “4:37::53”,“7:28::11”,“4:38::21”,“7:28::04”,“4:38::49”,“7:27::58”,“4:39::17”,“7:28::51”,“4:39::45”,“7:28::45”,
“4:40::45”,“7:28::39”
‘
‘    day 205-210  #35
DATA “4:41::45”,“7:27::38”,“4:42::45”,“7:26::30”,“4:43::45”,“7:25::58”,“4:44::45”,“7:24::05”,“4:45::45”,“7:22::56”,
“4:46::45”,“7:21::48”
‘
‘    day 211-216  #36 Month 8
DATA “4:47::45”,“7:20::39”,“4:48::45”,“7:19::30”,“4:49::45”,“7:18::21”,“4:50::45”,“7:17::13”,“4:51::45”,“7:16::05”,
“4:52::45”,“7:14::56”
‘
‘    day 217-222  #37
DATA “4:53::45”,“7:13::48”,“4:54::45”,“7:12::39”,“4:55::45”,“7:11::30”,“4:56::45”,“7:10::21”,“4:57::45”,“7:09::13”,
“4:58::45”,“7:08::05”
‘
‘    day 223-228  #38
DATA “4:59::45”,“7:06::56”,“5:00::45”,“7:05::48”,“5:01::45”,“7:04::39”,“5:02::45”,“7:03::30”,“5:03::45”,“7:02::21”,
“5:04::45”,“7:01::13”
‘
‘    day 229-234  #39
DATA “5:05::45”,“7:00::05”,“5:06::45”,“6:58::56”,“5:07::45”,“6:57::48”,“5:08::45”,“6:56::38”,“5:09::45”,“6:55::30”,
“5:10::45”,“6:54::21”
‘
‘    day 235-240  #40
DATA “5:11::45”,“6:53::13”,“5:12::45”,“6:52::05”,“5:13::53”,“6:50::24”,“5:15::02”,“6:48::43”,“5:16::10”,“6:47::03”,
“5:17::19”,“6:45::22”
‘
‘    day 241-246  #41 Month 9
DATA “5:18::27”,“6:43::41”,“5:19::36”,“6:42::01”,“5:20::45”,“6:40::19”,“5:21::53”,“6:38::39”,“5:23::2”,“6:36::59”,
“5:24::10”,“6:35::18”
‘
‘    day 247-252  #42
DATA “5:25::19”,“6:33::37”,“5:26::27”,“6:31::56”,“5:27::36”,“6:30::16”,“5:28::45”,“6:28::34”,“5:29::53”,“6:26::54”,
“5:31::02”,“6:25::14”
‘
‘    day 253-258  #43
DATA “5:32::10”,“6:23::33”,“5:33::19”,“6:21::52”,“5:34::27”,“6:20::11”,“5:35::36”,“6:18::30”,“5:36::45”,“6:16::50”,
“5:37::53”,“6:15::09”
‘
‘    day 259-264  #44
DATA “5:39::02”,“6:13::29”,“5:40::10”,“6:11::48”,“5:41::19”,“6:10::07”,“5:42::27”,“6:08::26”,“5:43::36”,“6:06::45”,
“5:44::45”,“6:05::05”
‘
‘    day 265-270  #45
DATA “5:45::53”,“6:03::24”,“5:47::02”,“6:01::43”,“5:48::10”,“6:00::03”,“5:49::15”,“5:58::22”,“5:50::19”,“5:56::37”,
“5:51::23”,“5:54::52”
‘
‘    day 271-276  #46 Month 10
DATA “5:52::27”,“5:53::07”,“5:53::32”,“5:51::22”,“5:54::36”,“5:49::37”,“5:55::40”,“5:47::52”,“5:56::45”,“5:46::07”,
“5:57::49”,“5:44::22”
‘
‘    day 277-282  #47
DATA “5:58::53”,“5:42::37”,“5:59::57”,“5:40::52”,“6:01::02”,“5:39::07”,“6:02::06”,“5:37::22”,“6:03::10”,“5:35::37”,
“6:04::14”,“5:33::52”
‘
‘    day 283-288  #48
DATA “6:05::19”,“5:32::07”,“6:06::23”,“5:30::22”,“6:07::27”,“5:28::37”,“6:08::32”,“5:26::52”,“6:09::36”,“5:25::07”,
“6:10::40”,“5:23::22”
‘
‘    day 289-294  #49
DATA “6:11::44”,“5:21::37”,“6:12::49”,“5:19::52”,“6:13::53”,“5:18::07”,“6:14::57”,“5:16::22”,“6:16::02”,“5:14::37”,
“6:17::06”,“5:12::52”
‘
‘    day 295-300  #50
DATA “6:18::10”,“5:11::07”,“6:19::15”,“5:09::22”,“6:20::19”,“5:07::37”,“6:21::23”,“5:05::52”,“6:22::36”,“5:04::07”,
“6:23::49”,“5:02::22”
‘
‘    day 301-306  #51 Month 11
DATA “6:25::02”,“5:01::14”,“6:26::15”,“5:00::05”,“6:27::27”,“4:58::56”,“6:28::40”,“4:57::48”,“6:29::53”,“4:56::39”,
“6:31::06”,“4:55::30”
‘
‘    day 307-312  #52
DATA “6:32::19”,“4:54::22”,“6:33::32”,“4:53::14”,“6:34::45”,“4:52::05”,“6:35::57”,“4:50::57”,“6:37::10”,“4:49::48”,
“6:38::23”,“4:48::39”
‘
‘    day 313-318  #53
DATA “6:39::36”,“4:47::31”,“6:40::49”,“4:46::22”,“6:42::02”,“4:45::14”,“6:43::15”,“4:44::06”,“6:44::27”,“4:42::57”,
“6:45::40”,“4:41::48”
‘
‘    day 319-324  #54
DATA “6:46::53”,“4:40::39”,“6:48::06”,“4:39::31”,“6:49::19”,“4:38::23”,“6:50::32”,“4:37::14”,“6:51::45”,“4:36::06”,
“6:52::57”,“4:34::57”
‘
‘    day 325-330  #55
DATA “6:54::10”,“4:33::48”,“6:55::23”,“4:32::40”,“6:56::36”,“4:31::32”,“6:57::47”,“4:30::23”,“6:58::57”,“4:29::14”,
“7:00::08”,“4:28::06”
‘
‘    day 331-336  #56
DATA “7:01::19”,“4:26::57”,“7:02::29”,“4:25::48”,“7:03::40”,“4:24::40”,“7:04::51”,“4:24::31”,“7:06::02”,“4:24::21”,
“7:07::12”,“4:24::12”
‘
‘    day 337-342  #57
DATA “7:08::23”,“4:24::03”,“7:09::34”,“4:23::53”,“7:10::44”,“4:23::45”,“7:11::55”,“4:23::35”,“7:13::06”,“4:23::25”,
“7:14::17”,“4:23::16”
‘
‘    day 343-348  #58
DATA “7:15::27”,“4:23::07”,“7:16::38”,“4:22::57”,“7:17::19”,“4:22::48”,“7:18::59”,“4:22::39”,“7:20::10”,“4:22::30”,
“7:21::21”,“4:22::21”
‘
‘    day 349-354  #59
DATA “7:22::32”,“4:22::11”,“7:23::42”,“4:22::02”,“7:24::53”,“4:21::52”,“7:26::04”,“4:21::43”,“7:27::14”,“4:21::34”,
“7:28::25”,“4:21::25”
‘
‘    day 355-360  #60
DATA “7:29::36”,“4:21::15”,“7:29::40”,“4:21::06”,“7:29::44”,“4:20::57”,“7:29::49”,“4:20::47”,“7:29::53”,“4:20::38”,
“7:29::57”,“4:20::29”
‘
‘    day 361-366  #61 Month 12 and Yule 1-3
DATA “7:30::02”,“4:20::19”,“7:30::06”,“4:20::10”,“7:30::10”,“4:20::05”,“7:30::14”,“4:20::00”,“7:30::19”,“4:20::53”,
“7:30::21”,“4:21::28”
‘
‘           moon rise and set generation subroutine
Moon:
‘
‘ Lunar data for my game planet
‘
  IF AGE% = 11 THEN
    PRINT “Loading and generating moon rise and set times (This will take awhile !)” : PRINT
‘
    IF (YEAR% = 69 OR YEAR% = 140 OR YEAR% = 211 OR YEAR% = 282 OR YEAR% = 353 OR YEAR% = 424 OR YEAR% = 495 OR YEAR% = 566) THEN
       MM = 27 : HH = 10
    ELSEIF (YEAR% = 70 OR YEAR% = 141 OR YEAR% = 212 OR YEAR% = 283 OR YEAR% = 354 OR YEAR% = 425 OR YEAR% = 496 OR YEAR% = 567) THEN
       MM = 15 : HH = 9
    ELSEIF (YEAR% = 71 OR YEAR% = 142 OR YEAR% = 213 OR YEAR% = 284 OR YEAR% = 355 OR YEAR% = 426 OR YEAR% = 497 OR YEAR% = 568) THEN
       MM = 9 : HH = 8
    ELSEIF (YEAR% = 1 OR YEAR% = 72 OR YEAR% = 143 OR YEAR% = 214 OR YEAR% = 285 OR YEAR% = 356 OR YEAR% = 427 OR YEAR% = 498 OR YEAR% = 569) THEN
       MM = 3 : HH = 7
    ELSEIF (YEAR% = 2 OR YEAR% = 73 OR YEAR% = 144 OR YEAR% = 215 OR YEAR% = 286 OR YEAR% = 357 OR YEAR% = 428 OR YEAR% = 499 OR YEAR% = 570)THEN
       MM = 57 : HH = 6
    ELSEIF (YEAR% = 3 OR YEAR% = 74 OR YEAR% = 145 OR YEAR% = 216 OR YEAR% = 287 OR YEAR% = 358 OR YEAR% = 429 OR YEAR% = 500 OR YEAR% = 571) THEN
       MM = 51 : HH = 5
    ELSEIF (YEAR% = 4 OR YEAR% = 75 OR YEAR% = 146 OR YEAR% = 217 OR YEAR% = 288 OR YEAR% = 359 OR YEAR% = 430 OR YEAR% = 501 OR YEAR% = 572) THEN
       MM = 45 : HH = 4
    ELSEIF (YEAR% = 5 OR YEAR% = 76 OR YEAR% = 147 OR YEAR% = 218 OR YEAR% = 289 OR YEAR% = 360 OR YEAR% = 431 OR YEAR% = 502 OR YEAR% = 573) THEN
       MM = 39 : HH = 3
    ELSEIF (YEAR% = 6 OR YEAR% = 77 OR YEAR% = 148 OR YEAR% = 219 OR YEAR% = 290 OR YEAR% = 361 OR YEAR% = 432 OR YEAR% = 503 OR YEAR% = 574) THEN
       MM = 33 : HH = 2
    ELSEIF (YEAR% = 7 OR YEAR% = 78 OR YEAR% = 149 OR YEAR% = 220 OR YEAR% = 291 OR YEAR% = 362 OR YEAR% = 433 OR YEAR% = 504 OR YEAR% = 575) THEN
       MM = 27 : HH = 1
    ELSEIF (YEAR% = 8 OR YEAR% = 79 OR YEAR% = 150 OR YEAR% = 221 OR YEAR% = 292 OR YEAR% = 363 OR YEAR% = 434 OR YEAR% = 505 OR YEAR% = 576) THEN
       MM = 21 : HH = 0
    ELSEIF (YEAR% = 9 OR YEAR% = 80 OR YEAR% = 151 OR YEAR% = 222 OR YEAR% = 293 OR YEAR% = 364 OR YEAR% = 435 OR YEAR% = 506 OR YEAR% = 577) THEN
       MM = 15 : HH = 23
    ELSEIF (YEAR% = 10 OR YEAR% = 81 OR YEAR% = 152 OR YEAR% = 223 OR YEAR% = 294 OR YEAR% = 365 OR YEAR% = 436 OR YEAR% = 507 OR YEAR% = 578)THEN
       MM = 9 : HH = 22
    ELSEIF (YEAR% = 11 OR YEAR% = 82 OR YEAR% = 153 OR YEAR% = 224 OR YEAR% = 295 OR YEAR% = 366 OR YEAR% = 437 OR YEAR% = 508 OR YEAR% = 579)THEN
       MM = 3 : HH = 21
    ELSEIF (YEAR% = 12 OR YEAR% = 83 OR YEAR% = 154 OR YEAR% = 225 OR YEAR% = 296 OR YEAR% = 367 OR YEAR% = 438 OR YEAR% = 509 OR YEAR% = 580) THEN
       MM = 57 : HH = 20
    ELSEIF (YEAR% = 13 OR YEAR% = 84 OR YEAR% = 155 OR YEAR% = 226 OR YEAR% = 297 OR YEAR% = 368 OR YEAR% = 439 OR YEAR% = 510 OR YEAR% = 581) THEN
       MM = 51 : HH = 19
    ELSEIF (YEAR% = 14 OR YEAR% = 85 OR YEAR% = 156 OR YEAR% = 227 OR YEAR% = 298 OR YEAR% = 369 OR YEAR% = 440 OR YEAR% = 511 OR YEAR% = 582) THEN
       MM = 45 : HH = 18
    ELSEIF (YEAR% = 15 OR YEAR% = 86 OR YEAR% = 157 OR YEAR% = 228 OR YEAR% = 299 OR YEAR% = 370 OR YEAR% = 441 OR YEAR% = 512 OR YEAR% = 583) THEN
       MM = 39 : HH = 17
    ELSEIF (YEAR% = 16 OR YEAR% = 87 OR YEAR% = 158 OR YEAR% = 229 OR YEAR% = 300 OR YEAR% = 371 OR YEAR% = 442 OR YEAR% = 513 OR YEAR% = 584) THEN
       MM = 33 : HH = 16
    ELSEIF (YEAR% = 17 OR YEAR% = 88 OR YEAR% = 159 OR YEAR% = 230 OR YEAR% = 301 OR YEAR% = 372 OR YEAR% = 443 OR YEAR% = 514 OR YEAR% = 585) THEN
       MM = 27 : HH = 15
    ELSEIF (YEAR% = 18 OR YEAR% = 89 OR YEAR% = 160 OR YEAR% = 231 OR YEAR% = 302 OR YEAR% = 373 OR YEAR% = 444 OR YEAR% = 515 OR YEAR% = 586) THEN
       MM = 21 : HH = 14
    ELSEIF (YEAR% = 19 OR YEAR% = 90 OR YEAR% = 161 OR YEAR% = 232 OR YEAR% = 303 OR YEAR% = 374 OR YEAR% = 445 OR YEAR% = 516 OR YEAR% = 587) THEN
       MM = 15 : HH = 13
    ELSEIF (YEAR% = 20 OR YEAR% = 91 OR YEAR% = 162 OR YEAR% = 233 OR YEAR% = 304 OR YEAR% = 375 OR YEAR% = 446 OR YEAR% = 517 OR YEAR% = 588) THEN
       MM = 9 : HH = 12
    ELSEIF (YEAR% = 21 OR YEAR% = 92 OR YEAR% = 163 OR YEAR% = 234 OR YEAR% = 305 OR YEAR% = 376 OR YEAR% = 447 OR YEAR% = 518 OR YEAR% = 589) THEN
       MM = 3 : HH = 11
    ELSEIF (YEAR% = 22 OR YEAR% = 93 OR YEAR% = 164 OR YEAR% = 235 OR YEAR% = 306 OR YEAR% = 377 OR YEAR% = 448 OR YEAR% = 519 OR YEAR% = 590) THEN
       MM = 57 : HH = 10
    ELSEIF (YEAR% = 23 OR YEAR% = 94 OR YEAR% = 165 OR YEAR% = 236 OR YEAR% = 307 OR YEAR% = 378 OR YEAR% = 449 OR YEAR% = 520 OR YEAR% = 591) THEN
       MM = 51 : HH = 9
    ELSEIF (YEAR% = 24 OR YEAR% = 95 OR YEAR% = 166 OR YEAR% = 237 OR YEAR% = 308 OR YEAR% = 379 OR YEAR% = 450 OR YEAR% = 521 OR YEAR% = 592) THEN
       MM = 45 : HH = 8
    ELSEIF (YEAR% = 25 OR YEAR% = 96 OR YEAR% = 167 OR YEAR% = 238 OR YEAR% = 309 OR YEAR% = 380 OR YEAR% = 451 OR YEAR% = 522 OR YEAR% = 593) THEN
       MM = 39 : HH = 7
    ELSEIF (YEAR% = 26 OR YEAR% = 97 OR YEAR% = 168 OR YEAR% = 239 OR YEAR% = 310 OR YEAR% = 381 OR YEAR% = 452 OR YEAR% = 523 OR YEAR% = 594) THEN
       MM = 33 : HH = 6
    ELSEIF (YEAR% = 27 OR YEAR% = 98 OR YEAR% = 169 OR YEAR% = 240 OR YEAR% = 311 OR YEAR% = 382 OR YEAR% = 453 OR YEAR% = 524 OR YEAR% = 595) THEN
       MM = 27 : HH = 5
    ELSEIF (YEAR% = 28 OR YEAR% = 99 OR YEAR% = 170 OR YEAR% = 241 OR YEAR% = 312 OR YEAR% = 383 OR YEAR% = 454 OR YEAR% = 525 OR YEAR% = 596) THEN
       MM = 21 : HH = 4
    ELSEIF (YEAR% = 29 OR YEAR% = 100 OR YEAR% = 171 OR YEAR% = 242 OR YEAR% = 313 OR YEAR% = 384 OR YEAR% = 455 OR YEAR% = 526 OR YEAR% = 597) THEN
       MM = 15 : HH = 3
    ELSEIF (YEAR% = 30 OR YEAR% = 101 OR YEAR% = 173 OR YEAR% = 243 OR YEAR% = 314 OR YEAR% = 385 OR YEAR% = 456 OR YEAR% = 527 OR YEAR% = 598) THEN
       MM = 9 : HH = 2
    ELSEIF (YEAR% = 31 OR YEAR% = 102 OR YEAR% = 174 OR YEAR% = 244 OR YEAR% = 315 OR YEAR% = 386 OR YEAR% = 457 OR YEAR% = 528 OR YEAR% = 599) THEN
       MM = 3 : HH = 1
    ELSEIF (YEAR% = 32 OR YEAR% = 103 OR YEAR% = 175 OR YEAR% = 245 OR YEAR% = 316 OR YEAR% = 387 OR YEAR% = 458 OR YEAR% = 529 OR YEAR% = 600) THEN
       MM = 57 : HH = 0
    ELSEIF (YEAR% = 33 OR YEAR% = 104 OR YEAR% = 176 OR YEAR% = 246 OR YEAR% = 317 OR YEAR% = 388 OR YEAR% = 459 OR YEAR% = 530) THEN
       MM = 51 : HH = 23
    ELSEIF (YEAR% = 34 OR YEAR% = 105 OR YEAR% = 177 OR YEAR% = 247 OR YEAR% = 318 OR YEAR% = 389 OR YEAR% = 460 OR YEAR% = 531) THEN
       MM = 45 : HH = 22
    ELSEIF (YEAR% = 35 OR YEAR% = 106 OR YEAR% = 178 OR YEAR% = 248 OR YEAR% = 319 OR YEAR% = 390 OR YEAR% = 461 OR YEAR% = 531) THEN
       MM = 39 : HH = 21
    ELSEIF (YEAR% = 36 OR YEAR% = 107 OR YEAR% = 179 OR YEAR% = 249 OR YEAR% = 320 OR YEAR% = 391 OR YEAR% = 462 OR YEAR% = 532) THEN
       MM = 33 : HH = 20
    ELSEIF (YEAR% = 37 OR YEAR% = 108 OR YEAR% = 180 OR YEAR% = 250 OR YEAR% = 321 OR YEAR% = 392 OR YEAR% = 463 OR YEAR% = 533) THEN
       MM = 27 : HH = 19
    ELSEIF (YEAR% = 38 OR YEAR% = 109 OR YEAR% = 181 OR YEAR% = 251 OR YEAR% = 322 OR YEAR% = 393 OR YEAR% = 464 OR YEAR% = 534) THEN
       MM = 21 : HH = 18
    ELSEIF (YEAR% = 39 OR YEAR% = 110 OR YEAR% = 182 OR YEAR% = 252 OR YEAR% = 323 OR YEAR% = 394 OR YEAR% = 465 OR YEAR% = 535) THEN
       MM = 15 : HH = 17
    ELSEIF (YEAR% = 40 OR YEAR% = 111 OR YEAR% = 183 OR YEAR% = 253 OR YEAR% = 324 OR YEAR% = 395 OR YEAR% = 466 OR YEAR% = 536) THEN
       MM = 9 : HH = 16
    ELSEIF (YEAR% = 41 OR YEAR% = 112 OR YEAR% = 184 OR YEAR% = 254 OR YEAR% = 325 OR YEAR% = 396 OR YEAR% = 467 OR YEAR% = 537) THEN
       MM = 3 : HH = 15
    ELSEIF (YEAR% = 42 OR YEAR% = 113 OR YEAR% = 185 OR YEAR% = 255 OR YEAR% = 326 OR YEAR% = 397 OR YEAR% = 468 OR YEAR% = 538) THEN
       MM = 57 : HH = 14
    ELSEIF (YEAR% = 43 OR YEAR% = 114 OR YEAR% = 186 OR YEAR% = 256 OR YEAR% = 327 OR YEAR% = 398 OR YEAR% = 469 OR YEAR% = 539) THEN
       MM = 51 : HH = 13
    ELSEIF (YEAR% = 44 OR YEAR% = 115 OR YEAR% = 187 OR YEAR% = 257 OR YEAR% = 328 OR YEAR% = 399 OR YEAR% = 470 OR YEAR% = 540) THEN
       MM = 45 : HH = 12
    ELSEIF (YEAR% = 45 OR YEAR% = 116 OR YEAR% = 188 OR YEAR% = 258 OR YEAR% = 329 OR YEAR% = 400 OR YEAR% = 471 OR YEAR% = 541) THEN
       MM = 39 : HH = 11
    ELSEIF (YEAR% = 46 OR YEAR% = 117 OR YEAR% = 189 OR YEAR% = 259 OR YEAR% = 330 OR YEAR% = 401 OR YEAR% = 472 OR YEAR% = 542) THEN
       MM = 33 : HH = 10
    ELSEIF (YEAR% = 47 OR YEAR% = 118 OR YEAR% = 190 OR YEAR% = 260 OR YEAR% = 331 OR YEAR% = 402 OR YEAR% = 473 OR YEAR% = 543) THEN
       MM = 27 : HH = 9
    ELSEIF (YEAR% = 48 OR YEAR% = 119 OR YEAR% = 191 OR YEAR% = 261 OR YEAR% = 332 OR YEAR% = 403 OR YEAR% = 474 OR YEAR% = 544) THEN
       MM = 21 : HH = 8
    ELSEIF (YEAR% = 49 OR YEAR% = 120 OR YEAR% = 192 OR YEAR% = 262 OR YEAR% = 333 OR YEAR% = 404 OR YEAR% = 475 OR YEAR% = 545) THEN
       MM = 15 : HH = 7
    ELSEIF (YEAR% = 50 OR YEAR% = 121 OR YEAR% = 193 OR YEAR% = 263 OR YEAR% = 334 OR YEAR% = 405 OR YEAR% = 476 OR YEAR% = 546) THEN
       MM = 9 : HH = 6
    ELSEIF (YEAR% = 51 OR YEAR% = 122 OR YEAR% = 194 OR YEAR% = 264 OR YEAR% = 335 OR YEAR% = 406 OR YEAR% = 477 OR YEAR% = 547) THEN
       MM = 3 : HH = 5
    ELSEIF (YEAR% = 52 OR YEAR% = 123 OR YEAR% = 195 OR YEAR% = 265 OR YEAR% = 336 OR YEAR% = 407 OR YEAR% = 478 OR YEAR% = 548) THEN
       MM = 57 : HH = 4
    ELSEIF (YEAR% = 53 OR YEAR% = 124 OR YEAR% = 196 OR YEAR% = 266 OR YEAR% = 337 OR YEAR% = 408 OR YEAR% = 479 OR YEAR% = 549) THEN
       MM = 51 : HH = 3
    ELSEIF (YEAR% = 54 OR YEAR% = 125 OR YEAR% = 197 OR YEAR% = 267 OR YEAR% = 338 OR YEAR% = 409 OR YEAR% = 480 OR YEAR% = 550) THEN
       MM = 45 : HH = 2
    ELSEIF (YEAR% = 55 OR YEAR% = 126 OR YEAR% = 198 OR YEAR% = 268 OR YEAR% = 339 OR YEAR% = 410 OR YEAR% = 481 OR YEAR% = 551) THEN
       MM = 39 : HH = 1
    ELSEIF (YEAR% = 56 OR YEAR% = 127 OR YEAR% = 199 OR YEAR% = 269 OR YEAR% = 340 OR YEAR% = 411 OR YEAR% = 482 OR YEAR% = 552) THEN
       MM = 33 : HH = 0
    ELSEIF (YEAR% = 57 OR YEAR% = 128 OR YEAR% = 200 OR YEAR% = 270 OR YEAR% = 341 OR YEAR% = 412 OR YEAR% = 483 OR YEAR% = 553) THEN
       MM = 27 : HH = 23
    ELSEIF (YEAR% = 58 OR YEAR% = 129 OR YEAR% = 201 OR YEAR% = 271 OR YEAR% = 342 OR YEAR% = 413 OR YEAR% = 484 OR YEAR% = 554) THEN
       MM = 21 : HH = 22
    ELSEIF (YEAR% = 59 OR YEAR% = 130 OR YEAR% = 202 OR YEAR% = 272 OR YEAR% = 343 OR YEAR% = 414 OR YEAR% = 485 OR YEAR% = 555) THEN
       MM = 15 : HH = 21
    ELSEIF (YEAR% = 60 OR YEAR% = 131 OR YEAR% = 203 OR YEAR% = 273 OR YEAR% = 344 OR YEAR% = 415 OR YEAR% = 486 OR YEAR% = 556) THEN
       MM = 9 : HH = 20
    ELSEIF (YEAR% = 61 OR YEAR% = 132 OR YEAR% = 204 OR YEAR% = 274 OR YEAR% = 345 OR YEAR% = 416 OR YEAR% = 487 OR YEAR% = 557) THEN
       MM = 3 : HH = 19
    ELSEIF (YEAR% = 62 OR YEAR% = 133 OR YEAR% = 205 OR YEAR% = 275 OR YEAR% = 346 OR YEAR% = 417 OR YEAR% = 488 OR YEAR% = 558) THEN
       MM = 57 : HH = 18
    ELSEIF (YEAR% = 63 OR YEAR% = 134 OR YEAR% = 206 OR YEAR% = 276 OR YEAR% = 347 OR YEAR% = 418 OR YEAR% = 489 OR YEAR% = 559) THEN
       MM = 51 : HH = 17
    ELSEIF (YEAR% = 64 OR YEAR% = 135 OR YEAR% = 207 OR YEAR% = 277 OR YEAR% = 348 OR YEAR% = 419 OR YEAR% = 490 OR YEAR% = 560) THEN
       MM = 45 : HH = 16
    ELSEIF (YEAR% = 65 OR YEAR% = 136 OR YEAR% = 208 OR YEAR% = 278 OR YEAR% = 349 OR YEAR% = 420 OR YEAR% = 491 OR YEAR% = 561) THEN
       MM = 39 : HH = 15
    ELSEIF (YEAR% = 66 OR YEAR% = 137 OR YEAR% = 209 OR YEAR% = 279 OR YEAR% = 350 OR YEAR% = 421 OR YEAR% = 492 OR YEAR% = 562) THEN
       MM = 33 : HH = 14
    ELSEIF (YEAR% = 67 OR YEAR% = 138 OR YEAR% = 210 OR YEAR% = 280 OR YEAR% = 351 OR YEAR% = 422 OR YEAR% = 493 OR YEAR% = 563) THEN
       MM = 27 : HH = 13
    ELSEIF (YEAR% = 68 OR YEAR% = 139 OR YEAR% = 211 OR YEAR% = 281 OR YEAR% = 352 OR YEAR% = 423 OR YEAR% = 494 OR YEAR% = 564) THEN
       MM = 21 : HH = 12
    END IF
‘
111   FOR AZS = 1 TO 366
 GOSUB Moonriseset
   Mnhr1%(AZS) = HH : Mnmn1%(AZS) = MM
 HH = HH + 10 : MM = MM + 5 : GOSUB Moonriseset
   Mnhr2%(AZS) = HH : Mnmn2%(AZS) = MM
 MM = MM + 6 : HH = HH + 15
      NEXT AZS
   END IF
   YR1% = YEAR%

GOTO METRIC

Moonriseset:
‘ IF MM >= 60 THEN HH = HH + 1 : MM = MM – 60 END IF IF HH >= 24 THEN HH = HH – 24 RETURN

TIMECLOCK: PRINT : PRINT TAB;TWN$;” , “;CNTRY$;” / “;DNGN$;” in the year “;YEAR%’;” Age “;AGE% PRINT : PRINT TAB;“Clock time =”;MNTH%;”/”;MND%;”(“;YRD%;”) time =”;HR%;”:”;MIN%;”::”;SCND% PRINT : PRINT “Elapsed time =”;ZF%;” years “;ZE%;” months “;ZD%;” days” PRINT : PRINT ZC%;” hours “;ZB%;” minutes “;ZA%;” seconds” : PRINT
RETURN

‘ Game clock
100 CLS PRINT : PRINT “ Game time” : PRINT PRINT “ 1. Seconds 2. Minutes 3. Hours” PRINT PRINT “ 4. Days 5. Months 6. Years” PRINT PRINT “ 7. No time after all” : PRINT
INPUT ZZ% IF ZZ% < 1 OR ZZ% > 7 GOTO 100 ON ZZ% GOTO 150,200,250,300,350,400,METRIC

150 CLS : INPUT “ Seconds input (0 thru 120) ? “,ZG% ZA% = ZA% + ZG% : SCND% = SCND% + ZG% : GOTO 500
200 CLS : INPUT “ Minutes input (0 thru 120) ? “,ZH% ZB% = ZB% + ZH% : MIN% = MIN% + ZH% : GOTO 500
250 CLS : INPUT “ Hours input (0 thru 48) ? “,ZI% ZC% = ZC% + ZI% : HR% = HR% + ZI% : GOTO 500
300 CLS : INPUT “ Days input (0 thru 60) ? “,ZJ% ZD% = ZD% + ZJ% : MND% = MND% + ZJ% : YRD% = YRD% + ZJ% : GOTO 500
350 CLS : INPUT “ Months input (0 thru 24) ? “,ZK% ZE% = ZE% + ZK% : MNTH% = MNTH% + ZK% : YRD% = YRD% + ZK% * 30 : GOTO 500
400 CLS : INPUT “ Years input (0 thru 50) ? “,ZL% ZF% = ZF% + ZL% : YEAR% = YEAR% + ZL%

500
‘ elapsed seconds

FOR GGG = 1 TO ZA%/60 IF ZA% >= 60 THEN ZB% = ZB% + 1 ZA% = ZA% – 60 END IF
NEXT GGG

‘ clock seconds

FOR GGG = 1 TO SCND%/60 IF SCND% >= 60 THEN MIN% = MIN% + 1 SCND% = SCND% – 60 END IF
NEXT GGG

‘ elapsed minutes

FOR GGG = 1 TO ZB%/60 IF ZB% >= 60 THEN ZC% = ZC% + 1 ZB% = ZB%- 60 END IF
NEXT GGG

‘ clock minutes

FOR GGG = 1 TO MIN%/60 IF MIN% >= 60 THEN HR% = HR% + 1 MIN% = MIN% – 60 END IF
NEXT GGG

‘ elapsed hours

FOR GGG = 1 TO ZC%/24 IF ZC% >= 24 THEN ZD% = ZD% + 1 ZC% = ZC% – 24 END IF
NEXT GGG

‘ clock hours

FOR GGG = 1 TO HR%/24 IF HR% >= 24 THEN MND% = MND% + 1 YRD% = YRD% + 1 HR% = HR% – 24 END IF
NEXT GGG

550
‘ elapsed days

FOR GGG = 1 TO ZD%/30 IF HR% > 30 THEN ZE% = ZE% + 1 ZD% = ZD% – 30 END IF
NEXT GGG

‘ clock days
FOR GGG = 1 TO MND%/30 IF MND% > 30 THEN MNTH% = MNTH% + 1 MND% = MND% – 30 END IF
NEXT GGG

‘ elapsed months
FOR GGG = 1 TO ZE%/12 IF ZE% > 12 THEN ZF% = ZF% + 1 ZE% = ZE% – 12 END IF
NEXT GGG

‘ clock months
FOR GGG = 1 TO MNTH%/12 IF MNTH% > 12 THEN YEAR% = YEAR% + 1 MNTH% = MNTH% – 12 END IF
NEXT GGG

IF YRD% >= 184 AND YRD% <= 363 AND ABONUS% = 0 THEN ABONUS% = 1 : MND% = MND% + 3
ELSEIF YRD% >= 364 AND YRD% <= 366 AND BBONUS% = 0 THEN BBONUS% = 1 : MND% = MND% + 3
END IF

IF YRD% >= 1 AND YRD% <= 30 THEN MNTH% = 1
IF YRD% >= 31 AND YRD% <= 60 THEN MNTH% = 2
IF YRD% >= 61 AND YRD% <= 90 THEN MNTH% = 3
IF YRD% >= 91 AND YRD% <= 120 THEN MNTH% = 4
IF YRD% >= 121 AND YRD% <= 150 THEN MNTH% = 5
IF YRD% >= 151 AND YRD% <= 180 THEN MNTH% = 6
IF YRD% >= 184 AND YRD% <= 213 THEN MNTH% = 7
IF YRD% >= 214 AND YRD% <= 243 THEN MNTH% = 8
IF YRD% >= 244 AND YRD% <= 270 THEN MNTH% = 9
IF YRD% >= 274 AND YRD% <= 303 THEN MNTH% = 10
IF YRD% >= 304 AND YRD% <= 333 THEN MNTH% = 11
IF YRD% >= 334 AND YRD% <= 363 THEN MNTH% = 12

IF YRD% > 366 THEN YRD% = YRD% – 366 : YEAR% = YEAR% + 1
END IF

IF YEAR% > YR2% THEN YRD% = YRD% – 366
RETURN

‘ Main menu
METRIC:

IF YR1% <> YEAR% THEN Moon

CLS :PRINT ,,” It’s game time folks !” : PRINT : PRINT TWN$;” ; “;CNTRY$ ,DNGN$;”(dungeon) Year “;YEAR%;” Age”;AGE% : PRINT
‘ IF HR% <= 12 THEN IF (YRD% > 0 AND YRD% < 181 OR YRD% > 183 AND YRD% < 364) THEN PRINT “CLOCK Date=”,MNTH%;”/”;MND%;”(“;YRD%;”) time=”;HR%”:“MIN%”::“SCND%; ELSEIF YRD% >= 181 AND YRD% <= 183 THEN PRINT “CLOCK Date= Lithe /(“;YRD%;”) time=”;HR%;”:”;MIN%;”::”;SCND%; ELSEIF YRD% >= 364 AND YRD% <= 366 THEN PRINT “CLOCK Date= Yule /(“;YRD%;”) time=”;HR%;”:”;MIN%;”::”;SCND%; END IF END IF
‘ IF HR% > 12 THEN IF (YRD% > 0 AND YRD% < 181 OR YRD% > 183 AND YRD% < 364) THEN PRINT “CLOCK Date= “,MNTH%”/“MND%;”(“;YRD%;”) time=”;HR%-12”:“MIN%”::“SCND%; ELSEIF YRD% >= 181 AND YRD% <= 183 THEN PRINT “CLOCK Date= Lithe /(“;YRD%;”) time= “;HR%-12;”:”;MIN%;”::”;SCND%; ELSEIF YRD% >= 364 AND YRD% <= 366 THEN PRINT “CLOCK Date= Yule /(“;YRD%;”) time= “;HR%-12;”:”;MIN%;”::”;SCND%; END IF END IF

IF HR% < 12 THEN PRINT ACK$
ELSE PRINT PCK$
END IF
LINE (0,43)-(639,45),2,BF

PRINT : PRINT “ELAPSED time”,ZF%;“year[s]”,ZE%;“month[s]”,ZD%;“day[s]”
PRINT : PRINT ZC%;“hour[s]”,ZB%;“minute[s]”,ZA%;“second[s]”
LINE (0,73)-(639,75),3,BF
PRINT : PRINT “Moon “;Mnhr1%(YRD%);”:”;Mnmn1%(YRD%); IF Mnhr1%(YRD%) < 12 THEN PRINT ACK$; IF Mnhr1%(YRD%) >= 12 THEN PRINT PCK$;
PRINT W$;Mnhr2%(YRD%);”:“Mnmn2%(YRD%); IF Mnhr2%(YRD%) < 12 THEN PRINT ACK$; IF Mnhr2%(YRD%) >= 12 THEN PRINT PCK$;
PRINT X$ : PRINT
PRINT “SUN “;Sunrise$(YRD%);ACK$;W$;Sunset$(YRD%);PCK$;X$ : PRINT
PRINT , “ Select a number, type it, and press

PRINT : PRINT “1. Dice Generator 2. To hit tables”

PRINT : PRINT “3. Missile fire to hit table 4. Timer input ? “

PRINT : INPUT “5. Quit “,B%
‘ IF (B% < 1 OR B% > 5) GOTO METRIC
‘ IF B% = 5 THEN END
‘ ON B% GOSUB 50,HITTABLES,MISSILE,100
GOTO METRIC

‘ Dice Program
50 RANDOMIZE TIMER CLS : C# = 0 : CB# = 0 : GG& = 0 PRINTDICE GENERTOR [Maximum number of sides is 1 million]” PRINT ,,” [ (1 × 10+6) minimum is 0 ].” PRINT : PRINTHOW MANY SIDES?” INPUT AR#
‘ IF AR# > 1000000# THEN PRINT “ Too many sides. 1 million maximum.” FOR k = 1 TO 32765 : NEXT k END IF
‘ IF AR# > 1000000# GOTO 50 PRINT : INPUT “ Number of Dice ? “,BE# PRINT : INPUT “ Adds per die ? “,APD# PRINT : INPUT “ Adds for all dice ? “,AFAD# CLS : PRINT
WHILE (C# <> BE# OR C# < BE#) H# = INT + 1 + APD# PRINT H#;”+”; GG& = GG& + 1

‘ what follows are print statements to determine the
‘ quantity of numbers printed per screen line
‘ IF (GG& >= 19 AND AR# >= 1 AND AR# < 10) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 15 AND AR# >= 10 AND AR# < 100) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 12 AND AR# >= 100 AND AR# < 1000) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 10 AND AR# >= 1000 AND AR# < 10000) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 9 AND AR# >= 10000 AND AR# < 100000#) THEN PRINT : PRINT : GG& = 0 END IF
‘ IF (GG& >= 9 AND AR# >= 100000# AND AR# < 1000000# ) THEN PRINT : PRINT : GG& = 0 END IF

‘ IF (GG& >= 7 AND AR# = 1000000#) THEN IF (GG& >= 8 AND AR# = 1000000#) THEN PRINT : PRINT : GG& = 0 END IF
‘ C# = C# +1# : CB# = CB# + H# WEND
‘ CB# = CB# + AFAD# : PRINT
PRINT “ Total Roll =”;CB#;” ON “;BE#;“d”;AR# : PRINT PRINT “+”;APD#;” adds per die +”;AFAD#;” add for all dice” : PRINT

PRINT “ half of total = “;CB#/2;” 1/4 of total = “;CB#/4; “ 1/8 of total = “;CB#/8 INPUT “ Finished with the dice generator (y/n)? “,A$ IF UCASE$(A$) = “YES” OR UCASE$(A$) = “Y” THEN RETURN GOTO 50 ‘ MISSILETOHIT: PRINT : INPUT “Attacking what armor class (10 thru -15)? “,D% PRINT : INPUT “What table number (1 thru 16)? “,F% ‘ IF (F% < 1 OR F% > 16) THEN CLS : PRINT “There are only 16 combat tables ! Please try again !” : FOR ZZZ = 1 TO 32765 : NEXT ZZZ END IF ‘ IF (F% < 1 OR F% > 16) GOTO HITTABLES ‘ ON F% GOSUB TABLEA,TABLEB,TABLEC,TABLED,TABLEE,TABLEF,TABLEG,TABLEH,TABLEI,TABLEJ,TABLEK,TABLEL,TABLEM,TABLEN,TABLEP,TABLEQ RETURN ‘ ‘ Missile fire adds MISSILE: CLS : PRINT : PRINT “Missile fire adds (with automatic GOTO -> the hit tables)” : PRINT PRINT “ENTER NUMBERS ONLY ! Positive numbers should NOT use the plus sign !” : PRINT INPUT “ d20 roll (no adds; 1 thru 20) ? “,E% : PRINT INPUT “ Strength adds (-3 thru +6) ? “,ST% : PRINT INPUT “ Dexterity adds (-3 thru +3) ? “,DX% : PRINT INPUT “ Magic weapon adds (-3 thru +6) ? “,MW% : PRINT INPUT “ Magic arrows/bolts adds (-3 thru +6) ? “,MA% : PRINT INPUT “ Range adds (0 = short, -2 = medium, -5 = long) ? “,RG% : PRINT INPUT “ Wind adds (-6 thru 0) ? “,WND% : PRINT INPUT “ Firer movement adds (-5 thru +1) ? “,FMV% : PRINT INPUT “ Target movement adds (-5 thru 0) ? “,TMV% : PRINT INPUT “ Specialization add (0,+1,+3) ? “,SP% : PRINT INPUT “ Miscellaneous magic item add (Bracers of Archery,etc.) ? “,MMI% : PRINT INPUT “ Temperature add (-4 thru 0) ? “,TEMP% : PRINT E% = E% + ST% + DX% + MW% + RG% + WND% + FMV% + TMV% + MA% + SP% + MMI% + TEMP% GOSUB MISSILETOHIT RETURN ‘ ‘ Hit tables HITTABLES: CLSPRINT : PRINT ,,“Combat To hit tables.” PRINT : INPUT “What d20 roll was made ? “,E% PRINT : INPUT “Strength adds to the d20 ? (-3 thru +6) “, STRADDS% ‘ PRINT : INPUT “Dexterity Adds ? (-3 thru +6) “, DEXADDS% PRINT : INPUT “ Magic Weapon Adds ? (-3 thru +6) “, WEPADDS% PRINT : INPUT “ Specialization add ? “,SP% : PRINT PRINT : INPUT “ Special adds [ gnome vs. kobold, etc. ] “, SPECADDS% ‘ ‘ E% = E% + STRADDS% + DEXADDS% + WEPADDS% + SP% + SPECADDS% E% = E% + STRADDS% + WEPADDS% + SP% + SPECADDS% ‘ GOSUB MISSILETOHITHITORMISS: CLS : PRINT ‘ IF E% >= Z% THEN BEEP : BEEP : BEEP : PRINT, “hit !” ELSE PRINT ,“no hit .” END IF ‘ PRINT : PRINT “ to hit needed = “;Z%;” / actual d20 with adds = “;E%;” /.” PRINT : PRINT “ AC attacked = “;D%;” / TABLE used = “;F%;” / adds = “;ADDS%;” /” PRINT : PRINT need: PRINT “If you need more to hit, input Y; if you need the Menu, input N.” PRINT : INPUT A$ ‘ IF UCASE$(A$) = “Y” GOTO HITTABLES ‘ IF UCASE$(A$) = “N” THEN RETURN GOTO need ‘

‘ hit table data removed

GOTO HITORMISSEND

]]>