Path: utzoo!utgpu!water!watmath!clyde!rutgers!uwvax!umn-d-ub!umn-cs!ems!rosevax!cimcor!mike From: mike@cimcor.UUCP (Michael Grenier) Newsgroups: comp.sources.games.bugs Subject: Patches for conquer Keywords: for Microport V/AT Message-ID: <432@cimcor.UUCP> Date: 30 Jan 88 23:36:05 GMT Organization: Grenier & friends, Forest Lake, MN Lines: 1171 Posted: Sat Jan 30 17:36:05 1988 These patches are for patching conquer to run under Microport System V/AT. The main problems were the 16 bit integers (32 bit numbers not allowed in switch statements, sizeof(char *)!= sizeof(int). There is also a compiler bug resulting in the message compiler error - segment overwrite, get help. Some statements had to be broken up a bit. -Mike {rutgers, amdahl, ihnp4}!bungia!cimcor!mike *** header.h Thu Jan 28 22:10:49 1988 --- ../conquer/header.h Fri Jan 29 16:42:10 1988 *************** *** 35,41 /* directory where default data files will be stored */ /* SO ONE GAME CAN EXIST IN DEFAULTDIR, OTHER GAMES IN OTHER DIRECTORIES */ ! #define DEFAULTDIR "/usr/game" /*-------------------MODIFICATION IS OPTIONAL ON THE FOLLOWING-------------*/ #define SYSV /*comment this line out if on a BSD machine*/ --- 35,41 ----- /* directory where default data files will be stored */ /* SO ONE GAME CAN EXIST IN DEFAULTDIR, OTHER GAMES IN OTHER DIRECTORIES */ ! #define DEFAULTDIR "/usr/games" /*-------------------MODIFICATION IS OPTIONAL ON THE FOLLOWING-------------*/ #define SYSV /*comment this line out if on a BSD machine*/ *** io.c Sun Jan 24 20:33:31 1988 --- ../conquer/io.c Sat Jan 30 01:11:11 1988 *************** *** 496,502 printf(" %s",*(races+i)); if(ntn[nationid].active>=2) printf(" NPC"); else printf(" %s",*(Class+ntn[nationid].class)); ! printf(" %d %d %d %d %d", ntn[nationid].score ,ntn[nationid].tgold ,ntn[nationid].tmil ,ntn[nationid].tciv ,ntn[nationid].tsctrs ); --- 496,502 ----- printf(" %s",*(races+i)); if(ntn[nationid].active>=2) printf(" NPC"); else printf(" %s",*(Class+ntn[nationid].class)); ! printf(" %d %ld %ld %ld %d", ntn[nationid].score ,ntn[nationid].tgold ,ntn[nationid].tmil ,ntn[nationid].tciv ,ntn[nationid].tsctrs ); *** magic.c Sun Jan 24 20:32:10 1988 --- ../conquer/magic.c Fri Jan 29 14:47:09 1988 *************** *** 26,32 getmagic() { ! int newpower; newpower=1<=10){ ntn[country].dplus+=10; } ! break; ! case DESTROYER: for(x=ntn[country].capx-3;x<=ntn[country].capx+3;x++) { for(y=ntn[country].capy-3;y<=ntn[country].capy+3;y++){ if((ONMAP) --- 323,332 ----- else if(ntn[country].repro>=10){ ntn[country].dplus+=10; } ! return(0); ! }; ! if(newpower==DESTROYER) ! { for(x=ntn[country].capx-3;x<=ntn[country].capx+3;x++) { for(y=ntn[country].capy-3;y<=ntn[country].capy+3;y++){ if((ONMAP) *************** *** 327,334 } } updmove(ntn[country].race); ! break; ! case DERVISH: updmove(ntn[country].race); break; case MI_MONST: --- 338,347 ----- } } updmove(ntn[country].race); ! return(0); ! }; ! if(newpower==DERVISH) ! { updmove(ntn[country].race); return(0); }; *************** *** 330,347 break; case DERVISH: updmove(ntn[country].race); ! break; ! case MI_MONST: ! case AV_MONST: ! case MA_MONST: ! case SPY: ! case KNOWALL: ! case HIDDEN: ! case THE_VOID: ! case ARCHITECT: ! case MINER: ! break; ! case VAMPIRE: ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; --- 343,358 ----- if(newpower==DERVISH) { updmove(ntn[country].race); ! return(0); ! }; ! if((newpower==MI_MONST) || (newpower==AV_MONST) || ! (newpower==MA_MONST) || (newpower==SPY) || ! (newpower==KNOWALL) || (newpower==HIDDEN) || ! (newpower==THE_VOID) || (newpower==ARCHITECT) || ! (newpower==MINER)) ! return(0); ! if(newpower==VAMPIRE) ! { ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; *************** *** 345,352 ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; ! break; ! case URBAN: if(ntn[country].race==ORC) { ntn[country].repro+=3; if(ntn[country].repro>=13){ --- 356,365 ----- ntn[country].aplus-=35; ntn[country].dplus-=35; ntn[country].maxmove-=2; ! return(0); ! }; ! if(newpower==URBAN) ! { if(ntn[country].race==ORC) { ntn[country].repro+=3; if(ntn[country].repro>=13){ *************** *** 361,370 ntn[country].maxmove+=2*(ntn[country].repro-9); ntn[country].repro=12; } ! break; ! case STEEL: ! break; ! case ARCHER: ntn[country].dplus+=10; break; case CAVALRY: --- 374,385 ----- ntn[country].maxmove+=2*(ntn[country].repro-9); ntn[country].repro=12; } ! return(0); ! }; ! if(newpower==STEEL) ! return(0); ! if(newpower==ARCHER) ! { ntn[country].dplus+=10; return(0); }; *************** *** 366,373 break; case ARCHER: ntn[country].dplus+=10; ! break; ! case CAVALRY: ntn[country].aplus+=10; ntn[country].maxmove+=6; break; --- 381,390 ----- if(newpower==ARCHER) { ntn[country].dplus+=10; ! return(0); ! }; ! if(newpower==CAVALRY) ! { ntn[country].aplus+=10; ntn[country].maxmove+=6; return(0); *************** *** 370,377 case CAVALRY: ntn[country].aplus+=10; ntn[country].maxmove+=6; ! break; ! case BREEDER: ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; --- 387,396 ----- { ntn[country].aplus+=10; ntn[country].maxmove+=6; ! return(0); ! }; ! if(newpower==BREEDER) ! { ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; *************** *** 375,380 ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; ! break; } } --- 394,399 ----- ntn[country].repro+=3; ntn[country].dplus-=10; ntn[country].dplus-=10; ! return(0); } } *** main.c Sun Jan 24 20:32:15 1988 --- ../conquer/main.c Sat Jan 30 00:47:35 1988 *************** *** 17,23 #include #include #include ! /*initialization data*/ /*Movement costs*/ char *ele= "#^%-~"; --- 17,23 ----- #include #include #include ! extern char * getpass(); /* got to declare this on 16bit machines, MWG */ /*initialization data*/ /*Movement costs*/ char *ele= "#^%-~"; *************** *** 167,173 newlogin(); exit(1); } else if (pflag) { /* print a map of the game */ ! if(strncmp(crypt(getpass("\nwhat is super user password:"),SALT),ntn[0].passwd,PASSLTH)!=0) { printf("sorry, must be super user to get map\n"); exit(1); } --- 167,174 ----- newlogin(); exit(1); } else if (pflag) { /* print a map of the game */ ! if(strncmp(crypt(getpass("\nwhat is super user password:"),SALT),ntn[0].passwd,PASSLTH)!=0) ! { printf("sorry, must be super user to get map\n"); exit(1); } *** makeworld.c Sun Jan 24 20:31:51 1988 --- ../conquer/makeworld.c Fri Jan 29 23:54:03 1988 *************** *** 580,586 AXLOC=x; AYLOC=y; ASTAT=GARRISON; ! ASOLD=750+100*rand()%10; armynum++; AMOVE=8; AXLOC=x; --- 580,586 ----- AXLOC=x; AYLOC=y; ASTAT=GARRISON; ! ASOLD=750+100*(rand() % 10); armynum++; AMOVE=8; AXLOC=x; *************** *** 586,592 AXLOC=x; AYLOC=y; ASTAT=ATTACK; ! ASOLD=750+100*rand()%10; armynum++; } } --- 586,592 ----- AXLOC=x; AYLOC=y; ASTAT=ATTACK; ! ASOLD=750+100*(rand()%10); armynum++; } } *************** *** 676,682 AXLOC=x; AYLOC=y; ASTAT=ATTACK; ! ASOLD=200+100*rand()%10; if(armynum 0) { attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10; --- 244,252 ----- /*defend your capital if occupied, +50 more if with their army*/ for(armie=1;armie 0) { + int uport_dummy; + uport_dummy=ntn[nation].arm[armie].sold/10; + attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_dummy; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) *************** *** 245,252 for(armie=1;armie 0) { - attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10; - if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) --- 248,253 ----- uport_dummy=ntn[nation].arm[armie].sold/10; attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_dummy; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) *************** *** 251,257 &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; if((rand()%3==0) &&(ntn[country].dstatus[nation]=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! int uport_d1; ! uport_d1=ntn[nation].arm[armie].sold/5; ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d1; if((rand()%3==0) &&(ntn[country].dstatus[nation]2*ntn[country].arm[0].sold){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } --- 263,271 ----- if(ntn[country].dstatus[nation]==WAR) ntn[country].dstatus[nation]=JIHAD; if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ ! int uport_d2; ! uport_d2=ntn[nation].arm[armie].sold/2; ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d2; } else { int uport_d3; *************** *** 262,268 if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } ! else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } } } --- 267,276 ----- uport_d2=ntn[nation].arm[armie].sold/2; attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d2; } ! else { ! int uport_d3; ! uport_d3=ntn[nation].arm[armie].sold/5; ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d3; } } } } *************** *** 336,341 /*plus 60 if with their army*/ for(armie=1;armie 0) { attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10; --- 344,352 ----- /*plus 60 if with their army*/ for(armie=1;armie 0) { + int uport_d5; + uport_d5=ntn[nation].arm[armie].sold/10; + attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d5; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) *************** *** 337,344 for(armie=1;armie 0) { - attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/10; - if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) --- 348,353 ----- uport_d5=ntn[nation].arm[armie].sold/10; attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d5; if((ntn[nation].arm[armie].xloc<=ntn[country].capx+2) &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) *************** *** 343,349 &&(ntn[nation].arm[armie].yloc<=ntn[country].capy+2) &&(ntn[nation].arm[armie].xloc>=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; if((rand()%3==0) &&(ntn[country].dstatus[nation]=ntn[country].capx-2) &&(ntn[nation].arm[armie].yloc>=ntn[country].capy-2)){ ! int uport_d6; ! uport_d6=ntn[nation].arm[armie].sold/5; ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d6; if((rand()%3==0) &&(ntn[country].dstatus[nation]2*ntn[country].arm[0].sold){ ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } --- 363,371 ----- if(ntn[country].dstatus[nation]==WAR) ntn[country].dstatus[nation]=JIHAD; if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ ! int uport_d7; ! uport_d7=ntn[nation].arm[armie].sold/2; ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d7; } else { int uport_d8; *************** *** 354,360 if(ntn[nation].arm[armie].sold>2*ntn[country].arm[0].sold){ attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/2; } ! else attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=ntn[nation].arm[armie].sold/5; } } } --- 367,377 ----- uport_d7=ntn[nation].arm[armie].sold/2; attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d7; } ! else { ! int uport_d8; ! uport_d8=ntn[nation].arm[armie].sold/5; ! attr[ntn[nation].arm[armie].xloc][ntn[nation].arm[armie].yloc]+=uport_d8; ! } } } } *************** *** 504,510 ntn[country].active=0; for(armynum=0;armynum0) { if(ntn[sct[AXLOC][AYLOC].owner].race==ntn[country].race) ! sct[AXLOC][AYLOC].people+=ASOLD; ASOLD=0; } for(nvynum=0;nvynum0) { if(ntn[sct[AXLOC][AYLOC].owner].race==ntn[country].race) ! { ! int uport_d8; ! uport_d8=ASOLD; ! sct[AXLOC][AYLOC].people+=uport_d8; ! }; ASOLD=0; } for(nvynum=0;nvynum0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tgold+=ntn[country].tgold; ! if(ntn[country].jewels>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].jewels+=ntn[country].jewels; ! if(ntn[country].tiron>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tiron+=ntn[country].tiron; ! if(ntn[country].tfood>0) ntn[sct[ntn[country].capx][ntn[country].capy].owner].tfood+=ntn[country].tfood; } /*if god destroys then kill all population*/ --- 539,568 ----- /*if take them you get their gold*/ if(country!=sct[ntn[country].capx][ntn[country].capy].owner){ ! if(ntn[country].tgold>0) ! { ! long uport_d9; ! uport_d9=ntn[country].tgold; ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].tgold+=uport_d9; ! }; ! if(ntn[country].jewels>0) ! { ! long uport_d9; ! uport_d9=ntn[country].jewels; ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].jewels+=uport_d9; ! }; ! if(ntn[country].tiron>0) ! { ! long uport_d9; ! uport_d9=ntn[country].tiron; ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].tiron+=uport_d9; ! }; ! if(ntn[country].tfood>0) ! { ! long uport_d9; ! uport_d9=ntn[country].tfood; ! ntn[sct[ntn[country].capx][ntn[country].capy].owner].tfood+=uport_d9; ! }; } /*if god destroys then kill all population*/ *************** *** 566,573 /*move nomads randomly until within 2 of city then attack*/ country=NNOMAD; for(armynum=0;armynum0){ ! x=AXLOC+rand()%4-2; ! y=AYLOC+rand()%4-2; if(ONMAP&&(is_habitable(x,y)) &&(land_reachp(AXLOC,AYLOC,x,y,ntn[country].arm[armynum].smove,country))){ AXLOC=x; --- 607,614 ----- /*move nomads randomly until within 2 of city then attack*/ country=NNOMAD; for(armynum=0;armynum0){ ! x=AXLOC+(rand()%4)-2; ! y=AYLOC+(rand()%4)-2; if(ONMAP&&(is_habitable(x,y)) &&(land_reachp(AXLOC,AYLOC,x,y,ntn[country].arm[armynum].smove,country))){ AXLOC=x; *************** *** 590,596 if((rand()%4==0)&&(is_habitable(x,y))) { AXLOC=x; AYLOC=y; ! ASOLD=100+100*rand()%10; ASTAT=ATTACK; } } --- 631,637 ----- if((rand()%4==0)&&(is_habitable(x,y))) { AXLOC=x; AYLOC=y; ! ASOLD=100+100*(rand()%10); ASTAT=ATTACK; } } *************** *** 735,740 ASOLD = min (ASOLD,sct[ntn[country].capx][ntn[country].capy].people/2); ASOLD = min (ASOLD, (int) (ntn[country].tgold/ENLISTCOST)); if(ASOLD>0){ /*printf(" build army %d to %d men",armynum,ASOLD);*/ ntn[country].tiron-=ASOLD*10; AXLOC= ntn[country].capx; --- 776,782 ----- ASOLD = min (ASOLD,sct[ntn[country].capx][ntn[country].capy].people/2); ASOLD = min (ASOLD, (int) (ntn[country].tgold/ENLISTCOST)); if(ASOLD>0){ + int uport_d10; /*printf(" build army %d to %d men",armynum,ASOLD);*/ ntn[country].tiron-=ASOLD*10; AXLOC= ntn[country].capx; *************** *** 742,748 ntn[country].tmil += ASOLD; ntn[country].tciv -= ASOLD; ntn[country].tgold-=ASOLD*ENLISTCOST; ! sct[AXLOC][AYLOC].people-=ASOLD; ASTAT= DEFEND; AMOVE=0; } --- 784,791 ----- ntn[country].tmil += ASOLD; ntn[country].tciv -= ASOLD; ntn[country].tgold-=ASOLD*ENLISTCOST; ! uport_d10=ASOLD; ! sct[AXLOC][AYLOC].people-=uport_d10; ASTAT= DEFEND; AMOVE=0; } *************** *** 758,763 &&((sct[AXLOC][AYLOC].gold>5) ||(sct[AXLOC][AYLOC].iron>5)) &&(rand()%5==0)&&(ASOLD5) ||(sct[AXLOC][AYLOC].iron>5)) &&(rand()%5==0)&&(ASOLD