## About The Pull Request
Removes the IC tab in its entirety
- Some mobs (Blob Minion & Lightgeist) had manually removed the "pull"
verb, this replaces it with taking away their pull force.
- Lightgeist had their "Me" verb manually removed, this is replaced by
giving them Emotemute trait (the same that mime's bane gives)
- Floor Changer: You can now RMB the arrow buttons to look in a
direction w/o moving. Added a tip to help with this.
- Exit Hivemind: Already an action button and was removed without
further edits
### Removed entirely
Rest
Resist
Look Up/Down
Move Upwards/Down
Activate Held Object
Open Language Menu
Memories
View Skills
### Moved to command bar (secret verb ooh) because I am biased
Sleep
Navigate
### Martial Arts
Martial Arts had a button to see your current skills & the ability to
cycle between artstyles. This was replaced with 1 action button that
does both of these.
<img width="317" height="148" alt="image"
src="https://github.com/user-attachments/assets/afed910f-b6b6-441d-86cb-dade0e253044"
/>
Name auto-updates as you swap artstyle to whatever help verb the current
style uses. Mention of RMB in the name is only there if you have more
than 1 martial art, but the desc will remain just so players can see it
even if they only have one, for future reference.
## Why It's Good For The Game
Brings greater visibility to Martial Art stuff, and especially since the
stat panel is being made optional we should not be hiding ANYTHING in
there.
This also helps me with my project listed in
https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view
And also fixes some sorta-removed features due to removing verbs not
matching people's actual powers due to new features like "Custom Me" and
"Ctrl Clicking".
## Changelog
🆑 SirNightKnight (sprites), JohnFulpWillard
del: Deleted the "IC" tab of the stat panel.
fix: Lightgeists can't emote or pull as intended.
fix: Blob minions can't pull again.
qol: Martial Art users now have an action button for their
artstyle-related businesses, rather than it being in the stat panel.
qol: You can now right-click the move up/down UI buttons to look in the
direction without moving.
/🆑
## About The Pull Request
Since grabs that failed due to a comsig return or the grab being blocked
returned FALSE, they'd still result in the target being passively
grabbed from being pulled as that was called upon the grab failing. I've
added multiple return types to grabs to alleviate this.
Per anne's recommendation, hunter boxing is exempt from the grab
restriction (since it never functioned in the first place).
## Changelog
🆑
fix: Fixed boxing or successful blocking not preventing grabs
/🆑
## 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
Sleeping Carp tried to remove the lang holder when the owner was being
destroyed, which would cause the holder to be re-instantiated
mid-deletion
## Changelog
🆑
fix: Fixed lingering language holders caused by the sleeping carp
/🆑
## About The Pull Request
Supply pod had an unnecessary check because dismember() already checks
for unremovable body parts. Also there was an e missing from sleeping
carp text.
## Why It's Good For The Game
spellcheck, also I left the supply pod stuff out of the changelog
because it isn't player facing
## Changelog
🆑
spellcheck: fixed a missing e in sleeping carp's recall teachings verb
/🆑
Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
## About The Pull Request
Adds an alt-click skin to the Kaza Ruk gloves which match their formal
attire
<img width="113" height="231" alt="image"
src="https://github.com/user-attachments/assets/5f64d09e-a294-423e-b723-bb094ad49fef"
/>
No new sprites, all it does is apply a color matrix
## Why It's Good For The Game
The only thing that keeps me from taking the formal attire for a spin is
that the gloves don't match.
This is already theoretically possibly by just getting a spray can, but
I figured it could just be an alt-click thing. Seems appropriate.
## Changelog
🆑 Melbert
add: Wardens can alt-click-reskin their Kaza Ruk gloves to match their
formal attire
/🆑
## About The Pull Request
Boxing punches no longer halve your damage for using the same mouse
button twice.
Instead, we now have a few different 'combos' based on what mouse and
what hand we use when punching. As in, swapping hands to get different
combos
Left Left/Right Right with matching hand is a straight punch
Left Left/Right Right with the opposite hand is a jab
These moves are just normal punches, though can still apply extra
effects.
Left Right/Right Left and finishing with the matching hand (right for
the former, left for the latter) is the right/left hooks already used.
These do the same as before, but also slow your next attack slightly.
Left Right/Right Left and finishing with the opposite hand (left for the
former, right for the latter) is an uppercut, which has higher knockout
probabilities, but also slows your attack.
Adds some silly extra moves as well.
Evil Boxing gets Sucker Punch, which is any blow dealt from behind. You
know, because you don't give a shit about being a good person. This can
knock out in one blow (if you're lucky). If the target is grabbed, a
knockout punch will also send them flying backwards. Pretty much only an
evil boxing feature.
Fixes punching mitts talking about rock breaking. Oops.
## Why It's Good For The Game
The damage malus mechanic wasn't super fun to actually do in practice
and messed with people in a way that was hard to understand.
Now, the combos are a little more interactive and there really isn't a
WRONG choice. Just do what seems cool, makes sense to you (left to right
buttons? left to right hand) and it should always work out in your
favour.
I forgot a mild bit of text about rock breaking in the punching mitts.
That's it.
## Changelog
🆑
balance: Boxing combos are now broader and user friendly. Alternating
combinations of buttons AND hands produces different results, but all of
them good. Experiment!
balance: Evil boxing now has a Sucker Punch. Hit someone from behind to
potentially knock them out cold!
fix: Punching mitts no longer mention punching rocks.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
## About The Pull Request
High frequency blades, both null rod variant and admeme variant, can
block mech melee attacks. For the former, that is the only thing it can
block. Great if you're fighting a lot of mechs as a chaplain I guess.
And you're also really committed to the bit.
Weapons that were vibro subtypes are now claymore subtypes. The only
difference here is that they now have 30% block instead of 35% AP.
Null rod high frequency blades are now two-handed. This mostly
determines force changes (10 unwielded, 18 wielded), and mech attack
block chances.
Mech melee attacks respect block...assuming the blocking source can even
block the attack in the first place. Currently, the few sources that can
block/avoid mech attacks are;
- high frequency blades
- energy katanas
- Those staff nullrods (its a holy force field, iunno)
- wizard modsuit shield (and it will eat literally every single charge
it has to do that)
- Sleeping Carp evasion (and only at half the possible chance)
- CQC defense mode (themed as dodging the attack, and also halved)
- probably something I overlooked when I implemented OVERWHELMING_ATTACK
originally and have overlooked here as well.
Just think 'could this help avoid being hit by a road roller being
dropped on you' and go with your gut as to whether or not it is
appropriate if you spot something in the wild that seemingly can block a
mech.
## Why It's Good For The Game
> High Frequency Blade
I wanted to elevate the meme and that is as deep as this goes. Also I
wanted to make this two-handed, much like the true version.
The only thing it is lacking is the cool attack functionality, but I'll
be damned if I can get that to work in a sensible fashion for a crew
weapon...
> Vibro subtype
A lot less of these than I thought. And most of them seemed more
appropriate as claymore types anyway.
> Mech Block
I seeded this previously by making mech clamps respect block. I've now
come back to fully implement it in order to facilitate MGR memes.
For the most part, mechs should still enjoy being largely unblocked by
most sources, even from things like operative suit shields, and
certainly not from actual shields (which I've stripped the ability to
block the attack from entirely) and melee weapons.
The sources that can block them do so poorly. Or, in the case of the
high frequency blade, very well and that's pretty much the only thing it
IS good at blocking.
## Changelog
🆑
balance: High frequency blades (both null rod and admin versions) are
able to block melee attacks from mechs.
balance: High frequency blade null rods are now two-handed weapons.
balance: Mech melee attacks can be blocked or avoided by a few rare
sources.
/🆑
## 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
<img width="535" height="55" alt="image"
src="https://github.com/user-attachments/assets/f6f23717-72f2-4b44-88db-e9c7a0d53460"
/>
If you are not wearing shoes, the code runtimes instead of returning a
point value. Null carp points.
## Why It's Good For The Game
Fixes a bug
## Changelog
🆑
fix: fixes a bug that caused you to need to wear shoes in order to gain
any defensive benefit from the sleeping carp martial art style
/🆑
## About The Pull Request
Changing attacks has balloon alerts
## Why It's Good For The Game
Dont wanna look in chat
## Changelog
🆑
qol: Kaza Ruk has balloon alerts when switching attacks
/🆑
---------
Co-authored-by: John Doe <markkavalerov87@gmail.com>
## About The Pull Request
Reworks Sleeping Carp significantly.
### Returning Moves: Stomach Knee and Wrist Wrench
Stomach Knee, much like the previous incarnation, causes the victim to
be winded and stunned, though this version only briefly stuns the
victim. It also deals stamina damage and silences the victim for five
seconds. It is performed by a Grab Punch combo. Named Kraken Wrack.
Wrist Wrench, much like the previous incarnation, disarms the victim of
their held items. It also potentially dislocates or breaks their arm, as
it rolls with a very high wound chance. It is performed by a Harm Grab
combo. Stole Gnashing Teeth's name.
### Gnashing Teeth (as it was) is gone
This move didn't do very much at all other than being a harmful punch
with more damage. Throwing a bunch of normal punches won't result in
anything now.
### Harm Punches are no longer have special overrides, but Sleeping Carp
does grant perfect accuracy.
Rather than use a bespoke override, Sleeping Carp now merely uses your
normal unarmed punch for its standard normal punch. However, rather than
leave things to chance, Sleeping Carp grants you perfect accuracy with
those standard punches.
### Grabs are treated as one stage higher
Now that martial arts can directly interact with grab state, as well as
some prior changes to how effective compared to actual grab state is
determined, I've reintroduced Sleeping Carp's stickier grabbing by
making it so that they elevate the effective grab state by one stage.
This is not instant aggro-grabbing like they used to have. This just
makes it so that if they try to resist out of a passive grab, they may
fail as though it was an aggressive grab, but it won't stun them until
it is elevated to a proper aggressive grab.
### What you wear is important for determining the effectiveness of your
Attack Dodging (and attack dodging is broader)
Sleeping Carp's projectile dodging and now attack dodging is based on
whether or not you're 'on theme'. That is, if you are wearing nautical
themed clothing and other factors.
At a baseline, Sleeping Carp has perfect projectile dodging and no
melee/unarmed avoidance.
To improve your chances, you need to;
- Wear martial arts or carp themed clothing on your head. (20% if one is
present, but it only counts one)
- Wear martial arts or carp themed clothing on your chest (20% if one is
present, but only counts one)
- Wear appropriate footwear, like sandals. (20%)
- Be a literal carp. (75% flat)
- Mutate yourself into a carp person. (20%)
However, your chances of avoidance diminishes if:
- You wear armored clothing on your head and chest. (based on Melee
armor)
- While lying on the floor (30%)
Holding objects diminishes your chances as well, This is based on the
weight of the object, and whether or not the object is wielded. Normal
sized objects, for instance, are -30%, and would be -60% if wielded.
It will not diminish your chances if:
- The object is Small or smaller.
- The object is an abstract object or hand grafted object and it doesn't
have block chance.
- The object is in the exceptions list.
- **The exception list is as follows:**
- Nunchaku (this is spies exclusive)
- Bo Staff (the unobtainable one)
- Monk's Staff (the chaplain's null rod)
- Bamboo staff
- Cane (like, walking cane)
- Knives
- Bolas
- Toolboxes
- Spears
- Shortswords (the ones from the medieval pirates)
- Nullblade (it's a shortsword)
- Extendohands (because lol)
- Mops
- Push Brooms
- Baseball Bats
- Claw Hammers
- Carp plushies.
<details>
<summary>A list of appropriate clothing</summary>
Headwear
- Strange Bandana (which come in the kit)
- Maid headband
- Fancy Hairpin
- Carp Mask
- Carp-skinned Fedora
- Carp Costume Hood (this comes with the costume)
- Carp Costume Spacesuit Helmet (as above)
Chestwear
- Martial Gi (which come in the kit)
- Carpskin Suit
- Carp Costume
- Carp Spacesuit
- Maid Outfit
- Kimono
- Yakuta
- Trenchcoats
- Geisha Outfit
- [Swag Outfit](https://www.youtube.com/watch?v=l6DmoPlq3S4)
- Eastern Monk's Outfit (the chaplain outfit)
- Buttoned down line of clothes
- Blazer jacket
- Lawyer jackets
Footwear
- Sandals (which come in the kit)
- Swag Shoes
- Laceup Shoes
</details>
As an example of being OFF theme, being in a full security outfit would
reduce your avoidance chance by a whopping 80%.
You avoid attacks while in combat mode, much like projectile deflection
does on live. You can only get up to a 75% chance melee/unarmed
avoidance.
## Why It's Good For The Game
> Returning Moves
People quite liked some of the older moves, and there weren't as many
dials around at the time to make them particularly more interesting when
I first removed them. We were aiming for an out and out stun removal as
a whole codebase, but largely we're ended up still being comfortable
with minor stuns here and there. Stomach Knee can be one of them.
Wrist Wrench was something I realized I could reintroduce with literal
limb breaking thanks to wound changes. Arm dislocations/breakages are
surprisingly rare as a wound type, and since it is an attack on a
specific arm, not quite as good for bringing someone to death, but quite
good for leaving someone with a maiming wound they now need to fix to
keep pursuing you. Highly useful for those stubborn stun immune targets,
who Sleeping Carp struggles to fight. As in, they can't really fight
them.
> Grab Stage
A bit of my work and a bit of Melbert's has resulted in this being a lot
more reasonable to reintroduce as a benefit. The original instant
aggro-grabbing was definitely very oppressive, since it was a
pseudo-hardstun that lead into a hardstun. Now this is a bit softer by
comparison, and surprisingly quite important. I think the loss of good
grabbing ended up filtering a lot of folk somewhat hard.
> Removal of the override
I was really taken with Spider Bite using baseline punches as the
groundwork for the martial art and I wanted to work into that. Not only
does it mean becoming a carp person is actually a great idea beyond the
avoidance mechanic, but also for your actual basic punches improving. It
just in general feels like it opens up possibilities in the game world
to experiment and the design of martial arts in general. We should make
more martial arts work like this.
> Avoidance
My original rework had one glaring flaw that continues to haunt it to
this day. Defense stacking on Sleeping Carp is ridiculous. Layering
defense upon defense makes the one particular immunity it grants,
projectile immunity, all the more oppressive. Hiding behind high block
and high armor makes you a menace.
The end result is that more people utilize Sleeping Carp not for the
martial art part, but for the projectile immunity part, usually using
something else instead like a baton.
This rubs me the wrong way. You would think and hope that the reason
people take the martial art is to be a goofy martial artist in space.
So, I'm implementing an idea I knew I could never pull off in the
framework at the time.
I'm implementing Unarmored Defense, bitch.
(I was totally also not inspired by Payday 2 in any fashion, nope, not
at all)
I like the idea of forcing a choice between the goofy outfit that gives
you bonuses over just getting the biggest armor you can find and
turtling like a motherfucker. And I want people to focus on the martial
arts and benefit from the martial arts when you're specifically unarmed.
Maybe right now some of the restrictions are a little severe, so if
anyone has any opinions, lemme know.
## Changelog
🆑
balance: Completely reworks Sleeping Carp, again.
balance: The return of Stomach Knee (Kraken Wrack) and Wrist Wrench
(Gnashing Teeth). Time is a flat circle.
balance: Sleeping Carp has better grabs (no instant aggro grabs)
balance: Sleeping Carp integrates normal unarmed punch by not overriding
your normal punches.
balance: Sleeping Carp's deflection weakens if you wear armored headwear
and body armor, or while carrying objects. However, by wearing martial
arts (or carp) themed outfits, you can improve your defenses instead,
allowing you to not just dodge bullets, but also incoming melee attacks.
balance: Some objects are exempt, like staff weapons (such as mops or
the monk's staff), short blades (like knives and shortswords), club-like
(baseball bats and toolboxes), or thematic (like extendo hands and carp
plushies)
balance: You can also get these improvements by being a literal carp or
being a carp person.
/🆑
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
## About The Pull Request
Hunter boxing now uses the full quantity of damage inflicted by your
punches, rather than half. We also multiply our experience based on the
max health of the creature we're punching.
You do not get the exercised status effect for punching mobs with Hunter
Boxing.
You do not earn experience for punching dead things.
Hunter Boxing can now brutalized Crustaceans and Reptiles. This does not
include lizardpeople, as they're humanoid. No, you can't Hunter Boxing
the ashwalkers. Or your lizard QM boss.
## Why It's Good For The Game
It takes a really, really, really long time to level up using Hunter
Boxing. Normal athletics progression is largely kept in line by the fact
that you need to go sleep every time you do a workout session.
Hunter boxing, however, does not allow you to do that because you're
currently trying to punch xenofauna and demons to death while in the
middle of a hell planet and trying not to die.
The fact that fauna fight back when punched means leveling up with
hunter boxing has its own internal complications for preventing
athletics progression from being a walk in the part. Obviously, the
threat of death is its own punishment mechanic.
It's maybe a bit much of an ask miners to be weightlifting when they
should be mining after all.
## Changelog
🆑
balance: Hunter boxing now grants a reasonable amount of experience in
Athletics for punching the absolute shit out of the local wildlife.
balance: Includes crustaceans and reptiles to the list of mob types that
Hunter Boxing is allowed to mangle with their bare hands. You still
can't use Hunter Boxing on lizardpeople. Or crabpeople when they are
added in 2030.
/🆑
## 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
1. Penbang
A flashbang disguised as a pen. Clicking the pen arms the flashbang and
has no other visual or audio tell besides the pen clicking.
The fuse's length is based on the angle the pen cap is twisted.
Works as a normal pen otherwise.
2. Camera Flash
A camera with a high power flash.
Clicking on an adjacent target will flash them, ie, as a handheld flash.
Works as a normal camera otherwise - no tell.
3. Dagger Boot
A pair of jackboots with a blade embedded in them.
Makes your kicks sharp, meaning they will cause bleeding.
Looks like normal jackboots otherwise, though has a tell on
double-examine
4. Monster Cube Box
A box containing 5 monster cubes, which spawn into a random monster when
wet.
Monsters include Migos, Carps, Bears, Spiders, Wolves...
5. Spider Bite Scroll
A martial art focused around kicks and grabs.
- Punches against standing, staggered targets will instead kick them,
applying the bonus accuracy and damage that you'd expect from a kick.
(Also combos with the dagger boots)
- All kicks have a chance to disarm the target's active weapon. Chance
increases per sequential kick.
- Grants you the innate ability to tackle. This form of tackling has a
very high skill modifier, meaning you are very likely to get a positive
outcome (or at least, not fail). You also get up fast from it.
- Your grabs are 20% harder to escape from and deal an additional 10
stam damage on fail.
## Why It's Good For The Game
1, 2, 3: Just some random flavorful items, giving them some more toys to
use to complete bounties.
4: Shenanigans, for people who just wanna do "funny thing" instead of
focusing on big loot.
5: I figured it would fill a fun niche: Spies are commonly depicted as
martial artists, and the only martial arts they can obtain is Krav Maga
(it's not unique to Spies) and Sleeping Carp (it's not unique to Spies).
This gives them their own thing that people may look forward to
acquiring and playing around with.
As for the design of it, I wanted to add something that synergizes with
one of the other other items, so in the field if you notice both of them
pop up you really want to go for both.
The rest of the design I just filled in as vaguely useful and flavorful
tools a spy might want for kidnapping or detaining people: Better grabs,
tackling, and disarms.
Then I just went with the flavor of it being something the Spider Clan
used to teach to their Spies / Ninjas, kinda like an analog to the real
life Ninjutsu. (Maybe we can give it to Space Ninjas as well later...
since it doesn't especially benefit Ninjas in any way.)
## Changelog
🆑 Melbert
add: Adds 5 rewards to the Spy item pool: Penbang, Camera Flash,
Dagger-Boot, Monster Cube Box, and the Spider Bite martial art
/🆑
## About The Pull Request
Converts as many time vars expressed in deciseconds as I could find to
use time defines.
## Why It's Good For The Game
Makes these values neater and more readable.
## Changelog
🆑
code: Converted a lot of time-based variables to be expressed with time
defines.
/🆑
# Conflicts:
# code/modules/clothing/head/hat.dm
# code/modules/clothing/shoes/boots.dm
# code/modules/clothing/suits/utility.dm
## About The Pull Request
Converts as many time vars expressed in deciseconds as I could find to
use time defines.
## Why It's Good For The Game
Makes these values neater and more readable.
## Changelog
🆑
code: Converted a lot of time-based variables to be expressed with time
defines.
/🆑
## 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
Martial arts styles that feature a combo UI add themselves to
`hud_used.infodisplay` when they're activated, but they do not remove
themselves from there before qdeling, leading to a hard delete and the
user's viewport becoming unusable. (See downstream report
[here](https://github.com/Bubberstation/Bubberstation/issues/4091) for
screenshots). Adds code to clean up properly in `deactivate_style()`
## Why It's Good For The Game
Fix hard delete and HUD bug
## Changelog
🆑
fix: fixed scarp breaking your HUD sometimes
/🆑
## About The Pull Request
Martial arts styles that feature a combo UI add themselves to
`hud_used.infodisplay` when they're activated, but they do not remove
themselves from there before qdeling, leading to a hard delete and the
user's viewport becoming unusable. (See downstream report
[here](https://github.com/Bubberstation/Bubberstation/issues/4091) for
screenshots). Adds code to clean up properly in `deactivate_style()`
## Why It's Good For The Game
Fix hard delete and HUD bug
## Changelog
🆑
fix: fixed scarp breaking your HUD sometimes
/🆑
## About The Pull Request
Please read the contents of my HackMD to see what my PR does, as well as
further elaboration on the reagents and why it's good for the game
overall.
https://hackmd.io/@MGO/B1YX80nMT
## Contents
Introducing new inverse reagents for existing narcotics and other
reagents! This push includes...
**Naloxone** : New medicine! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Opioid antagonist that purges
drowsiness and narcotics from the patient, restores breath loss and
accelerates addiction recovery. Consumption Rate at 0.2u.

**Permonid** : Inverse of Krokodil. Highly potent sedative that provides
the best painkilling effects, but is also extremely addictive. Speeds up
surgery times by 30%. Consumption Rate at 0.1u.

**Monkey Dust** : Inverse of Bath Salts. Oop aak chee aak eek chee. Eek
aak oop chee oop aak aak!! (Consumption Rate at 0.2u.)
https://github.com/user-attachments/assets/cbd5ea48-9c0f-49ca-ba59-59cd65599641
(You can also combine 50u Monkey Powder with 10u Monkey Dust to make an
angry monkey!)

**Epoetin Alfa** : Inverse of Aranesp. Synthetic medication that induces
blood regeneration, heals liver damage and synthesizes Sanguirite when
the patient is bleeding. Causes several side effects if taken for too
long. Consumption Rate at 0.25u.

(Overdose in action.)
https://github.com/user-attachments/assets/27a51a11-0e42-4000-9c96-ba10cbd9e18b
**Sadness** : Inverse of Happiness. Causes severe depressive behavior in
users, and actively purges other antidepressants. Being hugged by a
friendly person that gives good hugs will purge all Sadness unless the
user has the Bad Touch trait. Consumption Rate at 0.1u.
https://github.com/user-attachments/assets/874b0549-1d96-4f4f-ad95-65f780a68436

**Maldium** : Inverse of Baldium. Potent psychotropic that causes
intense anger within users. On end consumption, user will experience a
burst of burn damage that scales with the amount of time the user was
enraged. Consumption Rate at 0.4u.
https://github.com/user-attachments/assets/31a4700e-32b5-4855-a266-45bfde62f718
**Dulling Reagent** : Inverse of Colorful Reagent. Extremely drab
coloring pigment that is favored by corporations who wish to maximize
suffering. Forces Colorblindness trauma in consumers. Consumption Rate
at 0.4u, lowered to 0.04u if overdosing.
https://github.com/user-attachments/assets/3db461d1-26aa-4c77-ad3d-44794230b391
**Newtonium** : Inverse of Gravitum. Experimental reagent that induces
heavy gravokinetic effects on users. Consumption Rate at 1u.
https://github.com/user-attachments/assets/b20e5200-9beb-40a2-8d37-c0d44f0fb4ef
## Why It's Good For The Game
This is an effort to add more variety to the existing inverse reagent
system within chemistry. Not only should this variety serve to provide
additional options for a Chemist to experiment with, they should also
broaden the possibilities for already existing strategies.
## Changelog
:cl:MGO
add: Introduces new inverse reagents for Krokodil, Bath Salts, Aranesp,
Happiness, Baldium, Colorful Reagent and Gravitum!
add: An alternate reaction output has been added for Monkey Powder.
Instead of 1u Water, add 10u Monkey Dust to make an angry monkey!
add: Adds a medicine: Naloxone! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Purges opioid-class reagents,
can also help with mitigating drowsiness and breath loss. Also purges
good moodlets associated with opiates and replaces them with negative
moodlets, so don't expect your patient to be happy about losing their
high!
/🆑
## About The Pull Request
Please read the contents of my HackMD to see what my PR does, as well as
further elaboration on the reagents and why it's good for the game
overall.
https://hackmd.io/@MGO/B1YX80nMT
## Contents
Introducing new inverse reagents for existing narcotics and other
reagents! This push includes...
**Naloxone** : New medicine! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Opioid antagonist that purges
drowsiness and narcotics from the patient, restores breath loss and
accelerates addiction recovery. Consumption Rate at 0.2u.

**Permonid** : Inverse of Krokodil. Highly potent sedative that provides
the best painkilling effects, but is also extremely addictive. Speeds up
surgery times by 30%. Consumption Rate at 0.1u.

**Monkey Dust** : Inverse of Bath Salts. Oop aak chee aak eek chee. Eek
aak oop chee oop aak aak!! (Consumption Rate at 0.2u.)
https://github.com/user-attachments/assets/cbd5ea48-9c0f-49ca-ba59-59cd65599641
(You can also combine 50u Monkey Powder with 10u Monkey Dust to make an
angry monkey!)

**Epoetin Alfa** : Inverse of Aranesp. Synthetic medication that induces
blood regeneration, heals liver damage and synthesizes Sanguirite when
the patient is bleeding. Causes several side effects if taken for too
long. Consumption Rate at 0.25u.

(Overdose in action.)
https://github.com/user-attachments/assets/27a51a11-0e42-4000-9c96-ba10cbd9e18b
**Sadness** : Inverse of Happiness. Causes severe depressive behavior in
users, and actively purges other antidepressants. Being hugged by a
friendly person that gives good hugs will purge all Sadness unless the
user has the Bad Touch trait. Consumption Rate at 0.1u.
https://github.com/user-attachments/assets/874b0549-1d96-4f4f-ad95-65f780a68436

**Maldium** : Inverse of Baldium. Potent psychotropic that causes
intense anger within users. On end consumption, user will experience a
burst of burn damage that scales with the amount of time the user was
enraged. Consumption Rate at 0.4u.
https://github.com/user-attachments/assets/31a4700e-32b5-4855-a266-45bfde62f718
**Dulling Reagent** : Inverse of Colorful Reagent. Extremely drab
coloring pigment that is favored by corporations who wish to maximize
suffering. Forces Colorblindness trauma in consumers. Consumption Rate
at 0.4u, lowered to 0.04u if overdosing.
https://github.com/user-attachments/assets/3db461d1-26aa-4c77-ad3d-44794230b391
**Newtonium** : Inverse of Gravitum. Experimental reagent that induces
heavy gravokinetic effects on users. Consumption Rate at 1u.
https://github.com/user-attachments/assets/b20e5200-9beb-40a2-8d37-c0d44f0fb4ef
## Why It's Good For The Game
This is an effort to add more variety to the existing inverse reagent
system within chemistry. Not only should this variety serve to provide
additional options for a Chemist to experiment with, they should also
broaden the possibilities for already existing strategies.
## Changelog
:cl:MGO
add: Introduces new inverse reagents for Krokodil, Bath Salts, Aranesp,
Happiness, Baldium, Colorful Reagent and Gravitum!
add: An alternate reaction output has been added for Monkey Powder.
Instead of 1u Water, add 10u Monkey Dust to make an angry monkey!
add: Adds a medicine: Naloxone! Requires equal parts Morphine, Hydrogen
Peroxide, Bromine and Ethanol to be made. Purges opioid-class reagents,
can also help with mitigating drowsiness and breath loss. Also purges
good moodlets associated with opiates and replaces them with negative
moodlets, so don't expect your patient to be happy about losing their
high!
/🆑
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)
/🆑
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.
/🆑
## About The Pull Request
Splits krav maga action descriptions from names and puts them into the
desc variable instead.
## Why It's Good For The Game
If you hover over a krav maga action with tooltips on (especially lung
punch), the upper third of your screen will get covered by a tooltip
because its a part of the actions's name. This fixes that.
## Changelog
🆑
spellcheck: Moved krav maga action descriptions into descriptions
/🆑
## 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
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
Splits krav maga action descriptions from names and puts them into the
desc variable instead.
## Why It's Good For The Game
If you hover over a krav maga action with tooltips on (especially lung
punch), the upper third of your screen will get covered by a tooltip
because its a part of the actions's name. This fixes that.
## Changelog
🆑
spellcheck: Moved krav maga action descriptions into descriptions
/🆑
## About The Pull Request
Refactors martial arts off the mind. Don't worry the martial arts you
learn still transfer with mindswap
Instead, they are just tracked on a list on the mob, and they also
independently track the datum that created them
This fixes a lot of jank with martial arts, like say, having your krav
maga gloves transfer across slime clones or something...
But it also opens an opportunity: As we track all martial arts
available, I added a verb (ic tab) that lets you swap between the ones
you know

(Some don't let you swap like that one brain trauma)
## Why It's Good For The Game
Aforementioned fixes a lot of jank
Recently martial arts have just been up and disappearing and this was
entirely spurred on by that bug
Probably fixes#84710 (haven't checked)
Probably fixes#89247
Probably fixes#89948
Probably fixes#90067
## Changelog
🆑 Melbert
refactor: Refactored martial arts, if you notice any oddities like
managing to know two martial arts at once or having your powers
disappear, report it!
add: If you know multiple martial arts, such as krav maga from gloves
and cqc from a book, you can now swap between them at will via a button
in the IC tab!
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>