diff --git a/code/__DEFINES/cleaning.dm b/code/__DEFINES/cleaning.dm index 343956a0655..a6201ed3f91 100644 --- a/code/__DEFINES/cleaning.dm +++ b/code/__DEFINES/cleaning.dm @@ -21,10 +21,14 @@ #define CLEAN_TYPE_PAINT (1 << 7) /// Cleans acid off of the cleanable atom. #define CLEAN_TYPE_ACID (1 << 8) +/// Cleans decals such as dirt and oil off the floor +#define CLEAN_TYPE_LIGHT_DECAL (1 << 9) +/// Cleans decals such as cobwebs off the floor +#define CLEAN_TYPE_HARD_DECAL (1 << 10) // Different cleaning methods. // Use these when calling the wash proc for your cleaning apparatus -#define CLEAN_WASH (CLEAN_TYPE_BLOOD | CLEAN_TYPE_RUNES | CLEAN_TYPE_DISEASE | CLEAN_TYPE_ACID) -#define CLEAN_SCRUB (CLEAN_WASH | CLEAN_TYPE_FINGERPRINTS | CLEAN_TYPE_FIBERS | CLEAN_TYPE_PAINT) +#define CLEAN_WASH (CLEAN_TYPE_BLOOD | CLEAN_TYPE_RUNES | CLEAN_TYPE_DISEASE | CLEAN_TYPE_ACID | CLEAN_TYPE_LIGHT_DECAL) +#define CLEAN_SCRUB (CLEAN_WASH | CLEAN_TYPE_FINGERPRINTS | CLEAN_TYPE_FIBERS | CLEAN_TYPE_PAINT | CLEAN_TYPE_HARD_DECAL) #define CLEAN_RAD CLEAN_TYPE_RADIATION #define CLEAN_ALL (ALL & ~CLEAN_TYPE_WEAK) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index a92c085dac2..0000a937c76 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -6,6 +6,8 @@ var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? var/beauty = 0 + ///The type of cleaning required to clean the decal, CLEAN_TYPE_LIGHT_DECAL can be cleaned with mops and soap, CLEAN_TYPE_HARD_DECAL can be cleaned by soap, see __DEFINES/cleaning.dm for the others + var/clean_type = CLEAN_TYPE_LIGHT_DECAL /obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases) . = ..() @@ -88,9 +90,11 @@ update_icon() /obj/effect/decal/cleanable/wash(clean_types) - ..() - qdel(src) - return TRUE + . = ..() + if (. || (clean_types & clean_type)) + qdel(src) + return TRUE + return . /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY)) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index d947c76f585..8ce3fb14405 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -9,6 +9,7 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL blood_state = BLOOD_STATE_XENO beauty = -250 + clean_type = CLEAN_TYPE_BLOOD /obj/effect/decal/cleanable/xenoblood/Initialize() . = ..() diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm index 989d2919efc..060c171a0ce 100644 --- a/code/game/objects/effects/decals/cleanable/humans.dm +++ b/code/game/objects/effects/decals/cleanable/humans.dm @@ -7,6 +7,7 @@ blood_state = BLOOD_STATE_HUMAN bloodiness = BLOOD_AMOUNT_PER_DECAL beauty = -100 + clean_type = CLEAN_TYPE_BLOOD /obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C) C.add_blood_DNA(return_blood_DNA()) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 4d225656d09..9b52cf456f8 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -108,6 +108,7 @@ icon_state = "cobweb1" resistance_flags = FLAMMABLE beauty = -100 + clean_type = CLEAN_TYPE_HARD_DECAL /obj/effect/decal/cleanable/cobweb/cobweb2 icon_state = "cobweb2" @@ -120,6 +121,7 @@ icon_state = "molten" mergeable_decal = FALSE beauty = -150 + clean_type = CLEAN_TYPE_HARD_DECAL /obj/effect/decal/cleanable/molten_object/large name = "big gooey grey mass" @@ -250,6 +252,7 @@ icon_state = "garbage" layer = OBJ_LAYER //To display the decal over wires. beauty = -150 + clean_type = CLEAN_TYPE_HARD_DECAL /obj/effect/decal/cleanable/garbage/Initialize() . = ..() diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 0606d66f770..359a3c838f8 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -11,6 +11,7 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL mergeable_decal = FALSE beauty = -50 + clean_type = CLEAN_TYPE_BLOOD /obj/effect/decal/cleanable/robot_debris/Initialize() . = ..() @@ -67,6 +68,7 @@ blood_state = BLOOD_STATE_OIL bloodiness = BLOOD_AMOUNT_PER_DECAL beauty = -100 + clean_type = CLEAN_TYPE_BLOOD /obj/effect/decal/cleanable/oil/Initialize() . = ..()