## About The Pull Request
This PR does the following:
- Defines a new proc in __HELPERS/_lists.dm called
`pick_weight_recursive()`. This is the code from
`/obj/effect/spawner/random/` that allows for nested weighted lists,
moved to its own proc.
- Replaces explicit code in spawners/random.dm with calls to
`pick_weight_recursive()` where appropriate
- Deletes the redundant (and barely used) proc
`/obj/item/loot_table_maker/proc/pick_loot`, as this was equivalent to
`pick_weight_recursive()`
- Moves the global proc `fill_with_ones()` from spawners/random.dm to
__HELPERS/_lists.dm
- Replaces `pick()` in language syllable selection with
`pick_weight_recursive()`, allowing languages to define syllable weights
or use nested lists of syllables.
- Reformats Galactic Common to use nested lists of syllables, allowing
English and Chinese syllables to occur at equal frequency despite having
different numbers of each.
## Why It's Good For The Game
Allowing languages to define syllable weights and nested groups of
syllables is a relatively small change that greatly expands what you can
do with them. In addition to making Galactic Common look nicer in code,
this change also allows for the easy creation of languages with highly
uneven syllable distributions (including ultra-rare secret syllables,
perhaps) or the quick creation of pidgin languages that combine multiple
syllable sets.
Using a new proc simplifies spawner code by reducing repetition. Making
it global allows for other code to easily implement the same flexible
and elegant system of nested lists that spawners already use.
## Changelog
🆑
refactor: defines a new global proc, pick_weight_recursive()
code: languages can weight syllables, and galactic common's definition
is easier to look at
/🆑
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Initial burst of languages
* Scratchings of beginnings
* Code review I
* Compilation!
* You can now understand your own speech
* Fixes whispering
* Gets typecaches working again
* Remie's `PASS`ing
* Back to pass() to stop the compiler whining
* Why can't drones check their languages
* Everyone speaks how they should
* Removes world string debug stuff
* Currently failing to massage radio code into working
* The radio transmits the languages!
* ,0 to talk common
* Replaces speech wheel with language menu
* Observers can speak all languages
* pAIs now speak languages FOREVER
* New action button for language menu
* pAIs have an action button to open their language menu
* AIs can talk and all that
* AIs have a language menu button
* Fixes supermatter making strange noises
* Fixes AI holopads
* Fixes request consoles
* Fixes bots making strange sounds
* Meaningless MMI change
* Some caching of datums
* Brains in MMIs speak common
* Ratvarian AIs can only speak Ratvarian
* Tables can speak common, apparently
* Removes var in args
* Fixes the (AI Eye) problem
Thanks to Shadowmobile for their help with this one.
* Fixes tape recorders
* Fixes humans being able to speak in languages they did not know
* Adds some new posibrain names
Honk.
* The voice analyzer replies in the language you spoke to it
* Gives swarmers only swarmer language
* `initial_languages` var.
* OMNITONGUE, clockwork restrictions
* Fixes barmaid and bardrone language abilities
* Code review I
* Omnitongue correction
* Code review II
* Removes force_compose var