Commit graph

335 commits

Author SHA1 Message Date
James R
38e1ae1c53 Replays: let name be changed any time until the file is saved 2024-03-03 06:30:54 -08:00
Eidolon
5ddab93579 Add DeferredStartTitle in P_Ticker 2024-02-27 19:51:23 -06:00
Eidolon
217f19158f Play and don't reset nonsynced level music in TA
Fixes KartKrew/Kart#1064
2024-02-24 18:07:57 -06:00
Oni
4ea946067a Merge branch 'srb2-tidy' into 'master'
Clear out unused SRB2/Kart stuff from info tables

See merge request KartKrew/Kart!1811
2024-02-03 19:40:52 +00:00
Sal
3958c15dfe New Credits 2024-01-28 23:31:30 +00:00
toaster
6fdec66dc3 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into srb2-tidy 2024-01-26 00:29:06 +00:00
Oni
1d8999923c Merge branch 'fix-postrace-rumble' into 'master'
Fix gamepad rumble freezing when it should stop (resolves #955)

Closes #955

See merge request KartKrew/Kart!1857
2024-01-25 14:48:25 +00:00
James R
d0057126e6 Battle: make level darkness more dark by default 2024-01-22 16:42:30 -08:00
James R
7d6239e06c Add round end camera system
- Spins and zooms around a center point
- Freezes the level while spinning
- Pans over to follow and object after spinning ends
- Timing and speed completely customizable
2024-01-22 16:42:29 -08:00
AJ Martinez
5f1b8bb3b8 Fix gamepad rumble freezing when it should stop 2024-01-19 19:03:33 -07:00
AJ Martinez
1e39081856 WIP: Mid-round status messages 2024-01-14 03:05:49 -07:00
toaster
325079a39a Delete everything major flagged up by listunusedsprites
Notable deletions:
- Metal Sonic Race
    - Includes all the specialised recording/playback apparatus which made g_demo.c harder to read
- A bunch of hyperspecialised code inside several A_ actions
- EXCEPTION: intentfully left in the spriteless SMK stuff for Sal's add-on down the line.
2024-01-11 01:21:43 +00:00
James R
df0d342e04 Let level darkness be changed per splitscreen, use player_t variables
Modifies netsave.

- Add darkness_start, darkness_end to player_t
2024-01-05 15:56:24 -08:00
James R
8430489673 Replace darktimer/darkness with g_darkness
Modifies netsave.

- Instead of setting a timer, set a start time and end
  time
- Interpolated darkness value itself doesn't need to be
  netsynced
2024-01-05 15:56:24 -08:00
AJ Martinez
3b425667e5 Disable stairjank terrain and offroad rumble at 0 speed 2023-12-28 23:47:03 -07:00
James R
51d9e4bf4b P_Ticker: fix typo playing level music 2023-12-08 17:32:29 -08:00
Oni
6378c9d544 Merge branch 'no-position-no-music-reset' into 'master'
Do not reset music in Sealed Stars and Tutorials

See merge request KartKrew/Kart!1676
2023-12-08 04:37:17 +00:00
James R
be8d8178bb Add level_nosync tune, played if GTR_NOPOSITION
- Does not reset if level music does not change between
  levels
2023-12-04 20:19:55 -08:00
James R
02bacc9a6f Battle UFOs, Checkpoints: use srb2::MobjList instead of standard containers
- Net synced; new mechanism in p_link.cpp to automatically
  manage mobj pointers at the global scope
2023-12-03 10:44:11 -08:00
toaster
a55803b690 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into other-progression 2023-11-18 18:00:05 +00:00
toaster
224d584203 Cleanup of P_Ticker gamedata material
- Don't do updates in titlemap
- totalplaytime is leveltime-based
2023-11-17 16:45:03 +00:00
toaster
f6214fd8e9 Tutorial dialogue: Synergy wth titlecard
- Draw in front of the titlecard
- Don't tick while levelloading and not leveltime, so prevent instantly appearing
2023-11-13 21:34:26 +00:00
toaster
4379c62276 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into other-progression 2023-11-13 14:45:17 +00:00
James R
61709d36a8 Add basic profiling for Lua hooks (except HUD hooks)
- Add lua_profile cheat: calculate average time spent in
  hooks over a period
- Show hook times in a sorted table, along with lump name,
  script line number and hook type
- Show cumulative time spent in game logic hooks and
  percentage of overhead to game logic
2023-11-11 02:27:39 -08:00
AJ Martinez
6cbfc5aead Merge branch 'postrace-cleanup' into 'master'
Don't do gameplay controller vibration after finishing

See merge request KartKrew/Kart!1587
2023-11-10 23:49:31 +00:00
Gustaf Alhäll
208601e38d Cache and reuse removed mobjs when spawning mobjs 2023-11-05 15:44:53 -06:00
toaster
1ac64dc0ed Assorted minor tidyup while handling previous commits in this branch 2023-11-05 00:01:44 +00:00
toaster
dce2c73df1 thinker_era
A first pass in attempts to fix crashes when ACS causes map changes.
Frustratingly still got a crash, but I think this is definitely the right foundation to work with.
2023-11-04 17:11:59 +00:00
AJ Martinez
7dba0c9aba Don't do gameplay controller vibration after finishing 2023-10-27 23:31:08 -07:00
AJ Martinez
dcaa1c3902 Don't skip signature check steps if server is lagging 2023-10-15 14:38:55 -07:00
Oni
bcc8fc6438 Merge branch 'freeze' into 'master'
Mobj thinker freeze condition rework

Closes #690

See merge request KartKrew/Kart!1505
2023-10-02 05:42:19 +00:00
Sally Coolatta
e6a19362fc Center mobj quake on the z axis 2023-09-23 07:57:54 -04:00
Sally Coolatta
c9291b0f61 Mobj thinker freeze condition rework
- There's a freeze cheat bool to freeze everything except for players.
- There's a level freeze bool to freeze literally everything.
- There's a frozen bool on mobj_t to explicitly control freeze status on an object.
2023-09-18 03:24:58 -04:00
James R
e83923a365 Checkpoints: add object configuration, collision, animations
This commit handles everything except actually respawning
the player at a checkpoint.

- Checkpoints are formed by two checkpoint things (2030):
  - thingarg0 - The ID for the checkpoint. Must be the
                same for these two things, and these two
                things only. ID cannot be 0.
  - angle - The direction the player is intended to face
            after respawning. Must be the same for both
            things.

- Each checkpoint thing is a starpost with a stick and an
  orb at the end.
- By default, the sticks are lowered to horizontal and
  face toward the opposite starpost.
- Rainbow tether sparkles form a field between the two
  starposts.
- When a player crosses between these two starposts, each
  spins in the direction that the player crossed. The
  sparkles also fly out in that direction.
- Over time the sticks pivot upward.
- When the starposts are done spinning, the sticks will be
  pointing straight upward.
- Orb at the end of the stick begins flashing when the
  starpost is done spinnning.

- Players may cross multiple checkpoints.
- When this happens, any previously activated checkpoint
  will have its stick lowered back to horizontal, and its
  orb will stop flashing.
2023-09-16 21:46:22 +01:00
Sal
0675a4e527 Tally screen 2023-09-09 05:27:55 +00:00
AJ Martinez
3aabdb4e98 Less extreme shrink darken 2023-09-01 20:50:46 -07:00
AJ Martinez
d3316ff614 Shrink growtime 2x, global darkness when using shrink 2023-09-01 20:40:52 -07:00
Sally Coolatta
16e6aa423e Dialogue 2 2023-08-24 17:28:53 -04:00
James R
83f02231e3 Replace spectator movement with demo freecam 2023-08-19 05:01:40 -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
Oni
a18982dc55 Merge branch 'splatbooster' into 'dashrings'
Hardcode MT_SNEAKERPANEL & MT_SNEAKERPANELSPAWNER

See merge request KartKrew/Kart!1349
2023-07-29 18:28:48 +00:00
Lach
fd8ba4236d Hardcode MT_SNEAKERPANELSPAWNER & adjust FF_GLOBALANIM behaviour 2023-07-29 17:51:25 +10: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
James R
f5d68783fc Battle UFO spawning behavior
- MT_BATTLEUFO_SPAWNER args[0] is the ID
- Spawn a random UFO from the list spawner at the start of
  Battle
- UFO spawns 200 units above the spawner
- After destroyig a UFO, wait 25 seconds before spawning
  the next UFO (next ID in the list)
2023-06-29 19:49:35 -07:00
toaster
5a3ed5464e P_Ticker: Do not start position music or play noises if gametype has no time between intro and start 2023-06-03 14:18:01 +01:00
toaster
1821b4f52d P_InitThinkers: Handle several important mobj cleaning tasks in one place, rather than scattered
- titlecam.mobj cannot have P_SetTarget applied when initially setting to NULL, as its previous occupant is some unknown region in memory, and modifying the reference count could in fact change some random number or address ANYWHERE IN THE ENTIRE PROGRAM.
- So we straight up wipe it rather than referenced-unset it in one place, always, for general tidiness.
- Also move skyboxcenterpnts, skyboxviewpnts, and iquetail/iquehead so it's all centralised.
2023-05-31 12:49:51 +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
3d9d9ba1e6 P_Ticker: Do not run antigrief detection if there are no waypoints 2023-05-01 17:10:02 +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
d4dbc1fe30 P_Ticker: Seperate out local player device rumble handling into its own inlineable function
Clears some space for antigrief handling
2023-05-01 16:57:34 +01:00