UFO Catcher Tripwire Boost damage, and slow down the player less after hitting it with a boost while waterskiing
Closes#619
See merge request KartKrew/Kart!2074
- Do not send the player backward, simply reduce their
forward momentum
- Below 67%, divide speed by 4
- Above 67%, remove a flat 50% top speed
- The goal here is to basically stop the player at low
speeds, like it did before, but cut a smaller amount at
high speeds so players can remain water skiing after
a highly boosted collision
- Permit saving "this map has been beaten" for the Tutorial Challenge map if you conquered it
- This was previously short circuited because it wasn't a dedicated course
- Only trigger an extra UpdateUnlockablesAndExtraEmblems check if you haven't yet completed it
The original purpose was to make using the map command allow for multiple tries, ala standard console testing, but the condition was way too permissive and was promoting all esoteric map overrides to undue importance for the end of the Cup's evaluation.
- Don't assume that the first Round in a Cup defines the default gametype for it
- Now consistently uses GT_RACE
- It was written this way to try and permit non-Race cups in future...
- But there are much more solid ways to approach this down the line, instead of overloading this pre-existing data.
- cup-select.c: Don't assume `roundqueue.position == 1` means starting a fresh Cup from scratch
- G_HandleSaveLevel: Allow saving GP backups for overridden Courses at the front of the roundqueue
If a stage is taken out of the running for Grand Prix mode and replaced with another, the rank data wasn't corrected. We were merely getting lucky that the one Round Star regularly accessible had the same number of laps as the course it replaced.
Now, Laps, Rings, and Prisons can be adjusted up or down depending on the number of each element you're expected to have with a perfect GP tally.
Related: To make it more friendly to call in multiple places, RankCapsules_CountFromMap has now been adjusted to take a course ID instead of a virtres_t.
- Simplest possible solution for the time remaining: If the current gametype doesn't overlap with the nextmapoverride's TOL, do G_GuessGametypeByTOL.
- Future work: Allow an optional extra parameter to MapWarp to specify a specific Gametype by name.
- Fixes for tutorialchallenge
- NEXTMAP_TUTORIALCHALLENGE is integrated into the above, to reduce duplicate code
- Call D_GametypeChanged, which was previously missing