Replaces existing musicflag system, which only had one flag, with a priority system that overrides menu music in general.
Also adds the CHAO KEY FREE DDL WORKING 2023 goofy music for matchesplayed Chao Key generation.
`banana` was the cheat for the previous entry in the series.
Visuals are incomplete but I have to go out in a little bit and the bulk of it is done
(The Tournament mode cheat's password is "placeholder" for now.)
Attempts to recover Challenge Grids that aren't quite appropriate for the current suite of unlocks.
- If there's multiple small tiles pointing to the same unlock, turn the later ones empty.
- If there's a small tile that SHOULD present on the grid and an empty spot, put the needed tile in that spot.
- Otherwise, regenerate the entire grid.
This will permit us to change the number of unlockables without forcing people to run with the command line param `-resetchallengegrid` to see 'em.
- Type in anything you want
- On closing the field, if a cheat sequence is matched *exactly*, activate it!
- Directly hooked up to a modified form of the previously existing SCRAMBLE interpreter system in m_cheat.c
- The existing cht_Responder call in D_ProcessEvents is gone
- Done this way because the new input paragadim is not very friendly to unqualified keyboard/controller input, and we still want text
- Plenty of opportunity to add fun future passwords in addition to the currently underbaked Tournament Mode
- Got a debug M_StartMessage just so you can tell what's up without sound
- Takes a second and a half.
- No accidential usage of your hard-earned Chao Keys.
- Does a full clockwise rotation around the unlocked spot, so there's an intuitive understanding of how long you have to bail out.
- Fix a softlock caused by commit 8d9b42e4 (!!)
- If your profile's skin was locked, fix a softlock where control was never restored
- If your profile's skin didn't exist, fix an invalid skin id set
- Just straight up flatten out the nested complexity of this function
Adds r_spritefx.cpp
lightlevel should be -255 to 255, relative offset to
normal sector lightlevel.
If RF_ABSOLUTELIGHTLEVEL, mobj_t.lightlevel becomes an
absolute lightlevel in the range 0 to 255.
Dummy sound to be implemented later for the end of a skipstats warp, but the thok actually sounds kind of fun.
Requires skipstats (and nextmapoverride, for cleanliness) to be unset in P_PostLoadLevel instead of P_LoadLevel.
This is not ideal and I made an entire branch about avoiding making this change... but actually, this is necessary for consistent results in K_UpdateGPRank after both normal and GPEVENT rounds, and there's nothing we can do about it.
- LF2_HIDEINMENU is considered equivalent to LF2_FINISHNEEDED for:
- S_SoundTestDefLocked
- So you don't see podium stuff without having beaten a GP
- MV_FINISHNEEDED
- So the status is saved to gamedata and persists between launches if custom
- G_UpdateVisited is now called in K_FinishCeremony, so level is marked as beaten
Uses the multiple alt music options of the podium map's level header in a specific sequence, so it can slot in to the Stereo Mode music list natively, and so custom Podiums don't have to replace existing tracks to function.
- The previous location for updating grandprixinfo.rank.position and grandprixinfo.rank.skin was too early.
- K_GetPodiumPosition checks player->score
- Y_StartIntermission calls Y_CalculateMatchData
- Y_CalculateMatchData checks K_CalculateGPGrade... which uses invalid position info to determine grade!
- Y_CalculateMatchData updates player score
- To this end, rearrange Y_CalculateMatchData to accomodate.
- Calls K_UpdateGPRank.
- Then, calls K_CalculateGPGrade.
- Also called after G_UpdateVisited if no intermission occours, for general consistency.
- In addition, adjust so earlier players have port priority for skin saved to gamedata.