diff --git a/GainStation13/code/mechanics/water_sponge.dm b/GainStation13/code/mechanics/water_sponge.dm index 84d4b1e788..b3bf8b287d 100644 --- a/GainStation13/code/mechanics/water_sponge.dm +++ b/GainStation13/code/mechanics/water_sponge.dm @@ -6,6 +6,9 @@ lose_text = "You don't feel absorbant anymore." mob_trait = TRAIT_WATER_SPONGE +/datum/reagent/water + var/bloat_coeff = 3.5 + /datum/reagent/water/on_mob_add(mob/living/L, amount) if(HAS_TRAIT(L, TRAIT_WATER_SPONGE)) if(iscarbon(L)) @@ -30,7 +33,7 @@ /datum/reagent/water/proc/fat_hide(mob/living/carbon/user) - return volume * 3.5 + return volume * bloat_coeff /obj/machinery/shower/process() ..() @@ -57,6 +60,9 @@ water_check(breath, H) . = ..() +/datum/reagent/water/overdose_start(mob/living/M) + . = 1 + /obj/structure/sink var/mob/living/attached diff --git a/GainStation13/code/mechanics/web_weaving.dm b/GainStation13/code/mechanics/web_weaving.dm index d334a04d74..fbd7c2ae52 100644 --- a/GainStation13/code/mechanics/web_weaving.dm +++ b/GainStation13/code/mechanics/web_weaving.dm @@ -41,7 +41,7 @@ var/obj/item/clothing/suit = target.wear_suit if(istype(suit, /obj/item/clothing/suit/straight_jacket/web)) user.visible_message("[user] begins to fully encase [target] in a cocoon!", "You begin to fully encase [target] in a cocoon.") - if(!do_after_mob(user, target, 30 SECONDS)) + if(!do_after(user, 30 SECONDS, target)) return FALSE var/obj/structure/spider/cocoon/quirk/spawned_cocoon = new(target.loc) @@ -60,7 +60,7 @@ return TRUE user.visible_message("[user] attempts to remove [target]'s [target.wear_suit]!", "You attempt to remove [target]'s [target.wear_suit].") - if(!do_after_mob(user, target, 10 SECONDS) || !target.dropItemToGround(suit)) + if(!do_after(user, 10 SECONDS, target) || !target.dropItemToGround(suit)) return FALSE var/obj/item/clothing/suit/straight_jacket/web/wrapping = new @@ -68,7 +68,7 @@ return FALSE user.visible_message("[user] attempts to wrap [target] inside of [wrapping]!", "You attempt to wrap [target] inside of [wrapping].") - if(!do_after_mob(user, target, 20 SECONDS) || !target.equip_to_slot_if_possible(wrapping, ITEM_SLOT_OCLOTHING, TRUE, TRUE)) + if(!do_after(user, 20 SECONDS, target) || !target.equip_to_slot_if_possible(wrapping, ITEM_SLOT_OCLOTHING, TRUE, TRUE)) user.visible_message("[user] fails to wrap [target] inside of [wrapping]!", "You fail to wrap [target] inside of [wrapping].") return FALSE @@ -105,9 +105,28 @@ /datum/action/innate/make_web/Activate() var/turf/T = get_turf(owner) owner.visible_message("[owner] begins spinning a web!", "You begin spinning a web.") - if(!do_after(owner, 10 SECONDS, 1, null, 1)) + var/obj/structure/spider/stickyweb/W = locate() in get_turf(src) + if(W || !do_after(owner, 10 SECONDS, T)) owner.visible_message("[owner] fails to spin a web!", "You fail to spin web.") return FALSE - T.ChangeTurf(/obj/structure/spider/stickyweb) - owner.visible_message("[owner] spin a sticky web!", "You spin a sticky web.") + new /obj/structure/spider/stickyweb(T) + owner.visible_message("[owner] spins a sticky web!", "You spin a sticky web.") + return TRUE + +/obj/structure/spider/stickyweb/CanPass(atom/movable/mover, turf/target) + if (genetic) + return + if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider) || HAS_TRAIT(mover, TRAIT_WEB_WEAVER)) + return TRUE + else if(isliving(mover)) + if(istype(mover.pulledby, /mob/living/simple_animal/hostile/poison/giant_spider)) + return TRUE + if(mover.pulledby) + if(HAS_TRAIT(mover.pulledby, TRAIT_WEB_WEAVER)) + return TRUE + if(prob(50)) + to_chat(mover, "You get stuck in \the [src] for a moment.") + return FALSE + else if(istype(mover, /obj/item/projectile)) + return prob(30) return TRUE