Commit graph

2241 commits

Author SHA1 Message Date
toaster
01f6eb71f5 Optimisation: reduce the number of calls to M_CheckUnlockConditions
- For P_Ticker()'s calls to M_UpdateUnlockablesAndExtraEmblems
    - Do not check non-UCRP_REQUIRESPLAYING conditions
        - Controlled by a new `boolean doall` parameter to M_UpdateUnlockablesAndExtraEmblems
        - Most other contexts have this as true
        - Forced true if update is meant to be silent
    - Only check UCRP_REQUIRESPLAYING conditions if a relevant property has been touched
        - Controlled by a new `boolean checkthisframe` property on roundcondition_t
        - Set in all contexts where roundcondition_t is modified
        - Would also be set on lap change, but that case is already covered by the following
- Check all conditions, both UCRP_REQUIRESPLAYING and not, on:
    - local player K_HandleLapIncrement
    - local player P_DoPlayerExit
    - local player P_DoTimeOver
    - Controlled by a new `boolean deferredconditioncheck` property on gamedata_t
2023-03-12 13:52:28 +00:00
AJ Martinez
fcd1fe8b8b Wavedash refinement 2023-03-11 17:20:44 -07:00
James R
a3c64068e6 Replace bumpers completely with health
Adds some functions:

- K_Bumpers, bumper count for the count, intended for
  where player->bumpers was used in HUD and visual
  contexts.
- K_BumpersToHealth, converts bumper count to health
  points.

player->mo->health replaces player->bumpers where it was
used in health contexts.

Removes some functions:

- K_HandleBumperChanges
- K_DestroyBumpers

Everything K_HandleBumperChanges did has either been
removed or moved elsewhere. P_KillMobj also already called
K_CheckBumpers.

K_DestroyBumpers became pointless after player->bumpers
was removed.
2023-03-07 22:54:33 -08:00
toaster
d2c36c952a Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading
# Conflicts:
#	src/k_grandprix.c
#	src/k_grandprix.h
2023-03-07 19:37:46 +00:00
James R
aa927a5b00 Merge branch 'overtime-spectator' 2023-03-07 01:45:16 -08:00
James R
ccd933556d Battle: activate director after dying to Overtime Barrier 2023-03-06 18:52:59 -08:00
James R
d56be63249 Battle: eliminate players killed by the Overtime Barrier
- Players killed this way become invisible and unable to
  move.
