[MIRROR] Photosynthesis Component (#10903)

Co-authored-by: Will <7099514+Willburd@users.noreply.github.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-05-16 19:52:23 +02:00
committed by GitHub
co-authored by Will Kashargul
parent 56e9fc0c0e
commit 462c1cf84f
5 changed files with 30 additions and 8 deletions
@@ -0,0 +1,28 @@
// 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/mob/living/owner
var/nutrition_max = 1000
/datum/component/photosynth/Initialize()
if(!isliving(parent))
return COMPONENT_INCOMPATIBLE
owner = parent
RegisterSignal(owner, COMSIG_LIVING_LIFE, PROC_REF(process_component))
/datum/component/photosynth/proc/process_component()
if(QDELETED(parent))
return
if(owner.stat == DEAD)
return
if(!isturf(owner.loc))
return
if(owner.nutrition >= nutrition_max)
return
var/turf/T = owner.loc
owner.adjust_nutrition(T.get_lumcount() / 10)
/datum/component/photosynth/Destroy(force = FALSE)
UnregisterSignal(owner, COMSIG_LIVING_LIFE)
owner = null
. = ..()
@@ -1177,12 +1177,6 @@
take_overall_damage(1,1)
else //heal in the dark
heal_overall_damage(1,1)
if(species.photosynthesizing && nutrition < 1000)
var/light_amount = 0
if(isturf(loc))
var/turf/T = loc
light_amount = T.get_lumcount() / 10
adjust_nutrition(light_amount)
// nutrition decrease
if(nutrition <= 0 && species.shrinks && size_multiplier > RESIZE_TINY)
nutrition = 0.1
@@ -244,7 +244,6 @@
var/gluttonous // Can eat some mobs. 1 for mice, 2 for monkeys, 3 for people.
var/soft_landing = FALSE // Can fall down and land safely on small falls.
var/photosynthesizing = FALSE // If we get nutrition from light or not.
var/shrinks = FALSE // If we shrink when we have no nutrition. Not added but here for downstream's sake.
var/grows = FALSE // Same as above but if we grow when >1000 nutrition.
var/crit_mod = 1 // Used for when we go unconscious. Used downstream.
@@ -374,8 +374,8 @@
name = "Photosynthesis"
desc = "Your body is able to produce nutrition from being in light."
cost = 3
var_changes = list("photosynthesizing" = TRUE)
can_take = ORGANICS|SYNTHETICS //Synths actually use nutrition, just with a fancy covering.
added_component_path = /datum/component/photosynth
/datum/trait/positive/rad_resistance
name = "Radiation Resistance"
+1
View File
@@ -545,6 +545,7 @@
#include "code\datums\components\disabilities\tourettes.dm"
#include "code\datums\components\traits\drippy.dm"
#include "code\datums\components\traits\gargoyle.dm"
#include "code\datums\components\traits\photosynth.dm"
#include "code\datums\components\traits\weaver.dm"
#include "code\datums\components\species\shadekin.dm"
#include "code\datums\components\species\xenochimera.dm"