diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 9f99f61a8dd..03d001871e9 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -246,21 +246,36 @@ new /obj/item/stack/sheet/wethide(get_turf(HH), HH.amount) qdel(HH) -/* + +/// How many wet stacks you get per units of water when it's applied by touch. +#define WATER_TO_WET_STACKS_FACTOR_TOUCH 0.5 +/// How many wet stacks you get per unit of water when it's applied by vapor. Much less effective than by touch, of course. +#define WATER_TO_WET_STACKS_FACTOR_VAPOR 0.1 + + +/** * Water reaction to a mob */ - -/datum/reagent/water/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)//Splashing people with water can help put them out! +/datum/reagent/water/expose_mob(mob/living/exposed_mob, methods = TOUCH, reac_volume)//Splashing people with water can help put them out! . = ..() if(methods & TOUCH) exposed_mob.extinguish_mob() // extinguish removes all fire stacks + exposed_mob.adjust_wet_stacks(reac_volume * WATER_TO_WET_STACKS_FACTOR_TOUCH) // Water makes you wet, at a 50% water-to-wet-stacks ratio. Which, in turn, gives you some mild protection from being set on fire! + if(methods & VAPOR) - if(!isfeline(exposed_mob)) // SKYRAT EDIT - Feline trait :) + exposed_mob.adjust_wet_stacks(reac_volume * WATER_TO_WET_STACKS_FACTOR_VAPOR) // Spraying someone with water with the hope to put them out is just simply too funny to me not to add it. + + if(!isfeline(exposed_mob)) // SKYRAT EDIT - Feline trait :) - ORIGINAL: if(!isfelinid(exposed_mob)) return + exposed_mob.incapacitate(1) // startles the felinid, canceling any do_after exposed_mob.add_mood_event("watersprayed", /datum/mood_event/watersprayed) +#undef WATER_TO_WET_STACKS_FACTOR_TOUCH +#undef WATER_TO_WET_STACKS_FACTOR_VAPOR + + /datum/reagent/water/on_mob_life(mob/living/carbon/affected_mob, delta_time, times_fired) . = ..() if(affected_mob.blood_volume) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index be03c3c21f1..3288a28d9e1 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -168,7 +168,7 @@ #include "range_return.dm" #include "rcd.dm" #include "reagent_id_typos.dm" -#include "reagent_mod_expose.dm" +#include "reagent_mob_expose.dm" #include "reagent_mod_procs.dm" #include "reagent_names.dm" #include "reagent_recipe_collisions.dm" diff --git a/code/modules/unit_tests/reagent_mod_expose.dm b/code/modules/unit_tests/reagent_mob_expose.dm similarity index 84% rename from code/modules/unit_tests/reagent_mod_expose.dm rename to code/modules/unit_tests/reagent_mob_expose.dm index ebf5d319e0c..51c35520daf 100644 --- a/code/modules/unit_tests/reagent_mod_expose.dm +++ b/code/modules/unit_tests/reagent_mob_expose.dm @@ -29,9 +29,9 @@ TEST_ASSERT(human.fire_stacks > 1, "Human fire stacks did not increase after life tick") // TOUCH - dropper.reagents.add_reagent(/datum/reagent/water, 1) + dropper.reagents.add_reagent(/datum/reagent/water, 5) dropper.afterattack(human, human, TRUE) - TEST_ASSERT_EQUAL(human.fire_stacks, 0, "Human still has fire stacks after touching water") + TEST_ASSERT(human.fire_stacks < 0, "Human still has fire stacks after touching water") // VAPOR TEST_ASSERT_NULL(human.has_status_effect(/datum/status_effect/drowsiness), "Human is drowsy at the start of testing") @@ -39,6 +39,11 @@ drink.reagents.add_reagent(/datum/reagent/nitrous_oxide, 10) drink.reagents.trans_to(human, 10, methods = VAPOR) TEST_ASSERT_NOTNULL(human.has_status_effect(/datum/status_effect/drowsiness), "Human is not drowsy after exposure to vapors") + drink.reagents.clear_reagents() + drink.reagents.add_reagent(/datum/reagent/water, 10) + var/old_fire_stacks = human.fire_stacks + drink.reagents.trans_to(human, 10, methods = VAPOR) + TEST_ASSERT(human.fire_stacks < old_fire_stacks, "Human does not get wetter after being exposed to water by vapors") // PATCH human.health = 100