diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm
index e1a0283aad..7890b3b258 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm
@@ -39,7 +39,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"as" = (
@@ -50,7 +50,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"at" = (
@@ -59,7 +59,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"au" = (
@@ -89,7 +89,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"ay" = (
@@ -99,7 +99,7 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"az" = (
@@ -110,7 +110,7 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aA" = (
@@ -120,7 +120,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aB" = (
@@ -129,20 +129,20 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aC" = (
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aD" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aE" = (
@@ -151,7 +151,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aF" = (
@@ -162,7 +162,7 @@
/obj/effect/decal/cleanable/cobweb,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aG" = (
@@ -171,7 +171,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aH" = (
@@ -181,7 +181,7 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aI" = (
@@ -191,7 +191,7 @@
/obj/item/bikehorn,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aJ" = (
@@ -208,7 +208,7 @@
/obj/effect/decal/cleanable/pie_smudge,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aL" = (
@@ -224,7 +224,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aO" = (
@@ -235,7 +235,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aP" = (
@@ -258,7 +258,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aU" = (
@@ -272,7 +272,7 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aW" = (
@@ -283,7 +283,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aX" = (
@@ -302,7 +302,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"aZ" = (
@@ -318,7 +318,7 @@
/obj/effect/decal/cleanable/pie_smudge,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bb" = (
@@ -337,7 +337,7 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bd" = (
@@ -370,7 +370,7 @@
/obj/effect/decal/cleanable/pie_smudge,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bg" = (
@@ -476,21 +476,21 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bx" = (
/obj/effect/decal/cleanable/cobweb,
/turf/open/indestructible{
icon_state = "darkredfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"by" = (
/obj/structure/disposalpipe/segment,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bz" = (
@@ -505,7 +505,7 @@
"bA" = (
/turf/open/indestructible{
icon_state = "darkredfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bB" = (
@@ -513,7 +513,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bC" = (
@@ -524,7 +524,7 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bD" = (
@@ -550,7 +550,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bH" = (
@@ -559,7 +559,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bI" = (
@@ -567,7 +567,7 @@
/obj/effect/decal/cleanable/blood/old,
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bJ" = (
@@ -577,7 +577,7 @@
},
/turf/open/indestructible{
icon_state = "darkredfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bK" = (
@@ -586,7 +586,7 @@
},
/turf/open/indestructible{
icon_state = "darkredfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bL" = (
@@ -610,7 +610,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bP" = (
@@ -657,7 +657,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bY" = (
@@ -667,7 +667,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"bZ" = (
@@ -676,7 +676,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"ca" = (
@@ -686,7 +686,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"cc" = (
@@ -710,7 +710,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"dC" = (
@@ -723,7 +723,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"dD" = (
@@ -735,7 +735,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"dE" = (
@@ -748,7 +748,7 @@
},
/turf/open/indestructible{
icon_state = "darkyellowfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"dF" = (
@@ -793,7 +793,7 @@
},
/turf/open/indestructible{
icon_state = "darkredfull";
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"dK" = (
@@ -820,7 +820,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"dO" = (
@@ -829,7 +829,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 5
+ wet = 8
},
/area/ruin/powered/clownplanet)
"eX" = (
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index c2768e5b5c..7dc81e2745 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -188,9 +188,9 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
//Wet floor type flags. Stronger ones should be higher in number.
#define TURF_DRY 0
#define TURF_WET_WATER 1
-#define TURF_WET_LUBE 2
+#define TURF_WET_PERMAFROST 2
#define TURF_WET_ICE 4
-#define TURF_WET_PERMAFROST 8
+#define TURF_WET_LUBE 8
#define IS_WET_OPEN_TURF(O) O.GetComponent(/datum/component/wet_floor)
diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm
index 830f2d9a42..5221e2b387 100644
--- a/code/datums/components/material_container.dm
+++ b/code/datums/components/material_container.dm
@@ -89,7 +89,9 @@
var/obj/item/stack/S = I
to_chat(user, "You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent].")
if(!QDELETED(I))
- user.put_in_active_hand(I)
+ if(!user.put_in_hands(I))
+ stack_trace("Warning: User could not put object back in hand during material container insertion, line [__LINE__]! This can lead to issues.")
+ I.forceMove(user.drop_location())
else
to_chat(user, "You insert a material total of [inserted] into [parent].")
qdel(I)
diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm
index 92f0250e4f..3a08df023d 100644
--- a/code/datums/components/wet_floor.dm
+++ b/code/datums/components/wet_floor.dm
@@ -21,17 +21,17 @@
for(var/i in WF.time_left_list)
add_wet(text2num(i), WF.time_left_list[i])
-/datum/component/wet_floor/Initialize(strength, duration_minimum, duration_add, duration_maximum, permanent = FALSE)
+/datum/component/wet_floor/Initialize(strength, duration_minimum, duration_add, duration_maximum, _permanent = FALSE)
if(!isopenturf(parent))
. = COMPONENT_INCOMPATIBLE
CRASH("Wet floor component attempted to be applied to a non open turf!")
add_wet(strength, duration_minimum, duration_add, duration_maximum)
RegisterSignal(COMSIG_TURF_IS_WET, .proc/is_wet)
RegisterSignal(COMSIG_TURF_MAKE_DRY, .proc/dry)
+ permanent = _permanent
if(!permanent)
START_PROCESSING(SSwet_floors, src)
- if(gc())
- stack_trace("Warning: Wet floor component added and immediately deleted! What a waste of time!")
+ addtimer(CALLBACK(src, .proc/gc, TRUE), 1) //GC after initialization.
/datum/component/wet_floor/Destroy()
STOP_PROCESSING(SSwet_floors, src)
@@ -140,10 +140,23 @@
var/turf/T = to_datum
T.add_overlay(current_overlay)
-/datum/component/wet_floor/proc/add_wet(type, duration_minimum = 0, duration_add = 0, duration_maximum = MAXIMUM_WET_TIME)
+/datum/component/wet_floor/proc/add_wet(type, duration_minimum = 0, duration_add = 0, duration_maximum = MAXIMUM_WET_TIME, _permanent = FALSE)
var/static/list/allowed_types = list(TURF_WET_WATER, TURF_WET_LUBE, TURF_WET_ICE, TURF_WET_PERMAFROST)
- if(!duration_minimum || duration_minimum < 0 || !type || !(type in allowed_types))
+ if(duration_minimum <= 0 || !type)
return FALSE
+ if(type in allowed_types)
+ return _do_add_wet(type, duration_minimum, duration_add, duration_maximum)
+ else
+ . = NONE
+ for(var/i in allowed_types)
+ if(!(type & i))
+ continue
+ . |= _do_add_wet(i, duration_minimum, duration_add, duration_maximum)
+ if(_permanent)
+ permanent = TRUE
+ STOP_PROCESSING(SSwet_floors, src)
+
+/datum/component/wet_floor/proc/_do_add_wet(type, duration_minimum, duration_add, duration_maximum)
var/time = 0
if(LAZYACCESS(time_left_list, "[type]"))
time = CLAMP(LAZYACCESS(time_left_list, "[type]") + duration_add, duration_minimum, duration_maximum)
@@ -153,10 +166,14 @@
check(TRUE)
return TRUE
-/datum/component/wet_floor/proc/gc()
+/datum/component/wet_floor/proc/gc(on_init = FALSE)
if(!LAZYLEN(time_left_list))
+ if(on_init)
+ var/turf/T = parent
+ stack_trace("Warning: Wet floor component gc'd right initializatoin! What a waste of time and CPU! Type = [T? T.type : "ERROR - NO PARENT"], Coords = [istype(T)? COORD(T) : "ERROR - INVALID PARENT"].")
qdel(src)
return TRUE
+ return FALSE
/datum/component/wet_floor/proc/check(force_update = FALSE)
var/changed = FALSE
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index 9b19a9d093..fc0681148a 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -7,7 +7,7 @@
var/list/archdrops
var/wet
-/turf/open/Initialize()
+/turf/open/ComponentInitialize()
. = ..()
if(wet)
AddComponent(/datum/component/wet_floor, wet, INFINITY, 0, INFINITY, TRUE)