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