diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index c53bd3f99be..eeca2089ee8 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -157,7 +157,10 @@ var/datum/organ/external/affecting = H.get_organ(user.zone_sel.selecting) if(affecting.open == 0) - if(!affecting.bandage()) + var/bandaged = affecting.bandage() + var/disinfected = affecting.disinfect() + + if(!(bandaged || disinfected)) user << "\red The wounds on [M]'s [affecting.display_name] have already been treated." return 1 else @@ -174,7 +177,8 @@ else user.visible_message( "\blue [user] smears some bioglue over [W.desc] on [M]'s [affecting.display_name].", \ "\blue You smear some bioglue over [W.desc] on [M]'s [affecting.display_name]." ) - affecting.heal_damage(heal_brute,0) + if (bandaged) + affecting.heal_damage(heal_brute,0) use(1) else if (can_operate(H)) //Checks if mob is lying down on table for surgery diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c4b80a29e22..942144006c1 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -694,6 +694,15 @@ Note that amputating the affected organ does in fact remove the infection from t W.bandaged = 1 return rval +/datum/organ/external/proc/disinfect() + var/rval = 0 + for(var/datum/wound/W in wounds) + if(W.internal) continue + rval |= !W.disinfected + W.disinfected = 1 + W.germ_level = 0 + return rval + /datum/organ/external/proc/clamp() var/rval = 0 src.status &= ~ORGAN_BLEEDING