nanogel time

This commit is contained in:
DeltaFire
2021-01-12 23:02:44 +01:00
parent f40955f6dc
commit 13beddd42b
5 changed files with 52 additions and 2 deletions
+47
View File
@@ -472,3 +472,50 @@
return TRUE
to_chat(user, "<span class='warning'>You can't heal [M] with the \the [src]!</span>")
/obj/item/stack/medical/nanogel
name = "nanogel"
singular_name = "nanogel"
desc = "A highly advanced gel that when applied on a sufficiently repaired robotic limb will neutralize internal damage if present, allowing further repairs without the need for surgery."
self_delay = 150 //Agonizingly slow if used on self, but, not completely forbidden because antags with robolimbs need a way to handle their thresholds.
other_delay = 30 //Pretty fast if used on others.
amount = 12
max_amount = 12 //Two synths worth of fixing, if every single bodypart of them has internal damage. Usually, probably more like 6-12.
icon_state = "nanogel"
var/being_applied = FALSE //No doafter stacking.
/obj/item/stack/medical/nanogel/try_heal(mob/living/M, mob/user, silent = FALSE)
if(being_applied)
to_chat(user, "<span class='warning'>You are already applying [src]!</span>")
return
if(!iscarbon(M))
to_chat(user, "<span class='warning'>This won't work on [M]!</span>")
return
being_applied = TRUE
..()
being_applied = FALSE
/obj/item/stack/medical/nanogel/heal(mob/living/M, mob/user)
var/mob/living/carbon/C = M //Only carbons should be able to get here
if(!C)
return
var/obj/item/bodypart/affecting = C.get_bodypart(check_zone(user.zone_selected))
if(!affecting) //Missing limb?
to_chat(user, "<span class='warning'>[C] doesn't have \a [parse_zone(user.zone_selected)]!</span>")
return
if(!affecting.is_robotic_limb())
to_chat(user, "<span class='warning'>This won't work on nonrobotic limbs!</span>")
return
if(!affecting.threshhold_brute_passed && !affecting.threshhold_burn_passed)
to_chat(user, "<span class='warning'>There is no need to use this on [affecting]</span>")
if(affecting.threshhold_brute_passed && affecting.brute_dam == affecting.threshhold_passed_mindamage)
. = TRUE
affecting.threshhold_brute_passed = FALSE
if(affecting.threshhold_burn_passed && affecting.burn_dam == affecting.threshhold_passed_mindamage)
. = TRUE
affecting.threshhold_burn_passed = FALSE
if(.)
user.visible_message("<span class='green'>The nanogel gets to work on [C], repairing [affecting]'s internal damage.</span>", "<span_class='green'>You watch as the nanogel gets to work on fixing the internal damage in [affecting]</span>")
return
//If it gets here: It failed, lets tell the user why.
to_chat(user, "<span class='warning'>[src] fails to work on [affecting] due to residual [(affecting.threshhold_burn_passed && affecting.threshhold_burn_passed) ? "brute and burn" : "[affecting.threshhold_burn_passed ? "burn" : "brute"]"] damage! Perform some external repairs before using this.</span>")