## About The Pull Request
Rewrote the planemaster debugger to be more legible and useful. Planes
are now clustered based on their dependants, all buttons have been moved
to the header, connections are highlighted when hovering over nodes and
you can see filter type and blend mode when clicking the node (deleting
a connection is done through a button in the tooltip)

## Why It's Good For The Game
Old planemaster debugger is horrifically jank to use, has broken visual
offsets for all nodes, connections and buttons, and is in a single
thousand line long file.
## Changelog
🆑
refactor: Refactored the planemaster debugger tool
/🆑
## About The Pull Request
https://github.com/user-attachments/assets/1b129bac-459f-47ed-b88f-fa0d295aa690
Xenobio no longer has slimes "warping around", but rather all mobs will
be suctioned up and out of a tube system.
This is functionally identical; the visual aspect is PURELY visual and
as such you can deposit a slime that's still visually being suctioned,
which is intentional for the sake of an easier user experience.
Additionally, slime consoles have a little HUD on the side now that
displays the amount of monkeys & the amount of currently stored slimes
inside of it. Nice for if you don't want to have to guess your current
monkey count.
Slime processors suction a maximum amount of slimes depending on their
matter bin level. This means that at a tier 1 bin it'll be the same as
current, but with a tier 4 you can suck up 4 slimes at a time per
processing tick. Doesn't really do any functionally different stuff
besides lowering the time you need to wait before you can start the
processor.
Monkey Recyclers have purple stripes to visually distinguish them from
meat grinders.
## Why It's Good For The Game
I want a funny claw-machine-esque contraption for xenobio.
## Changelog
🆑 Wallem
add: Xenobio consoles now work off a tube system instead of sudden
teleportation
qol: Xenobio consoles have a new HUD to show monkey/slime amounts, and
slime processors can now suck up more than 1 slime at a time depending
on their matter bin
image: Added some stripes to the monkey recycler to make it a little
more obvious it's not a meat grinder
/🆑
## About The Pull Request
This PR:
- Converts all of the blood types into their own datums, which can be
set up to have their own colors, descriptions, and other fun unique
properties. For example, the clown blood that is constantly randomizing
itself.
- Converts all the blood decals into greyscale, which in turn eliminates
the need for separate xeno sprites. They both use the same ones now.
- Audit of blood splatters/gibs/bodyparts/organs to make sure that they
are getting the correct forensic data applied to them.
- For the admins: Adds a clown blood smite.
My primary goal with was to make the appearance of the new sprites look
almost indistinguishable to the original ones.
I consider this a "first pass", as in there are still some further
refactors I would like to do on the backend side, but am satisfied with
it enough to push it forward as a first step towards a better blood
system! I didn't want to do too much at once because of A) fatigue and
B) easier to test things to make sure I'm not breaking something
important this way.
This has been test-merged on Nova for over a week now and has been going
great, so I finally got around to upstreaming the bones to TG. Although
I did test it a bit you may want to TM it just in case I missed some
things when copying it over.
## About The Pull Request
People can now pet held mothroaches and pugs if they want to, or use
items on them, hopefully without causing many issues. After all, it only
took about a couple dozen lines of code to make...
...Oh, did the 527 files changed or the 850~ lines added/removed perhaps
catch your eye? Made you wonder if I accidentally pushed the wrong
branch? or skewed something up big time? Well, nuh uh. I just happen to
be fed up with the melee attack chain still using stringized params
instead of an array/list. It was frankly revolting to see how I'd have
had to otherwise call `list2params` for what I'm trying to accomplish
here, and make this PR another tessera to the immense stupidity of our
attack chain procs calling `params2list` over and over and over instead
of just using that one call instance from `ClickOn` as an argument. It's
2025, honey, wake up!
I also tried to replace some of those single letter vars/args but there
are just way too many of them.
## Why It's Good For The Game
Improving old code. And I want to be able to pet mobroaches while
holding them too.
## Changelog
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
## About The Pull Request
Once the round starts, the TV's text shows the current map, how much
time it is in-game, how many players are connected, and what the
overflow job is (if the station trait is on). video as demonstration but
the overflow text has changed to "[job] overflow" instead of "Overflow
job: [job]"
https://github.com/user-attachments/assets/fe74b28b-06de-4827-9c4d-ca2e51f1e0b9
Closes https://github.com/tgstation/tgstation/issues/90651
## Why It's Good For The Game
Gives useful info on the TV instead of having it just magically
disappear (which currently doesn't work cause I forgot to deactivate it
on initialize for latejoiners) which will become more useful if the stat
panel is removed. Also makes overflow job more obvious, the TV is just a
good place to put info useful for new players though round time
personally was just put there to make the TV feel more full.
Wanted to put this in the original PR but wanted to try to match parity
to the stat panel in case this wasn't wanted.
## Changelog
🆑
qol: The TV on the title screen has round info once the round has
started or ended.
fix: The TV now fits on non-widescreen screens.
/🆑
## About The Pull Request
Fixes client crashes when closing windows with byond rendered content.
The issue was reintroduced by
https://github.com/tgstation/tgstation/pull/90460
Closes: https://github.com/tgstation/tgstation/issues/89330
It does work. (sometimes?)
I didn't manage to reproduce the issue locally, but it exists live.
## Why It's Good For The Game
Less bugs
## Changelog
🆑
fix: camera consoles, admin supply pod launcher etc. no longer close
game when they are closed
/🆑
## About The Pull Request
Blob Overminds & Blobbernauts use a HUD that shows them the overmind's
health, which is currently a var called ``blobpwrdisplay`` and exists on
every single HUD in the game. This moves them to the respective mobs,
removing the need to do this.
## Why It's Good For The Game
Modularizes HUDs a bit more and removes a bad special var on base hud
datum. pmo.
## Changelog
Nothing player-facing.
## About The Pull Request
https://github.com/tgstation/tgstation/pull/90588 - but for martial
arts. Currently only 3 martial arts has a combo system, yet every single
hud for every living & human has an invisible martial art hud on them
24/7, "just in case".
The HUD in question

