Removes area.master. Moves area/New to Initialize (#24134)

* Removes master areas

* Ports area/New to Initialize
This commit is contained in:
Cyberboss
2017-02-17 07:04:47 -05:00
committed by oranges
parent e0ee608ed6
commit b6d5aba7b2
21 changed files with 66 additions and 85 deletions

View File

@@ -17,12 +17,6 @@
var/area/Y = get_area(X)
return Y.name
/proc/get_area_master(O)
var/area/A = get_area(O)
if(A && A.master)
A = A.master
return A
/proc/get_area_by_name(N) //get area by its name
for(var/area/A in world)
if(A.name == N)
@@ -81,13 +75,13 @@
return heard
/proc/alone_in_area(area/the_area, mob/must_be_alone, check_type = /mob/living/carbon)
var/area/our_area = get_area_master(the_area)
var/area/our_area = get_area(the_area)
for(var/C in living_mob_list)
if(!istype(C, check_type))
continue
if(C == must_be_alone)
continue
if(our_area == get_area_master(C))
if(our_area == get_area(C))
return 0
return 1

View File

@@ -46,7 +46,7 @@
A.mode = 1 // AALARM_MODE_SCRUB
A.apply_mode()
if(WIRE_ALARM) // Clear alarms.
var/area/AA = get_area_master(A)
var/area/AA = get_area(A)
if(AA.atmosalert(0, holder))
A.post_alert(0)
A.update_icon()
@@ -68,7 +68,7 @@
A.mode = 3 // AALARM_MODE_PANIC
A.apply_mode()
if(WIRE_ALARM) // Post alarm.
var/area/AA = get_area_master(A)
var/area/AA = get_area(A)
if(AA.atmosalert(2, holder))
A.post_alert(2)
A.update_icon()

View File

@@ -45,7 +45,6 @@
var/safe = 0 //Is the area teleport-safe: no space / radiation / aggresive mobs / other dangers
var/no_air = null
var/area/master // master area used for power calcluations
var/list/related // the other areas of the same type as this
var/parallax_movedir = 0
@@ -98,10 +97,9 @@ var/list/teleportlocs = list()
/area/New()
/area/Initialize()
icon_state = ""
layer = AREA_LAYER
master = src
uid = ++global_uid
related = list(src)
map_name = name // Save the initial (the name set in the map) name of the area.
@@ -343,17 +341,17 @@ var/list/teleportlocs = list()
/area/proc/powered(chan) // return true if the area has power to given channel
if(!master.requires_power)
if(!requires_power)
return 1
if(master.always_unpowered)
if(always_unpowered)
return 0
switch(chan)
if(EQUIP)
return master.power_equip
return power_equip
if(LIGHT)
return master.power_light
return power_light
if(ENVIRON)
return master.power_environ
return power_environ
return 0
@@ -372,19 +370,19 @@ var/list/teleportlocs = list()
var/used = 0
switch(chan)
if(LIGHT)
used += master.used_light
used += used_light
if(EQUIP)
used += master.used_equip
used += used_equip
if(ENVIRON)
used += master.used_environ
used += used_environ
if(TOTAL)
used += master.used_light + master.used_equip + master.used_environ
used += used_light + used_equip + used_environ
if(STATIC_EQUIP)
used += master.static_equip
used += static_equip
if(STATIC_LIGHT)
used += master.static_light
used += static_light
if(STATIC_ENVIRON)
used += master.static_environ
used += static_environ
return used
/area/proc/addStaticPower(value, powerchannel)
@@ -397,20 +395,19 @@ var/list/teleportlocs = list()
static_environ += value
/area/proc/clear_usage()
master.used_equip = 0
master.used_light = 0
master.used_environ = 0
used_equip = 0
used_light = 0
used_environ = 0
/area/proc/use_power(amount, chan)
switch(chan)
if(EQUIP)
master.used_equip += amount
used_equip += amount
if(LIGHT)
master.used_light += amount
used_light += amount
if(ENVIRON)
master.used_environ += amount
used_environ += amount
/area/Entered(A)

View File

@@ -14,9 +14,9 @@
*/
/area/holodeck/powered(var/chan)
if(!master.requires_power)
if(!requires_power)
return 1
if(master.always_unpowered)
if(always_unpowered)
return 0
if(!linked)
return 0

View File

@@ -98,7 +98,7 @@
C.setDir(src.dir)
C.network = tempnetwork
var/area/A = get_area_master(src)
var/area/A = get_area(src)
C.c_tag = "[A.name] ([rand(1, 999)])"

View File

@@ -265,7 +265,7 @@
var/obj/item/device/multitool/P = W
if(istype(P.buffer, /obj/machinery/computer/cloning))
if(get_area_master(P.buffer) != get_area_master(src))
if(get_area(P.buffer) != get_area(src))
user << "<font color = #666633>-% Cannot link machines across power zones. Buffer cleared %-</font color>"
P.buffer = null
return

View File

@@ -127,7 +127,7 @@
var/obj/item/device/multitool/P = W
if(istype(P.buffer, /obj/machinery/clonepod))
if(get_area_master(P.buffer) != get_area_master(src))
if(get_area(P.buffer) != get_area(src))
user << "<font color = #666633>-% Cannot link machines across power zones. Buffer cleared %-</font color>"
P.buffer = null
return

View File

@@ -36,9 +36,6 @@
var/alert = signal.data["alert"]
var/area/our_area = get_area(src)
if (our_area.master)
our_area = our_area.master
if(alarm_area == our_area.name)
switch(alert)
if("severe")

View File

@@ -171,7 +171,7 @@ var/list/holopads = list()
var/area/holo_area = get_area(src)
var/area/eye_area = get_area(master.eyeobj)
if(eye_area in holo_area.master.related)
if(eye_area in holo_area.related)
return TRUE
clear_holo(master)//If not, we want to get rid of the hologram.

View File

@@ -48,7 +48,7 @@
on = !on
for(var/area/A in area.master.related)
for(var/area/A in area.related)
A.lightswitch = on
A.updateicon()
@@ -56,7 +56,7 @@
L.on = on
L.updateicon()
area.master.power_change()
area.power_change()
/obj/machinery/light_switch/power_change()

View File

@@ -636,11 +636,7 @@
break
if(!control_area)
var/area/CA = get_area(src)
if(CA.master && CA.master != CA)
control_area = CA.master
else
control_area = CA
control_area = get_area(src)
for(var/obj/machinery/porta_turret/T in control_area)
turrets |= T

View File

@@ -301,7 +301,7 @@
var/pow_chan
if(A)
for(var/c in use_channels)
if(A.master && A.master.powered(c))
if(A.powered(c))
pow_chan = c
break
return pow_chan
@@ -339,13 +339,13 @@
if(A)
var/pow_chan
for(var/c in list(EQUIP,ENVIRON,LIGHT))
if(A.master.powered(c))
if(A.powered(c))
pow_chan = c
break
if(pow_chan)
var/delta = min(20, chassis.cell.maxcharge-cur_charge)
chassis.give_power(delta)
A.master.use_power(delta*coeff, pow_chan)
A.use_power(delta*coeff, pow_chan)

View File

@@ -146,10 +146,8 @@
/obj/item/areaeditor/proc/get_area()
var/turf/T = get_turf(usr)
var/area/A = T.loc
A = A.master
return A
/obj/item/areaeditor/proc/get_area_type(area/A = get_area())
if(A.outdoors)
return AREA_SPACE

View File

@@ -56,7 +56,7 @@
if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0))
last_tick = world.timeofday
var/area/A = get_area_master(src)
var/area/A = get_area(src)
if(!A || emped)
on = 0
else

