diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 20f098e5d19..acf17d97359 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -24,6 +24,11 @@
to_chat(user, "You don't have the dexterity to do this!")
return 1
+ var/available = get_amount()
+ if(!available)
+ to_chat(user, "There's not enough [uses_charge ? "charge" : "items"] left to use that!")
+ return 1
+
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
@@ -101,11 +106,12 @@
to_chat(user, "The wounds on [M]'s [affecting.name] have already been bandaged.")
return 1
else
+ var/available = get_amount()
user.visible_message("\The [user] starts bandaging [M]'s [affecting.name].", \
"You start bandaging [M]'s [affecting.name]." )
var/used = 0
for (var/datum/wound/W in affecting.wounds)
- if (W.internal)
+ if(W.internal)
continue
if(W.bandaged)
continue
@@ -119,6 +125,10 @@
to_chat(user, "The wounds on [M]'s [affecting.name] have already been bandaged.")
return 1
+ if(used >= available)
+ to_chat(user, "You run out of [src]!")
+ break
+
if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("\The [user] bandages \a [W.desc] on [M]'s [affecting.name].", \
"You bandage \a [W.desc] on [M]'s [affecting.name]." )
@@ -164,6 +174,7 @@
to_chat(user, "The wounds on [M]'s [affecting.name] have already been bandaged.")
return 1
else
+ var/available = get_amount()
user.visible_message("\The [user] starts treating [M]'s [affecting.name].", \
"You start treating [M]'s [affecting.name]." )
var/used = 0
@@ -182,6 +193,10 @@
to_chat(user, "The wounds on [M]'s [affecting.name] have already been bandaged.")
return 1
+ if(used >= available)
+ to_chat(user, "You run out of [src]!")
+ break
+
if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("\The [user] bandages \a [W.desc] on [M]'s [affecting.name].", \
"You bandage \a [W.desc] on [M]'s [affecting.name]." )
@@ -271,6 +286,7 @@
to_chat(user, "The wounds on [M]'s [affecting.name] have already been treated.")
return 1
else
+ var/available = get_amount()
user.visible_message("\The [user] starts treating [M]'s [affecting.name].", \
"You start treating [M]'s [affecting.name]." )
var/used = 0
@@ -287,6 +303,11 @@
if(affecting.is_bandaged() && affecting.is_disinfected()) // We do a second check after the delay, in case it was bandaged after the first check.
to_chat(user, "The wounds on [M]'s [affecting.name] have already been bandaged.")
return 1
+
+ if(used >= available)
+ to_chat(user, "You run out of [src]!")
+ break
+
if (W.current_stage <= W.max_bleeding_stage)
user.visible_message("\The [user] cleans \a [W.desc] on [M]'s [affecting.name] and seals the edges with bioglue.", \
"You clean and seal \a [W.desc] on [M]'s [affecting.name]." )
diff --git a/code/game/objects/items/stacks/medical_vr.dm b/code/game/objects/items/stacks/medical_vr.dm
index eda72a3fce9..4599bb43f9c 100644
--- a/code/game/objects/items/stacks/medical_vr.dm
+++ b/code/game/objects/items/stacks/medical_vr.dm
@@ -18,4 +18,59 @@
if(9)
icon_state = "[initial(icon_state)]_9"
else
- icon_state = "[initial(icon_state)]_10"
\ No newline at end of file
+ icon_state = "[initial(icon_state)]_10"
+
+
+/obj/item/stack/medical/advanced/clotting
+ name = "liquid bandage kit"
+ singular_name = "liquid bandage kit"
+ desc = "A spray that stops bleeding using a patented chemical cocktail. Non-refillable. Only one use required per patient."
+ icon_state = "clotkit"
+ heal_burn = 0
+ heal_brute = 2 // Only applies to non-humans, to give this some slight application on animals
+ origin_tech = list(TECH_BIO = 3)
+ apply_sounds = list('sound/effects/spray.ogg', 'sound/effects/spray2.ogg', 'sound/effects/spray3.ogg')
+ amount = 5
+ max_amount = 5
+
+/obj/item/stack/medical/advanced/clotting/attack(mob/living/carbon/human/H, var/mob/user)
+ if(..())
+ return 1
+
+ if(!istype(H))
+ return
+
+ var/clotted = 0
+ var/too_far_gone = 0
+
+ for(var/org in H.organs) //'organs' is just external organs, as opposed to 'internal_organs'
+ var/obj/item/organ/external/affecting = org
+
+ // No amount of clotting is going to help you here.
+ if(affecting.open)
+ too_far_gone++
+ continue
+
+ for(var/wnd in affecting.wounds)
+ var/datum/wound/W = wnd
+ // No need
+ if(W.bandaged)
+ continue
+ // It's not that amazing
+ if(W.internal)
+ continue
+ if(W.current_stage <= W.max_bleeding_stage)
+ clotted++
+ W.bandage()
+
+ var/healmessage = "You spray [src] onto [H], sealing [clotted ? clotted : "no"] wounds."
+ if(too_far_gone)
+ healmessage += " You can see some wounds that are too large where the spray is not taking effect."
+
+ to_chat(user, healmessage)
+ use(1)
+ playsound(src, pick(apply_sounds), 25)
+ update_icon()
+
+/obj/item/stack/medical/advanced/clotting/update_icon()
+ icon_state = "[initial(icon_state)]_[amount]"
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm
index 8d368233df9..7f7d601c330 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm
@@ -252,6 +252,15 @@
src.modules += new /obj/item/weapon/shockpaddles/robot/hound(src) //Paws of life
src.emag = new /obj/item/weapon/dogborg/pounce(src) //Pounce
+ var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(2000)
+ synths += medicine
+
+ var/obj/item/stack/medical/advanced/clotting/C = new (src)
+ C.uses_charge = 1
+ C.charge_costs = list(1000)
+ C.synths = list(medicine)
+ src.modules += C
+
var/datum/matter_synth/water = new /datum/matter_synth(500)
water.name = "Water reserves"
water.recharge_rate = 0
diff --git a/icons/obj/stacks_vr.dmi b/icons/obj/stacks_vr.dmi
index 54fe25d911f..34d49af81bc 100644
Binary files a/icons/obj/stacks_vr.dmi and b/icons/obj/stacks_vr.dmi differ