Skip to content
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

Better Boomer Barf #69555

Merged
merged 75 commits into from
Nov 30, 2023
Merged

Better Boomer Barf #69555

merged 75 commits into from
Nov 30, 2023

Conversation

fairyarmadillo
Copy link
Contributor

@fairyarmadillo fairyarmadillo commented Nov 19, 2023

Summary

Features "Boomer bile is slippery, causes pinkeye, and is blocked by waterproof eyewear"

Purpose of change

rebase of #69410

Boomers are a completely worthless enemy. The really big ones get some decent bite attacks, but that's late-game, and other than that they're just weak, slow enemies that die easily and paint the ground purple.

Describe the solution

  • Getting bile in your eyes now has a low chance to give you conjunctivitis every second that it's there, heavily adjusted by your lifestyle score. Rinsing it out with saline solution or eye drops (or getting rid of it by any other means) stops these checks
  • Conjunctivitis is a relatively mild eye infection that comes in mostly identical bacterial and viral flavors. At some later date there should be a chance for it to turn nasty and possibly cause serious eye damage, MRSA, etc. once we have means for the player to circumvent that, but for now it's just a mild annoyance
  • Added antihistamine pills, AKA Benadryl. These are a fairly cheap and common mild depressant, and make you resist the effects of conjunctivitis as well as formication. They can be found wherever you usually find OTC medicine
  • Antibiotics have a 50% chance to cure bacterial conjunctivitis. There's no way to tell which you have without blood analysis
  • Wearing contact lenses or having a mutation with nictating membranes makes you slightly more likely to get conjunctivitis. This is why you see so many one-eyed cats
  • Lidless and compound eyes are immune, as they have no exposed conjunctiva
  • Bile in the eyes is now blocked by waterproofing, not environmental resistance, via the new Creature::add_liquid_effect. Since bile was added, we have done a lot with coverage and waterproofing, and now these statistics are more suitable for blocking attacks such as bile, which is a viscous liquid. Enviro protection has largely been shifted to gas and atmospheric particulates. This means that wearing sunglasses is now fairly effective at stopping bile and wearing goggles or the protective lenses CBM totally keeps it out of your eyes
  • Surfaces can now be slippery. Currently this includes bile and slime, but there's now framework for adding ice and other types of slick terrain. Slipperiness is delivered via an effect, similar to sludge
  • An upright character without the GASTROPOD_FOOT mutation now has a chance to slip every second they have the effect and are on flat ground. This chance is worse for clumsy people, it's worse the more intense the field (and subsequently the effect) are, it's worse if you're running, it's worse if you're skating and don't have the Skater trait
  • Factors which resist slipping include athletics skill, dexterity, balance limb score, footing limb score, the Deft trait, and any one of Slimy, Aqueous, or Mucus Secretion. Crouching (this includes quadrupedal movement for mutants) or going prone prevent slipping
  • It is intended that bile is overall less of an obstacle than sludge, but the random element makes it unpredictable
  • Monsters who do not tunnel, fly, or have the snake, blob, or fish flag can also slip on slippery surfaces. The chance is based on their movement speed, higher being more likely to slip, but is resisted by their dodge skill. A clever player will be able to use bile to their advantage, but it will frequently benefit a slow-moving horde by making running away more difficult. Luckily there isn't usually very much bile around
  • Reduced the half-life of bile to be commensurate with sludge
  • Made ballistic glasses have 95 coverage as they're not airtight
  • Added an easter egg to Crazy Cataclysm where taking antihistamines (Benadryl) gives you a small chance to meet the hat man, based on this meme: https://www.drugs.com/medical-answers/benadryl-hat-man-3573469/
  • Slightly reworded formication's effect names and description to reflect both that not all survivors have skin and that the itchiness isn't always related to bugs or delusions of bugs
  • Moved the clothing evaporation failsafe from character_attire.cpp to character_body.cpp in order to get better values for liquid resistance. This also corrects an issue mentioned in Slimy helps you escape grabs #69019
  • Spotted and fixed an unrelated typo (inverterbrate_blood -> invertebrate_blood ) in character.cpp

Describe alternatives you've considered

