home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume6 / conquer4 / patch8 < prev    next >
Encoding:
Internet Message Format  |  1989-12-31  |  32.5 KB

  1. Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i084:  conquer4 - middle earth multi-player game (V4), Patch8
  5. Message-ID: <5130@tekred.CNA.TEK.COM>
  6. Date: 1 Feb 90 17:26:38 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 1030
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Adam Bryant <adb@cs.bu.edu>
  12. Posting-number: Volume 8, Issue 84
  13. Archive-name: conquer4/Patch8
  14. Patch-To: conquer4: Volume 6, Issue 83-96
  15.  
  16.  
  17. [[Well, remember when I said I wouldn't be sending out any
  18. more patches for conquer version 4?  Guess, what?  I lied!
  19.  
  20. This one is short, though, and is used to fix any a few
  21. bugs.  [Although two of them were major, thus the need to
  22. fix them]
  23.  
  24. The patch fixes:
  25.     - memory leak in move_people() at end of update.c
  26.     - redrawing/recentering of screen when at edge of map
  27.     - troop combination problems
  28.     - unique monster/leader names.  [woppidy doo!]
  29.     - and a few other tidbits.
  30.  
  31. Hopefully, this should fix those major bugs that I was
  32. told about and keep people happy until version 5.0 comes
  33. out.  [I estimate a month or so before I begin beta testing
  34. and then a couple of months after that for the official
  35. 5.0 posting to comp.sources.games.  So, hopefully it will
  36. be released by/during this summer]
  37.  
  38. Enjoy,
  39.       adam]]
  40.  
  41. #! /bin/sh
  42. # This is a shell archive.  Remove anything before this line, then unpack
  43. # it by saving it into a file and typing "sh file".  To overwrite existing
  44. # files, type "sh file -c".  You can also feed this as standard input via
  45. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  46. # will see the following message at the end:
  47. #        "End of shell archive."
  48. # Contents:  patches08
  49. # Wrapped by billr@saab on Thu Feb  1 09:24:55 1990
  50. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  51. if test -f 'patches08' -a "${1}" != "-c" ; then 
  52.   echo shar: Will not clobber existing file \"'patches08'\"
  53. else
  54. echo shar: Extracting \"'patches08'\" \(30045 characters\)
  55. sed "s/^X//" >'patches08' <<'END_OF_FILE'
  56. X*** opatchlevel.h    Wed Jan 31 20:58:16 1990
  57. X--- patchlevel.h    Wed Jan 31 20:58:24 1990
  58. X***************
  59. X*** 1 ****
  60. X! #define PATCHLEVEL    7
  61. X--- 1 ----
  62. X! #define PATCHLEVEL    8
  63. X*** onotes.v4    Wed Jan 31 20:58:16 1990
  64. X--- notes.v4    Wed Jan 31 20:58:25 1990
  65. X***************
  66. X*** 283,294 ****
  67. X  227. misc.c[498]: fixed overflow on gold scoring [Kenneth J Dalka]
  68. X  228. adjusted inflation calculation in update.c and reports.c.
  69. X  229. added the inflation estimation to the budget report.
  70. X! 230. fixed bug with division of charity by population. [Dave F.]
  71. X  231. prevent passage of fleets through hostile cities.
  72. X  232. added some checks in npc.c for ownership in drafting in some sectors.
  73. X  233. removed destruction of troops on peaks, now that flight is possible.
  74. X  234. changed to min zero in attractiveness, now drift will no longer occur
  75. X      for sectors with "zero" attractiveness.  [Dave F.]
  76. X  
  77. X  -------------------------------------------------------------------------
  78. X  | 2.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V5             |
  79. X--- 283,319 ----
  80. X  227. misc.c[498]: fixed overflow on gold scoring [Kenneth J Dalka]
  81. X  228. adjusted inflation calculation in update.c and reports.c.
  82. X  229. added the inflation estimation to the budget report.
  83. X! 230. fixed bug with division of charity by population. [Charles C. Fu]
  84. X  231. prevent passage of fleets through hostile cities.
  85. X  232. added some checks in npc.c for ownership in drafting in some sectors.
  86. X  233. removed destruction of troops on peaks, now that flight is possible.
  87. X  234. changed to min zero in attractiveness, now drift will no longer occur
  88. X      for sectors with "zero" attractiveness.  [Dave F.]
  89. X+ ===4.0 patch number seven released => 4.7 ===============================
  90. X+ 235. update.c[1327]: "ispc(country)" => "ispc(curntn->active)"
  91. X+ 236. added a note to README and fixed credit in notes.v4 file.
  92. X+ 237. made sure npcs do not change scout status.
  93. X+ 238. fixed bug with include files in check.c. [J. Bayer]
  94. X+ 239. update.c[1073]: declare items as unsigned char [Rodney Orr]
  95. X+ 240. update.c[1541]: rewrote move_people() routine to avoid memory leak
  96. X+     and to use only 5 / MAPX as much memory.
  97. X+ 241. adjusted casting in propuction screen for food consumption.
  98. X+ 242. trade.c: added check for unexpected end of file in trade [R. Orr]
  99. X+ 243. newlogin.c: removed the check() in the routine.
  100. X+ 244. added news notification during update if npc/pc mode is changed.
  101. X+ 245. removed useless ifdef REMAKE statement in admin.c.
  102. X+ 246. added check for edge of screen unnecessarily redrawing.
  103. X+ 247. added check for motion beyond edge of screen.
  104. X+ 248. added stoppage for going beyond map edges.
  105. X+ 249. checked for invalid reads of commerce file in trade.c.
  106. X+ 250. changed float casting back to longs at line 1052 of update.c.
  107. X+ 251. did the same for the calculations in function budget() of report.c.
  108. X+ 252. fixed display.c designation to show tofood(sctptr, country).
  109. X+ 253. made Dragyn the nation leader name and Dragon the monster name.
  110. X+ 254. restricted marching troops from being grouped.  (could get into
  111. X+     defend mode this way; even when they had marched too far).
  112. X+ 255. allow recombination of troops with same status and same type
  113. X+     unless the type is TRADED or ON_BOARD.
  114. X  
  115. X  -------------------------------------------------------------------------
  116. X  | 2.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V5             |
  117. X*** oadmin.c    Wed Jan 31 20:58:14 1990
  118. X--- admin.c    Wed Jan 31 20:58:26 1990
  119. X***************
  120. X*** 204,212 ****
  121. X                  printf(".\n");
  122. X                  exit(FAIL);
  123. X              }
  124. X- #ifdef REMAKE
  125. X              remake=TRUE;
  126. X- #endif /*REMAKE*/
  127. X              printf("************* WARNING!!!! *******************\n\n");
  128. X              printf("    There is already a game in progress.\n\n");
  129. X              printf("*********************************************\n\n");
  130. X--- 204,210 ----
  131. X***************
  132. X*** 227,233 ****
  133. X          }
  134. X  #else
  135. X          /* check for god permissions */
  136. X!         if(realuser!=(getpwnam(LOGIN)->pw_uid)) {
  137. X              printf("Sorry -- you can not create a world\n");
  138. X              printf("you need to be logged in as %s.\n",LOGIN);
  139. X              exit(FAIL);
  140. X--- 225,231 ----
  141. X          }
  142. X  #else
  143. X          /* check for god permissions */
  144. X!         if(realuser!=(getpwnam(LOGIN))->pw_uid) {
  145. X              printf("Sorry -- you can not create a world\n");
  146. X              printf("you need to be logged in as %s.\n",LOGIN);
  147. X              exit(FAIL);
  148. X*** oextcmds.c    Wed Jan 31 20:58:14 1990
  149. X--- extcmds.c    Wed Jan 31 20:58:26 1990
  150. X***************
  151. X*** 113,122 ****
  152. X  {
  153. X      int nocomb_stat();
  154. X  
  155. X!     if (armynum < 0 || armynum >= MAXARM ||
  156. X!         army2 < 0 || army2 >= MAXARM ||
  157. X!         armynum == army2 ||
  158. X!         (nocomb_stat(P_ASTAT) == TRUE) ||
  159. X          (nocomb_stat(curntn->arm[army2].stat) == TRUE) ||
  160. X          curntn->arm[army2].stat == SIEGE ||    /* may not jump out  */
  161. X          curntn->arm[army2].stat == SORTIE ||   /* of these statuses */
  162. X--- 113,129 ----
  163. X  {
  164. X      int nocomb_stat();
  165. X  
  166. X!     if (armynum < 0 || armynum >= MAXARM
  167. X!         || army2 < 0 || army2 >= MAXARM || P_ASOLD == 0
  168. X!         || curntn->arm[army2].sold == 0) {
  169. X!         errormsg("Selected unit doesn't exist");
  170. X!         return;
  171. X!     }
  172. X!     if (P_ASTAT != curntn->arm[army2].stat
  173. X!         || P_ATYPE != curntn->arm[army2].unittyp
  174. X!         || P_ATYPE >= MINLEADER
  175. X!         || P_ASTAT == ONBOARD || P_ASTAT == TRADED) {
  176. X!       if ((nocomb_stat(P_ASTAT) == TRUE) ||
  177. X          (nocomb_stat(curntn->arm[army2].stat) == TRUE) ||
  178. X          curntn->arm[army2].stat == SIEGE ||    /* may not jump out  */
  179. X          curntn->arm[army2].stat == SORTIE ||   /* of these statuses */
  180. X***************
  181. X*** 124,129 ****
  182. X--- 131,137 ----
  183. X          P_ATYPE!=curntn->arm[army2].unittyp) {
  184. X              errormsg("Selected armies not legal");
  185. X              return;
  186. X+         }
  187. X      }
  188. X      if((curntn->arm[army2].xloc!=P_AXLOC)
  189. X      ||(curntn->arm[army2].yloc!=P_AYLOC)) {
  190. X***************
  191. X*** 348,353 ****
  192. X--- 356,365 ----
  193. X      }
  194. X      if(P_ATYPE==A_ZOMBIE) {
  195. X          errormsg("Your Zombies just don't seem inspired");
  196. X+         return;
  197. X+     }
  198. X+     if(P_ASTAT==MARCH) {
  199. X+         errormsg("Your troops must stop marching before they can be lead");
  200. X          return;
  201. X      }
  202. X      if(armynum<0 || armynum >= MAXARM || P_ASTAT==SCOUT ||
  203. X*** orandeven.c    Wed Jan 31 20:58:16 1990
  204. X--- randeven.c    Wed Jan 31 20:58:27 1990
  205. X***************
  206. X*** 627,636 ****
  207. X                      break;
  208. X                  }
  209. X              }
  210. X-             break;
  211. X              /* decrement to contain proper value */
  212. X              xpos--;
  213. X              ypos--;
  214. X          case 27:
  215. X              /*plague -- 40% of populace in cities dies*/
  216. X              strcpy(eventstr,"40% of populace & armies in towns die");
  217. X--- 627,636 ----
  218. X                      break;
  219. X                  }
  220. X              }
  221. X              /* decrement to contain proper value */
  222. X              xpos--;
  223. X              ypos--;
  224. X+             break;
  225. X          case 27:
  226. X              /*plague -- 40% of populace in cities dies*/
  227. X              strcpy(eventstr,"40% of populace & armies in towns die");
  228. X*** ocexecute.c    Wed Jan 31 20:58:14 1990
  229. X--- cexecute.c    Wed Jan 31 20:58:28 1990
  230. X***************
  231. X*** 15,21 ****
  232. X  #include "data.h"
  233. X  extern long startgold;
  234. X  extern short country;
  235. X! extern FILE *fexe;
  236. X  extern char fison[];
  237. X  
  238. X  #ifdef CONQUER
  239. X--- 15,21 ----
  240. X  #include "data.h"
  241. X  extern long startgold;
  242. X  extern short country;
  243. X! extern FILE *fexe, *fnews;
  244. X  extern char fison[];
  245. X  
  246. X  #ifdef CONQUER
  247. X***************
  248. X*** 161,166 ****
  249. X--- 161,174 ----
  250. X              curntn->reputation = y;
  251. X              break;
  252. X          case NTAX:    /* set nations tax rate */
  253. X+ #ifdef ADMIN
  254. X+             if (ispc(curntn->active) && !ispc(x)) {
  255. X+               fprintf(fnews, "1.\tNation %s is now being run by the computer.\n", curntn->name);
  256. X+             }
  257. X+             if (ispc(x) && !ispc(curntn->active)) {
  258. X+               fprintf(fnews, "1.\tNation %s is no longer being run by the computer.\n", curntn->name);
  259. X+             }
  260. X+ #endif /*ADMIN*/
  261. X              curntn->tax_rate = armynum;
  262. X              curntn->active = x;
  263. X              curntn->charity = y;
  264. X*** oforms.c    Wed Jan 31 20:58:14 1990
  265. X--- forms.c    Wed Jan 31 20:58:28 1990
  266. X***************
  267. X*** 413,422 ****
  268. X          mvprintw(5,0,"active is %d",curntn->active);
  269. X      mvprintw(6,0,"tax_rate...... %2d%%",curntn->tax_rate);
  270. X      mvprintw(7,0,"inflation..... %2d%%",curntn->inflation);
  271. X!     i=10*curntn->tax_rate-curntn->popularity-curntn->terror-3*curntn->charity;
  272. X      if( i<0 ) i=0;
  273. X      mvprintw(8,0,"peasant revolt %2d%%",(i*PREVOLT)/100);
  274. X!     i=5*curntn->tax_rate - curntn->prestige;
  275. X      if( i<0 ) i=0;
  276. X      mvprintw(9,0,"other revolt.. %2d%%",(i*PREVOLT)/100);
  277. X      standend();
  278. X--- 413,422 ----
  279. X          mvprintw(5,0,"active is %d",curntn->active);
  280. X      mvprintw(6,0,"tax_rate...... %2d%%",curntn->tax_rate);
  281. X      mvprintw(7,0,"inflation..... %2d%%",curntn->inflation);
  282. X!     i=(int)10*curntn->tax_rate-curntn->popularity-curntn->terror-3*curntn->charity;
  283. X      if( i<0 ) i=0;
  284. X      mvprintw(8,0,"peasant revolt %2d%%",(i*PREVOLT)/100);
  285. X!     i=(int)5*curntn->tax_rate - curntn->prestige;
  286. X      if( i<0 ) i=0;
  287. X      mvprintw(9,0,"other revolt.. %2d%%",(i*PREVOLT)/100);
  288. X      standend();
  289. X***************
  290. X*** 441,447 ****
  291. X      temp = P_EATRATE;
  292. X      mvprintw(7,COLS/2-12, "eatrate.......%3.2f",temp);
  293. X      mvprintw(8,COLS/2-12, "wealth........ %3d",curntn->wealth);
  294. X!     mvprintw(9,COLS/2-12,"charity....... %2d%%",curntn->charity);
  295. X      mvprintw(10,COLS/2-12,"communication.%3.2f",(float) P_NTNCOM);
  296. X      mvprintw(11,COLS/2-12,"reputation.... %3d",curntn->reputation);
  297. X      mvprintw(12,COLS/2-12,"spoilrate.....%3d%%",curntn->spoilrate);
  298. X--- 441,447 ----
  299. X      temp = P_EATRATE;
  300. X      mvprintw(7,COLS/2-12, "eatrate.......%3.2f",temp);
  301. X      mvprintw(8,COLS/2-12, "wealth........ %3d",curntn->wealth);
  302. X!     mvprintw(9,COLS/2-12, "charity....... %2d%%",curntn->charity);
  303. X      mvprintw(10,COLS/2-12,"communication.%3.2f",(float) P_NTNCOM);
  304. X      mvprintw(11,COLS/2-12,"reputation.... %3d",curntn->reputation);
  305. X      mvprintw(12,COLS/2-12,"spoilrate.....%3d%%",curntn->spoilrate);
  306. X*** oreports.c    Wed Jan 31 20:58:16 1990
  307. X--- reports.c    Wed Jan 31 20:58:29 1990
  308. X***************
  309. X*** 361,372 ****
  310. X      chty = max((money*(long)curntn->charity)/100L,0L);
  311. X      mvprintw(15,COLS-50,"CHARITY.......................%8ld",chty);
  312. X      mvprintw(16,COLS-50,"NET INCOME....................%8ld",money);
  313. X      infmoney = startgold + money - chty;
  314. X      if (infmoney > 1000000L) {
  315. X!         infmoney = (long)(infmoney / (100.0+(float)curntn->inflation/4.0)) * 100L;
  316. X      } else {
  317. X!         infmoney= (long) (infmoney * 100L) / (100.0 + (float) curntn->inflation/4.0);
  318. X      }
  319. X      mvprintw(17,COLS-50,"LOSS DUE TO INFLATION.........%8ld",(startgold + money-chty)-infmoney);
  320. X      standout();
  321. X      mvprintw(18,COLS-50,"NEXT SEASON'S TREASURY........%8ld",infmoney);
  322. X--- 361,374 ----
  323. X      chty = max((money*(long)curntn->charity)/100L,0L);
  324. X      mvprintw(15,COLS-50,"CHARITY.......................%8ld",chty);
  325. X      mvprintw(16,COLS-50,"NET INCOME....................%8ld",money);
  326. X+ 
  327. X      infmoney = startgold + money - chty;
  328. X      if (infmoney > 1000000L) {
  329. X!         infmoney = (infmoney / (400L + curntn->inflation)) * 400L;
  330. X      } else {
  331. X!         infmoney = (infmoney * 400L) / (400L + curntn->inflation);
  332. X      }
  333. X+ 
  334. X      mvprintw(17,COLS-50,"LOSS DUE TO INFLATION.........%8ld",(startgold + money-chty)-infmoney);
  335. X      standout();
  336. X      mvprintw(18,COLS-50,"NEXT SEASON'S TREASURY........%8ld",infmoney);
  337. X***************
  338. X*** 425,433 ****
  339. X      mvprintw(9,0,  "granary now holds.........%8ld tons",curntn->tfood);
  340. X      mvprintw(10,0, "%8ld people in farms..%8ld tons",spread.infarm,spread.food - curntn->tfood);
  341. X      fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
  342. X!     mvprintw(12,0, "%8ld people @ %3.1f eat.%8.0f tons",spread.civilians,P_EATRATE,P_EATRATE*(float)spread.civilians);
  343. X      fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
  344. X!     mvprintw(13,0, "%8ld soldiers eat.....%8.0f tons",military,military*2*P_EATRATE);
  345. X      military+= military+spread.civilians; /* military is amount eaten */
  346. X      fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
  347. X      standout();
  348. X--- 427,435 ----
  349. X      mvprintw(9,0,  "granary now holds.........%8ld tons",curntn->tfood);
  350. X      mvprintw(10,0, "%8ld people in farms..%8ld tons",spread.infarm,spread.food - curntn->tfood);
  351. X      fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
  352. X!     mvprintw(12,0, "%8ld people @ %3.1f eat.%8.0ld tons",spread.civilians,P_EATRATE,(long)(P_EATRATE*(float)spread.civilians));
  353. X      fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
  354. X!     mvprintw(13,0, "%8ld soldiers eat.....%8.0ld tons",military,(long)(military*2*P_EATRATE));
  355. X      military+= military+spread.civilians; /* military is amount eaten */
  356. X      fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
  357. X      standout();
  358. X*** oupdate.c    Wed Jan 31 20:58:17 1990
  359. X--- update.c    Wed Jan 31 20:58:30 1990
  360. X***************
  361. X*** 25,30 ****
  362. X--- 25,31 ----
  363. X  extern short country;
  364. X  int    disarray;        /* TRUE if nation in disarray */
  365. X  int    **attr;            /* sector attractiveness */
  366. X+ long    **newpop;        /* storage for old population */
  367. X  
  368. X  /****************************************************************/
  369. X  /*    UPDATE() - updates the whole world            */
  370. X***************
  371. X*** 523,534 ****
  372. X  updexecs()
  373. X  {
  374. X      register struct s_sector    *sptr;
  375. X!     register int i, j, x, y;
  376. X  #ifdef XENIX
  377. X      register int z;
  378. X  #endif /*XENIX*/
  379. X      int    armynum;
  380. X!     int moved,done,loop=0,number=0;
  381. X      void move_people();
  382. X      int execed[NTOTAL];
  383. X  
  384. X--- 524,535 ----
  385. X  updexecs()
  386. X  {
  387. X      register struct s_sector    *sptr;
  388. X!     register int x, y;
  389. X  #ifdef XENIX
  390. X      register int z;
  391. X  #endif /*XENIX*/
  392. X      int    armynum;
  393. X!     int done, loop=0, number=0;
  394. X      void move_people();
  395. X      int execed[NTOTAL];
  396. X  
  397. X***************
  398. X*** 535,540 ****
  399. X--- 536,544 ----
  400. X      check();
  401. X      attr = (int **) m2alloc(MAPX,MAPY,sizeof(int));
  402. X      check();
  403. X+     newpop = (long **) m2alloc(5,MAPY,sizeof(long));
  404. X+     check();
  405. X+ 
  406. X      for(country=0;country<NTOTAL;country++) 
  407. X          if( isntn(ntn[country].active) ) execed[country]=FALSE;
  408. X          else {
  409. X***************
  410. X*** 700,705 ****
  411. X--- 704,710 ----
  412. X              &&( rand()%2==0)) ntn[country].spellpts+=1;
  413. X      }
  414. X      free(attr);
  415. X+     free(newpop);
  416. X  }
  417. X  
  418. X  /****************************************************************/
  419. X***************
  420. X*** 1044,1054 ****
  421. X  
  422. X              /* now find new total gold talons in nations*/
  423. X              if (curntn->tgold > 1000000L) {
  424. X!                 curntn->tgold = (long)(curntn->tgold /
  425. X!                     (100.0+(float)curntn->inflation/4.0)) * 100L;
  426. X              } else {
  427. X!                 curntn->tgold = (long) (curntn->tgold * 100L) /
  428. X!                     (100.0 + (float) curntn->inflation/4.0);
  429. X              }
  430. X  
  431. X              /* provide goods production */
  432. X--- 1049,1059 ----
  433. X  
  434. X              /* now find new total gold talons in nations*/
  435. X              if (curntn->tgold > 1000000L) {
  436. X!                 curntn->tgold = (curntn->tgold /
  437. X!                     (400L + curntn->inflation)) * 400L;
  438. X              } else {
  439. X!                 curntn->tgold = (curntn->tgold * 400L) /
  440. X!                     (400L + curntn->inflation);
  441. X              }
  442. X  
  443. X              /* provide goods production */
  444. X***************
  445. X*** 1070,1076 ****
  446. X      int    AX, AY, AT;    /* armies x,y locations, type : for speed */
  447. X      int armynum,nvynum,flag,dfltunit;
  448. X      int army2,asmen,dsmen,nation,sieges=0;
  449. X!     char siegex[MAXSIEGE],siegey[MAXSIEGE],siegok[MAXSIEGE];
  450. X  
  451. X      fprintf(stderr,"updating armies and navies\n");
  452. X      for(country=1;country<NTOTAL;country++) 
  453. X--- 1075,1081 ----
  454. X      int    AX, AY, AT;    /* armies x,y locations, type : for speed */
  455. X      int armynum,nvynum,flag,dfltunit;
  456. X      int army2,asmen,dsmen,nation,sieges=0;
  457. X!     unsigned char siegex[MAXSIEGE],siegey[MAXSIEGE],siegok[MAXSIEGE];
  458. X  
  459. X      fprintf(stderr,"updating armies and navies\n");
  460. X      for(country=1;country<NTOTAL;country++) 
  461. X***************
  462. X*** 1409,1415 ****
  463. X          if(curntn->tgold > GOLDTHRESH*curntn->jewels){
  464. X              /* buy jewels off commodities board */
  465. X              xx=curntn->tgold-GOLDTHRESH*curntn->jewels;
  466. X!             if (ispc(country)) {
  467. X                  if (mailopen(country)!=(-1)) {
  468. X                      fprintf(fm,"Message from Conquer\n\n");
  469. X                      fprintf(fm,"Gold imbalance forced your treasury to purchase\n");
  470. X--- 1414,1420 ----
  471. X          if(curntn->tgold > GOLDTHRESH*curntn->jewels){
  472. X              /* buy jewels off commodities board */
  473. X              xx=curntn->tgold-GOLDTHRESH*curntn->jewels;
  474. X!             if (ispc(curntn->active)) {
  475. X                  if (mailopen(country)!=(-1)) {
  476. X                      fprintf(fm,"Message from Conquer\n\n");
  477. X                      fprintf(fm,"Gold imbalance forced your treasury to purchase\n");
  478. X***************
  479. X*** 1536,1582 ****
  480. X  void
  481. X  move_people()
  482. X  {
  483. X      register struct s_sector *sptr;
  484. X!     register int i, j, x, y;
  485. X!     int moved, t_attr;
  486. X!     long **newpop, *curpop;
  487. X  
  488. X!     newpop = (long **) m2alloc(MAPX, MAPY, sizeof(long));
  489. X  
  490. X!     for (x = 0; x < MAPX; x++)
  491. X!     for (y = 0; y < MAPY; y++)
  492. X!         if (sct[x][y].owner == country)
  493. X!             newpop[x][y] = sct[x][y].people;
  494. X!         else newpop[x][y] = 0;
  495. X  
  496. X!     for (x = 0; x < MAPX; x++)
  497. X!     for (y = 0; y < MAPY; y++) {
  498. X!         sptr = &sct[x][y];
  499. X!         if ((sptr->owner == country) && (sptr->people != 0)) {
  500. X! 
  501. X!             for (t_attr = 0, i = x - 2; i < x + 3; i++)
  502. X!             for (j = y - 2; j < y + 3; j++)
  503. X!             if ((ONMAP(i, j)) && (sct[i][j].owner == country))
  504. X!                 t_attr += attr[i][j];
  505. X! 
  506. X!             if (t_attr > 0) {
  507. X!                 t_attr *= 5;
  508. X!                 curpop = &newpop[x][y];
  509. X!                 for (i = x - 2; i < x + 3; i++)
  510. X                  for (j = y - 2; j < y + 3; j++)
  511. X!                 if ((ONMAP(i, j)) && (sct[i][j].owner == country)) {
  512. X!                     moved = sptr->people * attr[i][j];
  513. X!                     if (moved > 0) {
  514. X!                         moved /= t_attr;
  515. X!                         *curpop -= moved;
  516. X!                         newpop[i][j] += moved;
  517. X                      }
  518. X                  }
  519. X              }
  520. X          }
  521. X      }
  522. X!     for (x = 0; x < MAPX; x++)
  523. X!     for (y = 0; y < MAPY; y++)
  524. X!     if (sct[x][y].owner == country)
  525. X!         sct[x][y].people = newpop[x][y];
  526. X  }
  527. X--- 1541,1606 ----
  528. X  void
  529. X  move_people()
  530. X  {
  531. X+     register int x, y, i, j;
  532. X      register struct s_sector *sptr;
  533. X!     int t_attr;
  534. X!     long *curpop, moved;
  535. X  
  536. X!     /* store the first two rows for computation */
  537. X!     for (x = 0; x < 3; x++) {
  538. X!         for (y = 0; y < MAPY; y++) {
  539. X!             if (sct[x][y].owner == country)
  540. X!                 newpop[x][y] = sct[x][y].people;
  541. X!             else newpop[x][y] = 0L;
  542. X!         }
  543. X!     }
  544. X  
  545. X!     /* go through entire map to move civilians */
  546. X!     for (x = 0; x < MAPX; x++) {
  547. X!         for (y = 0; y < MAPY; y++) {
  548. X!             sptr = &sct[x][y];
  549. X!             if ((sptr->owner == country) && (sptr->people != 0)) {
  550. X  
  551. X!                 for (t_attr = 0, i = x - 2; i < x + 3; i++)
  552. X                  for (j = y - 2; j < y + 3; j++)
  553. X!                 if (ONMAP(i, j))
  554. X!                     t_attr += attr[i][j];
  555. X! 
  556. X!                 if (t_attr > 0) {
  557. X!                     t_attr *= 5;
  558. X!                     curpop = &newpop[x%5][y];
  559. X!                     for (i = x - 2; i < x + 3; i++)
  560. X!                     for (j = y - 2; j < y + 3; j++)
  561. X!                     if (ONMAP(i, j)) {
  562. X!                         moved = sptr->people * attr[i][j];
  563. X!                         if (moved > 0) {
  564. X!                             moved /= t_attr;
  565. X!                             *curpop -= moved;
  566. X!                             newpop[i%5][j] += moved;
  567. X!                         }
  568. X                      }
  569. X                  }
  570. X              }
  571. X          }
  572. X+         /* store old row, and read in new */
  573. X+         for (y = 0; y < MAPY; y++) {
  574. X+             if (x > 1) {
  575. X+                 if (sct[x-2][y].owner == country)
  576. X+                     sct[x-2][y].people = newpop[(x-2)%5][y];
  577. X+             }
  578. X+             if (x < MAPX - 3) {
  579. X+                 if (sct[x+3][y].owner == country)
  580. X+                     newpop[(x+3)%5][y] = sct[x+3][y].people;
  581. X+                 else newpop[(x+3)%5][y] = 0L;
  582. X+             }
  583. X+         }
  584. X      }
  585. X! 
  586. X!     /* assign values for final rows */
  587. X!     for (x = MAPX - 2; x < MAPX; x++) {
  588. X!         for (y = 0; y < MAPY; y++) {
  589. X!             if (sct[x][y].owner == country)
  590. X!                 sct[x][y].people = newpop[x%5][y];
  591. X!         }
  592. X!     }
  593. X  }
  594. X*** odata.c    Wed Jan 31 20:58:14 1990
  595. X--- data.c    Wed Jan 31 20:58:31 1990
  596. X***************
  597. X*** 62,71 ****
  598. X  "Knights", "Gryfins","Elephants","Zombies","Spy","Scout",
  599. X  "King","Baron","Emperor","Prince","Wizard","Mage",
  600. X  "Pope","Bishop","Admiral","Captain","Warlord","Lord",
  601. X! "Demon","Devil","Dragon","Wyrm","Shadow","Nazgul",
  602. X  "Spirit", "Assasin", "Efreet", "Gargoyl", "Wraith",
  603. X  "Hero", "Centaur", "Giant", "Suphero", "Mummy",
  604. X! "Elmentl", "Mintaur", "Demon", "Balrog", "Dragon"
  605. X  };
  606. X  
  607. X  #ifdef CONQUER
  608. X--- 62,71 ----
  609. X  "Knights", "Gryfins","Elephants","Zombies","Spy","Scout",
  610. X  "King","Baron","Emperor","Prince","Wizard","Mage",
  611. X  "Pope","Bishop","Admiral","Captain","Warlord","Lord",
  612. X! "Demon","Devil","Dragyn","Wyrm","Shadow","Nazgul",
  613. X  "Spirit", "Assasin", "Efreet", "Gargoyl", "Wraith",
  614. X  "Hero", "Centaur", "Giant", "Suphero", "Mummy",
  615. X! "Elmentl", "Mintaur", "Daemon", "Balrog", "Dragon"
  616. X  };
  617. X  
  618. X  #ifdef CONQUER
  619. X***************
  620. X*** 80,86 ****
  621. X  "Demn","Devl","Drag","Wyrm","Shad","Nazg",
  622. X  "spir", "Assn", "efr", "Garg", "Wra",
  623. X  "Hero", "Cent", "gt", "Shro", "Mumm",
  624. X! "Elem", "mino", "dem", "Bal", "Drag"
  625. X  };
  626. X  #endif CONQUER
  627. X  int unitminsth[]=        /* min strength of a unit */
  628. X--- 80,86 ----
  629. X  "Demn","Devl","Drag","Wyrm","Shad","Nazg",
  630. X  "spir", "Assn", "efr", "Garg", "Wra",
  631. X  "Hero", "Cent", "gt", "Shro", "Mumm",
  632. X! "Elem", "mino", "daem", "Bal", "Drgn"
  633. X  };
  634. X  #endif CONQUER
  635. X  int unitminsth[]=        /* min strength of a unit */
  636. X*** onewlogin.c    Wed Jan 31 20:58:15 1990
  637. X--- newlogin.c    Wed Jan 31 20:58:32 1990
  638. X***************
  639. X*** 849,855 ****
  640. X                  break;
  641. X              }
  642. X          }
  643. X-         check();
  644. X  
  645. X          /* check for save */
  646. X          newmsg("Save this nation? [ny]");
  647. X--- 849,854 ----
  648. X*** odisplay.c    Wed Jan 31 20:58:14 1990
  649. X--- display.c    Wed Jan 31 20:58:32 1990
  650. X***************
  651. X*** 220,226 ****
  652. X              break;
  653. X          case DI_DESI: /*designation*/
  654. X              if(sct[x+xoffset][y+yoffset].owner==0){
  655. X!                 if(tofood( &sct[x+xoffset][y+yoffset],sct[x+xoffset][y+yoffset].owner)!=0)
  656. X                      ch=sct[x+xoffset][y+yoffset].altitude;
  657. X                  else ch=sct[x+xoffset][y+yoffset].vegetation;
  658. X              }
  659. X--- 220,226 ----
  660. X              break;
  661. X          case DI_DESI: /*designation*/
  662. X              if(sct[x+xoffset][y+yoffset].owner==0){
  663. X!                 if(tofood( &sct[x+xoffset][y+yoffset],country)!=0)
  664. X                      ch=sct[x+xoffset][y+yoffset].altitude;
  665. X                  else ch=sct[x+xoffset][y+yoffset].vegetation;
  666. X              }
  667. X***************
  668. X*** 408,418 ****
  669. X  void
  670. X  coffmap()
  671. X  {
  672. X!     if((xcurs<=0)||(ycurs<=0)||(xcurs>=SCREEN_X_SIZE-1)
  673. X!     ||((ycurs>=SCREEN_Y_SIZE-1))||((XREAL)>=MAPX)
  674. X!      ||((YREAL)>=MAPY)) {
  675. X!       centermap();
  676. X!       redraw=PART;
  677. X      }
  678. X      
  679. X      if(redraw!=DONE) {
  680. X--- 408,418 ----
  681. X  void
  682. X  coffmap()
  683. X  {
  684. X!     if( xcurs<0 || (XREAL!=0 && xcurs==0) || (ycurs<0) ||
  685. X!        (YREAL!=0 && ycurs==0) || xcurs>=SCREEN_X_SIZE-1 ||
  686. X!        ycurs>=SCREEN_Y_SIZE-1 || XREAL>=MAPX || YREAL>=MAPY) {
  687. X!         centermap();
  688. X!         redraw=PART;
  689. X      }
  690. X      
  691. X      if(redraw!=DONE) {
  692. X*** omain.c    Wed Jan 31 20:58:15 1990
  693. X--- main.c    Wed Jan 31 20:58:33 1990
  694. X***************
  695. X*** 574,581 ****
  696. X      case 'b':    /*move south west*/
  697. X          pager=0;
  698. X          selector=0;
  699. X!         xcurs--;
  700. X!         ycurs++;
  701. X          break;
  702. X      case 'B':    /*budget*/
  703. X          redraw=FULL;
  704. X--- 574,581 ----
  705. X      case 'b':    /*move south west*/
  706. X          pager=0;
  707. X          selector=0;
  708. X!         if (XREAL > 0) xcurs--;
  709. X!         if (YREAL < MAPY - 1) ycurs++;
  710. X          break;
  711. X      case 'B':    /*budget*/
  712. X          redraw=FULL;
  713. X***************
  714. X*** 620,632 ****
  715. X      case 'H':    /*scroll west*/
  716. X          pager=0;
  717. X          selector=0;
  718. X!         xcurs-=((COLS-22)/4);
  719. X          break;
  720. X      case '4':
  721. X      case 'h':    /*move west*/
  722. X          pager=0;
  723. X          selector=0;
  724. X!         xcurs--;
  725. X          break;
  726. X      case 'I':    /*campaign information*/
  727. X          camp_info();
  728. X--- 620,633 ----
  729. X      case 'H':    /*scroll west*/
  730. X          pager=0;
  731. X          selector=0;
  732. X!         if (XREAL > (COLS-22)/4) xcurs-=((COLS-22)/4);
  733. X!         else xcurs = -xoffset;
  734. X          break;
  735. X      case '4':
  736. X      case 'h':    /*move west*/
  737. X          pager=0;
  738. X          selector=0;
  739. X!         if (XREAL > 0) xcurs--;
  740. X          break;
  741. X      case 'I':    /*campaign information*/
  742. X          camp_info();
  743. X***************
  744. X*** 635,669 ****
  745. X      case 'J':    /*scroll down*/
  746. X          pager=0;
  747. X          selector=0;
  748. X!         ycurs+=((SCREEN_Y_SIZE)/2);
  749. X          break;
  750. X      case '2':
  751. X      case 'j':    /*move down*/
  752. X          pager=0;
  753. X          selector=0;
  754. X!         ycurs++;
  755. X          break;
  756. X      case '8':
  757. X      case 'k':    /*move up*/
  758. X          pager=0;
  759. X          selector=0;
  760. X!         ycurs--;
  761. X          break;
  762. X      case 'K':    /*scroll up*/
  763. X          pager=0;
  764. X          selector=0;
  765. X!         ycurs-=((SCREEN_Y_SIZE)/2);
  766. X          break;
  767. X      case '6':
  768. X      case 'l':    /*move east*/
  769. X          pager=0;
  770. X          selector=0;
  771. X!         xcurs++;
  772. X          break;
  773. X      case 'L':    /*scroll east*/
  774. X          pager=0;
  775. X          selector=0;
  776. X!         xcurs+=((COLS-22)/4);
  777. X          break;
  778. X      case 'm':    /*move selected item to new x,y */
  779. X          mymove();
  780. X--- 636,674 ----
  781. X      case 'J':    /*scroll down*/
  782. X          pager=0;
  783. X          selector=0;
  784. X!         if (YREAL + (SCREEN_Y_SIZE)/2 < MAPY)
  785. X!             ycurs+=((SCREEN_Y_SIZE)/2);
  786. X!         else ycurs = MAPY - yoffset - 1;
  787. X          break;
  788. X      case '2':
  789. X      case 'j':    /*move down*/
  790. X          pager=0;
  791. X          selector=0;
  792. X!         if (YREAL < MAPY - 1) ycurs++;
  793. X          break;
  794. X      case '8':
  795. X      case 'k':    /*move up*/
  796. X          pager=0;
  797. X          selector=0;
  798. X!         if (YREAL > 0) ycurs--;
  799. X          break;
  800. X      case 'K':    /*scroll up*/
  801. X          pager=0;
  802. X          selector=0;
  803. X!         if (YREAL > (SCREEN_Y_SIZE)/2) ycurs-=((SCREEN_Y_SIZE)/2);
  804. X!         else ycurs = -yoffset;
  805. X          break;
  806. X      case '6':
  807. X      case 'l':    /*move east*/
  808. X          pager=0;
  809. X          selector=0;
  810. X!         if (XREAL < MAPX - 1) xcurs++;
  811. X          break;
  812. X      case 'L':    /*scroll east*/
  813. X          pager=0;
  814. X          selector=0;
  815. X!         if (XREAL + (COLS-22)/4 < MAPX) xcurs+=((COLS-22)/4);
  816. X!         else xcurs = MAPX - xoffset - 1;
  817. X          break;
  818. X      case 'm':    /*move selected item to new x,y */
  819. X          mymove();
  820. X***************
  821. X*** 680,687 ****
  822. X      case 'n':    /*move south-east*/
  823. X          pager=0;
  824. X          selector=0;
  825. X!         ycurs++;
  826. X!         xcurs++;
  827. X          break;
  828. X      case 'N':    /*read newspaper */
  829. X          redraw=PART;
  830. X--- 685,692 ----
  831. X      case 'n':    /*move south-east*/
  832. X          pager=0;
  833. X          selector=0;
  834. X!         if (YREAL < MAPY - 1) ycurs++;
  835. X!         if (XREAL < MAPX - 1) xcurs++;
  836. X          break;
  837. X      case 'N':    /*read newspaper */
  838. X          redraw=PART;
  839. X***************
  840. X*** 762,775 ****
  841. X      case 'u':    /*move north-east*/
  842. X          pager=0;
  843. X          selector=0;
  844. X!         ycurs--;
  845. X!         xcurs++;
  846. X          break;
  847. X          case 'U':    /* scroll north-east */
  848. X          pager=0;
  849. X          selector=0;
  850. X!         xcurs+=((COLS-22)/4);
  851. X!         ycurs-=((SCREEN_Y_SIZE)/2);
  852. X          break;
  853. X          case 'v':    /* version credits */
  854. X          credits();
  855. X--- 767,782 ----
  856. X      case 'u':    /*move north-east*/
  857. X          pager=0;
  858. X          selector=0;
  859. X!         if (YREAL > 0) ycurs--;
  860. X!         if (XREAL < MAPX - 1) xcurs++;
  861. X          break;
  862. X          case 'U':    /* scroll north-east */
  863. X          pager=0;
  864. X          selector=0;
  865. X!         if (XREAL + (COLS-22)/4 < MAPX) xcurs+=((COLS-22)/4);
  866. X!         else xcurs = MAPX - xoffset - 1;
  867. X!         if (YREAL > (SCREEN_Y_SIZE)/2) ycurs-=((SCREEN_Y_SIZE)/2);
  868. X!         else ycurs = -yoffset;
  869. X          break;
  870. X          case 'v':    /* version credits */
  871. X          credits();
  872. X***************
  873. X*** 801,814 ****
  874. X      case 'y':    /*move north-west*/
  875. X          pager=0;
  876. X          selector=0;
  877. X!         ycurs--;
  878. X!         xcurs--;
  879. X          break;
  880. X      case 'Y':    /* scroll north-west */
  881. X          pager=0;
  882. X          selector=0;
  883. X!         xcurs-=((COLS-22)/4);
  884. X!         ycurs-=((SCREEN_Y_SIZE)/2);
  885. X          break;
  886. X      case 'Z':    /*move civilians up to 2 spaces*/
  887. X          moveciv();
  888. X--- 808,823 ----
  889. X      case 'y':    /*move north-west*/
  890. X          pager=0;
  891. X          selector=0;
  892. X!         if (YREAL > 0) ycurs--;
  893. X!         if (XREAL > 0) xcurs--;
  894. X          break;
  895. X      case 'Y':    /* scroll north-west */
  896. X          pager=0;
  897. X          selector=0;
  898. X!         if (XREAL < (COLS-22)/4) xcurs = -xoffset;
  899. X!         else xcurs-=((COLS-22)/4);
  900. X!         if (YREAL < (SCREEN_Y_SIZE)/2) ycurs = -yoffset;
  901. X!         else ycurs-=((SCREEN_Y_SIZE)/2);
  902. X          break;
  903. X      case 'Z':    /*move civilians up to 2 spaces*/
  904. X          moveciv();
  905. X*** onpc.c    Wed Jan 31 20:58:16 1990
  906. X--- npc.c    Wed Jan 31 20:58:33 1990
  907. X***************
  908. X*** 522,527 ****
  909. X--- 522,528 ----
  910. X          case TRADED:
  911. X          case ONBOARD:
  912. X          case GENERAL:
  913. X+         case SCOUT:
  914. X              break;
  915. X          default:
  916. X              P_ASTAT=DEFEND;
  917. X*** otrade.c    Wed Jan 31 20:58:17 1990
  918. X--- trade.c    Wed Jan 31 20:58:34 1990
  919. X***************
  920. X*** 81,93 ****
  921. X          }
  922. X          /* read in all of the data */
  923. X          while (notopen==FALSE && !feof(tfile)) {
  924. X!             fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
  925. X!                 &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]);
  926. X!             if (deal[itemnum]==NOSALE) {
  927. X!                 /* remove item from sales list */
  928. X!                 deal[type1[itemnum]]=NOSALE;
  929. X!             } else if (deal[itemnum]==SELL) {
  930. X!                 itemnum++;
  931. X              }
  932. X          }
  933. X          if (notopen==FALSE) fclose(tfile);
  934. X--- 81,97 ----
  935. X          }
  936. X          /* read in all of the data */
  937. X          while (notopen==FALSE && !feof(tfile)) {
  938. X!             holdint = fscanf(tfile,"%d %d %d %d %ld %ld %d\n",
  939. X!                 &deal[itemnum],&natn[itemnum],&type1[itemnum],
  940. X!                 &type2[itemnum],&lvar1[itemnum],
  941. X!                 &lvar2[itemnum],&extra[itemnum]);
  942. X!             if (holdint == 7) {
  943. X!                 if (deal[itemnum]==NOSALE) {
  944. X!                     /* remove item from sales list */
  945. X!                     deal[type1[itemnum]]=NOSALE;
  946. X!                 } else if (deal[itemnum]==SELL) {
  947. X!                     itemnum++;
  948. X!                 }
  949. X              }
  950. X          }
  951. X          if (notopen==FALSE) fclose(tfile);
  952. X***************
  953. X*** 899,906 ****
  954. X      }
  955. X      /* read in all of the transactions */
  956. X      while(!feof(tfile)) {
  957. X!         fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
  958. X!             &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]);
  959. X          if (deal[itemnum]==NOSALE) {
  960. X              if (natn[itemnum]==country)
  961. X              takeback(country,type1[type1[itemnum]],lvar1[type1[itemnum]],extra[type1[itemnum]],TRUE);
  962. X--- 903,910 ----
  963. X      }
  964. X      /* read in all of the transactions */
  965. X      while(!feof(tfile)) {
  966. X!         if (7 != fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
  967. X!             &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum])) break;
  968. X          if (deal[itemnum]==NOSALE) {
  969. X              if (natn[itemnum]==country)
  970. X              takeback(country,type1[type1[itemnum]],lvar1[type1[itemnum]],extra[type1[itemnum]],TRUE);
  971. X***************
  972. X*** 946,953 ****
  973. X      }
  974. X      /* read in all of the transactions */
  975. X      while(!feof(tfile)) {
  976. X!         fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
  977. X!             &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]);
  978. X          if (deal[itemnum]==NOSALE) {
  979. X              /* remove item from sales list */
  980. X              deal[type1[itemnum]]=NOSALE;
  981. X--- 950,957 ----
  982. X      }
  983. X      /* read in all of the transactions */
  984. X      while(!feof(tfile)) {
  985. X!         if (7 != fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
  986. X!             &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum])) break;
  987. X          if (deal[itemnum]==NOSALE) {
  988. X              /* remove item from sales list */
  989. X              deal[type1[itemnum]]=NOSALE;
  990. X***************
  991. X*** 979,984 ****
  992. X--- 983,989 ----
  993. X          }
  994. X      }
  995. X      unlink(tradefile);
  996. X+     if (itemnum == 0) return;
  997. X      /* reopen the file for unsold commodities */
  998. X      if ((tfile=fopen(tradefile,"w")) == NULL) {
  999. X          /* error on opening file */
  1000. X*** ocheck.c    Wed Jan 31 20:58:14 1990
  1001. X--- check.c    Wed Jan 31 20:58:34 1990
  1002. X***************
  1003. X*** 3,8 ****
  1004. X--- 3,12 ----
  1005. X  
  1006. X  #include    <ctype.h>
  1007. X  #include    <stdio.h>
  1008. X+ #ifndef FILELOCK
  1009. X+ #include    <sys/types.h>
  1010. X+ #include    <sys/stat.h>
  1011. X+ #endif
  1012. X  #include    "header.h"
  1013. X  #include    "data.h"
  1014. X  
  1015. X***************
  1016. X*** 55,61 ****
  1017. X                  __file__,__line__,country,i,a->xloc,a->yloc,a->sold);
  1018. X                  a->sold = 0;
  1019. X              }
  1020. X!             if( a->stat == ONBOARD && a->smove > 0) {
  1021. X                  /* don't echo since this is still getting */
  1022. X                  /* set some place someplace I can't find yet */
  1023. X                  a->smove = 0;
  1024. X--- 59,65 ----
  1025. X                  __file__,__line__,country,i,a->xloc,a->yloc,a->sold);
  1026. X                  a->sold = 0;
  1027. X              }
  1028. X!             if( a->stat == ONBOARD && a->smove != 0) {
  1029. X                  /* don't echo since this is still getting */
  1030. X                  /* set some place someplace I can't find yet */
  1031. X                  a->smove = 0;
  1032. X
  1033. END_OF_FILE
  1034. if test 30045 -ne `wc -c <'patches08'`; then
  1035.     echo shar: \"'patches08'\" unpacked with wrong size!
  1036. fi
  1037. # end of 'patches08'
  1038. fi
  1039. echo shar: End of shell archive.
  1040. exit 0
  1041.