aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Fix mistakes I made integrating Hayden's old codeHEADmasterGravatar Michael Smith 2025-04-092-9/+9
| | | | | Doesn't matter how many history rewrites I do before pushing my local branch, there will always be something I still got wrong.
* Do the goto :end thing in mkbindist.bat tooGravatar Michael Smith 2025-04-081-6/+8
|
* Put some error paths in the fridgeGravatar Michael Smith 2025-04-084-104/+115
|
* Fix the infamous Swamp Fever "god mode glitch"Gravatar Hayden K 2025-04-073-0/+19
| | | | | | | | | | | | | | | | | | Turns out this was fixed in version 2112 (October 2012), so it was fairly easy to isolate in Ghidra (I had previously thought this was fixed by TLS). The CDirector::FinaleEscapeState member is used in CDirector::IsFinaleWon (and maybe another function, I don't remember). Prior to Valve's fix, the value was never reset to 0 after finishing a campaign, so when the Swamp (or Crash Course) "minifinale" events ran, the game would behave as though the player was entering the end-of-finale cutscene and block votes, make players invincible etc. 2112 fixed this bug by setting the member back to 0 in CDirector::Reset, so here we just set it to 0 when quickreset is used, since that is essentially the recommended way to start a run at this point. Now co-op hosts won't need to restart their game after finishing a campaign anymore!
* Remove years from copyright headersGravatar Michael Smith 2025-04-0788-126/+126
| | | | | | | | They're legally unnecessary as far as I know, and kind of annoying to maintain on a long-term basis. This was done with the consent of all 3 other contributors, in case anyone was wondering.
* Fix quickreset not working on L4D1 ApartmentsGravatar Hayden K 2025-04-072-1/+3
| | | | | | Confusingly, the old matchmaking interface refers to No Mercy as apartments (plural), but refers to the first level as apartment (singular). Good meme.
* Write the update notes for 0.9Gravatar Michael Smith 2025-04-061-1/+12
|
* Make Steam L4D1 demos backwards-compatibleGravatar Hayden K 2025-04-062-0/+187
|
* Add portable unreachable macro, just for funGravatar Michael Smith 2025-04-061-2/+3
| | | | | | This isn't useful to us at all, but might be useful to someone else. I always try to write code for multiple compilers for this reason, even if SST ultimately still requires Clang.
* Tweak a couple of bits of whitespaceGravatar Michael Smith 2025-04-062-2/+2
|
* Add feature to remove the chat rate limitGravatar Hayden K 2025-04-063-0/+90
| | | | | This probably works for basically every game, but it was only tested for L4D/L4D2/L4D:S/Portal 2.
* Add L4D1_1015plus and L4D1_1022plus gametype tagsGravatar Hayden K 2025-04-063-3/+18
| | | | | | | | | | 1022 is the update that adds Mac support and introduces some of the already known vtable changes (this update is similar to 2040 for L4D2 in that regard), the tag will also see some use in some upcoming features. The 1015 tag is questionably necessary, but will be used for at least one feature (it's also the update that adds the newer matchmaking interfaces used in l4dreset.c, but having the tag available doesn't help anything there).
* Rename L4D2_2147plus gametype tag to L4D2_2125plusGravatar Hayden K 2025-04-066-10/+13
| | | | | | | Turns out the cvar we use to detect 2147 was actually added in 2125. Since renaming it doesn't currently break anything (and 2125 was a fairly notable code shuffling update, given it was the first update with a native Linux build of the game), it makes most sense to just do this.
* Reload inputhud fonts on resolution changeGravatar Michael Smith 2025-04-061-7/+14
| | | | | | | | | | | This checks off another bug that we knew about for ages and I never had time to fix. Note that I've since learned that font handles don't work the way I assumed they did; things get cached and reused so there's no need to worry about leaks. As such, we could probably revisit how fonts are done here. However, the current implementation does work so that's potentially a job for some future release after 0.9.
* Pass screen width and height into HudPaint eventsGravatar Michael Smith 2025-04-064-12/+7
| | | | | This makes it unnecessary to call hud_screensize in basically every handler.
* Inform users of incorrect usage of plugin_unloadGravatar Michael Smith 2025-04-061-1/+20
|
* Remove Wer* calls that crash under Wine/ProtonGravatar Michael Smith 2025-04-061-18/+10
| | | | | | | | | | | | Wine doesn't implement these it seems. Not sure why this crashed as opposed to just failing to load sst.dll but I guess it doesn't matter. This also improves compat with very old Windows 10 builds, to the extent that we really care about those which I guess we don't really, but still, it can't hurt. I did also try dynamically loading the symbols but at that point it just started crashing on unload on Windows as well. No idea what's going on there, but whatever, it's not that important, just get rid of it.
* Fix broken behaviour in the L4D2 addon systemGravatar Hayden K 2025-04-067-6/+274
| | | | | | | | | | | | | | | | | | | | | | | | | This should greatly improve the experience of running newest/TLS as well as custom campaigns. The bugginess in question is quite a lot to explain so there's some rather substantial exposition via code comments. The actual fixes are comparatively simple, although still a little subtle to get exactly right and took a few iterations to nail down the edge cases. Thanks to bill for helping me with the RE & assistance on writing the hooks/code and so on. I tracked down a lot of this myself, but the end result wouldn't have been possible without his help. Committers' note: I ended up wrangling this change a fair bit, as I am apparently just always wont to do, and also fixed a bug in the process, hence adding my copyright notice as well. Nonetheless, big thanks to aciidz (and bill) for doing the bulk of the *actual* hard work of figuring out how to do any of this! The actual code changes I made to the original submitted patch were relatively minor; a lot of my effort honestly went into attempting to shorten the massive wall of comment text. At the end of the day, there's still a really long comment, but it's just a lot to explain really so it is what it is. I hope it's at least somewhat understandable to a reader, anyway.
* Fix very stupid, very old mistake in fixes.cGravatar Michael Smith 2025-04-061-2/+6
| | | | Thanks, months-ago Hayden! Finally remembered to do this.
* Fix a couple of dumb typos in the fastspin libraryGravatar Michael Smith 2025-04-061-5/+3
|
* Develop the msg chunklet furtherGravatar Michael Smith 2025-04-062-166/+638
| | | | | | | | - Add reverse-put functions for stack-based and/or left-pad-inspired use cases. - Fix an incorrect return value. - Clean up the doc comments, fixing a few errors and omissions. - Make some trivial functions static inline.
* Use C23 void-argument-free prototypesGravatar Michael Smith 2025-04-0635-104/+104
| | | | | | | In the future we can also consider moving to {} instead of {0} for initialisers, but my old Clang (16) doesn't support this, so it might be wise to wait longer on that one so people don't need too bleeding-edge of a compiler just to build this thing.
* Rewrite and redesign codegen and feature systemGravatar Michael Smith 2025-04-0652-1606/+1666
| | | | | | | | | | | | | | | | | | | | | | | | | Also switch to somewhat proper C23 flags while we're at it. This is a huge change. It took me forever, in between being really busy. Sorry about that. But the good news is I'm now free to start integrating the various patches that have accumulated since last release. Well, at least in between still being really busy. Gotta manage expectations. The main benefit of introducing GAMESPECIFIC() is that features that don't apply to a particular game no longer show up *at all*, and less time is wasted on init. It also enables a cool optimisation wherein unnecessary REQUIRE_GAMEDATA() checks can elided at compile time whenever the gamedata is known up-front to always exist in supported games. The DEF_FEAT_CVAR macro family meanwhile makes it easier to manage the lifecycle of cvars/ccmds, with less manual registering, unhiding and such. Originally I was going to try and just hack these features into the existing codegen abomination, but it just got too terrible. This rewrite should make it easier to continue tweaking codegen behaviour in future. It also has slightly better error messages.
* Lowercase the stupid file, Windows. ARGH.Gravatar Michael Smith 2024-10-011-0/+0
| | | | Actually kind of Neovim's fault, I think. Whatever.
* Refine input HUD layoutsGravatar Michael Smith 2024-09-291-63/+77
| | | | | | | | | - Get rid of +left/+right things, as they were deemed unnecessary. - Add missing reload button in L4D games - Put a vertical gap between the group of directional buttons and attacks, and all the other buttons. While we're at it, add a few branch hints and fix up the includes.
* Add missing newlines to clientcon messagesGravatar Michael Smith 2024-09-281-3/+3
| | | | | | Just had a brain fart when writing this code initially, woops. Just as well I have people pointing these things out to me before I end up making releases with such mistakes. At least, usually. :^)
* Fix crash on exit when our raw input is usedGravatar Michael Smith 2024-09-281-2/+3
| | | | | | | | | | | | Turns out window messages still get generated after the plugin is unloaded, causing now-unloaded SST code to get called. In some edge cases some Windows appCompat logic will also then start suppressing FreeLibrary calls for that game, which breaks plugin hot reloading. Very dumb and very confusing. I didn't notice the crashing before due to lack of minidumps from the relevant games, so thanks aciidz for pointing this issue out.
* Remove redundant and/or incorrect -municode flagGravatar Michael Smith 2024-09-281-3/+3
| | | | | | | | This tells MinGW toolchains, which we don't use, to use wmain() instead of main(), which we're also not doing for these programs. With the regular Clang toolchain that we do use, it makes no difference. In any case, then, we might as well remove it.
* Enable rebuilding the plugin while it is loadedGravatar Michael Smith 2024-09-282-2/+20
|
* Create and use macros to define accessor functionsGravatar Michael Smith 2024-09-285-21/+116
| | | | | | | Avoids the need to manually mess around with mem_offset() and gamedata off_ and sz_ values as often, because that's kind of annoying. Should also make the codebase a little less confusing for new players.
* Use single-precision trig functions in testwarpGravatar Michael Smith 2024-09-251-3/+3
| | | | | There was never a need to calculate more precision and then throw it away again. This was just an oversight.
* Add a mailmap to fix some name/email sillinessGravatar Michael Smith 2024-09-241-0/+5
| | | | Woops!
* Address some minor L4D warp testing oversightsGravatar Michael Smith 2024-09-161-4/+12
| | | | | | | - Check the player's team before attempting any form of warp prediction (as per the code bill wrote before) - Avoid overlapping boxes and an unnecessary line draw in the case where the player is never actually stuck.
* Increase mouse factor limit to 100Gravatar Michael Smith 2024-09-151-1/+1
| | | | | | Requested repeatedly by Portal people, and I don't see why not. We were conservative at first but I've yet to come up with a real reason why slowing mouse input further would be a problem.
* Add basic button input HUDGravatar Matthew Wozniak 2024-09-148-15/+504
| | | | | | | | | | | | Committer's note: this is heavily modified from the original code contributed by woz (and somewhat improved by bill and aciidz). Copyright notices reflect joint authorship accordingly. woz still gets commit authorship though because it feels wrong to yoink that from someone. :^) And yes, the original code was written in 2022. Time flies. A lot of the code is still kind of hacky and ugly and I'd like to improve it later but there's other things to do so that can wait.
* Fix an include-what-you-use omissionGravatar Michael Smith 2024-09-081-0/+1
|
* Improve the HUD API slightlyGravatar Michael Smith 2024-09-083-6/+26
| | | | | | | - 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.
* Fix a Linux woopsy in os.c I spotted the other dayGravatar Michael Smith 2024-09-081-1/+0
| | | | | | Note: for all I know Linux isn't even compiling right now - I rarely actually test that. But still, might as well fix this since it's an obvious mistake.
* Un-break and re-fix x86Gravatar Michael Smith 2024-09-074-10/+63
| | | | | | The last fix was, uh, not good. With any luck this is actually correct now. Certainly, running many millions of test cases fails to find any mismatch with udis, so it's at least a lot less wrong than it was.
* Fix more broken x86 casesGravatar Michael Smith 2024-09-063-22/+27
| | | | Thanks Evan Lin for reporting.
* Improve L4D warp testing and add visualisationGravatar Willian Henrique 2024-08-303-11/+283
| | | | | | | | | | | | | | 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.
* Add very basic client console messaging for L4D2Gravatar Michael Smith 2024-08-297-4/+84
| | | | | | | | 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.
* Unhide con_logfile in fixesGravatar Michael Smith 2024-08-291-0/+1
|
* Add basic server-side tracing functionalityGravatar Willian Henrique 2024-08-294-0/+163
| | | | | | | | | | | Restricted to L4D for now due to known ABI compatibility issues on other branches. This should be easy to fix later when needed elsewhere. Committer's note: I've counted myself as a joint author and added a copyright notice to the .c file since this code is reasonably modified from the code bill originally wrote last year. but June of this year and , so I've gone ahead and corrected his copyright notice too, with permission.
* Fix mkentprops for real this time, probablyGravatar Michael Smith 2024-08-293-20/+28
| | | | | 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.
* Begin the new version cycle yet again at 0.9Gravatar Michael Smith 2024-08-262-5/+5
|
* Add the one update note to release again, alreadyv0.8-BETAGravatar Michael Smith 2024-08-261-1/+1
|
* Fix broken mkentprops code generationGravatar Michael Smith 2024-08-261-3/+5
| | | | I screwed things up even more than I thought!
* Fix Teleport gamedata for sst_l4d_testwarp on L4D2Gravatar Michael Smith 2024-08-261-2/+2
| | | | | | 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!
* Bump version to 0.8 for next releaseGravatar Michael Smith 2024-08-262-7/+5
|