From d335f66f37caa1cc0527bfb0526af17a1b150d33 Mon Sep 17 00:00:00 2001 From: uporotiy Date: Mon, 2 May 2011 17:41:57 +0000 Subject: [PATCH] Hydroponics Correction: They MIGHT stop growing after a while. Also ohmygoddatsahugecallstack fix. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1519 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/hydro.dm | 4 +- code/game/objects/glowshroom.dm | 82 ++++++++++++++++----------------- 2 files changed, 42 insertions(+), 44 deletions(-) diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm index 5fbca5169ba..92e70ac2e21 100644 --- a/code/defines/obj/hydro.dm +++ b/code/defines/obj/hydro.dm @@ -343,7 +343,7 @@ species = "glowshroom" plantname = "Glowshroom" productname = "/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom" - lifespan = 30 //ten times that is the delay + lifespan = 60 //ten times that is the delay endurance = 30 maturation = 15 production = 1 @@ -762,7 +762,7 @@ pickup(src.loc) else src.sd_SetLuminosity(potency/10) - lifespan = 30 //ten times that is the delay + lifespan = 60 //ten times that is the delay endurance = 30 maturation = 15 production = 1 diff --git a/code/game/objects/glowshroom.dm b/code/game/objects/glowshroom.dm index effb5870448..3f07373ceea 100644 --- a/code/game/objects/glowshroom.dm +++ b/code/game/objects/glowshroom.dm @@ -8,7 +8,7 @@ layer = 2.1 var/endurance = 30 var/potency = 30 - var/delay = 300 + var/delay = 600 var/floor = 0 var/yield = 3 var/spreadChance = 80 @@ -45,58 +45,56 @@ /obj/glowshroom/proc/Spread() set background = 1 + var/spreaded = 1 - var/spreaded = 0 + while(spreaded) + spreaded = 0 - for(var/i=1,i<=yield,i++) - if(prob(spreadChance)) - var/list/possibleLocs = list() - var/spreadsIntoAdjacent = 0 + for(var/i=1,i<=yield,i++) + if(prob(spreadChance)) + var/list/possibleLocs = list() + var/spreadsIntoAdjacent = 0 - if(prob(spreadIntoAdjacentChance)) - spreadsIntoAdjacent = 1 + if(prob(spreadIntoAdjacentChance)) + spreadsIntoAdjacent = 1 - for(var/turf/turf in view(3,src)) - if(!turf.density && !istype(turf,/turf/space)) - var/isAdjacent = 0 - if(!spreadsIntoAdjacent) - for(var/obj/glowshroom in view(1,turf)) - isAdjacent = 1 - if(!isAdjacent) - possibleLocs += turf + for(var/turf/turf in view(3,src)) + if(!turf.density && !istype(turf,/turf/space)) + var/isAdjacent = 0 + if(!spreadsIntoAdjacent) + for(var/obj/glowshroom in view(1,turf)) + isAdjacent = 1 + if(!isAdjacent) + possibleLocs += turf - if(!possibleLocs.len) - break + if(!possibleLocs.len) + break - var/turf/newLoc = pick(possibleLocs) + var/turf/newLoc = pick(possibleLocs) - var/shroomCount = 0 //hacky - var/placeCount = 1 - for(var/obj/glowshroom/shroom in newLoc) - shroomCount++ - for(var/wallDir in cardinal) - var/turf/isWall = get_step(newLoc,wallDir) - if(isWall.density) - placeCount++ - if(shroomCount >= placeCount) - continue + var/shroomCount = 0 //hacky + var/placeCount = 1 + for(var/obj/glowshroom/shroom in newLoc) + shroomCount++ + for(var/wallDir in cardinal) + var/turf/isWall = get_step(newLoc,wallDir) + if(isWall.density) + placeCount++ + if(shroomCount >= placeCount) + continue - var/obj/glowshroom/child = new /obj/glowshroom(newLoc) - child.potency = potency - child.yield = yield - child.delay = delay - child.endurance = endurance + var/obj/glowshroom/child = new /obj/glowshroom(newLoc) + child.potency = potency + child.yield = yield + child.delay = delay + child.endurance = endurance - spreaded++ + spreaded++ - if(prob(evolveChance)) //very low chance to evolve on its own - potency += rand(4,6) + if(prob(evolveChance)) //very low chance to evolve on its own + potency += rand(4,6) - sleep(delay) - - if(src) - if(spreaded) - .() + sleep(delay) /obj/glowshroom/proc/CalcDir(turf/location = loc) var/direction = 16