After some digging through the available source code (or at least the git repository debian uses to maintain this package) I tracked the effect down to the following code snippet in ships/pkunk/pkunk.c
, in the function pkunk_preprocess()
:
if (((BYTE)TFB_Random () & 1)
&& (hPhoenix = AllocElement ()))
{
LockElement (hPhoenix, &PhoenixPtr);
PhoenixPtr->state_flags =
FINITE_LIFE | NONSOLID | IGNORE_SIMILAR
| (ElementPtr->state_flags & (GOOD_GUY | BAD_GUY));
PhoenixPtr->life_span = 1;
PhoenixPtr->death_func = intercept_pkunk_death;
SetElementStarShip (PhoenixPtr, StarShipPtr);
UnlockElement (hPhoenix);
InsertElement (hPhoenix, GetHeadElement ());
}
If I've interpreted this right, what happens is that the resurrection is predetermined when the ship is spawned -- if TFB_Random() returns an odd value, the death_func() call is replaced with intercept_pkunk_death() which is defined a little further down in the code and triggers the "HAAAAAllelujah!" reincarnation before spawning a new Pkunk ship -- which itself calls pkunk_preprocess() and continues the cycle.
TL;DR: According to at least the source code as it exists in Debian, the odds of a respawn are as close to 50% as a software random generator can get.
(No, I don't think other versions behave wildly differently, but this is the only version I can be absolutely certain about; if you want to know for sure whether your version is the same, check the source code for the function described above)
EDIT Whoops, spoke slightly too soon.
In the function intercept_pkunk_death()
:
if (GRAVITY_MASS (ShipPtr->mass_points + 1))
{
ElementPtr->state_flags |= DISAPPEARING;
ElementPtr->life_span = 0;
}
else
{
ShipPtr->mass_points = MAX_SHIP_MASS + 1;
StarShipPtr->RaceDescPtr->preprocess_func = ShipPtr->preprocess_func;
StarShipPtr->RaceDescPtr->postprocess_func = ShipPtr->postprocess_func;
StarShipPtr->RaceDescPtr->init_weapon_func =
(COUNT (*) (PELEMENT ElementPtr,
HELEMENT Weapon[]))
ShipPtr->death_func;
ElementPtr->death_func = new_pkunk;
}
GRAVITY_MASS()
is a defined function that tests whether a value's mass is higher than MAX_SHIP_MASS
* 10 (which in turn is a defined value of 10).
So there is another nondeterministic factor that can determine whether the reincarnation is called off, involving the ship's mass_points. It's a little harder to figure out how those are calculated, but Pkunk ships start off at a mass of '1' and this check doesn't trip unless mass_points are higher than 100...
The Earth cruiser, despite otherwise sucking pretty bad, is actually decent against Slylandro probes. Practice in quick battle mode for a while, just a lot of Earth cruisers vs. Slylandro probes, until you're good at it. The strategy I use against the probes:
- Keep your distance. Basically stay as far away as the battle map lets you. The probes have no long range weapons, just the lightning thing that only works if the probe is right on top of you. Also, your missiles work better if they have a long way to travel (unintuitive but true!). 3 missile hits will kill a probe.
- If it closes and blasts you a bit with the lightning, try to keep it away from asteroids. The lightning has a limited charge; a probe can't kill an Earth cruiser on one charge. It will recharge if it hits an asteroid, but it generally isn't smart enough to go get it. So once it's blown its wad, it sometimes just buzzes back and forth next to you without doing anything... as long as you stay away from the asteroids. Feel free to blast it with the point defense laser when it closes in, too.
- The point defense laser can also be used to blow up asteroids, if you somehow beat the probe to them. Not sure how I recommend doing this.
- Supposedly the probe will back off if you aim your guns at it; this allows the Spathi ship to be extremely effective with the BUTT missiles. I didn't know this but this source claims it is so.
- Go visit the Slylandro planet as soon as you can manage it. They live in the north-west corner of the galaxy, on a gas giant planet. Prioritize fuel and speed upgrades until you can get there, and they'll give you the code to make the probes self-destruct. Alternatively, one of the exits from Quasispace is pretty close to the Slylandro planet, but you'll want to get the Portal Spawner first so that you can use Quasispace to get home as well. As an added bonus, the probes are the fastest NPCs in hyper (as fast as the Progenitor ship with 10/11 speed upgrades), so once you're fast enough to dodge them, you can run away from anything else in space.
Best Answer
The Pkunk-Yehat conflict can end in two ways. If the Captain presents the Yehat a living Shofixti, the Yehat Rebellion will break out and the Pkunk will be absorbed, seemingly vanishing, only to return in the last moment as an integral part of their combined civilizations.
If the Captain fails to do so, the Pkunk are eradicated by the Yehat.
Sources: 1, 2