Commit Graph

134 Commits

Author SHA1 Message Date
onpon4 cac29f72a2 Fixed positioning of mine explosions.
Accidentally put "x" instead of "y". Whoops! Fixed now.
2016-01-06 20:49:02 -05:00
onpon4 822ff849e4 Removed the very last of the image-related magic numbers (in source code).
The only magic numbers left now are related to positioning, image
sizing, and the remaining "data" files (the "planets" and "brief" ones).
At least, I'm pretty sure that's the case.
2016-01-06 20:35:37 -05:00
onpon4 4be080225b Fixed more magic numbers.
God, this one was definitely the biggest headache of all of the
magic number erasing. Never did I expect such cryptic problems.

The first problem was that the entirety of the player's weapon
struct was a part of the save file, *including the weapon's "image
indexes"*. Since the indexes have been changed, and the originally
used one is now unavailable when it's requested, this was causing
a segfault later on. Had to fix this by setting the image index
when the game is loaded.

The second problem was related to another bug I've been confused
about for years: the one that causes mobile rays to fire 5 green
shots. The entire reason those shots were green was because
the weapon's image indexes were undefined, and *that was causing
them to default to 0*. 0 was simply the index of green plasma.
Of course, though, now attempting to use that image causes a
segfault, so for now, I've fixed this by changing the image index
of the mobile rays to the red plasma bolts.

There are still some magic numbers left, related to the intermission
screen. But the hardest part is now done, thank God.
2016-01-05 22:12:29 -05:00
onpon4 97f1f441c2 Removed more magic numbers. 2016-01-05 06:44:26 -05:00
onpon4 5acc9f37f3 Moved cutscenes to C. 2016-01-04 20:17:06 -05:00
onpon4 0da184f424 Moved the ship image definitions to C code.
Now, this has an unfortunate effect of screwing up cutscenes. I'll
fix that by moving cutscene definitions to C as well.
2016-01-04 16:34:29 -05:00
onpon4 697a302fc6 Some cleanup I forgot to do in gfx.cpp. 2016-01-03 22:39:16 -05:00
onpon4 05323ed1fb Added code to handle different resolutions during missions.
This is capable of handling any resolution which is at least 640x360.
Actually, resolutions a bit smaller than that can be handled. No
manual adjustment is necessary. :)

Now, the intermission screen needs to be fixed...
2016-01-03 20:30:54 -05:00
onpon4 56240606e9 Changed all the magic number ship indexes to named ship indexes.
Also, now that the magic numbers are gone, I was able to get rid of
all the hardsetting of numbers for the special ship indexes (which
was only in place to avoid breaking the magic numbers).
2016-01-03 16:20:22 -05:00
onpon4 7677aa24f1 Reduced the amount of extra money classic difficulty gives. 2016-01-03 15:54:26 -05:00
onpon4 e5e7d6b9c4 Some cleanup. 2016-01-03 14:31:39 -05:00
onpon4 16473a715f Moved alien definitions from ".dat" files to alien.cpp.
Like "scripts", these definitions in text files make absolutely no
sense. They are completely unreadable, and Starfighter's engine is
inflexible anyway.
2016-01-03 14:14:31 -05:00
onpon4 e258921987 Moved all "script" files to C code.
I'm going to do this for all of the stuff in the "data" directory.
It was obviously an attempt to make Starfighter more flexible
somehow, but it fails at that entirely. More importantly, these
things are both unreadable and easy to make mistakes on. Simple
C code is much easier to read.

