[comp.sources.games.bugs] Patches for conquer

mike@cimcor.UUCP (Michael Grenier) (01/31/88)

These patches are for patching conquer to run under Microport
System V/AT. The main problems were the 16 bit integers (32
bit numbers not allowed in switch statements, sizeof(char *)!=
sizeof(int). There is also a compiler bug resulting in the message
compiler error - segment overwrite, get help. Some statements
had to be broken up a bit.

     -Mike
    {rutgers, amdahl, ihnp4}!bungia!cimcor!mike

*** header.h	Thu Jan 28 22:10:49 1988
--- ../conquer/header.h	Fri Jan 29 16:42:10 1988
***************
*** 35,41
  
  /* directory where default data files will be stored */
  /* SO ONE GAME CAN EXIST IN DEFAULTDIR, OTHER GAMES IN OTHER DIRECTORIES */
! #define DEFAULTDIR "/usr/game"
  
  /*-------------------MODIFICATION IS OPTIONAL ON THE FOLLOWING-------------*/
  #define SYSV 		/*comment this line out if on a BSD machine*/

--- 35,41 -----
  
  /* directory where default data files will be stored */
  /* SO ONE GAME CAN EXIST IN DEFAULTDIR, OTHER GAMES IN OTHER DIRECTORIES */
! #define DEFAULTDIR "/usr/games"
  
  /*-------------------MODIFICATION IS OPTIONAL ON THE FOLLOWING-------------*/
  #define SYSV 		/*comment this line out if on a BSD machine*/
*** io.c	Sun Jan 24 20:33:31 1988
--- ../conquer/io.c	Sat Jan 30 01:11:11 1988
***************
*** 496,502
   				printf("	%s",*(races+i));
   		if(ntn[nationid].active>=2) printf("	NPC");
   		else printf("	%s",*(Class+ntn[nationid].class));
!  		printf("	%d	%d	%d	%d	%d",
   			ntn[nationid].score ,ntn[nationid].tgold
   			,ntn[nationid].tmil ,ntn[nationid].tciv
   			,ntn[nationid].tsctrs );

--- 496,502 -----
   				printf("	%s",*(races+i));
   		if(ntn[nationid].active>=2) printf("	NPC");
   		else printf("	%s",*(Class+ntn[nationid].class));
!  		printf("	%d	%ld	%ld	%ld	%d",
   			ntn[nationid].score ,ntn[nationid].tgold
   			,ntn[nationid].tmil ,ntn[nationid].tciv
   			,ntn[nationid].tsctrs );
*** magic.c	Sun Jan 24 20:32:10 1988
--- ../conquer/magic.c	Fri Jan 29 14:47:09 1988
***************
*** 26,32
  
  getmagic()
  {
! int newpower;
    	newpower=1<<rand()%MAXPOWER;
  	switch(newpower){
  	case WARRIOR:

--- 26,32 -----
  
  getmagic()
  {
! long int newpower;
    	newpower=1<<rand()%MAXPOWER;
  	if ((newpower==WARRIOR)|| (newpower==CAPTAIN) || (newpower==WARLORD)){
  		if(magic(country,WARRIOR)!=1){
***************
*** 28,37
  {
  int newpower;
    	newpower=1<<rand()%MAXPOWER;
! 	switch(newpower){
! 	case WARRIOR:
! 	case CAPTAIN:
! 	case WARLORD:
  		if(magic(country,WARRIOR)!=1){
  			ntn[country].powers|=WARRIOR;
  			return(WARRIOR);

--- 28,34 -----
  {
  long int newpower;
    	newpower=1<<rand()%MAXPOWER;
! 	if ((newpower==WARRIOR)|| (newpower==CAPTAIN) || (newpower==WARLORD)){
  		if(magic(country,WARRIOR)!=1){
  			ntn[country].powers|=WARRIOR;
  			return(WARRIOR);
***************
*** 44,53
  			ntn[country].powers|=WARLORD;
  			return(WARLORD);
  		}
! 		break;
! 	case MI_MONST:
! 	case AV_MONST:
! 	case MA_MONST:
  		if(ntn[country].race!=ORC) return(0);
  		if(magic(country,MI_MONST)!=1){
  			ntn[country].powers|=MI_MONST;

--- 41,50 -----
  			ntn[country].powers|=WARLORD;
  			return(WARLORD);
  		}
! 		return(0);
! 	};
! 	if ((newpower==MI_MONST)||(newpower==AV_MONST)||(newpower==MA_MONST))
! 	{
  		if(ntn[country].race!=ORC) return(0);
  		if(magic(country,MI_MONST)!=1){
  			ntn[country].powers|=MI_MONST;
***************
*** 61,77
  			ntn[country].powers|=MA_MONST;
  			return(MA_MONST);
  		}
! 		break;
! 	case SPY:
! 	case KNOWALL:
! 	case DERVISH:
! 	case HIDDEN:
! 	case ARCHITECT:
! 	case URBAN:
! 	case THE_VOID:
! 	case HEALER:
! 	case ARCHER:
! 	case CAVALRY:
  		if(magic(country,newpower)==1) return(0);
  		ntn[country].powers|=newpower;
  		return(newpower);

--- 58,70 -----
  			ntn[country].powers|=MA_MONST;
  			return(MA_MONST);
  		}
! 		return(0);
! 	};
! 	if ((newpower==SPY)||(newpower==KNOWALL)||(newpower==DERVISH)||
! 	    (newpower==HIDDEN)||(newpower==ARCHITECT)||(newpower==URBAN)||
! 	    (newpower==THE_VOID)||(newpower==HEALER)||(newpower==ARCHER)||
! 	    (newpower==CAVALRY))
! 	{
  		if(magic(country,newpower)==1) return(0);
  		ntn[country].powers|=newpower;
  		return(newpower);
***************
*** 75,81
  		if(magic(country,newpower)==1) return(0);
  		ntn[country].powers|=newpower;
  		return(newpower);
! 	case DESTROYER:
  		if((ntn[country].race!=ELF)&&(magic(country,DESTROYER)!=1)){
  			ntn[country].powers|=DESTROYER;
  			return(DESTROYER);

--- 68,76 -----
  		if(magic(country,newpower)==1) return(0);
  		ntn[country].powers|=newpower;
  		return(newpower);
! 	};
! 	if(newpower==DESTROYER)
! 	{
  		if((ntn[country].race!=ELF)&&(magic(country,DESTROYER)!=1)){
  			ntn[country].powers|=DESTROYER;
  			return(DESTROYER);
***************
*** 80,87
  			ntn[country].powers|=DESTROYER;
  			return(DESTROYER);
  		}
! 		break;
! 	case VAMPIRE:
  		if((ntn[country].race!=ELF)&&(magic(country,VAMPIRE)!=1)){
  			ntn[country].powers|=VAMPIRE;
  			return(VAMPIRE);

--- 75,84 -----
  			ntn[country].powers|=DESTROYER;
  			return(DESTROYER);
  		}
! 		return(0);
! 	};
! 	if(newpower==VAMPIRE)
! 	{
  		if((ntn[country].race!=ELF)&&(magic(country,VAMPIRE)!=1)){
  			ntn[country].powers|=VAMPIRE;
  			return(VAMPIRE);
***************
*** 86,93
  			ntn[country].powers|=VAMPIRE;
  			return(VAMPIRE);
  		}
! 		break;
! 	case MINER:
  		if((ntn[country].race!=ELF)&&(ntn[country].race!=DWARF)&&(magic(country,MINER)!=1)){
  			ntn[country].powers|=MINER;
  			return(MINER);

--- 83,92 -----
  			ntn[country].powers|=VAMPIRE;
  			return(VAMPIRE);
  		}
! 		return(0);
! 	};
! 	if(newpower==MINER)
! 	{
  		if((ntn[country].race!=ELF)&&(ntn[country].race!=DWARF)&&(magic(country,MINER)!=1)){
  			ntn[country].powers|=MINER;
  			return(MINER);
***************
*** 92,99
  			ntn[country].powers|=MINER;
  			return(MINER);
  		}
! 		break;
! 	case STEEL:
  		if(magic(country,STEEL)==1) return(0);
  		if(magic(country,MINER)!=1) return(0);
  		ntn[country].powers|=STEEL;

--- 91,100 -----
  			ntn[country].powers|=MINER;
  			return(MINER);
  		}
! 		return(0);
! 	};
! 	if(newpower==STEEL)
! 	{
  		if(magic(country,STEEL)==1) return(0);
  		if(magic(country,MINER)!=1) return(0);
  		ntn[country].powers|=STEEL;
***************
*** 98,104
  		if(magic(country,MINER)!=1) return(0);
  		ntn[country].powers|=STEEL;
  		return(STEEL);
! 	case BREEDER:
  		if(magic(country,BREEDER)==1) return(0);
  		if(ntn[country].race!=ORC) return(0);
  		ntn[country].powers|=BREEDER;

--- 99,107 -----
  		if(magic(country,MINER)!=1) return(0);
  		ntn[country].powers|=STEEL;
  		return(STEEL);
! 	};
! 	if(newpower==BREEDER)
! 	{
  		if(magic(country,BREEDER)==1) return(0);
  		if(ntn[country].race!=ORC) return(0);
  		ntn[country].powers|=BREEDER;
***************
*** 103,109
  		if(ntn[country].race!=ORC) return(0);
  		ntn[country].powers|=BREEDER;
  		return(BREEDER);
! 	}
  	return(0);
  }
  

--- 106,112 -----
  		if(ntn[country].race!=ORC) return(0);
  		ntn[country].powers|=BREEDER;
  		return(BREEDER);
! 	};
  	return(0);
  }
  
***************
*** 285,292
  exenewmgk(newpower)
  {
  	short x,y;
! 	switch(newpower){
! 		case WARRIOR:
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
  			break;

--- 288,295 -----
  exenewmgk(newpower)
  {
  	short x,y;
! 	if(newpower==WARRIOR)
! 	{
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
  			return(0);
***************
*** 289,296
  		case WARRIOR:
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
! 			break;
! 		case CAPTAIN:
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
  			break;

--- 292,301 -----
  	{
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
! 			return(0);
! 	};
! 	if(newpower==CAPTAIN)
! 	{
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
  			return(0);
***************
*** 293,300
  		case CAPTAIN:
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
! 			break;
! 		case WARLORD:
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
  			break;

--- 298,307 -----
  	{
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
! 			return(0);
! 	};
! 	if(newpower==WARLORD)
! 	{
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
  			return(0);
***************
*** 297,304
  		case WARLORD:
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
! 			break;
! 		case HEALER:
  			if(ntn[country].race==ORC) {
  				if(ntn[country].repro<=11)
  					ntn[country].repro+=2;

--- 304,313 -----
  	{
  			ntn[country].aplus+=10;
  			ntn[country].dplus+=10;
! 			return(0);
! 	};
! 	if(newpower==HEALER)
! 	{
  			if(ntn[country].race==ORC) {
  				if(ntn[country].repro<=11)
  					ntn[country].repro+=2;
***************
*** 314,321
  			else if(ntn[country].repro>=10){
  				ntn[country].dplus+=10;
  			}
! 			break;
! 		case DESTROYER:
  			for(x=ntn[country].capx-3;x<=ntn[country].capx+3;x++) {
  				for(y=ntn[country].capy-3;y<=ntn[country].capy+3;y++){
  					if((ONMAP)

--- 323,332 -----
  			else if(ntn[country].repro>=10){
  				ntn[country].dplus+=10;
  			}
! 			return(0);
! 	};
! 	if(newpower==DESTROYER)
! 	{
  			for(x=ntn[country].capx-3;x<=ntn[country].capx+3;x++) {
  				for(y=ntn[country].capy-3;y<=ntn[country].capy+3;y++){
  					if((ONMAP)
***************
*** 327,334
  				}
  			}
    			updmove(ntn[country].race);
! 			break;
! 		case DERVISH:
    			updmove(ntn[country].race);
    			break;
  		case MI_MONST:

--- 338,347 -----
  				}
  			}
    			updmove(ntn[country].race);
! 			return(0);
! 	};
! 	if(newpower==DERVISH)
! 	{
    			updmove(ntn[country].race);
    			return(0);
  	};
***************
*** 330,347
  			break;
  		case DERVISH:
    			updmove(ntn[country].race);
!   			break;
! 		case MI_MONST:
! 		case AV_MONST:
! 		case MA_MONST:
! 		case SPY:
! 		case KNOWALL:
! 		case HIDDEN:
! 		case THE_VOID:
! 		case ARCHITECT:
! 		case MINER:
! 			break;
! 		case VAMPIRE:
  			ntn[country].aplus-=35;
  			ntn[country].dplus-=35;
  			ntn[country].maxmove-=2;

--- 343,358 -----
  	if(newpower==DERVISH)
  	{
    			updmove(ntn[country].race);
!   			return(0);
! 	};
! 	if((newpower==MI_MONST) || (newpower==AV_MONST)	||
! 	   (newpower==MA_MONST) || (newpower==SPY)	||
! 	   (newpower==KNOWALL)  || (newpower==HIDDEN)	||
! 	   (newpower==THE_VOID) || (newpower==ARCHITECT)	||
! 	   (newpower==MINER))
! 		return(0);
! 	if(newpower==VAMPIRE)
! 	{
  			ntn[country].aplus-=35;
  			ntn[country].dplus-=35;
  			ntn[country].maxmove-=2;
***************
*** 345,352
  			ntn[country].aplus-=35;
  			ntn[country].dplus-=35;
  			ntn[country].maxmove-=2;
! 			break;
! 		case URBAN:
  			if(ntn[country].race==ORC) {
  				ntn[country].repro+=3;
  				if(ntn[country].repro>=13){

--- 356,365 -----
  			ntn[country].aplus-=35;
  			ntn[country].dplus-=35;
  			ntn[country].maxmove-=2;
! 			return(0);
! 	};
! 	if(newpower==URBAN)
! 	{
  			if(ntn[country].race==ORC) {
  				ntn[country].repro+=3;
  				if(ntn[country].repro>=13){
***************
*** 361,370
  				ntn[country].maxmove+=2*(ntn[country].repro-9);
  				ntn[country].repro=12;
  			}
! 			break;
! 		case STEEL:
! 			break;
! 		case ARCHER:
  			ntn[country].dplus+=10;
  			break;
  		case CAVALRY:

--- 374,385 -----
  				ntn[country].maxmove+=2*(ntn[country].repro-9);
  				ntn[country].repro=12;
  			}
! 			return(0);
! 	};
! 	if(newpower==STEEL)
! 		return(0);
! 	if(newpower==ARCHER)
! 	{
  			ntn[country].dplus+=10;
  			return(0);
  	};
***************
*** 366,373
  			break;
  		case ARCHER:
  			ntn[country].dplus+=10;
! 			break;
! 		case CAVALRY:
  			ntn[country].aplus+=10;
  			ntn[country].maxmove+=6;
  			break;

--- 381,390 -----
  	if(newpower==ARCHER)
  	{
  			ntn[country].dplus+=10;
! 			return(0);
! 	};
! 	if(newpower==CAVALRY)
! 	{
  			ntn[country].aplus+=10;
  			ntn[country].maxmove+=6;
  			return(0);
***************
*** 370,377
  		case CAVALRY:
  			ntn[country].aplus+=10;
  			ntn[country].maxmove+=6;
! 			break;
! 		case BREEDER:
  			ntn[country].repro+=3;
  			ntn[country].dplus-=10;
  			ntn[country].dplus-=10;

--- 387,396 -----
  	{
  			ntn[country].aplus+=10;
  			ntn[country].maxmove+=6;
! 			return(0);
! 	};
! 	if(newpower==BREEDER)
! 	{
  			ntn[country].repro+=3;
  			ntn[country].dplus-=10;
  			ntn[country].dplus-=10;
***************
*** 375,380
  			ntn[country].repro+=3;
  			ntn[country].dplus-=10;
  			ntn[country].dplus-=10;
! 			break;
  	}
  }

--- 394,399 -----
  			ntn[country].repro+=3;
  			ntn[country].dplus-=10;
  			ntn[country].dplus-=10;
! 			return(0);
  	}
  }
*** main.c	Sun Jan 24 20:32:15 1988
--- ../conquer/main.c	Sat Jan 30 00:47:35 1988
***************
*** 17,23
  #include <signal.h>
  #include <fcntl.h>
  #include  <pwd.h>
! 
  /*initialization data*/
  /*Movement costs*/
  char *ele=       "#^%-~";

--- 17,23 -----
  #include <signal.h>
  #include <fcntl.h>
  #include  <pwd.h>
! extern char * getpass();	/* got to declare this on 16bit machines, MWG */
  /*initialization data*/
  /*Movement costs*/
  char *ele=       "#^%-~";
***************
*** 167,173
  		newlogin();
  		exit(1);
  	} else if (pflag) {	/* print a map of the game */
! 		if(strncmp(crypt(getpass("\nwhat is super user password:"),SALT),ntn[0].passwd,PASSLTH)!=0) {
  			printf("sorry, must be super user to get map\n");
  			exit(1);
  		}

--- 167,174 -----
  		newlogin();
  		exit(1);
  	} else if (pflag) {	/* print a map of the game */
! 		if(strncmp(crypt(getpass("\nwhat is super user password:"),SALT),ntn[0].passwd,PASSLTH)!=0) 
! 		{
  			printf("sorry, must be super user to get map\n");
  			exit(1);
  		}
*** makeworld.c	Sun Jan 24 20:31:51 1988
--- ../conquer/makeworld.c	Fri Jan 29 23:54:03 1988
***************
*** 580,586
  			AXLOC=x;
  			AYLOC=y;
  			ASTAT=GARRISON;
! 			ASOLD=750+100*rand()%10;
  			armynum++;
  			AMOVE=8;
  			AXLOC=x;

--- 580,586 -----
  			AXLOC=x;
  			AYLOC=y;
  			ASTAT=GARRISON;
! 			ASOLD=750+100*(rand() % 10);
  			armynum++;
  			AMOVE=8;
  			AXLOC=x;
***************
*** 586,592
  			AXLOC=x;
  			AYLOC=y;
  			ASTAT=ATTACK;
! 			ASOLD=750+100*rand()%10;
  			armynum++;
  		}
  	}

--- 586,592 -----
  			AXLOC=x;
  			AYLOC=y;
  			ASTAT=ATTACK;
! 			ASOLD=750+100*(rand()%10);
  			armynum++;
  		}
  	}
***************
*** 676,682
  				AXLOC=x;
  				AYLOC=y;
  				ASTAT=ATTACK;
! 				ASOLD=200+100*rand()%10;
  				if(armynum<MAXARM-1) armynum++;
  			}
  			else {

--- 676,682 -----
  				AXLOC=x;
  				AYLOC=y;
  				ASTAT=ATTACK;
! 				ASOLD=200+100*(rand()%10);
  				if(armynum<MAXARM-1) armynum++;
  			}
  			else {
***************
*** 680,685
  				if(armynum<MAXARM-1) armynum++;
  			}
  			else {
  				sct[x][y].owner = NNOMAD;
  				ntn[NNOMAD].arm[army2num].xloc=x;
  				ntn[NNOMAD].arm[army2num].yloc=y;

--- 680,687 -----
  				if(armynum<MAXARM-1) armynum++;
  			}
  			else {
+ 				int itest,itest1;
+ 				itest1=NNOMAD;
  				sct[x][y].owner = NNOMAD;
  				ntn[NNOMAD].arm[army2num].xloc=x;
  				ntn[NNOMAD].arm[army2num].yloc=y;
***************
*** 684,690
  				ntn[NNOMAD].arm[army2num].xloc=x;
  				ntn[NNOMAD].arm[army2num].yloc=y;
  				ntn[NNOMAD].arm[army2num].stat=ATTACK;
! 				ntn[NNOMAD].arm[army2num].sold=100+100*rand()%15;
  				if(army2num<MAXARM-1) army2num++;
  			}
  		}

--- 686,693 -----
  				ntn[NNOMAD].arm[army2num].xloc=x;
  				ntn[NNOMAD].arm[army2num].yloc=y;
  				ntn[NNOMAD].arm[army2num].stat=ATTACK;
! 				itest=100*(rand() %15);
! 				ntn[NNOMAD].arm[army2num].sold=100+itest;
  				if(army2num<MAXARM-1) army2num++;
  			}
  		}
***************
*** 692,698
  			country=NPIRATE;
  			NXLOC=x;
  			NYLOC=y;
! 			NWAR=2*(1+rand()%10);
  			nvynum++;
  		}
  	}

--- 695,701 -----
  			country=NPIRATE;
  			NXLOC=x;
  			NYLOC=y;
! 			NWAR=2*(1+(rand()%10));
  			nvynum++;
  		}
  	}
*** move.c	Sun Jan 24 20:32:34 1988
--- ../conquer/move.c	Fri Jan 29 12:57:33 1988
***************
*** 42,47
  	short nvynum;
  	int done=0;	/*done is 1 if done with this move*/
  	int capacity;
  
  	armornvy=AORN;
  	/*get selected army or navy*/

--- 42,48 -----
  	short nvynum;
  	int done=0;	/*done is 1 if done with this move*/
  	int capacity;
+ 	short uport_dummy;	/* added MWG 1/29/88 for broken microport */
  
  	armornvy=AORN;
  	/*get selected army or navy*/
***************
*** 247,253
  					ycurs=oldycurs;
  				}
  				else {
! 					AMOVE-=movecost[XREAL][YREAL];
  					if(AMOVE<=0) done=1;
  				}
  			}

--- 248,255 -----
  					ycurs=oldycurs;
  				}
  				else {
! 					uport_dummy =movecost[XREAL][YREAL];
! 					ntn[country].arm[armynum].smove -= uport_dummy;
  					if(AMOVE<=0) done=1;
  				}
  			}
