Merge pull request #2086 from Neerti/7/10/2016_freezer_fixes

Freezer Fixes
This commit is contained in:
EmperorJon
2016-07-10 10:56:59 +01:00
committed by GitHub
6 changed files with 77 additions and 16 deletions
+12
View File
@@ -155,12 +155,24 @@
var/mob/living/carbon/human/H = AM
H.in_stasis = 1
src.used = 1
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 1
for(var/obj/item/organ/organ in O)
organ.preserved = 1
..()
/obj/structure/closet/body_bag/cryobag/Exited(atom/movable/AM)
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
H.in_stasis = 0
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 0
for(var/obj/item/organ/organ in O)
organ.preserved = 0
..()
/obj/structure/closet/body_bag/cryobag/return_air() //Used to make stasis bags protect from vacuum.
@@ -545,6 +545,22 @@
max_storage_space = 21
use_to_pickup = 1 // for picking up broken bulbs, not that most people will try
/obj/item/weapon/storage/box/freezer/Entered(var/atom/movable/AM)
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 1
for(var/obj/item/organ/organ in O)
organ.preserved = 1
..()
/obj/item/weapon/storage/box/freezer/Exited(var/atom/movable/AM)
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 0
for(var/obj/item/organ/organ in O)
organ.preserved = 0
..()
/obj/item/weapon/storage/box/ambrosia
name = "ambrosia seeds box"
desc = "Contains the seeds you need to get a little high."
@@ -348,7 +348,7 @@
if(usr)
usr.remove_from_mob(W)
usr.update_icons() //update our overlays
W.loc = src
W.forceMove(src)
W.on_enter_storage(src)
if(usr)
if (usr.client && usr.s_active != src)
@@ -391,9 +391,9 @@
W.layer = 20
else
W.layer = initial(W.layer)
W.loc = new_location
W.forceMove(new_location)
else
W.loc = get_turf(src)
W.forceMove(get_turf(src))
if(usr)
src.orient2hud(usr)
@@ -437,7 +437,7 @@
user << "<span class='warning'>The tray won't fit in [src].</span>"
return
else
W.loc = user.loc
W.forceMove(get_turf(user))
if ((user.client && user.s_active != src))
user.client.screen -= W
W.dropped(user)
@@ -331,18 +331,34 @@
var/target_temp = T0C - 40
var/cooling_power = 40
return_air()
var/datum/gas_mixture/gas = (..())
if(!gas) return null
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
newgas.copy_from(gas)
if(newgas.temperature <= target_temp) return
/obj/structure/closet/crate/freezer/return_air()
var/datum/gas_mixture/gas = (..())
if(!gas) return null
var/datum/gas_mixture/newgas = new/datum/gas_mixture()
newgas.copy_from(gas)
if(newgas.temperature <= target_temp) return
if((newgas.temperature - cooling_power) > target_temp)
newgas.temperature -= cooling_power
else
newgas.temperature = target_temp
return newgas
if((newgas.temperature - cooling_power) > target_temp)
newgas.temperature -= cooling_power
else
newgas.temperature = target_temp
return newgas
/obj/structure/closet/crate/freezer/Entered(var/atom/movable/AM)
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 1
for(var/obj/item/organ/organ in O)
organ.preserved = 1
..()
/obj/structure/closet/crate/freezer/Exited(var/atom/movable/AM)
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 0
for(var/obj/item/organ/organ in O)
organ.preserved = 0
..()
/obj/structure/closet/crate/freezer/rations //Fpr use in the escape shuttle
name = "emergency rations"
@@ -101,6 +101,22 @@
/obj/item/organ
)
/obj/item/weapon/gripper/no_use/organ/Entered(var/atom/movable/AM)
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 1
for(var/obj/item/organ/organ in O)
organ.preserved = 1
..()
/obj/item/weapon/gripper/no_use/organ/Exited(var/atom/movable/AM)
if(istype(AM, /obj/item/organ))
var/obj/item/organ/O = AM
O.preserved = 0
for(var/obj/item/organ/organ in O)
organ.preserved = 0
..()
/obj/item/weapon/gripper/no_use/organ/robotics
name = "external organ gripper"
icon_state = "gripper-flesh"
+2 -1
View File
@@ -28,6 +28,7 @@ var/list/organ_cache = list()
var/min_broken_damage = 30 // Damage before becoming broken
var/max_damage // Damage cap
var/rejecting // Is this organ already being rejected?
var/preserved = 0 // If this is 1, prevents organ decay.
/obj/item/organ/Destroy()
@@ -100,7 +101,7 @@ var/list/organ_cache = list()
// Don't process if we're in a freezer, an MMI or a stasis bag.or a freezer or something I dunno
if(istype(loc,/obj/item/device/mmi))
return
if(istype(loc,/obj/structure/closet/body_bag/cryobag) || istype(loc,/obj/structure/closet/crate/freezer) || istype(loc,/obj/item/weapon/storage/box/freezer) || istype(loc,/obj/item/weapon/gripper/no_use/organ))
if(preserved)
return
//Process infections
if ((robotic >= ORGAN_ROBOT) || (owner && owner.species && (owner.species.flags & IS_PLANT)))