Merge pull request #6134 from PsiOmegaDelta/Construction

Fixes #6130
This commit is contained in:
Chinsky
2014-08-25 22:12:28 +04:00
5 changed files with 153 additions and 90 deletions

View File

@@ -79,11 +79,11 @@ var/list/ghostteleportlocs = list()
/hook/startup/proc/setupGhostTeleportLocs()
for(var/area/AR in world)
if(ghostteleportlocs.Find(AR.name)) continue
if(istype(AR, /area/turret_protected/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome))
if(istype(AR, /area/turret_protected/aisat) || istype(AR, /area/derelict) || istype(AR, /area/tdome) || istype(AR, /area/shuttle/specops/centcom))
ghostteleportlocs += AR.name
ghostteleportlocs[AR.name] = AR
var/turf/picked = pick(get_area_turfs(AR.type))
if (picked.z == 1 || picked.z == 5 || picked.z == 3)
if (picked.z == 1 || picked.z == 3 || picked.z == 4 || picked.z == 5)
ghostteleportlocs += AR.name
ghostteleportlocs[AR.name] = AR
@@ -1505,11 +1505,11 @@ var/list/ghostteleportlocs = list()
/area/djstation
name = "\improper Listening Post"
icon_state = "DJ"
icon_state = "LP"
/area/djstation/solars
name = "\improper Listening Post Solars"
icon_state = "DJ"
icon_state = "LPS"
//DERELICT

View File

@@ -102,6 +102,14 @@
var/temperature_dangerlevel = 0
var/other_dangerlevel = 0
var/apply_danger_level = 1
var/post_alert = 1
/obj/machinery/alarm/monitor
apply_danger_level = 0
breach_detection = 0
post_alert = 0
/obj/machinery/alarm/server/New()
..()
req_access = list(access_rd, access_atmospherics, access_engine_equip)
@@ -216,7 +224,7 @@
regulating_temperature = 0
visible_message("\The [src] clicks quietly as it stops [environment.temperature > target_temperature ? "cooling" : "heating"] the room.",\
"You hear a click as a faint electronic humming stops.")
if (regulating_temperature)
if(target_temperature > T0C + MAX_TEMPERATURE)
target_temperature = T0C + MAX_TEMPERATURE
@@ -227,26 +235,26 @@
var/datum/gas_mixture/gas
gas = environment.remove(0.25*environment.total_moles)
if(gas)
if (gas.temperature <= target_temperature) //gas heating
var/energy_used = min( gas.get_thermal_energy_change(target_temperature) , active_power_usage)
gas.add_thermal_energy(energy_used)
//use_power(energy_used, ENVIRON) //handle by update_use_power instead
else //gas cooling
var/heat_transfer = min(abs(gas.get_thermal_energy_change(target_temperature)), active_power_usage)
//Assume the heat is being pumped into the hull which is fixed at 20 C
//none of this is really proper thermodynamics but whatever
var/cop = gas.temperature/T20C //coefficient of performance -> power used = heat_transfer/cop
heat_transfer = min(heat_transfer, cop * active_power_usage) //this ensures that we don't use more than active_power_usage amount of power
heat_transfer = -gas.add_thermal_energy(-heat_transfer) //get the actual heat transfer
//use_power(heat_transfer / cop, ENVIRON) //handle by update_use_power instead
environment.merge(gas)
/obj/machinery/alarm/proc/overall_danger_level(var/datum/gas_mixture/environment)
@@ -412,7 +420,7 @@
for (var/area/RA in alarm_area.related)
for (var/obj/machinery/alarm/AA in RA)
AA.mode = mode
switch(mode)
if(AALARM_MODE_SCRUBBING)
for(var/device_id in alarm_area.air_scrub_names)
@@ -445,12 +453,15 @@
send_signal(device_id, list("power"= 0) )
/obj/machinery/alarm/proc/apply_danger_level(var/new_danger_level)
if (alarm_area.atmosalert(new_danger_level))
if (apply_danger_level && alarm_area.atmosalert(new_danger_level))
post_alert(new_danger_level)
update_icon()
/obj/machinery/alarm/proc/post_alert(alert_level)
if(!post_alert)
return
var/datum/radio_frequency/frequency = radio_controller.return_frequency(alarm_frequency)
if(!frequency)
return

View File

@@ -111,3 +111,7 @@
/obj/machinery/alarm/isolation
name = "Isolation room air control"
req_one_access = list(access_research, access_atmospherics, access_engine_equip)
/obj/machinery/alarm/monitor/isolation
name = "Isolation cell air monitor"
req_one_access = list(access_research, access_atmospherics, access_engine_equip)