diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 8da62c0c313..85c808afaa3 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -336,6 +336,12 @@ cost = 500 result = /obj/item/clothing/suit/mino +/datum/biogen_recipe/misc/rvest + name = "Reticulated Vest" + id = "rvest" + cost = 500 + result = /obj/item/clothing/suit/reticulatedvest + /datum/biogen_recipe/flooring category="Flooring" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 29cb8dc5d0b..75e19f4db0e 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -1108,3 +1108,18 @@ var/list/tag_suits_list = list() body_parts_covered = FULL_TORSO icon_state = "syndiefootball" flags = FPRINT + +/obj/item/clothing/suit/reticulatedvest + name = "reticulated vest" + desc = "A vest that makes use of reticulation to increase surface area and help disperse emitter particles. It was later discovered this also makes it effective against blobs organisms." + icon_state = "reticulated2" + item_state = "labgreen" + blood_overlay_type = "armor" + allowed = list(/obj/item/weapon/tank, + /obj/item/weapon/gun/energy/laser/liberator) + starting_materials = list(MAT_WOOD = 1*CC_PER_SHEET_MISC) + w_type = RECYK_WOOD + var/hits = 2 + +/obj/item/clothing/suit/reticulatedvest/update_icon() + icon_state = "reticulated[hits]" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index e4d9fab359d..b9d4b751be3 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -563,6 +563,16 @@ emp_act /mob/living/carbon/human/blob_act() if(flags & INVULNERABLE) return + var/obj/item/clothing/suit/reticulatedvest/RV = wear_suit + if(istype(RV) && RV.hits>0) //will fail if not wearing a suit or wearing one not of this type + RV.hits-- + if(RV.hits) + to_chat(src, "Your reticulated vest groans as it resists the blob!") + else + to_chat(src, "Your reticulated vest rips apart as it resists the blob one last time!") + RV.update_icon() + update_inv_wear_suit() + return if(cloneloss < 120) playsound(loc, 'sound/effects/blobattack.ogg',50,1) if(isDead(src)) @@ -580,4 +590,7 @@ emp_act if(species && species.anatomy_flags & ACID4WATER) return WATER else - return PACID \ No newline at end of file + return PACID + +/mob/living/carbon/human/beam_defense(var/obj/effect/beam/B) + return is_wearing_item(/obj/item/clothing/suit/reticulatedvest) ? 0.4 : 1 \ No newline at end of file diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e21e7fa1542..b85b749e105 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -140,7 +140,7 @@ var/lastcheck=last_beamchecks["\ref[B]"] // Figure out how much damage to deal. // Formula: (deciseconds_since_connect/10 deciseconds)*B.get_damage() - var/damage = ((world.time - lastcheck)/10) * B.get_damage() + var/damage = ((world.time - lastcheck)/10) * B.get_damage() * beam_defense(B) // Actually apply damage apply_damage(damage, B.damage_type, B.def_zone) @@ -148,6 +148,10 @@ // Update check time. last_beamchecks["\ref[B]"]=world.time +//Return multiplier for damage +/mob/living/proc/beam_defense(var/obj/effect/beam/B) + return 1 + /mob/living/verb/succumb() set hidden = 1 succumb_proc(0) diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index c25271627de..c279defcedd 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index cc54cf8b138..11881bd5b00 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