Commit graph

2601 commits

Author SHA1 Message Date
James R
b89b3cb6a7 Blue sparks skin color Sapphire -> Blue
Blue
2023-02-17 01:40:27 -08:00
Oni
e9668598d2 Merge branch 'splitplayers-mapcommand' into 'master'
Splitplayers Fixes

Closes #408

See merge request KartKrew/Kart!927
2023-02-17 05:11:15 +00:00
Oni
a7a3a2c5d5 Merge branch 'special-out' into 'master'
Special Out

See merge request KartKrew/Kart!921
2023-02-17 05:04:34 +00:00
toaster
c4b008e17e Merge branch 'fix-mobj-reference-counting' into 'master'
Fix negative mobj reference counts all over the place

See merge request KartKrew/Kart!926
2023-02-17 00:56:39 +00:00
James R
aaffc84242 Merge branch 'frozen-position-number' into 'master'
Update positiondelay during hitlag

See merge request KartKrew/Kart!922
2023-02-17 00:56:28 +00:00
toaster
472d7bf25c Match old behaviour of GTR_BOSS: DMG_TIMEOVER a player that has lost all their bumpers 2023-02-16 17:04:59 +00:00
toaster
1b2be7b6c9 K_CheckBumpers, K_HandleBumperChanges: Make 2P behaviour in battle capsules mode function
- Only exit Capsules/Versus round if number of players with no bumpers is equal to number of players in game.
- Apply Eliminated flags in relevant context, to prevent griefing.
2023-02-16 16:35:52 +00:00
James R
701324fb42 k_kart.c: reference count HOLD bubble 2023-02-14 04:17:04 -08:00
AJ Martinez
9c3bcd44c7 Update positiondelay during hitlag 2023-02-13 16:01:19 -07:00
toaster
98c333e313 Per discussion, always use short, FINISHless exit for special stage failure. 2023-02-13 18:18:54 +00:00
toaster
8b14d10506 Special Stages: Distinguish between failures with and without lives.
- With lives remaining: No FINISH text, 1 second before restart
- With no lives remaining: Yes FINISH text, 2 and a half seconds before return to menu(/emeraldless podium when implemented)
2023-02-13 18:03:56 +00:00
AJ Martinez
de268b744b Beam fault cleanup, make non-circuit death faults respawn at wp behind finish 2023-02-11 19:09:52 -07:00
AJ Martinez
101db619e6 Add visual flicker in and out when faulting 2023-02-03 02:23:52 -07:00
AJ Martinez
30457f6b79 Briefly remove players from reality on early POSITION beam cross 2023-02-03 01:39:18 -07:00
Oni
90274359db Merge branch 'magician-spectator' into 'master'
Heavy Magician adjustment

See merge request KartKrew/Kart!876
2023-01-22 01:59:48 +00:00
James R
6e058d66e1 Merge branch 'capsuletest' into 'master'
Add capsuletest cvar

See merge request KartKrew/Kart!884
2023-01-21 20:26:06 +00:00
toaster
0606fb50ba S_StartSoundAtVolume, K_PlayPainSound, K_PlayHitEmSound: Use user skin for sounds instead of mobj skin
So we'll always hear the clips we pick for Heavy Magician
2023-01-21 12:58:06 +00:00
toaster
c18e7e6c3c K_SpawnMagicianParticles: NULL check on mo->target 2023-01-21 12:30:00 +00:00
James R
610e2c66be Adjust Garden Top physics
- 110% -> 150% top speed
- no friction decrease if grinding
- 250% -> 300% gravity when grinding (for slope sliding)
- 275% -> 325% max boost when releasing grind
- 60% minimum boost speed when relasing grind
2023-01-14 18:11:46 -08:00
James R
ba27c87ff0 Add capsuletest cvar
- capsuletest off - default behavior.

- capsuletest multiplayer - always spawn non time attack
capsules, even in FREE PLAY.

- capsuletest timeattack - always spawn time attack
capsules, even in multiplayer.
2023-01-11 21:46:21 -08:00
Oni
cf609113f3 Merge branch 'lightsnake-polish' into 'master'
Lightsnake polish

Closes #309 and #299