The only disadvantage is that recompiling is now needed to change
the "scripts", but considering that they had hidden limits and
no one was making custom missions to begin with, I don't consider
this to be a real loss.
2016-01-02 22:37:44 -05:00
onpon4 ce94477b70 More cleanup. 2016-01-02 16:59:48 -05:00
onpon4 651a7f55fb Did some more cleanup, removing more "shape" magic numbers. 2015-12-31 10:47:27 -05:00
onpon4 17b5f60958 More cleanup. Also rewrote the method of frame delaying a bit.
I rewrote the method because what it was doing was so confusing, I
couldn't figure out whether it actually worked right or not. I think
it did, and it's only 2/3 of a milllisecond anyway (not noticeable
at all), but this new way of writing it is much clearer.
2015-11-06 21:35:07 -05:00
onpon4 7694d668ff More cleanup. 2015-11-06 19:43:34 -05:00
onpon4 cce6d11510 More cleanup. 2015-11-02 17:53:05 -05:00
onpon4 9e6ff10c57 More cleanup. 2015-10-26 20:07:31 -04:00
onpon4 134a52e5f0 Some more cleanup. 2015-10-11 12:04:52 -04:00
onpon4 c68cb3f920 More cleanup. 2015-09-26 08:49:21 -04:00
onpon4 0f10c6d5c7 Converted the three "collision" functions to four differently-named ones.
The fourth is simply a duplicate of ship_collision for bullets. A
bit redundant, but I figure it's clearer of a definition. Besides,
this opens up the door to possibly making bullets a different struct
type in the future, if that turns out to be desirable.
2015-09-25 16:28:09 -04:00
onpon4 9a211d773c More reorganization. 2015-06-20 11:59:09 -04:00
onpon4 30ace4d67b Returned the obscene power of the original charger to origial difficulty.
Also made some tweaks to the code that displays the charge shots
to make it look a little better.
2015-06-09 01:06:26 -04:00
onpon4 9be21cbd3a Made it possible to hit the Uranus boss via its wings.
The idea is clearly supposed to be breaking the boss in two and then
destroying the halves, so it makes no sense for the wings you break
off to also act as shields, which they did. Pretty much all this did
was cause a lot of shots to be wasted.
2015-06-02 12:43:06 -04:00
onpon4 51ae0dc659 Made *all* enemies face forward in Ellesh mission.
I don't really understand why this code was implemented only for the
boss and not for anyone else. My only guess is it was designed to make
the level harder by letting enemies fire backwards while you can't,
but mine-droppers can already effectively do that.

The primary reason I decided to make sure they all face forward is I
was finding it to be nearly impossible to get through this level in
Nightmare difficulty; those ships being able to shoot backwards is
a HUGE advantage, because it's almost impossible to position yourself
in an area that's safe.

