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
This commit is contained in:
johnsonmt88@gmail.com
2012-07-08 19:40:10 +00:00
parent 2e4504ba00
commit 52dd7b3af5
14 changed files with 114 additions and 134 deletions

View File

@@ -17,7 +17,9 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
anchored = 1 anchored = 1
Bump(atom/clong) 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) if(clong.density)
clong.ex_act(2) clong.ex_act(2)
for (var/mob/O in hearers(src, null)) 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) else del(src)
/proc/immovablerod() /proc/immovablerod()
var/startx = 0 var/startx = 0
var/starty = 0 var/starty = 0
var/endy = 0 var/endy = 0

View File

@@ -17,10 +17,10 @@
..() ..()
for(dir in list(NORTH,EAST,SOUTH,WEST)) for(dir in list(NORTH,EAST,SOUTH,WEST))
computer = locate(/obj/machinery/computer/operating, get_step(src, dir)) computer = locate(/obj/machinery/computer/operating, get_step(src, dir))
if (!isnull(computer)) if (computer)
break break
spawn(100) // spawn(100) //Wont the MC just call this process() before and at the 10 second mark anyway?
process() // process()
/obj/machinery/optable/ex_act(severity) /obj/machinery/optable/ex_act(severity)

View File

@@ -361,8 +361,9 @@
set category = "Object" set category = "Object"
set src in oview(1) set src in oview(1)
if(usr.stat != 0) if(usr.stat != 0 || !(ishuman(usr) || ismonkey(usr)))
return return
if(src.occupant) if(src.occupant)
usr << "\blue <B>The sleeper is already occupied!</B>" usr << "\blue <B>The sleeper is already occupied!</B>"
return return

View File

@@ -166,12 +166,8 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
if(src.cleaning) if(src.cleaning)
return return
var/list/cleanbottargets = list() 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)) for(var/mob/O in viewers(src, null))
O.show_message(text("[src] makes an excited beeping booping sound!"), 1) O.show_message(text("[src] makes an excited beeping booping sound!"), 1)
@@ -236,8 +232,6 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
src.patrol_path = reverselist(src.patrol_path) src.patrol_path = reverselist(src.patrol_path)
else else
patrol_move() patrol_move()
spawn(5)
patrol_move()
return return

View File

@@ -163,10 +163,6 @@
if(src.repairing) if(src.repairing)
return return
var/list/floorbottargets = list() 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.amount <= 0 && ((src.target == null) || !src.target))
if(src.eattiles) if(src.eattiles)
for(var/obj/item/stack/tile/plasteel/T in view(7, src)) for(var/obj/item/stack/tile/plasteel/T in view(7, src))

View File

@@ -252,7 +252,7 @@
src.path = new() src.path = new()
if(!src.patient) 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!") 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) src.speak(message)

View File

@@ -111,7 +111,6 @@
if(stat & (NOPOWER|BROKEN)) if(stat & (NOPOWER|BROKEN))
return return
src.updateDialog() src.updateDialog()
return return

View File

@@ -26,10 +26,6 @@
interact(user) interact(user)
process()
return
power_change() power_change()
if(stat & BROKEN) if(stat & BROKEN)
icon_state = "broken" icon_state = "broken"

View File

@@ -97,12 +97,13 @@
onclose(user, "computer") onclose(user, "computer")
return 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)) if(stat & (NOPOWER|BROKEN))
return return
use_power(500) use_power(500)
src.updateDialog() src.updateDialog()
return return*/
/obj/machinery/computer/robotics/Topic(href, href_list) /obj/machinery/computer/robotics/Topic(href, href_list)
if(..()) if(..())

View File

@@ -50,9 +50,6 @@
del(src) del(src)
return return
/obj/machinery/dispenser/process()
return
/obj/machinery/dispenser/attack_ai(mob/user as mob) /obj/machinery/dispenser/attack_ai(mob/user as mob)
return src.attack_hand(user) return src.attack_hand(user)

View File