***************
*** 284,290
  						refresh();
  					}
  				}
! 				else NMOVE+=movecost[XREAL][YREAL];
  				if(NMOVE<=0) done=1;
  			}
  			else if(armornvy==AORN){

--- 286,295 -----
  						refresh();
  					}
  				}
! 				else {
! 					uport_dummy=movecost[XREAL][YREAL];
! 					NMOVE+=uport_dummy;
! 					};
  				if(NMOVE<=0) done=1;
  			}
  			else if(armornvy==AORN){
*** npc.c	Sun Jan 24 20:31:58 1988
--- ../conquer/npc.c	Sat Jan 30 00:15:50 1988
***************
*** 244,249
  		/*defend your capital if occupied, +50 more if with their army*/
  		for(armie=1;armie<MAXARM;armie++){
  			if(ntn[nation].arm[armie].sold > 0) {
  
  				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10;
  

--- 244,252 -----
  		/*defend your capital if occupied, +50 more if with their army*/
  		for(armie=1;armie<MAXARM;armie++){
  			if(ntn[nation].arm[armie].sold > 0) {
+ 				int uport_dummy;
+ 				uport_dummy=ntn[nation].arm[armie].sold/10;
+ 				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_dummy;
  
  			if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2)
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
***************
*** 245,252
  		for(armie=1;armie<MAXARM;armie++){
  			if(ntn[nation].arm[armie].sold > 0) {
  
- 				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10;
- 
  			if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2)
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)

--- 248,253 -----
  				uport_dummy=ntn[nation].arm[armie].sold/10;
  				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_dummy;
  
  			if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2)
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)
***************
*** 251,257
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)
  			&&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){
! 				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5;
  				if((rand()%3==0)
  				&&(ntn[country].dstatus[nation]<WAR))
  					ntn[country].dstatus[nation]++;

--- 252,260 -----
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)
  			&&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){
! 				int uport_d1;
! 				uport_d1=ntn[nation].arm[armie].sold/5;
! 				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d1;
  				if((rand()%3==0)
  				&&(ntn[country].dstatus[nation]<WAR))
  					ntn[country].dstatus[nation]++;
***************
*** 260,266
  					if(ntn[country].dstatus[nation]==WAR)
  					ntn[country].dstatus[nation]=JIHAD;
  					if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){
! 						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2;
  					}
  					else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5;
  				}

