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)