Reverts the jamming system, replaces it with a single saved acid attack.
About the pull request
Reverts the jamming system #8682 , and the peripheral PRs afterwards #9030 , #9074 , #9073 , #9028
Guns now have a "Second wind" that can be seen in their examine.
Spraying an acided gun with an extinguisher will extinguish the acid.
Allowing the acid to finish on the weapon will remove it's "Second wind" and play a click noise.
Once the weapon has lost its "Second wind" it can no longer have future acid sprayed off of it.
"Second wind" applies to explosions from minor to moderate severity, and is only consumed if the weapon would have otherwise been destroyed by the explosion.
Explain why it's good for the game
The jamming PR sought to remove some of the unfun gameplay elements of having your weapon destroyed because a xeno stood next to it for ~1 second, being irrecoverably trashed. It intended to add depth to the marine side by making your gun something you had to take care of beyond an arbitrary "works perfectly" or "is qdeleted" The general goal was to add a tense interruption to gameplay as a punishment for not taking care of your weapon that was dramatic, but not tedious.
I still believe those are good goals to look after, and that the PR was a good attempt at solving them, but I also believe it had some issues that are so fundamental as to demand a full rewrite before reimplementation.
- The change made weapons too difficult to attrition
Weapon attrition is a big part of xeno attrition and one of the tasks acid carrying castes perform on the front line, the lowered marine weapon attrition reduced the value of these already somewhat weak castes, and made replacement weapons/attachments/etc a somewhat nonissue.
- The change made dropping your weapon too inconsequential.
While it is definitely un-fun to lose your weapon because you were knocked away from it for a moment, especially considering the prevalence of stuns and flings, the current iteration makes it too easy to not care about your weapon, this meant you could run with your weapon ready at all times, and without a harness, or anywhere to holster it, with very minimal concern as to whether it will be destroyed.
- The jamming mechanic was confusing to players.
The process of maintaining a weapon, what could damage a weapon, why a weapon would jam and at what durability was confusing and frustrating to players, examining a weapon and being told it was "fine" durability and then having it jam and get the user killed was intensely bothersome. Un-jamming a weapon was similarly unsatisfying, due to the RNG elements, which meant that sometimes it could take an unfair amount of attempts to un-jam a weapon before it would fire again. Rather than creating a panic in the tempo of combat it just created frustration or confusion at lost opportunity for players.
- The durability system was obtuse and un-engaging to interact with for players.
It was not always clear when a weapon had become damaged, why, or to what extent. A weapon that read as "fine" on its description could be nigh unusable depending on a combination of other factors/variables hidden to the user. Due to inconsistent implementation this affected some weapons much more harshly than others, which hardly ever even saw jams and barely interacted with the system, leading to a perception of "jank" Similarly, repairing a weapon wasn't engaging and ended up being a matter of standing still for ~20 seconds, even with the cooperation of a teammate with engineering skill, which was intensely uninteresting and didn't add to the feeling of maintaining a weapon. The quicker, lesser option in gun oil was so ineffective as to be similarly unsatisfying, or frustrating when after application the weapon still did not function.
- The code for the system is substandard and hard to read.
The code for the jamming system was based on the work of another coder from a time with different standards and tools available, and was a learning project both for the PR creator and myself as a reviewer. In the process of testing, reviewing, rereading, and suggesting changes to the PR I became somewhat blind to some of the issues in structure it had. While the code is mostly up to the literal standards of the codebase, it is implemented in a manner that makes maintaining it and changing it highly unintuitive, to the point it warrants a reversion, and a rewrite to use signals and the datum component system when/if re-implemented.
Screenshots & Videos
Changelog
:cl: del: Reverts the jamming system add: Guns now have a "Second wind" that can be seen in their examine. add: Spraying an acided gun with an extinguisher will extinguish the acid. balance: Allowing the acid to finish on the weapon will remove it's "Second wind" and play a click noise. balance: Once the weapon has lost its "Second wind" it can no longer have future acid sprayed off of it. add: "Second wind" applies to explosions from minor to moderate severity, and is only consumed if the weapon would have otherwise been destroyed by the explosion. /:cl:
- [x] todo: add extinguisher req to the second wind
- [x] todo: save can prevent minor explosions from destroying wep
I would just make it take longer than 1 second to melt a gun so that it can't be done in the literal middle of combat.
3-5 second windup on guns and it goes from ridiculous to reasonable - something you do to weapons left behind by a bad push or after your side takes ground - not something you do because a marine was pounced and you can acid his gun faster than he can get up and walk 2 tiles (absurd).
Should just test merge a 5 second windup - does that feel good to play with? Adjust a second or two (or not at all) in whichever direction feels right accordingly.
As for the gun durability PR - I am very happy to see that go. It wasn't all bad, there were some great things like being able to put a round into the chamber by hand, but the durability and jamming mechanic... not a fan. I'd really just like to see more firearm autism that's cosmetic/fun in nature, not a game mechanic outright - something like clicking a gun with an allen key and stripping it down into its parts where it was placed, so you can clean them with gun oil individually and then reassemble in the right order to put it back together, all for no gameplay benefit for no gameplay reason. Purely aesthetic and roleplay. I think something like that would be well received so long as its just an optional fun thing you can do.
1 step forward, 2 steps back
Does this mean my guns can be destroyed by friendlies blowing shit up near me again? Please… please don’t make my HPR explodable again… please…. The durability system allows me to counter xeno agent griefers with a weapon that takes more to blow up and some repair kits. It would be nice to salvage some of that.
The most important question is if that PR makes explosions still delete guns randomly, like it was before jamming system PR? Because that was purely marine anti-F and anti-frustration feature that no xeno ever interacted with, because they can cause no explosions other than very occasional welderbombing.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
Conflicts have been resolved. A maintainer will review the pull request shortly.
This PR has been inactive for long enough to be automatically marked as stale. This means it is at risk of being auto closed in ~ 7 days, please address any outstanding review items and ensure your PR is finished, if these are all true and you are auto-staled anyway, you need to actively ask maintainers if your PR will be merged. Once you have done any of the previous actions then you should request a maintainer remove the stale label on your PR, to reset the stale timer. If you feel no maintainer will respond in that time, you may wish to close this PR youself, while you seek maintainer comment, as you will then be able to reopen the PR yourself
Stale exempt until I or someone can test it out.
Still needs weapons to not move away from their acid location and them to not be able to be picked up
behavior for that is in this PR; https://github.com/cmss13-devs/cmss13/pull/9256
