Browse Source

Change to adapt to repositiry change

develop
Anton Tarasenko 2 years ago
parent
commit
f61bca099d
  1. 71
      CHANGELOG.md
  2. 82
      README.md
  3. 2
      config/Acedia.ini
  4. 2
      config/AcediaGameModes.ini
  5. 2
      config/AcediaLauncher.ini
  6. 6
      sources/Packages.uc

71
CHANGELOG.md

@ -1,71 +0,0 @@
# Change log
Acedia's versioning is as follows: `X.Y.Z`, where
* `X` is a major version, will be increased to 1 when most of planned features are implements. Further increases aren't planned, but are possible should Acedia change in a significant enough way.
* `Y` is a minor version, increased with every public release that adds some new functionality.
* `Z` is a bug fix versioning, increased after fixing bugs in a corresponding public release.
For development release following notation will be used: `X.Y.devZ`. The only change is that `Z` is now also increases as functionality for the next version is getting implemented.
## Version 0.1 `Bug crusher`
*Release date: 19.02.2020*
This release is focused on fixing most critical and well-known exploits, related to crashes, infinite ammo generation, clear breaking of game mechanics such as infinite inventory.
All fixes are able to function without breaking whitelisted status of the server.
A couple of feature planned for this version were moved to a later date because:
1. They weren't considered critical issues, which is the main focus of this version.
2. Some other features have proved to be more trouble than expected, already delaying the release.
### [NEW] Fix for pistols cost issues
A feature that fixes several issues, related to the selling price of both single and dual pistols, all originating from the existence of dual weapons. Most notable issue is the ability to "print" money by buying and selling pistols in a certain way.
### [NEW] Fix for printing dosh with ammo selling
This feature addresses an oversight in vanilla code, that allows clients to sell ammunition. Moreover, when being sold, ammunition cost is always multiplied by 0.75, without taking into an account possible discount a player might have. This allows cheaters to "print money" by buying and selling ammo over and over again for some weapons, notably pipe bombs (74% discount for lvl6 demolition) and crossbow (42% discount for lvl6 sharpshooter).
### [NEW] Fix for inventory abuse
This feature addressed two inventory issues:
1. Players carrying amount of weapons that shouldn't be allowed by the weight limit.
2. Players carrying two variants of the same gun. For example carrying both M32 and camo M32. Single and dual version of the same weapon are also considered the same type of gun, so you shouldn't be able to carry both MK23 and dual MK23 or dual handcannons and golden handcannon. But cheaters do. But not with this fix.
### [NEW] Fix for infinite grenades exploit
This feature fixes a vulnerability in a code of `Frag` that can allow player to throw grenades even when he no longer has any. There's also no cooldowns on the throw, which can allow a player to even crash the server.
### [NEW] Fix for dosh spam
This feature addressed two dosh-related issues:
1. Crashing servers by spamming `CashPickup` actors with `TossCash`;
2. Breaking collision detection logic by stacking large amount of `CashPickup` actors in one place, which allows one to either reach unintended locations or even instantly kill zeds.
Unlike ServerPerk's method we dynamically limit the speed at which players can throw the dosh, making it, in most circumstances, unnoticeable for players that this fix even runs at all.
### [NEW] Fix for spectator-related crashes
This feature attempts to prevent server crashes caused by someone quickly switching between being spectator and an active player.
### [NEW] Fix for friendly fire hack
This feature fixes a bug that can allow players to bypass server's friendly fire limitations and teamkill. Usual fixes apply friendly fire scale to suspicious damage themselves, which also disables some of the environmental damage. In order to avoid that, this fix allows server owner to define precisely to what damage types to apply the friendly fire scaling. It should be all damage types related to projectiles.
### [NEW] Fix for zed time lags
When zed time activates, game speed is immediately set to `zedTimeSlomoScale` (0.2 by default), defined, like all other variables, in `KFGameType`. Zed time lasts `zedTimeDuration` seconds (3.0 by default), but during last `zedTimeDuration * 0.166` seconds (by default 0.498) it starts to speed back up, causing game speed to update every tick.
This makes animations look more smooth when exiting zed-time; however, updating speed every tick for that purpose seems like an overkill and, combined with things like increased tick rate, certain maps and raised zed limit, it can lead to noticeable lags at the end of zed time.
To fix this issue we disable `Tick` event in `KFGameType` and then repeat that functionality in our own `Tick` event, but only perform game speed updates occasionally, to make sure that overall amount of updates won't go over a limit, that can be configured via `maxGameSpeedUpdatesAmount`.
Our tests (looking really hard on clots' animations) seem to suggest that there shouldn't be much visible difference if we limit game speed updates to about 2 or 3.
### [NEW] Connection service
Connection service tracks players connecting and disconnecting from the server. Service is lightweight and doesn't have to go through the full controller list to check for new players, relying instead on detecting when `KFSteamStatsAndAchievements` is spawned.

82
README.md

@ -1,12 +1,78 @@
# Acedia # AcediaLauncher 0.1
`Acedia` is a mod for the game `Killing Floor` that aims to provide powerful means to configure and customize every aspect of gameplay, while affecting game as little as possible for the chosen changes. Ideally, when server admin disables every single feature of `Acedia` it would do nothing at all. This is a launcher for packages that rely on AcediaCore and use its `Feature`
class instead of the `Mutator` to enable provided functionality.
The project is in it's early stage and right now is focused on fixing a baggage of bugs and exploits that base `Killing Floor` game has. Currently it functions as a server-side only mutator that doesn't break server's whitelist status.
## Installation ## Installation
1. Drop `Acedia` files into `System\` directory of your server. 0. Requires
2. Add `Acedia.StartUp` to the list of server actors in your `KillingFloor.ini`. [Voting Handler Fix v2](https://forums.tripwireinteractive.com/index.php?threads/mod-voting-handler-fix.43202/)
**Do not** manually add `Acedia.Acedia` mutator. installed.
3. [Optionally] Pick which features to use by changing `autoEnabled` setting for each of them. 1. Drop `AcediaLauncher` files into `System\` directory of your server;
2. Add `AcediaLauncher.StartUp` to the list of server actors in your
`KillingFloor.ini`.
**Do not** manually add `AcediaLauncher.Packages` mutator;
3. [Legacy] If you were using Acedia 0.1 - remove `Acedia.StartUp`.
## Adding packages
To add any Acedia's package, edit `AcediaLauncher.ini` file to add it into
available packages list, e.g.
```ini
[AcediaLauncher.Packages]
useGameModes=false
package="AcediaFixes"
```
Then use that package's config files to choose what `Feature`s to enable
by setting their `autoEnable` setting to `true`.
## [Optional] Game modes
By default AcediaLauncher only auto-starts selected Acedia `Feature`s.
But it also provides a more advanced functionality for configuring voting
options for *Voting Handler Fix v2* mutator.
There is no detailed documentation for this yet, however Acedia's game modes
can be configured in a rather self-descriptive way in `AcediaGameModes.ini`:
```ini
[hard GameMode]
title=1. {$green Hard difficulty}
acronym={$green hard}
difficulty=hard
length=medium
[lawless GameMode]
title=2. {$hotpink No fixes! Anarchy!}
acronym={$red:$blue anarchy}
difficulty=hoe
length=short
includeMutator="AdminPlus_v4.MutAdminPlus"
excludeFeature="AcediaFixes.FixZedTimeLags_Feature"
excludeFeature="AcediaFixes.FixDoshSpam_Feature"
excludeFeature="AcediaFixes.FixDoshSpam_Feature"
excludeFeature="AcediaFixes.FixFFHack_Feature"
excludeFeature="AcediaFixes.FixInfiniteNades_Feature"
excludeFeature="AcediaFixes.FixAmmoSelling_Feature"
excludeFeature="AcediaFixes.FixSpectatorCrash_Feature"
excludeFeature="AcediaFixes.FixDualiesCost_Feature"
excludeFeature="AcediaFixes.FixInventoryAbuse_Feature"
excludeFeature="AcediaFixes.FixProjectileFF_Feature"
excludeFeature="AcediaFixes.FixPipes_Feature"
excludeFeature="AcediaFixes.FixLogSpam_Feature"
excludeFeature="AcediaFixes.Futility_Feature"
excludeFeature="AcediaFixes.FixZedTimeLags_Feature"
[hell GameMode]
title=3. {$crimson Hell On Earth}
acronym={$crimson hoe}
difficulty=hoe
length=long
```
To enable game modes, set `useGameModes=true` in `AcediaLauncher.ini`.
AcediaLauncher relies on *Voting Handler Fix v2* to actually add these options
and will automatically alter its config, so you *don't need to manually change*
`KFMapVote.ini`.

2
config/Acedia.ini

@ -1,2 +0,0 @@
[Acedia.Packages]
useGameModes=false

2
config/AcediaGameModes.ini

@ -1,6 +1,6 @@
[hard GameMode] [hard GameMode]
title={$green Hard difficulty} title={$green Hard difficulty}
difficulty=normal difficulty=hard
[hell GameMode] [hell GameMode]
title={$crimson Hell On Earth} title={$crimson Hell On Earth}

2
config/AcediaLauncher.ini

@ -0,0 +1,2 @@
[AcediaLauncher.Packages]
useGameModes=false

6
sources/Packages.uc

@ -20,14 +20,14 @@
* along with Acedia. If not, see <https://www.gnu.org/licenses/>. * along with Acedia. If not, see <https://www.gnu.org/licenses/>.
*/ */
class Packages extends Mutator class Packages extends Mutator
config(Acedia); config(AcediaLauncher);
// Acedia's reference to a `Global` object. // Acedia's reference to a `Global` object.
var private Global _; var private Global _;
var private ServerGlobal _server; var private ServerGlobal _server;
var private ClientGlobal _client; var private ClientGlobal _client;
// Load Acedia on the client as well? // Load Acedia on the client as well? DON NOT TOUCH THIS
var private config bool clientside; var private config bool clientside;
// Array of predefined services that must be started along with Acedia mutator. // Array of predefined services that must be started along with Acedia mutator.
var private config array<string> package; var private config array<string> package;
@ -74,7 +74,7 @@ private function InitializeServer()
local array<FeatureConfigPair> availableFeatures; local array<FeatureConfigPair> availableFeatures;
if (clientside) { if (clientside) {
AddToPackageMap("Acedia"); AddToPackageMap("AcediaLauncher");
} }
CheckForGarbage(); CheckForGarbage();
// Launch and setup core Acedia // Launch and setup core Acedia

Loading…
Cancel
Save