To do in followup PRs

  • Corpse bile is one of the most disgusting substances on planet earth and we have specifically evolved to be revolted by it. Getting it on you should make your clothes filthy and ruin your day, especially if you're squeamish. Waterproof clothes should resist this effect
  • This opens the door to finally fixing acid, which has been silly forever. I'm going to want to spend some time on that one because it'll be a fairly substantial balance change. My current plan is to make the player's primary concern be acid splashing onto their body. Currently players are mostly worried about acid on the floor which doesn't make a ton of sense, especially outdoors
  • It probably wouldn't be too hard to get the liquid effects thing set up with the magic system as well, which would likely pay dividends both for monattacks and mutations, let alone mods

Testing

  • Spawned boomers and killed them to observe that their on-death attacks were functioning properly
  • Observed that boomer bile was appropriately slippery relative to its intensity
  • Spawned slimes and killed them, observed that the slime fields they left were slippery
  • Got boomered on with different types of eyewear. Saw that 100% coverage 0 breathability eyewear blocked bile 100% of the time, others performed as expected
  • Saw that the huge boomer's secondary effect, which applies glowing liquid to the player, was also appropriately shed by waterproof equipment
  • Got bacterial pinkeye by getting repeatedly boomered (the chances aren't super high) and saw that it was treatable with antihistamines and curable with antibiotics
  • Got viral pinkeye the same way and saw that it was treatable with antihistamines, but only curable by time
  • Observed enemies slipping in bile. This includes the boomers themselves, but they aren't particularly put out by this, being primarily ranged debuffers. Slipping is not a sure thing and many enemies are immune to it, so it doesn't overly advantage a clever player
  • Observed that downed-immune enemies do not slip in bile, neither do fliers or tunnelers
  • Observed the player slipping in bile. There are many counterplays to this, most of them simply involve not being on the bile. Testing suggests it serves its purpose as soft area denial for the player
  • Tried different stat/skill/trait combos. Bile is fairly hazardous if you have 8 dex, 0 athletics, and no traits. At 12 dex and 3 athletics it's not a big deal. With deft you're practically immune

Additional context

image

@github-actions github-actions bot added NPC / Factions NPCs, AI, Speech, Factions, Ownership [JSON] Changes (can be) made in JSON Mods Issues related to mods or modding Spawn Creatures, items, vehicles, locations appearing on map Mutations / Traits / Professions/ Hobbies Mutations / Traits / Professions/ Hobbies [C++] Changes (can be) made in C++. Previously named `Code` Monsters Monsters both friendly and unfriendly. Fields / Furniture / Terrain / Traps Objects that are part of the map or its features. Items: Armor / Clothing Armor and clothing EOC: Effects On Condition Anything concerning Effects On Condition <Enhancement / Feature> New features, or enhancements on existing labels Nov 19, 2023
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

data/json/effects.json Outdated Show resolved Hide resolved
data/json/effects.json Outdated Show resolved Hide resolved
data/json/effects.json Outdated Show resolved Hide resolved
src/character.cpp Outdated Show resolved Hide resolved
src/character.cpp Show resolved Hide resolved
src/character_body.cpp Outdated Show resolved Hide resolved
src/creature.cpp Outdated Show resolved Hide resolved
src/creature.cpp Outdated Show resolved Hide resolved
@TheShadowFerret
Copy link
Contributor

Corpse bile is one of the most disgusting substances on planet earth and we have specifically evolved to be revolted by it. Getting it on you should make your clothes filthy and ruin your day, especially if you're squeamish. Waterproof clothes should resist this effect

Shouldn't this also apply to melee combat in general(if at a slower rate) 👀

@fairyarmadillo
Copy link
Contributor Author

Corpse bile is one of the most disgusting substances on planet earth and we have specifically evolved to be revolted by it. Getting it on you should make your clothes filthy and ruin your day, especially if you're squeamish. Waterproof clothes should resist this effect

Shouldn't this also apply to melee combat in general(if at a slower rate) 👀

My vote would be for characters to someday have a hygiene score which is decreased by exertion and especially by melee combat with the undead, but that's a big project.

fairyarmadillo and others added 10 commits November 19, 2023 08:32
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Copy link
Member

@Maleclypse Maleclypse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nifty!

data/json/effects.json Outdated Show resolved Hide resolved
@Spicyshadow
Copy link

A possible follow up to this PR to make boomers much more deadly would be to have their bile block the visibility of windows. This could be very dangerous to players driving cars as getting your car barfed on or especially crashing into a boomer could block part or all of your visibility. This would be a significant hazard when city driving when a boomer could jump out of a corner and rob you of visibility.

Another would be to make thier bile much more likely to make your vehicle lose control and start slipping.

@fairyarmadillo
Copy link
Contributor Author

A possible follow up to this PR to make boomers much more deadly would be to have their bile block the visibility of windows. This could be very dangerous to players driving cars as getting your car barfed on or especially crashing into a boomer could block part or all of your visibility. This would be a significant hazard when city driving when a boomer could jump out of a corner and rob you of visibility.

Another would be to make thier bile much more likely to make your vehicle lose control and start slipping.

Both are great ideas. I initially planned do do the latter in this PR, but the vehicle traction code was a little confusing so I decided not to.

If this gets merged, I'll probably look at doing both of those. Running over a boomer and losing 100% visibility would be funny.

@github-actions github-actions bot removed the BasicBuildPassed This PR builds correctly, label assigned by github actions label Nov 28, 2023
@fairyarmadillo fairyarmadillo marked this pull request as draft November 29, 2023 04:48
@Maleclypse
Copy link
Member

OK yep, you've fixed my conflict resolution messup. Are you planning on adding more to this? I notice you took it into draft.

@github-actions github-actions bot added the BasicBuildPassed This PR builds correctly, label assigned by github actions label Nov 29, 2023
@fairyarmadillo fairyarmadillo marked this pull request as ready for review November 29, 2023 19:34
@fairyarmadillo
Copy link
Contributor Author

fairyarmadillo commented Nov 29, 2023

OK yep, you've fixed my conflict resolution messup. Are you planning on adding more to this? I notice you took it into draft.

I put it into draft last night because I didn't have time to test everything after I resolved the conflict, and didn't want it getting merged with some new error. But I just ran through it all and it looks good, so merge away :)

