From bb04b22cce76894565b1e992e77e90bd337143b9 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Thu, 22 Jul 2021 17:48:22 -0400 Subject: [PATCH] Angled wall tweaks --- code/game/objects/structures/wall_frame.dm | 6 +-- code/game/turfs/simulated/wall_icon.dm | 6 ++- code/game/turfs/simulated/wall_types.dm | 45 ++++++++++++++++++++++ 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/wall_frame.dm b/code/game/objects/structures/wall_frame.dm index 863dd997a24..962b5be50eb 100644 --- a/code/game/objects/structures/wall_frame.dm +++ b/code/game/objects/structures/wall_frame.dm @@ -22,7 +22,7 @@ //rad_resistance_modifier = 0.5 // blend_objects defined on subtypes - noblend_objects = list(/obj/machinery/door/window) + noblend_objects = list(/obj/machinery/door/window, /obj/machinery/door/firedoor) var/default_material = DEFAULT_WALL_MATERIAL var/datum/material/material @@ -369,7 +369,7 @@ /obj/structure/window/bay icon = 'icons/obj/bay_window.dmi' blend_objects = list(/obj/machinery/door, /turf/simulated/wall/bay) - noblend_objects = list(/obj/machinery/door/window) + noblend_objects = list(/obj/machinery/door/window, /obj/machinery/door/firedoor) icon_state = "preview_glass" basestate = "window" alpha = 180 @@ -465,7 +465,7 @@ /obj/structure/window/eris icon = 'icons/obj/eris_window.dmi' blend_objects = list(/obj/machinery/door, /turf/simulated/wall/eris) - noblend_objects = list(/obj/machinery/door/window) + noblend_objects = list(/obj/machinery/door/window, /obj/machinery/door/firedoor) icon_state = "preview_glass" basestate = "window" fulltile = TRUE diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index 3c9df506aea..788f6c54522 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -117,6 +117,10 @@ if(can_join_with_low_wall(WF)) dirs += get_dir(src, WF) + special_wall_connections(dirs, inrange) + wall_connections = dirs_to_corner_states(dirs) + +/turf/simulated/wall/proc/special_wall_connections(list/dirs, list/inrange) if(material.icon_base == "hull") // Could be improved... var/additional_dirs = 0 for(var/direction in alldirs) @@ -129,8 +133,6 @@ if ((additional_dirs & diag_dir) == diag_dir) dirs += diag_dir - wall_connections = dirs_to_corner_states(dirs) - /turf/simulated/wall/proc/can_join_with_wall(var/turf/simulated/wall/W) //No blending if no material if(!material || !W.material) diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index cd180e9bf7a..a7ba4d13f6a 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -337,9 +337,31 @@ icon = 'icons/turf/wall_masks_eris.dmi' icon_state = "generic" wall_masks = 'icons/turf/wall_masks_eris.dmi' + var/list/blend_objects = list(/obj/machinery/door) + var/list/noblend_objects = list(/obj/machinery/door/window, /obj/machinery/door/firedoor) /turf/simulated/wall/eris/can_join_with_low_wall(var/obj/structure/low_wall/WF) return istype(WF, /obj/structure/low_wall/eris) +/turf/simulated/wall/eris/special_wall_connections(list/dirs, list/inrange) + ..() + for(var/direction in cardinal) + var/turf/T = get_step(src, direction) + var/decided_to_blend = FALSE + blend_obj_loop: + for(var/obj/O in T) + for(var/b_type in blend_objects) + if(istype(O, b_type)) + decided_to_blend = TRUE + for(var/obj/structure/S in T) + if(istype(S, src)) + decided_to_blend = FALSE + for(var/nb_type in noblend_objects) + if(istype(O, nb_type)) + decided_to_blend = FALSE + + if(decided_to_blend) + dirs += direction + break blend_obj_loop // breaks outer loop /turf/simulated/wall/eris/r_wall icon_state = "rgeneric" @@ -351,6 +373,8 @@ icon = 'icons/turf/wall_masks_bay.dmi' icon_state = "generic" wall_masks = 'icons/turf/wall_masks_bay.dmi' + var/list/blend_objects = list(/obj/machinery/door) + var/list/noblend_objects = list(/obj/machinery/door/window, /obj/machinery/door/firedoor) var/stripe_color // Adds a colored stripe to the walls @@ -366,6 +390,27 @@ I.color = stripe_color add_overlay(I) +/turf/simulated/wall/bay/special_wall_connections(list/dirs, list/inrange) + ..() + for(var/direction in cardinal) + var/turf/T = get_step(src, direction) + var/decided_to_blend = FALSE + blend_obj_loop: + for(var/obj/O in T) + for(var/b_type in blend_objects) + if(istype(O, b_type)) + decided_to_blend = TRUE + for(var/obj/structure/S in T) + if(istype(S, src)) + decided_to_blend = FALSE + for(var/nb_type in noblend_objects) + if(istype(O, nb_type)) + decided_to_blend = FALSE + + if(decided_to_blend) + dirs += direction + break blend_obj_loop // breaks outer loop + /turf/simulated/wall/bay/r_wall icon_state = "rgeneric" /turf/simulated/wall/bay/r_wall/Initialize(mapload)