View File

@@ -133,7 +133,7 @@
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
pixel_y = (dir & 3)? (dir == 1 ? -24 : 24) : 0
var/area/A = get_area_master(src)
var/area/A = get_area(src)
if(name == initial(name))
name = "[A.name] Air Alarm"
@@ -311,7 +311,7 @@
send_signal(device_id, list("checks" = text2num(params["val"])^2))
. = TRUE
if("set_external_pressure")
var/area/A = get_area_master(src)
var/area/A = get_area(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))
@@ -337,12 +337,12 @@
apply_mode()
. = TRUE
if("alarm")
var/area/A = get_area_master(src)
var/area/A = get_area(src)
if(A.atmosalert(2, src))
post_alert(2)
. = TRUE
if("reset")
var/area/A = get_area_master(src)
var/area/A = get_area(src)
if(A.atmosalert(0, src))
post_alert(0)
. = TRUE
@@ -374,7 +374,7 @@
return 0
/obj/machinery/airalarm/proc/refresh_all()
var/area/A = get_area_master(src)
var/area/A = get_area(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)
@@ -409,7 +409,7 @@
return 1
/obj/machinery/airalarm/proc/apply_mode()
var/area/A = get_area_master(src)
var/area/A = get_area(src)
switch(mode)
if(AALARM_MODE_SCRUBBING)
for(var/device_id in A.air_scrub_names)
@@ -541,7 +541,7 @@
icon_state = "alarmp"
return
var/area/A = get_area_master(src)
var/area/A = get_area(src)
switch(max(danger_level, A.atmosalm))
if(0)
icon_state = "alarm0"
@@ -596,7 +596,7 @@
if(!frequency)
return
var/area/A = get_area_master(src)
var/area/A = get_area(src)
var/datum/signal/alert_signal = new
alert_signal.source = src
@@ -614,7 +614,7 @@
frequency.post_signal(src, alert_signal,null,-1)
/obj/machinery/airalarm/proc/apply_danger_level()
var/area/A = get_area_master(src)
var/area/A = get_area(src)
var/new_area_danger_level = 0
for(var/area/R in A.related)

