home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v08i084: conquer4 - middle earth multi-player game (V4), Patch8
- Message-ID: <5130@tekred.CNA.TEK.COM>
- Date: 1 Feb 90 17:26:38 GMT
- Sender: nobody@tekred.CNA.TEK.COM
- Lines: 1030
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Adam Bryant <adb@cs.bu.edu>
- Posting-number: Volume 8, Issue 84
- Archive-name: conquer4/Patch8
- Patch-To: conquer4: Volume 6, Issue 83-96
-
-
- [[Well, remember when I said I wouldn't be sending out any
- more patches for conquer version 4? Guess, what? I lied!
-
- This one is short, though, and is used to fix any a few
- bugs. [Although two of them were major, thus the need to
- fix them]
-
- The patch fixes:
- - memory leak in move_people() at end of update.c
- - redrawing/recentering of screen when at edge of map
- - troop combination problems
- - unique monster/leader names. [woppidy doo!]
- - and a few other tidbits.
-
- Hopefully, this should fix those major bugs that I was
- told about and keep people happy until version 5.0 comes
- out. [I estimate a month or so before I begin beta testing
- and then a couple of months after that for the official
- 5.0 posting to comp.sources.games. So, hopefully it will
- be released by/during this summer]
-
- Enjoy,
- adam]]
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of shell archive."
- # Contents: patches08
- # Wrapped by billr@saab on Thu Feb 1 09:24:55 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'patches08' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'patches08'\"
- else
- echo shar: Extracting \"'patches08'\" \(30045 characters\)
- sed "s/^X//" >'patches08' <<'END_OF_FILE'
- X*** opatchlevel.h Wed Jan 31 20:58:16 1990
- X--- patchlevel.h Wed Jan 31 20:58:24 1990
- X***************
- X*** 1 ****
- X! #define PATCHLEVEL 7
- X--- 1 ----
- X! #define PATCHLEVEL 8
- X*** onotes.v4 Wed Jan 31 20:58:16 1990
- X--- notes.v4 Wed Jan 31 20:58:25 1990
- X***************
- X*** 283,294 ****
- X 227. misc.c[498]: fixed overflow on gold scoring [Kenneth J Dalka]
- X 228. adjusted inflation calculation in update.c and reports.c.
- X 229. added the inflation estimation to the budget report.
- X! 230. fixed bug with division of charity by population. [Dave F.]
- X 231. prevent passage of fleets through hostile cities.
- X 232. added some checks in npc.c for ownership in drafting in some sectors.
- X 233. removed destruction of troops on peaks, now that flight is possible.
- X 234. changed to min zero in attractiveness, now drift will no longer occur
- X for sectors with "zero" attractiveness. [Dave F.]
- X
- X -------------------------------------------------------------------------
- X | 2.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V5 |
- X--- 283,319 ----
- X 227. misc.c[498]: fixed overflow on gold scoring [Kenneth J Dalka]
- X 228. adjusted inflation calculation in update.c and reports.c.
- X 229. added the inflation estimation to the budget report.
- X! 230. fixed bug with division of charity by population. [Charles C. Fu]
- X 231. prevent passage of fleets through hostile cities.
- X 232. added some checks in npc.c for ownership in drafting in some sectors.
- X 233. removed destruction of troops on peaks, now that flight is possible.
- X 234. changed to min zero in attractiveness, now drift will no longer occur
- X for sectors with "zero" attractiveness. [Dave F.]
- X+ ===4.0 patch number seven released => 4.7 ===============================
- X+ 235. update.c[1327]: "ispc(country)" => "ispc(curntn->active)"
- X+ 236. added a note to README and fixed credit in notes.v4 file.
- X+ 237. made sure npcs do not change scout status.
- X+ 238. fixed bug with include files in check.c. [J. Bayer]
- X+ 239. update.c[1073]: declare items as unsigned char [Rodney Orr]
- X+ 240. update.c[1541]: rewrote move_people() routine to avoid memory leak
- X+ and to use only 5 / MAPX as much memory.
- X+ 241. adjusted casting in propuction screen for food consumption.
- X+ 242. trade.c: added check for unexpected end of file in trade [R. Orr]
- X+ 243. newlogin.c: removed the check() in the routine.
- X+ 244. added news notification during update if npc/pc mode is changed.
- X+ 245. removed useless ifdef REMAKE statement in admin.c.
- X+ 246. added check for edge of screen unnecessarily redrawing.
- X+ 247. added check for motion beyond edge of screen.
- X+ 248. added stoppage for going beyond map edges.
- X+ 249. checked for invalid reads of commerce file in trade.c.
- X+ 250. changed float casting back to longs at line 1052 of update.c.
- X+ 251. did the same for the calculations in function budget() of report.c.
- X+ 252. fixed display.c designation to show tofood(sctptr, country).
- X+ 253. made Dragyn the nation leader name and Dragon the monster name.
- X+ 254. restricted marching troops from being grouped. (could get into
- X+ defend mode this way; even when they had marched too far).
- X+ 255. allow recombination of troops with same status and same type
- X+ unless the type is TRADED or ON_BOARD.
- X
- X -------------------------------------------------------------------------
- X | 2.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V5 |
- X*** oadmin.c Wed Jan 31 20:58:14 1990
- X--- admin.c Wed Jan 31 20:58:26 1990
- X***************
- X*** 204,212 ****
- X printf(".\n");
- X exit(FAIL);
- X }
- X- #ifdef REMAKE
- X remake=TRUE;
- X- #endif /*REMAKE*/
- X printf("************* WARNING!!!! *******************\n\n");
- X printf(" There is already a game in progress.\n\n");
- X printf("*********************************************\n\n");
- X--- 204,210 ----
- X***************
- X*** 227,233 ****
- X }
- X #else
- X /* check for god permissions */
- X! if(realuser!=(getpwnam(LOGIN)->pw_uid)) {
- X printf("Sorry -- you can not create a world\n");
- X printf("you need to be logged in as %s.\n",LOGIN);
- X exit(FAIL);
- X--- 225,231 ----
- X }
- X #else
- X /* check for god permissions */
- X! if(realuser!=(getpwnam(LOGIN))->pw_uid) {
- X printf("Sorry -- you can not create a world\n");
- X printf("you need to be logged in as %s.\n",LOGIN);
- X exit(FAIL);
- X*** oextcmds.c Wed Jan 31 20:58:14 1990
- X--- extcmds.c Wed Jan 31 20:58:26 1990
- X***************
- X*** 113,122 ****
- X {
- X int nocomb_stat();
- X
- X! if (armynum < 0 || armynum >= MAXARM ||
- X! army2 < 0 || army2 >= MAXARM ||
- X! armynum == army2 ||
- X! (nocomb_stat(P_ASTAT) == TRUE) ||
- X (nocomb_stat(curntn->arm[army2].stat) == TRUE) ||
- X curntn->arm[army2].stat == SIEGE || /* may not jump out */
- X curntn->arm[army2].stat == SORTIE || /* of these statuses */
- X--- 113,129 ----
- X {
- X int nocomb_stat();
- X
- X! if (armynum < 0 || armynum >= MAXARM
- X! || army2 < 0 || army2 >= MAXARM || P_ASOLD == 0
- X! || curntn->arm[army2].sold == 0) {
- X! errormsg("Selected unit doesn't exist");
- X! return;
- X! }
- X! if (P_ASTAT != curntn->arm[army2].stat
- X! || P_ATYPE != curntn->arm[army2].unittyp
- X! || P_ATYPE >= MINLEADER
- X! || P_ASTAT == ONBOARD || P_ASTAT == TRADED) {
- X! if ((nocomb_stat(P_ASTAT) == TRUE) ||
- X (nocomb_stat(curntn->arm[army2].stat) == TRUE) ||
- X curntn->arm[army2].stat == SIEGE || /* may not jump out */
- X curntn->arm[army2].stat == SORTIE || /* of these statuses */
- X***************
- X*** 124,129 ****
- X--- 131,137 ----
- X P_ATYPE!=curntn->arm[army2].unittyp) {
- X errormsg("Selected armies not legal");
- X return;
- X+ }
- X }
- X if((curntn->arm[army2].xloc!=P_AXLOC)
- X ||(curntn->arm[army2].yloc!=P_AYLOC)) {
- X***************
- X*** 348,353 ****
- X--- 356,365 ----
- X }
- X if(P_ATYPE==A_ZOMBIE) {
- X errormsg("Your Zombies just don't seem inspired");
- X+ return;
- X+ }
- X+ if(P_ASTAT==MARCH) {
- X+ errormsg("Your troops must stop marching before they can be lead");
- X return;
- X }
- X if(armynum<0 || armynum >= MAXARM || P_ASTAT==SCOUT ||
- X*** orandeven.c Wed Jan 31 20:58:16 1990
- X--- randeven.c Wed Jan 31 20:58:27 1990
- X***************
- X*** 627,636 ****
- X break;
- X }
- X }
- X- break;
- X /* decrement to contain proper value */
- X xpos--;
- X ypos--;
- X case 27:
- X /*plague -- 40% of populace in cities dies*/
- X strcpy(eventstr,"40% of populace & armies in towns die");
- X--- 627,636 ----
- X break;
- X }
- X }
- X /* decrement to contain proper value */
- X xpos--;
- X ypos--;
- X+ break;
- X case 27:
- X /*plague -- 40% of populace in cities dies*/
- X strcpy(eventstr,"40% of populace & armies in towns die");
- X*** ocexecute.c Wed Jan 31 20:58:14 1990
- X--- cexecute.c Wed Jan 31 20:58:28 1990
- X***************
- X*** 15,21 ****
- X #include "data.h"
- X extern long startgold;
- X extern short country;
- X! extern FILE *fexe;
- X extern char fison[];
- X
- X #ifdef CONQUER
- X--- 15,21 ----
- X #include "data.h"
- X extern long startgold;
- X extern short country;
- X! extern FILE *fexe, *fnews;
- X extern char fison[];
- X
- X #ifdef CONQUER
- X***************
- X*** 161,166 ****
- X--- 161,174 ----
- X curntn->reputation = y;
- X break;
- X case NTAX: /* set nations tax rate */
- X+ #ifdef ADMIN
- X+ if (ispc(curntn->active) && !ispc(x)) {
- X+ fprintf(fnews, "1.\tNation %s is now being run by the computer.\n", curntn->name);
- X+ }
- X+ if (ispc(x) && !ispc(curntn->active)) {
- X+ fprintf(fnews, "1.\tNation %s is no longer being run by the computer.\n", curntn->name);
- X+ }
- X+ #endif /*ADMIN*/
- X curntn->tax_rate = armynum;
- X curntn->active = x;
- X curntn->charity = y;
- X*** oforms.c Wed Jan 31 20:58:14 1990
- X--- forms.c Wed Jan 31 20:58:28 1990
- X***************
- X*** 413,422 ****
- X mvprintw(5,0,"active is %d",curntn->active);
- X mvprintw(6,0,"tax_rate...... %2d%%",curntn->tax_rate);
- X mvprintw(7,0,"inflation..... %2d%%",curntn->inflation);
- X! i=10*curntn->tax_rate-curntn->popularity-curntn->terror-3*curntn->charity;
- X if( i<0 ) i=0;
- X mvprintw(8,0,"peasant revolt %2d%%",(i*PREVOLT)/100);
- X! i=5*curntn->tax_rate - curntn->prestige;
- X if( i<0 ) i=0;
- X mvprintw(9,0,"other revolt.. %2d%%",(i*PREVOLT)/100);
- X standend();
- X--- 413,422 ----
- X mvprintw(5,0,"active is %d",curntn->active);
- X mvprintw(6,0,"tax_rate...... %2d%%",curntn->tax_rate);
- X mvprintw(7,0,"inflation..... %2d%%",curntn->inflation);
- X! i=(int)10*curntn->tax_rate-curntn->popularity-curntn->terror-3*curntn->charity;
- X if( i<0 ) i=0;
- X mvprintw(8,0,"peasant revolt %2d%%",(i*PREVOLT)/100);
- X! i=(int)5*curntn->tax_rate - curntn->prestige;
- X if( i<0 ) i=0;
- X mvprintw(9,0,"other revolt.. %2d%%",(i*PREVOLT)/100);
- X standend();
- X***************
- X*** 441,447 ****
- X temp = P_EATRATE;
- X mvprintw(7,COLS/2-12, "eatrate.......%3.2f",temp);
- X mvprintw(8,COLS/2-12, "wealth........ %3d",curntn->wealth);
- X! mvprintw(9,COLS/2-12,"charity....... %2d%%",curntn->charity);
- X mvprintw(10,COLS/2-12,"communication.%3.2f",(float) P_NTNCOM);
- X mvprintw(11,COLS/2-12,"reputation.... %3d",curntn->reputation);
- X mvprintw(12,COLS/2-12,"spoilrate.....%3d%%",curntn->spoilrate);
- X--- 441,447 ----
- X temp = P_EATRATE;
- X mvprintw(7,COLS/2-12, "eatrate.......%3.2f",temp);
- X mvprintw(8,COLS/2-12, "wealth........ %3d",curntn->wealth);
- X! mvprintw(9,COLS/2-12, "charity....... %2d%%",curntn->charity);
- X mvprintw(10,COLS/2-12,"communication.%3.2f",(float) P_NTNCOM);
- X mvprintw(11,COLS/2-12,"reputation.... %3d",curntn->reputation);
- X mvprintw(12,COLS/2-12,"spoilrate.....%3d%%",curntn->spoilrate);
- X*** oreports.c Wed Jan 31 20:58:16 1990
- X--- reports.c Wed Jan 31 20:58:29 1990
- X***************
- X*** 361,372 ****
- X chty = max((money*(long)curntn->charity)/100L,0L);
- X mvprintw(15,COLS-50,"CHARITY.......................%8ld",chty);
- X mvprintw(16,COLS-50,"NET INCOME....................%8ld",money);
- X infmoney = startgold + money - chty;
- X if (infmoney > 1000000L) {
- X! infmoney = (long)(infmoney / (100.0+(float)curntn->inflation/4.0)) * 100L;
- X } else {
- X! infmoney= (long) (infmoney * 100L) / (100.0 + (float) curntn->inflation/4.0);
- X }
- X mvprintw(17,COLS-50,"LOSS DUE TO INFLATION.........%8ld",(startgold + money-chty)-infmoney);
- X standout();
- X mvprintw(18,COLS-50,"NEXT SEASON'S TREASURY........%8ld",infmoney);
- X--- 361,374 ----
- X chty = max((money*(long)curntn->charity)/100L,0L);
- X mvprintw(15,COLS-50,"CHARITY.......................%8ld",chty);
- X mvprintw(16,COLS-50,"NET INCOME....................%8ld",money);
- X+
- X infmoney = startgold + money - chty;
- X if (infmoney > 1000000L) {
- X! infmoney = (infmoney / (400L + curntn->inflation)) * 400L;
- X } else {
- X! infmoney = (infmoney * 400L) / (400L + curntn->inflation);
- X }
- X+
- X mvprintw(17,COLS-50,"LOSS DUE TO INFLATION.........%8ld",(startgold + money-chty)-infmoney);
- X standout();
- X mvprintw(18,COLS-50,"NEXT SEASON'S TREASURY........%8ld",infmoney);
- X***************
- X*** 425,433 ****
- X mvprintw(9,0, "granary now holds.........%8ld tons",curntn->tfood);
- X mvprintw(10,0, "%8ld people in farms..%8ld tons",spread.infarm,spread.food - curntn->tfood);
- X fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
- X! mvprintw(12,0, "%8ld people @ %3.1f eat.%8.0f tons",spread.civilians,P_EATRATE,P_EATRATE*(float)spread.civilians);
- X fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
- X! mvprintw(13,0, "%8ld soldiers eat.....%8.0f tons",military,military*2*P_EATRATE);
- X military+= military+spread.civilians; /* military is amount eaten */
- X fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
- X standout();
- X--- 427,435 ----
- X mvprintw(9,0, "granary now holds.........%8ld tons",curntn->tfood);
- X mvprintw(10,0, "%8ld people in farms..%8ld tons",spread.infarm,spread.food - curntn->tfood);
- X fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
- X! mvprintw(12,0, "%8ld people @ %3.1f eat.%8.0ld tons",spread.civilians,P_EATRATE,(long)(P_EATRATE*(float)spread.civilians));
- X fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
- X! mvprintw(13,0, "%8ld soldiers eat.....%8.0ld tons",military,(long)(military*2*P_EATRATE));
- X military+= military+spread.civilians; /* military is amount eaten */
- X fprintf(fp,"LINE %d FILE %s\n",__LINE__,__FILE__);
- X standout();
- X*** oupdate.c Wed Jan 31 20:58:17 1990
- X--- update.c Wed Jan 31 20:58:30 1990
- X***************
- X*** 25,30 ****
- X--- 25,31 ----
- X extern short country;
- X int disarray; /* TRUE if nation in disarray */
- X int **attr; /* sector attractiveness */
- X+ long **newpop; /* storage for old population */
- X
- X /****************************************************************/
- X /* UPDATE() - updates the whole world */
- X***************
- X*** 523,534 ****
- X updexecs()
- X {
- X register struct s_sector *sptr;
- X! register int i, j, x, y;
- X #ifdef XENIX
- X register int z;
- X #endif /*XENIX*/
- X int armynum;
- X! int moved,done,loop=0,number=0;
- X void move_people();
- X int execed[NTOTAL];
- X
- X--- 524,535 ----
- X updexecs()
- X {
- X register struct s_sector *sptr;
- X! register int x, y;
- X #ifdef XENIX
- X register int z;
- X #endif /*XENIX*/
- X int armynum;
- X! int done, loop=0, number=0;
- X void move_people();
- X int execed[NTOTAL];
- X
- X***************
- X*** 535,540 ****
- X--- 536,544 ----
- X check();
- X attr = (int **) m2alloc(MAPX,MAPY,sizeof(int));
- X check();
- X+ newpop = (long **) m2alloc(5,MAPY,sizeof(long));
- X+ check();
- X+
- X for(country=0;country<NTOTAL;country++)
- X if( isntn(ntn[country].active) ) execed[country]=FALSE;
- X else {
- X***************
- X*** 700,705 ****
- X--- 704,710 ----
- X &&( rand()%2==0)) ntn[country].spellpts+=1;
- X }
- X free(attr);
- X+ free(newpop);
- X }
- X
- X /****************************************************************/
- X***************
- X*** 1044,1054 ****
- X
- X /* now find new total gold talons in nations*/
- X if (curntn->tgold > 1000000L) {
- X! curntn->tgold = (long)(curntn->tgold /
- X! (100.0+(float)curntn->inflation/4.0)) * 100L;
- X } else {
- X! curntn->tgold = (long) (curntn->tgold * 100L) /
- X! (100.0 + (float) curntn->inflation/4.0);
- X }
- X
- X /* provide goods production */
- X--- 1049,1059 ----
- X
- X /* now find new total gold talons in nations*/
- X if (curntn->tgold > 1000000L) {
- X! curntn->tgold = (curntn->tgold /
- X! (400L + curntn->inflation)) * 400L;
- X } else {
- X! curntn->tgold = (curntn->tgold * 400L) /
- X! (400L + curntn->inflation);
- X }
- X
- X /* provide goods production */
- X***************
- X*** 1070,1076 ****
- X int AX, AY, AT; /* armies x,y locations, type : for speed */
- X int armynum,nvynum,flag,dfltunit;
- X int army2,asmen,dsmen,nation,sieges=0;
- X! char siegex[MAXSIEGE],siegey[MAXSIEGE],siegok[MAXSIEGE];
- X
- X fprintf(stderr,"updating armies and navies\n");
- X for(country=1;country<NTOTAL;country++)
- X--- 1075,1081 ----
- X int AX, AY, AT; /* armies x,y locations, type : for speed */
- X int armynum,nvynum,flag,dfltunit;
- X int army2,asmen,dsmen,nation,sieges=0;
- X! unsigned char siegex[MAXSIEGE],siegey[MAXSIEGE],siegok[MAXSIEGE];
- X
- X fprintf(stderr,"updating armies and navies\n");
- X for(country=1;country<NTOTAL;country++)
- X***************
- X*** 1409,1415 ****
- X if(curntn->tgold > GOLDTHRESH*curntn->jewels){
- X /* buy jewels off commodities board */
- X xx=curntn->tgold-GOLDTHRESH*curntn->jewels;
- X! if (ispc(country)) {
- X if (mailopen(country)!=(-1)) {
- X fprintf(fm,"Message from Conquer\n\n");
- X fprintf(fm,"Gold imbalance forced your treasury to purchase\n");
- X--- 1414,1420 ----
- X if(curntn->tgold > GOLDTHRESH*curntn->jewels){
- X /* buy jewels off commodities board */
- X xx=curntn->tgold-GOLDTHRESH*curntn->jewels;
- X! if (ispc(curntn->active)) {
- X if (mailopen(country)!=(-1)) {
- X fprintf(fm,"Message from Conquer\n\n");
- X fprintf(fm,"Gold imbalance forced your treasury to purchase\n");
- X***************
- X*** 1536,1582 ****
- X void
- X move_people()
- X {
- X register struct s_sector *sptr;
- X! register int i, j, x, y;
- X! int moved, t_attr;
- X! long **newpop, *curpop;
- X
- X! newpop = (long **) m2alloc(MAPX, MAPY, sizeof(long));
- X
- X! for (x = 0; x < MAPX; x++)
- X! for (y = 0; y < MAPY; y++)
- X! if (sct[x][y].owner == country)
- X! newpop[x][y] = sct[x][y].people;
- X! else newpop[x][y] = 0;
- X
- X! for (x = 0; x < MAPX; x++)
- X! for (y = 0; y < MAPY; y++) {
- X! sptr = &sct[x][y];
- X! if ((sptr->owner == country) && (sptr->people != 0)) {
- X!
- X! for (t_attr = 0, i = x - 2; i < x + 3; i++)
- X! for (j = y - 2; j < y + 3; j++)
- X! if ((ONMAP(i, j)) && (sct[i][j].owner == country))
- X! t_attr += attr[i][j];
- X!
- X! if (t_attr > 0) {
- X! t_attr *= 5;
- X! curpop = &newpop[x][y];
- X! for (i = x - 2; i < x + 3; i++)
- X for (j = y - 2; j < y + 3; j++)
- X! if ((ONMAP(i, j)) && (sct[i][j].owner == country)) {
- X! moved = sptr->people * attr[i][j];
- X! if (moved > 0) {
- X! moved /= t_attr;
- X! *curpop -= moved;
- X! newpop[i][j] += moved;
- X }
- X }
- X }
- X }
- X }
- X! for (x = 0; x < MAPX; x++)
- X! for (y = 0; y < MAPY; y++)
- X! if (sct[x][y].owner == country)
- X! sct[x][y].people = newpop[x][y];
- X }
- X--- 1541,1606 ----
- X void
- X move_people()
- X {
- X+ register int x, y, i, j;
- X register struct s_sector *sptr;
- X! int t_attr;
- X! long *curpop, moved;
- X
- X! /* store the first two rows for computation */
- X! for (x = 0; x < 3; x++) {
- X! for (y = 0; y < MAPY; y++) {
- X! if (sct[x][y].owner == country)
- X! newpop[x][y] = sct[x][y].people;
- X! else newpop[x][y] = 0L;
- X! }
- X! }
- X
- X! /* go through entire map to move civilians */
- X! for (x = 0; x < MAPX; x++) {
- X! for (y = 0; y < MAPY; y++) {
- X! sptr = &sct[x][y];
- X! if ((sptr->owner == country) && (sptr->people != 0)) {
- X
- X! for (t_attr = 0, i = x - 2; i < x + 3; i++)
- X for (j = y - 2; j < y + 3; j++)
- X! if (ONMAP(i, j))
- X! t_attr += attr[i][j];
- X!
- X! if (t_attr > 0) {
- X! t_attr *= 5;
- X! curpop = &newpop[x%5][y];
- X! for (i = x - 2; i < x + 3; i++)
- X! for (j = y - 2; j < y + 3; j++)
- X! if (ONMAP(i, j)) {
- X! moved = sptr->people * attr[i][j];
- X! if (moved > 0) {
- X! moved /= t_attr;
- X! *curpop -= moved;
- X! newpop[i%5][j] += moved;
- X! }
- X }
- X }
- X }
- X }
- X+ /* store old row, and read in new */
- X+ for (y = 0; y < MAPY; y++) {
- X+ if (x > 1) {
- X+ if (sct[x-2][y].owner == country)
- X+ sct[x-2][y].people = newpop[(x-2)%5][y];
- X+ }
- X+ if (x < MAPX - 3) {
- X+ if (sct[x+3][y].owner == country)
- X+ newpop[(x+3)%5][y] = sct[x+3][y].people;
- X+ else newpop[(x+3)%5][y] = 0L;
- X+ }
- X+ }
- X }
- X!
- X! /* assign values for final rows */
- X! for (x = MAPX - 2; x < MAPX; x++) {
- X! for (y = 0; y < MAPY; y++) {
- X! if (sct[x][y].owner == country)
- X! sct[x][y].people = newpop[x%5][y];
- X! }
- X! }
- X }
- X*** odata.c Wed Jan 31 20:58:14 1990
- X--- data.c Wed Jan 31 20:58:31 1990
- X***************
- X*** 62,71 ****
- X "Knights", "Gryfins","Elephants","Zombies","Spy","Scout",
- X "King","Baron","Emperor","Prince","Wizard","Mage",
- X "Pope","Bishop","Admiral","Captain","Warlord","Lord",
- X! "Demon","Devil","Dragon","Wyrm","Shadow","Nazgul",
- X "Spirit", "Assasin", "Efreet", "Gargoyl", "Wraith",
- X "Hero", "Centaur", "Giant", "Suphero", "Mummy",
- X! "Elmentl", "Mintaur", "Demon", "Balrog", "Dragon"
- X };
- X
- X #ifdef CONQUER
- X--- 62,71 ----
- X "Knights", "Gryfins","Elephants","Zombies","Spy","Scout",
- X "King","Baron","Emperor","Prince","Wizard","Mage",
- X "Pope","Bishop","Admiral","Captain","Warlord","Lord",
- X! "Demon","Devil","Dragyn","Wyrm","Shadow","Nazgul",
- X "Spirit", "Assasin", "Efreet", "Gargoyl", "Wraith",
- X "Hero", "Centaur", "Giant", "Suphero", "Mummy",
- X! "Elmentl", "Mintaur", "Daemon", "Balrog", "Dragon"
- X };
- X
- X #ifdef CONQUER
- X***************
- X*** 80,86 ****
- X "Demn","Devl","Drag","Wyrm","Shad","Nazg",
- X "spir", "Assn", "efr", "Garg", "Wra",
- X "Hero", "Cent", "gt", "Shro", "Mumm",
- X! "Elem", "mino", "dem", "Bal", "Drag"
- X };
- X #endif CONQUER
- X int unitminsth[]= /* min strength of a unit */
- X--- 80,86 ----
- X "Demn","Devl","Drag","Wyrm","Shad","Nazg",
- X "spir", "Assn", "efr", "Garg", "Wra",
- X "Hero", "Cent", "gt", "Shro", "Mumm",
- X! "Elem", "mino", "daem", "Bal", "Drgn"
- X };
- X #endif CONQUER
- X int unitminsth[]= /* min strength of a unit */
- X*** onewlogin.c Wed Jan 31 20:58:15 1990
- X--- newlogin.c Wed Jan 31 20:58:32 1990
- X***************
- X*** 849,855 ****
- X break;
- X }
- X }
- X- check();
- X
- X /* check for save */
- X newmsg("Save this nation? [ny]");
- X--- 849,854 ----
- X*** odisplay.c Wed Jan 31 20:58:14 1990
- X--- display.c Wed Jan 31 20:58:32 1990
- X***************
- X*** 220,226 ****
- X break;
- X case DI_DESI: /*designation*/
- X if(sct[x+xoffset][y+yoffset].owner==0){
- X! if(tofood( &sct[x+xoffset][y+yoffset],sct[x+xoffset][y+yoffset].owner)!=0)
- X ch=sct[x+xoffset][y+yoffset].altitude;
- X else ch=sct[x+xoffset][y+yoffset].vegetation;
- X }
- X--- 220,226 ----
- X break;
- X case DI_DESI: /*designation*/
- X if(sct[x+xoffset][y+yoffset].owner==0){
- X! if(tofood( &sct[x+xoffset][y+yoffset],country)!=0)
- X ch=sct[x+xoffset][y+yoffset].altitude;
- X else ch=sct[x+xoffset][y+yoffset].vegetation;
- X }
- X***************
- X*** 408,418 ****
- X void
- X coffmap()
- X {
- X! if((xcurs<=0)||(ycurs<=0)||(xcurs>=SCREEN_X_SIZE-1)
- X! ||((ycurs>=SCREEN_Y_SIZE-1))||((XREAL)>=MAPX)
- X! ||((YREAL)>=MAPY)) {
- X! centermap();
- X! redraw=PART;
- X }
- X
- X if(redraw!=DONE) {
- X--- 408,418 ----
- X void
- X coffmap()
- X {
- X! if( xcurs<0 || (XREAL!=0 && xcurs==0) || (ycurs<0) ||
- X! (YREAL!=0 && ycurs==0) || xcurs>=SCREEN_X_SIZE-1 ||
- X! ycurs>=SCREEN_Y_SIZE-1 || XREAL>=MAPX || YREAL>=MAPY) {
- X! centermap();
- X! redraw=PART;
- X }
- X
- X if(redraw!=DONE) {
- X*** omain.c Wed Jan 31 20:58:15 1990
- X--- main.c Wed Jan 31 20:58:33 1990
- X***************
- X*** 574,581 ****
- X case 'b': /*move south west*/
- X pager=0;
- X selector=0;
- X! xcurs--;
- X! ycurs++;
- X break;
- X case 'B': /*budget*/
- X redraw=FULL;
- X--- 574,581 ----
- X case 'b': /*move south west*/
- X pager=0;
- X selector=0;
- X! if (XREAL > 0) xcurs--;
- X! if (YREAL < MAPY - 1) ycurs++;
- X break;
- X case 'B': /*budget*/
- X redraw=FULL;
- X***************
- X*** 620,632 ****
- X case 'H': /*scroll west*/
- X pager=0;
- X selector=0;
- X! xcurs-=((COLS-22)/4);
- X break;
- X case '4':
- X case 'h': /*move west*/
- X pager=0;
- X selector=0;
- X! xcurs--;
- X break;
- X case 'I': /*campaign information*/
- X camp_info();
- X--- 620,633 ----
- X case 'H': /*scroll west*/
- X pager=0;
- X selector=0;
- X! if (XREAL > (COLS-22)/4) xcurs-=((COLS-22)/4);
- X! else xcurs = -xoffset;
- X break;
- X case '4':
- X case 'h': /*move west*/
- X pager=0;
- X selector=0;
- X! if (XREAL > 0) xcurs--;
- X break;
- X case 'I': /*campaign information*/
- X camp_info();
- X***************
- X*** 635,669 ****
- X case 'J': /*scroll down*/
- X pager=0;
- X selector=0;
- X! ycurs+=((SCREEN_Y_SIZE)/2);
- X break;
- X case '2':
- X case 'j': /*move down*/
- X pager=0;
- X selector=0;
- X! ycurs++;
- X break;
- X case '8':
- X case 'k': /*move up*/
- X pager=0;
- X selector=0;
- X! ycurs--;
- X break;
- X case 'K': /*scroll up*/
- X pager=0;
- X selector=0;
- X! ycurs-=((SCREEN_Y_SIZE)/2);
- X break;
- X case '6':
- X case 'l': /*move east*/
- X pager=0;
- X selector=0;
- X! xcurs++;
- X break;
- X case 'L': /*scroll east*/
- X pager=0;
- X selector=0;
- X! xcurs+=((COLS-22)/4);
- X break;
- X case 'm': /*move selected item to new x,y */
- X mymove();
- X--- 636,674 ----
- X case 'J': /*scroll down*/
- X pager=0;
- X selector=0;
- X! if (YREAL + (SCREEN_Y_SIZE)/2 < MAPY)
- X! ycurs+=((SCREEN_Y_SIZE)/2);
- X! else ycurs = MAPY - yoffset - 1;
- X break;
- X case '2':
- X case 'j': /*move down*/
- X pager=0;
- X selector=0;
- X! if (YREAL < MAPY - 1) ycurs++;
- X break;
- X case '8':
- X case 'k': /*move up*/
- X pager=0;
- X selector=0;
- X! if (YREAL > 0) ycurs--;
- X break;
- X case 'K': /*scroll up*/
- X pager=0;
- X selector=0;
- X! if (YREAL > (SCREEN_Y_SIZE)/2) ycurs-=((SCREEN_Y_SIZE)/2);
- X! else ycurs = -yoffset;
- X break;
- X case '6':
- X case 'l': /*move east*/
- X pager=0;
- X selector=0;
- X! if (XREAL < MAPX - 1) xcurs++;
- X break;
- X case 'L': /*scroll east*/
- X pager=0;
- X selector=0;
- X! if (XREAL + (COLS-22)/4 < MAPX) xcurs+=((COLS-22)/4);
- X! else xcurs = MAPX - xoffset - 1;
- X break;
- X case 'm': /*move selected item to new x,y */
- X mymove();
- X***************
- X*** 680,687 ****
- X case 'n': /*move south-east*/
- X pager=0;
- X selector=0;
- X! ycurs++;
- X! xcurs++;
- X break;
- X case 'N': /*read newspaper */
- X redraw=PART;
- X--- 685,692 ----
- X case 'n': /*move south-east*/
- X pager=0;
- X selector=0;
- X! if (YREAL < MAPY - 1) ycurs++;
- X! if (XREAL < MAPX - 1) xcurs++;
- X break;
- X case 'N': /*read newspaper */
- X redraw=PART;
- X***************
- X*** 762,775 ****
- X case 'u': /*move north-east*/
- X pager=0;
- X selector=0;
- X! ycurs--;
- X! xcurs++;
- X break;
- X case 'U': /* scroll north-east */
- X pager=0;
- X selector=0;
- X! xcurs+=((COLS-22)/4);
- X! ycurs-=((SCREEN_Y_SIZE)/2);
- X break;
- X case 'v': /* version credits */
- X credits();
- X--- 767,782 ----
- X case 'u': /*move north-east*/
- X pager=0;
- X selector=0;
- X! if (YREAL > 0) ycurs--;
- X! if (XREAL < MAPX - 1) xcurs++;
- X break;
- X case 'U': /* scroll north-east */
- X pager=0;
- X selector=0;
- X! if (XREAL + (COLS-22)/4 < MAPX) xcurs+=((COLS-22)/4);
- X! else xcurs = MAPX - xoffset - 1;
- X! if (YREAL > (SCREEN_Y_SIZE)/2) ycurs-=((SCREEN_Y_SIZE)/2);
- X! else ycurs = -yoffset;
- X break;
- X case 'v': /* version credits */
- X credits();
- X***************
- X*** 801,814 ****
- X case 'y': /*move north-west*/
- X pager=0;
- X selector=0;
- X! ycurs--;
- X! xcurs--;
- X break;
- X case 'Y': /* scroll north-west */
- X pager=0;
- X selector=0;
- X! xcurs-=((COLS-22)/4);
- X! ycurs-=((SCREEN_Y_SIZE)/2);
- X break;
- X case 'Z': /*move civilians up to 2 spaces*/
- X moveciv();
- X--- 808,823 ----
- X case 'y': /*move north-west*/
- X pager=0;
- X selector=0;
- X! if (YREAL > 0) ycurs--;
- X! if (XREAL > 0) xcurs--;
- X break;
- X case 'Y': /* scroll north-west */
- X pager=0;
- X selector=0;
- X! if (XREAL < (COLS-22)/4) xcurs = -xoffset;
- X! else xcurs-=((COLS-22)/4);
- X! if (YREAL < (SCREEN_Y_SIZE)/2) ycurs = -yoffset;
- X! else ycurs-=((SCREEN_Y_SIZE)/2);
- X break;
- X case 'Z': /*move civilians up to 2 spaces*/
- X moveciv();
- X*** onpc.c Wed Jan 31 20:58:16 1990
- X--- npc.c Wed Jan 31 20:58:33 1990
- X***************
- X*** 522,527 ****
- X--- 522,528 ----
- X case TRADED:
- X case ONBOARD:
- X case GENERAL:
- X+ case SCOUT:
- X break;
- X default:
- X P_ASTAT=DEFEND;
- X*** otrade.c Wed Jan 31 20:58:17 1990
- X--- trade.c Wed Jan 31 20:58:34 1990
- X***************
- X*** 81,93 ****
- X }
- X /* read in all of the data */
- X while (notopen==FALSE && !feof(tfile)) {
- X! fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
- X! &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]);
- X! if (deal[itemnum]==NOSALE) {
- X! /* remove item from sales list */
- X! deal[type1[itemnum]]=NOSALE;
- X! } else if (deal[itemnum]==SELL) {
- X! itemnum++;
- X }
- X }
- X if (notopen==FALSE) fclose(tfile);
- X--- 81,97 ----
- X }
- X /* read in all of the data */
- X while (notopen==FALSE && !feof(tfile)) {
- X! holdint = fscanf(tfile,"%d %d %d %d %ld %ld %d\n",
- X! &deal[itemnum],&natn[itemnum],&type1[itemnum],
- X! &type2[itemnum],&lvar1[itemnum],
- X! &lvar2[itemnum],&extra[itemnum]);
- X! if (holdint == 7) {
- X! if (deal[itemnum]==NOSALE) {
- X! /* remove item from sales list */
- X! deal[type1[itemnum]]=NOSALE;
- X! } else if (deal[itemnum]==SELL) {
- X! itemnum++;
- X! }
- X }
- X }
- X if (notopen==FALSE) fclose(tfile);
- X***************
- X*** 899,906 ****
- X }
- X /* read in all of the transactions */
- X while(!feof(tfile)) {
- X! fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
- X! &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]);
- X if (deal[itemnum]==NOSALE) {
- X if (natn[itemnum]==country)
- X takeback(country,type1[type1[itemnum]],lvar1[type1[itemnum]],extra[type1[itemnum]],TRUE);
- X--- 903,910 ----
- X }
- X /* read in all of the transactions */
- X while(!feof(tfile)) {
- X! if (7 != fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
- X! &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum])) break;
- X if (deal[itemnum]==NOSALE) {
- X if (natn[itemnum]==country)
- X takeback(country,type1[type1[itemnum]],lvar1[type1[itemnum]],extra[type1[itemnum]],TRUE);
- X***************
- X*** 946,953 ****
- X }
- X /* read in all of the transactions */
- X while(!feof(tfile)) {
- X! fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
- X! &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]);
- X if (deal[itemnum]==NOSALE) {
- X /* remove item from sales list */
- X deal[type1[itemnum]]=NOSALE;
- X--- 950,957 ----
- X }
- X /* read in all of the transactions */
- X while(!feof(tfile)) {
- X! if (7 != fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
- X! &natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum])) break;
- X if (deal[itemnum]==NOSALE) {
- X /* remove item from sales list */
- X deal[type1[itemnum]]=NOSALE;
- X***************
- X*** 979,984 ****
- X--- 983,989 ----
- X }
- X }
- X unlink(tradefile);
- X+ if (itemnum == 0) return;
- X /* reopen the file for unsold commodities */
- X if ((tfile=fopen(tradefile,"w")) == NULL) {
- X /* error on opening file */
- X*** ocheck.c Wed Jan 31 20:58:14 1990
- X--- check.c Wed Jan 31 20:58:34 1990
- X***************
- X*** 3,8 ****
- X--- 3,12 ----
- X
- X #include <ctype.h>
- X #include <stdio.h>
- X+ #ifndef FILELOCK
- X+ #include <sys/types.h>
- X+ #include <sys/stat.h>
- X+ #endif
- X #include "header.h"
- X #include "data.h"
- X
- X***************
- X*** 55,61 ****
- X __file__,__line__,country,i,a->xloc,a->yloc,a->sold);
- X a->sold = 0;
- X }
- X! if( a->stat == ONBOARD && a->smove > 0) {
- X /* don't echo since this is still getting */
- X /* set some place someplace I can't find yet */
- X a->smove = 0;
- X--- 59,65 ----
- X __file__,__line__,country,i,a->xloc,a->yloc,a->sold);
- X a->sold = 0;
- X }
- X! if( a->stat == ONBOARD && a->smove != 0) {
- X /* don't echo since this is still getting */
- X /* set some place someplace I can't find yet */
- X a->smove = 0;
- X
- END_OF_FILE
- if test 30045 -ne `wc -c <'patches08'`; then
- echo shar: \"'patches08'\" unpacked with wrong size!
- fi
- # end of 'patches08'
- fi
- echo shar: End of shell archive.
- exit 0
-