This commit is contained in:
ESwordTheCat
2014-05-25 03:45:41 -08:00
parent 67d7da52c3
commit 84a8b2056d
18 changed files with 144 additions and 214 deletions

View File

@@ -6,7 +6,6 @@
desc = "Has a valve and pump attached to it" desc = "Has a valve and pump attached to it"
use_power = 1 use_power = 1
var/area/initial_loc
level = 1 level = 1
var/area_uid var/area_uid
var/id_tag = null var/id_tag = null
@@ -44,17 +43,14 @@
icon_state = "in" icon_state = "in"
New() New()
initial_loc = get_area(loc) ..()
if (initial_loc.master) area_uid = areaMaster.uid
initial_loc = initial_loc.master
area_uid = initial_loc.uid
if (!id_tag) if (!id_tag)
assign_uid() assign_uid()
id_tag = num2text(uid) id_tag = num2text(uid)
if(ticker && ticker.current_state == 3)//if the game is running if(ticker && ticker.current_state == 3)//if the game is running
src.initialize() src.initialize()
src.broadcast_status() src.broadcast_status()
..()
high_volume high_volume
name = "Large Air Vent" name = "Large Air Vent"
@@ -168,11 +164,11 @@
"sigtype" = "status" "sigtype" = "status"
) )
if(!initial_loc.air_vent_names[id_tag]) if(!areaMaster.air_vent_names[id_tag])
var/new_name = "[initial_loc.name] Vent Pump #[initial_loc.air_vent_names.len+1]" var/new_name = "[areaMaster.name] Vent Pump #[areaMaster.air_vent_names.len+1]"
initial_loc.air_vent_names[id_tag] = new_name areaMaster.air_vent_names[id_tag] = new_name
src.name = new_name name = new_name
initial_loc.air_vent_info[id_tag] = signal.data areaMaster.air_vent_info[id_tag] = signal.data
radio_connection.post_signal(src, signal, radio_filter_out) radio_connection.post_signal(src, signal, radio_filter_out)
@@ -362,11 +358,9 @@
del(src) del(src)
/obj/machinery/atmospherics/unary/vent_pump/Destroy() /obj/machinery/atmospherics/unary/vent_pump/Destroy()
if(initial_loc) areaMaster.air_vent_info.Remove(id_tag)
initial_loc.air_vent_info -= id_tag areaMaster.air_vent_names.Remove(id_tag)
initial_loc.air_vent_names -= id_tag
..() ..()
return
/obj/machinery/atmospherics/unary/vent_pump/Topic(href, href_list) /obj/machinery/atmospherics/unary/vent_pump/Topic(href, href_list)
if(..()) if(..())

View File

@@ -8,7 +8,6 @@
level = 1 level = 1
var/area/initial_loc
var/id_tag = null var/id_tag = null
var/frequency = 1439 var/frequency = 1439
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
@@ -28,17 +27,14 @@
var/radio_filter_out var/radio_filter_out
var/radio_filter_in var/radio_filter_in
New() New()
initial_loc = get_area(loc) ..()
if (initial_loc.master) area_uid = areaMaster.uid
initial_loc = initial_loc.master
area_uid = initial_loc.uid
if (!id_tag) if (!id_tag)
assign_uid() assign_uid()
id_tag = num2text(uid) id_tag = num2text(uid)
if(ticker && ticker.current_state == 3)//if the game is running if(ticker && ticker.current_state == 3)//if the game is running
src.initialize() src.initialize()
src.broadcast_status() src.broadcast_status()
..()
update_icon() update_icon()
var/hidden="" var/hidden=""
@@ -84,11 +80,11 @@
"filter_n2" = scrub_N2, "filter_n2" = scrub_N2,
"sigtype" = "status" "sigtype" = "status"
) )
if(!initial_loc.air_scrub_names[id_tag]) if(!areaMaster.air_scrub_names[id_tag])
var/new_name = "[initial_loc.name] Air Scrubber #[initial_loc.air_scrub_names.len+1]" var/new_name = "[areaMaster.name] Air Scrubber #[areaMaster.air_scrub_names.len+1]"
initial_loc.air_scrub_names[id_tag] = new_name areaMaster.air_scrub_names[id_tag] = new_name
src.name = new_name src.name = new_name
initial_loc.air_scrub_info[id_tag] = signal.data areaMaster.air_scrub_info[id_tag] = signal.data
radio_connection.post_signal(src, signal, radio_filter_out) radio_connection.post_signal(src, signal, radio_filter_out)
return 1 return 1
@@ -348,8 +344,6 @@
update_multitool_menu(usr) update_multitool_menu(usr)
/obj/machinery/atmospherics/unary/vent_scrubber/Destroy() /obj/machinery/atmospherics/unary/vent_scrubber/Destroy()
if(initial_loc) areaMaster.air_scrub_info.Remove(id_tag)
initial_loc.air_scrub_info -= id_tag areaMaster.air_scrub_names.Remove(id_tag)
initial_loc.air_scrub_names -= id_tag
..() ..()
return

View File

