remove the sub-area system

Removes area/list/related and area/master.
They were only used by the old lighting subarea system.

Signed-off-by: Mloc <colmohici@gmail.com>
This commit is contained in:
Mloc
2015-05-09 23:00:26 +01:00
parent 18209f9d78
commit e602a7e286
31 changed files with 153 additions and 228 deletions

View File

@@ -67,8 +67,6 @@
icon = null icon = null
initial_loc = get_area(loc) initial_loc = get_area(loc)
if (initial_loc.master)
initial_loc = initial_loc.master
area_uid = initial_loc.uid area_uid = initial_loc.uid
if (!id_tag) if (!id_tag)
assign_uid() assign_uid()

View File

@@ -36,8 +36,6 @@
icon = null icon = null
initial_loc = get_area(loc) initial_loc = get_area(loc)
if (initial_loc.master)
initial_loc = initial_loc.master
area_uid = initial_loc.uid area_uid = initial_loc.uid
if (!id_tag) if (!id_tag)
assign_uid() assign_uid()

View File

@@ -23,7 +23,7 @@
var/turf/loc = get_turf(O) var/turf/loc = get_turf(O)
if(loc) if(loc)
var/area/res = loc.loc var/area/res = loc.loc
.= res.master .= res
/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)
@@ -34,7 +34,7 @@
/proc/get_area_master(const/O) /proc/get_area_master(const/O)
var/area/A = get_area(O) var/area/A = get_area(O)
if (isarea(A)) if (isarea(A))
return A.master return A
/proc/in_range(source, user) /proc/in_range(source, user)
if(get_dist(source, user) <= 1) if(get_dist(source, user) <= 1)

View File

@@ -48,9 +48,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
var/has_gravity = 1 var/has_gravity = 1
var/list/apc = list() var/list/apc = list()
var/no_air = null var/no_air = null
var/area/master // master area used for power calcluations
// (original area before splitting due to sd_DAL)
var/list/related // the other areas of the same type as this
// var/list/lights // list of all lights on this area // var/list/lights // list of all lights on this area
var/list/all_doors = list() //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area var/list/all_doors = list() //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area
var/air_doors_activated = 0 var/air_doors_activated = 0

View File

@@ -10,9 +10,7 @@
/area/New() /area/New()
icon_state = "" icon_state = ""
layer = 10 layer = 10
master = src //moved outside the spawn(1) to avoid runtimes in lighting.dm when it references loc.loc.master ~Carn
uid = ++global_uid uid = ++global_uid
related = list(src)
all_areas += src all_areas += src
if(requires_power) if(requires_power)
@@ -31,29 +29,24 @@
InitializeLighting() InitializeLighting()
/area/proc/get_contents() /area/proc/get_contents()
var/list/concat_contents = list() return contents
for (var/area/RA in related)
concat_contents |= RA.contents
return concat_contents
/area/proc/get_cameras() /area/proc/get_cameras()
var/list/cameras = list() var/list/cameras = list()
for (var/area/RA in related) for (var/obj/machinery/camera/C in src)
for (var/obj/machinery/camera/C in RA) cameras += C
cameras += C
return cameras return cameras
/area/proc/atmosalert(danger_level, var/alarm_source) /area/proc/atmosalert(danger_level, var/alarm_source)
if (danger_level == 0) if (danger_level == 0)
atmosphere_alarm.clearAlarm(master, alarm_source) atmosphere_alarm.clearAlarm(src, alarm_source)
else else
atmosphere_alarm.triggerAlarm(master, alarm_source, severity = danger_level) atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level)
//Check all the alarms before lowering atmosalm. Raising is perfectly fine. //Check all the alarms before lowering atmosalm. Raising is perfectly fine.
for (var/area/RA in related) for (var/obj/machinery/alarm/AA in src)
for (var/obj/machinery/alarm/AA in RA) if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.report_danger_level)
if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.report_danger_level) danger_level = max(danger_level, AA.danger_level)
danger_level = max(danger_level, AA.danger_level)
if(danger_level != atmosalm) if(danger_level != atmosalm)
if (danger_level < 1 && atmosalm >= 1) if (danger_level < 1 && atmosalm >= 1)
@@ -63,17 +56,16 @@
air_doors_close() air_doors_close()
atmosalm = danger_level atmosalm = danger_level
for(var/area/RA in related) for (var/obj/machinery/alarm/AA in src)
for (var/obj/machinery/alarm/AA in RA) AA.update_icon()
AA.update_icon()
return 1 return 1
return 0 return 0
/area/proc/air_doors_close() /area/proc/air_doors_close()
if(!src.master.air_doors_activated) if(!air_doors_activated)
src.master.air_doors_activated = 1 air_doors_activated = 1
for(var/obj/machinery/door/firedoor/E in src.master.all_doors) for(var/obj/machinery/door/firedoor/E in all_doors)
if(!E.blocked) if(!E.blocked)
if(E.operating) if(E.operating)
E.nextstate = CLOSED E.nextstate = CLOSED
@@ -82,9 +74,9 @@
E.close() E.close()
/area/proc/air_doors_open() /area/proc/air_doors_open()
if(src.master.air_doors_activated) if(air_doors_activated)
src.master.air_doors_activated = 0 air_doors_activated = 0
for(var/obj/machinery/door/firedoor/E in src.master.all_doors) for(var/obj/machinery/door/firedoor/E in all_doors)
if(!E.blocked) if(!E.blocked)
if(E.operating) if(E.operating)
E.nextstate = OPEN E.nextstate = OPEN
@@ -95,11 +87,8 @@
/area/proc/fire_alert() /area/proc/fire_alert()
if(!fire) if(!fire)
master.fire = 1 //used for firedoor checks fire = 1 //used for firedoor checks
master.updateicon() updateicon()
for(var/area/A in related)
A.fire = 1
A.updateicon()
mouse_opacity = 0 mouse_opacity = 0
for(var/obj/machinery/door/firedoor/D in all_doors) for(var/obj/machinery/door/firedoor/D in all_doors)
if(!D.blocked) if(!D.blocked)
@@ -111,11 +100,8 @@
/area/proc/fire_reset() /area/proc/fire_reset()
if (fire) if (fire)
master.fire = 0 //used for firedoor checks fire = 0 //used for firedoor checks
master.updateicon() updateicon()
for(var/area/A in related)
A.fire = 0
A.updateicon()
mouse_opacity = 0 mouse_opacity = 0
for(var/obj/machinery/door/firedoor/D in all_doors) for(var/obj/machinery/door/firedoor/D in all_doors)
if(!D.blocked) if(!D.blocked)
@@ -183,56 +169,55 @@
/area/proc/powered(var/chan) // return true if the area has power to given channel /area/proc/powered(var/chan) // return true if the area has power to given channel
if(!master.requires_power) if(!requires_power)
return 1 return 1
if(master.always_unpowered) if(always_unpowered)
return 0 return 0
if(src.lighting_space) if(src.lighting_space)
return 0 // Nope sorry return 0 // Nope sorry
switch(chan) switch(chan)
if(EQUIP) if(EQUIP)
return master.power_equip return power_equip
if(LIGHT) if(LIGHT)
return master.power_light return power_light
if(ENVIRON) if(ENVIRON)
return master.power_environ return power_environ
return 0 return 0
// called when power status changes // called when power status changes
/area/proc/power_change() /area/proc/power_change()
for(var/area/RA in related) for(var/obj/machinery/M in src) // for each machine in the area
for(var/obj/machinery/M in RA) // for each machine in the area M.power_change() // reverify power status (to update icons etc.)
M.power_change() // reverify power status (to update icons etc.) if (fire || eject || party)
if (fire || eject || party) updateicon()
RA.updateicon()
/area/proc/usage(var/chan) /area/proc/usage(var/chan)
var/used = 0 var/used = 0
switch(chan) switch(chan)
if(LIGHT) if(LIGHT)
used += master.used_light used += used_light
if(EQUIP) if(EQUIP)
used += master.used_equip used += used_equip
if(ENVIRON) if(ENVIRON)
used += master.used_environ used += used_environ
if(TOTAL) if(TOTAL)
used += master.used_light + master.used_equip + master.used_environ used += used_light + used_equip + used_environ
return used return used
/area/proc/clear_usage() /area/proc/clear_usage()
master.used_equip = 0 used_equip = 0
master.used_light = 0 used_light = 0
master.used_environ = 0 used_environ = 0
/area/proc/use_power(var/amount, var/chan) /area/proc/use_power(var/amount, var/chan)
switch(chan) switch(chan)
if(EQUIP) if(EQUIP)
master.used_equip += amount used_equip += amount
if(LIGHT) if(LIGHT)
master.used_light += amount used_light += amount
if(ENVIRON) if(ENVIRON)
master.used_environ += amount used_environ += amount
var/list/mob/living/forced_ambiance_list = new var/list/mob/living/forced_ambiance_list = new
@@ -280,27 +265,23 @@ var/list/mob/living/forced_ambiance_list = new
L.client.played = world.time L.client.played = world.time
/area/proc/gravitychange(var/gravitystate = 0, var/area/A) /area/proc/gravitychange(var/gravitystate = 0, var/area/A)
A.has_gravity = gravitystate A.has_gravity = gravitystate
for(var/area/SubA in A.related) if(gravitystate)
SubA.has_gravity = gravitystate for(var/mob/living/carbon/human/M in A)
thunk(M)
if(gravitystate) for(var/mob/M1 in A)
for(var/mob/living/carbon/human/M in SubA) M1.make_floating(0)
thunk(M) else
for(var/mob/M1 in SubA) for(var/mob/M in A)
M1.make_floating(0) if(M.Check_Dense_Object() && istype(src,/mob/living/carbon/human/))
else var/mob/living/carbon/human/H = src
for(var/mob/M in SubA) if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP)) //magboots + dense_object = no floaty effect
if(M.Check_Dense_Object() && istype(src,/mob/living/carbon/human/)) H.make_floating(0)
var/mob/living/carbon/human/H = src
if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags & NOSLIP)) //magboots + dense_object = no floaty effect
H.make_floating(0)
else
H.make_floating(1)
else else
M.make_floating(1) H.make_floating(1)
else
M.make_floating(1)
/area/proc/thunk(mob) /area/proc/thunk(mob)
if(istype(get_turf(mob), /turf/space)) // Can't fall onto nothing. if(istype(get_turf(mob), /turf/space)) // Can't fall onto nothing.

View File

@@ -54,9 +54,8 @@ In short:
runedec += 9000 //basically removing the rune cap runedec += 9000 //basically removing the rune cap
/datum/universal_state/hell/proc/AreaSet() /datum/universal_state/hell/proc/AreaSet()
for(var/area/ca in world) for(var/area/A in world)
var/area/A = ca.master if(A.name=="Space")
if(!istype(A,/area) || A.name=="Space")
continue continue
// Reset all alarms. // Reset all alarms.

View File

@@ -83,11 +83,10 @@ AUTOMATED ALERT: Link to [command_name()] lost."}
return return
/datum/universal_state/supermatter_cascade/proc/AreaSet() /datum/universal_state/supermatter_cascade/proc/AreaSet()
for(var/area/ca in world) for(var/area/A in world)
var/area/A=ca.master
if(A.z in config.admin_levels) if(A.z in config.admin_levels)
continue continue
if(!istype(A,/area) || istype(A,/area/space)) if(istype(A,/area/space))
continue continue
// Reset all alarms. // Reset all alarms.

View File

@@ -124,8 +124,6 @@
/obj/machinery/alarm/proc/first_run() /obj/machinery/alarm/proc/first_run()
alarm_area = get_area(src) alarm_area = get_area(src)
if (alarm_area.master)
alarm_area = alarm_area.master
area_uid = alarm_area.uid area_uid = alarm_area.uid
if (name == "alarm") if (name == "alarm")
name = "[alarm_area.name] Air Alarm" name = "[alarm_area.name] Air Alarm"
@@ -286,11 +284,10 @@
/obj/machinery/alarm/proc/elect_master() /obj/machinery/alarm/proc/elect_master()
for (var/area/A in alarm_area.related) for (var/obj/machinery/alarm/AA in alarm_area)
for (var/obj/machinery/alarm/AA in A) if (!(AA.stat & (NOPOWER|BROKEN)))
if (!(AA.stat & (NOPOWER|BROKEN))) alarm_area.master_air_alarm = AA
alarm_area.master_air_alarm = AA return 1
return 1
return 0 return 0
/obj/machinery/alarm/proc/get_danger_level(var/current_value, var/list/danger_levels) /obj/machinery/alarm/proc/get_danger_level(var/current_value, var/list/danger_levels)
@@ -397,9 +394,8 @@
/obj/machinery/alarm/proc/apply_mode() /obj/machinery/alarm/proc/apply_mode()
//propagate mode to other air alarms in the area //propagate mode to other air alarms in the area
//TODO: make it so that players can choose between applying the new mode to the room they are in (related area) vs the entire alarm area //TODO: make it so that players can choose between applying the new mode to the room they are in (related area) vs the entire alarm area
for (var/area/RA in alarm_area.related) for (var/obj/machinery/alarm/AA in alarm_area)
for (var/obj/machinery/alarm/AA in RA) AA.mode = mode
AA.mode = mode
switch(mode) switch(mode)
if(AALARM_MODE_SCRUBBING) if(AALARM_MODE_SCRUBBING)
@@ -1070,7 +1066,6 @@ 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))
A = A.loc A = A.loc
A = A.master
if (A.fire) if (A.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)
@@ -1137,9 +1132,8 @@ FIRE ALARM
if (!( src.working )) if (!( src.working ))
return return
var/area/area = get_area(src) var/area/area = get_area(src)
for(var/area/A in area.related) for(var/obj/machinery/firealarm/FA in area)
for(var/obj/machinery/firealarm/FA in A) fire_alarm.clearAlarm(loc, FA)
fire_alarm.clearAlarm(loc, FA)
update_icon() update_icon()
return return
@@ -1147,9 +1141,8 @@ FIRE ALARM
if (!( src.working)) if (!( src.working))
return return
var/area/area = get_area(src) var/area/area = get_area(src)
for(var/area/A in area.related) for(var/obj/machinery/firealarm/FA in area)
for(var/obj/machinery/firealarm/FA in A) fire_alarm.triggerAlarm(loc, FA, duration)
fire_alarm.triggerAlarm(loc, FA, duration)
update_icon() update_icon()
//playsound(src.loc, 'sound/ambience/signal.ogg', 75, 0) //playsound(src.loc, 'sound/ambience/signal.ogg', 75, 0)
return return
@@ -1260,8 +1253,6 @@ Code shamelessly copied from apc_frame
user.machine = src user.machine = src
var/area/A = get_area(src) var/area/A = get_area(src)
ASSERT(isarea(A)) ASSERT(isarea(A))
if(A.master)
A = A.master
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))
@@ -1300,8 +1291,6 @@ Code shamelessly copied from apc_frame
return return
var/area/A = get_area(src) var/area/A = get_area(src)
ASSERT(isarea(A)) ASSERT(isarea(A))
if(A.master)
A = A.master
A.partyreset() A.partyreset()
return return
@@ -1310,8 +1299,6 @@ Code shamelessly copied from apc_frame
return return
var/area/A = get_area(src) var/area/A = get_area(src)
ASSERT(isarea(A)) ASSERT(isarea(A))
if(A.master)
A = A.master
A.partyalert() A.partyalert()
return return

