From ab5795b3d3c9b558e3b8400237011bf092f0f885 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Tue, 7 Jul 2020 03:03:09 +0100 Subject: [PATCH] Update pet_carrier.dm --- code/game/objects/items/pet_carrier.dm | 35 ++++++++++++++++++++------ 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index 9bb7367aed..37cfdb59c0 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -231,6 +231,7 @@ has_lock_sprites = FALSE //jar doesn't show the regular lock overlay custom_materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 600) escape_time = 10 //half the time of a bluespace bodybag + var/datum/gas_mixture/immutable/occupant_gas_supply /obj/item/pet_carrier/bluespace/update_icon_state() if(open) @@ -239,18 +240,36 @@ icon_state = "bluespace_jar" /obj/item/pet_carrier/bluespace/throw_impact() + . = ..() //delete the item upon impact, releasing the creature inside (this is handled by its deletion) if(occupants.len) - src.loc.visible_message("The bluespace jar smashes, releasing [occupants[1]]!") - qdel(src) + loc.visible_message("The bluespace jar smashes, releasing [occupants[1]]!") playsound(src, "shatter", 70, 1) - ..() + qdel(src) + +/obj/item/pet_carrier/bluespace/add_occupant(mob/living/occupant) //update the gas supply as required + . = ..() + if(isanimal(occupant)) + var/mob/living/simple_animal/animal = occupant + occupant_gas_supply.temperature = animal.minbodytemp + occupant_gas_supply.gases[/datum/gas/oxygen] = animal.atmos_requirements["min_oxy"] + occupant_gas_supply.gases[/datum/gas/nitrogen] = animal.atmos_requirements["min_n2"] + occupant_gas_supply.gases[/datum/gas/plasma] = animal.atmos_requirements["min_tox"] + occupant_gas_supply.gases[/datum/gas/carbon_dioxide] = animal.atmos_requirements["min_co2"] + else + if(ishuman(occupant)) + var/mob/living/carbon/human/human = occupant + var/obj/item/organ/lungs/lungs = human.getorganslot(ORGAN_SLOT_LUNGS) + if(lungs) + occupant_gas_supply.temperature = lungs.cold_level_1_threshold + occupant_gas_supply.gases[/datum/gas/oxygen] = lungs.safe_oxygen_min + occupant_gas_supply.gases[/datum/gas/nitrogen] = lungs.safe_nitro_min + occupant_gas_supply.gases[/datum/gas/plasma] = lungs.safe_toxins_min + occupant_gas_supply.gases[/datum/gas/carbon_dioxide] = lungs.safe_co2_min /obj/item/pet_carrier/bluespace/handle_internal_lifeform() - var/datum/gas_mixture/GM = new - GM.gases[/datum/gas/oxygen] = MOLES_O2STANDARD - GM.gases[/datum/gas/nitrogen] = MOLES_N2STANDARD - GM.temperature = T20C - return GM + if(!occupant_gas_supply) + occupant_gas_supply = new + return occupant_gas_supply #undef pet_carrier_full