From 91120b7de0d945dc79a139366fcc9a84d154c38e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 19 Jan 2022 02:27:48 +0100 Subject: [PATCH] [MIRROR] Slightly* buffs Maint Drones [MDB IGNORE] (#10814) * Slightly* buffs Maint Drones (#64150) Increases drone health from 30 to 45, making it harder to instantly die from some things Lowers the range that drones can't do interactions from 4 tiles to 3 tiles Lowers stun time from 10 seconds to 7 seconds when EMP'd Wait time for when a mob has recently interacted with something has been decreased from 5 minutes to 1 minute Drones can now build near dead mobs, but not interact when right next to them (to prevent pulling) Also adds a new argument for the shy component that allows interacting near dead bodies, but not right on top of them Why It's Good For The Game This is mainly for the QOL of Drones. I know "maint" is implied in the name of drones, but it sucks that you have to hide in maint for half the shift while all the airlocks are being opened by everyone, being unable to fix the station from explosions. Also even though the range was 4 tiles for interacting next to living mobs, it seemed a bit excessive when you tried to do stuff. Changelog cl balance: Maintenance Drone health changed from 30 to 45 balance: Maintenance Drone stun times from getting EMP'd reduced from 10 seconds to 7 seconds qol: Maintenance Drones can now interact near dead bodies qol: Maintenance Drones don't have to wait 5 minutes to open an airlock when someone recently did it. Now they have to wait 1 minute. qol: Changed distance Maintenance Drones aren't allowed to interact with anything from a nearby mob from 4 tiles to 3 tiles /cl * Slightly* buffs Maint Drones Co-authored-by: DragonTrance --- code/datums/components/shy.dm | 22 ++++++++++++++----- .../simple_animal/friendly/drone/_drone.dm | 10 ++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/code/datums/components/shy.dm b/code/datums/components/shy.dm index 608b7b70cf0..f32e6cf6752 100644 --- a/code/datums/components/shy.dm +++ b/code/datums/components/shy.dm @@ -13,12 +13,14 @@ var/message = "You find yourself too shy to do that around %TARGET!" /// Are you shy around a dead body? var/dead_shy = FALSE + /// If dead_shy is false and this is true, you're only shy when right next to a dead target + var/dead_shy_immediate = TRUE /// Invalidate last_result at this time COOLDOWN_DECLARE(result_cooldown) /// What was our last result? var/last_result = FALSE -/datum/component/shy/Initialize(mob_whitelist, shy_range, message, dead_shy, machine_whitelist) +/datum/component/shy/Initialize(mob_whitelist, shy_range, message, dead_shy, dead_shy_immediate, machine_whitelist) if(!ismob(parent)) return COMPONENT_INCOMPATIBLE src.mob_whitelist = mob_whitelist @@ -28,6 +30,8 @@ src.message = message if(dead_shy) src.dead_shy = dead_shy + if(dead_shy_immediate) + src.dead_shy_immediate = dead_shy_immediate if(machine_whitelist) src.machine_whitelist = machine_whitelist @@ -75,10 +79,18 @@ if(length(strangers) && locate(/mob/living) in strangers) for(var/mob/living/person in strangers) - if(person != owner && !is_type_in_typecache(person, mob_whitelist) && (person.stat != DEAD || dead_shy)) - to_chat(owner, span_warning("[replacetext(message, "%TARGET", person)]")) - result = TRUE - break + if(person == owner) + continue + if(!is_type_in_typecache(person, mob_whitelist)) + continue + if(person.stat == DEAD && !dead_shy) + if(!dead_shy_immediate) + continue + else if(!owner.DirectAccess(person)) + continue + to_chat(owner, span_warning("[replacetext(message, "%TARGET", person)]")) + result = TRUE + break last_result = result COOLDOWN_START(src, result_cooldown, SHY_COMPONENT_CACHE_TIME) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 42d94b00a24..1ccdaf6a1d9 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -20,8 +20,8 @@ icon_state = "drone_maint_grey" icon_living = "drone_maint_grey" icon_dead = "drone_maint_dead" - health = 30 - maxHealth = 30 + health = 45 + maxHealth = 45 unsuitable_atmos_damage = 0 minbodytemp = 0 maxbodytemp = 0 @@ -296,7 +296,7 @@ . = ..() if(. & EMP_PROTECT_SELF) return - Stun(100) + Stun(70) to_chat(src, span_danger("ER@%R: MME^RY CO#RU9T! R&$b@0tin)...")) if(severity == 1) adjustBruteLoss(heavy_emp_damage) @@ -338,9 +338,9 @@ var/static/list/not_shy_of = typecacheof(list(/mob/living/simple_animal/drone, /mob/living/simple_animal/bot)) if(shy) ADD_TRAIT(src, TRAIT_PACIFISM, DRONE_SHY_TRAIT) - LoadComponent(/datum/component/shy, not_shy_of, 4, "Your laws prevent this action near %TARGET.", TRUE, shy_machine_whitelist) + LoadComponent(/datum/component/shy, mob_whitelist=not_shy_of, shy_range=3, message="Your laws prevent this action near %TARGET.", dead_shy=FALSE, dead_shy_immediate=TRUE, machine_whitelist=shy_machine_whitelist) LoadComponent(/datum/component/shy_in_room, drone_bad_areas, "Touching anything in %ROOM could break your laws.") - LoadComponent(/datum/component/technoshy, 5 MINUTES, "%TARGET was touched by a being recently, using it could break your laws.") + LoadComponent(/datum/component/technoshy, 1 MINUTES, "%TARGET was touched by a being recently, using it could break your laws.") LoadComponent(/datum/component/itempicky, drone_good_items, "Using %TARGET could break your laws.") RegisterSignal(src, COMSIG_TRY_USE_MACHINE, .proc/blacklist_on_try_use_machine) RegisterSignal(src, COMSIG_TRY_WIRES_INTERACT, .proc/blacklist_on_try_wires_interact)