View File

@@ -147,14 +147,10 @@
var/turf/T_src = get_turf(src) var/turf/T_src = get_turf(src)
if(!T_src.loc) return 0 if(!T_src.loc) return 0
var/area/A_src = T_src.loc var/area/A_src = T_src.loc
if (A_src.master)
A_src = A_src.master
var/turf/T_scrub = get_turf(scrubber) var/turf/T_scrub = get_turf(scrubber)
if(!T_scrub.loc) return 0 if(!T_scrub.loc) return 0
var/area/A_scrub = T_scrub.loc var/area/A_scrub = T_scrub.loc
if (A_scrub.master)
A_scrub = A_scrub.master
if(A_scrub != A_src) if(A_scrub != A_src)
return 0 return 0
@@ -169,13 +165,11 @@
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(!T.loc) return if(!T.loc) return
var/area/A = T.loc var/area/A = T.loc
if (A.master)
A = A.master
for(var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber in world ) for(var/obj/machinery/portable_atmospherics/powered/scrubber/huge/scrubber in world )
var/turf/T2 = get_turf(scrubber) var/turf/T2 = get_turf(scrubber)
if(T2 && T2.loc) if(T2 && T2.loc)
var/area/A2 = T2.loc var/area/A2 = T2.loc
if(istype(A2) && A2.master && A2.master == A ) if(istype(A2) && A2 == A)
connectedscrubbers += scrubber connectedscrubbers += scrubber
found = 1 found = 1

View File

@@ -278,8 +278,8 @@
chan = power_channel chan = power_channel
var/area/A = get_area(loc) var/area/A = get_area(loc)
if(istype(A) && A.master && A.master.powered(chan)) if(istype(A) && A.powered(chan))
A.master.use_power(amount, chan) A.use_power(amount, chan)
else if(battery && battery.charge > 0) else if(battery && battery.charge > 0)
battery.use(amount) battery.use(amount)

View File

@@ -143,10 +143,9 @@
if(typekey == null) if(typekey == null)
typekey = /obj/machinery typekey = /obj/machinery
var/list/machines = list() var/list/machines = list()
for(var/area/area in A.related) for(var/obj/O in A.contents)
for(var/obj/O in area.contents) if(istype(O,typekey))
if(istype(O,typekey)) machines |= O
machines |= O
return machines return machines
verify_machine(var/obj/previous) verify_machine(var/obj/previous)
if(!previous) return 0 if(!previous) return 0

View File

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

View File

@@ -152,8 +152,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
if(HOLOPAD_MODE == AREA_BASED) if(HOLOPAD_MODE == AREA_BASED)
var/area/holo_area = get_area(src) var/area/holo_area = get_area(src)
var/area/eye_area = get_area(master.eyeobj) var/area/eye_area = get_area(master.eyeobj)
if(eye_area != holo_area)
if(!(eye_area in holo_area.master.related))
clear_holo(master) clear_holo(master)
continue continue

View File

@@ -188,11 +188,10 @@ datum/track/New(var/title_name, var/audio)
/obj/machinery/media/jukebox/proc/StopPlaying() /obj/machinery/media/jukebox/proc/StopPlaying()
var/area/main_area = get_area(src) var/area/main_area = get_area(src)
// Always kill the current sound // Always kill the current sound
for(var/area/related_area in main_area.related) for(var/mob/living/M in mobs_in_area(main_area))
for(var/mob/living/M in mobs_in_area(related_area)) M << sound(null, channel = 1)
M << sound(null, channel = 1)
related_area.forced_ambience = null main_area.forced_ambience = null
playing = 0 playing = 0
update_use_power(1) update_use_power(1)
update_icon() update_icon()
@@ -204,12 +203,10 @@ datum/track/New(var/title_name, var/audio)
return return
var/area/main_area = get_area(src) var/area/main_area = get_area(src)
for(var/area/related_area in main_area.related) main_area.forced_ambience = list(current_track.sound)
related_area.forced_ambience = list(current_track.sound) for(var/mob/living/M in mobs_in_area(main_area))
if(M.mind)
for(var/mob/living/M in mobs_in_area(related_area)) main_area.play_ambience(M)
if(M.mind)
related_area.play_ambience(M)
playing = 1 playing = 1
update_use_power(2) update_use_power(2)

View File

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

View File

@@ -264,8 +264,8 @@ Class Procs:
s.start() s.start()
if (electrocute_mob(user, get_area(src), src, 0.7)) if (electrocute_mob(user, get_area(src), src, 0.7))
var/area/temp_area = get_area(src) var/area/temp_area = get_area(src)
if(temp_area && temp_area.master) if(temp_area)
var/obj/machinery/power/apc/temp_apc = temp_area.master.get_apc() var/obj/machinery/power/apc/temp_apc = temp_area.get_apc()
if(temp_apc && temp_apc.terminal && temp_apc.terminal.powernet) if(temp_apc && temp_apc.terminal && temp_apc.terminal.powernet)
temp_apc.terminal.powernet.trigger_warning() temp_apc.terminal.powernet.trigger_warning()

View File

@@ -46,12 +46,11 @@
/obj/machinery/turretid/initialize() /obj/machinery/turretid/initialize()
if(!control_area) if(!control_area)
var/area/CA = get_area(src) control_area = get_area(src)
control_area = CA.master
else if(istext(control_area)) else if(istext(control_area))
for(var/area/A in world) for(var/area/A in world)
if(A.name && A.name==control_area) if(A.name && A.name==control_area)
control_area = A.master control_area = A
break break
if(control_area) if(control_area)
@@ -178,9 +177,8 @@
TC.ailock = ailock TC.ailock = ailock
if(istype(control_area)) if(istype(control_area))
for(var/area/sub_area in control_area.related) for (var/obj/machinery/porta_turret/aTurret in control_area)
for (var/obj/machinery/porta_turret/aTurret in sub_area) aTurret.setState(TC)
aTurret.setState(TC)
update_icon() update_icon()

View File

