Commit graph

846 commits

Author SHA1 Message Date
James R
051b4f8935 Always use typedef name instead of struct name
mobj_t instead of struct mobj_s
2022-11-27 17:21:40 -08:00
James R
b5310a1f68 Add typedef.h
All typedefs for structs that were present in other header
files have been moved to here. (Except node_t because the
renderer and netcode both define node_t LOL.)
2022-11-27 17:21:40 -08:00
toaster
6d0637d39d Unlockable skins (in a way friendly to #define MAXSKINS 255)
Mammoth commit, sorry. I only realised halfway through writing it that SECRET_SKIN was only partially merged.

Ports from 2.2:
- Merge SECRET_SKIN (STJr/SRB2!1474)
    - Default skin is now handled by checking all skins for unlock status, and I_Erroring if none are available
    - Don't show skin names on game startup, to keep our secrets hidden
    - Unlockables now have string variables zallocated.
         - For skin names rather than numbers.
    - Correctly clean up memory when freeing unlockables and emblems.

Bespoke code:
- For temporary testing. `unlocks.pk3`
    - Using this for rapid testing gameboot SOC instead of patch.pk3 because of the intent to turn that into scripts.pk3
- Don't not save gamedata in DEVELOP builds, even if you've used cheats!
- `player->availabilities` is now an array of UINT8
    - (MAXSKINS + 7)/8 entries, or 32 bytes.
    - Included with XD_ADDPLAYER instead of XD_NAMEANDCOLOR.
         - Simplifies a lot of logic with respect to demos, skin changes mid-game, etc.
             - Seriously, there's a lot of random places in the code that just iterate over MAXSPLITSCREENPLAYERS and g_localplayers to update availabilities in real time in a way that's not particularly netsafe...
         - Lines up with the plan for handling unlocks when returning to menus.
         - Was included with XD_ADDBOT, but that actually overruns the netxcmd buffer at first mapload with 7 bots. We might need to consider expanding the size of the netxcmd buffer...
    - In demos, can be interpreted as both relative to the original replay and the current skin list depending on boolean context provided to R_SkinUsable.
    - Used for SF_IRONMAN (and will crash if all other skins are inaccessible).
- Grand Prix bot randomisation uses the host's unlocks.
- Don't show locked characters on the fancy new character select.
-  DXD_JOINDATA for demos
    - Replaces the dual-purpose behaviour of DXD_PLAYSTATE
    - Contains availabilities
    - Handles bot material in a different way
- Forceskin restrictions
    - Won't run in demos, because it's assumed recorded DXD_SKIN will handle all the conversions the original match had
    - Won't run if K_CanChangeRules says no
- Correctly set `mapvisited` on level visit, even in [fake gasp] MULTIPLAYER/NETGAMES!! 🥹
- Added updating unlockables and extra emblems on `mapvisited` update.
    - Currently fails to produce the cecho, but that'll be stripped out entirely in a future commit so I'm not bothered.
2022-11-27 22:53:29 +00:00
Oni
db621c4538 Merge branch 'waypoint-fixes' into 'master'
Big Waypoint Change

See merge request KartKrew/Kart!784
2022-11-27 02:01:43 +00:00
Sally Coolatta
b55c67c29d Add currentwaypoint 2022-11-26 02:46:52 -05:00
toaster
b8f59fd227 Skin and playerstate code in demos has been partly rewritten to support more than was previously possible.
Notable new features:
- Guaranteed native compatibility with SF_IRONMAN even with differing # of skins
- Bots (todo: can still desync midway through round)

Implementation details:
- Demo code (skins):
    - Instead of writing a skin name string, and the player's kartspeed, kartweight, and charflags for each player in the initial player-interpreting loop...
    - Write a skinlist of EVERY skin's name string, kartspeed, kartweight, and flags next to the file list, to be read into `demo.skinlist`.
        - If the skin name isn't loaded, find the skin with (in order)
            - SF_IRONMAN if your skin had SF_IRONMAN, since that's more important to signal
            - the closest stats otherwise (as per previous implementation)
        - Just as tolerant to stats AND the number of base skins changing between versions (the bonuschars aegis situation)
        - Not tolerant to restat, but we can add a DXD or EZT later if we want to natively support that kind of mod
    - In the initial loop and DXD_SKIN, just write an index that can be used for `demo.skinlist`, and store it in `demo.currentskinid[p]`
    - The player's skin is now encoded as EZT_IRONMAN for ghosts (and just in case RNG sync fails for unrelated reasons)
- In the SF_IRONMAN code when demo.playback is true
    - everywhere where `skins[player->skin]` is referenced instead uses an index into `demo.skinlist`
    - SetRandomFakePlayerSkin uses the `demo.skinlist` to build a table to ensure exact random call parity
        - Also means it no longer double rejection-samples.
    - `player->fakeskin` and `lastfakeskin` are always == their original recording values, a skin id which can be used into `demo.skinlist`
- Demo code (playstate, initial player setup loop):
    - Add bot flag (`DXD_PST_ISBOT`, `DEMO_BOT`)
    - Add in-between-level botvars (difficulty, diffincrease, rival)
    - Don't rely on `PF_WANTSTOJOIN` to activate

Additional bugfixes:
- Followerskin set to -1 in CL_ClearPlayer so a bad follower isn't recorded on player join without name and color change arriving immediately
- Accomodate new joiners in demo code even if they're not on DXD_PST_SPECTATING for one reason or another
- Demo extra file list saving is now its own function for code cleanliness
- Actually only modify players relevant to the demo at the end of G_DoPlayDemo, not all 16 by supplying and overwriting garbage values (POSSIBLE MEMORY CORRUPTION FIX, mobj_t pointer was previously dereferenced)
2022-11-22 14:28:48 +00:00
toaster
e65d17cd4d Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into ironman
# Conflicts:
#	src/g_demo.c
2022-11-21 15:49:29 +00:00
Oni
996e3c97ef Merge branch 'banana-vfx' into 'master'
Banana visuals

Closes #308

See merge request KartKrew/Kart!772
2022-11-19 00:47:21 +00:00
Sally Coolatta
d0cd25328e Remove decabanana 2022-11-18 02:34:59 -05:00
Sally Coolatta
0233c26386 Chengi's new position numbers 2022-11-17 21:11:01 -05:00
AJ Martinez
80252717c9 Kill SF_HIRES, use skin_t highresscale instead 2022-11-03 16:19:17 -07:00
AJ Martinez
86366b000c HOSTCODE 'ironman' - WIP 2022-11-03 03:38:54 -07:00
toaster
c2ef5a32e9 Seperate FINISH text from khud_cardanimation
- Fixes an issue where the card animation and the FINISH animation operating on two different timers, but using the same variable, would intefere with each other
- Also makes khud_fault use the same drawer, so it can benefit from interpolation
2022-10-13 18:14:48 +01:00
James R
f6b4b9213b Merge branch 'rework-savecheckpoint-command' into 'master'
savecheckpoint cheat online

See merge request KartKrew/Kart!718
2022-09-30 22:52:05 +00:00
James R
ee2302d6ee Merge branch 'noclip-online' into 'master'
Cheat/Debug Commands ...ONLINE

See merge request KartKrew/Kart!717
2022-09-30 22:51:42 +00:00
James R
f3668fbd7c Merge branch 'top-final' 2022-09-29 10:52:45 -07:00
James R
23408e7d3b Let savecheckpoint work online, work at all
Actually respawns you at this location! 😃

Uses object Z position instead of floor height.
2022-09-29 06:43:44 -07:00
James R
db92d9068e Netsync setrings and setlives
- setrings no longer subtracts totalrings
- removed INFLIVES
2022-09-29 05:54:58 -07:00
James R
0444e70413 Rearrange player cheat flags
PC_GODMODE -> PF_GODMODE
PC_NOCLIP -> MF_NOCLIP
2022-09-29 02:23:07 -07:00
James R
5063a4acf1 The Garden Top
This is all the visual effects and item logic of the Top
minus (almost all [1]) physics adjustments when a player is
riding one.

While on a Top:

- Otherwordly humming while floating

- Cannot drift [1]. Instead, holding drift begins grinding
the Top into the ground -- sparks fly out
- Sprite tilts left and right as you turn
- No wheel screech when turning too far
- Speed lines while holding drift
- Tripwire Boost effect scales to cover you AND the Top

- One hit and you lose it

- Throwing forward, getting hit or just losing it because
you were in first place for too long: the Top flies out
from under you and begins snaking like crazy
- Throwing backward also makes the Top fly out from under
you but it also thrusts you forward. The Top dies
instantly so it's not dangerous ;-)

- If you're in first for too long, it begins vibrating
- If you tumble, it dances across your entire screen

A loose top will tumble anyone it hits.
2022-09-28 02:01:37 -07:00
James R
a6f206cd62 Add topdriftheld and topinfirst to player_t 2022-09-28 02:01:37 -07:00
James R
7b301452cc Add Garden Top related states
MT_GARDENTOP
S_GARDENTOP
KITEM_GARDENTOP
KSHIELD_TOP
2022-09-28 00:07:25 -07:00
Sally Coolatta
de506b8ff1 Merge branch 'master' into water-skip-conditions 2022-09-27 19:21:20 -04:00
Sally Coolatta
841bcf3619 Allow non-players to water skip/run
Water skipping is enabled for Orbinaut, Jawz, and Ballhog currently. Jawz can water run, as long as their target is on/above the plane they're at -- once their target goes into the water, they'll start skipping.
2022-09-27 12:31:33 -04:00
Sally Coolatta
a60d48202f Merge branch 'master' into cheats-streamline 2022-09-24 14:32:15 -04:00
AJ Martinez
e10d6124d6 Merge remote-tracking branch 'origin/master' into new-spb 2022-09-23 22:20:24 -07:00
Sally Coolatta
362bef7b3a Add new gate sounds 2022-09-23 17:19:15 -04:00
Sally Coolatta
117d791424 Merge branch 'master' into cheats-streamline 2022-09-23 14:38:54 -04:00
James R
bcdf41ec64 Remove PF_ATTACKDOWN/PF_ACCELDOWN/PF_BRAKEDOWN, use oldcmd.buttons 2022-09-22 08:49:44 -07:00
James R
7251ed5d9e Add player.oldcmd -- ticcmd from previous tic 2022-09-22 08:43:40 -07:00
James R
c792818887 Rename PF_LOOKDOWN to PF_GAINAX 2022-09-22 07:19:56 -07:00
Sally Coolatta
0e7d9ba84e Merge branch 'master' into new-spb 2022-09-21 11:18:31 -04:00
Sally Coolatta
dd94b1449e Juicebox gates forward port for SPB 2022-09-21 07:05:26 -04:00
Sally Coolatta
f987d1b601 Add smooth landing vfx 2022-09-20 10:33:24 -04:00
VelocitOni
2dba4fd283 Merge branch 'master' into item-bungus 2022-09-19 18:11:26 -04:00
James R
c7847fa32a Bump trip wire leniency tics from 7 to 15 2022-09-19 14:21:37 -07:00
James R
744129aefb Merge branch 'nerf-leniency' into 'master'
Reduce tripwire leniency from 35 to 7 tics

See merge request KartKrew/Kart!676
2022-09-19 20:03:32 +00:00
Sally Coolatta
fac7bb0627 Merge branch 'master' into item-bungus 2022-09-16 06:56:23 -04:00
Sally Coolatta
a4b63f3ffa Make shrink lasers add timer instead of resetting 2022-09-14 03:15:03 -04:00
Sally Coolatta
c878c7725c Reduce tripwire leniency from 35 to 7 tics 2022-09-10 15:03:42 -04:00
Oni
ea3818d285 Merge branch 'hear-pain' into 'master'
Improved MKSC-style hit confirms

See merge request KartKrew/Kart!659
2022-09-07 04:44:03 +00:00
Sally Coolatta
bc538a066f Fast falling
E-Brake in the air for x4 gravity, at the cost of a tiny bounce on landing.
2022-09-04 21:21:25 -04:00
Sally Coolatta
01af5127c8 Improved pain then hit confirm sound
- The pain + hit confirm delay is done for all players, instead of only the damaged player.
- The player who got the hit also gets to hear their pain sound at full volume.
- Changed the code so that your hit confirm sound effect will no longer be interrupted if the player who got hit left the game.
2022-09-04 14:23:51 -04:00
toaster
2c91f83a02 Store tripwire pass level on the player
Fixes tripwire leniency fadeout - previously broken two commits ago
2022-08-30 21:22:26 +01:00
Sally Coolatta
b9e3bdff94 Better tripwire leniency vfx 2022-08-29 16:26:58 +01:00
Sally Coolatta
429f61966e Merge branch 'master' into item-bungus 2022-08-23 23:42:21 -04:00
Sally Coolatta
44a7e16535 Increase tumble gravity
Makes it snappier
2022-08-22 07:25:17 -04:00
Sally Coolatta
7a3a74a08b Don't scale tumble height with tumble gravity
It was taking into account the tumble gravity, which meant that tumble has been actually lasting for much longer than originally designed.
2022-08-22 07:24:47 -04:00
Sally Coolatta
0a5767b0b0 Merge branch 'master' into item-bungus 2022-08-14 20:49:40 -04:00
Sally Coolatta
ebb34ff9d4 Lap based power level 2022-08-14 06:00:37 -04:00