Scratching, bit over the top?

Lost a bar and a half of hp to scratching my torso in my current game, it seems a bit… excessive, I mean thats anything from 19 - 27 points of self inflicted damage from scratching an itchy body part. You can take knife and gunshot wound that do less damage then that, I mean is my survivor scratching or clawing out an organ? :stuck_out_tongue:

I may feel stupid but…

You can scratch yourself??
I’ve been playing it pretty safe so I haven’t encountered anything like that. But yeah, scratching shouldn’t give you a flesh wound.

if you have the “itchy body part” status you do it automatically with a chance of resisting (iirc) based on intelligence.

1 Like

Thanks for the tip. (More characters.)

1 Like

3 and 1/2 bars to this over a day and a half, literally on the verge of scratching myself to death.

Well, what else can you do when your spleen itches?

I know you are joking but if there was actually something I could do I wouldn’t mind so much, I’m playing with impreceptive healer and this is going to kill me at this rate.
The only thing I can hope for is to get my little nutjob some meds for his insanity… with bugger all torso health.

I need some oven mitts so I can make him tape them on his hands or something.

Maybe scratching should be adjusted by armor coverage or encumbrance. Hard to scratch yourself in full body armor.

Do you have any mutations that might be giving your scratches extra damage? Talons or finger razors?

Nope (15 characters)

else if( id == effect_formication ) {
    ///\EFFECT_INT decreases occurrence of itching from formication effect
    if( x_in_y( intense, 100 + 50 * get_int() ) ) {
        if( !is_npc() ) {
            //~ %s is bodypart in accusative.
            add_msg( m_warning, _( "You start scratching your %s!" ), body_part_name_accusative( bp ) );
        } else if( g->u.sees( pos() ) ) {
            //~ 1$s is NPC name, 2$s is bodypart in accusative.
            add_msg( _( "%1$s starts scratching their %2$s!" ), name, body_part_name_accusative( bp ) );
        moves -= 150;
        apply_damage( nullptr, bp, 1 );

If I’m reading this correctly, the effect only does 1 damage to the specified body part every time you see the scratching yourself message. How often do you scratch yourself in a day? It’s annoying to dive through functions without visual studio going, so I can’t get a feel for how often this is going to trigger from just the arguments passed to x_n_y function. Maybe this is something that got overlooked in the recent change to turn lengths. Days are technically 6 times longer now.

edit: On second thought, I’d guess this is firing 1-3 times in 500, based on your int of 8. Max intensity for formication is 3. What that would mean in times per day, I can’t figure out easily, as I’m not sure how often this function gets called.

It depends on what the schizophrenic trait throws at me, can be multiple batches of itching per day where my survivor will then itch multiple times or sometimes it won’t happen at all, I do wonder if it is to do with the turn times though. Scratching 6 times as often per session would soon added up, I don’t really understand that code at all though :dizzy_face:

In short, it rolls a 500(100 + 50 times 8) sided dice and if the result is 1-3(depending on how bad the itchiness is), then it displays the scratching message(customized depending on if you’re experiencing it or witnessing it), while costing 150 moves and doing 1 damage to the specified body part.

I could be missing something here, or , you know, I could just be dumb :stuck_out_tongue: but I’m not getting from that how often it’s firing. I understand there is a roll to see if it has an affect but how often does it roll? 1 - 3 rolls every 500 turns?

Combine that with 6x more time per day, and healing being ungodly slow, and you now kill yourself with it because you can’t heal fast enough to overcome being itchy.

Mmm, that sounds just about right compared to the ingame results. It’s quite literally doing damage to me faster then my character can heal it back, the only reason it hasn’t killed me so far is because it isn’t always in one spot.


This is my character 4 days later with his wounds treated daily with medical gauze and disinfectent. I’ve done one raid into town during that time and got hit maybe 2 - 3 times by low level zombies.

Edit: what I mean by that is if it was always on my torso I would already be dead but because it’s spread across 6 different areas I’m somewhat managing to keep up.

The code gets real hard for me to follow when it comes to how often this gets fired. But when it gets called, that’s when the diceroll happens. So I don’t think 1-3 in 500 turns would be accurate, since 500 isn’t calculated until the function is called, if that makes sense to you.
The formication conditional is just a little stop on the road in the
void player::hardcoded_effects( effect &it )
function (which is just a huge fucking pile of conditional statements), so somewhere else is determining how often the hardcoded_effects function is called and so on up the line.

I think I’m following, thanks for helping explain all this. :+1:

No problem. Are you on github? You could open up an issue about this or add to an existing one. I did a quick search and didn’t find anything obviously related. Check it out.

edit: I’m not fobbing this off on you simply out of laziness. You have a save file which can easily reproduce the issue and have experienced it yourself. You can drop a reference to this post as well to give them more details. Also, I’m lazy.

Done :stuck_out_tongue: Not sure how I attach copies of saves though, it said it doesn’t accept files when I tried.