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.
"Super-Easy" isn't a particularly problematic name, but "Assisted"
is more descriptive of what the difficulty mode is for (to assist
players who have trouble playing on easy mode).
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.
This is a new theme for Starfighter! This version represents mystery
and the ominous presence of WEAPCO. Other versions will be used for
other situations, and a sort of combination between this and Last
Cyber Dance will serve as the music for the final Kline battle. That's
the theory anyway.
This is meant to help connect RE to something. I figured that by
using a similar kind of music for both it and the game over screen,
it would create a bit of a connection there and musically communicate
that it's game over, except for Kline instead of you.
We can't distribute the original music, but adding support for it in
as a compile-time option will enable modding the game to look and
feel like the original without having to edit the source code.
There was a period of time just after the defeat of Kline that the
game wasn't responding to input, causing the OS to panic. Corrected
this, and also made it so that resizing the window adjusts the
positioning of the credits appropriately.
Modern Starfighter starts you in the center, but originally you started
at (200, 200). This matters particularly for boss fights, since since
the off-center start position meant you didn't start in the same vertical
position as the bosses.
Should be harmless since empty strings are ignored in
radio_getRandomMessage, but it's still supposed to be in a form
that uses \n only as necessary; the trailing newline was a mistake.
Fixes#7
Designed to use the game controller API if possible, or fall back
to the regular joystick API otherwise.
This also makes it so that all connected controllers can be used,
rather than just the first one.