Track wins per character.
- If you have an existing gamedata of minor version 2 or earlier, attempt to import your last-used profile's wins onto the character you last used on that profile, so you're not starting from nothing. It's not quite accurate, but it's something.
- Much like map headers and cups, these are also tracked in an unloaded_skins_t linked list. That work was done in this commit because gamedata is actually loaded before even base-game characters, which is annoying but at least confirmed it was working quicker.
- TEMPORARY: Your per-character wins are displayed in your latest-log.txt, in lieu of an update to the in-game statistics menu
Reuses most of the anti-grief code, but with a very low timer (5sec) and they simply hold Y when reaching it until they eventually respawn from the ring shooter.
- If a local player is already finished, don't play any sound
- If the local players finish as a result of this, play the race finish line cross sound
- Else, play the race opponent finish line cross sound
- Add flag application in function signature
- Consistent gating of extra PF_NOCONTEST application behind not already exiting
- This should fix dying after winning in K_Cooperative gametypes breaking things
- P_DoAllPlayersExit
- Consistent condition of playeringame, spectator, exiting, etc checks
- Also could force-give a life (for Battle Prisons)
- In gametypes where you can exit successfully but get PF_NOCONTEST, play the _lose jingle instead of RETIRE
- Affects Prison Break, Sealed Stars
- If you're losing, even if in first place, don't play the _first jingle
- Affects Prison Break
- Quake epicenter + radius now work.
- Since quake epicenter works, removed the display player check on all of the quakes, so other players can feel them.
- Multiple quake effects are stored in a linked list and dynamically created/freed, so they can stack together.
- Made in china
- Made the quake effects only work on the z axis.
- Quakes now alternate their intensity and dampen it over time, instead of randomly picking values.
- Added quake effects for offroad and stair-jank
- Disabled quakes in reducevfx
- Removed actionmovie and windowquake (sorry jartha)
- Increments a timer on human players who aren't making progress, does it even faster if they're going backwards.
- Only applies in:
- Netgames
- GTR_CIRCUIT after the timer starts
- If there's no timelimit, pointlimit, or K_Cooperative (because unproductive behaviour there will be punished by other rules)
- The rate at which this changes needs trial and error, but getting the feature functional is more important to start out with.
- If this timer reaches cv_antigrief's value in seconds , the player gets a "Grief Strike"
- This doesn't happen if:
- There's only one active player in the server, so FREE PLAY permits mappers to test what increments/decrements the counter
- Turn `debugwaypoints` on to observe this
- The cvar is set to 0
- Less than 3 grief strikes is a forced spectate
- Anything more is a kick via "automatic grief detection"
- Unless your node is the host (or an admin)
- Remove grief strike strike for finishing normally
# Conflicts:
# src/d_clisrv.h
A system for level completion jingles.
- G_Ticker
- Call P_EndingMusic after a certain amount of time has elapsed to begin a jingle
- Play O_RACENT after the jingle's completion instead of baking it or an equivalent into the music
- P_EndingMusic
- Change the function signature to not take a player
- Pick from a series of const char* jingles, instead of sprintfing into a buffer
- _first
- _win
- _lose
- RETIRE
- Simplifying logic to handle intermission music
Most of this work was completed last year by Sal.
- JT_INVINCIBILITY
- JT_GROW
Future work:
- Actually use the S_RecallMusic system (for some reason it doesn't play nice so had to disable it)
- In GP, use struct's cup pointer to get Emerald so the active cup ID is in control
- Outside of GP, get cup pointer from map so Emerald is always the "canon" one
Replaces g_splitscreen.c with g_party.cpp. Simplifies
party management functions.
Moves externs out of already bloated doomstat.h and
g_game.h into g_party.h.
Cuts down on globals spam.
Fixes exploiting retries after finishing in good standing
to farm lives and rank. These are now applied when you can
no longer retry.
Extra life sound effect still plays as soon as you finish
the race.