Commit graph

2222 commits

Author SHA1 Message Date
Oni
852e2c1035 Merge branch 'acs-game-over' into 'master'
ACS script type for game over (lose GP round with no extra lives), improve MapWarp and add a handful of functions

Closes #591 and #572

See merge request KartKrew/Kart!1403
2023-08-21 16:50:18 +00:00
James R
8a72f42818 Split G_ExitLevel into G_BeginLevelExit and G_FinishExitLevel
- Save retry condition in G_BeginLevelExit
- Apply condition in G_FinishExitLevel

Preparation for ACS level end scripts, since the exit
condition will need be known when the countdown starts,
not when it ends (that'd be too late to do anything in the
level).
2023-08-20 00:36:00 -07:00
James R
7b9665402a P_ForceLocalAngle: reset ticcmd angles and localsteering
For Sealed Stars, restarting the level after turning away
from the spawn angle. This would slightly skew your
momentum when spawning.
2023-08-19 17:03:32 -07:00
Oni
7cdf8fbfdd Merge branch 'whip-sprzoff' into 'master'
Instawhip hop adjust sprite offset instead of physical Z position + flashing nitpick

Closes #601

See merge request KartKrew/Kart!1406
2023-08-19 14:58:46 +00:00
James R
7a1e61d722 Move democam.reset_aiming to camera_t, let spectator camera even out aiming 2023-08-19 05:01:41 -07:00
James R
fcc35c1bb1 Toggle between freecam and director using C button 2023-08-19 05:01:40 -07:00
James R
697e42cecd P_DemoCameraMovement: drift button resets vertical angle 2023-08-19 05:01:40 -07:00
James R
ff447a212a P_DemoCameraMovement: even out vertical angle after toggling
After turning on freecam, the vertical angle is tilted
slightly downward (this is carried over from normal
chasecam).

Interpolate that angle back to normal while moving
forward. This makes it so you don't need to manually
adjust the vertical angle, since it would cause forward
movement to send you into the ground.
2023-08-19 05:01:40 -07:00
James R
0f9ceab817 P_DemoCameraMovement: don't let A button press from menu carry over to rise camera 2023-08-19 05:01:40 -07:00
James R
83f02231e3 Replace spectator movement with demo freecam 2023-08-19 05:01:40 -07:00
James R
8809ab02fc democam: remove unnecessary fields 2023-08-19 05:01:40 -07:00
James R
fec0f13419 P_DemoCameraMovement: use locally built ticcmd from G_BuildTiccmd 2023-08-19 05:01:40 -07:00
James R
dbca307ad4 Fix sound handling in demo freecam
- Object sounds are audible from the location of the
  camera
- Certain HUD sounds should no longer be audible
  - For instance, lap complete sfx
2023-08-19 05:01:40 -07:00
James R
ebb79fa34b Add player_t.cameraOffset, offset chasecam Z position 2023-08-17 18:09:03 -07:00
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