aboutsummaryrefslogtreecommitdiff
path: root/src/l4dwarp.c
Commit message (Collapse)AuthorAgeFilesLines
* Prune some comments and tidy up other minor thingsGravatar Michael Smith 2023-06-101-4/+2
|
* Adapt vote reset code into fast campaign resettingGravatar Michael Smith 2023-06-031-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Move towards C23, improve events and vcall macrosGravatar Michael Smith 2022-09-131-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Another big one. Here's a list of things: - Since the upcoming C23 standardises typeof(), use it as an extension for the time being in order to allow passing arbitrary types as macro/codegen parameters. It wouldn't have been a big leap to do this even without standardisation since it's apparently an easy extension to implement - and also, to be honest, this project is essentially glued to Clang anyway so who cares. - Likewise, bool, true and false are becoming pre-defined, so pre-pre-define them now in order to get the benefit of not having to remember one header everywhere. - Really ungodly/amazing vcall macro stuff now allows us to call C++ virtual functions like regular C functions. It's pretty cool! - Events can now take arbitrary parameters and come in two types: regular events and predicates. All this makes the base code even uglier but makes the feature implementation nicer. In other words, it places more of the cognitive burden on myself and less on other people who might want to contribute. This is a good tradeoff, because I'm a genius.
* Add magical feature codegen system, at long lastGravatar Michael Smith 2022-08-101-7/+11
|
* Change some warnings to errorsGravatar Michael Smith 2022-07-231-1/+1
|
* Solve the error logging situationGravatar Michael Smith 2022-06-021-2/+3
|
* Cheat-protect sst_l4d_testwarpGravatar Michael Smith 2022-05-041-1/+1
| | | | | Don't want people hitting a bind by accident and invalidating their runs instantly.
* Add entity property finding and L4D warp testingGravatar Michael Smith 2022-05-031-0/+60
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.