diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 2d28d3a041..22dd772ebe 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -73,6 +73,8 @@ myseed.adjust_yield(rand(-3,2)) myseed.adjust_production(rand(-3,3)) myseed.endurance = clamp(myseed.endurance + rand(-3,2), 0, 100) // adjust_endurance has a min value of 10, need to edit directly + // Scale health to endurance + max_integrity = obj_integrity = 10 + myseed.endurance / 2 delay_spread = delay_spread - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow) if(ispath(G)) // Seeds were ported to initialize so their genes are still typepaths here, luckily their initializer is smart enough to handle us doing this @@ -193,8 +195,14 @@ /obj/structure/glowshroom/proc/Decay(spread, amount) if (spread) // Decay due to spread myseed.endurance -= amount + max_integrity = min(max_integrity, 10 + myseed.endurance / 2) + if(obj_integrity > max_integrity) + obj_integrity = max_integrity else // Timed decay myseed.endurance -= 1 + max_integrity = min(max_integrity, 10 + myseed.endurance / 2) + if(obj_integrity > max_integrity) + obj_integrity = max_integrity if (myseed.endurance > 0) addtimer(CALLBACK(src, .proc/Decay), delay_decay, FALSE) // Recall decay timer return