Files
CHOMPStation2/code/datums/components/traits/photosynth.dm
CHOMPStation2StaffMirrorBot dcdaf14079 [MIRROR] Trait Upports & Tweaks (#11941)
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-11-11 00:19:39 +01:00

32 lines
990 B
Plaintext

// If a mob has this component, every life tick it will gain nutrition if it's standing in light up to nutrition_max.
// Extremely good tutorial component if you need an example with no special bells and whistles, and no "gotcha" behaviors.
/datum/component/photosynth
var/nutrition_max = 1000
/datum/component/photosynth/Initialize()
if(!isliving(parent))
return COMPONENT_INCOMPATIBLE
/datum/component/photosynth/RegisterWithParent()
RegisterSignal(parent, COMSIG_LIVING_LIFE, PROC_REF(process_component))
/datum/component/photosynth/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_LIVING_LIFE))
/datum/component/photosynth/proc/process_component()
var/mob/living/owner = parent
if(QDELETED(parent))
return
if(owner.stat == DEAD)
return
if(owner.is_incorporeal())
return
if(owner.inStasisNow())
return
if(!isturf(owner.loc))
return
if(owner.nutrition >= nutrition_max)
return
var/turf/T = owner.loc
owner.adjust_nutrition(T.get_lumcount() / 10)