From decwrl!ucbvax!pasteur!ames!hc!lll-winken!uunet!tektronix!tekgen!tekred!games Sat May 6 02:21:31 PDT 1989 Article 577 of comp.sources.games: Path: decwrl!ucbvax!pasteur!ames!hc!lll-winken!uunet!tektronix!tekgen!tekred!games From: games@tekred.CNA.TEK.COM Newsgroups: comp.sources.games Subject: v06i068: GB - Galactic Bloodshed, an empire-like war game, Patch2 Message-ID: <3923@tekred.CNA.TEK.COM> Date: 1 May 89 18:24:15 GMT Sender: billr@tekred.CNA.TEK.COM Lines: 1761 Approved: billr@saab.CNA.TEK.COM Submitted-by: Robert Chansky Posting-number: Volume 6, Issue 68 Archive-name: GB/Patch2 #! /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 'patches01a' <<'END_OF_FILE' X*** ../../GB/races.h Wed Apr 26 11:22:21 1989 X--- races.h Mon May 1 08:21:32 1989 X*************** X*** 17,22 **** X--- 17,24 ---- X char deflevel,defsystem,defplanetnum; /* current default */ X int Playernum; X char name[RNAMESIZE]; X+ float likes[DES_ICE]; /* what territories they like */ X+ char likesbest; X percent translate[MAXPLAYERS]; /* translation mod for ea player */ X char atwar[howmanybytes(MAXPLAYERS)]; /* war */ X char allied[howmanybytes(MAXPLAYERS)]; /* allies */ X*** ../../GB/tweakables.h Wed Apr 26 11:22:24 1989 X--- tweakables.h Mon May 1 08:21:34 1989 X*************** X*** 5,22 **** X * the functions using them are not recompiled so be careful. X */ X X- /*#define UNIX_VERSION4.3 /* otherwise assumes 4.2 */ X- X #define VERS ".8" /* game version */ X X #define UPDATE_TIME 3 /* 3 hour update time */ X- #define PAGER "/usr/ucb/zcat" X X X- #include "files.h" X- X- X- X #define LOGIN_NAME_SIZE 13 X X #define NUM_TIMES_TO_WAIT_FOR_LOCK 20 X--- 5,15 ---- X*************** X*** 42,60 **** X #define OTHER 9 X #define TOXIC 10 X X- #define CHAR_OWNED_LAND 'x' X #define CHAR_OWNED_THING '@' X! #define CHAR_UNOWNED_LAND '-' X #define CHAR_SEA '.' X! #define CHAR_OWNED_SEA ',' X #define CHAR_MOUNT '^' X- #define CHAR_OWNED_MOUNT 'X' X #define CHAR_DIFFOWNED '?' X #define CHAR_PLATED '|' X #define CHAR_WASTELAND '%' X! #define CHAR_OWNED_WASTELAND '#' X #define CHAR_GAS '~' X #define CHAR_CLOAKED ' ' X X #define NAMESIZE 15 X #define RNAMESIZE 25 X--- 35,56 ---- X #define OTHER 9 X #define TOXIC 10 X X #define CHAR_OWNED_THING '@' X! #define CHAR_LAND '-' X! #define CHAR_OWNED_LAND 'x' X #define CHAR_SEA '.' X! #define CHAR_OWNED_SEA 'x' X #define CHAR_MOUNT '^' X #define CHAR_DIFFOWNED '?' X #define CHAR_PLATED '|' X #define CHAR_WASTELAND '%' X! #define CHAR_OWNED_WASTELAND '!' X #define CHAR_GAS '~' X+ #define CHAR_OWNED_GAS 'x' X #define CHAR_CLOAKED ' ' X+ #define CHAR_ICE '#' X+ #define CHAR_OWNED_ICE 'x' X+ #define CHAR_OWNED_MOUNT 'X' X X #define NAMESIZE 15 X #define RNAMESIZE 25 X*************** X*** 115,121 **** X #define CREAT_UNIV_ITERAT 10 X #define MAP_ISLANDS 10 /* # of beginning islands for makeuniv */ X #define MAP_MOUNT_PERCENT 0.22 /* percentage of mountain areas */ X! #define MAP_GASGIANT_BANDMIN 30 /* min size gasgiants that have bands */ X #define LANDPERCENTAGE 0.45 X X #define GRAV_FACTOR 0.0025 /* not sure as to what this should be*/ X--- 111,117 ---- X #define CREAT_UNIV_ITERAT 10 X #define MAP_ISLANDS 10 /* # of beginning islands for makeuniv */ X #define MAP_MOUNT_PERCENT 0.22 /* percentage of mountain areas */ X! #define MAP_GASGIANT_BANDMIN 20 /* min size gasgiants that have bands */ X #define LANDPERCENTAGE 0.45 X X #define GRAV_FACTOR 0.0025 /* not sure as to what this should be*/ X*************** X*** 142,154 **** X #define SYSTEMGRAVCONST 0.05 X X X! #define DIST_TO_LAND 5 /* moveship -- distance ship has to be to land */ X! #define DIST_TO_BURN 50 /* distance from sun needed to destroy ship */ X X X! #define FACTOR_DAMAGE 28.0 X! #define FACTOR_DESTPLANET 0.002 X! #define FACTOR_DAMAGE_DISTANCE 4.00 X X /* various compiler options that may save cpu time/disk space */ X #define SHELL_DOTURN 1 /* put doturn() in shell */ X--- 138,150 ---- X #define SYSTEMGRAVCONST 0.05 X X X! #define DIST_TO_LAND 5.0 /* moveship -- distance ship has to be to land */ X! /*#define DIST_TO_BURN 50 /* distance from sun needed to destroy ship */ X X X! #define FACTOR_DAMAGE 388.0 X! #define FACTOR_DESTPLANET 1.004 X! #define FACTOR_DAMAGE_DISTANCE 1.00 X X /* various compiler options that may save cpu time/disk space */ X #define SHELL_DOTURN 1 /* put doturn() in shell */ X*************** X*** 169,176 **** X--- 165,176 ---- X /* sign,abs val of number */ X #define sgn(x) ( ((x)>=0) ? (1) : (-1)) X #define abs(x) ( ( (x)<0) ? -(x) : (x) ) X+ #define MIN(x,y) ( ((x)>(y)) ? (y) : (x) ) X+ #define MAX(x,y) ( ((x)<(y)) ? (y) : (x) ) X /* positive modulus */ X #define mod(a,b,dum) ((dum)=(a)%(b),abs(dum)) X+ /* swap two variables */ X+ #define swap(a, b) ((a) ^= (b), (b) ^= (a), (a) ^= (b)) X /* euclidean distance */ X #define Distsq(x1,y1,x2,y2) ( ((x1)-(x2))*((x1)-(x2)) + \ X ((y1)-(y2))*((y1)-(y2)) ) X*************** X*** 179,208 **** X #define Sector(pl,x,y) (Smap[(x) + (y)*(pl).Maxx]) X /* adjust temperature to displayed */ X #define Temp(x) (((int)x)*25) X- /* tty stuff */ X- #ifdef UV_4.3 X- # define tty_on() cbreak() X- # define tty_off() nocbreak() X- #else /* this is 4.2 */ X- # define tty_on() crmode() X- # define tty_off() nocrmode() X- #endif X X /* number of AP's to add to each player in ea. system */ X /* (look in doturn) */ X #define LIMIT_APs 50 /* max # of APs you can have */ X X! #define MIN(x,y) ( ((x)>(y)) ? (y) : (x) ) X! #define MAX(x,y) ( ((x)<(y)) ? (y) : (x) ) X! #define TYPE_EARTH 0 X! #define TYPE_ASTEROID 1 X! #define TYPE_AIRLESS 2 X! #define TYPE_GASGIANT 3 X X! #define DES_SEA 0 X! #define DES_LAND 1 X! #define DES_MOUNT 2 X! #define DES_GAS 3 X! #define DES_PLATED 4 X! #define MAX_SECT_POPN 9999 X X--- 179,199 ---- X #define Sector(pl,x,y) (Smap[(x) + (y)*(pl).Maxx]) X /* adjust temperature to displayed */ X #define Temp(x) (((int)x)*25) X X /* number of AP's to add to each player in ea. system */ X /* (look in doturn) */ X #define LIMIT_APs 50 /* max # of APs you can have */ X X! #define TYPE_EARTH 0 X! #define TYPE_ASTEROID 1 X! #define TYPE_AIRLESS 2 X! #define TYPE_GASGIANT 3 X X! #define DES_SEA 0 X! #define DES_LAND 1 X! #define DES_MOUNT 2 X! #define DES_GAS 3 X! #define DES_ICE 4 X! #define DES_PLATED 5 X X+ #define MAX_SECT_POPN 9999 X*** ../../GB/vars.h Wed Apr 26 11:22:25 1989 X--- vars.h Mon May 1 08:21:35 1989 X*************** X*** 14,19 **** X--- 14,20 ---- X #define Bzero(x) bzero( (char *)&(x), sizeof(x) ) X #define Malloc(x) (x *)malloc( sizeof(x) ) X X+ #include "files.h" X #include "tweakables.h" X #include X #include X*** ../../GB/cs.c Wed Apr 26 11:22:30 1989 X--- cs.c Mon May 1 08:21:39 1989 X*************** X*** 113,118 **** X--- 113,119 ---- X Dir.snum = where.snum; X Dir.pnum = where.pnum; X Dir.shipno = where.shipno; X+ printf(" csing to st %d, pl %d\n",where.snum,where.pnum); X X /* fix prompt */ X switch (Dir.level) { X*** ../../GB/daemon.c Wed Apr 26 11:22:31 1989 X--- daemon.c Mon May 1 08:21:40 1989 X*************** X*** 4,9 **** X--- 4,10 ---- X */ X X #include "tweakables.h" X+ #include "files.h" X #include X #include X #include X*** ../../GB/doplanet.c Wed Apr 26 11:22:33 1989 X--- doplanet.c Mon May 1 08:21:43 1989 X*************** X*** 269,275 **** X /* start a meso colony */ X x = int_rand(0,planet->Maxx-1); X y = int_rand(0,planet->Maxy-1); X! Sector(*planet,x,y).des = DES_LAND; /* cheating. so what. */ X Sector(*planet,x,y).popn = 1; X Sector(*planet,x,y).owner = Stinfo[starnum][planetnum].Thing_add; X } X--- 269,276 ---- X /* start a meso colony */ X x = int_rand(0,planet->Maxx-1); X y = int_rand(0,planet->Maxy-1); X! Sector(*planet,x,y).des = X! races[Stinfo[starnum][planetnum].Thing_add]->likesbest; X Sector(*planet,x,y).popn = 1; X Sector(*planet,x,y).owner = Stinfo[starnum][planetnum].Thing_add; X } X*************** X*** 330,336 **** X (!(p-1)->is_wasted || !(p+1)->is_wasted) X && !random()%5) X p->is_wasted = 0; X! } else if (p->des==DES_LAND || p->des==DES_MOUNT) { X if ( y>1 && yMaxy-2 && X ((p-1)->popn || (p+1)->popn) X && !random()%10) X--- 331,337 ---- X (!(p-1)->is_wasted || !(p+1)->is_wasted) X && !random()%5) X p->is_wasted = 0; X! } else if (p->des==DES_LAND || p->des==DES_MOUNT || p->des==DES_ICE) { X if ( y>1 && yMaxy-2 && X ((p-1)->popn || (p+1)->popn) X && !random()%10) X*************** X*** 340,348 **** X } X X /* evaporate the oceans on novae */ X! if (Stars[starnum]->nova_stage && p->des==DES_SEA) X X! if ( (x>0 && (p-1)->des==DES_LAND) || X (xMaxx-1 && (p+1)->des==DES_LAND) || X (y>0 && (p-planet->Maxx)->des==DES_LAND) || X (yMaxy-1 && (p+planet->Maxx)->des==DES_LAND ) ) { X--- 341,352 ---- X } X X /* evaporate the oceans on novae */ X! if (Stars[starnum]->nova_stage) X! if (p->des==DES_ICE) X! p->des = DES_LAND; X! else if (p->des==DES_SEA) X X! if ( (x>0 && (p-1)->des==DES_LAND) || X (xMaxx-1 && (p+1)->des==DES_LAND) || X (y>0 && (p-planet->Maxx)->des==DES_LAND) || X (yMaxy-1 && (p+planet->Maxx)->des==DES_LAND ) ) { X*************** X*** 366,374 **** X /* sectors have been modified for this player*/ X /* & planet is compatible enough */ X if (planet->info[i-1].numsectsowned && Compat[i] > 40.0) X! while (!Claims && !allexp && --timer) { X printf("exploring ... timer=%d\n",timer); X- /*printf("exploring player %d\n",i);*/ X o = 1; X Getxysect(planet, &x, &y, 1); X while (!Claims && Getxysect(planet, &x, &y, 0)) { X--- 370,377 ---- X /* sectors have been modified for this player*/ X /* & planet is compatible enough */ X if (planet->info[i-1].numsectsowned && Compat[i] > 40.0) X! while (!Claims && !allexp && --timer) { X printf("exploring ... timer=%d\n",timer); X o = 1; X Getxysect(planet, &x, &y, 1); X while (!Claims && Getxysect(planet, &x, &y, 0)) { X*************** X*** 375,383 **** X /* find out if all sectors have been explored */ X o &= Sectinfo[x][y].explored[i]; X p = &Sector(*planet,x,y); X! if (!p->owner && !p->is_wasted && p->des==DES_LAND && Sectinfo[x][y].explored[i]) { X! /* (water) explorations have found an island */ X! printf("found an island @ %d,%d\n",x,y); X Claims = i; X /* give them some free people there */ X p->popn = races[i]->number_sexes; X--- 378,386 ---- X /* find out if all sectors have been explored */ X o &= Sectinfo[x][y].explored[i]; X p = &Sector(*planet,x,y); X! if (!p->owner && !p->is_wasted && p->des==races[i]->likesbest && Sectinfo[x][y].explored[i]) { X! /* explorations have found an island */ X! printf("found island @ %d,%d\n",x,y); X Claims = i; X /* give them some free people there */ X p->popn = races[i]->number_sexes; X*************** X*** 410,417 **** X teleg_add("resource prod. fuel prod. weapons prod. mob.pt prod.\n",telegram_buf); X sprintf(buf,"%12d%12d%15d%13d\n", tot_res, tot_fuel, tot_destruct,tot_mob); X teleg_add(buf,telegram_buf); X! sprintf(buf,"resource deposit depletion: %d\n", tot_resdep); X! teleg_add(buf,telegram_buf); X teleg_add("total births (%%) growth of max popn support (%%)\n",telegram_buf); X sprintf(buf,"%9d (%.2f%%)%23d (%.2f%%)\n", X planet->popn - oldplanetpopn, X--- 413,422 ---- X teleg_add("resource prod. fuel prod. weapons prod. mob.pt prod.\n",telegram_buf); X sprintf(buf,"%12d%12d%15d%13d\n", tot_res, tot_fuel, tot_destruct,tot_mob); X teleg_add(buf,telegram_buf); X! if (tot_resdep) { X! sprintf(buf,"resource deposit depletion: %d\n", tot_resdep); X! teleg_add(buf,telegram_buf); X! } X teleg_add("total births (%%) growth of max popn support (%%)\n",telegram_buf); X sprintf(buf,"%9d (%.2f%%)%23d (%.2f%%)\n", X planet->popn - oldplanetpopn, X*************** X*** 467,474 **** X sgn(avg_mob[i] - planet->info[i-1].comread); X } X } X! planet->conditions[TOXIC] = (planet->conditions[TOXIC]*50 + X! 100.0 * planet->popn / planet->maxpopn) / 51.0; X X } X return allmod; X--- 472,479 ---- X sgn(avg_mob[i] - planet->info[i-1].comread); X } X } X! planet->conditions[TOXIC] = (planet->conditions[TOXIC]*30 + X! 100.0 * planet->popn / planet->maxpopn) / 31.0; X X } X return allmod; X*** ../../GB/dosector.c Wed Apr 26 11:22:34 1989 X--- dosector.c Mon May 1 08:21:44 1989 X*************** X*** 63,69 **** X if (!s->eff) { X tot_eff += s->eff = 1; X } else { X! tot_eff += eff = round_rand(races[s->owner]->metabolism*s->popn*(0.95-logscale(s->eff))*EFF_PROD); X if (s->eff+eff >= 100) { X s->eff=100; /* dont go past 100%*/ X tot_eff -= s->eff+eff-100; X--- 63,70 ---- X if (!s->eff) { X tot_eff += s->eff = 1; X } else { X! /*tot_eff += eff = round_rand(races[s->owner]->metabolism*s->popn*(0.95-logscale(s->eff))*EFF_PROD);*/ X! tot_eff += eff = round_rand(races[s->owner]->metabolism*s->popn*EFF_PROD/100.0); X if (s->eff+eff >= 100) { X s->eff=100; /* dont go past 100%*/ X tot_eff -= s->eff+eff-100; X*************** X*** 106,114 **** X reg int peep; X X /* peep == number of people who want to move */ X- /*printf("spreading from %d,%d -- ",x,y);*/ X if (peep = round_rand((float)s->popn * races[s->owner]->nonhomebodies) ) { X- /*printf(" peeple=%d\n",peep);*/ X X #if NO_SLIDING_SCALE_AUTOMOVE X if (pl->popn < POPN_MOVE_SCALE_1) { X--- 107,113 ---- X*************** X*** 151,166 **** X xd=planet->Maxx-1; X else if (xd>=planet->Maxx) X xd=0; X /* check for planetary compatibility */ X! if (float_rand()*100.0 > Compat[ps->owner]) { X! /*printf("%d,%d incomp -- returning\n",xd,yd);*/ X return; X } X X! pd = &Smap[yd*planet->Maxx+xd]; X X- if ((ps->owner==pd->owner) || (pd->des!=DES_SEA && !pd->is_wasted)) { X- X if (!pd->owner) { X printf("claiming %d,%d (%d), %d people\n",xd,yd,ps->owner,people); X pd->popn += people; X--- 150,166 ---- X xd=planet->Maxx-1; X else if (xd>=planet->Maxx) X xd=0; X+ X+ pd = &Sector(*planet,xd,yd); X+ X /* check for planetary compatibility */ X! if (float_rand()*100.0 > Compat[ps->owner] * races[ps->owner]->likes[pd->des]) { X! /*printf("%d,%d incomp C %.2f,l %.f-- returning\n",xd,yd,Compat[ps->owner],races[ps->owner]->likes[pd->des]);*/ X return; X } X X! if ( (ps->owner==pd->owner || !pd->owner) && !pd->is_wasted) { X X if (!pd->owner) { X printf("claiming %d,%d (%d), %d people\n",xd,yd,ps->owner,people); X pd->popn += people; X*************** X*** 177,188 **** X reg float dfac; X X ps->popn -= round_rand(((float)ps->popn * pd->mobilization * X! planet->info[pd->owner-1].comread + races[pd->owner]->fighters*10)/200.0); X dfac = ( (float)pd->popn * ps->mobilization * X! planet->info[ps->owner-1].comread + races[pd->owner]->fighters*10)/200.0; X printf(" att %d lost %g people of %d.\n",ps->owner, X ((float)ps->popn * pd->mobilization * X! planet->info[pd->owner-1].comread + races[pd->owner]->fighters*10)/200.0, pd->popn); X if (pd->popn - dfac <= 0.0) { X /* the invasion was successful */ X if (races[ps->owner]->Thing) { X--- 177,188 ---- X reg float dfac; X X ps->popn -= round_rand(((float)ps->popn * pd->mobilization * X! planet->info[pd->owner-1].comread + races[pd->owner]->fighters*20)/200.0); X dfac = ( (float)pd->popn * ps->mobilization * X! planet->info[ps->owner-1].comread + races[pd->owner]->fighters*20)/200.0; X printf(" att %d lost %g people of %d.\n",ps->owner, X ((float)ps->popn * pd->mobilization * X! planet->info[pd->owner-1].comread + races[pd->owner]->fighters*20)/200.0, pd->popn); X if (pd->popn - dfac <= 0.0) { X /* the invasion was successful */ X if (races[ps->owner]->Thing) { X*************** X*** 196,203 **** X sects_lost[pd->owner]++; X sects_gained[ps->owner]++; X pd->owner = ps->owner; X! pd->eff *= 0.5; X! pd->mobilization *= 0.25; X tot_captured++; X printf(" sec %d,%d CAPTURED",xd,yd); X } else X--- 196,203 ---- X sects_lost[pd->owner]++; X sects_gained[ps->owner]++; X pd->owner = ps->owner; X! pd->eff *= 0.75; X! pd->mobilization *= 0.75; X tot_captured++; X printf(" sec %d,%d CAPTURED",xd,yd); X } else X*************** X*** 205,211 **** X X printf(" def %d lost %g people of %d,",pd->owner, X ((float)pd->popn * ps->mobilization * X! planet->info[ps->owner-1].comread + races[pd->owner]->fighters*10)/200.0, pd->popn); X } X } X } X--- 205,211 ---- X X printf(" def %d lost %g people of %d,",pd->owner, X ((float)pd->popn * ps->mobilization * X! planet->info[ps->owner-1].comread + races[pd->owner]->fighters*20)/200.0, pd->popn); X } X } X } X*** ../../GB/doship.c Wed Apr 26 11:22:35 1989 X--- doship.c Mon May 1 08:21:45 1989 X*************** X*** 205,210 **** X--- 205,211 ---- X case STYPE_POD: X if (ship->notified) { X /* we just arrived at this system -- explode */ X+ /* or, we are floating in space with no fuel -- just die */ X int shfdata; X reg int i,f= -1; X for (i=0; istorbits]->shipnums[i]!=shipno; i++) ; X*************** X*** 215,225 **** X ship->is_dead = 1; X openshfdata(&shfdata); X destroyship(shfdata, shipno); X! close(shfdata); X! for (i=0; f== -1 && istorbits]->numplanets; i++) X if (sqrt((double)Distsq(ship->xpos, ship->ypos, X Stars[ship->storbits]->xpos + planets[ship->storbits][i]->xpos, X! Stars[ship->storbits]->ypos + planets[ship->storbits][i]->ypos))/SYSTEMSIZE < float_rand()*2) X f = i; X teleg_add("",telegram_buf); X sprintf(buf, "Bulletin\n\nSpore pod #%d has warmed and exploded.\n",shipno); X--- 216,227 ---- X ship->is_dead = 1; X openshfdata(&shfdata); X destroyship(shfdata, shipno); X! close(shfdata); X! if (ship->whatorbits==LEVEL_STAR) { X! for (i=0; f== -1 && istorbits]->numplanets; i++) X if (sqrt((double)Distsq(ship->xpos, ship->ypos, X Stars[ship->storbits]->xpos + planets[ship->storbits][i]->xpos, X! Stars[ship->storbits]->ypos + planets[ship->storbits][i]->ypos))/SYSTEMSIZE < float_rand()) X f = i; X teleg_add("",telegram_buf); X sprintf(buf, "Bulletin\n\nSpore pod #%d has warmed and exploded.\n",shipno); X*************** X*** 242,247 **** X--- 244,250 ---- X for (i=1; i<=Num_races; i++) X if (i!=ship->owner && isset(Stars[ship->storbits]->inhabited,i)) X teleg_send(TELEG_PLAYER_AUTO, i, telegram_buf); X+ } X } X } X break; X*************** X*** 274,280 **** X if (ship->orders.object.number2 == 0) { /* launch if no assignment */ X /* steal some fuel from other players,telegram */ X bool f=0; X! for (r=Num_races-1; !f && r>0; r--) X if (p->info[r-1].fuel >= Shipdata[OTYPE_VN][ABIL_COST]) { X p->info[ship->owner-1].fuel += X Shipdata[OTYPE_VN][ABIL_FUELCAP]; X--- 277,284 ---- X if (ship->orders.object.number2 == 0) { /* launch if no assignment */ X /* steal some fuel from other players,telegram */ X bool f=0; X! if (ship->fuel < Shipdata[OTYPE_VN][ABIL_COST]) X! for (r=1; !f && r<=Num_races; r--) X if (p->info[r-1].fuel >= Shipdata[OTYPE_VN][ABIL_COST]) { X p->info[ship->owner-1].fuel += X Shipdata[OTYPE_VN][ABIL_FUELCAP]; X*************** X*** 292,298 **** X Stars[ship->storbits]->pnames[ship->pnumorbits]); X teleg_add(buf,telegram_buf); X teleg_send(TELEG_PLAYER_AUTO, f, telegram_buf); X- teleg_send(TELEG_PLAYER_AUTO, 1, telegram_buf); X /*}*/ X X ship->orders.object.number2 = 0; /* no current assignment */ X--- 296,301 ---- X*************** X*** 306,312 **** X we are engaged in building up resources/fuel. */ X /* steal resources from other players,telegram */ X bool f=0; X! for (r=Num_races-1; !f && r>0; r--) X if (p->info[r-1].resource >= Shipdata[OTYPE_VN][ABIL_COST]) X f = r; X if (f) { X--- 309,315 ---- X we are engaged in building up resources/fuel. */ X /* steal resources from other players,telegram */ X bool f=0; X! for (r=Num_races; !f && r>0; r--) X if (p->info[r-1].resource >= Shipdata[OTYPE_VN][ABIL_COST]) X f = r; X if (f) { X*************** X*** 325,332 **** X Stars[ship->storbits]->pnames[ship->pnumorbits]); X teleg_add(buf,telegram_buf); X teleg_send(TELEG_PLAYER_AUTO, f, telegram_buf); X- /* remove */ X- teleg_send(TELEG_PLAYER_AUTO, 1, telegram_buf); X /*}*/ X /* if no resources to steal, more will be produced in doplanet*/ X } X--- 328,333 ---- X*************** X*** 362,367 **** X--- 363,369 ---- X ship->whatdest = LEVEL_STAR; X } X fprintf(stderr,"VN #%d headed for star %d, pl %d.\n",shipno,ship->deststar, ship->destpnum); X+ ship->speed = 1; /* VN's are very fastidious */ X ship->orders.object.number2 = 1; X /* we are assigned to go */ X } X*** ../../GB/examine.c Wed Apr 26 11:22:37 1989 X--- examine.c Mon May 1 08:21:50 1989 X*************** X*** 42,48 **** X } X X /* look through ship data file */ X! for (t=0; ttype; t++) X while (fgetc(fd) != '~') ; X X /* give report */ X--- 42,48 ---- X } X X /* look through ship data file */ X! for (t=0; t<=ship->type; t++) X while (fgetc(fd) != '~') ; X X /* give report */ X*** ../../GB/files_rw.c Wed Apr 26 11:22:37 1989 X--- files_rw.c Mon May 1 08:21:50 1989 X*************** X*** 12,17 **** X--- 12,18 ---- X */ X X #include "tweakables.h" X+ #include "files.h" X #include X #include X #include X*** ../../GB/fire.c Wed Apr 26 14:27:19 1989 X--- fire.c Mon May 1 08:21:52 1989 X*************** X*** 28,33 **** X--- 28,34 ---- X sectortype *sect; X int dam=0,dam2=0,strength,oldstrength,maxstrength, X i,from_firex= -1,from_firey= -1,firex= -1,firey= -1,Numplayersretaliate=0; X+ float dist; X char string[PLACENAMESIZE],buf[100]; X bool sameplanet = 0, fromplanetmod=0,toplanetmod=0,starmod=0,sdatamod=0; X int mask,APdeductstar; X*************** X*** 262,267 **** X--- 263,275 ---- X /* block kill signals to foil cheaters */ X mask = sigblock(SIGINT | SIGQUIT | SIGSTOP); X X+ dam = shoot(from,&to,fpl,tpl,firex,firey,strength, &dist, &sdatamod,&starmod, &fromplanetmod); X+ printf("Distance to target: %.0f, maximum distance: %d.\n",dist, SYSTEMSIZE); X+ if (dam < 0) { X+ printf("Target out of range!\n", SYSTEMSIZE); X+ fire_handler(); X+ } X+ X if (from.level==LEVEL_SHIP) { X from.shipptr->destruct -= strength; X from.shipptr->mass -= strength*MASS_DESTRUCT; X*************** X*** 268,278 **** X } else if (from.level==LEVEL_PLAN) X fpl->info[Playernum-1].destruct -= strength; X X- dam = shoot(from,&to,fpl,tpl,firex,firey,strength, &sdatamod,&starmod, &fromplanetmod); X- if (dam < 0) { X- printf("Target out of range! must be %d or closer.\n", SYSTEMSIZE); X- fire_handler(); X- } X X /* enemy retaliates with twice the strength (if he can) */ X X--- 276,281 ---- X*************** X*** 298,304 **** X X /* enemy fires at shooting sector */ X if ( !(to.level==LEVEL_SHIP && to.shipptr->is_dead) ) X! dam2 = shoot(to,&from,tpl,fpl,from_firex,from_firey,strength, &sdatamod,&starmod, &toplanetmod); X X X if (from.level==LEVEL_PLAN) { X--- 301,307 ---- X X /* enemy fires at shooting sector */ X if ( !(to.level==LEVEL_SHIP && to.shipptr->is_dead) ) X! dam2 = shoot(to,&from,tpl,fpl,from_firex,from_firey,strength, &dist, &sdatamod,&starmod, &toplanetmod); X X X if (from.level==LEVEL_PLAN) { X*************** X*** 352,358 **** X X close(fire_stardata); X X! printf("BOOM!!\007 %d%s.\n", dam, X to.level==LEVEL_SHIP ? X (to.shipptr->type==OTYPE_VN ? " Von Neumann machines destroyed" X : "% damage done") : " sectors destroyed" ); X--- 355,361 ---- X X close(fire_stardata); X X! printf("BOOM!!\007 %d%s.\n", dam, X to.level==LEVEL_SHIP ? X (to.shipptr->type==OTYPE_VN ? " Von Neumann machines destroyed" X : "% damage done") : " sectors destroyed" ); X*** ../../GB/fix.c Wed Apr 26 11:22:40 1989 X--- fix.c Mon May 1 08:21:53 1989 X*************** X*** 295,300 **** X--- 295,303 ---- X ch = sh->destpnum; X query(CHAR, "what planet dest",0,0,&ch,0,0); X sh->destpnum = ch; X+ ch = sh->is_dead; X+ query(CHAR, "is dead",0,0,&ch,0,0); X+ sh->is_dead = ch; X ch = sh->is_docked; X query(CHAR, "is docked",0,0,&ch,0,0); X sh->is_docked = ch; X*** ../../GB/getplace.c Wed Apr 26 11:22:41 1989 X--- getplace.c Mon May 1 08:21:55 1989 X*************** X*** 44,53 **** X where.snum = where.shipptr->storbits; X where.pnum = where.shipptr->pnumorbits; X /* where.shipno already taken care of */ X! printf(" |%s|\n",string); X! while (isdigit(*string)) {putchr(*string),string++;} X! putchr(*string); X! printf(" |%s|\n",string); X if (*string=='/') X return Getplace2(string+1,&where, ignoreexpl); X else X--- 44,51 ---- X where.snum = where.shipptr->storbits; X where.pnum = where.shipptr->pnumorbits; X /* where.shipno already taken care of */ X! while (isdigit(*string)) X! string++; X if (*string=='/') X return Getplace2(string+1,&where, ignoreexpl); X else X*** ../../GB/help.c Wed Apr 26 11:22:42 1989 X--- help.c Mon May 1 08:21:55 1989 X*************** X*** 5,10 **** X--- 5,11 ---- X */ X X #include "tweakables.h" X+ #include "files.h" X X help(APcount, argn,args) X int APcount; X*************** X*** 25,31 **** X "tactical fire name mobilize telegram\n" X ); X } else { X! sprintf(s,"%s %s/%s.doc*", PAGER, DOCS, args[1] ); X system(s); X } X X--- 26,32 ---- X "tactical fire name mobilize telegram\n" X ); X } else { X! sprintf(s,"%s %s/%s.doc", PAGER, DOCS, args[1] ); X system(s); X } X X*** ../../GB/makeplanet.c Wed Apr 26 11:22:45 1989 X--- makeplanet.c Mon May 1 08:22:00 1989 X*************** X*** 13,19 **** X planettype Makeplanet(type) X int type; X { X! register int x,y; X sectortype *s; X planettype planet; X int i, atmos; X--- 13,19 ---- X planettype Makeplanet(type) X int type; X { X! reg int x,y; X sectortype *s; X planettype planet; X int i, atmos; X*************** X*** 54,60 **** X for (x=0; xdes = DES_GAS; /* for gasgiant */ X! s->fert=1; X } X if (planet.Maxx > MAP_GASGIANT_BANDMIN) { X int nbands; X--- 54,61 ---- X for (x=0; xdes = DES_GAS; /* for gasgiant */ X! s->fert = int_rand(2,15); X! s->resource = int_rand(3,20); X } X if (planet.Maxx > MAP_GASGIANT_BANDMIN) { X int nbands; X*************** X*** 64,70 **** X for (x=0; xdes = DES_SEA; /* make random bands of water */ X! s->fert += int_rand(2,3); X } X } X for (i=0; i<=MAP_ISLANDS*2; i++) { X--- 65,72 ---- X for (x=0; xdes = DES_SEA; /* make random bands of water */ X! s->fert += int_rand(2,6); X! s->resource += int_rand(30,40); X } X } X for (i=0; i<=MAP_ISLANDS*2; i++) { X*************** X*** 72,78 **** X x=int_rand(1,planet.Maxx-2); X s = &Sector(planet,x,y); X s->des = DES_SEA; /* make random spots of water */ X! s->fert += int_rand(2,3); X } X } else { X for (i=0; ides = DES_SEA; /* make random spots of water */ X! s->fert += int_rand(2,6); X } X } else { X for (i=0; ides=DES_MOUNT; X s->is_wasted = 1; X! s->resource=int_rand(5,12); X! s->fert=int_rand(5,12); X } else { X s->des=DES_SEA; X s->fert=int_rand(5,12); X--- 82,89 ---- X if (random()&01) { X s->des=DES_MOUNT; X s->is_wasted = 1; X! s->resource += int_rand(9,21); X! s->fert = int_rand(5,21); X } else { X s->des=DES_SEA; X s->fert=int_rand(5,12); X*************** X*** 109,122 **** X for (x=0; xdes = DES_MOUNT; /* for airless */ X- /*s->is_wasted=1; /* is wasteland */ X s->resource=int_rand(25,35); X! s->fert=1; X } X for (i=0; ides = DES_LAND; X! s->fert += random()&01; X s->resource+=int_rand(15,22); X } X Smashup(&planet,6,DES_LAND,5,1,1); /* make meteor impacts */ X--- 111,124 ---- X for (x=0; xdes = DES_MOUNT; /* for airless */ X s->resource=int_rand(25,35); X! s->fert=int_rand(0,int_rand(3,10)); X } X+ X for (i=0; ides = DES_LAND; X! s->fert += int_rand(3,17); X s->resource+=int_rand(15,22); X } X Smashup(&planet,6,DES_LAND,5,1,1); /* make meteor impacts */ X*************** X*** 138,144 **** X s = &Sector(planet,x,y); X s->des = int_rand(0,3) ? DES_MOUNT : DES_LAND; X s->is_wasted=1; X! s->resource=int_rand(55,85); X s->fert=(char)random()&01; X } X X--- 140,146 ---- X s = &Sector(planet,x,y); X s->des = int_rand(0,3) ? DES_MOUNT : DES_LAND; X s->is_wasted=1; X! s->resource=int_rand(101,500); X s->fert=(char)random()&01; X } X X*************** X*** 175,180 **** X--- 177,184 ---- X for (x=0; xdes=DES_SEA; /* make all water first */ X+ s->fert = int_rand(55,79); X+ s->resource = int_rand(20,30); X } X /* make first isolated islands */ X for (i=0; i<=MAP_ISLANDS; i++) { X*************** X*** 185,192 **** X s->fert = int_rand(6,20); X } X X! PermuteSects(&planet); /* mix up map */ X! (void)Getxysect(&planet,0,0,1); /* reset index */ X X landsects=0; X while (landsects<=Numlandsects) X--- 189,196 ---- X s->fert = int_rand(6,20); X } X X! /*PermuteSects(&planet); /* mix up map */ X! /*(void)Getxysect(&planet,0,0,1); /* reset index */ X X landsects=0; X while (landsects<=Numlandsects) X*************** X*** 195,201 **** X X X /* make more isolated islands */ X! for (i=0; i<=MAP_ISLANDS*4; i++) { X x=int_rand(0,planet.Maxx-1); X y=int_rand(0,planet.Maxy-1); X s = &Sector(planet,x,y); X--- 199,205 ---- X X X /* make more isolated islands */ X! for (i=0; i<=MAP_ISLANDS*3; i++) { X x=int_rand(0,planet.Maxx-1); X y=int_rand(0,planet.Maxy-1); X s = &Sector(planet,x,y); X*************** X*** 205,230 **** X s->fert = 45; X } X /* make some wasteland sectors (polar caps ) */ X /* do s pole */ X! for (y=planet.Maxy; y>=planet.Maxy-4; y--) X for (x=0; xfert = 45; X } X /* make some wasteland sectors (polar caps ) */ X+ /* { already done in Volcano } */ X /* do s pole */ X! /*for (y=planet.Maxy; y>=planet.Maxy-4; y--) X for (x=0; xMaxx-1); X! y = int_rand(0,pptr->Maxy-1);*/ X s = &Sector(*pptr,x,y); X X if (s->des==DES_SEA) { X if (Numneighbors(pptr,x,y,DES_LAND)||Numneighbors(pptr,x,y,DES_MOUNT)) { X s->des=(landsectors>(MAP_MOUNT_PERCENT*Numlandsects))?DES_LAND:DES_MOUNT; X--- 274,308 ---- X planettype *pptr; X int landsectors,Numlandsects; X { X! reg int x,y; X sectortype *s; X X! x = int_rand(0,pptr->Maxx-1); X! y = int_rand(0,pptr->Maxy-1); X s = &Sector(*pptr,x,y); X X+ if (y > pptr->Maxy/2) { X+ if (y==pptr->Maxy-1) { X+ s->des = DES_ICE; X+ return(1); X+ } else { X+ if ((Sector(*pptr,x,y+1).des==DES_ICE) && X+ (int_rand(-50,50)>pptr->conditions[RTEMP])) { X+ s->des = DES_ICE; X+ return(1); X+ } X+ } X+ } else { X+ if (y==0) { X+ s->des = DES_ICE; X+ return(1); X+ } else if ((Sector(*pptr,x,y-1).des==DES_ICE) && X+ (int_rand(-50,50)>pptr->conditions[RTEMP])) { X+ s->des = DES_ICE; X+ return(1); X+ } X+ } X+ X if (s->des==DES_SEA) { X if (Numneighbors(pptr,x,y,DES_LAND)||Numneighbors(pptr,x,y,DES_MOUNT)) { X s->des=(landsectors>(MAP_MOUNT_PERCENT*Numlandsects))?DES_LAND:DES_MOUNT; X*************** X*** 298,306 **** X /* return # of neighbors of a given designation that a sector has. */ X int Numneighbors(p,x,y,des) X planettype *p; X! register int x,y,des; X { X! register int d; X return (Sector(*p,mod(x-1,p->Maxx,d),y).des==des) + X (Sector(*p,mod(x+1,p->Maxx,d),y).des==des) + X ((y==0) ? 0 : (Sector(*p,x,y-1).des==des)) + X--- 320,328 ---- X /* return # of neighbors of a given designation that a sector has. */ X int Numneighbors(p,x,y,des) X planettype *p; X! reg int x,y,des; X { X! reg int d; X return (Sector(*p,mod(x-1,p->Maxx,d),y).des==des) + X (Sector(*p,mod(x+1,p->Maxx,d),y).des==des) + X ((y==0) ? 0 : (Sector(*p,x,y-1).des==des)) + X*** ../../GB/makeuniv.c Wed Apr 26 14:33:56 1989 X--- makeuniv.c Mon May 1 08:22:01 1989 X*************** X*** 36,43 **** X scanf("%d",&lowp); X printf("hi # of planets (%d-%d):",lowp,MAXPLANETS-1); X scanf("%d",&hip); X- printf("approx # of habitable planets:"); X- scanf("%d",&e); X getchr(); X X sprintf(str, "/bin/mkdir %s", DATADIR ); X--- 36,41 ---- X*************** X*** 54,65 **** X Bzero(*Stars[star]); X Star = Stars[star]; X Star->numplanets=int_rand(lowp,hip); X! Star->gravity = (float)int_rand(100000,1000000) / 100; X printf("name of star (%d planets):",Star->numplanets); X for (i=0; iname); X getchr(); X Star->xpos=(float)int_rand(-UNIVSIZE,UNIVSIZE); X--- 52,63 ---- X Bzero(*Stars[star]); X Star = Stars[star]; X Star->numplanets=int_rand(lowp,hip); X! Star->gravity = int_rand(10000,100000) / 100.0; X printf("name of star (%d planets):",Star->numplanets); X for (i=0; iname); X getchr(); X Star->xpos=(float)int_rand(-UNIVSIZE,UNIVSIZE); X*************** X*** 70,85 **** X X for (star=0; starnumplanets; i++) X- types[i] = 200; X- e2=e; X- while (e2--) { X- types[int_rand(0,Star->numplanets-1)] = TYPE_EARTH; X- } X for (i=0; inumplanets; i++) X! if (types[i]!=TYPE_EARTH) types[i]=int_rand(1,3); X for (i=0; inumplanets; i++) { X sprintf(Star->pnames[i],"%s-%s",Star->name,Romannums[i]); X if (argc==2 && argv[1][1]=='v') X--- 68,78 ---- X X for (star=0; starnumplanets; i++) X! types[i]=int_rand(TYPE_EARTH,TYPE_GASGIANT); X! X for (i=0; inumplanets; i++) { X sprintf(Star->pnames[i],"%s-%s",Star->name,Romannums[i]); X if (argc==2 && argv[1][1]=='v') X*************** X*** 98,107 **** X for (y=0; yVN) X return(Shipltrs[OTYPE_VN]); X switch (s->des) { X! case DES_SEA: return(CHAR_OWNED_SEA); X! case DES_LAND: return(Race->Thing ? CHAR_OWNED_THING : CHAR_OWNED_LAND); X! case DES_MOUNT: return(Race->Thing ? CHAR_OWNED_THING : CHAR_OWNED_MOUNT); X! case DES_GAS: return(CHAR_GAS); X! case DES_PLATED: return(CHAR_PLATED); X default: return('!'); X } X X--- 150,164 ---- X return(CHAR_OWNED_WASTELAND); X if (s->VN) X return(Shipltrs[OTYPE_VN]); X+ if (Race->Thing) X+ return CHAR_OWNED_THING; X switch (s->des) { X! case DES_SEA: return CHAR_OWNED_SEA; X! case DES_LAND: return CHAR_OWNED_LAND; X! case DES_MOUNT: return CHAR_OWNED_MOUNT; X! case DES_GAS: return CHAR_OWNED_GAS; X! case DES_PLATED: return CHAR_PLATED; X! case DES_ICE: return CHAR_OWNED_ICE; X default: return('!'); X } X X*************** X*** 175,183 **** X return(CHAR_WASTELAND); X switch (s->des) { X case DES_SEA: return(CHAR_SEA); X! case DES_LAND: return(CHAR_UNOWNED_LAND); X case DES_MOUNT: return(CHAR_MOUNT); X case DES_GAS: return(CHAR_GAS); X case DES_PLATED: return(CHAR_PLATED); X default: return('!'); X } X--- 178,187 ---- X return(CHAR_WASTELAND); X switch (s->des) { X case DES_SEA: return(CHAR_SEA); X! case DES_LAND: return(CHAR_LAND); X case DES_MOUNT: return(CHAR_MOUNT); X case DES_GAS: return(CHAR_GAS); X+ case DES_ICE: return CHAR_ICE; X case DES_PLATED: return(CHAR_PLATED); X default: return('!'); X } X*** ../../GB/more.c Wed Apr 26 11:22:49 1989 X--- more.c Mon May 1 08:22:05 1989 X*************** X*** 4,11 **** X #include X X X- char *doc_directory = "/b/o/therat/k"; X- X main(c, v) X int c; X char **v; X--- 4,9 ---- X*************** X*** 21,27 **** X int fd, pid; X long t; X X! sprintf(filename, "%s/%s.Z", doc_directory, s); X /* could stat the file here to make sure it's there */ X X time(&t); X--- 19,25 ---- X int fd, pid; X long t; X X! sprintf(filename, "%s", s); X /* could stat the file here to make sure it's there */ X X time(&t); X*************** X*** 105,108 **** X X return c; X } X- X--- 103,105 ---- X*** ../../GB/moveship.c Wed Apr 26 11:22:50 1989 X--- moveship.c Mon May 1 08:22:06 1989 X*************** X*** 91,104 **** X Ddist -= (SYSTEMSIZE - 1.0); X else if (s->whatdest==LEVEL_STAR) X Ddist -= PLORBITSIZE - 1.0; X! else if (s->whatdest==LEVEL_SHIP && Ddist > SYSTEMSIZE) { X if (!s->notified) { X s->notified = 1; X teleg_add("",telegram_buf); X sprintf(buf,"Telecomm from ship #%d at %s\n\n",shipno, X! prin_ship_orbits(s)); X teleg_add(buf,telegram_buf); X! sprintf(buf,"%s #%d cannot find destination ship #%d.\n", X Shipnames[s->type],shipno,s->destshipno); X teleg_add(buf,telegram_buf); X teleg_send(TELEG_PLAYER_AUTO, s->owner, telegram_buf); X--- 91,105 ---- X Ddist -= (SYSTEMSIZE - 1.0); X else if (s->whatdest==LEVEL_STAR) X Ddist -= PLORBITSIZE - 1.0; X! else if (s->whatdest==LEVEL_SHIP && Ddist > SYSTEMSIZE * 2.0) { X if (!s->notified) { X s->notified = 1; X+ s->whatdest = LEVEL_UNIV; X teleg_add("",telegram_buf); X sprintf(buf,"Telecomm from ship #%d at %s\n\n",shipno, X! prin_ship_orbits(s)); X teleg_add(buf,telegram_buf); X! sprintf(buf,"%s #%d lost sight of destination ship #%d.\n", X Shipnames[s->type],shipno,s->destshipno); X teleg_add(buf,telegram_buf); X teleg_send(TELEG_PLAYER_AUTO, s->owner, telegram_buf); X*************** X*** 111,127 **** X X else if (Ddist > DIST_TO_LAND) { X s->fuel -= fuse; X- printf(" subtracting %f fuel \n",fuse); X- /* subtract the fuel's mass */ X s->mass -= fuse * MASS_FUEL; X X /* dont overshoot */ X xdest = sin(heading) * mfactor; X- if (abs(xdest) > Ddist) X- xdest = sgn(xdest) * Ddist; X ydest = cos(heading) * mfactor; X! if (abs(ydest) > Ddist) X ydest = sgn(ydest) * Ddist; X s->xpos += xdest; X s->ypos += ydest; X } X--- 112,126 ---- X X else if (Ddist > DIST_TO_LAND) { X s->fuel -= fuse; X s->mass -= fuse * MASS_FUEL; X X /* dont overshoot */ X xdest = sin(heading) * mfactor; X ydest = cos(heading) * mfactor; X! if (sqrt(xdest*xdest + ydest*ydest) > Ddist) { X! xdest = sgn(xdest) * Ddist; X ydest = sgn(ydest) * Ddist; X+ } X s->xpos += xdest; X s->ypos += ydest; X } X*** ../../GB/orbit.c Wed Apr 26 11:22:52 1989 X--- orbit.c Mon May 1 08:22:07 1989 X*************** X*** 41,47 **** X int orbit_shdata,orbit_pdata,orbit_stardata; X X DontDispPlanets = DontDispShips = DontDispStars = 0; X- printf(" orbit:called |%s|\n",args[1]); X X /* find options, set flags accordingly */ X for (flag=1; flag<=argn-1; flag++) X--- 41,46 ---- X*************** X*** 70,76 **** X Lasty = Dir.lasty; X Zoom = Dir.zoom; X } else { X- printf(" trying to orbit %s\n",args[argn-1]); X where = Getplace(args[argn-1],0); X Lastx = Lasty = 0.0; X Zoom = 1.0; X--- 69,74 ---- X*************** X*** 172,178 **** X shipwhere.snum = where.shipptr->storbits; X shipwhere.pnum = where.shipptr->pnumorbits; X sprintf(gs[1],"%s",Dispplace(&shipwhere) ); X- printf(" orbiting %s\n",gs[1]); X orbit(0,2,gs); X } break; X X--- 170,175 ---- X*** ../../GB/order.c Wed Apr 26 14:29:29 1989 X--- order.c Mon May 1 08:22:09 1989 X*************** X*** 9,20 **** X #include X #include X #include X extern jmp_buf main_jenv; X X- extern char *Shipnames[]; X- X char *prin_aimed_at(), *prin_ship_dest(); X X int order_shdata,order_pdata,order_stardata; X static bool first,prerror,was_obj = 0; X X--- 9,20 ---- X #include X #include X #include X+ #include X extern jmp_buf main_jenv; X X char *prin_aimed_at(), *prin_ship_dest(); X X+ extern int Ignore_filelocks; X int order_shdata,order_pdata,order_stardata; X static bool first,prerror,was_obj = 0; X X*************** X*** 219,227 **** X tty_on(); X do { X c = getchr(); X! } while (iscntrl(c) && c!='\033'); X switch (c) { X! case '\033': { shiptype *tempship; X tempship = oldship; X ship = oldship; X oldship = tempship; X--- 219,227 ---- X tty_on(); X do { X c = getchr(); X! } while (iscntrl(c) && c!=''); X switch (c) { X! case '': { shiptype *tempship; X tempship = oldship; X ship = oldship; X oldship = tempship; X*************** X*** 246,251 **** X--- 246,252 ---- X case OTYPE_TRANSDEV: X printw("Ready to receive."); X break; X+ default: break; X } X } X } X*************** X*** 262,273 **** X ungetc(c,stdin); X scanw("%43s",s); X move(Erry,0); refresh(); X where = Getplace(s, 1); X if (!where.err) { X ship->whatdest = where.level; X ship->deststar = where.snum; X ship->destpnum = where.pnum; X! ship->destshipno = where.shipno; X } X } X tty_on(); X--- 263,282 ---- X ungetc(c,stdin); X scanw("%43s",s); X move(Erry,0); refresh(); X+ Ignore_filelocks = 1; X where = Getplace(s, 1); X+ Ignore_filelocks = 0; X if (!where.err) { X+ if (where.level==LEVEL_SHIP) { X+ /*if (sqrt(Distsq(ship->xpos, ship->ypos, where.shipptr->xpos,where.shipptr->ypos))destshipno = where.shipno; X+ ship->whatdest = LEVEL_SHIP; X+ /*} else { move(Erry,0); printw("Ship #%d can't find ship #%d.", shipno, where.shipno); }*/ X+ } else { X ship->whatdest = where.level; X ship->deststar = where.snum; X ship->destpnum = where.pnum; X! } X } X } X tty_on(); X*************** X*** 517,522 **** X--- 526,532 ---- X int sig,code; X struct sigcontext *scp; X { X+ Ignore_filelocks = 0; X close(order_shdata); X close(order_pdata); X close(order_stardata); X*** ../../GB/prof.c Wed Apr 26 11:22:55 1989 X--- prof.c Mon May 1 08:22:10 1989 X*************** X*** 40,45 **** X--- 40,52 ---- X Race->conditions[NITROGEN], Race->conditions[SULFUR] ); X printf(" helium %02d%% other %02d%%\n", X Race->conditions[HELIUM], Race->conditions[OTHER]); X+ printf("Sector type preferences:\n"); X+ printf(" %c %.1f%% %c %.1f%%\n", CHAR_SEA, Race->likes[DES_SEA]*100, X+ CHAR_GAS, Race->likes[DES_GAS]*100); X+ printf(" %c %.1f%% %c %.1f%%\n", CHAR_MOUNT, Race->likes[DES_MOUNT]*100, X+ CHAR_LAND, Race->likes[DES_LAND]*100); X+ printf(" %c %.1f%% %c %.1f%%\n", CHAR_ICE, Race->likes[DES_ICE]*100, X+ CHAR_PLATED, Race->likes[DES_PLATED]*100); X X printf("\nRelations with other races:\nPlayer relation\n"); X numraces = Numraces(); X*** ../../GB/rand.c Wed Apr 26 11:22:56 1989 X--- rand.c Mon May 1 08:22:11 1989 X*************** X*** 20,32 **** X X float float_rand() X { X! return (-(float)random()/ 2147483648); X } X X int int_rand(low,hi) X register int low,hi; X { X! return( (hi<=low) ? low : (float_rand() * (hi - low + 1)) + low ); X } X X X--- 20,32 ---- X X float float_rand() X { X! return random()/ 2147483648.0; X } X X int int_rand(low,hi) X register int low,hi; X { X! return( (hi<=low) ? low : (random() % (hi - low + 1)) + low ); X } X X X*** ../../GB/scrap.c Wed Apr 26 11:23:00 1989 X--- scrap.c Mon May 1 08:22:13 1989 X*************** X*** 61,71 **** X getplanet(scrap_pdata, &planet, Stars[s->storbits]->planetpos[s->pnumorbits]); X X scrapval = Shipdata[s->type][ABIL_COST] * .75 + s->resource; X X tty_on(); X printf("%s #%d:original cost: %d\n", X Shipnames[s->type], shipno, Shipdata[s->type][ABIL_COST]); X! printf(" scrap value%s: %d. Junk (y/n)?", X s->resource ? "(with stockpile) " : "", scrapval); X X if (getchr()!='y') { X--- 61,74 ---- X getplanet(scrap_pdata, &planet, Stars[s->storbits]->planetpos[s->pnumorbits]); X X scrapval = Shipdata[s->type][ABIL_COST] * .75 + s->resource; X+ if (s->type==OTYPE_VN) X+ scrapval += (s->orders.object.number-1) * Shipdata[s->type][ABIL_COST]; X X tty_on(); X printf("%s #%d:original cost: %d\n", X Shipnames[s->type], shipno, Shipdata[s->type][ABIL_COST]); X! printf(" %s scrap value%s: %d. Junk (y/n)?", X! s->type==OTYPE_VN ? "total" : "", X s->resource ? "(with stockpile) " : "", scrapval); X X if (getchr()!='y') { X*** ../../GB/shlmisc.c Wed Apr 26 14:39:13 1989 X--- shlmisc.c Mon May 1 08:22:14 1989 X*************** X*** 5,10 **** X--- 5,11 ---- X X #include "vars.h" X #include "races.h" X+ #include X #include X #include X #include X*************** X*** 174,179 **** X for (j=0; jshipptr->ypos; X } X X! dist = sqrt( (double)Distsq(xfrom, yfrom, xto, yto)) + 50.0; X! /* (adjust for too close) */ X! if (dist > SYSTEMSIZE) { X /* out of range */ X return -1; X } else { X X! str = (double)strength * FACTOR_DAMAGE / dist; X printf(" str = %f, rad = %f\n",str,str*FACTOR_DESTPLANET); X X r = blast(to, tpl, sectorx, sectory, str * FACTOR_DESTPLANET, str); X--- 43,55 ---- X yto = to->shipptr->ypos; X } X X! *dist = sqrt( (double)Distsq(xfrom, yfrom, xto, yto)); X! if (*dist > SYSTEMSIZE*2.0) { X /* out of range */ X return -1; X } else { X X! str = strength * FACTOR_DAMAGE / (*dist+50.0); X printf(" str = %f, rad = %f\n",str,str*FACTOR_DESTPLANET); X X r = blast(to, tpl, sectorx, sectory, str * FACTOR_DESTPLANET, str); X*** ../../GB/teleg_send.c Wed Apr 26 11:23:03 1989 X--- teleg_send.c Mon May 1 08:22:17 1989 X*************** X*** 5,10 **** X--- 5,11 ---- X X X #include "tweakables.h" X+ #include "files.h" X #include X #include X #include END_OF_FILE echo shar: 2 control characters may be missing from \"'patches01a'\" if test 50459 -ne `wc -c <'patches01a'`; then echo shar: \"'patches01a'\" unpacked with wrong size! fi # end of 'patches01a' fi echo shar: End of shell archive. exit 0