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