mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
Merge pull request #15381 from neersighted/runtime_meet_proc
Fix a number of runtimes
This commit is contained in:
@@ -343,5 +343,6 @@
|
||||
C.swap_hand()
|
||||
else
|
||||
var/turf/T = screen_loc2turf(modifiers["screen-loc"], get_turf(usr))
|
||||
T.Click(location, control, params)
|
||||
if(T)
|
||||
T.Click(location, control, params)
|
||||
return 1
|
||||
|
||||
@@ -45,7 +45,8 @@
|
||||
A.mode = 1 // AALARM_MODE_SCRUB
|
||||
A.apply_mode()
|
||||
if(WIRE_ALARM) // Clear alarms.
|
||||
if(A.alarm_area.atmosalert(0, holder))
|
||||
var/area/AA = get_area_master(A)
|
||||
if(AA.atmosalert(0, holder))
|
||||
A.post_alert(0)
|
||||
A.update_icon()
|
||||
|
||||
@@ -66,6 +67,7 @@
|
||||
A.mode = 3 // AALARM_MODE_PANIC
|
||||
A.apply_mode()
|
||||
if(WIRE_ALARM) // Post alarm.
|
||||
if(A.alarm_area.atmosalert(2, holder))
|
||||
var/area/AA = get_area_master(A)
|
||||
if(AA.atmosalert(2, holder))
|
||||
A.post_alert(2)
|
||||
A.update_icon()
|
||||
+2
-2
@@ -172,8 +172,8 @@
|
||||
/mob/proc/set_species(datum/species/mrace, icon_update = 1)
|
||||
return
|
||||
|
||||
/mob/living/carbon/set_species(datum/species/mrace, icon_update = 1)
|
||||
if(has_dna())
|
||||
/mob/living/carbon/set_species(datum/species/mrace = null, icon_update = 1)
|
||||
if(mrace && has_dna())
|
||||
if(dna.species.exotic_blood)
|
||||
var/datum/reagent/EB = dna.species.exotic_blood
|
||||
reagents.del_reagent(initial(EB.id))
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
/datum/objective_item/steal/plasma/check_special_completion(obj/item/weapon/tank/T)
|
||||
var/target_amount = text2num(name)
|
||||
var/found_amount = 0
|
||||
found_amount += T.air_contents.gases["plasma"][MOLES]
|
||||
found_amount += T.air_contents.gases["plasma"] ? T.air_contents.gases["plasma"][MOLES] : 0
|
||||
return found_amount>=target_amount
|
||||
|
||||
|
||||
|
||||
@@ -47,11 +47,6 @@
|
||||
for(var/i in 1 to I)
|
||||
available_chems |= possible_chems[i]
|
||||
|
||||
/obj/machinery/sleeper/Destroy()
|
||||
var/turf/T = loc
|
||||
T.contents += contents
|
||||
return ..()
|
||||
|
||||
/obj/machinery/sleeper/update_icon()
|
||||
if(state_open)
|
||||
icon_state = "sleeper-open"
|
||||
|
||||
@@ -95,18 +95,17 @@
|
||||
|
||||
|
||||
/obj/item/weapon/storage/proc/show_to(mob/user)
|
||||
if(!user.client)
|
||||
return
|
||||
if(user.s_active != src && (user.stat == CONSCIOUS))
|
||||
for(var/obj/item/I in src)
|
||||
if(I.on_found(user))
|
||||
return
|
||||
if(user.s_active)
|
||||
user.s_active.hide_from(user)
|
||||
user.client.screen -= boxes
|
||||
user.client.screen -= closer
|
||||
user.client.screen -= contents
|
||||
user.client.screen += boxes
|
||||
user.client.screen += closer
|
||||
user.client.screen += contents
|
||||
user.client.screen |= boxes
|
||||
user.client.screen |= closer
|
||||
user.client.screen |= contents
|
||||
user.s_active = src
|
||||
is_seeing |= user
|
||||
|
||||
@@ -115,7 +114,6 @@
|
||||
close_all()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/proc/hide_from(mob/user)
|
||||
if(!user.client)
|
||||
return
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#define AALARM_REPORT_TIMEOUT 100
|
||||
|
||||
/obj/machinery/airalarm
|
||||
name = "alarm"
|
||||
name = "air alarm"
|
||||
desc = "A machine that monitors atmosphere levels. Goes off if the area is dangerous."
|
||||
icon = 'icons/obj/monitors.dmi'
|
||||
icon_state = "alarm0"
|
||||
@@ -55,22 +55,18 @@
|
||||
active_power_usage = 8
|
||||
power_channel = ENVIRON
|
||||
req_access = list(access_atmospherics)
|
||||
var/frequency = 1439
|
||||
//var/skipprocess = 0 //Experimenting
|
||||
var/alarm_frequency = 1437
|
||||
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/danger_level = 0
|
||||
var/mode = AALARM_MODE_SCRUBBING
|
||||
|
||||
var/locked = 1
|
||||
var/aidisabled = 0
|
||||
var/shorted = 0
|
||||
var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone
|
||||
|
||||
|
||||
var/mode = AALARM_MODE_SCRUBBING
|
||||
|
||||
var/area_uid
|
||||
var/area/alarm_area
|
||||
var/danger_level = 0
|
||||
var/frequency = 1439
|
||||
var/alarm_frequency = 1437
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
var/list/TLV = list( // Breathable air.
|
||||
"pressure" = new/datum/tlv(ONE_ATMOSPHERE * 0.80, ONE_ATMOSPHERE* 0.90, ONE_ATMOSPHERE * 1.10, ONE_ATMOSPHERE * 1.20), // kPa
|
||||
@@ -106,7 +102,6 @@
|
||||
|
||||
//all air alarms in area are connected via magic
|
||||
/area
|
||||
var/obj/machinery/airalarm/master_air_alarm
|
||||
var/list/air_vent_names = list()
|
||||
var/list/air_scrub_names = list()
|
||||
var/list/air_vent_info = list()
|
||||
@@ -122,18 +117,15 @@
|
||||
buildstage = 0
|
||||
panel_open = 1
|
||||
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
|
||||
pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0
|
||||
pixel_y = (dir & 3)? (dir == 1 ? -24 : 24) : 0
|
||||
|
||||
alarm_area = get_area(loc)
|
||||
if (alarm_area.master)
|
||||
alarm_area = alarm_area.master
|
||||
area_uid = alarm_area.uid
|
||||
if (name == "alarm")
|
||||
name = "[alarm_area.name] Air Alarm"
|
||||
var/area/A = get_area_master(src)
|
||||
if(name == initial(name))
|
||||
name = "[A.name] Air Alarm"
|
||||
|
||||
update_icon()
|
||||
if(ticker && ticker.current_state == 3)//if the game is running
|
||||
src.initialize()
|
||||
initialize()
|
||||
|
||||
/obj/machinery/airalarm/Destroy()
|
||||
if(SSradio)
|
||||
@@ -144,19 +136,6 @@
|
||||
|
||||
/obj/machinery/airalarm/initialize()
|
||||
set_frequency(frequency)
|
||||
if(!master_is_operating())
|
||||
elect_master()
|
||||
|
||||
/obj/machinery/airalarm/proc/master_is_operating()
|
||||
return alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.stat & (NOPOWER|BROKEN))
|
||||
|
||||
/obj/machinery/airalarm/proc/elect_master()
|
||||
for(var/area/A in alarm_area.related)
|
||||
for(var/obj/machinery/airalarm/AA in A)
|
||||
if(!(AA.stat & (NOPOWER|BROKEN)))
|
||||
alarm_area.master_air_alarm = AA
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/airalarm/ui_status(mob/user)
|
||||
if(user.has_unlimited_silicon_privilege && aidisabled)
|
||||
@@ -177,11 +156,13 @@
|
||||
"locked" = locked,
|
||||
"siliconUser" = user.has_unlimited_silicon_privilege,
|
||||
"emagged" = emagged,
|
||||
"atmos_alarm" = alarm_area.atmosalm,
|
||||
"fire_alarm" = alarm_area.fire,
|
||||
"danger_level" = danger_level,
|
||||
)
|
||||
|
||||
var/area/A = get_area(src)
|
||||
data["atmos_alarm"] = A.atmosalm
|
||||
data["fire_alarm"] = A.fire
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
var/datum/gas_mixture/environment = T.return_air()
|
||||
var/datum/tlv/cur_tlv
|
||||
@@ -218,9 +199,9 @@
|
||||
|
||||
if(!locked || user.has_unlimited_silicon_privilege)
|
||||
data["vents"] = list()
|
||||
for(var/id_tag in alarm_area.air_vent_names)
|
||||
var/long_name = alarm_area.air_vent_names[id_tag]
|
||||
var/list/info = alarm_area.air_vent_info[id_tag]
|
||||
for(var/id_tag in A.air_vent_names)
|
||||
var/long_name = A.air_vent_names[id_tag]
|
||||
var/list/info = A.air_vent_info[id_tag]
|
||||
if(!info || info["frequency"] != frequency)
|
||||
continue
|
||||
data["vents"] += list(list(
|
||||
@@ -235,9 +216,9 @@
|
||||
"extdefault"= (info["external"] == ONE_ATMOSPHERE)
|
||||
))
|
||||
data["scrubbers"] = list()
|
||||
for(var/id_tag in alarm_area.air_scrub_names)
|
||||
var/long_name = alarm_area.air_scrub_names[id_tag]
|
||||
var/list/info = alarm_area.air_scrub_info[id_tag]
|
||||
for(var/id_tag in A.air_scrub_names)
|
||||
var/long_name = A.air_scrub_names[id_tag]
|
||||
var/list/info = A.air_scrub_info[id_tag]
|
||||
if(!info || info["frequency"] != frequency)
|
||||
continue
|
||||
data["scrubbers"] += list(list(
|
||||
@@ -314,7 +295,8 @@
|
||||
send_signal(device_id, list("checks" = text2num(params["val"])^2))
|
||||
. = TRUE
|
||||
if("set_external_pressure")
|
||||
var/target = input("New target pressure:", name, alarm_area.air_vent_info[device_id]["external"]) as num|null
|
||||
var/area/A = get_area_master(src)
|
||||
var/target = input("New target pressure:", name, A.air_vent_info[device_id]["external"]) as num|null
|
||||
if(!isnull(target) && !..())
|
||||
send_signal(device_id, list("set_external_pressure" = target))
|
||||
. = TRUE
|
||||
@@ -339,11 +321,13 @@
|
||||
apply_mode()
|
||||
. = TRUE
|
||||
if("alarm")
|
||||
if(alarm_area.atmosalert(2, src))
|
||||
var/area/A = get_area_master(src)
|
||||
if(A.atmosalert(2, src))
|
||||
post_alert(2)
|
||||
. = TRUE
|
||||
if("reset")
|
||||
if(alarm_area.atmosalert(0, src))
|
||||
var/area/A = get_area_master(src)
|
||||
if(A.atmosalert(0, src))
|
||||
post_alert(0)
|
||||
. = TRUE
|
||||
update_icon()
|
||||
@@ -374,16 +358,17 @@
|
||||
return 0
|
||||
|
||||
/obj/machinery/airalarm/proc/refresh_all()
|
||||
for(var/id_tag in alarm_area.air_vent_names)
|
||||
var/list/I = alarm_area.air_vent_info[id_tag]
|
||||
if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time)
|
||||
var/area/A = get_area_master(src)
|
||||
for(var/id_tag in A.air_vent_names)
|
||||
var/list/I = A.air_vent_info[id_tag]
|
||||
if(I && I["timestamp"] + AALARM_REPORT_TIMEOUT / 2 > world.time)
|
||||
continue
|
||||
send_signal(id_tag, list("status") )
|
||||
for(var/id_tag in alarm_area.air_scrub_names)
|
||||
var/list/I = alarm_area.air_scrub_info[id_tag]
|
||||
if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time)
|
||||
send_signal(id_tag, list("status"))
|
||||
for(var/id_tag in A.air_scrub_names)
|
||||
var/list/I = A.air_scrub_info[id_tag]
|
||||
if(I && I["timestamp"] + AALARM_REPORT_TIMEOUT / 2 > world.time)
|
||||
continue
|
||||
send_signal(id_tag, list("status") )
|
||||
send_signal(id_tag, list("status"))
|
||||
|
||||
/obj/machinery/airalarm/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
@@ -408,9 +393,10 @@
|
||||
return 1
|
||||
|
||||
/obj/machinery/airalarm/proc/apply_mode()
|
||||
var/area/A = get_area_master(src)
|
||||
switch(mode)
|
||||
if(AALARM_MODE_SCRUBBING)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"co2_scrub" = 1,
|
||||
@@ -419,14 +405,14 @@
|
||||
"scrubbing" = 1,
|
||||
"widenet" = 0,
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"checks" = 1,
|
||||
"set_external_pressure" = ONE_ATMOSPHERE
|
||||
))
|
||||
if(AALARM_MODE_CONTAMINATED)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"co2_scrub" = 1,
|
||||
@@ -435,27 +421,27 @@
|
||||
"scrubbing" = 1,
|
||||
"widenet" = 1,
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"checks" = 1,
|
||||
"set_external_pressure" = ONE_ATMOSPHERE
|
||||
))
|
||||
if(AALARM_MODE_VENTING)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"widenet" = 0,
|
||||
"scrubbing" = 0
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"checks" = 1,
|
||||
"set_external_pressure" = ONE_ATMOSPHERE*2
|
||||
))
|
||||
if(AALARM_MODE_REFILL)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"co2_scrub" = 1,
|
||||
@@ -464,7 +450,7 @@
|
||||
"scrubbing" = 1,
|
||||
"widenet" = 0,
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"checks" = 1,
|
||||
@@ -472,43 +458,43 @@
|
||||
))
|
||||
if(AALARM_MODE_PANIC,
|
||||
AALARM_MODE_REPLACEMENT)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"widenet" = 1,
|
||||
"scrubbing" = 0
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 0
|
||||
))
|
||||
if(AALARM_MODE_SIPHON)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"widenet" = 0,
|
||||
"scrubbing" = 0
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 0
|
||||
))
|
||||
|
||||
if(AALARM_MODE_OFF)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 0
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 0
|
||||
))
|
||||
if(AALARM_MODE_FLOOD)
|
||||
for(var/device_id in alarm_area.air_scrub_names)
|
||||
for(var/device_id in A.air_scrub_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 0
|
||||
))
|
||||
for(var/device_id in alarm_area.air_vent_names)
|
||||
for(var/device_id in A.air_vent_names)
|
||||
send_signal(device_id, list(
|
||||
"power" = 1,
|
||||
"checks" = 2,
|
||||
@@ -529,21 +515,23 @@
|
||||
if((stat & (NOPOWER|BROKEN)) || shorted)
|
||||
icon_state = "alarmp"
|
||||
return
|
||||
switch(max(danger_level, alarm_area.atmosalm))
|
||||
if (0)
|
||||
src.icon_state = "alarm0"
|
||||
if (1)
|
||||
src.icon_state = "alarm2" //yes, alarm2 is yellow alarm
|
||||
if (2)
|
||||
src.icon_state = "alarm1"
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
switch(max(danger_level, A.atmosalm))
|
||||
if(0)
|
||||
icon_state = "alarm0"
|
||||
if(1)
|
||||
icon_state = "alarm2" //yes, alarm2 is yellow alarm
|
||||
if(2)
|
||||
icon_state = "alarm1"
|
||||
|
||||
/obj/machinery/airalarm/process()
|
||||
if((stat & (NOPOWER|BROKEN)) || shorted)
|
||||
return
|
||||
|
||||
var/turf/simulated/location = src.loc
|
||||
if(!istype(location))
|
||||
return 0
|
||||
var/turf/simulated/location = get_turf(src)
|
||||
if(!location)
|
||||
return
|
||||
|
||||
var/datum/tlv/cur_tlv
|
||||
|
||||
@@ -570,23 +558,25 @@
|
||||
var/old_danger_level = danger_level
|
||||
danger_level = max(pressure_dangerlevel, temperature_dangerlevel, gas_dangerlevel)
|
||||
|
||||
if (old_danger_level != danger_level)
|
||||
if(old_danger_level != danger_level)
|
||||
apply_danger_level()
|
||||
if (mode == AALARM_MODE_REPLACEMENT && environment_pressure < ONE_ATMOSPHERE * 0.05)
|
||||
if(mode == AALARM_MODE_REPLACEMENT && environment_pressure < ONE_ATMOSPHERE * 0.05)
|
||||
mode = AALARM_MODE_SCRUBBING
|
||||
apply_mode()
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/airalarm/proc/post_alert(alert_level)
|
||||
var/datum/radio_frequency/frequency = SSradio.return_frequency(alarm_frequency)
|
||||
|
||||
if(!frequency) return
|
||||
if(!frequency)
|
||||
return
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
|
||||
var/datum/signal/alert_signal = new
|
||||
alert_signal.source = src
|
||||
alert_signal.transmission_method = 1
|
||||
alert_signal.data["zone"] = alarm_area.name
|
||||
alert_signal.data["zone"] = A.name
|
||||
alert_signal.data["type"] = "Atmospheric"
|
||||
|
||||
if(alert_level==2)
|
||||
@@ -599,13 +589,16 @@
|
||||
frequency.post_signal(src, alert_signal,null,-1)
|
||||
|
||||
/obj/machinery/airalarm/proc/apply_danger_level()
|
||||
var/area/A = get_area_master(src)
|
||||
|
||||
var/new_area_danger_level = 0
|
||||
for (var/area/A in alarm_area.related)
|
||||
for (var/obj/machinery/airalarm/AA in A)
|
||||
for(var/area/R in A.related)
|
||||
for(var/obj/machinery/airalarm/AA in R)
|
||||
if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted)
|
||||
new_area_danger_level = max(new_area_danger_level,AA.danger_level)
|
||||
if (alarm_area.atmosalert(new_area_danger_level,src)) //if area was in normal state or if area was in alert state
|
||||
if(A.atmosalert(new_area_danger_level,src)) //if area was in normal state or if area was in alert state
|
||||
post_alert(new_area_danger_level)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/airalarm/attackby(obj/item/W, mob/user, params)
|
||||
|
||||
@@ -6,35 +6,26 @@
|
||||
#define RELEASING 1
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump
|
||||
icon_state = "vent_map"
|
||||
|
||||
name = "air vent"
|
||||
desc = "Has a valve and pump attached to it"
|
||||
icon_state = "vent_map"
|
||||
use_power = 1
|
||||
|
||||
can_unwrench = 1
|
||||
|
||||
welded = 0
|
||||
|
||||
var/area/initial_loc
|
||||
level = 1
|
||||
var/area_uid
|
||||
var/id_tag = null
|
||||
|
||||
var/on = 0
|
||||
var/pump_direction = RELEASING
|
||||
|
||||
var/pressure_checks = EXT_BOUND
|
||||
var/external_pressure_bound = ONE_ATMOSPHERE
|
||||
var/internal_pressure_bound = 0
|
||||
|
||||
var/pressure_checks = EXT_BOUND
|
||||
//EXT_BOUND: Do not pass external_pressure_bound
|
||||
//INT_BOUND: Do not pass internal_pressure_bound
|
||||
//NO_BOUND: Do not pass either
|
||||
|
||||
var/frequency = 1439
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
var/radio_filter_out
|
||||
var/radio_filter_in
|
||||
|
||||
@@ -51,22 +42,19 @@
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/New()
|
||||
..()
|
||||
initial_loc = get_area(loc)
|
||||
if (initial_loc.master)
|
||||
initial_loc = initial_loc.master
|
||||
area_uid = initial_loc.uid
|
||||
if (!id_tag)
|
||||
if(!id_tag)
|
||||
assign_uid()
|
||||
id_tag = num2text(uid)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/Destroy()
|
||||
var/area/A = get_area_master(src)
|
||||
A.air_vent_names -= id_tag
|
||||
A.air_vent_info -= id_tag
|
||||
|
||||
if(SSradio)
|
||||
SSradio.remove_object(src,frequency)
|
||||
radio_connection = null
|
||||
if(initial_loc)
|
||||
initial_loc.air_vent_info -= id_tag
|
||||
initial_loc.air_vent_names -= id_tag
|
||||
initial_loc = null
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume
|
||||
@@ -164,24 +152,23 @@
|
||||
signal.source = src
|
||||
|
||||
signal.data = list(
|
||||
"area" = src.area_uid,
|
||||
"tag" = src.id_tag,
|
||||
"tag" = id_tag,
|
||||
"frequency" = frequency,
|
||||
"device" = "VP",
|
||||
"timestamp" = world.time,
|
||||
"power" = on,
|
||||
"direction" = pump_direction?("release"):("siphon"),
|
||||
"direction" = pump_direction ? "release" : "siphon",
|
||||
"checks" = pressure_checks,
|
||||
"internal" = internal_pressure_bound,
|
||||
"external" = external_pressure_bound,
|
||||
"timestamp" = world.time,
|
||||
"sigtype" = "status"
|
||||
)
|
||||
|
||||
if(!initial_loc.air_vent_names[id_tag])
|
||||
var/new_name = "\improper [initial_loc.name] vent pump #[initial_loc.air_vent_names.len+1]"
|
||||
initial_loc.air_vent_names[id_tag] = new_name
|
||||
src.name = new_name
|
||||
initial_loc.air_vent_info[id_tag] = signal.data
|
||||
var/area/A = get_area_master(src)
|
||||
if(!A.air_vent_names[id_tag])
|
||||
name = "\improper [A.name] vent pump #[A.air_vent_names.len + 1]"
|
||||
A.air_vent_names[id_tag] = name
|
||||
A.air_vent_info[id_tag] = signal.data
|
||||
|
||||
radio_connection.post_signal(src, signal, radio_filter_out)
|
||||
|
||||
@@ -285,10 +272,7 @@
|
||||
user << "It seems welded shut."
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/power_change()
|
||||
if(powered(power_channel))
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
stat |= NOPOWER
|
||||
..()
|
||||
update_icon_nopipes()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/can_crawl_through()
|
||||
|
||||
@@ -2,67 +2,56 @@
|
||||
#define SCRUBBING 1
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber
|
||||
icon_state = "scrub_map"
|
||||
|
||||
name = "air scrubber"
|
||||
desc = "Has a valve and pump attached to it"
|
||||
|
||||
icon_state = "scrub_map"
|
||||
use_power = 1
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 60
|
||||
|
||||
level = 1
|
||||
|
||||
can_unwrench = 1
|
||||
|
||||
welded = 0
|
||||
|
||||
var/area/initial_loc
|
||||
var/id_tag = null
|
||||
var/frequency = 1439
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
var/list/turf/simulated/adjacent_turfs = list()
|
||||
|
||||
var/on = 0
|
||||
var/scrubbing = SCRUBBING //0 = siphoning, 1 = scrubbing
|
||||
|
||||
var/scrub_CO2 = 1
|
||||
var/scrub_Toxins = 0
|
||||
var/scrub_N2O = 0
|
||||
|
||||
var/volume_rate = 200
|
||||
var/widenet = 0 //is this scrubber acting on the 3x3 area around it.
|
||||
var/list/turf/simulated/adjacent_turfs = list()
|
||||
|
||||
var/area_uid
|
||||
var/frequency = 1439
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/radio_filter_out
|
||||
var/radio_filter_in
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/New()
|
||||
..()
|
||||
initial_loc = get_area(loc)
|
||||
if (initial_loc.master)
|
||||
initial_loc = initial_loc.master
|
||||
area_uid = initial_loc.uid
|
||||
if (!id_tag)
|
||||
if(!id_tag)
|
||||
assign_uid()
|
||||
id_tag = num2text(uid)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy()
|
||||
var/area/A = get_area_master(src)
|
||||
A.air_scrub_names -= id_tag
|
||||
A.air_scrub_info -= id_tag
|
||||
|
||||
if(SSradio)
|
||||
SSradio.remove_object(src,frequency)
|
||||
radio_connection = null
|
||||
if(initial_loc)
|
||||
initial_loc.air_scrub_info -= id_tag
|
||||
initial_loc.air_scrub_names -= id_tag
|
||||
initial_loc = null
|
||||
|
||||
for(var/I in adjacent_turfs)
|
||||
I = null
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/auto_use_power()
|
||||
if(!powered(power_channel))
|
||||
return 0
|
||||
if (!on || welded)
|
||||
if(!on || welded)
|
||||
return 0
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return 0
|
||||
@@ -80,7 +69,7 @@
|
||||
amount = active_power_usage
|
||||
|
||||
if (widenet)
|
||||
amount += amount*(adjacent_turfs.len*(adjacent_turfs.len/2))
|
||||
amount += amount * (adjacent_turfs.len * (adjacent_turfs.len / 2))
|
||||
use_power(amount, power_channel)
|
||||
return 1
|
||||
|
||||
@@ -115,7 +104,6 @@
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.source = src
|
||||
signal.data = list(
|
||||
"area" = area_uid,
|
||||
"tag" = id_tag,
|
||||
"frequency" = frequency,
|
||||
"device" = "VS",
|
||||
@@ -128,11 +116,13 @@
|
||||
"filter_n2o" = scrub_N2O,
|
||||
"sigtype" = "status"
|
||||
)
|
||||
if(!initial_loc.air_scrub_names[id_tag])
|
||||
var/new_name = "\improper [initial_loc.name] air scrubber #[initial_loc.air_scrub_names.len+1]"
|
||||
initial_loc.air_scrub_names[id_tag] = new_name
|
||||
src.name = new_name
|
||||
initial_loc.air_scrub_info[id_tag] = signal.data
|
||||
|
||||
var/area/A = get_area_master(src)
|
||||
if(!A.air_scrub_names[id_tag])
|
||||
name = "\improper [A.name] air scrubber #[A.air_scrub_names.len + 1]"
|
||||
A.air_scrub_names[id_tag] = name
|
||||
A.air_scrub_info[id_tag] = signal.data
|
||||
|
||||
radio_connection.post_signal(src, signal, radio_filter_out)
|
||||
|
||||
return 1
|
||||
@@ -140,7 +130,7 @@
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/atmosinit()
|
||||
radio_filter_in = frequency==initial(frequency)?(RADIO_FROM_AIRALARM):null
|
||||
radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null
|
||||
if (frequency)
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
broadcast_status()
|
||||
check_turfs()
|
||||
@@ -159,8 +149,6 @@
|
||||
for (var/turf/simulated/tile in adjacent_turfs)
|
||||
scrub(tile)
|
||||
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/scrub(var/turf/simulated/tile)
|
||||
if (!istype(tile))
|
||||
return 0
|
||||
@@ -245,9 +233,9 @@
|
||||
// diagonal turfs that can share atmos with *both* of the cardinal turfs
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/proc/check_turfs()
|
||||
adjacent_turfs.Cut()
|
||||
var/turf/T = loc
|
||||
if (istype(T))
|
||||
adjacent_turfs = T.GetAtmosAdjacentTurfs(alldir=1)
|
||||
var/turf/T = get_turf(src)
|
||||
if(istype(T))
|
||||
adjacent_turfs = T.GetAtmosAdjacentTurfs(alldir = 1)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/receive_signal(datum/signal/signal)
|
||||
@@ -299,10 +287,7 @@
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/power_change()
|
||||
if(powered(power_channel))
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
stat |= NOPOWER
|
||||
..()
|
||||
update_icon_nopipes()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/attackby(obj/item/weapon/W, mob/user, params)
|
||||
|
||||
@@ -66,13 +66,18 @@
|
||||
desc = "Pre-mixed air."
|
||||
icon_state = "grey"
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/New(loc)
|
||||
/obj/machinery/portable_atmospherics/canister/New(loc, datum/gas_mixture/existing_mixture)
|
||||
..()
|
||||
create_gas()
|
||||
if(existing_mixture)
|
||||
air_contents.copy_from(existing_mixture)
|
||||
else
|
||||
create_gas()
|
||||
|
||||
pump = new(src, FALSE)
|
||||
pump.on = TRUE
|
||||
pump.stat = 0
|
||||
pump.build_network()
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/Destroy()
|
||||
@@ -256,8 +261,7 @@
|
||||
if(label && !..())
|
||||
var/newtype = label2types[label]
|
||||
if(newtype)
|
||||
var/obj/machinery/portable_atmospherics/canister/replacement = new newtype(loc)
|
||||
replacement.air_contents.copy_from(air_contents)
|
||||
var/obj/machinery/portable_atmospherics/canister/replacement = new newtype(loc, air_contents)
|
||||
replacement.interact(usr)
|
||||
qdel(src)
|
||||
if("pressure")
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
icon = 'icons/obj/atmos.dmi'
|
||||
use_power = 0
|
||||
|
||||
var/datum/gas_mixture/air_contents = new
|
||||
var/datum/gas_mixture/air_contents
|
||||
var/obj/machinery/atmospherics/components/unary/portables_connector/connected_port
|
||||
var/obj/item/weapon/tank/holding
|
||||
|
||||
@@ -15,22 +15,27 @@
|
||||
/obj/machinery/portable_atmospherics/New()
|
||||
..()
|
||||
SSair.atmos_machinery += src
|
||||
|
||||
air_contents = new
|
||||
air_contents.volume = volume
|
||||
air_contents.temperature = T20C
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/Destroy()
|
||||
SSair.atmos_machinery -= src
|
||||
|
||||
qdel(air_contents)
|
||||
air_contents = null
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/process_atmos()
|
||||
if(!connected_port) // Pipe network handles reactions if connected.
|
||||
air_contents.react()
|
||||
else
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/portable_atmospherics/Destroy()
|
||||
qdel(air_contents)
|
||||
air_contents = null
|
||||
SSair.atmos_machinery -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/portable_atmospherics/return_air()
|
||||
return air_contents
|
||||
|
||||
|
||||
@@ -89,7 +89,8 @@
|
||||
age = rand(AGE_MIN,AGE_MAX)
|
||||
//job handling
|
||||
var/list/jobs = SSjob.occupations.Copy()
|
||||
for(var/datum/job/J in jobs)
|
||||
for(var/job in jobs)
|
||||
var/datum/job/J = job
|
||||
if(J.title == "Cyborg" || J.title == "AI" || J.title == "Chaplain" || J.title == "Mime")
|
||||
jobs -= J
|
||||
myjob = pick(jobs)
|
||||
|
||||
@@ -626,7 +626,7 @@ var/global/list/synth_flesh_disguises = list()
|
||||
|
||||
|
||||
/datum/species/synth/proc/handle_disguise(mob/living/carbon/human/H)
|
||||
if(H)
|
||||
if(H && fake_species) // Obviously we only are disguise when we're... disguised.
|
||||
H.updatehealth()
|
||||
var/add_overlay = FALSE
|
||||
if(H.health < disguise_fail_health)
|
||||
|
||||
@@ -395,7 +395,12 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
return
|
||||
|
||||
/proc/IsAdminGhost(var/mob/user)
|
||||
if(check_rights_for(user.client, R_ADMIN) && istype(user, /mob/dead/observer) && user.client.AI_Interact)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
if(!user.client) // Do they have a client?
|
||||
return
|
||||
if(!isobserver(user)) // Are they a ghost?
|
||||
return
|
||||
if(!check_rights_for(user.client, R_ADMIN)) // Are they allowed?
|
||||
return
|
||||
if(!user.client.AI_Interact) // Do they have it enabled?
|
||||
return
|
||||
return TRUE
|
||||
@@ -288,7 +288,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
|
||||
// Sound the alert if gravity was just enabled or disabled.
|
||||
var/alert = 0
|
||||
var/area/area = get_area(src)
|
||||
if(new_state) // If we turned on
|
||||
if(on && ticker && ticker.current_state == GAME_STATE_PLAYING) // If we turned on and the game is live.
|
||||
if(gravity_in_level() == 0)
|
||||
alert = 1
|
||||
investigate_log("was brought online and is now producing gravity for this level.", "gravity")
|
||||
@@ -354,14 +354,14 @@ var/const/GRAV_NEEDS_WRENCH = 3
|
||||
|
||||
// Shake everyone on the z level to let them know that gravity was enagaged/disenagaged.
|
||||
/obj/machinery/gravity_generator/main/proc/shake_everyone()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/M in mob_list)
|
||||
var/turf/their_turf = get_turf(M)
|
||||
if(their_turf.z == our_turf.z)
|
||||
M.update_gravity(M.mob_has_gravity())
|
||||
if(M.client)
|
||||
shake_camera(M, 15, 1)
|
||||
M.playsound_local(our_turf, 'sound/effects/alert.ogg', 100, 1, 0.5)
|
||||
if(M.z != z)
|
||||
continue
|
||||
M.update_gravity(M.mob_has_gravity())
|
||||
if(M.client)
|
||||
shake_camera(M, 15, 1)
|
||||
M.playsound_local(T, 'sound/effects/alert.ogg', 100, 1, 0.5)
|
||||
|
||||
/obj/machinery/gravity_generator/main/proc/gravity_in_level()
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
Reference in New Issue
Block a user