This condition blocked items from doing damage after just
being thrown. The intention was to not let shotgun Ballhog
instakill the player. This is now prevented by
MF2_ALREADYHIT instead.
blame cab1af549
Damage can't be ignored entirely while in hitlag because
that defeats stacked hitlag (wombo combo).
But it should be ignored if in an invincible state.
Bubble Shield could collide with the same object up to
5 times per tic! (3 times at least!)
1) P_CheckPosition from MFE_ONGROUND being unset.
2) P_CheckPosition AGAIN from MFE_ONGROUND being unset
while literally being on the ground. This one's
probably a bug in general but it's beyond the scope of
this commit. It's also scary movement code, yiiiikes...
3) P_MoveOrigin to teleport the Bubble to its holder's
position.
4) If something moves into the Bubble.
5) If something moves into the player holding the Bubble.
This generated extra unwated hitlag, especially noticeable
against invincible players.
To reduce these to one collision only, the Bubble is now
MF_NOCLIPTHING except while calling P_MoveOrigin. The
player's own hitbox is also disabled for Bubble
collisions.
- Move condition for whether hitlag came from a constant
damage source into P_DamageMobj directly. Should be more
accurate if a player is dealt brand new damage, the
constant damage still won't count.
- player->invulnhitlag renamed to player->nullHitlag
- Slope thrust is scaled with game speed. Makes Easy more reasonable, and Hard goofier.
- Slope upward/downward thrust multiplier is applied to all objects equally, instead of only players.
Measures whether you have all 7 Chaos Emeralds, 7 Super Emeralds, or 14 Emeralds
- Hidden if you haven't entered a special stage yet
- Checks all cups and all relevant difficulties outside of GS_LEVEL
- You can specify a difficulty of Normal, Hard, or Master
Record whether you've ever successfully entered a special stage
Used for conditions which were previously checking for whether you'd completed a special stage - which I think is a bit too restrictive for someone figuring out what next to lab
Save your best GP stats across sessions.
- Saved into gamedata
- Deliniated per difficulty option
- Draw onto cupgrid in GP cup select
- Best grade
- Whether you've ever gotten the Emerald
- TODO: Always shows Chaos Emerald, will need updating when Super Emerald graphics are created
- Monitor status changes depending on recorded position
- 1st: Gold, shiny
- 2nd: Silver, shiny
- 3rd: Bronze, shiny
- 4th and downwards: Beige, barely different
- Wiped with G_ClearRecords
Also, to avoid circular dependencies:
- KARTSPEED/KARTGP constants moved from command.h to doomstat.h
- gp_rank_e enums moved from k_rank.h to doomstat.h
- UDMF: use args[1] instead of line tag.
- Binary: do not add thing angle to thing's tag list, just
compare angle directly. Seemed weird that this was the
only place in the code to alter the tags list like that.
- Start with 3, per Sakurai's prior art.
- Earn them per certain number of rounds
- DEVELOP builds: once every 4 rounds
- Release builds: once every 50 rounds
- Has an internal cap based on the maximum number of unlockables supported.
- Possible future work could adjust this to restrict based on the maximum number of unlockables unlocks.pk3 actually has set.
- Use on the Challenges screen to bust open small tiles with hints (or the very first tile, if you haven't unlocked anything yet).
- Will do a funny shake if you try anything else.
- Interrupts menu flow just like getting an unlock.
- The matches you've played will tick upwards, giving you keys as they loop over.