Files
OpenSS13/Code/areas.dm
2008-07-27 06:31:25 +00:00

369 lines
7.5 KiB
Plaintext

/area
var/fire = null
level = null
name = "area"
mouse_opacity = 0
var/lightswitch = 1
var/eject = null
var/requires_power = 1
var/power_equip = 1
var/power_light = 1
var/power_environ = 1
var/used_equip = 0
var/used_light = 0
var/used_environ = 0
var/numturfs = 0
var/linkarea = null
var/area/linked = null
var/no_air = null
/area/aircontrol
name = "aircontrol"
linkarea = "airintake"
/area/airintake
name = "air intake"
/area/airtunnel1
name = "airtunnel"
/area/control_room
name = "control room"
/area/controlaccess
name = "control access"
/area/crew_quarters
name = "crew quarters"
/area/decontamination
name = "decontamination"
/area/dummy
name = "dummy"
/area/engine
name = "engine"
/area/engine_access
name = "engine access"
/area/north_solar
name = "north solar"
/area/escapezone
name = "escape zone"
/area/hallways
name = "hallway"
/area/hallways/centralhall
name = "central hall"
/area/hallways/eastairlock
name = "east airlock"
/area/hallways/labaccess
name = "lab access"
/area/hallways/loungehall
name = "lounge hall"
/area/lounge
name = "lounge"
/area/medical
name = "medical bay"
/area/medicalresearch
name = "medical research"
/area/medicalstorage
name = "medical storage"
/area/oxygen_storage
name = "gas storage"
/area/security
name = "security"
linkarea = "brig"
/area/shuttle
requires_power = 0
name = "shuttle"
/area/shuttle_airlock
name = "shuttle airlock"
/area/shuttle_prison
name = "prison shuttle"
requires_power = 0
/area/arrival/start
name = "arrival area"
/area/arrival/shuttle
name = "arrival shuttle"
/area/sleep_area
name = "sleep area"
/area/solar_con
name = "solar power control"
/area/start
name = "start area"
/area/supply_station
name = "supply station"
/area/testlab1
name = "testlab1"
/area/testlab2
name = "testlab2"
/area/testlab3
name = "testlab3"
/area/testlab4
name = "testlab4"
/area/aux_engine
name = "aux. engine"
/area/toolstorage
name = "tool storage"
/area/tech_storage
name = "technical storage"
/area/toxinlab
name = "toxin lab"
/area/vehicles
requires_power = 0
/area/vehicles/shuttle1
/area/vehicles/shuttle2
/area/vehicles/shuttle3
// new areas
/area/sleep_area_annexe
name = "sleep area annexe"
/area/south_access
name = "southern access corridor"
/area/turret_protected/ai_upload
name = "AI upload room"
/area/turret_protected/ai_upload_foyer
name = "AI upload foyer"
/area/transport_tube
name = "transport tube"
/area/shuttle_docking_arm
name = "shuttle docking arm"
/area/secure_storage
name = "secure stores"
/area/emergency_storage
name = "emergency stores"
/area/morgue
name = "morgue"
/area/repair_bay
name = "repair bay"
/area/engine/engine_gas_storage
name = "engine gas storage"
/area/engine/engine_storage
name = "engine storage"
/area/engine/engine_hallway
name = "engine hallway"
/area/engine/generator
name = "generator room"
/area/engine/combustion
name = "combustion chamber"
/area/engine/engine_control
name = "engine control"
/area/engine/engine_mon
name = "engine monitoring"
/area/engine/prototype_engine
name = "prototype engine"
/area/station_teleport
name = "SS13 teleporter"
/area/chapel
name = "chapel"
/area/attack_ship
name = "attack ship"
/area/security_sub
name = "security annexe"
/area/aux_storage
name = "aux. storage"
/area/eva_storage
name = "EVA storage"
/area/weapon_sat
name = "weapon sat"
requires_power = 0
/area/med_sat
name = "med. sat"
requires_power = 0
/area/secret_base
name = "secret base"
no_air = 1
power_equip = 0
power_light = 0
power_environ = 0
/area/prison
name = "prison"
requires_power = 1
/area/control_station
name = "control station"
requires_power = 0
/area/brig
name = "brig"
/area/syndicate_station
name = "syndicate mini-station"
/area/turret_protected/computer_core
name = "Computer Core"
/area/medical_station/medical_dock
name = "dock"
/area/medical_station/medical_station
name = "main deck"
/area/medical_station/medical_engine
name = "engine control"
/area/medical_station/medical_engine_storage
name = "engine storage"
/area/medical_station/atmosphere_control_center
name = "atmosphere control center"
/area/medical_station/equipment_storage
name = "equipment storage"
/area/medical_station/chemical_storage
name = "chemical storage"
/area/medical_station/atmosphere_experiment
name = "experimental atmospheric testing"
/area/medical_station/ventilation_shaft
name = "ventilation shaft"
/area/medical_station/atmotestroom
name = "atmo test room"
/area/New()
..()
src.icon = 'alert.dmi'
src.layer = 10
if(!requires_power)
power_light = 1
power_equip = 1
power_environ = 1
spawn(5)
for(var/turf/T in src) // count the number of turfs (for lighting calc)
numturfs++ // spawned with a delay so turfs can finish loading
if(no_air)
T.oxygen = 0 // remove air if so specified for this area
T.n2 = 0
T.res_vars()
if(linkarea)
linked = locate(text2path("/area/[linkarea]")) // area linked to this for power calcs
spawn(15)
src.power_change() // all machines set to current power level, also updates lighting icon
/area/vehicles/New()
..()
sleep(1)
var/obj/shut_controller/S = new /obj/shut_controller( )
shuttles += S
for(var/obj/move/O in src)
S.parts += O
O.master = S
return
/area/proc/firealert()
if (!( src.fire ))
src.fire = 1
src.updateicon()
src.mouse_opacity = 0
for(var/obj/machinery/door/firedoor/D in src)
if (!( D.density ))
spawn( 0 )
D.closefire()
return
return
/area/proc/updateicon()
if ((fire || eject) && power_environ)
if(fire && !eject)
icon_state = "blue"
else if(!fire && eject)
icon_state = "red"
else
icon_state = "blue-red"
else
if(lightswitch && power_light)
icon_state = null
else
icon_state = "dark128"
if(lightswitch && power_light)
luminosity = 1;
else
luminosity = 0;
/*
#define EQUIP 1
#define LIGHT 2
#define ENVIRON 3
*/
/area/proc/powered(var/chan) // return true if the area has power to given channel
if(!requires_power)
return 1
switch(chan)
if(EQUIP)
return power_equip
if(LIGHT)
return power_light
if(ENVIRON)
return power_environ
return 0
// called when power status changes
/area/proc/power_change()
for(var/obj/machinery/M in src) // for each machine in the area
M.power_change() // reverify power status (to update icons etc.)
spawn(rand(15,25))
src.updateicon()
if(linked)
linked.power_equip = power_equip
linked.power_light = power_light
linked.power_environ = power_environ
linked.power_change()
/area/proc/usage(var/chan)
var/used = 0
switch(chan)
if(LIGHT)
used += used_light
if(EQUIP)
used += used_equip
if(ENVIRON)
used += used_environ
if(TOTAL)
used += used_light + used_equip + used_environ
if(linked)
return linked.usage(chan) + used
else
return used
/area/proc/clear_usage()
if(linked)
linked.clear_usage()
used_equip = 0
used_light = 0
used_environ = 0
/area/proc/use_power(var/amount, var/chan)
switch(chan)
if(EQUIP)
used_equip += amount
if(LIGHT)
used_light += amount
if(ENVIRON)
used_environ += amount
#define LIGHTING_POWER 8 // power (W) per turf used for lighting
/area/proc/calc_lighting()
if(lightswitch && power_light)
used_light += numturfs * LIGHTING_POWER