@@ -13,9 +13,6 @@
/area/turret_protected/Entered(O) /area/turret_protected/Entered(O)
..() ..()
if( master && master != src )
return master.Entered(O)
if( iscarbon(O) ) if( iscarbon(O) )
turretTargets |= O turretTargets |= O
else if( istype(O, /obj/mecha) ) else if( istype(O, /obj/mecha) )
@@ -27,9 +24,6 @@
return 1 return 1
/area/turret_protected/Exited(O) /area/turret_protected/Exited(O)
if( master && master != src )
return master.Exited(O)
if( ismob(O) && !issilicon(O) ) if( ismob(O) && !issilicon(O) )
turretTargets -= O turretTargets -= O
else if( istype(O, /obj/mecha) ) else if( istype(O, /obj/mecha) )
@@ -148,8 +142,6 @@
/obj/machinery/turret/proc/get_protected_area() /obj/machinery/turret/proc/get_protected_area()
var/area/turret_protected/TP = get_area(src) var/area/turret_protected/TP = get_area(src)
if(istype(TP)) if(istype(TP))
if(TP.master && TP.master != TP)
TP = TP.master
return TP return TP
return return

View File

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

View File

@@ -76,7 +76,6 @@ move an amendment</a> to the drawing.</p>
/obj/item/blueprints/proc/get_area() /obj/item/blueprints/proc/get_area()
var/turf/T = get_turf(usr) var/turf/T = get_turf(usr)
var/area/A = T.loc var/area/A = T.loc
A = A.master
return A return A
/obj/item/blueprints/proc/get_area_type(var/area/A = get_area()) /obj/item/blueprints/proc/get_area_type(var/area/A = get_area())
@@ -161,8 +160,7 @@ move an amendment</a> to the drawing.</p>
usr << "\red Text too long." usr << "\red Text too long."
return return
set_area_machinery_title(A,str,prevname) set_area_machinery_title(A,str,prevname)
for(var/area/RA in A.related) A.name = str
RA.name = str
usr << "\blue You set the area '[prevname]' title to '[str]'." usr << "\blue You set the area '[prevname]' title to '[str]'."
interact() interact()
return return
@@ -172,17 +170,17 @@ move an amendment</a> to the drawing.</p>
/obj/item/blueprints/proc/set_area_machinery_title(var/area/A,var/title,var/oldtitle) /obj/item/blueprints/proc/set_area_machinery_title(var/area/A,var/title,var/oldtitle)
if (!oldtitle) // or replacetext goes to infinite loop if (!oldtitle) // or replacetext goes to infinite loop
return return
for(var/area/RA in A.related)
for(var/obj/machinery/alarm/M in RA) for(var/obj/machinery/alarm/M in A)
M.name = replacetext(M.name,oldtitle,title) M.name = replacetext(M.name,oldtitle,title)
for(var/obj/machinery/power/apc/M in RA) for(var/obj/machinery/power/apc/M in A)
M.name = replacetext(M.name,oldtitle,title) M.name = replacetext(M.name,oldtitle,title)
for(var/obj/machinery/atmospherics/unary/vent_scrubber/M in RA) for(var/obj/machinery/atmospherics/unary/vent_scrubber/M in A)
M.name = replacetext(M.name,oldtitle,title) M.name = replacetext(M.name,oldtitle,title)
for(var/obj/machinery/atmospherics/unary/vent_pump/M in RA) for(var/obj/machinery/atmospherics/unary/vent_pump/M in A)
M.name = replacetext(M.name,oldtitle,title) M.name = replacetext(M.name,oldtitle,title)
for(var/obj/machinery/door/M in RA) for(var/obj/machinery/door/M in A)
M.name = replacetext(M.name,oldtitle,title) M.name = replacetext(M.name,oldtitle,title)
//TODO: much much more. Unnamed airlocks, cameras, etc. //TODO: much much more. Unnamed airlocks, cameras, etc.
/obj/item/blueprints/proc/check_tile_is_border(var/turf/T2,var/dir) /obj/item/blueprints/proc/check_tile_is_border(var/turf/T2,var/dir)

View File

@@ -58,10 +58,10 @@
on = 0 on = 0
else else
var/area/A = src.loc.loc var/area/A = src.loc.loc
if(!A || !isarea(A) || !A.master) if(!A || !isarea(A))
on = 0 on = 0
else else
on = A.master.powered(EQUIP) // set "on" to the power status on = A.powered(EQUIP) // set "on" to the power status
if(!on) if(!on)
icon_state = "intercom-p" icon_state = "intercom-p"

View File

@@ -96,18 +96,17 @@
* Assisting procs * * Assisting procs *
******************/ ******************/
/atom/proc/get_alarm_area() /atom/proc/get_alarm_area()
var/area/A = get_area(src) return get_area(src)
return A.master
/area/get_alarm_area() /area/get_alarm_area()
return src.master return src
/atom/proc/get_alarm_name() /atom/proc/get_alarm_name()
var/area/A = get_area(src) var/area/A = get_area(src)
return A.master.name return A.name
/area/get_alarm_name() /area/get_alarm_name()
return master.name return name
/mob/get_alarm_name() /mob/get_alarm_name()
return name return name

