summaryrefslogtreecommitdiffhomepage
path: root/gamedata
AgeCommit message (Collapse)Author
2024-09-08Improve the HUD API slightlyMichael Smith
- Add text size measurement (for centring etc.). - Add a wchar_t equivalent since ushort would be wrong on Linux. Avoid actually using wchar.h because it's a big bloaty header, particularly on Windows.
2024-08-30Improve L4D warp testing and add visualisationWillian Henrique
sst_l4d_testwarp will now unstick the player unless "staystuck" is specifed as an argument. Additionally, sst_l4d_previewwarp is added to show the positions checked by the unstuck logic as well as the line-of-sight traces performed. Committer's note: the actual box-drawing logic was essentially rewritten by me since I realised the order of drawing didn't matter at all. All the code-digging logic is more-or-less still what bill wrote, though. So, you could say we have joint authorship of this, I suppose. Not that that's a huge deal, but if anyone's ever curious or if it ever legally matters for some reason then, well, there you go.
2024-08-29Add very basic client console messaging for L4D2Michael Smith
This isn't totally ideal - it'd be nice to have a way to get colours working, at least for errors/warnings. But it might not really be possible to do that without custom networking stuff, so this will do for the forseeable future. The main goal is just to be able to have CON_SERVERSIDE commands actually give output to the relevant player.
2024-08-29Fix mkentprops for real this time, probablyMichael Smith
Last fix was apparently enough to make the release work, but not enough to actually work in general, lol. With any luck, it's actually good now.
2024-08-26Fix Teleport gamedata for sst_l4d_testwarp on L4D2Michael Smith
Of course, something was bound to get screwed up by all those changes. And of course, I was bound not to test stuff well enough in the rush to make a useful update. Argh!
2024-08-23Fix PEntityOfEntIndex gamedata for Portal 4104Matthew Wozniak
This enables the FOV feature to work correctly.
2024-08-23Rewrite the gamedata and entprops systems entirelyMichael Smith
This removes the horrible janky old KeyValues parser and replaces it with a couple of trivial ad-hoc text parsers. In doing so, make the format of the actual gamedata files more human-friendly too. We also gain support for nested SendTables in mkentprops, which are required to get at various things like player velocity. And, the actual string matching is made more efficient (or, at least, more scalable) by way of a cool radix tree thing which generates a bunch of switch cases on distinct characters.
2024-05-27Hide custom crosshair in menus/load screensMichael Smith
This isn't perfect logic - the standard crosshair has a lot more cases where it's not displayed - but it's better than nothing and avoids looking stupid as often. In the process, also fix the IConVar virtual table being one entry too small, which somehow wasn't a problem until it led to vtidx_IsInGame here getting clobbered and causing hard-to-debug crashes. Woopsy!
2023-12-19Add VGUI HUD overlay drawing featureMatthew Wozniak
Currently only supports Orange Box and Left 4 Dead branches. There's quite a large amount of gamedata involved in making this work, and figuring it out for the likes of Portal 2 doesn't seem like a major priority at the moment.
2023-12-17Cancel fast-forward after the player disconnectsMichael Smith
Avoids spurious and confusing fast-forward behaviour in the event of resetting a run, then disconnecting early and deciding to load some other map. Also fixes a stupid typo (s/propand/propane/).
2023-12-04Add gamedata for autojump in Portal 3420Hayden K
2023-12-04Fix Left 4 Dead Survivors crashMichael Smith
2023-12-04Add cutscene skipping to L4D quick resetMichael Smith
Also done with quite a lot of RE help from bill - thanks again!
2023-11-26Add a way to fast-forward game timeMatthew Wozniak
This will be mostly useful for skipping cutscenes in Left 4 Dead games. It may work in other games, but probably won't really be as useful. Committer's note: this was adapted a fair bit from woz's original code, hence the joint copyright, but he did most the hard work of figuring out how to get this deep into the engine's call stack. Thanks! bill also provided a fair bit of help figuring out missing gamedata and fixing compatibility with L4D2 2147 and later. Also thanks!
2023-08-30Change "plain" filetypes to the proper "text"Michael Smith
2023-08-02Add gamedata for mouse scaling in newest L4D1Hayden K
2023-06-20Add more GetEngineBuildNumber offsetsWillian Henrique
2023-06-15Fix L4D VGuiConnect/VGuiIsInitialized gamedataWillian Henrique
This was actually breaking deferred initialisation in 0.5, the main observable effect being that the L4D1 console spam fix stopped working. Committer's note: woopsy!
2023-06-03Adapt vote reset code into fast campaign resettingMichael Smith
This is kind of a breaking change but the other code was obviously never released or relied on by anyone - it will be pushed at the same time as this in fact. It still seems worth having the original committed separately to show the progression of development of the feature, however. Technically the standalone vote cooldown resetting could also be added back if ever desired however there doesn't seem to be that much of a use case for that at the moment. This feature ought to be a lot more convenient now as it allows for resetting back to a set starting point no matter where the player is in a run. It isn't universally useful as All Campaigns Legacy solo runs require switching to a different type of server and Main Campaigns co-op runs require restarting the game after Swamp Fever to work around the god mode bug, however it is still useful in a good few situations. Unfortunately this turned out to be pretty complex to implement, first requiring a bunch of interop with valve's rather wacky KeyValues stuff, and then requiring a bunch of especially difficult reverse engineering of L4D1 v1.0.0.5 because it doesn't use said KeyValues stuff and does something else completely different instead. A side effect of all this work is that the nag removal hack is now part of the KeyValues stuff in kvsys.c, which is kind of a comfier place for it than just kind of dumped in the middle of sst.c.
2023-05-21Add command to reset L4D2 vote cooldownsWillian Henrique
In most versions of L4D2, players cannot call a vote (e.g. switch campaign, change difficulty, restart campaign) more than once every 3 minutes. This makes resetting on a first map a pain, usually requiring reloading the map to reset the vote state. This new sst_l4d_vote_cooldown_reset command empties the list of structures tracking vote callers, allowing all players to vote again immediately. This should make resetting runs a lot easier on versions without unlimited votes.
2023-05-05Implement APIs to control demo recordingMichael Smith
This is a surprise tool that will help us later!
2023-01-15Fix deferred init for Portal 2 compatibilityMichael Smith
Thanks Bill for figuring out what the problem was.
2022-12-25Add basic mouse input scalingMichael Smith
2022-07-23Add stuff to track keypressesWillian Henrique
Committer's note: this is somewhat adapted from Bill's original code, written a while back, but he gets full credit for actually doing the hard part.
2022-05-19Properly solve load order issues via deferred initMichael Smith
2022-05-19Add a quick stopgap hack for Portal purposesMichael Smith
People want to be able to write a scheduled-release passphrase to demos to prove that said demos were recorded during a timeboxed event. Ideally this is something that'd be part of the custom demo data and general RTA run management stuff that's planned, but of course that doesn't exist yet. When it does exist, we'd probably want rid of this nonsense, so it's marked hidden and I don't plan to document it anywhere "official." It's just here for people who really need it in the short term.
2022-05-15Fix GetEngineBuildNumber and entity property stuffMichael Smith
I still haven't bothered to flesh out all the possible indices for GetEngineBuildNumber but we're back to being able to use it to detect The Last Stand (as a result of some old version testing Aciidz did - thanks again!). This means we can do away with the terrible map file- based hotfix. Also, turns out sst_l4d_testwarp doesn't work if the plugin gets loaded early via VDF because certain SendTable offsets start out negated, so we work around that too now.
2022-05-13Properly finish refactoring con to use gamedataMichael Smith
2022-05-06HOTFIX: Fix L4D2 2.0.0.0 crashingv0.3-HOTFIXMichael Smith
Idiotic problems require idiotic solutions.
2022-05-03Add entity property finding and L4D warp testingMichael Smith
This was a lot more code than expected, but it might be finally close to time to release the next beta... We'll see if any more rabbit holes present themselves to jump into, though.
2022-04-30Centralise engine access, add Portal FOV changerMichael Smith
- A bunch of stuff is now defined in one header, engineapi.h - engineapi.c is responsible for setting up any interfaces/stuff that's used in more than one place - mkgamedata is pretty much rewritten and now supports nested conditionals - gamedata variables no longer have the gamedata_ prefix because it was just annoyingly long all the time - vcall macros are somewhat revamped and support dynamic (gamedata) indices - Portal 1 FOV can be set anywhere from 75-120 using fov_desired - tested in both the main versions currently used by runners - A few typos were also fixed ("intput," "writeable," "indexes")
2022-04-25Add engine_no_focus_sleep backport, fix codegenMichael Smith
Default gamedata values actually work the way they're supposed to now.
2022-03-19Add L4D:S CheckJumpButton index for autojumpHayden
2021-12-27Reintroduce autojump codeMichael Smith
2021-11-20Initial public snapshotMichael Smith
With code from Bill. Thanks Bill!