--- 263,271 -----
  					if(ntn[country].dstatus[nation]==WAR)
  					ntn[country].dstatus[nation]=JIHAD;
  					if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){
! 						int uport_d2;
! 						uport_d2=ntn[nation].arm[armie].sold/2;
! 						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d2;
  					}
  					else {
  						int uport_d3;
***************
*** 262,268
  					if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){
  						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2;
  					}
! 					else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5;
  				}
  				}
  			}

--- 267,276 -----
  						uport_d2=ntn[nation].arm[armie].sold/2;
  						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d2;
  					}
! 					else {
! 						int uport_d3;
! 						uport_d3=ntn[nation].arm[armie].sold/5;
! 						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d3; }
  				}
  				}
  			}
***************
*** 336,341
  		/*plus 60 if with their army*/
  		for(armie=1;armie<MAXARM;armie++) 
  		if(ntn[nation].arm[armie].sold > 0) {
  
  			attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10;
  

--- 344,352 -----
  		/*plus 60 if with their army*/
  		for(armie=1;armie<MAXARM;armie++) 
  		if(ntn[nation].arm[armie].sold > 0) {
+ 			int uport_d5;
+ 			uport_d5=ntn[nation].arm[armie].sold/10;
+ 			attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d5;
  
  			if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2)
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
***************
*** 337,344
  		for(armie=1;armie<MAXARM;armie++) 
  		if(ntn[nation].arm[armie].sold > 0) {
  
- 			attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10;
- 
  			if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2)
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)

