From 3b95ca9568fa6e7e1c4b336a0761d3846d2bb251 Mon Sep 17 00:00:00 2001 From: uporotiy Date: Tue, 3 May 2011 16:03:20 +0000 Subject: [PATCH] Hydroponics Fixed a horrible bug with the replica pods grabbing non-dead players. Wizard Fixed a potential exploit with the teleport spell (object, of course). AIs Fixed another horrible bug of mine, where the death() proc doesn't process past a certain point. Glowshrooms Now drop to the floor when the walls nearby are destroyed. Biomass WIP added. Do NOT spawn them on live servers unless you want colors everywhere. Also my code is horrible and I should feel horrible. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1521 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/mining.dm | 8 ++ code/defines/obj/hydro.dm | 2 +- code/game/gamemodes/wizard/wizard.dm | 2 +- code/game/machinery/hydroponics.dm | 22 ++-- code/game/objects/biomass.dm | 117 ++++++++++++++++++++ code/game/objects/glowshroom.dm | 8 +- code/game/smoothwall.dm | 8 ++ code/modules/mob/dead/observer/observer.dm | 3 +- code/modules/mob/living/silicon/ai/death.dm | 24 ++-- icons/obj/biomass.dmi | Bin 0 -> 7246 bytes tgstation.dme | 1 + 11 files changed, 169 insertions(+), 26 deletions(-) create mode 100644 code/game/objects/biomass.dm create mode 100644 icons/obj/biomass.dmi diff --git a/code/WorkInProgress/mining.dm b/code/WorkInProgress/mining.dm index 237c7a0cf58..1c4990c027e 100644 --- a/code/WorkInProgress/mining.dm +++ b/code/WorkInProgress/mining.dm @@ -750,6 +750,14 @@ proc/move_mining_shuttle() var/turf/simulated/floor/airless/asteroid/W var/old_dir = dir + for(var/direction in cardinal) + for(var/obj/glowshroom/shroom in get_step(src,direction)) + if(!shroom.floor) //shrooms drop to the floor + shroom.floor = 1 + shroom.icon_state = "glowshroomf" + shroom.pixel_x = 0 + shroom.pixel_y = 0 + W = new /turf/simulated/floor/airless/asteroid( locate(src.x, src.y, src.z) ) W.dir = old_dir W.fullUpdateMineralOverlays() diff --git a/code/defines/obj/hydro.dm b/code/defines/obj/hydro.dm index 92e70ac2e21..f3cbcb52989 100644 --- a/code/defines/obj/hydro.dm +++ b/code/defines/obj/hydro.dm @@ -70,7 +70,7 @@ var/se = null var/ckey = null var/realName = null - var/mind = null + var/datum/mind/mind = null gender = "male" /obj/item/seeds/berryseed diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 46c640f4eff..202e9fa2e0f 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -661,7 +661,7 @@ M.mind.special_verbs -= /client/proc/blink else if(spell_type == "object") for(var/obj/spell/spell_to_remove in src.spell_list) - src.spell_list -= spell_to_remove + del(spell_to_remove) /*Checks if the wizard can cast spells. Made a proc so this is not repeated 14 (or more) times.*/ diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index 3f009c88d94..a6936ee0fdd 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -793,7 +793,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) else podman.real_name = "pod person" //No null names!! - if(mind && istype(mind,/datum/mind)) //let's try that + if(mind && istype(mind,/datum/mind) && mind.current.stat == 2) //only transfer dead people's minds mind:transfer_to(podman) mind:original = podman else //welp @@ -841,14 +841,18 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) if(!prob(potency)) //if it fails, plantman! podman.mutantrace = "plant" - else //else, one packet of seeds. ONE. - var/obj/item/seeds/replicapod/harvestseeds = new /obj/item/seeds/replicapod(user.loc) - harvestseeds.lifespan = lifespan - harvestseeds.endurance = endurance - harvestseeds.maturation = maturation - harvestseeds.production = production - harvestseeds.yield = yield - harvestseeds.potency = potency + else //else, one packet of seeds. maybe two + var/seed_count = 1 + if(prob(yield * parent.yieldmod * 20)) + seed_count++ + for(var/i=0,i= maxDistance) + return + switch(dir) + if(NORTHWEST) + dir = NORTH + if(NORTHEAST) + dir = EAST + if(SOUTHWEST) + dir = WEST + if(SOUTHEAST) + dir = SOUTH + sleep(spreadDelay) + Spread() + +/obj/biomass/proc/Spread(var/direction = dir) + var/possibleDirsInt = 0 + + for(var/newDirection in cardinal) + if(newDirection == turn(direction,180)) //can't go backwards + continue + var/turf/T = get_step(loc,newDirection) + if(!IsValidBiomassLoc(T,src)) + continue + possibleDirsInt |= newDirection + + var/list/possibleDirs = list() + + if(possibleDirsInt & direction) + for(var/i=0 , iAlert: The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes." - world << sound('shuttlecalled.ogg') + if(callshuttle == 3) //if all three conditions are met + emergency_shuttle.incall(2) + log_game("All the AIs, comm consoles and boards are destroyed. Shuttle called.") + message_admins("All the AIs, comm consoles and boards are destroyed. Shuttle called.", 1) + world << "\blue Alert: The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes." + world << sound('shuttlecalled.ogg') for(var/obj/machinery/ai_status_display/O in world) //change status spawn( 0 ) diff --git a/icons/obj/biomass.dmi b/icons/obj/biomass.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ffb133f7682c0ba4749e93bcdcdf9332099c128e GIT binary patch literal 7246 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 bMZl{5AFHX=>k9M_LV&umwo