@fairyarmadillo
Copy link
Contributor Author

There's a failing test but it's something to do with uncrafting string balls. I don't think that's anything involving this PR.

@Maleclypse Maleclypse merged commit de8de66 into CleverRaven:master Nov 30, 2023
21 of 26 checks passed
@pwalsh0
Copy link

pwalsh0 commented Dec 12, 2023

Wearing gas mask does not seem to prevent this - is that intended?

Specifically I am wearing light survivor mask - it says it covers the eyes. I got conjunctivitis :) The mask never comes off (which is a whole other topic).

edit: Mask was not "prepared" - maybe that was why.

@fairyarmadillo
Copy link
Contributor Author

fairyarmadillo commented Dec 12, 2023

Wearing gas mask does not seem to prevent this - is that intended?

Specifically I am wearing light survivor mask - it says it covers the eyes. I got conjunctivitis :) The mask never comes off (which is a whole other topic).

edit: Mask was not "prepared" - maybe that was why.

The light survivor mask is (incorrectly) set up to be breathable. It is blocking the liquid, but the liquid is soaking through because its only materials are cotton and kevlar. Try switching to a firefighter PBA mask or a half gas mask plus goggles, at least until someone fixes the mask.

@fairyarmadillo
Copy link
Contributor Author

@pwalsh0 Just wanted to let you know that the masks have been fixed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions [C++] Changes (can be) made in C++. Previously named `Code` <Enhancement / Feature> New features, or enhancements on existing EOC: Effects On Condition Anything concerning Effects On Condition Fields / Furniture / Terrain / Traps Objects that are part of the map or its features. Items: Armor / Clothing Armor and clothing [JSON] Changes (can be) made in JSON json-styled JSON lint passed, label assigned by github actions Mods Issues related to mods or modding Monsters Monsters both friendly and unfriendly. Mutations / Traits / Professions/ Hobbies Mutations / Traits / Professions/ Hobbies NPC / Factions NPCs, AI, Speech, Factions, Ownership Spawn Creatures, items, vehicles, locations appearing on map
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants