diff --git a/code/__DEFINES/atmospherics/atmos_piping.dm b/code/__DEFINES/atmospherics/atmos_piping.dm index bb5350ee17e..5e501a83983 100644 --- a/code/__DEFINES/atmospherics/atmos_piping.dm +++ b/code/__DEFINES/atmospherics/atmos_piping.dm @@ -47,6 +47,8 @@ #define TANK_DEFAULT_RELEASE_PRESSURE 16 /// The default initial value gas plasmamen tanks releases valves are set to. #define TANK_PLASMAMAN_RELEASE_PRESSURE 4 +/// The default initial value gas flown tanks releases valves are set to. +#define TANK_CLOWN_RELEASE_PRESSURE 20 /// The internal temperature in kelvins at which a handheld gas tank begins to take damage. #define TANK_MELT_TEMPERATURE 1000000 /// The internal pressure in kPa at which a handheld gas tank begins to take damage. diff --git a/code/datums/quirks/positive_quirks/positive_quirks.dm b/code/datums/quirks/positive_quirks/positive_quirks.dm index e49aed64ee6..23cfc9f2a44 100644 --- a/code/datums/quirks/positive_quirks/positive_quirks.dm +++ b/code/datums/quirks/positive_quirks/positive_quirks.dm @@ -81,6 +81,9 @@ /obj/item/storage/backpack/duffelbag/clown, /obj/item/toy/crayon/rainbow, /obj/item/toy/figure/clown, + /obj/item/tank/internals/emergency_oxygen/engi/clown/n2o, + /obj/item/tank/internals/emergency_oxygen/engi/clown/bz, + /obj/item/tank/internals/emergency_oxygen/engi/clown/helium, ) /datum/quirk/item_quirk/clown_enjoyer/add_unique(client/client_source) diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index dab71603650..658b07a3980 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -218,11 +218,23 @@ illustration = "heart" foldable_result = null mask_type = null + var/random_funny_internals = TRUE + +/obj/item/storage/box/survival/hug/PopulateContents() + if(!random_funny_internals) + return ..() + internal_type = pick( + /obj/item/tank/internals/emergency_oxygen/engi/clown/n2o, + /obj/item/tank/internals/emergency_oxygen/engi/clown/bz, + /obj/item/tank/internals/emergency_oxygen/engi/clown/helium, + ) + return ..() //Mime survival box /obj/item/storage/box/survival/hug/black icon_state = "hugbox_black" illustration = "heart_black" + random_funny_internals = FALSE //Duplicated suicide/attack self procs, since the survival boxes are a subtype of box/survival /obj/item/storage/box/survival/hug/suicide_act(mob/living/user) diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 6241aa6d2b3..8ebfb6afcc4 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -215,3 +215,37 @@ /obj/item/tank/internals/generic/populate_gas() return + +/* + * Funny internals + */ +/obj/item/tank/internals/emergency_oxygen/engi/clown + name = "funny emergency oxygen tank" + desc = "Used for emergencies. Contains very little oxygen with an extra of a funny gas, so try to conserve it until you actually need it." + icon_state = "emergency_clown" + inhand_icon_state = "emergency_clown" + worn_icon_state = "emergency_clown" + tank_holder_icon_state = "holder_emergency_clown" + distribute_pressure = TANK_CLOWN_RELEASE_PRESSURE + +/obj/item/tank/internals/emergency_oxygen/engi/clown/n2o + +/obj/item/tank/internals/emergency_oxygen/engi/clown/n2o/populate_gas() + air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/nitrous_oxide) + air_contents.gases[/datum/gas/oxygen][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * 0.95 + air_contents.gases[/datum/gas/nitrous_oxide][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * 0.05 + +/obj/item/tank/internals/emergency_oxygen/engi/clown/bz + +/obj/item/tank/internals/emergency_oxygen/engi/clown/bz/populate_gas() + air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/bz) + air_contents.gases[/datum/gas/oxygen][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * 0.9 + air_contents.gases[/datum/gas/bz][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * 0.1 + +/obj/item/tank/internals/emergency_oxygen/engi/clown/helium + distribute_pressure = TANK_CLOWN_RELEASE_PRESSURE + 2 + +/obj/item/tank/internals/emergency_oxygen/engi/clown/helium/populate_gas() + air_contents.assert_gases(/datum/gas/oxygen, /datum/gas/helium) + air_contents.gases[/datum/gas/oxygen][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * 0.75 + air_contents.gases[/datum/gas/helium][MOLES] = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * 0.25 diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 298c3c3c1f4..6ac7ee5095d 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -158,6 +158,12 @@ crate_name = "standard costume crate" crate_type = /obj/structure/closet/crate/wooden +/datum/supply_pack/costumes_toys/costume/fill(obj/structure/closet/crate/C) + ..() + var/funny_gas_internals + funny_gas_internals = pick(subtypesof(/obj/item/tank/internals/emergency_oxygen/engi/clown) - /obj/item/tank/internals/emergency_oxygen/engi/clown) + new funny_gas_internals(C) + /datum/supply_pack/costumes_toys/randomised/toys name = "Toy Crate" desc = "Who cares about pride and accomplishment? Skip the gaming and get straight \ diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index fa5d688969e..546e3da0f86 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi index 875aed119c1..0c1b8457be7 100644 Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ diff --git a/icons/mob/inhands/equipment/tanks_lefthand.dmi b/icons/mob/inhands/equipment/tanks_lefthand.dmi index 300d3c4740d..dc32e285237 100644 Binary files a/icons/mob/inhands/equipment/tanks_lefthand.dmi and b/icons/mob/inhands/equipment/tanks_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/tanks_righthand.dmi b/icons/mob/inhands/equipment/tanks_righthand.dmi index 3b19be62598..30f2233c5ac 100644 Binary files a/icons/mob/inhands/equipment/tanks_righthand.dmi and b/icons/mob/inhands/equipment/tanks_righthand.dmi differ diff --git a/icons/obj/canisters.dmi b/icons/obj/canisters.dmi index 236ae7a1559..da1225ed22a 100644 Binary files a/icons/obj/canisters.dmi and b/icons/obj/canisters.dmi differ