Commit Graph
435 Commits
Author SHA1 Message Date
a33fd49968 Upstream 12 15 25 unique reskins fixes (#5019)
This branch needs help, tons of datums to make for the customizable
items.

---------

Co-authored-by: Alexis <catmc8565@gmail.com>
2026-01-10 13:14:26 -05:00
nevimer 684d4d12e6 Revert "Wardens can alt-click-reskin their gloves to match their formal attire (#94382)"
This reverts commit c423d938d3.
2025-12-15 18:16:03 -05:00
nevimer 6e9f2ccfc0 Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts:
#	.github/workflows/compile_all_maps.yml
#	.github/workflows/run_integration_tests.yml
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	code/_onclick/hud/credits.dm
#	code/controllers/subsystem/networks/id_access.dm
#	code/datums/diseases/advance/advance.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/game/machinery/doors/door.dm
#	code/game/objects/structures/crates_lockers/closets/secure/medical.dm
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/modules/antagonists/malf_ai/malf_ai_modules.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/loadout/categories/accessories.dm
#	code/modules/loadout/loadout_helpers.dm
#	code/modules/loadout/loadout_items.dm
#	code/modules/loadout/loadout_preference.dm
#	code/modules/mob/living/silicon/robot/robot_defense.dm
#	code/modules/mod/mod_theme.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/reagents/reagent_containers/cups/drinks.dm
#	code/modules/shuttle/mobile_port/variants/supply.dm
#	code/modules/surgery/organs/internal/eyes/_eyes.dm
#	code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png
#	icons/hud/screen_full.dmi
2025-12-15 18:12:29 -05:00
bcdcf311ed Supply pod dismember cleanup and also an e was missing somewhere (#94330)
## 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>
2025-12-10 20:16:28 +00:00
MrMelbertandGitHub c423d938d3 Wardens can alt-click-reskin their gloves to match their formal attire (#94382)
## 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
/🆑
2025-12-09 13:51:07 -07:00
9fb4100405 Mild boxing tweaks (#93963)
## 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>
2025-12-08 15:58:06 +00:00
necromanceranneandGitHub 1cda7cedc6 [NO GBP] Fixes a runtime in sleeping carp's dodge code (#94124)
## About The Pull Request

fixes https://github.com/tgstation/tgstation/issues/94123

## Why It's Good For The Game

AAAAAAH
2025-12-03 19:04:46 -06:00
necromanceranneandGitHub ac6c47f601 Several file changes just to make high frequency blade null rods block mechs, mech melee blocking finally implemented (#94089)
## 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.
/🆑
2025-12-02 01:13:58 -05:00
nevimer baf3837ae8 Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
2025-11-29 22:49:21 -05:00
Joshua KidderandGitHub 7a3ad79506 All camelCase (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case. UNDERSCORES RULE! (#94111)
## 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!
/🆑
2025-11-27 15:50:23 -05:00
BloopandGitHub e5fc80fcaa Fixes not wearing shoes making you completely un-carp (#94142)
## 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
/🆑
2025-11-26 13:23:55 +11:00
5e0bdfbc90 Kaza Ruk balloon alerts (#94097)
## 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>
2025-11-24 19:44:57 +11:00
Roxy d0ca474789 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 2025-11-05 19:43:07 -05:00
necromanceranneandGitHub bd900bb0fa Makes sure sleeping carp is being blocked properly (#93771) 2025-11-05 14:40:44 +01:00
necromanceranneandGitHub 0234874f65 Krav Maga > Kaza Ruk: Tail sweep criminals (#93773) 2025-11-04 19:41:41 -05:00
410cebd7d1 Sleeping Carp: Unarmored Defense Edition (#93466)
## 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>
2025-11-02 16:35:09 +00:00
Roxy d14e538393 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 2025-10-15 19:34:41 -04:00
necromanceranneandGitHub e4bc6faf80 Increases the experience earned by Hunter Boxing (#93435)
## 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.
/🆑
2025-10-14 00:12:07 +02:00
xPokee 9b282a850e Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-09-17 11:45:44 -04:00
FalloutFalconandGitHub d2f34e33be moves abstract_type up to datum, spawners wont spawn them (#92909)
## 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/4621



https://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.
/🆑
2025-09-13 00:36:15 +02:00
nevimer b348b617a3 Merge branch 'master' of https://github.com/tgstation/tgstation into pupstream-2025-09-07
# Conflicts:
#	README.md
#	code/__DEFINES/admin.dm
#	code/__DEFINES/melee.dm
#	code/_globalvars/traits/_traits.dm
#	code/controllers/subsystem/economy.dm
#	code/datums/components/crafting/crafting.dm
#	code/datums/elements/crusher_loot.dm
#	code/modules/antagonists/pirate/pirate_shuttle_equipment.dm
#	code/modules/clothing/suits/_suits.dm
#	code/modules/escape_menu/leave_body.dm
#	code/modules/jobs/job_types/_job.dm
#	code/modules/mining/equipment/mineral_scanner.dm
#	code/modules/mob/living/living.dm
#	code/modules/plumbing/plumbers/pill_press.dm
#	tgui/packages/tgui/interfaces/Vending.tsx
2025-09-07 00:37:52 -04:00
MrMelbertandGitHub 59f8de91dc Adds 5 Bond-tier gadgets to the Spy's reward pool (#92481)
## 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
/🆑
2025-08-26 10:22:11 +10:00
Thunder12345andnevimer 20118ad747 Converts a bunch of time/delay vars to use time defines (#92495)
## 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
2025-08-19 22:38:55 -04:00
Thunder12345andGitHub 260960d6f4 Converts a bunch of time/delay vars to use time defines (#92495)
## 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.
/🆑
2025-08-12 18:30:25 -04:00
Arturlangandnevimer 1c0ac21cb4 Fixes the issue of usr pointing to admins by making Trigger pass down clicker (#92354)
## 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)
2025-08-08 15:31:08 -04:00
ArturlangandGitHub 0bc42d6940 Fixes the issue of usr pointing to admins by making Trigger pass down clicker (#92354)
## 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
2025-08-05 22:58:40 -05:00
Roxy 2dea279d73 Fix hard delete related to martial arts combo HUDs (#92277)
## 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
/🆑
2025-07-24 00:22:28 -04:00
RoxyandGitHub 1c7b219870 Fix hard delete related to martial arts combo HUDs (#92277)
## 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
/🆑
2025-07-23 22:03:34 -06:00
MGOOOOOOandRoxy 82bef2b7cd The Inversenning : Narcotics + Other Reagents (Part 1) (#91430)
## 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.


![spess1](https://github.com/user-attachments/assets/65dd8e1e-4e52-4263-8d1f-9fb40c416435)

**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.


![spess2](https://github.com/user-attachments/assets/9a07f6db-8ae6-4d0c-bed4-5ca3f96a8d01)

**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!)

![spess3](https://github.com/user-attachments/assets/f55c4af5-a058-4ec8-9119-7da5352e9c3a)

**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.


![spess5](https://github.com/user-attachments/assets/f7d73a6a-4218-4ca0-a718-76b333f9d3b5)

(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


![spess4](https://github.com/user-attachments/assets/b971f8ef-e318-4129-80bf-d45cfab2cf57)

**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!
/🆑
2025-06-21 22:21:49 -04:00
MGOOOOOOandGitHub 109bf9d6c6 The Inversenning : Narcotics + Other Reagents (Part 1) (#91430)
## 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.


![spess1](https://github.com/user-attachments/assets/65dd8e1e-4e52-4263-8d1f-9fb40c416435)

**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.


![spess2](https://github.com/user-attachments/assets/9a07f6db-8ae6-4d0c-bed4-5ca3f96a8d01)

**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!)

![spess3](https://github.com/user-attachments/assets/f55c4af5-a058-4ec8-9119-7da5352e9c3a)

**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.


![spess5](https://github.com/user-attachments/assets/f7d73a6a-4218-4ca0-a718-76b333f9d3b5)

(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


![spess4](https://github.com/user-attachments/assets/b971f8ef-e318-4129-80bf-d45cfab2cf57)

**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!
/🆑
2025-06-16 23:36:32 +00:00
MrMelbertandRoxy bc2215667f Re-refactors batons / Refactors attack chain force modifiers (#90809)
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)
/🆑
2025-05-22 21:30:07 -04:00
MrMelbertandGitHub 5261efb67f Re-refactors batons / Refactors attack chain force modifiers (#90809)
## 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)
/🆑
2025-05-19 13:32:12 +10:00
GhomandShadow-Quill 11d82b7995 You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
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.
/🆑
2025-04-29 18:22:44 -06:00
John WillardandShadow-Quill 222f0cce1e removes martial art hud as something on base hud (#90589)
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

![image](https://github.com/user-attachments/assets/a332b406-18bd-4853-b8ce-200342df4093)

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.

Nothing player-facing.
2025-04-29 17:53:15 -06:00
SmArtKarandShadow-Quill d24b1576d9 Moves krav maga action descriptions from names into descriptions (#90450)
## 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
/🆑
2025-04-29 17:44:07 -06:00
GhomandGitHub 339616ae78 You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## 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.
/🆑
2025-04-23 20:18:26 +00:00
John WillardandGitHub 634fc3170e removes martial art hud as something on base hud (#90589)
## 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

![image](https://github.com/user-attachments/assets/a332b406-18bd-4853-b8ce-200342df4093)

## 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.
2025-04-14 21:05:04 -07:00
Waterpig 753d8e5ba4 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a 2025-04-08 18:58:45 +02:00
SmArtKarandGitHub 38f9510fa1 Moves krav maga action descriptions from names into descriptions (#90450)
## 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
/🆑
2025-04-07 17:44:39 +02:00
52678d41b5 Everyone is kung fu fighting: Refactors martial arts / You can have multiple martial arts and swap between them (#89840)
## 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


![image](https://github.com/user-attachments/assets/6db1fc14-2859-444b-88ed-773962602f85)

(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>
2025-03-16 03:16:49 +00:00
necromanceranneandRoxy ddbd4acd92 Partially reverts #87936; the mech PKA AOE only harms mining mobs, reduces the damage and increases the attack cooldown (#89619) 2025-03-12 16:47:18 -04:00
necromanceranneandGitHub 4972c88044 Partially reverts #87936; the mech PKA AOE only harms mining mobs, reduces the damage and increases the attack cooldown (#89619) 2025-02-25 12:01:17 +01:00
Majkl-J b6b8306fda Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a 2025-02-20 00:00:19 -08:00
necromanceranneandGitHub 9286cbe79d Hunter Boxing maintenance; direct heals rather than reagents, no speed up combos throwing you off your game, rounding issues (#89378)
## About The Pull Request

Rather than injecting you with a healing chem, hunter boxing crits
instead directly heals you for a third of applied damage. This heals
brute, burn and stamina damage. (worth noting this only works against
non-humanoids)

A successful combo and block no longer speed up your next attack, which
actually counterproductively caused most people to whiff their combos.

Ensures we round to the nearest 1 on experience gain.

## Why It's Good For The Game

In practice, the martial art wasn't performing correctly due to some bad
decisions on my part, and also needed some more maintenance. It's not a
good thing that the more you get better at the martial art the more it
is likely to kill you on accident. This resolve that by pulling out the
problem parts.

## Changelog
🆑
balance: Hunter boxing now directly heals you instead of injecting you
with healing chems on a successful crit.
balance: Your combos no longer cause you to screw up your next combo by
changing your attack speed for exactly one punch.
code: Fixes up a bit of odd rounding that occurs in the experience gain
totals and uses division instead of multipliers where it makes sense.
/🆑
2025-02-08 00:06:47 +01:00
MrMelbertandGitHub 4407d1174a Space Carps & Dragons now speak Carptongue instead of Common. Space Dragons also speak Draconic. (#89034)
## About The Pull Request


![image](https://github.com/user-attachments/assets/df57849b-c465-465a-9f8b-fc6550183794)

- Space Carps and Space Dragons no longer speak Common.
- Space Carps and Space Dragons now speak Carptongue, a language native
to Space Carps.
- Space Dragons also speak Draconic. 
- Space Dragons can still understand common, they just can't speak it. 
- Space Craps cannot understand common, unless they're a special carp
(Cayenne, Lia, Magicarps, those spawned from plushies)
- Ash Drakes and Ice Whelps also no longer speak Common, and instead
speak Draconic. They can still understand common.
- Carp Infusion now lets you speak and understand Carptongue.
- Fish Infusion now lets you speak and understand Carptongue.
- Fire Sharks now speak Carptongue instead of Common. They can still
understand common (to receive directions).

## Why It's Good For The Game

#89032 made me think "hey why CAN carps speak Common?" 

So I thought "What if the Space Dragon spoke Draconic instead since it's
a big lizard"

But naturally the Space Dragon still needs to communicate verbally to
its carps and, well, carps aren't really lizards so they shouldn't get
Draconic right?

So I thought "Why not add a Fish language" 

Now, various aquatic space creatures have a language that they can speak
between one another in privacy, while the Space Dragon can still
communicate to the crew for gimmicks via the curator (or draconic if
they want to speak to lizards)

## Changelog

🆑 Melbert
add: Adds Carptongue language, spoken by Space Carps.
del: Space Carps no longer speak or understand Common. Special carps
like Cayenne and Lia can still understand common.
add: Space Dragons can speak Draconic and Carptongue.
del: Space Dragons no longer speak Common. They can still understand it.
add: Ash Drakes and Ice Whelps now speak Draconic. 
del: Ash Drakes and Ice Whelps no longer speak Common. They can still
understand it.
add: Fire Sharks now speak Carptongue.
del: Fire Sharks no longer speak Common. They can still understand it. 
add: Fish and Carp Infusion now grant Carptongue, letting you speak to
(and understand) Space Carps.
add: Sleeping Carp grants you Carptongue, but as most human tongues
can't speak it, you'll only be able to understand Space Carps unless you
steal a fish tongue.
/🆑
2025-01-16 11:56:43 +11:00
SmArtKarandGitHub 7ddc30783a Adds better attack animations and alternate attack modes (#88418)
## About The Pull Request

This is the first PR in a series attempting to modernize our damage and
armor, both from a code and a gameplay perspective. This part implements
unique attack animations, adds alternate attack modes for items and
fixes some minor oversights.

Items now have unique attack animation based on their sharpness - sharp
items are now swung in an arc, while pointy items are thrust forward.
This change is ***purely visual***, this is not swing combat. (However,
this does assign icon rotation data to many items, which should help
swing combat later down the line).

Certain items like knives and swords now have secondary attacks - right
clicks will perform stabbing attacks instead of slashing for a chance to
leave piercing wounds, albeit with slightly lower damage - trying to
stick a katana through someone won't get you very far!

https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1

Turns out that spears acted as oversized knives this entire time, being
SHARP_EDGED instead of SHARP_POINTY - in order for their animations to
make sense, they're now once again pointy (according to comment,
originally they were made sharp because piercing wounds weren't very
threatening, which is no longer the case)

Another major change is that structure damage is now influenced by armor
penetration - I am not sure if this is intentional or not, but attacking
item's AP never applied to non-mob damage.

Additionally, also fixes an issue where attack verbs for you and
everyone else may differ.
2024-12-17 12:35:52 -06:00
grungussussandlessthanthree 5d8bdc105d some code organization for playsound(smth, pick('... (#87211)
# Conflicts:
#	code/modules/mob/living/emote.dm
2024-12-01 12:29:38 -08:00
GhomandGitHub 778ed9f1ab The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

## Changelog

🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
2024-10-30 08:03:02 +01:00
Majkl-J e59d8ba64b Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b 2024-10-23 23:27:16 -07:00
WaterpigandMajkl-J bb70889f6e TG Upstream Part 1
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
2024-10-19 08:04:33 -07:00