View File

@@ -84,8 +84,7 @@
return src return src
/turf/get_alarm_origin() /turf/get_alarm_origin()
var/area/area = get_area(src) return get_area(src)
return area.master // Very important to get area.master, as dynamic lightning can and will split areas.
/datum/alarm_handler/proc/register(var/object, var/procName) /datum/alarm_handler/proc/register(var/object, var/procName)
listeners[object] = procName listeners[object] = procName

View File

@@ -63,11 +63,10 @@
//world << " checking [areapath]" //world << " checking [areapath]"
var/area/A = locate(areapath) var/area/A = locate(areapath)
//world << " A: [A], contents.len: [A.contents.len]" //world << " A: [A], contents.len: [A.contents.len]"
for(var/area/B in A.related)
//world << " B: [B], contents.len: [B.contents.len]" //world << " B: [B], contents.len: [B.contents.len]"
for(var/turf/simulated/floor/F in B.contents) for(var/turf/simulated/floor/F in A.contents)
if(!F.contents.len) if(!F.contents.len)
turfs += F turfs += F
var/list/spawn_types = list() var/list/spawn_types = list()
var/max_number var/max_number

View File

@@ -6,10 +6,9 @@
var/list/turf/simulated/floor/turfs = list() //list of all the empty floor turfs in the hallway areas var/list/turf/simulated/floor/turfs = list() //list of all the empty floor turfs in the hallway areas
for(var/areapath in typesof(/area/hallway)) for(var/areapath in typesof(/area/hallway))
var/area/A = locate(areapath) var/area/A = locate(areapath)
for(var/area/B in A.related) for(var/turf/simulated/floor/F in A.contents)
for(var/turf/simulated/floor/F in B.contents) if(!F.contents.len)
if(!F.contents.len) turfs += F
turfs += F
if(turfs.len) //Pick a turf to spawn at if we can if(turfs.len) //Pick a turf to spawn at if we can
var/turf/simulated/floor/T = pick(turfs) var/turf/simulated/floor/T = pick(turfs)

View File

@@ -48,7 +48,7 @@
loc = T.loc loc = T.loc
if (istype(loc, /area)) if (istype(loc, /area))
//stage = 4 //stage = 4
if (!loc.master.power_equip && !istype(src.loc,/obj/item)) if (!loc.power_equip && !istype(src.loc,/obj/item))
//stage = 5 //stage = 5
blind = 1 blind = 1
@@ -115,7 +115,7 @@
spawn(20) spawn(20)
src << "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection." src << "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection."
sleep(50) sleep(50)
if (loc.master.power_equip) if (loc.power_equip)
if (!istype(T, /turf/space)) if (!istype(T, /turf/space))
src << "Alert cancelled. Power has been restored without our assistance." src << "Alert cancelled. Power has been restored without our assistance."
src:aiRestorePowerRoutine = 0 src:aiRestorePowerRoutine = 0
@@ -135,18 +135,17 @@
var/PRP var/PRP
for (PRP=1, PRP<=4, PRP++) for (PRP=1, PRP<=4, PRP++)
for(var/area/A in current_area.master.related) for (var/obj/machinery/power/apc/APC in current_area)
for (var/obj/machinery/power/apc/APC in A) if (!(APC.stat & BROKEN))
if (!(APC.stat & BROKEN)) theAPC = APC
theAPC = APC break
break
if (!theAPC) if (!theAPC)
switch(PRP) switch(PRP)
if (1) src << "Unable to locate APC!" if (1) src << "Unable to locate APC!"
else src << "Lost connection with the APC!" else src << "Lost connection with the APC!"
src:aiRestorePowerRoutine = 2 src:aiRestorePowerRoutine = 2
return return
if (loc.master.power_equip) if (loc.power_equip)
if (!istype(T, /turf/space)) if (!istype(T, /turf/space))
src << "Alert cancelled. Power has been restored without our assistance." src << "Alert cancelled. Power has been restored without our assistance."
src:aiRestorePowerRoutine = 0 src:aiRestorePowerRoutine = 0
@@ -181,7 +180,7 @@
/mob/living/silicon/ai/proc/lacks_power() /mob/living/silicon/ai/proc/lacks_power()
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
var/area/A = get_area(src) var/area/A = get_area(src)
return ((!A.master.power_equip) && A.requires_power == 1 || istype(T, /turf/space)) && !istype(src.loc,/obj/item) return ((!A.power_equip) && A.requires_power == 1 || istype(T, /turf/space)) && !istype(src.loc,/obj/item)
/mob/living/silicon/ai/updatehealth() /mob/living/silicon/ai/updatehealth()
if(status_flags & GODMODE) if(status_flags & GODMODE)

