diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index e4b0ab9264..2b046c2b49 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -89,5 +89,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define UNACIDABLE 16 //acid can't even appear on it, let alone melt it. #define ACID_PROOF 32 //acid stuck on it doesn't melt it. #define INDESTRUCTIBLE 64 //doesn't take damage +#define FREEZE_PROOF 128 //can't be frozen // language secondary flags for atoms diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index a0ce89e2b6..b2a9260ce1 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -974,6 +974,8 @@ GLOBAL_LIST_EMPTY(friendly_animal_types) /obj/proc/make_frozen_visual() // Used to make the frozen item visuals for Freon. var/static/list/freeze_item_icons = list() + if(resistance_flags & FREEZE_PROOF) + return if(!HAS_SECONDARY_FLAG(src, FROZEN) && (initial(icon) && initial(icon_state))) var/index = freeze_icon_index() var/icon/IC diff --git a/code/game/gamemodes/clock_cult/clock_structure.dm b/code/game/gamemodes/clock_cult/clock_structure.dm index 7c5064127a..d2b3e27df2 100644 --- a/code/game/gamemodes/clock_cult/clock_structure.dm +++ b/code/game/gamemodes/clock_cult/clock_structure.dm @@ -140,7 +140,7 @@ desc = "A very large construction." layer = MASSIVE_OBJ_LAYER density = FALSE - resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF | FREEZE_PROOF /obj/structure/destructible/clockwork/massive/Initialize() . = ..() diff --git a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm index 7e335dd938..11ee117b3a 100644 --- a/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/game/gamemodes/clock_cult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -9,7 +9,7 @@ icon_state = "nothing" density = FALSE invisibility = INVISIBILITY_MAXIMUM - resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE + resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE | FREEZE_PROOF can_be_repaired = FALSE immune_to_servant_attacks = TRUE var/progress_in_seconds = 0 //Once this reaches GATEWAY_RATVAR_ARRIVAL, it's game over diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index d38b33671d..4406c32fbd 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -3,7 +3,7 @@ //Effects are mostly temporary visual effects like sparks, smoke, as well as decals, etc... /obj/effect icon = 'icons/effects/effects.dmi' - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF /obj/effect/attackby(obj/item/I, mob/living/user, params) return diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 45242ae6d5..87f3f6fec2 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -42,9 +42,6 @@ if(user && Adjacent(user)) teleport(user) -/obj/effect/portal/make_frozen_visual() - return - /obj/effect/portal/Crossed(atom/movable/AM, oldloc) if(get_turf(oldloc) == get_turf(linked)) return ..() diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index a8614c3a5c..82ff907a04 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -122,6 +122,8 @@ /turf/open/proc/freon_gas_act() for(var/obj/I in contents) + if(I.resistance_flags & FREEZE_PROOF) + return if(!HAS_SECONDARY_FLAG(I, FROZEN)) //let it go I.make_frozen_visual() for(var/mob/living/L in contents) diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 891e76fda5..12d012e3f8 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -64,9 +64,6 @@ setDir(pick(GLOB.cardinals)) air_update_turf() -/obj/effect/hotspot/make_frozen_visual() - return //you take my fun i take yours - /obj/effect/hotspot/proc/perform_exposure() var/turf/open/location = loc if(!istype(location) || !(location.air)) diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index b776ed2920..30245589d4 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -167,6 +167,7 @@ icon_state = "coffee" list_reagents = list("coffee" = 30) spillable = 1 + resistance_flags = FREEZE_PROOF /obj/item/weapon/reagent_containers/food/drinks/ice name = "Ice Cup" @@ -197,6 +198,7 @@ name = "Dutch Hot Coco" desc = "Made in Space South America." list_reagents = list("hot_coco" = 30, "sugar" = 5) + resistance_flags = FREEZE_PROOF /obj/item/weapon/reagent_containers/food/drinks/dry_ramen name = "Cup Ramen" diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index b37c8aadca..e80b4cd9b6 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -63,7 +63,7 @@ density = TRUE anchored = FALSE light_range = 4 - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF critical_machine = TRUE @@ -131,8 +131,6 @@ var/produces_gas = TRUE var/obj/effect/countdown/supermatter/countdown -/obj/machinery/power/supermatter_shard/make_frozen_visual() - return /obj/machinery/power/supermatter_shard/Initialize() . = ..()