mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-25 00:51:55 +00:00
It's the second try! (First: #48456) Drones are little robots inspired by Keepers from the Mass Effect games. With laws to maintain both the station, and their distance from the matters of others, they were a great ghost role that let you fix up the station when you were otherwise out of the round. They were in the game for quite a while, but were abused. The abusive players completely ignored the laws and did whatever they wanted. Being tiny ventcrawlers, this became a huge issue for admins. I attempted to bring them back, this time with some gameplay restrictions to enforce their laws a bit better. It seemed to go well, but I required headmin approval, and this all happened near a headmin election, so the project died. Recently, some people have wanted to bring drones back. So, they gave me a ring, and I started a discussion with the admin team to see what other changes they would want in addition to the previous ones. Here are those changes: They can't interact at all when close to another being, living or dead Their binary chat has been removed to separate them from AI and borgs They can only hold a whitelist of items necessary to do their job They can only interact with machines necessary to do their job The drone satchel is gone, and drones now have built in basic tools They also can't interact in some blacklisted high risk areas Finally, you must play 40 hours total as a Silicon role in order to play as a drone Additionally, the drone dispenser is not mapped, and the drones must be researched to be constructed. Why It's Good For The Game Drones are a fun way to pass the time, and this time they have a lot less freedom. You can still perform the basic function of maintaining the station, but not without difficulty and tedium. This will allow other station roles to perform much better than the drones, while still letting them chug along at their slower pace.
416 lines
14 KiB
Plaintext
416 lines
14 KiB
Plaintext
/datum/config_entry/number_list/repeated_mode_adjust
|
|
|
|
/datum/config_entry/keyed_list/probability
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_NUM
|
|
|
|
/datum/config_entry/keyed_list/probability/ValidateListEntry(key_name)
|
|
return key_name in config.modes
|
|
|
|
/datum/config_entry/keyed_list/max_pop
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_NUM
|
|
|
|
/datum/config_entry/keyed_list/max_pop/ValidateListEntry(key_name)
|
|
return key_name in config.modes
|
|
|
|
/datum/config_entry/keyed_list/min_pop
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_NUM
|
|
|
|
/datum/config_entry/keyed_list/min_pop/ValidateListEntry(key_name, key_value)
|
|
return key_name in config.modes
|
|
|
|
/datum/config_entry/keyed_list/continuous // which roundtypes continue if all antagonists die
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_FLAG
|
|
|
|
/datum/config_entry/keyed_list/continuous/ValidateListEntry(key_name, key_value)
|
|
return key_name in config.modes
|
|
|
|
/datum/config_entry/keyed_list/midround_antag // which roundtypes use the midround antagonist system
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_FLAG
|
|
|
|
/datum/config_entry/keyed_list/midround_antag/ValidateListEntry(key_name, key_value)
|
|
return key_name in config.modes
|
|
|
|
/datum/config_entry/number/damage_multiplier
|
|
config_entry_value = 1
|
|
integer = FALSE
|
|
|
|
/datum/config_entry/number/minimal_access_threshold //If the number of players is larger than this threshold, minimal access will be turned on.
|
|
min_val = 0
|
|
|
|
/datum/config_entry/flag/jobs_have_minimal_access //determines whether jobs use minimal access or expanded access.
|
|
|
|
/datum/config_entry/flag/assistants_have_maint_access
|
|
|
|
/datum/config_entry/flag/security_has_maint_access
|
|
|
|
/datum/config_entry/flag/everyone_has_maint_access
|
|
|
|
/datum/config_entry/flag/sec_start_brig //makes sec start in brig instead of dept sec posts
|
|
|
|
/datum/config_entry/flag/force_random_names
|
|
|
|
/datum/config_entry/flag/humans_need_surnames
|
|
|
|
/datum/config_entry/flag/allow_ai // allow ai job
|
|
|
|
/datum/config_entry/flag/allow_ai_multicam // allow ai multicamera mode
|
|
|
|
/datum/config_entry/flag/disable_human_mood
|
|
|
|
/datum/config_entry/flag/disable_secborg // disallow secborg model to be chosen.
|
|
|
|
/datum/config_entry/flag/disable_peaceborg
|
|
|
|
/datum/config_entry/flag/disable_warops
|
|
|
|
/datum/config_entry/number/traitor_scaling_coeff //how much does the amount of players get divided by to determine traitors
|
|
config_entry_value = 6
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/brother_scaling_coeff //how many players per brother team
|
|
config_entry_value = 25
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/changeling_scaling_coeff //how much does the amount of players get divided by to determine changelings
|
|
config_entry_value = 6
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/ecult_scaling_coeff //how much does the amount of players get divided by to determine e_cult
|
|
config_entry_value = 6
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/security_scaling_coeff //how much does the amount of players get divided by to determine open security officer positions
|
|
config_entry_value = 8
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/traitor_objectives_amount
|
|
config_entry_value = 2
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/brother_objectives_amount
|
|
config_entry_value = 2
|
|
min_val = 0
|
|
|
|
/datum/config_entry/flag/reactionary_explosions //If we use reactionary explosions, explosions that react to walls and doors
|
|
|
|
/datum/config_entry/flag/protect_roles_from_antagonist //If security and such can be traitor/cult/other
|
|
|
|
/datum/config_entry/flag/protect_assistant_from_antagonist //If assistants can be traitor/cult/other
|
|
|
|
/datum/config_entry/flag/enforce_human_authority //If non-human species are barred from joining as a head of staff
|
|
|
|
/datum/config_entry/flag/allow_latejoin_antagonists // If late-joining players can be traitor/changeling
|
|
|
|
/datum/config_entry/flag/use_antag_rep // see game_options.txt for details
|
|
|
|
/datum/config_entry/number/antag_rep_maximum
|
|
config_entry_value = 200
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/default_antag_tickets
|
|
config_entry_value = 100
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/max_tickets_per_roll
|
|
config_entry_value = 100
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/midround_antag_time_check // How late (in minutes you want the midround antag system to stay on, setting this to 0 will disable the system)
|
|
config_entry_value = 60
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/midround_antag_life_check // A ratio of how many people need to be alive in order for the round not to immediately end in midround antagonist
|
|
config_entry_value = 0.7
|
|
integer = FALSE
|
|
min_val = 0
|
|
max_val = 1
|
|
|
|
/datum/config_entry/number/shuttle_refuel_delay
|
|
config_entry_value = 12000
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/flag/show_game_type_odds //if set this allows players to see the odds of each roundtype on the get revision screen
|
|
|
|
/datum/config_entry/keyed_list/roundstart_races //races you can play as from the get go.
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_FLAG
|
|
|
|
/datum/config_entry/keyed_list/roundstart_no_hard_check // Species contained in this list will not cause existing characters with no-longer-roundstart species set to be resetted to the human race.
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_FLAG
|
|
|
|
/datum/config_entry/flag/join_with_mutant_humans //players can pick mutant bodyparts for humans before joining the game
|
|
|
|
/datum/config_entry/flag/no_summon_guns //No
|
|
|
|
/datum/config_entry/flag/no_summon_magic //Fun
|
|
|
|
/datum/config_entry/flag/no_summon_events //Allowed
|
|
|
|
/datum/config_entry/flag/no_intercept_report //Whether or not to send a communications intercept report roundstart. This may be overridden by gamemodes.
|
|
|
|
/datum/config_entry/number/arrivals_shuttle_dock_window //Time from when a player late joins on the arrivals shuttle to when the shuttle docks on the station
|
|
config_entry_value = 55
|
|
integer = FALSE
|
|
min_val = 30
|
|
|
|
/datum/config_entry/flag/arrivals_shuttle_require_undocked //Require the arrivals shuttle to be undocked before latejoiners can join
|
|
|
|
/datum/config_entry/flag/arrivals_shuttle_require_safe_latejoin //Require the arrivals shuttle to be operational in order for latejoiners to join
|
|
|
|
/datum/config_entry/string/alert_green
|
|
config_entry_value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
|
|
|
|
/datum/config_entry/string/alert_blue_upto
|
|
config_entry_value = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted."
|
|
|
|
/datum/config_entry/string/alert_blue_downto
|
|
config_entry_value = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed."
|
|
|
|
/datum/config_entry/string/alert_red_upto
|
|
config_entry_value = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised."
|
|
|
|
/datum/config_entry/string/alert_red_downto
|
|
config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised."
|
|
|
|
/datum/config_entry/string/alert_delta
|
|
config_entry_value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
|
|
|
|
/datum/config_entry/flag/revival_pod_plants
|
|
|
|
/datum/config_entry/number/revival_brain_life
|
|
config_entry_value = -1
|
|
integer = FALSE
|
|
min_val = -1
|
|
|
|
/datum/config_entry/flag/ooc_during_round
|
|
|
|
// deprecated for unclear name
|
|
/datum/config_entry/number/commendations
|
|
integer = FALSE
|
|
deprecated_by = /datum/config_entry/number/commendation_percent_poll
|
|
|
|
/datum/config_entry/number/commendation_percent_poll
|
|
integer = FALSE
|
|
|
|
/datum/config_entry/flag/emojis
|
|
|
|
/datum/config_entry/keyed_list/multiplicative_movespeed
|
|
key_mode = KEY_MODE_TYPE
|
|
value_mode = VALUE_MODE_NUM
|
|
config_entry_value = list( //DEFAULTS
|
|
/mob/living/simple_animal = 1,
|
|
/mob/living/silicon/pai = 1,
|
|
/mob/living/carbon/alien/humanoid/hunter = -1,
|
|
/mob/living/carbon/alien/humanoid/royal/praetorian = 1,
|
|
/mob/living/carbon/alien/humanoid/royal/queen = 3
|
|
)
|
|
|
|
/datum/config_entry/keyed_list/multiplicative_movespeed/ValidateAndSet()
|
|
. = ..()
|
|
if(.)
|
|
update_config_movespeed_type_lookup(TRUE)
|
|
|
|
/datum/config_entry/keyed_list/multiplicative_movespeed/vv_edit_var(var_name, var_value)
|
|
. = ..()
|
|
if(. && (var_name == NAMEOF(src, config_entry_value)))
|
|
update_config_movespeed_type_lookup(TRUE)
|
|
|
|
/datum/config_entry/number/movedelay //Used for modifying movement speed for mobs.
|
|
abstract_type = /datum/config_entry/number/movedelay
|
|
|
|
/datum/config_entry/number/movedelay/ValidateAndSet()
|
|
. = ..()
|
|
if(.)
|
|
update_mob_config_movespeeds()
|
|
|
|
/datum/config_entry/number/movedelay/vv_edit_var(var_name, var_value)
|
|
. = ..()
|
|
if(. && (var_name == NAMEOF(src, config_entry_value)))
|
|
update_mob_config_movespeeds()
|
|
|
|
/datum/config_entry/number/movedelay/run_delay
|
|
integer = FALSE
|
|
|
|
/datum/config_entry/number/movedelay/run_delay/ValidateAndSet()
|
|
. = ..()
|
|
var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/run)
|
|
M.sync()
|
|
|
|
/datum/config_entry/number/movedelay/walk_delay
|
|
integer = FALSE
|
|
|
|
/datum/config_entry/number/movedelay/walk_delay/ValidateAndSet()
|
|
. = ..()
|
|
var/datum/movespeed_modifier/config_walk_run/M = get_cached_movespeed_modifier(/datum/movespeed_modifier/config_walk_run/walk)
|
|
M.sync()
|
|
|
|
/////////////////////////////////////////////////Outdated move delay
|
|
/datum/config_entry/number/outdated_movedelay
|
|
deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed
|
|
abstract_type = /datum/config_entry/number/outdated_movedelay
|
|
integer = FALSE
|
|
var/movedelay_type
|
|
|
|
/datum/config_entry/number/outdated_movedelay/DeprecationUpdate(value)
|
|
return "[movedelay_type] [value]"
|
|
|
|
/datum/config_entry/number/outdated_movedelay/human_delay
|
|
movedelay_type = /mob/living/carbon/human
|
|
/datum/config_entry/number/outdated_movedelay/robot_delay
|
|
movedelay_type = /mob/living/silicon/robot
|
|
/datum/config_entry/number/outdated_movedelay/alien_delay
|
|
movedelay_type = /mob/living/carbon/alien
|
|
/datum/config_entry/number/outdated_movedelay/slime_delay
|
|
movedelay_type = /mob/living/simple_animal/slime
|
|
/datum/config_entry/number/outdated_movedelay/animal_delay
|
|
movedelay_type = /mob/living/simple_animal
|
|
/////////////////////////////////////////////////
|
|
|
|
/datum/config_entry/flag/virtual_reality //Will virtual reality be loaded
|
|
|
|
/datum/config_entry/flag/roundstart_away //Will random away mission be loaded.
|
|
|
|
/datum/config_entry/number/gateway_delay //How long the gateway takes before it activates. Default is half an hour. Only matters if roundstart_away is enabled.
|
|
config_entry_value = 18000
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/flag/ghost_interaction
|
|
|
|
/datum/config_entry/flag/near_death_experience //If carbons can hear ghosts when unconscious and very close to death
|
|
|
|
/datum/config_entry/flag/silent_ai
|
|
/datum/config_entry/flag/silent_borg
|
|
|
|
/datum/config_entry/flag/sandbox_autoclose // close the sandbox panel after spawning an item, potentially reducing griff
|
|
|
|
/datum/config_entry/number/default_laws //Controls what laws the AI spawns with.
|
|
config_entry_value = 0
|
|
min_val = 0
|
|
max_val = 3
|
|
|
|
/datum/config_entry/number/silicon_max_law_amount
|
|
config_entry_value = 12
|
|
min_val = 0
|
|
|
|
/datum/config_entry/keyed_list/random_laws
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_FLAG
|
|
|
|
/datum/config_entry/keyed_list/law_weight
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_NUM
|
|
splitter = ","
|
|
|
|
/datum/config_entry/number/max_law_len
|
|
config_entry_value = 1024
|
|
|
|
/datum/config_entry/number/overflow_cap
|
|
config_entry_value = -1
|
|
min_val = -1
|
|
|
|
/datum/config_entry/string/overflow_job
|
|
config_entry_value = "Assistant"
|
|
|
|
/datum/config_entry/flag/starlight
|
|
/datum/config_entry/flag/grey_assistants
|
|
|
|
/datum/config_entry/number/lavaland_budget
|
|
config_entry_value = 60
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/icemoon_budget
|
|
config_entry_value = 90
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/space_budget
|
|
config_entry_value = 16
|
|
integer = FALSE
|
|
min_val = 0
|
|
|
|
/datum/config_entry/flag/allow_random_events // Enables random events mid-round when set
|
|
|
|
/datum/config_entry/number/events_min_time_mul // Multipliers for random events minimal starting time and minimal players amounts
|
|
config_entry_value = 1
|
|
min_val = 0
|
|
integer = FALSE
|
|
|
|
/datum/config_entry/number/events_min_players_mul
|
|
config_entry_value = 1
|
|
min_val = 0
|
|
integer = FALSE
|
|
|
|
/datum/config_entry/number/mice_roundstart
|
|
config_entry_value = 10
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/bombcap
|
|
config_entry_value = 14
|
|
min_val = 4
|
|
|
|
/datum/config_entry/number/bombcap/ValidateAndSet(str_val)
|
|
. = ..()
|
|
if(.)
|
|
GLOB.MAX_EX_DEVESTATION_RANGE = round(config_entry_value / 4)
|
|
GLOB.MAX_EX_HEAVY_RANGE = round(config_entry_value / 2)
|
|
GLOB.MAX_EX_LIGHT_RANGE = config_entry_value
|
|
GLOB.MAX_EX_FLASH_RANGE = config_entry_value
|
|
GLOB.MAX_EX_FLAME_RANGE = config_entry_value
|
|
|
|
/datum/config_entry/number/emergency_shuttle_autocall_threshold
|
|
min_val = 0
|
|
max_val = 1
|
|
integer = FALSE
|
|
|
|
/datum/config_entry/flag/roundstart_traits
|
|
|
|
/datum/config_entry/flag/enable_night_shifts
|
|
|
|
/datum/config_entry/flag/randomize_shift_time
|
|
|
|
/datum/config_entry/flag/shift_time_realtime
|
|
|
|
/datum/config_entry/keyed_list/antag_rep
|
|
key_mode = KEY_MODE_TEXT
|
|
value_mode = VALUE_MODE_NUM
|
|
|
|
/datum/config_entry/number/monkeycap
|
|
config_entry_value = 64
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/ratcap
|
|
config_entry_value = 64
|
|
min_val = 0
|
|
|
|
/datum/config_entry/number/maxfine
|
|
config_entry_value = 1000
|
|
min_val = 0
|
|
|
|
/datum/config_entry/flag/dynamic_config_enabled
|
|
|
|
/datum/config_entry/string/drone_required_role
|
|
config_entry_value = "Silicon"
|
|
|
|
/datum/config_entry/number/drone_role_playtime
|
|
config_entry_value = 40
|
|
min_val = 0
|
|
integer = FALSE // It is in hours, but just in case one wants to specify minutes.
|