* SQL Validation, the first of many
* Initial test of the world loading
* This was prefixed when it shouldnt have been :v
* This also isnt a valid table
* Escape time
* Chmod
* This **should** work
* Oops
* RUST gone bust
* Please work
* Why did I do this twice
* I think I got it
* Fixes AFK SS
* AAAAAAAAAAAAAAAAAAAAAA
* Fixes AI cam runtime
* Cleanup
* *screams*
* Fare fixes
* Removes un-needed stuff
* I hope this works
* chmoooood
* SQL Version Unit Test
* Failure test
* Kinda ironic how I forgot this
* Task failed successfully
* Moves a global var around
* Bump SQL version in travis
* New test: SQL example DBconfig update
* Lets test an invalid version
* TASK FAILED SUCCESSFULLY
* Programmatic maplist generation
* Removes a duplicate check
* Lets try this
* What about this
* hnnng
* Lets just update BYOND
* 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 :) )
By turning it into its own preference. The verb stays in the ghost tab, except it now operates by checking client preferences.
Needs
ALTER TABLE `player` ADD `ghost_anonsay` TINYINT(1) NOT NULL DEFAULT '0' AFTER `lastchangelog`;
to add it to the SQL
- Adds a `donators` table for our patreon supporters.
- Intended to be half-automated, half-manual, in order to correlate
patreon accounts to ckeys. Uses the `active` field so that supporters
don't have to have their ckey associated every time they stop and
restart their donations.
- Current actions:
- Donators at tier 1 or greater get a palm tree next to their name in OOC
(toggleable)
- Donators at tier 1 or greater get +5 loadout points.
- Known issue: Loadout points will not update if the table is
modified during a round where the user has already logged in, due
to preference datum caching. There's not really any good way to fix
this, unfortunately.
Tajara ears are on their head now, fixes a crash bug with tail wagging
with body accessories that are split-rendered, adds secondary
hair/facial hair themes, fixes issues with human/skrell arm/lower body
sprites etc.
- Made use_exp_restrictions_heads_hours text2num'ed in configuration.dm,
rather than on use
- Converted all exp_types to #defines, instead of magic strings
- Moved exp_jobsmap to jobs.dm
- Replaced has_exp_for_job with job.available_in_playtime, which returns
- Changed <BR> -s to <LI>s, for proper HTML lists
- Made update_exp less indented, easier to read
- Fixed potential runtime in admin/topic.dm when calling exp window on a
non-existent mob
- Made job preferences screen tell you how long until you unlock each
locked job, in hours or minutes as appliccable
- Changed SQL storage format because mediumtext does not support default
''
- Converted exptimer() into a roundstart hook proc
Missed body tag
Typo fix