It may be that the unfair previous behavior was put in to compensate
for the AI's frankly asinine movement pattern. The random movement is
fine most places, but here, it's blatantly obvious that it's random,
and the enemy ships pay a steep price for it. What the ships should
be doing is positioning themselves so that they end up shooting or
dropping mines at the player. But the boss itself also has such a
positioning problem anyway; that should be properly fixed in the
future, so I might as well do the same for the smaller ships when
that time comes.
2015-06-01 20:09:33 -04:00
onpon4 c6735cd88b More cleanup 2015-05-28 06:51:45 -04:00
onpon4 f306825636 Removed the "nomove" and "nofire" cheats.
I honestly don't understand why these cheats were here. Preventing
enemies from moving breaks some missions and doesn't do anything
useful, and preventing enemies from firing is basically no better
than the invincibility cheat (and might even be worse, if it applies
to Sid; I didn't check).
2015-05-20 19:41:43 -04:00
onpon4 1c42d07906 Made the ammo cheat work on the laser and charge cannon.
The laser never overheats with infinite ammo, and the charge cannon
fires at full blast immediately.
2015-05-20 10:39:30 -04:00
onpon4 8698125f5f In original difficulty, no moving the camera on autoscrolling missions. 2015-05-20 10:27:21 -04:00
onpon4 87685a69de Doubled the amount of money pickups give you in "original" difficulty.
This is to compensate for the loss of the money bonus that used to
be there, to make the money you get more or less the same as in
version 1.2.
2015-05-01 20:04:51 -04:00
onpon4 98a74e0d44 More code cleanup. 2015-04-30 18:51:26 -04:00
onpon4 6ede2722a0 Pause music when pausing the game. (Untested.) 2015-04-26 07:45:58 -04:00
onpon4 60968c7b0e Some more touch-ups. 2015-04-26 07:37:30 -04:00
onpon4 59a15eb6f3 Removed the shock damage messages, fixed a mistake. 2015-04-24 16:37:55 -04:00
onpon4 5982fcc0d8 Some reorganization. 2015-04-24 16:27:07 -04:00
onpon4 c002b97d96 Added some fake difficulty to the Dorim level.
The way it was previously, you always knew exactly where the WEAPCO
scientist was. I don't remember if this was the case in the original
game (I don't think it was), but regardless, this makes the mission
seem incredibly short and easy, and it ends up centering on the
secondary objective rather than the primary objective. Now, you have
to search through all the asteroids until you find the right one,
and you have to pay close attention to explosions. Collecting ore is
just something you do along the way.

It may be fake difficulty, but after all, tropes are not bad.
2015-04-14 18:55:15 -04:00
onpon4 fdd780ca0f Fixed a duplicate variable.
The only effect I noticed was creating asteroid explosions in the
wrong places, but it could be that it had far more disasterous results.
2015-04-14 18:50:07 -04:00
onpon4 dd6723ffc2 Fixed division by 0 error 2015-04-14 17:15:06 -04:00
onpon4 5a1954dd24 Revert "Implemented an old super charge bug as a feature in "original" difficulty."
This reverts commit 84978b6c6b.
2015-04-08 20:26:59 -04:00
onpon4 84978b6c6b Implemented an old super charge bug as a feature in "original" difficulty.
The bug in question caused the super charge to be stripped away when
you collected powerups; each powerup would limit that aspect of your
weapon to its maximum. This put a limit on how long you could keep the
super charge, so I've added it back in for "original" difficulty.
2015-04-08 20:09:43 -04:00
onpon4 e5ed96e1c6 More cleanup. 2015-04-07 19:16:46 -04:00
onpon4 4775b3fad4 Some code cleanup. 2015-04-07 16:09:17 -04:00
onpon4 0e1cd4b86f Changed timeTaken from int to long int.
This guarantees that it will be able to store at least about 68 years.
2015-03-31 15:23:17 -04:00
onpon4 826b3dfe5c Fixed controls being stuck, but still on, at the end of Venus.
Now the controls are cleared, so the intended effect always happens.
2015-03-29 16:49:33 -04:00
onpon4 9f7809de1c Made the mines in Mars more sparse and numerous.
There. Together with spreading out the asteroids, this has the effect
of getting rid of the sort of boxed-in feel this mission originally
had, and preventing the mission from being beaten simply by going
up or down forever.
2015-03-29 14:27:29 -04:00
onpon4 f9da05655d In the Mars mission, create asteroids more sparsely. 2015-03-29 14:18:19 -04:00
onpon4 5019244da1 Added an enum for missions/areas.
Eliminating another set of magic numbers, and God, that was tedious.
2015-03-29 13:11:12 -04:00
onpon4 576d254e4a Replaced rrand function with RANDRANGE macro. 2015-03-29 10:19:53 -04:00
onpon4 5155a8ac68 Fixed spacing/indent problems. 2015-03-28 13:18:37 -04:00
onpon4 e105d6a1cc Added a new "original" difficulty.
This difficulty is meant to imitate the original Project: Starfighter
as closely as possible, for purists.
2015-03-28 09:51:49 -04:00
onpon4 1567595def Changed all the various unnecessarily specifically defined types to "int".
Most of these were defining various integers as char types, probably
in the naive belief that this is necessarily good because it uses less
RAM. There were also several unnecessary unsigned ints, though.
These have all been changed to just "int", so the compiler can decide
exactly what type to use.
2015-03-24 18:51:12 -04:00
onpon4 6ea311a046 Small tweaks 2015-03-20 13:05:14 -04:00
onpon4 4d8ceec9c4 Small tweak. 2015-03-17 22:09:00 -04:00
onpon4 f124b71310 Substantially increased the chance of the experimental fighter appearing.
It previosly spawned half of the time. Now it spawns 4/5 of the time.
This makes waiting for it to show up so you can fight it a lot less
painful, even if it doesn't make a whole lot of sense.
2015-03-17 22:04:58 -04:00
onpon4 ad8a2f2ad9 Replaced various "limit" functions with LIMIT and LIMIT_ADD macros.
This is mainly because the old "limit" functions were all restricted
to certain types, which is incredibly silly given how simple they are.
Macros are much simpler, and a warning gets raised if they're used
improperly with multiple types, anyway.

In the process, I also found and fixed a bug: it seems the original
author intended for escaping enemies to gradually accelerate to
fleeing speed, but the low value was indicated as the max value, and
the way limitFloat was written, that caused the max value to be used
(it was supposed to reduce the speed to a minimum of -15, but it
instead effectively assigned the speed to -15). It might be a good
idea to re-implement the old buggy behavior intentionally; depends
on whether the acceleration of jumping looks better or worse than
just immediately going to jump speed.
2015-03-17 19:00:13 -04:00
onpon4 717d56755c Moved fireRay to the ship module.
Also removed a really bad convention where a variable called "anEnemy"
was used, rather than just "aliens[i]".
2015-03-17 10:34:29 -04:00
onpon4 2a0234c300 Added ship module, moved fireBullet to it (as ship_fireBullet).
For functions that are used by both aliens and the player.
2015-03-13 10:10:58 -04:00
onpon4 6f768c88a6 Added some starting money for nightmare difficulty.
As a result, you're not stuck with the weakest weapon in the game
anymore. You have to choose between the double rockets, plasma
permanently upgraded in one area, plasma temporarily upgraded in
some areas, or some combination.
2015-03-12 22:14:07 -04:00
onpon4 31a8383f90 Changed the way Kline works.
Kline previously had a maximum of 500 or 750 health, and uses some
hacks to cause it to flee just as it was destroyed, and to advance
to new stages in the final battle.

I've replaced this with a much larger amount of health, and progression
being based on how much health he has.

Also some other stuff.
2015-03-08 20:59:33 -04:00
onpon4 982d39278c Removed the dialog from the start of mission 26.
I feel it's unnecessary, and it can be an annoying wait if you're
struggling with Kline.
2015-03-08 17:56:38 -04:00
onpon4 28cc1fcc6d Updated audio module. 2015-03-08 10:38:58 -04:00
onpon4 da35b44179 Brought Kline's health in the final battle back down.
The increase worked well in mission 25, but not so much in mission
26.
2015-03-07 17:13:37 -05:00
onpon4 4b3cb9c1d3 Fixed some problems. 2015-03-07 15:34:47 -05:00
onpon4 22fcdae8cc Several adjustments for difficulty purposes.
Started out adjusting prices, then ended up doing other things
while testing. Committing this now before I start doing other
random stuff!

But all of the changes are related to balancing difficulty, mostly
with prices, except for a couple bugfixes in the shop. Most notably:

* Ammo now costs $10, not $50. You no longer have to worry about
  saving ammo quite as much as a result.
* Plasma upgrades' cost is now calculated differently, and the result
  is slightly lower prices than before.
* Easy mode now grants the player more max ammo than other difficulties.
* Increasing max plasma ammo now costs less at the start, and increases
  in cost faster.
* You increase max plasma ammo by 25 at a time, not 10. (10 was just too
  small of a number.)
* Destroying enemy ships no longer gives you money. I found that, even
  in hard mode, I had *way* too much money coming in, and this cuts it
  down substantially. It also makes the shield bonus at the end of missions
  much more significant. To compensate for the loss of massive bonuses
  bosses used to give, these bosses now drop a lot more stuff.
* Kline has decreased health in his first encounter, and increased health
  in his last two encounters (the numbers have been reversed).
2015-03-07 12:19:35 -05:00
onpon4 a3efbc06cc Substantially increased the cost of plasma upgrades.
I feel these were extremely underpriced. $1000 for triple bullets?
That's dirt-cheap! Even in hard mode, I have no trouble getting that.
2015-03-07 09:42:24 -05:00
onpon4 9974848ce8 Moved some things. 2015-03-06 23:18:31 -05:00
onpon4 09e1f1f72e Some adjustments to weapons.
* Modified the upgrade limits, to both be uniform and allow upgrades for
  every factor. (In fact, each one can be upgraded exactly once now.)
* Gave triple-spread weapon double damage.
* Micro rocket damage down from 7 to 6. Total damage is now equal to
  double rockets.
2015-03-06 16:25:12 -05:00
onpon4 19936f67c9 Substantially reduced the amount you can upgrade your plasma cannons.
I've tested this a lot, and I think these are good numbers to go by.
Plasma damage has been limited the most, because it is the upgrade
that quickly breaks the balance of the weapons, making the plasma
cannon the obviously most powerful weapon. I don't want this; the
powerful weapon should be the secondary weapon, while the plasma
cannon is the fast-firing weapon with much more ammo.

Basically, I want to make a tactic I found myself using, which was
to carefully keep my plasma power at maximum and take out most
enemies in one plasma shot, obsolete. As a result, missiles should
now be much more cost-effective (because even a single missile's
power of 15 greatly exceeds plasma's maximum power of 3*2=6).

None of these reductions in limits apply to easy mode; that mode
still has the old limits of 3 for min and 5 for max.
2015-03-06 12:36:02 -05:00
onpon4 9efaff2783 Started renaming functions.
I'm going to completely reorganize this absolute mess of a codebase.
First thing is to fix the names so that it's more obvious what files
they're defined in. Second thing is to move around some functions,
and rename some of the cpp and h files, to organize them better.
I'm doing these both at once.
2015-03-04 21:30:23 -05:00
onpon4 60783849e4 Removed the extro text from the credits.
I don't feel it's really necessary, and besides, it's annoying that
due to the way it's implemented it prevents you from doing anything
while it's shown.
2015-03-04 08:20:11 -05:00
onpon4 3d1ad2b674 Autosave when changing planets and when buying/selling.
Previously, it just saved after completing a mission, so it wasn't
something you could really rely on. Now it saves every time something
changes.
2015-03-03 19:28:15 -05:00
onpon4 1f2ef8ac50 Dedicated autosave slot + much improved menu code.
I found it kind of odd to be able to manually save to the autosave
slot, *and* have no reliable way to even know what the autosave
slot is. I noticed that it's an actual problem when my brothers
played Starfighter; one of them used an autosave slot, and the
other unwittingly ended up erasing the first one's save because of
this. To fix this, I have replaced the behavior of allowing the
player to define a slot as autosave, with a dedicated autosave
slot.

While I was there, I had no choice but to vastly improve on this
game's *atrocious* menu system. Granted, I didn't do much more
than replace the magic numbers with enums, but it makes the code
much more clear and more easy to edit.
2015-03-02 23:32:48 -05:00
onpon4 9959c47f98 Updated copyright notices on all files based on git-blame. 2015-03-01 15:37:32 -05:00
onpon4 98da910493 Added some buffs for easy difficulty and some nerfs for nightmare difficulty. 2015-02-27 18:11:59 -05:00
onpon4 d4d64dda6b Corrected bad use of fscanf.
In most cases, this has also resulted in limits being lifted. (The
only place I haven't done this is for planets in intermission.cpp,
but I think I'll take away that 10-planet limit as well.)
2015-02-27 17:59:25 -05:00
onpon4 c404e3611e Fixed edges of the screen slowing you down.
And unlike a fix I previously did, this one is perfect. Rather than
fiddling with ssx and ssy, I just added some new variables, smx and
smy.
2015-02-26 23:23:08 -05:00
onpon4 182ea70ba1 Removed gameplay option, have different max shield based on difficulty 2015-02-26 20:52:20 -05:00
onpon4 f385c9448e Upgraded to GPLv3. 2015-02-26 11:20:36 -05:00
Guus Sliepen 36f0e7a85d Merge remote-tracking branch 'origin/sdl2'
Conflicts:
	src/player.cpp
2014-05-13 16:22:11 +02:00
Julian e44c25018a Fixed indentation. 2014-03-12 15:18:41 -04:00
Julian b1ae2a4128 Added the changes I proposed a while back.
So now, when currentGame.gamePlay is set to GAMEPLAY_ONPON:
- You start with 50 shield, and never gain any increased capacity.
- You can't charge the charge cannon and shoot at the same time; if
  you shoot the plasma gun, the charge cannon shoots as well (as if
  you had released the charge key).

I didn't add in the feature to keep the view from slowing you down,
because the method I used was imperfect anyway.
2014-03-12 14:35:24 -04:00
Guus Sliepen 593ea01386 Initial conversion to SDL2. 2013-09-30 16:52:43 +02:00
Guus Sliepen bd4a449e10 Rename code/ to src/. 2013-07-11 14:24:37 +02:00