unhandicaps station drones (#87983)

## About The Pull Request
- makes area-based shy-ness for drones config
- reduces the cooldown on touching machines as a shy drone from 1 minute
to 20 seconds
## Why It's Good For The Game
This was admin issues solved by codebase, no one plays drones anymore
and those who do - complain that they're not fun because of the heavy
restrictions imposed upon them.
If I remember correctly - the playtime restriction on our servers is 20
silicon hours? or 10 silicon hours? It's a config thing I can't check.
This means it shouldn't be a problem with ban evaders and such.
Area restrictions are odd because drones can't get more air from atmos
and they can't make power from SM, which is in their laws.
If a drone is messing with your SM then kill it, or ahelp if it keeps
coming back?
For context:
```
"1. You may not involve yourself in the matters of another being, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n"+\
"2. You may not harm any being, regardless of intent or circumstance.\n"+\
"3. Your goals are to actively build, maintain, repair, improve, and provide power to the best of your abilities within the facility that housed your activation."
```
## Changelog
🆑 grungussuss
server: drone area restrictions are now config
balance: drones now take less time to become "un-shy" of something after
it's been touched.
/🆑
This commit is contained in:
grungussuss
2024-11-19 23:04:19 +03:00
committed by GitHub
parent 88c7c537bb
commit bd0c33b9bd
3 changed files with 12 additions and 2 deletions

View File

@@ -438,6 +438,10 @@
min_val = 0 min_val = 0
integer = FALSE // It is in hours, but just in case one wants to specify minutes. integer = FALSE // It is in hours, but just in case one wants to specify minutes.
/// Will drones be restricted from interacting with the Supermatter and Atmospherics area?
/datum/config_entry/flag/drone_area_interaction_restrict
default = TRUE
/datum/config_entry/flag/native_fov /datum/config_entry/flag/native_fov
/datum/config_entry/flag/disallow_title_music /datum/config_entry/flag/disallow_title_music

View File

@@ -348,6 +348,9 @@
to_chat(src, span_warning("Using [machine] could break your laws.")) to_chat(src, span_warning("Using [machine] could break your laws."))
return COMPONENT_CANT_INTERACT_WIRES return COMPONENT_CANT_INTERACT_WIRES
/mob/living/basic/drone/proc/init_shy_in_room_component(list/drone_bad_areas)
if(CONFIG_GET(flag/drone_area_interaction_restrict))
LoadComponent(/datum/component/shy_in_room, drone_bad_areas, "Touching anything in %ROOM could break your laws.")
/mob/living/basic/drone/proc/set_shy(new_shy) /mob/living/basic/drone/proc/set_shy(new_shy)
shy = new_shy shy = new_shy
@@ -366,8 +369,8 @@
REMOVE_TRAIT(src, TRAIT_CAN_STRIP, DRONE_SHY_TRAIT) // To shy to touch someone elses hat REMOVE_TRAIT(src, TRAIT_CAN_STRIP, DRONE_SHY_TRAIT) // To shy to touch someone elses hat
ADD_TRAIT(src, TRAIT_PACIFISM, DRONE_SHY_TRAIT) ADD_TRAIT(src, TRAIT_PACIFISM, DRONE_SHY_TRAIT)
LoadComponent(/datum/component/shy, mob_whitelist=not_shy_of, shy_range=3, message="Your laws prevent this action near %TARGET.", keyless_shy=FALSE, clientless_shy=TRUE, dead_shy=FALSE, dead_shy_immediate=TRUE, machine_whitelist=shy_machine_whitelist) LoadComponent(/datum/component/shy, mob_whitelist=not_shy_of, shy_range=3, message="Your laws prevent this action near %TARGET.", keyless_shy=FALSE, clientless_shy=TRUE, 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.") init_shy_in_room_component(drone_bad_areas)
LoadComponent(/datum/component/technoshy, 1 MINUTES, "%TARGET was touched by a being recently, using it could break your laws.") LoadComponent(/datum/component/technoshy, 20 SECONDS, "%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.") LoadComponent(/datum/component/itempicky, drone_good_items, "Using %TARGET could break your laws.")
RegisterSignal(src, COMSIG_TRY_USE_MACHINE, PROC_REF(blacklist_on_try_use_machine)) RegisterSignal(src, COMSIG_TRY_USE_MACHINE, PROC_REF(blacklist_on_try_use_machine))
RegisterSignal(src, COMSIG_TRY_WIRES_INTERACT, PROC_REF(blacklist_on_try_wires_interact)) RegisterSignal(src, COMSIG_TRY_WIRES_INTERACT, PROC_REF(blacklist_on_try_wires_interact))

View File

@@ -507,6 +507,9 @@ MAXFINE 2000
## How many played hours of DRONE_REQUIRED_ROLE required to be a Maintenance Done ## How many played hours of DRONE_REQUIRED_ROLE required to be a Maintenance Done
#DRONE_ROLE_PLAYTIME 14 #DRONE_ROLE_PLAYTIME 14
## Will drones be restricted from interacting with the supermatter and atmopherics area?
#DRONE_AREA_INTERACTION_RESTRICT 1
## Whether native FoV is enabled for all people. ## Whether native FoV is enabled for all people.
#NATIVE_FOV #NATIVE_FOV