[comp.sources.games] v05i053: conquer3 - middle earth multi-player game

games@tekred.TEK.COM (07/29/88)

Submitted by: ihnp4!homxc!smile
Comp.sources.games: Volume 5, Issue 53
Archive-name: conquer3/Patch4

	[Unshar and feed to patch, or feed to patch directly if you have
	 the latest version.  -br]

#! /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:  patches04
# Wrapped by billr@saab on Fri Jul 29 09:06:24 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches04' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patches04'\"
else
echo shar: Extracting \"'patches04'\" \(40959 characters\)
sed "s/^X//" >'patches04' <<'END_OF_FILE'
X*** omakeworld.c	Thu Jul 28 09:09:48 1988
X--- makeworld.c	Thu Jul 28 09:10:58 1988
X***************
X*** 746,752
X  				ntn[NNOMAD].arm[army2num].yloc=y;
X  				ntn[NNOMAD].arm[army2num].stat=ATTACK;
X  				ntn[NNOMAD].arm[army2num].sold=100+100*(rand()%15);
X! 				ntn[NNOMAD].arm[army2num].unittyp=A_CAVALRY;
X  				if(army2num<MAXARM-1) army2num++;
X  			}
X  		}
X
X--- 746,752 -----
X  				ntn[NNOMAD].arm[army2num].yloc=y;
X  				ntn[NNOMAD].arm[army2num].stat=ATTACK;
X  				ntn[NNOMAD].arm[army2num].sold=100+100*(rand()%15);
X! 				ntn[NNOMAD].arm[army2num].unittyp=A_LT_CAV;
X  				if(army2num<MAXARM-1) army2num++;
X  			}
X  		}
X*** orandevent.c	Thu Jul 28 09:09:50 1988
X--- randevent.c	Thu Jul 28 09:10:58 1988
X***************
X*** 5,10
X  #include "data.h"
X  #ifdef RANEVENT
X  #ifdef ADMIN
X  
X  extern FILE *fnews;
X  extern short country;
X
X--- 5,14 -----
X  #include "data.h"
X  #ifdef RANEVENT
X  #ifdef ADMIN
X+ char	*names[] = {		/* must end in single character name */
X+ 	"groo","brok","vul","poin","srop","hoga","nobi","bonz","gail",
X+ 	"lynn","zorb","theed","urda","X"
X+ };
X  
X  extern FILE *fnews;
X  extern short country;
X***************
X*** 77,82
X  	return(newntn);
X  }
X  
X  /* disolve a certain percent of a nation */
X  /*returns value of new nation */
X  int
X
X--- 81,106 -----
X  	return(newntn);
X  }
X  
X+ char
X+ getnewmark()
X+ {
X+ 	char tmpchr;
X+ 	int  done=TRUE,i;
X+ 	tmpchr='A'-1;
X+ 	while (done) {
X+ 		tmpchr++;
X+ 		done=FALSE;
X+ 		for (i=0;i<MAXNTN;i++)
X+ 			if (ntn[i].mark==tmpchr && ntn[i].active>0)
X+ 				done=TRUE;
X+ 		if (!done && !isupper(tmpchr))
X+ 			done=TRUE;
X+ 		if (tmpchr=='Z')
X+ 			done=FALSE;
X+ 	}
X+ 	return(tmpchr);
X+ }
X+ 
X  /* disolve a certain percent of a nation */
X  /*returns value of new nation */
X  int
X***************
X*** 88,95
X  	int split;	/* number of sectors split */
X  	int defaultx=(-1), defaulty=(-1), realx=(-1), realy=(-1), dist;
X  	int i,j,armynum,narmynum,posi,posj;
X- 	int notdone=1;
X- 	char tmpchr;
X  
X  	split =  ntn[target].tsctrs * percent / 100;
X  	if (split==0) {
X
X--- 112,117 -----
X  	int split;	/* number of sectors split */
X  	int defaultx=(-1), defaulty=(-1), realx=(-1), realy=(-1), dist;
X  	int i,j,armynum,narmynum,posi,posj;
X  
X  	split =  ntn[target].tsctrs * percent / 100;
X  	if (split==0) {
X***************
X*** 127,139
X  		return(0);
X  	}
X  
X! 	strcpy(ntn[new].name,"r-");
X! 	strncat(ntn[new].name,ntn[target].name,min(NAMELTH-2,strlen(ntn[target].name)));
X! 	for (armynum=0;armynum<MAXNAVY;armynum++)
X! 		if(strcmp(ntn[armynum].name, ntn[new].name)==0) {
X! 			strcpy(eventstr,"no nations available");
X! 			return(0);
X! 		}
X  #ifdef HIDELOC
X  	sprintf(eventstr,"new nation created");
X  #else
X
X--- 149,156 -----
X  		return(0);
X  	}
X  
X! 	if(getnewname(new) == 0) return(0);
X! 
X  #ifdef HIDELOC
X  	sprintf(eventstr,"new nation created");
X  #else
X***************
X*** 163,168
X  	ntn[new].dplus= ntn[target].dplus;
X  	ntn[new].location= ntn[target].location;
X  	ntn[new].powers= ntn[target].powers;
X  	/* make the rebellion's mark some unused uppercase letter */
X  	tmpchr='A'-1;
X  	while (notdone) {
X
X--- 180,188 -----
X  	ntn[new].dplus= ntn[target].dplus;
X  	ntn[new].location= ntn[target].location;
X  	ntn[new].powers= ntn[target].powers;
X+ 	ntn[new].tships= 0;
X+ 	ntn[new].tsctrs = split;
X+ 
X  	/* make the rebellion's mark some unused uppercase letter */
X  	ntn[new].mark = getnewmark();
X  
X***************
X*** 164,182
X  	ntn[new].location= ntn[target].location;
X  	ntn[new].powers= ntn[target].powers;
X  	/* make the rebellion's mark some unused uppercase letter */
X! 	tmpchr='A'-1;
X! 	while (notdone) {
X! 		tmpchr++;
X! 		notdone=0;
X! 		for (i=0;i<MAXNTN;i++)
X! 			if (ntn[i].mark==tmpchr && ntn[i].active>0)
X! 				notdone=1;
X! 		if (!notdone && !isalpha(tmpchr))
X! 			notdone=1;
X! 		if (tmpchr=='Z')
X! 			notdone=0;
X! 	}
X! 	ntn[new].mark= tmpchr;
X  	for ( dist=2 ; dist < 10; dist++) if (split > 0)
X  	for (i=defaultx-dist; i<defaultx+dist; i++)
X  		for (j=defaulty-dist; j<defaulty+dist; j++){
X
X--- 184,191 -----
X  	ntn[new].tsctrs = split;
X  
X  	/* make the rebellion's mark some unused uppercase letter */
X! 	ntn[new].mark = getnewmark();
X! 
X  	for ( dist=2 ; dist < 10; dist++) if (split > 0)
X  	for (i=defaultx-dist; i<defaultx+dist; i++)
X  		for (j=defaulty-dist; j<defaulty+dist; j++){
X***************
X*** 246,251
X  	return(new);
X  }
X  
X  int
X  randomevent()
X  {
X
X--- 255,280 -----
X  	return(new);
X  }
X  
X+ getnewname(new)
X+ int	new;
X+ {
X+ 	int done,count,i=0;
X+ 
X+ 	while( strlen(*(names+i)) > 1 ){
X+ 		done = TRUE;
X+ 		for (count=0;count<NTOTAL;count++)
X+ 			if(strcmp(ntn[count].name, *(names+i))==0) 
X+ 				done = FALSE;
X+ 		if(done==TRUE) break;
X+ 		i++;
X+ 	}
X+ 
X+ 	strcpy(ntn[new].name,*(names+i));
X+ 	if(done ==TRUE) return(1);
X+ 	strcpy(eventstr,"no nations available");
X+ 	return(0);
X+ }
X+ 
X  int
X  randomevent()
X  {
X***************
X*** 319,324
X  					if(ASOLD == 0) {
X  						ASOLD = sct[i][j].people/4;
X  						ASTAT = A_MILITIA;
X  						sct[i][j].people -= ASOLD;
X  						break;
X  					}
X
X--- 348,355 -----
X  					if(ASOLD == 0) {
X  						ASOLD = sct[i][j].people/4;
X  						ASTAT = A_MILITIA;
X+ 						AXLOC = i;
X+ 						AYLOC = j;
X  						sct[i][j].people -= ASOLD;
X  						break;
X  					}
X***************
X*** 388,394
X  			break;
X  		case 14:
X  			/*royal wedding (absorb neighbor nation)*/
X! 			/*	takeover ( 100, 0 ); */  done=FALSE;
X  			/* something not right.... */
X  			break;
X  		case 15:
X
X--- 419,425 -----
X  			break;
X  		case 14:
X  			/*royal wedding (absorb neighbor nation)*/
X! 			/*	takeover ( 100, 0 ); */  
X  			/* something not right.... */
X  			done=FALSE;
X  			break;
X***************
X*** 390,395
X  			/*royal wedding (absorb neighbor nation)*/
X  			/*	takeover ( 100, 0 ); */  done=FALSE;
X  			/* something not right.... */
X  			break;
X  		case 15:
X  			/*new alloy +10% combat (WARRIOR...)*/
X
X--- 421,427 -----
X  			/*royal wedding (absorb neighbor nation)*/
X  			/*	takeover ( 100, 0 ); */  
X  			/* something not right.... */
X+ 			done=FALSE;
X  			break;
X  		case 15:
X  			/*new alloy +10% combat (WARRIOR...)*/
X***************
X*** 405,410
X  				ntn[country].powers|=WARLORD;
X  				exenewmgk(WARLORD);
X  			}
X  			break;
X  		case 16:
X  			/*royal advisor is spy -- lose power*/
X
X--- 437,445 -----
X  				ntn[country].powers|=WARLORD;
X  				exenewmgk(WARLORD);
X  			}
X+ 			else {	/* have all three powers... oh well */
X+ 				done=FALSE;
X+ 			}
X  			break;
X  		case 16:
X  			/*royal advisor is spy -- lose power*/
X***************
X*** 501,507
X  				ntn[NNOMAD].arm[armynum].sold =400+20*(rand()%50);
X  				else	/* 200-600 */
X  				ntn[NNOMAD].arm[armynum].sold =200+20*(rand()%20);
X! 				ntn[NNOMAD].arm[armynum].unittyp = A_CAVALRY;
X  				ntn[NNOMAD].arm[armynum].stat =ATTACK;
X  				done++;
X  			}
X
X--- 536,542 -----
X  				ntn[NNOMAD].arm[armynum].sold =400+20*(rand()%50);
X  				else	/* 200-600 */
X  				ntn[NNOMAD].arm[armynum].sold =200+20*(rand()%20);
X! 				ntn[NNOMAD].arm[armynum].unittyp = A_LT_CAV;
X  				ntn[NNOMAD].arm[armynum].stat =ATTACK;
X  				done++;
X  			}
X***************
X*** 543,550
X  		case 30: /*new magician + RANDOM POWER*/
X  			/*buy new powers and/or new weapons*/
X  			if((newpower=getmagic(M_CIV))!=0L){
X! 				printf("\tnation %s gets magic power number %ld\n",ntn[country].name,newpower);
X! 				fprintf(fnews,"1. \tevent in %s->gets magic power number %ld\n", ntn[country].name,newpower);
X  				exenewmgk(newpower);
X  			}
X  			else done=FALSE;
X
X--- 578,587 -----
X  		case 30: /*new magician + RANDOM POWER*/
X  			/*buy new powers and/or new weapons*/
X  			if((newpower=getmagic(M_CIV))!=0L){
X! 				for(i=S_CIV;i<=E_CIV;i++) if(powers[i]==newpower){
X! 				printf("\tnation %s gets power %s\n",ntn[country].name,pwrname[newpower]);
X! 				fprintf(fnews,"1. \tevent in %s->gets power %s\n", ntn[country].name,pwrname[newpower]);
X! 				}
X  				exenewmgk(newpower);
X  			}
X  			else done=FALSE;
X***************
X*** 552,559
X  		case 31: /*new magic item + RANDOM POWER*/
X  			/*buy new powers and/or new weapons*/
X  			if((newpower=getmagic(M_MIL))!=0){
X! 				printf("\tnation %s gets magic power number %ld\n",ntn[country].name,newpower);
X! 				fprintf(fnews,"1. \tevent in %s->gets magic power number %ld\n", ntn[country].name,newpower);
X  				exenewmgk(newpower);
X  			}
X  			else done=FALSE;
X
X--- 589,598 -----
X  		case 31: /*new magic item + RANDOM POWER*/
X  			/*buy new powers and/or new weapons*/
X  			if((newpower=getmagic(M_MIL))!=0){
X! 				for(i=S_MIL;i<=E_MIL;i++) if(powers[i]==newpower){
X! 				printf("\tnation %s gets power %s\n",ntn[country].name,pwrname[newpower]);
X! 				fprintf(fnews,"1. \tevent in %s->gets power %s\n", ntn[country].name,pwrname[newpower]);
X! 				}
X  				exenewmgk(newpower);
X  			}
X  			else done=FALSE;
X*** oforms.c	Thu Jul 28 09:10:25 1988
X--- forms.c	Thu Jul 28 09:10:58 1988
X***************
X*** 257,262
X  	short armynum;
X  	char passwd[8];
X  	short isgod=FALSE;
X  
X  	if(country==0) {
X  		isgod=TRUE;
X
X--- 257,266 -----
X  	short armynum;
X  	char passwd[8];
X  	short isgod=FALSE;
X+ #ifdef OGOD
X+ 	FILE *ftmp;
X+ 	char filename[80];
X+ #endif OGOD
X  
X  	if(country==0) {
X  		isgod=TRUE;
X***************
X*** 305,311
X  	else	mvaddstr(21,(COLS/2)-17,"( VAMPIRES MAY NOT ADD TO COMBAT BONUS )");
X  
X  #ifdef OGOD
X!  	if(isgod==TRUE) mvaddstr(22,(COLS/2)-21,"HIT 4 TO DESTROY NATION OR 5 TO CHANGE TREASURY");
X  #else OGOD
X    	if(isgod==TRUE) mvaddstr(22,(COLS/2)-9,"HIT 4 TO DESTROY NATION");
X  #endif OGOD
X
X--- 309,315 -----
X  	else	mvaddstr(21,(COLS/2)-17,"( VAMPIRES MAY NOT ADD TO COMBAT BONUS )");
X  
X  #ifdef OGOD
X!  	if(isgod==TRUE) mvaddstr(22,(COLS/2)-23,"HIT 4 TO DESTROY NATION OR 5 TO CHANGE COMMODITY");
X  #else OGOD
X    	if(isgod==TRUE) mvaddstr(22,(COLS/2)-9,"HIT 4 TO DESTROY NATION");
X  #endif OGOD
X***************
X*** 456,463
X  #ifdef OGOD
X  	case '5':
X  		if (isgod==TRUE) {
X! 			/* adjust treasury */
X! 			mvaddstr(0,0,"WHAT IS NEW TOTAL OF TREASURY?");
X  			refresh();
X  			i = get_number();
X  			/* as god it will be saved nothing else needed */
X
X--- 460,475 -----
X  #ifdef OGOD
X  	case '5':
X  		if (isgod==TRUE) {
X! 			/* open the target country's files */
X! 			sprintf(filename,"%s%d",exefile,country);
X! 			if ((ftmp=fopen(filename,"a"))==NULL) {
X! 				beep();
X! 				errormsg("error opening country's file");
X! 				return;
X! 			}
X! 			/* adjust commodities */
X! 			mvaddstr(0,0,"CHANGE: 1) Gold 2) Jewels 3) Iron 4) Food ?");
X! 			clrtoeol();
X  			refresh();
X  			switch(getch()) {
X  			case '1':
X***************
X*** 459,467
X  			/* adjust treasury */
X  			mvaddstr(0,0,"WHAT IS NEW TOTAL OF TREASURY?");
X  			refresh();
X! 			i = get_number();
X! 			/* as god it will be saved nothing else needed */
X! 			ntn[country].tgold = (long) i;
X  		}
X  		break;
X  #endif OGOD
X
X--- 471,504 -----
X  			mvaddstr(0,0,"CHANGE: 1) Gold 2) Jewels 3) Iron 4) Food ?");
X  			clrtoeol();
X  			refresh();
X! 			switch(getch()) {
X! 			case '1':
X! 				mvaddstr(1,0,"WHAT IS NEW VALUE FOR TREASURY? ");
X! 				refresh();
X! 				ntn[country].tgold = (long) get_number();
X! 				fprintf(ftmp,"L_NGOLD\t%d \t%d \t%ld \t0 \t0 \t%s\n", XNAGOLD ,country,ntn[country].tgold,"null");
X! 				break;
X! 			case '2':
X! 				mvaddstr(1,0,"WHAT IS NEW AMOUNT OF JEWELS? ");
X! 				refresh();
X! 				ntn[country].jewels = (long) get_number();
X! 				fprintf(ftmp,"L_NJWLS\t%d \t%d \t%ld \t0 \t0 \t%s\n", XNARGOLD ,country,ntn[country].jewels,"null");
X! 				break;
X! 			case '3':
X! 				mvaddstr(1,0,"WHAT IS NEW AMOUNT OF IRON? ");
X! 				refresh();
X! 				ntn[country].tiron = (long) get_number();
X! 				fprintf(ftmp,"L_NIRON\t%d \t%d \t%ld \t0 \t0 \t%s\n", XNAIRON ,country,ntn[country].tiron,"null");
X! 				break;
X! 			case '4':
X! 				mvaddstr(1,0,"WHAT IS NEW AMOUNT OF FOOD? ");
X! 				refresh();
X! 				ntn[country].tfood = (long) get_number();
X! 				break;
X! 			default:
X! 				break;
X! 			}
X! 			fclose(ftmp);
X  		}
X  		break;
X  #endif OGOD
X*** oreports.c	Thu Jul 28 09:10:26 1988
X--- reports.c	Thu Jul 28 09:11:00 1988
X***************
X*** 281,287
X  void
X  produce()
X  {
X! 	short armynum;
X  	int military=0;
X  	int isgod=FALSE;
X  
X
X--- 281,287 -----
X  void
X  produce()
X  {
X! 	short armynum,multiplier=1;
X  	int military=0;
X  	int isgod=FALSE;
X  
X***************
X*** 308,314
X  	mvaddstr(8,0,  "FOOD PRODUCTION");
X  	mvprintw(9,0,  "granary now holds.........%8ld tons",ntn[country].tfood);
X  	mvprintw(10,0, "%8d people in farms..%8ld tons",spread.infarm,spread.food-ntn[country].tfood);
X! 	mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,spread.civilians);
X  	mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
X  	mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-spread.civilians-military*2);
X  	if(spread.food-spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
X
X--- 308,315 -----
X  	mvaddstr(8,0,  "FOOD PRODUCTION");
X  	mvprintw(9,0,  "granary now holds.........%8ld tons",ntn[country].tfood);
X  	mvprintw(10,0, "%8d people in farms..%8ld tons",spread.infarm,spread.food-ntn[country].tfood);
X! 	if(magic(country,DEMOCRACY)==1)   multiplier=2;
X! 	mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,multiplier*spread.civilians);
X  	mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
X  	mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-multiplier*spread.civilians-military*2);
X  	if(spread.food-multiplier*spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
X***************
X*** 310,318
X  	mvprintw(10,0, "%8d people in farms..%8ld tons",spread.infarm,spread.food-ntn[country].tfood);
X  	mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,spread.civilians);
X  	mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
X! 	mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-spread.civilians-military*2);
X! 	if(spread.food-spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
X! 	mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",spread.food-spread.civilians-military*2);
X  	}
X  	else{
X  	mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
X
X--- 311,319 -----
X  	if(magic(country,DEMOCRACY)==1)   multiplier=2;
X  	mvprintw(12,0, "%8d civilians eat....%8d tons",spread.civilians,multiplier*spread.civilians);
X  	mvprintw(13,0, "%8d soldiers  eat....%8d tons",military,military*2);
X! 	mvprintw(15,0, "TOTAL NET FOOD............%8d tons",spread.food-ntn[country].tfood-multiplier*spread.civilians-military*2);
X! 	if(spread.food-multiplier*spread.civilians-military*2<FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100){
X! 	mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",spread.food-multiplier*spread.civilians-military*2);
X  	}
X  	else{
X  	mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
X***************
X*** 316,322
X  	}
X  	else{
X  	mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
X! 	mvprintw(17,0, "REVENUE FROM EXCESS.......%8ld gold",spread.food-spread.civilians-military*2-FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
X  	}
X  
X  	mvaddstr(8,41,  "OTHER PRODUCTION");
X
X--- 317,323 -----
X  	}
X  	else{
X  	mvprintw(16,0, "TOTAL NEXT YEARS FOOD.....%8ld tons",FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
X! 	mvprintw(17,0, "REVENUE FROM EXCESS.......%8ld gold",spread.food-multiplier*spread.civilians-military*2-FOODTHRESH*(100+ntn[country].repro)*spread.civilians/100);
X  	}
X  
X  	mvaddstr(8,41,  "OTHER PRODUCTION");
X***************
X*** 346,352
X  	short navy;
X  	short oldx,oldy,oldnavy;
X  	short done=FALSE;
X! 	int position;
X  	int count;       /*screen number */
X  	short nvynum=0;    /*current ship id */
X  	short wships,mships;
X
X--- 347,354 -----
X  	short navy;
X  	short oldx,oldy,oldnavy;
X  	short done=FALSE;
X! 	int i,j;
X! 	int position,crew;
X  	int count;       /*screen number */
X  	short nvynum=0;    /*current ship id */
X  	short wships,mships;
X***************
X*** 472,477
X  				else if((oldx==NXLOC)&&(oldy==NYLOC)) {
X  					NWAR+=ntn[country].nvy[oldnavy].warships;
X  					NMER+=ntn[country].nvy[oldnavy].merchant;
X  					NADJSHP;
X  					if(NMOVE>ntn[country].nvy[oldnavy].smove)
X  						NMOVE=ntn[country].nvy[oldnavy].smove;
X
X--- 474,480 -----
X  				else if((oldx==NXLOC)&&(oldy==NYLOC)) {
X  					NWAR+=ntn[country].nvy[oldnavy].warships;
X  					NMER+=ntn[country].nvy[oldnavy].merchant;
X+ 					NCREW += ntn[country].nvy[oldnavy].crew;
X  					NADJSHP;
X  					NADJCRW;
X  					if(NMOVE>ntn[country].nvy[oldnavy].smove)
X***************
X*** 473,478
X  					NWAR+=ntn[country].nvy[oldnavy].warships;
X  					NMER+=ntn[country].nvy[oldnavy].merchant;
X  					NADJSHP;
X  					if(NMOVE>ntn[country].nvy[oldnavy].smove)
X  						NMOVE=ntn[country].nvy[oldnavy].smove;
X  					NADJMOV;
X
X--- 476,482 -----
X  					NMER+=ntn[country].nvy[oldnavy].merchant;
X  					NCREW += ntn[country].nvy[oldnavy].crew;
X  					NADJSHP;
X+ 					NADJCRW;
X  					if(NMOVE>ntn[country].nvy[oldnavy].smove)
X  						NMOVE=ntn[country].nvy[oldnavy].smove;
X  					NADJMOV;
X***************
X*** 479,484
X  					nvynum=oldnavy;
X  					NWAR=0;
X  					NMER=0;
X  					NADJSHP;
X  				}
X  				else {
X
X--- 483,489 -----
X  					nvynum=oldnavy;
X  					NWAR=0;
X  					NMER=0;
X+ 					NCREW=0;
X  					NADJSHP;
X  					NADJCRW;
X  				}
X***************
X*** 480,485
X  					NWAR=0;
X  					NMER=0;
X  					NADJSHP;
X  				}
X  				else {
X  					mvaddstr(23,0,"Navies not together (hit any key) ");
X
X--- 485,491 -----
X  					NMER=0;
X  					NCREW=0;
X  					NADJSHP;
X+ 					NADJCRW;
X  				}
X  				else {
X  					mvaddstr(23,0,"Navies not together (hit any key) ");
X***************
X*** 501,506
X  				if((wships<=NWAR)&&(mships<=NMER)){
X  					NWAR-=wships;
X  					NMER-=mships;
X  					NADJSHP;
X  					oldnavy=nvynum;
X  					oldx=NXLOC;
X
X--- 507,515 -----
X  				if((wships<=NWAR)&&(mships<=NMER)){
X  					NWAR-=wships;
X  					NMER-=mships;
X+ 					crew = NCREW * (wships+mships) / (NWAR+NMER);
X+ 					NCREW -= crew;
X+ 					NADJCRW;
X  					NADJSHP;
X  					oldnavy=nvynum;
X  					oldx=NXLOC;
X***************
X*** 517,522
X  						NWAR+=wships;
X  						NMER+=mships;
X  						NADJSHP;
X  					}
X  					else {
X  						NMOVE=ntn[country].nvy[oldnavy].smove;
X
X--- 526,533 -----
X  						NWAR+=wships;
X  						NMER+=mships;
X  						NADJSHP;
X+ 						NCREW+=crew;
X+ 						NADJCRW;
X  					}
X  					else {
X  						NMOVE=ntn[country].nvy[oldnavy].smove;
X***************
X*** 524,529
X  						NYLOC=oldy;
X  						NWAR=wships;
X  						NMER=mships;
X  						NADJSHP;
X  						NADJLOC;
X  						NADJMOV;
X
X--- 535,542 -----
X  						NYLOC=oldy;
X  						NWAR=wships;
X  						NMER=mships;
X+ 						NCREW=crew;
X+ 						NADJCRW;
X  						NADJSHP;
X  						NADJLOC;
X  						NADJMOV;
X***************
X*** 536,541
X  				}
X  				break;
X  			case '3':
X  				NWAR=0;
X  				NMER=0;
X  				NADJSHP;
X
X--- 549,561 -----
X  				}
X  				break;
X  			case '3':
X+ 				/* DISBAND NAVY */
X+ 				i=NXLOC;
X+ 				j=NYLOC;
X+ 				if(sct[i][j].altitude == WATER) {
X+ 					errormsg("Ships need to be on land or in harbor");
X+ 					break;
X+ 				}
X  				NWAR=0;
X  				NMER=0;
X  				sct[i][j].people+=NCREW;
X***************
X*** 538,543
X  			case '3':
X  				NWAR=0;
X  				NMER=0;
X  				NADJSHP;
X  				break;
X  			case '4':
X
X--- 558,567 -----
X  				}
X  				NWAR=0;
X  				NMER=0;
X+ 				sct[i][j].people+=NCREW;
X+ 				NCREW=0;
X+ 				SADJCIV2;
X+ 				NADJCRW;
X  				NADJSHP;
X  				break;
X  			case '4':
X*** ocombat.c	Thu Jul 28 09:10:27 1988
X--- combat.c	Thu Jul 28 09:11:01 1988
X***************
X*** 348,354
X  	retreatside = 0;
X  
X  	if((PDloss > 2* PAloss)
X- 	&&(PDloss>=50)
X  	&&(odds>150)
X  	&&(rand()%4==0))	retreatside=DFND;
X  
X
X--- 348,353 -----
X  	retreatside = 0;
X  
X  	if((PDloss > 2* PAloss)
X  	&&(odds>150)
X  	&&(((PDloss>=50)&&(rand()%4==0))
X  	  ||(rand()%8)))	retreatside=DFND;
X***************
X*** 350,356
X  	if((PDloss > 2* PAloss)
X  	&&(PDloss>=50)
X  	&&(odds>150)
X! 	&&(rand()%4==0))	retreatside=DFND;
X  
X  	if((PAloss > 2* PDloss)
X  	&&(PAloss>=50)
X
X--- 349,356 -----
X  
X  	if((PDloss > 2* PAloss)
X  	&&(odds>150)
X! 	&&(((PDloss>=50)&&(rand()%4==0))
X! 	  ||(rand()%8)))	retreatside=DFND;
X  
X  	if((PAloss > 2* PDloss)
X  	&&(odds<150)
X***************
X*** 353,359
X  	&&(rand()%4==0))	retreatside=DFND;
X  
X  	if((PAloss > 2* PDloss)
X- 	&&(PAloss>=50)
X  	&&(odds<150)
X  	&&(rand()%2==0))	retreatside=ATKR;
X  
X
X--- 353,358 -----
X  	  ||(rand()%8)))	retreatside=DFND;
X  
X  	if((PAloss > 2* PDloss)
X  	&&(odds<150)
X  	&&(((PAloss>=50)&&(rand()%2==0))
X  	  ||(rand()%6)))	retreatside=ATKR;
X***************
X*** 355,361
X  	if((PAloss > 2* PDloss)
X  	&&(PAloss>=50)
X  	&&(odds<150)
X! 	&&(rand()%2==0))	retreatside=ATKR;
X  
X  	if(retreatside!=0) {
X  		fdxyretreat();
X
X--- 354,361 -----
X  
X  	if((PAloss > 2* PDloss)
X  	&&(odds<150)
X! 	&&(((PAloss>=50)&&(rand()%2==0))
X! 	  ||(rand()%6)))	retreatside=ATKR;
X  
X  	if(retreatside!=0) {
X  		fdxyretreat();
X***************
X*** 697,704
X  	/*no bonus currently included in this combat*/
X  
X  	/*calculate ability of crew*/
X! 	acrew = 100*acrew/aship*SHIPCREW;
X! 	dcrew = 100*dcrew/dship*SHIPCREW;
X  
X  	/*each warship can do damage 40%; once all warships sunk then all*/
X  	/*sunk are captured merchant*/
X
X--- 697,704 -----
X  	/*no bonus currently included in this combat*/
X  
X  	/*calculate ability of crew*/
X! 	acrew = 100*acrew/(aship*SHIPCREW);
X! 	dcrew = 100*dcrew/(dship*SHIPCREW);
X  
X  	/*each warship can do damage 40%; once all warships sunk then all*/
X  	/*sunk are captured merchant*/
X*** omove.c	Thu Jul 28 09:10:07 1988
X--- move.c	Thu Jul 28 09:11:03 1988
X***************
X*** 108,114
X  					armornvy=AORN;
X  					return;
X  				}
X! 				else if(AMOVE==0){
X  					errormsg("SORRY: ARMY HAS NO MOVEMENT POINTS");
X  					armornvy=AORN;
X  					return;
X
X--- 108,114 -----
X  					armornvy=AORN;
X  					return;
X  				}
X! 				else if((AMOVE==0)&&(ATYPE!=A_MARINES)){
X  					errormsg("SORRY: ARMY HAS NO MOVEMENT POINTS");
X  					armornvy=AORN;
X  					return;
X***************
X*** 290,295
X  						valid=FALSE;
X  						xcurs=oldxcurs;
X  						ycurs=oldycurs;
X  					}
X  				} else {
X  					move(3,0);
X
X--- 290,297 -----
X  						valid=FALSE;
X  						xcurs=oldxcurs;
X  						ycurs=oldycurs;
X+ 						move(ycurs,xcurs*2);
X+ 						refresh();
X  					}
X  				} else {
X  					move(3,0);
X*** oupdate.c	Thu Jul 28 09:10:28 1988
X--- update.c	Thu Jul 28 09:11:05 1988
X***************
X*** 360,365
X  #ifdef CMOVE
X  			printf("\tthe computer will move for %s\n",ntn[country].name);
X  			fprintf(fnews,"1.\tthe computer will move for %s\n",ntn[country].name);
X  			nationrun();
X  #endif
X  		}
X
X--- 360,368 -----
X  #ifdef CMOVE
X  			printf("\tthe computer will move for %s\n",ntn[country].name);
X  			fprintf(fnews,"1.\tthe computer will move for %s\n",ntn[country].name);
X+ #ifdef TRADE
X+ 			checktrade();
X+ #endif TRADE
X  			nationrun();
X  #endif
X  		}
X***************
X*** 363,368
X  			nationrun();
X  #endif
X  		}
X  #ifdef NPC
X  		/* run npc nations */
X  		if(ntn[country].active>=2) {
X
X--- 366,374 -----
X  			nationrun();
X  #endif
X  		}
X+ #ifdef TRADE
X+ 		else checktrade();
X+ #endif TRADE
X  #ifdef NPC
X  		/* run npc nations */
X  		if(ntn[country].active>=2) {
X***************
X*** 672,677
X  		for(nvynum=0;nvynum<MAXNAVY;nvynum++) {
X  			/*update sea sectors*/
X  			if( NMER + NWAR > 0 ) {
X  				if(sct[NXLOC][NYLOC].altitude==WATER) {
X  #ifdef STORMS
X  /*
X
X--- 678,684 -----
X  		for(nvynum=0;nvynum<MAXNAVY;nvynum++) {
X  			/*update sea sectors*/
X  			if( NMER + NWAR > 0 ) {
X+ 				int holdval;
X  				if(sct[NXLOC][NYLOC].altitude==WATER) {
X  #ifdef STORMS
X  /*
X***************
X*** 694,701
X  				}
X  #endif
X  				}
X! 				NMOVE = 3 * ntn[country].maxmove * NCREW;
X! 				NMOVE /= ((NWAR+NMER)*SHIPCREW);
X  				ntn[country].tships += NWAR + NMER;
X  				ntn[country].tgold -= (NWAR + NMER) * SHIPMAINT;
X  			} else {
X
X--- 701,709 -----
X  				}
X  #endif
X  				}
X! 				holdval = 3 * ntn[country].maxmove * NCREW;
X! 				holdval /= ((NWAR+NMER)*SHIPCREW);
X! 				NMOVE = (short)holdval;
X  				ntn[country].tships += NWAR + NMER;
X  				ntn[country].tgold -= (NWAR + NMER) * SHIPMAINT;
X  			} else {
X***************
X*** 722,727
X  		ntn[country].tfood-=ntn[country].tmil*2;
X  		/*civilians eat 1*/
X  		ntn[country].tfood-=ntn[country].tciv;
X  
X  		/*starve people*/
X  		if(ntn[country].tfood<0) for(x=0;x<MAPX;x++) for(y=0;y<MAPY;y++) {
X
X--- 730,738 -----
X  		ntn[country].tfood-=ntn[country].tmil*2;
X  		/*civilians eat 1*/
X  		ntn[country].tfood-=ntn[country].tciv;
X+ 		if(magic(country,DEMOCRACY)==TRUE) {  /* eat 2x as much */
X+ 			ntn[country].tfood-=ntn[country].tciv;
X+ 		}
X  
X  		/*starve people*/
X  		if(ntn[country].tfood<0) for(x=0;x<MAPX;x++) for(y=0;y<MAPY;y++) {
X*** ocommands.c	Thu Jul 28 09:10:29 1988
X--- commands.c	Thu Jul 28 09:11:06 1988
X***************
X*** 205,210
X  		if(isgod==TRUE) country=0;
X  		return;
X  	}
X  
X  	if((isgod==FALSE) && (ntn[country].tgold < 0 )) {
X  		errormsg("You are broke");
X
X--- 205,214 -----
X  		if(isgod==TRUE) country=0;
X  		return;
X  	}
X+ 	if((isgod==FALSE)&&(sct[XREAL][YREAL].people<=500)) {
X+ 		errormsg("You need over 500 people to construct");
X+ 		return;
X+ 	}
X  
X  	if((isgod==FALSE) && (ntn[country].tgold < 0 )) {
X  		errormsg("You are broke");
X***************
X*** 271,277
X  			clrtoeol();
X  			refresh();
X  			mnumber = get_number();
X! 			cost = (long) mnumber*WARSHPCOST*NWAR + (long) mnumber*MERSHPCOST*NMER;
X  			if( ntn[country].tgold < cost ) {
X  				errormsg("NOT ENOUGH GOLD");
X  				if(isgod==TRUE) country=0;
X
X--- 275,282 -----
X  			clrtoeol();
X  			refresh();
X  			mnumber = get_number();
X! 			cost = (long) WARSHPCOST*NWAR + (long) MERSHPCOST*NMER;
X! 			cost *= mnumber / SHIPCREW;
X  			if( ntn[country].tgold < cost ) {
X  				errormsg("NOT ENOUGH GOLD");
X  				if(isgod==TRUE) country=0;
X***************
X*** 308,313
X  					x=nvynum;
X  					NWAR=0;
X  					NMER=0;
X  					NADJSHP;
X  				}
X  				nvynum++;
X
X--- 313,319 -----
X  					x=nvynum;
X  					NWAR=0;
X  					NMER=0;
X+ 					NCREW=0;
X  					NADJSHP;
X  				}
X  				nvynum++;
X***************
X*** 321,327
X  		}
X  		else	mvprintw(LINES-2,30,"raising new fleet %d",nvynum);
X  
X! 
X  		mvprintw(LINES-3,0,"how many merchants:");
X  		refresh();
X  		mnumber = get_number();
X
X--- 327,334 -----
X  		}
X  		else	mvprintw(LINES-2,30,"raising new fleet %d",nvynum);
X  
X! 		move(LINES-3,0);
X! 		clrtoeol();
X  		mvprintw(LINES-3,0,"how many merchants:");
X  		refresh();
X  		mnumber = get_number();
X***************
X*** 355,362
X  		if((nvynum>=0)&&(nvynum<MAXNAVY)) {
X  			clear_bottom(0);
X  			NCREW += (wnumber+mnumber) * SHIPCREW;
X- 			mvprintw(LINES-4,0,"constructing %hd warships and %hd merchants (crew now %d)",wnumber,mnumber,NCREW);
X- 
X  			sct[XREAL][YREAL].people -= (wnumber+mnumber)*SHIPCREW;
X  
X  			ntn[country].tgold -= cost;
X
X--- 362,367 -----
X  		if((nvynum>=0)&&(nvynum<MAXNAVY)) {
X  			clear_bottom(0);
X  			NCREW += (wnumber+mnumber) * SHIPCREW;
X  			sct[XREAL][YREAL].people -= (wnumber+mnumber)*SHIPCREW;
X  
X  			ntn[country].tgold -= cost;
X***************
X*** 366,371
X  			NWAR+=wnumber;
X  			NMER+=mnumber;
X  			NMOVE=0;
X  			SADJCIV;
X  			NADJCRW;
X  			NADJSHP;
X
X--- 371,378 -----
X  			NWAR+=wnumber;
X  			NMER+=mnumber;
X  			NMOVE=0;
X+ 			mvprintw(LINES-4,0,"fleet %d: warships=%hd (total %hd) merchants=%hd (total %hd) (crew=%d)",nvynum,wnumber,NWAR,mnumber,NMER,NCREW);
X+ 
X  			SADJCIV;
X  			NADJCRW;
X  			NADJSHP;
X***************
X*** 381,387
X  	}
X  	/* construct fortification points*/
X  	else if(type=='f'){
X- 		if(sct[XREAL][YREAL].people>=500)
X  		/* can only go into debt as much as the nation has jewels */
X  		if ((ntn[country].tgold - cost) > ((-1)*10*ntn[country].jewels)) {
X  			mvprintw(LINES-3,25,"you build +%d%% fort points for %ld gold",armbonus,cost);
X
X--- 388,393 -----
X  	}
X  	/* construct fortification points*/
X  	else if(type=='f'){
X  		/* can only go into debt as much as the nation has jewels */
X  		if ((ntn[country].tgold - cost) > ((-1)*10*ntn[country].jewels)) {
X  			mvprintw(LINES-3,25,"you build +%d%% fort points for %ld gold",armbonus,cost);
X***************
X*** 389,396
X  			sct[XREAL][YREAL].fortress++;
X  			INCFORT;
X  			errormsg("");
X! 		}
X! 		else errormsg("need 500 people or you are broke");
X  	}
X  	else errormsg("invalid input error");
X  
X
X--- 395,401 -----
X  			sct[XREAL][YREAL].fortress++;
X  			INCFORT;
X  			errormsg("");
X! 		} else errormsg("you are broke");
X  	}
X  	else errormsg("invalid input error");
X  
X*** oio.c	Thu Jul 28 09:10:30 1988
X--- io.c	Thu Jul 28 09:11:06 1988
X***************
X*** 203,209
X  	int i;
X  	int nationid; 	/*current nation id */
X  
X! 	printf("id	race	class	score	gold	military people	sectors	name\n");
X  	for (nationid=1; nationid<MAXNTN; nationid++) {
X  
X  		if(ntn[nationid].active==0) continue;
X
X--- 203,209 -----
X  	int i;
X  	int nationid; 	/*current nation id */
X  
X! 	printf("id      name   race    class  score      gold  military  civilians sectors\n");
X  	for (nationid=1; nationid<MAXNTN; nationid++) {
X  		if(ntn[nationid].active==0) continue;
X  		printf("%2d ",nationid);
X***************
X*** 205,211
X  
X  	printf("id	race	class	score	gold	military people	sectors	name\n");
X  	for (nationid=1; nationid<MAXNTN; nationid++) {
X- 
X  		if(ntn[nationid].active==0) continue;
X  		printf("%d",nationid);
X  		for(i=1;i<8;i++)
X
X--- 205,210 -----
X  
X  	printf("id      name   race    class  score      gold  military  civilians sectors\n");
X  	for (nationid=1; nationid<MAXNTN; nationid++) {
X  		if(ntn[nationid].active==0) continue;
X  		printf("%2d ",nationid);
X  		printf("%9s ",ntn[nationid].name);
X***************
X*** 207,213
X  	for (nationid=1; nationid<MAXNTN; nationid++) {
X  
X  		if(ntn[nationid].active==0) continue;
X! 		printf("%d",nationid);
X  		for(i=1;i<8;i++)
X  			if(ntn[nationid].race==*(races+i)[0])
X  				printf("	%s",*(races+i));
X
X--- 206,213 -----
X  	printf("id      name   race    class  score      gold  military  civilians sectors\n");
X  	for (nationid=1; nationid<MAXNTN; nationid++) {
X  		if(ntn[nationid].active==0) continue;
X! 		printf("%2d ",nationid);
X! 		printf("%9s ",ntn[nationid].name);
X  		for(i=1;i<8;i++)
X  			if(ntn[nationid].race==*(races+i)[0])
X  				printf("%6s ",*(races+i));
X***************
X*** 210,219
X  		printf("%d",nationid);
X  		for(i=1;i<8;i++)
X  			if(ntn[nationid].race==*(races+i)[0])
X! 				printf("	%s",*(races+i));
X! 		if(ntn[nationid].active>=2) printf("	NPC");
X! 		else printf("	%s",*(Class+ntn[nationid].class));
X! 		printf("	%ld	%ld	%ld	%ld	%d",
X  			ntn[nationid].score ,ntn[nationid].tgold
X  			,ntn[nationid].tmil ,ntn[nationid].tciv
X  			,ntn[nationid].tsctrs );
X
X--- 210,219 -----
X  		printf("%9s ",ntn[nationid].name);
X  		for(i=1;i<8;i++)
X  			if(ntn[nationid].race==*(races+i)[0])
X! 				printf("%6s ",*(races+i));
X! 		if(ntn[nationid].active>=2) printf("     NPC ");
X! 		else printf("%8s ",*(Class+ntn[nationid].class));
X!   		printf("%6ld  %8ld  %8ld   %8ld   %5d\n",
X  			ntn[nationid].score ,ntn[nationid].tgold
X  			,ntn[nationid].tmil ,ntn[nationid].tciv
X  			,ntn[nationid].tsctrs );
X***************
X*** 217,223
X  			ntn[nationid].score ,ntn[nationid].tgold
X  			,ntn[nationid].tmil ,ntn[nationid].tciv
X  			,ntn[nationid].tsctrs );
X- 		printf("	%s\n",ntn[nationid].name);
X  	}
X  }
X  #endif CONQUER
X
X--- 217,222 -----
X  			ntn[nationid].score ,ntn[nationid].tgold
X  			,ntn[nationid].tmil ,ntn[nationid].tciv
X  			,ntn[nationid].tsctrs );
X  	}
X  }
X  #endif CONQUER
X*** omagic.c	Thu Jul 28 09:10:31 1988
X--- magic.c	Thu Jul 28 09:11:09 1988
X***************
X*** 206,211
X  			price = getmgkcost(M_CIV,country);
X  		if(price > getmgkcost(M_MGK,country))
X  			price = getmgkcost(M_MGK,country);
X  
X  		standend();
X  		count=3;
X
X--- 206,214 -----
X  			price = getmgkcost(M_CIV,country);
X  		if(price > getmgkcost(M_MGK,country))
X  			price = getmgkcost(M_MGK,country);
X+ #ifdef OGOD
X+ 		if (isgod==TRUE) price=0;
X+ #endif OGOD
X  
X  		standend();
X  		count=3;
X***************
X*** 433,438
X  		return(0L);
X  	}
X  	if(newpower==DEMOCRACY){
X  		ntn[country].repro+=1;
X  		ntn[country].dplus+=10;
X  		ntn[country].aplus+=10;
X
X--- 436,442 -----
X  		return(0L);
X  	}
X  	if(newpower==DEMOCRACY){
X+ 		ntn[country].maxmove+=1;
X  		ntn[country].repro+=1;
X  		ntn[country].dplus+=10;
X  		ntn[country].aplus+=10;
X***************
X*** 545,550
X  			newtype=DRAGON;
X  			break;
X  		default:
X  			break;
X  		}
X  
X
X--- 549,555 -----
X  			newtype=DRAGON;
X  			break;
X  		default:
X+ 			newtype=MAXMONSTER+1;
X  			break;
X  		}
X  
X***************
X*** 555,560
X  			sleep(2);
X  			return(done);
X  		}
X  
X  		e_cost= (long) *(u_encost+(newtype%200)) * *(unitminsth+(newtype%200));
X  		s_cost= *(u_encost+(newtype%200));
X
X--- 560,569 -----
X  			sleep(2);
X  			return(done);
X  		}
X+ 		if (newtype==MAXMONSTER+1) {
X+ 			/* quick exit */
X+ 			return(done);
X+ 		}
X  
X  		e_cost= (long) *(u_encost+(newtype%200)) * *(unitminsth+(newtype%200));
X  		s_cost= *(u_encost+(newtype%200));
X***************
X*** 784,789
X  		return(0L);
X  	}
X  	if(oldpower==DEMOCRACY){
X  		ntn[country].repro-=1;
X  		ntn[country].dplus-=10;
X  		ntn[country].aplus-=10;
X
X--- 793,799 -----
X  		return(0L);
X  	}
X  	if(oldpower==DEMOCRACY){
X+ 		ntn[country].maxmove-=1;
X  		ntn[country].repro-=1;
X  		ntn[country].dplus-=10;
X  		ntn[country].aplus-=10;
X*** onewlogin.c	Thu Jul 28 09:10:32 1988
X--- newlogin.c	Thu Jul 28 09:11:09 1988
X***************
X*** 225,231
X  
X  		ntn[country].mark= (*ntn[country].name);
X  		if (islower(ntn[country].mark)!=FALSE)
X! 		  ntn[country].mark= toupper(ntn[country].mark);
X  		printf("\ntesting first letter of name (%c) for nation mark...",ntn[country].mark);
X  		valid=TRUE;
X  		while(valid==TRUE) {
X
X--- 225,231 -----
X  
X  		ntn[country].mark= (*ntn[country].name);
X  		if (islower(ntn[country].mark)!=FALSE)
X! 			ntn[country].mark= toupper(ntn[country].mark);
X  		printf("\ntesting first letter of name (%c) for nation mark...",ntn[country].mark);
X  		valid=TRUE;
X  		while(valid==TRUE) {
X*** odisplay.c	Thu Jul 28 09:09:40 1988
X--- display.c	Thu Jul 28 09:11:10 1988
X***************
X*** 47,53
X  	/*can you see all?*/
X  	if((magic(country,KNOWALL)==1)||(country==0)) {
X  		for(x=0;x<SCREEN_X_SIZE;x++) {
X! 			for(y=0;y<(LINES-4);y++) {
X  				highlight(x,y);
X  				see(x,y);
X  			}
X
X--- 47,53 -----
X  	/*can you see all?*/
X  	if((magic(country,KNOWALL)==1)||(country==0)) {
X  		for(x=0;x<SCREEN_X_SIZE;x++) {
X! 			for(y=0;y<SCREEN_Y_SIZE;y++) {
X  				highlight(x,y);
X  				see(x,y);
X  			}
X***************
X*** 62,68
X  	}
X  	/*see as appropriate?*/
X  	else {
X! 		for(x=0;x<SCREEN_X_SIZE;x++) for(y=0;y<(LINES-4);y++) {
X  			if(sct[x+xoffset][y+yoffset].owner==country){
X  				for(i=x-LANDSEE;i<=x+LANDSEE;i++){
X  					for(j=y-LANDSEE;j<=y+LANDSEE;j++) {
X
X--- 62,69 -----
X  	}
X  	/*see as appropriate?*/
X  	else {
X! 		for(x=(-LANDSEE);(x<SCREEN_X_SIZE+LANDSEE)&&(x+xoffset<MAPX);x++)
X! 		for(y=(-LANDSEE);(y<SCREEN_Y_SIZE+LANDSEE)&&(y+yoffset<MAPY);y++) {
X  			if(sct[x+xoffset][y+yoffset].owner==country){
X  				for(i=x-LANDSEE;i<=x+LANDSEE;i++){
X  					for(j=y-LANDSEE;j<=y+LANDSEE;j++) {
X***************
X*** 181,187
X  see(x,y)
X  {
X  	int armbonus;
X! 	if((x<0)||(y<0)||(x>COLS-21)||(y>=LINES-4)) return;
X  	if(((y+yoffset)<MAPY)&&((x+xoffset)<MAPX)) {
X  
X  		if((magic(sct[x+xoffset][y+yoffset].owner,THE_VOID)==TRUE)
X
X--- 182,188 -----
X  see(x,y)
X  {
X  	int armbonus;
X! 	if((x<0)||(y<0)||(x>=SCREEN_X_SIZE)||(y>=SCREEN_Y_SIZE)) return;
X  	if(((y+yoffset)<MAPY)&&((x+xoffset)<MAPX)) {
X  
X  		if((magic(sct[x+xoffset][y+yoffset].owner,THE_VOID)==TRUE)
X***************
X*** 189,197
X  			||(dismode==DI_PEOP)||(dismode==DI_FOOD))
X  		&&(country!=sct[x+xoffset][y+yoffset].owner)
X  		&&(country!=0)) {
X! 			standout();
X! 			mvaddch(y,2*x,' ');
X! 			standend();
X  		} else {
X  			switch(dismode){
X  			case DI_FOOD:	/*food */
X
X--- 190,196 -----
X  			||(dismode==DI_PEOP)||(dismode==DI_FOOD))
X  		&&(country!=sct[x+xoffset][y+yoffset].owner)
X  		&&(country!=0)) {
X! 			mvaddch(y,2*x,'?');
X  		} else {
X  			switch(dismode){
X  			case DI_FOOD:	/*food */
X***************
X*** 265,271
X  			case DI_PEOP:   /*People*/
X  				if (sct[x+xoffset][y+yoffset].altitude==WATER)
X  					mvaddch(y,2*x,WATER);
X! 				else if (sct[x+xoffset][y+yoffset].people>=1000)
X  					mvaddch(y,2*x,'+');
X  				else if (sct[x+xoffset][y+yoffset].people>=450)
X  					mvaddch(y,2*x,'>');
X
X--- 264,270 -----
X  			case DI_PEOP:   /*People*/
X  				if (sct[x+xoffset][y+yoffset].altitude==WATER)
X  					mvaddch(y,2*x,WATER);
X! 				else if (sct[x+xoffset][y+yoffset].people>=4950)
X  					mvaddch(y,2*x,'+');
X  				else if (sct[x+xoffset][y+yoffset].people>=950)
X  					mvaddch(y,2*x,'>');
X***************
X*** 267,273
X  					mvaddch(y,2*x,WATER);
X  				else if (sct[x+xoffset][y+yoffset].people>=1000)
X  					mvaddch(y,2*x,'+');
X! 				else if (sct[x+xoffset][y+yoffset].people>=450)
X  					mvaddch(y,2*x,'>');
X  				else if (sct[x+xoffset][y+yoffset].people==0)
X  					mvaddch(y,2*x,'0');
X
X--- 266,272 -----
X  					mvaddch(y,2*x,WATER);
X  				else if (sct[x+xoffset][y+yoffset].people>=4950)
X  					mvaddch(y,2*x,'+');
X! 				else if (sct[x+xoffset][y+yoffset].people>=950)
X  					mvaddch(y,2*x,'>');
X  				else
X  				mvprintw(y,2*x,"%d",(50+sct[x+xoffset][y+yoffset].people)/100);
X***************
X*** 269,276
X  					mvaddch(y,2*x,'+');
X  				else if (sct[x+xoffset][y+yoffset].people>=450)
X  					mvaddch(y,2*x,'>');
X- 				else if (sct[x+xoffset][y+yoffset].people==0)
X- 					mvaddch(y,2*x,'0');
X  				else
X  					mvprintw(y,2*x,"%d",1+sct[x+xoffset][y+yoffset].people/50);
X  				break;
X
X--- 268,273 -----
X  					mvaddch(y,2*x,'+');
X  				else if (sct[x+xoffset][y+yoffset].people>=950)
X  					mvaddch(y,2*x,'>');
X  				else
X  				mvprintw(y,2*x,"%d",(50+sct[x+xoffset][y+yoffset].people)/100);
X  				break;
X***************
X*** 272,278
X  				else if (sct[x+xoffset][y+yoffset].people==0)
X  					mvaddch(y,2*x,'0');
X  				else
X! 					mvprintw(y,2*x,"%d",1+sct[x+xoffset][y+yoffset].people/50);
X  				break;
X  			case DI_GOLD:  /*Gold*/
X  				if (sct[x+xoffset][y+yoffset].altitude==WATER)
X
X--- 269,275 -----
X  				else if (sct[x+xoffset][y+yoffset].people>=950)
X  					mvaddch(y,2*x,'>');
X  				else
X! 				mvprintw(y,2*x,"%d",(50+sct[x+xoffset][y+yoffset].people)/100);
X  				break;
X  			case DI_GOLD:  /*Gold*/
X  				if (sct[x+xoffset][y+yoffset].altitude==WATER)
X***************
X*** 339,345
X  void
X  coffmap()
X  {
X! 	if((xcurs<1)||(ycurs<1)||(xcurs>=SCREEN_X_SIZE)
X  	||((ycurs>=SCREEN_Y_SIZE))||((XREAL)>=MAPX)
X  	||((YREAL)>=MAPY)) offmap();
X  
X
X--- 336,342 -----
X  void
X  coffmap()
X  {
X! 	if((xcurs<0)||(ycurs<0)||(xcurs>=SCREEN_X_SIZE)
X  	||((ycurs>=SCREEN_Y_SIZE))||((XREAL)>=MAPX)
X  	||((YREAL)>=MAPY)) offmap();
X  
X*** omain.c	Thu Jul 28 09:10:32 1988
X--- main.c	Thu Jul 28 09:11:10 1988
X***************
X*** 208,214
X  		}
X  		execute();
X  #ifdef TRADE
X! 		uptrade();
X  #endif TRADE
X  		if(ntn[country].capx>15) {
X  			xcurs=15;
X
X--- 208,214 -----
X  		}
X  		execute();
X  #ifdef TRADE
X! 		checktrade();
X  #endif TRADE
X  		if(ntn[country].capx>15) {
X  			xcurs=15;
X***************
X*** 661,669
X  				/*print that army to nfound%5*/
X  				mvaddch((nfound%5)*2,COLS-21,'>');
X  				if(selector==(nfound%5)*2) standout();
X- 				/*the mv,for gets the highlighting pretty*/
X- 				move((nfound%5)*2,COLS-10);
X- 				for(i=0;i<9;i++) addch(' ');
X  
X  				mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
X  				/*the mv,for gets the highlighting pretty*/
X
X--- 661,666 -----
X  				/*print that army to nfound%5*/
X  				mvaddch((nfound%5)*2,COLS-21,'>');
X  				if(selector==(nfound%5)*2) standout();
X  
X  				mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
X  
X***************
X*** 666,674
X  				for(i=0;i<9;i++) addch(' ');
X  
X  				mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
X- 				/*the mv,for gets the highlighting pretty*/
X- 				move((nfound%5)*2+1,COLS-10);
X- 				for(i=0;i<9;i++) addch(' ');
X  
X  				mvprintw((nfound%5)*2+1,COLS-20," mv:%d st:%s",AMOVE,*(soldname+ASTAT));
X  				standend();
X
X--- 663,668 -----
X  				if(selector==(nfound%5)*2) standout();
X  
X  				mvprintw((nfound%5)*2,COLS-20,"army %d: %d (%s)",armynum,ASOLD,*(shunittype+(ATYPE%100)));
X  
X  				mvprintw((nfound%5)*2+1,COLS-20," mv:%d st:%s",AMOVE,*(soldname+ASTAT));
X  				standend();
X***************
X*** 688,695
X  				/*print a navy*/
X  				mvaddch((nfound%5)*2,COLS-21,'>');
X  				if(selector==(nfound%5)*2) standout();
X! 				mvprintw((nfound%5)*2,COLS-20,"nvy %d: war:%d mv:%d",nvynum,NWAR,NMOVE);
X! 				mvprintw((nfound%5)*2+1,COLS-20," mer %d crew %d",NMER,NCREW);
X  				standend();
X  			}
X  			nfound++;
X
X--- 682,689 -----
X  				/*print a navy*/
X  				mvaddch((nfound%5)*2,COLS-21,'>');
X  				if(selector==(nfound%5)*2) standout();
X! 				mvprintw((nfound%5)*2,COLS-20,"nvy %d: war:%d mer:%d",nvynum,NWAR,NMER);
X! 				mvprintw((nfound%5)*2+1,COLS-20," mv:%d crew:%d",NMOVE,NCREW/(NWAR+NMER));
X  				standend();
X  			}
X  			nfound++;
X*** opatchlevel.h	Thu Jul 28 09:10:14 1988
X--- patchlevel.h	Thu Jul 28 09:11:13 1988
X***************
X*** 1,1
X! #define PATCHLEVEL	3
X
X--- 1,1 -----
X! #define PATCHLEVEL	4
X
X
END_OF_FILE
if test 40959 -ne `wc -c <'patches04'`; then
    echo shar: \"'patches04'\" unpacked with wrong size!
fi
# end of 'patches04'
fi
echo shar: End of shell archive.
exit 0