diff --git a/code/game/objects/structures/loom.dm b/code/game/objects/structures/loom.dm
index 1b4cac9d..adceb075 100644
--- a/code/game/objects/structures/loom.dm
+++ b/code/game/objects/structures/loom.dm
@@ -32,7 +32,7 @@
return FALSE
user.show_message("You start weaving \the [S.name] through the loom..", 1)
if(S.use_tool(src, user, S.pull_effort))
- if(S.amount >= FABRIC_PER_SHEET)
+ while(S.amount >= FABRIC_PER_SHEET)
new S.loom_result(drop_location())
S.use(FABRIC_PER_SHEET)
user.show_message("You weave \the [S.name] into a workable fabric.", 1)
diff --git a/code/modules/surgery/advanced/toxichealing.dm b/code/modules/surgery/advanced/toxichealing.dm
index bb28a0fb..fc2ca0b8 100644
--- a/code/modules/surgery/advanced/toxichealing.dm
+++ b/code/modules/surgery/advanced/toxichealing.dm
@@ -24,6 +24,13 @@
/datum/surgery_step/toxichealing/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] starts rejuvenating some of [target]'s flesh back to life.", "You start knitting some of [target]'s flesh back to life.")
+/datum/surgery_step/toxichealing/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
+ if(..())
+ while((target.getToxLoss() >= 1) || (target.getOxyLoss() >= 1))
+ . = ..()
+ if(!.)
+ break
+
/datum/surgery_step/toxichealing/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("[user] fixes some of [target]'s wounds.", "You succeed in fixing some of [target]'s wounds.")
target.heal_bodypart_damage(0,0,30) //Heals stam