* Reduces maximum name length
* Revert "Reduces maximum name length"
This reverts commit 7d0fe75c54.
* why were these in _compile_options.dm
* SQL Stuff
* Lets get this show on the road
* Now were talking
* These matter
* Oh the joys of CI testing
* And this
* Wrong version
* Tweaks
* More tweaks
* Lets document this
* This too
* Upgrades this
* Fixed some sanity issues
* This too
* Screw it, this too
* More sanity
* And these
* This too
* Documentation
* This too
* Fixes **awful** scoreboard logic
* Why do we care about only half-absorbing someone
* Revert "Why do we care about only half-absorbing someone"
This reverts commit 8de1cfdf05.
* Refactors these
* Hashing
* Moxian tweaks
* Initial Commit - Async SQL
* First batch of queries
* More progress
* Nukes DB Polls
* More work
* oops
* One push
* Notes work now
* Ok these work
* Watchlist done
* Async Bans!
* Async Permissions
* Async client procs
* I officially hate preference datums
* Also these
* Async Custom Items
* Async Karma
* Async Library
* Async TOS
* Cleans out the old SQL code
* CI Sanity
* Apparently MySQL doesnt support this
* What about this
* Maybe this
* Review pass 1
* This too
* Fixes job ban loading
* Fix undeleted queries
* Prevents sensitive queries being logged
* Documentation + tweaks
* Adds a verb to force reconnect the DB
* More review tweaks
* Farie tweaks
* Fixes this
* Changelog Overhaul
* SQL Update
* This is why I hate merge conflicts
* Comment Correction
* Farie Fixes + Tested with blank DB
* Colours + Titles
* Colour tweaks
* I fell victim to my own CI Chains!
* Cleans up the remains of the old changelogs
* Fixes formatting
* Kyet Changes
* Date
Replaces the old RGB columns with hexcolour columns.
The required SQL query to change the current database is this:
ALTER TABLE `characters`
ADD `hair_colour` varchar(7) NOT NULL AFTER `language`,
ADD `secondary_hair_colour` varchar(7) NOT NULL AFTER `hair_blue`,
ADD `facial_hair_colour` varchar(7) NOT NULL AFTER `secondary_hair_blue`,
ADD `secondary_facial_hair_colour` varchar(7) NOT NULL AFTER `facial_blue`,
ADD `skin_colour` varchar(7) NOT NULL AFTER `skin_tone`,
ADD `head_accessory_colour` varchar(7) NOT NULL AFTER `marking_colours`,
ADD `eye_colour` varchar(7) NOT NULL AFTER `alt_head_name`;
UPDATE `characters`
SET `hair_colour` = CONCAT("#", LPAD(HEX(`hair_red`), 2,'0'), LPAD(HEX(`hair_green`), 2,'0'), LPAD(HEX(`hair_blue`), 2,'0')),
`secondary_hair_colour` = CONCAT("#", LPAD(HEX(`secondary_hair_red`), 2,'0'), LPAD(HEX(`secondary_hair_green`), 2,'0'), LPAD(HEX(`secondary_hair_blue`), 2,'0')),
`facial_hair_colour` = CONCAT("#", LPAD(HEX(`facial_red`), 2,'0'), LPAD(HEX(`facial_green`), 2,'0'), LPAD(HEX(`facial_blue`), 2,'0')),
`secondary_facial_hair_colour` = CONCAT("#", LPAD(HEX(`secondary_facial_red`), 2,'0'), LPAD(HEX(`secondary_facial_green`), 2,'0'), LPAD(HEX(`secondary_facial_blue`), 2,'0')),
`skin_colour` = CONCAT("#", LPAD(HEX(`skin_red`), 2,'0'), LPAD(HEX(`skin_green`), 2,'0'), LPAD(HEX(`skin_blue`), 2,'0')),
`head_accessory_colour` = CONCAT("#", LPAD(HEX(`head_accessory_red`), 2,'0'), LPAD(HEX(`head_accessory_green`), 2,'0'), LPAD(HEX(`head_accessory_blue`), 2,'0')),
`eye_colour` = CONCAT("#", LPAD(HEX(`eyes_red`), 2,'0'), LPAD(HEX(`eyes_green`), 2,'0'), LPAD(HEX(`eyes_blue`), 2,'0'));
ALTER TABLE `characters`
DROP `hair_red`, DROP `hair_green`, DROP `hair_blue`,
DROP `secondary_hair_red`, DROP `secondary_hair_green`, DROP `secondary_hair_blue`,
DROP `facial_red`, DROP `facial_green`, DROP `facial_blue`,
DROP `secondary_facial_red`, DROP `secondary_facial_green`, DROP `secondary_facial_blue`,
DROP `skin_red`, DROP `skin_green`, DROP `skin_blue`,
DROP `head_accessory_red`, DROP `head_accessory_green`, DROP `head_accessory_blue`,
DROP `eyes_red`, DROP `eyes_green`, DROP `eyes_blue`;
The above does the following:
- Adds the new hex colour columns (7 char, 1 for the # and 6 for the number characters)
- Fills the columns with the appropriate hexcolour values calculated by converting the appropriate database RGB entries and concatenating them
(yes this actually works 100%, tested on local DB with 20 characters all with varying species/designs)
- Drops the old columns afterward
Required SQL Change:
ALTER TABLE `characters` ADD `autohiss` TINYINT(1) NOT NULL AFTER `gear`;
Ingame changing of auto-accent level is no different.
This peference can be different on each of your characters.
Players:
- The only thing that you should notice is that your backpack options
have changed. Instead of being "None", "Backpack", "Satchel", and
"Satchel Alt", there are 6 options:
- "Grey Backpack": Ensures you always recieve a plain grey backpack.
- "Grey Satchel": Same as the above, grey, plain, satchel.
- "Grey Dufflebag": So you don't have to rush the locker room, I
guess. Just kinda ransacked it from /tg/. Happy to revert it, please
do not post a five paragraph text wall calling me a shitlord
powergaming hitler-loving furry.
- "Leather Satchel": It's a leather satchel. What the hell did you
think it was?
- "Department Backpack": Gives you the department's default backpack.
Grey for most jobs.
- "Department Satchel": It gives you the department's default
satchel; A grey satchel if the department doesn't have one.
Coders:
- The above means this needs a minor SQL change:
```
SQL goes here
I'll write a query later
Can't be bothered now
Kill me please
```
- This is a cleaner method of handling job equipment than
"M.equip_or_collect" x 1000. Jobs specify a '/datum/outfit' datum,
which defines all of the things to equip to the user.
- Minor note: equip_or_collect will no longer ever generate a plastic
bag. It will instead just drop stuff on the floor if it can't stuff it
into a mob. If this is even slightly a point of contention, more than
happy to revert it; It was just requested by Fox.
- Addendum: This also has the effect of making it so that labcoats
are just thrown onto the floor if you have a loadout suit. It's not
really avoidable. Uniforms and suits are equipped before the
backpack.
- Changes from /tg/:
- Changed all of the "H.equip_to_slot_or_del" calls into invoking a
new "equip_item" proc; This is used to support a new variable called
"collect_not_del". Job outfits use this, it makes it so that the
system calls equip_or_collect instead of equip_to_slot_or_del. The
idea being that job items should never be lost to the void,
especially because they can conflict with loadout items.
TODO:
- Retrofit "Equip Mob" verb to use this for all of the non-job options
- Fully implement head announcements(?)
- May be best for a second PR that addresses all of the real issues
with our current job system
( Now go reread that SQL code block :) )