[comp.sources.games.bugs] conquer v3 - patch 3

smile@homxc.UUCP (E.BARLOW) (07/13/88)

Patch 3.  The final patch for a while (i hope).  I have fixed much with
navies, but the code still needs work.  Fixed lots of other stuff as well.
Enjoy

The Ed

*** oldnewlogin.c	Wed Jul 13 09:55:53 1988
--- newlogin.c	Wed Jul 13 09:56:16 1988
***************
*** 223,229
  			}
  		}
  
! 		ntn[country].mark = toupper(*ntn[country].name);
  		printf("\ntesting first letter of name (%c) for nation mark...",ntn[country].mark);
  		valid=TRUE;
  		while(valid==TRUE) {

--- 223,231 -----
  			}
  		}
  
! 		ntn[country].mark= (*ntn[country].name);
! 		if (islower(ntn[country].mark)!=FALSE)
! 		  ntn[country].mark= toupper(ntn[country].mark);
  		printf("\ntesting first letter of name (%c) for nation mark...",ntn[country].mark);
  		valid=TRUE;
  		while(valid==TRUE) {
***************
*** 252,257
  				printf("\n'*' is invalid character");
  				valid=TRUE;
  			}
  			if(valid==TRUE){
  				printf("\nplease reenter new national mark for maps:");
  				printf("\n (this can be any uppercase character)");

--- 254,263 -----
  				printf("\n'*' is invalid character");
  				valid=TRUE;
  			}
+ 			if(valid==FALSE) if(!isupper(ntn[country].mark)) {
+ 				printf("\nNot an uppercase character");
+ 				valid=TRUE;
+ 			}
  			if(valid==TRUE){
  				printf("\nplease reenter new national mark for maps:");
  				printf("\n (this can be any uppercase character)");
***************
*** 977,982
  		return(2);
  	case 9:
  		printf("\ndragons have the magical MAJOR MONSTER power automatically");
  		ntn[country].powers|=AV_MONST;
  		x=AV_MONST;
  		CHGMGK;

--- 983,991 -----
  		return(2);
  	case 9:
  		printf("\ndragons have the magical MAJOR MONSTER power automatically");
+ 		ntn[country].powers|=MI_MONST;
+ 		x=MI_MONST;
+ 		CHGMGK;
  		ntn[country].powers|=AV_MONST;
  		x=AV_MONST;
  		CHGMGK;
*** olddisplay.c	Wed Jul 13 09:55:53 1988
--- display.c	Wed Jul 13 09:56:16 1988
*** oldmain.c	Wed Jul 13 09:56:05 1988
--- main.c	Wed Jul 13 09:56:16 1988
***************
*** 207,212
  			exit(FAIL);
  		}
  		execute();
  		if(ntn[country].capx>15) {
  			xcurs=15;
  			xoffset= (ntn[country].capx-15);

--- 207,215 -----
  			exit(FAIL);
  		}
  		execute();
+ #ifdef TRADE
+ 		uptrade();
+ #endif TRADE
  		if(ntn[country].capx>15) {
  			xcurs=15;
  			xoffset= (ntn[country].capx-15);
***************
*** 469,474
  		diploscrn();
  		redraw=TRUE;
  		break;
  	case '9':
  	case 'u':	/*move north-east*/
  		pager=0;

--- 472,483 -----
  		diploscrn();
  		redraw=TRUE;
  		break;
+ #ifdef TRADE
+ 	case 'T':	/*go to commerce section*/
+ 		trade();
+ 		redraw=TRUE;
+ 		break;
+ #endif TRADE
  	case '9':
  	case 'u':	/*move north-east*/
  		pager=0;
***************
*** 673,679
  			found=1;
  	}
  
