Advertisement
krusader74

OD&D character sheet in COBOL

Dec 19th, 2015
2,906
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 20.62 KB | None | 0 0
  1.       ******************************************************************
  2.       * Author: krusader74
  3.       * Date: 2015-12-15
  4.       * Purpose: D&D character sheet, original 1974 edition
  5.       * Tectonics: cobc
  6.       ******************************************************************
  7.        IDENTIFICATION DIVISION.
  8.       *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
  9.        PROGRAM-ID. ODDSHEET.
  10.        ENVIRONMENT DIVISION.
  11.       *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
  12.        CONFIGURATION SECTION.
  13.       *-----------------------
  14.        INPUT-OUTPUT SECTION.
  15.       *-----------------------
  16.        DATA DIVISION.
  17.       *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
  18.        FILE SECTION.
  19.       *-----------------------
  20.        WORKING-STORAGE SECTION.
  21.       *-----------------------
  22.        01 SPLASH-SCREEN.
  23.            02 SPLASH-SCREEN-DETAILS PIC X(80) OCCURS 24 TIMES.
  24.        01 PLAYER-NAME PIC X(20) VALUE SPACES.
  25.        01 CHAR-NAME PIC X(20) VALUE SPACES.
  26.        01 RACE PIC X(6) VALUE SPACES.
  27.            88 IS-HUMAN VALUES "HUMAN", "Human", "HU", "Hu", "H",
  28.                "human", "hu", "h".
  29.            88 IS-ELF VALUES "ELF", "Elf", "elf", "E", "e".
  30.            88 IS-DWARF VALUES "DWARF", "Dwarf", "dwarf", "D", "d".
  31.            88 IS-HOBBIT VALUES "HOBBIT", "Hobbit", "hobbit",
  32.                "HO", "Ho", "ho".
  33.        01 CLS PIC X(12) VALUE SPACES.
  34.            88 IS-F-M VALUES "FIGHTER", "Fighter", "fighter",
  35.                "FIGHTING-MAN", "Fighting-Man", "fighting-man",
  36.                "FIGHTING MAN", "Fighting Man", "fighting man",
  37.                "FM", "F", "f".
  38.            88 IS-M-U VALUES "MAGIC-USER", "Magic-User", "magic-user",
  39.                "MAGIC USER", "Magic User", "magic user",
  40.                "MU", "M", "m".
  41.            88 IS-CLERIC VALUES "CLERIC", "Cleric", "cleric", "C", "c".
  42.        01 ALIGN PIC X(10) VALUE SPACES.
  43.            88 IS-LAW VALUES "LAW", "Law", "law", "L", "l".
  44.            88 IS-NEUTRALITY VALUES "NEUTRALITY", "Neutrality",
  45.                "Neutral", "neutral", "neutrality", "N", "n".
  46.            88 IS-CHAOS VALUES "CHAOS", "Chaos", "chaos", "C", "c".
  47.        01 LVL PIC 9 VALUE ZEROES.
  48.        01 ABILITIES.
  49.            05 STRENGTH PIC Z9.
  50.            05 INTELLIGENCE PIC Z9.
  51.            05 WISDOM PIC Z9.
  52.            05 CONSTITUTION PIC Z9.
  53.            05 DEXTERITY PIC Z9.
  54.            05 CHARISMA PIC Z9.
  55.        01 GOLD PIC ZZ9 VALUE ZEROES.
  56.        01 HP PIC 999 VALUE ZEROES.
  57.        01 OUTPUT-HP PIC ZZ9.
  58.        01 AC PIC 9.
  59.        01 WEAPON PIC X(20).
  60.        01 SV PIC Z9.
  61.        01 SP PIC Z.
  62.        01 OUTPUT-XP PIC ZZZ,ZZ9.
  63.        01 LEVELS.
  64.            02 LEVEL-DETAILS OCCURS 11 TIMES.
  65.                03 LEVEL-NO PIC 99.
  66.                03 LEVEL-NAME PIC X(14).
  67.                03 XP PIC 999999.
  68.                03 HD PIC 99.
  69.                03 HD-PLUSSES PIC 9.
  70.                03 SPELLS-PER-DAY PIC 9 OCCURS 6 TIMES.
  71.                03 SAVING-THROWS PIC 99 OCCURS 5 TIMES.
  72.        01 SAVES.
  73.            02 SAVE-NAME PIC X(26) OCCURS 5 TIMES.
  74.        01 ARMOR.
  75.            02 ARMOR-NAME PIC X(20) OCCURS 8 TIMES.
  76.        01 THAC0.
  77.            02 THAC0-DETAILS OCCURS 8 TIMES.
  78.              03 TARGET-AC PIC 9.
  79.              03 TO-HIT PIC 99 OCCURS 6 TIMES.
  80.        01 TURNING.
  81.            02 TURNING-DETAILS OCCURS 8 TIMES.
  82.              03 UNDEAD PIC X(8).
  83.              03 TO-TURN PIC X(2) OCCURS 8 TIMES.
  84.        01 RANDOM-SEED PIC 9V999999999.
  85.        01 ROLL-COUNT PIC 99 VALUE ZEROES.
  86.        01 N PIC 99 VALUE ZEROES.
  87.        01 P PIC 9 VALUE ZEROES.
  88.        01 Q PIC 9 VALUE ZEROES.
  89.        01 DICE.
  90.            05 D6 PIC 9.
  91.            05 THREE-D6 PIC 99.
  92.            05 ND6 PIC 999.
  93.        01 VAR-ROW PIC 99 VALUE ZEROES.
  94.        01 VAR-COL PIC 99 VALUE ZEROES.
  95.        01 CLS-OK PIC 9 VALUE ZERO.
  96.            88 IS-CLS-OK VALUES 1.
  97.        01 CMD-KEY PIC X VALUE SPACE.
  98.        PROCEDURE DIVISION.
  99.       *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
  100.        MAIN-PROCEDURE.
  101.       **
  102.       * Get the player name, character name, race, class,
  103.       * alignment, level, ac, and weapon.
  104.       *
  105.       * Randomly roll the abilities, gold, and hp.
  106.       *
  107.       * Use lookup tables to fill-in the xp, saves, spells, thac0 and
  108.       * turn undead. Additionally, canonicalize and redisplay names of
  109.       * the race, class, alignment, level, and armor.
  110.       **
  111.            PERFORM SEED-PRNG.
  112.            PERFORM DISPLAY-SPLASH-SCREEN.
  113.            PERFORM UNTIL CMD-KEY = 'Q' OR 'q'
  114.                PERFORM DISPLAY-TITLE
  115.                PERFORM GET-PLAYER-NAME
  116.                PERFORM ROLL-ABILITIES
  117.                PERFORM ROLL-GOLD
  118.                PERFORM GET-CHAR-NAME
  119.                PERFORM GET-RACE
  120.                PERFORM GET-CLS
  121.                PERFORM GET-ALIGN
  122.                PERFORM GET-LEVEL
  123.                PERFORM DISPLAY-XP
  124.                PERFORM ROLL-HP
  125.                PERFORM GET-AC
  126.                PERFORM GET-WEAPON
  127.                PERFORM DISPLAY-SAVING-THROWS
  128.                PERFORM DISPLAY-THAC0
  129.                PERFORM DISPLAY-SPELLS-PER-DAY
  130.                PERFORM DISPLAY-CLERICS-VERSUS-UNDEAD
  131.                PERFORM QUIT-OR-CONTINUE
  132.            END-PERFORM.
  133.            STOP RUN.
  134.       **
  135.       * Subroutines.
  136.       **
  137.        SEED-PRNG.
  138.       ** Seed the PRNG with the current time.
  139.            MOVE FUNCTION RANDOM(FUNCTION SECONDS-PAST-MIDNIGHT)
  140.                TO RANDOM-SEED.
  141.        ROLL-D6.
  142.             MOVE ZERO TO D6.
  143.             COMPUTE D6 = FUNCTION RANDOM() * 6 + 1.
  144.        ROLL-ND6.
  145.            MOVE ZEROES TO ND6.
  146.            PERFORM VARYING ROLL-COUNT FROM 0 BY 1 UNTIL ROLL-COUNT = N
  147.               PERFORM ROLL-D6
  148.               ADD D6 TO ND6
  149.            END-PERFORM.
  150.        ROLL-3D6.
  151.            MOVE 3 TO N.
  152.            PERFORM ROLL-ND6.
  153.            MOVE ND6 TO THREE-D6.
  154.        ROLL-ABILITIES.
  155.             DISPLAY "Strength:" LINE 5 COL 1.
  156.             PERFORM ROLL-3D6.
  157.             MOVE THREE-D6 TO STRENGTH.
  158.             DISPLAY STRENGTH LINE 5 COL 15.
  159.             DISPLAY "Intelligence:" LINE 6 COL 1.
  160.             PERFORM ROLL-3D6.
  161.             MOVE THREE-D6 TO INTELLIGENCE.
  162.             DISPLAY INTELLIGENCE LINE 6 COL 15.
  163.             DISPLAY "Wisdom:" LINE 7 COL 1.
  164.             PERFORM ROLL-3D6.
  165.             MOVE THREE-D6 TO WISDOM.
  166.             DISPLAY WISDOM LINE 7 COL 15.
  167.             DISPLAY "Constitution:" LINE 8 COL 1.
  168.             PERFORM ROLL-3D6.
  169.             MOVE THREE-D6 TO CONSTITUTION.
  170.             DISPLAY CONSTITUTION LINE 8 COL 15.
  171.             DISPLAY "Dexterity:" LINE 9 COL 1.
  172.             PERFORM ROLL-3D6.
  173.             MOVE THREE-D6 TO DEXTERITY.
  174.             DISPLAY DEXTERITY LINE 9 COL 15.
  175.             DISPLAY "Charisma:" LINE 10 COL 1.
  176.             PERFORM ROLL-3D6.
  177.             MOVE THREE-D6 TO CHARISMA.
  178.             DISPLAY CHARISMA LINE 10 COL 15.
  179.        ROLL-GOLD.
  180.             DISPLAY "Gold:" LINE 12 COL 1.
  181.             PERFORM ROLL-3D6.
  182.             MULTIPLY THREE-D6 BY 10 GIVING GOLD.
  183.             DISPLAY GOLD LINE 12 COL 15.
  184.       ** Initialize Fighting-Man class data.
  185.        INIT-F-M.
  186.            STRING "01Veteran       0000000110000001213141516"
  187.                   "02Warrior       0020000200000001213141516"
  188.                   "03Swordsman     0040000300000001213141516"
  189.                   "04Hero          0080000400000001011121314"
  190.                   "05Swashbuckler  0160000510000001011121314"
  191.                   "06Myrmidon      0320000600000001011121314"
  192.                   "07Champion      0640000710000000809101012"
  193.                   "08Superhero     1200000820000000809101012"
  194.                   "09Lord          2400000930000000809101012"
  195.                   "10              0000001010000000607080810"
  196.                   "11              0000000000000000000000000"
  197.            INTO LEVELS.
  198.            MOVE "Fighting-Man" TO CLS.
  199.       ** Initialize Magic-User class data.
  200.        INIT-M-U.
  201.            STRING "01Medium        0000000101000001314131615"
  202.                   "02Seer          0025000112000001314131615"
  203.                   "03Conjurer      0050000203100001314131615"
  204.                   "04Theurgist     0100000214200001314131615"
  205.                   "05Thaumaturgist 0200000304210001314131615"
  206.                   "06Magician      0350000314220001112111412"
  207.                   "07Enchanter     0500000404321001112111412"
  208.                   "08Warlock       0750000504332001112111412"
  209.                   "09Sorcerer      1000000614332101112111412"
  210.                   "10Necromancer   2000000704433201112111412"
  211.                   "11Wizard        3000000814443300809081108"
  212.            INTO LEVELS.
  213.            MOVE "Magic-User  " TO CLS.
  214.       ** Initialize Cleric class data.
  215.        INIT-CLERIC.
  216.            STRING "01Acolyte       0000000100000001112141615"
  217.                   "02Adept         0015000201000001112141615"
  218.                   "03Village Priest0030000302000001112141615"
  219.                   "04Vicar         0060000402100001112141615"
  220.                   "05Curate        0120000412200000910121412"
  221.                   "06Bishop        0250000502211000910121412"
  222.                   "07Lama          0500000602221100910121412"
  223.                   "08Patriarch     1000000702222200910121412"
  224.                   "09              0000000713332200607091109"
  225.                   "10              0000000723333300607091109"
  226.                   "11              0000000000000000000000000"
  227.            INTO LEVELS.
  228.            MOVE "Cleric      " TO CLS.
  229.        INIT-THAC0.
  230.            STRING "9100805030101"
  231.                   "8110906040201"
  232.                   "7121007050301"
  233.                   "6131108060401"
  234.                   "5141209070502"
  235.                   "4151310080603"
  236.                   "3161411090704"
  237.                   "2171512100805"
  238.            INTO THAC0.
  239.        INIT-TURNING.
  240.            STRING "Skeleton 7 T T D D D D D"
  241.                   "Zombie   9 7 T T D D D D"
  242.                   "Ghoul   11 9 7 T T D D D"
  243.                   "Wight    N11 9 7 T T D D"
  244.                   "Wraith   N N11 9 7 T T D"
  245.                   "Mummy    N N N11 9 7 T T"
  246.                   "Spectre  N N N N11 9 7 T"
  247.                   "Vampire  N N N N N11 9 7"
  248.            INTO TURNING.
  249.        INIT-SAVES.
  250.            STRING "Death Ray or Poison       "
  251.                   "All Wands                 "
  252.                   "Stone                     "
  253.                   "Dragon Breath             "
  254.                   "Staves & Spells           "
  255.            INTO SAVES.
  256.        INIT-ARMOR.
  257.            STRING "No Armor or Shield  "
  258.                   "Shield Only         "
  259.                   "Leather Armor       "
  260.                   "Leather & Shield    "
  261.                   "Chain Mail          "
  262.                   "Chain Mail & Shield "
  263.                   "Plate Armor         "
  264.                   "Plate Armor & Shield"
  265.            INTO ARMOR.
  266.        INIT-SPLASH-SCREEN.
  267.            STRING " __________________________________     "
  268.                "                                        "
  269.                "/ DUNGEONS & DRAGONS(TM) character \   "
  270.                "                                        "
  271.                "\ generator, original 1974 ed.     /    "
  272.                "                                        "
  273.                " ----------------------------------     "
  274.                "                                        "
  275.                "      \                   / \ //\    "
  276.                "                                        "
  277.                "       \   |\___/|      /   \//  \\    "
  278.                "                                        "
  279.                "            /0  0  \__  /    //  | \ \ "
  280.                "                                        "
  281.                "           /     /  \/_/    //   |  \ \"
  282.               "                                        "
  283.               "           @_^_@'/   \/_   //    |   \ "
  284.               " \                                     "
  285.               "           //_^_/     \/_ //     |    \ "
  286.               "   \                                   "
  287.               "        ( //) |        \///      |     \"
  288.               "     \                                 "
  289.               "      ( / /) _|_ /   )  //       |      "
  290.               "\    _\                               "
  291.               "    ( // /) '/,_ _ _/  ( ; -.    |    _ "
  292.               "_\.-~        .-~~~^-.                   "
  293.               "  (( / / )) ,-{        _      `-.|.-~-. "
  294.               "          .~         `.                 "
  295.               " (( // / ))  '/\     /                 "
  296.               "~-. _ .-~      .-~^-.  \               "
  297.               " (( /// ))      `.   {            }     "
  298.               "              /      \ \              "
  299.               "  (( / ))     .----~-.\       \-'      "
  300.               "           .~         \  `. \^-.        "
  301.               "             ///.----..>        \       "
  302.               "      _ -~             `.  ^-`  ^-_     "
  303.               "               ///-._ _ _ _ _ _ _}^ - - "
  304.               "span class="sy0"> - - ~                     ~-- ,.-~      "
  305.               "  DUNGEONS & DRAGONS(TM) and D&D(TM) are"
  306.               " trademarks of Wizards of the Coast.    "
  307.               "  And D&D(TM) core rules, game mechanics"
  308.               ", characters and their distinctive      "
  309.               "  likenesses are the property of the Wiz"
  310.               "ards of the Coast. For more information "
  311.               "  about Wizards of the Coast or any of W"
  312.               "izards' trademarks or other             "
  313.               "  intellectual property, please visit th"
  314.               "eir website at (www.wizards.com).       "
  315.           INTO SPLASH-SCREEN.
  316.       DISPLAY-SPLASH-SCREEN.
  317.           PERFORM INIT-SPLASH-SCREEN.
  318.           DISPLAY SPACE WITH BLANK SCREEN.
  319.           PERFORM VARYING VAR-ROW FROM 1 BY 1 UNTIL VAR-ROW = 25
  320.               DISPLAY SPLASH-SCREEN-DETAILS(VAR-ROW) LINE VAR-ROW COL 1
  321.           END-PERFORM.
  322.           DISPLAY "PRESS ANY KEY TO CONTINUE!" LINE 5 COL 50
  323.               WITH BLINK REVERSE-VIDEO.
  324.           ACCEPT CMD-KEY LINE 5 COL 76.
  325.           MOVE SPACE TO CMD-KEY.
  326.       DISPLAY-TITLE.
  327.           DISPLAY SPACE WITH BLANK SCREEN.
  328.           DISPLAY "DUNGEONS & DRAGONS(TM)" LINE 1 COL 31.
  329.       GET-PLAYER-NAME.
  330.           DISPLAY "Player's Name:" LINE 3 COL 1.
  331.           ACCEPT PLAYER-NAME LINE 3 COL 16.
  332.       GET-CHAR-NAME.
  333.           DISPLAY "Character's Name:" LINE 3 COL 40.
  334.           ACCEPT CHAR-NAME LINE 3 COL 58.
  335.       GET-RACE.
  336.           DISPLAY "Race:" LINE 5 COL 40.
  337.           ACCEPT RACE LINE 5 COL 50.
  338.      ** Canonicalize race.
  339.           EVALUATE TRUE
  340.               WHEN IS-HUMAN  MOVE "Human " TO RACE
  341.               WHEN IS-ELF    MOVE "Elf   " TO RACE
  342.               WHEN IS-DWARF  MOVE "Dwarf " TO RACE
  343.               WHEN IS-HOBBIT MOVE "Hobbit" TO RACE
  344.           END-EVALUATE.
  345.           DISPLAY RACE LINE 5 COL 50.
  346.       GET-CLS.
  347.      ** Make sure class allowed for given race.
  348.      ** Human: any class. Elf: F-M or M-U. Dwarf/Hobbit: F-M only.
  349.           DISPLAY "Class:" LINE 6 COL 40.
  350.           IF IS-DWARF OR IS-HOBBIT THEN
  351.               PERFORM INIT-F-M
  352.           ELSE
  353.               ACCEPT CLS LINE 6 COL 50
  354.               PERFORM UNTIL IS-CLS-OK
  355.               IF IS-ELF AND IS-CLERIC THEN
  356.                   DISPLAY "An elf must be a fighting-man"
  357.                       LINE 6 COL 50
  358.                   DISPLAY "or magic-user. Press any key "
  359.                       LINE 7 COL 50
  360.                   DISPLAY "to continue. "
  361.                       LINE 8 COL 50
  362.                   ACCEPT CMD-KEY LINE 8 COL 64
  363.                   PERFORM VARYING VAR-ROW FROM 6 BY 1 UNTIL VAR-ROW = 9
  364.                   DISPLAY "                             "
  365.                       LINE VAR-ROW COL 50
  366.                   END-PERFORM
  367.                   DISPLAY "Class:" LINE 6 COL 40
  368.                   ACCEPT CLS LINE 6 COL 50
  369.               ELSE
  370.                   MOVE 1 TO CLS-OK
  371.               END-IF
  372.               END-PERFORM
  373.               EVALUATE TRUE
  374.                   WHEN IS-F-M PERFORM INIT-F-M
  375.                   WHEN IS-M-U PERFORM INIT-M-U
  376.                   WHEN IS-CLERIC PERFORM INIT-CLERIC
  377.               END-EVALUATE
  378.           END-IF.
  379.           DISPLAY CLS LINE 6 COL 50.
  380.       GET-ALIGN.
  381.           DISPLAY "Align:" LINE 7 COL 40.
  382.           ACCEPT ALIGN LINE 7 COL 50.
  383.      ** Canonicalize alignment.
  384.           EVALUATE TRUE
  385.               WHEN IS-LAW MOVE "Law       " TO ALIGN
  386.               WHEN IS-NEUTRALITY MOVE "Neutrality" TO ALIGN
  387.               WHEN IS-CHAOS MOVE "Chaos     " TO ALIGN
  388.           END-EVALUATE.
  389.           DISPLAY ALIGN LINE 7 COL 50.
  390.       GET-LEVEL.
  391.           DISPLAY "Level:" LINE 8 COL 40.
  392.           ACCEPT LVL LINE 8 COL 50.
  393.           DISPLAY LEVEL-NAME OF LEVEL-DETAILS(LVL) LINE 8 COL 52.
  394.       DISPLAY-XP.
  395.           DISPLAY "XP:" LINE 9 COL 40.
  396.      ** Left-justify XP
  397.           IF XP(LVL) < 10000 THEN
  398.               MOVE 48 TO VAR-COL
  399.           ELSE
  400.               IF XP(LVL) < 100000 THEN
  401.                   MOVE 49 TO VAR-COL
  402.               ELSE
  403.                   MOVE 50 TO VAR-COL
  404.               END-IF
  405.           END-IF.
  406.           MOVE XP(LVL) TO OUTPUT-XP.
  407.           DISPLAY OUTPUT-XP LINE 9 COL VAR-COL.
  408.       ROLL-HP.
  409.           MOVE HD OF LEVEL-DETAILS(LVL) TO N.
  410.           MOVE HD-PLUSSES OF LEVEL-DETAILS(LVL) TO P.
  411.           PERFORM ROLL-ND6.
  412.           COMPUTE HP = ND6 + P.
  413.      ** Left-justify HP by determining how many digits it has.
  414.           IF HP LESS THAN 10 THEN
  415.               MOVE 48 TO VAR-COL
  416.           ELSE
  417.               IF HP LESS THAN 100 THEN
  418.                   MOVE 49 TO VAR-COL
  419.               ELSE
  420.                   MOVE 50 TO VAR-COL
  421.               END-IF
  422.           END-IF.
  423.           DISPLAY "HP:" LINE 10 COL 40.
  424.           MOVE HP TO OUTPUT-HP.
  425.           DISPLAY OUTPUT-HP LINE 10 COL VAR-COL.
  426.       GET-AC.
  427.           DISPLAY "AC:" LINE 11 COL 40.
  428.           ACCEPT AC LINE 11 COL 50.
  429.           PERFORM INIT-ARMOR.
  430.           COMPUTE P = 10 - AC.
  431.           DISPLAY ARMOR-NAME(P) LINE 11 COL 52.
  432.       GET-WEAPON.
  433.           DISPLAY "Weapon:" LINE 12 COL 40.
  434.           ACCEPT WEAPON LINE 12 COL 50.
  435.       DISPLAY-SAVING-THROWS.
  436.           PERFORM INIT-SAVES.
  437.           DISPLAY "====Saving Throws============" LINE 14 COL 1.
  438.           MOVE 15 TO VAR-ROW.
  439.           PERFORM VARYING N FROM 1 BY 1 UNTIL N = 6
  440.               MOVE SAVING-THROWS(LVL,N) TO SV
  441.               DISPLAY SV LINE VAR-ROW COL 1
  442.               DISPLAY SAVE-NAME(N) LINE VAR-ROW COL 4
  443.               ADD 1 TO VAR-ROW
  444.           END-PERFORM.
  445.       DISPLAY-SPELLS-PER-DAY.
  446.           IF IS-M-U OR IS-CLERIC THEN
  447.               DISPLAY "====Spells Per Day=========" LINE 18 COL 40
  448.               DISPLAY "Lvl   1   2   3   4   5   6" LINE 19 COL 40
  449.               DISPLAY "#Sp" LINE 20 COL 40
  450.               PERFORM VARYING N FROM 1 BY 1 UNTIL N = 7
  451.                   MOVE SPELLS-PER-DAY(LVL, N) TO SP
  452.                   COMPUTE VAR-COL = 4 * N + 42
  453.                   DISPLAY SP LINE 20 COL VAR-COL
  454.               END-PERFORM
  455.           END-IF.
  456.       DISPLAY-THAC0.
  457.           PERFORM INIT-THAC0.
  458.           DISPLAY "====THAC0==========================" LINE 14 COl 40.
  459.           DISPLAY "AC    9   8   7   6   5   4   3   2" LINE 15 COL 40.
  460.           EVALUATE TRUE
  461.               WHEN IS-F-M MOVE 3 TO P
  462.               WHEN IS-M-U MOVE 5 TO P
  463.               WHEN IS-CLERIC MOVE 4 TO P
  464.           END-EVALUATE.
  465.           SUBTRACT 1 FROM LVL.
  466.           DIVIDE LVL BY P GIVING Q.
  467.           ADD 1 TO Q.
  468.           ADD 1 TO LVL.
  469.           MOVE 45 TO VAR-COL.
  470.           PERFORM VARYING N FROM 1 BY 1 UNTIL N = 9
  471.               MOVE TO-HIT(N, Q) TO SV
  472.               DISPLAY SV LINE 16 COL VAR-COL
  473.               ADD 4 TO VAR-COL
  474.           END-PERFORM.
  475.       DISPLAY-CLERICS-VERSUS-UNDEAD.
  476.           IF IS-CLERIC THEN
  477.               PERFORM INIT-TURNING
  478.               DISPLAY "====Clerics vs Undead================="
  479.                   LINE 21 COl 1
  480.               MOVE 22 TO VAR-ROW
  481.               MOVE 1 TO VAR-COL
  482.               PERFORM VARYING P FROM 1 BY 1 UNTIL P = 9
  483.                   IF P = 5 THEN
  484.                       MOVE 23 TO VAR-ROW
  485.                       MOVE 1 TO VAR-COL
  486.                   END-IF
  487.                   DISPLAY TO-TURN(P,LVL) LINE VAR-ROW COL VAR-COL
  488.                   ADD 3 TO VAR-COL
  489.                   DISPLAY UNDEAD(P) LINE VAR-ROW COL VAR-COL
  490.                   ADD 9 TO VAR-COL
  491.               END-PERFORM
  492.           END-IF.
  493.       QUIT-OR-CONTINUE.
  494.           DISPLAY "Quit    = Q" LINE 22 COL 65.
  495.           DISPLAY "Re-roll = R" LINE 23 COL 65.
  496.           DISPLAY "===> Enter key"   LINE 24 COL 60.
  497.           ACCEPT CMD-KEY LINE 24 COL 75.
  498.       END PROGRAM ODDSHEET.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement