## About The Pull Request
So a pr a few months ago (#92438) shuffled around a bunch of our global
lists away from the misc file- and, in the process, broke some one with
special handling.
This just re-introduces the special handling for the top 1000 most
common words list, so it's once again associative, and moves it and the
other language lists into its own file so they're all nice and together.
This fixes our issues.
However, the file itself is still *alphabetized* rather than ranked by
commonness, despite us treating it as if it is.
...I'm leaving untangling that mess to a separate pr
## Why It's Good For The Game
Fix jank 👍
## Changelog
🆑
fix: Partial language understanding once again knows which words are
common.
fix: Expressive Aphasia is no longer so aphasic you don't know any
words.
/🆑
## About The Pull Request
So, my original goal was just a refactor for the emissive overlays of
eyes, as a way to implement the specular emissive introduced by smartkar
some time ago, but somehow I found myself dragged into a bigger refactor
or cleanup of organ damage, thresholds, failures. One of the main
problem was that there were no procs called when a organ suffered enough
damage to fail or when recovering from failure. It'd just enable or
disable a bitflag, leaving it up to subtypes to decide how to tackle
organ failure their own ways: diverse, funky and sometimes incompatible.
More often than not relying on their very own "update_thingamajig" kinda
procs that run whenever the organ takes damage, rather than just when
the threshold is reached (low, high, failure. There are however a couple
organs with their own quirky thresholds, I let those slide).
There's also a bit of old code, especially for ears, with the
`AdjustEarDamage` and temporary deafness both predating the framework
for organ damage as far as I know. It really needed a coat of fresh
paint.
Oh, there were also more than a handful of organs that still heavily
relied on some ORGAN_TRAIT source instead of the `organ_traits` list and
the two add/remove procs `add_organ_trait` or `remove_organ_trait`. This
include organs that lose or gain specific traits when failing et
viceversa.
~~Lastly, felinids (and the halloween ghost species) having reflective
eyes. It's just a nod to the tapetum lucidum that animals with night
vision often have (including cats), which is why their eyes are a bit
brighter in the dark. Felinids however, do not have night vision (nor do
ghosts). This is merely cosmetic.~~ Cut out for the time being due to
issues with the specular emissive...
## Why It's Good For The Game
Refactoring / cleaning up old organ code.
## Changelog
🆑
refactor: Refactored organ damage code a little. Hopefully there won't
be issues (otherwise report them).
/🆑
## About The Pull Request
What it says on the tin. Cargo now has new math for market elasticity,
each parameter and what it does is explained below
**1. Refactor**
1. **k_elasticity**: This is the elasticity as before applied on all
exports except now this is a floating-point value that swings from
`0->1` instead of 10e-10 like is the current case. This in laymen terms
is the percentile of an items actual cost that is sold on cargo [0 means
you get no credits, 0.5 means you get 50% of the items cost, 1 means you
get 100% of the items cost]. Whenever an item is sold on cargo this
value decreases by an amount that is determined by the next variable
2. **k_hit_percentile(default 5%)**: This is the value by which an
export `k_elasticity` decreases whenever an export is successful for
every unit of an item sold. The real formulae by which the exports
elasticity decreases is dependent on the total amount sold and is as
follows
<pre>k_elasticity -= amount sold (1 for most cases except stacks) *
k_hit_percentile</pre>
So subsequent exports yield lesser profits cause the elasticity
decreases. Now the rate at which the elasticity recovers is as follows
3. **k_recovery_time(default 10 minutes)**: This is the time (minimum
unit should be seconds) it takes for the elasticity to rebound back to
100% after it has reached full 0 but recovery process starts immediately
if it decreases at any point. So if elasticity becomes say 50% it means
it would take 5 minutes to reach 100% again
**2. Some Balance changes**
1. Profits earned from exporting gas is linear per mole sold so the more
gas you put in the more profits you get HOWEVER the max number of
credits you can make per canister is 15000 cr
2. Selling fish yields higher prices because it's no longer subject to
the old elasticity formula
3. Selling 50 sheets of anything will decrease future sale price by 10%
and will take 8 minutes to rebound back to 100% if it reaches 0
**3. Improvements:**
- `SSProcessing` subsystem no longer processes more than 180+ export
datums from round start itself but now starts out empty. It instead
processes only those exports whose elasticity has been impacted and
later cancels it after elasticity has reached 100% so performance of
this subsystem has been drastically improved
- export datums now respect `abstract_type` meaning they won't be
created and can be used as a skeleton body for subtypes. So datums like
`datum/material` & `datum/material/market` are not created anymore but
only their subtypes are so we save processing power & memory
- Shaved of a lot of dead exports that went unused
## Changelog
🆑
balance: cargo exports now have different prices with applied elasticity
code: Improved performance of export code
qol: stock blocks can be recycled for materials & show up as stock
blocks in order console sold items
refactor: refactored cargo export code in whole. Report bugs on GitHub
/🆑
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
## About The Pull Request
Title.
## Why It's Good For The Game
It's colourable, trait can be used for more. Shaded vamp funny.
- [x] Port basic stuff.
- [x] Weather stuff.
- [x] Vampire stuff.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
</details>
## Changelog
🆑 Absolucy, Constellado, theselfish, Arturlang
add: Umbrellas are now gags colourable!
add: Umbrellas protect vampires from the sun.
/🆑
## About The Pull Request
Heretic has received a complete overhaul. This PR touches nearly every
aspect of the antagonist. For readability's sake, not every change is
going to be listed in this pull request.
For the full list of changes please refer to the design doc:
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.
Code by Me, @Xander3359 and @Arturlang
TGUI by @Arturlang
Sprites by OrcaCora and GregorDM
Writing bits by @necromanceranne
### Core changes
- Cross-pathing has been removed. Main knowledge spells are now
exclusive to their path (for the most part).
- For every main knowledge unlocked (save for the robes and the blade
upgrade), Heretics can choose one option from a draft of 3 random side
knowledges (this is a free point).
- Heretics can now purchase side knowledges from a new tab, the
"Knowledge Shop". Side-knowledges have been divided by tier (Stealth,
Defense, Summons, Combat and Main). Tiers are unlocked as you progress
toward your main path.
- Heretics now gain the grasp and mark upgrade immediately, but their
main knowledge choices cost twice as much (except for the first spell,
the robes and the blade upgrade).
- Path specific robes have been introduced! They come with their own set
of quirks.
- Each Path has received a passive ability. This passive is upgraded
when you first create your robes, and again when you complete the Ritual
of Knowledge.
- Paths have been rebalanced as a result of the removal of cross-path
progression. Cosmic and Moon paths have received soft reworks.
- Upon unlocking the path 2nd level or reaching a total of 8 points
worth of knowledge, Heretics will lose the ability to blade break (and
the limit on blades all together).
- Ascension now automatically calls the shuttle with no possibility of a
recall.
- Late join Heretic has been removed.
### New UI
<img width="750" height="635" alt="moon path ui"
src="https://github.com/user-attachments/assets/184ef783-5c9c-48a1-a2f7-4807ca93e990"
/>
### Knowledge shop
<img width="787" height="669" alt="Knowledge shop"
src="https://github.com/user-attachments/assets/3dc89b84-8c70-4d47-b612-54396e3ea6e7"
/>
### Quality of life //General balance changes
- Heretics will now gain X-ray vision for a few seconds when nearby an
eldritch essence (this effect has a cooldown).
- Ritual of knowledge now requires 1 uncommon item instead of 2. You may
now use a stunprod instead of a baton to complete the ritual. Beartraps
have been removed from the list of possible reagents.
- The maximum number of possible sacrifices required to ascend has been
reduced from 6 to 5 while the minimum has been upped to 4.
- Codex Cicatrix no longer requires a special pen to be made.
### Passive abilities
- Heretics now start with a passive ability. You can find what it does
on the path info tab after a path has been selected, and what they gain
when upgraded.
- Crafting your first set of Eldritch robes will bump your passive to
level 2.
- Unlocking the 2nd level will subsequently unlock your "Ritual Of
Knowledge"
- Completing the ritual of knowledge or ascending will net you the final
level.
### Path Specific Robes
- Armorer's Ritual is no longer a side knowledge. Each path will have
their own unique version of the ritual. This is placed after the 2nd
spell in the tree.
- Robes can no longer be destroyed by fire and acid, grant t4 flash
protection (Moth Heretics stay winning) and protection against basic
syringes, to bring them on par with other antagonist's armor sets.
- The recipe to craft the robes is now a set of armor/vest, a mask (any
mask will do now, not just gas masks), plus the unique reagent required
for the blades (Plasma for Cosmic, Trash For Rust, match for Ash and so
on)
- Wearing the robes as a non-heretic may yield some unfortunate
side-effects.
### Moon Path Rework
Moon path rework.
Moon Heretics gain immunity to brain traumas and slowly regenerate brain
health. Equipping the moon amulette channels its effects through the
moon blade; making it unblockable and cause sanity damage instead of
brute. Ring leader's Rise now summons an army of harmless clones that
explode when attacked; the explosion briefly stuns non-heretics and
cause sanity and brain damage to them. Moon blade can also now be used
when pacified and Moon spells are no longer blocked by regular anti
magic, only mind magic protection.
**Cosmic Path Rework**
Cosmic path has received the biggest batch of changes alongside Moon.
The path has been dead last in ascension and pickrate (less than 5%) for
almost 2 years. It did gain some popularity over the last few months,
reaching the highest ascension rate in the game (12%) while mantaining a
relatively low pickrate.
Cosmic sits in a weird spot, where pretty much every knowledge
surrounding the path is either mediocre or, in the case of the
ascension, dysfunctional. Yet it has maintained a smidge of relevancy
due to how quickly Cosmic heretics can capture and sacrifice targets
thanks to Star Touch.
As a result, the best course of action would be to rebalance the
entirety of the kit; granting the heretic more tools to manipulate space
and dictate the flow of a fight, while lessening their ability to end a
confrontation by instantly sleeping their opponents.
lastly The Star Gazer is now ghost controlled ; And they shoot lazers!
<img width="636" height="451" alt="gazer gag 3"
src="https://github.com/user-attachments/assets/601d6881-c042-4e42-8ce6-ac90cd27848b"
/>
## Why It's Good For The Game
### Ok...but why do we want this?
Again, if you want my full reasoning, please check my doc
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.
To keep it short and concise; Heretic is too complex and unintuitive for
its own good. Too impenetrable for new players and too abusable for
experienced players. This can be chalked up to a lot of poor design
decisions. But ultimately, what I believe being the biggest contributor
to the current status of Heretic is the ability to move into different
paths, also known as "Cross-Pathing".
### Cross Pathing my beloathed.
Cross-pathing, while cool in theory, overcomplicates the antagonist and
overloads them with power. Players dealing with the heretic are
incapable of working out what a given heretic can do. This also leads to
late game heretics having 3 rows Worth of action buttons and virtually
no weakness.
Over the last year, I've often received the understandable but also kind
of unfair accusations of making Heretic too powerful without a clear aim
or purpose.
My goal with the paths I've reworked over the last year (Rust,Void and
Blade) wasn't necessarily to just make them stronger (although that was
also part of the goal, as they were paths that were underperforming),
but for them to have more interactions with the sandbox and to better
live up to the fantasy presented to the player.
If an harbringer of frost gets countered by a cup of coffee, we probably
messed something up.
Unfortunately, the current incarnation of Heretic doesn't really allow
for surgical balance changes to specific paths. Every time a knowledge
gets buffed, we make every path that can easily tap onto that knowledge
stronger by default. It doesn't take a genius to understand why this
system is ultimately unsustainable.
### Blade Breaking
I feel that after a heretic has reached the near peak of their power,
they no longer need the ability to instantly escape any encounter. Check
my doc for my full reasoning.
## Less versatile, more specialized paths.
By removing cross-pathing, we remove a huge maintainability burden from
the antagonist. Paths can now be designed around clearer strengths and
weaknesses. They become easier to balance and less of an headache to
understand for everyone.
It also means we can give paths some needed quality of life quirks
without having to worry how such a change might have a knock-on effect
for other paths.
Ash heretics can finally let loose without dying by their own flames.
Cosmic Heretic can go to space without having to carry a modsuit. Moon
Heretic can use their abilities without fear of one random trauma
ruining their day, and so on.
### What a horrible night to have a curse...., wait how do I curse
people again?
As of right now the heretic tree has quite a hefty amount of trinkets
that pretty much never see use.
Partly because the tree itself is a nightmare to navigate. And partly
because why would anyone set up an elaborate plan or scheme when they
can unleash 2 rows of spell in the span of bunch of seconds.
Heretics mostly gravitate towards powers that push them towards greater,
more potent combat strength. If it doesn't contribute to killing people
quicker, it isn't worth doing for most. And given the opportunity cost
associated for taking those powers, they will remain that way so long as
there are better choices to be poached.
The new draft system encourages Heretics to play more with the tools at
their disposal. If you want to go for a specific combo from the side
path options, you may now do so by tapping into the knowledge shop.
Yes, the shop does include a few knowledges from the other paths. But
these are limited to 1 per path, are very expensive and can only be
unlocked very late into the shift.
## Drip Of the Mansus
The iconic heretic robe is actually sequestered to a side path that is
most easily access by only two paths at a time. Since heretic paths are
being made to be much more specialized, the most obvious way in which
this can be showcased is through an easily
identifiable outfit.
By using the robes, we can both telegraph WHAT heretic you are looking
at, and just how much power they've accumulated and when it is
reasonable to take the kid gloves off and treat them as a genuine
threat. If a heretic is in their
robes, that heretic is now a significantly more prominent danger to the
station.
It also serves as a useful means for gating some of the more powerful
effects of a heretic's path behind the robes, AND enable options for
disarming them of that power should they be captured without making it
something endemic to their mob.
A major problem with heretics is a lack of certainty as to how powerful
they have become. A heretics robes is one of the milestones to help
players dealing with heretics identify that.
### Will this be 100% fair and balanced?
This is a massive overhaul to a pretty complex and bloated antagonist.
I've done my best to show the changes to several maintainers and other
members of the community for their feedback. But at some point we'll
have to see how this behave in the environment to get a feel if
something is over or undertuned. (that's my way of saying, yes this is
likely gonna require a testmerge or two).
What I will say is that I'm not trying to change the core identity of
Heretic.
Heretics should have the upperhand in single encounters early on, be
able to joust a small group of players after they unlock their final
spell, and end the round when they ascend. They're a progression
antagonist. They should retain their payoff as well as pose a danger as
they grow stronger.
But if more players feel like they are more reliably able to play the
antagonist in more varied and interesting ways, rather than the
antagonist largely existing as a measuring stick for 'robustness' due to
its elitist design philosophy, then the rework has been a success. There
should be something for
everyone in the antagonist, as is true for all of our antagonist roles.
## About The Pull Request
Caused by #93165
I'm not sure but I think this was just missing a check for
`TRAIT_SKIP_BASIC_REACH_CHECK`, because soup pots are given that trait
## Changelog
🆑 Melbert
fix: You can interact with soup pots on stoves again
/🆑
## About The Pull Request
Closes#93285
Mood event from the death of a mob spawned "artificially" is 75% weaker,
lasts 80% the duration, and don't compound
An artificial monkey's death will now result
- -8 * 0.25 * 0.5 = floor(1) = 1 strength moodlet for the average crew
member
- ...Lasting 30 seconds (unless refreshed)
- -8 * 0.25 * 1.5 = floor(3) = 3 strength moodlet for animal friends
- ...Lasting 1.5 minutes (unless refreshed)
- -8 * 0.25 = floor(2) = 2 strength moodlet for compassionate crew
members
- ...Lasting 1 minute (unless refreshed)
Artifical spawning includes
- Moneky Cube
- Xenobiology Console
- "Life" reaction
- Summoned rats
- Spawner grenades
- Cult ghosts
Lemmie know if I'm missing any obvious spawns
## Why It's Good For The Game
While funny it was not my intention to have Xenobiology / Genetics /
Virology nuke your mood.
## Changelog
🆑 Melbert
balance: Death of artifical mobs (such as monkey cube monkeys) result in
a 75% weaker, 80% shorter moodlet that does not compound with more
deaths.
/🆑
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147
full credit to @Kapu1178 for the juice
instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
## About The Pull Request
This is was created because I found several rare and exciting canisters
in game and then finding out there is no way to actually construct the
vendor they belong to!...
<img width="768" height="385" alt="image"
src="https://github.com/user-attachments/assets/70261cea-daaf-41df-a212-21cef6d6bd0c"
/>
### This PR:
* Makes all noteable vendors constructable, if you have the canister.
* Adds canisters to syndismokes, syndiechem, liberation station,
magivend, shambler's juice and bombuddy
* Replaces the old tptally random canisters spawner, with a variety of
spawners weighted for power and split according to different themes.
* Adds the new main canister spawner to maint.
### Spawner weights
The random canister spawner from maintenance has a:
* **93,5%** chance to spawn a common station vendor refill(with weights
for wardrobes being somewhat reduced.)
* **6%** chance to spawn a rare and special vendor refill.
* **0.5%** chance to spawn a oddity level., super powerful vendor
refill.
## Why It's Good For The Game
One must never place a filled canister in maint if it isn't going to be
constructed It's wrong to make promises you don't mean to keep.
## Changelog
🆑
add: Nearly all notable vendors are now constructable if you have the
canister.
add Added refill canisters for syndiesmokes, liberation station,
magivend, bombuddy 3000, shambler's juice and syndichem.
add: Random vending refill canisters now have a chance to spawn in
maint.
image: Robco Toolmaker and Centdrobe canisters have new sprites.
/🆑
## About The Pull Request
Immerse element now uses an alpha filter rather than a vis_contents
object, which allows them to be much more smooth and seamless. There's
no longer a visible contour on fully opaque liquids, nor a janky effect
when you move in a liquid. This also fixes the broken fluid animation,
so now it actually has a bit of a wave to it.
<img width="179" height="183" alt="dreamseeker_PDjP1zyMRl"
src="https://github.com/user-attachments/assets/7c1bbefe-0e97-456e-a303-c34e6a1a238a"
/>
<img width="177" height="180" alt="dreamseeker_hGjKOyBL8f"
src="https://github.com/user-attachments/assets/6c3bc33f-a22c-452a-beb0-9dd44b080a7c"
/>
<img width="152" height="162" alt="dreamseeker_Et3eRd3NF6"
src="https://github.com/user-attachments/assets/1478aaba-d345-44de-8baa-9d0da0bc9d1c"
/>
<img width="185" height="182" alt="dreamseeker_5Iok1lUni2"
src="https://github.com/user-attachments/assets/4ac5fea4-24a7-46c2-b475-4445a43493b4"
/>
The code is immensely cursed in some places, ideally this should not
have to use vis_contents whatsoever but BYOND seems to be intent on
causing memory leaks whenever you try to set mutable's render_target to
an interpolated string, so I'm using a VIS_HIDE object as a relay for
the filter for the time being.
I've ended up changing some mob pixel_y offsets to pixel_z (as they
should've been from the start) to account for this (the logic is being
that pixel_y is "physical" position on the turf, while pixel_z is how
high above the turf something is)
## Why It's Good For The Game
The effect is less jank and looks cool.
## Changelog
🆑
refactor: Refactors immerse element to use alpha filters instead of
static overlays. It should look much prettier now.
/🆑
## About The Pull Request
This PR is a paid commission which adds a new quirk named "Isotropic
Stability", which provides radiation resistance.
Isotropic Stability prevents many of the side effects of radiation from
progressing normally, including mutations, collapsing, vomiting,
paralysis/weakness, and hair loss. The probability for burn splotches is
reduced down to 25%. Toxin damage is increased to 10, but only increases
from continued exposure to dangerous radiation, and the initial 10
points of toxin damage received from becoming irradiated is retained.
<img width="466" height="99" alt="image"
src="https://github.com/user-attachments/assets/72527b09-a41f-45de-a4f8-ed5bed386408"
/>
### Quirk Changes to Radiation Effects
Documented here is a list of the default effects for irradiation, and
the tweaks added by the quirk.
Side Effect|Default|With Quirk
-|-|-
Toxins|2 every 25sec| 10 every 25sec when near radiation.
Burns|11 every 30-60sec|-75% probability added
Hair Loss|7.5% probability every 2sec|None
Vomiting|0.5% probability every 2sec|None
Collapse|0.5% probability every 2sec|None
Mutation|0.5% probability every 2sec|None
### Granular Change List
- Created
`modular_zubbers/code/datums/quirks/positive_quirks/isotropic_stability/isotropic_stability.dm`
with `/datum/quirk/isotropic_stability`.
- Created
`modular_zubbers/code/datums/quirks/positive_quirks/isotropic_stability/irradiated_override.dm`
- Added variable `exposed_to_danger` which is `TRUE` if the mob was
recently exposed to irradiating levels of radiation.
- Added override `/datum/component/irradiated/InheritComponent()` which
sets `exposed_to_danger` to `TRUE` when the mob becomes irradiated more
than once.
- Added `TRAIT_RAD_RESISTANCE`
- Added define to
`code/__DEFINES/~~bubber_defines/traits/declarations.dm`
- Added global to `code/_globalvars/traits/_traits.dm`
- Added global to `code/_globalvars/traits/admin_tooling.dm`
- Edited `code/datums/components/irradiated.dm`
- Added define `RADIATION_TOX_DAMAGE_FROM_QUIRK`
- Added conditional to `/datum/component/irradiated/Initialize()` to
return early if the mob has `TRAIT_IRRADIATED`. Prevents
double-whammies.
- Added conditional to `/datum/component/irradiated/Destroy()` to return
early if the parent mob lacks the component.
- Added conditional to `/datum/component/irradiated/process()` to call
`process_tox_damage()` and return early if the mob has
`TRAIT_RAD_RESISTANCE` and `exposed_to_danger` is `TRUE`. Bypasses
`species.handle_radiation()`, which prevents irradiation from causing
hair loss, vomiting, mutation, and collapsing.
- Added conditional to
`/datum/component/irradiated/proc/process_tox_damage()` to apply 10
toxin damage if the mob has `TRAIT_RAD_RESISTANCE`.
- Added conditional to
`/datum/component/irradiated/proc/give_burn_splotches()` for a 75%
chance to return early if the mob has `TRAIT_RAD_RESISTANCE`.
## Why It's Good For The Game
The quirk allows radiation to be slightly less inconvenient and adds
randomness to its lethality.
Users of the Isotropic Stability quirk have reduced side effects of
becoming irradiated, however active dangerous radiation sources will
still metabolize into toxin damage, and burns may occur more randomly.
The quirk provides a unique and impactful effect which reminds me of
"Ghouls" from Fallout games. Players could design species which are
similarly resistant to radiation, and perform slightly differently in
roles that expose them to dangerous levels of radiation.
Additionally, because of the reduction in side effects, radioactive
foods/drinks such as Nuka Cola are substantially less detrimental to
drink for users of this quirk. Toxin damage from being irradiated will
still increase, but only as long as such substances are in their blood.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
<img width="466" height="99" alt="image"
src="https://github.com/user-attachments/assets/c7e66b54-5f03-4a3a-918b-9937628f55cc"
/>
<img width="172" height="163" alt="image"
src="https://github.com/user-attachments/assets/0082b9ab-e331-4227-b719-24e2a7649fe4"
/>
<img width="554" height="65" alt="Screenshot 2025-08-10 174648"
src="https://github.com/user-attachments/assets/e72a980e-f66e-4374-af7c-ebdb1aae0072"
/>
<img width="251" height="208" alt="Screenshot 2025-08-10 174424"
src="https://github.com/user-attachments/assets/e3453314-1417-4a4a-91b8-48be700b09e2"
/>
</details>
## Changelog
🆑
add: Added new Isotropic Stability quirk.
/🆑
## About The Pull Request
The recipes are locked behind a particular skillchip anyway. We might as
well just use the framework for learnable recipes instead of relying on
a particular trait with no other use to it. This also prevents these
recipes from showing in the menu even if the requirements aren't met.
## Why It's Good For The Game
See above.
## Changelog
🆑
refactor: Underwater basketweaving refactored so it doesn't show in the
crafting menu unless you've the skillchip active.
/🆑
## About The Pull Request
TL;DR: "What do you mean we didn't have an old fashioned in the game
before?"
This adds a bunch of different classic cocktails to the game that I
always felt were rather odd holes in the lineup of drinks that
bartenders could make, as well as a few less classic ones 'cause why
not. Adds thirteen new alcoholic drinks and one non alcoholic one.
Mechanically relevant drinks include the Blue Blazer and Hot Toddy which
warm you up like coffee, Bitters and Soda which settles upset stomachs,
and the Suffering Bastard which, in it's role as a hangover cure, calms
nausea, prevents headaches, and very slowly heals brain damage, giving a
way to heal chip brain damage that doesn't require chemistry or surgery.
Full list here: https://hackmd.io/@0lHAWBNkSXixU4v6xxYS_w/SkjlmIbsgx
<img width="439" height="435" alt="drinks"
src="https://github.com/user-attachments/assets/406ca285-63af-49d4-b0e8-176edb251291"
/>
PS This is basically my first real project and also my first time
spriting for anything, so I would really appreciate any advice or
reccomendations.
## Why It's Good For The Game
More variety for service is always nice, but also many of these drinks
are extremely commonly ordered in real world bars. Adding them here
fills some weird gaps in the bar's line up, allows people to order more
drinks that they personally like, and decreases the amount of awkward
interactions in which people order a drink that they're familiar with
and then get confused when a partender somehow can't give them an
daiquiri despite having everything to make it.
## Changelog
🆑
add: You can now make 15 new classic (and some less classic) cocktails.
Includes old standards like the Old Fashioned, Daiquiri, Ramos Gin Fizz,
and more!
/🆑
## About The Pull Request
Dragon borgs, due to their sprite being bigger than any other sprite
included, used to have their text offset to the side and appear from
their waist, not only that, but they also missed the TRAIT_R_TALL trait,
that even shorter borgs like NiKa had.
<img width="404" height="231" alt="image"
src="https://github.com/user-attachments/assets/4eadd8be-5178-4465-8772-65e84cfa78f6"
/>
This PR adds a new trait exclusive to the Dragon that should fit any
other borgs that are made the same size (If there's more made of the
same size, considering how these sprites are the only exception so far.)
this trait also has a higher height, so the text appears properly above
their head, and contains the properties of the wide trait (Since it's
made for 64x64 sprites).
<img width="244" height="230" alt="image"
src="https://github.com/user-attachments/assets/0629befc-8bfa-4db5-b1b6-12e6d07f32f8"
/>
On the process of the PR, I also managed to centre the text of the borgs
that used TRAIT_R_WIDE, so when they speak their messages won't appear
offset to the side of where they're standing.
<img width="231" height="131" alt="image"
src="https://github.com/user-attachments/assets/ccfe2fda-9e8a-41bc-a357-84febdfa2010"
/>
<img width="161" height="139" alt="image"
src="https://github.com/user-attachments/assets/0d36ef41-7590-4b63-a655-ea2701406654"
/>
## Why It's Good For The Game
No more offset texts! Now the messages appear where they should.
## Proof Of Testing
This one's only mostly included to demonstrate that I did not break the
TRAIT_R_TALL text offsets, the rest of the proof is on the screenshots
in the description.
<details>
<summary>Screenshots/Videos</summary>
<img width="144" height="132" alt="image"
src="https://github.com/user-attachments/assets/db4fc09e-9c58-44f1-9d64-ab4c2790075d"
/>
<img width="423" height="90" alt="image"
src="https://github.com/user-attachments/assets/1e7bae8c-b08a-46ce-9009-b600cb942c77"
/>
</details>
## Changelog
🆑
fix: fixed wide borgs text offset
fix: fixed "Dragon" borg text offset
/🆑
## About The Pull Request
moves all implementations (im aware of) for "Im a parent type dont spawn
me please" to the datum layer to standardized behavior
adds a standerized proc for filtering out "bad" items that we dont want
spawning. applies to it the subtype vendor, gifts, and a new spawner and
mystery box for a random gun (neither playerfacing)
"port" of https://github.com/shiptest-ss13/Shiptest/pull/4621https://github.com/user-attachments/assets/22f6f0b2-b44e-411a-b3dc-6b97dc0287aa
small warning: I dont have EVERY abstract type defined right now but,
ive done a good enough job for now. Im tired of data entry rn
## Why It's Good For The Game
standardizing behavior. Might be a micro hit to performance however
having this lets us not rely on icon state to determine whether
something is a parent type and makes it much easier to tell something is
a parent type (could be applied further to things like admin spawning
menus and things like that).
need feedback on if this is actually good for the game.
## Changelog
🆑
add: Soda cans show up in the silver slime drink table.
add: Examine tag for items that are not mean to show up ingame.
refactor: Standardizes how gifts rule out abstract types.
fix: gifts no longer check if something has an inhand, massively
expanding the list of potential items.
/🆑
## About The Pull Request
Closes#92778Closes#86829
<img width="347" height="39" alt="image"
src="https://github.com/user-attachments/assets/c50bd1ff-8c00-47a7-a31a-617fae2adc5b"
/>
1. Splits `TRAIT_UNKNOWN` into `TRAIT_UNKNOWN_APPEARANCE` and
`TRAIT_UNKNOWN_VOICE`
2. Renames some stuff like `getvoice` and `getspecialvoice`
3. Gets rid some crummy signals around `get_visible_name` and
`get_voice`
4. Heads now apply the disfigured trait when relevant (rather than
snowflake checking for damage amount)
5. Ling voice refactored into using special voice (it was only used by a
viro symptom anyways; I don't anticipate this overlap being problematic)
6. Mask voice changer refactored into a trait
## Why It's Good For The Game
Potted plants shouldn't have magical voice concealing powers -
especially not over radio, but not over in person either. It's a damn
plant
So I addressed this by refactoring our face and voice system. Overall
things should be a lot cleaner and easier to use.
## Changelog
🆑 Melbert
refactor: Refactored a lot of code relating to human face and voice, ie,
what shows up in examine and in say. Report anything odd when examining
people, with ID cards, when talking over radio, or when disguised
refcator: Refactored how you get disfigured when your head's super
damaged
refactor: Refactored ling mimic voice and traitor voice changer
del: Potted plants no longer hide voice. They still hide appearance,
though
qol: Honorifics now show in examine / in world, rather than only when
speaking.
/🆑
## About The Pull Request
Adds a new category to the crafting menu allowing anyone to create
previously uncraftable flora objects to decorate their
bar/chapel/maintroom creations such as flowers, bushes, ferns and tall
grass.
## Why It's Good For The Game
Several times have the admins been asked to spawn such decorations in
the past, as it stands the only way to be able to get these objects for
you builds is for them to be pre-existing in the map and for you to
painstakingly dig them up one by one, move them and replant them where
you need them.
This PR aims to make these great decorations available to everyone,
letting them create beautiful lush gardens anywhere with only some
minimal botany tools and plants required. It will also incentivize
interacting with hydroponics more, as there will be people asking for
grass and wood. (also adds a use to tower cap longs before you turn them
into sheet wood)
## Proof Of Testing
I compiled the code and the crafting tab shows up as it should and
everything within is craftable.

## Changelog
🆑
add: Added new Gardening Tab in the Crafting Menu
add: New recipes for various existing Flowers/Bushes
/🆑
<img width="819" height="348" alt="image"
src="https://github.com/user-attachments/assets/0424ec76-2648-43d3-8e94-d44558b44bcf"
/>
## About The Pull Request
Follow up from #92751 - Not to conflict with it but as an idea on how to
change it for the long run.
Paramedics currently start with broad department access. This proposal
replaces that by granting temporary department access only when an
emergency is called.
When a player presses "Call X" on a Requests Console, responders called
receive temporary access to the common work areas of that department.

> [Security] The Automated Announcement System coldly states, "SECURITY
EMERGENCY in Research Lab! (Called by Sloan Keppel, Scientist) RETA door
access granted to responders."
> [Science] The Automated Announcement System coldly states, "RETA
activated (Called by Sloan Keppel, Scientist). Security personnel now
have temporary access to your areas."
They do not receive access to sub rooms or high risk areas.
- Access lasts 5 minutes (configurable)
- Access is removed when the timer expires or the emergency is resolved
- No mapping changes are required (uses existing request consoles)
- Removes Paramedics round start access but gives them external access
to rescue bodies in space by default
- Flashing blue lights on doors affected by temporary access
<img width="897" height="837" alt="image"
src="https://github.com/user-attachments/assets/97980cb4-3481-44b6-9f96-fc241ca16f57"
/>
**The full document is here:
https://hackmd.io/@NM8HxpG_Toahg5pimrpsKw/Hk0tKq3Yxe**
**Wiki documentation for players and admins:
https://wiki.tgstation13.org/Guide_To_RETA**
## Why It's Good For The Game
- Removes paramedics’ broad “Doctor+” access.
- Keeps them effective as emergency responders.
- Responders must be called in OR access upgraded.
- Keeps sensitive areas secure.
- Prevents spam or stacking through cooldown.
- Scales across all maps without mapper work.
- Gives admins a new tool for temp department wide access
- Dedicated logging file and unit tests
- Very performant, only affects living players with connected mind
- Gives Request Consoles more use as an alarm button and further utility
- Imagine later on "Request Janitor" which sorts access and tells
Janitor where needed
## Changelog
🆑
add: RETA System - Request Consoles give temporary access to responders
when used for some areas. Paramedics lose broad access but get external
space access.
qol: Request consoles now show name and job role on call message &
Cooldown on spamming calls + sound prompt
qol: Medibot access no longer based on Paramedic trim ID - Still has
original access
image: Added "lights_reta" for temporary door access when in effect
admin: Gives admins "RETA door access" verb for giving department wide
area access on maps.
config: New config settings for RETA
/🆑
## About The Pull Request
- Fixes#88595
Cargo's gift giving was so bad it landed them on Santa's _very_ naughty
list. The ~cargo techs~ elves in charge were handing out game breaking
equipment.
This closes a loophole that allowed players to spam dumpsters during the
Christmas event for gifts that could contain admin tools and other debug
loot. I've removed Christmas presents (and holiday items) from the
dumpster spawns to put a stop to this.
## Why It's Good For The Game

Players were using the cargo system to purchase and dumpster dive
endlessly for OP shit. During the Christmas event, these dumpsters had a
high chance of spawning the special `/anything` gifts, which can contain
literally any item in the game, including admin tools and debug
equipment. This exploit bypassed the intended rarity of these items,
which were meant to be one-time, limited gifts from Santa's bag or the
Christmas tree.
## Changelog
🆑
fix: Santa has put cargo in his very naughty list for spam producing his
presents by dumpster diving. This fixes Christmas presents (and other
holiday items) from spawning inside dumpsters.
/🆑
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
Converts the following into item interaction:
- porta_turret
- porta_turret_cover
- plating/foam (Foam plating)
- plate
~cup (and mortar subtype)~
- Recharger
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Conversion from afterattack to interaction
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and its effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
refactor: change some attack procs to use item interaction
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
## About The Pull Request
Fixes#85028
Obscured flags and covered flags are tracked on carbons, updated as
items are equipped and unequipped. It's that shrimple.
Closes#92760
Just removes the species exception checks for not making sense
Also refactors handcuffs / legcuffs removal. In all of these situations
they were hardcoded when they could easily just use an inventory proc to
work.
## Why It's Good For The Game
Stops a million excessive calls to `check_obscured_slots`
Makes obscured behavior more consistent
Makes obscured behavior easier to use
Cleans up human rendering (There was some cursed stuff before with
render item -> updated obscured -> update body -> cause side effects)
## Changelog
🆑 Melbert
del: Golems which somehow manage to grow wings and somehow manage to
equip something that covers their jumpsuit can no longer fly.
(Seriously, this will not affect anyone)
refactor: Refactored clothing obscurity entirely. Items should be a
loooot more consistent and what covers what, and should update a lot
snappier. As always, report any oddities, like mysteriously disappearing
articles of clothing, hair, or species parts
refactored: Refactored handcuffs and legcuffs a bit, report any odd
situations with cuffs like getting stuck restrained
/🆑
## About The Pull Request
This PR adds the ability to install a B.O.R.I.S. in a circuit that
contains an MMI component. These circuits can then be remotely connected
to by an AI by clicking on them or anything they are inside of. To
indicate that a circuit allows remote AI connection, an indicator is
given to the circuit and anything containing it.
Additionally:
- Refactors the MMI component to use `item_interaction`, since it was
pertinent.
- You cannot insert an MMI/B.O.R.I.S. into a locked circuit.
- You can no longer hotswap MMIs/B.O.R.I.S.es - you must manually eject
the inserted one.
Let me know what changelog labels I should use for the hotswap removal
and the prevention of insertion into locked circuits.
## Why It's Good For The Game
If you can put an MMI or posibrain in a circuit, why not allow an AI to
use it using a B.O.R.I.S.?
## Changelog
🆑
add: B.O.R.I.S.es can be installed inside of integrated circuits with
MMI components, allowing an AI to remotely interface with them the same
way an MMI or posibrain could.
refactor: The MMI component now uses item interaction behavior for
inserting MMIs/B.O.R.I.S.es.
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
- Wrapping a crate with package wrapping while pulling it will now
automatically make you grab it
- You can now open the crate while dragging it with the H.A.U.L.
gauntlets if you're the one who's pulling it. Also applies to other
items (including MOD modules) that have the component
https://github.com/user-attachments/assets/7b4743c8-855d-4274-89ca-b0507f6d3e0e
## Why It's Good For The Game
QOL for cargo technicians - having to constantly grab and let go of
crates is very annoying
## About The Pull Request
Rather than use hardcoded timers for the logout report, the report
instead utilizes a timer based on config values. The default value is
the current live value.
This timer can also be configurated to utilize randomization. Currently,
it defaults to randomizing between -3 minutes to +3 minutes for when the
report is sent.
The logout report timer is also added to the admin log.
## Why It's Good For The Game
This shouldn't be dictated by the codebase, as it is an admin tool.
## About The Pull Request
red raptors will now be able to retaliate against mobs adjacent to it
while ridden.
## Why It's Good For The Game
red raptors dont have much use compared to its colleagues. this gives it
a bit of a unique purpose and makes it a viable option to have out on
the field
## Changelog
🆑
balance: red raptors are now able to attack while ridden
/🆑