! 	if(nfound<4+(pager*5)) for(nvynum=0;nvynum<MAXNAVY;nvynum++){
  		if(((NWAR+NMER)!=0)&&(NXLOC==XREAL)&&(NYLOC==YREAL)) {
  			if((nfound>=pager*5)&&(nfound<=4+(pager*5))) {
  				/*print a navy*/

--- 682,688 -----
  			found=1;
  	}
  
! 	if(nfound<=4+(pager*5)) for(nvynum=0;nvynum<MAXNAVY;nvynum++){
  		if(((NWAR+NMER)!=0)&&(NXLOC==XREAL)&&(NYLOC==YREAL)) {
  			if((nfound>=pager*5)&&(nfound<=4+(pager*5))) {
  				/*print a navy*/
*** oldnpc.c	Wed Jul 13 09:56:05 1988
--- npc.c	Wed Jul 13 09:56:16 1988
***************
*** 730,737
  		if(ntn[country].jewels > getmgkcost(M_MIL,country)) {
  			ntn[country].jewels-=getmgkcost(M_MIL,country);
  			if((zz=getmagic(M_MIL))!=0){
! 				fprintf(fnews,"1.\tnation %s gets combat power number %d\n",ntn[country].name,zz);
! 				printf("\tnation %s gets combat power number %d\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			} else if((zz=getmagic(M_MIL))!=0){
  				fprintf(fnews,"1.\tnation %s gets combat power number %d\n",ntn[country].name,zz);

--- 730,737 -----
  		if(ntn[country].jewels > getmgkcost(M_MIL,country)) {
  			ntn[country].jewels-=getmgkcost(M_MIL,country);
  			if((zz=getmagic(M_MIL))!=0){
! 				fprintf(fnews,"1.\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
! 				printf("\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			} else if((zz=getmagic(M_MIL))!=0){
  				fprintf(fnews,"1.\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
***************
*** 734,741
  				printf("\tnation %s gets combat power number %d\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			} else if((zz=getmagic(M_MIL))!=0){
! 				fprintf(fnews,"1.\tnation %s gets combat power number %d\n",ntn[country].name,zz);
! 				printf("\tnation %s gets combat power number %d\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			}
  			else	ntn[country].jewels+=getmgkcost(M_MIL,country);

--- 734,741 -----
  				printf("\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			} else if((zz=getmagic(M_MIL))!=0){
! 				fprintf(fnews,"1.\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
! 				printf("\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			}
  			else	ntn[country].jewels+=getmgkcost(M_MIL,country);
***************
*** 744,751
  		if(ntn[country].jewels > getmgkcost(M_CIV,country)) {
  			ntn[country].jewels-=getmgkcost(M_CIV,country);
  			if((zz=getmagic(M_CIV))!=0){
! 				fprintf(fnews,"1.\tnation %s gets civilian power number %d\n",ntn[country].name,zz);
! 				printf("\tnation %s gets civilian power number %d\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			}
  			else if((zz=getmagic(M_CIV))!=0){

--- 744,751 -----
  		if(ntn[country].jewels > getmgkcost(M_CIV,country)) {
  			ntn[country].jewels-=getmgkcost(M_CIV,country);
  			if((zz=getmagic(M_CIV))!=0){
! 				fprintf(fnews,"1.\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
! 				printf("\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			}
  			else if((zz=getmagic(M_CIV))!=0){
***************
*** 749,756
  				exenewmgk(zz);
  			}
  			else if((zz=getmagic(M_CIV))!=0){
! 				fprintf(fnews,"1.\tnation %s gets civilian power number %d\n",ntn[country].name,zz);
! 				printf("\tnation %s gets civilian power number %d\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			}
  			else	ntn[country].jewels+=getmgkcost(M_CIV,country);

--- 749,756 -----
  				exenewmgk(zz);
  			}
  			else if((zz=getmagic(M_CIV))!=0){
! 				fprintf(fnews,"1.\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
! 				printf("\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
  				exenewmgk(zz);
  			}
  			else	ntn[country].jewels+=getmgkcost(M_CIV,country);
***************
*** 796,802
  		for(y=0;y<MAPY;y++) if(ONMAP)
  			attr[x][y]=1;
  	for(y=ntn[country].capy+NPCTOOFAR;y<MAPY;y++)
! 		for(x=0;x<MAPY;x++) if(ONMAP)
  			attr[x][y]=1;
  	for(x=0;x<ntn[country].capx-NPCTOOFAR;x++)
  		for(y=0;y<MAPY;y++) if(ONMAP)

--- 796,802 -----
  		for(y=0;y<MAPY;y++) if(ONMAP)
  			attr[x][y]=1;
  	for(y=ntn[country].capy+NPCTOOFAR;y<MAPY;y++)
! 		for(x=0;x<MAPX;x++) if(ONMAP)
  			attr[x][y]=1;
  	for(x=0;x<ntn[country].capx-NPCTOOFAR;x++)
  		for(y=0;y<MAPY;y++) if(ONMAP)
***************
*** 802,808
  		for(y=0;y<MAPY;y++) if(ONMAP)
  			attr[x][y]=1;
  	for(y=0;y<ntn[country].capy-NPCTOOFAR;y++)
! 		for(x=0;x<MAPY;x++) if(ONMAP)
  			attr[x][y]=1;
  }
  

--- 802,808 -----
  		for(y=0;y<MAPY;y++) if(ONMAP)
  			attr[x][y]=1;
  	for(y=0;y<ntn[country].capy-NPCTOOFAR;y++)
! 		for(x=0;x<MAPX;x++) if(ONMAP)
  			attr[x][y]=1;
  }
  
***************
*** 1042,1048
  int line;
  {
  	int armynum;
! 	for(armynum=0;armynum<MAXARM;armynum++)
  		if(ASOLD<0) {
  		printf("ERROR: line %d army %d nation %s soldier %d\n",line,armynum,ntn[country].name,ASOLD);
  		ASOLD=0;

--- 1042,1048 -----
  int line;
  {
  	int armynum;
! 	for(armynum=0;armynum<MAXARM;armynum++){
  		if(ASOLD<0) {
  		printf("ERROR: line %d army %d nation %s soldier %d\n",line,armynum,ntn[country].name,ASOLD);
  		ASOLD=0;
***************
*** 1049,1054
  		}
  		if((AXLOC>MAPX)||(AYLOC>MAPY)){
  		printf("CHECK ERROR: line %d army %d nation %s loc %d %d\n",line,armynum,ntn[country].name,AXLOC,AYLOC);
  		}
  	if(ntn[country].tiron < 0L)
  		printf("ERROR: line %d nation %s iron is %ld\n",line,ntn[country].name,ntn[country].tiron);

--- 1049,1056 -----
  		}
  		if((AXLOC>MAPX)||(AYLOC>MAPY)){
  		printf("CHECK ERROR: line %d army %d nation %s loc %d %d\n",line,armynum,ntn[country].name,AXLOC,AYLOC);
+ 		AXLOC = ntn[country].capx;
+ 		AYLOC = ntn[country].capy;
  		}
  	}
  	if(ntn[country].tiron < 0L){
***************
*** 1050,1056
  		if((AXLOC>MAPX)||(AYLOC>MAPY)){
  		printf("CHECK ERROR: line %d army %d nation %s loc %d %d\n",line,armynum,ntn[country].name,AXLOC,AYLOC);
  		}
! 	if(ntn[country].tiron < 0L)
  		printf("ERROR: line %d nation %s iron is %ld\n",line,ntn[country].name,ntn[country].tiron);
  	if(ntn[country].tfood < 0L)
  		printf("ERROR: line %d nation %s food is %ld\n",line,ntn[country].name,ntn[country].tfood);

--- 1052,1059 -----
  		AXLOC = ntn[country].capx;
  		AYLOC = ntn[country].capy;
  		}
! 	}
! 	if(ntn[country].tiron < 0L){
  		printf("ERROR: line %d nation %s iron is %ld\n",line,ntn[country].name,ntn[country].tiron);
  		ntn[country].tiron = 0;
  	}
***************
*** 1052,1058
  		}
  	if(ntn[country].tiron < 0L)
  		printf("ERROR: line %d nation %s iron is %ld\n",line,ntn[country].name,ntn[country].tiron);
! 	if(ntn[country].tfood < 0L)
  		printf("ERROR: line %d nation %s food is %ld\n",line,ntn[country].name,ntn[country].tfood);
  	if(ntn[country].jewels < 0L)
  		printf("ERROR: line %d nation %s jewels is %ld\n",line,ntn[country].name,ntn[country].jewels);

--- 1055,1063 -----
  	}
  	if(ntn[country].tiron < 0L){
  		printf("ERROR: line %d nation %s iron is %ld\n",line,ntn[country].name,ntn[country].tiron);
! 		ntn[country].tiron = 0;
! 	}
! 	if(ntn[country].tfood < 0L){
  		printf("ERROR: line %d nation %s food is %ld\n",line,ntn[country].name,ntn[country].tfood);
  		ntn[country].tfood = 0;
  	}
***************
*** 1054,1060
  		printf("ERROR: line %d nation %s iron is %ld\n",line,ntn[country].name,ntn[country].tiron);
  	if(ntn[country].tfood < 0L)
  		printf("ERROR: line %d nation %s food is %ld\n",line,ntn[country].name,ntn[country].tfood);
! 	if(ntn[country].jewels < 0L)
  		printf("ERROR: line %d nation %s jewels is %ld\n",line,ntn[country].name,ntn[country].jewels);
  }
  #endif DEBUG

--- 1059,1067 -----
  	}
  	if(ntn[country].tfood < 0L){
  		printf("ERROR: line %d nation %s food is %ld\n",line,ntn[country].name,ntn[country].tfood);
! 		ntn[country].tfood = 0;
! 	}
! 	if(ntn[country].jewels < 0L){
  		printf("ERROR: line %d nation %s jewels is %ld\n",line,ntn[country].name,ntn[country].jewels);
  		ntn[country].jewels = 0;
  	}
***************
*** 1056,1060
  		printf("ERROR: line %d nation %s food is %ld\n",line,ntn[country].name,ntn[country].tfood);
  	if(ntn[country].jewels < 0L)
  		printf("ERROR: line %d nation %s jewels is %ld\n",line,ntn[country].name,ntn[country].jewels);
  }
  #endif DEBUG

--- 1063,1069 -----
  	}
  	if(ntn[country].jewels < 0L){
  		printf("ERROR: line %d nation %s jewels is %ld\n",line,ntn[country].name,ntn[country].jewels);
+ 		ntn[country].jewels = 0;
+ 	}
  }
  #endif DEBUG
*** oldheader.h	Wed Jul 13 09:55:58 1988
--- header.h	Wed Jul 13 09:56:16 1988
***************
*** 49,54
  #define MAXNAVY		16	/*maximum number of fleets per nation*/
  
  /*THE FOLLOWING SHOULD BE COMMENTED OUT IF YOU DO NOT WANT THE FUNCTION*/
  /*#define HIDELOC		/*defined if news is not to report sectors*/
  #define OGOD		/*defined if you wish to enhance god mode*/
  			/* this gives features like god passwords... */

--- 49,55 -----
  #define MAXNAVY		16	/*maximum number of fleets per nation*/
  
  /*THE FOLLOWING SHOULD BE COMMENTED OUT IF YOU DO NOT WANT THE FUNCTION*/
+ #define TRADE		/*defined to allow commerce between nations*/
  /*#define HIDELOC		/*defined if news is not to report sectors*/
  #define OGOD		/*defined if you wish to enhance god mode*/
  			/* this gives features like god passwords... */
***************
*** 59,65
  #define STORMS		/* have storms strike fleets */
  #define VULCANIZE	/* add in volcano eruptions.... */
  #define PVULCAN 20      /* % chance of eruption each round (see above)*/
! /* #define ORCTAKE      /* define if want orcs to takeover orc NPCS */
  #define TAKEPRICE 500000L /* price for orc takeover (see above) in jewels */
  #define PMOUNT 20       /* % of land that is mountains */
  #define PSTORM 3        /* % chance that a storm will strike a fleet */

--- 60,66 -----
  #define STORMS		/* have storms strike fleets */
  #define VULCANIZE	/* add in volcano eruptions.... */
  #define PVULCAN 20      /* % chance of eruption each round (see above)*/
! #define ORCTAKE      /* define if want orcs to takeover orc NPCS */
  #define TAKEPRICE 500000L /* price for orc takeover (see above) in jewels */
  #define PMOUNT 20       /* % of land that is mountains */
  #define PSTORM 3        /* % chance that a storm will strike a fleet */
***************
*** 84,90
  #define TAXFOOD		40L
  #define TAXIRON		60L
  #define TAXGOLD		70L
! /*City and Capitol tax rates based on people only (no multipleier)*/
  #define TAXCAP		1000L
  #define TAXCITY		750L
  

--- 85,91 -----
  #define TAXFOOD		40L
  #define TAXIRON		60L
  #define TAXGOLD		70L
! /*Town and Capitol tax rates based on people only (no multiplyer)*/
  #define TAXCAP		1000L
  #define TAXCITY		750L
  
*** olddata.h	Wed Jul 13 09:56:08 1988
--- data.h	Wed Jul 13 09:56:16 1988
***************
*** 93,99
  #define	SCOUT		2	/*Scouting--will not engage enemy if possible*/
  #define	ATTACK		3	/*Attack anybody (Hostile+) within 2 sectors*/
  #define	DEFEND		4	/*Defend */
! #define	GARRISON	5	/*Garrison--for a city or Capitol */
  
  struct s_sector
  {

--- 93,100 -----
  #define	SCOUT		2	/*Scouting--will not engage enemy if possible*/
  #define	ATTACK		3	/*Attack anybody (Hostile+) within 2 sectors*/
  #define	DEFEND		4	/*Defend */
! #define	GARRISON	5	/*Garrison--for a town or Capitol */
! #define TRADED		6	/*Indicates an army that has been traded*/
  
  struct s_sector
  {
***************
*** 400,405
  extern	char	*helpfile;
  extern	char	*newsfile;
  extern	char	*isonfile;
  
  #define	abrt() { \
  fprintf(stderr,"\nSerious Error (File %s, Line %d) - Aborting\n",__FILE__,__LINE__); \

--- 401,409 -----
  extern	char	*helpfile;
  extern	char	*newsfile;
  extern	char	*isonfile;
+ #ifdef TRADE
+ extern	char	*tradefile;
+ #endif TRADE
  
  #define	abrt() { \
  fprintf(stderr,"\nSerious Error (File %s, Line %d) - Aborting\n",__FILE__,__LINE__); \
***************
*** 421,426
  extern	void readdata(),redesignate(),redomil(),reduce(),rmessage(),score();
  extern	void see(),showscore(),update(),updmove(),verifydata(),verify_ntn();
  extern	void verify_sct(),wmessage(),writedata(),getdstatus(),exit();
  
  extern	char	*crypt(),*strcpy(),*strncpy(),*strcat(),*strncat();
  

--- 425,433 -----
  extern	void readdata(),redesignate(),redomil(),reduce(),rmessage(),score();
  extern	void see(),showscore(),update(),updmove(),verifydata(),verify_ntn();
  extern	void verify_sct(),wmessage(),writedata(),getdstatus(),exit();
+ #ifdef TRADE
+ extern	void trade(),uptrade();
+ #endif TRADE
  
  extern	char	*crypt(),*strcpy(),*strncpy(),*strcat(),*strncat();
  
*** oldnewlogin.h	Wed Jul 13 09:55:59 1988
--- newlogin.h	Wed Jul 13 09:56:17 1988
***************
*** 63,67
  #define	NLREPRO		1
  #define	NLREPCOST	2
  #define	NLMOVE		3
! #define	NLDBLCOST	2
  #define	NLMAGIC		2

--- 63,67 -----
  #define	NLREPRO		1
  #define	NLREPCOST	2
  #define	NLMOVE		3
! #define	NLDBLCOST	1
  #define	NLMAGIC		2
*** oldnations	Wed Jul 13 09:55:56 1988
--- nations	Wed Jul 13 09:56:17 1988
***************
*** 41,47
  #########################################################################
  anorian  elfwizard  E A F 30 40  8  70000 1500 8500 8  2
  bobland  dragon     O B F 20 0   6  12000  1500 8000 10 9
- cordoba  wizard     H C R 10 10  2  30000 1500 8000 8  4
  darboth  balrog     O D R 0  0   7  70000 1500 9500 8  9
  edland   dragon     O E R 20 0   8  12000  1500 8500 10 9
  fung     elfking    E F F 10 40  8  50000 1000 9500 8  2

--- 41,46 -----
  #########################################################################
  anorian  elfwizard  E A F 30 40  8  70000 1500 8500 8  2
  bobland  dragon     O B F 20 0   6  12000  1500 8000 10 9
  darboth  balrog     O D R 0  0   7  70000 1500 9500 8  9
  edland   dragon     O E R 20 0   8  12000  1500 8500 10 9
  fung     elfking    E F F 10 40  8  50000 1000 9500 8  2
***************
*** 47,52
  fung     elfking    E F F 10 40  8  50000 1000 9500 8  2
  gotho    warking    H G R 10 10  9  50000 1000 6150 8  4
  hargo    king       H H R 10 10  9  30000 1500 11000 7 4
  lint     elfwizard  E L F 20 30  8  50000 1500 7900 10 2
  medal    elfpriest  E M R 20 0   6  16000  2000 6500 10 9
  noria    dwarfduke  D N R 10 30  6  50000 1000 10000 8 4

--- 46,52 -----
  fung     elfking    E F F 10 40  8  50000 1000 9500 8  2
  gotho    warking    H G R 10 10  9  50000 1000 6150 8  4
  hargo    king       H H R 10 10  9  30000 1500 11000 7 4
+ jordoba  wizard     H J R 10 10  2  30000 1500 8000 8  4
  lint     elfwizard  E L F 20 30  8  50000 1500 7900 10 2
  medal    elfpriest  E M R 20 0   6  16000  2000 6500 10 9
  noria    dwarfduke  D N R 10 30  6  50000 1000 10000 8 4
*** oldMakefile	Wed Jul 13 09:55:55 1988
--- Makefile	Wed Jul 13 09:56:17 1988
***************
*** 24,30
  #	if they do not use the -d option.
  DEFAULT = /c28/smile/game/default
  
! CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
  #	The following CFLAGS should be used if you wish to debug the game
  #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
  

--- 24,30 -----
  #	if they do not use the -d option.
  DEFAULT = /c28/smile/game/default
  
! #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
  #	The following CFLAGS should be used if you wish to debug the game
  CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
  
***************
*** 26,32
  
  CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
  #	The following CFLAGS should be used if you wish to debug the game
! #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
  
  #	this is the name of the user executable
  #	the user executable contains commands for the games players

--- 26,32 -----
  
  #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
  #	The following CFLAGS should be used if you wish to debug the game
! CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
  
  #	this is the name of the user executable
  #	the user executable contains commands for the games players
***************
*** 33,39
  GAME = conquer
  #	this is the name of the administrative executable
  #	the administrative executable contains commands for the game super user
! ADMIN = admin
  
  #	This directory is where the executables will be stored
  EXEDIR = /c28/smile/game/runv

--- 33,39 -----
  GAME = conquer
  #	this is the name of the administrative executable
  #	the administrative executable contains commands for the game super user
! ADMIN = cadmin
  
  #	This directory is where the executables will be stored
  EXEDIR = /c28/smile/game/runv
***************
*** 48,54
  
  # AFILS are files needed for game updating...
  AFILS = combat.c cexecute.c io.c admin.c makeworld.c  \
! newlogin.c update.c magic.c npc.c misc.c randevent.c data.c
  AOBJS = combat.o cexecuteA.o ioA.o admin.o makeworld.o  \
  newlogin.o update.o magicA.o npc.o miscA.o randevent.o dataA.o $(GETOPT)
  

--- 48,54 -----
  
  # AFILS are files needed for game updating...
  AFILS = combat.c cexecute.c io.c admin.c makeworld.c  \
! newlogin.c update.c magic.c npc.c misc.c randevent.c data.c trade.c
  AOBJS = combat.o cexecuteA.o ioA.o admin.o makeworld.o  \
  newlogin.o update.o magicA.o npc.o miscA.o randevent.o dataA.o \
  tradeA.o $(GETOPT)
***************
*** 50,56
  AFILS = combat.c cexecute.c io.c admin.c makeworld.c  \
  newlogin.c update.c magic.c npc.c misc.c randevent.c data.c
  AOBJS = combat.o cexecuteA.o ioA.o admin.o makeworld.o  \
! newlogin.o update.o magicA.o npc.o miscA.o randevent.o dataA.o $(GETOPT)
  
  # GFILS are files needed to run a normal interactive game
  GFILS = commands.c cexecute.c forms.c io.c main.c move.c \

--- 50,57 -----
  AFILS = combat.c cexecute.c io.c admin.c makeworld.c  \
  newlogin.c update.c magic.c npc.c misc.c randevent.c data.c trade.c
  AOBJS = combat.o cexecuteA.o ioA.o admin.o makeworld.o  \
! newlogin.o update.o magicA.o npc.o miscA.o randevent.o dataA.o \
! tradeA.o $(GETOPT)
  
  # GFILS are files needed to run a normal interactive game
  GFILS = commands.c cexecute.c forms.c io.c main.c move.c \
***************
*** 54,60
  
  # GFILS are files needed to run a normal interactive game
  GFILS = commands.c cexecute.c forms.c io.c main.c move.c \
! magic.c misc.c reports.c data.c display.c extcmds.c
  GOBJS = commands.o cexecute.o forms.o io.o main.o move.o \
  magic.o misc.o reports.o data.o display.o extcmds.o $(GETOPT)
  

--- 55,61 -----
  
  # GFILS are files needed to run a normal interactive game
  GFILS = commands.c cexecute.c forms.c io.c main.c move.c \
! magic.c misc.c reports.c data.c display.c extcmds.c trade.c
  GOBJS = commands.o cexecute.o forms.o io.o main.o move.o \
  magic.o misc.o reports.o data.o display.o extcmds.o trade.o $(GETOPT)
  
***************
*** 56,62
  GFILS = commands.c cexecute.c forms.c io.c main.c move.c \
  magic.c misc.c reports.c data.c display.c extcmds.c
  GOBJS = commands.o cexecute.o forms.o io.o main.o move.o \
! magic.o misc.o reports.o data.o display.o extcmds.o $(GETOPT)
  
  HEADERS=header.h data.h newlogin.h
  HELPFILE=help.txt

--- 57,63 -----
  GFILS = commands.c cexecute.c forms.c io.c main.c move.c \
  magic.c misc.c reports.c data.c display.c extcmds.c trade.c
  GOBJS = commands.o cexecute.o forms.o io.o main.o move.o \
! magic.o misc.o reports.o data.o display.o extcmds.o trade.o $(GETOPT)
  
  HEADERS=header.h data.h newlogin.h
  HELPFILE=help.txt
***************
*** 125,130
  	newhelp
  	cat $(HELPFILE) | sed -f helpscript > $(HELPOUT)
  	$(RM) helpscript
  	cp $(HELPOUT) $(DEFAULT)
  
  lint:

--- 126,132 -----
  	newhelp
  	cat $(HELPFILE) | sed -f helpscript > $(HELPOUT)
  	$(RM) helpscript
+ 	-mkdir $(DEFAULT)  2>/dev/null
  	cp $(HELPOUT) $(DEFAULT)
  
  lint:
***************
*** 209,211
  	$(CC) $(CFLAGS) -DCONQUER -c forms.c
  commands.o:	data.h header.h commands.c
  	$(CC) $(CFLAGS) -DCONQUER -c commands.c

--- 211,218 -----
  	$(CC) $(CFLAGS) -DCONQUER -c forms.c
  commands.o:	data.h header.h commands.c
  	$(CC) $(CFLAGS) -DCONQUER -c commands.c
+ trade.o:	data.h header.h trade.h trade.c
+ 	$(CC) $(CFLAGS) -DCONQUER -c trade.c
+ tradeA.o:	data.h header.h trade.h trade.c
+ 	$(CC) $(CFLAGS) -DADMIN -c trade.c
+ 	mv trade.o tradeA.o
*** oldhelp.txt	Wed Jul 13 09:55:54 1988
--- help.txt	Wed Jul 13 09:56:17 1988
***************
*** 11,17
  'b': move south west     'S': diplomacy status       'N': read newspaper
  'J': scroll south        'Q': quit (saves changes)   'W': write message
  'K': scroll north        'M': magic                  'R': read messages
! 'L': scroll east         'C': construct
  'H': scroll west         'D': draft              'ESC [1-5]': chg status
  	                 'G': go to next army    'ESC +': combine 2 armies
  	                 'F': go to next fleet   'ESC -': split army

--- 11,17 -----
  'b': move south west     'S': diplomacy status       'N': read newspaper
  'J': scroll south        'Q': quit (saves changes)   'W': write message
  'K': scroll north        'M': magic                  'R': read messages
! 'L': scroll east         'C': construct              'T': trade
  'H': scroll west         'D': draft              'ESC [1-5]': chg status
  	                 'G': go to next army    'ESC +': combine 2 armies
  	                 'F': go to next fleet   'ESC -': split army
***************
*** 19,34
  END
                      Welcome to Conquer XVERSION
  
! CONQUER is a multi player computer game designed to run under the UNIX
! operating system.  In CONQUER,  each player is the leader of a nation,
! composed of people (humans, orcs, elves, dwarves), resources, and land.
! Rulers customize their nation at creation by chosing their race and by giving
! their nation special powers (magic, combat factor, location, speed...)
! and resources (civilians, troops, iron, gold...).  Play involves building,
! moving, and controlling armies and navies, diplomacy with other players,
! and adjusting economic activity, which is primarily geared to the production
! of gold for your treasury.  Iron is needed, however to build ships & armies,
! and food is needed to prevent revolts and keep people alive.
  
  Command line format: conquer [-maxhps -nNAT -dDIR]
  	-h       print this help text 		-n NTN   run as nation NTN

--- 19,33 -----
  END
                      Welcome to Conquer XVERSION
  
! CONQUER is a multi player computer game designed to run under the UNIX OS.
! In CONQUER,  each player is the leader of a nation, composed of people 
! (humans, orcs, elves, dwarves), resources, and land.  Rulers customize their 
! nation at creation by chosing their race and by giving their nation special 
! powers (magic, combat factor, location, speed...) and resources (civilians, 
! troops, iron, gold...).  Play involves building, moving, and controlling 
! armies and navies, diplomacy with other players, and economics, which is 
! geared to raising of gold for your treasury,  iron for ships & armies, jewels,
! and food to prevent revolts and keep people alive.
  
  Command line format: conquer [-hs -nNAT -dDIR]
  		-h       print this help text
***************
*** 30,43
  of gold for your treasury.  Iron is needed, however to build ships & armies,
  and food is needed to prevent revolts and keep people alive.
  
! Command line format: conquer [-maxhps -nNAT -dDIR]
! 	-h       print this help text 		-n NTN   run as nation NTN
! 	-d DIR   run on data in directory DIR	-s       print out scores
! Command line format: admin [-maxdp]
! 	-a       add new player		-m       make a world
! 	-p       print a map		-x       execute program
! 	-d DIR   run on data in directory DIR
! It is suggested that each player set up a shell alias for their game & nation
  END
  	                         THE WORLD
  

--- 29,42 -----
  geared to raising of gold for your treasury,  iron for ships & armies, jewels,
  and food to prevent revolts and keep people alive.
  
! Command line format: conquer [-hs -nNAT -dDIR]
! 		-h       print this help text
! 		-s       print out scores
! 		-n NTN   run as nation NTN
! 		-d DIR   run on data in directory DIR
! 
! Each player should set up a shell alias to run their nation.  The Game 
! Administrator should read other documentation on using the admin command.
  END
  	                         THE WORLD
  
***************
*** 136,141
  'N': newspaper:    Briefs you on world happenings.  Note: News has 4 pages.
  'P': production:   ESTIMATE your nations production statistics
  'S': diplomacy:    Allow you to see and alter your diplomatic status.
  'Q': quit:         Save your move and quit the game.  Note there is no
  	            means supported to quit without saving your moves.
  'R': read mail:    Read mail messages

--- 135,141 -----
  'N': newspaper:    Briefs you on world happenings.  Note: News has 4 pages.
  'P': production:   ESTIMATE your nations production statistics
  'S': diplomacy:    Allow you to see and alter your diplomatic status.
+ 'T': commerce:     Allow you to trade with other nations.
  'Q': quit:         Save your move and quit the game.  Note there is no
  	            means supported to quit without saving your moves.
  'R': read mail:    Read mail messages
***************
*** 315,322
  			SHIPS AND SHIP COSTS
  
  		crew	build cost	maintain cost	capacity
! Warship		50	XWARSHPCOST		XSHIPMAINT		0
! Merchant	50	XMERSHPCOST		XSHIPMAINT		XSHIPCP
  
  Ships will now have crews - which, in addition to being drafted upon
  construction, represent the ships current level of damage and are replaced,

--- 315,322 -----
  			SHIPS AND SHIP COSTS
  
  		crew	build cost	maintain cost	capacity
! Warship		XSHIPCREW	XWARSHPCOST		XSHIPMAINT		0
! Merchant	XSHIPCREW	XMERSHPCOST		XSHIPMAINT		XSHIPCP
  
  Ships will now have crews - which, in addition to being drafted upon
  construction, represent the ships current level of damage and are replaced,
***************
*** 332,337
  10 and all their remaining points points for non harbor coastlands.  Naval 
  combat has not been adequately play tested, and Sailor units dont work.
  END
  	                         MAGIC POWERS
  Magic powers differentiate your nation from all the other nations in the
  world.  There are three types of powers - truely MAGICAL powers, which

--- 332,355 -----
  10 and all their remaining points points for non harbor coastlands.  Naval 
  combat has not been adequately play tested, and Sailor units dont work.
  END
+ 			COMMERCE AND TRADING
+ 
+ Trading makes it be possible to exchange items between nations.
+ 
+ There are seven types of items available for trade:  gold, food, iron,
+ jewels, land, soldiers, and ships.  To place an item up for trade,
+ the player need only select the sell option on the commerce board.  The
+ player will then enter the type and amount of his product followed by the
+ type and minimum amount of what he wants in return.  The product will
+ remain on the commerce board until it is purchased or removed by the
+ owner of the product.  To purchase an item, a player can just select the
+ item number to purchase and then enter a bid amount.  You may only trade
+ mercenary, seige engine, catapult, (summoned) monster, or elephant units.
+ 
+ During every update, bids will be resolved and the highest bid for a
+ product will receive the product.  There is a 20% administration fee
+ for a trade (i.e. 20% of the traded goods on each side disappear)
+ END
  	                         MAGIC POWERS
  Magic powers differentiate your nation from all the other nations in the
  world.  There are three types of powers - truely MAGICAL powers, which
***************
*** 454,459
  
  THE NEXT PAGE IS THE COMBAT RESULTS TABLE
  	 basically the attacker wants a high roll and the defender wants low.
  END
  	        6-1 5-1 4-1 3-1 2-1 3-2 5-4 1-1 4-5 2-3 1-2 1-3 1-4 1-5 1-6
      <--010     20% 40% 50% 60% 70% 80% 90% 100%100%100%110%120%120%130%130%

--- 472,481 -----
  
  THE NEXT PAGE IS THE COMBAT RESULTS TABLE
  	 basically the attacker wants a high roll and the defender wants low.
+          The table is based on a roll between 0 and 200 (it does NOT use true
+          percentages).  The number given is the percent loss, which is modified
+          by the armies attack or defensive bonus.  Retreats are based on the
+          relative losses taken by a given side.
  END
  	        6-1 5-1 4-1 3-1 2-1 3-2 5-4 1-1 4-5 2-3 1-2 1-3 1-4 1-5 1-6
      <--010     20% 40% 50% 60% 70% 80% 90% 100%100%100%110%120%120%130%130%
***************
*** 526,532
  	Storms		XSTORMS	  Volcanos	XVULCANIZE
  	Npc Nations 	XNPC	  PC Automove	XCMOVE
  	Random Events	XRANEVENT	  Orc Takeovers	XORCTAKE
! 	Super God	XOGOD
  END
  	                ADDITIONAL OPTIONS
  

--- 548,555 -----
  	Storms		XSTORMS	  Volcanos	XVULCANIZE
  	Npc Nations 	XNPC	  PC Automove	XCMOVE
  	Random Events	XRANEVENT	  Orc Takeovers	XORCTAKE
! 	Super God	XOGOD	  Hidden News	XHIDELOC
! 	Trading		XTRADE
  END
  	                ADDITIONAL OPTIONS
  
*** oldREADME	Wed Jul 13 09:55:50 1988
--- README	Wed Jul 13 09:56:17 1988
*** oldrun	Wed Jul 13 09:56:00 1988
--- run	Wed Jul 13 09:56:17 1988

jfh@rpp386.UUCP (John F. Haugh II) (07/15/88)

posting patches to the bugs newgroup is a fantastic idea on the shortterm
side.  however, in order to insure the patches are archived for future
reference, it is best to send them in to the moderator.  the c.s.games
moderator does a fantastic job of keeping things organized and if you will
help him out by sending him the patches i'm sure future generations will
be able to find what they need as easily as we can.

- john.
-- 
John F. Haugh II                 +--------- Cute Chocolate Quote ---------
HASA, "S" Division               | "USENET should not be confused with
UUCP:   killer!rpp386!jfh        |  something that matters, like CHOCOLATE"
DOMAIN: jfh@rpp386.uucp          |             -- with my apologizes