Files
GS13NG/code/datums/elements/dusts_on_leaving_area.dm
SandPoot 40f1d7401d procs
2023-11-29 22:40:13 -03:00

21 lines
606 B
Plaintext

/datum/element/dusts_on_leaving_area
element_flags = ELEMENT_DETACH | ELEMENT_BESPOKE
id_arg_index = 2
var/list/area_types = list()
/datum/element/dusts_on_leaving_area/Attach(datum/target,types)
. = ..()
if(!ismob(target))
return ELEMENT_INCOMPATIBLE
area_types = types
RegisterSignal(target,COMSIG_ENTER_AREA, PROC_REF(check_dust))
/datum/element/dusts_on_leaving_area/Detach(mob/M)
. = ..()
UnregisterSignal(M,COMSIG_ENTER_AREA)
/datum/element/dusts_on_leaving_area/proc/check_dust(datum/source, area/A)
var/mob/M = source
if(istype(M) && !(A.type in area_types))
M.dust(force = TRUE)