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.
That's the right character to pick. It's actually still broken; will
look into more later. Will also need to make it so that it ignores
leading whitespace.
This ensures that series of radio messages are stiched together
properly. An exception was given for the first Kline encounter;
timing stays the same for that one simply to make sure the music
cue isn't ruined.
This is a pretty big one! Someone I know suggested that I should
make the textboxes able to stay on the screen for longer, so I've
added an option for that! In the process I also changed Fire and
Altfire to advance to the next box immediately (rather than skipping
outright), so that if you select a slower speed you can still make
the text go to the next one after you're finished reading one.
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).
I had set it this way because it's how version 1.2 behaves, but
having experimented and looked at the 1.1 source code, the way I
changed it to is actually the original behavior! So, now it spreads
as in the original.
- Detect host OS
- Add CoreFoundation framework to linker flags
- Comment out a chdir which breaks the app on load
- Document how to work around locale building on a Mac
Fixes#3
This is something I've been thinking of doing for awhile. The
automatic leaving can be frustrating if you were trying to collect
the money dropped by the enemy and you're suddenly forced out of
the mission. This prevents that by simply waiting to do the exit
sequence until no worthwhile collectables are left in the area.
Ellesh and Mars are excluded since this won't really work in those
areas. Also excluded by Classic and Nightmare difficulties.
I reduced the chance of smoke happening a given frame from 1/5 to 1/10,
and removed the check that stopped adding the "engine" effect to the
player if low on shield, so it now shows both when damaged.
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.