View File

@@ -1253,11 +1253,10 @@ 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/obj/machinery/light/L in area)
for(var/obj/machinery/light/L in A) L.on = 1
L.on = 1 L.broken()
L.broken() sleep(1)
sleep(1)
/obj/machinery/power/apc/proc/setsubsystem(val) /obj/machinery/power/apc/proc/setsubsystem(val)
if(cell && cell.charge > 0) if(cell && cell.charge > 0)

View File

@@ -50,8 +50,8 @@
for(var/area/A in range(src,effectiverange)) for(var/area/A in range(src,effectiverange))
if(A.name == "Space") if(A.name == "Space")
continue // No (de)gravitizing space. continue // No (de)gravitizing space.
if(A.master && !( A.master in localareas) ) if(!(A in localareas))
localareas += A.master localareas += A
/obj/machinery/computer/gravity_control_computer/proc/findgenerator() /obj/machinery/computer/gravity_control_computer/proc/findgenerator()
var/obj/machinery/gravity_generator/foundgenerator = null var/obj/machinery/gravity_generator/foundgenerator = null
@@ -125,7 +125,7 @@
for(var/area/A in gravity_generator:localareas) for(var/area/A in gravity_generator:localareas)
var/obj/machinery/gravity_generator/G var/obj/machinery/gravity_generator/G
for(G in machines) for(G in machines)
if((A.master in G.localareas) && (G.on)) if((A in G.localareas) && (G.on))
break break
if(!G) if(!G)
A.gravitychange(0,A) A.gravitychange(0,A)

View File

@@ -441,7 +441,7 @@
// true if area has power and lightswitch is on // true if area has power and lightswitch is on
/obj/machinery/light/proc/has_power() /obj/machinery/light/proc/has_power()
var/area/A = src.loc.loc var/area/A = src.loc.loc
return A.master.lightswitch && A.master.power_light return A.lightswitch && A.power_light
/obj/machinery/light/proc/flicker(var/amount = rand(10, 20)) /obj/machinery/light/proc/flicker(var/amount = rand(10, 20))
if(flickering) return if(flickering) return
@@ -613,7 +613,6 @@
/obj/machinery/light/power_change() /obj/machinery/light/power_change()
spawn(10) spawn(10)
var/area/A = src.loc.loc var/area/A = src.loc.loc
A = A.master
seton(A.lightswitch && A.power_light) seton(A.lightswitch && A.power_light)
// called when on fire // called when on fire

View File

@@ -69,20 +69,20 @@
// return 1 // return 1
var/area/A = src.loc.loc // make sure it's in an area var/area/A = src.loc.loc // make sure it's in an area
if(!A || !isarea(A) || !A.master) if(!A || !isarea(A))
return 0 // if not, then not powered return 0 // if not, then not powered
if(chan == -1) if(chan == -1)
chan = power_channel 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 // increment the power usage stats for an area
/obj/machinery/proc/use_power(var/amount, var/chan = -1) // defaults to power_channel /obj/machinery/proc/use_power(var/amount, var/chan = -1) // defaults to power_channel
var/area/A = get_area(src) // make sure it's in an area var/area/A = get_area(src) // make sure it's in an area
if(!A || !isarea(A) || !A.master) if(!A || !isarea(A))
return return
if(chan == -1) if(chan == -1)
chan = power_channel chan = power_channel
A.master.use_power(amount, chan) A.use_power(amount, chan)
/obj/machinery/proc/power_change() // called whenever the power settings of the containing area change /obj/machinery/proc/power_change() // called whenever the power settings of the containing area change
// by default, check equipment channel & set flag // by default, check equipment channel & set flag

View File

@@ -150,7 +150,6 @@
return null return null
/area/proc/get_apc() /area/proc/get_apc()
for(var/area/RA in src.related) var/obj/machinery/power/apc/FINDME = locate() in src
var/obj/machinery/power/apc/FINDME = locate() in RA if (FINDME)
if (FINDME) return FINDME
return FINDME