[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 <dylan661993@gmail.com>
This commit is contained in:
SkyratBot
2022-01-19 01:27:48 +00:00
committed by GitHub
co-authored by DragonTrance
parent 05796f4bd9
commit 91120b7de0
2 changed files with 22 additions and 10 deletions
+17 -5
View File
@@ -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)