-
-
Notifications
You must be signed in to change notification settings - Fork 444
/
Copy pathupdate_icon_updates_onmob.dm
30 lines (27 loc) · 1.09 KB
/
update_icon_updates_onmob.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//update_icon() may change the onmob icons
//Very good name, I know
/datum/element/update_icon_updates_onmob
element_flags = ELEMENT_BESPOKE
argument_hash_start_idx = 2
///The ITEM_SLOT_X flags to update on the parent mob in additon to the item's slot_flags. (Ex: Passing ITEM_SLOT_HANDCUFFED for sneakers will update the handcuff overlays in addition to ITEM_SLOT_FEET's overlays when their icon changes.)
var/update_flags = NONE
///Should the element call [/mob/proc/update_body()] in addition to clothing updates?
var/update_body = FALSE
/datum/element/update_icon_updates_onmob/Attach(datum/target, flags, body = FALSE)
. = ..()
if(!isitem(target))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, PROC_REF(update_onmob))
update_flags = flags
update_body = body
/datum/element/update_icon_updates_onmob/proc/update_onmob(obj/item/target)
SIGNAL_HANDLER
if(!ismob(target.loc))
return
var/mob/mob = target.loc
if(mob.is_holding(target))
mob.update_inv_hands()
else
mob.update_clothing((target.slot_flags|update_flags))
if(update_body)
mob.update_body()