Preferences can now handle a list being passed to them, and will require all items in the list to be true. Singular datums work to preserve legacy behavior.
Audible belching will REQUIRE "Emote Noises" and "Audible Belching" preferences to be enabled.
Figured there'd be a potential shitstorm, and honestly adding the preference was easier than I thought.
This will work if for w/e reason you decide to add farting noises - a simple pref toggle, and bingo.
Etc etc.
<3
Ghosts should be able to hear things once more.
The big bold NEW NEWS notice should remember if one has already seen the news, as the hash was not actually being saved. It's being saved now.
The purpose is to ensure that new preferences that are in neither list get the appropriate enabled/disabled setting without having to utilize the savefile update path.
Also attempts to optimize the acquirement of the preference mob.
For reasons unbeknown to me, the client var is reset when the client logs outs and thus the preference mob cease to be.
Now stores the client key, and acquires the appropriate mob based on that, if possible.
Also removes the sanitation check because the holder isn't set before the preferences are created.
Fixes#12341.
Begins breaking down the large character setup in more manageable modules, allowing for easier additions, edits, and removals.
(cherry picked from commit e116721977)
Conflicts:
code/modules/client/preferences.dm
code/modules/client/preferences_savefile.dm
polaris.dme