@@ -41,99 +41,100 @@ obj/machinery/hydroponics/process()
// Advance age // Advance age
src.age++ src.age++
// Drink random amount of water //Nutrients//////////////////////////////////////////////////////////////
src.waterlevel -= rand(1,6)
// Nutrients deplete slowly // Nutrients deplete slowly
if(src.nutrilevel > 0) if(src.nutrilevel > 0)
if(prob(50)) if(prob(50))
src.nutrilevel -= 1 src.nutrilevel -= 1
// Lack of nutrients hurts non-weeds // 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) src.health -= rand(1,3)
// Adjust the water level so it can't go negative //Water//////////////////////////////////////////////////////////////////
if(src.waterlevel < 0) // Drink random amount of water
src.waterlevel = 0 src.waterlevel -= rand(1,6)
// If the plant is dry, it loses health pretty fast, unless mushroom // If the plant is dry, it loses health pretty fast, unless mushroom
if(src.waterlevel <= 0 && src.myseed.plant_type != 2) if(src.waterlevel <= 10 && src.myseed.plant_type != 2)
src.health -= rand(1,3)
else if(src.waterlevel <= 10 && src.myseed.plant_type != 2)
src.health -= rand(0,1) 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 // Too much toxins cause harm, but when the plant drinks the contaiminated water, the toxins disappear slowly
if(src.toxic >= 40 && src.toxic < 80) if(src.toxic >= 40 && src.toxic < 80)
src.health -= 1 src.health -= 1
src.toxic -= rand(1,10) 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.health -= 3
src.toxic -= rand(1,10) 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 //Pests & Weeds//////////////////////////////////////////////////////////
if(src.waterlevel > 10 && src.nutrilevel > 0)
src.health += rand(1,2)
// Too many pests cause the plant to be sick // 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 src.health -= 1
// If it's a weed, it doesn't stunt the growth // If it's a weed, it doesn't stunt the growth
if(src.weedlevel >= 5 && src.myseed.plant_type != 1 ) if(src.weedlevel >= 5 && src.myseed.plant_type != 1 )
src.health -= 1 src.health -= 1
//Health & Age///////////////////////////////////////////////////////////
// Don't go overboard with the health // Don't go overboard with the health
if(src.health > src.myseed.endurance) if(src.health > src.myseed.endurance)
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 the plant is too old, lose health fast
if(src.age > src.myseed.lifespan) if(src.age > src.myseed.lifespan)
src.health -= rand(1,5) 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 // Harvest code
if(src.age > src.myseed.production && (src.age - src.lastproduce) > src.myseed.production && (!src.harvest && !src.dead)) if(mutmod && src.age > src.myseed.production && (src.age - src.lastproduce) > src.myseed.production && (!src.harvest && !src.dead))
var/m_count = 0 for(var/i = 0; i < mutmod; i++)
while(m_count < src.mutmod)
if(prob(85)) if(prob(85))
src.mutate() src.mutate()
else if(prob(30)) else if(prob(30))
src.hardmutate() src.hardmutate()
else if(prob(5)) else if(prob(5))
src.mutatespecie() src.mutatespecie()
m_count++;
if(src.yieldmod > 0 && src.myseed.yield != -1) // Unharvestable shouldn't be harvested if(src.yieldmod > 0 && src.myseed.yield != -1) // Unharvestable shouldn't be harvested
src.harvest = 1 src.harvest = 1
else else
src.lastproduce = src.age src.lastproduce = src.age
if(prob(5)) // On each tick, there's a 5 percent chance the pest population will increase if(prob(5)) // On each tick, there's a 5 percent chance the pest population will increase
src.pestlevel += 1 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 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 src.weedlevel += 1
if(src.weedlevel > 10)
// 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 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
// Weeeeeeeeeeeeeeedddssss // 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.planted)
if(src.myseed.plant_type == 0) // If a normal plant if(src.myseed.plant_type == 0) // If a normal plant
src.weedinvasion() src.weedinvasion()

View File

@@ -40,10 +40,6 @@
else else
stat |= NOPOWER stat |= NOPOWER
/obj/machinery/robotic_fabricator/process()
if (stat & (NOPOWER | BROKEN))
return
/obj/machinery/robotic_fabricator/attack_paw(user as mob) /obj/machinery/robotic_fabricator/attack_paw(user as mob)
return src.attack_hand(user) return src.attack_hand(user)

View File

@@ -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 /obj/machinery/shield
name = "shield" name = "shield"
desc = "An energy shield." desc = "An energy shield."
@@ -64,16 +26,28 @@
var/obj/machinery/shieldwallgen/gen_secondary 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() /obj/machinery/shieldgen/Del()
for(var/obj/machinery/shield/shield_tile in deployed_shields) for(var/obj/machinery/shield/shield_tile in deployed_shields)
del(shield_tile) del(shield_tile)
..() ..()
/obj/machinery/shieldgen/var/list/obj/machinery/shield/deployed_shields
/obj/machinery/shieldgen/proc /obj/machinery/shieldgen/proc/shields_up()
shields_up()
if(active) return 0 if(active) return 0
for(var/turf/target_tile in range(2, src)) for(var/turf/target_tile in range(2, src))
@@ -87,7 +61,7 @@
spawn src.process() spawn src.process()
shields_down() /obj/machinery/shieldgen/proc/shields_down()
if(!active) return 0 if(!active) return 0
for(var/obj/machinery/shield/shield_tile in deployed_shields) for(var/obj/machinery/shield/shield_tile in deployed_shields)
@@ -102,11 +76,11 @@
src.icon_state = malfunction ? "shieldonbr":"shieldon" src.icon_state = malfunction ? "shieldonbr":"shieldon"
if(malfunction) if(malfunction)
while(prob(10)) if(prob(10) || deployed_shields)
del(pick(deployed_shields)) del(pick(deployed_shields))
spawn(30) //spawn(30) //The MC does this for us...
src.process() // src.process()
return return
/obj/machinery/shieldgen/proc/checkhp() /obj/machinery/shieldgen/proc/checkhp()
@@ -173,6 +147,30 @@
src.shields_up() src.shields_up()
////FIELD GEN START //shameless copypasta from fieldgen, powersink, and grille ////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() /obj/machinery/shieldwallgen/proc/power()
if(!anchored) if(!anchored)

View File

@@ -317,12 +317,12 @@
src.seconds_electrified-- src.seconds_electrified--
//Pitch to the people! Really sell it! //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) var/slogan = pick(src.slogan_list)
src.speak(slogan) src.speak(slogan)
src.last_slogan = world.time src.last_slogan = world.time
if((prob(2)) && (src.shoot_inventory)) if(src.shoot_inventory && prob(2))
src.throw_item() src.throw_item()
return return