diff --git a/code/datums/components/reflection.dm b/code/datums/components/reflection.dm index d85960951aa..29640af1196 100644 --- a/code/datums/components/reflection.dm +++ b/code/datums/components/reflection.dm @@ -124,9 +124,7 @@ ///The filter is added to the reflection holder; the matrix is not, otherwise that'd go affecting the filter. if(reflection_matrix) reflection.transform = reflection_matrix - if(reflected_dir == NORTH) - reflection.transform = reflection.transform.Scale(1, -1) - else if(reflected_dir != SOUTH) + if(reflected_dir != NORTH && reflected_dir != SOUTH) reflection.transform = reflection.transform.Scale(-1, 1) LAZYSET(reflected_movables, target, reflection) reflection_holder.vis_contents += reflection diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index b9fc5aae733..2d1a94fe633 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -31,10 +31,20 @@ var/race_flags = MIRROR_MAGIC ///List of all Races that can be chosen, decided by its Initialize. var/list/selectable_races = list() + ///Per-dir reflection filters + var/static/list/list/reflection_filters /obj/structure/mirror/Initialize(mapload) . = ..() - update_choices() + var/static/matrix/reflection_matrix = matrix(0.75, 0, 0, 0, 0.75, 0) + var/datum/callback/can_reflect = CALLBACK(src, PROC_REF(can_reflect)) + var/list/update_signals = list(COMSIG_ATOM_BREAK) + if (isnull(reflection_filters)) + reflection_filters = list() + for (var/car_dir in GLOB.cardinals) + reflection_filters["[car_dir]"] = alpha_mask_filter(icon = icon('icons/obj/watercloset.dmi', "mirror_mask", dir = car_dir)) + AddComponent(/datum/component/reflection, reflection_filter = reflection_filters["[dir]"], reflection_matrix = reflection_matrix, can_reflect = can_reflect, update_signals = update_signals) + AddComponent(/datum/component/examine_balloon) /obj/structure/mirror/Destroy() mirror_options = null @@ -47,14 +57,6 @@ WALL_MOUNT_DIRECTIONAL_HELPERS(/obj/structure/mirror) -/obj/structure/mirror/Initialize(mapload) - . = ..() - var/static/list/reflection_filter = alpha_mask_filter(icon = icon('icons/obj/watercloset.dmi', "mirror_mask")) - var/static/matrix/reflection_matrix = matrix(0.75, 0, 0, 0, 0.75, 0) - var/datum/callback/can_reflect = CALLBACK(src, PROC_REF(can_reflect)) - var/list/update_signals = list(COMSIG_ATOM_BREAK) - AddComponent(/datum/component/reflection, reflection_filter = reflection_filter, reflection_matrix = reflection_matrix, can_reflect = can_reflect, update_signals = update_signals) - /obj/structure/mirror/proc/can_reflect(atom/movable/target) ///I'm doing it this way too, because the signal is sent before the broken variable is set to TRUE. if(atom_integrity <= integrity_failure * max_integrity) diff --git a/code/game/objects/structures/water_structures/sink.dm b/code/game/objects/structures/water_structures/sink.dm index 334ae5f8c48..5961e196ecd 100644 --- a/code/game/objects/structures/water_structures/sink.dm +++ b/code/game/objects/structures/water_structures/sink.dm @@ -42,9 +42,6 @@ SINK_DIRECTIONAL_HELPERS(/obj/structure/sink) . += span_notice("A water recycler is installed. It looks like you could pry it out.") . += span_notice("[reagents.total_volume]/[reagents.maximum_volume] liquids remaining.") -/obj/structure/sink/wall_mount_common_plane(direction) - return TRUE - /obj/structure/sink/attack_hand(mob/living/user, list/modifiers) . = ..() if(.) diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi index dcfa2048e49..0489251d74a 100644 Binary files a/icons/obj/watercloset.dmi and b/icons/obj/watercloset.dmi differ