diff --git a/code/WorkInProgress/Chemistry-Holder.dm b/code/WorkInProgress/Chemistry-Holder.dm
index 49f10196ffe..de22a277f0f 100644
--- a/code/WorkInProgress/Chemistry-Holder.dm
+++ b/code/WorkInProgress/Chemistry-Holder.dm
@@ -58,7 +58,9 @@ datum
return the_id
trans_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred.
- if (!target || src.total_volume<=0)
+ if (!target )
+ return
+ if (!target.reagents || src.total_volume<=0)
return
var/datum/reagents/R = target.reagents
amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 2bf5292aa28..1b9469a3c52 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -240,7 +240,9 @@ datum/mind
if (istype(objective, /datum/objective/absorb))
def_num = objective:num_to_eat
- var/num_to_eat = input("Number to eat:", "Objective", def_num) as text
+ var/num_to_eat = input("Number to eat:", "Objective", def_num) as num|null
+ if (isnull(num_to_eat))
+ return
new_objective = new /datum/objective/absorb
new_objective.owner = src
new_objective:num_to_eat = num_to_eat
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 33b1a407b50..9b72ab06268 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -169,9 +169,8 @@
occupant.oxyloss -= 1
//severe damage should heal waaay slower without proper chemicals
if(occupant.bodytemperature < 225)
- if(occupant.bruteloss) occupant.bruteloss = max(0, occupant.bruteloss - min(1, 20/occupant.bruteloss))
- if(occupant.fireloss) occupant.fireloss = max(0, occupant.fireloss - min(1, 20/occupant.fireloss))
- if(occupant.toxloss) occupant.toxloss = max(0, occupant.toxloss - min(1, 20/occupant.toxloss))
+ occupant.toxloss = max(0, occupant.toxloss - min(1, 20/occupant.toxloss))
+ occupant.heal_organ_damage(min(1, 20/occupant.bruteloss),min(1, 20/occupant.fireloss))
if(beaker && (next_trans == 0))
beaker:reagents.trans_to(occupant, 1, 10)
beaker:reagents.reaction(occupant)
diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm
index da8c3f710fd..e252c1560fd 100644
--- a/code/game/objects/items/weapons/papers_bins.dm
+++ b/code/game/objects/items/weapons/papers_bins.dm
@@ -203,7 +203,12 @@ CLIPBOARDS
return
/obj/item/weapon/paper/attack_ai(var/mob/living/silicon/ai/user as mob)
- if (get_dist(src, user.current) < 2)
+ var/dist
+ if (istype(user) && user.current) //is AI
+ dist = get_dist(src, user.current)
+ else //cyborg or AI not seeing through a camera
+ dist = get_dist(src, user)
+ if (dist < 2)
usr << browse(text("
[][]", src.name, src.info), text("window=[]", src.name))
onclose(usr, "[src.name]")
else
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 9187ed65b50..7ef7b3c98a6 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -800,3 +800,8 @@ In all, this is a lot like the monkey code. /N
src.health = 100
src.stat = 0
+
+/mob/living/carbon/alien/heal_organ_damage(var/brute, var/burn)
+ bruteloss = max(0, bruteloss-brute) //HACK
+ fireloss = max(0, fireloss-burn) //HACK
+ src.updatehealth()
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 0bb0c06a0b6..321ea947044 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -87,7 +87,7 @@
return 0
src.burn_skin(shock_damage)
//src.fireloss += shock_damage //burn_skin will do this for us
- src.updatehealth()
+ //src.updatehealth()
src.visible_message(
"\red [src] was shocked by the [source]!", \
"\red You feel a powerful shock course through your body!", \
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index f3e2d02c665..224ecb0edf9 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -2696,18 +2696,7 @@
var/obj/item/clothing/gloves/G = src.gloves
siemens_coeff = G.siemens_coefficient
return ..(shock_damage,source,siemens_coeff)
-
-/mob/living/carbon/human/proc/heal_organ_damage(var/brute, var/burn)
- var/list/parts = list()
- for(var/A in src.organs)
- if(!src.organs[A]) continue
- var/datum/organ/external/affecting = src.organs[A]
- if(!istype(affecting)) continue
- if((brute && affecting.brute_dam) || (burn && affecting.burn_dam))
- parts += affecting
-
- if(!parts.len) return
- var/datum/organ/external/picked = pick(parts)
- picked.heal_damage(brute,burn)
+
+/mob/living/carbon/human/heal_organ_damage(var/brute, var/burn)
+ ..()
src.UpdateDamageIcon()
- src.updatehealth()
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 9e8c86aa5fa..23baebd00e7 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -701,4 +701,9 @@
src.source.update_clothing()
src.target.update_clothing()
del(src)
- return
\ No newline at end of file
+ return
+
+/mob/living/carbon/monkey/heal_organ_damage(var/brute, var/burn)
+ bruteloss = max(0, bruteloss-brute) //HACK
+ fireloss = max(0, fireloss-burn) //HACK
+ src.updatehealth()
\ No newline at end of file
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index ed7d74ca04f..982bd647c54 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -2228,4 +2228,18 @@ note dizziness decrements automatically in the mob's Life() proc.
var/list/L = src.get_contents()
for(var/obj/O in L)
O.emp_act(severity)
- ..()
\ No newline at end of file
+ ..()
+
+/mob/proc/heal_organ_damage(var/brute, var/burn)
+ var/list/parts = list()
+ for(var/A in src.organs)
+ if(!src.organs[A]) continue
+ var/datum/organ/external/affecting = src.organs[A]
+ if(!istype(affecting)) continue
+ if((brute && affecting.brute_dam) || (burn && affecting.burn_dam))
+ parts += affecting
+
+ if(!parts.len) return
+ var/datum/organ/external/picked = pick(parts)
+ picked.heal_damage(brute,burn)
+ src.updatehealth()