Massive singularity fix:

-engine won't get unlimited floor tiles from reinforced floor and thus won't grow constantly;
-collectors can receive energy from several sings;
-various graphic glitches fixed;
-released singularity can now be catched. In theory.
-singularity cannot be killed by small/far explosion;
-containment field cannot be exploded at all;
-fields and singularity now are immune to blob;
-messages improved;
-machinery fingerprints handling fixed;
-engines 3*3 sings must work now;
-emitters (and some other machines) now really uses power;
-collector arrays and controllers now requires engine access;
-powerful singularity now deal more radiation damage, but you can hide behind walls;
-improved generator's sprites
Miscellaneous: 
-cell chargers now actually consumes power;
-fixed examine verb for tanks;
-fixed airlocks won't opens automatically in rare cases;
-beer now don't instakill plants;
-vents and scrubbers now requires and uses power;
-more user-friendly canisters interface;
Optimizations:
-brig doors now causes lesser cpu load;
-small optimizations and code cleanup for some atmos machinery;



git-svn-id: http://tgstation13.googlecode.com/svn/trunk@691 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
rastaf.zero@gmail.com
2010-12-23 03:31:13 +00:00
parent d6c3063bee
commit 90b9654061
17 changed files with 651 additions and 601 deletions

View File

@@ -29,19 +29,21 @@
var/welded = 0 // Added for aliens -- TLE
update_icon()
if(on&&node)
if(on && !(stat & (NOPOWER|BROKEN)))
if(pump_direction)
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]out"
else
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]in"
else
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]off"
on = 0
return
process()
..()
if(stat & (NOPOWER|BROKEN))
return
if (!node)
on = 0
broadcast_status()
if(!on)
@@ -66,6 +68,7 @@
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
use_power(10, ENVIRON)
loc.assume_air(removed)
if(network)
@@ -84,7 +87,9 @@
var/transfer_moles = pressure_delta*air_contents.volume/(environment.temperature * R_IDEAL_GAS_EQUATION)
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
if (isnull(removed)) //in space
return
use_power(10, ENVIRON)
air_contents.merge(removed)
if(network)
@@ -204,14 +209,13 @@
user << "\blue You need more welding fuel to complete this task."
return
W:use_fuel(1)
playsound(src.loc, 'Welder2.ogg', 50, 1)
if(!welded)
user.visible_message("[user] welds the vent shut.", "You weld the vent shut.")
playsound(src.loc, 'Welder2.ogg', 50, 1)
user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.")
welded = 1
else
user.visible_message("[user] unwelds the vent.", "You unweld the vent.")
playsound(src.loc, 'Welder2.ogg', 50, 1)
user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.")
welded = 0
examine()
@@ -219,3 +223,10 @@
..()
if(welded)
usr << "It seems welded shut."
power_change()
if(powered(ENVIRON))
stat &= ~NOPOWER
else
stat |= NOPOWER
update_icon()

View File

@@ -21,18 +21,15 @@
var/panic = 0 //is this scrubber panicked?
update_icon()
if(on&&node)
if(node && on && !(stat & (NOPOWER|BROKEN)))
if(scrubbing)
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]on"
else
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]in"
else
icon_state = "[level == 1 && istype(loc, /turf/simulated) ? "h" : "" ]off"
on = 0
return
proc
set_frequency(new_frequency)
radio_controller.remove_object(src, "[frequency]")
@@ -66,11 +63,15 @@
process()
..()
if(stat & (NOPOWER|BROKEN))
return
if (!node)
on = 0
broadcast_status()
if(!on)
return 0
var/datum/gas_mixture/environment = loc.return_air()
if(scrubbing)
@@ -79,7 +80,9 @@
//Take a gas sample
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
if (isnull(removed)) //in space
return
use_power(30, ENVIRON)
//Filter it
var/datum/gas_mixture/filtered_out = new
filtered_out.temperature = removed.temperature
@@ -109,6 +112,7 @@
network.update = 1
else //Just siphoning all air
use_power(volume_rate/12, ENVIRON)
var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume)
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
@@ -161,3 +165,10 @@
broadcast_status()
update_icon()
return
power_change()
if(powered(ENVIRON))
stat &= ~NOPOWER
else
stat |= NOPOWER
update_icon()