I’ve been big into Darktide for a long time, with my favorite part by far being the weapon and melee combat systems that have always captivated me. And in that spirit, I make this post today. It’s gonna be a long one, and I hope it’s useful, or at least interesting, for the folks reading it.
First, a brief background. In the semi-recent past, I delved ever more greedily and deepily into how weapons work, until I eventually made and released a mod that allows for customization and finetuning of various weapons in solo instances. It’s known as Enginseer’s Workshop , and with it I’ve been able to do a whole bunch of crazy things. For example, I was able to tweak the Rumbler to make it a slug thrower instead, as you can see here:
Over the course of my adventures, I’ve experimented with a whole bunch of stuff related to Darktide’s weapons and systems, and a couple of those experiments I feel would genuinely be good fits for the core game, either as updates/replacements to the existing weapons or maybe just as an entirely new mark. I’ve mentioned a couple of them over the last few days, but collating it all in its own thread would probably be a good idea, and since I like thinking and talking about this stuff, I figured I’d do just that. So without further ado, lets get into it.
Ogryn Ripperguns.
These things are beastly weapons, perfectly fitting for the ogryn fantasy, but they feel so very bad to use. A friend of mine mentioned that they’d feel so much better with a faster recoil reset, and I decided to try it. I also gave the mkII a bit of close range damage, to push it more firmly into its role and so it would feel more satisfying to shoot up close.
In practice, what that ended up doing is making the rippers just as wild and eager when trying to magdump, but pacing your bursts allows for much more accurate fire. The way I like to think of it is that when you lay into the trigger it’s like the ogryn gets so absorbed in the joy of firing that he stops trying to control the weapon, but if you pace yourself, he belatedly remembers he’s supposed to be on the clock and refocus his attention on keeping the gun under control. I really enjoy the way this feels.
You can see the results here:
MkII Rippergun
Specific changes:
- Add just under 1 meter to min range (6-15[13.2 @ 80% range] becomes 6-16[14 @ 80% range])
- Increase base damage by ~15% (350-700[630 @ 80% damage] becomes 450-780[714 @ 80% damage])
- Cleave increased from double_cleave to light_cleave (3 to 4.5)
- Reduce far damage by 20% (far ADMs go from 0.25-0.3 down to 0.2 across the board)
- Improve specifically the hipfire recoil profile
- Add decay_grace=0.1
- Double idle recoil reset speed (0.5-1[0.9 @ 80% stability] becomes 1-2[1.8 @ 80% stability])
MkV Rippergun
Specific changes:
- Improve specifically the hipfire recoil profile
- Add decay_grace=0.15
- Increase idle recoil reset speed (05-1[0.9 @ 80% stability] becomes 2-4[3.6 @ 80% stability])
Inferno Flame Staff
The Inferno Flame Staff has been a balance nightmare in Darktide for ages, and it’s got something of a fundamental design paradox baked into it. Just by the nature of how both the game and the flame staff work, the staff is either going to be completely useless, or psychotically oppressive, with no real middle ground. It’s an infinite cleave weapon that does significant damage and spreads dots over a wide area, which means it scales exponentially with increased density, while every weapon with limited cleave is forced instead to scale logarithmically. So I wanted to see if I could redesign the weapon in such a way as to remove this dichotomy; if I could make the Inferno Flame Staff scale logarithmically along with most other weapons so it could be merely “very good” rather than “overwhelmingly dominant” or “terrible”.
To that end, I determined that the way it works under the hood, while channeling fire the staff sends out a pulse in a frontal cone 60 times every second, and every 0.3s, every target hit by at least one pulse is given a burn stack, while every target hit by at least 33% of all pulses is also dealt ramping impact damage from the staff.
And so I went in and capped any given pulse to only count the first 6 targets hit, instead of everything. This still allows for significant cleave, with potentially as many as 114 targets per damage event, depending on what you aim at and how enemies move, but establishes a firm cap on the number of targets, while also meaning the enemies in front are generally going to be taking damage before the enemies behind them.
The second thing I did was increase the impact damage pulse counter from 33% to 66%, which significantly reduces impact damage dealt by the staff to any given target and requires the user to be actively aiming at priority targets if you want to burn them down.
All together, I feel like the result is an Inferno Flame Staff that remains extremely good at clearing out chaff and hordes, especially at lower volumes, but it now also has a weakness against large heavy targets and cannot exponentionally scale into the stratosphere. I feel it’s a much healthier place for the weapon to be for the game as a whole. You can see the result here:
Inferno Flame Staff
Specific changes:
- Increase required aim_at_perfect in ActionFlamerGas._damage_targets to 0.66
- Add a cap of 6 targets hit in _acquire_targets per ActionFlamerGas.fixed_update
- Add a cap of 12 targets hit in _acquire_targets per ActionFlamerGasBurst._shoot
MkIV Chain Sword
The Chain Swords are in a weird spot currently where they just sort of exist. It’s great thematically, and it’s iconic to 40k, but as weapons they’re just not very interesting and aren’t good enough at anything to really be worth taking. And I felt that was a shame, because I love chain weapons and I want this thing to be amazing.
So I went and made my own.
After some experimenting, what I ended up doing was overhauling the weapon’s special entirely, and then tweaking damage and cleave numbers to accomodate that. The new special is no longer revving the weapon to make your next attack latch onto an enemy for a burst of bonus damage. It is now all of your attacks activate and latch onto an enemy until you turn the special off.
If I’d just left it there, that would have just been a chainaxe though, and we’ve already got chainaxes, so it had to change more. The chain sword is the light, agile version of the chain weapons, so I decided to lean into that. With this, while the special is active, attacks will cleave until the attack can cleave no longer, or until it hits an elite. At that point, a brief latch will occur, but it will not steal the camera or slow your movement, it’s simply a brief delay dealing damage to that latched target, before you can ready your next attack.
In practice, this has made the chainsword into an excellent mixed horde clearing tool. In its base, unactivated form, it’s a solid weapon into light targets that struggles with armor, and when activated, it gains the ability to pick out priority targets from within a crowd of chaff and focus meaningful damage into them while still fighting the horde. I find the way it plays extremely satisfying.
Specific changes:
- Template weapon_special_class to WeaponSpecialActivateToggle
- Template weapon_special_tweak_data updated to manual toggle config
- Add maximum_sticky_sensitivity value to hit_stickyness_settings to replace the hardcoded 0.75 in ActionSweep.sensitivity_modifier
- Add disallow_camera_capture boolean to hit_stickyness_settings to be checked in HumanGameplay._player_orientation_class, to determine returning self._default_player_orientation or self._smooth_force_view_player_orientation
- Light attack hit stickiness updated
- rip damage decreased to 240-400
- duration to 0.3
- min_sticky_time to 0.1
- damage.instances to 1
- sensitivity_modifier to 1
- maximum_sticky_sensitivity to 1
- disallow_camera_capture to true
- movement_curve to flat 1
- Damage ADM adjusted to:
- unarmored - 0.8
- flak - 1.1
- unyielding - 1.25
- maniac - 0.8
- carapace - 1.1
- infested - 0.8
- Heavy vanguard attack hit stickiness updated
- rip damage decreased to 275-450
- duration to 0.3
- min_sticky_time to 0.1
- damage.instances to 1
- sensitivity_modifier to 1
- maximum_sticky_sensitivity to 1
- disallow_camera_capture to true
- movement_curve to flat 1
- Damage ADM adjusted to:
- unarmored - 0.8
- flak - 1.1
- unyielding - 1.25
- maniac - 0.8
- carapace - 1.1
- infested - 0.8
- Pushfollow attack hit stickiness updated
- rip damage increased to 600-900
- duration to 0.5
- min_sticky_time to 0.2
- sensitivity_modifier to 1
- maximum_sticky_sensitivity to 1
- Damage ADM adjusted to:
- maniac - 1.2
- Heavy strikedown hit stickiness updated
- tick damage decreased to 125-350
- rip damage increased to 685-1360
- Damage ADM adjusted to:
- unarmored - 0.8
- flak - 1.1
- unyielding - 1.25
- maniac - 0.8
- carapace - 1.1
- infested - 0.8
- Special active attacks updated
- Light attack cleave increased to 3
- Heavy vanguard attack cleave increased to 6.5
And that’s everything I’ve got for now. Hopefully this was an interesting or fun read if you made it this far. I’m not gonna claim any of my specific numbers are authoritatively correct here; I think they are at least in the ballpark, but I do not have any sort of real playtesting setup available and can only really go on my own gut feelings and vibe checks from running things past other people. I just really like this stuff and thought it would be fun to share the bits that I think would properly fit into the game.