--- 348,353 -----
  			uport_d5=ntn[nation].arm[armie].sold/10;
  			attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d5;
  
  			if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2)
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)
***************
*** 343,349
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)
  			&&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){
! 				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5;
  				if((rand()%3==0)
  				&&(ntn[country].dstatus[nation]<WAR))
  					ntn[country].dstatus[nation]++;

--- 352,360 -----
  			&&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2)
  			&&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2)
  			&&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){
! 				int uport_d6;
! 				uport_d6=ntn[nation].arm[armie].sold/5;
! 				attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d6;
  				if((rand()%3==0)
  				&&(ntn[country].dstatus[nation]<WAR))
  					ntn[country].dstatus[nation]++;
***************
*** 352,358
  					if(ntn[country].dstatus[nation]==WAR)
  					ntn[country].dstatus[nation]=JIHAD;
  					if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){
! 						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2;
  					}
  					else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5;
  				}

--- 363,371 -----
  					if(ntn[country].dstatus[nation]==WAR)
  					ntn[country].dstatus[nation]=JIHAD;
  					if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){
! 						int uport_d7;
! 						uport_d7=ntn[nation].arm[armie].sold/2;
! 						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d7;
  					}
  					else {
  						int uport_d8;
***************
*** 354,360
  					if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){
  						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2;
  					}