See merge request KartKrew/Kart!870
2023-01-07 00:33:46 +00:00
toaster
5e4a715394 Decrease spinouttimer every other tic in lightsnake, to a minimum of 1 to still prevent drop dashing
Resolves #309.
2023-01-06 13:30:34 +00:00
toaster
1213836564 Permit a lightsnaking player to go into RESPAWNST_DROP (the final second of lightsnake) early at any time after the initail bring-back-to-last-waypoint.
Needs balance testing, but resolves #299.
2023-01-06 13:20:04 +00:00
James R
4adc25eb74 Apply tiregrease exception to offroad TERRAIN 2023-01-05 19:21:32 -08:00
James R
50d9bf7b7d Faster moving players hit monitors harder 2023-01-03 05:31:30 -08:00
James R
ae16f124db K_GetTotallyRandomResult: use NULL roulette data
This fixes random paper items spawner RNG not advancing.
2023-01-03 05:30:53 -08:00
Oni
46005089f1 Merge branch 'rulesify' into 'master'
Rulesify (resolves #375)

Closes #360 and #375

See merge request KartKrew/Kart!836
2023-01-03 02:43:52 +00:00
James R
8a92f03f7b Set fuse for Battle items 2023-01-01 18:38:53 -08:00
James R
6eb8da1a56 Add K_GetTotallyRandomResult, for battle item spawners 2023-01-01 18:38:53 -08:00
James R
a94e18c277 Add K_UpdateMobjItemOverlay 2023-01-01 18:38:53 -08:00
toaster
e45282bdff K_GetPossibleSpecialTarget()
* Standardises conditions under which the UFO Catcher can be "targeted" (Jawz, SPB, tether)
* Makes SPBs explode a little ahead of driving distance if UFO Catcher is no longer targetable
2022-12-28 23:31:46 +00:00
toaster
c992438e3c Only tether off UFO if it's not just a teeny emerald 2022-12-27 23:13:02 +00:00
toaster
15587417c7 Coherency changes to special stage behaviour in anticipation of timeattack support
* Make everyone PF_NOCONTEST (but not explode) if the UFO/emerald reaches the end of its waypoint path.
    - Possibly temporary: Make the UFO/emerald go straight up at its final waypoint
* If you have PF_NOCONTEST, K_IsPlayerLosing is true
* If special stage in action and the only reason you'd be behind is your position, nobody loses
* Never eliminate last in special stage
* Time Over funny camera no longer occurs when PF_NOCONTEST but not dead
2022-12-27 22:24:18 +00:00
toaster
03c8fd543f More fun rules for Special Stages
- GTR_ROLLINGSTART
    * Initial instathrust, as before
    * Forced MAXPLMOVE forward
    * Disable finish line beam
    * "Super transformation" sound
        - Reference to the previous entry in the series' Perfect Startboost mechanic
- GTR_SPECIALSTART
    * Instant white fade
    * No titlecard (overridden by Boss intro)
    * Starting warp sound
- Match slidein time with no traditional titlecard to the end of the playsim intro fade
- Remove G_IsSpecialStage
2022-12-27 17:58:35 +00:00
toaster
17dd15b998 "Special Mode" (Sealed Stars) and "Versus Mode" (bosses) are now gametypes
* The existing structs are now exclusively for handling extra data.
    * `specialStage` has been renamed to `specialstageinfo`, to reflect that it is not the sole arbiter.
    * `specialstageinfo.valid` and `bossinfo.valid` are what must be checked before grabbing data from either struct.
        * These are turned on when the gametype extra data is successfully initialised, not on map start.
            * `K_InitBossHealthBar(...)` for `bossinfo.valid`
            * `K_InitSpecialStage(void)` for `specialstageinfo.valid`
        * `K_CanChangeRules(...)` no longer checks these
    * No longer uses duplicate encore information.
* The map command (and -warp) now guesses gametype using a general `G_GuessGametypeByTOL(UINT32)` function
    * Grabs the first gametype with an overlap between the requested TOL and the gametype's TOL.
* The cool Versus-specific intro is now checked via `K_CheckBossIntro()`.
2022-12-26 23:06:24 +00:00
toaster
185b36bd27 gametype_t
- New array of pointers to structures in memory (currently mixing static for base-game and Callocated for custom)
- Centralises a metric-ton of previously seperately handled properties into one struct
    - Gametype_Names[]
    - Gametype_ConstantNames[]
    - gametypetol[]
    - timelimits[]
    - pointlimits[]
    - gametypedefaultrules[]
- Don't attempt to guess custom gametype in Replay Hut (requires more work to make custom gametypes behave across the entire experience)
- I_Error if invalid gametype set
- gametyperules is deprecated since it will never be modified seperately from gametype (temporarily a #define, don't wanna bloat this commit too much)
2022-12-26 01:07:57 +00:00
toaster
8431e52687 All playsim-internal distinctions between Race and Battle are now gametype rules.
New:
- GTR_POWERSTONES
    - Handles spawning in Battle Emeralds (currently only works stacked with GTR_PAPERITEMS)
- GTR_ENCORE
    - Codifies that Race can use Encore and Battle can't.
- GTR_CLOSERPLAYERS
    - A gametype where players are encouraged/expected to be closer together. (All of the following was GT_BATTLE specific)
        - Drafting/tether has increased strength/effective distance
        - Spindashing is stronger
        - Invincibility chaining has less effect
        - Grow has a lower total duration
        - Flame shield is more uncontrollable

Extra functionality
- GTR_CAPSULES
    - Prevents usage of lives in Grand Prix (so Race, and the upcoming Special and Boss gametypes, can have 'em)
- GTR_CIRCUIT
    - When not present, Flame Shield has perma-full meter
    - When not present, overrides gamespeed with KARTSPEED_EASY
    - Presence of Best Lap sticker in Time Attack menu
    - Seperation between Time Attack and Break The Capsules modeattacking roulettes
- GTR_POINTLIMIT
    - Handles the switch between a gametype recording/displaying Times and Scores in a few places
    - Handles displaying "WANTED" players on the minimap

Missing simple substitutions
- A whole bunch of cases where player->bumpers was checked with gametype == GT_BATTLE rather than GTR_BUMPER
- GTR_OVERTIME handles the overtime special icon on the minimap
- GTR_BATTLESTARTS is honoured in K_DoIngamerespawn
- The Replay hut is closer to supporting custom gametypes

Removals
- GTR_LIVES
- GTR_SPECIALBOTS
    - Given that grand prix persists between modes, these are special game-controlled features and not gametype-specific.
- GTR_WANTED
    - WANTED as it existed is functionally dead
2022-12-24 22:43:00 +00:00
toaster
d95ac73f3b Remove Gametype Preference and Voting Rule Change cvars
* The consensus has moved against gametype changes in voting, so strip it out
* Encorescramble already independently controls setting Encore, so don't keep the outdated randomisation method
Done in this branch because it uses gametype constants directly, both in a cvar and function, and I want to get rid of as many of those as possible
2022-12-24 17:03:36 +00:00
Sally Coolatta
82df346417 Merge branch 'master' into special-stages 2022-12-22 05:18:56 -05:00
James R
ba2a7744d1 Add half hitlag to invincible players if they would've been damaged 2022-12-21 08:35:26 -08:00
Sally Coolatta
138e6ba846 Break the Capsules is always Time Attack rules 2022-12-20 19:39:50 -05:00
Sally Coolatta
e959ff954c Merge branch 'master' into capsules-improvement 2022-12-19 03:27:13 -05:00
Sally Coolatta
85604cfd2e Merge branch 'master' into special-stages 2022-12-19 01:53:41 -05:00
Sally Coolatta
a7ff0afc8b Merge branch 'master' into capsules-improvement 2022-12-19 01:12:07 -05:00
Sal
48d5af71fb Merge branch 'adjust-spdinash-charge' into 'master'
Adjust spindash charge time and power

Closes #341

See merge request KartKrew/Kart!825
2022-12-19 04:52:15 +00:00
Sal
d504af7b39 Merge branch 'garden-top-tweak' into 'master'
Garden top tweaks

Closes #342

See merge request KartKrew/Kart!824
2022-12-18 17:08:20 +00:00
James R
873b598409 Reduce spindash top speed
This was carefully adjusted so that Mecha Sonic reaches
199% top speed, barely shy of 200%. Previously, Mecha and
even down to Espio could overcharge a spindash to reach
Tripwire Blaster state.
2022-12-18 05:23:02 -08:00
James R
9f2a83fa03 Slightly decrease spindash charge time
Also improve math precision by doing multiplication before
division.
2022-12-18 01:59:23 -08:00
James R
6c75c9b2b1 Backthrow Garden Top in look direction if on ground 2022-12-18 01:29:34 -08:00
James R
134c4b7d66 Buff Garden Top acceleration from 800% to 1200% 2022-12-18 01:23:10 -08:00