Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
This is a surprise tool that will help us later!
|
|
Thanks Bill for figuring out what the problem was.
|
|
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
|
|
Idiotic problems require idiotic solutions.
|
|
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.
|
|
- 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")
|
|
Default gamedata values actually work the way they're supposed to now.
|
|
|
|
|
|
With code from Bill. Thanks Bill!
|