21 lines
606 B
Plaintext
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)
|