View File

@@ -48,7 +48,7 @@
id_tag = num2text(uid)
/obj/machinery/atmospherics/components/unary/vent_pump/Destroy()
var/area/A = get_area_master(src)
var/area/A = get_area(src)
A.air_vent_names -= id_tag
A.air_vent_info -= id_tag
@@ -165,7 +165,7 @@
"sigtype" = "status"
)
var/area/A = get_area_master(src)
var/area/A = get_area(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

View File

@@ -40,7 +40,7 @@
id_tag = num2text(uid)
/obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy()
var/area/A = get_area_master(src)
var/area/A = get_area(src)
A.air_scrub_names -= id_tag
A.air_scrub_info -= id_tag
@@ -131,7 +131,7 @@
"sigtype" = "status"
)
var/area/A = get_area_master(src)
var/area/A = get_area(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

View File

@@ -53,11 +53,11 @@
if(POWER_REQ_NONE)
return FALSE
if(POWER_REQ_ALL)
return !T || !A || ((!A.master.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha)))
return !T || !A || ((!A.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha)))
if(POWER_REQ_CLOCKCULT)
for(var/obj/effect/clockwork/sigil/transmission/ST in range(src, SIGIL_ACCESS_RANGE))
return FALSE
return !T || !A || (!istype(T, /turf/open/floor/clockwork) && (!A.master.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha)))
return !T || !A || (!istype(T, /turf/open/floor/clockwork) && (!A.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha)))
/mob/living/silicon/ai/updatehealth()
if(status_flags & GODMODE)
@@ -97,7 +97,7 @@
sleep(50)
var/turf/T = get_turf(src)
var/area/AIarea = get_area(src)
if(AIarea && AIarea.master.power_equip)
if(AIarea && AIarea.power_equip)
if(!isspaceturf(T))
ai_restore_power()
return
@@ -119,7 +119,7 @@
T = get_turf(src)
AIarea = get_area(src)
if(AIarea)
for(var/area/A in AIarea.master.related)
for(var/area/A in AIarea.related)
for (var/obj/machinery/power/apc/APC in A)
if (!(APC.stat & BROKEN))
theAPC = APC
@@ -132,7 +132,7 @@
src << "Lost connection with the APC!"
aiRestorePowerRoutine = POWER_RESTORATION_SEARCH_APC
return
if(AIarea.master.power_equip)
if(AIarea.power_equip)
if(!isspaceturf(T))
ai_restore_power()
return

View File

@@ -39,11 +39,11 @@
else
var/area/A = get_area(src)
if(!A || !isarea(A) || !A.master)
if(!istype(A))
return 0
if(A.master.powered(EQUIP))
A.master.use_power(amount, EQUIP)
if(A.powered(EQUIP))
A.use_power(amount, EQUIP)
return 1
return 0

View File

@@ -408,8 +408,8 @@
// returns whether this light has power
// true if area has power and lightswitch is on
/obj/machinery/light/proc/has_power()
var/area/A = src.loc.loc
return A.master.lightswitch && A.master.power_light
var/area/A = get_area(src)
return A.lightswitch && A.power_light
/obj/machinery/light/proc/flicker(var/amount = rand(10, 20))
set waitfor = 0
@@ -534,7 +534,6 @@
// called when area power state changes
/obj/machinery/light/power_change()
var/area/A = get_area(src)
A = A.master
seton(A.lightswitch && A.power_light)
// called when on fire

View File

@@ -56,27 +56,27 @@
if(!use_power)
return 1
var/area/A = src.loc.loc // make sure it's in an area
if(!A || !isarea(A) || !A.master)
var/area/A = get_area(src) // make sure it's in an area
if(!A)
return 0 // if not, then not powered
if(chan == -1)
chan = power_channel
return A.master.powered(chan) // return power status of the area
return A.powered(chan) // return power status of the area
// increment the power usage stats for an area
/obj/machinery/proc/use_power(amount, chan = -1) // defaults to power_channel
var/area/A = get_area(src) // make sure it's in an area
if(!A || !isarea(A) || !A.master)
if(!A)
return
if(chan == -1)
chan = power_channel
A.master.use_power(amount, chan)
A.use_power(amount, chan)
/obj/machinery/proc/addStaticPower(value, powerchannel)
var/area/A = get_area(src)
if(!A || !A.master)
if(!A)
return
A.master.addStaticPower(value, powerchannel)
A.addStaticPower(value, powerchannel)
/obj/machinery/proc/removeStaticPower(value, powerchannel)
addStaticPower(-value, powerchannel)