- arg2: TID of an object to make the camera's angle/pitch follow.
- arg3: Zoom tube waypoint sequence to start following.
- Ceremony uses one-screen, regardless of previous splitscreen-ed-ness
- Uses K_CanChangeRules instead of checking for multiplayer, to catch all of the restricted singleplayer scenarios
- Checks for server admin first before cheats
- Made titlemap + ceremony code more straight-forward by being able to set gamestate in G_DoLoadLevel directly
- Demos are only recorded on GS_LEVEL (fixes crash for ceremony + titlemaps)
- Added G_GamestateUsesLevel to encapsulate all checks for using level rendering
- Added GS_CEREMONY to wipedefs
- K_PodiumSequence just checks for GS_CEREMONY now (optimization)
The game can now properly go to the podium after GP
- Bots follow a slightly more strict path via waypoints
- Bots decide their starting waypoint path depending on their position. (The 1st place winner will start by chasing waypoint ID 1, etc)
- The map used for podium sequence can be decided via `PodiumMap = x` in MainCfg.
TODO:
- Camera work
- Add Lose / Win animation states when stopping at final waypoint
- Adjust physics so that the bots can follow the path more strictly in this mode
- Actually go to it after GP
This fixes a bug with avrecorder capturing a mostly white
frame at the beginning of a wipe. This was because
wipe_capture_start_rendering depends on basic_rendering
and a wipe could occur before any 2d elements are batched
for the current frame, thus producing a white frame when
basic_rendering is passed. It only lasted for one frame
because the PREVIOUS frame is used for the wipe itself.
This is also why the white frame was not visible
on screen.
- UCRP_PREFIX_ISMAP: a prefix version of UCRP_ISMAP
- The condition string for UC_EMBLEM has been updated to match other relevant prefixes.
- UC_COMMA: a second string-relevance-only condition, for inserting a comma where only a human could find it natural
Partial duplicate of MR 1010, but 1) wanted to guarantee no merge conflicts before I forgot and 2) I added things in previous commits which needed stronger guarding
- Combine multiple adjacent saves
- Generally could happen during game ticking, combined via gamedata->deferredstate
- DEFINITELY happened in splitscreen PWR handling, adjust those loops directly
- Write "dirty" state via gamedata->crashflags on everything except safe, intentful unloads
- Add UC_CRASH, which unlocks dependent on the above "dirty" state being present at gamedata load
- We can use this for something more useful and less funny later.
- Play "O_LOSERC" on the menu, starting with the Challenges screen, if a UC_CRASH condition has been met.
Fixes players killed twice if P_DamageMobj is called with
DMG_TIMEOVER and gametyperules GTR_BUMPERS.
Moves death condition out of K_HandleBumperChanges and
lets losing last bumper organically kill the player by
decreasing their health.
- M_UpdateUnlockablesAndExtraEmblems: If Playing() and GS_LEVEL, call a bunch of funny conditions for every non-spectator splitscreen player.
- Called every tick in P_Ticker. May be foolish. May duplicate effort. Worth extra attention later.
- Add a bunch of stacking-together UCRP_REQUIRESPLAYING condition types.
- A collection of PREFIXes
- Grand Prix
- Bonus Round
- Time Attack
- Break The Capsules
- Sealed Star
- A collection of specific prerequisites
- Current map is [map value]
- Character is [character string that gets parsed after skin load]
- M_UpdateConditionSetsPending(), because SOC is bad and loaded before skins
- A collection of win conditions (TODO: these still work in FREE PLAY)
- Finish in good standing
- Break all the capsules
- No Contest
- Finish at least [place]
- Finish at [place] exactly
- Finish at [time, tics]
- Finish at [time, tics] exactly
- Finish with at least [time, tics] left (GTR_TIMELIMIT only)
- An AND to concatenate them together (literally just for text adjustment)