home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / gb2 / patch1d < prev    next >
Encoding:
Internet Message Format  |  1989-09-18  |  53.6 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i029:  GB2 - Galactic Bloodshed, an empire-like war game [Ver. 1.0], Patch1d
  5. Message-ID: <4578@tekred.CNA.TEK.COM>
  6. Date: 15 Sep 89 15:30:40 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 1681
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: VANCLEEF@mps.ohio-state.edu
  12. Posting-number: Volume 8, Issue 29
  13. Archive-name: GB2/Patch1d
  14. Patch-To: GB2: Volume 7, Issue 44-51
  15.  
  16.     [Because the doc files are in a subdirectory, you must use
  17.      the '-p' option to patch(1) when applying this patch file:
  18.      e.g., patch -p <patches01d.    -br]
  19.  
  20. #! /bin/sh
  21. # This is a shell archive.  Remove anything before this line, then unpack
  22. # it by saving it into a file and typing "sh file".  To overwrite existing
  23. # files, type "sh file -c".  You can also feed this as standard input via
  24. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  25. # will see the following message at the end:
  26. #        "End of archive 4 (of 4)."
  27. # Contents:  patches01d
  28. # Wrapped by billr@saab on Fri Sep 15 08:22:30 1989
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'patches01d' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'patches01d'\"
  32. else
  33. echo shar: Extracting \"'patches01d'\" \(51327 characters\)
  34. sed "s/^X//" >'patches01d' <<'END_OF_FILE'
  35. X*** ../../GB2/perm.c    Wed Jul  5 15:15:43 1989
  36. X--- perm.c    Fri Sep 15 07:28:39 1989
  37. X***************
  38. X*** 1,5 ****
  39. X  
  40. X- 
  41. X  /*
  42. X   * Galactic Bloodshed (Robert Chansky, smq@ucscb.ucsc.edu)
  43. X   * perm.c -- randomly permute a sector list
  44. X--- 1,4 ----
  45. X*** ../../GB2/power.c    Wed Jul  5 15:15:43 1989
  46. X--- power.c    Fri Sep 15 07:28:40 1989
  47. X***************
  48. X*** 1,5 ****
  49. X  
  50. X- 
  51. X  /*
  52. X   * Galactic Bloodshed (Robert Chansky, smq@ucscb.ucsc.edu)
  53. X   * power.c -- display power report
  54. X--- 1,4 ----
  55. X*** ../../GB2/power.h    Wed Jul  5 15:14:54 1989
  56. X--- power.h    Fri Sep 15 07:27:37 1989
  57. X***************
  58. X*** 1,5 ****
  59. X  
  60. X- 
  61. X      /* for power report */
  62. X  struct power {
  63. X      ul popn;    /* total population */
  64. X--- 1,4 ----
  65. X*** ../../GB2/prof.c    Wed Jul  5 15:15:44 1989
  66. X--- prof.c    Fri Sep 15 07:28:41 1989
  67. X***************
  68. X*** 1,5 ****
  69. X  
  70. X- 
  71. X  /*
  72. X   * Galactic Bloodshed (Robert Chansky, smq@b)
  73. X   * prof.c -- print out racial profile
  74. X--- 1,4 ----
  75. X*** ../../GB2/rst.c    Wed Jul  5 15:15:49 1989
  76. X--- rst.c    Fri Sep 15 07:28:45 1989
  77. X***************
  78. X*** 104,111 ****
  79. X     case LEVEL_SHIP:
  80. X        openshdata(&shdata);
  81. X        Getrship(shdata,rd, Dir.shipno);
  82. X-       close(shdata);
  83. X        ship_report(rd,0);        /* first ship report */
  84. X        break;
  85. X    }
  86. X  
  87. X--- 104,130 ----
  88. X     case LEVEL_SHIP:
  89. X        openshdata(&shdata);
  90. X        Getrship(shdata,rd, Dir.shipno);
  91. X        ship_report(rd,0);        /* first ship report */
  92. X+ 
  93. X+     if(rd[0].s->type == STYPE_CARRIER) /* list attached fighter groups */
  94. X+     {
  95. X+       openshdata(&shdata);
  96. X+       shn = rd[0].s->object.number;
  97. X+        Num_ships = 0;    
  98. X+       while (shn) {
  99. X+           Getrship(shdata,rd, shn);
  100. X+           shn = rd[Num_ships-1].s->object.number;
  101. X+       }
  102. X+       close(shdata);
  103. X+ 
  104. X+     for (i=0; i<Num_ships; i++)
  105. X+         ship_report(rd,i);
  106. X+ 
  107. X+ 
  108. X+ 
  109. X+     }
  110. X+ 
  111. X+       close(shdata);
  112. X        break;
  113. X    }
  114. X  
  115. X***************
  116. X*** 120,126 ****
  117. X  {
  118. X   shiptype *s;
  119. X   planettype *p;
  120. X!  int shipno;
  121. X   reg int i;
  122. X   placetype where;
  123. X   char orb[PLACENAMESIZE];
  124. X--- 139,145 ----
  125. X  {
  126. X   shiptype *s;
  127. X   planettype *p;
  128. X!  int shipno,test;
  129. X   reg int i;
  130. X   placetype where;
  131. X   char orb[PLACENAMESIZE];
  132. X***************
  133. X*** 133,153 ****
  134. X  
  135. X  
  136. X      /* launched canister, non-owned ships don't show up */
  137. X!   if ( (rd[indx].type==PLANET && p->info[Playernum-1].numsectsowned)
  138. X!       || (rd[indx].type!=PLANET && s->owner==Playernum && 
  139. X!     !(s->type==OTYPE_CANIST && !s->is_docked) && !s->is_dead) ) {
  140. X  
  141. X- 
  142. X     if (rd[indx].type!=PLANET && Stock) {
  143. X      if (first) {
  144. X!       printf("  #   mass res  ^res  dest ^dest   fuel ^fuel  crew ^crew dock\n");
  145. X        if (!Ship && !Object)
  146. X            first=0;
  147. X      }
  148. X!     /*if (is_object(s) == Object)*/
  149. X!      if (s->owner == Playernum || God) {
  150. X!       printf("%3d %c%5.1f%4u%6d%6u%6d%7.1f%6d%6u%6d%5s",
  151. X!     shipno, Shipltrs[s->type], s->mass,
  152. X      s->resource, Shipdata[s->type][ABIL_CARGO],
  153. X      s->destruct, Shipdata[s->type][ABIL_DESTCAP],
  154. X      s->fuel, Shipdata[s->type][ABIL_FUELCAP],
  155. X--- 152,171 ----
  156. X  
  157. X  
  158. X      /* launched canister, non-owned ships don't show up */
  159. X!     if ( (rd[indx].type==PLANET && p->info[Playernum-1].numsectsowned)
  160. X!       || (rd[indx].type!=PLANET && s->owner==Playernum &&
  161. X!     !(s->type==OTYPE_CANIST && !s->is_docked) && s->is_alive) ) {
  162. X  
  163. X     if (rd[indx].type!=PLANET && Stock) {
  164. X      if (first) {
  165. X!       printf("  #   own mass res  ^res  dest ^dest   fuel ^fuel  crew ^crew dock\n");
  166. X        if (!Ship && !Object)
  167. X            first=0;
  168. X      }
  169. X! 
  170. X! 
  171. X!       printf("%3d %c%3d %5.1f%4u%6d%6u%6d%7.1f%6d%6u%6d%5s",
  172. X!     shipno, Shipltrs[s->type], s->owner,s->mass,
  173. X      s->resource, Shipdata[s->type][ABIL_CARGO],
  174. X      s->destruct, Shipdata[s->type][ABIL_DESTCAP],
  175. X      s->fuel, Shipdata[s->type][ABIL_FUELCAP],
  176. X***************
  177. X*** 154,199 ****
  178. X      s->popn, Shipdata[s->type][ABIL_MAXCREW],
  179. X      (s->is_docked) ? ((s->whatdest==LEVEL_PLAN) ? "land" : "dock") :"    ");
  180. X        if (s->type==OTYPE_VN) 
  181. X!     printf(" * %d",s->orders.object.number);
  182. X        if (s->rad)
  183. X      printf(" INACTIVE(%d)",s->rad);
  184. X        putchr('\n');
  185. X  
  186. X-     }
  187. X     }
  188. X     if (rd[indx].type!=PLANET && Report) {
  189. X           if (first) {
  190. X!          printf("  #    own crew dam dest  fuel speed              orbits           destination\n");
  191. X           if (!Ship && !Object)
  192. X                first=0;
  193. X       }
  194. X  
  195. X!     if (s->owner == Playernum || God) {
  196. X!      /*if (is_object(s) == Object) */
  197. X!        printf("%3d %c%5u%4u%4u%5u%7.1f%4u%5s%20s%20s",
  198. X!         shipno, Shipltrs[s->type],
  199. X!         s->owner, s->popn, s->damage, s->destruct, s->fuel, s->speed, 
  200. X          (s->is_docked) ? ( (s->whatdest==LEVEL_SHIP) ? "dock" 
  201. X              : "land") : "    ",
  202. X          prin_ship_orbits(s), prin_ship_dest(s) );
  203. X!          if (s->type==OTYPE_VN) printf("* %d",s->orders.object.number);
  204. X        if (s->rad)
  205. X      printf(" INACTIVE(%d)",s->rad);
  206. X           putchr('\n');
  207. X  
  208. X-     }
  209. X     }
  210. X  
  211. X     if (Tactical) {
  212. X  
  213. X!     printf("\n  # typ GUNS dest  fuel dam    x,y abs         x,y rel    orbits\n");
  214. X  
  215. X      if (rd[indx].type==PLANET) {
  216. X          /* tac report from planet */
  217. X!         printf("(planet)%4d%5u%6u    %7.0f,%-7.0f %7.0f,%-7.0f%10s\n",
  218. X              PLAN_FIRE_LIM, p->info[Playernum-1].destruct,
  219. X              p->info[Playernum-1].fuel,
  220. X-             rd[indx].x , rd[indx].y, p->xpos, p->ypos,
  221. X              Stars[rd[indx].star]->pnames[rd[indx].pnum]);
  222. X  
  223. X      } else {
  224. X--- 172,215 ----
  225. X      s->popn, Shipdata[s->type][ABIL_MAXCREW],
  226. X      (s->is_docked) ? ((s->whatdest==LEVEL_PLAN) ? "land" : "dock") :"    ");
  227. X        if (s->type==OTYPE_VN) 
  228. X!     printf(" * %d",s->object.number);
  229. X        if (s->rad)
  230. X      printf(" INACTIVE(%d)",s->rad);
  231. X        putchr('\n');
  232. X  
  233. X     }
  234. X+ 
  235. X+ 
  236. X+ 
  237. X     if (rd[indx].type!=PLANET && Report) {
  238. X           if (first) {
  239. X!          printf("  #              crew dam dest  fuel speed          orbits          destination\n");
  240. X           if (!Ship && !Object)
  241. X                first=0;
  242. X       }
  243. X  
  244. X!        printf("%3d %c%11s%4u%4u%5u%7.1f%4u%5s%17s%17s",
  245. X!         shipno, Shipltrs[s->type], s->name,
  246. X!         s->popn, s->damage, s->destruct, s->fuel, s->speed, 
  247. X          (s->is_docked) ? ( (s->whatdest==LEVEL_SHIP) ? "dock" 
  248. X              : "land") : "    ",
  249. X          prin_ship_orbits(s), prin_ship_dest(s) );
  250. X!          if (s->type==OTYPE_VN) printf("* %d",s->object.number);
  251. X        if (s->rad)
  252. X      printf(" INACTIVE(%d)",s->rad);
  253. X           putchr('\n');
  254. X  
  255. X     }
  256. X  
  257. X     if (Tactical) {
  258. X  
  259. X!     printf("\n  # typ      name       GUNS dest  fuel dam     orbits\n");
  260. X  
  261. X      if (rd[indx].type==PLANET) {
  262. X          /* tac report from planet */
  263. X!         printf("(planet)               %4d%5u%6u    %10s\n",
  264. X              PLAN_FIRE_LIM, p->info[Playernum-1].destruct,
  265. X              p->info[Playernum-1].fuel,
  266. X              Stars[rd[indx].star]->pnames[rd[indx].pnum]);
  267. X  
  268. X      } else {
  269. X***************
  270. X*** 202,213 ****
  271. X         where.snum = s->storbits;
  272. X         where.pnum = s->pnumorbits;
  273. X        sprintf(orb, "%.30s", Dispplace(&where));
  274. X!       printf("%3d  %c%6d%5u%6.1f%4u%7.0f,%-7.0f %7.0f,%-7.0f%10s",
  275. X!         shipno, Shipltrs[s->type], Shipdata[s->type][ABIL_GUNS],
  276. X!         s->destruct, s->fuel, s->damage, 
  277. X!         s->xpos, s->ypos, s->xpos-rd[indx].x, s->ypos-rd[indx].y, orb );
  278. X        if (s->type == OTYPE_VN)
  279. X!         printf(" * %d", s->orders.object.number);
  280. X            if (s->rad)
  281. X          printf(" INACTIVE(%d)",s->rad);
  282. X        putchr('\n');
  283. X--- 218,228 ----
  284. X         where.snum = s->storbits;
  285. X         where.pnum = s->pnumorbits;
  286. X        sprintf(orb, "%.30s", Dispplace(&where));
  287. X!       printf("%3d  %c%15s%6d%5u%6.1f%4u  %10s",
  288. X!         shipno, Shipltrs[s->type], s->name,Shipdata[s->type][ABIL_GUNS],
  289. X!         s->destruct, s->fuel, s->damage, orb );
  290. X        if (s->type == OTYPE_VN)
  291. X!         printf(" * %d", s->object.number);
  292. X            if (s->rad)
  293. X          printf(" INACTIVE(%d)",s->rad);
  294. X        putchr('\n');
  295. X***************
  296. X*** 215,243 ****
  297. X      }
  298. X  
  299. X          /* tactical display */
  300. X!     printf("           Tac display:  # own typ     rng    %%dam %%dam given\n");
  301. X      for (i=0; i<Num_ships; i++) {
  302. X         if (i!=indx && (Dist = sqrt(Distsq(rd[indx].x, rd[indx].y, 
  303. X                  rd[i].x, rd[i].y))) < gun_range(Race, NULL))
  304. X            if (rd[i].type==PLANET) {
  305. X          /* tac report at planet */
  306. X!            printf("             %13s(planet)%8.1f      %13.1f\n", 
  307. X!             Stars[rd[i].star]->pnames[rd[i].pnum], Dist, 
  308. X!             Kill_factor(Dist, rd[indx].type==PLANET ? PLAN_FIRE_LIM
  309. X!                     : Shipdata[s->type][ABIL_GUNS])
  310. X!                     * FACTOR_DESTPLANET );
  311. X            } else {
  312. X              /* tac report at ship */
  313. X  
  314. X          if (rd[i].s->owner!=Playernum) {
  315. X!            printf("           %15d%4d  %c%9.1f%8u%11.1f%%",
  316. X!             rd[i].n, rd[i].s->owner, Shipltrs[rd[i].s->type], Dist,
  317. X!             rd[i].s->damage,
  318. X!             Kill_factor(Dist, rd[indx].type==PLANET ? PLAN_FIRE_LIM
  319. X!                 : Shipdata[s->type][ABIL_GUNS]) / 
  320. X!                 (float)Shipdata[rd[i].s->type][ABIL_ARMOR]);
  321. X             if (rd[i].s->type==OTYPE_VN)
  322. X!             printf(" * %d", rd[i].s->orders.object.number);
  323. X             putchr('\n');
  324. X          }
  325. X            }
  326. X--- 230,253 ----
  327. X      }
  328. X  
  329. X          /* tactical display */
  330. X!     printf("           Tac display:  # own typ        name        rng    %%dam \n");
  331. X      for (i=0; i<Num_ships; i++) {
  332. X         if (i!=indx && (Dist = sqrt(Distsq(rd[indx].x, rd[indx].y, 
  333. X                  rd[i].x, rd[i].y))) < gun_range(Race, NULL))
  334. X            if (rd[i].type==PLANET) {
  335. X          /* tac report at planet */
  336. X!            printf("             %13s(planet)               %8.1f\n", 
  337. X!             Stars[rd[i].star]->pnames[rd[i].pnum], Dist);
  338. X! 
  339. X            } else {
  340. X              /* tac report at ship */
  341. X  
  342. X          if (rd[i].s->owner!=Playernum) {
  343. X!            printf("           %15d%4d  %c%15s%9.1f%8u",
  344. X!             rd[i].n, rd[i].s->owner, Shipltrs[rd[i].s->type], 
  345. X!             rd[i].s->name, Dist, rd[i].s->damage);
  346. X             if (rd[i].s->type==OTYPE_VN)
  347. X!             printf(" * %d", rd[i].s->object.number);
  348. X             putchr('\n');
  349. X          }
  350. X            }
  351. X***************
  352. X*** 260,268 ****
  353. X   int shdata,pdata;
  354. X  
  355. X   openpdata(&pdata);
  356. X-   Locks(1);
  357. X     getplanet(pdata, &rd[Num_ships].p, Stars[snum]->planetpos[pnum]);
  358. X-   Locks(0);
  359. X   close(pdata);
  360. X   p = rd[Num_ships].p;
  361. X      /* add this planet into the ship list */
  362. X--- 270,276 ----
  363. X***************
  364. X*** 279,284 ****
  365. X--- 287,293 ----
  366. X     openshdata(&shdata);
  367. X     shn = p->ships;
  368. X     while (shn) {
  369. X+ 
  370. X      Getrship(shdata, rd, shn);
  371. X          /* add offsets for docked ships */
  372. X      if (rd[Num_ships-1].s->is_docked && 
  373. X***************
  374. X*** 303,308 ****
  375. X--- 312,318 ----
  376. X   reg int shn;
  377. X   int i,shdata;
  378. X  
  379. X+ 
  380. X   if (isset(Stars[snum]->inhabited, Playernum)) {
  381. X     openshdata(&shdata);
  382. X     shn = Stars[snum]->ships;
  383. X***************
  384. X*** 324,336 ****
  385. X  {
  386. X  int noerr;
  387. X  
  388. X-    Locks(1);
  389. X      noerr = getship(shdata,&rd[Num_ships].s,shipno);
  390. X!    Locks(0);
  391. X     rd[Num_ships].type = 0;
  392. X     rd[Num_ships].n = shipno;
  393. X     rd[Num_ships].x = rd[Num_ships].s->xpos;
  394. X     rd[Num_ships].y = rd[Num_ships].s->ypos;
  395. X     if (noerr)
  396. X      Num_ships++;
  397. X  }
  398. X--- 334,348 ----
  399. X  {
  400. X  int noerr;
  401. X  
  402. X      noerr = getship(shdata,&rd[Num_ships].s,shipno);
  403. X! 
  404. X! 
  405. X     rd[Num_ships].type = 0;
  406. X     rd[Num_ships].n = shipno;
  407. X     rd[Num_ships].x = rd[Num_ships].s->xpos;
  408. X     rd[Num_ships].y = rd[Num_ships].s->ypos;
  409. X+ 
  410. X+ 
  411. X     if (noerr)
  412. X      Num_ships++;
  413. X  }
  414. X*** ../../GB2/scrap.c    Wed Jul  5 15:15:50 1989
  415. X--- scrap.c    Fri Sep 15 07:28:46 1989
  416. X***************
  417. X*** 1,5 ****
  418. X  
  419. X- 
  420. X  /*
  421. X   * Galactic Bloodshed (Robert Chansky, smq@ssyx.ucsc.edu)
  422. X   * scrap.c -- turn a ship to junk
  423. X--- 1,4 ----
  424. X***************
  425. X*** 42,48 ****
  426. X      scrap_handler();
  427. X   }
  428. X  
  429. X!  if (s->owner!=Playernum || s->is_dead) {
  430. X      DontOwnErr(shipno);
  431. X      free(s);
  432. X      scrap_handler();
  433. X--- 41,47 ----
  434. X      scrap_handler();
  435. X   }
  436. X  
  437. X!  if (s->owner!=Playernum || !s->is_alive) {
  438. X      DontOwnErr(shipno);
  439. X      free(s);
  440. X      scrap_handler();
  441. X***************
  442. X*** 57,63 ****
  443. X  
  444. X  
  445. X   if (s->whatorbits==LEVEL_PLAN && s->type==OTYPE_TOXWC)
  446. X!     printf("WARNING: This will release %d toxin points back into the atmosphere!!\n", s->orders.object.number);
  447. X  
  448. X  
  449. X   if ( !(s->is_docked && s->whatdest==LEVEL_PLAN)) {
  450. X--- 56,62 ----
  451. X  
  452. X  
  453. X   if (s->whatorbits==LEVEL_PLAN && s->type==OTYPE_TOXWC)
  454. X!     printf("WARNING: This will release %d toxin points back into the atmosphere!!\n", s->object.number);
  455. X  
  456. X  
  457. X   if ( !(s->is_docked && s->whatdest==LEVEL_PLAN)) {
  458. X***************
  459. X*** 83,91 ****
  460. X   }
  461. X  
  462. X       scrapval = Shipdata[s->type][ABIL_COST] * .75;
  463. X!     if ( s->type!=OTYPE_VN ) scrapval += s->resource;
  464. X   if (s->type==OTYPE_VN)
  465. X!     scrapval += .75 * (s->orders.object.number-1) * Shipdata[s->type][ABIL_COST];
  466. X  
  467. X   if (s->is_docked && s->whatdest==LEVEL_PLAN) {
  468. X       tty_on();
  469. X--- 82,92 ----
  470. X   }
  471. X  
  472. X       scrapval = Shipdata[s->type][ABIL_COST] * .75;
  473. X! /*    if ( s->type != OTYPE_VN ) scrapval += s->resource;
  474. X!     if ( s->type == OTYPE_VN ) scrapval = 0;
  475. X! */
  476. X   if (s->type==OTYPE_VN)
  477. X!     scrapval += .25 * (s->object.number-1) * Shipdata[s->type][ABIL_COST];
  478. X  
  479. X   if (s->is_docked && s->whatdest==LEVEL_PLAN) {
  480. X       tty_on();
  481. X***************
  482. X*** 120,129 ****
  483. X  
  484. X       /* distribute poison over planet even if orbiting */
  485. X     if (s->type==OTYPE_TOXWC) {
  486. X!     if (planet->conditions[TOXIC] > 100 - s->orders.object.number)
  487. X          planet->conditions[TOXIC] = 100;
  488. X      else
  489. X!         planet->conditions[TOXIC] += s->orders.object.number;
  490. X      printf("Planetary toxin concentration is now %d.\n", 
  491. X          planet->conditions[TOXIC]);
  492. X     }
  493. X--- 121,130 ----
  494. X  
  495. X       /* distribute poison over planet even if orbiting */
  496. X     if (s->type==OTYPE_TOXWC) {
  497. X!     if (planet->conditions[TOXIC] > 100 - s->object.number)
  498. X          planet->conditions[TOXIC] = 100;
  499. X      else
  500. X!         planet->conditions[TOXIC] += s->object.number;
  501. X      printf("Planetary toxin concentration is now %d.\n", 
  502. X          planet->conditions[TOXIC]);
  503. X     }
  504. X*** ../../GB2/shipdata.h    Wed Jul  5 15:14:55 1989
  505. X--- shipdata.h    Fri Sep 15 07:27:39 1989
  506. X***************
  507. X*** 2,68 ****
  508. X   * Galactic Bloodshed (Robert Chansky, smq@b)
  509. X   */
  510. X  
  511. X! char Shipltrs[]={ 'p','s','D','B','I','C','d','f','c','e','t','S','O','$', 
  512. X!     '+','m','H','=','/','T','A','g','V','^',' ','L','w','Y','G','&',
  513. X!     '-','>','"','[' };
  514. X  
  515. X  int Shipdata[NUMSTYPES][NUMABILS] = {
  516. X!    /* cargo destcap guns  fuelcap  tech  crew   armr cost  mass lnd sw sp*/
  517. X! /*SPd*/1,     0,     0,     20,    1,     1,      1,  10,   3,   1, 0, 1,
  518. X! /*Shu*/10,    2,     1,     20,       10,    25,     1,  50,   2,   1, 0, 2,
  519. X! /*Drn*/100,   500,   60,    500,   500,   60,    20, 2000,  40,  0, 0, 2,
  520. X! /*BB */35,    300,   30,    200,   200,   100,    15, 500,  20,  1, 0, 2,
  521. X! /*Int*/10,    120,   40,    200,   500,   20,     10, 1000, 5,   1, 0, 4,
  522. X! /*CA */15,    200,   20,    120,   150,   60,     10,  300, 10,  1, 0, 3,
  523. X! /*DD */10,    100,   10,     80,   100,   30,      5,  200,  5,  1, 0, 4,
  524. X! /*FF */0,     50,    10,    10,       200,    1,     2,  30,   1,   1, 0, 4,
  525. X! /*Crg*/1000,  1000,  5,     1000,  100,  100,    3,  200,  20,   1, 0, 2,
  526. X! /*Exp*/0,     15,    5,     35,    20,    2,      1,  100,   1,  1, 0, 4,
  527. X! /*Tnk*/15,    10,    5,     5000,  100,    50,    3,  400,  20,  1, 0, 2,
  528. X! /*Stn*/5000,  250,   40,    500,   100,    1000, 10,  400,  100, 1, 0, 2,
  529. X! /*OSP*/1000,  1000,  50,    1000,   200,   1000,   8, 800,  100, 0, 0, 2,
  530. X! /*GOD*/50000, 50000, 50000, 50000, 5000,  50000,  100,100,  1,   1, 0, 4,
  531. X! /*SMn*/0,     50,    0,     20,    50,    0,    5,    50,   10,  1, 1, 2,
  532. X!    /* cargo destcap guns  fuelcap  tech  crew   armr cost  mass  mv sw */
  533. X! /*mir*/200,   10,     1,     20,    200,  15,     1,  100,  100, 0, 0, 1,
  534. X! /*Hab*/5000, 500,    20,    5000,   100, 2000,    9, 1000,  100, 0, 0, 1,
  535. X! /*Stc*/0,     0,     0,     20,    50,    5,      1,  50,    2,  1, 0, 2,
  536. X! /*Tsc*/0,     0,     0,     0,     5,     10,     1,  10,   5,   1, 0, 0,
  537. X! /*T-R*/0,     0,     0,     1000,  100,   15,     1,  120,  10,  1, 1, 1,
  538. X! /*APr*/0,     0,     0,     200,    50,    10,     1,  80,   40,  1, 1, 0,
  539. X! /*CD */0,     0,     0,     1,     40,    0,      1,  20,   5,   1, 0, 1,
  540. X! /*VN */20,    0,     0,     50,    80,    0,      1,  15,   10,  1, 1, 1,
  541. X! /*PB */0,     20,    0,     5,     300,   0,      1,  100,  5,   1, 1, 1,
  542. X! /*ClD*/0,     10,    0,     0,     250,   0,      1,  25,   6,   1, 1, 0,
  543. X! /*OMCL*/0,   100,  10,     100,    350,   5,      1, 100,   4,   1, 1, 2,
  544. X! /*TWC*/0,     0,     0,     20,    25,    0,      1,  50,   15,  1, 0, 1,
  545. X! /*AY */0,     10,    0,     0,     90,    0,      1,  25,   6,   1, 0, 0,
  546. X! /*Gr */0,     100,   25,    0,     80,    5,      1,  25,   6,   1, 0, 0,
  547. X! /*SA */5000,  5000,  100,   50000, 10000, 0,      55, 1,    500, 1, 0, 1,
  548. X! /*LTr*/100,    5,    5,      20,    0,   20,     2,   1,    4,  1, 1, 0,
  549. X! /*Otr*/ 100,     5,  5,       20,    0,   20,     2,   3,    3,  1, 0, 0,
  550. X! /*DgT*/1000,  1000,  0,    1000,  200,    1000,   1,  800,  80,  1, 1, 0,
  551. X! /*TD */1000,  1000,  0,     1000,  400,   1000,   2, 1200,  80,  1, 1, 0
  552. X  };
  553. X  
  554. X  char *Shipnames[NUMSTYPES] = {
  555. X     "Spore pod",
  556. X     "Shuttle",
  557. X     "Dreadnaught",
  558. X     "Battleship",
  559. X     "Interceptor",
  560. X     "Cruiser",
  561. X     "Destroyer",
  562. X!    "Fighter",
  563. X!    "Cargo ship",
  564. X     "Explorer",
  565. X!    "Tanker",
  566. X     "Station",
  567. X     "Ob Asst Pltfrm",
  568. X     "GODSHIP",
  569. X     "Space mine",
  570. X     "Space mirror",
  571. X-    "Habitat",
  572. X     "Space telescope",
  573. X     "Ground telescope",
  574. X     "* T-R beam",
  575. X--- 2,73 ----
  576. X   * Galactic Bloodshed (Robert Chansky, smq@b)
  577. X   */
  578. X  
  579. X! char Shipltrs[]={ 'p','s','$','D','B','I','C','d','f','e','H','S','O','c',
  580. X!     't','!','+','m',
  581. X!     '=','/','T','A','g','V','^',' ','L','w','Y','G','&',
  582. X!     '-','>','"','[','R'};
  583. X  
  584. X  int Shipdata[NUMSTYPES][NUMABILS] = {
  585. X!    /* carg  dest   guns  fuelcap  tech  crew armr targ cost mass lnd sw sp dm*/
  586. X! /*SPd*/   1,    0,     0,     20,    1,     1,   1,  2,  10,   3, 1, 0, 1,  0,
  587. X! /*Shu*/  10,    2,     1,     20,   10,     5,   1,  2,  50,   2, 1, 0, 2,  0,
  588. X! /*Car*/ 200,  800,    20,   1000,  250,    30,  10,  2,1200, 100, 0, 0, 2, 50,
  589. X! /*Drn*/ 100,  500,    60,    500,  500,    20,  20,  0, 800,  40, 0, 0, 4, 50,
  590. X! /*BB */  35,  350,    30,    200,  200,    15,  15,  0, 400,  15, 1, 0, 4, 50,
  591. X! /*Int*/  10,  120,    30,    200,  350,     3,  10,  1, 400,   5, 1, 0, 4, 50,
  592. X! /*CA */  15,  200,    20,    120,  150,    10,   8,  1, 300,  10, 1, 0, 4, 50,
  593. X! /*DD */  10,  100,    10,     80,  100,     5,   5,  2, 200,   5, 1, 0, 4, 50,
  594. X! /*FF */   0,   30,    30,     10,  200,     1,   2,  2,  30,   1, 1, 0, 4,  0,
  595. X! /*Exp*/   0,    15,    5,     35,   20,     2,   2,  2, 100,   1, 1, 0, 4,  0,
  596. X! /*Hab*/5000,   500,   20,    500,  100,  2000,  10,  0,1000, 100, 0, 0, 1,  0,
  597. X! /*Stn*/5000,   250,   40,    500,  100,    50,  12,  0, 500, 100, 1, 0, 2,  0,
  598. X! /*OSP*/1000,  1000,   50,   1000,  200,   200,  10,  0, 800, 100, 0, 0, 2,  0,
  599. X! /*Crg*/1000,  1000,    5,   1000,  100,    10,   5,  0, 200,  20, 1, 0, 2,  0,
  600. X! /*Tnk*/  15,    10,    5,   5000,  100,    10,   5,  0, 400,  20, 1, 0, 2,  0,
  601. X! /*GOD*/50000,50000,50000,  50000, 5000,   100,  20,  1, 100,   1, 1, 0, 4,  0,
  602. X! /*SMn*/   0,    50,    0,     20,   50,     0,   5,  2,  50,  10, 1, 1, 2,  0,
  603. X!   /* cargo destcap guns  fuelcap  tech  crew armr targ cost mass lnd sw sp dm*/
  604. X! /*mir*/ 200,    10,    1,     20,  200,     5,   2,  0, 100, 100, 0, 0, 1,  0,
  605. X! /*Stc*/   0,     0,    0,     20,   50,     2,   3,  1,  50,   2, 1, 0, 2,  0,
  606. X! /*Tsc*/   0,     0,    0,      0,    5,     2,   3,  2,  10,   5, 1, 0, 0,  0,
  607. X! /*T-R*/   0,     0,    0,   1000,  100,     5,   1,  2, 400,  10, 1, 1, 1,  0,
  608. X! /*APr*/   0,     0,    0,    200,   50,    10,   3,  0,  80,  40, 1, 1, 0,  0,
  609. X! /*CD */   0,     0,    0,      1,   40,     0,   1,  2,  20,   5, 1, 0, 1,  0,
  610. X! /*VN */  20,     0,    0,     50,   80,     0,   1,  2,  15,  10, 1, 1, 1,  0,
  611. X! /*PB */   0,    20,    0,      5,  300,     0,   1,  2, 100,   5, 1, 1, 1,  0,
  612. X! /*ClD*/   0,    10,    0,      0,  250,     0,   1,  2,  25,   6, 1, 1, 0,  0,
  613. X! /*OMCL*/  0,   100,   10,    100,  350,     2,   8,  1, 100,   4, 1, 1, 2,  0,
  614. X! /*TWC*/   0,     0,    0,     20,   25,     0,   1,  0,  50,  15, 1, 0, 1,  0,
  615. X! /*AY */   0,    10,    0,      0,   90,     0,   1,  2,  25,   6, 1, 0, 0,  0,
  616. X!    /* cargo destcap guns  fuelcap  tech  crew armr targ cost mass lnd sw sp*/
  617. X! /*GRL */  0,   100,   25,      0,   80,     5,   5,  2,  25,   6, 1, 0, 0,  0,
  618. X! /*SA */5000,  5000,  100,  50000,10000,     0,  20,  0,   1, 500, 1, 0, 1,  0,
  619. X! /*LTr*/ 100,     5,    5,     20,    0,    20,   2,  2,   1,   4, 1, 1, 0,  0,
  620. X! /*Otr*/ 100,     5,    5,     20,    0,    20,   2,  2,   3,   3, 1, 0, 0,  0,
  621. X! /*DgT*/1000,  1000,    0,   1000,  200,    50,   2,  2,   8,  80, 1, 1, 0,  0,
  622. X! /*TD */1000,  1000,    0,   1000,  400,   100,   2,  1, 600,  80, 1, 1, 0,  0,
  623. X! /*SRp*/   0,     0,    0,      0,  400,     0,   1,  2,  45,   0, 1, 0, 0,  0
  624. X  };
  625. X  
  626. X  char *Shipnames[NUMSTYPES] = {
  627. X     "Spore pod",
  628. X     "Shuttle",
  629. X+    "Carrier",
  630. X     "Dreadnaught",
  631. X     "Battleship",
  632. X     "Interceptor",
  633. X     "Cruiser",
  634. X     "Destroyer",
  635. X!    "Fighter Group",
  636. X     "Explorer",
  637. X!    "Habitat",
  638. X     "Station",
  639. X     "Ob Asst Pltfrm",
  640. X+    "Cargo ship",
  641. X+    "Tanker",
  642. X     "GODSHIP",
  643. X     "Space mine",
  644. X     "Space mirror",
  645. X     "Space telescope",
  646. X     "Ground telescope",
  647. X     "* T-R beam",
  648. X***************
  649. X*** 79,83 ****
  650. X     "* Land Transport",
  651. X     "* Ocean Transport",
  652. X     "* Dirigable Trans.",
  653. X!    "audio-vibatory-\n   physio-molecular\n   transport device",
  654. X  };
  655. X--- 84,92 ----
  656. X     "* Land Transport",
  657. X     "* Ocean Transport",
  658. X     "* Dirigable Trans.",
  659. X!    "AVPM transporter",
  660. X!    "Sector Repair"
  661. X  };
  662. X+ 
  663. X+ 
  664. X+ 
  665. X*** ../../GB2/ships.h    Wed Jul  5 15:14:56 1989
  666. X--- ships.h    Fri Sep 15 07:27:40 1989
  667. X***************
  668. X*** 5,46 ****
  669. X  
  670. X  #define STYPE_POD    0
  671. X  #define STYPE_SHUTTLE     1
  672. X! #define STYPE_DREADNT    2
  673. X! #define STYPE_BATTLE     3
  674. X! #define STYPE_INTCPT    4
  675. X! #define STYPE_CRUISER    5
  676. X! #define STYPE_DESTROYER 6
  677. X! #define STYPE_FIGHTER     7
  678. X! #define STYPE_CARGO     8
  679. X  #define STYPE_EXPLORER     9
  680. X! #define STYPE_TANKER     10
  681. X  #define STYPE_STATION    11
  682. X  #define STYPE_ASS    12
  683. X! #define STYPE_GOD    13
  684. X! #define STYPE_MINE    14
  685. X! #define STYPE_MIRROR    15
  686. X! #define STYPE_HABITAT     16
  687. X  
  688. X! #define OTYPE_STELE    17
  689. X! #define OTYPE_GTELE    18
  690. X! #define OTYPE_TRACT    19
  691. X! #define OTYPE_AP    20
  692. X! #define OTYPE_CANIST    21
  693. X! #define OTYPE_VN    22
  694. X! #define OTYPE_PLBOMB    23
  695. X! #define OTYPE_CLOAK    24
  696. X! #define OTYPE_OMCL    25
  697. X! #define OTYPE_TOXWC    26
  698. X! #define OTYPE_AMULET    27
  699. X! #define OTYPE_GR    28
  700. X! #define OTYPE_AMOEBA    29
  701. X! #define OTYPE_LANDTR    30
  702. X! #define OTYPE_OCTR    31
  703. X! #define OTYPE_DIRTR    32
  704. X! #define OTYPE_TRANSDEV    33
  705. X  
  706. X  #define ABIL_CARGO     0
  707. X- /*#define ABIL_STEALTH     1*/
  708. X  #define ABIL_DESTCAP     1
  709. X  #define ABIL_GUNS     2
  710. X  #define ABIL_FUELCAP     3
  711. X--- 5,47 ----
  712. X  
  713. X  #define STYPE_POD    0
  714. X  #define STYPE_SHUTTLE     1
  715. X! #define STYPE_CARRIER   2
  716. X! #define STYPE_DREADNT    3
  717. X! #define STYPE_BATTLE     4
  718. X! #define STYPE_INTCPT    5
  719. X! #define STYPE_CRUISER    6
  720. X! #define STYPE_DESTROYER 7
  721. X! #define STYPE_FIGHTER     8
  722. X  #define STYPE_EXPLORER     9
  723. X! #define STYPE_HABITAT     10
  724. X  #define STYPE_STATION    11
  725. X  #define STYPE_ASS    12
  726. X! #define STYPE_CARGO     13
  727. X! #define STYPE_TANKER     14
  728. X! #define STYPE_GOD    15
  729. X! #define STYPE_MINE    16
  730. X! #define STYPE_MIRROR    17
  731. X  
  732. X! #define OTYPE_STELE    18
  733. X! #define OTYPE_GTELE    19
  734. X! #define OTYPE_TRACT    20
  735. X! #define OTYPE_AP    21
  736. X! #define OTYPE_CANIST    22
  737. X! #define OTYPE_VN    23
  738. X! #define OTYPE_PLBOMB    24
  739. X! #define OTYPE_CLOAK    25
  740. X! #define OTYPE_OMCL    26
  741. X! #define OTYPE_TOXWC    27
  742. X! #define OTYPE_AMULET    28
  743. X! #define OTYPE_GR    29
  744. X! #define OTYPE_AMOEBA    30
  745. X! #define OTYPE_LANDTR    31
  746. X! #define OTYPE_OCTR    32
  747. X! #define OTYPE_DIRTR    33
  748. X! #define OTYPE_TRANSDEV    34
  749. X! #define OTYPE_REPAIR    35
  750. X  
  751. X  #define ABIL_CARGO     0
  752. X  #define ABIL_DESTCAP     1
  753. X  #define ABIL_GUNS     2
  754. X  #define ABIL_FUELCAP     3
  755. X***************
  756. X*** 47,80 ****
  757. X  #define ABIL_TECH     4
  758. X  #define ABIL_MAXCREW     5
  759. X  #define ABIL_ARMOR     6
  760. X! #define ABIL_COST     7
  761. X! #define ABIL_MASS     8
  762. X! #define ABIL_CANLAND    9
  763. X! #define ABIL_HASSWITCH    10
  764. X! #define ABIL_SPEED    11
  765. X  
  766. X! #define NUMSTYPES     (OTYPE_TRANSDEV+1)
  767. X! #define NUMABILS     (ABIL_SPEED+1)
  768. X  
  769. X  
  770. X  typedef struct ship shiptype;
  771. X- typedef struct orders ordertype;
  772. X  typedef struct place placetype;
  773. X  
  774. X- struct orders {        /* standing orders for ships, planets */
  775. X-     unsigned bombard : 1;    /* bombard planet we're on */
  776. X- };
  777. X  
  778. X  struct ship {
  779. X      float xpos,ypos;
  780. X      float fuel,mass;
  781. X!     /*char name[NAMESIZE];*/
  782. X!     /*us abils[NUMABILS-2];    /* only certain abilities are kept track*/
  783. X      unsigned short destshipno;        /* destination ship # */
  784. X      unsigned short nextship;        /* next ship in orbit around whatever */
  785. X      unsigned short prevship;        /* prev ship in orbit around whatever */
  786. X!     union {
  787. X!         ordertype o;        /* standing orders for ship */
  788. X      struct a {        /* if the ship is a Space Mirror */
  789. X          short shipno;    /* aimed at what ship */
  790. X          char snum;        /* aimed at what star */
  791. X--- 48,78 ----
  792. X  #define ABIL_TECH     4
  793. X  #define ABIL_MAXCREW     5
  794. X  #define ABIL_ARMOR     6
  795. X! #define ABIL_TARGET    7
  796. X! #define ABIL_COST     8
  797. X! #define ABIL_MASS     9
  798. X! #define ABIL_CANLAND    10
  799. X! #define ABIL_HASSWITCH    11
  800. X! #define ABIL_SPEED    12
  801. X! #define ABIL_DAMAGE    13
  802. X  
  803. X! #define NUMSTYPES     (OTYPE_REPAIR+1)
  804. X! #define NUMABILS     (ABIL_DAMAGE+1)
  805. X  
  806. X  
  807. X  typedef struct ship shiptype;
  808. X  typedef struct place placetype;
  809. X  
  810. X  
  811. X  struct ship {
  812. X      float xpos,ypos;
  813. X      float fuel,mass;
  814. X!     char name[18];            /* name of ship (optional) */
  815. X      unsigned short destshipno;        /* destination ship # */
  816. X      unsigned short nextship;        /* next ship in orbit around whatever */
  817. X      unsigned short prevship;        /* prev ship in orbit around whatever */
  818. X!     unsigned bombard : 1;    /* bombard planet we're on */
  819. X! 
  820. X      struct a {        /* if the ship is a Space Mirror */
  821. X          short shipno;    /* aimed at what ship */
  822. X          char snum;        /* aimed at what star */
  823. X***************
  824. X*** 82,91 ****
  825. X--- 80,114 ----
  826. X          unsigned pnum : BITS_MAXPLANETS;  /* aimed at what planet */
  827. X          unsigned level : 2;    /* aimed at what level */
  828. X      } aimed_at;
  829. X+     
  830. X      struct o2 {
  831. X          short number;    /* for misc functions */
  832. X          short number2;    /* again */
  833. X+         short number3;  /* again. don't use this in this version!!
  834. X+                 there is some strange bug with the order
  835. X+                 command which modifies it for some reason.
  836. X+                 someone needs to figure this problem out */
  837. X+         short number4;  /* again */
  838. X      } object;
  839. X+     
  840. X+     struct m {
  841. X+         unsigned mode : 1; /* 0 for radiation, 1 for damage */
  842. X+     } mine;
  843. X+     
  844. X+     struct nv {
  845. X+         unsigned on : 1;    /* toggles navigate mode */
  846. X+         unsigned speed : 3; /* speed for navigate command */
  847. X+         unsigned turns : 3; /* number turns left in maneuver */
  848. X+         unsigned bearing : 16; /* course */
  849. X+     } navigate;
  850. X+     
  851. X+     struct prot {
  852. X+         float maxrng;           /* maximum range for autoshoot */
  853. X+         unsigned on     :  1; /* toggle on/off */
  854. X+         unsigned planet  :  1; /* planet defender */
  855. X+         unsigned ship     : 14; /* ship it is protecting */
  856. X+     } protect;
  857. X+ 
  858. X      struct am {
  859. X          char psuedo1x,psuedo1y;    /* x,y loc for psuedopods */
  860. X          char psuedo2x,psuedo2y;
  861. X***************
  862. X*** 94,100 ****
  863. X          unsigned dest : 1;    /* has a destination in mind */
  864. X          unsigned div : 1;    /* trying to divide in two */
  865. X      } amoeba;
  866. X!     } orders;
  867. X      char storbits;        /* what star # orbits */
  868. X      char deststar;        /* destination star */
  869. X      unsigned destpnum : BITS_MAXPLANETS;    /* destination planet */
  870. X--- 117,123 ----
  871. X          unsigned dest : 1;    /* has a destination in mind */
  872. X          unsigned div : 1;    /* trying to divide in two */
  873. X      } amoeba;
  874. X! 
  875. X      char storbits;        /* what star # orbits */
  876. X      char deststar;        /* destination star */
  877. X      unsigned destpnum : BITS_MAXPLANETS;    /* destination planet */
  878. X***************
  879. X*** 106,112 ****
  880. X      unsigned popn : 16;            /* crew */
  881. X      unsigned owner : BITS_MAXPLAYERS;    /* owner of ship */
  882. X      unsigned speed : 3;        /* what speed to travel at */
  883. X-     /*unsigned augmented : 4;    /* # of times augmented (max 10) ? */
  884. X      unsigned whatdest : 2;    /* where going (same as Dir) */
  885. X      unsigned whatorbits : 2;    /* where orbited (same as Dir) */
  886. X      unsigned type : 6;        /* what type ship is */
  887. X--- 129,134 ----
  888. X***************
  889. X*** 114,120 ****
  890. X      unsigned is_sheep : 1;    /* 1 bit: is under influence of mind control */
  891. X      unsigned is_docked : 1;    /* 1 bit: is landed on a planet or docked */
  892. X      unsigned notified : 1;     /* 1bit: has been notified of something */
  893. X!     unsigned is_dead : 1;    /* 1 bit: is destroyed ship */
  894. X      unsigned is_examined : 1;    /* 1 bit: has been examined */
  895. X      unsigned on : 1;        /* on or off */
  896. X  };
  897. X--- 136,142 ----
  898. X      unsigned is_sheep : 1;    /* 1 bit: is under influence of mind control */
  899. X      unsigned is_docked : 1;    /* 1 bit: is landed on a planet or docked */
  900. X      unsigned notified : 1;     /* 1bit: has been notified of something */
  901. X!     unsigned is_alive : 1;    /* 1 bit: ship is alive */
  902. X      unsigned is_examined : 1;    /* 1 bit: has been examined */
  903. X      unsigned on : 1;        /* on or off */
  904. X  };
  905. X***************
  906. X*** 141,152 ****
  907. X  #define can_bombard(s) \
  908. X      ( ((s)->type < STYPE_MIRROR) && Shipdata[(s)->type][ABIL_GUNS])
  909. X  
  910. X   /* can aim at things. */
  911. X  #define can_aim(s) ((s)->type>=STYPE_MIRROR && (s)->type<=OTYPE_TRACT)
  912. X  
  913. X   /* macro for killing a ship.  !notified means we have not yet written it
  914. X      to the dead_ship file.  */
  915. X! #define kill_ship(s) ((s)->is_dead = 1, (s)->notified = 0)
  916. X  
  917. X  extern placetype Getplace();
  918. X  extern char *Dispplace(),*Dispshiporbits(),*prin_ship_orbits(),
  919. X--- 163,177 ----
  920. X  #define can_bombard(s) \
  921. X      ( ((s)->type < STYPE_MIRROR) && Shipdata[(s)->type][ABIL_GUNS])
  922. X  
  923. X+ /* can navigate */
  924. X+ #define can_navigate(s) (Shipdata[(s)->type][ABIL_SPEED] > 0 && (s)->type != OTYPE_VN)
  925. X+ 
  926. X   /* can aim at things. */
  927. X  #define can_aim(s) ((s)->type>=STYPE_MIRROR && (s)->type<=OTYPE_TRACT)
  928. X  
  929. X   /* macro for killing a ship.  !notified means we have not yet written it
  930. X      to the dead_ship file.  */
  931. X! #define kill_ship(s) ((s)->is_alive = 0, (s)->damage = 100, (s)->notified = 0)
  932. X  
  933. X  extern placetype Getplace();
  934. X  extern char *Dispplace(),*Dispshiporbits(),*prin_ship_orbits(),
  935. X*** ../../GB2/shootblast.c    Wed Jul  5 15:15:51 1989
  936. X--- shootblast.c    Fri Sep 15 07:28:48 1989
  937. X***************
  938. X*** 19,24 ****
  939. X--- 19,61 ----
  940. X  
  941. X  float Kill_factor();
  942. X  
  943. X+ static int damage_table[8][9] = {
  944. X+ 1, 3, 6, 10, 15, 21, 28, 37, 48,
  945. X+ 0, 2, 4,  7, 11, 16, 22, 29, 38,
  946. X+ 0, 1, 3,  5,  8, 12, 17, 23, 30,
  947. X+ 0, 0, 2,  4,  6,  9, 13, 18, 24,
  948. X+ 0, 0, 1,  3,  5,  7, 10, 14, 19,
  949. X+ 0, 0, 0,  2,  4,  6,  8, 11, 15,
  950. X+ 0, 0, 0,  1,  3,  5,  7,  9, 12,
  951. X+ 0, 0, 0,  0,  2,  4,  6,  8, 10
  952. X+ };
  953. X+ 
  954. X+ static int combat_table[6][11] = {
  955. X+  0,  0,  0,  0,  0, 20, 20,  20,  20,  40,  60,
  956. X+  0,  0,  0,  0, 20, 20, 20,  20,  40,  60,  80,
  957. X+  0,  0, 20, 20, 20, 20, 20,  40,  60,  80, 100,
  958. X+  0, 10, 20, 20, 20, 20, 40,  60,  80, 100, 100,
  959. X+ 10, 20, 20, 20, 20, 40, 60,  80, 100, 100, 100,
  960. X+ 20, 20, 20, 20, 40, 60, 80,  90, 100, 100, 100
  961. X+ };
  962. X+ 
  963. X+ static int crew_casualties[6][11] = {
  964. X+ 0, 0, 0, 0, 0, 2,  3,  4,  5,  6,  7,
  965. X+ 0, 0, 1, 2, 3, 4,  5,  6,  7,  8,  9,
  966. X+ 0, 1, 2, 3, 4, 5,  6,  7,  8,  9, 10,
  967. X+ 0, 1, 3, 4, 5, 6,  7,  9, 10, 11, 12,
  968. X+ 1, 2, 4, 5, 6, 8,  9, 11, 12, 13, 17,
  969. X+ 3, 4, 6, 7, 8, 9, 10, 12, 15, 17, 20
  970. X+ };
  971. X+ 
  972. X+ static int column[9] = {
  973. X+ 1, 2, 4,  8, 14, 21, 31, 51,  81
  974. X+ };
  975. X+ 
  976. X+ static float column1[11] = {
  977. X+ 0.25, 0.33, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0
  978. X+ };
  979. X+ 
  980. X  int shoot(from,to,fpl,tpl,sectorx,sectory,strength, dist, msg, getmap)
  981. X  placetype from,*to;
  982. X  planettype *fpl,*tpl;
  983. X***************
  984. X*** 58,64 ****
  985. X     if (to->shipptr->is_docked && to->shipptr->whatdest==LEVEL_PLAN) {
  986. X         xto = Stars[to->shipptr->storbits]->xpos + tpl->xpos;
  987. X         yto = Stars[to->shipptr->storbits]->ypos + tpl->ypos;
  988. X-     printf(" xto %g yto %g, tpl %g,%g\n", xto, yto, tpl->xpos,tpl->ypos);
  989. X      if (from.level==LEVEL_SHIP &&
  990. X          from.shipptr->is_docked && from.shipptr->whatdest==LEVEL_PLAN) {
  991. X          xto += to->shipptr->xpos;
  992. X--- 95,100 ----
  993. X***************
  994. X*** 71,77 ****
  995. X   }
  996. X  
  997. X   *dist = sqrt( (double)Distsq(xfrom, yfrom, xto, yto));
  998. X!  if (*dist > SYSTEMSIZE*2.0) {
  999. X       /* out of range */
  1000. X      return -1;
  1001. X   } else {
  1002. X--- 107,113 ----
  1003. X   }
  1004. X  
  1005. X   *dist = sqrt( (double)Distsq(xfrom, yfrom, xto, yto));
  1006. X!  if (*dist > SYSTEMSIZE*3.0) {
  1007. X       /* out of range */
  1008. X      return -1;
  1009. X   } else {
  1010. X***************
  1011. X*** 91,97 ****
  1012. X       teleg_add(buf, msg);
  1013. X       teleg_add(".\n\n", msg);
  1014. X  
  1015. X!      if (to->level==LEVEL_SHIP && to->shipptr->is_dead) {
  1016. X      sprintf(buf,"%s #%d DESTROYED.\n", Shipnames[to->shipptr->type],
  1017. X              to->shipno);
  1018. X      teleg_add(buf,msg);
  1019. X--- 127,133 ----
  1020. X       teleg_add(buf, msg);
  1021. X       teleg_add(".\n\n", msg);
  1022. X  
  1023. X!      if (to->level==LEVEL_SHIP && !to->shipptr->is_alive) {
  1024. X      sprintf(buf,"%s #%d DESTROYED.\n", Shipnames[to->shipptr->type],
  1025. X              to->shipno);
  1026. X      teleg_add(buf,msg);
  1027. X***************
  1028. X*** 115,122 ****
  1029. X  {
  1030. X  register int x2,y2;
  1031. X  reg float r;        /* radius of blast */
  1032. X! float d,str;
  1033. X  int numdest = 0,lowx,lowy,hix,hiy;
  1034. X  register sectortype *s;
  1035. X  register float fac;
  1036. X  int shfdata,sectdata;
  1037. X--- 151,159 ----
  1038. X  {
  1039. X  register int x2,y2;
  1040. X  reg float r;        /* radius of blast */
  1041. X! float d,damage,str;
  1042. X  int numdest = 0,lowx,lowy,hix,hiy;
  1043. X+ int i, col, row, die, kills;
  1044. X  register sectortype *s;
  1045. X  register float fac;
  1046. X  int shfdata,sectdata;
  1047. X***************
  1048. X*** 125,141 ****
  1049. X   str = Kill_factor(dist, strength);
  1050. X  
  1051. X   if (to->level==LEVEL_SHIP) {
  1052. X!     numdest = int_rand(round_rand((float)str / Shipdata[to->shipptr->type][ABIL_ARMOR])-10, round_rand((float)str / Shipdata[to->shipptr->type][ABIL_ARMOR])+10);
  1053. X!     if (numdest > 100)
  1054. X!         numdest = 100;
  1055. X!     if (numdest < 0)
  1056. X!         numdest = 0;
  1057. X  
  1058. X      if (from->level==LEVEL_SHIP && from->shipptr->type==OTYPE_GR) {
  1059. X          /* gamma-ray lasers irradiate targets */
  1060. X          if (to->shipptr->type==OTYPE_VN) {
  1061. X               /* damage spread around the machine herd */
  1062. X!             numdest = round_rand((float)numdest / (to->shipptr->orders.object.number * 0.3) );
  1063. X                  /* radiation is not accumulated */
  1064. X              to->shipptr->rad = numdest;
  1065. X          } else {
  1066. X--- 162,206 ----
  1067. X   str = Kill_factor(dist, strength);
  1068. X  
  1069. X   if (to->level==LEVEL_SHIP) {
  1070. X! /* calculate combat result based on attack strength, defense strenght,
  1071. X!  target class and current target speed. */
  1072. X  
  1073. X+ /* get damage points */
  1074. X+         /*find column to use */
  1075. X+     col = 0;
  1076. X+ 
  1077. X+ for (i=0; i<9; i++)
  1078. X+     if((int)str >= column[i]) col = i;
  1079. X+ 
  1080. X+         /*locate damage points */
  1081. X+     die = int_rand(1,6);
  1082. X+     row = Shipdata[to->shipptr->type][ABIL_TARGET] + die - 1;
  1083. X+ damage = ((float)damage_table[row][col]) /Shipdata[to->shipptr->type][ABIL_ARMOR];
  1084. X+ 
  1085. X+ /*get damage */
  1086. X+ col = -1;
  1087. X+ for (i=0; i<11; i++)
  1088. X+     if(damage >= column1[i])col = i;
  1089. X+ 
  1090. X+ 
  1091. X+ numdest = 0;
  1092. X+ 
  1093. X+ if (col >= 0)
  1094. X+     {
  1095. X+     die = int_rand(1,6);
  1096. X+     row = die - 1;
  1097. X+     numdest = combat_table[row][col]+int_rand(-10,10);
  1098. X+     if(numdest < 0)numdest = 0;
  1099. X+     if(numdest > 100)numdest = 100;
  1100. X+ 
  1101. X+     }
  1102. X+ 
  1103. X+ 
  1104. X      if (from->level==LEVEL_SHIP && from->shipptr->type==OTYPE_GR) {
  1105. X          /* gamma-ray lasers irradiate targets */
  1106. X          if (to->shipptr->type==OTYPE_VN) {
  1107. X               /* damage spread around the machine herd */
  1108. X!             numdest = round_rand((float)numdest / (to->shipptr->object.number * 0.3) );
  1109. X                  /* radiation is not accumulated */
  1110. X              to->shipptr->rad = numdest;
  1111. X          } else {
  1112. X***************
  1113. X*** 151,166 ****
  1114. X                  to->shipptr->whatdest==LEVEL_PLAN)
  1115. X                  pl->conditions[TOXIC] = 
  1116. X                      MIN(pl->conditions[TOXIC]+
  1117. X!                           to->shipptr->orders.object.number,
  1118. X                          100);
  1119. X          } else
  1120. X              to->shipptr->damage += numdest;
  1121. X         } else {
  1122. X          numdest = round_rand((float)numdest / Shipdata[OTYPE_VN][ABIL_ARMOR]);
  1123. X!         if (to->shipptr->orders.object.number - numdest < 1)
  1124. X              kill_ship(to->shipptr);
  1125. X          else
  1126. X!             to->shipptr->orders.object.number -= numdest;
  1127. X         }
  1128. X      }
  1129. X      Nuked[to->shipptr->owner] = 1;
  1130. X--- 216,231 ----
  1131. X                  to->shipptr->whatdest==LEVEL_PLAN)
  1132. X                  pl->conditions[TOXIC] = 
  1133. X                      MIN(pl->conditions[TOXIC]+
  1134. X!                           to->shipptr->object.number,
  1135. X                          100);
  1136. X          } else
  1137. X              to->shipptr->damage += numdest;
  1138. X         } else {
  1139. X          numdest = round_rand((float)numdest / Shipdata[OTYPE_VN][ABIL_ARMOR]);
  1140. X!         if (to->shipptr->object.number - numdest < 1)
  1141. X              kill_ship(to->shipptr);
  1142. X          else
  1143. X!             to->shipptr->object.number -= numdest;
  1144. X         }
  1145. X      }
  1146. X      Nuked[to->shipptr->owner] = 1;
  1147. X***************
  1148. X*** 168,174 ****
  1149. X  
  1150. X   } else if (to->level==LEVEL_PLAN) {
  1151. X  
  1152. X!     r = str * FACTOR_DESTPLANET;
  1153. X      if (getmap) {
  1154. X          opensectdata(§data);
  1155. X          getsmap(sectdata,Smap,pl);
  1156. X--- 233,239 ----
  1157. X  
  1158. X   } else if (to->level==LEVEL_PLAN) {
  1159. X  
  1160. X!     r = .2 * str;
  1161. X      if (getmap) {
  1162. X          opensectdata(§data);
  1163. X          getsmap(sectdata,Smap,pl);
  1164. X***************
  1165. X*** 181,215 ****
  1166. X           for (x2=lowx; x2<=hix; x2++) {
  1167. X        if ( (d = Distmap(x,y,x2,y2) ) <= r) {
  1168. X           s = &Sector(*pl,x2,y2);
  1169. X!          fac = ((float)str*FACTOR_DESTPLANET/10) * logscale(100 - s->mobilization)/(d+1);
  1170. X          /* factor of destruction */
  1171. X!          /*printf("%d,%d  dist = %.2f,dest fac %.2f",x2,y2,d,fac);*/
  1172. X!              if (fac > 1.00) {
  1173. X                 Nuked[s->owner] = 1;    /* for retaliating */
  1174. X!             s->popn = s->owner = 0;
  1175. X                  /* mutate the sector. */
  1176. X              if (s->des==DES_ICE)
  1177. X                  s->des==DES_SEA;
  1178. X              else if (s->des==DES_PLATED)
  1179. X!                 s->des==DES_LAND;
  1180. X              else if (s->des==DES_SEA)
  1181. X                  s->des==DES_LAND;
  1182. X              else if (s->des==DES_MOUNT) 
  1183. X!                     s->des=DES_LAND;
  1184. X              else if (s->des==DES_LAND && 
  1185. X                  (s+1)->des==DES_SEA || (s-1)->des==DES_SEA)
  1186. X                      s->des=DES_SEA;
  1187. X              else if (s->des==DES_LAND && 
  1188. X                  (s+1)->des==DES_GAS || (s-1)->des==DES_GAS)
  1189. X                      s->des=DES_GAS;
  1190. X!                     s->is_wasted = 1;
  1191. X!             numdest++;
  1192. X!                 /* add some resources to be fair */
  1193. X                      s->resource = (percent)round_rand(s->resource * fac);
  1194. X!                s->fert = (percent)round_rand(s->fert / fac);
  1195. X                      s->mobilization = (percent)(round_rand(s->mobilization / fac) );
  1196. X!                     /*printf("::%d,%d killed %d.\n",x2,y2,round_rand(s->popn * fac) );*/
  1197. X!                     s->eff = (percent)round_rand(s->eff / fac);
  1198. X          }
  1199. X        }
  1200. X      }
  1201. X--- 246,295 ----
  1202. X           for (x2=lowx; x2<=hix; x2++) {
  1203. X        if ( (d = Distmap(x,y,x2,y2) ) <= r) {
  1204. X           s = &Sector(*pl,x2,y2);
  1205. X!          fac = ((float)str) * logscale(100 - s->mobilization)/(d+1);
  1206. X          /* factor of destruction */
  1207. X!         /* printf("%d,%d  dist = %.2f,dest fac %.2f \n",x2,y2,d,fac);*/
  1208. X!              if (fac > 1.0) {
  1209. X                 Nuked[s->owner] = 1;    /* for retaliating */
  1210. X!                         
  1211. X!             kills = int_rand(0,((int)fac))/(1+(s->des==DES_PLATED));
  1212. X!         if(kills >= s->popn)
  1213. X!             {s->popn = 0;
  1214. X!              s->owner = 0;}
  1215. X!         else {
  1216. X!             s->popn -= kills;}
  1217. X                  /* mutate the sector. */
  1218. X+     if(((float)int_rand(0,20))*fac > 100.)
  1219. X+         {
  1220. X              if (s->des==DES_ICE)
  1221. X                  s->des==DES_SEA;
  1222. X              else if (s->des==DES_PLATED)
  1223. X!                 if(int_rand(0,100) > 30)s->des==DES_LAND;
  1224. X              else if (s->des==DES_SEA)
  1225. X                  s->des==DES_LAND;
  1226. X              else if (s->des==DES_MOUNT) 
  1227. X!                 if(int_rand(0,100) > 20)s->des=DES_LAND;
  1228. X              else if (s->des==DES_LAND && 
  1229. X                  (s+1)->des==DES_SEA || (s-1)->des==DES_SEA)
  1230. X                      s->des=DES_SEA;
  1231. X+ 
  1232. X              else if (s->des==DES_LAND && 
  1233. X                  (s+1)->des==DES_GAS || (s-1)->des==DES_GAS)
  1234. X                      s->des=DES_GAS;
  1235. X!         }
  1236. X!                     if(fac >= 5.0)
  1237. X!                 if(((float)int_rand(0,10))*fac > 50.0)
  1238. X!                     {
  1239. X!                 s->popn = 0;
  1240. X!                 s->owner = 0;
  1241. X!                 s->is_wasted = 1;
  1242. X!                 numdest++;
  1243. X!                     }
  1244. X! /* not sure why this is necessary (gvc)
  1245. X                      s->resource = (percent)round_rand(s->resource * fac);
  1246. X!                 s->fert = (percent)round_rand(s->fert / fac);
  1247. X                      s->mobilization = (percent)(round_rand(s->mobilization / fac) );
  1248. X!                     s->eff = (percent)round_rand(s->eff / fac); */
  1249. X          }
  1250. X        }
  1251. X      }
  1252. X***************
  1253. X*** 235,241 ****
  1254. X  {
  1255. X  reg float str;
  1256. X  
  1257. X!  str = strength * FACTOR_DAMAGE / (dist+50.0);
  1258. X   return str;
  1259. X  }
  1260. X  
  1261. X--- 315,322 ----
  1262. X  {
  1263. X  reg float str;
  1264. X  
  1265. X!  str = strength * FACTOR_DAMAGE * exp(-dist/FACTOR_DAMAGE_DISTANCE);
  1266. X! 
  1267. X   return str;
  1268. X  }
  1269. X  
  1270. X*** ../../GB2/sizes.c    Wed Jul  5 15:15:51 1989
  1271. X--- sizes.c    Fri Sep 15 07:28:49 1989
  1272. X***************
  1273. X*** 14,20 ****
  1274. X  
  1275. X   printf(" size racetype is %d\n",sizeof(racetype));
  1276. X   printf(" size placetype is %d\n",sizeof(placetype));
  1277. X-  printf(" size ordertype is %d\n",sizeof(ordertype));
  1278. X   printf(" size struct plinfo is %d\n\n",sizeof(struct plinfo));
  1279. X   printf(" size struct power [15] is %d\n\n",sizeof(P));
  1280. X  
  1281. X--- 14,19 ----
  1282. X*** ../../GB2/telegram.c    Wed Jul  5 15:15:53 1989
  1283. X--- telegram.c    Fri Sep 15 07:28:52 1989
  1284. X***************
  1285. X*** 75,80 ****
  1286. X--- 75,81 ----
  1287. X        getchr();
  1288. X        i += strlen(tbuf);
  1289. X        teleg_add(tbuf, telegram_buf);
  1290. X+       teleg_add("\n", telegram_buf);
  1291. X          printf("%d : ",TELEGRAM_SIZE - i );
  1292. X    }
  1293. X    
  1294. X*** ../../GB2/tweakables.h    Wed Jul  5 15:14:56 1989
  1295. X--- tweakables.h    Fri Sep 15 07:27:41 1989
  1296. X***************
  1297. X*** 5,13 ****
  1298. X   *    the functions using them are not recompiled so be careful.
  1299. X   */
  1300. X  
  1301. X! #define VERS "1.0"        /* game version */
  1302. X  
  1303. X! #define UPDATE_TIME 1        /* 1 hour update time */
  1304. X  
  1305. X  
  1306. X  #define LOGIN_NAME_SIZE 13
  1307. X--- 5,13 ----
  1308. X   *    the functions using them are not recompiled so be careful.
  1309. X   */
  1310. X  
  1311. X! #define VERS "1.1"        /* game version */
  1312. X  
  1313. X! #define UPDATE_TIME 1        /* update time (hours) */
  1314. X  
  1315. X  
  1316. X  #define LOGIN_NAME_SIZE 13
  1317. X***************
  1318. X*** 33,54 ****
  1319. X  #define OTHER       9
  1320. X  #define TOXIC     10
  1321. X  
  1322. X- #define CHAR_OWNED_THING     '@' 
  1323. X  #define CHAR_LAND         '*'
  1324. X- #define CHAR_OWNED_LAND     'x' 
  1325. X  #define CHAR_SEA         '.'
  1326. X- #define CHAR_OWNED_SEA         'x'
  1327. X  #define CHAR_MOUNT         '^'
  1328. X  #define CHAR_DIFFOWNED         '?'
  1329. X  #define CHAR_PLATED         'o'
  1330. X  #define CHAR_WASTELAND         '%'
  1331. X- #define CHAR_OWNED_WASTELAND     '!'
  1332. X  #define CHAR_GAS         '~'
  1333. X- #define CHAR_OWNED_GAS         'x'
  1334. X  #define CHAR_CLOAKED         ' '
  1335. X  #define CHAR_ICE        '#'
  1336. X- #define CHAR_OWNED_ICE        'x'
  1337. X- #define CHAR_OWNED_MOUNT     'X'
  1338. X  
  1339. X  #define NAMESIZE 18
  1340. X  #define RNAMESIZE 35
  1341. X--- 33,47 ----
  1342. X***************
  1343. X*** 72,79 ****
  1344. X  
  1345. X  #define AUTO_TELEG_SIZE        5000
  1346. X  #define TELEGRAM_SIZE        500
  1347. X! #define MAX_TELEGRAMS        50
  1348. X! #define UNTRANS_MSG        "[untranslateable]"
  1349. X  /*#define TELEG_TRANS_APCOST    1*/
  1350. X  #define TELEG_TRANS_RPCOST    20
  1351. X  #define TELEG_TRANS_AMT        0.45
  1352. X--- 65,72 ----
  1353. X  
  1354. X  #define AUTO_TELEG_SIZE        5000
  1355. X  #define TELEGRAM_SIZE        500
  1356. X! #define MAX_TELEGRAMS        100
  1357. X! #define UNTRANS_MSG        "[ ? ]"
  1358. X  /*#define TELEG_TRANS_APCOST    1*/
  1359. X  #define TELEG_TRANS_RPCOST    20
  1360. X  #define TELEG_TRANS_AMT        0.45
  1361. X***************
  1362. X*** 107,116 ****
  1363. X  
  1364. X  #define FACTOR_FERT_SUPPORT 150
  1365. X                     /* # of people/fert pt sector supports*/
  1366. X! #define EFF_PROD         0.28        /* production of effcncy/pop*/
  1367. X! #define RESOURCE_PRODUCTION     0.10        /* adjust these to change prod*/
  1368. X! #define FUEL_PRODUCTION     0.05
  1369. X! #define DEST_PRODUCTION     0.07
  1370. X  #define MOB_COST        0.10   /* mobiliz.c, doplanet.c cost/mob point*/
  1371. X  #define RESOURCE_DEPLETION     0.015
  1372. X  #define FACTOR_MOBPROD         0.06    /* mobilization production/person */
  1373. X--- 100,109 ----
  1374. X  
  1375. X  #define FACTOR_FERT_SUPPORT 150
  1376. X                     /* # of people/fert pt sector supports*/
  1377. X! #define EFF_PROD         0.30        /* production of effcncy/pop*/
  1378. X! #define RESOURCE_PRODUCTION     0.05        /* adjust these to change prod*/
  1379. X! #define FUEL_PRODUCTION     0.02
  1380. X! #define DEST_PRODUCTION     0.05
  1381. X  #define MOB_COST        0.10   /* mobiliz.c, doplanet.c cost/mob point*/
  1382. X  #define RESOURCE_DEPLETION     0.015
  1383. X  #define FACTOR_MOBPROD         0.06    /* mobilization production/person */
  1384. X***************
  1385. X*** 122,128 ****
  1386. X  #define TECH_SEE_STABILITY 10    /* min tech to see star stability */
  1387. X  #define TECH_EXPLORE        15    /* min tech to see your whole planet */
  1388. X  
  1389. X! #define ENVIR_DAMAGE_TOX    70    /* min tox to damage planet */
  1390. X  
  1391. X  #define PLANETGRAVCONST     0.05
  1392. X  #define SYSTEMGRAVCONST     0.05
  1393. X--- 115,122 ----
  1394. X  #define TECH_SEE_STABILITY 10    /* min tech to see star stability */
  1395. X  #define TECH_EXPLORE        15    /* min tech to see your whole planet */
  1396. X  
  1397. X! #define ENVIR_DAMAGE_TOX    85
  1398. X!     /* min tox to damage planet */
  1399. X  
  1400. X  #define PLANETGRAVCONST     0.05
  1401. X  #define SYSTEMGRAVCONST     0.05
  1402. X***************
  1403. X*** 134,142 ****
  1404. X  /*#define DIST_TO_BURN 50     /* distance from sun needed to destroy ship */
  1405. X  
  1406. X  
  1407. X! #define FACTOR_DAMAGE         688.0
  1408. X  #define FACTOR_DESTPLANET     0.35
  1409. X! #define FACTOR_DAMAGE_DISTANCE     1.00
  1410. X  
  1411. X      /* various compiler options that may save cpu time/disk space */
  1412. X  #define SHELL_DOTURN 1            /* put doturn() in shell */
  1413. X--- 128,136 ----
  1414. X  /*#define DIST_TO_BURN 50     /* distance from sun needed to destroy ship */
  1415. X  
  1416. X  
  1417. X! #define FACTOR_DAMAGE         2.0
  1418. X  #define FACTOR_DESTPLANET     0.35
  1419. X! #define FACTOR_DAMAGE_DISTANCE     300.00
  1420. X  
  1421. X      /* various compiler options that may save cpu time/disk space */
  1422. X  #define SHELL_DOTURN 1            /* put doturn() in shell */
  1423. X***************
  1424. X*** 174,180 ****
  1425. X  /* look up sector */
  1426. X  #define Sector(pl,x,y) (Smap[(x) + (y)*(pl).Maxx])
  1427. X  /* adjust temperature to displayed */
  1428. X! #define Temp(x) (((int)(x))*25)
  1429. X  
  1430. X   /* number of AP's to add to each player in ea. system */
  1431. X   /*   (look in doturn)  */
  1432. X--- 168,174 ----
  1433. X  /* look up sector */
  1434. X  #define Sector(pl,x,y) (Smap[(x) + (y)*(pl).Maxx])
  1435. X  /* adjust temperature to displayed */
  1436. X! #define Temp(x) ((int)(x))
  1437. X  
  1438. X   /* number of AP's to add to each player in ea. system */
  1439. X   /*   (look in doturn)  */
  1440. X*** ../../GB2/vars.h    Wed Jul  5 15:14:57 1989
  1441. X--- vars.h    Fri Sep 15 07:27:42 1989
  1442. X***************
  1443. X*** 14,19 ****
  1444. X--- 14,20 ----
  1445. X  #define Bzero(x)  bzero( (char *)&(x), sizeof(x) )
  1446. X  #define Malloc(x) (x *)malloc( sizeof(x) )
  1447. X  
  1448. X+ 
  1449. X  #include "files.h"
  1450. X  #include "tweakables.h"
  1451. X  #include <sys/types.h>
  1452. X***************
  1453. X*** 24,30 ****
  1454. X  #define LEVEL_UNIV 0
  1455. X  #define LEVEL_STAR 1
  1456. X  #define LEVEL_PLAN 2
  1457. X- /*#define LEVEL_MOON 3*/
  1458. X  #define LEVEL_SHIP 3
  1459. X  
  1460. X  #define MAXPLAYERS 30
  1461. X--- 25,30 ----
  1462. X***************
  1463. X*** 42,50 ****
  1464. X        unsigned numsectsowned : 10;
  1465. X        unsigned comread : 7;        /* combat readiness */
  1466. X        unsigned mob_set : 7;        /* mobilization target */
  1467. X-       /*unsigned quota_resource : 7;
  1468. X-       unsigned quota_destruct : 7;
  1469. X-       unsigned quota_fuel : 7;*/
  1470. X        unsigned explored : 1;        /* 1 bit: explored by each player */
  1471. X        unsigned autorep : 3;        /* player wants autoreport */
  1472. X        unsigned spied_on : 1;        /* spied on */
  1473. X--- 42,47 ----
  1474. X***************
  1475. X*** 68,75 ****
  1476. X  struct planet {
  1477. X      float xpos,ypos;        /* x,y relative to orbit */
  1478. X      char conditions[TOXIC+1]; /* atmospheric conditions for terraforming */
  1479. X-     /*int nummoons;*/
  1480. X-     /*int moonpos[MAXMOONS];    /* filepos moons or ast around it */
  1481. X      us ships;            /* first ship in orbit (to be changed) */
  1482. X      percent Maxx,Maxy;        /* size of map */
  1483. X      int sectormappos;        /* file posn for sector map */
  1484. X--- 65,70 ----
  1485. X***************
  1486. X*** 88,94 ****
  1487. X  struct star {
  1488. X      float xpos,ypos;
  1489. X      char stability;        /* how close to nova it is */
  1490. X!     char name[NAMESIZE];
  1491. X      char numplanets;        /* # of same */
  1492. X      char pnames[MAXPLANETS][NAMESIZE]; /* names of planets */
  1493. X      int planetpos[MAXPLANETS];         /* file posns of planets */
  1494. X--- 83,89 ----
  1495. X  struct star {
  1496. X      float xpos,ypos;
  1497. X      char stability;        /* how close to nova it is */
  1498. X!     char name[NAMESIZE];    /* name of star */
  1499. X      char numplanets;        /* # of same */
  1500. X      char pnames[MAXPLANETS][NAMESIZE]; /* names of planets */
  1501. X      int planetpos[MAXPLANETS];         /* file posns of planets */
  1502. X***************
  1503. X*** 115,121 ****
  1504. X      int snum;        /* what star system obj # (level=0) */
  1505. X      int pnum;        /* number of planet */
  1506. X      int shipno;        /* # of ship */
  1507. X-     /*int moon;        /* ptr to moon of planet obj # (lev=2)*/
  1508. X      char prompt[NAMESIZE+NAMESIZE+NAMESIZE+5];    /* just to be safe */
  1509. X      float lastx, lasty, zoom;    /* last coords for zoom */
  1510. X  } Dir;
  1511. X--- 110,115 ----
  1512. X*** ../../GB2/Docs/actionpoints.doc    Wed Jul  5 15:14:28 1989
  1513. X--- Docs/actionpoints.doc    Fri Sep 15 07:29:04 1989
  1514. X***************
  1515. X*** 16,22 ****
  1516. X  to the following formula:
  1517. X  
  1518. X    AP[player] = AP[player] + (ships in system) / 10 + 
  1519. X!             (total system population) / 5000 + 1
  1520. X  
  1521. X    Unless that system has not been explored, in which case the player will get
  1522. X  none.  No player can have more than 99 action points in one system, or the
  1523. X--- 16,22 ----
  1524. X  to the following formula:
  1525. X  
  1526. X    AP[player] = AP[player] + (ships in system) / 10 + 
  1527. X!             (total system population) / 3000 + 1
  1528. X  
  1529. X    Unless that system has not been explored, in which case the player will get
  1530. X  none.  No player can have more than 99 action points in one system, or the
  1531. X***************
  1532. X*** 31,35 ****
  1533. X  
  1534. X  SEE ALSO
  1535. X    cs
  1536. X- 
  1537. X  
  1538. X--- 31,34 ----
  1539. X*** ../../GB2/Docs/god.doc    Wed Jul  5 15:14:37 1989
  1540. X--- Docs/god.doc    Fri Sep 15 07:27:17 1989
  1541. X***************
  1542. X*** 2,8 ****
  1543. X  
  1544. X  
  1545. X  NAME
  1546. X!   god -- turn off deity privileges
  1547. X  
  1548. X  SYNTAX
  1549. X    god
  1550. X--- 2,8 ----
  1551. X  
  1552. X  
  1553. X  NAME
  1554. X!   god -- turn off diety priveledges
  1555. X  
  1556. X  SYNTAX
  1557. X    god
  1558. X***************
  1559. X*** 9,14 ****
  1560. X  
  1561. X  DESCRIPTION
  1562. X    
  1563. X!   If the user had deity privileges before, this revokes them, for 
  1564. X  development purposes.
  1565. X  
  1566. X--- 9,14 ----
  1567. X  
  1568. X  DESCRIPTION
  1569. X    
  1570. X!   If the user had diety priveledges before, this revokes them, for 
  1571. X  development purposes.
  1572. X  
  1573. X*** ../../GB2/Docs/map.doc    Wed Jul  5 15:14:41 1989
  1574. X--- Docs/map.doc    Fri Sep 15 07:27:22 1989
  1575. X***************
  1576. X*** 23,29 ****
  1577. X     '~' -- Gas (such as might be found on a gas giant planet)
  1578. X     '%' -- Wasteland (uninhabitable)
  1579. X     ' ' -- (Under certain circumstances the sector may be blank)
  1580. X!    'o' -- A steel (or whatever) plated sector, much like the planet
  1581. X          Trantor (from Asimov's _Foundation_)
  1582. X  
  1583. X  
  1584. X--- 23,29 ----
  1585. X     '~' -- Gas (such as might be found on a gas giant planet)
  1586. X     '%' -- Wasteland (uninhabitable)
  1587. X     ' ' -- (Under certain circumstances the sector may be blank)
  1588. X!    '|' -- A steel (or whatever) plated sector, much like the planet
  1589. X          Trantor (from Asimov's _Foundation_)
  1590. X  
  1591. X  
  1592. X***************
  1593. X*** 32,38 ****
  1594. X     'x' -- Area owned by the player
  1595. X     '?' -- Area owned by another player
  1596. X     'pscbdfgetSDM%#+mACV^ EYBG[' -- a ship of that type is landed on the sector
  1597. X!    'o' -- Area that has been developed to 100% efficiency (steel plated)
  1598. X  
  1599. X  
  1600. X  
  1601. X--- 32,38 ----
  1602. X     'x' -- Area owned by the player
  1603. X     '?' -- Area owned by another player
  1604. X     'pscbdfgetSDM%#+mACV^ EYBG[' -- a ship of that type is landed on the sector
  1605. X!    '|' -- Area that has been developed to 100% efficiency (steel plated)
  1606. X  
  1607. X  
  1608. X  
  1609. X***************
  1610. X*** 115,119 ****
  1611. X  
  1612. X  SEE ALSO
  1613. X    orbit, cs, scope
  1614. X- 
  1615. X  
  1616. X--- 115,118 ----
  1617. X*** ../../GB2/Docs/order.doc    Wed Jul  5 15:14:46 1989
  1618. X--- Docs/order.doc    Fri Sep 15 07:27:24 1989
  1619. X***************
  1620. X*** 19,25 ****
  1621. X      specified.
  1622. X  
  1623. X    (s)peed -- Typing a '?' at this point gives help on the speed settings.
  1624. X-     speed cannot be higher than the speed rating of the ship.
  1625. X  
  1626. X    The following order can not be made on space mirror ships:
  1627. X  
  1628. X--- 19,24 ----
  1629. X***************
  1630. X*** 38,44 ****
  1631. X--- 37,65 ----
  1632. X  
  1633. X      (i)ntensity -- change degree of focus for a space mirror.
  1634. X  
  1635. X+   The following orders can be made for most ships:
  1636. X  
  1637. X+     (n)avigate -- while this is on the destination described above is 
  1638. X+     ignored and instead, the ship will travel in the direction
  1639. X+     specified by the course. The directions are specified with
  1640. X+     degrees between 0 and 360 where 0 is 'up', 90 is 'right',
  1641. X+     180 is 'down' etc. You must also specify the number of turns
  1642. X+     to do the maneuver. After every move the turn count is decremented
  1643. X+     one until it becomes zero. After the maneuver the navigate
  1644. X+     setting is automatically turned off and if a destination
  1645. X+     has been set the ship will then proceed in that direction.
  1646. X+ 
  1647. X+     (p)rotect -- this allows a ship to protect another ship. Suppose, for
  1648. X+     example, ship A is set to protect ship B. If another ship C
  1649. X+     fires at B then both B *and* A will retaliate. This allows
  1650. X+     players to design their own defense networks.
  1651. X+ 
  1652. X+     p(l)anetary defense -- If this is set 'on' it will retaliate
  1653. X+     if the planet that it is in orbit around or landed on is
  1654. X+     attacked. If it is set 'off' the ship will not retaliate if
  1655. X+     its host planet is attacked.
  1656. X+ 
  1657. X+ 
  1658. X    Action Points are deducted from the root and each star.  No more than
  1659. X  the normal AP cost will be deducted from the root or each star, no matter
  1660. X  how many ship's orders are changed in each.
  1661. X***************
  1662. X*** 53,56 ****
  1663. X--- 74,78 ----
  1664. X  
  1665. X  SEE ALSO
  1666. X   scope, actionpoints
  1667. X+ 
  1668. X  
  1669. END_OF_FILE
  1670. if test 51327 -ne `wc -c <'patches01d'`; then
  1671.     echo shar: \"'patches01d'\" unpacked with wrong size!
  1672. fi
  1673. # end of 'patches01d'
  1674. fi
  1675. echo shar: End of archive 4 \(of 4\).
  1676. cp /dev/null ark4isdone
  1677. MISSING=""
  1678. for I in 1 2 3 4 ; do
  1679.     if test ! -f ark${I}isdone ; then
  1680.     MISSING="${MISSING} ${I}"
  1681.     fi
  1682. done
  1683. if test "${MISSING}" = "" ; then
  1684.     echo You have unpacked all 4 archives.
  1685.     rm -f ark[1-9]isdone
  1686. else
  1687.     echo You still need to unpack the following archives:
  1688.     echo "        " ${MISSING}
  1689. fi
  1690. ##  End of shell archive.
  1691. exit 0
  1692.