## Why It's Good For The Game
Removes having a HUD on every player 24/7 when in most cases it'll never
be used, and removes an unnecessary var on the base hud datum.
## Changelog
Nothing player-facing.
## About The Pull Request
Replaces the stat panel entries for soulscythes & vampires to show their
blood level, with a HUD instead.
The sprite was taken from Bloodsuckers which they use to also show their
own blood level, which is what gave me the idea.
Also makes soulscythe use the living level ``blood_volume`` instead of
their own snowflake var meant to do the same thing.
Vampire

Soulscythe

## Why It's Good For The Game
Helps move away reliance on the stat panel & makes this information more
obvious to the player. The stat panel in general isn't a good place to
put this stuff as it obfuscates it as a feature for players who either
are on a different tab or simply don't know to look there.
## Changelog
🆑 TheSwain, JohnFulpWillard
qol: Soulscythes and Vampires now have a blood hud on the left side of
their screen rather than a stat panel entry stating how much blood they
have.
/🆑
## About The Pull Request
Removes ``/mob/dead/get_status_tab_items()``, replaces it with a lobby
hud icon showing the same information
TV sprite made by Kryson, scanline and static taken from ``effects.dmi``
which I then blew up to fit the size.
https://github.com/user-attachments/assets/99733ae6-c596-42b1-bcae-d1a8d8f094c3
## Why It's Good For The Game
I want to try to remove as much reliance from the stat panel as possible
so we can hopefully remove it, as it takes up 1/3 of the screen for
nothing.
## Changelog
🆑 Kryson, JohnFulpWillard
qol: Lobby info is now on the title screen rather than being hidden in
the stat panel.
/🆑
## About The Pull Request
Title. If compiled on 515 the game screen will be black
## Why It's Good For The Game
There is no reason for it to exist if connecting from 515 is not allowed
## About The Pull Request
Hunger bar is now dynamic rather than 4 static sprites
Hunger bar now accounts for food you have yet to metabolize, meaning it
updates as you eat
https://github.com/user-attachments/assets/06269da7-f07d-4738-98b2-ca6bde8ba0fe
Other changes:
- Adds a hunger tier between hungry and starving
## Why It's Good For The Game
Overeating happens so often simply because this bar is trash, so let's
give it some love
## Changelog
🆑 Melbert
fix: All humans no longer have a baseline "75" ghost nutrition (which
means you can eat more)
qol: Hunger bar update! It's now dynamic and updates as you eat.
qol: Adds a hunger tier between hungry and starving (for mood)
/🆑
## About The Pull Request
Lummox added these and didnt document them so these are leftclicking rn
## Changelog
🆑
fix: Mouse4 and Mouse5 no longer leftclick
/🆑
Co-authored-by: TiviPlus <572233640+TiviPlus@users.noreply.com>
## About The Pull Request
Because these didn't have PLANE_CRITICAL_DISPLAY they got cut off if you
had multiz culling enabled, which resulted in weather from planes above
getting rendered ontop of your UI.
Also renamed "Multi-Z Detail" to "Multi-Z Depth" and elaborated on what
it does, as "Standard" is a very confusing setting (it actually disables
multi-z culling)
## Why It's Good For The Game
I had no idea what this setting did until like 2 months ago when I dove
into planecube code, I bet none of our players (or even most
maintainers) know what it does.
## Changelog
🆑
fix: Fixed weather from Z levels above rendering over players' UI
qol: Multi-Z Detail setting has been renamed to Multi-Z Depth with an
explanation on what it does. "Standard" setting has been renamed to "No
Culling"
/🆑
## About The Pull Request
516 requires float layered overlays to be using pixel_w and pixel_z
instead of pixel_x and pixel_y respectively, unless we want
visual/layering errors. This makes sense, as w,z are for visual effects
only. Sadly seems we were not entirely consistent in this, and many
things seem to have been using x,y incorrectly.
This hopefully fixes that, and thus also fixes layering issues. Complete
1:1 compatibility not guaranteed.
I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming
inside apply_overlays), and this is still included in the PR to flash
out possible issues in a TM (Plus I will need someone to grep the
runtimes for me after the TM period to make sure nothing was missed).
After this is done I'll remove all these extra checks.
Lints will probably be failing for a bit, got to wait for [this
update](4b77cd487d)
to them to make it into release. Or just unlint the lines, though that's
probably gonna produce code debt
## Why It's Good For The Game
Fixes this massive 516 mess, hopefully.
closes#90281
## Changelog
🆑
refactor: Changed many of our use cases for pixel_x and pixel_y
correctly into pixel_w and pixel_z, fixing layering issues in the
process.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: SmArtKar <master.of.bagets@gmail.com>
## About The Pull Request
This PR should fix the problem of small previews in TGUI once and for
all (I hope).
What was causing it? Because TGUI takes a long time to open, that's why
previews were generated broken (small).
On Byond 515 this problem was not so noticeable as the interfaces opened
faster, but with the release of 516 it became much worse.
Previews were generated inside a window that was not yet open, so the
scale was broken, sometimes the window would open before the preview was
done and sent, usually with small interfaces, or when reopening.
I'm not very good at working with signals, and to tell the truth this is
my second experience with them, so I hope I did it right.
## Why It's Good For The Game
No more small map previews
<details> <summary> Video </summary>
https://github.com/user-attachments/assets/834f3820-cc6a-4f65-90e5-d6bb2a118bcf
</details>
## Changelog
🆑
fix: Fixed small character preview, color matrix preview, mech preview,
and other previews with uses ByondUI map
/🆑
---------
Co-authored-by: Gaxeer <44334376+Gaxeer@users.noreply.github.com>
## About The Pull Request
[cleans up poor namespacing on light debugging
tools](93cc9070d5)
[Implements a pathfinding visualization
tool](ed91f69ac4)
It holds a set of inputs from the client, and uses them to generate and
display paths from source/target. Left click sets the source, right
click sets the target.
Pathmap support too, if no target is set we display the paths from every
turf in the map to the source, if one is set we build a path TO it from
the source.
I had to add COMSIG_MOB_CLICKON to observers to make this work (tho idk
why it didn't exist already), I also removed the everpresent colorblind
datum from admin datums, only needs to exist if they're using it.
[Adds a mutable_appearance helper that dirlocks them, wallening port
which I thought might be useful here, and will likely be useful
elsewhere in
future](87f752e7c3)
[Fixes an infinite loop in pathmaps if we tried to pull a cached path to
an unreachable target, && not ||
4head](10086a655d)
[Fixes JPS not dealing with border objects properly. They violate some
of the assumptions JPS makes, so we need to backfill them with checks.
These basically read as (if the thing that should normally take this
path can't reach this turf, can
we?)](f56cc4dd43)
## Why It's Good For The Game
Maybe deals with #80619?
Adds more robust testing tools for pathfinding, should allow people to
better understand/debug these systems. I added this with the idea of
adding multiz support but I don't have the time for that rn.
JPS will work around thindows better, that's nice.
https://file.house/IrBiR0bGxoKw1jJJoxgMRQ==.mp4
## Changelog
🆑
fix: Fixed our pathfinding logic getting deeply confused by border
objects
admin: Added clientside displayed pathfinding debug tools, give em a go
/🆑
## About The Pull Request
1. Hallucination effects are now tiered
Hallucinations now all have tiers, ranging from common to special.
If you are just hallucinating a teeny bit, you will not experience the
more extreme hallucinations, like bubblegum or your mom.
But if you're hallucinating off your butt, you will be a bit more likely
to experience them.
2. Hallucination rate has been tweaked
Default hallucination cooldown is now 20-80 seconds, up from 10-60
seconds.
However the cooldown will *also* vary depending on just how much you're
hallucinating, going down to 10-40 seconds.
3. RDS is now capped a bit lower (meaning you don't see the higher tiers
like bubblegum).
But I added a preference to uncap it. For the people who actually like
bubblegum visits.
4. If a hallucination fails to trigger, the cooldown will partially
reset. (by 75%)
5. "Fake chat" hallucination will pick more viable subjects.
Fake chat will try to find someone who can actually speak your language,
rather than make a monkey speak mothic or something.
(I may revisit this so if you're super-hallucinating it reverts to old
behavior though.)
6. Adds a hallucination: Fake blood
You hallucinate that you start bleeding, very simple.
7. Adds a hallucination: Fake telepathy
You hallucinate a random telepathic message, similar to fake chat.
8. Adds a hallucination: Eyes in the Dark
A nearby dark turf will have a set of glowing red eyes shine through the
dark. A classic.
9. Adds some new sub-hallucination: PDA ringtone (fake sound), summon
guns/magic (fake item)
Funny prank.
10. Makes mindbreaker a bit more effective at combating RDS.
Pretty much does nothing right now unless you gulp like 50u.
## Why It's Good For The Game
Hallucinations are pretty one note if you experience them for longer
than 10 minutes.
This is due to two fold:
- Many hallucinations are goofy, and not subtle
- Hallucinations trigger very rapidly
You will never fall for a hallucination because in between "You see John
Greytide put the blueprints away", you get your mom yelling at you,
everyone looking like syndies (again), and bubblegum
This pr addresses it by
- Limiting the wacky hallucinations for when you're really off your
gourd
- Reducing the period between triggers
- Adding a few hallucinations
If the wackier hallucinations are reserved for when you're really off
your rocker, this lets the more subtle ones sink in over time, leaves
more room for second guessing
## Changelog
🆑 Melbert
add: Adds 4-5 new hallucinations. Collect them all.
balance: If you are only hallucinating a little bit, the game will
prefer to pick more subtle hallucinations. If you are hallucinating a
ton, it will prefer the more wacky hallucinations.
balance: If you are only hallucinating a little bit, the cooldown
between hallucinations is longer. If you are hallucinating a ton, it
will be shorter.
balance: If a hallucination fails to trigger (such as a deaf person
getting a sound hallucination) the next one will be a lot sooner.
balance: RDS hallucination amount is capped at mid tier hallucinations.
This means bubblegum and co. will be a lot rarer, or will even never
show. HOWEVER, there is now a preference allowing you to uncap your RDS
hallucinations.
balance: Mindbreaker toxin is more effective at suppressing RDS.
balance: Some hallucinations effects have been tweaked up or down
according to the new thresholds. Madness mask as an example.
fix: "Fake Fire" Hallucination works again, and now has a unique message
for if you stop-drop-roll that other people see.
/🆑
## About The Pull Request
Bumps the sleep time from 0.1 seconds to 0.2 seconds on #89933 so it
more consistantly fixes the zoom on your character in the creator.
## Why It's Good For The Game
I know it's a little more ugly with a slight increase in time, but it
will be more consistant since players are needing to close and reopen
their UI still. This is way more intrusive then a brief pause before it
loads.
## Changelog
Not really needed.
## About The Pull Request
So basically there's some byond bug that has made character previews
small and things like cameras offset for the longest time when you open
them.
Basically when ``/atom/movable/screen/proc/set_position`` is called and
it has an ``assigned_map``, sleep, add three to the x and y offset,
sleep, then reset it. Sorry @Mothblocks but your original code to update
the character after a second doesn't seem to work anymore.

## Why It's Good For The Game
This is not good for the game
## Changelog
🆑
fix: Character creator preview being miniature
/🆑
## About The Pull Request
Going through my TODOs, been told that the button seems to not work due
to a lack of feedback when used during init. Pops you a message now.
## Changelog
🆑
admin: Added better feedback to localhost Start Now button
/🆑
## About The Pull Request
Fixes#89458
Adds a config for auto-deadminning admins who ready up before the round
starts, or click join game after.
The deadminning happens as soon as the button is pressed, not when a job
is selected or the round starts. I figure it's better to do it straight
away since both have opportunities for metainfo to be posted in admin
chat. Before there's admins messing with dynamic config / plotting
events etc. and during the round there's basically everything that gets
posted to admin logs.
I've had to add a typecheck to the auto_deadmin proc, since the lobby
menu technically happens on the centcom Z-level, and there's a pref for
ignoring deadminning on centcom Z, so it checks to see if the admin is a
new player mob.
Changed the old config from auto_deadmin_player to auto_deadmin_always
to make it less deceptive.
Was suggested a pref could be added to do this. I can do that if people
want it maybe, but it's not in this PR at the time of posting it.
Is now a pref
<img src="https://i.ibb.co/211sBMYd/Deadmin-Prefs1.png">
<img src="https://i.ibb.co/r20Srbw4/Deadmin-Prefs2.png">
I dunno if the latejoin proccall is in the right spot in the click
sequence thing I can move it if people want.
## Why It's Good For The Game
Admins spawning themselves on station is very important for both
shenanigans and troubleshooting. It's annoying to have to click readmin
every time and I'm too lazy to figure out how to perms escalate my way
into disabling that config every round (Though I have tried).
This PR is marginally more likely to convince Timber to turn that off
than cussing him out in adminbus.
## Changelog
🆑
admin: Added a new config to force admins to deadmin when readying up or
latejoining the round.
/🆑
## About The Pull Request
Bandaid fix of broken shadows on 516.
Renamed refresh button to rebuild for consistency in plane debugger
(Edit/Dubug-Planes).
Rebuild now also reapplies parallax, so it will not be turned off after
rebuild.
Closes#89230
## Why It's Good For The Game
faster 516 adoption
## Changelog
🆑
fix: fixed shadows on 516
/🆑
## About The Pull Request
Commit messages should be descriptive of all changes.
The "incorrect `\The` macro capitalization" was intentional when it was
added, but as far as I know TG says "the supermatter" rather than "The
Supermatter," so it's incorrect now.
This is completely untested. I don't even know how you'd go about
testing this, it's just a fuckton of strings.
Someday I want to extract them and run NLP on it to catch grammar
problems...
## Why It's Good For The Game
Basic grammar pass for name strings. Should make `\the` work better and
avoid cases like `the John Smith`.
## About The Pull Request
AIs can now examine things that don't have a specific shiftclick
interaction, which is solely APCs and airlocks.
Also fixes Dullahans not being able to examine through their head,
because that's a thing I found accidentally.
## Why It's Good For The Game
AIs only being able to examine things near its core has always been very
annoying, and you're currently able to examine things through security
cameras anyways so it's not like we're consistent on how much details
the cameras are able to see. This at least makes it a consistent "yes,
you can examine through cameras".
AIs also don't really have enough ShiftClick interactions to block all
of examine just for their existence.
## Changelog
🆑
balance: AIs can now examine through their eye.
fix: Dullahans can also examine through their head again.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
## About The Pull Request
The AI's definition is big and unorganized, which makes figuring out
what does what really annoying, so I took the time to document and
organize the file
Some vars have been renamed to better communicate what they actually do
when reading code
Unused vars have been deleted:
* var/chnotify
* var/waypoint
* var/interfaceButton
### Misc changes:
The check to see if malf modules could be used was written incorrectly,
and therefore all malf modules could be used without cooldown. The check
has been fixed, so actions which used to have no cooldown should now
AI bot summoning was supposed to have a cooldown, but it was broken and
not implemented for basic bots. This has been removed instead of fixed,
since I found it was an unnecessary limitation for something so simple.
## Changelog
🆑
fix: Malf modules correctly use action cooldown (affects camera repair
and detonate RCDs)
code: Minor (extremely minor) AI code maintenance
/🆑
## About The Pull Request
Adds a new extremely high quality lobby button on which we spent all of
2025's coderbus budget. It shows up only for localhost users and starts
the round immediately.

## Why It's Good For The Game
Ensures that maintainers don't accidentally commit a funni on live
servers.
## Changelog
🆑
admin: Added a localhost-only "Start Now" lobby button
/🆑
## About The Pull Request
so i discovered this downstream, but forgot to pr upstream til now, the
proper way to rebuild planemasters is `rebuild_hud`, not directly
calling `rebuild_plane_masters`
## Why It's Good For The Game
whoopsie breaking graphics is bad
## Changelog
🆑
fix: Fixed graphics getting screwed up when reconnecting with BYOND 515
after playing on BYOND 516.
/🆑
## About The Pull Request
This PR completely rewrites our embedding system in favor of embedding
datum handlers which acts as containers for all embedding-related data
and logic.
Currently embedding logic relies on an element-component-datum triad,
where elements on the items handle embedding logic, singleton datums
store embedding data and components (which get assigned to ***mobs*** in
whom the item embedded) handle pain and the item being ripped out. How
do we access all the procs? By using comsigs as procs, which is really
bad. This code was written back in 2020 when DCS was hot stuff but in
hindsight this implementation was a mistake, as it heavily restricts
custom embedding behaviors unless you're willing to constantly run
GetComponent (bad, ugly, incarnation of evil)
This PR rewrites all that logic to be handled by lazyloaded
``/datum/embedding``, which is stored similarly to current
``/datum/embed_data``. Upon being requested, it is initialized and
assigned to a parent from whom all the logic is handled, from being
embedded to pain and having the item ripped out. On projectiles this
only handles one proc, after which it copies itself down to the shrapnel
item instead and runs the chain further from there.
Ideally, most embedding-related logic now should be handled purely
datum-side - in most cases items should not be hooking up to themselves
like they did before (unless said logic is for when the item is made
sticky or smth) and instead the code should be handled by the embedding
datum (see sholean grapes implementation in this PR). This should allow
us to do fancy stuff like syringe guns embedding syringes into targets
and injecting them that way, and fix some bugs along the way.
Closes#88115Closes#87946
Also fixed a bug with scars not displaying when examined closely from
#86506 because i was in the area anyways
## About The Pull Request
Changes `examiante` to `examine` in the give alert description.
## Why It's Good For The Game
`examiante` ain't a word and, uh, `examinate` I don't think actually
fits here either.
## Changelog
🆑
spellcheck: Give alert 'examiante' > 'examine'.
/🆑
## About The Pull Request
this PR improves the UX of pet commands a bit. i decided to expand on
their radial menu. You can now hold shift and hover over your pet to
display a menu of commands which you can choose from. alternatively, you
can still type out commands in chat
https://github.com/user-attachments/assets/9da7f7ea-58a3-4fd6-b040-45cc05cda51d
## Why It's Good For The Game
makes pet commands easier to give out when you're managing more than 1
pet. also fixes the fishing command not working.
## Changelog
🆑
qol: holding shift and hovering over your pet will display a list of
commands you can click from
fix: fixes the fishing pet command not working
/🆑
## About The Pull Request
You can now wear shoes with digitigrade legs thanks to #88096, but UI
slots weren't informed of this change.
## Changelog
🆑
fix: Fixed shoes slot being semi-transparent when you have digitigrade
legs
/🆑
## About The Pull Request
This PR completely overhauls Midnight and Midnight-derived UIs, as well
as does some adjustments to the UI layout.

### Major changes:
* All UI elements for Midnight/Midnight-derived themes have been redrawn
to be cleaner, with consistent palettes and up-to-date sprites
* Tiny equip E is gone - Drop action has been moved in its place,
freeing some space in the bottom right corner
* Four minor menu keys have been bundled with actions, now-vertical
floor change element taking their place
* Action palette (wide thing in the top left corner) is now hidden when
it has zero actions bound to it and the player isn't currently dragging
an action button.
I've also fixed some minor issues with how hand elements are rendered,
and given feedback to resist button (it now lights up when pressed or
when the hotkey is held down)
<details>
<summary>Some screenshots of new UIs</summary>



Redrawn UIs now have themed clothing slots



</details>
## Why It's Good For The Game
Our UI icons are very outdated and compressed, with very large palettes
and odd transparency quirks, making adding new elements or redesigning
current ones quite hard and frustrating. A fresh coat of paint can take
user experience a long way.
As for moved elements, most people either equip things manually or use
the equip hotkey - E button is rather obscure and rarely used, while
drop button makes sense to be located near hands. Action palette just
takes up screen space most of the time, so there's no reason to not hide
it when you don't have any use for it.
## Changelog
🆑
qol: Resist button now has visible feedback.
qol: Readjusted UI layout.
image: Completely redrawn Midnight and Midnight-derived UIs!
/🆑
## About The Pull Request
This is the first PR in a series attempting to modernize our damage and
armor, both from a code and a gameplay perspective. This part implements
unique attack animations, adds alternate attack modes for items and
fixes some minor oversights.
Items now have unique attack animation based on their sharpness - sharp
items are now swung in an arc, while pointy items are thrust forward.
This change is ***purely visual***, this is not swing combat. (However,
this does assign icon rotation data to many items, which should help
swing combat later down the line).
Certain items like knives and swords now have secondary attacks - right
clicks will perform stabbing attacks instead of slashing for a chance to
leave piercing wounds, albeit with slightly lower damage - trying to
stick a katana through someone won't get you very far!
https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1
Turns out that spears acted as oversized knives this entire time, being
SHARP_EDGED instead of SHARP_POINTY - in order for their animations to
make sense, they're now once again pointy (according to comment,
originally they were made sharp because piercing wounds weren't very
threatening, which is no longer the case)
Another major change is that structure damage is now influenced by armor
penetration - I am not sure if this is intentional or not, but attacking
item's AP never applied to non-mob damage.
Additionally, also fixes an issue where attack verbs for you and
everyone else may differ.
## About The Pull Request
Basically just goes through and adds `mouse_over_pointer =
MOUSE_HAND_POINTER` to a bunch of screen elements (player hud and lobby
menu)
Also adds it to very small wall mounted objects like buttons, fire
alarms, and light switches
https://github.com/user-attachments/assets/c501cd3d-8efd-4fd0-a486-a53f2102a2cbhttps://github.com/user-attachments/assets/89f7cdcb-b40c-4ef3-b578-fee66ddf1ce2
## Why It's Good For The Game
- Makes interacting with screen elements a bit more tactile
- Makes it a bit easier to click on tiny buttons and such (being able to
know when you're actually hovering the thing)
- Maybe can be expanded to more world objects to indicate they are
clickable vs non-interactable?
## Changelog
🆑 Melbert
qol: Hovering over clickable screen elements will now update your mouse
cursor to indicate they're clickable
qol: Hovering over small wall mounts (light switches, buttons, fire
alarms) will now update to mouse cursor indicating you're hovering them
/🆑