From c0dd2ee9a389875fe6604f05e1b8f2c73365aaf5 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Thu, 17 Jun 2021 00:18:28 -0400 Subject: [PATCH] VS: Leftover VS edits for tg lighting --- code/__defines/lighting_vr.dm | 4 +- code/__defines/mobs_vr.dm | 12 +-- code/controllers/subsystems/vis_overlays.dm | 77 +++++++++++++++++++ code/game/atoms_movable_vr.dm | 10 +++ code/game/machinery/doors/multi_tile_vr.dm | 19 ----- code/game/machinery/gear_dispenser.dm | 3 +- .../objects/items/devices/flashlight_vr.dm | 7 +- .../clothing/spacesuits/void/ert_vr.dm | 10 +-- code/modules/maps/tg/map_template_vr.dm | 2 +- code/modules/power/lighting_vr.dm | 32 ++++++++ code/modules/resleeving/sleevecard.dm | 8 +- 11 files changed, 143 insertions(+), 41 deletions(-) create mode 100644 code/controllers/subsystems/vis_overlays.dm diff --git a/code/__defines/lighting_vr.dm b/code/__defines/lighting_vr.dm index 0cd6b060a17..a7f51e8bbc2 100644 --- a/code/__defines/lighting_vr.dm +++ b/code/__defines/lighting_vr.dm @@ -1,2 +1,4 @@ #define LIGHT_COLOR_INCANDESCENT_TUBE "#E0EFF0" -#define LIGHT_COLOR_INCANDESCENT_BULB "#FFFEB8" \ No newline at end of file +#define LIGHT_COLOR_INCANDESCENT_BULB "#FFFEB8" +//Fake ambient occlusion filter +#define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-1, size=2, offset=2, color="#04080F55") //VOREStation Edit for prettier visuals. \ No newline at end of file diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm index dbd66d90620..116358e5779 100644 --- a/code/__defines/mobs_vr.dm +++ b/code/__defines/mobs_vr.dm @@ -1,13 +1,13 @@ #undef VIS_COUNT -#define VIS_CH_STATUS_R 24 -#define VIS_CH_HEALTH_VR 25 -#define VIS_CH_BACKUP 26 -#define VIS_CH_VANTAG 27 +#define VIS_CH_STATUS_R 27 +#define VIS_CH_HEALTH_VR 28 +#define VIS_CH_BACKUP 29 +#define VIS_CH_VANTAG 30 -#define VIS_AUGMENTED 28 +#define VIS_AUGMENTED 31 -#define VIS_COUNT 28 +#define VIS_COUNT 31 //Protean organs #define O_ORCH "orchestrator" diff --git a/code/controllers/subsystems/vis_overlays.dm b/code/controllers/subsystems/vis_overlays.dm new file mode 100644 index 00000000000..0806e4c954d --- /dev/null +++ b/code/controllers/subsystems/vis_overlays.dm @@ -0,0 +1,77 @@ +SUBSYSTEM_DEF(vis_overlays) + name = "Vis contents overlays" + wait = 1 MINUTES + priority = FIRE_PRIORITY_VIS + init_order = INIT_ORDER_VIS + + var/list/vis_overlay_cache + var/list/currentrun + +/datum/controller/subsystem/vis_overlays/Initialize() + vis_overlay_cache = list() + return ..() + +/datum/controller/subsystem/vis_overlays/fire(resumed = FALSE) + if(!resumed) + currentrun = vis_overlay_cache.Copy() + var/list/current_run = currentrun + + while(current_run.len) + var/key = current_run[current_run.len] + var/obj/effect/overlay/vis/overlay = current_run[key] + current_run.len-- + if(!overlay.unused && !length(overlay.vis_locs)) + overlay.unused = world.time + else if(overlay.unused && overlay.unused + overlay.cache_expiration < world.time) + vis_overlay_cache -= key + qdel(overlay) + if(MC_TICK_CHECK) + return + +//the "thing" var can be anything with vis_contents which includes images - in the future someone should totally allow vis overlays to be passed in as an arg instead of all this bullshit +/datum/controller/subsystem/vis_overlays/proc/add_vis_overlay(atom/movable/thing, icon, iconstate, layer, plane, dir, alpha = 255, add_appearance_flags = NONE, unique = FALSE) + var/obj/effect/overlay/vis/overlay + if(!unique) + . = "[icon]|[iconstate]|[layer]|[plane]|[dir]|[alpha]|[add_appearance_flags]" + overlay = vis_overlay_cache[.] + if(!overlay) + overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags) + vis_overlay_cache[.] = overlay + else + overlay.unused = 0 + else + overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags) + overlay.cache_expiration = -1 + var/cache_id = "\ref[overlay]@{[world.time]}" + vis_overlay_cache[cache_id] = overlay + . = overlay + thing.vis_contents += overlay + + if(!isatom(thing)) + return overlay + + if(!thing.managed_vis_overlays) + thing.managed_vis_overlays = list(overlay) + else + thing.managed_vis_overlays += overlay + return overlay + +/datum/controller/subsystem/vis_overlays/proc/_create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags) + var/obj/effect/overlay/vis/overlay = new + overlay.icon = icon + overlay.icon_state = iconstate + overlay.layer = layer + overlay.plane = plane + overlay.dir = dir + overlay.alpha = alpha + overlay.appearance_flags |= add_appearance_flags + return overlay + + +/datum/controller/subsystem/vis_overlays/proc/remove_vis_overlay(atom/movable/thing, list/overlays) + thing.vis_contents -= overlays + if(!isatom(thing)) + return + thing.managed_vis_overlays -= overlays + if(!length(thing.managed_vis_overlays)) + thing.managed_vis_overlays = null diff --git a/code/game/atoms_movable_vr.dm b/code/game/atoms_movable_vr.dm index d5291220290..94f01d7b7f4 100644 --- a/code/game/atoms_movable_vr.dm +++ b/code/game/atoms_movable_vr.dm @@ -1,2 +1,12 @@ /atom/movable/proc/Bump_vr(var/atom/A, yes) return + +/atom/movable/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION("move_atom", "Move To Coordinate") + +/atom/vv_do_topic(list/href_list) + . = ..() + IF_VV_OPTION("move_atom") + usr.client.cmd_admin_move_atom(src) + href_list["datumrefresh"] = "\ref[src]" diff --git a/code/game/machinery/doors/multi_tile_vr.dm b/code/game/machinery/doors/multi_tile_vr.dm index f8a76c51ea1..1d179ca99d8 100644 --- a/code/game/machinery/doors/multi_tile_vr.dm +++ b/code/game/machinery/doors/multi_tile_vr.dm @@ -1,22 +1,3 @@ /obj/machinery/door/airlock/multi_tile/glass/polarized name = "Electrochromic Glass Airlock" icon_tinted = 'icons/obj/doors/Door2x1tinted_vr.dmi' - -/obj/machinery/door/airlock/multi_tile/glass/polarized/New() - ..() - create_fillers() - -/obj/machinery/door/airlock/multi_tile/glass/polarized/toggle() - . = ..() - if(!operating) - if(filler1) - filler1.set_opacity(opacity) - if(filler2) - filler2.set_opacity(opacity) - -/obj/machinery/door/airlock/multi_tile/glass/polarized/close() - . = ..() - if(filler1) - filler1.set_opacity(!glass) - if(filler2) - filler2.set_opacity(!glass) \ No newline at end of file diff --git a/code/game/machinery/gear_dispenser.dm b/code/game/machinery/gear_dispenser.dm index c38e8766d13..d91da20468e 100644 --- a/code/game/machinery/gear_dispenser.dm +++ b/code/game/machinery/gear_dispenser.dm @@ -86,8 +86,7 @@ var/list/dispenser_presets = list() if(voidsuit.helmet) error("[src] created a voidsuit [voidsuit] and wants to add a helmet but it already has one") else - voidhelmet = new voidhelmet_type(voidsuit) - voidsuit.helmet = voidhelmet + voidsuit.attach_helmet(new voidhelmet_type()) spawned += voidhelmet // If we're supposed to make boots if(magboots_type) diff --git a/code/game/objects/items/devices/flashlight_vr.dm b/code/game/objects/items/devices/flashlight_vr.dm index 6c505950065..876dddc76d8 100644 --- a/code/game/objects/items/devices/flashlight_vr.dm +++ b/code/game/objects/items/devices/flashlight_vr.dm @@ -1,8 +1,9 @@ /obj/item/device/flashlight/glowstick/radioisotope name = "radioisotope glowstick" desc = "A radioisotope powered glowstick. Escaping particles light up the area far brighter on similar levels to flares and for longer" - flashlight_colour = "#599DFF" icon_state = "glowstick_blue" item_state = "glowstick_blue" - flashlight_power = 0.1 - brightness_on = 8 + + light_range = 8 + light_power = 0.1 + light_color = "#599DFF" diff --git a/code/modules/clothing/spacesuits/void/ert_vr.dm b/code/modules/clothing/spacesuits/void/ert_vr.dm index a123238c792..96243290294 100644 --- a/code/modules/clothing/spacesuits/void/ert_vr.dm +++ b/code/modules/clothing/spacesuits/void/ert_vr.dm @@ -20,7 +20,7 @@ /obj/item/clothing/suit/space/void/responseteam/command/Initialize() ..() - helmet = new /obj/item/clothing/head/helmet/space/void/responseteam/command //autoinstall the helmet + attach_helmet(new /obj/item/clothing/head/helmet/space/void/responseteam/command) //autoinstall the helmet /obj/item/clothing/suit/space/void/responseteam/medical name = "Mark VII-M Emergency Medical Response Suit" @@ -29,7 +29,7 @@ /obj/item/clothing/suit/space/void/responseteam/medical/Initialize() ..() - helmet = new /obj/item/clothing/head/helmet/space/void/responseteam/medical //autoinstall the helmet + attach_helmet(new /obj/item/clothing/head/helmet/space/void/responseteam/medical) //autoinstall the helmet /obj/item/clothing/suit/space/void/responseteam/engineer name = "Mark VII-E Emergency Engineering Response Suit" @@ -38,7 +38,7 @@ /obj/item/clothing/suit/space/void/responseteam/engineer/Initialize() ..() - helmet = new /obj/item/clothing/head/helmet/space/void/responseteam/engineer //autoinstall the helmet + attach_helmet(new /obj/item/clothing/head/helmet/space/void/responseteam/engineer) //autoinstall the helmet /obj/item/clothing/suit/space/void/responseteam/security name = "Mark VII-S Emergency Security Response Suit" @@ -47,7 +47,7 @@ /obj/item/clothing/suit/space/void/responseteam/security/Initialize() ..() - helmet = new /obj/item/clothing/head/helmet/space/void/responseteam/security //autoinstall the helmet + attach_helmet(new /obj/item/clothing/head/helmet/space/void/responseteam/security) //autoinstall the helmet /obj/item/clothing/suit/space/void/responseteam/janitor name = "Mark VII-J Emergency Cleanup Response Suit" @@ -59,7 +59,7 @@ /obj/item/clothing/suit/space/void/responseteam/janitor/Initialize() ..() - helmet = new /obj/item/clothing/head/helmet/space/void/responseteam/janitor //autoinstall the helmet + attach_helmet(new /obj/item/clothing/head/helmet/space/void/responseteam/janitor) //autoinstall the helmet //override the attackby screwdriver proc so that people can't remove the helmet diff --git a/code/modules/maps/tg/map_template_vr.dm b/code/modules/maps/tg/map_template_vr.dm index 6f12c85ba90..77424f5ec23 100644 --- a/code/modules/maps/tg/map_template_vr.dm +++ b/code/modules/maps/tg/map_template_vr.dm @@ -4,7 +4,7 @@ for(var/turf/simulated/T in block(locate(1,1,z), locate(world.maxx, world.maxy, z))) T.update_air_properties() //We missed sslighting init! - if(lighting_overlays_initialised) + if(SSlighting.subsystem_initialized) for(var/Trf in block(locate(1,1,z), locate(world.maxx, world.maxy, z))) var/turf/T = Trf //faster than implicit istype with typed for loop T.lighting_build_overlay() diff --git a/code/modules/power/lighting_vr.dm b/code/modules/power/lighting_vr.dm index fb4a15a8831..b7ea9a0fbd7 100644 --- a/code/modules/power/lighting_vr.dm +++ b/code/modules/power/lighting_vr.dm @@ -17,3 +17,35 @@ //Vorestation addition, so large mobs stop looking stupid in front of lights. if (dir == SOUTH) // Lights are backwards, SOUTH lights face north (they are on south wall) layer = ABOVE_MOB_LAYER + +// Wall tube lights +/obj/item/weapon/light/tube + brightness_range = 6 + brightness_power = 1 + + nightshift_range = 6 + nightshift_power = 0.45 + +// Big tubes, unused I think +/obj/item/weapon/light/tube/large + brightness_range = 8 + brightness_power = 2 + + nightshift_range = 8 + nightshift_power = 1 + +// Small wall lights +/obj/item/weapon/light/bulb + brightness_range = 4 + brightness_power = 1 + + nightshift_range = 4 + nightshift_power = 0.45 + +// Floor lamps +/obj/item/weapon/light/bulb/large + brightness_range = 6 + brightness_power = 1 + + nightshift_range = 6 + nightshift_power = 0.45 diff --git a/code/modules/resleeving/sleevecard.dm b/code/modules/resleeving/sleevecard.dm index 6de17f5574c..a59b4c3f234 100644 --- a/code/modules/resleeving/sleevecard.dm +++ b/code/modules/resleeving/sleevecard.dm @@ -34,7 +34,7 @@ /obj/item/device/sleevecard/New() ..() - overlays += "pai-off" + add_overlay("pai-off") radio = new(src) /obj/item/device/sleevecard/Destroy() @@ -83,13 +83,13 @@ /obj/item/device/sleevecard/proc/turnOff() if(infomorph) infomorph.close_up() - overlays.Cut() + cut_overlays() name = "[initial(name)]" /obj/item/device/sleevecard/proc/setEmotion(var/emotion) if(infomorph && emotion) - overlays.Cut() - overlays += emotion + cut_overlays() + add_overlay(emotion) current_emotion = emotion /obj/item/device/sleevecard/emp_act(severity)