* Character Setup Rework
Little tweaks
Species selection done~
Merk randomize body button
Body color and eye color
Merk more replaced code
Convert robolimbs to tgui
Add a warning if flavor text/ooc notes are too short
Custom preview icons for species selector!
A sidequest that only took 8
hours. Also add digitigrade and blood type.
Remove unused body_descriptor system completely
Finish the general tab~
Reorganization to prepare for loadout page creation
* Start of work on the loadout screen
* Only send the data that's actually selected
* Get rid of these ugly ../../../..
* Retype this to avoid conflicts
* Holy shit why did this work this way
* Finish loadout screen
* Add copy loadout function
* Finish occupation page
* Move Special Roles into general tab
* Fix path conflict
* Move size prefs to general tab
* Convert jukebox and volume settings to datum/preference
* Fix a little mergery fuckery in loadout
* Migrate jukebox to new range
* Fix TabbedMenu tabs
* Fix wordwrap for loadout screen
* Kill the vore tab, just traits left to convert
* Convert custom messages
* Convert custom species name
* Convert blood color and reagents
* Move icobase to tgui
* Finished
* This can fuck off too
* Fix a few bugs
* Update index.tsx
* initial for emote sound mode switch
* Make show_roles actually work, hide fluff items
* Fix not being able to select species
* Add emote_sound_mode to body tab
* Fix runtime when no active gear list is present
* Add a save notification to character setup
* Switch to floating
* Add more search bars
* Whoops forgot to add this
---------
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
* Add a lint to check for hrefs that don't start with byond://
* Regex convert href links
* Regex convert _src_ as well
* Clean up the last few
* Missed a few
- Instead of using expensive getFlatIcon() calls, character previews are now shown using screen objects in a second map window.
- Edited skin to add a named window for preferences setup that contains a browser plus a new map window to show the previews.
- Mannequins are still generated the same way, but now a MA is applied to four screen objects which are shown in the second map window.
- The screen objects are deleted on close of the preferences window. So we do make sure to close it when spawning.
So you can customize your character with tattoos or fur colors for Taj or whatever. I'll let Anewbe work out what he wants to whitelist other than what I did already.
The icons are sliced up with the HumanScissors program I wrote, so they are per-organ. So, lop off a limb, put it on someone else, they have the tattoos and whatnot. It's part of DNA so it comes with when cloning.
They are defined in the normal sprite_accessories file and the icons are all in markings.dm in the format of "markingname-organtag" so if you have a marking that spans both arms and torso you need "thatone-torso", "thatone-l_arm", "thatone-r_arm" icon states.
So you can customize your character with tattoos or fur colors for Taj or whatever. I'll let Anewbe work out what he wants to whitelist other than what I did already.
The icons are sliced up with the HumanScissors program I wrote, so they are per-organ. So, lop off a limb, put it on someone else, they have the tattoos and whatnot. It's part of DNA so it comes with when cloning.
They are defined in the normal sprite_accessories file and the icons are all in markings.dm in the format of "markingname-organtag" so if you have a marking that spans both arms and torso you need "thatone-torso", "thatone-l_arm", "thatone-r_arm" icon states.
Cyborgs have their minimum be equal to their species' minimum, and maximum be their species maximum plus twenty years.
Posibrains have a minimum of 1, and a maximum of 220, as discussed by EmperorJon.
Digital brains (drones) have a minimum of 1 and maximum of 150, as discussed by Spookerton.
* The /datum/category_item/player_setup_item datums did a good job of organizing the code for loading/saving/editing preferences data, but all of the code that applies preferences to newly created player mobs was still in a single function.
* This change adds a new proc to player_setup_item datums: copy_to_mob() which is called from the traditional copy_to() proc, allowing each preferences datum to apply its own character data to the mob.
* This allowes new preferences to easily compartmentalize their new code.
* I also moved all the code for existing preferences from copy_to() into the copy_to_mob() on their respective preferences datums.
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.
Adds client verb to access the character setup screen from anywhere.
Moves name validation to species level, making it possible for IPCs to have numbers in their name.
Adds gender validation, also adds support to add neuter/plural genders in the future if ever desired.
Now sanitizes preferences before applying them to a mob.
Fixes#11433.
(cherry picked from commit e40246e9df)
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