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

View File

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

View File

@@ -89,12 +89,12 @@
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
if(!is_in_filter(alarm.alarm_area.type))
if(!is_in_filter(alarm.areaMaster.type))
continue // NO ACCESS 4 U
var/list/alarm_data=list()
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]"
alarms+=list(alarm_data)
data["alarms"]=alarms
@@ -235,14 +235,14 @@
if(href_list["atmos_alarm"])
current.alarmActivated=1
current.alarm_area.updateDangerLevel()
current.areaMaster.updateDangerLevel()
spawn(1)
src.updateUsrDialog()
current.update_icon()
return
if(href_list["atmos_reset"])
current.alarmActivated=0
current.alarm_area.updateDangerLevel()
current.areaMaster.updateDangerLevel()
spawn(1)
src.updateUsrDialog()
current.update_icon()

View File

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

View File

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

View File

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

View File

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

View File

@@ -112,7 +112,7 @@
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 += "</FONT></PRE></TT>"

View File

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

View File

@@ -114,10 +114,8 @@ Class Procs:
var/panel_open = 0
var/inMachineList = 1 // For debugging.
var/area/mchArea
/obj/machinery/New()
mchArea = get_area(src)
machines.Add(src)
return ..()
@@ -125,8 +123,6 @@ Class Procs:
if (src in machines)
machines.Remove(src)
mchArea = null
return ..()
/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()
name = "[department] Requests Console"
allConsoles += src
allConsoles.Add(src)
//req_console_departments += department
switch(departmentType)
if(1)
@@ -105,6 +105,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if(!("[department]" in req_console_information))
req_console_information += department
return ..()
/obj/machinery/requests_console/attack_hand(user as mob)
if(..(user))

View File

@@ -359,7 +359,7 @@ Code:
var/list/chg = list("N","C","F")
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 += "</FONT></PRE>"

View File

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

View File

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

View File

@@ -170,9 +170,7 @@ var/const/POS_HEADER = {"<html>
Paying to: [linked_account.owner_name]<br />
Cashier: [logged_in]<br />"}
if (mchArea)
receipt += mchArea.name
receipt += areaMaster.name
receipt += "</div>"
receipt += {"<br />
<div>[worldtime2text()], [current_date_string]</div>
@@ -222,9 +220,7 @@ var/const/POS_HEADER = {"<html>
Paying to: [linked_account.owner_name]<br />
Cashier: [logged_in]<br />"}
if (mchArea)
receipt += mchArea.name
receipt += areaMaster.name
receipt += "</fieldset>"
receipt += {"<fieldset><legend>Order Data</legend>
<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.")
return
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
successful_purchase()

View File

@@ -44,15 +44,12 @@
/obj/machinery/power/apc
name = "area power controller"
desc = "A control terminal for the area electrical systems."
icon_state = "apc0"
anchored = 1
use_power = 0
req_access = list(access_engine_equip)
var/spooky=0
var/areastring = null
var/obj/item/weapon/cell/cell
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
@@ -118,16 +115,15 @@
pixel_x = (src.tdir == 4 ? 24 : -24)
pixel_y = 0
switch (isnull(area))
if (1)
log_admin("APC tried to spawn in a location without an area. [formatJumpTo(get_turf(src))]")
switch (isnull(areaMaster))
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)
init()
else
area = src.loc.loc:master
opened = 1
operating = 0
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.charge = start_charge * cell.maxcharge / 100.0 // (convert percentage to actual value)
var/area/A = src.loc.loc
//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"
name = "[areaMaster.name] APC"
update_icon()
make_terminal()
@@ -741,7 +730,7 @@
if (!ui)
// 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
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
ui.set_initial_data(data)
// open the new ui window
@@ -750,23 +739,23 @@
ui.set_auto_update(1)
/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()
if(operating && !shorted)
area.power_light = (lighting > 1)
area.power_equip = (equipment > 1)
area.power_environ = (environ > 1)
areaMaster.power_light = (lighting > 1)
areaMaster.power_equip = (equipment > 1)
areaMaster.power_environ = (environ > 1)
// if (area.name == "AI Chamber")
// spawn(10)
// world << " [area.name] [area.power_equip]"
else
area.power_light = 0
area.power_equip = 0
area.power_environ = 0
areaMaster.power_light = 0
areaMaster.power_equip = 0
areaMaster.power_environ = 0
// if (area.name == "AI Chamber")
// world << "[area.power_equip]"
area.power_change()
areaMaster.power_change()
/obj/machinery/power/apc/proc/isWireCut(var/wireIndex)
return wires.IsIndexCut(wireIndex)
@@ -1024,7 +1013,7 @@
if(stat & (BROKEN|MAINT))
return
if(!area.requires_power)
if(!areaMaster.requires_power)
return
/*
@@ -1037,10 +1026,10 @@
area.calc_lighting() */
lastused_light = area.usage(LIGHT)
lastused_equip = area.usage(EQUIP)
lastused_environ = area.usage(ENVIRON)
area.clear_usage()
lastused_light = areaMaster.usage(LIGHT)
lastused_equip = areaMaster.usage(EQUIP)
lastused_environ = areaMaster.usage(ENVIRON)
areaMaster.clear_usage()
lastused_total = lastused_light + lastused_equip + lastused_environ
@@ -1108,24 +1097,24 @@
equipment = autoset(equipment, 0)
lighting = autoset(lighting, 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
equipment = autoset(equipment, 2)
lighting = autoset(lighting, 2)
environ = autoset(environ, 1)
area.poweralert(0, src)
areaMaster.poweralert(0, src)
else if(cell.percent() < 30 && longtermpower < 0) // <30%, turn off equipment
equipment = autoset(equipment, 2)
lighting = autoset(lighting, 1)
environ = autoset(environ, 1)
area.poweralert(0, src)
areaMaster.poweralert(0, src)
else // otherwise all can be on
equipment = autoset(equipment, 1)
lighting = autoset(lighting, 1)
environ = autoset(environ, 1)
area.poweralert(1, src)
areaMaster.poweralert(1, src)
if(cell.percent() > 75)
area.poweralert(1, src)
areaMaster.poweralert(1, src)
// now trickle-charge the cell
@@ -1172,7 +1161,7 @@
equipment = autoset(equipment, 0)
lighting = autoset(lighting, 0)
environ = autoset(environ, 0)
area.poweralert(0, src)
areaMaster.poweralert(0, src)
// update icon & area power if anything changed
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)
cell.use(20);
spawn(0)
for(var/area/A in area.related)
for(var/area/A in areaMaster.related)
for(var/obj/machinery/light/L in A)
L.on = 1
L.broken()
@@ -1279,10 +1268,10 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on)
if (ticker.mode.config_tag == "malfunction")
if (src.z == 1) //if (is_type_in_list(get_area(src), the_station_areas))
ticker.mode:apcs--
area.power_light = 0
area.power_equip = 0
area.power_environ = 0
area.power_change()
areaMaster.power_light = 0
areaMaster.power_equip = 0
areaMaster.power_environ = 0
areaMaster.power_change()
if(occupant)
malfvacate(1)
..()

View File

@@ -51,20 +51,23 @@
if (!use_power)
return 1
if (isnull(area) || isnull(area.master))
if (isnull(areaMaster))
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.
* Defaults to 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
area.master.use_power(amount, chan)
areaMaster.use_power(amount, chan)
/*
* Called whenever the power settings of the containing area change.