mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 12:29:46 +01:00
Miscellaneous minor Horizon map improvements (#21716)
Fixes https://github.com/Aurorastation/Aurora.3/issues/21682 Fixes https://github.com/Aurorastation/Aurora.3/issues/21719 changes: - bugfix: "Fixes shield diffusers no longer diffusing targeted shield segments (used for mass driver ejection paths)." - bugfix: "Moves air alarm hidden behind D3 starboard central hallway shutters to visible free spot on opposite wall." - rscadd: "Adds tintable window control to the Horizon's exam room." - rscadd: "Adds tintable window controls for both the interior and exterior windows of the Horizon's recovery room." - rscadd: "Adds an additional light to a particularly dark corner of the Horizon's d2 hard storage room."
This commit is contained in:
@@ -84,6 +84,13 @@
|
||||
var/obj/effect/energy_field/F = new(T, src)
|
||||
field += F
|
||||
|
||||
/**
|
||||
* Removes the field from the managed list and deletes it. Called by shield diffusion.
|
||||
*/
|
||||
/datum/energy_field/proc/remove_individual_field(var/obj/effect/energy_field/field_to_remove)
|
||||
field.Remove(field_to_remove)
|
||||
qdel(field_to_remove)
|
||||
|
||||
/**
|
||||
* Adds a bunch of UI data for TGUIs with relevant field data.
|
||||
*/
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
/// The damage suffered by the field.
|
||||
var/damage = 0
|
||||
var/ticks_recovering = 10
|
||||
var/diffused_for = 0
|
||||
var/diffused = FALSE
|
||||
/// If strength goes is 1 or above, this is set to TRUE, this is to prevent flickering and animate being called constantly
|
||||
var/is_strong = FALSE
|
||||
|
||||
@@ -41,7 +39,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/effect/energy_field/proc/diffuse(var/duration)
|
||||
diffused_for = max(duration, 0)
|
||||
energy_field.remove_individual_field(src)
|
||||
|
||||
/obj/effect/energy_field/attackby(obj/item/attacking_item, mob/user)
|
||||
user.do_attack_animation(src, attacking_item)
|
||||
@@ -105,28 +103,17 @@
|
||||
damage = max(damage - energy_field.strengthen_rate, 0)
|
||||
|
||||
/obj/effect/energy_field/proc/density_check(var/turn_on)
|
||||
if(turn_on && !diffused)
|
||||
if(turn_on)
|
||||
alpha = 0
|
||||
density = TRUE
|
||||
mouse_opacity = MOUSE_OPACITY_ICON
|
||||
animate(src, 2 SECONDS, alpha = 255)
|
||||
else if(!turn_on)
|
||||
else
|
||||
alpha = 255
|
||||
density = FALSE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
animate(src, 2 SECONDS, alpha = 0)
|
||||
|
||||
/obj/effect/energy_field/proc/diffuse_check()
|
||||
diffused_for = max(0, diffused_for - 1)
|
||||
|
||||
if(diffused_for && !diffused)
|
||||
diffused = TRUE
|
||||
if(is_strong)
|
||||
density_check(FALSE)
|
||||
else if(!diffused_for && diffused)
|
||||
diffused = FALSE
|
||||
density_check(TRUE)
|
||||
|
||||
/obj/effect/energy_field/proc/update_strength()
|
||||
SIGNAL_HANDLER
|
||||
//if we take too much damage, drop out - the generator will bring us back up if we have enough power
|
||||
@@ -142,8 +129,6 @@
|
||||
if (density != old_density)
|
||||
update_nearby_tiles()
|
||||
|
||||
diffuse_check()
|
||||
|
||||
/**
|
||||
* Easy helper proc to return the shield's current health.
|
||||
*/
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
icon = 'icons/obj/machinery/shielding.dmi'
|
||||
icon_state = "fdiffuser_on"
|
||||
use_power = POWER_USE_IDLE
|
||||
idle_power_usage = 100
|
||||
active_power_usage = 2000
|
||||
idle_power_usage = 0
|
||||
active_power_usage = 0
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
level = 1
|
||||
@@ -19,20 +19,20 @@
|
||||
|
||||
/obj/machinery/shield_diffuser/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. += ..()
|
||||
. += "It is [diffuser_enabled ? "diffuser_enabled" : "disabled"]."
|
||||
. += "It is [diffuser_enabled ? "enabled" : "disabled"]."
|
||||
|
||||
/obj/machinery/shield_diffuser/process()
|
||||
if(stat & BROKEN)
|
||||
return PROCESS_KILL
|
||||
|
||||
if(!diffuser_enabled || stat & NOPOWER)
|
||||
if(!diffuser_enabled)
|
||||
return
|
||||
|
||||
for(var/obj/effect/energy_field/S in range(diffuser_range, src))
|
||||
S.diffuse(5)
|
||||
S.diffuse()
|
||||
|
||||
/obj/machinery/shield_diffuser/update_icon()
|
||||
if(stat & NOPOWER || stat & BROKEN || !diffuser_enabled)
|
||||
if(stat & BROKEN || !diffuser_enabled)
|
||||
icon_state = "fdiffuser_off"
|
||||
else
|
||||
icon_state = "fdiffuser_on"
|
||||
|
||||
Reference in New Issue
Block a user