-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gas mask functionality update #72925
Conversation
Could hardcoded actions be replaced by item transforms here? If I recall correctly, pockets are migrated per transform, so the filter should still be where it's supposed to be, intact and with the expected amount of charges left. |
Issue is not that the item transforms, it's that while it does indeed transforms at the end of the GASMASK_ACTIVATE before that it does some calculations on the average environmental resistance of other items you're wearing. I may unhardcode this in a later PR (or in this one if there's a demand) but for now we may want to keep this behavior. |
I could be wrong, but I don't think this is how gas masks actually work. IRL I've never had to use one, but my understanding is that a gas mask has a filter cartridge which is sealed. To prepare it, you permanently unseal the filter. You cannot re-seal it, and the filter continually degrades from the time it is open, and should be thrown out after a while regardless of whether you encountered any hazardous gas or particulates because the chemical filters degrade and the mechanical ones get clogged by tiny dust particles. I don't think standard gas masks have valves to allow for normal, unfiltered breathing. Neither can you just nudge them aside, they're designed to fit very securely to the face and have to be taken off. You could possibly hang it from your neck, but this would take about as long as actually removing it. A better implementation of gas masks would be to make them simply tick down slowly at all times while activated, and more quickly when they filter harmful gases. There shouldn't be an easy way to simply toggle the breathing pipe. Gas masks could also use a PAPR system, which is a battery-powered air pump that creates positive pressure and makes breathing through a gas or PBA mask almost as easy as breathing without one. These are standard for firefighters and soldiers, and really should be included in the game. |
Speaking as somebody who has a hand in collecting and researching this type of equipment, I agree with everything said here. To my knowledge, no gas mask has the option to switch breathing from a valve with a filter attached to one with nothing screwed in. Indeed, some masks, like the US M50, actively seal off the valves when you take the filters off so you don’t’ accidentally breathe in contaminants while doing a filter swap. The capability to turn off your gas mask is a feature that has no utility within respirators, as the very same effect can be achieved by simply removing the face mask. The closest you could come to stopping breathing through the filter is breaking the seal around the face. I often do this when I’m reenacting chemical warfare troops in full NBC kit and want some easier airflow. This being said, as Ferry Armadillo points out, once a filter is removed from either its airtight packaging or its blanking plugs, it will start expiring as it filters regular air and whatever is in it. Depending on the air quality and the type of filter, it may take a long time to fully deplete your canister. |
That's excellent feedback. This leaves me with a few questions as to what the implementation should be though:
|
I doubt there's a simple alternative - the current implementation is sort of nonsensical and someone probably would have brought it up to date if it wasn't a big project. As we've seen with duct tape, making stuff into ammo makes it kind of obnoxious to mess with. It might be possible to change gas masks to have a pocket for a filter. You'd then insert a filter into the pocket and activate the filter to unseal it. It might also be possible to give the activated filter a timer akin to what food uses. Then you'd just have to change the code for smoke/gas absorption to advance that timer. None of that is simple but that would be where I'd begin if I were working on it. A PAPR system would then be a separate item that could maybe reduce encumbrance from a worn and flagged mask while the PAPR was worn and active. I'm a little murky on how that would work, or if it's possible to apply negative encumbrance in a way that would work with a variety of masks. One big issue with masks in the game is that taking them off or putting them on takes several seconds, which you obviously can't do in combat, and it would make interacting with the constant gas/smoke stuff really annoying. Given that the enemies that produce these threats often die within seconds of appearing on the screen, I feel like more realistic masks would highlight that there's a mismatch between how the enemies are treated by the game as common throwaways and the amount of faff required to realistically prep and don a mask. That's not directly relevant to updating masks, but it would become an issue once that project was done, I think. |
Noted, that's also a direction I was considering for gas masks. As for PAPRs I coincidentally am also working on it but I wanted to update gas masks themselves before fully committing to another item which is just an elaborate version of what I'm working on here. |
I think encumbrance values should not be changed until PAPRs are implemented, as that could make masks extremely punishing with no way to get around their negative effects despite such a method being common irl. Plus if something stalls out the PAPR implementation, they could be stuck in an unusable state for quite a while. |
I agree with the sentiment that encumbrance numbers shouldn’t be touched until the more fundamental issues are hammered out, not least of which for the issue that we have no metric for calculating that x amount of encumbrance means y in the real world. Some gas masks are better to breathe through than others, and without a filter screwed in, you have an unobstructed passage leading to the outside world, though it’s still quite encumbering. I was wearing a respirator for a span of a few minutes while partaking in elevated physical activity: running, lugging around heavy objects, climbing and dismounting stares, etc., and while not completely debilitated, I was a mess with a filter connected; the inside of the mask was basically completely fogged over, and unscrewing said filter helped to dull the experience considerably, but not too much. For reference, though, this was a roughly 30-degree day, so take that as you will. |
I agree but you can't be successful without a mask from the mid to late game unless you're poison immune or a cyborg, and wearing a mask all the time is pretty painful when it comes to stamina recovery. My suggestion for addressing this would be to sharply decrease the spawn rate/random evolution of poison/gas enemies in the general population and make them more concentrated in specific types of areas. This is already how the collapsed tower, fungal fields, and mines work, and it feels pretty reasonable there. Suggestions off the top of my head would include mass graves and fire-damaged areas for smokers (burnt and partially variants of existing buildings could be added to suggest that something cataclysm-y had happened there prior to the player's arrival), and sewers, graveyards, morgues, subway tunnels, and hospitals for bloated zombies. Because some of these places occur in cities, you'd still occasionally get the gas-emitting zombies joining regular packs in the vicinity, but there would be some give and take, and players who were diligent about scouting could have a chance to realize they'd want to prep for a hazardous environment. This could also allow gas to be buffed to be more dangerous without feeling constant and oppressive, as if you're not using the tools at your disposal to notice that there's a hospital across the street and you get ambushed by a bloater, that's at least partially your own fault.
Pockets in this game aren't always literally pockets. A magazine well in a gun is a pocket, for instance. The "pocket" would just be the threaded part that the filter screws into, and would not be able to hold anything else. |
I agree that the solution would be to limit toxic or contaminant-producing enemies to certain locations. It would make it more interesting to create locations where wearing NBC equipment would be of utility but would then naturally inhibit how much other, useful equipment you could pack along. Currently, this sort of equipment has no utility in the base game, outside of the collapsed tower and the radioactive NPP (if it’s still a hot zone, I forget), as you can never tell when you might encounter such enemies and have no time to prep.
Perhaps I was a dunce, but I interpreted your proposal as taking a sealed filter, screwing it into a mask, and only then unsealing it to activate the filter. This would be somewhat similar to somebody putting on a pair of glasses before they take the glasses out of their case. Please correct me if I’m misinterpreting your meaning. |
Theoretically. If that were my goal. I would make two air inlet channels. The first channel with filter protection, the second without protection. And I would install a mechanical or electronic switch. The use of which would block one of the channels. Mechanics are more reliable, and if you use electronics, you can add automatic switching conditions. (If you go into fiction, automatic detection of hazardous substances). Also I doubt this would be found in finished products. That's why we are talking about survivalist equipment and, perhaps, experimental or high-tech samples of military equipment. As a player, I'd rather be able to craft a normal quality item before going looking for something really rare. And if we talk about implementation in code. We need something like It could be useful to add new conditions to the enchantment. Works when:
An enchantment cartridge is placed in a gas mask. It adds gas protection and encumbrance. @BalthazarArgall
It??? |
0ca8383
to
d64e52d
Compare
Tried a few things:
As for gas masks until there is a way to tie activity state with reloading somehow, there is not really any way to improve their behavior. Since their values are also fine, there's nothing to be done atm, I'm closing this. |
Summary
Features "Gas masks now allow you to not breathe through a filter at all times"
Purpose of change
Describe the solution
Describe alternatives you've considered
There's still a few issues, some a bit more abstract than others.
get_base_env_resist()
which does stuff like averaging environmental resist values that I'm not sure I should touch.Testing
Spawned a gas mask and a half face gas mask in game, turned them on and off, tried breathing through a gas field with them on and off. Not super thorough but the changes are so basic I don't think anything could go super wrong, I also didn't touch actual values in the jsons, only functionality and use-actions.
Additional context