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

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

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



#! /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:  patches05
# Wrapped by billr@saab on Fri Jul 29 09:06:31 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches05' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patches05'\"
else
echo shar: Extracting \"'patches05'\" \(48426 characters\)
sed "s/^X//" >'patches05' <<'END_OF_FILE'
X*** onpc.c	Thu Jul 28 09:10:33 1988
X--- npc.c	Thu Jul 28 09:11:10 1988
X***************
X*** 123,130
X  			}
X  		}
X  	}
X! 	else {
X! 		/*place a new Nomad army*/
X  		x=(rand()%(MAPX-8))+4;
X  		y=(rand()%(MAPY-8))+4;
X  		if((rand()%4==0)&&(is_habitable(x,y))) {
X
X--- 123,130 -----
X  			}
X  		}
X  	}
X! 	/* place a few new Nomad armies */
X! 	for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD<=0){
X  		x=(rand()%(MAPX-8))+4;
X  		y=(rand()%(MAPY-8))+4;
X  		if((rand()%4==0)&&(is_habitable(x,y))) {
X***************
X*** 131,137
X  			AXLOC=x;
X  			AYLOC=y;
X  			ASOLD=100+100*(rand()%10);
X! 			ATYPE=A_INFANTRY;
X  			ASTAT=ATTACK;
X  		}
X  	}
X
X--- 131,137 -----
X  			AXLOC=x;
X  			AYLOC=y;
X  			ASOLD=100+100*(rand()%10);
X! 			ATYPE=A_LT_CAV;
X  			ASTAT=ATTACK;
X  		}
X  		if(rand()%3==0) break;
X***************
X*** 134,139
X  			ATYPE=A_INFANTRY;
X  			ASTAT=ATTACK;
X  		}
X  	}
X  	country=NLIZARD;
X  	for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0){
X
X--- 134,140 -----
X  			ATYPE=A_LT_CAV;
X  			ASTAT=ATTACK;
X  		}
X+ 		if(rand()%3==0) break;
X  	}
X  	country=NLIZARD;
X  	for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0){
X***************
X*** 615,621
X  {
X  	int goldthresh,ironthresh,citythresh;
X  	int armynum,loop;
X! 	int x,y,i;
X  	long zz;
X  
X  #ifdef DEBUG
X
X--- 616,622 -----
X  {
X  	int goldthresh,ironthresh,citythresh;
X  	int armynum,loop;
X! 	int x,y,i,p;
X  	long zz;
X  
X  #ifdef DEBUG
X***************
X*** 730,737
X  		if(ntn[country].jewels > getmgkcost(M_MIL,country)) {
X  			ntn[country].jewels-=getmgkcost(M_MIL,country);
X  			if((zz=getmagic(M_MIL))!=0){
X! 				fprintf(fnews,"1.\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
X! 				printf("\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
X  				exenewmgk(zz);
X  			} else if((zz=getmagic(M_MIL))!=0){
X  				fprintf(fnews,"1.\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
X
X--- 731,741 -----
X  		if(ntn[country].jewels > getmgkcost(M_MIL,country)) {
X  			ntn[country].jewels-=getmgkcost(M_MIL,country);
X  			if((zz=getmagic(M_MIL))!=0){
X! 				for(p=S_MIL;p<=E_MIL;p++) if(powers[p]==zz){
X! 					fprintf(fnews,"1.\tnation %s gets combat power %s\n",ntn[country].name,pwrname[p]);
X! 					printf("\tnation %s gets combat power %s\n",ntn[country].name,pwrname[p]);
X! 					break;
X! 				}
X  				exenewmgk(zz);
X  			} else if((zz=getmagic(M_MIL))!=0){
X  				for(p=S_MIL;p<=E_MIL;p++) if(powers[p]==zz){
X***************
X*** 734,741
X  				printf("\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
X  				exenewmgk(zz);
X  			} else if((zz=getmagic(M_MIL))!=0){
X! 				fprintf(fnews,"1.\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
X! 				printf("\tnation %s gets combat power number %ld\n",ntn[country].name,zz);
X  				exenewmgk(zz);
X  			}
X  			else	ntn[country].jewels+=getmgkcost(M_MIL,country);
X
X--- 738,748 -----
X  				}
X  				exenewmgk(zz);
X  			} else if((zz=getmagic(M_MIL))!=0){
X! 				for(p=S_MIL;p<=E_MIL;p++) if(powers[p]==zz){
X! 					fprintf(fnews,"1.\tnation %s gets combat power %s\n",ntn[country].name,pwrname[p]);
X! 					printf("\tnation %s gets combat power %s\n",ntn[country].name,pwrname[p]);
X! 					break;
X! 				}
X  				exenewmgk(zz);
X  			}
X  			else	ntn[country].jewels+=getmgkcost(M_MIL,country);
X***************
X*** 744,751
X  		if(ntn[country].jewels > getmgkcost(M_CIV,country)) {
X  			ntn[country].jewels-=getmgkcost(M_CIV,country);
X  			if((zz=getmagic(M_CIV))!=0){
X! 				fprintf(fnews,"1.\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
X! 				printf("\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
X  				exenewmgk(zz);
X  			}
X  			else if((zz=getmagic(M_CIV))!=0){
X
X--- 751,761 -----
X  		if(ntn[country].jewels > getmgkcost(M_CIV,country)) {
X  			ntn[country].jewels-=getmgkcost(M_CIV,country);
X  			if((zz=getmagic(M_CIV))!=0){
X! 				for(p=S_CIV;p<=E_CIV;p++) if(powers[p]==zz){
X! 					fprintf(fnews,"1.\tnation %s gets civilian power %s\n",ntn[country].name,pwrname[p]);
X! 					printf("\tnation %s gets civilian power %s\n",ntn[country].name,pwrname[p]);
X! 					break;
X! 				}
X  				exenewmgk(zz);
X  			}
X  			else if((zz=getmagic(M_CIV))!=0){
X***************
X*** 749,756
X  				exenewmgk(zz);
X  			}
X  			else if((zz=getmagic(M_CIV))!=0){
X! 				fprintf(fnews,"1.\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
X! 				printf("\tnation %s gets civilian power number %ld\n",ntn[country].name,zz);
X  				exenewmgk(zz);
X  			}
X  			else	ntn[country].jewels+=getmgkcost(M_CIV,country);
X
X--- 759,769 -----
X  				exenewmgk(zz);
X  			}
X  			else if((zz=getmagic(M_CIV))!=0){
X! 				for(p=S_CIV;p<=E_CIV;p++) if(powers[p]==zz){
X! 					fprintf(fnews,"1.\tnation %s gets civilian power %s\n",ntn[country].name,pwrname[zz]);
X! 					printf("\tnation %s gets civilian power %s\n",ntn[country].name,pwrname[zz]);
X! 					break;
X! 				}
X  				exenewmgk(zz);
X  			}
X  			else	ntn[country].jewels+=getmgkcost(M_CIV,country);
X*** oheader.h	Thu Jul 28 09:10:33 1988
X--- header.h	Thu Jul 28 09:11:11 1988
X*** odata.h	Thu Jul 28 09:10:47 1988
X--- data.h	Thu Jul 28 09:11:11 1988
X***************
X*** 426,432
X  extern	void see(),showscore(),update(),updmove(),verifydata(),verify_ntn();
X  extern	void verify_sct(),wmessage(),writedata(),getdstatus(),exit();
X  #ifdef TRADE
X! extern	void trade(),uptrade();
X  #endif TRADE
X  
X  extern	char	*crypt(),*strcpy(),*strncpy(),*strcat(),*strncat();
X
X--- 426,432 -----
X  extern	void see(),showscore(),update(),updmove(),verifydata(),verify_ntn();
X  extern	void verify_sct(),wmessage(),writedata(),getdstatus(),exit();
X  #ifdef TRADE
X! extern	void trade(),uptrade(),checktrade();
X  #endif TRADE
X  
X  extern	char	*crypt(),*strcpy(),*strncpy(),*strcat(),*strncat();
X*** ohelp.txt	Thu Jul 28 09:10:49 1988
X--- help.txt	Thu Jul 28 09:11:12 1988
X***************
X*** 100,107
X  	              merging 2 armies, splitting armies, and disbanding armies
X  'c': administration: Report on nation status and then change name, password,
X  	              add to combat bonus, or (if god) destroy a nation.
X! 'd': change display: Change display mode.  Numbers in gold screens... are
X! 	              relative values of the materials.
X  'f': fleet report:   Report on the status of your fleets.
X  'g': group report:   As army report, but display will only show those armies
X  	              in the current sector.
X
X--- 100,107 -----
X  	              merging 2 armies, splitting armies, and disbanding armies
X  'c': administration: Report on nation status and then change name, password,
X  	              add to combat bonus, or (if god) destroy a nation.
X! 'd': change display: Change display mode.  iron/gold screen #'s are sector 
X!                       value.  Population screen #'s are the closest 100 people
X  'f': fleet report:   Report on the status of your fleets.
X  'g': group report:   As army report, but display will only show those armies
X  	              in the current sector.
X***************
X*** 318,327
X  Warship		XSHIPCREW	XWARSHPCOST		XSHIPMAINT		0
X  Merchant	XSHIPCREW	XMERSHPCOST		XSHIPMAINT		XSHIPCP
X  
X! Ships will now have crews - which, in addition to being drafted upon
X! construction, represent the ships current level of damage and are replaced,
X! in harbor, by using the construct ships command.  Movement of
X! a fleet is reduced if the crews are not full.  Marine or Sailor Armies
X  can also be carried by navies with warships.  Each fleet may carry one army
X  in addition to any troops that are ferried - who dont count in combat.
X  Marines add to chances of success in shipboard combat.
X
X--- 318,326 -----
X  Warship		XSHIPCREW	XWARSHPCOST		XSHIPMAINT		0
X  Merchant	XSHIPCREW	XMERSHPCOST		XSHIPMAINT		XSHIPCP
X  
X! Ships require crews - which both represent men on board and the current level 
X! of damage.  Crew is replaced (repairs) in harbor, via <construct ships>. Fleet 
X! movement is reduced if the crews are not full.  Marine or Sailor Armies
X  can also be carried by navies with warships.  Each fleet may carry one army
X  in addition to any troops that are ferried - who dont count in combat.
X  Marines add to chances of success in shipboard combat.
X***************
X*** 405,411
X  NINJA 	   Can have Ninja units.  Spys show enemy troop/civilian strength
X  		exactly (even voids)
X  SAILOR 	   1/2 price naval units.  Can use marines. +10% ramming.
X! DEMOCRACY  +10% in combat (moralle) +1 Move +1 repro All units eat double.
X  ROADS 	   +4 to move if unit starts in your nation.
X  SLAVER     you gain 25% of the populace of *any* sector you take over
X  END
X
X--- 404,410 -----
X  NINJA 	   Can have Ninja units.  Spys show enemy troop/civilian strength
X  		exactly (even voids)
X  SAILOR 	   1/2 price naval units.  Can use marines. +10% ramming.
X! DEMOCRACY  +10% in combat (moralle) +1 Move +1 repro All civilians eat double.
X  ROADS 	   +4 to move if unit starts in your nation.
X  SLAVER     you gain 25% of the populace of *any* sector you take over
X  END
X***************
X*** 499,504
X     180-190      0%  0%  0%  0%  5% 10% 10% 20% 20% 30% 30% 30% 30% 40% 40%
X     190+++       0%  0%  0%  0%  5% 10% 10% 10% 20% 20% 30% 30% 30% 30% 40%
X  END
X  	                 FINAL HINTS & OTHER COSTS
X  
X  It is important to initially have a reprorate of 9-10% and a move of ~8-9.
X
X--- 498,536 -----
X     180-190      0%  0%  0%  0%  5% 10% 10% 20% 20% 30% 30% 30% 30% 40% 40%
X     190+++       0%  0%  0%  0%  5% 10% 10% 10% 20% 20% 30% 30% 30% 30% 40%
X  END
X+                          MAIL MESSAGE FROM COMBAT
X+ 
X+ The following is a mail message you might recieve after a combat.  An
X+ explaination of its details follows.
X+ 
X+ BATTLE SUMMARY for sector 22, 29
X+ You are on the Defending Side
X+ edland is attacking with army 17 (type Infantry, men 125, bonus=80)
X+ edland is attacking with army 23 (type Infantry, men 160, bonus=80)
X+ uru is defending with army 9 (type Infantry, men 84, bonus=110)
X+ attacking soldiers=285	modified roll=42-> attackers percent loss 30%
X+ defending soldiers=84	modified roll=100-> defenders percent loss 70%
X+ ODDS are 339 to 100
X+ RESULT: Attackers lose 85 men, Defenders lose 49 men
X+ Additionally, All defenders retreat to 21 28
X+ END
X+                               AN EXAMPLE OF COMBAT
X+ 
X+ A battle occurs in 22,29 (a "good" farm) between your nation "uru" (defender) 
X+ and "edland".  They have 285 infantry vs. 84 of your infantry. Your defensive 
X+ bonus is +70, their attack bonus is +40. Infantry are +0/+0. A movement bonus 
X+ goes to both sides = 5*(9-movecost)=+40.  Their total bonus is 40+40+=+80. 
X+ Yours is 70+40=110. This leads to dice modifier of 30 in your favor.
X+ They roll 22 which +50-30=42; which on the 3:1 table yields 30% losses
X+ you roll 80 which +50-30=100; 200-100 on the 1:3 table yields 70% losses
X+ the actual loss is troops * Percent * divisor / (100+plus), where the divisor
X+ is the least bonus on any side (better troops die less).  For you this leads
X+ to 84*70*1.4 / 100*(1.7) = 49 men. for them it leads to 85 men.  Despite your
X+ awful luck at the dice, you still came out quite well.
X+ 
X+ However, because they did cream you, there was a chance that you were
X+      forced to retreat, which you did to 21 28.
X+ END
X  	                 FINAL HINTS & OTHER COSTS
X  
X  It is important to initially have a reprorate of 9-10% and a move of ~8-9.
X***************
X*** 528,533
X  If you have too many people in a given non Town, non capitol sector, 
X  reproduction and production is halved for them.  If you have a huge 
X  (>10,000,000) number of people in a sector, they will not reproduce.
X  END
X  			OPTIONS OF YOUR VERSION
X  
X
X--- 560,568 -----
X  If you have too many people in a given non Town, non capitol sector, 
X  reproduction and production is halved for them.  If you have a huge 
X  (>10,000,000) number of people in a sector, they will not reproduce.
X+ 
X+ WARNING: The Naval Code has been known to be buggy.  Please pay attention
X+ and send the author notes on discrepancies in the code.
X  END
X  			OPTIONS OF YOUR VERSION
X  
X*** otrade.c	Thu Jul 28 09:10:15 1988
X--- trade.c	Thu Jul 28 09:11:13 1988
X***************
X*** 42,48
X  #define	BUY	1
X  #define	NODEAL	2
X  #define	NOSALE	3
X! #define TRADECOST(cost)	((100-cost)/100)	/* twenty percent cost normal*/
X  
X  extern short country;
X  
X
X--- 42,48 -----
X  #define	BUY	1
X  #define	NODEAL	2
X  #define	NOSALE	3
X! #define TRADECOST(cost)	(100-cost)/100	/* twenty percent cost is normal*/
X  
X  extern short country;
X  
X***************
X*** 54,65
X  	"no available armies", "no available navies"};
X  #endif ADMIN
X  #ifdef CONQUER
X! /* Use this when you wish to sell something */
X! char *selllist[NUMPRODUCTS] = { "Sell how many gold talons? ", "Sell how much food? ",
X! 	"Sell how much iron? ", "Sell how many jewels? ", "What X location? ",
X! 	"How many soldiers? ", "How many ships? "};
X! 
X! /* Use this when you wish to place a bid something */
X  char *buylist[NUMPRODUCTS] = { "Bid how much gold? ", "Bid how much food? ",
X  	"Bid how much iron? ", "Bid how many jewels? ", " ",
X  	"Bid what army? ", "Bid how many ships? "};
X
X--- 54,60 -----
X  	"no available armies", "no available navies"};
X  #endif ADMIN
X  #ifdef CONQUER
X! /* Use this when you wish to bid something */
X  char *buylist[NUMPRODUCTS] = { "Bid how much gold? ", "Bid how much food? ",
X  	"Bid how much iron? ", "Bid how many jewels? ", "What X location? ",
X  	"Bid what army? ", "Bid what navy? "};
X***************
X*** 61,68
X  
X  /* Use this when you wish to place a bid something */
X  char *buylist[NUMPRODUCTS] = { "Bid how much gold? ", "Bid how much food? ",
X! 	"Bid how much iron? ", "Bid how many jewels? ", " ",
X! 	"Bid what army? ", "Bid how many ships? "};
X  
X  void
X  trade()
X
X--- 56,63 -----
X  #ifdef CONQUER
X  /* Use this when you wish to bid something */
X  char *buylist[NUMPRODUCTS] = { "Bid how much gold? ", "Bid how much food? ",
X! 	"Bid how much iron? ", "Bid how many jewels? ", "What X location? ",
X! 	"Bid what army? ", "Bid what navy? "};
X  
X  void
X  trade()
X***************
X*** 121,126
X  						holdlong,
X  						commodities[type1[holdint]]);
X  				}
X  				mvprintw(count,40,"%9ld %s",
X  					lvar2[holdint],
X  					commodities[type2[holdint]]);
X
X--- 116,126 -----
X  						holdlong,
X  						commodities[type1[holdint]]);
X  				}
X+ 				if (type2[holdint]==TDLAND) {
X+ 					mvprintw(count,40,"(food=%2ld) %s",
X+ 						lvar2[holdint],
X+ 						commodities[type2[holdint]]);
X+ 				} else {
X  				mvprintw(count,40,"%9ld %s",
X  					lvar2[holdint],
X  					commodities[type2[holdint]]);
X***************
X*** 124,129
X  				mvprintw(count,40,"%9ld %s",
X  					lvar2[holdint],
X  					commodities[type2[holdint]]);
X  				if (count>16) {
X  					standout();
X  					mvaddstr(21,30,"Hit Any Key to Continue");
X
X--- 124,130 -----
X  				mvprintw(count,40,"%9ld %s",
X  					lvar2[holdint],
X  					commodities[type2[holdint]]);
X+ 				}
X  				if (count>16) {
X  					standout();
X  					mvaddstr(21,30,"Hit Any Key to Continue");
X***************
X*** 135,141
X  					mvaddstr(0,27,"COMMODITIES EXCHANGE");
X  					standend();
X  					mvprintw(2,0,"    Nation\t\tItem\t\tMinimum Price");
X! 					count=3;
X  				}
X  			}
X  		}
X
X--- 136,142 -----
X  					mvaddstr(0,27,"COMMODITIES EXCHANGE");
X  					standend();
X  					mvprintw(2,0,"    Nation\t\tItem\t\tMinimum Price");
X! 					count=2;
X  				}
X  			}
X  		}
X***************
X*** 141,146
X  		}
X  		standout();
X  		count++;
X  		if (itemnum==0)	mvaddstr(count++,0,"Nothing to Buy.  Do you wish to (S)ell?");
X  		else mvaddstr(count++,0,"Do you wish to (B)uy, (S)ell, or (U)nsell?");
X  		standend();
X
X--- 142,148 -----
X  		}
X  		standout();
X  		count++;
X+ 		count++;
X  		if (itemnum==0)	mvaddstr(count++,0,"Nothing to Buy.  Do you wish to (S)ell?");
X  		else mvaddstr(count++,0,"Do you wish to (B)uy, (S)ell, or (U)nsell?");
X  		standend();
X***************
X*** 217,223
X  			case TDLAND:
X  				mvaddstr(count++,0,"What Y position? ");
X  				refresh();
X! 				holdlong2 = (long) get_number;
X  				if (checkland(BUY,(int)(holdlong),(int)(holdlong2))==NODEAL) {
X  					buysell=NODEAL;
X  				} else if (tofood(sct[(int)holdlong][(int)holdlong2].vegetation,natn[holdint]) < lvar2[holdint]) {
X
X--- 219,225 -----
X  			case TDLAND:
X  				mvaddstr(count++,0,"What Y position? ");
X  				refresh();
X! 				holdlong2 = (long) get_number();
X  				if (checkland(BUY,(int)(holdlong),(int)(holdlong2))==NODEAL) {
X  					buysell=NODEAL;
X  				} else if (tofood(sct[(int)holdlong][(int)holdlong2].vegetation,natn[holdint]) < lvar2[holdint]) {
X***************
X*** 256,262
X  					tradeerr("Error opening file for trading");
X  					abrt();
X  				}
X! 				setaside(country,type2[holdint],holdlong);
X  				fprintf(tfile, "%d %d %d %d %ld %ld %d\n",BUY, country, holdint, 0, holdlong, holdlong2, 0);
X  				fclose(tfile);
X  			}
X
X--- 258,264 -----
X  					tradeerr("Error opening file for trading");
X  					abrt();
X  				}
X! 				setaside(country,type2[holdint],holdlong,(int)holdlong,FALSE);
X  				fprintf(tfile, "%d %d %d %d %ld %ld %d\n",BUY, country, holdint, 0, holdlong, holdlong2, 0);
X  				fclose(tfile);
X  			}
X***************
X*** 280,286
X  				return;
X  			}
X  
X! 			mvprintw(count++,0,"%s",selllist[holdint]);
X  			refresh();
X  			/* find out how much commodities */
X  			holdlong = (long) get_number();
X
X--- 282,288 -----
X  				return;
X  			}
X  
X! 			mvprintw(count++,0,"%s",buylist[holdint]);
X  			refresh();
X  			/* find out how much commodities */
X  			holdlong = (long) get_number();
X***************
X*** 357,363
X  				}
X  			} else {
X  				/* find out for what value */
X! 				mvprintw(count++,0,"Minimum %s",selllist[holdint2]);
X  				refresh();
X  				holdlong2 = (long) get_number();
X  				if (holdlong2 == 0L) return;
X
X--- 359,366 -----
X  				}
X  			} else {
X  				/* find out for what value */
X! 				mvprintw(count++,0,"Minimum Amount of %s? "
X! 					,commodities[holdint2]);
X  				refresh();
X  				holdlong2 = (long) get_number();
X  				if (holdlong2 == 0L) return;
X***************
X*** 364,370
X  			}
X  
X  			/* make sure what was bid is unusable */
X! 			setaside(country,holdint,holdlong);
X  
X  			/* set up output properly */
X  			if (holdint==TDARMY) {
X
X--- 367,373 -----
X  			}
X  
X  			/* make sure what was bid is unusable */
X! 			setaside(country,holdint,holdlong,(int)holdlong,FALSE);
X  
X  			/* set up output properly */
X  			if (holdint==TDARMY) {
X***************
X*** 416,422
X  			}
X  			fprintf(tfile, "%d %d %d %d %ld %ld %d\n", NOSALE, natn[holdint], holdint, 0, 0L, 0L, 0);
X  			fclose(tfile);
X! 			takeback(natn[holdint],type1[holdint],lvar1[holdint]);
X  			/*redraw the commodities board so removal is seen*/
X  			inloop=FALSE;
X  			done=FALSE;
X
X--- 419,425 -----
X  			}
X  			fprintf(tfile, "%d %d %d %d %ld %ld %d\n", NOSALE, natn[holdint], holdint, 0, 0L, 0L, 0);
X  			fclose(tfile);
X! 			takeback(natn[holdint],type1[holdint],lvar1[holdint],extra[holdint],FALSE);
X  			/*redraw the commodities board so removal is seen*/
X  			inloop=FALSE;
X  			done=FALSE;
X***************
X*** 486,492
X  		&&entered!=WOOD   &&entered!=FOREST
X  		&&entered!=SWAMP  &&entered!=ICE) temp=(-1);
X  	else temp = tofood(entered,country);
X! 	mvprintw((*count)++,0," JUST ENTERED %c so temp is %d", entered,temp);
X  	return(temp);
X  }
X  
X
X--- 489,495 -----
X  		&&entered!=WOOD   &&entered!=FOREST
X  		&&entered!=SWAMP  &&entered!=ICE) temp=(-1);
X  	else temp = tofood(entered,country);
X! 	mvprintw((*count)++,0," JUST ENTERED %c so food value is %d", entered,temp);
X  	return(temp);
X  }
X  
X***************
X*** 533,538
X  	}
X  	return(hold);
X  }
X  
X  /* set aside things that are up for bid */
X  void
X
X--- 536,542 -----
X  	}
X  	return(hold);
X  }
X+ #endif CONQUER
X  
X  /* set aside things that are up for bid */
X  void
X***************
X*** 536,543
X  
X  /* set aside things that are up for bid */
X  void
X! setaside(cntry,item,longval)
X! int cntry,item;
X  long longval;
X  {
X  	switch(item)
X
X--- 540,547 -----
X  
X  /* set aside things that are up for bid */
X  void
X! setaside(cntry,item,longval,extint,isup)
X! int cntry,item,isup,extint;
X  long longval;
X  {
X  	switch(item)
X***************
X*** 543,549
X  	switch(item)
X  	{
X  	case TDGOLD:
X! 		ntn[cntry].tgold -= longval;
X  		break;
X  	case TDFOOD:
X  		ntn[cntry].tfood -= longval;
X
X--- 547,553 -----
X  	switch(item)
X  	{
X  	case TDGOLD:
X! 		if (isup==FALSE) ntn[cntry].tgold -= longval;
X  		break;
X  	case TDFOOD:
X  		ntn[cntry].tfood -= longval;
X***************
X*** 549,555
X  		ntn[cntry].tfood -= longval;
X  		break;
X  	case TDIRON:
X! 		ntn[cntry].tiron -= longval;
X  		break;
X  	case TDJEWL:
X  		ntn[cntry].jewels -= longval;
X
X--- 553,559 -----
X  		ntn[cntry].tfood -= longval;
X  		break;
X  	case TDIRON:
X! 		if (isup==FALSE) ntn[cntry].tiron -= longval;
X  		break;
X  	case TDJEWL:
X  		if (isup==FALSE) ntn[cntry].jewels -= longval;
X***************
X*** 552,558
X  		ntn[cntry].tiron -= longval;
X  		break;
X  	case TDJEWL:
X! 		ntn[cntry].jewels -= longval;
X  		break;
X  	case TDLAND:
X  		break;
X
X--- 556,562 -----
X  		if (isup==FALSE) ntn[cntry].tiron -= longval;
X  		break;
X  	case TDJEWL:
X! 		if (isup==FALSE) ntn[cntry].jewels -= longval;
X  		break;
X  	case TDLAND:
X  		break;
X***************
X*** 557,564
X  	case TDLAND:
X  		break;
X  	case TDARMY:
X! 		ntn[cntry].arm[(int)longval].smove = 0;
X! 		ntn[cntry].arm[(int)longval].stat = TRADED;
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X
X--- 561,568 -----
X  	case TDLAND:
X  		break;
X  	case TDARMY:
X! 		ntn[cntry].arm[extint].smove = 0;
X! 		ntn[cntry].arm[extint].stat = TRADED;
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X***************
X*** 562,569
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X! 		ntn[cntry].nvy[(int)longval].smove = 0;
X! 		ntn[cntry].nvy[(int)longval].armynum = TRADED;
X  		break;
X  	}
X  }
X
X--- 566,573 -----
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X! 		ntn[cntry].nvy[extint].smove = 0;
X! 		ntn[cntry].nvy[extint].armynum = TRADED;
X  		break;
X  	}
X  }
X***************
X*** 570,577
X  
X  /* regain things that are up for bid */
X  void
X! takeback(cntry,item,longval)
X! int cntry,item;
X  long longval;
X  {
X  	switch(item)
X
X--- 574,581 -----
X  
X  /* regain things that are up for bid */
X  void
X! takeback(cntry,item,longval,extint,isup)
X! int cntry,item,isup,extint;
X  long longval;
X  {
X  	switch(item)
X***************
X*** 577,583
X  	switch(item)
X  	{
X  	case TDGOLD:
X! 		ntn[cntry].tgold += longval;
X  		break;
X  	case TDFOOD:
X  		ntn[cntry].tfood += longval;
X
X--- 581,587 -----
X  	switch(item)
X  	{
X  	case TDGOLD:
X! 		if (isup==FALSE) ntn[cntry].tgold += longval;
X  		break;
X  	case TDFOOD:
X  		ntn[cntry].tfood += longval;
X***************
X*** 583,589
X  		ntn[cntry].tfood += longval;
X  		break;
X  	case TDIRON:
X! 		ntn[cntry].tiron += longval;
X  		break;
X  	case TDJEWL:
X  		ntn[cntry].jewels += longval;
X
X--- 587,593 -----
X  		ntn[cntry].tfood += longval;
X  		break;
X  	case TDIRON:
X! 		if (isup==FALSE) ntn[cntry].tiron += longval;
X  		break;
X  	case TDJEWL:
X  		if (isup==FALSE) ntn[cntry].jewels += longval;
X***************
X*** 586,592
X  		ntn[cntry].tiron += longval;
X  		break;
X  	case TDJEWL:
X! 		ntn[cntry].jewels += longval;
X  		break;
X  	case TDLAND:
X  		break;
X
X--- 590,596 -----
X  		if (isup==FALSE) ntn[cntry].tiron += longval;
X  		break;
X  	case TDJEWL:
X! 		if (isup==FALSE) ntn[cntry].jewels += longval;
X  		break;
X  	case TDLAND:
X  		break;
X***************
X*** 591,597
X  	case TDLAND:
X  		break;
X  	case TDARMY:
X! 		ntn[cntry].arm[(int)longval].stat = DEFEND;
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X
X--- 595,601 -----
X  	case TDLAND:
X  		break;
X  	case TDARMY:
X! 		ntn[cntry].arm[extint].stat = DEFEND;
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X***************
X*** 595,601
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X! 		ntn[cntry].nvy[(int)longval].armynum = 0;
X  		break;
X  	}
X  }
X
X--- 599,605 -----
X  		break;
X  	case TDSHIP:
X  		/* use armynum to hold indicator */
X! 		ntn[cntry].nvy[extint].armynum = 0;
X  		break;
X  	}
X  }
X***************
X*** 599,605
X  		break;
X  	}
X  }
X- #endif CONQUER
X  
X  #ifdef ADMIN
X  /* give things that were purchased from cntry1 to cntry2 */
X
X--- 603,608 -----
X  		break;
X  	}
X  }
X  
X  #ifdef ADMIN
X  /* give things that were purchased from cntry1 to cntry2 */
X***************
X*** 615,621
X  	{
X  	case TDGOLD:
X  		returnval = longval;
X- 		ntn[cntry1].tgold -= longval;
X  		ntn[cntry2].tgold += longval * TRADECOST(20);
X  		break;
X  	case TDFOOD:
X
X--- 618,623 -----
X  	{
X  	case TDGOLD:
X  		returnval = longval;
X  		ntn[cntry2].tgold += longval * TRADECOST(20);
X  		break;
X  	case TDFOOD:
X***************
X*** 619,629
X  		ntn[cntry2].tgold += longval * TRADECOST(20);
X  		break;
X  	case TDFOOD:
X! 		if (ntn[cntry1].tfood >= longval) {
X! 			returnval = longval;
X! 			ntn[cntry1].tfood -= longval;
X! 			ntn[cntry2].tfood += longval * TRADECOST(20);
X! 		}
X  		break;
X  	case TDIRON:
X  		if (ntn[cntry1].tiron >= longval) {
X
X--- 621,628 -----
X  		ntn[cntry2].tgold += longval * TRADECOST(20);
X  		break;
X  	case TDFOOD:
X! 		returnval = longval;
X! 		ntn[cntry2].tfood += longval * TRADECOST(20);
X  		break;
X  	case TDIRON:
X  		ntn[cntry2].tiron += longval * TRADECOST(20);
X***************
X*** 626,636
X  		}
X  		break;
X  	case TDIRON:
X! 		if (ntn[cntry1].tiron >= longval) {
X! 			ntn[cntry1].tiron -= longval;
X! 			ntn[cntry2].tiron += longval * TRADECOST(20);
X! 			returnval = longval;
X! 		}
X  		break;
X  	case TDJEWL:
X  		if (ntn[cntry1].jewels >= longval) {
X
X--- 625,632 -----
X  		ntn[cntry2].tfood += longval * TRADECOST(20);
X  		break;
X  	case TDIRON:
X! 		ntn[cntry2].tiron += longval * TRADECOST(20);
X! 		returnval = longval;
X  		break;
X  	case TDJEWL:
X  		ntn[cntry2].jewels += longval * TRADECOST(20);
X***************
X*** 633,643
X  		}
X  		break;
X  	case TDJEWL:
X! 		if (ntn[cntry1].jewels >= longval) {
X! 			ntn[cntry1].jewels -= longval;
X! 			ntn[cntry2].jewels += longval * TRADECOST(20);
X! 			returnval = longval;
X! 		}
X  		break;
X  	case TDLAND:
X  		if (sct[(int)longval][extra].owner==cntry1) {
X
X--- 629,636 -----
X  		returnval = longval;
X  		break;
X  	case TDJEWL:
X! 		ntn[cntry2].jewels += longval * TRADECOST(20);
X! 		returnval = longval;
X  		break;
X  	case TDLAND:
X  		if (sct[(int)longval][extra].owner==cntry1) {
X***************
X*** 754,760
X  	for (count=0;count<2;count++) {
X  		fprintf(fp[count],"%s Message to %s from Conquer Commerce Commision\n",cname[count],cname[count]);
X  		fprintf(fp[count],"%s \n",cname[count]);
X! 		fprintf(fp[count],"%s   Trade transaction between %s and %s completed.",cname[count],cname[0],cname[1]);
X  		if (item1<=TDJEWL)
X  		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[0],lvar1,commodities[item1]);
X  		else if (item1==TDLAND)
X
X--- 747,753 -----
X  	for (count=0;count<2;count++) {
X  		fprintf(fp[count],"%s Message to %s from Conquer Commerce Commision\n",cname[count],cname[count]);
X  		fprintf(fp[count],"%s \n",cname[count]);
X! 		fprintf(fp[count],"%s   Trade transaction between %s and %s completed.\n",cname[count],cname[1],cname[0]);
X  		if (item1<=TDJEWL)
X  		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[1],lvar1,commodities[item1]);
X  		else if (item1==TDLAND)
X***************
X*** 756,762
X  		fprintf(fp[count],"%s \n",cname[count]);
X  		fprintf(fp[count],"%s   Trade transaction between %s and %s completed.",cname[count],cname[0],cname[1]);
X  		if (item1<=TDJEWL)
X! 		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[0],lvar1,commodities[item1]);
X  		else if (item1==TDLAND)
X  		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[0],lvar1,lvar2);
X  		else if (item1==TDARMY)
X
X--- 749,755 -----
X  		fprintf(fp[count],"%s \n",cname[count]);
X  		fprintf(fp[count],"%s   Trade transaction between %s and %s completed.\n",cname[count],cname[1],cname[0]);
X  		if (item1<=TDJEWL)
X! 		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[1],lvar1,commodities[item1]);
X  		else if (item1==TDLAND)
X  		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[1],lvar1,lvar2);
X  		else if (item1==TDARMY)
X***************
X*** 758,764
X  		if (item1<=TDJEWL)
X  		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[0],lvar1,commodities[item1]);
X  		else if (item1==TDLAND)
X! 		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[0],lvar1,lvar2);
X  		else if (item1==TDARMY)
X  		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[0],lvar1);
X  		else if (item1==TDSHIP)
X
X--- 751,757 -----
X  		if (item1<=TDJEWL)
X  		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[1],lvar1,commodities[item1]);
X  		else if (item1==TDLAND)
X! 		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[1],lvar1,lvar2);
X  		else if (item1==TDARMY)
X  		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[1],lvar1);
X  		else if (item1==TDSHIP)
X***************
X*** 760,766
X  		else if (item1==TDLAND)
X  		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[0],lvar1,lvar2);
X  		else if (item1==TDARMY)
X! 		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[0],lvar1);
X  		else if (item1==TDSHIP)
X  		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[0],lvar1);
X  		if (item2<=TDJEWL)
X
X--- 753,759 -----
X  		else if (item1==TDLAND)
X  		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[1],lvar1,lvar2);
X  		else if (item1==TDARMY)
X! 		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[1],lvar1);
X  		else if (item1==TDSHIP)
X  		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[1],lvar1);
X  		if (item2<=TDJEWL)
X***************
X*** 762,768
X  		else if (item1==TDARMY)
X  		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[0],lvar1);
X  		else if (item1==TDSHIP)
X! 		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[0],lvar1);
X  		if (item2<=TDJEWL)
X  		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[1],lvar3,commodities[item2]);
X  		else if (item1==TDLAND)
X
X--- 755,761 -----
X  		else if (item1==TDARMY)
X  		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[1],lvar1);
X  		else if (item1==TDSHIP)
X! 		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[1],lvar1);
X  		if (item2<=TDJEWL)
X  		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[0],lvar3,commodities[item2]);
X  		else if (item2==TDLAND)
X***************
X*** 764,776
X  		else if (item1==TDSHIP)
X  		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[0],lvar1);
X  		if (item2<=TDJEWL)
X! 		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[1],lvar3,commodities[item2]);
X! 		else if (item1==TDLAND)
X! 		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[1],lvar3,lvar4);
X! 		else if (item1==TDARMY)
X! 		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[1],lvar3);
X! 		else if (item1==TDSHIP)
X! 		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[1],lvar3);
X  		fclose(fp[count]);
X  	}
X  }
X
X--- 757,770 -----
X  		else if (item1==TDSHIP)
X  		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[1],lvar1);
X  		if (item2<=TDJEWL)
X! 		fprintf(fp[count],"%s       Nation %s receives %ld %s\n",cname[count],cname[0],lvar3,commodities[item2]);
X! 		else if (item2==TDLAND)
X! 		fprintf(fp[count],"%s       Nation %s receives sector %ld, %ld\n",cname[count],cname[0],lvar3,lvar4);
X! 		else if (item2==TDARMY)
X! 		fprintf(fp[count],"%s       Nation %s receives army #%ld\n",cname[count],cname[0],lvar3);
X! 		else if (item2==TDSHIP)
X! 		fprintf(fp[count],"%s       Nation %s receives navy #%ld\n",cname[count],cname[0],lvar3);
X! 		fprintf(fp[count],"END\n");
X  		fclose(fp[count]);
X  	}
X  }
X***************
X*** 783,790
X  {
X  	int oldcntry=country,returnval=FALSE;
X  	country=cntry;
X! 	if ( ATYPE==A_MERCENARY || ATYPE==A_SEIGE || ATYPE==A_CATAPULT
X! 		|| ATYPE==A_ELEPHANT || ATYPE>=MINMONSTER) returnval=TRUE;
X  	country=oldcntry;
X  	return(returnval);
X  }
X
X--- 777,785 -----
X  {
X  	int oldcntry=country,returnval=FALSE;
X  	country=cntry;
X! 	if ( (ASTAT!=TRADED) && (ATYPE==A_MERCENARY || ATYPE==A_SEIGE
X! 		|| ATYPE==A_CATAPULT || ATYPE==A_ELEPHANT
X! 		|| ATYPE>=MINMONSTER) ) returnval=TRUE;
X  	country=oldcntry;
X  	return(returnval);
X  }
X***************
X*** 806,812
X  }
X  
X  void
X! uptrade()
X  {
X  	FILE *tfile;
X  	int count, itemnum=0, natn[MAXITM];
X
X--- 801,807 -----
X  }
X  
X  void
X! checktrade()
X  {
X  	FILE *tfile;
X  	int count, itemnum=0, natn[MAXITM];
X***************
X*** 811,816
X  	FILE *tfile;
X  	int count, itemnum=0, natn[MAXITM];
X  	int type1[MAXITM], type2[MAXITM], deal[MAXITM], extra[MAXITM];
X  #ifdef ADMIN
X  	extern FILE *fnews;
X  	void trademail();
X
X--- 806,842 -----
X  	FILE *tfile;
X  	int count, itemnum=0, natn[MAXITM];
X  	int type1[MAXITM], type2[MAXITM], deal[MAXITM], extra[MAXITM];
X+ 	long lvar1[MAXITM], lvar2[MAXITM];
X+ 	void takeback();
X+ 	void setaside();
X+ 	/* initialize purchase list */
X+ 	for (count=0; count<MAXITM; count++) {
X+ 		deal[count]=(-1);
X+ 	}
X+ 	/* open trading file */
X+ 	if ((tfile = fopen(tradefile,"r")) == NULL) {
X+ 		/* no commodities - no transactions */
X+ 		return;
X+ 	}
X+ 	/* read in all of the transactions */
X+ 	while(!feof(tfile)) {
X+ 		fscanf(tfile,"%d %d %d %d %ld %ld %d\n",&deal[itemnum],
X+ 			&natn[itemnum],&type1[itemnum],&type2[itemnum],&lvar1[itemnum],&lvar2[itemnum],&extra[itemnum]);
X+ 		if (deal[itemnum]==NOSALE) {
X+ 			if (natn[itemnum]==country)
X+ 			takeback(country,type1[type1[itemnum]],lvar1[type1[itemnum]],extra[type1[itemnum]],TRUE);
X+ 		} else if (deal[itemnum]==SELL) {
X+ 			if (natn[itemnum]==country)
X+ 			setaside(country,type1[itemnum],lvar1[itemnum],extra[itemnum],TRUE);
X+ 			itemnum++;
X+ 		} else if (deal[itemnum]==BUY) {
X+ 			if (natn[itemnum]==country)
X+ 			setaside(country,type2[type1[itemnum]],lvar1[itemnum],(int)lvar1[itemnum],TRUE);
X+ 		}
X+ 	}
X+ 	fclose(tfile);
X+ }
X+ 
X  #ifdef ADMIN
X  void
X  uptrade()
X***************
X*** 812,817
X  	int count, itemnum=0, natn[MAXITM];
X  	int type1[MAXITM], type2[MAXITM], deal[MAXITM], extra[MAXITM];
X  #ifdef ADMIN
X  	extern FILE *fnews;
X  	void trademail();
X  	int whobuy[MAXITM];
X
X--- 838,849 -----
X  }
X  
X  #ifdef ADMIN
X+ void
X+ uptrade()
X+ {
X+ 	FILE *tfile;
X+ 	int count, itemnum=0, natn[MAXITM];
X+ 	int type1[MAXITM], type2[MAXITM], deal[MAXITM], extra[MAXITM];
X  	extern FILE *fnews;
X  	void trademail();
X  	int whobuy[MAXITM];
X***************
X*** 817,823
X  	int whobuy[MAXITM];
X  	long tradeit(), buy1[MAXITM], buy2[MAXITM];
X  	long price[MAXITM], gettval(), longval1, longval2;
X- #endif ADMIN
X  	long lvar1[MAXITM], lvar2[MAXITM];
X  #ifdef CONQUER
X  	void setaside(),takeback();
X
X--- 849,854 -----
X  	int whobuy[MAXITM];
X  	long tradeit(), buy1[MAXITM], buy2[MAXITM];
X  	long price[MAXITM], gettval(), longval1, longval2;
X  	long lvar1[MAXITM], lvar2[MAXITM];
X  	void takeback();
X  
X***************
X*** 819,827
X  	long price[MAXITM], gettval(), longval1, longval2;
X  #endif ADMIN
X  	long lvar1[MAXITM], lvar2[MAXITM];
X! #ifdef CONQUER
X! 	void setaside(),takeback();
X! #endif CONQUER
X  
X  	/* initialize purchase list */
X  	for (count=0; count<MAXITM; count++) {
X
X--- 850,856 -----
X  	long tradeit(), buy1[MAXITM], buy2[MAXITM];
X  	long price[MAXITM], gettval(), longval1, longval2;
X  	long lvar1[MAXITM], lvar2[MAXITM];
X! 	void takeback();
X  
X  	/* initialize purchase list */
X  	for (count=0; count<MAXITM; count++) {
X***************
X*** 826,832
X  	/* initialize purchase list */
X  	for (count=0; count<MAXITM; count++) {
X  		deal[count]=(-1);
X- #ifdef ADMIN
X  		whobuy[count]=(-1);
X  		price[count]=(-1);
X  #endif ADMIN
X
X--- 855,860 -----
X  	/* initialize purchase list */
X  	for (count=0; count<MAXITM; count++) {
X  		deal[count]=(-1);
X  		whobuy[count]=(-1);
X  		price[count]=(-1);
X  	}
X***************
X*** 829,835
X  #ifdef ADMIN
X  		whobuy[count]=(-1);
X  		price[count]=(-1);
X- #endif ADMIN
X  	}
X  	/* open trading file */
X  	if ((tfile = fopen(tradefile,"r")) == NULL) {
X
X--- 857,862 -----
X  		deal[count]=(-1);
X  		whobuy[count]=(-1);
X  		price[count]=(-1);
X  	}
X  	/* open trading file */
X  	if ((tfile = fopen(tradefile,"r")) == NULL) {
X***************
X*** 843,851
X  		if (deal[itemnum]==NOSALE) {
X  			/* remove item from sales list */
X  			deal[type1[itemnum]]=NOSALE;
X- #ifdef CONQUER
X- 			if (natn[itemnum]==country) takeback(country,type1[type1[itemnum]],lvar1[type1[itemnum]]);
X- #endif CONQUER
X  		} else if (deal[itemnum]==SELL) {
X  			itemnum++;
X  #ifdef CONQUER
X
X--- 870,875 -----
X  		if (deal[itemnum]==NOSALE) {
X  			/* remove item from sales list */
X  			deal[type1[itemnum]]=NOSALE;
X  		} else if (deal[itemnum]==SELL) {
X  			itemnum++;
X  		} else if (deal[itemnum]==BUY) {
X***************
X*** 848,856
X  #endif CONQUER
X  		} else if (deal[itemnum]==SELL) {
X  			itemnum++;
X- #ifdef CONQUER
X- 			if (natn[itemnum]==country) setaside(country,type2[itemnum],lvar1[itemnum]);
X- #endif CONQUER
X  		} else if (deal[itemnum]==BUY) {
X  #ifdef ADMIN
X  			if (deal[type1[itemnum]]==SELL) deal[type1[itemnum]]==BUY;
X
X--- 872,877 -----
X  			deal[type1[itemnum]]=NOSALE;
X  		} else if (deal[itemnum]==SELL) {
X  			itemnum++;
X  		} else if (deal[itemnum]==BUY) {
X  			if (deal[type1[itemnum]]==SELL &&
X  			(price[type1[itemnum]] <
X***************
X*** 852,861
X  			if (natn[itemnum]==country) setaside(country,type2[itemnum],lvar1[itemnum]);
X  #endif CONQUER
X  		} else if (deal[itemnum]==BUY) {
X! #ifdef ADMIN
X! 			if (deal[type1[itemnum]]==SELL) deal[type1[itemnum]]==BUY;
X! 			/* check for highest price for item */
X! 			if (price[type1[itemnum]]<gettval(natn[type1[itemnum]],natn[itemnum],type2[type1[itemnum]],lvar1[itemnum],(int)lvar2[itemnum])) {
X  				price[type1[itemnum]]=gettval(natn[type1[itemnum]],natn[itemnum],type2[type1[itemnum]],lvar1[itemnum],(int)lvar2[itemnum]);
X  				buy1[type1[itemnum]]=lvar1[itemnum];
X  				buy2[type1[itemnum]]=lvar2[itemnum];
X
X--- 873,884 -----
X  		} else if (deal[itemnum]==SELL) {
X  			itemnum++;
X  		} else if (deal[itemnum]==BUY) {
X! 			if (deal[type1[itemnum]]==SELL &&
X! 			(price[type1[itemnum]] <
X! 			gettval(natn[type1[itemnum]],natn[itemnum],
X! 			type2[type1[itemnum]],lvar1[itemnum],(int)lvar2[itemnum]))) {
X! 				deal[type1[itemnum]]=BUY;
X! 				/* highest bid so far */
X  				price[type1[itemnum]]=gettval(natn[type1[itemnum]],natn[itemnum],type2[type1[itemnum]],lvar1[itemnum],(int)lvar2[itemnum]);
X  				/* return bid to loser */
X  				takeback(whobuy[type1[itemnum]],
X***************
X*** 857,862
X  			/* check for highest price for item */
X  			if (price[type1[itemnum]]<gettval(natn[type1[itemnum]],natn[itemnum],type2[type1[itemnum]],lvar1[itemnum],(int)lvar2[itemnum])) {
X  				price[type1[itemnum]]=gettval(natn[type1[itemnum]],natn[itemnum],type2[type1[itemnum]],lvar1[itemnum],(int)lvar2[itemnum]);
X  				buy1[type1[itemnum]]=lvar1[itemnum];
X  				buy2[type1[itemnum]]=lvar2[itemnum];
X  				whobuy[type1[itemnum]]=natn[itemnum];
X
X--- 880,890 -----
X  				deal[type1[itemnum]]=BUY;
X  				/* highest bid so far */
X  				price[type1[itemnum]]=gettval(natn[type1[itemnum]],natn[itemnum],type2[type1[itemnum]],lvar1[itemnum],(int)lvar2[itemnum]);
X+ 				/* return bid to loser */
X+ 				takeback(whobuy[type1[itemnum]],
X+ 					type2[type1[itemnum]],
X+ 					buy1[type1[itemnum]],extra[type1[itemnum]],FALSE);
X+ 				/* record details of trade */
X  				buy1[type1[itemnum]]=lvar1[itemnum];
X  				buy2[type1[itemnum]]=lvar2[itemnum];
X  				whobuy[type1[itemnum]]=natn[itemnum];
X***************
X*** 860,865
X  				buy1[type1[itemnum]]=lvar1[itemnum];
X  				buy2[type1[itemnum]]=lvar2[itemnum];
X  				whobuy[type1[itemnum]]=natn[itemnum];
X  			}
X  #endif ADMIN
X  #ifdef CONQUER
X
X--- 888,898 -----
X  				buy1[type1[itemnum]]=lvar1[itemnum];
X  				buy2[type1[itemnum]]=lvar2[itemnum];
X  				whobuy[type1[itemnum]]=natn[itemnum];
X+ 			} else {
X+ 				/* return bid */
X+ 				takeback(whobuy[itemnum],
X+ 					type2[type1[itemnum]],
X+ 					buy1[itemnum],extra[itemnum],FALSE);
X  			}
X  		}
X  	}
X***************
X*** 861,870
X  				buy2[type1[itemnum]]=lvar2[itemnum];
X  				whobuy[type1[itemnum]]=natn[itemnum];
X  			}
X- #endif ADMIN
X- #ifdef CONQUER
X- 			if (natn[itemnum]==country) setaside(country,type2[type1[itemnum]],lvar1[itemnum]);
X- #endif CONQUER
X  		}
X  	}
X  	fclose(tfile);
X
X--- 894,899 -----
X  					type2[type1[itemnum]],
X  					buy1[itemnum],extra[itemnum],FALSE);
X  			}
X  		}
X  	}
X  	unlink(tfile);
X***************
X*** 867,874
X  #endif CONQUER
X  		}
X  	}
X! 	fclose(tfile);
X! #ifdef ADMIN
X  	/* reopen the file for unsold commodities */
X  	if ((tfile=fopen(tradefile,"w")) == NULL) {
X  		/* error on opening file */
X
X--- 896,902 -----
X  			}
X  		}
X  	}
X! 	unlink(tfile);
X  	/* reopen the file for unsold commodities */
X  	if ((tfile=fopen(tradefile,"w")) == NULL) {
X  		/* error on opening file */
X***************
X*** 878,884
X  
X  	/* compute the trading */
X  	for (count=0;count<itemnum;count++) {
X! 		if (deal[count]==SELL)
X  			/* adjust the displayed value */
X  			lvar1[count]=gettval(0,natn[count],type1[count],lvar1[count],extra[count]);
X  			/* keep unsold items up for sale */
X
X--- 906,912 -----
X  
X  	/* compute the trading */
X  	for (count=0;count<itemnum;count++) {
X! 		if (deal[count]==SELL) {
X  			/* adjust the displayed value */
X  			lvar1[count]=gettval(0,natn[count],type1[count],lvar1[count],extra[count]);
X  			/* keep unsold items up for sale */
X***************
X*** 883,889
X  			lvar1[count]=gettval(0,natn[count],type1[count],lvar1[count],extra[count]);
X  			/* keep unsold items up for sale */
X  			if(lvar1[count]>=0) fprintf(tfile,"%d %d %d %d %ld %ld %d\n", deal[count], natn[count],type1[count],type2[count],lvar1[count],lvar2[count],extra[count]);
X! 		else if (deal[count]==BUY) {
X  			/* do the trading */
X  			longval1 = tradeit(natn[count],whobuy[count],type1[count],lvar1[count],extra[count]);
X  			if (longval1!=(-1)) longval2 = tradeit(whobuy[count],natn[count],type2[count],buy1[count],(int)buy2[count]);
X
X--- 911,917 -----
X  			lvar1[count]=gettval(0,natn[count],type1[count],lvar1[count],extra[count]);
X  			/* keep unsold items up for sale */
X  			if(lvar1[count]>=0) fprintf(tfile,"%d %d %d %d %ld %ld %d\n", deal[count], natn[count],type1[count],type2[count],lvar1[count],lvar2[count],extra[count]);
X! 		} else if (deal[count]==BUY) {
X  			/* do the trading */
X  			longval1 = tradeit(natn[count],whobuy[count],type1[count],lvar1[count],extra[count]);
X  			if (longval1!=(-1)) longval2 = tradeit(whobuy[count],natn[count],type2[count],buy1[count],(int)buy2[count]);
X***************
X*** 889,895
X  			if (longval1!=(-1)) longval2 = tradeit(whobuy[count],natn[count],type2[count],buy1[count],(int)buy2[count]);
X  			if (longval1==(-1)) {
X  				/* abort due to seller */
X! 				fprintf(fnews,"2.\tTrade between %s and %s breaks down due to %s.",
X  					ntn[natn[count]].name,ntn[whobuy[count]].name,tradefail[type1[count]]);
X  			} else if (longval2==(-1)) {
X  				/* abort due to buyer */
X
X--- 917,923 -----
X  			if (longval1!=(-1)) longval2 = tradeit(whobuy[count],natn[count],type2[count],buy1[count],(int)buy2[count]);
X  			if (longval1==(-1)) {
X  				/* abort due to seller */
X! 				fprintf(fnews,"2.\tTrade between %s and %s breaks down due to %s.\n",
X  					ntn[natn[count]].name,ntn[whobuy[count]].name,tradefail[type1[count]]);
X  			} else if (longval2==(-1)) {
X  				/* abort due to buyer */
X***************
X*** 894,900
X  			} else if (longval2==(-1)) {
X  				/* abort due to buyer */
X  				tradeit(whobuy[count],natn[count],type1[count],longval1,extra[count]);
X! 				fprintf(fnews,"2.\tTrade between %s and %s breaks down due to %s.",
X  					ntn[whobuy[count]].name,ntn[natn[count]].name,tradefail[type2[count]]);
X  				/* place it on the list for next turn */
X  				/* adjust the displayed value */
X
X--- 922,928 -----
X  			} else if (longval2==(-1)) {
X  				/* abort due to buyer */
X  				tradeit(whobuy[count],natn[count],type1[count],longval1,extra[count]);
X! 				fprintf(fnews,"2.\tTrade between %s and %s breaks down due to %s.\n",
X  					ntn[whobuy[count]].name,ntn[natn[count]].name,tradefail[type2[count]]);
X  				/* place it on the list for next turn */
X  				/* adjust the displayed value */
X***************
X*** 902,908
X  				if(lvar1[count]>=0) fprintf(tfile,"%d %d %d %d %ld %ld %d\n", SELL, natn[count],type1[count],type2[count],lvar1[count],lvar2[count],extra[count]);
X  			} else {
X  				/* trade completed send mail */
X! 				fprintf(fnews,"2.\tNation %s sells %s to %s for %s"
X  					,ntn[natn[count]].name,commodities[type1[count]],ntn[whobuy[count]].name,commodities[type2[count]]);
X  				trademail(natn[count],whobuy[count],type1[count],
X  					type2[count],longval1,(long)extra[count],
X
X--- 930,936 -----
X  				if(lvar1[count]>=0) fprintf(tfile,"%d %d %d %d %ld %ld %d\n", SELL, natn[count],type1[count],type2[count],lvar1[count],lvar2[count],extra[count]);
X  			} else {
X  				/* trade completed send mail */
X! 				fprintf(fnews,"2.\tNation %s sells %s to %s for %s\n"
X  					,ntn[natn[count]].name,commodities[type1[count]],ntn[whobuy[count]].name,commodities[type2[count]]);
X  				trademail(natn[count],whobuy[count],type1[count],
X  					type2[count],longval1,(long)extra[count],
X***************
X*** 911,916
X  		}
X  	}
X  	fclose(tfile);
X- #endif ADMIN
X  }
X  #endif TRADE
X
X--- 939,944 -----
X  		}
X  	}
X  	fclose(tfile);
X  }
X  #endif ADMIN
X  #endif TRADE
X***************
X*** 913,916
X  	fclose(tfile);
X  #endif ADMIN
X  }
X  #endif TRADE
X
X--- 940,945 -----
X  	}
X  	fclose(tfile);
X  }
X+ #endif ADMIN
X  #endif TRADE
X  
X***************
X*** 914,916
X  #endif ADMIN
X  }
X  #endif TRADE
X
X--- 942,945 -----
X  }
X  #endif ADMIN
X  #endif TRADE
X+ 
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	4
X
X--- 1,1 -----
X! #define PATCHLEVEL	5
X*** oMakefile	Thu Jul 28 09:10:48 1988
X--- Makefile	Thu Jul 28 09:15:57 1988
X***************
X*** 24,30
X  #	if they do not use the -d option.
X  DEFAULT = /c28/smile/game/default
X  
X! #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
X  #	The following CFLAGS should be used if you wish to debug the game
X  CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
X  
X
X--- 24,31 -----
X  #	if they do not use the -d option.
X  DEFAULT = /c28/smile/game/default
X  
X! #	The following CFLAGS should be set by a normal user
X! CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
X  #	The following CFLAGS should be used if you wish to debug the game
X  #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
X  
X***************
X*** 26,32
X  
X  #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
X  #	The following CFLAGS should be used if you wish to debug the game
X! CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
X  
X  #	this is the name of the user executable
X  #	the user executable contains commands for the games players
X
X--- 27,33 -----
X  #	The following CFLAGS should be set by a normal user
X  CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -O
X  #	The following CFLAGS should be used if you wish to debug the game
X! #CFLAGS  = -DDEFAULTDIR=\"$(DEFAULT)\" -DDEBUG -g
X  
X  #	this is the name of the user executable
X  #	the user executable contains commands for the games players
X***************
X*** 211,217
X  	$(CC) $(CFLAGS) -DCONQUER -c forms.c
X  commands.o:	data.h header.h commands.c
X  	$(CC) $(CFLAGS) -DCONQUER -c commands.c
X! trade.o:	data.h header.h trade.h trade.c
X  	$(CC) $(CFLAGS) -DCONQUER -c trade.c
X  tradeA.o:	data.h header.h trade.h trade.c
X  	$(CC) $(CFLAGS) -DADMIN -c trade.c
X
X--- 212,218 -----
X  	$(CC) $(CFLAGS) -DCONQUER -c forms.c
X  commands.o:	data.h header.h commands.c
X  	$(CC) $(CFLAGS) -DCONQUER -c commands.c
X! trade.o:	data.h header.h trade.c
X  	$(CC) $(CFLAGS) -DCONQUER -c trade.c
X  tradeA.o:	data.h header.h trade.c
X  	$(CC) $(CFLAGS) -DADMIN -c trade.c
X***************
X*** 213,218
X  	$(CC) $(CFLAGS) -DCONQUER -c commands.c
X  trade.o:	data.h header.h trade.h trade.c
X  	$(CC) $(CFLAGS) -DCONQUER -c trade.c
X! tradeA.o:	data.h header.h trade.h trade.c
X  	$(CC) $(CFLAGS) -DADMIN -c trade.c
X  	mv trade.o tradeA.o
X
X--- 214,219 -----
X  	$(CC) $(CFLAGS) -DCONQUER -c commands.c
X  trade.o:	data.h header.h trade.c
X  	$(CC) $(CFLAGS) -DCONQUER -c trade.c
X! tradeA.o:	data.h header.h trade.c
X  	$(CC) $(CFLAGS) -DADMIN -c trade.c
X  	mv trade.o tradeA.o
X
X
END_OF_FILE
if test 48426 -ne `wc -c <'patches05'`; then
    echo shar: \"'patches05'\" unpacked with wrong size!
fi
# end of 'patches05'
fi
echo shar: End of shell archive.
exit 0