Files
Paradise/code/datums/elements/earhealing.dm
Contrabang 744d9c6bed Ports and Adapts TGUI strip panel from TG (#24618)
* part 1

* these also

* fuckin nuke it

* more

* more stuff

* more crap

* wow

* holy fucking shit, it works

* thats a start

* oops

* fubing bundle

* hahah brrrrr

* I LITERALLY ADDED IT BACK, FUCK OFF GIT

* yeah more changes

* hide abstract

* blamo

* thats enough for today

* old code begone

* goodbye can_strip

* nearly there

* finally

* fuckin finally

* review

* tgui

* unbreak shit

* fix OD

* okay, that should fix the last thing

* remove hover on nodrop, fix early interacting
2024-04-08 21:40:11 +00:00

37 lines
1.1 KiB
Plaintext

/datum/element/earhealing
element_flags = ELEMENT_DETACH_ON_HOST_DESTROY
var/list/user_by_item = list()
/datum/element/earhealing/New()
START_PROCESSING(SSdcs, src)
/datum/element/earhealing/Attach(datum/target)
. = ..()
if(!isitem(target))
return ELEMENT_INCOMPATIBLE
RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), PROC_REF(equippedChanged))
/datum/element/earhealing/Detach(datum/target)
. = ..()
UnregisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
user_by_item -= target
/datum/element/earhealing/proc/equippedChanged(datum/source, mob/living/carbon/user, slot)
SIGNAL_HANDLER
if(((slot == SLOT_HUD_LEFT_EAR) || (slot == SLOT_HUD_RIGHT_EAR)) && istype(user))
user_by_item[source] = user
else
user_by_item -= source
/datum/element/earhealing/process()
for(var/i in user_by_item)
var/mob/living/carbon/user = user_by_item[i]
var/obj/item/organ/internal/ears/ears = user.get_int_organ(/obj/item/organ/internal/ears)
if(!ears || HAS_TRAIT_NOT_FROM(user, TRAIT_DEAF, EAR_DAMAGE))
continue
user.AdjustDeaf(-1 SECONDS)
ears.heal_internal_damage(0.025)
CHECK_TICK