fortin@zap.UUCP (Denis Fortin) (02/27/88)
Greetings... For the past week or so I've toyed with Conquer. Now getting it to run on a 16-bit machine (80286) is no small task: there are many places where integers are assumed to be quite large (most notably, the power constants, which go up to 2**21 are often stuffed inside ints!). In addition, some printfs needed "l"'s added in "%d"'s. Anyway, this (rather long) message contains a list of all the mods I've made (including the fix for the rectangular world). WARNING: There is still a problem. After I run "conquer -x", the world seems to develop sectors where the number of people is < 0. This causes diagnostics when the program starts, so that's most probably a bug :-) ! I guess somewhere in update.c there is an int that overflows and becomes negative. If I have some time, I'll try to track it down and report the fix. NOTE: Obviously, these are not official fixes. I assume that Ed will see this message and consider including them in future releases. I'm willing to discuss these fixes by EMail... Denis Fortin fortin@zap.uucp Now, here come the diffs: ------------------------------------------------------------------------------ *** cexecute.orig --- cexecute.c ************** *** 130,136 case CHG_MGK: ntn[country].powers|=long2var; if(ntn[country].powers!=longvar){ ! printf("\nERROR ON MAGIC READ %ld != %d (or of %d)",longvar,ntn[country].powers,long2var); getchar(); } exenewmgk(long2var); --- 130,136 ----- case CHG_MGK: ntn[country].powers|=long2var; if(ntn[country].powers!=longvar){ ! printf("\nERROR ON MAGIC READ %ld != %ld (or of %ld)",longvar,ntn[country].powers,long2var); getchar(); } exenewmgk(long2var); *** combat.orig --- combat.c ************** *** 464,470 short armynum,nvynum; int save,i,j; /*set occ to 0*/ ! for(i=0;i<MAPX;i++) for(j=0;j<MAPX;j++) occ[i][j]=0; save=country; /*set occ to country of occupant army*/ for(country=0;country<NTOTAL;country++) --- 464,470 ----- short armynum,nvynum; int save,i,j; /*set occ to 0*/ ! for(i=0;i<MAPX;i++) for(j=0;j<MAPY;j++) occ[i][j]=0; save=country; /*set occ to country of occupant army*/ for(country=0;country<NTOTAL;country++) *** commands.orig --- commands.c *** data.orig --- data.h ************** *** 216,222 #define DESTRY 25 #define DESTROY fprintf(fexe,"DESTROY \t%d \t%d \t%hd \t0 \t0 \t%s\n",DESTRY,save,country,"null") ! #define CHGMGK fprintf(fexe,"L_MAGIC \t%d \t%hd \t%ld \t%d \t0 \t%s\n",CHG_MGK,country,ntn[country].powers,x,"null") #define I_APLUS fprintf(fexe,"INC_APLUS \t%d \t%hd \t0 \t0 \t0 \t%s\n",INCAPLUS,country,"null") #define I_DPLUS fprintf(fexe,"INC_DPLUS \t%d \t%hd \t0 \t0 \t0 \t%s\n",INCDPLUS,country,"null") #define AADJSTAT fprintf(fexe,"A_STAT \t%d \t%hd \t%d \t%d \t0 \t%s\n",XASTAT,country,armynum,ntn[country].arm[armynum].stat,"null") --- 216,222 ----- #define DESTRY 25 #define DESTROY fprintf(fexe,"DESTROY \t%d \t%d \t%hd \t0 \t0 \t%s\n",DESTRY,save,country,"null") ! #define CHGMGK fprintf(fexe,"L_MAGIC \t%d \t%hd \t%ld \t%ld \t0 \t%s\n",CHG_MGK,country,ntn[country].powers,x,"null") #define I_APLUS fprintf(fexe,"INC_APLUS \t%d \t%hd \t0 \t0 \t0 \t%s\n",INCAPLUS,country,"null") #define I_DPLUS fprintf(fexe,"INC_DPLUS \t%d \t%hd \t0 \t0 \t0 \t%s\n",INCDPLUS,country,"null") #define AADJSTAT fprintf(fexe,"A_STAT \t%d \t%hd \t%d \t%d \t0 \t%s\n",XASTAT,country,armynum,ntn[country].arm[armynum].stat,"null") ************** *** 236,262 #define SADJOWN fprintf(fexe,"S_AOWN \t%d \t%hd \t0 \t%d \t%d \t%s\n",XSAOWN ,country,xcurs+xoffset,ycurs+yoffset,"null") #define EADJDIP fprintf(fexe,"E_ADJ \t%d \t%hd \t%d \t%d \t0 \t%s\n",EDADJ,country,nation,ntn[country].dstatus[nation],"null") ! #define WARRIOR 0x000001 ! #define CAPTAIN 0x000002 ! #define WARLORD 0x000004 ! #define MI_MONST 0x000008 ! #define AV_MONST 0x000010 ! #define MA_MONST 0x000020 ! #define SPY 0x000040 ! #define KNOWALL 0x000080 ! #define DERVISH 0x000100 ! #define DESTROYER 0x000200 ! #define HIDDEN 0x000400 ! #define THE_VOID 0x000800 ! #define ARCHITECT 0x001000 ! #define VAMPIRE 0x002000 ! #define HEALER 0x004000 ! #define MINER 0x008000 ! #define URBAN 0x010000 ! #define STEEL 0x020000 ! #define ARCHER 0x040000 ! #define CAVALRY 0x080000 ! #define BREEDER 0x100000 #define MAXPOWER 21 /* number of powers */ --- 236,262 ----- #define SADJOWN fprintf(fexe,"S_AOWN \t%d \t%hd \t0 \t%d \t%d \t%s\n",XSAOWN ,country,xcurs+xoffset,ycurs+yoffset,"null") #define EADJDIP fprintf(fexe,"E_ADJ \t%d \t%hd \t%d \t%d \t0 \t%s\n",EDADJ,country,nation,ntn[country].dstatus[nation],"null") ! #define WARRIOR 0x000001L ! #define CAPTAIN 0x000002L ! #define WARLORD 0x000004L ! #define MI_MONST 0x000008L ! #define AV_MONST 0x000010L ! #define MA_MONST 0x000020L ! #define SPY 0x000040L ! #define KNOWALL 0x000080L ! #define DERVISH 0x000100L ! #define DESTROYER 0x000200L ! #define HIDDEN 0x000400L ! #define THE_VOID 0x000800L ! #define ARCHITECT 0x001000L ! #define VAMPIRE 0x002000L ! #define HEALER 0x004000L ! #define MINER 0x008000L ! #define URBAN 0x010000L ! #define STEEL 0x020000L ! #define ARCHER 0x040000L ! #define CAVALRY 0x080000L ! #define BREEDER 0x100000L #define MAXPOWER 21 /* number of powers */ *** forms.orig --- forms.c ************** *** 122,128 } standout(); mvaddstr(17,0,"HIT RETURN KEY TO CHANGE STATUS"); ! mvprintw(18,0,"HIT 'B' KEY TO BRIBE WARRING NPC NATION (%d GOLD/level)",BRIBE); mvaddstr(19,0,"ANY OTHER KEY TO CONTINUE:"); standend(); refresh(); --- 122,128 ----- } standout(); mvaddstr(17,0,"HIT RETURN KEY TO CHANGE STATUS"); ! mvprintw(18,0,"HIT 'B' KEY TO BRIBE WARRING NPC NATION (%ld GOLD/level)",BRIBE); mvaddstr(19,0,"ANY OTHER KEY TO CONTINUE:"); standend(); refresh(); *** header.orig --- header.h ************** *** 71,79 /*Below taxation rates are in thousand dollars (US 1985) per 100 humans per *point of whatever -- ie 1 person in veg of 9 means produce $70x9=630K *thousand dollars */ ! #define TAXFOOD 100 ! #define TAXIRON 100 ! #define TAXGOLD 100 /*city and capital tax rates based on people only (no multipleier)*/ #define TAXCAP 1000 #define TAXCITY 750 --- 71,79 ----- /*Below taxation rates are in thousand dollars (US 1985) per 100 humans per *point of whatever -- ie 1 person in veg of 9 means produce $70x9=630K *thousand dollars */ ! #define TAXFOOD 100L ! #define TAXIRON 100L ! #define TAXGOLD 100L /*city and capital tax rates based on people only (no multipleier)*/ #define TAXCAP 1000L #define TAXCITY 750L ************** *** 75,82 #define TAXIRON 100 #define TAXGOLD 100 /*city and capital tax rates based on people only (no multipleier)*/ ! #define TAXCAP 1000 ! #define TAXCITY 750 #define SHIPMAINT 1000 /*ship mainatinance cost*/ #define SOLDMAINT 40 /*soldier mainatinance cost*/ --- 75,82 ----- #define TAXIRON 100L #define TAXGOLD 100L /*city and capital tax rates based on people only (no multipleier)*/ ! #define TAXCAP 1000L ! #define TAXCITY 750L #define SHIPMAINT 1000L /*ship mainatinance cost*/ #define SOLDMAINT 40L /*soldier mainatinance cost*/ ************** *** 78,85 #define TAXCAP 1000 #define TAXCITY 750 ! #define SHIPMAINT 1000 /*ship mainatinance cost*/ ! #define SOLDMAINT 40 /*soldier mainatinance cost*/ #define DESCOST 300L /*cost to redesignatie*/ /*this is also the iron cost for cities*/ #define FORTCOST 1000 /*cost to build a fort point*/ --- 78,85 ----- #define TAXCAP 1000L #define TAXCITY 750L ! #define SHIPMAINT 1000L /*ship mainatinance cost*/ ! #define SOLDMAINT 40L /*soldier mainatinance cost*/ #define DESCOST 300L /*cost to redesignatie*/ /*this is also the iron cost for cities*/ #define FORTCOST 1000L /*cost to build a fort point*/ ************** *** 82,91 #define SOLDMAINT 40 /*soldier mainatinance cost*/ #define DESCOST 300L /*cost to redesignatie*/ /*this is also the iron cost for cities*/ ! #define FORTCOST 1000 /*cost to build a fort point*/ ! #define ENLISTCOST 90 /*cost to enlist one troop*/ ! #define WARSHPCOST 10000 /*cost to build one warship*/ ! #define MERSHPCOST 20000 /*cost to build one merchant*/ #define SHIPHOLD 300 /*number of humans a merchant can hold*/ #define CITYLIMIT 8 /*% of ntns people in sector before => city*/ #define MILRATIO 5 /*ratio mil:civ for non player countries*/ --- 82,91 ----- #define SOLDMAINT 40L /*soldier mainatinance cost*/ #define DESCOST 300L /*cost to redesignatie*/ /*this is also the iron cost for cities*/ ! #define FORTCOST 1000L /*cost to build a fort point*/ ! #define ENLISTCOST 90L /*cost to enlist one troop*/ ! #define WARSHPCOST 10000L /*cost to build one warship*/ ! #define MERSHPCOST 20000L /*cost to build one merchant*/ #define SHIPHOLD 300 /*number of humans a merchant can hold*/ #define CITYLIMIT 8 /*% of ntns people in sector before => city*/ #define MILRATIO 5 /*ratio mil:civ for non player countries*/ *** io.orig --- io.c ************** *** 496,502 printf(" %s",*(races+i)); if(ntn[nationid].active>=2) printf(" NPC"); else printf(" %s",*(Class+ntn[nationid].class)); ! printf(" %d %d %d %d %d", ntn[nationid].score ,ntn[nationid].tgold ,ntn[nationid].tmil ,ntn[nationid].tciv ,ntn[nationid].tsctrs ); --- 496,502 ----- printf(" %s",*(races+i)); if(ntn[nationid].active>=2) printf(" NPC"); else printf(" %s",*(Class+ntn[nationid].class)); ! printf(" %d %ld %ld %ld %d", ntn[nationid].score ,ntn[nationid].tgold ,ntn[nationid].tmil ,ntn[nationid].tciv ,ntn[nationid].tsctrs ); *** magic.orig --- magic.c ************** *** 24,30 /*do nothing if that player has that power or it is not permitted*/ /*getmagic() returns the value of the power gained, and stores it in power*/ ! getmagic() { int newpower; newpower=1<<rand()%MAXPOWER; --- 24,30 ----- /*do nothing if that player has that power or it is not permitted*/ /*getmagic() returns the value of the power gained, and stores it in power*/ ! long getmagic() { long newpower; newpower=1L<<rand()%MAXPOWER; ************** *** 26,37 getmagic() { ! int newpower; ! newpower=1<<rand()%MAXPOWER; ! switch(newpower){ ! case WARRIOR: ! case CAPTAIN: ! case WARLORD: if(magic(country,WARRIOR)!=1){ ntn[country].powers|=WARRIOR; return(WARRIOR); --- 26,37 ----- long getmagic() { ! long newpower; ! newpower=1L<<rand()%MAXPOWER; ! ! if ((newpower == WARRIOR) || ! (newpower == CAPTAIN) || ! (newpower == WARLORD)) { if(magic(country,WARRIOR)!=1){ ntn[country].powers|=WARRIOR; return(WARRIOR); ************** *** 44,53 ntn[country].powers|=WARLORD; return(WARLORD); } ! break; ! case MI_MONST: ! case AV_MONST: ! case MA_MONST: if(ntn[country].race!=ORC) return(0); if(magic(country,MI_MONST)!=1){ ntn[country].powers|=MI_MONST; --- 44,52 ----- ntn[country].powers|=WARLORD; return(WARLORD); } ! } else if ((newpower == MI_MONST) || ! (newpower == AV_MONST) || ! (newpower == MA_MONST)) { if(ntn[country].race!=ORC) return(0); if(magic(country,MI_MONST)!=1){ ntn[country].powers|=MI_MONST; ************** *** 61,77 ntn[country].powers|=MA_MONST; return(MA_MONST); } ! break; ! case SPY: ! case KNOWALL: ! case DERVISH: ! case HIDDEN: ! case ARCHITECT: ! case URBAN: ! case THE_VOID: ! case HEALER: ! case ARCHER: ! case CAVALRY: if(magic(country,newpower)==1) return(0); ntn[country].powers|=newpower; return(newpower); --- 60,75 ----- ntn[country].powers|=MA_MONST; return(MA_MONST); } ! } else if ((newpower == SPY) || ! (newpower == KNOWALL) || ! (newpower == DERVISH) || ! (newpower == HIDDEN) || ! (newpower == ARCHITECT)|| ! (newpower == URBAN) || ! (newpower == THE_VOID) || ! (newpower == HEALER) || ! (newpower == ARCHER) || ! (newpower == CAVALRY)) { if(magic(country,newpower)==1) return(0); ntn[country].powers|=newpower; return(newpower); ************** *** 75,81 if(magic(country,newpower)==1) return(0); ntn[country].powers|=newpower; return(newpower); ! case DESTROYER: if((ntn[country].race!=ELF)&&(magic(country,DESTROYER)!=1)){ ntn[country].powers|=DESTROYER; return(DESTROYER); --- 73,79 ----- if(magic(country,newpower)==1) return(0); ntn[country].powers|=newpower; return(newpower); ! } else if (newpower == DESTROYER) { if((ntn[country].race!=ELF)&&(magic(country,DESTROYER)!=1)){ ntn[country].powers|=DESTROYER; return(DESTROYER); ************** *** 80,87 ntn[country].powers|=DESTROYER; return(DESTROYER); } ! break; ! case VAMPIRE: if((ntn[country].race!=ELF)&&(magic(country,VAMPIRE)!=1)){ ntn[country].powers|=VAMPIRE; return(VAMPIRE); --- 78,84 ----- ntn[country].powers|=DESTROYER; return(DESTROYER); } ! } else if (newpower == VAMPIRE) { if((ntn[country].race!=ELF)&&(magic(country,VAMPIRE)!=1)){ ntn[country].powers|=VAMPIRE; return(VAMPIRE); ************** *** 86,93 ntn[country].powers|=VAMPIRE; return(VAMPIRE); } ! break; ! case MINER: if((ntn[country].race!=ELF)&&(ntn[country].race!=DWARF)&&(magic(country,MINER)!=1)){ ntn[country].powers|=MINER; return(MINER); --- 83,89 ----- ntn[country].powers|=VAMPIRE; return(VAMPIRE); } ! } else if (newpower == MINER) { if((ntn[country].race!=ELF)&&(ntn[country].race!=DWARF)&&(magic(country,MINER)!=1)){ ntn[country].powers|=MINER; return(MINER); ************** *** 92,99 ntn[country].powers|=MINER; return(MINER); } ! break; ! case STEEL: if(magic(country,STEEL)==1) return(0); if(magic(country,MINER)!=1) return(0); ntn[country].powers|=STEEL; --- 88,94 ----- ntn[country].powers|=MINER; return(MINER); } ! } else if (newpower == STEEL) { if(magic(country,STEEL)==1) return(0); if(magic(country,MINER)!=1) return(0); ntn[country].powers|=STEEL; ************** *** 98,104 if(magic(country,MINER)!=1) return(0); ntn[country].powers|=STEEL; return(STEEL); ! case BREEDER: if(magic(country,BREEDER)==1) return(0); if(ntn[country].race!=ORC) return(0); ntn[country].powers|=BREEDER; --- 93,99 ----- if(magic(country,MINER)!=1) return(0); ntn[country].powers|=STEEL; return(STEEL); ! } else if (newpower == BREEDER) { if(magic(country,BREEDER)==1) return(0); if(ntn[country].race!=ORC) return(0); ntn[country].powers|=BREEDER; ************** *** 103,109 if(ntn[country].race!=ORC) return(0); ntn[country].powers|=BREEDER; return(BREEDER); ! } return(0); } --- 98,104 ----- if(ntn[country].race!=ORC) return(0); ntn[country].powers|=BREEDER; return(BREEDER); ! } return(0); } ************** *** 111,116 domagic() { int x, count, done=0, loop=0, i, chance; long price; short isgod=0; if(country==0) { --- 106,112 ----- domagic() { int x, count, done=0, loop=0, i, chance; + long xx; long price; short isgod=0; if(country==0) { ************** *** 207,213 i=get_number(); if(ntn[i].race==ORC){ ntn[country].jewels-=100000L; ! if(i=takeover(chance,i)==1) mvprintw(count++,0," Successful: %d",i); } else mvaddstr(count++,0," Wrong Race"); --- 203,209 ----- i=get_number(); if(ntn[i].race==ORC){ ntn[country].jewels-=100000L; ! if((i=takeover(chance,i))==1) mvprintw(count++,0," Successful: %d",i); } else mvaddstr(count++,0," Wrong Race"); ************** *** 223,229 if(getch()=='y'){ done=0; loop = 0; ! while(loop++ < 500) if((x=getmagic())!=0){ ntn[country].jewels -= price; CHGMGK; exenewmgk(x); --- 219,225 ----- if(getch()=='y'){ done=0; loop = 0; ! while(loop++ < 500) if((xx=getmagic())!=0){ ntn[country].jewels -= price; CHGMGK; exenewmgk(xx); ************** *** 226,232 while(loop++ < 500) if((x=getmagic())!=0){ ntn[country].jewels -= price; CHGMGK; ! exenewmgk(x); refresh(); break; } --- 222,228 ----- while(loop++ < 500) if((xx=getmagic())!=0){ ntn[country].jewels -= price; CHGMGK; ! exenewmgk(xx); refresh(); break; } ************** *** 283,288 /*execute new magic*/ exenewmgk(newpower) { short x,y; switch(newpower){ --- 279,285 ----- /*execute new magic*/ exenewmgk(newpower) + long newpower; { short x,y; ************** *** 285,292 exenewmgk(newpower) { short x,y; ! switch(newpower){ ! case WARRIOR: ntn[country].aplus+=10; ntn[country].dplus+=10; break; --- 282,289 ----- long newpower; { short x,y; ! ! if (newpower == WARRIOR) { ntn[country].aplus+=10; ntn[country].dplus+=10; } else if (newpower == CAPTAIN) { ************** *** 289,296 case WARRIOR: ntn[country].aplus+=10; ntn[country].dplus+=10; ! break; ! case CAPTAIN: ntn[country].aplus+=10; ntn[country].dplus+=10; break; --- 286,292 ----- if (newpower == WARRIOR) { ntn[country].aplus+=10; ntn[country].dplus+=10; ! } else if (newpower == CAPTAIN) { ntn[country].aplus+=10; ntn[country].dplus+=10; } else if (newpower == WARLORD) { ************** *** 293,300 case CAPTAIN: ntn[country].aplus+=10; ntn[country].dplus+=10; ! break; ! case WARLORD: ntn[country].aplus+=10; ntn[country].dplus+=10; break; --- 289,295 ----- } else if (newpower == CAPTAIN) { ntn[country].aplus+=10; ntn[country].dplus+=10; ! } else if (newpower == WARLORD) { ntn[country].aplus+=10; ntn[country].dplus+=10; } else if (newpower == HEALER) { ************** *** 297,304 case WARLORD: ntn[country].aplus+=10; ntn[country].dplus+=10; ! break; ! case HEALER: if(ntn[country].race==ORC) { if(ntn[country].repro<=11) ntn[country].repro+=2; --- 292,298 ----- } else if (newpower == WARLORD) { ntn[country].aplus+=10; ntn[country].dplus+=10; ! } else if (newpower == HEALER) { if(ntn[country].race==ORC) { if(ntn[country].repro<=11) ntn[country].repro+=2; ************** *** 314,321 else if(ntn[country].repro>=10){ ntn[country].dplus+=10; } ! break; ! case DESTROYER: for(x=ntn[country].capx-3;x<=ntn[country].capx+3;x++) { for(y=ntn[country].capy-3;y<=ntn[country].capy+3;y++){ if((ONMAP) --- 308,314 ----- else if(ntn[country].repro>=10){ ntn[country].dplus+=10; } ! } else if (newpower == DESTROYER) { for(x=ntn[country].capx-3;x<=ntn[country].capx+3;x++) { for(y=ntn[country].capy-3;y<=ntn[country].capy+3;y++){ if((ONMAP) ************** *** 327,334 } } updmove(ntn[country].race); ! break; ! case DERVISH: updmove(ntn[country].race); break; case MI_MONST: --- 320,326 ----- } } updmove(ntn[country].race); ! } else if (newpower == DERVISH) { updmove(ntn[country].race); } else if ((newpower == MI_MONST) || (newpower == AV_MONST) || ************** *** 330,347 break; case DERVISH: updmove(ntn[country].race); ! break; ! case MI_MONST: ! case AV_MONST: ! case MA_MONST: ! case SPY: ! case KNOWALL: ! case HIDDEN: ! case THE_VOID: ! case ARCHITECT: ! case MINER: ! break; ! case VAMPIRE: ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; --- 322,338 ----- updmove(ntn[country].race); } else if (newpower == DERVISH) { updmove(ntn[country].race); ! } else if ((newpower == MI_MONST) || ! (newpower == AV_MONST) || ! (newpower == MA_MONST) || ! (newpower == SPY) || ! (newpower == KNOWALL) || ! (newpower == HIDDEN) || ! (newpower == THE_VOID) || ! (newpower == ARCHITECT) || ! (newpower == MINER)) { ! ; ! } else if (newpower == VAMPIRE) { ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; ************** *** 345,352 ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; ! break; ! case URBAN: if(ntn[country].race==ORC) { ntn[country].repro+=3; if(ntn[country].repro>=13){ --- 336,342 ----- ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; ! } else if (newpower == URBAN) { if(ntn[country].race==ORC) { ntn[country].repro+=3; if(ntn[country].repro>=13){ ************** *** 361,370 ntn[country].maxmove+=2*(ntn[country].repro-9); ntn[country].repro=12; } ! break; ! case STEEL: ! break; ! case ARCHER: ntn[country].dplus+=10; break; case CAVALRY: --- 351,359 ----- ntn[country].maxmove+=2*(ntn[country].repro-9); ntn[country].repro=12; } ! } else if (newpower == STEEL) { ! ; ! } else if (newpower == ARCHER) { ntn[country].dplus+=10; } else if (newpower == CAVALRY) { ntn[country].aplus+=10; ************** *** 366,373 break; case ARCHER: ntn[country].dplus+=10; ! break; ! case CAVALRY: ntn[country].aplus+=10; ntn[country].maxmove+=6; break; --- 355,361 ----- ; } else if (newpower == ARCHER) { ntn[country].dplus+=10; ! } else if (newpower == CAVALRY) { ntn[country].aplus+=10; ntn[country].maxmove+=6; } else if (newpower == BREEDER) { ************** *** 370,377 case CAVALRY: ntn[country].aplus+=10; ntn[country].maxmove+=6; ! break; ! case BREEDER: ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; --- 358,364 ----- } else if (newpower == CAVALRY) { ntn[country].aplus+=10; ntn[country].maxmove+=6; ! } else if (newpower == BREEDER) { ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; ************** *** 375,380 ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; - break; } } --- 362,366 ----- ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; } } *** main.orig --- main.c ************** *** 18,23 #include <fcntl.h> #include <pwd.h> /*initialization data*/ /*Movement costs*/ char *ele= "#^%-~"; --- 18,27 ----- #include <fcntl.h> #include <pwd.h> + /* Sigh. Why doesn't C check force you to declare functions before using + them? This is sooo FORTRANish! */ + char *getpass(); /* Always declare (char *) fcts for 16-bit CPUs */ + /*initialization data*/ /*Movement costs*/ char *ele= "#^%-~"; *** makeworld.orig --- makeworld.c ************** *** 45,51 char newstring[40]; /*abort if datafile currently exists*/ ! if(tempfd=open(datafile,0)!=-1) { printf("ABORTING: File %s exists\n",datafile); printf("\tthis means that a game is in progress. To proceed, you must remove \n"); printf("\tthe existing data file. This will, of course, destroy that game.\n\n"); --- 45,51 ----- char newstring[40]; /*abort if datafile currently exists*/ ! if((tempfd=open(datafile,0))!=-1) { printf("ABORTING: File %s exists\n",datafile); printf("\tthis means that a game is in progress. To proceed, you must remove \n"); printf("\tthe existing data file. This will, of course, destroy that game.\n\n"); ************** *** 573,579 sct[x][y].fortress = 5+rand()%5; sct[x][y].gold = 15+rand()%20; for(i=x-1;i<=x+1;i++) for(j=y-1;j<=y+1;j++) ! if(i>=0&&j>=0&&i<MAPX&&j<MAPX) if(sct[i][j].altitude!=WATER) sct[i][j].owner = NLIZARD; AMOVE=0; --- 573,579 ----- sct[x][y].fortress = 5+rand()%5; sct[x][y].gold = 15+rand()%20; for(i=x-1;i<=x+1;i++) for(j=y-1;j<=y+1;j++) ! if(i>=0&&j>=0&&i<MAPX&&j<MAPY) if(sct[i][j].altitude!=WATER) sct[i][j].owner = NLIZARD; AMOVE=0; ************** *** 580,586 AXLOC=x; AYLOC=y; ASTAT=GARRISON; ! ASOLD=750+100*rand()%10; armynum++; AMOVE=8; AXLOC=x; --- 580,586 ----- AXLOC=x; AYLOC=y; ASTAT=GARRISON; ! ASOLD=750+100*(rand()%10); armynum++; AMOVE=8; AXLOC=x; ************** *** 586,592 AXLOC=x; AYLOC=y; ASTAT=ATTACK; ! ASOLD=750+100*rand()%10; armynum++; } } --- 586,592 ----- AXLOC=x; AYLOC=y; ASTAT=ATTACK; ! ASOLD=750+100*(rand()%10); armynum++; } } ************** *** 676,682 AXLOC=x; AYLOC=y; ASTAT=ATTACK; ! ASOLD=200+100*rand()%10; if(armynum<MAXARM-1) armynum++; } else { --- 676,682 ----- AXLOC=x; AYLOC=y; ASTAT=ATTACK; ! ASOLD=200+100*(rand()%10); if(armynum<MAXARM-1) armynum++; } else { ************** *** 684,690 ntn[NNOMAD].arm[army2num].xloc=x; ntn[NNOMAD].arm[army2num].yloc=y; ntn[NNOMAD].arm[army2num].stat=ATTACK; ! ntn[NNOMAD].arm[army2num].sold=100+100*rand()%15; if(army2num<MAXARM-1) army2num++; } } --- 684,690 ----- ntn[NNOMAD].arm[army2num].xloc=x; ntn[NNOMAD].arm[army2num].yloc=y; ntn[NNOMAD].arm[army2num].stat=ATTACK; ! ntn[NNOMAD].arm[army2num].sold=100+100*(rand()%15); if(army2num<MAXARM-1) army2num++; } } *** misc.orig --- misc.c ************** *** 7,13 char *memset(); #endif ! int powers[] = { WARRIOR, CAPTAIN, WARLORD, --- 7,13 ----- char *memset(); #endif ! long powers[] = { WARRIOR, CAPTAIN, WARLORD, *** move.orig --- move.c ************** *** 621,627 } /* switch */ } /* for */ ! for(x=0;x<MAPX;x++) for(y=0;y<MAPX;y++){ sptr = &sct[x][y]; if(race==GOD) movecost[x][y] = 0; --- 621,627 ----- } /* switch */ } /* for */ ! for(x=0;x<MAPX;x++) for(y=0;y<MAPY;y++){ sptr = &sct[x][y]; if(race==GOD) movecost[x][y] = 0; *** newlogin.orig --- newlogin.c ************** *** 29,35 int temp; int more=0; /*0 if add another player*/ int loop; ! int x; char tempo[8]; char passwd[8]; register i; --- 29,35 ----- int temp; int more=0; /*0 if add another player*/ int loop; ! long x, getmagic(); char tempo[8]; char passwd[8]; register i; *** npc.orig --- npc.c ************** *** 26,31 { int armynum,price; int x,y,i,z; prep(); --- 26,32 ----- { int armynum,price; int x,y,i,z; + long zz, getmagic(); prep(); ************** *** 162,170 for(armynum=1; armynum<num_powers(country); armynum++ ) price <<= 1; if(ntn[country].jewels > 2 * price) { ! if((z=getmagic())!=0){ ! fprintf(fnews,"2.\tnation %s gets magic power number %d\n",ntn[country].name,z); ! exenewmgk(z); ntn[country].jewels-=price; } else if((z=getmagic())!=0){ --- 163,171 ----- for(armynum=1; armynum<num_powers(country); armynum++ ) price <<= 1; if(ntn[country].jewels > 2 * price) { ! if((zz=getmagic())!=0){ ! fprintf(fnews,"2.\tnation %s gets magic power number %ld\n",ntn[country].name,zz); ! exenewmgk(zz); ntn[country].jewels-=price; } else if((zz=getmagic())!=0){ ************** *** 167,175 exenewmgk(z); ntn[country].jewels-=price; } ! else if((z=getmagic())!=0){ ! fprintf(fnews,"2.\tnation %s gets magic power number %d\n",ntn[country].name,z); ! exenewmgk(z); ntn[country].jewels-=price; } else if((z=getmagic())!=0){ --- 168,176 ----- exenewmgk(zz); ntn[country].jewels-=price; } ! else if((zz=getmagic())!=0){ ! fprintf(fnews,"2.\tnation %s gets magic power number %ld\n",ntn[country].name,zz); ! exenewmgk(zz); ntn[country].jewels-=price; } else if((zz=getmagic())!=0){ ************** *** 172,180 exenewmgk(z); ntn[country].jewels-=price; } ! else if((z=getmagic())!=0){ ! fprintf(fnews,"2.\tnation %s gets magic power number %d\n",ntn[country].name,z); ! exenewmgk(z); ntn[country].jewels-=price; } } --- 173,181 ----- exenewmgk(zz); ntn[country].jewels-=price; } ! else if((zz=getmagic())!=0){ ! fprintf(fnews,"2.\tnation %s gets magic power number %ld\n",ntn[country].name,zz); ! exenewmgk(zz); ntn[country].jewels-=price; } } ************** *** 245,251 for(armie=1;armie<MAXARM;armie++){ if(ntn[nation].arm[armie].sold > 0) { ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) --- 246,253 ----- for(armie=1;armie<MAXARM;armie++){ if(ntn[nation].arm[armie].sold > 0) { ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc] = ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/10; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) ************** *** 251,257 &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; if((rand()%3==0) &&(ntn[country].dstatus[nation]<WAR)) ntn[country].dstatus[nation]++; --- 253,260 ----- &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc] = ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/5; if((rand()%3==0) &&(ntn[country].dstatus[nation]<WAR)) ntn[country].dstatus[nation]++; ************** *** 260,266 if(ntn[country].dstatus[nation]==WAR) ntn[country].dstatus[nation]=JIHAD; if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } --- 263,270 ----- if(ntn[country].dstatus[nation]==WAR) ntn[country].dstatus[nation]=JIHAD; if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc] = ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/2; } else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc] = attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/5; ************** *** 262,268 if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } ! else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } } } --- 266,273 ----- attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc] = attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/2; } ! else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc] = ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/5; } } } ************** *** 337,343 for(armie=1;armie<MAXARM;armie++) if(ntn[nation].arm[armie].sold > 0) { ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) --- 342,349 ----- for(armie=1;armie<MAXARM;armie++) if(ntn[nation].arm[armie].sold > 0) { ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]= ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/10; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) ************** *** 343,349 &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; if((rand()%3==0) &&(ntn[country].dstatus[nation]<WAR)) ntn[country].dstatus[nation]++; --- 349,356 ----- &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]= ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/5; if((rand()%3==0) &&(ntn[country].dstatus[nation]<WAR)) ntn[country].dstatus[nation]++; ************** *** 352,358 if(ntn[country].dstatus[nation]==WAR) ntn[country].dstatus[nation]=JIHAD; if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } --- 359,366 ----- if(ntn[country].dstatus[nation]==WAR) ntn[country].dstatus[nation]=JIHAD; if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]= ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/2; } else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]= attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/5; ************** *** 354,360 if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } ! else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } } } --- 362,369 ----- attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]= attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/2; } ! else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]= ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+ntn[nation].arm[armie].sold/5; } } } ************** *** 504,510 ntn[country].active=0; for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0) { if(ntn[sct[AXLOC][AYLOC].owner].race==ntn[country].race) ! sct[AXLOC][AYLOC].people+=ASOLD; ASOLD=0; } for(nvynum=0;nvynum<MAXNAVY;nvynum++) { --- 513,520 ----- ntn[country].active=0; for(armynum=0;armynum<MAXARM;armynum++) if(ASOLD>0) { if(ntn[sct[AXLOC][AYLOC].owner].race==ntn[country].race) ! sct[AXLOC][AYLOC].people= ! sct[AXLOC][AYLOC].people+ASOLD; ASOLD=0; } for(nvynum=0;nvynum<MAXNAVY;nvynum++) { ************** *** 518,527 /*if take them you get their gold*/ if(country!=sct[ntn[country].capx][ntn[country].capy].owner){ ! if(ntn[country].tgold>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tgold+=ntn[country].tgold; ! if(ntn[country].jewels>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].jewels+=ntn[country].jewels; ! if(ntn[country].tiron>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tiron+=ntn[country].tiron; ! if(ntn[country].tfood>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tfood+=ntn[country].tfood; } /*if god destroys then kill all population*/ --- 528,541 ----- /*if take them you get their gold*/ if(country!=sct[ntn[country].capx][ntn[country].capy].owner){ ! if(ntn[country].tgold>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tgold= ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].tgold+ntn[country].tgold; ! if(ntn[country].jewels>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].jewels= ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].jewels+ntn[country].jewels; ! if(ntn[country].tiron>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tiron= ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].tiron+ntn[country].tiron; ! if(ntn[country].tfood>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tfood= ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].tfood+ntn[country].tfood; } /*if god destroys then kill all population*/ ************** *** 590,596 if((rand()%4==0)&&(is_habitable(x,y))) { AXLOC=x; AYLOC=y; ! ASOLD=100+100*rand()%10; ASTAT=ATTACK; } } --- 604,610 ----- if((rand()%4==0)&&(is_habitable(x,y))) { AXLOC=x; AYLOC=y; ! ASOLD=100+100*(rand()%10); ASTAT=ATTACK; } } ************** *** 742,748 ntn[country].tmil += ASOLD; ntn[country].tciv -= ASOLD; ntn[country].tgold-=ASOLD*ENLISTCOST; ! sct[AXLOC][AYLOC].people-=ASOLD; ASTAT= DEFEND; AMOVE=0; } --- 756,763 ----- ntn[country].tmil += ASOLD; ntn[country].tciv -= ASOLD; ntn[country].tgold-=ASOLD*ENLISTCOST; ! sct[AXLOC][AYLOC].people= ! sct[AXLOC][AYLOC].people-ASOLD; ASTAT= DEFEND; AMOVE=0; } ************** *** 760,766 &&(rand()%5==0)&&(ASOLD<diff)){ /*printf(" eliminate army %d",armynum);*/ diff-=ASOLD; ! sct[AXLOC][AYLOC].people+=ASOLD; ntn[country].tmil -= ASOLD; ntn[country].tciv += ASOLD; ASOLD=0; --- 775,782 ----- &&(rand()%5==0)&&(ASOLD<diff)){ /*printf(" eliminate army %d",armynum);*/ diff-=ASOLD; ! sct[AXLOC][AYLOC].people= ! sct[AXLOC][AYLOC].people+ASOLD; ntn[country].tmil -= ASOLD; ntn[country].tciv += ASOLD; ASOLD=0; *** randevent.orig --- randevent.c ************** *** 188,196 int randomevent() { ! int count, totalscore=0, event, newnation, i, j, armynum; ! int done; /*if 1 then event happened */ ! int newpower; printf("RANDOM HAPPENINGS ARE NOW BEING CHECKED\n"); for(country=0;country<MAXNTN;country++) if ( ntn[country].active != 0 ) --- 188,196 ----- int randomevent() { ! int count, totalscore=0, event, newnation, i, j, armynum; ! int done; /*if 1 then event happened */ ! long newpower, getmagic(); printf("RANDOM HAPPENINGS ARE NOW BEING CHECKED\n"); for(country=0;country<MAXNTN;country++) if ( ntn[country].active != 0 ) ************** *** 233,239 case 7: case 8: /*peasant revolt -- lose 40% unsupported sectors*/ ! if(newnation=disolve(10, country) == 0 ) done=0; if(done==1) for (i=0; i<MAPX; i++) for (j=0; j<MAPY; j++) if(( sct[i][j].owner == country) &&( solds_in_sector(i,j,country)==0)) --- 233,239 ----- case 7: case 8: /*peasant revolt -- lose 40% unsupported sectors*/ ! if((newnation=disolve(10, country)) == 0 ) done=0; if(done==1) for (i=0; i<MAPX; i++) for (j=0; j<MAPY; j++) if(( sct[i][j].owner == country) &&( solds_in_sector(i,j,country)==0)) ************** *** 329,335 if((is_habitable(i,j)) && ( sct[i][j].owner == country)) { ntn[NNOMAD].arm[armynum].xloc =i; ntn[NNOMAD].arm[armynum].yloc =j; ! ntn[NNOMAD].arm[armynum].sold =300+200*rand()%10; ntn[NNOMAD].arm[armynum].stat =ATTACK; count = 100; } --- 329,335 ----- if((is_habitable(i,j)) && ( sct[i][j].owner == country)) { ntn[NNOMAD].arm[armynum].xloc =i; ntn[NNOMAD].arm[armynum].yloc =j; ! ntn[NNOMAD].arm[armynum].sold =300+200*(rand()%10); ntn[NNOMAD].arm[armynum].stat =ATTACK; count = 100; } ************** *** 360,367 case 31: /*new magic item + RANDOM POWER*/ /*buy new powers and/or new weapons*/ if((newpower=getmagic())!=0){ ! printf("\tnation %s gets magic power number %d\n",ntn[country].name,newpower); ! fprintf(fnews,"1. \tevent in %s -> gets magic power number %d\n", ntn[country].name,newpower); exenewmgk(newpower); } else done=0; --- 360,367 ----- case 31: /*new magic item + RANDOM POWER*/ /*buy new powers and/or new weapons*/ if((newpower=getmagic())!=0){ ! printf("\tnation %s gets magic power number %ld\n",ntn[country].name,newpower); ! fprintf(fnews,"1. \tevent in %s -> gets magic power number %ld\n", ntn[country].name,newpower); exenewmgk(newpower); } else done=0; *** reports.orig --- reports.c ************** *** 295,301 mvaddstr(0,(COLS/2)-10,"NEXT YEARS BUDGET ESTIMATES"); standend(); ! for(xsctr=0;xsctr<MAPX;xsctr++) for(ysctr=0;ysctr<MAPX;ysctr++) if(sct[xsctr][ysctr].owner==country) { if(sct[xsctr][ysctr].designation==DFARM){ infood+= sct[xsctr][ysctr].people; revfood+=todigit(sct[xsctr][ysctr].vegetation)*sct[xsctr][ysctr].people; --- 295,301 ----- mvaddstr(0,(COLS/2)-10,"NEXT YEARS BUDGET ESTIMATES"); standend(); ! for(xsctr=0;xsctr<MAPX;xsctr++) for(ysctr=0;ysctr<MAPY;ysctr++) if(sct[xsctr][ysctr].owner==country) { if(sct[xsctr][ysctr].designation==DFARM){ infood+= sct[xsctr][ysctr].people; revfood+=todigit(sct[xsctr][ysctr].vegetation)*sct[xsctr][ysctr].people; ************** *** 312,322 else if(sct[xsctr][ysctr].designation==DCITY) incity+= sct[xsctr][ysctr].people; } ! revfood *= TAXFOOD / 100; ! reviron *= TAXIRON / 100; ! revgold *= TAXGOLD / 100; ! revcap = (long) incap * TAXCAP / 100; ! revcity = (long) incity * TAXCITY / 100; if( magic(country,ARCHITECT) ) { revcap *= 2; revcity *= 2; --- 312,322 ----- else if(sct[xsctr][ysctr].designation==DCITY) incity+= sct[xsctr][ysctr].people; } ! revfood *= TAXFOOD / 100L; ! reviron *= TAXIRON / 100L; ! revgold *= TAXGOLD / 100L; ! revcap = (long) incap * TAXCAP / 100L; ! revcity = (long) incity * TAXCITY / 100L; if( magic(country,ARCHITECT) ) { revcap *= 2; revcity *= 2; ************** *** 341,347 mvprintw(10,30,"%5d people in capital: %8ld",incap,revcap); mvprintw(11,30,"%5d people in cities: %8ld",incity,revcity); standout(); ! mvprintw(12,30,"%5ld people TOTAL INCOME: %8ld",ntn[country].tciv,revfood+reviron+revgold+(incap*TAXCAP/100)+(incity*TAXCITY/100)); standend(); if(magic(country,VAMPIRE)!=1) --- 341,347 ----- mvprintw(10,30,"%5d people in capital: %8ld",incap,revcap); mvprintw(11,30,"%5d people in cities: %8ld",incity,revcity); standout(); ! mvprintw(12,30,"%5ld people TOTAL INCOME: %8ld",ntn[country].tciv,(long) revfood+reviron+revgold+(incap*TAXCAP/100L)+(incity*TAXCITY/100L)); standend(); if(magic(country,VAMPIRE)!=1) ************** *** 345,351 standend(); if(magic(country,VAMPIRE)!=1) ! mvprintw(14,30,"%5d troops at %5d each:%8d",expsold,SOLDMAINT,expsold*SOLDMAINT); else mvprintw(14,30,"%5d troops at 0 each:0",expsold); mvprintw(15,30,"%5d ships at %5d each: %8d",expship,SHIPMAINT,expship*SHIPMAINT); --- 345,351 ----- standend(); if(magic(country,VAMPIRE)!=1) ! mvprintw(14,30,"%5ld troops at %5ld each:%8ld",expsold,SOLDMAINT,expsold*SOLDMAINT); else mvprintw(14,30,"%5d troops at 0 each:0",expsold); mvprintw(15,30,"%5d ships at %5ld each: %8ld",expship,SHIPMAINT,expship*SHIPMAINT); ************** *** 348,354 mvprintw(14,30,"%5d troops at %5d each:%8d",expsold,SOLDMAINT,expsold*SOLDMAINT); else mvprintw(14,30,"%5d troops at 0 each:0",expsold); ! mvprintw(15,30,"%5d ships at %5d each: %8d",expship,SHIPMAINT,expship*SHIPMAINT); mvprintw(16,30,"other expenses this turn: %8ld",startgold-ntn[country].tgold); standout(); if(magic(country,VAMPIRE)!=1) { --- 348,354 ----- mvprintw(14,30,"%5ld troops at %5ld each:%8ld",expsold,SOLDMAINT,expsold*SOLDMAINT); else mvprintw(14,30,"%5d troops at 0 each:0",expsold); ! mvprintw(15,30,"%5d ships at %5ld each: %8ld",expship,SHIPMAINT,expship*SHIPMAINT); mvprintw(16,30,"other expenses this turn: %8ld",startgold-ntn[country].tgold); standout(); if(magic(country,VAMPIRE)!=1) { ************** *** 391,397 mvaddstr(0,(COLS/2)-20,"NEXT YEARS PRODUCTION ESTIMATES"); standend(); ! for(xsctr=0;xsctr<MAPX;xsctr++) for(ysctr=0;ysctr<MAPX;ysctr++) if(sct[xsctr][ysctr].owner==country) { civilians += sct[xsctr][ysctr].people; if(sct[xsctr][ysctr].designation==DFARM){ --- 391,397 ----- mvaddstr(0,(COLS/2)-20,"NEXT YEARS PRODUCTION ESTIMATES"); standend(); ! for(xsctr=0;xsctr<MAPX;xsctr++) for(ysctr=0;ysctr<MAPY;ysctr++) if(sct[xsctr][ysctr].owner==country) { civilians += sct[xsctr][ysctr].people; if(sct[xsctr][ysctr].designation==DFARM){ *** update.orig --- update.c ************** *** 29,35 register int i, j; register int x,y; int moved,armynum,nvynum,done,finis=0, number=0; ! int food,iron; char command[80]; int execed[MAXNTN]; long city_pop, cap_pop; --- 29,35 ----- register int i, j; register int x,y; int moved,armynum,nvynum,done,finis=0, number=0; ! long food,iron,xx; char command[80]; int execed[MAXNTN]; long city_pop, cap_pop; ************** *** 290,296 } /*harvest food*/ else if(sptr->designation==DFARM) { ! food= todigit(sptr->vegetation)*sptr->people; nptr->tfood += food; nptr->tgold += food*TAXFOOD/100; } --- 290,296 ----- } /*harvest food*/ else if(sptr->designation==DFARM) { ! food= (long) todigit(sptr->vegetation)* (long) sptr->people; nptr->tfood += food; nptr->tgold += food*TAXFOOD/100; } ************** *** 297,304 /*gold mines produce gold*/ else if(sptr->designation==DGOLDMINE) { if(magic(sptr->owner,MINER)==1){ ! nptr->tgold += 2*sptr->gold * sptr->people * TAXGOLD/100; ! nptr->jewels += 2*sptr->gold * sptr->people; } else { nptr->tgold += sptr->gold * sptr->people * TAXGOLD/100; --- 297,304 ----- /*gold mines produce gold*/ else if(sptr->designation==DGOLDMINE) { if(magic(sptr->owner,MINER)==1){ ! nptr->tgold += 2*sptr->gold * (long) sptr->people * TAXGOLD/100L; ! nptr->jewels += 2*sptr->gold * (long) sptr->people; } else { nptr->tgold += sptr->gold * (long) sptr->people * TAXGOLD/100; ************** *** 301,308 nptr->jewels += 2*sptr->gold * sptr->people; } else { ! nptr->tgold += sptr->gold * sptr->people * TAXGOLD/100; ! nptr->jewels += sptr->gold * sptr->people; } } else if(sptr->designation==DCAPITOL) { --- 301,308 ----- nptr->jewels += 2*sptr->gold * (long) sptr->people; } else { ! nptr->tgold += sptr->gold * (long) sptr->people * TAXGOLD/100; ! nptr->jewels += sptr->gold * (long) sptr->people; } } else if(sptr->designation==DCAPITOL) { ************** *** 308,314 else if(sptr->designation==DCAPITOL) { if((x!=nptr->capx)&&(y!=nptr->capy)) { cap_pop = 0; ! city_pop = 3 * sptr->people; sptr->designation = DCITY; } else { city_pop = 0; --- 308,314 ----- else if(sptr->designation==DCAPITOL) { if((x!=nptr->capx)&&(y!=nptr->capy)) { cap_pop = 0; ! city_pop = 3 * (long) sptr->people; sptr->designation = DCITY; } else { city_pop = 0; ************** *** 316,323 } if( magic(sptr->owner, ARCHITECT ) ) { ! city_pop *= 2; ! cap_pop *= 2; } nptr->tgold += (long) city_pop * TAXCITY / 100; --- 316,323 ----- } if( magic(sptr->owner, ARCHITECT ) ) { ! city_pop *= 2L; ! cap_pop *= 2L; } nptr->tgold += (long) city_pop * TAXCITY / 100L; ************** *** 320,327 cap_pop *= 2; } ! nptr->tgold += (long) city_pop * TAXCITY / 100; ! nptr->tgold += (long) cap_pop * TAXCAP / 100; } else if(sptr->designation==DCITY) { city_pop = sptr->people; --- 320,327 ----- cap_pop *= 2L; } ! nptr->tgold += (long) city_pop * TAXCITY / 100L; ! nptr->tgold += (long) cap_pop * TAXCAP / 100L; } else if(sptr->designation==DCITY) { city_pop = (long) sptr->people; ************** *** 324,330 nptr->tgold += (long) cap_pop * TAXCAP / 100; } else if(sptr->designation==DCITY) { ! city_pop = sptr->people; if( magic(sptr->owner, ARCHITECT ) ) city_pop *= 2; nptr->tgold += (long) city_pop * TAXCITY / 100; --- 324,330 ----- nptr->tgold += (long) cap_pop * TAXCAP / 100L; } else if(sptr->designation==DCITY) { ! city_pop = (long) sptr->people; if( magic(sptr->owner, ARCHITECT ) ) city_pop *= 2L; nptr->tgold += (long) city_pop * TAXCITY / 100L; ************** *** 326,333 else if(sptr->designation==DCITY) { city_pop = sptr->people; if( magic(sptr->owner, ARCHITECT ) ) ! city_pop *= 2; ! nptr->tgold += (long) city_pop * TAXCITY / 100; } else if(((magic(country,DERVISH)==1) ||(magic(country,DESTROYER)==1)) --- 326,333 ----- else if(sptr->designation==DCITY) { city_pop = (long) sptr->people; if( magic(sptr->owner, ARCHITECT ) ) ! city_pop *= 2L; ! nptr->tgold += (long) city_pop * TAXCITY / 100L; } else if(((magic(country,DERVISH)==1) ||(magic(country,DESTROYER)==1)) ************** *** 334,340 &&((sptr->vegetation==ICE) ||(sptr->vegetation==DESERT)) &&(sptr->people>0)) { ! food=6*sptr->people; nptr->tfood += food; nptr->tgold += food*TAXFOOD/100; } --- 334,340 ----- &&((sptr->vegetation==ICE) ||(sptr->vegetation==DESERT)) &&(sptr->people>0)) { ! food=6L* (long) sptr->people; nptr->tfood += food; nptr->tgold += food*TAXFOOD/100L; } ************** *** 336,342 &&(sptr->people>0)) { food=6*sptr->people; nptr->tfood += food; ! nptr->tgold += food*TAXFOOD/100; } } --- 336,342 ----- &&(sptr->people>0)) { food=6L* (long) sptr->people; nptr->tfood += food; ! nptr->tgold += food*TAXFOOD/100L; } } ************** *** 403,409 fprintf(fnews,"2\tSTATUS OF THE WORLDS FOOD SUPPLY\n"); for(country=1;country<MAXNTN;country++) if(ntn[country].active!=0){ /*soldiers eat 2*/ ! ntn[country].tfood-=ntn[country].tmil*2; /*civilians eat 1*/ ntn[country].tfood-=ntn[country].tciv; --- 403,409 ----- fprintf(fnews,"2\tSTATUS OF THE WORLDS FOOD SUPPLY\n"); for(country=1;country<MAXNTN;country++) if(ntn[country].active!=0){ /*soldiers eat 2*/ ! ntn[country].tfood-=ntn[country].tmil*2L; /*civilians eat 1*/ ntn[country].tfood-=ntn[country].tciv; ************** *** 417,424 /*lose one person in city per three food*/ /*maximum of 1/3 people in city lost*/ if(sptr->people < ntn[country].tfood){ ! sptr->people+=ntn[country].tfood/3; ! ntn[country].tfood=0; } else { ntn[country].tfood+=sptr->people; --- 417,424 ----- /*lose one person in city per three food*/ /*maximum of 1/3 people in city lost*/ if(sptr->people < ntn[country].tfood){ ! sptr->people+=((int) ntn[country].tfood/3L); ! ntn[country].tfood=0L; } else { ntn[country].tfood+= (long) sptr->people; ************** *** 421,429 ntn[country].tfood=0; } else { ! ntn[country].tfood+=sptr->people; ! city_pop = sptr->people/3; ! sptr->people -= city_pop; } fprintf(fnews,"2.\tfamine hits city at %d,%d in %s.\n",x,y,ntn[country].name); sprintf(command,"%s%d",msgfile,country); --- 421,429 ----- ntn[country].tfood=0L; } else { ! ntn[country].tfood+= (long) sptr->people; ! city_pop = sptr->people/3L; ! sptr->people -= (int) city_pop; } fprintf(fnews,"2.\tfamine hits city at %d,%d in %s.\n",x,y,ntn[country].name); sprintf(command,"%s%d",msgfile,country); ************** *** 432,438 printf("error opening %s\n",command); } else { fprintf(fpmsg,"%s notice from program\n%s\n",ntn[country].name,ntn[country].name); ! fprintf(fpmsg,"%s famine hits city at %d,%d in %s.-> %d people reduced by %d\n%s\n",ntn[country].name,x,y,ntn[country].name,sptr->people,city_pop,ntn[country].name); fprintf(fpmsg,"END\n"); fclose(fpmsg); } --- 432,438 ----- printf("error opening %s\n",command); } else { fprintf(fpmsg,"%s notice from program\n%s\n",ntn[country].name,ntn[country].name); ! fprintf(fpmsg,"%s famine hits city at %d,%d in %s.-> %d people reduced by %ld\n%s\n",ntn[country].name,x,y,ntn[country].name,sptr->people,city_pop,ntn[country].name); fprintf(fpmsg,"END\n"); fclose(fpmsg); } ************** *** 440,446 } /*this state can occur if few people live in cities*/ if(ntn[country].tfood<0) { ! ntn[country].tfood=0; } else if(ntn[country].tfood>FOODTHRESH*ntn[country].tciv) { ntn[country].tgold+=ntn[country].tfood-FOODTHRESH*ntn[country].tciv; --- 440,446 ----- } /*this state can occur if few people live in cities*/ if(ntn[country].tfood<0) { ! ntn[country].tfood=0L; } else if(ntn[country].tfood>FOODTHRESH*ntn[country].tciv) { ntn[country].tgold+=ntn[country].tfood-(long) FOODTHRESH*ntn[country].tciv; ************** *** 443,449 ntn[country].tfood=0; } else if(ntn[country].tfood>FOODTHRESH*ntn[country].tciv) { ! ntn[country].tgold+=ntn[country].tfood-FOODTHRESH*ntn[country].tciv; ntn[country].tfood=FOODTHRESH*ntn[country].tciv; } --- 443,449 ----- ntn[country].tfood=0L; } else if(ntn[country].tfood>FOODTHRESH*ntn[country].tciv) { ! ntn[country].tgold+=ntn[country].tfood-(long) FOODTHRESH*ntn[country].tciv; ntn[country].tfood=FOODTHRESH*ntn[country].tciv; } ************** *** 448,456 } if(ntn[country].tgold>GOLDTHRESH*ntn[country].jewels){ ! x=ntn[country].tgold-GOLDTHRESH*ntn[country].jewels; ! ntn[country].jewels += x/GOLDTHRESH; ! ntn[country].tgold -= x; } else if(ntn[country].tgold > JEWELTHRESH * ntn[country].jewels){ fprintf(fnews,"3.\tTAX REVOLT IN NATION %s\n",ntn[country].name); --- 448,456 ----- } if(ntn[country].tgold>GOLDTHRESH*ntn[country].jewels){ ! xx=ntn[country].tgold-GOLDTHRESH*ntn[country].jewels; ! ntn[country].jewels += xx/GOLDTHRESH; ! ntn[country].tgold -= xx; } else if(ntn[country].tgold > JEWELTHRESH * ntn[country].jewels){ fprintf(fnews,"3.\tTAX REVOLT IN NATION %s\n",ntn[country].name); -- Denis Fortin | fortin@zap.UUCP CAE Electronics Ltd | philabs!micomvax!zap!fortin The opinions expressed above are my own | fortin%zap.uucp@uunet.uu.net