mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
Adds Floor Lights (and makes lights not have random ranges) (#26923)
* Adds Floor Lights * undef * remove TECHNICAL DEBT™ * remove more technical debt™ * mapping changes
This commit is contained in:
@@ -92878,8 +92878,10 @@
|
||||
"xUY" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/clothing/mask/cigarette/cigar,
|
||||
/turf/simulated/floor/light{
|
||||
color = "#fff"
|
||||
/obj/machinery/light/floor,
|
||||
/turf/simulated/floor/plasteel{
|
||||
dir = 1;
|
||||
icon_state = "bluered"
|
||||
},
|
||||
/area/station/command/bridge)
|
||||
"xVe" = (
|
||||
|
||||
@@ -57051,7 +57051,13 @@
|
||||
},
|
||||
/area/station/science/genetics)
|
||||
"dnW" = (
|
||||
/turf/simulated/floor/light,
|
||||
/obj/machinery/atmospherics/pipe/simple/visible{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/light/floor,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/area/station/engineering/atmos)
|
||||
"dnX" = (
|
||||
/obj/structure/chair/sofa/left{
|
||||
@@ -85188,6 +85194,12 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/station/maintenance/port)
|
||||
"pXV" = (
|
||||
/obj/machinery/light/floor,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/area/station/engineering/atmos)
|
||||
"pYb" = (
|
||||
/obj/structure/flora/grass/jungle,
|
||||
/turf/simulated/floor/plating,
|
||||
@@ -88507,10 +88519,11 @@
|
||||
/turf/simulated/floor/carpet,
|
||||
/area/station/science/robotics/showroom)
|
||||
"rUU" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/visible{
|
||||
dir = 4
|
||||
/obj/machinery/atmospherics/pipe/simple/visible,
|
||||
/obj/machinery/light/floor,
|
||||
/turf/simulated/floor/plasteel{
|
||||
icon_state = "neutralfull"
|
||||
},
|
||||
/turf/simulated/floor/light,
|
||||
/area/station/engineering/atmos)
|
||||
"rVB" = (
|
||||
/obj/structure/table/reinforced,
|
||||
@@ -124154,11 +124167,11 @@ aSD
|
||||
iYX
|
||||
aVF
|
||||
ban
|
||||
dnW
|
||||
ban
|
||||
tNx
|
||||
lth
|
||||
fgF
|
||||
dnW
|
||||
ban
|
||||
wKG
|
||||
lfU
|
||||
aYt
|
||||
@@ -124668,12 +124681,12 @@ aSD
|
||||
aUc
|
||||
aVF
|
||||
ban
|
||||
pXV
|
||||
ban
|
||||
ban
|
||||
ban
|
||||
ban
|
||||
ban
|
||||
jgG
|
||||
dnW
|
||||
ban
|
||||
biQ
|
||||
bkC
|
||||
@@ -125953,11 +125966,11 @@ aSD
|
||||
aUc
|
||||
aVF
|
||||
jgG
|
||||
rUU
|
||||
jgG
|
||||
iUf
|
||||
iUf
|
||||
iUf
|
||||
dnW
|
||||
ban
|
||||
nae
|
||||
ban
|
||||
aZm
|
||||
@@ -126467,12 +126480,12 @@ aSH
|
||||
aUd
|
||||
aVF
|
||||
jVW
|
||||
rUU
|
||||
beJ
|
||||
beJ
|
||||
beJ
|
||||
beJ
|
||||
beJ
|
||||
beJ
|
||||
rUU
|
||||
bhk
|
||||
biU
|
||||
bkJ
|
||||
|
||||
@@ -9,8 +9,14 @@
|
||||
#define PLANE_SPACE -95
|
||||
#define PLANE_SPACE_PARALLAX -90
|
||||
|
||||
#define FLOOR_PLANE -2
|
||||
#define FLOOR_OVERLAY_PLANE -1.5
|
||||
#define FLOOR_PLANE -6
|
||||
#define FLOOR_OVERLAY_PLANE -5
|
||||
|
||||
#define FLOOR_LIGHTING_LAMPS_GLARE -4
|
||||
#define FLOOR_LIGHTING_LAMPS_SELFGLOW -3
|
||||
#define FLOOR_LIGHTING_LAMPS_PLANE -2
|
||||
#define FLOOR_LIGHTING_LAMPS_RENDER_TARGET "*FLOOR_LIGHTING_LAMPS_RENDER_TARGET"
|
||||
|
||||
#define GAME_PLANE -1
|
||||
#define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals
|
||||
|
||||
|
||||
@@ -118,6 +118,11 @@
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_target = LIGHTING_LAMPS_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/lamps/floor
|
||||
name = "floor lamps plane master"
|
||||
plane = FLOOR_LIGHTING_LAMPS_PLANE
|
||||
render_target = FLOOR_LIGHTING_LAMPS_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/exposure
|
||||
name = "exposure plane master"
|
||||
plane = LIGHTING_EXPOSURE_PLANE
|
||||
@@ -143,6 +148,12 @@
|
||||
appearance_flags = PLANE_MASTER //should use client color
|
||||
blend_mode = BLEND_ADD
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
var/target_rendering = LIGHTING_LAMPS_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/lamps_selfglow/floor
|
||||
name = "floor lamps selfglow plane master"
|
||||
plane = FLOOR_LIGHTING_LAMPS_SELFGLOW
|
||||
target_rendering = FLOOR_LIGHTING_LAMPS_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/lamps_selfglow/backdrop(mob/mymob)
|
||||
remove_filter("add_lamps_to_selfglow")
|
||||
@@ -169,13 +180,19 @@
|
||||
else
|
||||
return
|
||||
|
||||
add_filter("add_lamps_to_selfglow", 1, layering_filter(render_source = LIGHTING_LAMPS_RENDER_TARGET, blend_mode = BLEND_OVERLAY))
|
||||
add_filter("add_lamps_to_selfglow", 1, layering_filter(render_source = target_rendering, blend_mode = BLEND_OVERLAY))
|
||||
add_filter("lamps_selfglow_bloom", 1, bloom_filter(threshold = "#777777", size = bloomsize, offset = bloomoffset, alpha = 80))
|
||||
|
||||
/atom/movable/screen/plane_master/lamps_glare
|
||||
name = "lamps glare plane master"
|
||||
plane = LIGHTING_LAMPS_GLARE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
var/target_rendering = LIGHTING_LAMPS_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/lamps_glare/floor
|
||||
name = "floor lamps glare plane master"
|
||||
plane = FLOOR_LIGHTING_LAMPS_GLARE
|
||||
target_rendering = FLOOR_LIGHTING_LAMPS_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/lamps_glare/backdrop(mob/mymob)
|
||||
remove_filter("add_lamps_to_glare")
|
||||
@@ -187,5 +204,5 @@
|
||||
var/enabled = mymob?.client?.prefs?.light & LIGHT_GLARE
|
||||
|
||||
if(enabled)
|
||||
add_filter("add_lamps_to_glare", 1, layering_filter(render_source = LIGHTING_LAMPS_RENDER_TARGET, blend_mode = BLEND_ADD))
|
||||
add_filter("add_lamps_to_glare", 1, layering_filter(render_source = target_rendering, blend_mode = BLEND_ADD))
|
||||
add_filter("lamps_glare", 1, radial_blur_filter(size = 0.035))
|
||||
|
||||
@@ -76,6 +76,9 @@
|
||||
name = PLANE_MASTERS_GAME
|
||||
controlled_planes = list(
|
||||
FLOOR_PLANE,
|
||||
FLOOR_LIGHTING_LAMPS_SELFGLOW,
|
||||
FLOOR_LIGHTING_LAMPS_PLANE,
|
||||
FLOOR_LIGHTING_LAMPS_GLARE,
|
||||
GAME_PLANE,
|
||||
LIGHTING_PLANE,
|
||||
PLANE_SPACE_PARALLAX,
|
||||
|
||||
@@ -345,7 +345,7 @@
|
||||
name = "glowing slime extract"
|
||||
desc = "A glowing ball of what appears to be amber."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "floor1" //not a slime extract sprite but... something close enough!
|
||||
icon_state = "slime-on"
|
||||
item_state = "slime"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
brightness_on = 6
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
newlight = new /obj/machinery/light_construct/small(constrloc)
|
||||
if("tube")
|
||||
newlight = new /obj/machinery/light_construct(constrloc)
|
||||
if("floor")
|
||||
newlight = new /obj/machinery/light_construct/floor(on_wall)
|
||||
else
|
||||
newlight = new /obj/machinery/light_construct/small(constrloc)
|
||||
newlight.dir = constrdir
|
||||
@@ -40,3 +42,13 @@
|
||||
icon_state = "bulb-construct-item"
|
||||
fixture_type = "bulb"
|
||||
metal_sheets_refunded = 1
|
||||
|
||||
/obj/item/mounted/frame/light_fixture/floor
|
||||
name = "floor light fixture frame"
|
||||
desc = "Used for building floor lights."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "floor-construct-item"
|
||||
fixture_type = "floor"
|
||||
metal_sheets_refunded = 3
|
||||
buildon_types = list(/turf/simulated/floor)
|
||||
allow_floor_mounting = TRUE
|
||||
|
||||
@@ -3,35 +3,30 @@
|
||||
/turf/simulated/mineral/ancient,
|
||||
/turf/simulated/wall
|
||||
)
|
||||
var/allow_floor_mounting = FALSE
|
||||
|
||||
|
||||
/obj/item/mounted/afterattack(atom/A, mob/user, proximity_flag)
|
||||
var/found_type = 0
|
||||
for(var/turf_type in src.buildon_types)
|
||||
if(istype(A, turf_type))
|
||||
found_type = 1
|
||||
break
|
||||
|
||||
if(found_type)
|
||||
if(is_type_in_list(A, buildon_types))
|
||||
if(try_build(A, user, proximity_flag))
|
||||
return do_build(A, user)
|
||||
else
|
||||
..()
|
||||
..()
|
||||
|
||||
/obj/item/mounted/proc/try_build(turf/on_wall, mob/user, proximity_flag) //checks
|
||||
if(!on_wall || !user)
|
||||
return
|
||||
if(proximity_flag != 1) //if we aren't next to the wall
|
||||
return
|
||||
if(!( get_dir(on_wall,user) in GLOB.cardinal))
|
||||
to_chat(user, "<span class='warning'>You need to be standing next to a wall to place \the [src].</span>")
|
||||
if(!proximity_flag) //if we aren't next to the turf
|
||||
return
|
||||
if(!allow_floor_mounting)
|
||||
if(!(get_dir(on_wall, user) in GLOB.cardinal))
|
||||
to_chat(user, "<span class='warning'>You need to be standing next to [on_wall] to place [src].</span>")
|
||||
return
|
||||
|
||||
if(gotwallitem(get_turf(user), get_dir(on_wall,user)))
|
||||
to_chat(user, "<span class='warning'>There's already an item on this wall!</span>")
|
||||
return
|
||||
if(gotwallitem(get_turf(user), get_dir(on_wall, user)))
|
||||
to_chat(user, "<span class='warning'>There's already an item on this wall!</span>")
|
||||
return
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/mounted/proc/do_build(turf/on_wall, mob/user) //the buildy bit after we pass the checks
|
||||
return
|
||||
|
||||
@@ -112,6 +112,7 @@ GLOBAL_LIST_INIT(metal_recipes, list(
|
||||
new /datum/stack_recipe("grenade casing", /obj/item/grenade/chem_grenade),
|
||||
new /datum/stack_recipe("light fixture frame", /obj/item/mounted/frame/light_fixture, 2),
|
||||
new /datum/stack_recipe("small light fixture frame", /obj/item/mounted/frame/light_fixture/small, 1),
|
||||
new /datum/stack_recipe("floor light fixture frame", /obj/item/mounted/frame/light_fixture/floor, 3),
|
||||
null,
|
||||
new /datum/stack_recipe("apc frame", /obj/item/mounted/frame/apc_frame, 2),
|
||||
new /datum/stack_recipe("air alarm frame", /obj/item/mounted/frame/alarm_frame, 2),
|
||||
|
||||
@@ -564,13 +564,16 @@
|
||||
. = ..()
|
||||
if(length(user.screen))
|
||||
var/atom/movable/screen/plane_master/exposure/exposure_master = locate() in user.screen
|
||||
var/atom/movable/screen/plane_master/lamps_selfglow/glow_master = locate() in user.screen
|
||||
var/atom/movable/screen/plane_master/lamps_glare/glare_master = locate() in user.screen
|
||||
|
||||
exposure_master.alpha = user.prefs.light & LIGHT_NEW_LIGHTING ? 255 : 0
|
||||
exposure_master.backdrop(user.mob)
|
||||
glow_master.backdrop(user.mob)
|
||||
glare_master.backdrop(user.mob)
|
||||
|
||||
for(var/atom/movable/screen/plane_master/lamps_selfglow/glow_master in user.screen)
|
||||
glow_master.backdrop(user.mob)
|
||||
|
||||
for(var/atom/movable/screen/plane_master/lamps_glare/glare_master in user.screen)
|
||||
glare_master.backdrop(user.mob)
|
||||
|
||||
|
||||
/datum/preference_toggle/special_toggle/set_glow_level
|
||||
name = "Set Glow Level"
|
||||
@@ -591,8 +594,8 @@
|
||||
user.prefs.glowlevel = glow_levels[new_level]
|
||||
to_chat(usr, "Glow level: [new_level].")
|
||||
if(length(user.screen))
|
||||
var/atom/movable/screen/plane_master/lamps_selfglow/glow_master = locate() in user.screen
|
||||
glow_master.backdrop(user.mob)
|
||||
for(var/atom/movable/screen/plane_master/lamps_selfglow/glow_master in user.screen)
|
||||
glow_master.backdrop(user.mob)
|
||||
return ..()
|
||||
|
||||
/datum/preference_toggle/toggle_lamp_exposure
|
||||
@@ -623,6 +626,7 @@
|
||||
|
||||
/datum/preference_toggle/toggle_lamps_glare/set_toggles(client/user)
|
||||
. = ..()
|
||||
if(length(user.screen))
|
||||
var/atom/movable/screen/plane_master/lamps_glare/glare_master = locate() in user.screen
|
||||
if(!length(user.screen))
|
||||
return
|
||||
for(var/atom/movable/screen/plane_master/lamps_glare/glare_master in user.screen)
|
||||
glare_master.backdrop(user.mob)
|
||||
|
||||
@@ -99,8 +99,11 @@
|
||||
cut_overlay(exposure_overlay)
|
||||
|
||||
if(glow_icon && glow_icon_state)
|
||||
glow_overlay = image(icon = glow_icon, icon_state = glow_icon_state, dir = dir, layer = 1)
|
||||
glow_overlay.plane = LIGHTING_LAMPS_PLANE
|
||||
glow_overlay = image(icon = glow_icon, icon_state = glow_icon_state, dir = dir, layer = -2)
|
||||
if(layer <= LOW_OBJ_LAYER)
|
||||
glow_overlay.plane = FLOOR_LIGHTING_LAMPS_PLANE // Yeah this sucks
|
||||
else
|
||||
glow_overlay.plane = LIGHTING_LAMPS_PLANE
|
||||
glow_overlay.blend_mode = BLEND_ADD
|
||||
|
||||
if(glow_colored)
|
||||
|
||||
+102
-85
@@ -14,6 +14,10 @@
|
||||
#define MAXIMUM_SAFE_BACKUP_CHARGE 600
|
||||
#define EMERGENCY_LIGHT_POWER_USE 0.5
|
||||
|
||||
#define LIGHT_CONSTRUCT_EMPTY_FRAME 1
|
||||
#define LIGHT_CONSTRUCT_WIRED 2
|
||||
#define LIGHT_CONSTRUCT_COMPLETED 3
|
||||
|
||||
/**
|
||||
* # Light fixture frame
|
||||
*
|
||||
@@ -27,84 +31,73 @@
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "tube-construct-stage1"
|
||||
anchored = TRUE
|
||||
layer = 5
|
||||
layer = FLY_LAYER
|
||||
max_integrity = 200
|
||||
armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 80, ACID = 50)
|
||||
/// Construction stage (1 = Empty frame | 2 = Wired frame | 3 = Completed frame)
|
||||
var/stage = 1
|
||||
/// Construction stage
|
||||
var/stage = LIGHT_CONSTRUCT_EMPTY_FRAME
|
||||
/// Light bulb type
|
||||
var/fixture_type = "tube"
|
||||
/// How many metal sheets get given after deconstruction
|
||||
var/sheets_refunded = 2
|
||||
/// Holder for the completed fixture
|
||||
var/obj/machinery/light/newlight = null
|
||||
var/obj/machinery/light/construct_type = /obj/machinery/light/built
|
||||
|
||||
/obj/machinery/light_construct/Initialize(mapload, ndir, building)
|
||||
. = ..()
|
||||
if(fixture_type == "bulb")
|
||||
icon_state = "bulb-construct-stage1"
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
|
||||
/obj/machinery/light_construct/examine(mob/user)
|
||||
. = ..()
|
||||
if(get_dist(user, src) <= 2)
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(LIGHT_CONSTRUCT_EMPTY_FRAME)
|
||||
. += "<span class='notice'>It's an empty frame <b>bolted</b> to the wall. It needs to be <i>wired</i>.</span>"
|
||||
if(2)
|
||||
if(LIGHT_CONSTRUCT_WIRED)
|
||||
. += "<span class='notice'>The frame is <b>wired</b>, but the casing's cover is <i>unscrewed</i>.</span>"
|
||||
if(3)
|
||||
if(LIGHT_CONSTRUCT_COMPLETED)
|
||||
. += "<span class='notice'>The casing is <b>screwed</b> shut.</span>"
|
||||
|
||||
/obj/machinery/light_construct/wrench_act(mob/living/user, obj/item/I)
|
||||
. = TRUE
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(LIGHT_CONSTRUCT_EMPTY_FRAME)
|
||||
to_chat(user, "<span class='notice'>You begin to dismantle [src].</span>")
|
||||
if(!I.use_tool(src, user, 30, volume = I.tool_volume))
|
||||
return
|
||||
new /obj/item/stack/sheet/metal(get_turf(loc), sheets_refunded)
|
||||
TOOL_DISMANTLE_SUCCESS_MESSAGE
|
||||
qdel(src)
|
||||
if(2)
|
||||
if(LIGHT_CONSTRUCT_WIRED)
|
||||
to_chat(user, "<span class='warning'>You have to remove the wires first.</span>")
|
||||
if(3)
|
||||
if(LIGHT_CONSTRUCT_COMPLETED)
|
||||
to_chat(user, "<span class='warning'>You have to unscrew the case first.</span>")
|
||||
|
||||
/obj/machinery/light_construct/wirecutter_act(mob/living/user, obj/item/I)
|
||||
if(stage != 2)
|
||||
if(stage != LIGHT_CONSTRUCT_WIRED)
|
||||
return
|
||||
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
|
||||
return
|
||||
. = TRUE
|
||||
stage = 1
|
||||
switch(fixture_type)
|
||||
if("tube")
|
||||
icon_state = "tube-construct-stage1"
|
||||
if("bulb")
|
||||
icon_state = "bulb-construct-stage1"
|
||||
|
||||
stage = LIGHT_CONSTRUCT_EMPTY_FRAME
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
new /obj/item/stack/cable_coil(get_turf(loc), 1, paramcolor = COLOR_RED)
|
||||
WIRECUTTER_SNIP_MESSAGE
|
||||
|
||||
/obj/machinery/light_construct/screwdriver_act(mob/living/user, obj/item/I)
|
||||
if(stage != 2)
|
||||
if(stage != LIGHT_CONSTRUCT_WIRED)
|
||||
return
|
||||
. = TRUE
|
||||
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
|
||||
return
|
||||
switch(fixture_type)
|
||||
if("tube")
|
||||
icon_state = "tube-empty"
|
||||
if("bulb")
|
||||
icon_state = "bulb-empty"
|
||||
stage = 3
|
||||
|
||||
stage = LIGHT_CONSTRUCT_COMPLETED
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
user.visible_message("<span class='notice'>[user] closes [src]'s casing.</span>", \
|
||||
"<span class='notice'>You close [src]'s casing.</span>", "<span class='notice'>You hear a screwdriver.</span>")
|
||||
|
||||
switch(fixture_type)
|
||||
if("tube")
|
||||
newlight = new /obj/machinery/light/built(loc)
|
||||
if("bulb")
|
||||
newlight = new /obj/machinery/light/small/built(loc)
|
||||
var/obj/machinery/light/newlight = new construct_type(loc)
|
||||
newlight.setDir(dir)
|
||||
transfer_fingerprints_to(newlight)
|
||||
qdel(src)
|
||||
@@ -112,16 +105,12 @@
|
||||
/obj/machinery/light_construct/attackby(obj/item/W, mob/living/user, params)
|
||||
add_fingerprint(user)
|
||||
if(istype(W, /obj/item/stack/cable_coil))
|
||||
if(stage != 1)
|
||||
if(stage != LIGHT_CONSTRUCT_EMPTY_FRAME)
|
||||
return
|
||||
var/obj/item/stack/cable_coil/coil = W
|
||||
coil.use(1)
|
||||
switch(fixture_type)
|
||||
if("tube")
|
||||
icon_state = "tube-construct-stage2"
|
||||
if("bulb")
|
||||
icon_state = "bulb-construct-stage2"
|
||||
stage = 2
|
||||
stage = LIGHT_CONSTRUCT_WIRED
|
||||
update_icon(UPDATE_ICON_STATE)
|
||||
playsound(loc, coil.usesound, 50, 1)
|
||||
user.visible_message("<span class='notice'>[user.name] adds wires to [src].</span>", \
|
||||
"<span class='notice'>You add wires to [src].</span>", "<span class='notice'>You hear a noise.</span>")
|
||||
@@ -138,6 +127,13 @@
|
||||
new /obj/item/stack/sheet/metal(loc, sheets_refunded)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/light_construct/update_icon_state()
|
||||
. = ..()
|
||||
if(stage == LIGHT_CONSTRUCT_COMPLETED)
|
||||
icon_state = "[fixture_type]-empty"
|
||||
return
|
||||
icon_state = "[fixture_type]-construct-stage[stage]"
|
||||
|
||||
/**
|
||||
* # Small light fixture frame
|
||||
*
|
||||
@@ -148,13 +144,28 @@
|
||||
/obj/machinery/light_construct/small
|
||||
name = "small light fixture frame"
|
||||
desc = "A small light fixture under construction."
|
||||
icon = 'icons/obj/lighting.dmi'
|
||||
icon_state = "bulb-construct-stage1"
|
||||
anchored = TRUE
|
||||
layer = 5
|
||||
stage = 1
|
||||
layer = FLY_LAYER
|
||||
fixture_type = "bulb"
|
||||
sheets_refunded = 1
|
||||
construct_type = /obj/machinery/light/small/built
|
||||
|
||||
/obj/machinery/light_construct/floor
|
||||
name = "floor light fixture frame"
|
||||
desc = "A floor light fixture under construction."
|
||||
icon_state = "floor-construct-stage1"
|
||||
anchored = TRUE
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
plane = FLOOR_PLANE
|
||||
fixture_type = "floor"
|
||||
sheets_refunded = 3
|
||||
construct_type = /obj/machinery/light/floor/built
|
||||
|
||||
|
||||
#undef LIGHT_CONSTRUCT_EMPTY_FRAME
|
||||
#undef LIGHT_CONSTRUCT_WIRED
|
||||
#undef LIGHT_CONSTRUCT_COMPLETED
|
||||
|
||||
|
||||
/**
|
||||
@@ -170,7 +181,7 @@
|
||||
glow_icon_state = "tube"
|
||||
exposure_icon_state = "cone"
|
||||
anchored = TRUE
|
||||
layer = 5
|
||||
layer = FLY_LAYER
|
||||
max_integrity = 100
|
||||
power_state = ACTIVE_POWER_USE
|
||||
idle_power_consumption = 2 //when in low power mode
|
||||
@@ -198,6 +209,8 @@
|
||||
var/light_type = /obj/item/light/tube
|
||||
/// Type of light bulb that goes into the fixture
|
||||
var/fitting = "tube"
|
||||
/// What light construct type to turn into when we are deconstructed
|
||||
var/obj/machinery/light_construct/deconstruct_type = /obj/machinery/light_construct
|
||||
/// How many times has the light been switched on/off? (This is used to calc the probability the light burns out)
|
||||
var/switchcount = 0
|
||||
/// Is the light rigged to explode?
|
||||
@@ -238,6 +251,7 @@
|
||||
brightness_color = "#a0a080"
|
||||
nightshift_light_range = 4
|
||||
light_type = /obj/item/light/bulb
|
||||
deconstruct_type = /obj/machinery/light_construct/small
|
||||
|
||||
/obj/machinery/light/spot
|
||||
name = "spotlight"
|
||||
@@ -245,13 +259,30 @@
|
||||
brightness_range = 12
|
||||
brightness_power = 4
|
||||
|
||||
/obj/machinery/light/built/Initialize(mapload)
|
||||
status = LIGHT_EMPTY
|
||||
return ..()
|
||||
/obj/machinery/light/floor
|
||||
name = "floor light"
|
||||
desc = "A lightbulb you can walk on without breaking it, amazing."
|
||||
icon_state = "floor1"
|
||||
glow_icon_state = "floor"
|
||||
exposure_icon_state = "floor_circle"
|
||||
base_state = "floor"
|
||||
fitting = "bulb"
|
||||
light_type = /obj/item/light/bulb
|
||||
deconstruct_type = /obj/machinery/light_construct/floor
|
||||
brightness_range = 6
|
||||
nightshift_light_range = 6
|
||||
layer = ABOVE_OPEN_TURF_LAYER
|
||||
plane = FLOOR_PLANE
|
||||
|
||||
/obj/machinery/light/small/built/Initialize(mapload)
|
||||
/obj/machinery/light/built
|
||||
status = LIGHT_EMPTY
|
||||
return ..()
|
||||
|
||||
/obj/machinery/light/small/built
|
||||
status = LIGHT_EMPTY
|
||||
|
||||
/obj/machinery/light/floor/built
|
||||
status = LIGHT_EMPTY
|
||||
|
||||
|
||||
// create a new lighting fixture
|
||||
/obj/machinery/light/Initialize(mapload)
|
||||
@@ -265,7 +296,7 @@
|
||||
if(A && !A.requires_power)
|
||||
on = TRUE
|
||||
|
||||
switch(fitting)
|
||||
switch(base_state)
|
||||
if("tube")
|
||||
brightness_range = 8
|
||||
if(prob(2))
|
||||
@@ -275,6 +306,11 @@
|
||||
brightness_color = "#a0a080"
|
||||
if(prob(5))
|
||||
break_light_tube(TRUE)
|
||||
if("floor")
|
||||
brightness_range = 6
|
||||
brightness_color = "#a0a080"
|
||||
if(prob(3))
|
||||
break_light_tube(TRUE)
|
||||
update(FALSE, TRUE, FALSE)
|
||||
|
||||
/obj/machinery/light/proc/on_security_level_change_planned(datum/source, previous_level_number, new_level_number)
|
||||
@@ -557,18 +593,10 @@
|
||||
|
||||
/obj/machinery/light/deconstruct(disassembled = TRUE)
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
var/obj/machinery/light_construct/newlight = null
|
||||
var/cur_stage = 2
|
||||
if(!disassembled)
|
||||
cur_stage = 1
|
||||
switch(fitting)
|
||||
if("tube")
|
||||
newlight = new /obj/machinery/light_construct(loc)
|
||||
newlight.icon_state = "tube-construct-stage2"
|
||||
|
||||
if("bulb")
|
||||
newlight = new /obj/machinery/light_construct/small(loc)
|
||||
newlight.icon_state = "bulb-construct-stage2"
|
||||
var/obj/machinery/light_construct/newlight = new deconstruct_type(loc)
|
||||
newlight.setDir(dir)
|
||||
newlight.stage = cur_stage
|
||||
if(!disassembled)
|
||||
@@ -578,6 +606,7 @@
|
||||
if(status != LIGHT_EMPTY)
|
||||
drop_light_tube()
|
||||
new /obj/item/stack/cable_coil(loc, 1, "red")
|
||||
newlight.update_icon(UPDATE_ICON_STATE)
|
||||
transfer_fingerprints_to(newlight)
|
||||
qdel(src)
|
||||
|
||||
@@ -822,6 +851,22 @@
|
||||
explosion(T, 0, 0, 2, 2)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/light/extinguish_light(force = FALSE)
|
||||
on = FALSE
|
||||
extinguished = TRUE
|
||||
emergency_mode = FALSE
|
||||
no_emergency = TRUE
|
||||
addtimer(CALLBACK(src, PROC_REF(enable_emergency_lighting)), 5 MINUTES, TIMER_UNIQUE|TIMER_OVERRIDE)
|
||||
visible_message("<span class='danger'>[src] flickers and falls dark.</span>")
|
||||
update(FALSE)
|
||||
|
||||
/obj/machinery/light/proc/enable_emergency_lighting()
|
||||
visible_message("<span class='notice'>[src]'s emergency lighting flickers back to life.</span>")
|
||||
extinguished = FALSE
|
||||
no_emergency = FALSE
|
||||
update(FALSE)
|
||||
|
||||
|
||||
/**
|
||||
* MARK: Light item
|
||||
*
|
||||
@@ -908,14 +953,6 @@
|
||||
..()
|
||||
shatter()
|
||||
|
||||
/obj/item/light/bulb/fire
|
||||
name = "fire bulb"
|
||||
desc = "A replacement fire bulb."
|
||||
icon_state = "fbulb"
|
||||
base_state = "fbulb"
|
||||
item_state = "egg4"
|
||||
brightness_range = 5
|
||||
|
||||
// update the icon state and description of the light
|
||||
|
||||
/obj/item/light/proc/update()
|
||||
@@ -933,11 +970,6 @@
|
||||
|
||||
/obj/item/light/New()
|
||||
..()
|
||||
switch(name)
|
||||
if("light tube")
|
||||
brightness_range = rand(6,9)
|
||||
if("light bulb")
|
||||
brightness_range = rand(4,6)
|
||||
update()
|
||||
|
||||
|
||||
@@ -990,21 +1022,6 @@
|
||||
limb.droplimb(0, DROPLIMB_BURN)
|
||||
return FIRELOSS
|
||||
|
||||
/obj/machinery/light/extinguish_light(force = FALSE)
|
||||
on = FALSE
|
||||
extinguished = TRUE
|
||||
emergency_mode = FALSE
|
||||
no_emergency = TRUE
|
||||
addtimer(CALLBACK(src, PROC_REF(enable_emergency_lighting)), 5 MINUTES, TIMER_UNIQUE|TIMER_OVERRIDE)
|
||||
visible_message("<span class='danger'>[src] flickers and falls dark.</span>")
|
||||
update(FALSE)
|
||||
|
||||
/obj/machinery/light/proc/enable_emergency_lighting()
|
||||
visible_message("<span class='notice'>[src]'s emergency lighting flickers back to life.</span>")
|
||||
extinguished = FALSE
|
||||
no_emergency = FALSE
|
||||
update(FALSE)
|
||||
|
||||
#undef MAXIMUM_SAFE_BACKUP_CHARGE
|
||||
#undef EMERGENCY_LIGHT_POWER_USE
|
||||
#undef LIGHT_OK
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 345 B After Width: | Height: | Size: 589 B |
Binary file not shown.
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 91 KiB |
Reference in New Issue
Block a user