Files
CHOMPStation2/code/game/machinery/lightswitch.dm
Arokha Sieyes f2fef6f410 Planes Framework (#4545)
* Polaris initial plane upstream merge

* POLARIS: Fix RIG visors with new plane system, and material scanner VIS_FULLBRIGHT

* POLARIS: Fix GetFlatIcon so that cameras and id pictures don't show the HUD overlays.

* POLARIS: Adds a 'alter values' proc for plane master ease of tweaking

Setting stuff like colorblindness variety and things.

* Remove NIF reference, fix lighting layer define

* Handle effects above lighting plane

* Moved all layer defines to planes+layers.dm
* Fixed overlays that are supposed to be above lighting to use the PLANE_LIGHTING_ABOVE

* Merge: 3000% human/update_icons() speed improvement

* Merge: Avoid ghosts pointing at things
2018-01-17 13:45:54 -06:00

79 lines
1.7 KiB
Plaintext

// the light switch
// 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
use_power = 1
idle_power_usage = 10
power_channel = LIGHT
var/on = 1
var/area/area = null
var/otherarea = null
var/image/overlay
/obj/machinery/light_switch/New()
..()
spawn(5)
area = get_area(src)
if(otherarea)
area = locate(text2path("/area/[otherarea]"))
if(!name)
name = "light switch ([area.name])"
on = area.lightswitch
updateicon()
/obj/machinery/light_switch/proc/updateicon()
if(!overlay)
overlay = image(icon, "light1-overlay")
overlay.plane = PLANE_LIGHTING_ABOVE
overlays.Cut()
if(stat & NOPOWER)
icon_state = "light-p"
set_light(0)
else
icon_state = "light[on]"
overlay.icon_state = "light[on]-overlay"
overlays += overlay
set_light(2, 0.1, on ? "#82FF4C" : "#F86060")
/obj/machinery/light_switch/examine(mob/user)
if(..(user, 1))
user << "A light switch. It is [on? "on" : "off"]."
/obj/machinery/light_switch/attack_hand(mob/user)
on = !on
area.lightswitch = on
area.updateicon()
for(var/obj/machinery/light_switch/L in area)
L.on = on
L.updateicon()
area.power_change()
/obj/machinery/light_switch/power_change()
if(!otherarea)
if(powered(LIGHT))
stat &= ~NOPOWER
else
stat |= NOPOWER
updateicon()
/obj/machinery/light_switch/emp_act(severity)
if(stat & (BROKEN|NOPOWER))
..(severity)
return
power_change()
..(severity)