! 					else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5;
  				}
  			}
  		}

--- 367,377 -----
  						uport_d7=ntn[nation].arm[armie].sold/2;
  						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d7;
  					}
! 					else {
! 						int uport_d8;
! 						uport_d8=ntn[nation].arm[armie].sold/5;
! 						attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d8;
! 					}
  				}
  			}
  		}
***************
*** 504,510
  	ntn[country].active=0;
  	for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0) {
  		if(ntn[sct[AXLOC][AYLOC].owner].race==ntn[country].race)
! 			sct[AXLOC][AYLOC].people+=ASOLD;
  		ASOLD=0;
  	}
  	for(nvynum=0;nvynum<MAXNAVY;nvynum++) {

--- 521,531 -----
  	ntn[country].active=0;
  	for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0) {
  		if(ntn[sct[AXLOC][AYLOC].owner].race==ntn[country].race)
! 		{
! 			int uport_d8;
! 			uport_d8=ASOLD;
! 			sct[AXLOC][AYLOC].people+=uport_d8;
! 		};
  		ASOLD=0;
  	}
  	for(nvynum=0;nvynum<MAXNAVY;nvynum++) {
***************
*** 518,527
  
  	/*if take them you get their gold*/
  	if(country!=sct[ntn[country].capx][ntn[country].capy].owner){
! 		if(ntn[country].tgold>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tgold+=ntn[country].tgold;
! 		if(ntn[country].jewels>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].jewels+=ntn[country].jewels;
! 		if(ntn[country].tiron>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tiron+=ntn[country].tiron;
! 		if(ntn[country].tfood>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tfood+=ntn[country].tfood;
  	}
  
  	/*if god destroys then kill all population*/

--- 539,568 -----
  
  	/*if take them you get their gold*/
  	if(country!=sct[ntn[country].capx][ntn[country].capy].owner){
! 		if(ntn[country].tgold>0)
! 		{
! 			long uport_d9;
! 			uport_d9=ntn[country].tgold;
! 			ntn[sct[ntn[country].capx][ntn[country].capy].owner].tgold+=uport_d9;
! 		};
! 		if(ntn[country].jewels>0)
! 		{
! 			long uport_d9;
! 			uport_d9=ntn[country].jewels;
! 			ntn[sct[ntn[country].capx][ntn[country].capy].owner].jewels+=uport_d9;
! 		};
! 		if(ntn[country].tiron>0)
! 		{
! 			long uport_d9;
! 			uport_d9=ntn[country].tiron;
! 			ntn[sct[ntn[country].capx][ntn[country].capy].owner].tiron+=uport_d9;
! 		};
! 		if(ntn[country].tfood>0)
! 		{
! 			long uport_d9;
! 			uport_d9=ntn[country].tfood;
! 			ntn[sct[ntn[country].capx][ntn[country].capy].owner].tfood+=uport_d9;
! 		};
  	}
  
  	/*if god destroys then kill all population*/
***************
*** 566,573
  	/*move nomads randomly until within 2 of city then attack*/
  	country=NNOMAD;
  	for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0){
! 		x=AXLOC+rand()%4-2;
! 		y=AYLOC+rand()%4-2;
  		if(ONMAP&&(is_habitable(x,y)) 
  		&&(land_reachp(AXLOC,AYLOC,x,y,ntn[country].arm[armynum].smove,country))){
  			AXLOC=x;

--- 607,614 -----
  	/*move nomads randomly until within 2 of city then attack*/
  	country=NNOMAD;
  	for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0){
! 		x=AXLOC+(rand()%4)-2;
! 		y=AYLOC+(rand()%4)-2;
  		if(ONMAP&&(is_habitable(x,y)) 
  		&&(land_reachp(AXLOC,AYLOC,x,y,ntn[country].arm[armynum].smove,country))){
  			AXLOC=x;
***************
*** 590,596
  		if((rand()%4==0)&&(is_habitable(x,y))) {
  			AXLOC=x;
  			AYLOC=y;
! 			ASOLD=100+100*rand()%10;
  			ASTAT=ATTACK;
  		}
  	}

--- 631,637 -----
  		if((rand()%4==0)&&(is_habitable(x,y))) {
  			AXLOC=x;
  			AYLOC=y;
! 			ASOLD=100+100*(rand()%10);
  			ASTAT=ATTACK;
  		}
  	}
***************
*** 735,740
  		ASOLD = min (ASOLD,sct[ntn[country].capx][ntn[country].capy].people/2);
  		ASOLD = min (ASOLD, (int) (ntn[country].tgold/ENLISTCOST));
  		if(ASOLD>0){
  		/*printf(" build army %d to %d men",armynum,ASOLD);*/
  		ntn[country].tiron-=ASOLD*10;
  		AXLOC= ntn[country].capx;

--- 776,782 -----
  		ASOLD = min (ASOLD,sct[ntn[country].capx][ntn[country].capy].people/2);
  		ASOLD = min (ASOLD, (int) (ntn[country].tgold/ENLISTCOST));
  		if(ASOLD>0){
+ 		int uport_d10;
  		/*printf(" build army %d to %d men",armynum,ASOLD);*/
  		ntn[country].tiron-=ASOLD*10;
  		AXLOC= ntn[country].capx;
***************
*** 742,748
  		ntn[country].tmil += ASOLD;
  		ntn[country].tciv -= ASOLD;
  		ntn[country].tgold-=ASOLD*ENLISTCOST;
! 		sct[AXLOC][AYLOC].people-=ASOLD;
  		ASTAT= DEFEND;
  		AMOVE=0;
  		}

--- 784,791 -----
  		ntn[country].tmil += ASOLD;
  		ntn[country].tciv -= ASOLD;
  		ntn[country].tgold-=ASOLD*ENLISTCOST;
! 		uport_d10=ASOLD;
! 		sct[AXLOC][AYLOC].people-=uport_d10;
  		ASTAT= DEFEND;
  		AMOVE=0;
  		}
***************
*** 758,763
  			&&((sct[AXLOC][AYLOC].gold>5)
  			||(sct[AXLOC][AYLOC].iron>5))
  			&&(rand()%5==0)&&(ASOLD<diff)){
  				/*printf(" eliminate army %d",armynum);*/
  				diff-=ASOLD;
  				sct[AXLOC][AYLOC].people+=ASOLD;

--- 801,807 -----
  			&&((sct[AXLOC][AYLOC].gold>5)
  			||(sct[AXLOC][AYLOC].iron>5))
  			&&(rand()%5==0)&&(ASOLD<diff)){
+ 				int uport_d11;
  				/*printf(" eliminate army %d",armynum);*/
  				diff-=ASOLD;
  				uport_d11=ASOLD;
***************
*** 760,766
  			&&(rand()%5==0)&&(ASOLD<diff)){
  				/*printf(" eliminate army %d",armynum);*/
  				diff-=ASOLD;
! 				sct[AXLOC][AYLOC].people+=ASOLD;
  				ntn[country].tmil -= ASOLD;
  				ntn[country].tciv += ASOLD;
  				ASOLD=0;

--- 804,811 -----
  				int uport_d11;
  				/*printf(" eliminate army %d",armynum);*/
  				diff-=ASOLD;
! 				uport_d11=ASOLD;
! 				sct[AXLOC][AYLOC].people+=uport_d11;
  				ntn[country].tmil -= ASOLD;
  				ntn[country].tciv += ASOLD;
  				ASOLD=0;
*** randevent.c	Sun Jan 24 20:33:03 1988
--- ../conquer/randevent.c	Sat Jan 30 00:15:44 1988
***************
*** 329,335
  		if((is_habitable(i,j)) && ( sct[i][j].owner == country)) {
   			ntn[NNOMAD].arm[armynum].xloc =i;
   			ntn[NNOMAD].arm[armynum].yloc =j;
! 			ntn[NNOMAD].arm[armynum].sold =300+200*rand()%10;
  			ntn[NNOMAD].arm[armynum].stat =ATTACK;
  			count = 100;
  		}

--- 329,335 -----
  		if((is_habitable(i,j)) && ( sct[i][j].owner == country)) {
   			ntn[NNOMAD].arm[armynum].xloc =i;
   			ntn[NNOMAD].arm[armynum].yloc =j;
! 			ntn[NNOMAD].arm[armynum].sold =300+200*(rand()%10);
  			ntn[NNOMAD].arm[armynum].stat =ATTACK;
  			count = 100;
  		}
***************
*** 387,393
  		for (i=0; i<MAPX; i++) for (j=0; j<MAPY; j++)
  			if(( sct[i][j].owner == country)
  			&& (sct[i][j].iron != 0))
! 				sct[i][j].iron += rand()%7 + 4;
  		break;
  	case 35:
  		/*new leader sets up peace*/

--- 387,393 -----
  		for (i=0; i<MAPX; i++) for (j=0; j<MAPY; j++)
  			if(( sct[i][j].owner == country)
  			&& (sct[i][j].iron != 0))
! 				sct[i][j].iron += (rand()%7) + 4;
  		break;
  	case 35:
  		/*new leader sets up peace*/