- Ends the match when one player is remaining.
2023-03-06 18:52:59 -08:00
Sally Coolatta
0f87e177b9 Be able to get partial credit for capsules again 2023-03-06 18:26:09 -05:00
Sally Coolatta
23a00b1d00 Move GP ranking data to grandprixinfo 2023-03-06 18:26:08 -05:00
Sally Coolatta
c61e017c38 GP rank cleanup
- Move ranking to its own file.
- gpRank (the variable) -> g_gpRank
- gpRank (the struct) -> gpRank_t
- Functions that worked on the global directly now take a pointer to a struct
- Fixed total ring increment
- Fixed final lap's lapPoints being discarded
- Capsules are now added when exiting with the rest of the stuff
2023-03-06 18:25:14 -05:00
Sally Coolatta
55de982fa3 GP ranking
Needs balancing + intermission, but mostly functional
2023-03-06 18:25:14 -05:00
toaster
baeb48ca1f roundconditions_t - State tracking for events which occour mid-match and don't stay that way
- Exists on every player struct to simplify writes, but A) not netsynced and B) only checked for local players
- Updated in the relevant locations - no centralised ticking at the moment
- Has a number of new associated conditions that require playing (UCRP's).
    - The following require [True/False] as supplementary information.
        - FallOff
        - TouchOffroad
        - TouchSneakerPanel
        - RingDebt
    - The following have no supplementary information because they're universally a specific achievement.
        - TripwireHyuu
        - SPBNeuter
        - LandmineDunk
        - HitMidair
    - The following has specific requirements that can be set.
        - WetPlayer [name of fluid]
             - Append "Strict" to forbid even skimming the surface of the map's fluid.
2023-03-06 22:31:35 +00:00
Sally Coolatta
9c264b3736 K_UpdateAllPlayerPositions
Call this whenever we need accurate player positions. In addition to before player think, is now being used for exiting as well as immediately when the player is spawned.
2023-03-05 14:59:11 -05:00
toaster
5296ab1397 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into conditions-cascading 2023-03-04 20:09:48 +00:00
toaster
eeb6e40909 Add totalrings to gamedata
- Added to Statistics screen
- Caps at "999,999,999+".
- Controls UC_TOTALRINGS condition
- Improve description for UC_MATCHESPLAYED condition
    - Says "Rounds" now
- Improve Statistics text for playtime
    - Dynamically changes visible units of time (seconds, minutes, hours, days.......)
2023-03-03 22:35:28 +00:00
Sally Coolatta
9501b57296 Extend cut-away view functionality
- arg2: TID of an object to make the camera's angle/pitch follow.
- arg3: Zoom tube waypoint sequence to start following.

- Ceremony uses one-screen, regardless of previous splitscreen-ed-ness
2023-03-03 16:09:55 -05:00
Sally Coolatta
82313de499 Awayview cleanup
- Moved variables to awayview_t
- Arbritrary +20 is no longer added to z pos, it will use the thing position as the camera position directly.
2023-03-03 16:09:54 -05:00
AJ Martinez
b777759744 Use postfix for P_FindClosestTurningForAngle iterations 2023-03-01 22:27:00 -07:00
AJ Martinez
7cffbef1a2 Merge remote-tracking branch 'origin/master' into better-local-camera 2023-03-01 22:25:46 -07:00
toaster
06ccdbafc7 P_DeathThink: Don't tick K_KartPlayerHUDUpdate
This function is already called regardless of whether the player is dead or alive in p_tick.c
2023-03-01 23:16:29 +00:00
AJ Martinez
3f2a074869 Remove debug print 2023-03-01 15:54:19 -07:00
AJ Martinez
15da567372 Local camera: binary search for ideal steering value, cheat angle if it's close enough 2023-03-01 15:39:09 -07:00
James R
b3511a9149 Player orbiting physics 2023-02-28 20:27:11 -08:00
AJ Martinez
7788fa116f Review fixes 2023-02-26 14:55:41 -07:00
AJ Martinez
be4a2be1da Fix unsteady camera movement in demos 2023-02-26 04:29:13 -07:00
AJ Martinez
6b3d6ed406 Fix incorrect visual angle changes at race start
Old ticcmds were trying to set angle, and didn't care whether the player was actually able to steer. The bug is always in your code.
2023-02-25 15:54:06 -07:00
AJ Martinez
3e2d7ff7e7 Correctly apply steering for easing purposes, fix sign on undershots 2023-02-25 04:52:22 -07:00
AJ Martinez
c17f5c22ff Suspend local camera during DRIFTEND kickout 2023-02-24 21:16:53 -07:00
AJ Martinez
e3e567f303 Don't use localangle aim for bots 2023-02-24 20:38:36 -07:00
AJ Martinez
432be46a2f Please god just fucking work 2023-02-24 20:04:36 -07:00
AJ Martinez
7c08634f7e WIP: Turn towards local camera (midgame join broken right now) 2023-02-24 16:59:22 -07:00
AJ Martinez
4062447ee7 Debounce cmd latency in local camera prediction 2023-02-23 15:19:11 -07:00
James R
91a323624c Let players bust bustable FOFs again 2023-02-18 23:29:54 -08: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
b2bd5ecccd Merge branch 'blackhole-fault' into 'master'
Fault rework

See merge request KartKrew/Kart!910
2023-02-13 23:23:07 +00:00
AJ Martinez
32ea795639 Fault rework cleanup for merge 2023-02-13 15:31:39 -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
toaster
2207115424 Time Attack: Update Medals on player exit, not on intermission
- M_UpdateRecordReplays: Split out M_UpdateRecords
- P_DoPlayerExit: Call M_UpdateRecords in modeattacking
2023-02-05 00:21:08 +00:00
toaster
c8b8eba6e6 Partial demo conclusion crash fix of invalid player/mo dereference
Still crashes, but now at an address I can't use gdb on...
2023-01-28 22:22:08 +00:00
toaster
52ce1d95fd Additional spectator checks
- P_DamageMobj
- P_PlayerThink
2023-01-21 14:57:54 +00:00
toaster
2e35a40b80 SF_IRONMAN: handle randomised skin and hurt/death states differently
- P_DamageMobj
    - Become skin temporarily to show off the hurt frames
    - Sets charflags, so P_PlayerThink can handle reversion
    - Add sparkles for losing disguise
- P_KillPlayer
    - Sets charflags, so P_PlayerThink can handle reversion
    - Add extra sound for losing disguise
- G_PlayerReborn
    - Sets charflags in not-betweenmaps case as well, so P_PlayerThink can handle reversion
- P_SpawnPlayer
    - Use set skin for spawn again (partial revert of previously committed code)
- P_PlayerThink
    - More specific conditions for fakeskin reversion
        - Not hurt, dead, or respawning (except for last part of drop)
    - Add sound and sparkles for reapplying disguise
2023-01-21 14:43:54 +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
toaster
9980631e2f Fix bots' realtime not ticking upwards when all human players have exited
This corrects the issue where bots have the same time on exit as the last human player, and therefore tie with them, with disastrous consequences for GP.
2023-01-08 13:58:14 +00:00
toaster
f4071ce42f Fix getting race-endingly stuck in zoom tubes while respawning 2023-01-06 13:50:47 +00:00
toaster
6d1dd5f089 Fix player potentially getting stuck invisible while lightsnaking when not true death respawn 2023-01-06 13:43:11 +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
66e2f3a8e9 Reduce stair janking loss of control if momentum angle drifts too far from facing 2023-01-03 22:43:58 -08:00
toaster
42a6b03e48 Remove "circuitmap"
An effectively useless global scope boolean that literally checks for the presence of a finish line, created in and used only by things we inherited from vanilla SRB2
2022-12-31 23:27:59 +00:00