Killing Floor 2

Killing Floor 2

Controlled Difficulty
blackout  [developer] Feb 4, 2017 @ 4:27pm
Released build 59c61682 (2017-02-05)
KF2 v1050 compatible

KF2 v1050 slightly altered the spawning algorithm. When a squad is only able to partially spawn (due to MaxMonsters), the remainder of the squad elements are placed into LeftoverSpawnSquad. LSS has been in the game for ages. The change in v1050 is that the spawn manager now prioritizes spawning LSS elements over all other spawn activities. Whenever there is at least one element in LSS, the game now spawns as many LSS elements as possible, and no more. This differs from past behavior, where LSS elements could be combined with other squads, insofar as MaxMonsters permitted. This new v1050 behavior may make spawns slower overall, continuing a trend from the v104x series. I've adopted it into CD, in an attempt to keep CD at least remotely comparable to the base game.

SpawnCycle support for double-bladed gorefasts

The double-bladed gorefasts can now be specified in SpawnCycleDefs. They are denoted the same way as an ordinary gorefast, except with a trailing asterisk (*).

For example, this squad would have one regular gorefast and one double-bladed gorefast:

1GF_1GF*

SpawnCycle support for albino crawlers and alphas remains unchanged in this release.

New option: AlbinoGorefasts

This boolean option controls whether albino gorefasts spawn. Set it to true to permit them to spawn as usual, or false to convert them into regular gorefasts.

New Option: WeaponTimeout

The time until dropped weapons disappear is now customizable. Set the WeaponTimeout option to the number of seconds you want dropped weapons to remain before disappearing. Set this to "max" if you want weapons to remain indefinitely (technically this sets the timeout to 2^31 - 1 seconds, or just over 68 years). Set this to a negative number to use TWI's unmodded weapon timeout, which currently happens to be 5 minutes. That last option is the default.

AlbinoAlphas/AlbinoCrawlers/AlbinoGorfasts options now affect SpawnCyles

Before this release, AlbinoAlphas and AlbinoCrawlers did not affect SpawnCycles. This meant that a SpawnCycle containing an albino crawler would still spawn them even when AlbinoCrawlers=false was set.

This release added the AlbinoGorefasts option, but it also changed the behavior of all of the AlbinoAlphas/Crawlers/Gorefasts options. These options now affect SpawnCycles. They all function as "opt-outs" now.

Setting one of these options to false now converts all affected albino zeds into their non-albino equivalents, regardless of whether a SpawnCycle is in use.

Setting one of these options to true does not convert all affected non-albino zeds into their albino equivalents. It just lets the SpawnCycle or random spawner mix albinos and non-albinos in whatever proportion it normally would. If a SpawnCycle is in use, then this means an albino spawns wherever the SpawnCycle author put an * suffix on a zed. If a SpawnCycle is not in use, then TWI's builtin albino spawn-probabilities to proc randomly, just like they do in the unmodded game.

If a SpawnCycle does not specify an albino zed using * mark, then there is no combination of options to make that SpawnCycle spawn albinos. All existing SpawnCycle presets have no double-bladed gorefasts, and there is no way to make double-bladed gorefasts start spawning in those presets. The only way is to make a new preset. I'm not sure whether I'm satisfied with that in the long term. I'm just describing the current behavior.

The overall point of this change is to avoid needing a whole bunch of variants of every SpawnCycle preset to satisfy different people's preferences about albino zeds. New SpawnCycle presets can just specify all kinds of albinos, and players who don't want to deal with a specific albino type can disable that type selectively, without needing a new or different preset.

Chat commands

This is a first step towards making CD on multiplayer servers less awful. The following commands are supported:

!cdalbinoalphas: Display AlbinoAlphas setting
!cdalbinocrawlers: Display AlbinoCrawlers setting
!cdalbinogorefasts: Display AlbinoGorefasts setting
!cdboss: Display Boss override
!cdfakeplayers: Display FakePlayers count
!cdinfo: Display summary of major CD options
!cdinfo full: Display all CD options
!cdmaxmonsters: Display MaxMonsters count
!cdspawncycle: Display SpawnCycle name
!cdspawnmod: Display SpawnMod value
!cdtradertime: Display TraderTime in seconds
!cdversion: Display mod version
!cdweapontimeout: Display WeaponTimeout in seconds
!cdpausetrader (!cdpt) / !cdunpausetrader (!cdupt): Pause / unpause trader time

