void do_pod(shiptype *ship) { reg int i; if(ship->whatorbits==LEVEL_STAR) { if (ship->special.pod.temperature >= POD_THRESHOLD) { i = int_rand(0,(int)Stars[ship->storbits]->numplanets - 1); sprintf(telegram_buf, "%s has warmed and exploded at %s\n", Ship(ship), prin_ship_orbits(ship)); if(infect_planet((int)ship->owner, (int)ship->storbits, i)) { sprintf(buf,"\tmeta-colony established on %s.", Stars[ship->storbits]->pnames[i]); } else sprintf(buf,"\tno spores have survived."); strcat(telegram_buf, buf); push_telegram((int)(ship->owner), (int)ship->governor, telegram_buf); kill_ship((int)(ship->owner), ship); } else ship->special.pod.temperature += round_rand((double)Stars[ship->storbits]->temperature/ (double)segments); } else if(ship->whatorbits==LEVEL_PLAN) { if(ship->special.pod.decay >= POD_DECAY) { sprintf(telegram_buf, "%s has decayed at %s\n", Ship(ship), prin_ship_orbits(ship)); push_telegram((int)ship->owner, (int)ship->governor, telegram_buf); kill_ship((int)ship->owner, ship); } else { ship->special.pod.decay += round_rand(1.0/(double)segments); } } }
void do_pod(shiptype *ship) { int starsys; int planetno; memset((char *)buf, 0, sizeof(buf)); if (ship->popn != 0) { if (ship->whatorbits == LEVEL_STAR) { if (ship->special.pod.temperature >= POD_THRESHOLD) { starsys = ship->storbits; planetno = int_rand(0, (int)Stars[starsys]->numplanets - 1); sprintf(telegram_buf, "%s has warmed and exploded at %\n", Ship(ship), prin_ship_orbits(ship)); /* Seed passes through wormhole */ if (Stars[starsys]->wh_has_wormhole && (planetno == (Stars[starsys]->numplanets - 1))) { planets[starsys][planetno]->info[ship->owner - 1].explored = 1; starsys = Stars[starsys]->wh_dest_starnum; planetno = int_rand(0, (int)Stars[starsys]->numplanets - 2); sprintf(buf, " The spores traversed a wormhole to %s.\n", Stars[starsys]->name); strcat(telegram_buf, buf); } if (infect_planet((int)ship->type, (int)ship->owner, starsys, planetno)) { sprintf(buf, " Meta-colony established on %s.", Stars[starsys]->pnames[planetno]); } else { sprintf(buf, " No spores have survived."); } strcat(telegram_buf, buf); push_telegram((int)ship->owner, (int)ship->governor, telegram_buf); kill_ship((int)ship->owner, ship); } else { /* pod.temp >= POD_THRESHOLD */ ship->special.pod.temperature += round_rand((double)Stars[ship->storbits]->temperature / (double)segments); } } else if (ship->whatorbits == LEVEL_PLAN) { if (ship->special.pod.decay >= POD_DECAY) { starsys = ship->storbits; planetno = ship->pnumorbits; sprintf(telegram_buf, "%s has decayed at %s\n", Ship(ship), prin_ship_orbits(ship)); /* Seed passes through wormhole */ if (Stars[starsys]->wh_has_wormhole && (planetno == (Stars[starsys]->numplanets - 1))) { starsys = Stars[starsys]->wh_dest_starnum; planetno = int_rand(0, (int)Stars[starsys]->numplanets - 2); sprintf(buf, " The spores traversed a wormhole to %s.\n", Stars[starsys]->name); strcat(telegram_buf, buf); } if (infect_planet((int)ship->type, (int)ship->owner, starsys, planetno)) { sprintf(buf, " Meta-colony established on %s.", Stars[starsys]->pnames[planetno]); } else { sprintf(buf, " No spores have survived."); } strcat(telegram_buf, buf); push_telegram((int)ship->owner, (int)ship->governor, telegram_buf); kill_ship((int)ship->owner, ship); } else { /* decay > POD_DECAY */ ship->special.pod.decay += round_rand(1.0 / (double) segments); } } } else { /* If no population on board, don't infect! --jpd-- */ /* Don't decay if military on board. */ if (!ship->troops) { sprintf(telegram_buf, "%s has no population and has decayed at %s\n", Ship(ship), prin_ship_orbits(ship)); push_telegram((int)ship->owner, (int)ship->governor, telegram_buf); kill_ship((int)ship->owner, ship); } } /* If ship->popn != 0 --jpd -- */ }