home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / stel210.lha / stellar_0.prx < prev    next >
Text File  |  1993-06-25  |  69KB  |  2,123 lines

  1.  
  2. /*Stellar War v2.00 Jan 30, 1993 (c)pending */
  3. /* A lost and forgottened and abandoned game */
  4. /* Full of defects rebuilt with care based on */
  5. /* the original Created by a Unknown author by */
  6. /* the handle of Delta Leader who no longer exists */
  7. /* with a bbs or number, I hope you like this version */
  8. /* and call me for help with future improvements. */
  9. /*  Robert Lehman, Maxnet 90:51/0 1-219-289-3275 */
  10.  
  11.  
  12. parse arg Uname
  13. RealName = upper(uname)
  14. Handle = upper(uname)
  15. options results
  16. options prompt '?> '
  17. signal on error
  18. signal on syntax
  19. signal on ioerr
  20. signal on BREAK_C
  21.  
  22. number = -1; msgnumber = 0; flags = 0; collected = 0; plays = 0; jmpflg = 0
  23. file1 = 'Doors:Stellar/config'
  24. file2 = 'Doors:Stellar/user/user'
  25. file3 = 'Doors:Stellar/messages/message'
  26. file4 = 'Doors:Stellar/mailflag'
  27. file5 = 'Doors:Stellar/log'
  28. file6 = 'Doors:Stellar/army/army'
  29. file7 = 'Doors:Stellar/players.dat'
  30. file8 = 'Doors:Stellar/welcome.txt'
  31. file9 = 'Doors:Stellar/exit.txt'
  32. file10 = 'Doors:Stellar/Story'
  33. file11 = 'Doors:Stellar/calldata'
  34. file12 = 'Doors:Stellar/galaxy'
  35. file13 = 'Doors:Stellar/flags/mail_for'
  36. file14 = 'Doors:Stellar/current'
  37. file15 = 'Doors:Stellar/Days/User'
  38. file16 = 'Doors:Stellar/questions'
  39. file17 = 'Doors:Stellar/send/send'
  40. file18 = 'Doors:Stellar/DaysLeft.dat'
  41. file19 = 'Doors:Stellar/Instructions'
  42.  
  43. flg = 0
  44. ANSPICK:
  45. call open file, (file8),'R'
  46. do until eof(file)
  47.          data = readln(file)
  48.         say data
  49. end
  50. call close file
  51. say 'Please enter your choice of graphics'
  52. say '1 for color ansi or 0 for b&w'
  53. options prompt 'Enter 1 for ansi enabled)> '
  54. pull result 
  55. graphics = upper(result)
  56.  
  57. if graphics = 1 then do
  58. CLS = 'H'
  59. BLACK = ''
  60. RED = ''
  61. GREEN = ''
  62. YELLOW = ''
  63. BLUE = ''
  64. PURPLE = ''
  65. LBLUE = ''
  66. WHITE = ''
  67. flg = 1
  68. end
  69. if graphics = 0 then do
  70.         CLS = ''
  71.         WHITE = ''
  72.         BLACK = ''
  73.         YELLOW = ''
  74.         GREEN = ''
  75.         LBLUE = ''
  76.         RED = ''
  77.         BLUE = ''
  78.         PURPLE = ''
  79. end
  80. wrtms = 0
  81. datz = date("C")
  82. call open file, (file14),'R'
  83.    tday = readln(file)
  84. call close file
  85. if tday<datz then do
  86.         say YELLOW' Please Hold....'LBLUE'Updating player data structures.'
  87.         call open file, (file18),'R'
  88.                 dleft = readln(file)
  89.         call close file
  90.         call open file, (file18),'W'
  91.                 dleft = dleft - (datz-tday)
  92.                 call writeln file, dleft
  93.         call close file
  94.         if dleft = 0 then do
  95.                 count = 0
  96.                 call open file, (file7),'R'
  97.                 do until eof(file)
  98.                    count = count + 1
  99.                    temp = readln(file)
  100.                 end
  101.                 do x = 1 to count
  102.                         call open file, (file2'-'count'.dat'),'R'
  103.                              temp = readln(file)
  104.                              temp = readln(file)
  105.                              pts = readln(file)
  106.                              temp = readln(file)
  107.                              if pts>crtpts then crttop = count
  108.                         call close file
  109.                 end
  110.                 call open file, (file7),'R'
  111.                         temp = readln(file)
  112.                         do count = 1 to crttop
  113.                                 champ = readln(file)
  114.                         end
  115.                 call close file
  116.                 call open file, (file7),'W'
  117.                         data = 'Stellar War v2.0 ReCreated by Robert Lehman, SouthWinds bbs'
  118.                         call writeln file, data
  119.                 call close file
  120.                 call open file, (file11),'W'
  121.                         call writeln file, 0
  122.                         call writeln file, 0
  123.                 call close file
  124.                 call open file, (file5),'W'
  125.                         data = ' Stellar War v2.0     Log of Events'
  126.                         datb = ' -----------------------------------'
  127.                         datc = ' Last Periods Champion : 'champ
  128.                         call writeln file, data
  129.                         call writeln file, datb
  130.                         call writeln file, datc
  131.                 call close file
  132.                 call open file, (file18),'W'
  133.                         data = 30
  134.                         call writeln file, data
  135.                 call close file
  136.         end
  137. end
  138. tday=datz
  139. if tday=datz then signal ATMAINTPASS
  140. options prompt 'Press enter to continue.'
  141. pull result
  142. say YELLOW'Please hold....'BLUE'conducting maintenance.'
  143. call open file, (file11),'R'
  144.         members = readln(file)
  145. call close file
  146. do count = 1 to members
  147.    call open file, (file2'-'count'.dat'),'R'
  148.         tpl = readln(file)
  149.     call close file
  150.     if (tpl<0) then do
  151.         count2 = count + 1
  152.         do until (count2 = members)
  153.         call open file, (file2'-'count2'.dat'),'R'
  154.             ta = readln(file)
  155.             tb = readln(file)
  156.             tc = readln(file)
  157.             td = readln(file)
  158.         call close file
  159.         call open file, (file2'-'count2-1'.dat'),'W'
  160.             call writeln file, ta
  161.             call writeln file, tb
  162.             call writeln file, tc
  163.             call writeln file, td
  164.         call close file
  165.         call open file, (file6'-'count2'.dat'),'R'
  166.             ta = readln(file)
  167.             tb = readln(file)
  168.             tc = readln(file)
  169.             td = readln(file)
  170.             te = readln(file)
  171.             tf = readln(file)
  172.             tg = readln(file)
  173.             th = readln(file)
  174.         call close file
  175.         call open file, (file6'-'count2-1'.dat'),'W'
  176.             call writeln file, ta
  177.             call writeln file, tb
  178.             call writeln file, tc
  179.             call writeln file, td
  180.             call writeln file, te
  181.             call writeln file, tf
  182.             call writeln file, tg
  183.             call writeln file, th
  184.         call close file
  185.         call open file, (file7),'R'
  186.             count4 = 1
  187.             ta = readln(file)
  188.             do until(eof(file))
  189.                 nm.count4 = readln(file)
  190.                 count4 = count4 + 1
  191.             end
  192.         call close file
  193.         call open file, (file7),'W'
  194.             data = 'Stellar War v2.00 list of players'
  195.             call writeln file, data
  196.             do count5 = 1 to count4
  197.                 if not(count5=count2-1) then call writeln file, nm.count5
  198.             end
  199.         call close file
  200.         call open file, (file11),'R'
  201.             ta = readln(file)
  202.             tb = readln(file)
  203.         call close file
  204.         call open file, (file11),'W'
  205.             ta = ta - 1
  206.             call writeln file, ta
  207.             call writeln file, tb
  208.         call close file
  209.         call open file, (file13'-'count2),'R'
  210.             count4 = 1
  211.             do until (eof(file))
  212.                 mlm.count4 = readln(file)
  213.             end
  214.         call close file
  215.         call open file, (file13'-'count2-1),'W'
  216.             do count5 = 1 to count4
  217.                 call writeln file, mlm.count5
  218.             end
  219.         call close file
  220.         call open file, (file15'-'count2),'R'
  221.             ta = readln(file)
  222.         call close file
  223.         call open file, (file15'-'count2-1),'W'
  224.             call writeln file, ta
  225.         call close file
  226.         call open file, (file17'-'count2'.dat'),'R'
  227.             ta = readln(file)
  228.             tb = readln(file)
  229.             tc = readln(file)
  230.             td = readln(file)
  231.         call close file
  232.         call open file, (file17'-'count2-1'.dat'),'W'
  233.             call writeln file, ta
  234.             call writeln file, tb
  235.             call writeln file, tc
  236.             call writeln file, td
  237.         call close file
  238.         call open file, (file5),'A'
  239.             tp = count2-1
  240.             dnm = nm.tp
  241.             data = dnm' was completly slaughtered and has been forced to drop out of the game.'
  242.             call writeln file, data
  243.         call close file
  244.     end
  245. end
  246. ATMAINTPASS:
  247. call open file, (file18),'R'
  248.         dleft = readln(file)
  249. call close file
  250. say BLUE'Only 'YELLOW||dleft||BLUE' days before a winner of this round is decided!'
  251. call open file, (file14),'W'
  252.    call writeln file, datz
  253. call close file
  254. options prompt GREEN'Do you want to read the story 'WHITE'('RED'y/N'WHITE')? '
  255. pull result
  256. answer = upper(result)
  257. myn = 0
  258. if answer = 'y' | answer = 'Y' then do
  259.       call open file, (file10),'R'
  260.         do until eof(file)
  261.                 myn = myn + 1
  262.                 data = readln(file)
  263.                 say data
  264.                 if myn=20 then do
  265.                         options prompt 'More [Y/N]? '
  266.                         pull result
  267.                         answer = upper(result)
  268.                         if upper(answer)='Y' then myn = 0
  269.                         if upper(answer)='N' then signal OVERAA
  270.                         if upper(answer)='' then myn = 0
  271.                 end
  272.                 if mny = 20 then signal OVERAA
  273.         end
  274. end
  275. OVERAA:
  276. call close file
  277. options prompt GREEN'Do you want to read the instructions 'WHITE'('RED'y/N'WHITE')? '
  278. pull result
  279. answer = upper(result)
  280. mny = 0
  281. if upper(answer)='Y' then do
  282.         call open file, (file19),'R'
  283.           do until eof(file)
  284.                 mny = mny + 1
  285.                 data = readln(file)
  286.                 say data
  287.                 if mny=20 then do
  288.                         options prompt 'More [Y/N]'
  289.                  pull result 
  290.                         answer = upper(result)
  291.                         if upper(answer)='Y' then mny = 0
  292.                         if upper(answer)='' then mny = 0
  293.                         if upper(answer)='N' then signal OVERAB
  294.                 end
  295.                 if mny=20 then signal OVERAB
  296.           end
  297. end
  298. OVERAB:
  299. call close file
  300. say ' '
  301. say CLS; say ' '; say ' '; say ' '
  302. say YELLOW'Please wait....'BLUE'conducting maintenance.'
  303. call open file, (file1),'R'
  304.    maxuser = readln(file)
  305.    maxturn = readln(file)
  306.    maxplanet = readln(file)
  307.    newreceive = readln(file)
  308.    newmoney = readln(file)
  309.    newmen = readln(file)
  310.    newfighters = readln(file)
  311.    newcarriers = readln(file)
  312.    newbattleships = readln(file)
  313.         newpopulation = readln(file)
  314. call close file
  315. search = RealName
  316. call find
  317. if sflag = 1 then do
  318.    number = count
  319.    handle = listname
  320.    signal CONT
  321. end
  322. say GREEN'You do not currently have an account on Stellar War.'
  323. say YELLOW'Please hold....'
  324. call open file, (file11),'R'
  325.    members = readln(file)
  326.         msgnumber = readln(file)
  327. call close file
  328.    if members = maxuser then do
  329.       say RED'I am sorry, but this game is filled right now.  Try'
  330.       say 'in a few days.'
  331.       signal LEAVE
  332.    end
  333. ADDING:
  334. say LBLUE'Adding you to the membership role.'
  335. call open file, (file5),'A'
  336.         data = handle' joined as a new player.'
  337.    call writeln file, data
  338. call close file
  339. messages = 0; points = 0; trades = 0
  340. call open file, (file2'-'members+1'.dat'),'W'
  341.    call writeln file, newreceive
  342.    call writeln file, messages
  343.    call writeln file, points
  344.    call writeln file, newmoney
  345. call close file
  346. call open file, (file7),'A'
  347.    call writeln file, handle
  348. call close file
  349. say ' '
  350. say LBLUE'Creating your army.'
  351. wins = 0; losses = 0; moral = 3
  352. call open file, (file6'-'members+1'.dat'),'W'
  353.    call writeln file, newpopulation
  354.    call writeln file, newmen
  355.    call writeln file, newfighters
  356.    call writeln file, newcarriers
  357.    call writeln file, newbattleships
  358.    call writeln file, wins
  359.    call writeln file, losses
  360.    call writeln file, moral
  361. call close file
  362. call open file, (file17'-'members+1'.dat'),'W'
  363.         dats = 80
  364.         call writeln file, dats
  365.         call writeln file, dats
  366.         call writeln file, dats
  367.         call writeln file, dats
  368. call close file
  369. call open file, (file11),'W'
  370.    call writeln file, members+1
  371.    call writeln file, msgnumber
  372. call close file
  373. number = members+1
  374. call open file, (file13'-'number),'W'
  375.    data = 0
  376.    call writeln file, data
  377. call close file
  378. call open file, (file15'-'number),'W'
  379.    call writeln file, dat
  380.         wrtms = 0
  381.         call writeln file, wrtms
  382. call close file
  383. CONT:
  384. call YOUATTRA
  385. call YOUATTRB
  386. call open file, (file15'-'number),'R'
  387.         tz = readln(file)
  388.         wrtms = readln(file)
  389. call close file
  390. if tz<datz then wrtms = 0
  391. call open file, (file13'-'number),'R'
  392. msg = readln(file)
  393. if msg=0 then do
  394.    call close file
  395.         say ' '; say ' '
  396.    say YELLOW'You have no mail waiting.'
  397.        signal CONTWO
  398. end
  399. call close file
  400. call open file, (file13'-'number),'R'
  401. say YELLOW'The following pieces of mail are for you:'
  402. ttlmsg = 0
  403. do until eof(file)
  404.    msg = readln(file)
  405.    if (msg = '') then signal NOTEQUAL
  406.         title = readln(file)
  407.    sender = readln(file)
  408.    ttlmsg = ttlmsg + 1
  409.    say WHITE||ttlmsg') 'RED'#'msg' from 'sender'.'
  410. end
  411. NOTEQUAL:
  412. call close file
  413. call open file, (file13'-'number),'R'
  414. do count = 1 to ttlmsg
  415.    msg = readln(file)
  416.    if msg = '' then signal STOP
  417.    title = readln(file)
  418.    sender = readln(file)
  419.    options prompt GREEN'Press enter to read #'msg'.'
  420.    pull result
  421.    say CLS
  422.    say WHITE'Message # - 'RED||msg
  423.    say WHITE'From      - 'RED||sender
  424.    say WHITE'About     - 'RED||title
  425.    call open fil2, (file3'-'msg),'R'
  426.         say WHITE
  427.         do until eof(fil2)
  428.                 data = readln(fil2)
  429.                 say data
  430.         end
  431.         call close fil2
  432.    say ' ';
  433.     call open fil2, (file3'-'msg),'W'
  434.     call close fil2        
  435. end
  436. STOP:
  437. call close file
  438. call open file, (file13'-'number),'W'
  439.    data = 0
  440.    call writeln file, data
  441. call close file
  442. CONTWO:
  443. options prompt ' ' GREEN'Do you want to read the news letter 'WHITE'('RED'Y/n'WHITE')? '
  444. pull result
  445. answer = upper(result)
  446. if upper(answer) = 'N' then signal SKIPS
  447. say CLS
  448. call open file, (file5),'R'
  449. mny = 0
  450. do until eof(file)
  451.         mny = mny + 1
  452.         data = readln(file)
  453.         say data
  454.         if mny=20 then do
  455.                 options prompt 'More [Y/N]? '
  456.                 pull result
  457.                 answer = upper(result)
  458.                 if upper(answer)='Y' then mny = 0
  459.                 if upper(answer)='' then mny = 0
  460.         end
  461.         if mny=20 then signal OVERAC
  462. end
  463. OVERAC:
  464. call close file
  465. say ' '; say ' '
  466. options prompt BLUE'Press enter to continue.'
  467. pull result
  468. SKIPS:
  469. call YOUATTRA
  470. call YOUATTRB
  471. call open file, (file11),'R'
  472.    members = readln(file)
  473.    msgnumber = readln(file)
  474. call close file
  475. call STATS
  476. signal MAINMENU
  477. STATS:
  478.  
  479. say CLS
  480. say LBLUE'                     <<<<<'YELLOW' Personal Statistics 'LBLUE'>>>>>'
  481. say ' '
  482. say RED'Name         : 'WHITE||handle
  483. say RED'Account #    : 'WHITE||number
  484. say RED'Messages     : 'WHITE||messages
  485. say RED'Money        : 'WHITE||money
  486. say RED'Points       : 'WHITE||points
  487. say RED'Population   : 'WHITE||population
  488. say ' '
  489. say LBLUE'                  <<<<<'YELLOW' Army Statistical Summary'LBLUE' >>>>>'
  490. say ' '
  491. say RED'Men          : 'WHITE||men
  492. say RED'Fighters     : 'WHITE||fighters
  493. say RED'Carriers     : 'WHITE||carriers
  494. say RED'BattleShips  : 'WHITE||battleships
  495. say RED'Planets      : 'WHITE||planets
  496. say RED'Wins         : 'WHITE||wins
  497. say RED'Losses       : 'WHITE||losses
  498. winlos = wins + losses
  499. if winlos>0 then percentage = wins/winlos
  500. if winlos=0 then percentage = 1
  501. percentage = percentage*100
  502. say RED'Percentage   : 'WHITE||percentage'%'
  503. call MORALFIG
  504. if moral = 1 then say RED'Moral of Men : 'WHITE'Exceptional'
  505. if moral = 2 then say RED'Moral of Men : 'WHITE'Confident'
  506. if moral = 3 then say RED'Moral of Men : 'WHITE'Unsure'
  507. if moral = 4 then say RED'Moral of Men : 'WHITE'Frightened'
  508. if moral = 5 then say RED'Moral of Men : 'WHITE'Unstable'
  509. say ' '
  510. options prompt BLUE'Press enter to continue.'
  511. pull result
  512. return
  513. MAINMENU:
  514. say CLS
  515. say LBLUE' <<<'YELLOW' Options'LBLUE' >>>'
  516. say ' '
  517. say YELLOW'[S]  'GREEN'Show your statistical summary'
  518. say YELLOW'[M]  'GREEN'Send a message'
  519. say YELLOW'[D]  'GREEN'Draft Men (Only used in extreme crisis)'
  520. say YELLOW'[T]  'GREEN'Trade with another player'
  521. say YELLOW'[R]  'GREEN'Request a trade with another player'
  522. say YELLOW'[B]  'GREEN'Buy and sell equipment'
  523. say YELLOW'[C]  'GREEN'Collect taxes from population'
  524. say YELLOW'[W]  'GREEN'War and Spy menus'
  525. say YELLOW'[P]  'GREEN'Set up your defense tactics'
  526. say ' '
  527. say PURPLE'[I]  'GREEN'Display game instructions'
  528. say PURPLE'[H]  'GREEN'Read the story of the program.'
  529. say PURPLE'[Q]  'GREEN'Quit this game - return to BBS'
  530. say ' '; say ' '; say ' '
  531. options prompt YELLOW'Enter your choice>> 'WHITE
  532. pull result
  533. answer = upper(result)
  534. if answer = '' then signal MAINMENU
  535. cm = upper(answer)
  536. if cm='S' then call STATS
  537. if cm='M' then signal MESSAGE
  538. if cm='D' then signal DRAFT
  539. if cm='H' then signal HELP
  540. if cm='T' then signal TRADE
  541. if cm='R' then signal REQUEST
  542. if cm='E' then signal ENDDIE
  543. if cm='B' then signal MARKET
  544. if cm='Q' then signal LEAVE
  545. if cm='W' then signal WAR
  546. if cm='C' then call TAXCOLLECT
  547. if cm='P' then signal TACTICS
  548. if cm='I' then call REALINSTRUCT
  549. signal MAINMENU
  550.  
  551. REALINSTRUCT:
  552. say CLS
  553. call open file, (file19),'R'
  554. mny = 0
  555. do until eof(file)
  556.         mny = mny + 1
  557.         data = readln(file)
  558.         say data
  559.         if mny = 20 then do
  560.                 options prompt 'More [Y/N]? '
  561.                 pull result
  562.                 answer = upper(result)
  563.                 if upper(answer)='Y' then mny = 0
  564.         end
  565.         if mny=20 then signal OVERAD
  566. end
  567. OVERAD:
  568. call close file
  569. say ' '
  570. options prompt BLUE'Press enter to continue.'
  571. pull result
  572. return
  573.  
  574. MESSAGE:
  575. say CLS
  576. say ' '
  577. say ' '
  578. say YELLOW'                                   Message Menu'
  579. say ' '; say ' '; say ' ';
  580. say WHITE'[1]  'RED'Send a message'
  581. say WHITE'[2]  'RED'List current members'
  582. say WHITE'[3]  'RED'Quit to main menu'
  583. say ' '; say ' '
  584. options prompt YELLOW'Enter your choice>> 'WHITE
  585. pull result
  586. answer = upper(result)
  587. if answer = '' then signal MESSAGE
  588. if answer = '3' then signal MAINMENU
  589. if answer = '1' then signal ENTER
  590. if answer = '2' then call LISTER
  591. signal MESSAGE
  592. ENTER:
  593. say CLS
  594. options prompt GREEN'Address to> 'WHITE
  595. pull result
  596. address = upper(result)
  597. if address = '' then signal MESSAGE
  598. search = address
  599. call FIND
  600. call SELFCHECK
  601. if flag = 1 then signal ENTER
  602. if sflag = 0 then do
  603.    say YELLOW'Sorry, but this user does not currently exist.'
  604.    options prompt BLUE'Press enter to continue.'
  605.    pull result
  606.    signal MESSAGE
  607. end
  608. options prompt GREEN'Title     > 'WHITE
  609. pull result
  610. title = upper(result)
  611. if title = '' then title = 'None Given'
  612. say ' '
  613. line = 1
  614. say ' '; say ' '
  615. call open file, (file3'-'msgnumber),'W'
  616. say WHITE'You must do your own word wrapping.  Sorry for the inconvenience.'
  617. say WHITE'Enter up to'PURPLE' 75 'WHITE'lines of text.  Enter a S to save text.  '
  618. say WHITE'Enter an A to Abort your message and return to the main options menu.'
  619. say LBLUE'  [----:----:----:----:----:----]'
  620. indent = 1
  621. LINES:
  622. options prompt '?> '
  623. if indent = 0 then say PURPLE||line'>'WHITE;pull result
  624. if indent = 1 then say PURPLE||line'>'WHITE;pull result
  625.   text = result
  626. if text = 'S' | text = 's' then signal SAVE
  627. if text = 'A' | text = 'a' then do
  628.    call close file
  629.    signal MAINMENU
  630. end
  631. call writeln file, text
  632. if line = 9 then indent = 0
  633. if line=75 then do
  634.    say ' '
  635.         say YELLOW'Out of space.  Message being saved.....'
  636.    call close file
  637.    say ' '
  638.    say ' '
  639.    options prompt BLUE'Press enter to continue.'
  640.    pull result
  641.    call NOTIFY
  642.    signal MESSAGE
  643. end
  644. line = line + 1
  645. signal LINES
  646. SAVE:
  647.    call close file
  648.    say ' '
  649.    say YELLOW'Saving file.....'
  650. call NOTIFY
  651. signal MESSAGE
  652. DRAFT:
  653.         if drft = 1 then signal MAINMENU
  654.    if percentage>15 then do
  655.       say WHITE'You are not in a time of 'GREEN'total crisis'WHITE'.  You cannot draft'
  656.       say 'troops yet.'
  657.                 say ' '; say ' '
  658.       options prompt BLUE'Press enter to continue.'
  659.       pull result
  660.       signal MAINMENU
  661.    end
  662.         if moral<5 then do
  663.                 say WHITE'Your 'GREEN'army moral'WHITE' is suitable enough that there is no need to'
  664.                 say 'draft any more right now.'
  665.                 say ' '; say ' '
  666.                 options prompt BLUE'Press enter to continue.'
  667.                 pull result
  668.         signal MAINMENU
  669.         end
  670.    totaldraft = population/100
  671.    totaldraft = totaldraft*15
  672. POPULATION:
  673.    say CLS; say ' '; say ' '; say ' '
  674.    say WHITE'Out of 'GREEN||population||WHITE', only 'GREEN||totaldraft||WHITE' are in the condition'
  675.    say 'to be drafted.'
  676.    say ' '
  677.    say ' '
  678.    options prompt YELLOW'How many men do you want to draft 'WHITE'('RED'Max of 'totaldraft||WHITE')? '
  679.    pull result
  680.    answer = upper(result)
  681.    if answer = '' then signal POPULATION
  682.    if answer>totaldraft then do
  683.       say RED'You do not have those kind of resources...'YELLOW'try again.'
  684.       do count=1 to 50; end
  685.       signal POPULATION
  686.    end
  687.         say ' '; say ' '
  688.    say WHITE'You have drafted 'GREEN||answer||WHITE' men.'
  689.    say ' '
  690.    population = population - answer
  691.    men = men + answer
  692.    do count = 1 to 50; end
  693.    drft = 1
  694.         moral = moral - 1
  695. signal MAINMENU
  696. HELP:
  697.         mny = 0
  698.         say CLS
  699.    call open file, (file10),'R'
  700.         do until eof(file)
  701.                 mny = mny + 1
  702.                 data = readln(file)
  703.                 say data
  704.                 if mny = 20 then do
  705.                         options prompt 'More [Y/N]? '
  706.                         pull result
  707.                         answer = upper(result)
  708.                         if upper(answer) = 'Y' then mny = 0
  709.                 end
  710.                 if mny = 20 then signal OVERAE
  711.         end
  712. OVERAE:
  713.         call close file
  714.    signal MAINMENU
  715. TRADE:
  716.    say CLS
  717.    say ' '; say ' '; say ' '
  718.    options prompt GREEN'Who do you want to trade with 'WHITE'('RED'Q=Quit, L=List'WHITE')? '
  719.    pull result
  720.    aname = upper(result)
  721.    if aname = '' then signal TRADE
  722.    search = aname
  723.    call SELFCHECK
  724.    if flag = 1 then signal TRADE
  725.    if upper(aname)='Q' then signal MAINMENU
  726.    if upper(aname)='L' then do
  727.       call lister
  728.       signal TRADE
  729.    end
  730.    search = aname
  731.    call FIND
  732.    if sflag = 1 then signal FOUND
  733.    if flag = 0 then do
  734.       say LBLUE'Sorry, this user is not a member as of right now.'
  735.                 say ' '
  736.       options prompt BLUE'Press enter to continue.'
  737.       pull result
  738.    end
  739.    signal TRADE
  740. FOUND:
  741.    call close file
  742.    call ATTRIBUTEA
  743.    call ATTRIBUTEB
  744.    say PURPLE'Ok, member has been located.  Continue....'
  745. DISTRD:   
  746.         say ' '; say ' '; say CLS
  747.    say YELLOW'                            Main Trade Menu'
  748.    say ' '
  749.    say WHITE'[1]  'RED'Men'
  750.    say WHITE'[2]  'RED'Fighters'
  751.    say WHITE'[3]  'RED'Carriers'
  752.    say WHITE'[4]  'RED'Battle Ships'
  753.    say WHITE'[5]  'RED'Planets'
  754.    say WHITE'[6]  'RED'General Population'
  755.    say WHITE'[7]  'RED'Money'
  756.    say ' '; say ' '; say ' '
  757.    options prompt GREEN'Enter what you want to trade away 'WHITE'('RED'Q=Quit'WHITE')>> '
  758.    pull result
  759.    answer = upper(result)
  760.    if answer = '' then signal DISTRD
  761.    if upper(answer)='Q' then signal MAINMENU
  762.    if answer>7 then signal DISTRD
  763.    if answer<1 then signal DISTRD
  764.    say ' '; say ' '
  765.    if answer = 1 then do
  766.       tradeitem = 'Men'
  767.       max = men
  768.    end
  769.    if answer = 2 then do
  770.       tradeitem = 'Fighters'
  771.       max = fighters
  772.    end
  773.    if answer = 3 then do
  774.       tradeitem = 'Carriers'
  775.       max = carriers
  776.    end
  777.    if answer = 4 then do
  778.       tradeitem = 'Battle ships'
  779.       max = battleships
  780.    end
  781.    if answer = 5 then do
  782.       tradeitem = 'Planets'
  783.       max = planets
  784.    end
  785.    if answer = 6 then do
  786.       tradeitem = 'People'
  787.       max = population
  788.    end
  789.    if answer = 7 then do
  790.       tradeitem = 'Dollars'
  791.       max = money
  792.    end
  793. GETTRADE:
  794.    options prompt GREEN||tradeitem' to trade 'WHITE'('RED'Max of 'max||WHITE') ? '
  795.    pull result
  796.    trade = upper(result)
  797.    if trade = '' then signal 
  798.    if trade > max then do DISTRD
  799.       say WHITE'You do not have that many'GREEN||tradeitem'!'
  800.       signal GETTRADE
  801.    end
  802.    call ATTRIBUTEA
  803.    if answer = 1 then do
  804.       bmen = bmen + trade
  805.       men = men - trade
  806.    end
  807.    if answer = 2 then do
  808.       bfit = bfit + trade
  809.       fighters = fighters - trade
  810.    end
  811.    if answer = 3 then do
  812.       bcar = bcar + trade
  813.       carriers = carriers - trade
  814.    end
  815.    if answer = 4 then do
  816.       bbat = bbat + trade
  817.       battleships = battleships - trade
  818.    end
  819.    if answer = 5 then do
  820.       call ATTRIBUTEB
  821.       bpln = bpln + trade
  822.       planets = planets - trade
  823.       call WRTATTRB
  824.    end
  825.    if answer = 6 then do
  826.       bpop = bpop + trade
  827.       population = population - trade
  828.    end
  829.    if answer = 7 then do
  830.       call ATTRIBUTEB
  831.       bmny = bmny + trade
  832.       money = money - trade
  833.       call WRTATTRB
  834.    end
  835.    call WRTATTRA
  836.    call WRTATTRB
  837.    flags = 1
  838.    tradenumber = trade
  839.    datac= handle'  has made a trade of 'tradenumber||tradeitem' to you.'
  840.    datad= ' '
  841. REQUEST:
  842.    if flags= 1 then signal OVERPASS
  843.    flags = 0
  844.    say ' '
  845.    say ' '
  846.         say ' '; say ' '; say ' '
  847.         say CLS
  848.    options prompt GREEN 'Who do you want to trade with 'WHITE'('RED'L=List, Q=Quit'WHITE')? '
  849.    pull result
  850.    aname = upper(result)
  851.    if aname = '' then signal REQUEST
  852.    search = aname
  853.    call SELFCHECK
  854.    if flag= 1 then signal REQUEST
  855.    if upper(aname)='Q' then signal MAINMENU
  856.    if upper(aname)='L' then do
  857.       call lister
  858.       signal request
  859.    end
  860.    search = aname
  861.    call FIND
  862.    if sflag = 1 then do
  863.       aname = check
  864.       call ATTRIBUTEA
  865.       call ATTRIBUTEB
  866.       signal FOUNDB
  867.    end
  868.    say LBLUE'Sorry, this user is not currently on the membership role.'
  869.         say ' '; say ' '; say ' '
  870.    options prompt BLUE'Press enter to continue.'
  871.    pull result
  872.    signal REQUEST
  873. FOUNDB:
  874.    call close file
  875.    say PURPLE'Ok, user has been located.  Continue...'
  876.    jmpflg = 0
  877. OVERPASS:
  878.         say CLS
  879.    say YELLOW'                         Trade Request Menu'
  880.    say ' '; say ' '
  881.    say WHITE'[1]  'RED'Men'
  882.    say WHITE'[2]  'RED'Fighters'
  883.    say WHITE'[3]  'RED'Carriers'
  884.    say WHITE'[4]  'RED'Battle ships'
  885.    say WHITE'[5]  'RED'Planets'
  886.    say WHITE'[6]  'RED'General Population'
  887.    say WHITE'[7]  'RED'Money'
  888.    say ' '; say ' '; say ' '
  889.    options prompt GREEN'What do you request for a trade 'WHITE'('RED'Q=Quit'WHITE')? '
  890.    pull result
  891.    answer = upper(result)
  892.    if answer = '' then signal OVERPASS
  893.    if upper(answer) = 'Q' then do
  894.       if flags=1 then do
  895.          datae = handle' has not requested anything for the trade'
  896.          dataf = 'as of yet.'
  897.          signal TRADEMSGS
  898.       end   
  899.       if flags=0 then do
  900.          signal WHT
  901.       end
  902.    end
  903. FIGS:
  904.    if answer > 7 then signal OVERPASS
  905.    if answer < 1 then signal OVERPASS
  906.    if answer=1 then data = 'men'
  907.    if answer=2 then data = 'fighters'
  908.    if answer=3 then data = 'carriers'
  909.    if answer=4 then data = 'battle ships'
  910.    if answer=5 then data = 'planets'
  911.    if answer=6 then data = 'general population'
  912.    if answer=7 then data = 'dollars'
  913.         if (jmflg = 1) then do
  914.                 if answer = 2 then data = 'carriers'
  915.                 if answer = 3 then data = 'battle ships'
  916.                 if answer = 4 then data = 'planets'
  917.                 if answer = 5 then data = 'general population'
  918.                 if answer = 6 then data = 'dollars'
  919.         end
  920.    say ' '
  921.    if jmflg = 1 then signal JMA
  922.    options prompt GREEN'How many would you like to request? '
  923.    pull result
  924.    answer = upper(result)
  925.    if answer = '' then signal OVERPASS
  926.    datb = answer
  927.    datae = handle' would like to request 'datb||data' from you.  Please respond to his'
  928.    dataf = 'request whether you will trade with him or not.  '
  929.         if flags = 1 then signal TRADEMSGS
  930. WHT:
  931.         say ' '; say CLS
  932.    say YELLOW'                       Trade Return Menu'
  933.    say ' '; say ' '; say ' ';
  934.    say WHITE'[1]  'RED'Men'
  935.    say WHITE'[2]  'RED'Carriers'
  936.    say WHITE'[3]  'RED'Battle Ships'
  937.    say WHITE'[4]  'RED'Planets'
  938.    say WHITE'[5]  'RED'General Population'
  939.    say WHITE'[6]  'RED'Money'
  940.    say ' '; say ' '
  941.    options prompt GREEN'What will you give in return 'WHITE'('RED'Q=Quit'WHITE')? '
  942.    pull result
  943.    answer = upper(result)
  944.    jmflg = 1
  945.    if answer = '' then signal WHT
  946.    call FIGS
  947. JMA:
  948.    jmpflg = 0
  949.    datah = data
  950.         say ' '
  951.    options prompt GREEN'How many will you give? '
  952.    pull result
  953.    number = upper(result)
  954.    if number = '' then signal JMA
  955.    if upper(number) = 'Q' then do
  956.       datag = handle' has not promised anything in return however.'
  957.       signal TRADEMSGS
  958.    end
  959.         say ' '
  960.    datag = 'In return 'handle' will give you 'number||datah'.'
  961. TRADEMSGS:
  962.    call open file, (file3'-'msgnumber),'W'
  963.       if flags = 1 then do
  964.          call writeln file, datac
  965.          call writeln file, datad
  966.       end
  967.       call writeln file, datae
  968.       call writeln file, dataf
  969.       call writeln file, datag
  970. TRADENOTIFY:
  971.    aname = listname
  972.         say ' '; say ' '
  973.    say YELLOW||aname||RED'will be notified the next time they enter the game.'
  974.         say ' '; say ' '
  975.    options prompt BLUE'Press enter to continue.'
  976.    pull result
  977.    call close file
  978.    title = 'Trade Information'
  979.    call WRTATTRA
  980.    call WRTATTRB
  981.    call YOUUPDTA
  982.    call YOUUPDTB
  983.    realhandle = handle
  984.    handle = 'Stellar War Trading Post'
  985. call NOTIFY
  986. handle = realhandle
  987. flags = 0
  988. signal MAINMENU
  989. ENDDIE:
  990.    signal MAINMENU
  991. MARKET:
  992.         say CLS
  993.    say YELLOW'                            Stellar War Market'
  994.    say ' '; say ' '; say ' '; say ' '; say ' '
  995.    say WHITE'[1]  'RED'Buy supplies for your army'
  996.    say WHITE'[2]  'RED'Sell supplies of your army'
  997.         say ' '; say ' '; say ' '; say ' '
  998.    options prompt GREEN'Enter your choice 'WHITE'('RED'Q=Quit'WHITE')? '
  999.    pull result
  1000.    answer = upper(result)
  1001.    if answer = '1' then signal BUY
  1002.    if answer = '2' then signal SELL
  1003.    if upper(answer) = 'Q' then signal MAINMENU
  1004. signal MARKET
  1005. BUY:
  1006.    say CLS
  1007.    say YELLOW'                            Supply Menu'
  1008.    say ' '; say ' '; say ' '
  1009.    say RED'Num.'WHITE'| 'YELLOW' Description'WHITE'     |'PURPLE'      Cost  'WHITE'  |   'GREEN'Current'
  1010.    say WHITE'----+------------------+--------------+-----------'
  1011.    say RED' 1  'WHITE'| 'YELLOW' Soldiers    'WHITE'    |'PURPLE'       1000 'WHITE'  |   'GREEN||men
  1012.    say RED' 2  'WHITE'| 'YELLOW' Fighters    'WHITE'    |'PURPLE'      10000 'WHITE'  |   'GREEN||fighters
  1013.    say RED' 3  'WHITE'| 'YELLOW' Carriers    'WHITE'    |'PURPLE'      14000 'WHITE'  |   'GREEN||carriers
  1014.    say RED' 4  'WHITE'| 'YELLOW' Battle Ships'WHITE'    |'PURPLE'      17000 'WHITE'  |   'GREEN||battleships
  1015.    say RED' 5  'WHITE'| 'YELLOW' Planets     'WHITE'    |'PURPLE'      40000 'WHITE'  |   'GREEN||planets
  1016.    say WHITE'--------------------------------------------------'
  1017.    say ' '; say ' '
  1018.    say PURPLE'You currently have 'WHITE||money||PURPLE' dollars.'
  1019.         say ' '
  1020.    options prompt GREEN'Enter item to purchase 'WHITE'('RED'Q=Quit'WHITE') >> '
  1021.    pull result 
  1022.    answer = upper(result)
  1023.    if answer = '' then signal BUY
  1024.    if upper(answer)='Q' then signal MARKET
  1025.    if answer<1 then signal BUY
  1026.    if answer>5 then signal BUY
  1027.    if answer = 1 then cost = 1000
  1028.    if answer = 2 then cost = 10000
  1029.    if answer = 3 then cost = 14000
  1030.    if answer = 4 then cost = 17000
  1031.    if answer = 5 then cost = 40000
  1032.    call FIGITEM
  1033.    call TRUNCMAX
  1034. HOWMANY:
  1035.         say ' '
  1036.    options prompt GREEN'How many 'item' do you want 'WHITE'('RED'Max of 'max||WHITE')? '
  1037.    pull result
  1038.    answer = upper(result)
  1039.    if answer = '' then signal BUY
  1040.    if answer>max then do
  1041.       say RED'You do not have that kind of money!'
  1042.       signal HOWMANY
  1043.    end
  1044.     if (answer<0) then do
  1045.         say GREEN'We do not sell 'WHITE'NEGATIVE'GREEN||item'!'
  1046.         signal HOWMANY
  1047.     end
  1048.    money = money - (answer*cost)
  1049.    if item = 'men' then men=men+answer
  1050.    if item = 'fighters' then fighters = fighters + answer
  1051.    if item = 'carriers' then carriers = carriers + answer
  1052.    if item = 'battleships' then battleships = battleships + answer
  1053.    if item = 'planets' then planets = planets + answer
  1054. signal BUY
  1055. FIGITEM:
  1056.    if answer = 1 then item = 'men'
  1057.    if answer = 2 then item = 'fighters'
  1058.    if answer = 3 then item = 'carriers'
  1059.    if answer = 4 then item = 'battleships'
  1060.    if answer = 5 then item = 'planets'
  1061. RETURN
  1062. TRUNCMAX:
  1063.    temp = (money/cost)
  1064.         max = trunc(temp)
  1065. RETURN
  1066. SELL:
  1067.         say CLS
  1068.    say YELLOW'                           Stellar War Selling Market'
  1069.    say ' '; say ' '; say ' '
  1070.    say RED'Num.'WHITE'|'YELLOW'   Description            'WHITE' |   'GREEN'Re-Sale Price   'WHITE'|  'PURPLE'Current'
  1071.    say WHITE'----+---------------------------+-------------------+---------'
  1072.    say RED' 1  'WHITE'|'YELLOW'   Soldiers               'WHITE' |   'GREEN'      750       'WHITE'|  'PURPLE||men
  1073.    say RED' 2  'WHITE'|'YELLOW'   Fighters               'WHITE' |   'GREEN'     6500       'WHITE'|  'PURPLE||fighters
  1074.    say RED' 3  'WHITE'|'YELLOW'   Carriers               'WHITE' |   'GREEN'     9000       'WHITE'|  'PURPLE||carriers
  1075.    say RED' 4  'WHITE'|'YELLOW'   Battle Ships           'WHITE' |   'GREEN'    11050       'WHITE'|  'PURPLE||battleships
  1076.    say RED' 5  'WHITE'|'YELLOW'   Planets                'WHITE' |   'GREEN'    28000       'WHITE'|  'PURPLE||planets
  1077.    say WHITE'----+---------------------------+-------------------+---------'
  1078.    say ' '; say ' ';
  1079.    say PURPLE'You currently have 'YELLOW||money||PURPLE' dollars. '
  1080.         say ' '
  1081.    options prompt GREEN'What do you want to sell 'WHITE'('RED'Q=Quit'WHITE')? '
  1082.    pull result
  1083.    answer = upper(result)
  1084.    if upper(answer)='Q' then signal MARKET
  1085.    if answer='' then signal SELL
  1086.    if answer = 1 then max = men - (fighters + carriers + battleships)
  1087.    if answer = 2 then max = fighters
  1088.    if answer = 3 then max = carriers
  1089.    if answer = 4 then max = battleships
  1090.    if answer = 5 then max = (planets - 1)
  1091.         if answer>5 then signal SELL
  1092.         if answer<1 then signal SELL
  1093. RESK:
  1094.         say ' '
  1095.         if max<1 then do
  1096.                 say GREEN'Sorry, but you have none to sell.'
  1097.                 hotkey BLUE'Press enter to continue.'
  1098.                 signal SELL
  1099.         end
  1100.    options prompt GREEN'How many do you want to sell 'WHITE'('RED'Max of 'max||WHITE')? '
  1101.    pull result
  1102.    amount = upper(result)
  1103.    if amount>max then do
  1104.       say RED'You do not have that many!'
  1105.       signal RESK
  1106.    end
  1107.    if amount=0 then signal SELL
  1108.         if amount<0 then signal SELL
  1109.    if answer = 1 then do
  1110.       men = men - amount
  1111.       money = money + amount*750
  1112.       say LBLUE'You have received 'YELLOW||amount*750||LBLUE' dollars for your sale.'
  1113.    end
  1114.    if answer = 2 then do
  1115.       fighters = fighters - amount
  1116.       money = money + amount*6500
  1117.       say LBLUE'You have received 'YELLOW||amount*6500||LBLUE' dollars for your sale.'
  1118.    end
  1119.    if answer = 3 then do
  1120.       carriers = carriers - amount
  1121.       money = money + amount*9000
  1122.       say LBLUE'You have received 'YELLOW||amount*9000||LBLUE' dollars for your sale.'
  1123.    end
  1124.    if answer = 4 then do
  1125.       battleships = battleships - amount
  1126.       money = money + amount*11050
  1127.       say LBLUE'You have received 'YELLOW||amount*11050||LBLUE' dollars for your sale.'
  1128.    end
  1129.         if answer = 5 then do
  1130.                 planets = planets - amount
  1131.                 money = money + amount*28000
  1132.                 say LBLUE'You have received 'YELLOW||amount*28000||LBLUE' dollars for your sale.'
  1133.         end
  1134.         say ' '; say ' '
  1135.    options prompt BLUE'Press enter to continue.'
  1136.    pull result
  1137. signal SELL
  1138. WAR:
  1139.         say CLS
  1140.    say YELLOW'                             Main War Menu'
  1141.         say ' '; say ' '
  1142.         say ' '; say ' '; say ' '; say ' '
  1143.    say WHITE'[1]  'RED'Engage in war'
  1144.    say WHITE'[2]  'RED'Spy on other players'
  1145.    say WHITE'[3]  'RED'List of other players'
  1146.    say WHITE'[4]  'RED'Quit to main menu'
  1147.    say ' '; say ' '; say ' '
  1148.    options prompt GREEN'Enter your choice>> 'WHITE
  1149.    pull result
  1150.    answer = upper(result)
  1151.    if answer = '' then signal WAR
  1152.    if answer = '1' then signal WARMENU
  1153.    if answer = '2' then signal SPYMENU
  1154.    if answer = '3' then do
  1155.       call open file, (file7),'R'
  1156.       do until eof(file)
  1157.          listname = readln(file)
  1158.          say listname
  1159.       end
  1160.        call close file
  1161.       options prompt BLUE'Press enter to continue.'
  1162.       pull result
  1163.    end
  1164.    if answer = '4' then signal MAINMENU
  1165. signal WAR
  1166.  
  1167. WARMENU:
  1168.         if wrtms = 8 then do
  1169.                 say RED' You have already engaged in too many battles today.  Your'
  1170.                 say ' troops grow weary.'
  1171.                 options prompt BLUE'Press enter to continue.'
  1172.                 pull result
  1173.         signal WAR
  1174.         end
  1175.         if planets<1 then do
  1176.                 say RED' You do not have enough planets to engage in war.  You are not'
  1177.                 say 'permitted to engage in war until you have at least 1 planet.'
  1178.                 options prompt BLUE'Press enter to continue.'
  1179.                 pull result
  1180.                 signal WAR
  1181.         end
  1182.         say ' '; say ' '; say ' '
  1183.         say CLS
  1184.    options prompt GREEN'Who do you want to engage in war with 'WHITE'('RED'L=List, Q=Quit'WHITE')? '
  1185.    pull result
  1186.    enemy = upper(result)
  1187.    if enemy = '' then signal WARMENU
  1188.    if upper(enemy)='Q' then signal WAR
  1189.    if upper(enemy)='L' then do
  1190.       call LISTER
  1191.       signal WARMENU
  1192.    end
  1193.    search = enemy
  1194.    call SELFCHECK
  1195.    if flag = 1 then signal WARMENU
  1196.    call FIND
  1197.    if sflag = 1 then signal AIGHT
  1198.         say ' '; say ' '
  1199.    say LBLUE' Sorry, this user has not been found.'
  1200.         say ' '
  1201.    options prompt BLUE'Press enter to continue.'
  1202.    pull result
  1203.    signal WAR
  1204. AIGHT:
  1205.         wrtms = wrtms + 1
  1206.    enemy = listname
  1207.    call ATTRIBUTEA
  1208.    call ATTRIBUTEB
  1209.         if bpln = 0 then do
  1210.                 say RED'Sorry, this user is in protection due to his vulnerability.  This will'
  1211.                 say RED'change soon, so keep trying!'
  1212.                 signal WARMENU
  1213.         end
  1214.         say CLS
  1215.    options prompt GREEN'Send how many men 'WHITE'('RED'Max of 'men||WHITE')? '
  1216.    pull result
  1217.    smen = upper(result)
  1218.    if smen = '' then smen = men
  1219.    if smen>men then do
  1220.                 say ' '
  1221.       say RED' Sorry, you do not have that many men.'
  1222.                 say ' '; say ' '
  1223.       options prompt BLUE'Press enter to continue.'
  1224.       pull result
  1225.       signal AIGHT
  1226.    end
  1227. SFIGHT:
  1228.    say YELLOW||smen' men are now prepared to fight.'
  1229.         say ' '
  1230.    options prompt GREEN'Send how many fighters 'WHITE'('RED'Max of 'fighters||WHITE')? '
  1231.    pull result
  1232.    sfighters = upper(result)
  1233.    if sfighters = '' then sfighters = fighters
  1234.    if sfighters>fighters then do
  1235.                 say ' '
  1236.       say RED' Sorry, you do not have that many fighters.'
  1237.                 say ' '
  1238.       options prompt BLUE'Press enter to continue.'
  1239.       pull result
  1240.       signal SFIGHT
  1241.    end
  1242. SCARR:
  1243.    say YELLOW||sfighters' fighters are now prepared to fight.'
  1244.         say ' '
  1245.    say WHITE' Each carrier can hold 150 men. '
  1246.    options prompt GREEN'Send how many carriers (Max of 'carriers')? '
  1247.    pull result
  1248.    scarrier = upper(result)
  1249.    if scarrier = '' then scarrier = carriers
  1250.    if scarrier>carriers then do
  1251.                 say ' '
  1252.       say RED' Sorry, you do not have that many carriers.'
  1253.                 say ' '
  1254.       options prompt BLUE'Press enter to continue.'
  1255.       pull result
  1256.       signal SCARR
  1257.    end
  1258. SBATT:
  1259.    say YELLOW||scarrier' carriers are now prepared to fight.'
  1260.    mostmen = scarrier*150
  1261.    if mostmen<smen then do
  1262.       smen = mostmen
  1263.       say RED' Since you have only sent 'scarrier' carriers'
  1264.       say'  you can only hold'
  1265.       say' a total of 'smen' men.'
  1266.    end
  1267.    atotal = 0; btotal = 0
  1268.    if moral = 1 then amoral=5
  1269.    if moral = 2 then amoral=4
  1270.    if moral = 3 then amoral=3
  1271.    if moral = 4 then amoral=2
  1272.    if moral = 5 then amoral=1
  1273.    if bmor = 1 then bmoral=5
  1274.    if bmor = 2 then bmoral=4
  1275.    if bmor = 3 then bmoral=3
  1276.    if bmor = 4 then bmoral=2
  1277.    if bmor = 5 then bmoral=1
  1278.    btotal = btotal + bmoral*500
  1279.    atotal = atotal + amoral*500
  1280.         say ' '
  1281.    options prompt GREEN'Send how many battle ships 'WHITE'('RED'Max of 'battleships||WHITE')? '
  1282.    pull result
  1283.    sbattle = upper(result)
  1284.    if sbattle = '' then sbattle = battleships
  1285.    if sbattle>battleships then do
  1286.                 say ' '
  1287.       say RED' Sorry, you do not have that many battle ships.'
  1288.                 say ' '
  1289.       options prompt BLUE'Press enter to continue.'
  1290.       pull result
  1291.       signal SBATT
  1292.    end
  1293.    say YELLOW||sbattle' battle ships are now prepared to fight.'
  1294.    do t=1 to 500; end
  1295.         say CLS
  1296.    say LBLUE' You are off to battle....'
  1297.    atotal = atotal + smen*10
  1298.    say GREEN'Your generals have given the order for your men to charge....'
  1299.    say GREEN'   They are now storming the enemy headquarters...'
  1300.    do x=1 to 500; end
  1301.         call open file, (file17'-'count'.dat'),'R'
  1302.                 sendmen = readln(file)
  1303.                 sendfit = readln(file)
  1304.                 sendbat = readln(file)
  1305.                 sendcar = readln(file)
  1306.         call close file
  1307.    bbmen = bmen*(sendmen/100); bbmen = trunc(bbmen)
  1308.         bbcara = (sendcar/100)
  1309.         bbcar = bcar * bbcara
  1310.         bbcar = trunc(bbcar)
  1311.  
  1312.         /* bbmen = bmen*(sendmen/100); bbmen = trunc(bbmen) */
  1313.         /* bbcar = bcar*(sendcar/100); bbcar = trunc(bbcar) */
  1314.         /* if bbmen>(bbcar*150) then bbmen = bbcar*150 */
  1315.  
  1316.         if bmen > (bbcar*150) then bbmen = (bbcar*150)
  1317.    bbfit = bfit*(sendfit/100); bbfit = trunc(bbfit)
  1318.    bbbat = bbat*(sendbat/100); bbbat = trunc(bbbat)
  1319. CALCPASS:
  1320.    btotal = btotal + bbmen
  1321.    if (bbmen>(smen*10)) then say RED'The enemy manages to suppress their attempts.  The men are retreating.'
  1322.    if (bbmen<(smen*10)) then say YELLOW'You have overcome the enemies troops.'
  1323.    if (bbmen=(smen*10)) then say LBLUE'Neither side has broken.  This fighting is not working at all.'
  1324.    do x=1 to 500; end
  1325.    atotal = atotal + sfighters*75
  1326.    dbbfit = random(bbfit,bfit,time('s'))*75
  1327.         say ' '
  1328.    say GREEN'Your fighters have now entered the battle and are blasting away at'
  1329.    say '   the enemy fortresses....'
  1330.    do x=1 to 500; end
  1331.    btotal = btotal + dbbfit
  1332.    if (dbbfit>(sfighters*75)) then say RED'The enemies fighters suppress your attack.'
  1333.    if (dbbfit<(sfighters*75)) then say YELLOW'Your fighters have destroyed a large portion of the enemies territory.'
  1334.    if (dbbfit=(sfighters*75)) then say LBLUE'Niether side has broken.  This fighting is not working at all.'
  1335.    do x=1 to 500; end
  1336.    atotal = atotal + sbattle*300
  1337.         say ' '
  1338.    say GREEN'Your battleships have now engaged in firing on the enemy.  The heavy'
  1339.    say '  has begun to wear down the enemy, but now his battleships enter the'
  1340.    say '  battle as well.'
  1341.    atotal = atotal + random(1,30,time('s'))*100
  1342.    cbbat1 = random(bbbat,bbat,time('s'))
  1343.    cbbat = cbbat1 * 300
  1344.    /* was cbbat = (bbbat,bbat,time('s')) *300  */
  1345.    btotal = btotal + cbbat
  1346.    do x=1 to 500; end
  1347.    temp = sbattle*300
  1348.    if (cbbat<temp) then say RED'The enemies battleships are now retreating back to their base.'
  1349.    if (cbbat>temp) then say YELLOW'The enemies battleships have driven your fleet back.'
  1350.    if (cbbat=temp) then say LBLUE'Neither side has broken.  This fighting is not working at all.'
  1351.    atotal = atotal + planets*25
  1352.    btotal = btotal + random(1,30,time('s'))*100
  1353.    btotal = btotal + bpln*25
  1354.    if atotal>btotal then do
  1355.       overall = atotal-btotal
  1356.       wins = wins + 1
  1357.       blos = blos + 1
  1358.                 points = atotal - btotal
  1359.       favor = 1
  1360.    end
  1361.    if atotal<btotal then do
  1362.       overall = btotal-atotal
  1363.       bwin = bwin + 1
  1364.       losses = losses + 1
  1365.                 bpts = btotal - atotal
  1366.       favor = 2
  1367.    end
  1368.    if atotal=btotal then do
  1369.       overall = 1
  1370.       favor = random(1,2,time('s'))
  1371.    end
  1372.  
  1373.         say ' '; say ' '
  1374.    say YELLOW'                              NEWS FLASH!!!!'
  1375.    say GREEN'                              =============='
  1376.    if overall<2000 then do
  1377.                 say ' '; say ' '
  1378.       say LBLUE'The battle raged on for months with virutally nothing lost or gained on'
  1379.       say 'either side.  The soldiers began to flee.  For a long time it appeared that'
  1380.       say 'neither side would win the battle.  'handle' set out with all the men he'
  1381.       say 'gather and rushed 'enemy' and his forces.  This became the most critical '
  1382.       say 'period of the war. '
  1383.       if favor=1 then say handle
  1384.       if favor=2 then say enemy
  1385.       say 'ended up making a critical error.  That error was simply underestimating'
  1386.       say 'the forces of '
  1387.       if favor=1 then say enemy'.'
  1388.       if favor=2 then say handle'.'
  1389.       say '  As the war finally came to an end, both sides suffered tremendous loss of'
  1390.       say 'men, but in the end there was only one victor.  That victor was none other'
  1391.       say' than... '
  1392.       if favor=1 then say handle'.'
  1393.       if favor=2 then say enemy'.'
  1394.                 say ' '; say ' '
  1395.       options prompt BLUE'Press enter to continue.'
  1396.       pull result
  1397.       losspercentl = 0.25; losspercentw = 0.4;
  1398.       signal LOSSES
  1399.    end
  1400.    if overall<5000 then do
  1401.       say LBLUE' The battle, all though at first very close, soon shifted in the favor of'
  1402.       if favor = 1 then say handle'.'
  1403.       if favor = 2 then say enemy'.'
  1404.       say 'Although this was not a battle of total domination, it was a'
  1405.       say ' significant victory for '
  1406.       if favor = 1 then say handle'.'
  1407.       if favor = 2 then say enemy'.'
  1408.       say '  The losses were not very heavy for'
  1409.       say 'either side since this was such a short battle.  '
  1410.       losspercentl = 0.15; losspercentw = 0.12;
  1411.       signal LOSSES
  1412.    end
  1413.    if overall<9000 then do
  1414.       say LBUE'This battle will be known as one of the shorter ones in this galaxy.  It'
  1415.       say 'was not one of the easiest however.  Both sides suffered, but even that was'
  1416.       say 'not very significant.  In the end it became a very easy victory for '
  1417.       if favor = 1 then say handle'.'
  1418.       if favor = 2 then say enemy'.'
  1419.       losspercentl = 0.10; losspercentw = 0.02
  1420.       signal LOSSES
  1421.    end
  1422.    if overall>8999 then do
  1423.       say LBLUE'A battle such as this can only be described as one thing.  Total Domination.'
  1424.       if favor = 1 then say handle
  1425.       if favor = 2 then say enemy
  1426.       say 'virtually crushed the weak forces of '
  1427.       if favor = 1 then say enemy'.'
  1428.       if favor = 2 then say handle'.'
  1429.       say 'The losses were very insignificant because of the speed in which it was'
  1430.       say 'over.'
  1431.       losspercentl = 0.07; losspercentw = 0.02
  1432.       signal LOSSES
  1433.    end
  1434. LOSSES:
  1435.    if favor=2 then do
  1436.       lamen = smen*losspercentl; lafit = sfighters*losspercentl; labat = sbattle*losspercentl; lapln = planets*losspercentl; lacar = carriers*losspercentl
  1437.       lamen = trunc(lamen); lafit = trunc(lafit); labat = trunc(labat); lapln = trunc(lapln); lacar = trunc(lacar)
  1438.       lbmen = lamen*losspercentw; lbfit = lafit*losspercentw; lbbat = labat*losspercentw; lbpln = lapln*losspercentw;lbcar = lacar*losspercentw;
  1439.       lbmen = trunc(lbmen); lbfit = trunc(lbfit); lbbat = trunc(lbbat); lbpln = trunc(lbpln); lbcar = trunc(lbcar)
  1440.            if (lbmen<0) then lbmen=random(1,10,time('s')); if (lbfit<0) then lbfit=random(1,2,time('s')); if (lbbat<0) then lbbat=random(1,3,time('s'))
  1441.                 if (lbpln<0) then lbpln=random(0,1,time('s')); if (lbcar<0) then lbcar=random(0,3,time('s'))
  1442.    end
  1443.    if favor=1 then do
  1444.                 lbmen = bbmen*losspercentl
  1445.                 lbfit = bbfit*losspercentl
  1446.                 lbbat = bbbat*losspercentl
  1447.                 lbpln = bpln*losspercentl
  1448.                 lbcar = bbcar*losspercentl
  1449.  lbmen = trunc(lbmen)
  1450.  lbfit = trunc(lbfit)
  1451.  lbbat = trunc(lbbat)
  1452.  lbpln = trunc(lbpln)
  1453.  lbcar = trunc(lbcar) /* was l = trunc(l) */
  1454.                 lamen = lbmen*losspercentw
  1455.  lafit = lbfit*losspercentw
  1456.  labat = lbbat*losspercentw
  1457.  lapln = lbpln*losspercentw
  1458.  lacar = lbcar*losspercentw /* was lacar = l*losspercentw */
  1459.                 lamen = trunc(lamen); lafit = trunc(lafit); labat = trunc(labat); lapln = trunc(lapln); lacar = trunc(lacar)
  1460.            if (lamen<0) then lamen=random(1,10,time('s')); if (lafit<0) then lafit=random(1,2,time('s')); if (labat<0) then labat=random(1,3,time('s'))
  1461.                 if (lapln<0) then lapln=random(0,1,time('s')); if (lacar<0) then lacar=random(0,3,time('s'))
  1462.    end
  1463.         if favor = 1 then do
  1464.       if lbpln=0 then lbpln=1
  1465.    end
  1466.    if favor = 2 then do
  1467.       if lapln=0 then lapln=1
  1468.    end
  1469.     if (population<0) then population = 0
  1470.     if (bpop<0) then bpop = 0
  1471.         say ' '
  1472.    options prompt 'Press any key to continue.'
  1473.    pull result
  1474.    say CLS
  1475.    say YELLOW'                            BATTLE SUMMARY'
  1476.    say  GREEN'                            =============='
  1477.    say ''
  1478.    say RED'             Name: 'WHITE||handle
  1479.    if favor=1 then say RED'           Status: 'WHITE'Victor'
  1480.    if favor=2 then say RED'           Stauts: 'WHITE'Conquered'
  1481.    say RED'         Men Lost: 'WHITE||lamen
  1482.    say RED'    Fighters Lost: 'WHITE||lafit
  1483.    say RED'    Carriers Lost: 'WHITE||lacar
  1484.    say RED' BattleShips Lost: 'WHITE||labat
  1485.    if favor=1 then say RED'     Planets Lost: 'WHITE'0'
  1486.    if favor=2 then say RED'     Planets Lost: 'WHITE||lapln
  1487.    if favor=1 then say RED'   Planets Gained: 'WHITE||lbpln
  1488.    if favor=2 then say RED'   Planets Gained: 'WHITE'0'
  1489.    say ' '
  1490.    say RED'             Name: 'WHITE||enemy
  1491.    if favor=2 then say RED'           Status: 'WHITE'Victor'
  1492.    if favor=1 then say RED'           Status: 'WHITE'Conquered'
  1493.    say RED'         Men Lost: 'WHITE||lbmen
  1494.    say RED'    Fighters Lost: 'WHITE||lbfit
  1495.    say RED'    Carriers Lost: 'WHITE||lbcar /* was l */
  1496.    say RED' BattleShips Lost: 'WHITE||lbbat
  1497.    if favor=2 then say RED'     Planets Lost: 'WHITE'0'
  1498.    if favor=1 then say RED'     Planets Lost: 'WHITE||lbpln
  1499.    if favor=2 then say RED'   Planets Gained: 'WHITE||lapln
  1500.    if favor=1 then say RED'   Planets Gained: 'WHITE'0'
  1501.    men = men - lamen; fighters = fighters - lafit; carriers = carriers - lacar
  1502.    battleships = battleships - labat
  1503.    if favor = 1 then do
  1504.       planets = planets + lbpln
  1505.       bpln = bpln - lbpln
  1506.    end
  1507.    bmen = bmen - lbmen; bfit = bfit - lbfit
  1508.    bcar = bcar - lbcar /* was all fucked up as = - l and that was it */
  1509.    bbat = bbat - lbbat
  1510.    if favor = 2 then do
  1511.       planets = planets - lapln
  1512.       bpln = bpln + lapln
  1513.    end
  1514.    options prompt BLUE'Press enter to continue.'
  1515.    pull result
  1516.    if favor=1 then enmpop = lbpln*10000
  1517.    if favor=2 then enmpop = lapln*10000
  1518.    enmcas = enmpop * losspercentl
  1519.    enmpop = enmpop - enmcas
  1520.    tempa = enmpop*.2; tempa = tempa/10; tempa = trunc(tempa)
  1521.    tempb = enmpop*.4; tempb = tempb/10; tempb = trunc(tempb)
  1522.    enmrec = random(tempa,tempb,time('s'))
  1523.    enmrec = enmrec*10
  1524.    enmpop = enmpop - enmrec
  1525.    tempa = enmpop*.2; tempa = tempa/100; tempa = trunc(tempa)
  1526.    tempb = enmpop*.25; tempb = tempb/100; tempb = trunc(tempb)
  1527.    enmesc = random(tempa,tempb,time('s'))
  1528.    enmesc = enmesc*100; enmesc = enmesc + random(1,99,time('s'))
  1529.    enmpop = enmpop - enmesc
  1530.    enmgen = enmpop
  1531.    if favor=1 then do
  1532.       population = population + enmgen
  1533.                 bpop = bpop - enmgen
  1534.                 bpop = bpop + enmesc
  1535.       men = men + enmrec
  1536.       enmbcas = enmcas
  1537.       enmacas = 0
  1538.    end
  1539.    if favor=2 then do
  1540.       population = population - enmgen
  1541.       population = population + enmesc
  1542.       bpop = bpop + enmgen
  1543.       bmen = bmen + enmrec
  1544.       enmbcas = 0
  1545.       enmacas = enmcas
  1546.    end
  1547.         say CLS
  1548.    say YELLOW'                                POPULATION SUMMARY'
  1549.    say GREEN'                                =================='
  1550.    say ' '; say ' '; say ' '
  1551.    if favor = 1 then do
  1552.       say RED'                Enemy Casualties: 'WHITE||enmbcas
  1553.       say RED'           Recruits to your army: 'WHITE||enmrec
  1554.       say RED' People added to your population: 'WHITE||enmgen
  1555.       say RED'   People escaped to home planet: 'WHITE||enmesc
  1556.    end
  1557.    if favor = 2 then do
  1558.       say RED'                 Your Casualties: 'WHITE||enmacas
  1559.       say RED'        Recruits to enemies army: 'WHITE||enmrec
  1560.       say RED'  People added to his population: 'WHITE||enmgen
  1561.       say RED'       People who escaped to you: 'WHITE||enmesc
  1562.    end
  1563.    call WRTATTRA; call WRTATTRB
  1564.    call YOUUPDTA; call YOUUPDTB
  1565.    title = 'War Information'
  1566.    dataa = 'Your empire has been attacked by 'handle'.  Here is a briefing'
  1567.    datab = 'on your battle statistics:'
  1568.    if favor = 2 then datac = '           Status: Victor'
  1569.    if favor = 1 then datac = '           Status: Conquered'
  1570.    datad = '        Men Lost: 'lbmen
  1571.    datae = '   Fighters Lost: 'lbfit
  1572.    dataf = '   Carriers Lost: 'lbcar /* was l */
  1573.    datag = 'BattleShips Lost: 'lbbat
  1574.    if favor = 2 then datah = '  Planets Gained: 'lapln
  1575.    if favor = 1 then datah = '    Planets Lost: 'lbpln
  1576.    call open file, (file3'-'msgnumber),'W'
  1577.       call writeln file, dataa
  1578.       call writeln file, datab
  1579.       call writeln file, datac
  1580.       call writeln file, datad
  1581.       call writeln file, datae
  1582.       call writeln file, dataf
  1583.       call writeln file, datag
  1584.       call writeln file, datah
  1585.    call close file
  1586.         call open file, (file5),'A'
  1587.                 if favor = 1 then data = ''handle' defeated 'enemy' in a war.'
  1588.                 if favor = 2 then data = ''enemy' defeated 'handle' in a war.'
  1589.                 call writeln file, data
  1590.         call close file
  1591.    realhandle = handle
  1592.    handle = 'Stellar War Battle Monitor'
  1593.    call NOTIFY
  1594.    handle = realhandle
  1595.    say ' '; say ' '; say ' '; say ' '; say ' '
  1596.    options prompt BLUE'Press enter to continue.'
  1597.    pull result
  1598. signal WAR
  1599. SPYMENU:
  1600.         say ' '; say ' '; say ' '
  1601.         say CLS
  1602.    options prompt GREEN'Who do you want to spy on 'WHITE'('RED'L=List,Q=Quit'WHITE')? '
  1603.    pull result
  1604.    aname = upper(result)
  1605.    if aname = '' then signal SPYMENU
  1606.    if upper(aname)='L' then do
  1607.       call lister
  1608.       signal SPYMENU
  1609.    end
  1610.    if upper(aname)='Q' then signal WAR
  1611.    search = aname
  1612.    call FIND
  1613.    if sflag = 0 then do
  1614.                 say ' '; say ' '
  1615.       say RED'Sorry, this user does not exist.'
  1616.                 say ' '; say ' '; say ' '
  1617.       options prompt BLUE'Press enter to continue.'
  1618.       pull result
  1619.       signal WAR
  1620.    end
  1621.         sk = 0
  1622.    if (upper(aname))=(upper(spyname)) then do sk = 1; signal SPYSKIP; end
  1623.         flpop = 0; flmen = 0; flfit = 0; flcar = 0
  1624.    flpln = 0; flpln = 0; flmny = 0; flbat = 0
  1625. SPYSKIP:
  1626.    aname = listname
  1627.    call ATTRIBUTEA
  1628.    call ATTRIBUTEB
  1629.    if flpop=1 then signal SPYSKIPA
  1630.    fpop = 'UNKNOWN'
  1631. SPYSKIPA:
  1632.    if flmen=1 then signal SPYSKIPB
  1633.    fmen = 'UNKNOWN'
  1634. SPYSKIPB:
  1635.    if flfit=1 then signal SPYSKIPC
  1636.    ffit = 'UNKNOWN'
  1637. SPYSKIPC:
  1638.    if flcar=1 then signal SPYSKIPD
  1639.    fcar = 'UNKNOWN'
  1640. SPYSKIPD:
  1641.    if flbat=1 then signal SPYSKIPE
  1642.    fbat = 'UNKNOWN'
  1643. SPYSKIPE:
  1644.    if flmor=1 then signal SPYSKIPF
  1645.    fmor = 'UNKNOWN'
  1646. SPYSKIPF:
  1647.    if flpln=1 then signal SPYSKIPG
  1648.    fpln = 'UNKNOWN'
  1649. SPYSKIPG:
  1650.    if flmny=1 then signal SPYSCR
  1651.    fmny = 'UNKNOWN'
  1652. SPYSCR:
  1653.    say CLS
  1654.    say YELLOW'                                 Spy Menu'
  1655.    say ' '; say ' '
  1656.    say RED'Now spying on : 'WHITE||aname
  1657.    say ' '
  1658.    say RED'Number 'WHITE'| 'GREEN'Spy on          'WHITE' |  'PURPLE'Cost  'WHITE'|  'YELLOW'Status'
  1659.    say WHITE'-------+------------------+--------+----------'
  1660.    say RED'  1    'WHITE'| 'GREEN' Population     'WHITE' |  'PURPLE'100   'WHITE'|  'YELLOW||fpop
  1661.    say RED'  2    'WHITE'| 'GREEN' Men            'WHITE' |  'PURPLE'300   'WHITE'|  'YELLOW||fmen
  1662.    say RED'  3    'WHITE'| 'GREEN' Fighters       'WHITE' |  'PURPLE'500   'WHITE'|  'YELLOW||ffit
  1663.    say RED'  4    'WHITE'| 'GREEN' Carriers       'WHITE' |  'PURPLE'600   'WHITE'|  'YELLOW||fcar
  1664.    say RED'  5    'WHITE'| 'GREEN' Battle Ships   'WHITE' |  'PURPLE'800   'WHITE'|  'YELLOW||fbat
  1665.    say RED'  6    'WHITE'| 'GREEN' Planets        'WHITE' | 'PURPLE'1000   'WHITE'|  'YELLOW||fpln
  1666.    say RED'  7    'WHITE'| 'GREEN' Money          'WHITE' | 'PURPLE' 400   'WHITE'|  'YELLOW||fmny
  1667.         temp = moral; moral = fmor
  1668.         call MORALFIG; if moral = 1 then morl = 'Exceptional'; if moral = 2 then morl = 'Confident'
  1669.         if moral = 3 then morl = 'Unsure'; if moral = 4 then morl = 'Frightened'
  1670.         if moral = 5 then morl = 'Unstable'
  1671.         moral = temp
  1672.    say RED'  8    'WHITE'|  'GREEN'Moral          'WHITE' | 'PURPLE'1500  'WHITE' |  'YELLOW||fmor
  1673.    say WHITE'----------------------------------------------'
  1674.         say ' '
  1675.    say PURPLE'Your current money: 'YELLOW||money
  1676.         say ' '; say ' '
  1677.    options prompt GREEN'What information would you like to know 'WHITE'('RED'Q=Quit'WHITE')? '
  1678.    pull result
  1679.    spyitem = upper(result)
  1680.    if spyitem = '' then signal SPYSCR
  1681.    if upper(spyitem) = 'Q' then signal WAR
  1682.    if upper(spyitem) = 'L' then do
  1683.       call LISTER
  1684.       signal SPYSCR
  1685.    end
  1686.    if spyitem>8 then signal SPYSCR
  1687.    if spyitem<1 then signal SPYSCR
  1688.    if (spyitem = 1) then do
  1689.       money = money - 100
  1690.       if money<0 then do
  1691.          money = money + 100
  1692.          signal SORRY
  1693.       end
  1694.       fpop = bpop
  1695.       flpop = 1
  1696.       signal SPYSCR
  1697.    end
  1698.    if (spyitem = 2) then do
  1699.       money = money - 300
  1700.       if money<0 then do
  1701.          money = money + 300
  1702.          signal SORRY
  1703.       end
  1704.       fmen = bmen
  1705.       flmen = 1
  1706.       signal SPYSCR
  1707.    end
  1708.    if (spyitem = 3) then do
  1709.       money = money - 500
  1710.       if money<0 then do
  1711.          money = money + 500
  1712.          signal SORRY
  1713.       end
  1714.       ffit = bfit
  1715.       flfit = 1
  1716.       signal SPYSCR
  1717.    end
  1718.    if (spyitem = 4) then do
  1719.       money = money - 600
  1720.       if money<0 then do
  1721.          money = money + 600
  1722.          signal SORRY
  1723.       end
  1724.       fcar = bcar /* was missing bcar */
  1725.       flcar = 1
  1726.       signal SPYSCR
  1727.    end
  1728.    if (spyitem = 5) then do
  1729.       money = money - 800
  1730.       if money<0 then do
  1731.          money = money + 800
  1732.          signal SORRY
  1733.       end
  1734.       fbat = bbat
  1735.       flbat = 1
  1736.       signal SPYSCR
  1737.    end
  1738.    if (spyitem = 6) then do
  1739.       money = money - 1000
  1740.       if money<0 then do
  1741.          money = money + 1000
  1742.          signal SORRY
  1743.       end
  1744.       fpln = bpln
  1745.       flpln = 1
  1746.       signal SPYSCR
  1747.    end
  1748.    if (spyitem = 7) then do
  1749.       money = money - 400
  1750.       if money<0 then do
  1751.          money = money + 400
  1752.          signal SORRY
  1753.       end
  1754.       fmny = bmny
  1755.       flmny = 1
  1756.       signal SPYSCR
  1757.    end
  1758.    if (spyitem = 8) then do
  1759.       money = money - 1500
  1760.       if money<0 then do
  1761.          money = money + 1500
  1762.          signal SORRY
  1763.       end
  1764.       fmor = morl
  1765.       flmor = 1
  1766.       signal SPYSCR
  1767.    end
  1768. SORRY:
  1769.         say ' '
  1770.    say RED'Sorry, you you do not have the money to do that.'
  1771.         say ' '; say ' '
  1772.    options prompt BLUE'Press enter to continue.'
  1773.    pull result
  1774. signal SPYSCR
  1775. MORALFIG:
  1776.    if percentage>85 then do
  1777.       moral = 1
  1778.       return
  1779.    end
  1780.    if percentage>70 then do
  1781.       moral = 2
  1782.       return
  1783.    end
  1784.    if percentage>49 then do
  1785.       moral = 3
  1786.       return
  1787.    end
  1788.    if percentage>25 then do
  1789.       moral = 4
  1790.       return
  1791.    end
  1792.    moral = 5
  1793. return
  1794. TACTICS:
  1795.         call open file, (file17'-'number'.dat'),'R'
  1796.                 sendmen = readln(file)
  1797.                 sendfit = readln(file)
  1798.                 sendbat = readln(file)
  1799.                 sendcar = readln(file)
  1800.         call close file
  1801. TACTICSM:
  1802.         say CLS
  1803.         say YELLOW'                          Personal Defense Tactics'
  1804.         say ' '; say ' '; say ' '; say ' '
  1805.         say LBLUE' This determines the percentages of your resources you will send if and when'
  1806.         say ' you are attacked on the battlefield.'
  1807.         say '  '; say ' '; say ' '
  1808.         say WHITE' [1] 'RED' Percentage of men          'WHITE'('GREEN'Currently 'sendmen'%'WHITE')  = 'PURPLE||trunc(men*(sendmen/100))' men.'
  1809.         say WHITE' [2] 'RED' Percentage of fighters     'WHITE'('GREEN'Currently 'sendfit'%'WHITE')  = 'PURPLE||trunc(fighters*(sendfit/100))' fighters.'
  1810.         say WHITE' [3] 'RED' Percentage of battleships  'WHITE'('GREEN'Currently 'sendbat'%'WHITE')  = 'PURPLE||trunc(battleships*(sendbat/100))' battleships.'
  1811.         say WHITE' [4] 'RED' Percentage of carriers     'WHITE'('GREEN'Currently 'sendcar'%'WHITE')  = 'PURPLE||trunc(carriers*(sendcar/100))' carriers.'
  1812.         say ' '; say ''
  1813.         options prompt GREEN' Enter your choice 'WHITE'('RED'Q=Quit'WHITE')> '
  1814.         pull result
  1815.         answer = upper(result)
  1816.         if answer = '' then signal TACTICSM
  1817.         if upper(answer) = 'Q' then do
  1818.            call open file, (file17'-'number'.dat'),'W'
  1819.                 call writeln file, sendmen
  1820.                 call writeln file, sendfit
  1821.                 call writeln file, sendbat
  1822.                 call writeln file, sendcar
  1823.            call close file
  1824.           signal MAINMENU
  1825.         end
  1826. TACTA:
  1827.         if answer = 1 then do
  1828.                 say WHITE ' Current percentage of men is 'GREEN||sendmen'%.'
  1829.                 options prompt GREEN'  Enter new percentage ' WHITE '('RED'Do not include % sign'WHITE')> '
  1830.                 pull result
  1831.                 answer = upper(result) 
  1832.                 if answer>100 then signal TACTA
  1833.                 if answer<0 then signal TACTA
  1834.                 sendmen = answer
  1835.         end
  1836. TACTB:
  1837.         if answer = 2 then do
  1838.                 say WHITE' Current percentage of fighters is 'GREEN||sendfit'%.'
  1839.                 options prompt GREEN'  Enter new percentage 'WHITE'('RED'Do not include % sign'WHITE')> '
  1840.                 pull result
  1841.                 answer = upper(result)
  1842.                 if answer>100 then signal TACTB
  1843.                 if answer<0 then signal TACTB
  1844.                 sendfit = answer
  1845.         end
  1846. TACTC:
  1847.         if answer = 3 then do
  1848.                 say WHITE' Current percentage of battleships is 'GREEN||sendbat'%.'
  1849.                 options prompt GREEN'  Enter new percentage 'WHITE'('RED'Do not include % sign'WHITE')> '
  1850.                 pull result
  1851.                 answer = upper(result)
  1852.                 if answer>100 then signal TACTC
  1853.                 if answer<0 then signal TACTC
  1854.                 sendbat = answer
  1855.         end
  1856. TACTD:
  1857.         if answer = 4 then do
  1858.                 say WHITE' Current percentage of carriers is 'GREEN||sendcar'%.'
  1859.                 options prompt GREEN'  Enter new percentage 'WHITE'('RED'Do not include % sign'WHITE')> '
  1860.                 pull result
  1861.                 answer = upper(result)
  1862.                 if answer>100 then signal TACTD
  1863.                 if answer<0 then signal TACTD
  1864.                 sendcar = answer
  1865.         end
  1866. signal TACTICSM
  1867. BREAK_C:
  1868.    say RED'Carrier Dropped.  Returning to board.'
  1869. exit
  1870. exit
  1871.  
  1872. IOERR:
  1873.         say YELLOW'FATAL: 'RED'IO Error has been detected.  Please notify SysOp.'
  1874.         say '       Line number of detection: 'WHITE||SIGL
  1875.         say RED'              Severity of error: 'WHITE||RC
  1876.         say WHITE
  1877.         exit
  1878. exit
  1879. ERROR:
  1880.         say RED'IO ERROR in line: 'WHITE||sigl||RED'  Severity: 'WHITE||RC
  1881.         say YELLOW'Notify SysOp Immediately!!'
  1882.         say ' '
  1883.         say WHITE
  1884.         exit
  1885. exit
  1886. SYNTAX:
  1887.         say ' '; say ' '; say ' '
  1888.    say WHITE'FATAL: 'RED'Syntax error in line: 'WHITE||sigl
  1889.         say RED'         Severity of error : 'WHITE||RC
  1890.         say ' '
  1891.    say YELLOW'        Please notify SysOp immediately.'
  1892.         say ' '; say ' '; say ' '
  1893.    say LBLUE'Now saving/updating your records....'
  1894.    call YOUUPDTA
  1895.         call YOUUPDTB
  1896.    call open file, (file11),'R'
  1897.       members = readln(file)
  1898.    call close file
  1899.    call open file, (file11),'W'
  1900.       call writeln file, members
  1901.       call writeln file, msgnumber
  1902.    call close file
  1903.    call open file, (file15'-'number),'W'
  1904.       call writeln file, datz
  1905.                 call writeln file, wrtms
  1906.    call close file
  1907.    say GREEN'Thank you for playing 'WHITE'Stellar War v2.00.'
  1908. exit
  1909. exit
  1910. LEAVE: 
  1911.         say ' '; say ' '; say ' '
  1912.    say LBLUE'Now saving/updating your records....'
  1913.    call YOUUPDTA
  1914.         call YOUUPDTB
  1915.    call open file, (file11),'R'
  1916.       members = readln(file)
  1917.    call close file
  1918.    call open file, (file11),'W'
  1919.       call writeln file, members
  1920.       call writeln file, msgnumber
  1921.    call close file
  1922.    call open file, (file15'-'number),'W'
  1923.       call writeln file, datz
  1924.                 call writeln file, wrtms
  1925.    call close file
  1926.    say GREEN'Thank you for playing 'WHITE'Stellar War v2.00.'
  1927. QUESTSKIP:
  1928. exit
  1929. exit
  1930.  
  1931. LISTER:
  1932.    call open file, (file7),'R'
  1933.       do until eof(file)
  1934.          listname = readln(file)
  1935.          say ' 'listname
  1936.       end
  1937.    call close file
  1938.    options prompt BLUE'Press enter to continue.'
  1939.    pull result
  1940. RETURN
  1941.  
  1942. FIND:
  1943.    sflag = 0
  1944.    call open file, (file7),'R'
  1945.       count = 0
  1946.       do until eof(file)
  1947.          count = count + 1
  1948.          listname = readln(file)
  1949.          if upper(search) = upper(listname) then do
  1950.             sflag = 1
  1951.             signal FINDEX
  1952.          end
  1953.       end
  1954. FINDEX:
  1955.    call close file
  1956. RETURN
  1957.  
  1958. ATTRIBUTEA:
  1959.    call open file, (file6'-'count'.dat'),'R'
  1960.       bpop = readln(file)
  1961.       bmen = readln(file)
  1962.       bfit = readln(file)
  1963.       bcar = readln(file)
  1964.       bbat = readln(file)
  1965.       bwin = readln(file)
  1966.       blos = readln(file)
  1967.       bmor = readln(file)
  1968.    call close file
  1969. RETURN
  1970.  
  1971. ATTRIBUTEB:
  1972.    call open file, (file2'-'count'.dat'),'R'
  1973.       bpln = readln(file)
  1974.       bmes = readln(file)
  1975.       bpts = readln(file)
  1976.       bmny = readln(file)
  1977.    call close file
  1978. RETURN
  1979.  
  1980. WRTATTRA:
  1981.    call open file, (file6'-'count'.dat'),'W'
  1982.       call writeln file, bpop
  1983.       call writeln file, bmen
  1984.       call writeln file, bfit
  1985.       call writeln file, bcar /* was missing */
  1986.       call writeln file, bbat
  1987.       call writeln file, bwin
  1988.       call writeln file, blos
  1989.       call writeln file, bmor
  1990.    call close file
  1991. RETURN
  1992.  
  1993. WRTATTRB:
  1994.    call open file, (file2'-'count'.dat'),'W'
  1995.       call writeln file, bpln
  1996.       call writeln file, bmes
  1997.       call writeln file, bpts
  1998.       call writeln file, bmny
  1999.    call close file
  2000. RETURN
  2001.  
  2002. NOTIFY:
  2003.    call open file, (file13'-'count),'R'
  2004.       high = readln(file)
  2005.       if high = 0 then do
  2006.          call close file
  2007.          call open file, (file13'-'count),'W'
  2008.             call writeln file, msgnumber
  2009.             call writeln file, title
  2010.             call writeln file, handle
  2011.          call close file
  2012.          signal UPDATE
  2013.       end
  2014.    call close file
  2015.    call open file, (file13'-'count),'A'
  2016.       data = msgnumber
  2017.       call writeln file, data
  2018.       call writeln file, title
  2019.       call writeln file, handle
  2020.    call close file
  2021. UPDATE:
  2022.    messages = messages + 1
  2023.    call open file, (file11),'R'
  2024.       members = readln(file)
  2025.    call close file
  2026.    msgnumber = msgnumber + 1
  2027.    call open file, (file11),'W'
  2028.       call writeln file, members
  2029.       call writeln file, msgnumber
  2030.    call close file
  2031. RETURN
  2032.  
  2033. YOUUPDTA:
  2034.    call open file, (file2'-'number'.dat'),'W'
  2035.       call writeln file, planets
  2036.       call writeln file, messages
  2037.       call writeln file, points
  2038.       call writeln file, money
  2039.    call close file
  2040. RETURN
  2041.  
  2042. YOUUPDTB:
  2043.    call open file, (file6'-'number'.dat'),'W'
  2044.       call writeln file, population
  2045.       call writeln file, men
  2046.       call writeln file, fighters
  2047.       call writeln file, carriers
  2048.       call writeln file, battleships
  2049.       call writeln file, wins
  2050.       call writeln file, losses
  2051.       call writeln file, moral
  2052.    call close file
  2053. RETURN
  2054.  
  2055. SELFCHECK:
  2056.    flag = 0
  2057.    if upper(search) = upper(handle) then do
  2058.       flag = 1
  2059.       say RED' Pardon me, but I believe that is you...'
  2060.                 say ' '
  2061.       options prompt BLUE'Press enter to continue.'
  2062.       pull result
  2063.       end
  2064. RETURN
  2065.  
  2066. YOUATTRA:
  2067.    call open file, (file2'-'number'.dat'),'R'
  2068.       planets = readln(file)
  2069.       messages = readln(file)
  2070.       points = readln(file)
  2071.       money = readln(file)
  2072.    call close file
  2073. RETURN
  2074.  
  2075. YOUATTRB:
  2076.    call open file, (file6'-'number'.dat'),'R'
  2077.       population = readln(file)
  2078.       men = readln(file)
  2079.       fighters = readln(file)
  2080.       carriers = readln(file)
  2081.       battleships = readln(file)
  2082.       wins = readln(file)
  2083.       losses = readln(file)
  2084.       moral = readln(file)
  2085.    call close file
  2086. RETURN
  2087.  
  2088. TAXCOLLECT:
  2089.    collect = 0
  2090.    collected = collected + 1
  2091.    if collected > 2 then do
  2092.                 say CLS
  2093.       say WHITE' You have forced the population of your empire to REVOLT against'
  2094.       say ' your taxation.  The people have been taxed too many times this game period.'
  2095.       say ' The rallying mobs destroy many government buildings which you must repair.'
  2096.                 say ' '; say ' '
  2097.       cost = money * 0.30; cost = trunc(cost)
  2098.       say RED' Total cost to repair property: 'WHITEcost
  2099.       money = money - cost
  2100.       plays = plays + 1
  2101.                 say ' '; say ' '
  2102.       options prompt BLUE'Press enter to continue.'
  2103.       pull result
  2104.       return
  2105.    end
  2106.    collect = population*0.2; collect = trunc(collect)
  2107.    addition = random(1,50,time('s'))
  2108.    addition = addition * 100
  2109.    collect = collect + addition
  2110.         say CLS
  2111.    say LBLUE' The people wearily pay their taxes.  The total money received from the'
  2112.    say ' collection of taxes is: 'collect
  2113.    if collected = 2 then do
  2114.                 say ' '; say ' '
  2115.       say YELLOW' WARNING:  'GREEN'You have begun to overtax your population.  Be careful,'
  2116.       say '          they may try to revolt.'
  2117.    end
  2118.    money = money + collect
  2119.         say ' '; say ' '
  2120.    options prompt BLUE'Press enter to continue.'
  2121.    pull result
  2122. RETURN
  2123.