From 95ae128c8de856afd1f56e91bc9837a3bf6dfd29 Mon Sep 17 00:00:00 2001 From: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Date: Sun, 22 Dec 2024 01:41:17 +0300 Subject: [PATCH] Prevents mech RCD from being used with mesons, doubles R-wall deconstruction time (#88589) ## About The Pull Request Mech RCD has a unique quality of being usable at range, but does not check for LoS which allows you to instantly bore holes in multilayered walls with no warning. R-walls won't save you either, since they can be deconstructed by it just fine. Now, mech RCDs need LoS on turfs you click and deconstructs r-walls twice as slowly (the same time it'd take a normal RCD to deconstruct a normal wall). ## Why It's Good For The Game ![mech_rcd](https://github.com/user-attachments/assets/c10a1ad1-23f4-4da7-8a65-5dc110a74099) Screen from a recent round - this can be done in 6 seconds, as with correct mech positioning that's as long as you need to deconstruct all the walls and doors. This is incredibly oppressive and I won't be surprised if this started getting abused like hell. This should prevent further issues while still keeping it a good (but not absurdly overpowered) option for when you need to breach into somewhere, since its still quicker (and safer) than thermite. ## Changelog :cl: balance: Mech-mounted RCD no longer has wallhacks balance: Reinforced walls now take double the time to get deconstructed when using an RCD /:cl: Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/__DEFINES/construction/rcd.dm | 3 +++ code/game/turfs/closed/wall/reinf_walls.dm | 8 ++++++-- code/modules/vehicles/mecha/equipment/tools/work_tools.dm | 3 +++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/construction/rcd.dm b/code/__DEFINES/construction/rcd.dm index a8d98215af1..4f898d5ae86 100644 --- a/code/__DEFINES/construction/rcd.dm +++ b/code/__DEFINES/construction/rcd.dm @@ -51,3 +51,6 @@ #define RCD_MEMORY_COST_BUFF 8 /// If set to TRUE in rcd_vals, will bypass the cooldown on slowing down frequent use #define RCD_RESULT_BYPASS_FREQUENT_USE_COOLDOWN "bypass_frequent_use_cooldown" + +/// How much longer does it take to deconstruct rwalls? +#define RCD_RWALL_DELAY_MULT 2 diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm index 739ee5aeae0..2a17160ae4c 100644 --- a/code/game/turfs/closed/wall/reinf_walls.dm +++ b/code/game/turfs/closed/wall/reinf_walls.dm @@ -215,9 +215,13 @@ dismantle_wall() /turf/closed/wall/r_wall/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) - if(the_rcd.canRturf || the_rcd.construction_mode == RCD_WALLFRAME) + if (the_rcd.construction_mode == RCD_WALLFRAME) return ..() - + if(!the_rcd.canRturf) + return + . = ..() + if (.) + .["delay"] *= RCD_RWALL_DELAY_MULT /turf/closed/wall/r_wall/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, list/rcd_data) if(the_rcd.canRturf || rcd_data["[RCD_DESIGN_MODE]"] == RCD_WALLFRAME) diff --git a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm index f080675af46..651ccf999bb 100644 --- a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm +++ b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm @@ -293,6 +293,9 @@ /obj/item/mecha_parts/mecha_equipment/rcd/action(mob/source, atom/target, list/modifiers) if(!action_checks(target)) return + // No meson action! + if (!(target in view(RCD_RANGE, get_turf(chassis)))) + return if(get_dist(chassis, target) > RCD_RANGE) balloon_alert(source, "out of range!") return