@@ -89,12 +89,12 @@
var/list/alarms=list() var/list/alarms=list()
for(var/obj/machinery/alarm/alarm in (machines)) // removing sortAtom because nano updates it just enough for the lag to happen for(var/obj/machinery/alarm/alarm in (machines)) // removing sortAtom because nano updates it just enough for the lag to happen
if(!is_in_filter(alarm.alarm_area.type)) if(!is_in_filter(alarm.areaMaster.type))
continue // NO ACCESS 4 U continue // NO ACCESS 4 U
var/list/alarm_data=list() var/list/alarm_data=list()
alarm_data["ID"]="\ref[alarm]" alarm_data["ID"]="\ref[alarm]"
alarm_data["danger"] = max(alarm.local_danger_level, alarm.alarm_area.atmosalm-1) alarm_data["danger"] = max(alarm.local_danger_level, alarm.areaMaster.atmosalm-1)
alarm_data["name"] = "[alarm]" alarm_data["name"] = "[alarm]"
alarms+=list(alarm_data) alarms+=list(alarm_data)
data["alarms"]=alarms data["alarms"]=alarms
@@ -235,14 +235,14 @@
if(href_list["atmos_alarm"]) if(href_list["atmos_alarm"])
current.alarmActivated=1 current.alarmActivated=1
current.alarm_area.updateDangerLevel() current.areaMaster.updateDangerLevel()
spawn(1) spawn(1)
src.updateUsrDialog() src.updateUsrDialog()
current.update_icon() current.update_icon()
return return
if(href_list["atmos_reset"]) if(href_list["atmos_reset"])
current.alarmActivated=0 current.alarmActivated=0
current.alarm_area.updateDangerLevel() current.areaMaster.updateDangerLevel()
spawn(1) spawn(1)
src.updateUsrDialog() src.updateUsrDialog()
current.update_icon() current.update_icon()

View File

@@ -23,11 +23,11 @@
if (0) if (0)
return return
/proc/get_area_master(O) /proc/get_area_master(const/O)
var/area/A = get_area(O) var/area/A = get_area(O)
if(A && A.master)
A = A.master if (isarea(A))
return A return A.master
/proc/get_area_name(N) //get area by its name /proc/get_area_name(N) //get area by its name
for(var/area/A in world) for(var/area/A in world)

View File

@@ -138,7 +138,7 @@ atom/movable/New()
trueLuminosity = luminosity * luminosity trueLuminosity = luminosity * luminosity
light = new(src) light = new(src)
area = get_area(src) areaMaster = get_area(src)
//Objects with opacity will trigger nearby lights to update at next lighting process. //Objects with opacity will trigger nearby lights to update at next lighting process.
atom/movable/Destroy() atom/movable/Destroy()

View File

@@ -16,7 +16,7 @@
var/moved_recently = 0 var/moved_recently = 0
var/mob/pulledby = null var/mob/pulledby = null
var/area/area var/area/areaMaster
/atom/movable/Move() /atom/movable/Move()
var/atom/A = src.loc var/atom/A = src.loc

View File