All of these commands except !cdtradertime, !cdversion, and the (un)pause commands take an optional argument. If no argument is given, the command just prints out the current configuration. If an argument is given, the configuration will be changed. Changes apply immediately during trader time or warmup, but if a wave is in progress, then changes are postponed to trader time.

In solo mode, all commands, including those that modify the configuration, are enabled.

In server mode, only the read commands are enabled by default. New config options can authorize specific users for other commands using a steamid whitelist. There's also an option to enable all commands for everybody in server mode (which might be useful if you have a passworded friends-only server where everyone is trusted).

Here's a config snippet illustrating the new commands:

[ControlledDifficulty.CD_Survival] DefaultAuthLevel=CDAUTH_READ AuthorizedUsers=(SteamID="STEAM_0:0:3691909",Comment="blackout") AuthorizedUsers=(SteamID="STEAM_0:0:11101",Comment="gabe newell")

The AuthorizedUsers line may appear as many times as needed. Each line specifies one steamid (which can be found with a tool like http://steamidfinder.com/) and an arbitrary comment. The comment field can be any text you want. It's just there to make the list somewhat maintainable.

When DefaultAuthLevel=CDAUTH_READ, only users whose steamids appear in AuthorizedUsers may run chat commands that modify CD's configuration in server mode. When DefaultAuthLevel=CDAUTH_WRITE, anyone may run any chat command in server mode. DefaultAuthLevel=CDAUTH_WRITE effectively makes AuthorizedUsers superfluous.

The !cdpausetrader command and its shorthand, !cdpt, can be used at any point during the trader time in solo. On a server, these commands can only be used with 5 seconds remaining on the trader timer. This is a workaround for a nasty distributed state transition bug that could otherwise cause the server to become stuck indefinitely in trader time (if it was allowed to pause with <5 sec). Thanks to Mike for discovering this during the public beta.

Added Nam's PRO SpawnCycle v2

This is now already out of date, since Nam sent it to me back in December and then the beta dropped, so it does not include double-bladed gorefasts. It's not his fault it's so old -- I held it up initially because of the TWI beta, and then it took me a couple of weeks to catch up after v1050 came out. Looking forward to a Nam PRO v3 preset, hopefully I can publish it faster now :)

This changelog was originally associated with 982a4d87 (2017-02-04). That release had a bug that caused WeaponTimeout to default to 5 seconds. I then built 59c61682 to fix the bug and updated the title of this discussion.
Last edited by blackout; Feb 9, 2017 @ 10:46pm
< >
Showing 1-9 of 9 comments
Nam Feb 4, 2017 @ 10:10pm 
Thx update!
Leenker Feb 5, 2017 @ 1:12am 
Hmm.. Nam's SpawnCycle2, so what preset's name is it ?
blackout  [developer] Feb 5, 2017 @ 1:56am 
nam_pro_v2

Type CDSpawnPresets in console to get a list of all known presets (including that one)
Leenker Feb 5, 2017 @ 2:11am 
Thanks Blackout, i will contribute my own spawncycle on next version for you (y)
blackout  [developer] Feb 5, 2017 @ 2:21am 
the more the merrier
eXtonix Feb 5, 2017 @ 5:59am 
Nice!
t.gaze Feb 5, 2017 @ 5:20pm 
Great work!
Leenker Apr 8, 2017 @ 1:25pm 
Why i can use !cd command ? I logged in as admin but it doesn't change
blackout  [developer] Apr 10, 2017 @ 11:11am 
!cd chat commands don't use the unreal/kf2 adminlogin system. If you're playing in standalone mode, then !cd chat commands should be unconditionally authorized (nothing can prevent you from using them). If you're playing on a server, then CD checks DefaultAuthLevel and AuthorizedUsers as described in my post above -- as long as DAL is set to write and AU includes your steamid, you should be able to run commands. If you're still having trouble, try pasting the CD part of your server's ini file.
< >
Showing 1-9 of 9 comments
Per page: 1530 50