Files
CHOMPStation2/code/datums/elements/cleaning.dm
2025-06-02 19:18:12 +02:00

38 lines
1.0 KiB
Plaintext

/datum/element/cleaning
/datum/element/cleaning/Attach(datum/target)
. = ..()
if(!ismovable(target))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(clean))
/datum/element/cleaning/Detach(datum/target)
. = ..()
UnregisterSignal(target, COMSIG_MOVABLE_MOVED)
/datum/element/cleaning/proc/clean(datum/source)
SIGNAL_HANDLER
var/atom/movable/AM = source
var/turf/tile = AM.loc
if(!isturf(tile))
return
tile.wash(CLEAN_WASH)
for(var/atom/cleaned as anything in tile)
if(isitem(cleaned))
var/obj/item/cleaned_item = cleaned
if(cleaned_item.w_class <= ITEMSIZE_SMALL)
cleaned_item.wash(CLEAN_SCRUB)
continue
if(istype(cleaned, /obj/effect/decal/cleanable))
var/obj/effect/decal/cleanable/cleaned_decal = cleaned
cleaned_decal.wash(CLEAN_SCRUB)
if(!ishuman(cleaned))
continue
var/mob/living/carbon/human/cleaned_human = cleaned
if(cleaned_human.lying)
cleaned_human.wash(CLEAN_SCRUB)
to_chat(cleaned_human, span_danger("[AM] washes your face!"))