Commit graph

2208 commits

Author SHA1 Message Date
James R
39f46a0f20 Replace music handling
(This commit does not compile. Sound test and tunes
command code needs to be ported after this.)

This is a big one. Here's the rundown:

The old music system was very direct, much of the time
just a proxy to the real sound API in i_sound.h.

You could change the music on command, but there wasn't
a consistent way to prevent some music from playing over
others. P_RestoreMusic is one example of needing to
address this problem. The jingles system was intended as
another solution. Furthermore, sound test (Stereo) has its
own needs.

I am removing all of that. Music handling in general is
now a very deliberate system, kind of similar to jingles.

In the new system, "tunes" are registered. The tune stores
info such as whether it should loop or fade out. Most of
the configuration is intended to be initialized only ONCE.
Tunes can be mapped to an actual music lump. They can be
remapped at any time too.

Tunes are also configured with a priority number. This
determines which tune is heard, if multiple are supposed
to be playing at a time. You can even tell a tune how long
it should play, so it's unnecessary to track this with
bespoke timers.
2023-08-06 17:31:45 -07:00
James R
646701c55c Remove Lua Music API
In preparation for replacing music handling entirely.
Eventually, we can make a new Lua API.
2023-08-05 16:26:53 -07:00
AJ Martinez
5a703240bd Slow down level music in Encore - "vape mode" 2023-08-01 19:04:30 -07:00
toaster
2fd7c7717c P_StartPositionMusic
Consistently sets position or encore hum for multiple contexts
Now can be used in P_RestoreMusic for restoration purposes
2023-07-22 18:55:49 +01:00
toaster
050fa56d64 Merge branch 'player-pointer-deletion' into 'master'
Player Pointer Deletion

Closes #529 and #576

See merge request KartKrew/Kart!1341
2023-07-19 14:23:19 +00:00
toaster
0b3ebb0686 Kickstart Accel indicator sound modifications
- Play in replays/as spectator
- Do not play for bot-controlled players (exiting, Podium, etc)
2023-07-18 18:04:54 +01:00
toaster
ce08ac0f33 General tidy of mobj_t pointers on player_t struct
- CL_ClearPlayer
    - Delete followmobj, stumbleIndicator, and sliptideZipIndicator
    - Wipe flickyAttacker and powerup.flickyController
- G_PlayerReborn
    - Properly destroy the Follower and its bubble overlays, etc
    - Ensure ringShooter pointer is kept
    - Delete followmobj, stumbleIndicator, and sliptideZipIndicator
    - Wipe flickyAttacker and powerup.flickyController
- P_PlayerThink
    - Ensure all invalid pointers are erased, even on hitlag frames
2023-07-18 15:50:39 +01:00
AJ Martinez
9ebfc12167 Only use ticmiss input-steering if we didn't use it last tic 2023-07-06 16:04:28 -07:00
AJ Martinez
edfd43ce81 Use input steering (not camera steering) on skipped tics 2023-07-03 16:35:52 -07:00
toaster
9c7b5d50a4 Guard several things in P_DoPlayerExit from being executed during demo.playback
Resolves #567, and issues with player profile wins as well
2023-06-29 13:15:52 +01:00
toaster
d17399bcce Revert "Quicker, almost instantaneous Sealed Star conclusion after death"
This reverts commit 32eead29e5.
2023-06-26 20:23:29 +01:00
toaster
32eead29e5 Quicker, almost instantaneous Sealed Star conclusion after death
Also gets rid of the "wuu wuu wuu" sound from Competition that plays in this instance
2023-06-26 14:23:38 +01:00
toaster
45f8f1c89f Remove a bunch of unused emerald stuff inherited from SRB2
All superseded by M_CheckCupEmeralds + GTR_POWERSTONES stuff
2023-06-25 23:49:20 +01:00
toaster
e507a8b0ad P_EndingMusic: Play "EMRLD" in Emerald contexts
- gametype has GTR_POWERSTONES and any one player has all 7 emeralds
- gametyperules & GTR_SPECIALSTART and any one player isn't losing
- GP after completing a GPEVENT_SPECIAL and any one player isn't losing
    - Catches custom gametypes in place of Sealed Star at the end of a GP
2023-06-25 23:49:18 +01:00
Sally Coolatta
d936c7aed9 Milky Way terrain
`OutRun 48.0` on Terrain block will make that texture add 48 units to driving top speed.
2023-06-14 10:29:19 -04:00
Oni
245d6036b0 Merge branch 'tilt-fix' into 'master'
Small fixes for camera tilting

