billr@saab.CNA.TEK.COM (Bill Randle) (07/06/89)
Submitted-by: adb@bu-it.bu.edu (Adam Bryant)
Posting-number: Volume 6, Issue 97
Archive-name: conquer4/Patch1
Patch-To: conquer4: Volume 6, Issue 83-96
[Note that one report on comp.sources.games.bugs states that
this patch introduces a new bug (see article
<948@auvax.AthabascaU.CA>). I'm sure Adam will have an official
fix for this in the next official patch. -br]
Okay... here is the first patch. Look in notes.v4 for
a list of what it fixes. Please apply it to the original
distribution source. [For those who gave me addresses: I
am sending a test message today.... let me know if you
do not receive it by monday.]
adam
Adam Bryant || ARPANET: adb@bu-it.bu.edu
40 Chester Street Apt. 9 || BITNET: adb@buenga
Allston, MA 02134 || UUCP: ..!harvard!bu-cs!bucsf!adb
(617) 353-9249 || CSNET: adb%bucsf@bu-it
----------
#! /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: patches01
# Wrapped by billr@saab on Wed Jul 5 14:50:47 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches01' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'patches01'\"
else
echo shar: Extracting \"'patches01'\" \(45250 characters\)
sed "s/^X//" >'patches01' <<'END_OF_FILE'
X*** opatchlevel.h
X--- patchlevel.h
X**************
X*** 1
X! #define PATCHLEVEL 0
X--- 1 -----
X! #define PATCHLEVEL 1
X*** onotes.v4
X--- notes.v4
X**************
X*** 1,7
X ------------------------------------------------------------------------------
X | THIS FILE CONTAINS RELEASE NOTES FOR CONQUER V4.0 |
X! | It is broken into 3 sections. Section 1 reflects changes from v3.5 to v4. |
X! | Section 2 reflects bugs in v4.0. Section 3 reflects. Future ideas. |
X ------------------------------------------------------------------------------
X
X -------------------------------------------------------------------------
X--- 1,7 -----
X ------------------------------------------------------------------------------
X | THIS FILE CONTAINS RELEASE NOTES FOR CONQUER V4.0 |
X! | It is broken into 3 sections. Section 3 reflects changes from v3.5 to v4. |
X! | Section 1 reflects bugs in v4.0. Section 2 reflects. Future ideas. |
X ------------------------------------------------------------------------------
X -------------------------------------------------------------------------
X | == Bugs Fixed From Conquer Version 4.0 ============================== |
X**************
X*** 3,8
X | It is broken into 3 sections. Section 1 reflects changes from v3.5 to v4. |
X | Section 2 reflects bugs in v4.0. Section 3 reflects. Future ideas. |
X ------------------------------------------------------------------------------
X
X -------------------------------------------------------------------------
X | 1.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V4 |
X--- 3,23 -----
X | It is broken into 3 sections. Section 3 reflects changes from v3.5 to v4. |
X | Section 1 reflects bugs in v4.0. Section 2 reflects. Future ideas. |
X ------------------------------------------------------------------------------
X+ -------------------------------------------------------------------------
X+ | == Bugs Fixed From Conquer Version 4.0 ============================== |
X+ -------------------------------------------------------------------------
X+ 1. increased newstring[] array from 40 to 100 in makeworl.c.
X+ 2. corrected a mispelling of irrigation.
X+ 3. line 830 of makeworl.c, added a y=(rand()%20); statement.
X+ 4. corrected some bugs in newlogin() routine. Fixed orc repro buying.
X+ 5. made the -d flag be a subdirectory of DEFAULTDIR if not beginning
X+ with a '/'.
X+ 6. fixed overruns of NTOTAL throughout the game.
X+ 7. new function to decrease size of a test statement in extcmds.c.
X+ 8. changed newlogin routine for detection of available countries.
X+ 9. merged do_lizard() and updlizard(). [used name do_lizard()].
X+ 10. fixed bug with getchar querys in makeworl.c.
X+ 11. fixed bug with y < MAPX mistype in randeven.c.
X
X -------------------------------------------------------------------------
X | 1.0 POSSIBLE SHORT-TERM ENHANCEMENTS/FIXES FOR CONQUER V4 |
X*** oMakefile
X--- Makefile
X*** oREADME
X--- README
X*** oheader.h
X--- header.h
X*** odata.h
X--- data.h
X**************
X*** 179,188
X
X struct s_sector
X {
X! char designation; /* designation of sector */
X! char altitude; /* sector altitude */
X! char vegetation; /* sector vegetation */
X! char owner; /* nation id of owner */
X long people; /* civilians in sector */
X short i_people; /* initial civilians in sector */
X unsigned char jewels; /* jewel production ability */
X--- 179,188 -----
X
X struct s_sector
X {
X! unsigned char designation; /* designation of sector */
X! unsigned char altitude; /* sector altitude */
X! unsigned char vegetation; /* sector vegetation */
X! unsigned char owner; /* nation id of owner */
X long people; /* civilians in sector */
X short i_people; /* initial civilians in sector */
X unsigned char jewels; /* jewel production ability */
X**************
X*** 200,208
X unsigned short warships;
X unsigned short merchant;
X unsigned short galleys;
X! char xloc;
X! char yloc;
X! char smove; /* movement ability of ship */
X unsigned char crew; /* crew on ship */
X unsigned char people; /* people carried */
X unsigned char commodity; /* future commodities */
X--- 200,208 -----
X unsigned short warships;
X unsigned short merchant;
X unsigned short galleys;
X! unsigned char xloc;
X! unsigned char yloc;
X! unsigned char smove; /* movement ability of ship */
X unsigned char crew; /* crew on ship */
X unsigned char people; /* people carried */
X unsigned char commodity; /* future commodities */
X**************
X*** 206,212
X unsigned char crew; /* crew on ship */
X unsigned char people; /* people carried */
X unsigned char commodity; /* future commodities */
X! char armynum; /* army carried */
X };
X
X
X--- 206,212 -----
X unsigned char crew; /* crew on ship */
X unsigned char people; /* people carried */
X unsigned char commodity; /* future commodities */
X! unsigned char armynum; /* army carried */
X };
X
X
X**************
X*** 342,350
X struct army
X {
X unsigned char unittyp;
X! char xloc;
X! char yloc;
X! char smove;
X long sold;
X char stat;
X };
X--- 342,350 -----
X struct army
X {
X unsigned char unittyp;
X! unsigned char xloc;
X! unsigned char yloc;
X! unsigned char smove;
X long sold;
X unsigned char stat;
X };
X**************
X*** 346,352
X char yloc;
X char smove;
X long sold;
X! char stat;
X };
X
X struct s_nation /* player nation stats */
X--- 346,352 -----
X unsigned char yloc;
X unsigned char smove;
X long sold;
X! unsigned char stat;
X };
X
X struct s_nation /* player nation stats */
X**************
X*** 357,366
X char race; /* national race (integer--see header.h)*/
X char location; /* location variable (gfr) */
X char mark; /* unique mark for nation */
X! char capx; /* Capitol x coordinate */
X! char capy; /* Capitol y coordinate */
X! char active; /* nation type and strategy */
X! char maxmove; /* maximum movement of soldiers */
X char repro; /* reproduction rate of nation */
X long score; /* score */
X long tgold; /* gold in treasury */
X--- 357,366 -----
X char race; /* national race (integer--see header.h)*/
X char location; /* location variable (gfr) */
X char mark; /* unique mark for nation */
X! unsigned char capx; /* Capitol x coordinate */
X! unsigned char capy; /* Capitol y coordinate */
X! unsigned char active; /* nation type and strategy */
X! unsigned char maxmove;/* maximum movement of soldiers */
X char repro; /* reproduction rate of nation */
X long score; /* score */
X long tgold; /* gold in treasury */
X**************
X*** 384,400
X unsigned char tax_rate; /* taxrate populace */
X unsigned char prestige; /* nations prestige */
X unsigned char popularity; /* governments popularity */
X! unsigned char power; /* nation power */
X! unsigned char communications; /* leader communication */
X! unsigned char wealth; /* per capita income */
X! unsigned char eatrate; /* food eaten / 10 people*/
X! unsigned char spoilrate; /* food spoilage rate */
X! unsigned char knowledge; /* general knowledge */
X! unsigned char farm_ability; /* farming ability */
X! unsigned char mine_ability; /* mine ability */
X! unsigned char poverty; /* % poor people */
X! unsigned char terror; /* peoples terror of you*/
X! unsigned char reputation; /* reputation of nation */
X };
X #define P_NTNCOM ((((float) curntn->communications)/ 50.0 ))
X #define P_EATRATE ((((float) curntn->eatrate) / 25.0 ))
X--- 384,400 -----
X unsigned char tax_rate; /* taxrate populace */
X unsigned char prestige; /* nations prestige */
X unsigned char popularity; /* governments popularity */
X! unsigned char power; /* nation power */
X! unsigned char communications; /* leader communication */
X! unsigned char wealth; /* per capita income */
X! unsigned char eatrate; /* food eaten / 10 people*/
X! unsigned char spoilrate; /* food spoilage rate */
X! unsigned char knowledge; /* general knowledge */
X! unsigned char farm_ability; /* farming ability */
X! unsigned char mine_ability; /* mine ability */
X! unsigned char poverty; /* % poor people */
X! unsigned char terror; /* peoples terror of you*/
X! unsigned char reputation; /* reputation of nation */
X };
X #define P_NTNCOM ((((float) curntn->communications)/ 50.0 ))
X #define P_EATRATE ((((float) curntn->eatrate) / 25.0 ))
X**************
X*** 623,629
X extern void randomevent(), wdisaster(), weather(), deplete();
X extern void verify_ntn(), verify_sct(), verifydata(), prep();
X extern void destroy(), updmove(), spreadsheet(), mailopen(), mailclose();
X! extern void updexecs(), updlizards(), updcapture(), updsectors();
X extern void updmil(), updcomodities(), updleader();
X extern void nationrun(), n_atpeace(), n_trespass(), n_people();
X extern void n_toofar(), n_unowned(), pceattr(), checkout();
X--- 623,629 -----
X extern void randomevent(), wdisaster(), weather(), deplete();
X extern void verify_ntn(), verify_sct(), verifydata(), prep();
X extern void destroy(), updmove(), spreadsheet(), mailopen(), mailclose();
X! extern void updexecs(), updcapture(), updsectors();
X extern void updmil(), updcomodities(), updleader();
X extern void nationrun(), n_atpeace(), n_trespass(), n_people();
X extern void n_toofar(), n_unowned(), pceattr(), checkout();
X**************
X*** 935,941
X #define GODJEWL 3000L /* " */
X #define GODPRICE 25000L
X
X! #ifdef 0
X /* THE FOLLOWING DEFINES ARE NOT IMPLEMENTED YET */
X /* THEY DEFINE THE ATTRIBUTES OF A (TO BE IMPLEMENTED) REGION */
X
X--- 935,941 -----
X #define GODJEWL 3000L /* " */
X #define GODPRICE 25000L
X
X! #ifdef XYZ
X /* THE FOLLOWING DEFINES ARE NOT IMPLEMENTED YET */
X /* THEY DEFINE THE ATTRIBUTES OF A (TO BE IMPLEMENTED) REGION */
X
X*** oadmin.c
X--- admin.c
X**************
X*** 90,96
X strcpy(scenario, optarg);
X break;
X case 'd':
X! strcpy(defaultdir, optarg);
X break;
X case '?': /* print out command line arguments */
X printf("Command line format: %s [-maxp -dDIR -rSCENARIO]\n",argv[0]);
X--- 90,100 -----
X strcpy(scenario, optarg);
X break;
X case 'd':
X! if(optarg[0]!='/') {
X! sprintf(defaultdir, "%s/%s", DEFAULTDIR, optarg);
X! } else {
X! strcpy(defaultdir, optarg);
X! }
X break;
X case '?': /* print out command line arguments */
X printf("Command line format: %s [-maxp -dDIR -rSCENARIO]\n",argv[0]);
X**************
X*** 122,128
X exit(FAIL);
X }
X if((mflag)||(rflag)) {
X- makeworld(rflag);
X sprintf(string,"%sup",isonfile);
X unlink(string);
X exit(SUCCESS);
X--- 126,131 -----
X exit(FAIL);
X }
X if((mflag)||(rflag)) {
X sprintf(string,"%sup",isonfile);
X unlink(string);
X makeworld(rflag);
X**************
X*** 125,130
X makeworld(rflag);
X sprintf(string,"%sup",isonfile);
X unlink(string);
X exit(SUCCESS);
X }
X
X--- 128,134 -----
X if((mflag)||(rflag)) {
X sprintf(string,"%sup",isonfile);
X unlink(string);
X+ makeworld(rflag);
X exit(SUCCESS);
X }
X
X**************
X*** 162,168
X /* prevent more than one addition */
X sprintf(string,"%sadd",isonfile);
X if(check_lock(string,TRUE)==TRUE) {
X! printf("Some else is adding\n");
X printf("Please try again later.\n");
X exit(FAIL);
X }
X--- 166,172 -----
X /* prevent more than one addition */
X sprintf(string,"%sadd",isonfile);
X if(check_lock(string,TRUE)==TRUE) {
X! printf("Someone else is adding\n");
X printf("Please try again later.\n");
X exit(FAIL);
X }
X*** oextcmds.c
X--- extcmds.c
X**************
X*** 84,89
X refresh();
X }
X
X void
X combinearmies(armynum,army2)
X int armynum, army2;
X--- 84,114 -----
X refresh();
X }
X
X+ /* returns TRUE if uncombinable FALSE if combinable */
X+ int
X+ nocomb_stat(astat)
X+ unsigned char astat;
X+ {
X+ int hold;
X+
X+ switch(astat) {
X+ #ifdef TRADE
X+ case TRADED:
X+ #endif TRADE
X+ case FLIGHT:
X+ case MAGATT:
X+ case MAGDEF:
X+ case SCOUT:
X+ case ONBOARD:
X+ hold = TRUE;
X+ break;
X+ default:
X+ hold = FALSE;
X+ break;
X+ }
X+ return(hold);
X+ }
X+
X void
X combinearmies(armynum,army2)
X int armynum, army2;
X**************
X*** 88,93
X combinearmies(armynum,army2)
X int armynum, army2;
X {
X if (armynum < 0 || armynum >= MAXARM ||
X army2 < 0 || army2 >= MAXARM ||
X armynum == army2 ||
X--- 113,120 -----
X combinearmies(armynum,army2)
X int armynum, army2;
X {
X+ int nocomb_stat();
X+
X if (armynum < 0 || armynum >= MAXARM ||
X army2 < 0 || army2 >= MAXARM ||
X armynum == army2 ||
X**************
X*** 91,110
X if (armynum < 0 || armynum >= MAXARM ||
X army2 < 0 || army2 >= MAXARM ||
X armynum == army2 ||
X! #ifdef TRADE
X! P_ASTAT == TRADED ||
X! curntn->arm[army2].stat == TRADED ||
X! #endif TRADE
X! P_ASTAT == FLIGHT ||
X! curntn->arm[army2].stat == FLIGHT ||
X! P_ASTAT == MAGATT ||
X! curntn->arm[army2].stat == MAGATT ||
X! P_ASTAT == MAGDEF ||
X! curntn->arm[army2].stat == MAGDEF ||
X! P_ASTAT == SCOUT ||
X! curntn->arm[army2].stat == SCOUT ||
X! P_ASTAT == ONBOARD ||
X! curntn->arm[army2].stat == ONBOARD ||
X curntn->arm[army2].stat == SIEGE || /* may not jump out */
X curntn->arm[army2].stat == SORTIE || /* of these statuses */
X P_ATYPE >= MINLEADER ||
X--- 118,125 -----
X if (armynum < 0 || armynum >= MAXARM ||
X army2 < 0 || army2 >= MAXARM ||
X armynum == army2 ||
X! (nocomb_stat(P_ASTAT) == TRUE) ||
X! (nocomb_stat(curntn->arm[army2].stat) == TRUE) ||
X curntn->arm[army2].stat == SIEGE || /* may not jump out */
X curntn->arm[army2].stat == SORTIE || /* of these statuses */
X P_ATYPE >= MINLEADER ||
X**************
X*** 221,227
X }
X P_ASTAT = new_stat;
X AADJSTAT;
X! if( P_AMOVE>0 ) P_AMOVE--;
X AADJMOV;
X }
X
X--- 236,242 -----
X }
X P_ASTAT = new_stat;
X AADJSTAT;
X! if( P_AMOVE != 0 ) P_AMOVE--;
X AADJMOV;
X }
X
X*** omakeworl.c
X--- makeworl.c
X**************
X*** 45,51
X int rflag; /* TRUE if you wish to read in a map from mapfiles */
X {
X char passwd[PASSLTH+1],*getpass();
X! char newstring[40];
X FILE *fopen();
X
X /*abort if datafile currently exists*/
X--- 45,51 -----
X int rflag; /* TRUE if you wish to read in a map from mapfiles */
X {
X char passwd[PASSLTH+1],*getpass();
X! char newstring[100];
X FILE *fopen();
X
X /*abort if datafile currently exists*/
X**************
X*** 711,717
X short npirates=0,nbarbarians=0,nnomads=0,nlizards=0;
X
X FILE *fp, *fopen();
X- int done=FALSE;
X char line[80],allign;
X char fname[80];
X
X--- 711,716 -----
X short npirates=0,nbarbarians=0,nnomads=0,nlizards=0;
X
X FILE *fp, *fopen();
X char line[80],allign;
X char fname[80];
X
X**************
X*** 739,746
X curntn->mark='-';
X }
X
X! for( country=1; country<NTOTAL; country++ ) {
X! for(i=country+1;i<NTOTAL;i++) {
X ntn[country].dstatus[i]=UNMET;
X ntn[i].dstatus[country]=UNMET;
X }
X--- 738,745 -----
X curntn->mark='-';
X }
X
X! for( country=0; country<NTOTAL; country++ ) {
X! for(i=country;i<NTOTAL;i++) {
X ntn[country].dstatus[i]=UNMET;
X ntn[i].dstatus[country]=UNMET;
X }
X**************
X*** 828,833
X if((rand()%2==0)&&(curntn->active!=NPC_LIZARD)){
X if(rand()%2==0) {
X x=(rand()%20);
X } else {
X x=(MAPX-(rand()%20)-1);
X y=(MAPY-(rand()%20)-1);
X--- 827,833 -----
X if((rand()%2==0)&&(curntn->active!=NPC_LIZARD)){
X if(rand()%2==0) {
X x=(rand()%20);
X+ y=(rand()%20);
X } else {
X x=(MAPX-(rand()%20)-1);
X y=(MAPY-(rand()%20)-1);
X**************
X*** 949,955
X if( ntn[country].active != NPC_BARBARIAN ) continue;
X curntn = &ntn[country];
X armynum=barbarmy;
X! if( country!=NTOTAL ) while(armynum<MAXARM) {
X x = rand()%MAPX;
X y = rand()%MAPY;
X if (is_habitable(x,y)&&sct[x][y].owner==0) {
X--- 949,955 -----
X if( ntn[country].active != NPC_BARBARIAN ) continue;
X curntn = &ntn[country];
X armynum=barbarmy;
X! while(armynum<MAXARM) {
X x = rand()%MAPX;
X y = rand()%MAPY;
X if (is_habitable(x,y)&&sct[x][y].owner==0) {
X**************
X*** 979,986
X }
X
X #ifdef NPC
X! printf("\nDo you want NPC nations in this campaign?");
X! if( getchar()!='y' ) return;
X if((fp=fopen(npcsfile,"r"))==NULL) {
X printf("error on read of %s file\n",npcsfile);
X printf("Do you wish to use default NPC nations file (y or n)?");
X--- 979,987 -----
X }
X
X #ifdef NPC
X! printf("\nDo you want NPC nations in this campaign? (y or n)");
X! while( ((i=getchar()) != 'y')&&(i != 'n') ) ;
X! if( i!='y' ) return;
X if((fp=fopen(npcsfile,"r"))==NULL) {
X printf("error on read of %s file\n",npcsfile);
X printf("Do you wish to use default NPC nations file (y or n)?");
X**************
X*** 984,995
X if((fp=fopen(npcsfile,"r"))==NULL) {
X printf("error on read of %s file\n",npcsfile);
X printf("Do you wish to use default NPC nations file (y or n)?");
X! if(getchar()=='y'){
X! sprintf(line,"%s/%s",DEFAULTDIR,npcsfile);
X! if ((fp=fopen(line,"r"))==NULL) {
X! printf("\nsorry; error on read of %s file\n",line);
X! return;
X! } else printf("\nOK; default nations used\n");
X } else {
X printf("\nOK; no NPC nations used\n");
X return;
X--- 985,997 -----
X if((fp=fopen(npcsfile,"r"))==NULL) {
X printf("error on read of %s file\n",npcsfile);
X printf("Do you wish to use default NPC nations file (y or n)?");
X! while( ((i=getchar()) != 'y')&&(i != 'n') ) ;
X! if( i=='y'){
X! sprintf(line,"%s/%s",DEFAULTDIR,npcsfile);
X! if ((fp=fopen(line,"r"))==NULL) {
X! printf("\nsorry; error on read of %s file\n",line);
X! return;
X! } else printf("\nOK; default nations used\n");
X } else {
X printf("\nOK; no NPC nations used\n");
X return;
X**************
X*** 1072,1078
X curntn->tfood= curntn->tciv * 3;
X curntn->metals=10000L;
X curntn->jewels=10000L;
X! cnum++;
X place(xloc,yloc);
X att_setup(country); /* nation attributes */
X }
X--- 1074,1080 -----
X curntn->tfood= curntn->tciv * 3;
X curntn->metals=10000L;
X curntn->jewels=10000L;
X! if (cnum < NTOTAL) cnum++;
X place(xloc,yloc);
X att_setup(country); /* nation attributes */
X }
X*** osort.c
X--- sort.c
X**************
X*** 25,32
X * as it comes in.
X *
X * Initial Revision: (adb@bucsf.bu.edu)
X! * Tuesday March 21th, 1989 - Began the program at 23:26 EST
X! * Wednesday March 22nd, 1989 - Finished the initial version 11:29 EST
X */
X
X #include <stdio.h>
X--- 25,32 -----
X * as it comes in.
X *
X * Initial Revision: (adb@bucsf.bu.edu)
X! * Tuesday March 21th, 1989 - Began the program at 23:26 EST
X! * Wednesday March 22nd, 1989 - Finished the initial version 11:29 EST
X */
X
X #include <stdio.h>
X**************
X*** 30,36
X */
X
X #include <stdio.h>
X- #include "header.h"
X #ifndef HPUX
X #include <sysexits.h>
X #endif HPUX
X--- 30,35 -----
X */
X
X #include <stdio.h>
X #ifndef HPUX
X #include <sysexits.h>
X #endif HPUX
X**************
X*** 181,187
X
X }
X
X! /* ==== end of main processing loop ==== */
X
X /* close input file if not stdin */
X if (infile!=stdin) {
X--- 180,186 -----
X
X }
X
X! /* ==== end of main processing loop ==== */
X
X /* close input file if not stdin */
X if (infile!=stdin) {
X**************
X*** 317,320
X temp->next = nptr;
X return(temp);
X }
X-
X--- 316,318 -----
X temp->next = nptr;
X return(temp);
X }
X*** orandeven.c
X--- randeven.c
X**************
X*** 70,76
X findnew()
X {
X int newntn=0,nationis;
X! for ( nationis=NTOTAL; nationis >= 1; nationis--)
X if(ntn[nationis].active == INACTIVE) newntn=nationis;
X if (newntn == 0) return (0);
X strcpy(ntn[newntn].leader,"rebel");
X--- 70,76 -----
X findnew()
X {
X int newntn=0,nationis;
X! for ( nationis=NTOTAL-1; nationis >= 1; nationis--)
X if(ntn[nationis].active == INACTIVE) newntn=nationis;
X if (newntn == 0) return (0);
X strcpy(ntn[newntn].leader,"rebel");
X**************
X*** 1089,1095
X *rand_sector()
X {
X int count=0;
X! for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++)
X if(sct[xpos][ypos].owner == country) count++;
X count = rand()%count;
X for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++){
X--- 1089,1095 -----
X *rand_sector()
X {
X int count=0;
X! for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++)
X if(sct[xpos][ypos].owner == country) count++;
X count = rand()%count;
X for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++){
X**************
X*** 1092,1098
X for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++)
X if(sct[xpos][ypos].owner == country) count++;
X count = rand()%count;
X! for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPX;ypos++){
X if(sct[xpos][ypos].owner == country) count--;
X if(count==0) return(&sct[xpos][ypos]);
X }
X--- 1092,1098 -----
X for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++)
X if(sct[xpos][ypos].owner == country) count++;
X count = rand()%count;
X! for(xpos=0;xpos<MAPX;xpos++) for(ypos=0;ypos<MAPY;ypos++){
X if(sct[xpos][ypos].owner == country) count--;
X if(count==0) return(&sct[xpos][ypos]);
X }
X**************
X*** 1096,1101
X if(sct[xpos][ypos].owner == country) count--;
X if(count==0) return(&sct[xpos][ypos]);
X }
X abrt();
X return(NULL); /* stop lint from complaining */
X }
X--- 1096,1102 -----
X if(sct[xpos][ypos].owner == country) count--;
X if(count==0) return(&sct[xpos][ypos]);
X }
X+ fprintf(stderr,"could find no location for country %d\n",country);
X abrt();
X return(NULL); /* stop lint from complaining */
X }
X*** ocexecute.c
X--- cexecute.c
X**************
X*** 210,216
X /* if not own it, and if people there, problem */
X if((sct[x][y].owner!=country)
X &&( country!=0)
X! &&( sct[x][y].owner>0 )
X &&( sct[x][y].people>0 )
X &&( magic(country,SLAVER)==FALSE )
X &&( ntn[sct[x][y].owner].race!=curntn->race)){
X--- 210,216 -----
X /* if not own it, and if people there, problem */
X if((sct[x][y].owner!=country)
X &&( country!=0)
X! &&( sct[x][y].owner!=0 )
X &&( sct[x][y].people>0 )
X &&( magic(country,SLAVER)==FALSE )
X &&( ntn[sct[x][y].owner].race != curntn->race)){
X**************
X*** 213,219
X &&( sct[x][y].owner>0 )
X &&( sct[x][y].people>0 )
X &&( magic(country,SLAVER)==FALSE )
X! &&( ntn[sct[x][y].owner].race!=curntn->race)){
X sct[ntn[sct[x][y].owner].capx][ntn[sct[x][y].owner].capy].people+= sct[x][y].people;
X sct[x][y].people=0;
X fprintf(stderr,"ERROR: <%s> taking sector %d %d but civilians exist of other race - puting them in their capitol\n",curntn->name,x,y);
X--- 213,219 -----
X &&( sct[x][y].owner!=0 )
X &&( sct[x][y].people>0 )
X &&( magic(country,SLAVER)==FALSE )
X! &&( ntn[sct[x][y].owner].race != curntn->race)){
X sct[ntn[sct[x][y].owner].capx][ntn[sct[x][y].owner].capy].people+= sct[x][y].people;
X sct[x][y].people=0;
X fprintf(stderr,"ERROR: <%s> taking sector %d %d but civilians exist of other race - puting them in their capitol\n",curntn->name,x,y);
X*** oforms.c
X--- forms.c
X**************
X*** 275,281
X mvaddstr(j++,0,"6) WAR");
X mvprintw(j++,0,"7) JIHAD (%d talons to break):",BREAKJIHAD);
X j++;
X! for( i=1; i<=NTOTAL; i++ )
X if((isntnorp(ntn[i].active)) && (ntn[nation].dstatus[i]==TREATY))
X mvprintw(j++,10,"%s has treaty with %s",ntn[nation].name,ntn[i].name);
X
X--- 275,281 -----
X mvaddstr(j++,0,"6) WAR");
X mvprintw(j++,0,"7) JIHAD (%d talons to break):",BREAKJIHAD);
X j++;
X! for( i=1; i<NTOTAL; i++ )
X if((isntnorp(ntn[i].active)) && (ntn[nation].dstatus[i]==TREATY))
X mvprintw(j++,10,"%s has treaty with %s",ntn[nation].name,ntn[i].name);
X
X**************
X*** 315,321
X &&(ntn[nation].dstatus[country]<WAR)) {
X ntn[nation].dstatus[country]=WAR;
X EADJDIP(nation,country);
X! for( i=1; i<=NTOTAL; i++ )
X if(ntn[i].dstatus[nation]==TREATY){
X ntn[i].dstatus[country]=WAR;
X EADJDIP(i,country);
X--- 315,321 -----
X &&(ntn[nation].dstatus[country]<WAR)) {
X ntn[nation].dstatus[country]=WAR;
X EADJDIP(nation,country);
X! for( i=1; i<NTOTAL; i++ )
X if(ntn[i].dstatus[nation]==TREATY){
X ntn[i].dstatus[country]=WAR;
X EADJDIP(i,country);
X**************
X*** 657,663
X }
X destroy(country);
X fclose(fnews);
X! sprintf(command,"%s/%s",DEFAULTDIR, sortname);
X sprintf(command,"%s %s %s", command, filename, filename);
X system(command);
X }
X--- 657,663 -----
X }
X destroy(country);
X fclose(fnews);
X! sprintf(command,"%s/%s", EXEDIR, sortname);
X sprintf(command,"%s %s %s", command, filename, filename);
X system(command);
X }
X*** omisc.c
X--- misc.c
X**************
X*** 757,763
X int country;
X {
X struct s_nation *saventn=curntn;
X! int i,j,x,y,armynum,nation;
X
X x = ntn[country].capx;
X y = ntn[country].capy;
X--- 757,763 -----
X int country;
X {
X struct s_nation *saventn=curntn;
X! int i,j,x,y,armynum;
X
X x = ntn[country].capx;
X y = ntn[country].capy;
X**************
X*** 940,945
X
X nptr = &ntn[country];
X if( ismonst(nptr->active) ) return;
X fprintf(fnews,"1.\tNation %s was destroyed ",nptr->name);
X if(country!=sct[nptr->capx][nptr->capy].owner){
X fprintf(fnews,"(their capitol is now owned by %s)\n",ntn[sct[nptr->capx][nptr->capy].owner].name);
X--- 940,946 -----
X
X nptr = &ntn[country];
X if( ismonst(nptr->active) ) return;
X+ if( !isactive(nptr->active) ) return;
X fprintf(fnews,"1.\tNation %s was destroyed ",nptr->name);
X if(country!=sct[nptr->capx][nptr->capy].owner){
X fprintf(fnews,"(their capitol is now owned by %s)\n",ntn[sct[nptr->capx][nptr->capy].owner].name);
X*** omove.c
X--- move.c
X**************
X*** 385,391
X } else if(total>0) {
X /* remove proportion of starting move */
X P_AMOVE-= total * curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE))/(10*(groupmen+othermen));
X! if( P_AMOVE<0 || P_AMOVE>100 )
X P_AMOVE=0;
X AADJMOV;
X if( P_AMOVE==0 )
X--- 385,391 -----
X } else if(total>0) {
X /* remove proportion of starting move */
X P_AMOVE-= total * curntn->maxmove * *(unitmove+(P_ATYPE%UTYPE))/(10*(groupmen+othermen));
X! if( P_AMOVE>150 )
X P_AMOVE=0;
X AADJMOV;
X if( P_AMOVE==0 )
X**************
X*** 475,480
X &&(P_ASOLD>0)){
X if((groupmen>=TAKESECTOR)&&(SOWN==0 )){
X mvaddstr(LINES-2,0,"Taking Unowned Sector");
X refresh();
X sleep(2);
X SOWN=country;
X--- 475,481 -----
X &&(P_ASOLD>0)){
X if((groupmen>=TAKESECTOR)&&(SOWN==0 )){
X mvaddstr(LINES-2,0,"Taking Unowned Sector");
X+ clrtoeol();
X refresh();
X sleep(2);
X SOWN=country;
X*** oupdate.c
X--- update.c
X**************
X*** 39,47
X check();
X
X #ifdef MONSTER
X- for( country=1;country<NTOTAL;country++)
X- if( ntn[country].active == NPC_LIZARD )
X- updlizards(); /* run lizard nations */
X check();
X monster(); /* update monster nations */
X check();
X--- 39,44 -----
X check();
X
X #ifdef MONSTER
X check();
X monster(); /* update monster nations */
X check();
X**************
X*** 670,676
X }
X
X /****************************************************************/
X! /* UPDLIZARDS() */
X /* update lizards */
X /****************************************************************/
X void
X--- 667,673 -----
X }
X
X /****************************************************************/
X! /* DO_LIZARD() */
X /* update lizards */
X /****************************************************************/
X void
X**************
X*** 674,680
X /* update lizards */
X /****************************************************************/
X void
X! updlizards()
X {
X register int i, j;
X int armynum;
X--- 671,677 -----
X /* update lizards */
X /****************************************************************/
X void
X! do_lizard()
X {
X register int i, j;
X int armynum;
X**************
X*** 679,685
X register int i, j;
X int armynum;
X
X! printf("updating lizard (nation %d)\n ",country);
X curntn = &ntn[country];
X for(armynum=0;armynum<MAXARM;armynum++)
X if((P_ASOLD>0)) {
X--- 676,682 -----
X register int i, j;
X int armynum;
X
X! printf("updating lizard (nation %d)\n",country);
X curntn = &ntn[country];
X for(armynum=0;armynum<MAXARM;armynum++)
X if((P_ASOLD>0)) {
X**************
X*** 684,689
X for(armynum=0;armynum<MAXARM;armynum++)
X if((P_ASOLD>0)) {
X P_AMOVE =20; /* just in case god wants to move them */
X if(armynum%2==0) {
X if(P_ASTAT!=SIEGED) P_ASTAT=GARRISON;
X } else {
X--- 681,688 -----
X for(armynum=0;armynum<MAXARM;armynum++)
X if((P_ASOLD>0)) {
X P_AMOVE =20; /* just in case god wants to move them */
X+ P_ASOLD*=102; /* increase population */
X+ P_ASOLD/=100;
X if(armynum%2==0) {
X if(P_ASTAT!=SIEGED) P_ASTAT=GARRISON;
X } else {
X*** odata.c
X--- data.c
X**************
X*** 271,277
X "rice", "wheat", "dairy", "peas", "bread", "cereal",
X "pottery", "salt", "timber", "granite", "pine", "oak", "nails",
X "papyrus","math","library","drama","paper","literature","law","philosophy",
X! "irregation", "oxen", "plows",
X "stones",
X "herbs", "medicine",
X "torture", "prison",
X--- 271,277 -----
X "rice", "wheat", "dairy", "peas", "bread", "cereal",
X "pottery", "salt", "timber", "granite", "pine", "oak", "nails",
X "papyrus","math","library","drama","paper","literature","law","philosophy",
X! "irrigation", "oxen", "plows",
X "stones",
X "herbs", "medicine",
X "torture", "prison",
X*** omagic.c
X--- magic.c
X**************
X*** 600,606
X mvaddstr((*count)++,0," What orc nation:");
X refresh();
X i=get_country();
X! if(i<=0 || i>NTOTAL || !isntn(ntn[i].active) )
X mvaddstr((*count)++,0," Invalid Nation");
X else if((curntn->dstatus[i]<HOSTILE)
X &&(curntn->dstatus[i]!=UNMET)
X--- 600,606 -----
X mvaddstr((*count)++,0," What orc nation:");
X refresh();
X i=get_country();
X! if(i<=0 || i>=NTOTAL || !isntn(ntn[i].active) )
X mvaddstr((*count)++,0," Invalid Nation");
X else if((curntn->dstatus[i]<HOSTILE)
X &&(curntn->dstatus[i]!=UNMET)
X*** onewlogin.c
X--- newlogin.c
X**************
X*** 126,132
X register i;
X
X printf("\nPreparing to add player\n");
X- printf("break at any time to abort\n");
X
X while(more==TRUE) {
X points=MAXPTS;
X--- 126,131 -----
X register i;
X
X printf("\nPreparing to add player\n");
X
X while(more==TRUE) {
X points=MAXPTS;
X**************
X*** 130,135
X
X while(more==TRUE) {
X points=MAXPTS;
X /*find valid nation number type*/
X for(i=1;i<NTOTAL;i++)
X if(ntn[i].active==INACTIVE) {
X--- 129,135 -----
X
X while(more==TRUE) {
X points=MAXPTS;
X+ country=0;
X /*find valid nation number type*/
X for(i=1;i<NTOTAL;i++)
X if(ntn[i].active==INACTIVE) {
X**************
X*** 139,145
X }
X printf("first valid nation id is %d\n",country);
X
X! if(i==NTOTAL) {
X beep();
X printf("error, cant add new nation\n");
X return;
X--- 139,145 -----
X }
X printf("first valid nation id is %d\n",country);
X
X! if(country==0) {
X beep();
X printf("error, cant add new nation\n");
X return;
X**************
X*** 389,395
X printf("how many points to spend on population:");
X scanf("%d",&temp);
X putchar('\n');
X! if(points >= temp) {
X points -= temp;
X curntn->tciv+=temp*NLPOP;
X }
X--- 389,397 -----
X printf("how many points to spend on population:");
X scanf("%d",&temp);
X putchar('\n');
X! if(points <= 0) {
X! printf("Purchase aborted...");
X! } if(points >= temp) {
X points -= temp;
X curntn->tciv+=temp*NLPOP;
X }
X**************
X*** 401,408
X printf("how many points to spend on added gold talons:");
X scanf("%d",&temp);
X putchar('\n');
X! if(points>=temp)
X! {
X points-=temp;
X curntn->tgold+=temp*NLGOLD;
X }
X--- 403,411 -----
X printf("how many points to spend on added gold talons:");
X scanf("%d",&temp);
X putchar('\n');
X! if(points<=0) {
X! printf("Purchase aborted....");
X! } else if(points>=temp) {
X points-=temp;
X curntn->tgold+=temp*NLGOLD;
X }
X**************
X*** 429,435
X printf("how many points to spend?");
X scanf("%d",&temp);
X putchar('\n');
X! if(points >= temp) {
X points -= temp;
X curntn->tmil+=temp*NLSOLD;
X }
X--- 432,440 -----
X printf("how many points to spend?");
X scanf("%d",&temp);
X putchar('\n');
X! if (points <= 0) {
X! printf("Purchase aborted...");
X! } else if(points >= temp) {
X points -= temp;
X curntn->tmil+=temp*NLSOLD;
X }
X**************
X*** 445,451
X printf("how many points do you wish to spend?");
X scanf("%d",&temp);
X putchar('\n');
X! if(points >= temp) {
X points -= temp;
X if(curntn->race == ORC )
X curntn->aplus+=temp*NLATTACK/2;
X--- 450,458 -----
X printf("how many points do you wish to spend?");
X scanf("%d",&temp);
X putchar('\n');
X! if(points <= 0) {
X! printf("Purchase aborted...");
X! } else if(points >= temp) {
X points -= temp;
X if(curntn->race == ORC )
X curntn->aplus+=temp*NLATTACK/2;
X**************
X*** 468,474
X printf("how many points do you wish to spend?");
X scanf("%d",&temp);
X putchar('\n');
X! if(points >= temp) {
X points -= temp;
X if(curntn->race == ORC )
X curntn->dplus+=temp*NLDEFENCE/2;
X--- 475,483 -----
X printf("how many points do you wish to spend?");
X scanf("%d",&temp);
X putchar('\n');
X! if(points <= 0) {
X! printf("Purchase aborted...");
X! } else if(points >= temp) {
X points -= temp;
X if(curntn->race == ORC )
X curntn->dplus+=temp*NLDEFENCE/2;
X**************
X*** 492,498
X printf("you have the maximum rate");
X break;
X }
X! printf("how many percentage points to add?:");
X scanf("%d",&temp);
X putchar('\n');
X if((points >= (temp*NLREPCOST))
X--- 501,507 -----
X printf("you have the maximum rate");
X break;
X }
X! printf("how many purchasing points to spend?:");
X scanf("%d",&temp);
X putchar('\n');
X if(temp < points) {
X**************
X*** 495,506
X printf("how many percentage points to add?:");
X scanf("%d",&temp);
X putchar('\n');
X! if((points >= (temp*NLREPCOST))
X! ||((curntn->race==ORC)
X! &&(points >= (temp*NLREPCOST/2)))) {
X! if((curntn->race!=ORC)
X! &&(curntn->repro+NLREPRO*temp>10)){
X! printf("that exceeds the 10%% limit");
X }
X else if((curntn->race==ORC)
X &&(curntn->repro>14-NLREPRO_ORC*temp)){
X--- 504,532 -----
X printf("how many purchasing points to spend?:");
X scanf("%d",&temp);
X putchar('\n');
X! if(temp < points) {
X! printf("You don't have enough points left");
X! } else if (temp < 0) {
X! printf("Negative, huh? Who you trying to kid?");
X! } else if (temp%NLREPCOST != 0) {
X! printf("You must spend in multiples of %d",NLREPCOST);
X! } else {
X! if(curntn->race != ORC) {
X! temp = temp/NLREPCOST*NLREPRO;
X! if(curntn->repro+temp > 10) {
X! printf("That exceeds the 10% limit");
X! } else {
X! points -= (temp*NLREPCOST/NLREPRO);
X! curntn->repro += temp;
X! }
X! } else {
X! temp = temp/NLREPCOST*NLREPRO_ORC;
X! if(curntn->repro+temp > 14) {
X! printf("That exceeds the 14% limit");
X! } else {
X! points -= (temp*NLREPCOST/NLREPRO_ORC);
X! curntn->repro += temp;
X! }
X }
X }
X break;
X**************
X*** 502,519
X &&(curntn->repro+NLREPRO*temp>10)){
X printf("that exceeds the 10%% limit");
X }
X- else if((curntn->race==ORC)
X- &&(curntn->repro>14-NLREPRO_ORC*temp)){
X- printf("that exceeds the 14%% limit");
X- }
X- else {
X- if(curntn->race==ORC)
X- points -= (temp*NLREPCOST/2);
X- else points -= temp*NLREPCOST;
X- if(curntn->race==ORC)
X- curntn->repro+=NLREPRO_ORC*temp;
X- else curntn->repro+=NLREPRO*temp;
X- }
X }
X else printf("You dont have enough points left");
X break;
X--- 528,533 -----
X curntn->repro += temp;
X }
X }
X }
X break;
X case 8:
X**************
X*** 515,521
X else curntn->repro+=NLREPRO*temp;
X }
X }
X- else printf("You dont have enough points left");
X break;
X case 8:
X if(curntn->race == ORC ) {
X--- 529,534 -----
X }
X }
X }
X break;
X case 8:
X if(curntn->race == ORC ) {
X*** odisplay.c
X--- display.c
X**************
X*** 315,322
X switch(hilmode){
X case HI_MOVE: /* your armies w/ move left */
X for(armynum=0;armynum<MAXARM;armynum++)
X! if(( P_ASOLD>0 )
X! &&( P_AMOVE>0 )
X &&( P_AXLOC==(x+xoffset ))
X &&( P_AYLOC==(y+yoffset ))) break;
X if(armynum<MAXARM) standout();
X--- 315,322 -----
X switch(hilmode){
X case HI_MOVE: /* your armies w/ move left */
X for(armynum=0;armynum<MAXARM;armynum++)
X! if(( P_ASOLD != 0 )
X! &&( P_AMOVE != 0 )
X &&( P_AXLOC==(x+xoffset ))
X &&( P_AYLOC==(y+yoffset ))) break;
X if(armynum<MAXARM) standout();
X**************
X*** 323,329
X break;
X case HI_YARM: /* your armies */
X for(armynum=0;armynum<MAXARM;armynum++)
X! if(( P_ASOLD>0)
X &&( P_AXLOC==x+xoffset)
X &&( P_AYLOC==y+yoffset)) break;
X if(armynum<MAXARM) standout();
X--- 323,329 -----
X break;
X case HI_YARM: /* your armies */
X for(armynum=0;armynum<MAXARM;armynum++)
X! if(( P_ASOLD != 0)
X &&( P_AXLOC==x+xoffset)
X &&( P_AYLOC==y+yoffset)) break;
X if(armynum<MAXARM) standout();
X*** omain.c
X--- main.c
X**************
X*** 68,74
X #endif SYSMAIL
X int sflag=FALSE;
X
X! char defaultdir[256];
X struct passwd *getpwnam();
X owneruid=getuid();
X strcpy(defaultdir, DEFAULTDIR);
X--- 68,74 -----
X #endif SYSMAIL
X int sflag=FALSE;
X
X! char defaultdir[256],tmppass[PASSLTH+1];
X struct passwd *getpwnam();
X owneruid=getuid();
X strcpy(defaultdir, DEFAULTDIR);
X**************
X*** 94,100
X putchar('\n');
X exit(SUCCESS);
X case 'd':
X! strcpy(defaultdir, optarg);
X break;
X case 'n':
X strcpy(name, optarg);
X--- 94,104 -----
X putchar('\n');
X exit(SUCCESS);
X case 'd':
X! if(optarg[0]!='/') {
X! sprintf(defaultdir, "%s/%s", DEFAULTDIR, optarg);
X! } else {
X! strcpy(defaultdir, optarg);
X! }
X break;
X case 'n':
X strcpy(name, optarg);
X**************
X*** 191,197
X curntn = &ntn[country];
X
X /*get encrypted password*/
X! strncpy(passwd,crypt(getpass("\nwhat is your nation's password:"),SALT),PASSLTH);
X if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
X &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
X strncpy(passwd,crypt(getpass("\nerror: reenter your nation's password:"),SALT),PASSLTH);
X--- 195,202 -----
X curntn = &ntn[country];
X
X /*get encrypted password*/
X! strncpy(tmppass,getpass("\nwhat is your nation's password:"),PASSLTH);
X! strncpy(passwd,crypt(tmppass,SALT),PASSLTH);
X if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
X &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
X strncpy(tmppass,getpass("\nerror: reenter your nation's password:"),PASSLTH);
X**************
X*** 194,200
X strncpy(passwd,crypt(getpass("\nwhat is your nation's password:"),SALT),PASSLTH);
X if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
X &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
X! strncpy(passwd,crypt(getpass("\nerror: reenter your nation's password:"),SALT),PASSLTH);
X if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
X &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
X printf("\nsorry:");
X--- 199,206 -----
X strncpy(passwd,crypt(tmppass,SALT),PASSLTH);
X if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
X &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
X! strncpy(tmppass,getpass("\nerror: reenter your nation's password:"),PASSLTH);
X! strncpy(passwd,crypt(tmppass,SALT),PASSLTH);
X if((strncmp(passwd,curntn->passwd,PASSLTH)!=0)
X &&(strncmp(passwd,ntn[0].passwd,PASSLTH)!=0)) {
X printf("\nsorry:");
X**************
X*** 1013,1022
X mvaddstr(10,19, "Copyright (c) 1988 by Edward M Barlow");
X mvaddstr(11,18,"Written Edward M Barlow and Adam Bryant");
X mvaddstr(12,26,"All Rights Reserved");
X! mvaddstr(LINES-7,21,"This version is for personal use only");
X! mvaddstr(LINES-5,12,"It is expressly forbidden port this software to any form of");
X! mvaddstr(LINES-4,12,"Personal Computer or to redistribute this software without");
X! mvaddstr(LINES-3,18,"the permission of Edward Barlow or Adam Bryant");
X mvprintw(LINES-1, 60, "PRESS ANY KEY");
X refresh();
X }
X--- 1019,1028 -----
X mvaddstr(10,19, "Copyright (c) 1988 by Edward M Barlow");
X mvaddstr(11,18,"Written Edward M Barlow and Adam Bryant");
X mvaddstr(12,26,"All Rights Reserved");
X! mvaddstr(LINES-7,19,"This version is for personal use only");
X! mvaddstr(LINES-5,8,"It is expressly forbidden port this software to any form of");
X! mvaddstr(LINES-4,8,"Personal Computer or to redistribute this software without");
X! mvaddstr(LINES-3,14,"the permission of Edward Barlow or Adam Bryant");
X mvprintw(LINES-1, 60, "PRESS ANY KEY");
X refresh();
X }
X*** onpc.c
X--- npc.c
X**************
X*** 89,95
X if( curntn->active==NPC_NOMAD ) do_nomad();
X else if( curntn->active==NPC_PIRATE ) do_pirate();
X else if( curntn->active==NPC_BARBARIAN ) do_barbarian();
X! else if( curntn->active==NPC_LIZARD ) do_lizard();
X }
X }
X
X--- 89,95 -----
X if( curntn->active==NPC_NOMAD ) do_nomad();
X else if( curntn->active==NPC_PIRATE ) do_pirate();
X else if( curntn->active==NPC_BARBARIAN ) do_barbarian();
X! else if( curntn->active==NPC_LIZARD ) do_lizard(); /* update.c */
X }
X }
X
X**************
X*** 101,107
X int x, y;
X
X /*move nomads */
X! printf("updating nomad nation %d\n",country);
X for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
X P_ASTAT=ATTACK;
X P_AMOVE=(curntn->maxmove * *(unitmove+P_ATYPE%UTYPE))/10;
X--- 101,107 -----
X int x, y;
X
X /*move nomads */
X! printf("updating nomad (nation %d)\n",country);
X for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
X P_ASTAT=ATTACK;
X P_AMOVE=(curntn->maxmove * *(unitmove+P_ATYPE%UTYPE))/10;
X**************
X*** 159,165
X short armynum;
X int x, y;
X
X! printf("updating barbarian nation %d\n",country);
X for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
X P_ASTAT=ATTACK;
X if(P_ATYPE<MINLEADER) {
X--- 159,165 -----
X short armynum;
X int x, y;
X
X! printf("updating barbarian (nation %d)\n",country);
X for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
X P_ASTAT=ATTACK;
X if(P_ATYPE<MINLEADER) {
X**************
X*** 206,223
X }
X
X void
X- do_lizard()
X- {
X- short armynum;
X-
X- printf("updating lizard nation %d\n",country);
X- for(armynum=0;armynum<MAXARM;armynum++) if(P_ASOLD>0){
X- P_ASOLD*=102;
X- P_ASOLD/=100;
X- }
X- }
X-
X- void
X do_pirate()
X {
X short nvynum,shipsize;
X--- 206,211 -----
X }
X
X void
X do_pirate()
X {
X short nvynum,shipsize;
X**************
X*** 223,229
X short nvynum,shipsize;
X int x, y, campx, campy;
X
X! printf("updating pirate nation %d\n",country);
X
X /* if pirate fleet within 3 attack if outnumber any fleets */
X /* automatically find their base first */
X--- 211,217 -----
X short nvynum,shipsize;
X int x, y, campx, campy;
X
X! printf("updating pirate (nation %d)\n",country);
X
X /* if pirate fleet within 3 attack if outnumber any fleets */
X /* automatically find their base first */
X*** otxt0
X--- txt0
X**************
X*** 46,52
X and resources (civilians, troops, metal, gold...). Play involves building,
X moving, and controlling armies and navies, diplomacy with other players,
X and adjusting economic activity, which is primarily geared to the production
X! of gold for your treasury. Metals are needed, however to build ships & armies,
X and food is needed to prevent revolts and keep people alive.
X
X Command line format: conquer [-hs -nNAT -dDIR]
X--- 46,52 -----
X and resources (civilians, troops, metal, gold...). Play involves building,
X moving, and controlling armies and navies, diplomacy with other players,
X and adjusting economic activity, which is primarily geared to the production
X! of gold for your treasury. Also, metals are needed to build ships & armies,
X and food is needed to prevent revolts and keep people alive.
X
X Command line format: conquer [-hs -nNAT -dDIR]
X*** otxt1
X--- txt1
X**************
X*** 55,61
X Orc nations are very special in Conquer. The only thing an orc is good at is
X making other orcs. They are slow, poor at combat, & bad in special abilities.
X They can get reproduction of up to 14% per year (the normal limit is 10%) &
X! can start with a large number of people as initial reproduction costs are less
X than normal. Orcs are led by monsters (they start with MINOR MONSTER power),
X and are always evil (the only good orc is a dead orc...). They are so nasty,
X EVERYBODY they meet start out hostile (50%) or at war (50%) with them.
X--- 55,61 -----
X Orc nations are very special in Conquer. The only thing an orc is good at is
X making other orcs. They are slow, poor at combat, & bad in special abilities.
X They can get reproduction of up to 14% per year (the normal limit is 10%) &
X! can start with a large number of people as initial reproduction costs are less
X than normal. Orcs are led by monsters (they start with MINOR MONSTER power),
X and are always evil (the only good orc is a dead orc...). They are so nasty,
X EVERYBODY they meet start out hostile (50%) or at war (50%) with them.
X
END_OF_FILE
if test 45250 -ne `wc -c <'patches01'`; then
echo shar: \"'patches01'\" unpacked with wrong size!
fi
# end of 'patches01'
fi
echo shar: End of shell archive.
exit 0