diff --git a/code/__HELPERS/lighting.dm b/code/__HELPERS/lighting.dm index 66a869ef4b8..9e64519bbb0 100644 --- a/code/__HELPERS/lighting.dm +++ b/code/__HELPERS/lighting.dm @@ -4,6 +4,12 @@ // Consider removing it someday? (I wonder if we made emissives blend right we could make alpha actually matter. dreams man, dreams) var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, offset_spokesman, EMISSIVE_PLANE, 255, appearance_flags | EMISSIVE_APPEARANCE_FLAGS, offset_const) appearance.color = GLOB.emissive_color + + //Test to make sure emissives with broken or missing icon states are created + if(PERFORM_ALL_TESTS(focus_only/invalid_emissives)) + if(icon_state && !icon_exists(icon, icon_state, scream = FALSE)) //Scream set to False so we can have a custom stack_trace + stack_trace("An emissive appearance was added with non-existant icon_state \"[icon_state]\" in [icon]!") + return appearance // This is a semi hot proc, so we micro it. saves maybe 150ms diff --git a/code/game/machinery/barsigns.dm b/code/game/machinery/barsigns.dm index f13a4e02e4c..5930acbf2e1 100644 --- a/code/game/machinery/barsigns.dm +++ b/code/game/machinery/barsigns.dm @@ -13,8 +13,6 @@ active_power_usage = BASE_MACHINE_ACTIVE_CONSUMPTION * 0.15 /// Selected barsign being used var/datum/barsign/chosen_sign - /// If barsign has a lighting mask - var/light_mask = FALSE /datum/armor/sign_barsign melee = 20 @@ -411,6 +409,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign, 32) icon = "empty" desc = "This sign doesn't seem to be on." rename_area = FALSE + light_mask = FALSE // For other locations that aren't in the main bar /obj/machinery/barsign/all_access diff --git a/code/game/machinery/computer/arcade/orion.dm b/code/game/machinery/computer/arcade/orion.dm index 525ff4a1034..d32c6596786 100644 --- a/code/game/machinery/computer/arcade/orion.dm +++ b/code/game/machinery/computer/arcade/orion.dm @@ -60,6 +60,8 @@ GLOBAL_LIST_INIT(orion_events, generate_orion_events()) name = "Kobayashi Maru control computer" desc = "A test for cadets." icon = 'icons/obj/machines/particle_accelerator.dmi' + icon_keyboard = null + icon_screen = null icon_state = "control_boxp" //kobatashi has a smaller list of events, so we copy from the global list and cut whatever isn't here var/list/event_whitelist = list( diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 12a7140dc0c..27b8eb70cf6 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -141,7 +141,7 @@ name = "\improper Mass Driver Controller" icon = 'icons/obj/airlock_machines.dmi' icon_state = "airlock_control_standby" - icon_keyboard = null + icon_screen = null density = FALSE /obj/machinery/computer/pod/old/mass_driver_controller/ordnancedriver diff --git a/code/game/machinery/computer/telescreen.dm b/code/game/machinery/computer/telescreen.dm index 579c99315cf..9824448de53 100644 --- a/code/game/machinery/computer/telescreen.dm +++ b/code/game/machinery/computer/telescreen.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/stationobjs.dmi' icon_state = "telescreen" icon_keyboard = null + icon_screen = null layer = SIGN_LAYER network = list("thunder") density = FALSE diff --git a/code/modules/antagonists/abductor/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm index 5dd6bed04a3..53cfb2fefa6 100644 --- a/code/modules/antagonists/abductor/machinery/camera.dm +++ b/code/modules/antagonists/abductor/machinery/camera.dm @@ -11,6 +11,7 @@ icon = 'icons/obj/abductor.dmi' icon_state = "camera" icon_keyboard = null + icon_screen = null resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF /obj/machinery/computer/camera_advanced/abductor/Destroy() diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index be39a6eb0c3..2f29a2233d5 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -200,8 +200,3 @@ /obj/item/clothing/suit/utility/radiation/Initialize(mapload) . = ..() AddElement(/datum/element/radiation_protected_clothing) - -/obj/item/clothing/suit/utility/radiation/worn_overlays(mutable_appearance/standing, isinhands, icon_file) - . = ..() - if(!isinhands) - . += emissive_appearance(icon_file, "[icon_state]-emissive", src, alpha = src.alpha) diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm index 75f56c1699a..1cb82da1943 100644 --- a/code/modules/food_and_drinks/machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/machinery/smartfridge.dm @@ -19,6 +19,8 @@ var/list/initial_contents /// If the machine shows an approximate number of its contents on its sprite var/visible_contents = TRUE + /// Is this smartfridge going to have a glowing screen? (Drying Racks are not) + var/has_emissive = TRUE /obj/machinery/smartfridge/Initialize(mapload) . = ..() @@ -65,7 +67,7 @@ /obj/machinery/smartfridge/update_overlays() . = ..() - if(!machine_stat) + if(!machine_stat && has_emissive) . += emissive_appearance(icon, "[initial(icon_state)]-light-mask", src, alpha = src.alpha) /obj/machinery/smartfridge/wrench_act(mob/living/user, obj/item/tool) @@ -269,6 +271,7 @@ base_build_path = /obj/machinery/smartfridge/drying_rack //should really be seeing this without admin fuckery. use_power = NO_POWER_USE idle_power_usage = 0 + has_emissive = FALSE var/drying = FALSE /obj/machinery/smartfridge/drying_rack/on_deconstruction() diff --git a/code/modules/industrial_lift/tram/tram_machinery.dm b/code/modules/industrial_lift/tram/tram_machinery.dm index 9805d0ca871..386bec813dd 100644 --- a/code/modules/industrial_lift/tram/tram_machinery.dm +++ b/code/modules/industrial_lift/tram/tram_machinery.dm @@ -519,6 +519,9 @@ GLOBAL_LIST_EMPTY(tram_doors) if(!is_operational) return + if(!signal_direction) //Base type doesnt have directions set + return + var/lights_overlay = "[base_icon_state][signal_direction][signal_state]" . += mutable_appearance(icon, lights_overlay) diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index baaef86c3b4..93f588347dc 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -18,6 +18,7 @@ icon = 'icons/obj/terminals.dmi' icon_state = "dorm_available" icon_keyboard = null + icon_screen = null req_one_access = list(ACCESS_AUX_BASE, ACCESS_COMMAND) circuit = /obj/item/circuitboard/computer/auxiliary_base /// Shuttle ID of the base diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 69550aad682..88c3ee4ada7 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -6,6 +6,7 @@ icon = 'icons/obj/medical/chemical.dmi' icon_state = "pandemic0" icon_keyboard = null + icon_screen = null base_icon_state = "pandemic" resistance_flags = ACID_PROOF circuit = /obj/item/circuitboard/computer/pandemic diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 387a73a9452..aaff7346096 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -35,6 +35,7 @@ icon = 'icons/obj/terminals.dmi' icon_state = "dorm_available" icon_keyboard = null + icon_screen = null light_color = LIGHT_COLOR_BLUE req_access = list(ACCESS_SYNDICATE) shuttleId = "steel_rain" diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index b549d4d07b0..4471b62f0fc 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -264,7 +264,8 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) circuit = /obj/item/circuitboard/computer/bsa_control icon = 'icons/obj/machines/particle_accelerator.dmi' icon_state = "control_boxp" - icon_keyboard = "" + icon_keyboard = null + icon_screen = null var/datum/weakref/cannon_ref var/notice diff --git a/code/modules/unit_tests/focus_only_tests.dm b/code/modules/unit_tests/focus_only_tests.dm index 53767514a37..6bb367eab38 100644 --- a/code/modules/unit_tests/focus_only_tests.dm +++ b/code/modules/unit_tests/focus_only_tests.dm @@ -6,6 +6,9 @@ /// and you will only test the check for invalid overlays in appearance building. /datum/unit_test/focus_only +/// Checks that every created emissive has a valid icon_state +/datum/unit_test/focus_only/invalid_emissives + /// Checks that every overlay passed into build_appearance_list exists in the icon /datum/unit_test/focus_only/invalid_overlays diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 27e26658e3c..e3625d6aefe 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index 58c83e7cb24..7ecd48d7b24 100644 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/modular_skyrat/modules/cryosleep/code/cryopod.dm b/modular_skyrat/modules/cryosleep/code/cryopod.dm index da05a5740bb..1486bf0d5ee 100644 --- a/modular_skyrat/modules/cryosleep/code/cryopod.dm +++ b/modular_skyrat/modules/cryosleep/code/cryopod.dm @@ -22,6 +22,7 @@ GLOBAL_LIST_EMPTY(valid_cryopods) icon = 'modular_skyrat/modules/cryosleep/icons/cryogenics.dmi' icon_state = "cellconsole_1" icon_keyboard = null + icon_screen = null use_power = FALSE density = FALSE interaction_flags_machine = INTERACT_MACHINE_OFFLINE