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
🆑
balance: Mech-mounted RCD no longer has wallhacks
balance: Reinforced walls now take double the time to get deconstructed
when using an RCD
/🆑

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
SmArtKar
2024-12-22 01:41:17 +03:00
committed by GitHub
parent 4799894cc4
commit 95ae128c8d
3 changed files with 12 additions and 2 deletions
+3
View File
@@ -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
+6 -2
View File
@@ -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)
@@ -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