## About The Pull Request
We were doing a lot of mental gymnastics in a bunch of other places, so
let's change this wonky var to a streamlined element that will rely on
the same signals that a lot of stuff was already using/accounting for in
its own signal handling pathways, instead of being a weird coverage gap.
This patch should also make the whole "checking if someone is attempting
to pick a mob up" thing make a lot more sense and use a unified proc
instead of spot-checking whatever random things it wants to spot-check.
## Why It's Good For The Game
I didn't know this was a thing until I looked at #96873 and it made me
sad because literally everything else involving mob drag-and-drop is
already signal-based except this weird stinker that relied on proc
overrides. Never mind that now, let's use nice traits to avoid
typecasting and elements to avoid duplicating code. It should also be
much cleaner to add holdability to a mob isntead of having to do
`can_be_held = FALSE` as a weird behavior (at least one instance had
this non-necessarily). All this really is is just middleware on the
extant /mob/living code but still making it in proper lockstep with the
other signalling procs.
I did port over raptor code faithfully but I'm not 100% sure if it was
meant to be like this? Regardless, that's how it is.
## Changelog
🆑
refactor: Picking up mobs has been altered a bit, please report any bugs
or glitches.
/🆑
## About The Pull Request
In similar fashion to what was done with crafting recipes last year,
this year it's time for techweb designs and printed items to be audited.
This is mostly just about consistency, we've a lot of items that can be
printed by protolathes, autolathes, circuit printers and techfab etc.
However they almost all (except most stacks, mainly) have custom
materials that do not match in one way or another with the materials
used by the design, which is what this PR is for.
"But items printed from lathes etc. already get the mats used to make
them." Yes, they do, however that isn't the case for items of the same
type that were spawned in some other way (cargo shuttle, space/maints
loot, mapped, admins), this create a subtle discrepancy. It isn't a huge
deal (in spite of the size of this PR, ton of designs), but given that I
have done something similar with crafting recipes before, I may as well
give it a second arc of some sort and bring things to completion. And
fix a few possible oversights.
TL;DR consistency and stuff
## Why It's Good For The Game
Consistency, unit test checks to make it harder not to be consistent in
the future. Still has a few TODOs like:
- [x] Fixed newly printed, fully charged RCDs costing less than the RCD
cartridges required to fully charge one. EDIT: I had to tweak the newly
added RDD as well because it suffered from the same fundamental issue.
- [x] Fixed plates being made of iron and yet shattering like ceramic
ones. A new subtype for metallic ones has been made.
## Changelog
🆑
refactor: Refactored a few things with techweb designs (the ones for
autolathes, protolathes, circuit printers, mechfabs etc.) to make sure
that the materials of items that can be made from these designs more
closely match the materials used to make them.
fix: Lizard fries no longer need a plate to be made, like all other
treats that used to require plates in a distant past.
balance: Tweaked the materials cost of RCD, RDD and RCD cartridges.
image: Oven trays now have a more metallic hue.
balance: Plates printed printed from lathes won't shatter like ceramic
ones, in virtue of them being made out of iron instead.
/🆑
## About The Pull Request
just macro-izes all the usages of verbs in the codebase as a
pre-requisite to my follow up pr that serializes all the verbs arguments
so we can tgui-ify the command bar, so we can then put it on the
onscreen map.
this also basically does the same as #94487 so can easily be integrated
into the verb queueing stuff... but does not actually do any verb
queueing by itself. basically im just trying to be
https://github.com/tgstation/tgstation/labels/Atomic
## Why It's Good For The Game
it doesn't really do anything by itself but it does let us do more stuff
## Changelog
🆑
code: the backend to all verbs in the game has been played with, please
report any issues to github
/🆑
---------
Co-authored-by: harryob <55142896+harryob@users.noreply.github.com>
## About The Pull Request
``/datum/action/proc/Trigger(mob/clicker, trigger_flags)`` has a lot of
children, many of which use mixed ``. = ..()`` or no parent calls at
all.
https://github.com/tgstation/tgstation/blob/d65ee47f6ebd0384d463a1f2a044c321ff2d912f/code/datums/actions/action.dm#L163-L170
This PR attempts to standardize all the children procs to call parent in
a uniform way, or cements that they *shouldnt* call parent for whatever
reason.
## Why It's Good For The Game
Base proc calls are important, yanno?
The base proc has the action button signals and availability proc on it,
so its technically possible for children procs of trigger() to have
check_flags enabled, but never blocked (i.e AB_CHECK_CONSCIOUS,
AB_CHECK_HANDS_BLOCKED).
Some children procs have IsAvailable on them, but its possible they can
be skipped over if a coder is not paying attention. This reduces that
risk.
## About The Pull Request
This is a port/revival of Kapu's
https://github.com/DaedalusDock/daedalusdock/pull/883
By god, please TM this for a while, as HUDs are rather volatile and I
might've missed something (also the original PR had harddel issues, so
we should probably be on the lookout for those)
Instead of being stored in a metric ton of separate variables, all HUD
elements are now kept in a ``key -> element`` assoc list, and separate
category lists have been turned into a single ``group_key -> list of
elements`` assoc list for easier management.
This massively simplifies HUD creation and management, and allows us to
sanely dynamically modify HUDs without having to keep track of our
elements ourselves (harddel fuel)
I've also noticed that plasma vessels had... interesting, to say the
least, way of managing their HUD and in humans were unable to display
it, which I've changed (the element itself is displayed below stamina in
non-aliens, as latter occupies the spot where you'd normally see it)
Also fixes a bunch of minor unlikely to occur issues with HUD not
updating when it should've sometimes.
## Why It's Good For The Game
The two most important results of this is that A) we can fix the issue
with items larger than 32x32 not displaying properly in inventories (in
a separate PR) and B) this paves the way for datumized inventory slots,
although that is a separate nightmare
Some of this code is also actually over a decade old, and is an absolute
nightmare to work with.
## Changelog
🆑
qol: Non-aliens with an implanted plasma vessel now see their plasma
level in their HUD instead of just the stat panel
refactor: Refactored the entirety of HUD management code, report if
anything breaks!
/🆑
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
## About The Pull Request
Revival of https://github.com/tgstation/tgstation/pull/91378 for renewed
effort of ruining the stat panel for everyone.
This PR does a few things to address issues I've had with the HUD in
hopes to bring reliance less upon the stat panel.
1. Adds a Memory button
<img width="133" height="169" alt="image"
src="https://github.com/user-attachments/assets/7f643882-5666-4099-9c68-5d6092a6d82c"
/>
<img width="134" height="169" alt="image"
src="https://github.com/user-attachments/assets/e7592ec3-ec3e-4afe-baa3-6d0e6d5d22c8"
/>
Potential alt icon, but I don't know if it's better
<img width="1322" height="115" alt="image"
src="https://github.com/user-attachments/assets/82cc6ad9-becd-4502-8b83-276b0ef6ed0d"
/>
2. Makes Alien, Animal & Borg HUDs more compact (This is uploaded before
Borg HUD icons were made)
Borg - Removed 'Store' button, now you left click your model to store it
(RMB to open/close), think of it more like a bag now.
<img width="1054" height="324" alt="image"
src="https://github.com/user-attachments/assets/5352a350-8f3e-4b3a-8634-929e2c9aa2f4"
/>
Alien
<img width="305" height="189" alt="image"
src="https://github.com/user-attachments/assets/c0f0b9f0-941a-405e-bdfd-4b5b46690fb6"
/>
Animals - Their HUDs now appear in the corner of the screen rather than
having the strange offset
<img width="202" height="168" alt="image"
src="https://github.com/user-attachments/assets/ddf26108-d930-4744-8ef5-17f981a3384b"
/>
I didn't touch gorilla, they still look weird.
<img width="732" height="181" alt="image"
src="https://github.com/user-attachments/assets/5c1534c3-7190-491d-8a1f-6fe51eebd9a2"
/>
2. Fixes borg numbers not showing up at the request of a user
<img width="701" height="312" alt="image"
src="https://github.com/user-attachments/assets/65464e15-8e31-41f8-b506-050fa27cebde"
/>
Closes https://github.com/tgstation/tgstation/issues/95163
I also added a rustle sound when you drop something as a borg so you
have an audio cue that you dropped something, sometimes as a borg I'll
drop something and think it disappeared, cause I didn't realize I
accidentally hit drop. This is a local sound, so it doesn't play to
anyone near you. Purely for feedback.
3. If you didn't notice, this de-hardcodes the UI for non-humans
UIs now respect your prefs for many more mobs now, pretty much only the
ones with unique special UIs (Alien, pAI, AI, Borg) will now respect
your prefs.
## Why It's Good For The Game
UIs make a bit more sense, takes Memories out of being only accessible
through the stat panel, allows your prefs to be respected more and makes
inventories a little more consistent through mob types.
If the stat panel is to be removed or made optional, we can't afford to
hide Memories through it because certain antagonists (see: nukies)
absolutely rely on it.
## Changelog
🆑 ttt, JohnFulpWillard
add: Added a Memory HUD to your UI. In case you didn't know, you get
memories of things happening around the station, or important antagonist
info such as the nuclear codes.
del: Removed Borg's "store" button, now the cyborg module will behave
more similar to a backpack (LMB to store, RMB to open/close)
fix: Borg material now properly displays how much materials they can
afford with their cell's charge.
qol: Your HUD prefs are respected on more mobs now.
qol: Improved the HUD of simple/basic animals, as well as Cyborgs, AIs,
pAIs and Xenomorphs.
/🆑
---------
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
## About The Pull Request
Camera snapping now goes off of the turf rather than your actual
location, because a pAI in a PDA's ``can_see`` is only the contents of
the person they are being held by.
Fixes pAIs not being able to use the zoom functionality from their UI,
and it not actually applying.
Fixes aicamera not being async
Gives pAIs a new HUD as well to take into account widescreen, like it
was done for AIs many years ago.
Widescreen
<img width="1263" height="995" alt="image"
src="https://github.com/user-attachments/assets/2114ab1d-8872-4ef4-9b4a-09b4ce22b1b3"
/>
Non-widescreen
<img width="997" height="995" alt="image"
src="https://github.com/user-attachments/assets/315530bf-32ba-4d30-816e-d18c0de64482"
/>
## Why It's Good For The Game
pAIs can now snap photos as they are supposed to be able to. Also taking
into account widescreen is cool, the right side of the screen sitting
there empty was very L.
Closes https://github.com/tgstation/tgstation/issues/76446
## Changelog
🆑
fix: pAIs/AIs in a Modsuit/PDA can now take photos properly, and their
zoom functionality works again.
fix: pAI abilities like host scan now works while inside of a PDA.
qol: pAI HUD now takes widescreen into account.
/🆑
## About The Pull Request
ID cards/MMI mech access/simple mob access/pAIs now use signals instead
of checking specific slots with mob checks. We do this through mob's
``get_access`` proc that collects all access a mob has with a
collect_access signal.
## Why It's Good For The Game
It looks cleaner and we no longer individually check `check_access` for
every single item that may have access. It's cleaner to put it all
together and check in one go with all the access we've got. This also
makes it easier to add items that hold access that aren't necessarily
IDs but you want to be able to open stuff with.
## Changelog
🆑
refactor: ID checking for access has been reworked, please make a bug
report if anything that's supposed to grant access is not working.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
It's just a partial cleanup of
anti-[STYLE](https://github.com/tgstation/tgstation/blob/master/.github/guides/STYLE.md)
code from /tg/'s ancient history. I compiled & tested with my helpful
assistant and damage is still working.
<img width="1920" height="1040" alt="image"
src="https://github.com/user-attachments/assets/26dabc17-088f-4008-b299-3ff4c27142c3"
/>
I'll upload the .cs script I used to do it shortly.
## Why It's Good For The Game
Just minor code cleanup.
Script used is located at https://metek.tech/camelTo-Snake.7z
EDIT 11/23/25: Updated the script to use multithreading and sequential
scan so it works a hell of a lot faster
```
/*
//
Copyright 2025 Joshua 'Joan Metekillot' Kidder
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
//
*/
using System.Text.RegularExpressions;
class Program
{
static async Task Main(string[] args)
{
var readFile = new FileStreamOptions
{
Access = FileAccess.Read,
Share = FileShare.ReadWrite,
Options = FileOptions.Asynchronous | FileOptions.SequentialScan
};
FileStreamOptions writeFile = new FileStreamOptions
{
Share = FileShare.ReadWrite,
Access = FileAccess.ReadWrite,
Mode = FileMode.Truncate,
Options = FileOptions.Asynchronous
};
RegexOptions regexOptions = RegexOptions.Multiline | RegexOptions.Compiled;
Dictionary<string, int> changedProcs = new();
string regexPattern = @"(?<=\P{L})([a-z]+)([A-Z]{1,2}[a-z]+)*(Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss)([A-Z]{1,2}[a-z]+)*";
Regex camelCaseProcRegex = new(regexPattern, regexOptions);
string snakeify(Match matchingRegex)
{
var vals =
matchingRegex.Groups.Cast<Group>().SelectMany(_ => _.Captures).Select(_ => _.Value).ToArray();
var newVal = string.Join("_", vals.Skip(1).ToArray()).ToLower();
string logString = $"{vals[0]} => {newVal}";
if (changedProcs.TryGetValue(logString, out int value))
{
changedProcs[logString] = value + 1;
}
else
{
changedProcs.Add(logString, 1);
}
return newVal;
}
var dmFiles = Directory.EnumerateFiles(".", "*.dm", SearchOption.AllDirectories).ToAsyncEnumerable<string>();
// uses default ParallelOptions
// https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.paralleloptions?view=net-10.0#main
await Parallel.ForEachAsync(dmFiles, async (filePath, UnusedCancellationToken) =>
{
var reader = new StreamReader(filePath, readFile);
string oldContent = await reader.ReadToEndAsync();
string newContent = camelCaseProcRegex.Replace(oldContent, new MatchEvaluator((Func<Match, string>)snakeify));
if (oldContent != newContent)
{
var writer = new StreamWriter(filePath, writeFile);
await writer.WriteAsync(newContent);
await writer.DisposeAsync();
}
reader.Dispose();
});
var logToList = changedProcs.Cast<KeyValuePair<string, int>>().ToList();
foreach (var pair in logToList)
{
Console.WriteLine($"{pair.Key}: {pair.Value} locations");
}
}
}
```
## Changelog
🆑 Bisar
code: All (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use
snake_case, in-line with the STYLE guide. Underscores rule!
/🆑
## About The Pull Request
PAI leashes can be toggled on or off by owners
## Why It's Good For The Game
i do agree with the idea of tying PAIs to their owners considering what
the P stands for and i wish it had worked out the way it was intended,
but it has sort of deterred a lot of people from playing the role. even
as the PAI owner in shifts where very little was going on, i did sort of
find it socially exhausting to have to be tied to my PAI for the entire
round and a massive responsibility since the fun the other player was
having was solely depending on me. i found myself wishing we could have
a little break from each other every now and then </3. i realize most of
these are my own shortcomings, but i speculate atleast a few other pai
owners may go through the same things which may tie into why very few
pai devices are being picked up
## Changelog
🆑
feature: PAI leashes can now be turned on or off by pai owners. (they
are on by default)
/🆑
## About The Pull Request
Fixes the issue of usr pointing to admins by making Trigger pass down
clicker, as usr is fucky and can be passed down by other unrelated
procs. Fun.
Added the clicker arg to all usages of Trigger as well
Also changes isobserver check in antagonist ui_act code that prevents
observers from clicking UI's instead to check if the ui.user is
owner.current
## Why It's Good For The Game
Fixes admins giving heretic to people opening the heretic UI for the
admin instead
(cherry picked from commit 0bc42d6940)
## About The Pull Request
Fixes the issue of usr pointing to admins by making Trigger pass down
clicker, as usr is fucky and can be passed down by other unrelated
procs. Fun.
Added the clicker arg to all usages of Trigger as well
Also changes isobserver check in antagonist ui_act code that prevents
observers from clicking UI's instead to check if the ui.user is
owner.current
## Why It's Good For The Game
Fixes admins giving heretic to people opening the heretic UI for the
admin instead
## About The Pull Request
Adds a button onto the software interface that lets you delete yourself
from the pAI card.
<img width="380" height="480" alt="image"
src="https://github.com/user-attachments/assets/9db7a931-6246-4534-bf85-366c05a732b7"
/>
Comes with a confirmation dialog.
<img width="310" height="98" alt="image"
src="https://github.com/user-attachments/assets/ccf1045c-dd6a-47e6-9a76-441a0bc6d273"
/>
## Why It's Good For The Game
Letting pAIs properly delete themselves instead of having to ghost or
let someone else do it is good.
Upstream this is handled by the suicide verb which is disabled here.
## Proof Of Testing
Compiled, tested wiping locally while projecting out, inside the card
and while the card was inside a PDA.
## Changelog
🆑
add: pAIs can now delete themselves off of cards.
/🆑
---------
Co-authored-by: KeptheKobold <>
## About The Pull Request
pAIs can now toggle if they wish to project out of their cards or take
their cards with them. This can be toggled whenever they are in their
card form with a new action button spirited by ExusA
## Why It's Good For The Game
Lets pAI players choose between projecting out as a hologram, and
running around with their card inside of their hologram thingy
## Proof Of Testing
Compiled the game and spawned as pAI. Tested turning on and off the
leash, and made sure couldnt change it while folded out
## Changelog
🆑
code: Added toggle to turn leashing on or off for pAIs, from pAI side
image: Added new sprite for Leash toggle for pAIs, made by ExusA
/🆑
---------
Co-authored-by: Kobo <>
## About The Pull Request
title
## Why It's Good For The Game
it inherits a lot of behavior from clothing which leads to lots of bugs
when it isn't actually clothes, for example: shredded overlays. this
should be better.
probably fixes a bunch of bugs
## Changelog
🆑
code: mob holders are no longer subtypes of clothes, report any issues
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
title
## Why It's Good For The Game
it inherits a lot of behavior from clothing which leads to lots of bugs
when it isn't actually clothes, for example: shredded overlays. this
should be better.
probably fixes a bunch of bugs
## Changelog
🆑
code: mob holders are no longer subtypes of clothes, report any issues
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
## About The Pull Request
Melee attack chain now has a list passed along with it,
`attack_modifiers`, which you can stick force modifiers to change the
resulting attack
This is basically a soft implementation of damage packets until a more
definitive pr, but one that only applies to item attack chain, and not
unarmed attacks.
This change was done to facilitate a baton refactor - batons no longer
hack together their own attack chain, and are now integrated straight
into the real attack chain. This refactor itself was done because batons
don't send any attack signals, which has been annoying in the past (for
swing combat).
## Changelog
🆑 Melbert
refactor: Batons have been refactored again. Baton stuns now properly
count as an attack, when before it was a nothing. Report any oddities,
particularly in regards to harmbatonning vs normal batonning.
refactor: The method of adjusting item damage mid-attack has been
refactored - some affected items include the Nullblade and knives.
Report any strange happenings with damage numbers.
refactor: A few objects have been moved to the new interaction chain -
records consoles, mawed crucible, alien weeds and space vines, hedges,
restaurant portals, and some mobs - to name a few.
fix: Spears only deal bonus damage against secure lockers, not all
closet types (including crates)
/🆑
## About The Pull Request
Quite simple - this changes every direct mention of a mob in a
`notify_ghosts` message to use `[mob.real_name]` instead of just `[mob]`
## Why It's Good For The Game
makes things less confusing - ghosts can see easily their actual
identity anyways, so it's not like there's much of a reason _not_ to do
this.
## Changelog
🆑
qol: Ghost notifications will now use the real names of mobs when
something happens (i.e no more "Unknown has completed an ascension
ritual!")
/🆑
## About The Pull Request
Quite simple - this changes every direct mention of a mob in a
`notify_ghosts` message to use `[mob.real_name]` instead of just `[mob]`
## Why It's Good For The Game
makes things less confusing - ghosts can see easily their actual
identity anyways, so it's not like there's much of a reason _not_ to do
this.
## Changelog
🆑
qol: Ghost notifications will now use the real names of mobs when
something happens (i.e no more "Unknown has completed an ascension
ritual!")
/🆑
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.
Improving old code. And I want to be able to pet mobroaches while
holding them too.
🆑
qol: You can now interact with held mobs in more ways beside wearing
them.
/🆑
This PR started with the idea of adding support for map feedback
threads, which I added to the roundend report, escape menu, and stat
panel. To do this though I had to make pretty annoying changes to the
stat panel and had to touch every single time something to the stat
panel was added, so since we now have a way to have links in the stat
panel I thought of taking full advantage of it and add some QOL.
AIs can now track their borgs by clicking their status on the stat panel
https://github.com/user-attachments/assets/1789dc46-5d12-48e9-bb8d-d3278aa19639
With Melbert's comment, I added another stat panel entry that directs
you to the Webmap page, which currently seems to be a little messed up
(https://github.com/AffectedArc07/SS13WebMap/issues/41 &
https://github.com/AffectedArc07/SS13WebMap/issues/42) but if they get
fixed this would be a swag asf feature
Feedback threads was a suggestion from a player and is fully in control
of admins as an optional thing, and while we still have stat panel I
think it's nice to be able to take advantage of its features.
🆑
admin: Admins can now link a URL for maps, used to give feedback on said
maps. Accessible through the roundend report, escape menu, and stat
panel.
qol: AIs can track their borgs by clicking on them in the stat panel.
qol: You can now directly go to the webmap of maps from the stat panel
(assuming it's set in config).
/🆑
## About The Pull Request
adds a new visual effect for holograms ,such as holosigns and several
holoanimals, where they'll glitch out when walked through, attacked, or
when a thrown object passes through them
https://github.com/user-attachments/assets/5c18e48e-6ea5-4e57-a7d4-6a9323e317f5
## Why It's Good For The Game
i think its good for the sake of immersion. also, if pai players feel
like this might get annoying i have no problems excluding them from this
effect.
## Changelog
🆑
add: adds a new glitch-out effect for holograms when they're interacted
with
/🆑
## 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
This PR started with the idea of adding support for map feedback
threads, which I added to the roundend report, escape menu, and stat
panel. To do this though I had to make pretty annoying changes to the
stat panel and had to touch every single time something to the stat
panel was added, so since we now have a way to have links in the stat
panel I thought of taking full advantage of it and add some QOL.
AIs can now track their borgs by clicking their status on the stat panel
https://github.com/user-attachments/assets/1789dc46-5d12-48e9-bb8d-d3278aa19639
With Melbert's comment, I added another stat panel entry that directs
you to the Webmap page, which currently seems to be a little messed up
(https://github.com/AffectedArc07/SS13WebMap/issues/41 &
https://github.com/AffectedArc07/SS13WebMap/issues/42) but if they get
fixed this would be a swag asf feature
##### Code bounty for Ezel/Improvedname
## Why It's Good For The Game
Feedback threads was a suggestion from a player and is fully in control
of admins as an optional thing, and while we still have stat panel I
think it's nice to be able to take advantage of its features.
## Changelog
🆑
admin: Admins can now link a URL for maps, used to give feedback on said
maps. Accessible through the roundend report, escape menu, and stat
panel.
qol: AIs can track their borgs by clicking on them in the stat panel.
qol: You can now directly go to the webmap of maps from the stat panel
(assuming it's set in config).
/🆑
## About The Pull Request
adds a new visual effect for holograms ,such as holosigns and several
holoanimals, where they'll glitch out when walked through, attacked, or
when a thrown object passes through them
https://github.com/user-attachments/assets/5c18e48e-6ea5-4e57-a7d4-6a9323e317f5
## Why It's Good For The Game
i think its good for the sake of immersion. also, if pai players feel
like this might get annoying i have no problems excluding them from this
effect.
## Changelog
🆑
add: adds a new glitch-out effect for holograms when they're interacted
with
/🆑
## About The Pull Request
Currently if a borg attempts to use nav to access a waypoint in a
restricted area of the station (brig for example) it will fail with "no
valid path with current access" because get_access on a borg return
nothing because they don't have an ID. get_access for silicons will now
return all station accesses.
## Why It's Good For The Game
Borgs need to find things, and not being able to nav into any restricted
areas is annoying.
## Changelog
🆑
add: Added the ability for borgs to pathfind into and through restricted
areas.
/🆑
Converts `/datum/player_details` into `/datum/persistent_client`.
Persistent Clients persist across connections. The only time a mob's
persistent client will change is if the ckey it's bound to logs into a
different mob, or the mob is deleted (duh).
Also adds PossessByPlayer() so that transfering mob control is cleaner
and makes more immediate sense if you don't know byond-fu.
Clients are an abstract representation of a connection that can be
dropped at almost any moment so putting things that should be stable to
access at any time onto an undying object is ideal. This allows for
future expansions like abstracting away client.screen and managing
everything cleanly.
## About The Pull Request
Currently if a borg attempts to use nav to access a waypoint in a
restricted area of the station (brig for example) it will fail with "no
valid path with current access" because get_access on a borg return
nothing because they don't have an ID. get_access for silicons will now
return all station accesses.
## Why It's Good For The Game
Borgs need to find things, and not being able to nav into any restricted
areas is annoying.
## Changelog
🆑
add: Added the ability for borgs to pathfind into and through restricted
areas.
/🆑
## About The Pull Request
Converts `/datum/player_details` into `/datum/persistent_client`.
Persistent Clients persist across connections. The only time a mob's
persistent client will change is if the ckey it's bound to logs into a
different mob, or the mob is deleted (duh).
Also adds PossessByPlayer() so that transfering mob control is cleaner
and makes more immediate sense if you don't know byond-fu.
## Why It's Good For The Game
Clients are an abstract representation of a connection that can be
dropped at almost any moment so putting things that should be stable to
access at any time onto an undying object is ideal. This allows for
future expansions like abstracting away client.screen and managing
everything cleanly.
## About The Pull Request
This PR changes pAI screen images (previously called "emotion icon" or
"card overlay") to be datums.
In doing so, I made some changes in how screen images are handled:
* A screen image's name and icon state are separate now, whereas before
the name determined the icon state used.
* Something useful for downstreams: The icon file that a screen image
pulls from default's to tg's icon file for pAI screen images, but can be
overridden if you don't want to put the new screen image in the same
file.
* The FA icon for each screen image is now selected in the datum, rather
than as part of a constant in some far-off TS file.
Additionally, the codebase previously used inconsistent terminology to
refer to these - "card overlay" in one place, "emotion icon" in another,
"image" somewhere else... Now, all of them are called "screen image" or
some variant thereof. "Screen image" is more accurate to what it is
anyways, since it doesn't need to be a face (although 99% of the time,
it will be).
One last thing: The new datum is in its own directory, all by its
lonesome. If you're wondering why I don't just move it out and put it
next to the rest of the pAI module, it's because I plan to datumize some
other pAI stuff (in particular, software and holochassis) in a future
PR. (Though I'll admit, I'm not sure of the current folder location.)
## Why It's Good For The Game
Datumizes some items that really should've been datums in the first
place.
## Changelog
🆑 MichiRecRoom
refactor: Datumized pAI card screen images
/🆑
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
## 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
/🆑
## About The Pull Request
Tin, basically gives PAIs their ability to self-move back, as it used to
be.
I *understand why* the change was made for TG specifically, but the
niche PAIs fill here tends to be somewhat different, and I also miss the
random PAIs running around causing havoc or helping new players out on
their own.
Also I have to use an inventory slot to carry them now, which I severely
dislike. They're perfectly capable of carrying themselves, thank you
very much. I'd also like to not have to micro where they are so they can
sit where they want to.
## Why It's Good For The Game
As mentioned above, PAIs are great entertainment as a standalone entity,
players can wander off and scene, or go straight up SSD with no notice,
and to top it all off, they actually are part of what helped me get used
to SR, funnily enough, and it wouldn't have happened if they couldn't
wander.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>


</details>
## Changelog
🆑
qol: PAIs can now roam freely again.
/🆑
---------
Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com>
## About The Pull Request
`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage
## Changelog
🆑 Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/🆑
3591 individual conflicts
Update build.js
Update install_node.sh
Update byond.js
oh my fucking god
hat
slow
huh
holy shit
we all fall down
2 more I missed
2900 individual conflicts
2700 Individual conflicts
replaces yarn file with tg version, bumping us down to 2200-ish
Down to 2000 individual conflicts
140 down
mmm
aaaaaaaaaaaaaaaaaaa
not yt
575
soon
900 individual conflicts
600 individual conflicts, 121 file conflicts
im not okay
160 across 19 files
29 in 4 files
0 conflicts, compiletime fix time
some minor incap stuff
missed ticks
weird dupe definition stuff
missed ticks 2
incap fixes
undefs and pie fix
Radio update and some extra minor stuff
returns a single override
no more dupe definitions, 175 compiletime errors
Unticked file fix
sound and emote stuff
honk and more radio stuff