mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-05 06:05:58 +01:00
a2c8cce535
## About The Pull Request This was one of the tradeoffs for removing other, more consistent sources of languages, and was requested by Melbert among many others. This does go against my wanted goal of decreasing the risk of eavesdropping by other players through just magically knowing a language, but it is an expensive quirk and it is in their medical records, which makes it better than language encryption keys or silicon just innately knowing them. This also limits Bilingual to only roundstart languages (+Uncommon), rather than being randomly selected from a list (that had very useless ones like monkey, podpeople, and beachbum). This is mostly just for modularity, I didn't want to make it look terrible code-wise and thought this may be the optimal way to handle it. This is also me going back on https://github.com/tgstation/tgstation/pull/71773 - which I had closed myself. ## Why It's Good For The Game If we're gonna keep the Bilingual quirk, it might as well be something players can choose the language of, it's their character and they should be allowed to decide how their character is, and it is my fault that this stupid compromise of "getting a random language" was made in the first place. It never should've happened. It now actually limits it to roundstart-only languages, so there's no way you can spy on people who prepare in advance through becoming podpeople, or monkeys, etc. ## Changelog 🆑 balance: Bilingual quirk now lets you choose your language between ones given to roundstart species. balance: Foreigner and Bilingual are now mutually exclusive languages. /🆑
120 lines
4.6 KiB
Plaintext
120 lines
4.6 KiB
Plaintext
GLOBAL_LIST_EMPTY(clients) //all clients
|
|
GLOBAL_LIST_EMPTY(admins) //all clients whom are admins
|
|
GLOBAL_PROTECT(admins)
|
|
GLOBAL_LIST_EMPTY(deadmins) //all ckeys who have used the de-admin verb.
|
|
|
|
GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client
|
|
GLOBAL_LIST_EMPTY(stealthminID) //reference list with IDs that store ckeys, for stealthmins
|
|
|
|
GLOBAL_LIST_INIT(dangerous_turfs, typecacheof(list(
|
|
/turf/open/lava,
|
|
/turf/open/chasm,
|
|
/turf/open/space,
|
|
/turf/open/openspace)))
|
|
|
|
|
|
//Since it didn't really belong in any other category, I'm putting this here
|
|
//This is for procs to replace all the goddamn 'in world's that are chilling around the code
|
|
|
|
GLOBAL_LIST_EMPTY(player_list) //all mobs **with clients attached**.
|
|
GLOBAL_LIST_EMPTY(keyloop_list) //as above but can be limited to boost performance
|
|
GLOBAL_LIST_EMPTY(mob_list) //all mobs, including clientless
|
|
GLOBAL_LIST_EMPTY(mob_directory) //mob_id -> mob
|
|
GLOBAL_LIST_EMPTY(alive_mob_list) //all alive mobs, including clientless. Excludes /mob/dead/new_player
|
|
GLOBAL_LIST_EMPTY(suicided_mob_list) //contains a list of all mobs that suicided, including their associated ghosts.
|
|
GLOBAL_LIST_EMPTY(drones_list)
|
|
GLOBAL_LIST_EMPTY(dead_mob_list) //all dead mobs, including clientless. Excludes /mob/dead/new_player
|
|
GLOBAL_LIST_EMPTY(joined_player_list) //all ckeys that have joined the game at round-start or as a latejoin.
|
|
GLOBAL_LIST_EMPTY(new_player_list) //all /mob/dead/new_player, in theory all should have clients and those that don't are in the process of spawning and get deleted when done.
|
|
GLOBAL_LIST_EMPTY(pre_setup_antags) //minds that have been picked as antag by the gamemode. removed as antag datums are set.
|
|
GLOBAL_LIST_EMPTY(silicon_mobs) //all silicon mobs
|
|
GLOBAL_LIST_EMPTY(mob_living_list) //all instances of /mob/living and subtypes
|
|
GLOBAL_LIST_EMPTY(carbon_list) //all instances of /mob/living/carbon and subtypes, notably does not contain brains or simple animals
|
|
GLOBAL_LIST_EMPTY(human_list) //all instances of /mob/living/carbon/human and subtypes
|
|
GLOBAL_LIST_EMPTY(ai_list)
|
|
GLOBAL_LIST_EMPTY(pai_list)
|
|
GLOBAL_LIST_EMPTY(available_ai_shells)
|
|
GLOBAL_LIST_INIT(simple_animals, list(list(),list(),list(),list())) // One for each AI_* status define
|
|
GLOBAL_LIST_EMPTY(spidermobs) //all sentient spider mobs
|
|
GLOBAL_LIST_EMPTY(bots_list)
|
|
GLOBAL_LIST_EMPTY(aiEyes)
|
|
GLOBAL_LIST_EMPTY(suit_sensors_list) //all people with suit sensors on
|
|
|
|
/// All alive mobs with clients.
|
|
GLOBAL_LIST_EMPTY(alive_player_list)
|
|
|
|
/// All dead mobs with clients. Does not include observers.
|
|
GLOBAL_LIST_EMPTY(dead_player_list)
|
|
|
|
/// All alive antags with clients.
|
|
GLOBAL_LIST_EMPTY(current_living_antags)
|
|
|
|
/// All observers with clients that joined as observers.
|
|
GLOBAL_LIST_EMPTY(current_observers_list)
|
|
|
|
///underages who have been reported to security for trying to buy things they shouldn't, so they can't spam
|
|
GLOBAL_LIST_EMPTY(narcd_underages)
|
|
|
|
GLOBAL_LIST_EMPTY(language_datum_instances)
|
|
GLOBAL_LIST_EMPTY(all_languages)
|
|
///List of all languages ("name" = type)
|
|
GLOBAL_LIST_EMPTY(language_types_by_name)
|
|
|
|
GLOBAL_LIST_EMPTY(sentient_disease_instances)
|
|
|
|
GLOBAL_LIST_EMPTY(latejoin_ai_cores)
|
|
|
|
GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup)
|
|
|
|
GLOBAL_LIST_EMPTY(emote_list)
|
|
|
|
GLOBAL_LIST_INIT(construct_radial_images, list(
|
|
CONSTRUCT_JUGGERNAUT = image(icon = 'icons/mob/nonhuman-player/cult.dmi', icon_state = "juggernaut"),
|
|
CONSTRUCT_WRAITH = image(icon = 'icons/mob/nonhuman-player/cult.dmi', icon_state = "wraith"),
|
|
CONSTRUCT_ARTIFICER = image(icon = 'icons/mob/nonhuman-player/cult.dmi', icon_state = "artificer")
|
|
))
|
|
|
|
/proc/update_config_movespeed_type_lookup(update_mobs = TRUE)
|
|
var/list/mob_types = list()
|
|
var/list/entry_value = CONFIG_GET(keyed_list/multiplicative_movespeed)
|
|
for(var/path in entry_value)
|
|
var/value = entry_value[path]
|
|
if(!value)
|
|
continue
|
|
for(var/subpath in typesof(path))
|
|
mob_types[subpath] = value
|
|
GLOB.mob_config_movespeed_type_lookup = mob_types
|
|
if(update_mobs)
|
|
update_mob_config_movespeeds()
|
|
|
|
/proc/update_mob_config_movespeeds()
|
|
for(var/i in GLOB.mob_list)
|
|
var/mob/M = i
|
|
M.update_config_movespeed()
|
|
|
|
/proc/init_emote_list()
|
|
. = list()
|
|
for(var/path in subtypesof(/datum/emote))
|
|
var/datum/emote/E = new path()
|
|
if(E.key)
|
|
if(!.[E.key])
|
|
.[E.key] = list(E)
|
|
else
|
|
.[E.key] += E
|
|
else if(E.message) //Assuming all non-base emotes have this
|
|
stack_trace("Keyless emote: [E.type]")
|
|
|
|
if(E.key_third_person) //This one is optional
|
|
if(!.[E.key_third_person])
|
|
.[E.key_third_person] = list(E)
|
|
else
|
|
.[E.key_third_person] |= E
|
|
|
|
/proc/get_crewmember_minds()
|
|
var/list/minds = list()
|
|
for(var/datum/record/locked/target in GLOB.manifest.locked)
|
|
var/datum/mind/mind = target.mind_ref
|
|
if(mind)
|
|
minds += mind
|
|
return minds
|