* Reduce carp migration devastation (#74608)
## About The Pull Request
I'm not totally satisfied with the amount of random destruction caused
by space carp wandering around, they should certainly be dangerous and
annoying but the random nature of their spawning and pathfinding means
that they would trap themselves in random rooms and then smash all of
the machinery in there.
Because they could attack any dense object they perceived as being in
their way that could result in venting random gas canisters, breaking
terminals, or I even once saw them destroy the supermatter cooling loop
by eating the thermomachines.
While the latter is pretty funny, arbitrary destruction of machines
simply caused because a fish teleported into a room without you knowing
isn't really very engaging and doesn't create very interesting stories.
This ultimately isn't meant to be a heavily destructive event and its
probability to run isn't tuned as if it is.
So, a couple of changes:
I reduced both the range and cooldown of the carp teleporting ability.
This means that AI carp can use it to pathfind past obstacles pretty
reliably and don't spend so much time smashing things, and also reduces
the chances of them getting the drop on you from a location you can't
see.
I also added a short click cooldown to carp travelling through other
carp rifts so people being teleported _to_ have more of an advantage
over people ambushing them (this was already true for the carp creating
the rift).
Additionally I added an optional whitelist to the "attack obstacles to
your pathfinding" AI script, and heavily culled the kind of obstacles
that carp will attack to be ones which are mostly replaceable. They will
still cause a mess and might even vent a room, but they won't smash
vital infrastructure.
Finally I replaced a couple of instances of `get_ranged_target_turf`
with `get_ranged_target_turf_direct` for better precision, and player
carp using the ability can now just click anywhere on the screen and it
will jaunt in that rough direction. With the reduced range, having to
click within its radius was pretty annoying.
With these changes I ran the event 10 times in a row on kilo and then
watched JoJo's bizzarre adventure for 90 minutes and when I came back
the level of destruction seemed pretty reasonable (aside from the big
hole where one of them ran into the supermatter and delaminated it, but
if there were players around that wouldn't happen).
## Why It's Good For The Game
This event was still just a little bit _too_ annoying.
If something destroys important machines it should have happened on
purpose via an event which was supposed to do that, rather than through
chance. Or preferably just be player-driven.
## Changelog
🆑
balance: Carp can't teleport as far, but can do it more frequently.
People who piggyback through their rifts will be blocked from attacking
for a short duration (the same as the normal attack cooldown).
balance: AI controlled carp will now be more selective about which
objects they smash. Player controlled carp (or carp directly instructed
to attack objects by people who have tamed them) can still attack
whatever they like.
/🆑
* Reduce carp migration devastation
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Modifies spectral instruments to make retaliation more viable. (#74599)
## About The Pull Request
Reduces the damage dealt by the spectral trombone, saxophone and trumpet
and adds a message warning of the change they cause
## Why It's Good For The Game
In their current state the spectral instruments transform people into 4
hits, the first two hits dealing enough stam damage that it slows to
point where escape isn't possible.
Since it's also rare most people don't know of it'll transform you into
a skeleton
In order to allow for more viable retaliation against the transformation
into a skeleton this PR reduces the stamina damage dealt and prints a
message for the target that hints them towards the transformation.
## Changelog
:cl:Somepan
add: Added a message upon being hit by any spectral instruments
balance: Reduced the stamina damage dealt by spectral instruments from
25 to 18 making it transform after 6 hits instead of 4
/🆑
* Modifies spectral instruments to make retaliation more viable.
---------
Co-authored-by: Pinkufeck <63017503+Pinkufeck@users.noreply.github.com>
* Componentizes loomability (#74552)
## About The Pull Request
As shrimple as the title might imply, the ability for an item to be
processed in a loom is now a component.
Behavior on looming cotton, durathread, and wool, should all be the
exact same in terms of cost, time, results, etc.
## Why It's Good For The Game
If, for any reason, someone might want to extend the behavior of "this
thing can be loomed" to other items, it can be done.
## Changelog
🆑
code: The ability for objects to be loomed is now a component, with all
of the looming behavior moved off of the structure and into said
component. The actual behavior for looming cotton (clicking on a loom
with cotton) is completely unchanged.
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Componentizes loomability
---------
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* makes cursed katana combos into a generic component (#74543)
## About The Pull Request
what the title says
also the katana's dark cloak move now has some vfx cause i figured why
not
## Why It's Good For The Game
this means anyone can give any weapon combos :D
## Changelog
* makes cursed katana combos into a generic component
---------
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* Fixes Ceiling Generation for Lavaland Icemoon Ruin - Whoops (#74567)
## About The Pull Request
Forgot to do this in #74410. It's **not** the reason why we see active
turfs on icebox station though, because this is just closed turfs. The
active turfs never spawned as a result of this, they only spawn as a
result of the open turfs of the ruin mixing with chasm air. The ceiling
looks a lot better now though.
## Why It's Good For The Game
Should have always been like this.
## Changelog
doesn't really matter.
* Fixes Ceiling Generation for Lavaland Icemoon Ruin - Whoops
---------
Co-authored-by: san7890 <the@san7890.com>
* Reagent soup / Soup rework / Stoves - A kitchen expansion
* fixes that stuff
* puts the range stove on maps that sohuld have it
* fixes some paths that don't exist anymore
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
* Gives fountain ruins unique ids so the lavaland one will spawn (#74419)
## About The Pull Request
Come ON man
## Changelog
🆑
fix: The fountain ruin will now properly spawn on lavaland
/🆑
* Gives fountain ruins unique ids so the lavaland one will spawn
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes the supermatter not dusting you when you fall on top of it from a z-level (#74535)
## About The Pull Request
fixes SM not dusting you if you fall on top of it from a z level
literally nobody tested the code lmao
## Why It's Good For The Game
bug bad
## Changelog
🆑
fix: SM now dusts you if you fall on top of it from another Z level
/🆑
* Fixes the supermatter not dusting you when you fall on top of it from a z-level
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Moves revolution code of out of flash code, fixes April Fool conversion forcesay never working in any cirumstances (#74411)
## About The Pull Request
- Signallizes head revolutionary flash conversion code, moving it out of
core flash code.
- Removes "tacticool" flashing from head revs, but they can still
convert from any direction
- Fixes April Fools "You son of a bitch! I'm in" force say never
working.
- Revs are muted on conversion so they couldn't talk.
- Fixed by only muting revs on non-holidays
- Cultists are unconscious on conversion so they couldn't talk
- Fixed by only unconscious-ing cultists on non-holidays
- Brainwash victims are more often than not unconscious / asleep so they
couldn't talk
- Just left this one.
- Reduced the chance of them occurring and limits it to April Fools only
- A 1% chance of the force says ocurring means they will happen pretty
much once a week, given multiple rev / cult rounds happen every week and
on average like, 20 people are converted. A little absurd, it's good
that it never worked?
## Why It's Good For The Game
Antag code in core item code is bad
It's funny this meme has existed for like 2, 3 years now? No one's
tested it, it's never worked
## Changelog
🆑 Melbert
refactor: Removes Rev code from core flash code
fix: Getting converted on April Fools now triggers the meme force say as
always intended
del: The meme force say can no longer trigger on any day (it didn't work
before anyways)
/🆑
* Moves revolution code of out of flash code, fixes April Fool conversion forcesay never working in any cirumstances
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Electrified tram plate (#74334)
A new addition for the bad luck smite/cursed trait. A chance of getting
an electric shock when crossing the tram rails.
While it adds no additional danger for normal crew, if you have the bad
luck smite or cursed trait you may be in for a shocking surprise!
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
* timestop the SM (#74302)
## About The Pull Request
Allows the timestop effects to freeze the Supermatter processing so that
engineers might be able to save it this time
## Why It's Good For The Game
Both wizards and science nerds are able to stop the SM seconds from
meltdown so that engies can figure out what's the right pipe to place to
prevent a destruction of property.
## Changelog
🆑
add: Timestop blocks the SM from processing (can't be healed, doesn't
output gases but can still take damage)
/🆑
* timestop the SM
---------
Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
* Adds tele access to the QM (#74480)
## About The Pull Request
https://github.com/tgstation/tgstation/pull/54560 gave all command staff
access to the Teleporter room on lowpop, however this was forgotten
about for the QM when they were turned into a head of staff.
I also removed a QM-access check for budget examining since the QM now
has Command access instead.
## Why It's Good For The Game
Better consistency with what access to expect when playing as Command.
It also was bugging me a little bit.
## Changelog
🆑
fix: QM's now get teleporter access on lowpop, like every other Command
does.
/🆑
* Adds tele access to the QM
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Removes all but the barebones timers for runechat (#74428)
## About The Pull Request
Instead of using timers to trigger the fadeout, we use animate()
We start by queuing up all our alpha fades, then if we are shortened, we
calculate the alpha we should be at, set our alpha to that, then animate
from there to 0
This requires ANIMATION_PARALLEL on the pixel offsets to ensure they
don't reset the alpha animation, and it does mean that a second alpha
animate could reset the pixels, but that's a chance I'm willing to take.
The timer work here was almost all of the cost, this should reduce the
overhead of this proc signficantly, making runechat more fit for use
under high stress.
I have got it to end slightly early, but it's very minor and I've only
seen it once, so yaknow, good enough.
## Why It's Good For The Game
Speeeed
## Changelog
🆑
refactor: runechat should be a lot cheaper on the server. I've changed
how it functions, if it behaves weird yell at me please don't just
ignore it
/🆑
* Removes all but the barebones timers for runechat
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Removes dead clotting once more (#74412)
## About The Pull Request
It's very likely that wound clotting while dead was in fact broken all
the way until #66037 was merged.
Why do I think that? Well, if you've played medical for a long time, you
may have noticed that you haven't seen a single dead body with slash
wounds on it within the last, well, almost a year now. Why? Because
#66037 updated the dead clotting code to use the proper proc, very
likely fixing it in the process.
Turns out, dead clotting isn't actually that fun. I personally enjoyed
fixing people's wounds back when they didn't magically disappear while
you're dead. It's also a snowflake since it only applies to slash wounds
and nothing else.
## Why It's Good For The Game
Removing some snowflake code that's explained nowhere is pretty good.
It also happens to be unrealistic, not to mention the fact it removes
from the fun of playing medical.
## Changelog
🆑
balance: Slash wounds no longer clot while dead.
/🆑
* Removes dead clotting once more
* Update slash.dm
---------
Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Updates paper biscuits and the paper cutter (#74473)
## About The Pull Request
Well this started as a PR updating some of the spelling and grammar on
the biscuits... though spilled out a little into other aspects of the
relevant code.
There are a few things I've done here.
**Paper biscuits:**
- Updated spelling and grammar for paper biscuits. Confidental ->
confidential, that sort of thing.
- A little reorganisation and cleanup of the code itself.
- Preset slips are now generated on init on the parent from a var,
rather than each having its own init proc.
- Early returns, clearer vars, etc
**Paper Cutters**
Ended up doing more here, even though it wasn't the original reason I
started looking at this code.
- Added one (1) paper cutter blade to the paper cutters cargo crate.
Raised the price a little. This is just a reskinned hatchet, so I don't
think it's much of a balance concern.
- Clarifies and docs vars
- Cleans up refs on destroy
- Many `to_chat`s to `balloon_alert`s
- Removed single-letter vars
- Cancelled attack chains when trying to actually use the cutter. You
now pick it up either by having the blade secured and no paper inside,
or by dragging it into your hand.
## Changelog
🆑
spellcheck: Paper biscuits now have more proper spelling and grammar
qol: You now get one spare paper cutter blade in the paper cutter cargo
crate.
tweak: You now use right click to cut paper with a paper cutter
fix: You can now remove paper from a paper cutter if you change your
mind.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* Updates paper biscuits and the paper cutter
---------
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
* Cleans up marisa shoes GAGS (#74451)
## About The Pull Request
The marisa shoes were building their icon using greyscale config for
their normal icons, but the worn ones were for some reason using a
`worn_icon_state` "marisa" that had its own full sprite.
I removed the sprite and added an overlay instead for the one part of
the shoes that differs from base sneakers.
Cleaned up the weirdness, now it uses the sneakers base config to build
its icon like all the other sneakers.
## Why It's Good For The Game
Clearer code, less weirdness. Icons created using GAGS are consistent
now.
<details>
<summary>The default colors on a mob still look exactly the same as the
old icon, removing the need for it</summary>

</details>
<details>
<summary>Now worn icons get set up correctly, where the yellow bit is
uncolored</summary>

</details>
## Changelog
🆑
fix: marisa shoes will now build its worn icon using the greyscale
config like sneakers do
/🆑
* Cleans up marisa shoes GAGS
---------
Co-authored-by: Bloop <vinylspiders@gmail.com>
* Chasm Hell On Icebox - 300 Active Turfs on Prod Moment (#74410)
## About The Pull Request
Spontaneous regressions introduced by #74359
(1e58c1875d).
```txt
- Z-Level 2 has 150 active turf(s).
- Z-Level 3 has 150 active turf(s).
- Z-Level trait Ice Ruins Underground has 300 active turf(s).
- Z-Level trait Mining has 300 active turf(s).
- Z-Level trait Station has 300 active turf(s).
- End of active turf list.
```

Basically the lavaland ruin sucks dogshit and I had to do a lot of stuff to account for everything failing. There was even a moment where we were adding something to `flags_1` instead of `turf_flags` and that was also really bad to figure out.

i also had to add orange genturfs because it was really getting bad with all of the assertions we had to keep making, especially since stuff like this could also show up:

That's the prison in the red box, those are active turfs because a chasm scraped it away.
Sorry if this is hard to follow but I promise you everything in this is essential. I wish we didn't have to rely on turf flags as much as we do but this is a fix PR, not a refactor.
## Why It's Good For The Game
Even one active turf on IceBox ate up _three_ seconds of SSair's initialization every single time it was really fucking bad.
We haven't had to deal with chasms for about two years so there's a lot of mapping assertions we made since they just weren't a thing, but now they're back so lets do it properly.
## Changelog
🆑
fix: The prison on IceBox should no longer leak air as often.
/🆑
I have compiled this map about 30 times until active turfs stopped fucking happening and now I am content. This likely doesn't fix _everything_ because some stuff can still be hidden to me, and we still have PRs that need to be merged to reduce the amount of noise we're getting on prod.
* Chasm Hell On Icebox - 300 Active Turfs on Prod Moment
---------
Co-authored-by: san7890 <the@san7890.com>
* "Biscuit" cards, and also now slip papers are actually paper! (#74329)
## About The Pull Request
**This is not a literal biscuit which you eat. "Biscuit" is just a
nickname of this kind of snap-cards.**
Slip paper is now actually paper, before that, it was just literally
nothing, an object which does nothing. Because of that, the paper cutter
was useless as well, as it turned normal paper into useless paper slips.
Because of this now paper cutters are placed at:
- Bridge
- HoP office
- Warden office
- Cargo
Also adds biscuit cards. If you have no idea what it is, it's a kind of
card placed around a piece of paper usually to conceal some document and
it can be opened by cracking it with a crunchy sound (that's why it's
named a biscuit). Those are usually only opened in certain situations or
emergencies (The most famous example is the US president's nuclear
biscuit, which contains nuclear codes)
There are 2 biscuits: Normal and Confidential.
Normal is a plain biscuit with nothing really special, can be coloured
if you want as it's white.

The confidential biscuit is blue and has "NT" on it.

There is a not-sealed biscuit you can print in autolathe, it starts open
so you can put paper in and seal later making it a normal crackable one.
Now spare ID safe code automatically spawns in a confidential biscuit in
a new paper slip subtype - corporate slip paper. It's a plastic card
which is sturdier than the normal paper clip.

You can also create the corporate paper slip paper using - normal paper
slip, plastic, and captain rubber stamp (making this paper having a rare
status)


## Why It's Good For The Game
Paper slips being not paper is stupid and has no point in being that
way. This also made the paper cutter useless; hence, it was never placed
on any map (and never used).
This PR makes it paper, so it's usable when crew members need a paper
slip instead of a full-size sheet.
Placing paper cutters around the station makes it so the crew can
produce paper slips when they need them, this also gives it finally a
use and place on the station.
The 'biscuits' are cool and give more flavour to the spare ID safe
codes, as well as to other documents people might put in future PRs.
This also makes those paranoid captains which are scared of their spare
ID safe code being stolen and read can sleep tight, as now if someone
opens it up it's really obvious. Now also you can really make sure if
that head is lying about "not touching the spare ID", _but not as anyone
cares really._
**Okay, it's draft for now just so I can add some new things, and fix
the dupe bug:**
- [x] Being able to fax the paper biscuits
- [x] Make it impossible to cut paper slips into paper slips
- [x] Make corporate paper slips craftable or printable
- [x] Make confidential biscuits craftable or printable
- [x] Make paper cutters orderable at the cargo
_CRUNCH_
## Changelog
🆑 DrDiasyl aka DrTuxedo#0931
add: Added 'biscuit' cards! They can contain documents and can only be
accessed by cracking them open, you can't close them back. Nanotrasen
now stores spare ID safe codes in them.
add: Placed paper cutters around the station. They're in Bridge, HoP
office, Warden office, and Cargo.
add: Now you can order paper cutters at cargo.
fix: Now the paper slip is actually paper.
imageadd: The paper slips sprite was slightly tweaked to have text lay
more logically, added the corporate paper slip.
/🆑
---------
Co-authored-by: san7890 <the@ san7890.com>
* "Biscuit" cards, and also now slip papers are actually paper!
---------
Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Adds pillow bonus for sleeping. (#74349)
## About The Pull Request
There is bedsheet bonus, but no pillow bonus.
## Why It's Good For The Game
Healthy sleep.
## Changelog
🆑
add: Sleeping with a pillow restores more health.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Adds pillow bonus for sleeping.
---------
Co-authored-by: Helg2 <93882977+Helg2@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Properly accounts for byond tick fuckery in runechat code (#74388)
## About The Pull Request
Ok so like, the agreed upon assumption for "verb like code" (stuff that
triggers when a client sents a network packet to the server), is it runs
in verb time, that sliver of time between maptick and the start of the
next tick.
We thought MeasureText worked like this. It doesn't.
It will, occasionally, resume not during verb time but as a sleeping
proc, at the start of the next tick.
Before the MC has started working.
This appears to only happen when the tick is already overloaded.
Unfortunately, it doesn't invoke after all sleeping procs as we were
lead to believe, but just like, like any sleeping proc.
This means it fights with the mc for cpu time, and doesn't respect the
TICK_CHECK macro we use to ensure this situation doesn't happen.
SOOO lets use a var off the MC instead, tracking when it last fired.
We can use this in companion with TICK_CHECK to ensure verbs schedule
properly if they invoke before the MC runs.
Hopefully this should fix 0 cpu when running at highpop
Thanks to Kylerace and MrStonedOne for suffering together with me on
this, I hate this engine.
* Properly accounts for byond tick fuckery in runechat code
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Removes & Adds some chemicals from the disease cure list (#74343)
## About The Pull Request
Removes Anacea from the list of potential disease cures because it's a
chemical purger, making them nearly impossible to cure from Sentient
Disease.
Removes Spaceacillin because it's easily achievable from the Chem
vendors and is the way to prevent infections, so it's unfair to also
make it a cure.
Moves Haloperidol to a low-level chem, so it won't roll with Sentient
Disease.
I didn't remove Multiver because it's at a low level, so Sentient
Diseases can't roll it.
In exchange, I added some other reagents to replace them:
- Acetone - Low level chem on the same level as Bromine/Lithium
- Miners Salve - Prevents people from telling their own health
- Acetaldehyde - Requires Formal, therefore Silver, making a cure
reliant on Paramedics/Miners
- Pentaerythritol - Same as above, but requires more of it and Lye, this
is ranked higher
- Tirimol - This replaces Anacea because it can put you to sleep,
delaying the person from making Vaccines
- Chloral Hydrate - This replaces the spot Haloperidol was in (as it was
moved to a low-level chem). This is pretty much Tirimol but much easier
to make and being more obvious/counter-able.
I also moved Haloperidol one level lower so I can put diphenhydramine in
level 10 instead, and moved Oil down because it's incredibly easy and
the drawbacks are "a little bit of toxin damage".
## Why It's Good For The Game
There is a massive difference between chemicals having side effects so
risking yourself or other people to make a cure, and one cure literally
purging the other.
This closes https://github.com/tgstation/tgstation/issues/74220 - I took
this approach to it so it's not a complete nerf to Sentient Diseases.
Cures relying on things not in the chem dispenser, or putting you to
sleep, is much more interesting and reliant on player
ability/cooperation, than just a disease that can't be cured because of
pure RNG luck.
## Changelog
🆑
balance: Sentient Diseases (and diseases in general) can no longer roll
Anacea, Haloperidol & Spaceacillin as their cure, however they've been
replaced with chemicals that are either harder to make, or have larger
drawbacks (such as putting you to sleep).
/🆑
* Removes & Adds some chemicals from the disease cure list
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Adds the Dark Matt-eor when you emag a stupid amount of meteor shields + lots of meteor file sorting + qol + dark matter singularity + dark matt-eor summoning final traitor objective
* singularity
* Update singularity_s1.dmi
---------
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
Co-authored-by: lessthnthree <three@lessthanthree.dk>
* Fixes arrivals shuttle runtime (#74296)
## About The Pull Request
Fixes#74172
Some signals were added to this component late in development and
weren't unregistered when the component was removed, now they are.
## Why It's Good For The Game
This runtime was annoying me.
## Changelog
Not player facing.
* Fixes arrivals shuttle runtime
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Minor typo fixes (#74317)
## About The Why It's Good For The Game Pull Request
Immersion
## Changelog
🆑 Tattle
spellcheck: fixed a few typos, mostly around breathing
/🆑
Co-authored-by: tattle <article.disaster@ gmail.com>
* Minor typo fixes
---------
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
* Fix Respawn Character Admin Verb (#74295)
## About The Pull Request
while testing #74293 i tried to use this verb and it didnt work because
some stuff wasnt parsing in correctly so i fixed it
## Why It's Good For The Game
we want all of the admin tools to work
## Changelog
🆑
fix: admin respawn character verb works properly
/🆑
* Fix Respawn Character Admin Verb
---------
Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
* Adds preference for "Tagger" paint color. (#74281)
## About The Pull Request
Per the title, this PR allows you to pick your starting paint color from
the "Tagger" quirk on the character preferences menu.

This replaces the starting color being random; it does not prevent you
from changing the color later as normal.
## Why It's Good For The Game
It's a minor quality of life change. This will mostly be helpful to
players who have some "signature" color they like to use, to prevent
having to manually select it (and possibly input a color code) every
round. It will be of less relevance to those who tend to select new
colors every round anyway.
Possible downsides are mainly adding another pref to the menu, although
this shouldn't be too much of an annoyance since it only appears if you
already have the relevant quirk. It does also remove the _ability_ to
have a randomly-chosen paint color, though I'm not sure if that matters.
## Changelog
🆑
qol: you can choose your default paint color for the "Tagger" quirk from
prefs.
/🆑
* Adds preference for "Tagger" paint color.
---------
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>