Assisted difficulty multiplies the shield of the cargo ships in
Urusor by 4 so that stray shots are less likely to destroy them.
I've added a lesser version of this buff for these ships specifically
(rather than all friendly ships) on other difficulties: shield is
multiplied by 3. This is just enough to survive a stray missile, a
little stray laser fire, or a little stray plasma fire without being
destroyed (but sustained or direct fire will still destroy the ship).
Of course, this is not applied to Classic difficulty. It is also
excluded from Hard and Nightmare difficulties.
For difficulties above Easy difficulty which are not Classic difficulty,
Kline's run shield now changes depending on whether or not other
WEAPCO ships are still alive. If he's alone, the previous 100 shield
threshold was used. If any of the other ships are alive, though, he
only runs if he takes 500 damage (the same amount that you have to
inflict the first time you see him). The result of this is that he
doesn't run away real early in the battle (100 shield is so low that
you can easily make him run away with a quick laser shot); you have
to either fight real hard, or more realistically, defeat all the other
enemies first, making him feel like an actual threat rather than a
gimmick.
This is of course is excluded from Classic difficulty, and it's also
excluded from Easy and Super Easy difficulty.
This causes these mission targets to always appear the first time
the player enters an interception, and every time after they fail
to appear (so that you never have two time-wasting interceptions in
a row). In the case of the rescue slaves mission, this takes the
form of forcing the first ship to be a slave ship, and in the case
of the cloak fighter, it simply forces the cloak fighter to appear.
In each case, the variable controlling whether or not the condition
is forced gets set to 0 if the mission target spawned, ensuring that
time-waster interceptions can still occur as long as they both are
preceded and followed by worthwhile interceptions.
I decided this was important when I was playing and noticed that I
wasn't getting slaves to rescue several times in a row. This
situation would be confusing to new players and possibly make them
think they were doing something wrong. It can also be very annoying
to just not get any chances to make progress because of bad RNG.
Forcing them to appear the first time allows the player to be
immediately introduced to the targets, and forcing them to appear if
they didn't last time limits the frustration of bad RNG by ensuring
that even with the worst RNG, some amount of progress can be made.
Since the original actually constantly had you drain Kline's health
to zero and then re-adjusted it, there were effectively stop points
limiting the amount of damage you could do to the amount designated
for the current stage. This has been simulated by setting the shield
to the proper amount of shield for the respective stage if the
difficulty is DIFFICULTY_ORIGINAL.
This makes mines much less frequent and spreads the asteroids out
much more. The other super-easy mode nerfs don't work on Mars, so
these custom nerfs are necessary to keep the difficulty consistent.
The code caused Kline's systemPower to be restored to full when
disabled. This would have had no effect on the code; the systemPower
variable is only used to add the FL_DISABLED flag when it reaches
0, and restoring systemPower has no effect on this. This might have
been an attempt to make it impossible to disable Kline, but it
wouldn't have worked that way (it might simply not have been noticed
because disabling Kline would take a ridiculous amount of time and
is unlikely to happen without conscious effort).
At first I just went in to fix some places that were missing gettext
translations, but on the way as I was doing that, I noticed some
places where ngettext should be used, a bug in the fallback legacy
text rendering, and some things that could be structured better in
the Autoconf / Automake setup. Fixed those.
The original method just looked for non-firing targets, which caused
Sid to piss around a bit with the non-target transports. This new
method just targets the specific classes Sid is always going after,
cargo ships and bosses.
The way it previously was, in particular, Sid 100% refused to attack
fighting vessels and Phoebe and Ursula 100% refused to attack
non-fighting vessels. This was most notable with the Urusor mission,
where Sid would just become completely idle after disabling the last
non-combat vessel and would often just drift off into the distance
as a result (especially annoying in Classic difficulty as this
could make it very difficult to find the remaining enemies).
So now, instead these targets are treated as "undesirables", which
normally will be avoided but will be accepted after 30 frames.
This stops allies from idling around forever.
This rule has also been applied to a rule that didn't allow targeting
enemies beyond a particular distance.
I'm keeping it in Classic difficulty for now, but might add an
exception later.
I completely forgot about this stupid feature of the original game.
Nonetheless, it's a part of the original experience and thus has
been added back in, albeit implemented in a slightly different way
(the result is still the same). Because this is such a stupid and
badly designed mechanic, this is of course in Classic difficulty
only.
No, really, just added the whole thing. This took literally the
entire day. I'm soooo glad it's working now!
Also includes tons of other small fixes I didn't bother to keep
track of.
This is something I forgot about before: the executive transport
A.I. was changed by me at some point from "Normal" to "Evasive".
This change re-introduces "Normal" A.I. for this ship in Classic
difficulty.