See merge request KartKrew/Kart!1278
2023-06-13 06:33:21 +00:00
AJ Martinez
530dd293cd Tab fixes 2023-06-12 15:15:25 -07:00
AJ Martinez
2dcfd9542f Instawhip polish round bleven 2023-06-11 20:29:43 -07:00
James R
f3e1a19c62 Quaketilt: fix jitter at certain momentum angles 2023-06-07 09:08:27 -07:00
James R
c37fa42d61 Fix quake tilt speed scaling varying by map scale 2023-06-07 09:08:27 -07:00
Oni
1ee6d196aa Merge branch 'ultra-die' into 'master'
When hit at -20 rings, die

See merge request KartKrew/Kart!1261
2023-06-02 04:44:59 +00:00
toaster
1527471678 Character win records
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
2023-05-30 12:21:41 +01:00
AJ Martinez
04e3a9f4b9 Death tumble 2023-05-30 04:08:45 -07:00
AJ Martinez
136800ec23 When hit at -20 rings, die 2023-05-30 03:03:34 -07:00
Sally Coolatta
d55c9038cc Bots: Can now use Ring Shooter
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.
2023-05-14 19:32:51 -04:00
Oni
5c5157bce5 Merge branch 'finish-jingles-tidy' into 'master'
Finish Jingles Tidy

See merge request KartKrew/Kart!1217
2023-05-10 06:42:54 +00:00
VelocitOni
64e091414b Default cam_height increase
75 --> 95  |  Tyron, Sal, and Oni want to test higher cam_height for readability (may drastically help flat maps).
2023-05-06 02:07:20 -04:00
toaster
9497941ef6 P_DoAllPlayersExit: Play finish sounds on successful execution
- 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
2023-05-02 18:16:26 +01:00
toaster
12ecb1f7a4 P_DoPlayerExit changes
- 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)
2023-05-02 18:16:26 +01:00
toaster
6882ea7671 P_EndingMusic: Change priority
- 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
2023-05-02 18:16:26 +01:00
Sally Coolatta
60e80d876d Improve quake effects
- 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)
2023-05-01 14:24:32 -04:00
toaster
ee3bf6d117 P_CheckRaceGriefing: Fix typo that rendered antigrief ineffective 2023-05-01 16:57:35 +01:00
toaster
477eb000e5 Do not subtract grief strikes for finishing a race normally
Prevents scenarios where someone engages in alternating sporting and unsporting behaviour and never experiences lasting consequences
2023-05-01 16:57:35 +01:00
toaster
ab68be49e1 cv_antigrief
- 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
2023-05-01 16:57:35 +01:00
toaster
581567dfae musiccountdown
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
2023-04-30 21:47:07 +01:00
toaster
74d6445a56 Integrate Ring Racers jingles into the inherited-from-SRB2 JT_ jingle system
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)
2023-04-30 20:50:12 +01:00
Sal
0fb691022b Merge branch 'fix-reset-interpolation' into 'master'
P_Ticker: update view interpolation at the start of a tic

See merge request KartKrew/Kart!1192
2023-04-25 01:50:51 +00:00
Sally Coolatta
85eaf2eeea Make camera follow platform momentum 2023-04-23 14:51:29 -04:00
Sally Coolatta
57022fafe5 Move camera Z slightly faster
RR has more & taller slopes than SRB2K, so the old values were a bit jarring (you go off-screen a LOT more often)
2023-04-23 14:47:47 -04:00
James R
e8a8064da9 P_Ticker: update view interpolation at the start of a tic
This lets R_ResetViewInterpolation only need to be called
once from game logic.
2023-04-22 20:40:35 -07:00
AJ Martinez
b3e7eed018 Merge remote-tracking branch 'origin/master' into serverside-pwr 2023-04-14 20:05:25 -07:00
AJ Martinez
e3ea9df683 Fix sliptide death-spirals on input boundary cross 2023-04-12 01:26:33 -07:00
AJ Martinez
d870bf0416 Fix min/max allowing for theoretical handling breakage in camera-sliptide logic 2023-04-12 00:47:00 -07:00
AJ Martinez
4f569641fc Store total wins in profiles 2023-04-11 19:38:02 +01:00
AJ Martinez
b4ffc33fcb Sliptide-aware camera steering, fix countersteer easing 2023-04-11 00:15:44 -07:00
Oni
485af970e6 Merge branch 'sealed-smooth' into 'master'
Sealed Smooth

See merge request KartKrew/Kart!1154
2023-04-09 03:07:26 +00:00
AJ Martinez
972ed1c1a7 Bump latency-based angle correction 2023-04-07 23:52:34 -07:00
AJ Martinez
6871639483 Don't disable easing on driftend, it wasn't actually doing anything 2023-04-07 23:47:30 -07:00
AJ Martinez
2001b5efd9 More responsive drift end 2023-04-07 23:02:03 -07:00
toaster
4b7aa368b5 P_GetNextEmerald: Accomodate map reuse in GP
- 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
2023-04-08 00:05:18 +01:00