From 52dd7b3af5320c511fa876a5cc747249cd9c304a Mon Sep 17 00:00:00 2001 From: "johnsonmt88@gmail.com" Date: Sun, 8 Jul 2012 19:40:10 +0000 Subject: [PATCH] Cleaning up machine process()s But first! Unrelated to process(): - Only humans and monkeys can move into sleepers. - Immovable rods no longer delete themselves if they hit a shuttle. Instead they act as if the shuttle doesn't exist. This should help cut down on rods deleting themselves before going through the station. And now back to our regularly scheduled programming... Removed process() that were doing nothing from: - Dispenser(the one that dispenses O2 and Plasma tanks) - Robotic Fabricators - Crew Monitoring computer Reworked hydroponic's process(). - Merged if statements together since most of them lacked "else if"s or were duplicate checks. - Changed a while loop into a for loop as sloppy coding or an admin var-editing could cause an infinite loop. Removed a sleep(100) { process() } from the operating table's constructor as the MC will call process() regardless. Cleaned up shieldgen.dm - Changed a while loop into an if statement. The loop was unnecessary - Moved some stuff around so it's not nearly as confusing. - Standardized the proc and variable definitions. - These are not currently in-game but they are amazing items. I'll see about sorting out their bugs and getting them in proper working order. Removed a for(var in world) from - cleanbot process() - floorbot process() Removed computer/engine/process() from robot/computer code - /obj/machinery/computer/engine does not exist in the first place... Note: These are only some of the machinery process()s. I didn't want to potentially break too much at once. More to come. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4017 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/gamemodes/events/clang.dm | 5 +- code/game/machinery/OpTable.dm | 6 +- code/game/machinery/Sleeper.dm | 3 +- code/game/machinery/bots/cleanbot.dm | 8 +- code/game/machinery/bots/floorbot.dm | 4 - code/game/machinery/bots/medbot.dm | 2 +- code/game/machinery/computer/aifixer.dm | 1 - code/game/machinery/computer/crew.dm | 4 - code/game/machinery/computer/robot.dm | 5 +- code/game/machinery/dispenser.dm | 3 - code/game/machinery/hydroponics.dm | 81 ++++++++-------- code/game/machinery/robot_fabricator.dm | 4 - code/game/machinery/shieldgen.dm | 118 ++++++++++++------------ code/game/machinery/vending.dm | 4 +- 14 files changed, 114 insertions(+), 134 deletions(-) diff --git a/code/game/gamemodes/events/clang.dm b/code/game/gamemodes/events/clang.dm index ed8bea49867..a2d2cf7d8ec 100644 --- a/code/game/gamemodes/events/clang.dm +++ b/code/game/gamemodes/events/clang.dm @@ -17,7 +17,9 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 anchored = 1 Bump(atom/clong) - if (istype(clong, /turf) && !istype(clong, /turf/simulated/shuttle) && !istype(clong, /turf/unsimulated)) + if(istype(clong, /turf/simulated/shuttle)) //Skip shuttles without actually deleting the rod + return + if (istype(clong, /turf) && !istype(clong, /turf/unsimulated)) if(clong.density) clong.ex_act(2) for (var/mob/O in hearers(src, null)) @@ -35,7 +37,6 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 else del(src) /proc/immovablerod() - var/startx = 0 var/starty = 0 var/endy = 0 diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 230c5d9a85b..edda127f636 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -17,10 +17,10 @@ ..() for(dir in list(NORTH,EAST,SOUTH,WEST)) computer = locate(/obj/machinery/computer/operating, get_step(src, dir)) - if (!isnull(computer)) + if (computer) break - spawn(100) - process() +// spawn(100) //Wont the MC just call this process() before and at the 10 second mark anyway? +// process() /obj/machinery/optable/ex_act(severity) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 5a861246e82..8bb84a1a918 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -361,8 +361,9 @@ set category = "Object" set src in oview(1) - if(usr.stat != 0) + if(usr.stat != 0 || !(ishuman(usr) || ismonkey(usr))) return + if(src.occupant) usr << "\blue The sleeper is already occupied!" return diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 4676e80c503..a9bbe7b8a0e 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -166,12 +166,8 @@ text("[src.oddbutton ? "Yes" : "No" if(src.cleaning) return var/list/cleanbottargets = list() - if(!src.target || src.target == null) - for(var/obj/machinery/bot/cleanbot/bot in world) - if(bot != src) - cleanbottargets += bot.target - if(prob(5) && !src.screwloose && !src.oddbutton) + if(!src.screwloose && !src.oddbutton && prob(5)) for(var/mob/O in viewers(src, null)) O.show_message(text("[src] makes an excited beeping booping sound!"), 1) @@ -236,8 +232,6 @@ text("[src.oddbutton ? "Yes" : "No" src.patrol_path = reverselist(src.patrol_path) else patrol_move() - spawn(5) - patrol_move() return diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index f54c646c148..7716cd5475b 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -163,10 +163,6 @@ if(src.repairing) return var/list/floorbottargets = list() - if(!src.target || src.target == null) - for(var/obj/machinery/bot/floorbot/bot in world) - if(bot != src) - floorbottargets += bot.target if(src.amount <= 0 && ((src.target == null) || !src.target)) if(src.eattiles) for(var/obj/item/stack/tile/plasteel/T in view(7, src)) diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 743181b88fc..350503888ab 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -252,7 +252,7 @@ src.path = new() if(!src.patient) - if(prob(1) && (!src.shut_up)) + if(!src.shut_up && prob(1)) var/message = pick("Radar, put a mask on!","There's always a catch, and it's the best there is.","I knew it, I should've been a plastic surgeon.","What kind of medbay is this? Everyone's dropping like dead flies.","Delicious!") src.speak(message) diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 5ab00165803..75e136f0b2e 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -111,7 +111,6 @@ if(stat & (NOPOWER|BROKEN)) return - src.updateDialog() return diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index d1646749e77..d6d800fa7e2 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -26,10 +26,6 @@ interact(user) - process() - return - - power_change() if(stat & BROKEN) icon_state = "broken" diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 202ff597a54..e1cc180cb60 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -97,12 +97,13 @@ onclose(user, "computer") return -/obj/machinery/computer/engine/process() +//Why is this in robot/computer and why does it exist when /obj/machinery/computer/engine does not? -Nodrak +/*/obj/machinery/computer/engine/process() if(stat & (NOPOWER|BROKEN)) return use_power(500) src.updateDialog() - return + return*/ /obj/machinery/computer/robotics/Topic(href, href_list) if(..()) diff --git a/code/game/machinery/dispenser.dm b/code/game/machinery/dispenser.dm index 868e8061d3c..f7de060a2f0 100644 --- a/code/game/machinery/dispenser.dm +++ b/code/game/machinery/dispenser.dm @@ -50,9 +50,6 @@ del(src) return -/obj/machinery/dispenser/process() - return - /obj/machinery/dispenser/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index abf366ea316..d3139cce528 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -41,99 +41,100 @@ obj/machinery/hydroponics/process() // Advance age src.age++ - // Drink random amount of water - src.waterlevel -= rand(1,6) - +//Nutrients////////////////////////////////////////////////////////////// // Nutrients deplete slowly if(src.nutrilevel > 0) if(prob(50)) src.nutrilevel -= 1 // Lack of nutrients hurts non-weeds - if(src.nutrilevel == 0 && src.myseed.plant_type != 1) + if(src.nutrilevel <= 0 && src.myseed.plant_type != 1) src.health -= rand(1,3) - // Adjust the water level so it can't go negative - if(src.waterlevel < 0) - src.waterlevel = 0 +//Water////////////////////////////////////////////////////////////////// + // Drink random amount of water + src.waterlevel -= rand(1,6) // If the plant is dry, it loses health pretty fast, unless mushroom - if(src.waterlevel <= 0 && src.myseed.plant_type != 2) - src.health -= rand(1,3) - else if(src.waterlevel <= 10 && src.myseed.plant_type != 2) + if(src.waterlevel <= 10 && src.myseed.plant_type != 2) src.health -= rand(0,1) + if(src.waterlevel <= 0) + src.health -= rand(0,2) + if(src.waterlevel < 0) //Dont let it drop below 0 + src.waterlevel = 0 + + // Sufficient water level and nutrient level = plant healthy + else if(src.waterlevel > 10 && src.nutrilevel > 0) + src.health += rand(1,2) + if(prob(5)) //5 percent chance the weed population will increase + src.weedlevel += 1 +//Toxins///////////////////////////////////////////////////////////////// // Too much toxins cause harm, but when the plant drinks the contaiminated water, the toxins disappear slowly if(src.toxic >= 40 && src.toxic < 80) src.health -= 1 src.toxic -= rand(1,10) - if(src.toxic >= 80) // I don't think it ever gets here tbh unless above is commented out + else if(src.toxic >= 80) // I don't think it ever gets here tbh unless above is commented out src.health -= 3 src.toxic -= rand(1,10) + else if(src.toxic < 0) // Make sure it won't go overoboard + src.toxic = 0 - // Sufficient water level and nutrient level = plant healthy - if(src.waterlevel > 10 && src.nutrilevel > 0) - src.health += rand(1,2) +//Pests & Weeds////////////////////////////////////////////////////////// // Too many pests cause the plant to be sick - if(src.pestlevel >= 5) + if (src.pestlevel > 10 ) // Make sure it won't go overoboard + src.pestlevel = 10 + + else if(src.pestlevel >= 5) src.health -= 1 // If it's a weed, it doesn't stunt the growth if(src.weedlevel >= 5 && src.myseed.plant_type != 1 ) src.health -= 1 + +//Health & Age/////////////////////////////////////////////////////////// // Don't go overboard with the health if(src.health > src.myseed.endurance) src.health = src.myseed.endurance + // Plant dies if health <= 0 + else if(src.health <= 0) + src.dead = 1 + src.harvest = 0 + src.weedlevel += 1 // Weeds flourish + src.pestlevel = 0 // Pests die + // If the plant is too old, lose health fast if(src.age > src.myseed.lifespan) src.health -= rand(1,5) - // Plant dies if health = 0 - if(src.health <= 0) - src.dead = 1 - src.harvest = 0 - src.weedlevel += 1 // Weeds flourish - //src.toxic = 0 // Water is still toxic - src.pestlevel = 0 // Pests die - // Harvest code - if(src.age > src.myseed.production && (src.age - src.lastproduce) > src.myseed.production && (!src.harvest && !src.dead)) - var/m_count = 0 - while(m_count < src.mutmod) + if(mutmod && src.age > src.myseed.production && (src.age - src.lastproduce) > src.myseed.production && (!src.harvest && !src.dead)) + for(var/i = 0; i < mutmod; i++) if(prob(85)) src.mutate() else if(prob(30)) src.hardmutate() else if(prob(5)) src.mutatespecie() - m_count++; + if(src.yieldmod > 0 && src.myseed.yield != -1) // Unharvestable shouldn't be harvested src.harvest = 1 else src.lastproduce = src.age if(prob(5)) // On each tick, there's a 5 percent chance the pest population will increase src.pestlevel += 1 - if(prob(5) && src.waterlevel > 10 && src.nutrilevel > 0) // On each tick, there's a 5 percent chance the weed - src.weedlevel += 1 //population will increase, but there needs to be water/nuts for that! else - if(prob(10) && src.waterlevel > 10 && src.nutrilevel > 0) // If there's no plant, the percentage chance is 10% + if(src.waterlevel > 10 && src.nutrilevel > 0 && prob(10)) // If there's no plant, the percentage chance is 10% src.weedlevel += 1 - - // These (v) wouldn't be necessary if additional checks were made earlier (^) - - if (src.weedlevel > 10) // Make sure it won't go overoboard - src.weedlevel = 10 - if (src.toxic < 0) // Make sure it won't go overoboard - src.toxic = 0 - if (src.pestlevel > 10 ) // Make sure it won't go overoboard - src.pestlevel = 10 + if(src.weedlevel > 10) + src.weedlevel = 10 // Weeeeeeeeeeeeeeedddssss - if (prob(50) && src.weedlevel == 10) // At this point the plant is kind of fucked. Weeds can overtake the plant spot. + if (src.weedlevel >= 10 && prob(50)) // At this point the plant is kind of fucked. Weeds can overtake the plant spot. if(src.planted) if(src.myseed.plant_type == 0) // If a normal plant src.weedinvasion() diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 4e0930476f6..f820e3a0340 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -40,10 +40,6 @@ else stat |= NOPOWER -/obj/machinery/robotic_fabricator/process() - if (stat & (NOPOWER | BROKEN)) - return - /obj/machinery/robotic_fabricator/attack_paw(user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 9bb05f46583..8b2162ec651 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -1,41 +1,3 @@ -/obj/machinery/shieldgen - name = "Shield generator" - desc = "Used to seal minor hull breaches." - icon = 'objects.dmi' - icon_state = "shieldoff" - var/active = 0 - var/health = 100 - var/malfunction = 0 - density = 1 - opacity = 0 - anchored = 0 - pressure_resistance = 2*ONE_ATMOSPHERE - -#define maxstoredpower 500 -/obj/machinery/shieldwallgen - name = "Shield Generator" - desc = "A shield generator." - icon = 'stationobjs.dmi' - icon_state = "Shield_Gen" - anchored = 0 - density = 1 - req_access = list(access_security) - var/active = 0 - var/power = 0 - var/state = 0 - var/steps = 0 - var/last_check = 0 - var/check_delay = 10 - var/recalc = 0 - var/locked = 1 - var/destroyed = 0 - var/directwired = 1 -// var/maxshieldload = 200 - var/obj/structure/cable/attached // the attached cable - var/storedpower = 0 - flags = FPRINT | CONDUCT - use_power = 0 - /obj/machinery/shield name = "shield" desc = "An energy shield." @@ -64,49 +26,61 @@ var/obj/machinery/shieldwallgen/gen_secondary +/obj/machinery/shieldgen + name = "Shield generator" + desc = "Used to seal minor hull breaches." + icon = 'objects.dmi' + icon_state = "shieldoff" + density = 1 + opacity = 0 + anchored = 0 + pressure_resistance = 2*ONE_ATMOSPHERE + var/active = 0 + var/health = 100 + var/malfunction = 0 + var/list/obj/machinery/shield/deployed_shields + /obj/machinery/shieldgen/Del() for(var/obj/machinery/shield/shield_tile in deployed_shields) del(shield_tile) ..() -/obj/machinery/shieldgen/var/list/obj/machinery/shield/deployed_shields -/obj/machinery/shieldgen/proc - shields_up() - if(active) return 0 +/obj/machinery/shieldgen/proc/shields_up() + if(active) return 0 - for(var/turf/target_tile in range(2, src)) - if (istype(target_tile,/turf/space) && !(locate(/obj/machinery/shield) in target_tile)) - if (malfunction && prob(33) || !malfunction) - deployed_shields += new /obj/machinery/shield(target_tile) + for(var/turf/target_tile in range(2, src)) + if (istype(target_tile,/turf/space) && !(locate(/obj/machinery/shield) in target_tile)) + if (malfunction && prob(33) || !malfunction) + deployed_shields += new /obj/machinery/shield(target_tile) - src.anchored = 1 - src.active = 1 - src.icon_state = malfunction ? "shieldonbr":"shieldon" + src.anchored = 1 + src.active = 1 + src.icon_state = malfunction ? "shieldonbr":"shieldon" - spawn src.process() + spawn src.process() - shields_down() - if(!active) return 0 +/obj/machinery/shieldgen/proc/shields_down() + if(!active) return 0 - for(var/obj/machinery/shield/shield_tile in deployed_shields) - del(shield_tile) + for(var/obj/machinery/shield/shield_tile in deployed_shields) + del(shield_tile) - src.anchored = 0 - src.active = 0 - src.icon_state = malfunction ? "shieldoffbr":"shieldoff" + src.anchored = 0 + src.active = 0 + src.icon_state = malfunction ? "shieldoffbr":"shieldoff" /obj/machinery/shieldgen/process() if(active) src.icon_state = malfunction ? "shieldonbr":"shieldon" if(malfunction) - while(prob(10)) + if(prob(10) || deployed_shields) del(pick(deployed_shields)) - spawn(30) - src.process() + //spawn(30) //The MC does this for us... + // src.process() return /obj/machinery/shieldgen/proc/checkhp() @@ -173,6 +147,30 @@ src.shields_up() ////FIELD GEN START //shameless copypasta from fieldgen, powersink, and grille +#define maxstoredpower 500 +/obj/machinery/shieldwallgen + name = "Shield Generator" + desc = "A shield generator." + icon = 'stationobjs.dmi' + icon_state = "Shield_Gen" + anchored = 0 + density = 1 + req_access = list(access_security) + var/active = 0 + var/power = 0 + var/state = 0 + var/steps = 0 + var/last_check = 0 + var/check_delay = 10 + var/recalc = 0 + var/locked = 1 + var/destroyed = 0 + var/directwired = 1 +// var/maxshieldload = 200 + var/obj/structure/cable/attached // the attached cable + var/storedpower = 0 + flags = FPRINT | CONDUCT + use_power = 0 /obj/machinery/shieldwallgen/proc/power() if(!anchored) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index b43730a311b..5cd3d71918e 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -317,12 +317,12 @@ src.seconds_electrified-- //Pitch to the people! Really sell it! - if(prob(5) && ((src.last_slogan + src.slogan_delay) <= world.time) && (src.slogan_list.len > 0) && (!src.shut_up)) + if(((src.last_slogan + src.slogan_delay) <= world.time) && (src.slogan_list.len > 0) && (!src.shut_up) && prob(5)) var/slogan = pick(src.slogan_list) src.speak(slogan) src.last_slogan = world.time - if((prob(2)) && (src.shoot_inventory)) + if(src.shoot_inventory && prob(2)) src.throw_item() return