home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume6 / conquer4 / patch1 / patches01
Text File  |  1989-07-06  |  45KB  |  1,531 lines

  1. *** opatchlevel.h
  2. --- patchlevel.h
  3. **************
  4. *** 1
  5. ! #define PATCHLEVEL    0
  6. --- 1 -----
  7. ! #define PATCHLEVEL    1
  8. *** onotes.v4
  9. --- notes.v4
  10. **************
  11. *** 1,7
  12.   ------------------------------------------------------------------------------
  13.   | THIS FILE CONTAINS RELEASE NOTES FOR CONQUER V4.0                  |
  14. ! | It is broken into 3 sections.  Section 1 reflects changes from v3.5 to v4. |
  15. ! | Section 2 reflects bugs in v4.0.  Section 3 reflects. Future ideas.        |
  16.   ------------------------------------------------------------------------------
  17.   
  18.   -------------------------------------------------------------------------
  19. --- 1,7 -----
  20.   ------------------------------------------------------------------------------
  21.   | THIS FILE CONTAINS RELEASE NOTES FOR CONQUER V4.0                  |
  22. ! | It is broken into 3 sections.  Section 3 reflects changes from v3.5 to v4. |
  23. ! | Section 1 reflects bugs in v4.0.  Section 2 reflects. Future ideas.        |
  24.   ------------------------------------------------------------------------------
  25.   -------------------------------------------------------------------------
  26.   | == Bugs Fixed From Conquer Version 4.0 ============================== |
  27. **************
  28. *** 3,8
  29.   | It is broken into 3 sections.  Section 1 reflects changes from v3.5 to v4. |
  30.   | Section 2 reflects bugs in v4.0.  Section 3 reflects. Future ideas.        |
  31.   ------------------------------------------------------------------------------
  32.   
  33.   -------------------------------------------------------------------------
  34.   | 1.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V4        |
  35. --- 3,23 -----
  36.   | It is broken into 3 sections.  Section 3 reflects changes from v3.5 to v4. |
  37.   | Section 1 reflects bugs in v4.0.  Section 2 reflects. Future ideas.        |
  38.   ------------------------------------------------------------------------------
  39. + -------------------------------------------------------------------------
  40. + | == Bugs Fixed From Conquer Version 4.0 ============================== |
  41. + -------------------------------------------------------------------------
  42. +   1. increased newstring[] array from 40 to 100 in makeworl.c.
  43. +   2. corrected a mispelling of irrigation.
  44. +   3. line 830 of makeworl.c, added a y=(rand()%20); statement.
  45. +   4. corrected some bugs in newlogin() routine.  Fixed orc repro buying.
  46. +   5. made the -d flag be a subdirectory of DEFAULTDIR if not beginning
  47. +     with a '/'.
  48. +   6. fixed overruns of NTOTAL throughout the game.
  49. +   7. new function to decrease size of a test statement in extcmds.c.
  50. +   8. changed newlogin routine for detection of available countries.
  51. +   9. merged do_lizard() and updlizard().  [used name do_lizard()].
  52. +  10. fixed bug with getchar querys in makeworl.c.
  53. +  11. fixed bug with y < MAPX mistype in randeven.c.
  54.   
  55.   -------------------------------------------------------------------------
  56.   | 1.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V4        |
  57. *** oMakefile
  58. --- Makefile
  59. *** oREADME
  60. --- README
  61. *** oheader.h
  62. --- header.h
  63. *** odata.h
  64. --- data.h
  65. **************
  66. *** 179,188
  67.   
  68.   struct s_sector
  69.   {
  70. !     char    designation;        /* designation of sector    */
  71. !     char    altitude;        /* sector altitude        */
  72. !     char    vegetation;        /* sector vegetation        */
  73. !     char    owner;            /* nation id of owner        */
  74.       long    people;            /* civilians in sector        */
  75.       short    i_people;        /* initial civilians in sector    */
  76.       unsigned char    jewels;        /* jewel production ability    */
  77. --- 179,188 -----
  78.   
  79.   struct s_sector
  80.   {
  81. !     unsigned char    designation;    /* designation of sector    */
  82. !     unsigned char    altitude;    /* sector altitude        */
  83. !     unsigned char    vegetation;    /* sector vegetation        */
  84. !     unsigned char    owner;        /* nation id of owner        */
  85.       long    people;            /* civilians in sector        */
  86.       short    i_people;        /* initial civilians in sector    */
  87.       unsigned char    jewels;        /* jewel production ability    */
  88. **************
  89. *** 200,208
  90.       unsigned short warships;
  91.       unsigned short merchant;
  92.       unsigned short galleys;
  93. !     char xloc;
  94. !     char yloc;
  95. !     char smove;            /* movement ability of ship */
  96.       unsigned char crew;        /* crew on ship */
  97.       unsigned char people;        /* people carried */
  98.       unsigned char commodity;    /* future commodities */
  99. --- 200,208 -----
  100.       unsigned short warships;
  101.       unsigned short merchant;
  102.       unsigned short galleys;
  103. !     unsigned char xloc;
  104. !     unsigned char yloc;
  105. !     unsigned char smove;        /* movement ability of ship */
  106.       unsigned char crew;        /* crew on ship */
  107.       unsigned char people;        /* people carried */
  108.       unsigned char commodity;    /* future commodities */
  109. **************
  110. *** 206,212
  111.       unsigned char crew;        /* crew on ship */
  112.       unsigned char people;        /* people carried */
  113.       unsigned char commodity;    /* future commodities */
  114. !     char armynum;            /* army carried */
  115.   };
  116.   
  117.   
  118. --- 206,212 -----
  119.       unsigned char crew;        /* crew on ship */
  120.       unsigned char people;        /* people carried */
  121.       unsigned char commodity;    /* future commodities */
  122. !     unsigned char armynum;        /* army carried */
  123.   };
  124.   
  125.   
  126. **************
  127. *** 342,350
  128.   struct army
  129.   {
  130.       unsigned char unittyp;
  131. !     char xloc;
  132. !     char yloc;
  133. !     char smove;
  134.       long sold;
  135.       char stat;
  136.   };
  137. --- 342,350 -----
  138.   struct army
  139.   {
  140.       unsigned char unittyp;
  141. !     unsigned char xloc;
  142. !     unsigned char yloc;
  143. !     unsigned char smove;
  144.       long sold;
  145.       unsigned char stat;
  146.   };
  147. **************
  148. *** 346,352
  149.       char yloc;
  150.       char smove;
  151.       long sold;
  152. !     char stat;
  153.   };
  154.   
  155.   struct    s_nation        /* player nation stats    */
  156. --- 346,352 -----
  157.       unsigned char yloc;
  158.       unsigned char smove;
  159.       long sold;
  160. !     unsigned char stat;
  161.   };
  162.   
  163.   struct    s_nation        /* player nation stats    */
  164. **************
  165. *** 357,366
  166.       char    race;        /* national race (integer--see header.h)*/
  167.       char    location;    /* location variable (gfr)    */
  168.       char    mark;        /* unique mark for nation    */
  169. !     char    capx;        /* Capitol x coordinate        */
  170. !     char    capy;        /* Capitol y coordinate        */
  171. !     char    active;        /* nation type and strategy    */
  172. !     char    maxmove;    /* maximum movement of soldiers */
  173.       char    repro;        /* reproduction rate of nation    */
  174.       long    score;        /* score            */
  175.       long    tgold;        /* gold in treasury        */
  176. --- 357,366 -----
  177.       char    race;        /* national race (integer--see header.h)*/
  178.       char    location;    /* location variable (gfr)    */
  179.       char    mark;        /* unique mark for nation    */
  180. !     unsigned char    capx;    /* Capitol x coordinate        */
  181. !     unsigned char    capy;    /* Capitol y coordinate        */
  182. !     unsigned char    active;    /* nation type and strategy    */
  183. !     unsigned char    maxmove;/* maximum movement of soldiers */
  184.       char    repro;        /* reproduction rate of nation    */
  185.       long    score;        /* score            */
  186.       long    tgold;        /* gold in treasury        */
  187. **************
  188. *** 384,400
  189.       unsigned char    tax_rate;    /* taxrate populace    */
  190.       unsigned char    prestige;    /* nations prestige    */
  191.       unsigned char    popularity;    /* governments popularity    */
  192. !     unsigned char    power;            /* nation power    */
  193. !     unsigned char    communications;        /* leader communication    */
  194. !     unsigned char    wealth;            /* per capita income    */
  195. !     unsigned char    eatrate;        /* food eaten / 10 people*/
  196. !     unsigned char    spoilrate;        /* food spoilage rate    */
  197. !     unsigned char    knowledge;        /* general knowledge    */
  198. !     unsigned char    farm_ability;        /* farming ability    */
  199. !     unsigned char    mine_ability;        /* mine ability        */
  200. !     unsigned char    poverty;        /* % poor people    */
  201. !     unsigned char    terror;            /* peoples terror of you*/
  202. !     unsigned char    reputation;        /* reputation of nation    */
  203.   };
  204.   #define    P_NTNCOM    ((((float) curntn->communications)/ 50.0 ))
  205.   #define    P_EATRATE    ((((float) curntn->eatrate) / 25.0 ))
  206. --- 384,400 -----
  207.       unsigned char    tax_rate;    /* taxrate populace    */
  208.       unsigned char    prestige;    /* nations prestige    */
  209.       unsigned char    popularity;    /* governments popularity    */
  210. !     unsigned char    power;        /* nation power        */
  211. !     unsigned char    communications;    /* leader communication    */
  212. !     unsigned char    wealth;        /* per capita income    */
  213. !     unsigned char    eatrate;    /* food eaten / 10 people*/
  214. !     unsigned char    spoilrate;    /* food spoilage rate    */
  215. !     unsigned char    knowledge;    /* general knowledge    */
  216. !     unsigned char    farm_ability;    /* farming ability    */
  217. !     unsigned char    mine_ability;    /* mine ability        */
  218. !     unsigned char    poverty;    /* % poor people    */
  219. !     unsigned char    terror;        /* peoples terror of you*/
  220. !     unsigned char    reputation;    /* reputation of nation    */
  221.   };
  222.   #define    P_NTNCOM    ((((float) curntn->communications)/ 50.0 ))
  223.   #define    P_EATRATE    ((((float) curntn->eatrate) / 25.0 ))
  224. **************
  225. *** 623,629
  226.   extern void    randomevent(), wdisaster(), weather(), deplete();
  227.   extern void    verify_ntn(), verify_sct(), verifydata(), prep();
  228.   extern void    destroy(), updmove(), spreadsheet(), mailopen(), mailclose();
  229. ! extern void    updexecs(), updlizards(), updcapture(), updsectors();
  230.   extern void    updmil(), updcomodities(), updleader();
  231.   extern void    nationrun(), n_atpeace(), n_trespass(), n_people();
  232.   extern void    n_toofar(), n_unowned(), pceattr(), checkout();
  233. --- 623,629 -----
  234.   extern void    randomevent(), wdisaster(), weather(), deplete();
  235.   extern void    verify_ntn(), verify_sct(), verifydata(), prep();
  236.   extern void    destroy(), updmove(), spreadsheet(), mailopen(), mailclose();
  237. ! extern void    updexecs(), updcapture(), updsectors();
  238.   extern void    updmil(), updcomodities(), updleader();
  239.   extern void    nationrun(), n_atpeace(), n_trespass(), n_people();
  240.   extern void    n_toofar(), n_unowned(), pceattr(), checkout();
  241. **************
  242. *** 935,941
  243.   #define GODJEWL        3000L        /* " */
  244.   #define GODPRICE    25000L
  245.   
  246. ! #ifdef 0
  247.   /* THE FOLLOWING DEFINES ARE NOT IMPLEMENTED YET        */
  248.   /* THEY DEFINE THE ATTRIBUTES OF A (TO BE IMPLEMENTED) REGION    */
  249.   
  250. --- 935,941 -----
  251.   #define GODJEWL        3000L        /* " */
  252.   #define GODPRICE    25000L
  253.   
  254. ! #ifdef XYZ
  255.   /* THE FOLLOWING DEFINES ARE NOT IMPLEMENTED YET        */
  256.   /* THEY DEFINE THE ATTRIBUTES OF A (TO BE IMPLEMENTED) REGION    */
  257.   
  258. *** oadmin.c
  259. --- admin.c
  260. **************
  261. *** 90,96
  262.           strcpy(scenario, optarg);
  263.           break;
  264.       case 'd':
  265. !         strcpy(defaultdir, optarg);
  266.           break;
  267.       case '?': /*  print out command line arguments */
  268.           printf("Command line format: %s [-maxp -dDIR -rSCENARIO]\n",argv[0]);
  269. --- 90,100 -----
  270.           strcpy(scenario, optarg);
  271.           break;
  272.       case 'd':
  273. !         if(optarg[0]!='/') {
  274. !             sprintf(defaultdir, "%s/%s", DEFAULTDIR, optarg);
  275. !         } else {
  276. !             strcpy(defaultdir, optarg);
  277. !         }
  278.           break;
  279.       case '?': /*  print out command line arguments */
  280.           printf("Command line format: %s [-maxp -dDIR -rSCENARIO]\n",argv[0]);
  281. **************
  282. *** 122,128
  283.           exit(FAIL);
  284.       }
  285.       if((mflag)||(rflag)) {
  286. -         makeworld(rflag);
  287.           sprintf(string,"%sup",isonfile);
  288.           unlink(string);
  289.           exit(SUCCESS);
  290. --- 126,131 -----
  291.           exit(FAIL);
  292.       }
  293.       if((mflag)||(rflag)) {
  294.           sprintf(string,"%sup",isonfile);
  295.           unlink(string);
  296.           makeworld(rflag);
  297. **************
  298. *** 125,130
  299.           makeworld(rflag);
  300.           sprintf(string,"%sup",isonfile);
  301.           unlink(string);
  302.           exit(SUCCESS);
  303.       }
  304.   
  305. --- 128,134 -----
  306.       if((mflag)||(rflag)) {
  307.           sprintf(string,"%sup",isonfile);
  308.           unlink(string);
  309. +         makeworld(rflag);
  310.           exit(SUCCESS);
  311.       }
  312.   
  313. **************
  314. *** 162,168
  315.           /* prevent more than one addition */
  316.           sprintf(string,"%sadd",isonfile);
  317.           if(check_lock(string,TRUE)==TRUE) {
  318. !             printf("Some else is adding\n");
  319.               printf("Please try again later.\n");
  320.               exit(FAIL);
  321.           }
  322. --- 166,172 -----
  323.           /* prevent more than one addition */
  324.           sprintf(string,"%sadd",isonfile);
  325.           if(check_lock(string,TRUE)==TRUE) {
  326. !             printf("Someone else is adding\n");
  327.               printf("Please try again later.\n");
  328.               exit(FAIL);
  329.           }
  330. *** oextcmds.c
  331. --- extcmds.c
  332. **************
  333. *** 84,89
  334.       refresh();
  335.   }
  336.   
  337.   void
  338.   combinearmies(armynum,army2)
  339.   int armynum, army2;
  340. --- 84,114 -----
  341.       refresh();
  342.   }
  343.   
  344. + /* returns TRUE if uncombinable FALSE if combinable */
  345. + int
  346. + nocomb_stat(astat)
  347. +     unsigned char astat;
  348. + {
  349. +     int hold;
  350. +     switch(astat) {
  351. + #ifdef TRADE
  352. +     case TRADED:
  353. + #endif TRADE
  354. +     case FLIGHT:
  355. +     case MAGATT:
  356. +     case MAGDEF:
  357. +     case SCOUT:
  358. +     case ONBOARD:
  359. +         hold = TRUE;
  360. +         break;
  361. +     default:
  362. +         hold = FALSE;
  363. +         break;
  364. +     }
  365. +     return(hold);
  366. + }
  367.   void
  368.   combinearmies(armynum,army2)
  369.   int armynum, army2;
  370. **************
  371. *** 88,93
  372.   combinearmies(armynum,army2)
  373.   int armynum, army2;
  374.   {
  375.       if (armynum < 0 || armynum >= MAXARM ||
  376.           army2 < 0 || army2 >= MAXARM ||
  377.           armynum == army2 ||
  378. --- 113,120 -----
  379.   combinearmies(armynum,army2)
  380.   int armynum, army2;
  381.   {
  382. +     int nocomb_stat();
  383.       if (armynum < 0 || armynum >= MAXARM ||
  384.           army2 < 0 || army2 >= MAXARM ||
  385.           armynum == army2 ||
  386. **************
  387. *** 91,110
  388.       if (armynum < 0 || armynum >= MAXARM ||
  389.           army2 < 0 || army2 >= MAXARM ||
  390.           armynum == army2 ||
  391. ! #ifdef TRADE
  392. !         P_ASTAT == TRADED ||
  393. !         curntn->arm[army2].stat == TRADED ||
  394. ! #endif TRADE
  395. !         P_ASTAT == FLIGHT ||
  396. !         curntn->arm[army2].stat == FLIGHT ||
  397. !         P_ASTAT == MAGATT ||
  398. !         curntn->arm[army2].stat == MAGATT ||
  399. !         P_ASTAT == MAGDEF ||
  400. !         curntn->arm[army2].stat == MAGDEF ||
  401. !         P_ASTAT == SCOUT ||
  402. !         curntn->arm[army2].stat == SCOUT ||
  403. !         P_ASTAT == ONBOARD ||
  404. !         curntn->arm[army2].stat == ONBOARD ||
  405.           curntn->arm[army2].stat == SIEGE ||    /* may not jump out  */
  406.           curntn->arm[army2].stat == SORTIE ||   /* of these statuses */
  407.           P_ATYPE >= MINLEADER ||
  408. --- 118,125 -----
  409.       if (armynum < 0 || armynum >= MAXARM ||
  410.           army2 < 0 || army2 >= MAXARM ||
  411.           armynum == army2 ||
  412. !         (nocomb_stat(P_ASTAT) == TRUE) ||
  413. !         (nocomb_stat(curntn->arm[army2].stat) == TRUE) ||
  414.           curntn->arm[army2].stat == SIEGE ||    /* may not jump out  */
  415.           curntn->arm[army2].stat == SORTIE ||   /* of these statuses */
  416.           P_ATYPE >= MINLEADER ||
  417. **************
  418. *** 221,227
  419.       }
  420.       P_ASTAT = new_stat;
  421.       AADJSTAT;
  422. !     if( P_AMOVE>0 ) P_AMOVE--;
  423.       AADJMOV;
  424.   }
  425.   
  426. --- 236,242 -----
  427.       }
  428.       P_ASTAT = new_stat;
  429.       AADJSTAT;
  430. !     if( P_AMOVE != 0 ) P_AMOVE--;
  431.       AADJMOV;
  432.   }
  433.   
  434. *** omakeworl.c
  435. --- makeworl.c
  436. **************
  437. *** 45,51
  438.   int    rflag;        /* TRUE if you wish to read in a map from mapfiles */
  439.   {
  440.       char passwd[PASSLTH+1],*getpass();
  441. !     char newstring[40];
  442.       FILE *fopen();
  443.   
  444.       /*abort if datafile currently exists*/
  445. --- 45,51 -----
  446.   int    rflag;        /* TRUE if you wish to read in a map from mapfiles */
  447.   {
  448.       char passwd[PASSLTH+1],*getpass();
  449. !     char newstring[100];
  450.       FILE *fopen();
  451.   
  452.       /*abort if datafile currently exists*/
  453. **************
  454. *** 711,717
  455.       short    npirates=0,nbarbarians=0,nnomads=0,nlizards=0;
  456.   
  457.       FILE *fp, *fopen();
  458. -     int done=FALSE;
  459.       char line[80],allign;
  460.       char fname[80];
  461.   
  462. --- 711,716 -----
  463.       short    npirates=0,nbarbarians=0,nnomads=0,nlizards=0;
  464.   
  465.       FILE *fp, *fopen();
  466.       char line[80],allign;
  467.       char fname[80];
  468.   
  469. **************
  470. *** 739,746
  471.           curntn->mark='-';
  472.       }
  473.   
  474. !     for( country=1; country<NTOTAL; country++ ) {
  475. !         for(i=country+1;i<NTOTAL;i++) {
  476.               ntn[country].dstatus[i]=UNMET;
  477.               ntn[i].dstatus[country]=UNMET;
  478.           }
  479. --- 738,745 -----
  480.           curntn->mark='-';
  481.       }
  482.   
  483. !     for( country=0; country<NTOTAL; country++ ) {
  484. !         for(i=country;i<NTOTAL;i++) {
  485.               ntn[country].dstatus[i]=UNMET;
  486.               ntn[i].dstatus[country]=UNMET;
  487.           }
  488. **************
  489. *** 828,833
  490.           if((rand()%2==0)&&(curntn->active!=NPC_LIZARD)){
  491.               if(rand()%2==0) {
  492.                   x=(rand()%20);
  493.               } else {
  494.                   x=(MAPX-(rand()%20)-1);
  495.                   y=(MAPY-(rand()%20)-1);
  496. --- 827,833 -----
  497.           if((rand()%2==0)&&(curntn->active!=NPC_LIZARD)){
  498.               if(rand()%2==0) {
  499.                   x=(rand()%20);
  500. +                 y=(rand()%20);
  501.               } else {
  502.                   x=(MAPX-(rand()%20)-1);
  503.                   y=(MAPY-(rand()%20)-1);
  504. **************
  505. *** 949,955
  506.           if( ntn[country].active != NPC_BARBARIAN ) continue;
  507.           curntn = &ntn[country];
  508.           armynum=barbarmy;
  509. !         if( country!=NTOTAL ) while(armynum<MAXARM) {
  510.               x = rand()%MAPX;
  511.               y = rand()%MAPY;
  512.               if (is_habitable(x,y)&&sct[x][y].owner==0) {
  513. --- 949,955 -----
  514.           if( ntn[country].active != NPC_BARBARIAN ) continue;
  515.           curntn = &ntn[country];
  516.           armynum=barbarmy;
  517. !         while(armynum<MAXARM) {
  518.               x = rand()%MAPX;
  519.               y = rand()%MAPY;
  520.               if (is_habitable(x,y)&&sct[x][y].owner==0) {
  521. **************
  522. *** 979,986
  523.       }
  524.   
  525.   #ifdef NPC
  526. !     printf("\nDo you want NPC nations in this campaign?");
  527. !     if( getchar()!='y' ) return;
  528.       if((fp=fopen(npcsfile,"r"))==NULL) {
  529.           printf("error on read of %s file\n",npcsfile);
  530.           printf("Do you wish to use default NPC nations file (y or n)?");
  531. --- 979,987 -----
  532.       }
  533.   
  534.   #ifdef NPC
  535. !     printf("\nDo you want NPC nations in this campaign? (y or n)");
  536. !     while( ((i=getchar()) != 'y')&&(i != 'n') ) ;
  537. !     if( i!='y' ) return;
  538.       if((fp=fopen(npcsfile,"r"))==NULL) {
  539.           printf("error on read of %s file\n",npcsfile);
  540.           printf("Do you wish to use default NPC nations file (y or n)?");
  541. **************
  542. *** 984,995
  543.       if((fp=fopen(npcsfile,"r"))==NULL) {
  544.           printf("error on read of %s file\n",npcsfile);
  545.           printf("Do you wish to use default NPC nations file (y or n)?");
  546. !         if(getchar()=='y'){
  547. !         sprintf(line,"%s/%s",DEFAULTDIR,npcsfile);
  548. !         if ((fp=fopen(line,"r"))==NULL) {
  549. !             printf("\nsorry; error on read of %s file\n",line);
  550. !             return;
  551. !         } else printf("\nOK; default nations used\n");
  552.           } else {
  553.               printf("\nOK; no NPC nations used\n");
  554.               return;
  555. --- 985,997 -----
  556.       if((fp=fopen(npcsfile,"r"))==NULL) {
  557.           printf("error on read of %s file\n",npcsfile);
  558.           printf("Do you wish to use default NPC nations file (y or n)?");
  559. !         while( ((i=getchar()) != 'y')&&(i != 'n') ) ;
  560. !         if( i=='y'){
  561. !             sprintf(line,"%s/%s",DEFAULTDIR,npcsfile);
  562. !             if ((fp=fopen(line,"r"))==NULL) {
  563. !                 printf("\nsorry; error on read of %s file\n",line);
  564. !                 return;
  565. !             } else printf("\nOK; default nations used\n");
  566.           } else {
  567.               printf("\nOK; no NPC nations used\n");
  568.               return;
  569. **************
  570. *** 1072,1078
  571.               curntn->tfood= curntn->tciv * 3;
  572.               curntn->metals=10000L;
  573.               curntn->jewels=10000L;
  574. !             cnum++;
  575.               place(xloc,yloc);
  576.               att_setup(country);    /* nation attributes */
  577.           }
  578. --- 1074,1080 -----
  579.               curntn->tfood= curntn->tciv * 3;
  580.               curntn->metals=10000L;
  581.               curntn->jewels=10000L;
  582. !             if (cnum < NTOTAL) cnum++;
  583.               place(xloc,yloc);
  584.               att_setup(country);    /* nation attributes */
  585.           }
  586. *** osort.c
  587. --- sort.c
  588. **************
  589. *** 25,32
  590.    *      as it comes in.
  591.    *
  592.    * Initial Revision:        (adb@bucsf.bu.edu)
  593. !  *    Tuesday March 21th, 1989 - Began the program at 23:26 EST
  594. !  *      Wednesday March 22nd, 1989 - Finished the initial version 11:29 EST
  595.    */
  596.   
  597.   #include <stdio.h>
  598. --- 25,32 -----
  599.    *      as it comes in.
  600.    *
  601.    * Initial Revision:        (adb@bucsf.bu.edu)
  602. !  *     Tuesday March 21th, 1989 - Began the program at 23:26 EST
  603. !  *     Wednesday March 22nd, 1989 - Finished the initial version 11:29 EST
  604.    */
  605.   
  606.   #include <stdio.h>
  607. **************
  608. *** 30,36
  609.    */
  610.   
  611.   #include <stdio.h>
  612. - #include "header.h"
  613.   #ifndef HPUX
  614.   #include <sysexits.h>
  615.   #endif HPUX
  616. --- 30,35 -----
  617.    */
  618.   
  619.   #include <stdio.h>
  620.   #ifndef HPUX
  621.   #include <sysexits.h>
  622.   #endif HPUX
  623. **************
  624. *** 181,187
  625.   
  626.       }
  627.   
  628. !      /* ==== end of main processing loop ==== */
  629.   
  630.       /* close input file if not stdin */
  631.       if (infile!=stdin) {
  632. --- 180,186 -----
  633.   
  634.       }
  635.   
  636. !     /* ==== end of main processing loop ==== */
  637.   
  638.       /* close input file if not stdin */
  639.       if (infile!=stdin) {
  640. **************
  641. *** 317,320
  642.       temp->next = nptr;
  643.       return(temp);
  644.   }
  645. --- 316,318 -----
  646.       temp->next = nptr;
  647.       return(temp);
  648.   }
  649. *** orandeven.c
  650. --- randeven.c
  651. **************
  652. *** 70,76
  653.   findnew()
  654.   {
  655.       int newntn=0,nationis;
  656. !     for ( nationis=NTOTAL; nationis >= 1; nationis--)
  657.           if(ntn[nationis].active == INACTIVE) newntn=nationis;
  658.       if (newntn == 0) return (0);
  659.       strcpy(ntn[newntn].leader,"rebel");
  660. --- 70,76 -----
  661.   findnew()
  662.   {
  663.       int newntn=0,nationis;
  664. !     for ( nationis=NTOTAL-1; nationis >= 1; nationis--)
  665.           if(ntn[nationis].active == INACTIVE) newntn=nationis;
  666.       if (newntn == 0) return (0);
  667.       strcpy(ntn[newntn].leader,"rebel");
  668. **************
  669. *** 1089,1095
  670.   *rand_sector()
  671.   {
  672.       int count=0;
  673. !     for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++)
  674.           if(sct[xpos][ypos].owner == country) count++;
  675.       count = rand()%count;
  676.       for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++){
  677. --- 1089,1095 -----
  678.   *rand_sector()
  679.   {
  680.       int count=0;
  681. !     for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++)
  682.           if(sct[xpos][ypos].owner == country) count++;
  683.       count = rand()%count;
  684.       for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++){
  685. **************
  686. *** 1092,1098
  687.       for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++)
  688.           if(sct[xpos][ypos].owner == country) count++;
  689.       count = rand()%count;
  690. !     for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++){
  691.           if(sct[xpos][ypos].owner == country) count--;
  692.           if(count==0) return(&sct[xpos][ypos]);
  693.       }
  694. --- 1092,1098 -----
  695.       for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++)
  696.           if(sct[xpos][ypos].owner == country) count++;
  697.       count = rand()%count;
  698. !     for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++){
  699.           if(sct[xpos][ypos].owner == country) count--;
  700.           if(count==0) return(&sct[xpos][ypos]);
  701.       }
  702. **************
  703. *** 1096,1101
  704.           if(sct[xpos][ypos].owner == country) count--;
  705.           if(count==0) return(&sct[xpos][ypos]);
  706.       }
  707.       abrt();
  708.       return(NULL);    /* stop lint from complaining */
  709.   }
  710. --- 1096,1102 -----
  711.           if(sct[xpos][ypos].owner == country) count--;
  712.           if(count==0) return(&sct[xpos][ypos]);
  713.       }
  714. +     fprintf(stderr,"could find no location for country %d\n",country);
  715.       abrt();
  716.       return(NULL);    /* stop lint from complaining */
  717.   }
  718. *** ocexecute.c
  719. --- cexecute.c
  720. **************
  721. *** 210,216
  722.               /* if not own it, and if people there, problem */
  723.               if((sct[x][y].owner!=country)
  724.               &&( country!=0)
  725. !             &&( sct[x][y].owner>0 )
  726.               &&( sct[x][y].people>0 )
  727.               &&( magic(country,SLAVER)==FALSE )
  728.               &&( ntn[sct[x][y].owner].race!=curntn->race)){
  729. --- 210,216 -----
  730.               /* if not own it, and if people there, problem */
  731.               if((sct[x][y].owner!=country)
  732.               &&( country!=0)
  733. !             &&( sct[x][y].owner!=0 )
  734.               &&( sct[x][y].people>0 )
  735.               &&( magic(country,SLAVER)==FALSE )
  736.               &&( ntn[sct[x][y].owner].race != curntn->race)){
  737. **************
  738. *** 213,219
  739.               &&( sct[x][y].owner>0 )
  740.               &&( sct[x][y].people>0 )
  741.               &&( magic(country,SLAVER)==FALSE )
  742. !             &&( ntn[sct[x][y].owner].race!=curntn->race)){
  743.                   sct[ntn[sct[x][y].owner].capx][ntn[sct[x][y].owner].capy].people+= sct[x][y].people;
  744.                   sct[x][y].people=0;
  745.                   fprintf(stderr,"ERROR: <%s> taking sector %d %d but civilians exist of other race - puting them in their capitol\n",curntn->name,x,y);
  746. --- 213,219 -----
  747.               &&( sct[x][y].owner!=0 )
  748.               &&( sct[x][y].people>0 )
  749.               &&( magic(country,SLAVER)==FALSE )
  750. !             &&( ntn[sct[x][y].owner].race != curntn->race)){
  751.                   sct[ntn[sct[x][y].owner].capx][ntn[sct[x][y].owner].capy].people+= sct[x][y].people;
  752.                   sct[x][y].people=0;
  753.                   fprintf(stderr,"ERROR: <%s> taking sector %d %d but civilians exist of other race - puting them in their capitol\n",curntn->name,x,y);
  754. *** oforms.c
  755. --- forms.c
  756. **************
  757. *** 275,281
  758.               mvaddstr(j++,0,"6) WAR");
  759.               mvprintw(j++,0,"7) JIHAD (%d talons to break):",BREAKJIHAD);
  760.               j++;
  761. !             for( i=1; i<=NTOTAL; i++ )
  762.                   if((isntnorp(ntn[i].active)) && (ntn[nation].dstatus[i]==TREATY))
  763.                   mvprintw(j++,10,"%s has treaty with %s",ntn[nation].name,ntn[i].name);
  764.   
  765. --- 275,281 -----
  766.               mvaddstr(j++,0,"6) WAR");
  767.               mvprintw(j++,0,"7) JIHAD (%d talons to break):",BREAKJIHAD);
  768.               j++;
  769. !             for( i=1; i<NTOTAL; i++ )
  770.                   if((isntnorp(ntn[i].active)) && (ntn[nation].dstatus[i]==TREATY))
  771.                   mvprintw(j++,10,"%s has treaty with %s",ntn[nation].name,ntn[i].name);
  772.   
  773. **************
  774. *** 315,321
  775.               &&(ntn[nation].dstatus[country]<WAR)) {
  776.                   ntn[nation].dstatus[country]=WAR;
  777.                   EADJDIP(nation,country);
  778. !                 for( i=1; i<=NTOTAL; i++ )
  779.                   if(ntn[i].dstatus[nation]==TREATY){
  780.                       ntn[i].dstatus[country]=WAR;
  781.                       EADJDIP(i,country);
  782. --- 315,321 -----
  783.               &&(ntn[nation].dstatus[country]<WAR)) {
  784.                   ntn[nation].dstatus[country]=WAR;
  785.                   EADJDIP(nation,country);
  786. !                 for( i=1; i<NTOTAL; i++ )
  787.                   if(ntn[i].dstatus[nation]==TREATY){
  788.                       ntn[i].dstatus[country]=WAR;
  789.                       EADJDIP(i,country);
  790. **************
  791. *** 657,663
  792.                   }
  793.                   destroy(country);
  794.                   fclose(fnews);
  795. !                 sprintf(command,"%s/%s",DEFAULTDIR, sortname);
  796.                   sprintf(command,"%s %s %s", command, filename, filename);
  797.                   system(command);
  798.               }
  799. --- 657,663 -----
  800.                   }
  801.                   destroy(country);
  802.                   fclose(fnews);
  803. !                 sprintf(command,"%s/%s", EXEDIR, sortname);
  804.                   sprintf(command,"%s %s %s", command, filename, filename);
  805.                   system(command);
  806.               }
  807. *** omisc.c
  808. --- misc.c
  809. **************
  810. *** 757,763
  811.   int country;
  812.   {
  813.       struct s_nation *saventn=curntn;
  814. !     int i,j,x,y,armynum,nation;
  815.   
  816.       x = ntn[country].capx;
  817.       y = ntn[country].capy;
  818. --- 757,763 -----
  819.   int country;
  820.   {
  821.       struct s_nation *saventn=curntn;
  822. !     int i,j,x,y,armynum;
  823.   
  824.       x = ntn[country].capx;
  825.       y = ntn[country].capy;
  826. **************
  827. *** 940,945
  828.   
  829.       nptr = &ntn[country];
  830.       if( ismonst(nptr->active) ) return;
  831.       fprintf(fnews,"1.\tNation %s was destroyed ",nptr->name);
  832.       if(country!=sct[nptr->capx][nptr->capy].owner){
  833.           fprintf(fnews,"(their capitol is now owned by %s)\n",ntn[sct[nptr->capx][nptr->capy].owner].name);
  834. --- 940,946 -----
  835.   
  836.       nptr = &ntn[country];
  837.       if( ismonst(nptr->active) ) return;
  838. +     if( !isactive(nptr->active) ) return;
  839.       fprintf(fnews,"1.\tNation %s was destroyed ",nptr->name);
  840.       if(country!=sct[nptr->capx][nptr->capy].owner){
  841.           fprintf(fnews,"(their capitol is now owned by %s)\n",ntn[sct[nptr->capx][nptr->capy].owner].name);
  842. *** omove.c
  843. --- move.c
  844. **************
  845. *** 385,391
  846.                   } else if(total>0) {
  847.                       /* remove proportion of starting move */
  848.                       P_AMOVE-= total * curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE))/(10*(groupmen+othermen));
  849. !                     if( P_AMOVE<0 || P_AMOVE>100 )
  850.                           P_AMOVE=0;
  851.                       AADJMOV;
  852.                       if( P_AMOVE==0 )
  853. --- 385,391 -----
  854.                   } else if(total>0) {
  855.                       /* remove proportion of starting move */
  856.                       P_AMOVE-= total * curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE))/(10*(groupmen+othermen));
  857. !                     if( P_AMOVE>150 )
  858.                           P_AMOVE=0;
  859.                       AADJMOV;
  860.                       if( P_AMOVE==0 )
  861. **************
  862. *** 475,480
  863.           &&(P_ASOLD>0)){
  864.               if((groupmen>=TAKESECTOR)&&(SOWN==0 )){
  865.                   mvaddstr(LINES-2,0,"Taking Unowned Sector");
  866.                   refresh();
  867.                   sleep(2);
  868.                   SOWN=country;
  869. --- 475,481 -----
  870.           &&(P_ASOLD>0)){
  871.               if((groupmen>=TAKESECTOR)&&(SOWN==0 )){
  872.                   mvaddstr(LINES-2,0,"Taking Unowned Sector");
  873. +                 clrtoeol();
  874.                   refresh();
  875.                   sleep(2);
  876.                   SOWN=country;
  877. *** oupdate.c
  878. --- update.c
  879. **************
  880. *** 39,47
  881.       check();
  882.   
  883.   #ifdef MONSTER
  884. -     for( country=1;country<NTOTAL;country++)
  885. -         if( ntn[country].active == NPC_LIZARD )
  886. -             updlizards();    /* run lizard nations */
  887.       check();
  888.       monster();    /* update monster nations */
  889.       check();
  890. --- 39,44 -----
  891.       check();
  892.   
  893.   #ifdef MONSTER
  894.       check();
  895.       monster();    /* update monster nations */
  896.       check();
  897. **************
  898. *** 670,676
  899.   }
  900.   
  901.   /****************************************************************/
  902. ! /*    UPDLIZARDS()                         */
  903.   /* update lizards                         */
  904.   /****************************************************************/
  905.   void
  906. --- 667,673 -----
  907.   }
  908.   
  909.   /****************************************************************/
  910. ! /*    DO_LIZARD()                         */
  911.   /* update lizards                         */
  912.   /****************************************************************/
  913.   void
  914. **************
  915. *** 674,680
  916.   /* update lizards                         */
  917.   /****************************************************************/
  918.   void
  919. ! updlizards()
  920.   {
  921.       register int i, j;
  922.       int armynum;
  923. --- 671,677 -----
  924.   /* update lizards                         */
  925.   /****************************************************************/
  926.   void
  927. ! do_lizard()
  928.   {
  929.       register int i, j;
  930.       int armynum;
  931. **************
  932. *** 679,685
  933.       register int i, j;
  934.       int armynum;
  935.   
  936. !     printf("updating lizard (nation %d)\n ",country);
  937.       curntn = &ntn[country];
  938.       for(armynum=0;armynum<MAXARM;armynum++)
  939.       if((P_ASOLD>0)) {
  940. --- 676,682 -----
  941.       register int i, j;
  942.       int armynum;
  943.   
  944. !     printf("updating lizard (nation %d)\n",country);
  945.       curntn = &ntn[country];
  946.       for(armynum=0;armynum<MAXARM;armynum++)
  947.       if((P_ASOLD>0)) {
  948. **************
  949. *** 684,689
  950.       for(armynum=0;armynum<MAXARM;armynum++)
  951.       if((P_ASOLD>0)) {
  952.           P_AMOVE =20;    /* just in case god wants to move them */
  953.           if(armynum%2==0) {
  954.               if(P_ASTAT!=SIEGED) P_ASTAT=GARRISON;
  955.           } else {
  956. --- 681,688 -----
  957.       for(armynum=0;armynum<MAXARM;armynum++)
  958.       if((P_ASOLD>0)) {
  959.           P_AMOVE =20;    /* just in case god wants to move them */
  960. +         P_ASOLD*=102;    /* increase population */
  961. +         P_ASOLD/=100;
  962.           if(armynum%2==0) {
  963.               if(P_ASTAT!=SIEGED) P_ASTAT=GARRISON;
  964.           } else {
  965. *** odata.c
  966. --- data.c
  967. **************
  968. *** 271,277
  969.   "rice", "wheat", "dairy", "peas", "bread", "cereal",
  970.   "pottery", "salt", "timber", "granite", "pine", "oak", "nails",
  971.   "papyrus","math","library","drama","paper","literature","law","philosophy",
  972. ! "irregation", "oxen", "plows",
  973.   "stones",
  974.   "herbs", "medicine",
  975.   "torture", "prison",
  976. --- 271,277 -----
  977.   "rice", "wheat", "dairy", "peas", "bread", "cereal",
  978.   "pottery", "salt", "timber", "granite", "pine", "oak", "nails",
  979.   "papyrus","math","library","drama","paper","literature","law","philosophy",
  980. ! "irrigation", "oxen", "plows",
  981.   "stones",
  982.   "herbs", "medicine",
  983.   "torture", "prison",
  984. *** omagic.c
  985. --- magic.c
  986. **************
  987. *** 600,606
  988.           mvaddstr((*count)++,0,"  What orc nation:");
  989.           refresh();
  990.           i=get_country();
  991. !         if(i<=0 || i>NTOTAL || !isntn(ntn[i].active) )
  992.               mvaddstr((*count)++,0,"  Invalid Nation");
  993.           else if((curntn->dstatus[i]<HOSTILE)
  994.           &&(curntn->dstatus[i]!=UNMET)
  995. --- 600,606 -----
  996.           mvaddstr((*count)++,0,"  What orc nation:");
  997.           refresh();
  998.           i=get_country();
  999. !         if(i<=0 || i>=NTOTAL || !isntn(ntn[i].active) )
  1000.               mvaddstr((*count)++,0,"  Invalid Nation");
  1001.           else if((curntn->dstatus[i]<HOSTILE)
  1002.           &&(curntn->dstatus[i]!=UNMET)
  1003. *** onewlogin.c
  1004. --- newlogin.c
  1005. **************
  1006. *** 126,132
  1007.       register i;
  1008.   
  1009.       printf("\nPreparing to add player\n");
  1010. -     printf("break at any time to abort\n");
  1011.   
  1012.       while(more==TRUE) {
  1013.           points=MAXPTS;
  1014. --- 126,131 -----
  1015.       register i;
  1016.   
  1017.       printf("\nPreparing to add player\n");
  1018.   
  1019.       while(more==TRUE) {
  1020.           points=MAXPTS;
  1021. **************
  1022. *** 130,135
  1023.   
  1024.       while(more==TRUE) {
  1025.           points=MAXPTS;
  1026.           /*find valid nation number type*/
  1027.           for(i=1;i<NTOTAL;i++)
  1028.               if(ntn[i].active==INACTIVE) {
  1029. --- 129,135 -----
  1030.   
  1031.       while(more==TRUE) {
  1032.           points=MAXPTS;
  1033. +         country=0;
  1034.           /*find valid nation number type*/
  1035.           for(i=1;i<NTOTAL;i++)
  1036.               if(ntn[i].active==INACTIVE) {
  1037. **************
  1038. *** 139,145
  1039.               }
  1040.           printf("first valid nation id is %d\n",country);
  1041.   
  1042. !         if(i==NTOTAL) {
  1043.               beep();
  1044.               printf("error, cant add new nation\n");
  1045.               return;
  1046. --- 139,145 -----
  1047.               }
  1048.           printf("first valid nation id is %d\n",country);
  1049.   
  1050. !         if(country==0) {
  1051.               beep();
  1052.               printf("error, cant add new nation\n");
  1053.               return;
  1054. **************
  1055. *** 389,395
  1056.                   printf("how many points to spend on population:");
  1057.                   scanf("%d",&temp);
  1058.                   putchar('\n');
  1059. !                 if(points >= temp) {
  1060.                       points -= temp;
  1061.                       curntn->tciv+=temp*NLPOP;
  1062.                   }
  1063. --- 389,397 -----
  1064.                   printf("how many points to spend on population:");
  1065.                   scanf("%d",&temp);
  1066.                   putchar('\n');
  1067. !                 if(points <= 0) {
  1068. !                     printf("Purchase aborted...");
  1069. !                 } if(points >= temp) {
  1070.                       points -= temp;
  1071.                       curntn->tciv+=temp*NLPOP;
  1072.                   }
  1073. **************
  1074. *** 401,408
  1075.                   printf("how many points to spend on added gold talons:");
  1076.                   scanf("%d",&temp);
  1077.                   putchar('\n');
  1078. !                 if(points>=temp)
  1079. !                 {
  1080.                       points-=temp;
  1081.                       curntn->tgold+=temp*NLGOLD;
  1082.                   }
  1083. --- 403,411 -----
  1084.                   printf("how many points to spend on added gold talons:");
  1085.                   scanf("%d",&temp);
  1086.                   putchar('\n');
  1087. !                 if(points<=0) {
  1088. !                     printf("Purchase aborted....");
  1089. !                 } else if(points>=temp) {
  1090.                       points-=temp;
  1091.                       curntn->tgold+=temp*NLGOLD;
  1092.                   }
  1093. **************
  1094. *** 429,435
  1095.                   printf("how many points to spend?");
  1096.                   scanf("%d",&temp);
  1097.                   putchar('\n');
  1098. !                 if(points >= temp) {
  1099.                       points -= temp;
  1100.                       curntn->tmil+=temp*NLSOLD;
  1101.                   }
  1102. --- 432,440 -----
  1103.                   printf("how many points to spend?");
  1104.                   scanf("%d",&temp);
  1105.                   putchar('\n');
  1106. !                 if (points <= 0) {
  1107. !                     printf("Purchase aborted...");
  1108. !                 } else if(points >= temp) {
  1109.                       points -= temp;
  1110.                       curntn->tmil+=temp*NLSOLD;
  1111.                   }
  1112. **************
  1113. *** 445,451
  1114.                   printf("how many points do you wish to spend?");
  1115.                   scanf("%d",&temp);
  1116.                   putchar('\n');
  1117. !                 if(points >= temp) {
  1118.                       points -= temp;
  1119.                       if(curntn->race == ORC )
  1120.                       curntn->aplus+=temp*NLATTACK/2;
  1121. --- 450,458 -----
  1122.                   printf("how many points do you wish to spend?");
  1123.                   scanf("%d",&temp);
  1124.                   putchar('\n');
  1125. !                 if(points <= 0) {
  1126. !                     printf("Purchase aborted...");
  1127. !                 } else if(points >= temp) {
  1128.                       points -= temp;
  1129.                       if(curntn->race == ORC )
  1130.                       curntn->aplus+=temp*NLATTACK/2;
  1131. **************
  1132. *** 468,474
  1133.                   printf("how many points do you wish to spend?");
  1134.                   scanf("%d",&temp);
  1135.                   putchar('\n');
  1136. !                 if(points >= temp) {
  1137.                       points -= temp;
  1138.                       if(curntn->race == ORC )
  1139.                       curntn->dplus+=temp*NLDEFENCE/2;
  1140. --- 475,483 -----
  1141.                   printf("how many points do you wish to spend?");
  1142.                   scanf("%d",&temp);
  1143.                   putchar('\n');
  1144. !                 if(points <= 0) {
  1145. !                     printf("Purchase aborted...");
  1146. !                 } else if(points >= temp) {
  1147.                       points -= temp;
  1148.                       if(curntn->race == ORC )
  1149.                       curntn->dplus+=temp*NLDEFENCE/2;
  1150. **************
  1151. *** 492,498
  1152.                       printf("you have the maximum rate");
  1153.                       break;
  1154.                   }
  1155. !                 printf("how many percentage points to add?:");
  1156.                   scanf("%d",&temp);
  1157.                   putchar('\n');
  1158.                   if((points >= (temp*NLREPCOST))
  1159. --- 501,507 -----
  1160.                       printf("you have the maximum rate");
  1161.                       break;
  1162.                   }
  1163. !                 printf("how many purchasing points to spend?:");
  1164.                   scanf("%d",&temp);
  1165.                   putchar('\n');
  1166.                   if(temp < points) {
  1167. **************
  1168. *** 495,506
  1169.                   printf("how many percentage points to add?:");
  1170.                   scanf("%d",&temp);
  1171.                   putchar('\n');
  1172. !                 if((points >= (temp*NLREPCOST))
  1173. !                 ||((curntn->race==ORC)
  1174. !                     &&(points >= (temp*NLREPCOST/2)))) {
  1175. !                     if((curntn->race!=ORC)
  1176. !                     &&(curntn->repro+NLREPRO*temp>10)){
  1177. !                     printf("that exceeds the 10%% limit");
  1178.                       }
  1179.                       else if((curntn->race==ORC)
  1180.                       &&(curntn->repro>14-NLREPRO_ORC*temp)){
  1181. --- 504,532 -----
  1182.                   printf("how many purchasing points to spend?:");
  1183.                   scanf("%d",&temp);
  1184.                   putchar('\n');
  1185. !                 if(temp < points) {
  1186. !                     printf("You don't have enough points left");
  1187. !                 } else if (temp < 0) {
  1188. !                     printf("Negative, huh?  Who you trying to kid?");
  1189. !                 } else if (temp%NLREPCOST != 0) {
  1190. !                     printf("You must spend in multiples of %d",NLREPCOST);
  1191. !                 } else {
  1192. !                     if(curntn->race != ORC) {
  1193. !                         temp = temp/NLREPCOST*NLREPRO;
  1194. !                         if(curntn->repro+temp > 10) {
  1195. !                             printf("That exceeds the 10% limit");
  1196. !                         } else {
  1197. !                             points -= (temp*NLREPCOST/NLREPRO);
  1198. !                             curntn->repro += temp;
  1199. !                         }
  1200. !                     } else {
  1201. !                         temp = temp/NLREPCOST*NLREPRO_ORC;
  1202. !                         if(curntn->repro+temp > 14) {
  1203. !                             printf("That exceeds the 14% limit");
  1204. !                         } else {
  1205. !                             points -= (temp*NLREPCOST/NLREPRO_ORC);
  1206. !                             curntn->repro += temp;
  1207. !                         }
  1208.                       }
  1209.                   }
  1210.                   break;
  1211. **************
  1212. *** 502,519
  1213.                       &&(curntn->repro+NLREPRO*temp>10)){
  1214.                       printf("that exceeds the 10%% limit");
  1215.                       }
  1216. -                     else if((curntn->race==ORC)
  1217. -                     &&(curntn->repro>14-NLREPRO_ORC*temp)){
  1218. -                     printf("that exceeds the 14%% limit");
  1219. -                     }
  1220. -                     else {
  1221. -                     if(curntn->race==ORC)
  1222. -                         points -= (temp*NLREPCOST/2);
  1223. -                     else    points -= temp*NLREPCOST;
  1224. -                     if(curntn->race==ORC)
  1225. -                         curntn->repro+=NLREPRO_ORC*temp;
  1226. -                     else    curntn->repro+=NLREPRO*temp;
  1227. -                     }
  1228.                   }
  1229.                   else printf("You dont have enough points left");
  1230.                   break;
  1231. --- 528,533 -----
  1232.                               curntn->repro += temp;
  1233.                           }
  1234.                       }
  1235.                   }
  1236.                   break;
  1237.               case 8:
  1238. **************
  1239. *** 515,521
  1240.                       else    curntn->repro+=NLREPRO*temp;
  1241.                       }
  1242.                   }
  1243. -                 else printf("You dont have enough points left");
  1244.                   break;
  1245.               case 8:
  1246.                   if(curntn->race == ORC ) {
  1247. --- 529,534 -----
  1248.                           }
  1249.                       }
  1250.                   }
  1251.                   break;
  1252.               case 8:
  1253.                   if(curntn->race == ORC ) {
  1254. *** odisplay.c
  1255. --- display.c
  1256. **************
  1257. *** 315,322
  1258.       switch(hilmode){
  1259.       case HI_MOVE:    /* your armies w/ move left */
  1260.           for(armynum=0;armynum<MAXARM;armynum++)
  1261. !             if(( P_ASOLD>0 )
  1262. !             &&( P_AMOVE>0 )
  1263.               &&( P_AXLOC==(x+xoffset ))
  1264.               &&( P_AYLOC==(y+yoffset ))) break;
  1265.           if(armynum<MAXARM) standout();
  1266. --- 315,322 -----
  1267.       switch(hilmode){
  1268.       case HI_MOVE:    /* your armies w/ move left */
  1269.           for(armynum=0;armynum<MAXARM;armynum++)
  1270. !             if(( P_ASOLD != 0 )
  1271. !             &&( P_AMOVE != 0 )
  1272.               &&( P_AXLOC==(x+xoffset ))
  1273.               &&( P_AYLOC==(y+yoffset ))) break;
  1274.           if(armynum<MAXARM) standout();
  1275. **************
  1276. *** 323,329
  1277.           break;
  1278.       case HI_YARM:    /* your armies */
  1279.           for(armynum=0;armynum<MAXARM;armynum++)
  1280. !             if(( P_ASOLD>0)
  1281.               &&( P_AXLOC==x+xoffset)
  1282.               &&( P_AYLOC==y+yoffset)) break;
  1283.           if(armynum<MAXARM) standout();
  1284. --- 323,329 -----
  1285.           break;
  1286.       case HI_YARM:    /* your armies */
  1287.           for(armynum=0;armynum<MAXARM;armynum++)
  1288. !             if(( P_ASOLD != 0)
  1289.               &&( P_AXLOC==x+xoffset)
  1290.               &&( P_AYLOC==y+yoffset)) break;
  1291.           if(armynum<MAXARM) standout();
  1292. *** omain.c
  1293. --- main.c
  1294. **************
  1295. *** 68,74
  1296.   #endif SYSMAIL
  1297.       int sflag=FALSE;
  1298.   
  1299. !     char defaultdir[256];
  1300.       struct passwd *getpwnam();
  1301.       owneruid=getuid();
  1302.       strcpy(defaultdir, DEFAULTDIR);
  1303. --- 68,74 -----
  1304.   #endif SYSMAIL
  1305.       int sflag=FALSE;
  1306.   
  1307. !     char defaultdir[256],tmppass[PASSLTH+1];
  1308.       struct passwd *getpwnam();
  1309.       owneruid=getuid();
  1310.       strcpy(defaultdir, DEFAULTDIR);
  1311. **************
  1312. *** 94,100
  1313.           putchar('\n');
  1314.           exit(SUCCESS);
  1315.       case 'd':
  1316. !         strcpy(defaultdir, optarg);
  1317.           break;
  1318.       case 'n':
  1319.           strcpy(name, optarg);
  1320. --- 94,104 -----
  1321.           putchar('\n');
  1322.           exit(SUCCESS);
  1323.       case 'd':
  1324. !         if(optarg[0]!='/') {
  1325. !             sprintf(defaultdir, "%s/%s", DEFAULTDIR, optarg);
  1326. !         } else {
  1327. !             strcpy(defaultdir, optarg);
  1328. !         }
  1329.           break;
  1330.       case 'n':
  1331.           strcpy(name, optarg);
  1332. **************
  1333. *** 191,197
  1334.       curntn = &ntn[country];
  1335.   
  1336.       /*get encrypted password*/
  1337. !     strncpy(passwd,crypt(getpass("\nwhat is your nation's password:"),SALT),PASSLTH);
  1338.       if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
  1339.       &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
  1340.           strncpy(passwd,crypt(getpass("\nerror: reenter your nation's password:"),SALT),PASSLTH);
  1341. --- 195,202 -----
  1342.       curntn = &ntn[country];
  1343.   
  1344.       /*get encrypted password*/
  1345. !     strncpy(tmppass,getpass("\nwhat is your nation's password:"),PASSLTH);
  1346. !     strncpy(passwd,crypt(tmppass,SALT),PASSLTH);
  1347.       if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
  1348.       &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
  1349.           strncpy(tmppass,getpass("\nerror: reenter your nation's password:"),PASSLTH);
  1350. **************
  1351. *** 194,200
  1352.       strncpy(passwd,crypt(getpass("\nwhat is your nation's password:"),SALT),PASSLTH);
  1353.       if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
  1354.       &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
  1355. !         strncpy(passwd,crypt(getpass("\nerror: reenter your nation's password:"),SALT),PASSLTH);
  1356.           if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
  1357.           &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
  1358.               printf("\nsorry:");
  1359. --- 199,206 -----
  1360.       strncpy(passwd,crypt(tmppass,SALT),PASSLTH);
  1361.       if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
  1362.       &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
  1363. !         strncpy(tmppass,getpass("\nerror: reenter your nation's password:"),PASSLTH);
  1364. !         strncpy(passwd,crypt(tmppass,SALT),PASSLTH);
  1365.           if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
  1366.           &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
  1367.               printf("\nsorry:");
  1368. **************
  1369. *** 1013,1022
  1370.       mvaddstr(10,19, "Copyright (c) 1988 by Edward M Barlow");
  1371.       mvaddstr(11,18,"Written Edward M Barlow and Adam Bryant");
  1372.       mvaddstr(12,26,"All Rights Reserved");
  1373. !     mvaddstr(LINES-7,21,"This version is for personal use only");
  1374. !     mvaddstr(LINES-5,12,"It is expressly forbidden port this software to any form of");
  1375. !     mvaddstr(LINES-4,12,"Personal Computer or to redistribute this software without");
  1376. !     mvaddstr(LINES-3,18,"the permission of Edward Barlow or Adam Bryant");
  1377.       mvprintw(LINES-1, 60, "PRESS ANY KEY");
  1378.       refresh();
  1379.   }
  1380. --- 1019,1028 -----
  1381.       mvaddstr(10,19, "Copyright (c) 1988 by Edward M Barlow");
  1382.       mvaddstr(11,18,"Written Edward M Barlow and Adam Bryant");
  1383.       mvaddstr(12,26,"All Rights Reserved");
  1384. !     mvaddstr(LINES-7,19,"This version is for personal use only");
  1385. !     mvaddstr(LINES-5,8,"It is expressly forbidden port this software to any form of");
  1386. !     mvaddstr(LINES-4,8,"Personal Computer or to redistribute this software without");
  1387. !     mvaddstr(LINES-3,14,"the permission of Edward Barlow or Adam Bryant");
  1388.       mvprintw(LINES-1, 60, "PRESS ANY KEY");
  1389.       refresh();
  1390.   }
  1391. *** onpc.c
  1392. --- npc.c
  1393. **************
  1394. *** 89,95
  1395.           if( curntn->active==NPC_NOMAD ) do_nomad();
  1396.           else if( curntn->active==NPC_PIRATE ) do_pirate();
  1397.           else if( curntn->active==NPC_BARBARIAN ) do_barbarian();
  1398. !         else if( curntn->active==NPC_LIZARD ) do_lizard();
  1399.       }
  1400.   }
  1401.   
  1402. --- 89,95 -----
  1403.           if( curntn->active==NPC_NOMAD ) do_nomad();
  1404.           else if( curntn->active==NPC_PIRATE ) do_pirate();
  1405.           else if( curntn->active==NPC_BARBARIAN ) do_barbarian();
  1406. !         else if( curntn->active==NPC_LIZARD ) do_lizard(); /* update.c */
  1407.       }
  1408.   }
  1409.   
  1410. **************
  1411. *** 101,107
  1412.       int    x, y;
  1413.   
  1414.       /*move nomads */
  1415. !     printf("updating nomad nation %d\n",country);
  1416.       for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
  1417.           P_ASTAT=ATTACK;
  1418.           P_AMOVE=(curntn->maxmove * *(unitmove+P_ATYPE%UTYPE))/10;
  1419. --- 101,107 -----
  1420.       int    x, y;
  1421.   
  1422.       /*move nomads */
  1423. !     printf("updating nomad (nation %d)\n",country);
  1424.       for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
  1425.           P_ASTAT=ATTACK;
  1426.           P_AMOVE=(curntn->maxmove * *(unitmove+P_ATYPE%UTYPE))/10;
  1427. **************
  1428. *** 159,165
  1429.       short armynum;
  1430.       int x, y;
  1431.   
  1432. !     printf("updating barbarian nation %d\n",country);
  1433.       for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
  1434.           P_ASTAT=ATTACK;
  1435.           if(P_ATYPE<MINLEADER) {
  1436. --- 159,165 -----
  1437.       short armynum;
  1438.       int x, y;
  1439.   
  1440. !     printf("updating barbarian (nation %d)\n",country);
  1441.       for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
  1442.           P_ASTAT=ATTACK;
  1443.           if(P_ATYPE<MINLEADER) {
  1444. **************
  1445. *** 206,223
  1446.   }
  1447.   
  1448.   void
  1449. - do_lizard()
  1450. - {
  1451. -     short armynum;
  1452. -     printf("updating lizard nation %d\n",country);
  1453. -     for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
  1454. -         P_ASOLD*=102;
  1455. -         P_ASOLD/=100;
  1456. -     }
  1457. - }
  1458. - void
  1459.   do_pirate()
  1460.   {
  1461.       short nvynum,shipsize;
  1462. --- 206,211 -----
  1463.   }
  1464.   
  1465.   void
  1466.   do_pirate()
  1467.   {
  1468.       short nvynum,shipsize;
  1469. **************
  1470. *** 223,229
  1471.       short nvynum,shipsize;
  1472.       int x, y, campx, campy;
  1473.   
  1474. !     printf("updating pirate nation %d\n",country);
  1475.   
  1476.       /* if pirate fleet within 3 attack if outnumber any fleets */
  1477.       /* automatically find their base first */
  1478. --- 211,217 -----
  1479.       short nvynum,shipsize;
  1480.       int x, y, campx, campy;
  1481.   
  1482. !     printf("updating pirate (nation %d)\n",country);
  1483.   
  1484.       /* if pirate fleet within 3 attack if outnumber any fleets */
  1485.       /* automatically find their base first */
  1486. *** otxt0
  1487. --- txt0
  1488. **************
  1489. *** 46,52
  1490.   and resources (civilians, troops, metal, gold...).  Play involves building,
  1491.   moving, and controlling armies and navies, diplomacy with other players,
  1492.   and adjusting economic activity, which is primarily geared to the production
  1493. ! of gold for your treasury.  Metals are needed, however to build ships & armies,
  1494.   and food is needed to prevent revolts and keep people alive.
  1495.   
  1496.   Command line format: conquer [-hs -nNAT -dDIR]
  1497. --- 46,52 -----
  1498.   and resources (civilians, troops, metal, gold...).  Play involves building,
  1499.   moving, and controlling armies and navies, diplomacy with other players,
  1500.   and adjusting economic activity, which is primarily geared to the production
  1501. ! of gold for your treasury.  Also, metals are needed to build ships & armies,
  1502.   and food is needed to prevent revolts and keep people alive.
  1503.   
  1504.   Command line format: conquer [-hs -nNAT -dDIR]
  1505. *** otxt1
  1506. --- txt1
  1507. **************
  1508. *** 55,61
  1509.   Orc nations are very special in Conquer.  The only thing an orc is good at is 
  1510.   making other orcs.  They are slow, poor at combat, & bad in special abilities.
  1511.   They can get reproduction of up to 14% per year (the normal limit is 10%) & 
  1512. ! can start with a large number of people as initial reproduction costs are less 
  1513.   than normal.  Orcs are led by monsters (they start with MINOR MONSTER power),
  1514.   and are always evil (the only good orc is a dead orc...).  They are so nasty,
  1515.   EVERYBODY they meet start out hostile (50%) or at war (50%) with them.
  1516. --- 55,61 -----
  1517.   Orc nations are very special in Conquer.  The only thing an orc is good at is 
  1518.   making other orcs.  They are slow, poor at combat, & bad in special abilities.
  1519.   They can get reproduction of up to 14% per year (the normal limit is 10%) & 
  1520. ! can start with a large number of people as initial reproduction costs are less
  1521.   than normal.  Orcs are led by monsters (they start with MINOR MONSTER power),
  1522.   and are always evil (the only good orc is a dead orc...).  They are so nasty,
  1523.   EVERYBODY they meet start out hostile (50%) or at war (50%) with them.
  1524.  
  1525.