diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm index 9b7ca819cc..639d63772c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm @@ -49,7 +49,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "as" = ( @@ -70,7 +70,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "at" = ( @@ -89,7 +89,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "au" = ( @@ -129,7 +129,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "ay" = ( @@ -149,7 +149,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "az" = ( @@ -170,7 +170,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aA" = ( @@ -190,7 +190,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aB" = ( @@ -209,7 +209,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aC" = ( @@ -225,7 +225,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aD" = ( @@ -242,7 +242,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aE" = ( @@ -261,7 +261,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aF" = ( @@ -282,7 +282,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aG" = ( @@ -301,7 +301,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aH" = ( @@ -321,7 +321,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aI" = ( @@ -341,7 +341,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aJ" = ( @@ -368,7 +368,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aL" = ( @@ -394,7 +394,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aO" = ( @@ -415,7 +415,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aP" = ( @@ -448,7 +448,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aU" = ( @@ -472,7 +472,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aW" = ( @@ -493,7 +493,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aX" = ( @@ -522,7 +522,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "aZ" = ( @@ -542,7 +542,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "ba" = ( @@ -559,7 +559,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bb" = ( @@ -588,7 +588,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bd" = ( @@ -631,7 +631,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bg" = ( @@ -732,7 +732,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bt" = ( @@ -758,7 +758,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bx" = ( @@ -775,7 +775,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "by" = ( @@ -792,7 +792,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bz" = ( @@ -817,7 +817,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bB" = ( @@ -825,7 +825,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bC" = ( @@ -846,7 +846,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bD" = ( @@ -872,7 +872,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bH" = ( @@ -881,7 +881,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bI" = ( @@ -899,7 +899,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bK" = ( @@ -918,7 +918,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bL" = ( @@ -942,7 +942,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bP" = ( @@ -970,8 +970,8 @@ /turf/open/floor/carpet, /area/ruin/powered/clownplanet) "bT" = ( -/obj/item/slime_extract/rainbow, /obj/structure/table/glass, +/obj/item/reagent_containers/spray/waterflower/superlube, /turf/open/floor/carpet, /area/ruin/powered/clownplanet) "bU" = ( @@ -989,7 +989,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bY" = ( @@ -999,7 +999,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "bZ" = ( @@ -1008,7 +1008,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "ca" = ( @@ -1018,7 +1018,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "cc" = ( @@ -1052,7 +1052,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "dC" = ( @@ -1075,7 +1075,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "dD" = ( @@ -1097,7 +1097,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "dE" = ( @@ -1120,7 +1120,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "dF" = ( @@ -1175,7 +1175,7 @@ }, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "dK" = ( @@ -1202,7 +1202,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "dO" = ( @@ -1211,7 +1211,7 @@ icon_state = "bananium"; name = "bananium floor"; sound = 'sound/effects/clownstep1.ogg'; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "eX" = ( @@ -1260,7 +1260,7 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/indestructible{ icon_state = "darkfull"; - wet = 8 + wet = 16 }, /area/ruin/powered/clownplanet) "KX" = ( diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 10d29f2ecf..bd322c9b2d 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -203,11 +203,12 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) #define LOCKED_SENSORS 2 //Wet floor type flags. Stronger ones should be higher in number. -#define TURF_DRY 0 -#define TURF_WET_WATER 1 -#define TURF_WET_PERMAFROST 2 -#define TURF_WET_ICE 4 -#define TURF_WET_LUBE 8 +#define TURF_DRY (0) +#define TURF_WET_WATER (1<<0) +#define TURF_WET_PERMAFROST (1<<1) +#define TURF_WET_ICE (1<<2) +#define TURF_WET_LUBE (1<<3) +#define TURF_WET_SUPERLUBE (1<<4) #define IS_WET_OPEN_TURF(O) O.GetComponent(/datum/component/wet_floor) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 5bd0ee5b3b..8d2913629a 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -201,6 +201,8 @@ #define SLIDE (1<<1) #define GALOSHES_DONT_HELP (1<<2) #define SLIDE_ICE (1<<3) +#define SLIP_WHEN_CRAWLING (1<<4) //clown planet ruin +#define SLIP_WHEN_JOGGING (1<<5) //slips prevented by walking are also dodged if the mob is not sprinting or fatigued... unless this flag is on. #define MAX_CHICKENS 50 diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 84b0320375..38b17993d8 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -88,6 +88,9 @@ if(TURF_WET_PERMAFROST) intensity = 120 lube_flags = SLIDE_ICE | GALOSHES_DONT_HELP + if(TURF_WET_SUPERLUBE) + intensity = 120 + lube_flags = SLIDE | GALOSHES_DONT_HELP | SLIP_WHEN_CRAWLING else qdel(parent.GetComponent(/datum/component/slippery)) return @@ -159,7 +162,7 @@ //NB it's possible we get deleted after this, due to inherit /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) + var/static/list/allowed_types = list(TURF_WET_WATER, TURF_WET_LUBE, TURF_WET_ICE, TURF_WET_PERMAFROST, TURF_WET_SUPERLUBE) if(duration_minimum <= 0 || !type) return FALSE if(type in allowed_types) diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index 54b82d8e07..2da47d481e 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -10,7 +10,7 @@ /obj/item/pda/clown/Initialize() . = ..() - AddComponent(/datum/component/slippery, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, .proc/AfterSlip)) + AddComponent(/datum/component/slippery, 120, NO_SLIP_WHEN_WALKING|SLIP_WHEN_JOGGING, CALLBACK(src, .proc/AfterSlip)) /obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) if (istype(M) && (M.real_name != owner)) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index bd24e0ff93..96c43c4106 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -267,14 +267,15 @@ if(!(lube&GALOSHES_DONT_HELP)) //can't slip while buckled unless it's lube. return 0 else - if(C.lying || !(C.status_flags & CANKNOCKDOWN)) // can't slip unbuckled mob if they're lying or can't fall. + if(!(lube&SLIP_WHEN_CRAWLING) && (C.lying || !(C.status_flags & CANKNOCKDOWN))) // can't slip unbuckled mob if they're lying or can't fall. return 0 - if(C.m_intent == MOVE_INTENT_WALK && (lube&NO_SLIP_WHEN_WALKING)) - return 0 - if(ishuman(C) && (lube&NO_SLIP_WHEN_WALKING)) - var/mob/living/carbon/human/H = C - if(!H.sprinting && H.getStaminaLoss() <= 20) + if(lube & NO_SLIP_WHEN_WALKING) + if(C.m_intent == MOVE_INTENT_WALK) return 0 + if(ishuman(C) && !(lube & SLIP_WHEN_JOGGING)) + var/mob/living/carbon/human/H = C + if(!H.sprinting && H.getStaminaLoss() <= 20) + return 0 if(!(lube&SLIDE_ICE)) to_chat(C, "You slipped[ O ? " on the [O.name]" : ""]!") playsound(C.loc, 'sound/misc/slip.ogg', 50, 1, -3) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index af6a65ebe1..ecd200f639 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -503,12 +503,19 @@ description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." color = "#009CA8" // rgb: 0, 156, 168 taste_description = "cherry" // by popular demand + var/lube_kind = TURF_WET_LUBE ///What kind of slipperiness gets added to turfs. /datum/reagent/lube/reaction_turf(turf/open/T, reac_volume) if (!istype(T)) return if(reac_volume >= 1) - T.MakeSlippery(TURF_WET_LUBE, 15 SECONDS, min(reac_volume * 2 SECONDS, 120)) + T.MakeSlippery(lube_kind, 15 SECONDS, min(reac_volume * 2 SECONDS, 120)) + +///Stronger kind of lube. Applies TURF_WET_SUPERLUBE. +/datum/reagent/lube/superlube + name = "Super Duper Lube" + description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]." + lube_kind = TURF_WET_SUPERLUBE /datum/reagent/spraytan name = "Spray Tan" diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 424d7b9ed0..b3f9ef8202 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -223,6 +223,15 @@ /obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays return +///Subtype used for the lavaland clown ruin. +/obj/item/reagent_containers/spray/waterflower/superlube + name = "clown flower" + desc = "A delightly devilish flower... you got a feeling where this is going." + icon = 'icons/obj/chemical.dmi' + icon_state = "clownflower" + volume = 30 + list_reagents = list(/datum/reagent/lube/superlube = 30) + /obj/item/reagent_containers/spray/waterflower/cyborg reagent_flags = NONE volume = 100 diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index 89acf0645e..701c3a2467 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