diff --git a/code/datums/abilities/wizard/iceburst.dm b/code/datums/abilities/wizard/iceburst.dm
index 49d8236e..20bf2cb5 100644
--- a/code/datums/abilities/wizard/iceburst.dm
+++ b/code/datums/abilities/wizard/iceburst.dm
@@ -98,6 +98,10 @@
src.underlays += iced
boutput(iced, "You are trapped within [src]!") // since this is used in at least two places to trap people in things other than ice cubes
src.health *= (rand(10,20)/10)
+
+ if (!(src in processing_items))
+ processing_items.Add(src)
+
return
relaymove(mob/user as mob)
@@ -106,17 +110,28 @@
if(prob(25))
src.health--
- if(src.health <= 0)
- qdel(src)
+ src.check_health()
return
+ proc/process()
+ for(var/mob/M in src)
+ if (M.bodytemperature > 0)
+ M.bodytemperature = max(M.bodytemperature-40,0)
+ src.health--
+ src.check_health()
+
attack_hand(mob/user as mob)
user.visible_message("[user] kicks [src]!", "You kick [src].")
src.health -= 2
+ src.check_health()
+ return
+
+ proc/check_health()
if(src.health <= 0)
qdel(src)
- return
+ return 1
+ return 0
bullet_act(var/obj/projectile/P)
var/damage = 0
@@ -137,20 +152,18 @@
if(D_ENERGY)
src.health -= (damage/4)
- if(src.health <= 0)
- qdel(src)
-
+ src.check_health()
return
attackby(obj/item/W as obj, mob/user as mob)
src.health -= W.force
- if(src.health <= 0)
- qdel(src)
+ if(src.check_health())
return
..()
return
disposing()
+ processing_items.Remove(src)
for(var/atom/movable/AM in src)
if(ismob(AM))
var/mob/M = AM
diff --git a/code/datums/chemistry/Reagents-Medical.dm b/code/datums/chemistry/Reagents-Medical.dm
index 64398e34..4f9bf2e0 100644
--- a/code/datums/chemistry/Reagents-Medical.dm
+++ b/code/datums/chemistry/Reagents-Medical.dm
@@ -993,12 +993,16 @@ datum
on_mob_life(var/mob/M)
if(!M) M = holder.my_atom
- if(M.bodytemperature < M.base_body_temp - 45)
+ if(M.bodytemperature < M.base_body_temp - 100)
+ var/health_before = M.health
if(M.get_oxygen_deprivation())
M.take_oxygen_deprivation(-10)
if(M.get_toxin_damage())
M.take_toxin_damage(-3)
M.HealDamage("All", 12, 12)
+ if(M.health > health_before)
+ var/increase = min((M.health - health_before)/37*25,25) //12+12+3+10 = 37 health healed possible, 25 max temp increase possible
+ M.bodytemperature = min(M.bodytemperature+increase,M.base_body_temp)
M.updatehealth()
if(prob(25)) M.UpdateDamageIcon() // gonna leave this one on for now, but only call it a quarter of the time
diff --git a/code/datums/chemistry/Reagents-Misc.dm b/code/datums/chemistry/Reagents-Misc.dm
index 03c86023..09d2f9ce 100644
--- a/code/datums/chemistry/Reagents-Misc.dm
+++ b/code/datums/chemistry/Reagents-Misc.dm
@@ -736,14 +736,15 @@ datum
if (M.bioHolder)
if (!M.is_cold_resistant())
- new /obj/icecube(get_turf(M), M)
- M.bodytemperature = 0
+ var/obj/icecube/I = new/obj/icecube(get_turf(M), M)
+ I.health = max(volume_passed/5,1)
+ //M.bodytemperature = 0
return
on_mob_life(var/mob/M)
if (!M) M = holder.my_atom
if (M.bodytemperature > 0)
- M.bodytemperature = max(M.bodytemperature-50,0)
+ M.bodytemperature = max(M.bodytemperature-10,0)
..(M)
return