mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 07:46:20 +00:00
Implements (a poor imitation of) speculars, improves/fixes unrestricted access overlay lights (#92272)
## About The Pull Request
Implements a poor imitation of specular surfaces by encoding "shinyness"
into blue channel of emissive overlays, which allows some pixels to be
more illuminated than others (by applying lighting multiplied by
specular mask onto them a second time)
This means that hazard vests, engineering coats, security jackets and
firefighter suits no longer outright glow in the dark, but instead
amplify light so even the tiniest amounts make them highly visible. I
made a pass through all of our emissive overlays and converted ones that
made sense into bloom-less/specular ones.
https://github.com/user-attachments/assets/2167e26e-f8b8-42d7-a67c-dfc643e1df29
I've also converted unrestricted access airlock overlays into overlay
lights instead of ABOVE_LIGHTING overlays, so they should no longer look
jank or catch people's clicks.
<img width="297" height="262" alt="dreamseeker_LovPHZ7xHQ"
src="https://github.com/user-attachments/assets/1bf4d7b8-219a-41ed-aee9-6cdc41803e21"
/>
Turns out that windoors had incorrect icon states assigned to theirs, so
I fixed that too - they should show up again after god knows how many
years.
## Why It's Good For The Game
~~Shiny lights make my moth brain go happy~~
Neat visual effects that look more believable than neon glowing stripes,
and airlocks no longer have inflated hitboxes with extremely weird
visuals.
## Changelog
🆑
add: Added specular overlays - some items like hazard vests or
firefighter suits no longer outright glow in the dark, but instead
amplify existing light to shine brighter than their surroundings.
add: Redid unrestricted access airlock overlays to look less bad
fix: Fixed unrestricted access overlays not showing up on windoors.
/🆑
(cherry picked from commit 3d730689f4)
This commit is contained in:
@@ -60,9 +60,11 @@
|
||||
#define EMISSIVE_WALL_LAYER 4
|
||||
|
||||
#define RENDER_PLANE_EMISSIVE_BLOOM_MASK 15
|
||||
#define EMISSIVE_BLOOM_MASK_TARGET "*RENDER_PLANE_EMISSIVE_BLOOM_MASK"
|
||||
#define EMISSIVE_BLOOM_MASK_RENDER_TARGET "*RENDER_PLANE_EMISSIVE_BLOOM_MASK"
|
||||
#define RENDER_PLANE_EMISSIVE_BLOOM 16
|
||||
|
||||
#define RENDER_PLANE_SPECULAR_MASK 17
|
||||
#define SPECULAR_MASK_RENDER_TARGET "*RENDER_PLANE_SPECULAR_MASK"
|
||||
|
||||
//-------------------- Lighting ---------------------
|
||||
|
||||
@@ -77,23 +79,27 @@
|
||||
#define RENDER_PLANE_LIGHT_MASK 21
|
||||
#define LIGHT_MASK_RENDER_TARGET "*RENDER_PLANE_LIGHT_MASK"
|
||||
|
||||
///Things that should render ignoring lighting
|
||||
#define ABOVE_LIGHTING_PLANE 22
|
||||
/// We cannot render speculars to ABOVE_LIGHTING, as then they give it alpha and end up masking things in darkness
|
||||
/// So we need to render it directly to RENDER_PLANE_GAME above RENDER_PLANE_LIGHTING
|
||||
#define RENDER_PLANE_SPECULAR 22
|
||||
|
||||
#define WEATHER_GLOW_PLANE 23
|
||||
/// Things that should render ignoring lighting
|
||||
#define ABOVE_LIGHTING_PLANE 23
|
||||
|
||||
#define WEATHER_GLOW_PLANE 24
|
||||
|
||||
///---------------- MISC -----------------------
|
||||
|
||||
///Pipecrawling images
|
||||
#define PIPECRAWL_IMAGES_PLANE 24
|
||||
#define PIPECRAWL_IMAGES_PLANE 25
|
||||
|
||||
///AI Camera Static
|
||||
#define CAMERA_STATIC_PLANE 25
|
||||
#define CAMERA_STATIC_PLANE 26
|
||||
|
||||
///Anything that wants to be part of the game plane, but also wants to draw above literally everything else
|
||||
#define HIGH_GAME_PLANE 26
|
||||
#define HIGH_GAME_PLANE 27
|
||||
|
||||
#define FULLSCREEN_PLANE 27
|
||||
#define FULLSCREEN_PLANE 28
|
||||
|
||||
///--------------- FULLSCREEN RUNECHAT BUBBLES ------------
|
||||
|
||||
|
||||
@@ -80,12 +80,29 @@
|
||||
|
||||
#define _EMISSIVE_COLOR(val) list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, val,0,0,0)
|
||||
#define _EMISSIVE_COLOR_NO_BLOOM(val) list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,val,0,0)
|
||||
#define _SPECULAR_COLOR(val) list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,val,0)
|
||||
/// The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with [EM_BLOCK_COLOR].
|
||||
#define EMISSIVE_COLOR _EMISSIVE_COLOR(1)
|
||||
#define EMISSIVE_COLOR_NO_BLOOM _EMISSIVE_COLOR_NO_BLOOM(1)
|
||||
#define SPECULAR_COLOR _SPECULAR_COLOR(1)
|
||||
/// A globally cached version of [EMISSIVE_COLOR] for quick access.
|
||||
GLOBAL_LIST_INIT(emissive_color, EMISSIVE_COLOR)
|
||||
GLOBAL_LIST_INIT(emissive_color_no_bloom, EMISSIVE_COLOR_NO_BLOOM)
|
||||
GLOBAL_LIST_INIT(specular_color, SPECULAR_COLOR)
|
||||
|
||||
// Types of emissives
|
||||
/// Emissive that will not have bloom applied to it, encoded into the green channel
|
||||
#define EMISSIVE_NO_BLOOM 0
|
||||
/// Emissive that will get bloom applied to it, encoded into the red channel
|
||||
#define EMISSIVE_BLOOM 1
|
||||
/// Mimics a highly reflective surface, will not have any glow by itself but will amplify any lighting applied to it, encoded into the blue channel
|
||||
#define EMISSIVE_SPECULAR 2
|
||||
|
||||
/// Light cutoff of specular emissives, controls how sharp a light must be before it starts reflecting
|
||||
#define SPECULAR_EMISSIVE_CUTOFF 0.3
|
||||
/// Controls how bright specular emissives sourced from overlay lights are
|
||||
/// Keep in mind that overlay lights are also affected by the specular cutoff, so the maximum light value achievable is (contrast - cutoff)
|
||||
#define SPECULAR_EMISSIVE_OVERLAY_CONTRAST 1.4
|
||||
|
||||
#define _EM_BLOCK_COLOR(val) list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,val, 0,0,0,0)
|
||||
/// The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with [EMISSIVE_COLOR].
|
||||
|
||||
@@ -1,25 +1,30 @@
|
||||
#define TOPDOWN_TO_EMISSIVE_LAYER(layer) LERP(FLOOR_EMISSIVE_START_LAYER, FLOOR_EMISSIVE_END_LAYER, (layer - (TOPDOWN_LAYER + 1)) / TOPDOWN_LAYER_COUNT)
|
||||
|
||||
/// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR].
|
||||
/proc/emissive_appearance(icon, icon_state = "", atom/offset_spokesman, layer, alpha = 255, appearance_flags = NONE, offset_const, apply_bloom = TRUE)
|
||||
/proc/emissive_appearance(icon, icon_state = "", atom/offset_spokesman, layer, alpha = 255, appearance_flags = NONE, offset_const, effect_type = EMISSIVE_BLOOM)
|
||||
if (isnull(layer))
|
||||
if(IS_TOPDOWN_PLANE(offset_spokesman.plane))
|
||||
layer = TOPDOWN_TO_EMISSIVE_LAYER(offset_spokesman.layer)
|
||||
else
|
||||
layer = FLOAT_LAYER
|
||||
|
||||
var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, offset_spokesman, EMISSIVE_PLANE, 255, appearance_flags | EMISSIVE_APPEARANCE_FLAGS, offset_const)
|
||||
if(alpha == 255)
|
||||
if (apply_bloom)
|
||||
appearance.color = GLOB.emissive_color
|
||||
else
|
||||
appearance.color = GLOB.emissive_color_no_bloom
|
||||
switch(effect_type)
|
||||
if(EMISSIVE_NO_BLOOM)
|
||||
appearance.color = GLOB.emissive_color_no_bloom
|
||||
if (EMISSIVE_BLOOM)
|
||||
appearance.color = GLOB.emissive_color
|
||||
if (EMISSIVE_SPECULAR)
|
||||
appearance.color = GLOB.specular_color
|
||||
else
|
||||
var/alpha_ratio = alpha/255
|
||||
if (apply_bloom)
|
||||
appearance.color = _EMISSIVE_COLOR(alpha_ratio)
|
||||
else
|
||||
appearance.color = _EMISSIVE_COLOR_NO_BLOOM(alpha_ratio)
|
||||
switch(effect_type)
|
||||
if(EMISSIVE_NO_BLOOM)
|
||||
appearance.color = _EMISSIVE_COLOR_NO_BLOOM(alpha_ratio)
|
||||
if (EMISSIVE_BLOOM)
|
||||
appearance.color = _EMISSIVE_COLOR(alpha_ratio)
|
||||
if (EMISSIVE_SPECULAR)
|
||||
appearance.color = _SPECULAR_COLOR(alpha_ratio)
|
||||
|
||||
//Test to make sure emissives with broken or missing icon states are created
|
||||
if(PERFORM_ALL_TESTS(focus_only/invalid_emissives))
|
||||
|
||||
@@ -322,6 +322,13 @@
|
||||
0, 0, 0, OVERLAY_LIGHTING_WEIGHT,
|
||||
1, 1, 1, 0,
|
||||
))
|
||||
add_relay_to(GET_NEW_PLANE(RENDER_PLANE_SPECULAR, offset), relay_color = list(
|
||||
SPECULAR_EMISSIVE_OVERLAY_CONTRAST, 0, 0, 0,
|
||||
0, SPECULAR_EMISSIVE_OVERLAY_CONTRAST, 0, 0,
|
||||
0, 0, SPECULAR_EMISSIVE_OVERLAY_CONTRAST, 0,
|
||||
0, 0, 0, 1,
|
||||
-SPECULAR_EMISSIVE_CUTOFF, -SPECULAR_EMISSIVE_CUTOFF, -SPECULAR_EMISSIVE_CUTOFF, 0,
|
||||
))
|
||||
|
||||
/atom/movable/screen/plane_master/above_lighting
|
||||
name = "Above lighting"
|
||||
@@ -361,11 +368,14 @@
|
||||
/atom/movable/screen/plane_master/emissive/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
|
||||
. = ..()
|
||||
/// Okay, so what we're doing here is making all emissives convert to white for actual emissive masking (i.e. adding light so objects glow)
|
||||
add_relay_to(GET_NEW_PLANE(RENDER_PLANE_EMISSIVE, offset), relay_color = list(1,1,1,0, 1,1,1,0, 1,1,1,0, 0,0,0,1, 0,0,0,0))
|
||||
add_relay_to(GET_NEW_PLANE(RENDER_PLANE_EMISSIVE, offset), relay_color = list(1,1,1,0, 1,1,1,0, 0,0,0,0, 0,0,0,1, 0,0,0,0))
|
||||
/// But for the bloom plate we convert only the red color into full white, this way we can have emissives in green channel unaffected by bloom
|
||||
/// which allows us to selectively bloom only a part of our emissives
|
||||
add_relay_to(GET_NEW_PLANE(RENDER_PLANE_EMISSIVE_BLOOM, offset), relay_color = list(255,255,255,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0))
|
||||
add_relay_to(GET_NEW_PLANE(RENDER_PLANE_EMISSIVE_BLOOM_MASK, offset), relay_color = list(1,1,1,1, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0))
|
||||
// Blue channel is dedicated to specular, i.e. our bootleg implementation of shiny objects
|
||||
// We map it onto alpha so we can use the mask plate in an alpha mask filter to cut out only the shiny bits
|
||||
add_relay_to(GET_NEW_PLANE(RENDER_PLANE_SPECULAR_MASK, offset), relay_color = list(0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0, 1,1,1,0))
|
||||
|
||||
/atom/movable/screen/plane_master/pipecrawl
|
||||
name = "Pipecrawl"
|
||||
|
||||
@@ -80,6 +80,18 @@
|
||||
blend_mode = BLEND_ADD
|
||||
critical = PLANE_CRITICAL_DISPLAY
|
||||
|
||||
/atom/movable/screen/plane_master/rendering_plate/turf_lighting/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
|
||||
. = ..()
|
||||
/// We get affected by cutoff but not by the contrast that overlay lights get
|
||||
/// So flashlights seem to reflect "better"
|
||||
add_relay_to(GET_NEW_PLANE(RENDER_PLANE_SPECULAR, offset), relay_color = list(
|
||||
1, 0, 0, 0,
|
||||
0, 1, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 0, 1,
|
||||
-SPECULAR_EMISSIVE_CUTOFF, -SPECULAR_EMISSIVE_CUTOFF, -SPECULAR_EMISSIVE_CUTOFF, 0,
|
||||
))
|
||||
|
||||
/atom/movable/screen/plane_master/rendering_plate/emissive_slate
|
||||
name = "Emissive Plate"
|
||||
documentation = "This system works by exploiting BYONDs color matrix filter to use layers to handle emissive blockers.\
|
||||
@@ -109,7 +121,7 @@
|
||||
appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_relay_planes = list()
|
||||
render_target = EMISSIVE_BLOOM_MASK_TARGET
|
||||
render_target = EMISSIVE_BLOOM_MASK_RENDER_TARGET
|
||||
critical = PLANE_CRITICAL_DISPLAY
|
||||
|
||||
/atom/movable/screen/plane_master/rendering_plate/emissive_bloom
|
||||
@@ -125,9 +137,33 @@
|
||||
|
||||
/atom/movable/screen/plane_master/rendering_plate/emissive_bloom/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
|
||||
. = ..()
|
||||
add_filter("emissive_mask", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(EMISSIVE_BLOOM_MASK_TARGET, offset)))
|
||||
add_filter("emissive_mask", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(EMISSIVE_BLOOM_MASK_RENDER_TARGET, offset)))
|
||||
add_filter("emissive_bloom", 2, bloom_filter(threshold = COLOR_BLACK, size = 2, offset = 1))
|
||||
|
||||
/atom/movable/screen/plane_master/rendering_plate/specular_mask
|
||||
name = "Specular mask plate"
|
||||
documentation = "Plate used to generate the specular mask for the specular plate effect."
|
||||
plane = RENDER_PLANE_SPECULAR_MASK
|
||||
appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_target = SPECULAR_MASK_RENDER_TARGET
|
||||
render_relay_planes = list()
|
||||
critical = PLANE_CRITICAL_DISPLAY
|
||||
|
||||
/atom/movable/screen/plane_master/rendering_plate/specular
|
||||
name = "Specular plate"
|
||||
documentation = "Plate used to artificially increase lighting on certain pixels to poorly mimic shiny surfaces."
|
||||
plane = RENDER_PLANE_SPECULAR
|
||||
appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
blend_mode = BLEND_ADD
|
||||
render_relay_planes = list(RENDER_PLANE_GAME)
|
||||
critical = PLANE_CRITICAL_DISPLAY
|
||||
|
||||
/atom/movable/screen/plane_master/rendering_plate/specular/Initialize(mapload, datum/hud/hud_owner, datum/plane_master_group/home, offset)
|
||||
. = ..()
|
||||
add_filter("specular_mask", 1, alpha_mask_filter(render_source = OFFSET_RENDER_TARGET(SPECULAR_MASK_RENDER_TARGET, offset)))
|
||||
|
||||
///Contains all lighting objects
|
||||
/atom/movable/screen/plane_master/rendering_plate/lighting
|
||||
name = "Lighting plate"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
blood_splatter.color = _color
|
||||
var/mutable_appearance/emissive_splatter = null
|
||||
if (emissive_alpha)
|
||||
emissive_splatter = emissive_appearance('icons/effects/blood.dmi', "itemblood", as_item, alpha = emissive_alpha)
|
||||
emissive_splatter = emissive_appearance('icons/effects/blood.dmi', "itemblood", as_item, alpha = emissive_alpha, effect_type = EMISSIVE_NO_BLOOM)
|
||||
emissive_splatter.blend_mode = BLEND_INSET_OVERLAY
|
||||
if (uses_filter)
|
||||
blood_splatter.appearance_flags |= KEEP_APART
|
||||
|
||||
@@ -615,7 +615,8 @@
|
||||
for(var/heading in list(NORTH,SOUTH,EAST,WEST))
|
||||
if(!(unres_sides & heading))
|
||||
continue
|
||||
var/mutable_appearance/floorlight = mutable_appearance('icons/obj/doors/airlocks/station/overlays.dmi', "unres_[heading]", FLOAT_LAYER, src, ABOVE_LIGHTING_PLANE)
|
||||
var/mutable_appearance/floorlight = mutable_appearance('icons/obj/doors/airlocks/station/overlays.dmi', "unres_[heading]", FLOAT_LAYER, src, O_LIGHTING_VISUAL_PLANE, appearance_flags = RESET_COLOR | KEEP_APART)
|
||||
floorlight.color = LIGHT_COLOR_DEFAULT
|
||||
switch (heading)
|
||||
if (NORTH)
|
||||
floorlight.pixel_w = 0
|
||||
|
||||
@@ -119,20 +119,24 @@
|
||||
switch(dir)
|
||||
if(NORTH,SOUTH)
|
||||
if(unres_sides & NORTH)
|
||||
var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_n")
|
||||
var/mutable_appearance/side_overlay = mutable_appearance('icons/obj/doors/airlocks/station/overlays.dmi', "unres_1", FLOAT_LAYER, src, O_LIGHTING_VISUAL_PLANE, appearance_flags = RESET_COLOR | KEEP_APART)
|
||||
side_overlay.color = LIGHT_COLOR_DEFAULT
|
||||
side_overlay.pixel_z = dir == NORTH ? 31 : 6
|
||||
. += side_overlay
|
||||
if(unres_sides & SOUTH)
|
||||
var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_s")
|
||||
var/mutable_appearance/side_overlay = mutable_appearance('icons/obj/doors/airlocks/station/overlays.dmi', "unres_2", FLOAT_LAYER, src, O_LIGHTING_VISUAL_PLANE, appearance_flags = RESET_COLOR | KEEP_APART)
|
||||
side_overlay.color = LIGHT_COLOR_DEFAULT
|
||||
side_overlay.pixel_z = dir == NORTH ? -6 : -31
|
||||
. += side_overlay
|
||||
if(EAST,WEST)
|
||||
if(unres_sides & EAST)
|
||||
var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_e")
|
||||
var/mutable_appearance/side_overlay = mutable_appearance('icons/obj/doors/airlocks/station/overlays.dmi', "unres_4", FLOAT_LAYER, src, O_LIGHTING_VISUAL_PLANE, appearance_flags = RESET_COLOR | KEEP_APART)
|
||||
side_overlay.color = LIGHT_COLOR_DEFAULT
|
||||
side_overlay.pixel_w = dir == EAST ? 31 : 6
|
||||
. += side_overlay
|
||||
if(unres_sides & WEST)
|
||||
var/image/side_overlay = image(icon='icons/obj/doors/airlocks/station/overlays.dmi', icon_state="unres_w")
|
||||
var/mutable_appearance/side_overlay = mutable_appearance('icons/obj/doors/airlocks/station/overlays.dmi', "unres_8", FLOAT_LAYER, src, O_LIGHTING_VISUAL_PLANE, appearance_flags = RESET_COLOR | KEEP_APART)
|
||||
side_overlay.color = LIGHT_COLOR_DEFAULT
|
||||
side_overlay.pixel_w = dir == EAST ? -6 : -31
|
||||
. += side_overlay
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
. += blood_emissive(icon, icon_state)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/proc/blood_emissive(icon_to_use, icon_state_to_use)
|
||||
return emissive_appearance(icon_to_use, icon_state_to_use, src, alpha = 255 * emissive_alpha / alpha)
|
||||
return emissive_appearance(icon_to_use, icon_state_to_use, src, alpha = 255 * emissive_alpha / alpha, effect_type = EMISSIVE_NO_BLOOM)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/lazy_init_reagents()
|
||||
if (reagents)
|
||||
|
||||
@@ -437,7 +437,7 @@ GLOBAL_LIST_EMPTY(nebula_vomits)
|
||||
|
||||
/obj/effect/decal/cleanable/ants/update_overlays()
|
||||
. = ..()
|
||||
. += emissive_appearance(icon, "[icon_state]_light", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon, "[icon_state]_light", src, alpha = src.alpha, effect_type = EMISSIVE_NO_BLOOM)
|
||||
|
||||
/obj/effect/decal/cleanable/ants/fire_act(exposed_temperature, exposed_volume)
|
||||
new /obj/effect/decal/cleanable/ants/fire(loc)
|
||||
|
||||
@@ -644,7 +644,7 @@ BLIND // can't see anything
|
||||
|
||||
var/emissive_alpha = get_blood_emissive_alpha(is_worn = TRUE)
|
||||
if (emissive_alpha)
|
||||
var/mutable_appearance/emissive_overlay = emissive_appearance(blood_overlay.icon, blood_overlay.icon_state, src, alpha = emissive_alpha)
|
||||
var/mutable_appearance/emissive_overlay = emissive_appearance(blood_overlay.icon, blood_overlay.icon_state, src, alpha = emissive_alpha, effect_type = EMISSIVE_NO_BLOOM)
|
||||
blood_overlay.overlays += emissive_overlay
|
||||
|
||||
return blood_overlay
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
/obj/item/clothing/head/cone/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
/obj/item/clothing/head/utility/hardhat/welding/atmos/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
/obj/item/clothing/head/utility/hardhat/pumpkinhead
|
||||
name = "carved pumpkin"
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
/obj/item/clothing/head/helmet/press/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
/obj/item/clothing/head/helmet/alt
|
||||
name = "bulletproof helmet"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
/obj/item/clothing/suit/armor/vest/press/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/marine
|
||||
name = "tactical armor vest"
|
||||
@@ -251,7 +251,7 @@
|
||||
/obj/item/clothing/suit/armor/vest/secjacket/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
/datum/armor/armor_secjacket //Gotta compensate those extra covered limbs
|
||||
melee = 25
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
/obj/item/clothing/suit/hazardvest/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, apply_bloom = FALSE)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
/obj/item/clothing/suit/hazardvest/press // Variant used by the Curator
|
||||
name = "press hazard vest"
|
||||
@@ -442,4 +442,4 @@
|
||||
/obj/item/clothing/suit/atmos_overalls/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
/obj/item/clothing/suit/utility/fire/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
/obj/item/clothing/suit/utility/fire/firefighter
|
||||
icon_state = "firesuit"
|
||||
|
||||
@@ -537,7 +537,7 @@
|
||||
/obj/item/clothing/suit/hooded/wintercoat/engineering/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/engineering
|
||||
desc = "A yellow winter coat hood. Definitely not a replacement for a hard hat."
|
||||
@@ -550,7 +550,7 @@
|
||||
/obj/item/clothing/head/hooded/winterhood/engineering/worn_overlays(mutable_appearance/standing, isinhands, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha, effect_type = EMISSIVE_SPECULAR)
|
||||
|
||||
// Chief Engineer
|
||||
/obj/item/clothing/suit/hooded/wintercoat/engineering/ce
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
/obj/item/fish/starfish/proc/add_emissive()
|
||||
if(status == FISH_ALIVE)
|
||||
return emissive_appearance(icon, "starfish_emissive", src)
|
||||
return emissive_appearance(icon, "starfish_emissive", src, effect_type = EMISSIVE_NO_BLOOM)
|
||||
|
||||
///It spins, and dimly glows in the dark.
|
||||
/obj/item/fish/starfish/flop_animation()
|
||||
|
||||
@@ -926,7 +926,7 @@ GLOBAL_LIST_EMPTY(fishing_challenges_by_user)
|
||||
var/mutable_appearance/overlay = mutable_appearance(icon, "lure_light")
|
||||
overlay.color = spin_ready ? COLOR_GREEN : COLOR_RED
|
||||
. += overlay
|
||||
. += emissive_appearance(icon, "lure_light_emissive", src, alpha = src.alpha)
|
||||
. += emissive_appearance(icon, "lure_light_emissive", src, alpha = src.alpha, effect_type = EMISSIVE_NO_BLOOM)
|
||||
|
||||
#undef WAIT_PHASE
|
||||
#undef BITING_PHASE
|
||||
|
||||
Reference in New Issue
Block a user