@@ -40,7 +40,6 @@
var/list/air_scrub_info = list() var/list/air_scrub_info = list()
/obj/machinery/alarm /obj/machinery/alarm
name = "alarm"
icon = 'icons/obj/monitors.dmi' icon = 'icons/obj/monitors.dmi'
icon_state = "alarm0" icon_state = "alarm0"
anchored = 1 anchored = 1
@@ -70,7 +69,6 @@
var/preset = AALARM_PRESET_HUMAN var/preset = AALARM_PRESET_HUMAN
var/screen = AALARM_SCREEN_MAIN var/screen = AALARM_SCREEN_MAIN
var/area_uid var/area_uid
var/area/alarm_area
var/local_danger_level = 0 var/local_danger_level = 0
var/alarmActivated = 0 // Manually activated (independent from danger level) var/alarmActivated = 0 // Manually activated (independent from danger level)
var/danger_averted_confidence=0 var/danger_averted_confidence=0
@@ -99,7 +97,7 @@
/obj/machinery/alarm/proc/apply_preset(var/no_cycle_after=0) /obj/machinery/alarm/proc/apply_preset(var/no_cycle_after=0)
// Propogate settings. // Propogate settings.
for (var/area/A in alarm_area.related) for (var/area/A in areaMaster.related)
for (var/obj/machinery/alarm/AA in A) for (var/obj/machinery/alarm/AA in A)
if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.preset != src.preset) if ( !(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.preset != src.preset)
AA.preset=preset AA.preset=preset
@@ -154,12 +152,8 @@
/obj/machinery/alarm/proc/first_run() /obj/machinery/alarm/proc/first_run()
alarm_area = get_area(src) area_uid = areaMaster.uid
if (alarm_area.master) name = "[areaMaster.name] Air Alarm"
alarm_area = alarm_area.master
area_uid = alarm_area.uid
if (name == "alarm")
name = "[alarm_area.name] Air Alarm"
// breathable air according to human/Life() // breathable air according to human/Life()
/* /*
@@ -291,14 +285,14 @@
) )
/obj/machinery/alarm/proc/master_is_operating() /obj/machinery/alarm/proc/master_is_operating()
return alarm_area.master_air_alarm && !(alarm_area.master_air_alarm.stat & (NOPOWER|BROKEN)) return areaMaster.master_air_alarm && !(areaMaster.master_air_alarm.stat & (NOPOWER|BROKEN))
/obj/machinery/alarm/proc/elect_master() /obj/machinery/alarm/proc/elect_master()
for (var/area/A in alarm_area.related) for (var/area/A in areaMaster.related)
for (var/obj/machinery/alarm/AA in A) for (var/obj/machinery/alarm/AA in A)
if (!(AA.stat & (NOPOWER|BROKEN))) if (!(AA.stat & (NOPOWER|BROKEN)))
alarm_area.master_air_alarm = AA areaMaster.master_air_alarm = AA
return 1 return 1
return 0 return 0
@@ -317,7 +311,7 @@
icon_state = "alarmp" icon_state = "alarmp"
return return
switch(max(local_danger_level, alarm_area.atmosalm-1)) switch(max(local_danger_level, areaMaster.atmosalm-1))
if (0) if (0)
icon_state = "alarm0" icon_state = "alarm0"
if (1) if (1)
@@ -326,13 +320,13 @@
icon_state = "alarm1" icon_state = "alarm1"
/obj/machinery/alarm/receive_signal(datum/signal/signal) /obj/machinery/alarm/receive_signal(datum/signal/signal)
if(stat & (NOPOWER|BROKEN) || !alarm_area) if(stat & (NOPOWER|BROKEN) || !areaMaster)
return return
if (alarm_area.master_air_alarm != src) if (areaMaster.master_air_alarm != src)
if (master_is_operating()) if (master_is_operating())
return return
elect_master() elect_master()
if (alarm_area.master_air_alarm != src) if (areaMaster.master_air_alarm != src)
return return
if(!signal || signal.encryption) if(!signal || signal.encryption)
return return
@@ -345,14 +339,14 @@
return return
var/dev_type = signal.data["device"] var/dev_type = signal.data["device"]
if(!(id_tag in alarm_area.air_scrub_names) && !(id_tag in alarm_area.air_vent_names)) if(!(id_tag in areaMaster.air_scrub_names) && !(id_tag in areaMaster.air_vent_names))
register_env_machine(id_tag, dev_type) register_env_machine(id_tag, dev_type)
var/got_update=0 var/got_update=0
if(dev_type == "AScr") if(dev_type == "AScr")
alarm_area.air_scrub_info[id_tag] = signal.data areaMaster.air_scrub_info[id_tag] = signal.data
got_update=1 got_update=1
else if(dev_type == "AVP") else if(dev_type == "AVP")
alarm_area.air_vent_info[id_tag] = signal.data areaMaster.air_vent_info[id_tag] = signal.data
got_update=1 got_update=1
if(got_update && waiting_on_device==id_tag) if(got_update && waiting_on_device==id_tag)
updateUsrDialog() updateUsrDialog()
@@ -361,24 +355,24 @@
/obj/machinery/alarm/proc/register_env_machine(var/m_id, var/device_type) /obj/machinery/alarm/proc/register_env_machine(var/m_id, var/device_type)
var/new_name var/new_name
if (device_type=="AVP") if (device_type=="AVP")
new_name = "[alarm_area.name] Vent Pump #[alarm_area.air_vent_names.len+1]" new_name = "[areaMaster.name] Vent Pump #[areaMaster.air_vent_names.len+1]"
alarm_area.air_vent_names[m_id] = new_name areaMaster.air_vent_names[m_id] = new_name
else if (device_type=="AScr") else if (device_type=="AScr")
new_name = "[alarm_area.name] Air Scrubber #[alarm_area.air_scrub_names.len+1]" new_name = "[areaMaster.name] Air Scrubber #[areaMaster.air_scrub_names.len+1]"
alarm_area.air_scrub_names[m_id] = new_name areaMaster.air_scrub_names[m_id] = new_name
else else
return return
spawn (10) spawn (10)
send_signal(m_id, list("init" = new_name) ) send_signal(m_id, list("init" = new_name) )
/obj/machinery/alarm/proc/refresh_all() /obj/machinery/alarm/proc/refresh_all()
for(var/id_tag in alarm_area.air_vent_names) for(var/id_tag in areaMaster.air_vent_names)
var/list/I = alarm_area.air_vent_info[id_tag] var/list/I = areaMaster.air_vent_info[id_tag]
if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time) if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time)
continue continue
send_signal(id_tag, list("status") ) send_signal(id_tag, list("status") )
for(var/id_tag in alarm_area.air_scrub_names) for(var/id_tag in areaMaster.air_scrub_names)
var/list/I = alarm_area.air_scrub_info[id_tag] var/list/I = areaMaster.air_scrub_info[id_tag]
if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time) if (I && I["timestamp"]+AALARM_REPORT_TIMEOUT/2 > world.time)
continue continue
send_signal(id_tag, list("status") ) send_signal(id_tag, list("status") )
@@ -410,33 +404,33 @@
var/target_pressure = (current_pressures[2] + current_pressures[3])/2 var/target_pressure = (current_pressures[2] + current_pressures[3])/2
switch(mode) switch(mode)
if(AALARM_MODE_SCRUBBING) if(AALARM_MODE_SCRUBBING)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in areaMaster.air_scrub_names)
send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "o2_scrub"=(preset==AALARM_PRESET_VOX), "n2_scrub"=0, "scrubbing"= 1, "panic_siphon"= 0) ) send_signal(device_id, list("power"= 1, "co2_scrub"= 1, "o2_scrub"=(preset==AALARM_PRESET_VOX), "n2_scrub"=0, "scrubbing"= 1, "panic_siphon"= 0) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in areaMaster.air_vent_names)
send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) )
if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE) if(AALARM_MODE_PANIC, AALARM_MODE_CYCLE)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in areaMaster.air_scrub_names)
send_signal(device_id, list("power"= 1, "panic_siphon"= 1) ) send_signal(device_id, list("power"= 1, "panic_siphon"= 1) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in areaMaster.air_vent_names)
send_signal(device_id, list("power"= 0) ) send_signal(device_id, list("power"= 0) )
if(AALARM_MODE_REPLACEMENT) if(AALARM_MODE_REPLACEMENT)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in areaMaster.air_scrub_names)
send_signal(device_id, list("power"= 1, "panic_siphon"= 1) ) send_signal(device_id, list("power"= 1, "panic_siphon"= 1) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in areaMaster.air_vent_names)
send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) )
if(AALARM_MODE_FILL) if(AALARM_MODE_FILL)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in areaMaster.air_scrub_names)
send_signal(device_id, list("power"= 0) ) send_signal(device_id, list("power"= 0) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in areaMaster.air_vent_names)
send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) ) send_signal(device_id, list("power"= 1, "checks"= 1, "set_external_pressure"= target_pressure) )
if(AALARM_MODE_OFF) if(AALARM_MODE_OFF)
for(var/device_id in alarm_area.air_scrub_names) for(var/device_id in areaMaster.air_scrub_names)
send_signal(device_id, list("power"= 0) ) send_signal(device_id, list("power"= 0) )
for(var/device_id in alarm_area.air_vent_names) for(var/device_id in areaMaster.air_vent_names)
send_signal(device_id, list("power"= 0) ) send_signal(device_id, list("power"= 0) )
// This sets our danger level, and, if it's changed, forces a new election of danger levels. // This sets our danger level, and, if it's changed, forces a new election of danger levels.
@@ -444,7 +438,7 @@
if(local_danger_level==new_danger_level) if(local_danger_level==new_danger_level)
return return
local_danger_level=new_danger_level local_danger_level=new_danger_level
if(alarm_area.updateDangerLevel()) if(areaMaster.updateDangerLevel())
post_alert(new_danger_level) post_alert(new_danger_level)
/obj/machinery/alarm/proc/post_alert(alert_level) /obj/machinery/alarm/proc/post_alert(alert_level)
@@ -455,7 +449,7 @@
var/datum/signal/alert_signal = new var/datum/signal/alert_signal = new
alert_signal.source = src alert_signal.source = src
alert_signal.transmission_method = 1 alert_signal.transmission_method = 1
alert_signal.data["zone"] = alarm_area.name alert_signal.data["zone"] = areaMaster.name
alert_signal.data["type"] = "Atmospheric" alert_signal.data["type"] = "Atmospheric"
if(alert_level==2) if(alert_level==2)
@@ -588,7 +582,7 @@
data["rcon"]=rcon_setting data["rcon"]=rcon_setting
data["target_temp"] = target_temperature - T0C data["target_temp"] = target_temperature - T0C
data["atmos_alarm"] = alarm_area.atmosalm data["atmos_alarm"] = areaMaster.atmosalm
data["modes"] = list( data["modes"] = list(
AALARM_MODE_SCRUBBING = list("name"="Filtering", "desc"="Scrubs out contaminants"),\ AALARM_MODE_SCRUBBING = list("name"="Filtering", "desc"="Scrubs out contaminants"),\
AALARM_MODE_REPLACEMENT = list("name"="Replace Air", "desc"="Siphons out air while replacing"),\ AALARM_MODE_REPLACEMENT = list("name"="Replace Air", "desc"="Siphons out air while replacing"),\
@@ -605,11 +599,11 @@
data["screen"]=screen data["screen"]=screen
var/list/vents=list() var/list/vents=list()
if(alarm_area.air_vent_names.len) if(areaMaster.air_vent_names.len)
for(var/id_tag in alarm_area.air_vent_names) for(var/id_tag in areaMaster.air_vent_names)
var/vent_info[0] var/vent_info[0]
var/long_name = alarm_area.air_vent_names[id_tag] var/long_name = areaMaster.air_vent_names[id_tag]
var/list/vent_data = alarm_area.air_vent_info[id_tag] var/list/vent_data = areaMaster.air_vent_info[id_tag]
if(!vent_data) if(!vent_data)
continue continue
vent_info["id_tag"]=id_tag vent_info["id_tag"]=id_tag
@@ -619,10 +613,10 @@
data["vents"]=vents data["vents"]=vents
var/list/scrubbers=list() var/list/scrubbers=list()
if(alarm_area.air_scrub_names.len) if(areaMaster.air_scrub_names.len)
for(var/id_tag in alarm_area.air_scrub_names) for(var/id_tag in areaMaster.air_scrub_names)
var/long_name = alarm_area.air_scrub_names[id_tag] var/long_name = areaMaster.air_scrub_names[id_tag]
var/list/scrubber_data = alarm_area.air_scrub_info[id_tag] var/list/scrubber_data = areaMaster.air_scrub_info[id_tag]
if(!scrubber_data) if(!scrubber_data)
continue continue
scrubber_data["id_tag"]=id_tag scrubber_data["id_tag"]=id_tag
@@ -791,14 +785,14 @@
if(href_list["atmos_alarm"]) if(href_list["atmos_alarm"])
alarmActivated=1 alarmActivated=1
alarm_area.updateDangerLevel() areaMaster.updateDangerLevel()
update_icon() update_icon()
ui_interact(usr) ui_interact(usr)
return 1 return 1
if(href_list["atmos_reset"]) if(href_list["atmos_reset"])
alarmActivated=0 alarmActivated=0
alarm_area.updateDangerLevel() areaMaster.updateDangerLevel()
update_icon() update_icon()
ui_interact(usr) ui_interact(usr)
return 1 return 1
@@ -995,14 +989,6 @@ FIRE ALARM
var/wiresexposed = 0 var/wiresexposed = 0
var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone
var/area/master_area
/obj/machinery/firealarm/New()
var/area/A = get_area_master(src)
if (!( istype(A, /area) ))
return
master_area=A
/obj/machinery/firealarm/update_icon() /obj/machinery/firealarm/update_icon()
if(wiresexposed) if(wiresexposed)
@@ -1151,7 +1137,7 @@ FIRE ALARM
var/d2 var/d2
if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon)) if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon))
if (master_area.fire) if (areaMaster.fire)
d1 = text("<A href='?src=\ref[];reset=1'>Reset - Lockdown</A>", src) d1 = text("<A href='?src=\ref[];reset=1'>Reset - Lockdown</A>", src)
else else
d1 = text("<A href='?src=\ref[];alarm=1'>Alarm - Lockdown</A>", src) d1 = text("<A href='?src=\ref[];alarm=1'>Alarm - Lockdown</A>", src)
@@ -1165,7 +1151,7 @@ FIRE ALARM
user << browse(dat, "window=firealarm") user << browse(dat, "window=firealarm")
onclose(user, "firealarm") onclose(user, "firealarm")
else else
if (master_area.fire) if (areaMaster.fire)
d1 = text("<A href='?src=\ref[];reset=1'>[]</A>", src, stars("Reset - Lockdown")) d1 = text("<A href='?src=\ref[];reset=1'>[]</A>", src, stars("Reset - Lockdown"))
else else
d1 = text("<A href='?src=\ref[];alarm=1'>[]</A>", src, stars("Alarm - Lockdown")) d1 = text("<A href='?src=\ref[];alarm=1'>[]</A>", src, stars("Alarm - Lockdown"))
@@ -1214,21 +1200,21 @@ FIRE ALARM
/obj/machinery/firealarm/proc/reset() /obj/machinery/firealarm/proc/reset()
if (!( src.working )) if (!( src.working ))
return return
master_area.firereset() areaMaster.firereset()
update_icon() update_icon()
return return
/obj/machinery/firealarm/proc/alarm() /obj/machinery/firealarm/proc/alarm()
if (!( src.working )) if (!( src.working ))
return return
master_area.firealert() areaMaster.firealert()
update_icon() update_icon()
//playsound(get_turf(src), 'sound/ambience/signal.ogg', 75, 0) //playsound(get_turf(src), 'sound/ambience/signal.ogg', 75, 0)
return return
/obj/machinery/firealarm/New(loc, dir, building) /obj/machinery/firealarm/New(loc, dir, building)
..() ..()
name = "[areaMaster.name] fire alarm"
if(loc) if(loc)
src.loc = loc src.loc = loc
@@ -1249,7 +1235,6 @@ FIRE ALARM
update_icon() update_icon()
/* /*
FIRE ALARM ITEM FIRE ALARM ITEM
Handheld fire alarm frame, for placing on walls Handheld fire alarm frame, for placing on walls
@@ -1312,13 +1297,9 @@ Code shamelessly copied from apc_frame
idle_power_usage = 2 idle_power_usage = 2
active_power_usage = 6 active_power_usage = 6
var/area/master_area
/obj/machinery/partyalarm/New() /obj/machinery/partyalarm/New()
var/area/A = get_area_master(src) ..()
if (!( istype(A, /area) )) name = "[areaMaster.name] party alarm"
return
master_area=A
/obj/machinery/partyalarm/attack_paw(mob/user as mob) /obj/machinery/partyalarm/attack_paw(mob/user as mob)
return attack_hand(user) return attack_hand(user)
@@ -1331,7 +1312,7 @@ Code shamelessly copied from apc_frame
var/d1 var/d1
var/d2 var/d2
if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai)) if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon/ai))
if (master_area.party) if (areaMaster.party)
d1 = text("<A href='?src=\ref[];reset=1'>No Party :(</A>", src) d1 = text("<A href='?src=\ref[];reset=1'>No Party :(</A>", src)
else else
d1 = text("<A href='?src=\ref[];alarm=1'>PARTY!!!</A>", src) d1 = text("<A href='?src=\ref[];alarm=1'>PARTY!!!</A>", src)
@@ -1345,7 +1326,7 @@ Code shamelessly copied from apc_frame
user << browse(dat, "window=partyalarm") user << browse(dat, "window=partyalarm")
onclose(user, "partyalarm") onclose(user, "partyalarm")
else else
if (master_area.fire) if (areaMaster.fire)
d1 = text("<A href='?src=\ref[];reset=1'>[]</A>", src, stars("No Party :(")) d1 = text("<A href='?src=\ref[];reset=1'>[]</A>", src, stars("No Party :("))
else else
d1 = text("<A href='?src=\ref[];alarm=1'>[]</A>", src, stars("PARTY!!!")) d1 = text("<A href='?src=\ref[];alarm=1'>[]</A>", src, stars("PARTY!!!"))
@@ -1363,13 +1344,13 @@ Code shamelessly copied from apc_frame
/obj/machinery/partyalarm/proc/reset() /obj/machinery/partyalarm/proc/reset()
if (!( working )) if (!( working ))
return return
master_area.partyreset() areaMaster.partyreset()
return return
/obj/machinery/partyalarm/proc/alarm() /obj/machinery/partyalarm/proc/alarm()
if (!( working )) if (!( working ))
return return
master_area.partyalert() areaMaster.partyalert()
return return
/obj/machinery/partyalarm/Topic(href, href_list) /obj/machinery/partyalarm/Topic(href, href_list)

View File

@@ -112,7 +112,7 @@
for(var/obj/machinery/power/apc/A in L) for(var/obj/machinery/power/apc/A in L)
t += copytext(add_tspace("\The [A.area]", 30), 1, 30) t += copytext(add_tspace("\The [A.areaMaster]", 30), 1, 30)
t += " [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]<BR>" t += " [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]<BR>"
t += "</FONT></PRE></TT>" t += "</FONT></PRE></TT>"

View File

@@ -2,39 +2,24 @@
// can have multiple per area // can have multiple per area
// can also operate on non-loc area through "otherarea" var // can also operate on non-loc area through "otherarea" var
/obj/machinery/light_switch /obj/machinery/light_switch
name = "light switch"
desc = "It turns lights on and off. What are you, simple?" desc = "It turns lights on and off. What are you, simple?"
icon = 'icons/obj/power.dmi' icon = 'icons/obj/power.dmi'
icon_state = "light1" icon_state = "light1"
anchored = 1.0 anchored = 1.0
var/on = 1 var/on
var/otherarea = null
// luminosity = 1 // luminosity = 1
/obj/machinery/light_switch/New() /obj/machinery/light_switch/New()
..() ..()
spawn(5) name = "[areaMaster.name] light switch"
src.area = src.loc.loc on = areaMaster.lightswitch
updateicon()
if(otherarea)
src.area = locate(text2path("/area/[otherarea]"))
if(!name)
name = "light switch ([area.name])"
src.on = src.area.lightswitch
updateicon()
/obj/machinery/light_switch/proc/updateicon() /obj/machinery/light_switch/proc/updateicon()
if(stat & NOPOWER) if (stat & NOPOWER)
icon_state = "light-p" icon_state = "light-p"
else else
if(on) icon_state = on ? "light1" : "light0"
icon_state = "light1"
else
icon_state = "light0"
/obj/machinery/light_switch/examine() /obj/machinery/light_switch/examine()
set src in oview(1) set src in oview(1)
@@ -55,7 +40,7 @@
on = !on on = !on
for(var/area/A in area.master.related) for(var/area/A in areaMaster.related)
A.lightswitch = on A.lightswitch = on
A.updateicon() A.updateicon()
@@ -63,17 +48,15 @@
L.on = on L.on = on
L.updateicon() L.updateicon()
area.master.power_change() areaMaster.power_change()
/obj/machinery/light_switch/power_change() /obj/machinery/light_switch/power_change()
if(powered(LIGHT))
stat &= ~NOPOWER
else
stat |= NOPOWER
if(!otherarea) updateicon()
if(powered(LIGHT))
stat &= ~NOPOWER
else
stat |= NOPOWER
updateicon()
/obj/machinery/light_switch/emp_act(severity) /obj/machinery/light_switch/emp_act(severity)
if(stat & (BROKEN|NOPOWER)) if(stat & (BROKEN|NOPOWER))

View File

@@ -114,10 +114,8 @@ Class Procs:
var/panel_open = 0 var/panel_open = 0
var/inMachineList = 1 // For debugging. var/inMachineList = 1 // For debugging.
var/area/mchArea
/obj/machinery/New() /obj/machinery/New()
mchArea = get_area(src)
machines.Add(src) machines.Add(src)
return ..() return ..()
@@ -125,8 +123,6 @@ Class Procs:
if (src in machines) if (src in machines)
machines.Remove(src) machines.Remove(src)
mchArea = null
return ..() return ..()
/obj/machinery/process() // If you dont use process or power why are you here /obj/machinery/process() // If you dont use process or power why are you here

View File

@@ -70,7 +70,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
/obj/machinery/requests_console/New() /obj/machinery/requests_console/New()
name = "[department] Requests Console" name = "[department] Requests Console"
allConsoles += src allConsoles.Add(src)
//req_console_departments += department //req_console_departments += department
switch(departmentType) switch(departmentType)
if(1) if(1)
@@ -105,6 +105,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(!("[department]" in req_console_information)) if(!("[department]" in req_console_information))
req_console_information += department req_console_information += department
return ..()
/obj/machinery/requests_console/attack_hand(user as mob) /obj/machinery/requests_console/attack_hand(user as mob)
if(..(user)) if(..(user))

View File

@@ -359,7 +359,7 @@ Code:
var/list/chg = list("N","C","F") var/list/chg = list("N","C","F")
for(var/obj/machinery/power/apc/A in L) for(var/obj/machinery/power/apc/A in L)
menu += copytext(add_tspace(A.area.name, 30), 1, 30) menu += copytext(add_tspace(A.areaMaster.name, 30), 1, 30)
menu += " [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]<BR>" menu += " [S[A.equipment+1]] [S[A.lighting+1]] [S[A.environ+1]] [add_lspace(A.lastused_total, 6)] [A.cell ? "[add_lspace(round(A.cell.percent()), 3)]% [chg[A.charging+1]]" : " N/C"]<BR>"
menu += "</FONT></PRE>" menu += "</FONT></PRE>"

View File

@@ -144,17 +144,9 @@
if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0)) if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0))
last_tick = world.timeofday last_tick = world.timeofday
if(!src.loc) on = areaMaster.powered(EQUIP) // set "on" to the power status
on = 0
else
var/area/A = src.loc.loc
if(!A || !isarea(A) || !A.master)
on = 0
else
on = A.master.powered(EQUIP) // set "on" to the power status
update_icon() update_icon()
/obj/item/weapon/intercom_electronics /obj/item/weapon/intercom_electronics
name = "intercom electronics" name = "intercom electronics"
icon = 'icons/obj/doors/door_assembly.dmi' icon = 'icons/obj/doors/door_assembly.dmi'

View File

@@ -18,9 +18,11 @@
var/list/reagents_to_log=list() var/list/reagents_to_log=list()
/obj/Destroy() /obj/Destroy()
machines -= src if (src in processing_objects)
processing_objects -= src processing_objects.Remove(src)
..() ..()
/obj/item/proc/is_used_on(obj/O, mob/user) /obj/item/proc/is_used_on(obj/O, mob/user)
/obj/recycle(var/datum/materials/rec) /obj/recycle(var/datum/materials/rec)
@@ -32,7 +34,6 @@
/obj/proc/process() /obj/proc/process()
processing_objects.Remove(src) processing_objects.Remove(src)
return 0
/obj/assume_air(datum/gas_mixture/giver) /obj/assume_air(datum/gas_mixture/giver)
if(loc) if(loc)

View File

@@ -170,9 +170,7 @@ var/const/POS_HEADER = {"<html>
Paying to: [linked_account.owner_name]<br /> Paying to: [linked_account.owner_name]<br />
Cashier: [logged_in]<br />"} Cashier: [logged_in]<br />"}
if (mchArea) receipt += areaMaster.name
receipt += mchArea.name
receipt += "</div>" receipt += "</div>"
receipt += {"<br /> receipt += {"<br />
<div>[worldtime2text()], [current_date_string]</div> <div>[worldtime2text()], [current_date_string]</div>
@@ -222,9 +220,7 @@ var/const/POS_HEADER = {"<html>
Paying to: [linked_account.owner_name]<br /> Paying to: [linked_account.owner_name]<br />
Cashier: [logged_in]<br />"} Cashier: [logged_in]<br />"}
if (mchArea) receipt += areaMaster.name
receipt += mchArea.name
receipt += "</fieldset>" receipt += "</fieldset>"
receipt += {"<fieldset><legend>Order Data</legend> receipt += {"<fieldset><legend>Order Data</legend>
<form action="?src=\ref[src]" method="get"> <form action="?src=\ref[src]" method="get">

View File

@@ -297,7 +297,7 @@ var/global/loopModeNames=list(
visible_message("\red The machine buzzes, and flashes \"NOT ENOUGH FUNDS\" on the screen.","You hear a buzz.") visible_message("\red The machine buzzes, and flashes \"NOT ENOUGH FUNDS\" on the screen.","You hear a buzz.")
return return
visible_message("\blue The machine beeps happily.","You hear a beep.") visible_message("\blue The machine beeps happily.","You hear a beep.")
acct.charge(credits_needed,linked_account,"Song selection at [mchArea.name]'s [name].") acct.charge(credits_needed,linked_account,"Song selection at [areaMaster.name]'s [name].")
credits_needed = 0 credits_needed = 0
successful_purchase() successful_purchase()

View File

@@ -44,15 +44,12 @@
/obj/machinery/power/apc /obj/machinery/power/apc
name = "area power controller"
desc = "A control terminal for the area electrical systems." desc = "A control terminal for the area electrical systems."
icon_state = "apc0" icon_state = "apc0"
anchored = 1 anchored = 1
use_power = 0 use_power = 0
req_access = list(access_engine_equip) req_access = list(access_engine_equip)
var/spooky=0 var/spooky=0
var/areastring = null
var/obj/item/weapon/cell/cell var/obj/item/weapon/cell/cell
var/start_charge = 90 // initial cell charge % var/start_charge = 90 // initial cell charge %
var/cell_type = 2500 // 0=no cell, 1=regular, 2=high-cap (x5) <- old, now it's just 0=no cell, otherwise dictate cellcapacity by changing this value. 1 used to be 1000, 2 was 2500 var/cell_type = 2500 // 0=no cell, 1=regular, 2=high-cap (x5) <- old, now it's just 0=no cell, otherwise dictate cellcapacity by changing this value. 1 used to be 1000, 2 was 2500
@@ -118,16 +115,15 @@
pixel_x = (src.tdir == 4 ? 24 : -24) pixel_x = (src.tdir == 4 ? 24 : -24)
pixel_y = 0 pixel_y = 0
switch (isnull(area)) switch (isnull(areaMaster))
if (1)
log_admin("APC tried to spawn in a location without an area. [formatJumpTo(get_turf(src))]")
if (0) if (0)
name = "[area.name] APC" name = "[areaMaster.name] APC"
if (1) // Mapping issue.
log_admin("APC tried to spawn in a location without an area. [formatJumpTo(get_turf(src))]")
if (building==0) if (building==0)
init() init()
else else
area = src.loc.loc:master
opened = 1 opened = 1
operating = 0 operating = 0
stat |= MAINT stat |= MAINT
@@ -150,14 +146,7 @@
cell.maxcharge = cell_type // cell_type is maximum charge (old default was 1000 or 2500 (values one and two respectively) cell.maxcharge = cell_type // cell_type is maximum charge (old default was 1000 or 2500 (values one and two respectively)
cell.charge = start_charge * cell.maxcharge / 100.0 // (convert percentage to actual value) cell.charge = start_charge * cell.maxcharge / 100.0 // (convert percentage to actual value)
var/area/A = src.loc.loc name = "[areaMaster.name] APC"
//if area isn't specified use current
if(isarea(A) && src.areastring == null)
src.area = A
else
src.area = get_area_name(areastring)
name = "\improper [area.name] APC"
update_icon() update_icon()
make_terminal() make_terminal()
@@ -741,7 +730,7 @@
if (!ui) if (!ui)
// the ui does not exist, so we'll create a new one // the ui does not exist, so we'll create a new one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
ui = new(user, src, ui_key, "apc.tmpl", "[area.name] - APC", 520, data["siliconUser"] ? 465 : 440) ui = new(user, src, ui_key, "apc.tmpl", "[areaMaster.name] - APC", 520, data["siliconUser"] ? 465 : 440)
// when the ui is first opened this is the data it will use // when the ui is first opened this is the data it will use
ui.set_initial_data(data) ui.set_initial_data(data)
// open the new ui window // open the new ui window
@@ -750,23 +739,23 @@
ui.set_auto_update(1) ui.set_auto_update(1)
/obj/machinery/power/apc/proc/report() /obj/machinery/power/apc/proc/report()
return "[area.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])" return "[areaMaster.name] : [equipment]/[lighting]/[environ] ([lastused_equip+lastused_light+lastused_environ]) : [cell? cell.percent() : "N/C"] ([charging])"
/obj/machinery/power/apc/proc/update() /obj/machinery/power/apc/proc/update()
if(operating && !shorted) if(operating && !shorted)
area.power_light = (lighting > 1) areaMaster.power_light = (lighting > 1)
area.power_equip = (equipment > 1) areaMaster.power_equip = (equipment > 1)
area.power_environ = (environ > 1) areaMaster.power_environ = (environ > 1)
// if (area.name == "AI Chamber") // if (area.name == "AI Chamber")
// spawn(10) // spawn(10)
// world << " [area.name] [area.power_equip]" // world << " [area.name] [area.power_equip]"
else else
area.power_light = 0 areaMaster.power_light = 0
area.power_equip = 0 areaMaster.power_equip = 0
area.power_environ = 0 areaMaster.power_environ = 0
// if (area.name == "AI Chamber") // if (area.name == "AI Chamber")
// world << "[area.power_equip]" // world << "[area.power_equip]"
area.power_change() areaMaster.power_change()
/obj/machinery/power/apc/proc/isWireCut(var/wireIndex) /obj/machinery/power/apc/proc/isWireCut(var/wireIndex)
return wires.IsIndexCut(wireIndex) return wires.IsIndexCut(wireIndex)
@@ -1024,7 +1013,7 @@
if(stat & (BROKEN|MAINT)) if(stat & (BROKEN|MAINT))
return return
if(!area.requires_power) if(!areaMaster.requires_power)
return return
/* /*
@@ -1037,10 +1026,10 @@
area.calc_lighting() */ area.calc_lighting() */
lastused_light = area.usage(LIGHT) lastused_light = areaMaster.usage(LIGHT)
lastused_equip = area.usage(EQUIP) lastused_equip = areaMaster.usage(EQUIP)
lastused_environ = area.usage(ENVIRON) lastused_environ = areaMaster.usage(ENVIRON)
area.clear_usage() areaMaster.clear_usage()
lastused_total = lastused_light + lastused_equip + lastused_environ lastused_total = lastused_light + lastused_equip + lastused_environ
@@ -1108,24 +1097,24 @@
equipment = autoset(equipment, 0) equipment = autoset(equipment, 0)
lighting = autoset(lighting, 0) lighting = autoset(lighting, 0)
environ = autoset(environ, 0) environ = autoset(environ, 0)
area.poweralert(0, src) areaMaster.poweralert(0, src)
else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment else if(cell.percent() < 15 && longtermpower < 0) // <15%, turn off lighting & equipment
equipment = autoset(equipment, 2) equipment = autoset(equipment, 2)
lighting = autoset(lighting, 2) lighting = autoset(lighting, 2)
environ = autoset(environ, 1) environ = autoset(environ, 1)
area.poweralert(0, src) areaMaster.poweralert(0, src)
else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment
equipment = autoset(equipment, 2) equipment = autoset(equipment, 2)
lighting = autoset(lighting, 1) lighting = autoset(lighting, 1)
environ = autoset(environ, 1) environ = autoset(environ, 1)
area.poweralert(0, src) areaMaster.poweralert(0, src)
else // otherwise all can be on else // otherwise all can be on
equipment = autoset(equipment, 1) equipment = autoset(equipment, 1)
lighting = autoset(lighting, 1) lighting = autoset(lighting, 1)
environ = autoset(environ, 1) environ = autoset(environ, 1)
area.poweralert(1, src) areaMaster.poweralert(1, src)
if(cell.percent() > 75) if(cell.percent() > 75)
area.poweralert(1, src) areaMaster.poweralert(1, src)
// now trickle-charge the cell // now trickle-charge the cell
@@ -1172,7 +1161,7 @@
equipment = autoset(equipment, 0) equipment = autoset(equipment, 0)
lighting = autoset(lighting, 0) lighting = autoset(lighting, 0)
environ = autoset(environ, 0) environ = autoset(environ, 0)
area.poweralert(0, src) areaMaster.poweralert(0, src)
// update icon & area power if anything changed // update icon & area power if anything changed
if(last_lt != lighting || last_eq != equipment || last_en != environ) if(last_lt != lighting || last_eq != equipment || last_en != environ)
@@ -1268,7 +1257,7 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
if( cell && cell.charge>=20) if( cell && cell.charge>=20)
cell.use(20); cell.use(20);
spawn(0) spawn(0)
for(var/area/A in area.related) for(var/area/A in areaMaster.related)
for(var/obj/machinery/light/L in A) for(var/obj/machinery/light/L in A)
L.on = 1 L.on = 1
L.broken() L.broken()
@@ -1279,10 +1268,10 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
if (ticker.mode.config_tag == "malfunction") if (ticker.mode.config_tag == "malfunction")
if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas)) if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas))
ticker.mode:apcs-- ticker.mode:apcs--
area.power_light = 0 areaMaster.power_light = 0
area.power_equip = 0 areaMaster.power_equip = 0
area.power_environ = 0 areaMaster.power_environ = 0
area.power_change() areaMaster.power_change()
if(occupant) if(occupant)
malfvacate(1) malfvacate(1)
..() ..()

View File

@@ -51,20 +51,23 @@
if (!use_power) if (!use_power)
return 1 return 1
if (isnull(area) || isnull(area.master)) if (isnull(areaMaster))
return 0 // If not, then not powered. return 0 // If not, then not powered.
return area.master.powered(chan) // Return power status of the area. return areaMaster.powered(chan) // Return power status of the area.
/* /*
* Increment the power usage stats for an area. * Increment the power usage stats for an area.
* Defaults to power_channel. * Defaults to power_channel.
*/ */
/obj/machinery/proc/use_power(const/amount, chan = power_channel) /obj/machinery/proc/use_power(const/amount, chan = power_channel)
if (isnull(area) || isnull(area.master)) if (!src.loc)
return 0
if (isnull(areaMaster))
return return
area.master.use_power(amount, chan) areaMaster.use_power(amount, chan)
/* /*
* Called whenever the power settings of the containing area change. * Called whenever the power settings of the containing area change.