Commit Graph

1709 Commits

Author SHA1 Message Date
aKromatopzia a544355b7a Cybernetic brain update + Some Vox touchups (#5088)
## About The Pull Request
Cybernetic/Cortical brain touch-up. Discuss.

Also because vox use cortical brains, we touched their code a little.
Tangent: I wish there was a way to make the brain restore surgery
capable of taking a multitool without being a separate op :\

# But why?
It's been noticed that people are using cortical brains to shoot up some
meth without consequences. This was a) not originally intended b)
genuine power creep, as previously the only way to be able to process
chems without the brain damage was to be a vox, who do start with
robotic-only brains. So, this PR is to address it. Sure you get an EMP
weakness, but this server has a soft-stigmatization against using EMPs
so that's leery on the social contract.

Fret not! You'll still have the option of a roundstart brain which
doesn't take meth damage. It just also takes slightly more EMP damage,
has less health than an ordinary brain, and if it ever gets removed, it
explodes as the other prosthetics do (but doesn't qdel). So really,
there's not much of a consequence.

## Proof Of Testing


https://github.com/user-attachments/assets/f48efc8b-9f4b-4fd1-b71f-145a1d4b63c5

<img width="255" height="167" alt="Screenshot_10"
src="https://github.com/user-attachments/assets/0334b931-0593-4721-9de2-a02211253e28"
/>

yeah i flipped it on the below one. it's correct now though
<img width="661" height="171" alt="Screenshot_11"
src="https://github.com/user-attachments/assets/554eaf09-8ee4-4a1a-a95b-c7332a078610"
/>


## Changelog
🆑
add: Previously-unobtainable surplus-cybernetic brain added to
Prosthetic Organ quirk
add: Cybernetic brains given the ORGAN_PROMINENT trait, following normal
brains.
add: Vox Primalis unique cybernetic brain has been finally added to
their species descriptions. (Bet you didn't know they had one)
balance: (Roundstart) Cortical brains given ORGAN_ORGANIC, so they can
be fixed with both mannitol and a multitool. Vox brains are excluded
balance: Brain options in character prefs have been given a 1
quirkiness-point cost.
fix: Cybernetic/Cortical brains have their repair hints updated to
reflect what they can actually be repaired by
code: Prosthetic Organ quirk moved to modular_zubbers
code: 'Vox Primalis' now considered a collective noun
code: dangerous_organ_removal has a new variable to toggle between organ
qdel or having its damage set to max health.
/🆑
2026-03-10 02:11:24 -04:00
Bangle a2524f1f72 My 600-lb Life: How I Learned to Love the Oversized Quirk - Parts 1 & 2 (#5125)
## About The Pull Request
<img width="1263" height="172"
alt="{5D91C818-9014-4A88-B14E-07D1FB415333}"
src="https://github.com/user-attachments/assets/2ac6bb5f-ad79-4449-a3e2-1dd71fb2792b"
/>

> ᴵ ᵃᵐ ˢᵒ ˢᵒʳʳʸ


Hello team! [Bangle here.](https://www.youtube.com/watch?v=idoYCVLh2qI)

This is a two-parter.

### [**Part One: _Big ≠
Blind_**](https://www.youtube.com/watch?v=Q8Tiz6INF7I)
Oversized characters have a fair list of pros and cons. That said, one
con is inherent to Oversized characters that cannot be overlooked: the
cardinal direction that is NORTH. It is not intended gameplay to hit
myself in the face with a PKC because there's a Goliath to my north and
I clicked myself trying to get 'em **because my big dumb head's in the
way.**

So - we've implemented a rendering action that allows your character to
be rendered at 1x size client-side. There's a similar thing on
**SPLURT**, but my implementation is better, because it works with
lights, you just need to move for it to update. It takes a snapshot of
your character and uses the same framework of delusion system to replace
your sprite with this smaller, resized sprite, and changes with
directions, updating every time you do.

As of writing this, I believe **SPLURT**'s implementation does not
update with lights.
<details>

(I was mining in the dark on Lavaland for 50 minutes, lagging my ass
off, and don't intend on going back).

</details>

### **[Part Two: _MY. ASS. IS.
HEAVY._](https://www.youtube.com/watch?v=9DKwJ-yxQpQ)**

Listen, I know it's funny to watch my goofy ass break the fifth chair I
drag my sprite over towards. But, my butt needs a place to rest. Laying
on the ground EVERY SHUTTLE RIDE SUCKS. And you know what?
Proportionally speaking, a table to you is an ottoman to me. Why
pixel-shift my sprite onto it and *pretend* to sit when I can just sit?

And so, we sit.

## Why It's Good For The Game

I'm 12 feet tall, I don't have a blindspot locked cardinally north, and
God damn it, if I can stand on the fucking tables, I can sure as shit
sit on them.

## Proof Of Testing

<details>
<summary>Screenshots/Videos


https://github.com/user-attachments/assets/b058fa9a-690c-4b5e-bd82-43f2b9a219e2

</summary>
</details>

## Additional Note for the Lovely Maintainers

I'm going to be real, I am a buffoon and have zero coding skill. I was
relying heavily on Cursor (AI coding aggregate software) to get this put
together. Do not credit me with anything save for the ideas. While I'd
love to see this added, in the event this disclaimer disqualifies it,
I'm okay with that.

## Changelog
🆑 Bangle
add: Added the ability for Oversized characters to sit on tables. It
just makes sense.
add: Added an action to allow Oversized characters to render client-side
at standard height to see around them.
qol: See above! Literally. You can see above your sprite now.
/🆑

---------

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2026-01-17 13:58:51 -08: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
archbtw a0cd0dcc85 [NO GBP] Minor nm oversight (#94417)
## About The Pull Request

https://github.com/tgstation/tgstation/pull/94395

## Why It's Good For The Game

Fix dragged light not getting snuffed out, if the user has another
equipped light turned on (light eater works simultaneously, not per hit)

## Changelog

🆑 ArchBTW
fix: Fix nightmare not properly snuffing dragged lights if other lights
were turned on simultaneously
/🆑

---------

Co-authored-by: glue0000 <230859540+glue0000@users.noreply.github.com>
2025-12-12 18:44:46 -07:00
archbtw e13da48be7 Nightmare's light eater will snuff out dragged lights (#94395)
## About The Pull Request

Fix nightmare not snuffing someone's dragged light.

Nightmare sucks ass, you don't need this to win.

## Why It's Good For The Game

Dragging something should count as a light source since it's an item
you're holding onto
Unintentional/Oversight - Nullifies the intended purpose of nightmare's
light eater
Nightmare is a shite antag due to the plethora of other cheese
strategies that can be used against them. It needs some love.

## Changelog

🆑 ArchBTW
balance: Nightmare's light eater will snuff out dragged lights
/🆑

---------

Co-authored-by: glue0000 <230859540+glue0000@users.noreply.github.com>
2025-12-09 21:51:18 +01:00
Bloop a9925b2d39 Dev QoL improvements for the materials unit test (#94338)
## About The Pull Request

Just improves the new material unit test, making it more copy-paste
friendly when dealing with large amounts of things to change.

It now also calculates the appropriate sheet material value for you too
so you quite literally just have to copy paste the line and you're done,
no more having to do math yourself.

<img width="2104" height="155" alt="image"
src="https://github.com/user-attachments/assets/b605e423-0418-46b7-b40c-c65fac920af9"
/>


## Why It's Good For The Game

Developer qol.

## Changelog

Nothing player-facing

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2025-12-09 21:48:31 +01:00
LT3 1c96273825 Portable crew monitor drag-drop element (#94327) 2025-12-06 16:14:42 -07:00
Bloop 7754938c72 Makes a bunch of lists lazy (#94239)
## About The Pull Request

Empy lists. There are a lot of 'em.

<img width="981" height="512" alt="image"
src="https://github.com/user-attachments/assets/b94b041a-2904-466b-ab89-54bd1de11b4e"
/>

Going through ways to reduce memory I found a few easy ones here. Wires,
the edible component, the seethrough component. None of these are really
a concern when it comes to needing lists in memory for performance
reasons. Wires aren't going to be cut most of the time for each door. A
lot of food does not have any junkiness. Seethrough component lies
dormant most of the round. Etc.

Making lists lazy in these cases should be a no brainer.

Everything I tested still seems to work exactly the same.

## Why It's Good For The Game

Frees memory that is just taking up space a lot of the time.

## Changelog

Not player-facing, this is all under-the-hood stuff.
2025-12-03 13:42:16 -07:00
FalloutFalcon 6838a7b580 Scoop water from water turfs (#93878)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-12-03 20:33:32 +01:00
MrMelbert a0b271d336 Fix Flypeople before anyone realizes they're broken but me (#94264)
## About The Pull Request

After I merged #94200 I realized it blocked all attack hand interactions
on decal which means flypeople would break

Fixes that, adds some unit tests

## Changelog

🆑 Melbert
fix: Fix Flypeople's vomit interaction before anyone realizes it's
broken but me
/🆑
2025-12-02 17:07:20 -07:00
Ghom 0b0c5ea91e Unit test material checks are now performed on all crafting recipes by default. All stack recipes now transfer mats to the results (#92620)
## About The Pull Request
Extends the part of the crafting unit test that ensures consistency
between the total mats of the components of a recipe (or rather, the
result of said recipe) and a generic instance of the same type as its
result, previously only implemented on food recipes.

## Why It's Good For The Game
This ensures a degree of consistency with the material composition of
various objects in the game. I couldn't do it in the original PR as that
one was too big already and it took months to get it merged, and have
the relative bugs fixed.

Currently a WIP as I slowly deal with the unit test reports.

## Changelog

🆑
refactor: Follow-up to the crafting/material refactor from months ago.
All objects crafted with stacks now inherit their mat composition (not
necessarily the effects and color) by default, while previously only a
few things like chair, sinks and toilets did. Report any object looking
or behaving weirdly as a result.
fix: The material composition of ammo boxes is no longer a 1/10 of what
it's supposed to be. It was a shitty hack to make it harder to recycle
empty ammo boxes. Instead, they lose materials as they're emptied now.
/🆑
2025-12-02 18:29:01 -05:00
archbtw 10ff097c7c Fix click dragging something onto a tile with a decal (pool of oil/blood, etc) (#94200)
## About The Pull Request
Clicking a floor decal (pool of oil, etc) while dragging something will
move it onto it's tile

## Why It's Good For The Game

Oversight 
Decals are cosmetic - Clicking on a decal should Move_Pulled as intended
Some decals (pool of oil) take up nearly the whole tile - makes pulling
onto that tile near improbable/frustrating in practice
2025-12-01 21:59:49 +00:00
SmArtKar 53afd0e884 Hulk and infusions no longer texture robotic limbs (#94227)
## About The Pull Request

Closes #94223
Also hulk now tracks your limbs, meaning that new limbs become green and
old ones lose their color upon getting detached.

## Changelog
🆑
fix: Hulk and infusions no longer texture robotic limbs
/🆑
2025-11-30 17:26:28 -07: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 Kidder 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
SmArtKar 9e8dd8b991 Fixes swimming not draining stamina or wetting/extinguishing players (#94013)
## About The Pull Request
Closes #93973

## Changelog
🆑
fix: Fixed swimming not draining stamina or wetting/extinguishing
players
/🆑
2025-11-20 01:22:15 +01:00
Hatterhat 439323050f tool_flash doesn't flash if strength is 0 (alien welders no longer need flash protection) (#93981)
## About The Pull Request

Makes the `tool_flash` element only flash people if the flash strength
is greater than 0. Last PR I could dig up that touched this was
tgstation/tgstation#83703, which didn't account for tools that had flash
strength 0 (e.g. the alien welder). So now the alien welder no longer
burns your eyeballs out if you don't have protection.

## Why It's Good For The Game

<img width="68" height="135" alt="image"
src="https://github.com/user-attachments/assets/dc77a0d9-4fdb-4206-8c3d-514ca2432d86"
/>

Gives the alien welder the ability to be used without flash protection,
as it was oh-so-long-ago.

## Changelog

🆑
fix: Alien welders, as befitting their nature of being Wacky Advanced
Tools, no longer sear your eyeballs if you don't have eye protection.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2025-11-17 23:20:37 -07:00
Aliceee2ch 0a2ea363e4 Minor grammar edits for EMP_PROTECT flags (#93914)
## About The Pull Request

title (unrelated to grammar but pr also adds wrapping brackets in
code!!!)

## Why It's Good For The Game

i think we should say that something is only PARTIALLY blocks emps, like
borgs - their wires are protected from EMPs, but examine says "EMP
blocking" and at first glance i'd assume they fully block EMPs.

## Changelog

🆑
spellcheck: Items that block contents/wires from EMPs now showed up as
only "partially EMP blocking" objects in examine menu.
/🆑
2025-11-17 01:22:53 +01:00
RikuTheKiller c7cb0674cc Preliminary blood refactor (#93854)
## About The Pull Request

Moves all blood handling into procs and adds ways to easily hook into
basically every basic blood behavior.

This PR is not meant to fix every single case of janky blood logic in
the game. The main point and motivation of this PR is to add hooks for
blood behaviors. This allows for way more flexibility with blood code.

I am not going to fix our 3000 instances of single-letter vars, wacky
blood transfers, etc. This is just the groundwork for future PRs to
build off of, and by itself, should do very little to change blood
behavior.

I also added a rigorous set of unit tests for verifying that all of the
basic blood volume procs work correctly.

## Why It's Good For The Game

Previously, blood was handled via directly reading/writing
[var/blood_volume]. This was INCREDIBLY inconsistent and there was no
way to hook into it. This PR makes blood handling way more consistent,
which is great for all sorts of features.
2025-11-13 11:45:36 -06:00
Roxy 71faa643bf Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-12 2025-11-12 16:44:13 -05:00
Bloop 91b3b59023 Fixes annoying flaky runtimes with water elements (#93879)
## About The Pull Request

Like the immerse element, these register the entered() procs to both
`COMSIG_ATOM_ENTERED` and `COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZED_ON`.

This is fine, but when you are creating an atom on a turf with this
element, both signals will be sent and it will double up on the proc
call. Additionally there is a possibility for qdeleted items to end up
in these tiles and create hard dels. This should fix all that.

<img width="1700" height="405" alt="firefox_rxIsE9ZKN9"
src="https://github.com/user-attachments/assets/c8fb11df-9d17-4d81-9eee-920a03bb40e8"
/>

## Why It's Good For The Game

Bugfix

## Changelog

Nothing players will notice
2025-11-11 22:03:26 +01:00
Krysonism c8516dae39 Increases spider tox vuln, increase bugkiller damage and lets flyswatter bane all basic bugs. (The author was deadened by spiders.) (#93730)
## About The Pull Request

This PR makes the flyswatter a bonus damage a bug bane restricted to
basic mobs(Since moths and fly people have their own snowflake
handling.)

The result of this is that the 24 extra damage flyswatters cause against
giant spiders now applies to more mobs like:

* flesh spiders
* mega arachnids

It also buffs the damage per unit caused by bugkillers from 0.4 to 1 and
the max damage per application is also increased.

Giant spiders now have a tox mod of 3 and flesh spiders have a tox mod
of 4.

## Why It's Good For The Game

I hate flesh spiders, the main thing I dislike about them, other than
them being incredibly OP and stacked statwise, is that they are not
spiders at all and none of the anti-spider tech even works on them, not
even a little bit!

They killed me recently, chasing me into the janitors closet while is
was desperately swatting it with a flyswatter, to no effect

If they are going to have such a heavy spider themeing, you'd at least
except the flyswatter to work on them. intuitively it should, and it is
such a niche interaction, most players probably thinks, like me, the
bonus damage applies to bugs in genereral.

I also decided to check out pest spray and see if that does something. 

Currently a pest spray blast does 2(!) damage per application to any
bug.

A total joke even against a normal giant spider, let alone a 90 health
rapidly regenerating flesh spider.

I suspect it has been heavily hugboxed to prevent players from using the
sandbox to kill moths with pest killer foam, so I opted to mainly
increase the tox mod of the basics in question rather than increasing
the main bugkiller damage.

A normal little pest killer blast will still be pretty bad, but if you
can find ways to apply a lot of reagent, pest killer can now maybe be
effective against giant spider and flesh spiders.

## Changelog

🆑
balance: fly swatter now has bonus damage against all basic bugs.
balance: bug killer reagents now do slightly more damage. 
balance: spiders and flesh spiders have greatly increased tox
vulnerability.
/🆑
2025-11-11 11:17:04 -05:00
MrMelbert d04e942ede Adds an easy bitrunning domain themed around sacrifing people, also makes digitital beings not care about death (#93546)
## About The Pull Request

1. Adds `Heretical Hunt`, an easy difficulty domain that tasks you with
killing and sacrificing simulated crew members. The domain has a few
ways to conquer it, as you don't need to kill all the simulated crew
members and there's some hidden loot to make use of

It's an easy domain because 
- You have quite decent armor,
- The mobs are pretty unintelligent, 
- You can always fall back and heal passively on the rust tiles
- There are many ways to tackle it

Though it's not a complete pushover, the mobs can still overwhelm you if
you're not careful.

<img width="440" height="347" alt="image"
src="https://github.com/user-attachments/assets/a3f30204-0200-4197-80bb-aee083059164"
/>

2. Virtual beings are given a minor positive moodlet for killing people
instead of a negative one

## Why It's Good For The Game

1. I thought it'd be kinda fun if we had antag-themed domains which
soft-explains the gameplay loops or mechanics of certain antags, in this
case, heretics sacrificing people

2. You don't feel remorse for killing people in video games, right anon?

## Changelog

🆑 Melbert
add: Added a new easy difficulty bitrunning domain, "Heretical Hunt" 
add: Digital mobs receive positive moodlets for killing people rather
than negative
fix: Madness Mask no longer affects corpses
fix: Fixed some heretic runtimes
/🆑
2025-11-08 02:20:41 +01: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
Bloop ad57d69436 Fixes another spammy elevation runtime (#93708)
## About The Pull Request

An even more spammy signal override runtime that's been annoying me.

<img width="1933" height="479" alt="image"
src="https://github.com/user-attachments/assets/9d73a01b-858e-46a8-9449-7bb60680c977"
/>

This bug most frequently appears near cargo, triggered by mail crates
moving around on conveyors.
Seems to be caused by another elevation element being mid-attach and
also trying to register on the same turf simultaneously, which results
in a recursive register_turf() call essentially.

## Why It's Good For The Game

Fixes a spammy runtime, and improves performance a bit.

<details><summary>still works</summary>


![dreamseeker_Nz6BUoU11X](https://github.com/user-attachments/assets/446b6ba8-510e-4a5c-b02f-db5781a8e296)

</details>

## Changelog

Not player-facing
2025-11-01 13:06:27 +01:00
SmArtKar 1c6c506936 Raptor Rework - Ranching and Companionship (#93564) 2025-11-01 22:13:29 +11:00
Ghom 999bde8f84 Most screen alerts now fit the player's hud style. (#93493)
## About The Pull Request
Most screen alerts that use the midnight hud style no longer have the
button baked in their icon. Other screen alerts with their own
background or shape (robot and mech alerts, atmos, heretic buffs or
debuffs etc.) are not affected. Also updated a couple sprites but didn't
spend too much time on them. Mostly reusing existing assets.

Montage of how the alerts look on threee different hud styles
(Operative, Trasen-Knox, Detective, ALSO I FIXED THE BUCKLED ALERT
ALREADY):
<img width="293" height="323" alt="image"
src="https://github.com/user-attachments/assets/3a2b972b-aa5a-4c27-a454-c8c39acf6e20"
/>
It looks only a smidge iffy on the syndicate since the top and bottom
borders aren't layered over all the overlays, but it isn't something to
worry about in this PR.

## Why It's Good For The Game
Screen alerts always had the midnight hud button baked in their icon
states (now overlays), which completely disregard the player's hud
setting, much unlike action alerts buttons. Melbert has also said that
it'd be nice if the code for action buttons could also be used in screen
alerts and viceversa, to slim things down. That's obviously not what I'm
doing today, but having most of the screen alerts already without the
baked background will surely help if we ever pursue that objective.

## Changelog

🆑
refactor: Refactored screen alerts a little. Most should now fit the
player's hud style. Report any issue.
imageadd: A few screen alerts have been polished/updated a little.
/🆑
2025-10-31 15:30:39 -06:00
Roxy e28e9fbdba Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 2025-10-23 17:38:23 -04:00
Ghom ca2cc70322 Organ damage refactor/cleanup (#93436)
## About The Pull Request
So, my original goal was just a refactor for the emissive overlays of
eyes, as a way to implement the specular emissive introduced by smartkar
some time ago, but somehow I found myself dragged into a bigger refactor
or cleanup of organ damage, thresholds, failures. One of the main
problem was that there were no procs called when a organ suffered enough
damage to fail or when recovering from failure. It'd just enable or
disable a bitflag, leaving it up to subtypes to decide how to tackle
organ failure their own ways: diverse, funky and sometimes incompatible.
More often than not relying on their very own "update_thingamajig" kinda
procs that run whenever the organ takes damage, rather than just when
the threshold is reached (low, high, failure. There are however a couple
organs with their own quirky thresholds, I let those slide).

There's also a bit of old code, especially for ears, with the
`AdjustEarDamage` and temporary deafness both predating the framework
for organ damage as far as I know. It really needed a coat of fresh
paint.

Oh, there were also more than a handful of organs that still heavily
relied on some ORGAN_TRAIT source instead of the `organ_traits` list and
the two add/remove procs `add_organ_trait` or `remove_organ_trait`. This
include organs that lose or gain specific traits when failing et
viceversa.

~~Lastly, felinids (and the halloween ghost species) having reflective
eyes. It's just a nod to the tapetum lucidum that animals with night
vision often have (including cats), which is why their eyes are a bit
brighter in the dark. Felinids however, do not have night vision (nor do
ghosts). This is merely cosmetic.~~ Cut out for the time being due to
issues with the specular emissive...

## Why It's Good For The Game
Refactoring / cleaning up old organ code.

## Changelog

🆑
refactor: Refactored organ damage code a little. Hopefully there won't
be issues (otherwise report them).
/🆑
2025-10-21 16:52:28 -05:00
die bb91185a3a Kitchen soundpack (#93495)
## About The Pull Request


https://github.com/user-attachments/assets/f35be993-66b2-448f-953b-4b2ec9a7b8f6
## Changelog
🆑
sound: added more sounds for knives
sound: added more sounds for pots
sound: added more sounds for trays
sound: added more sounds for cutlery
sound: added more sounds for rolling pins
/🆑
2025-10-19 17:52:44 +02:00
Cirrial d16abef480 Fix typo for cuffable component (#93490)
## About The Pull Request

The examine more text uses p_they instead of p_them, so you'd get text
like "You could bind he to your wrist".
I've just changed the proc.

## Why It's Good For The Game

while I am amused by things like "bind he to your wrist" that's probably
something best said by players and not in system text

## Changelog

🆑 Cirrial
spellcheck: Examining something you can cuff now uses the correct
pronoun.
/🆑
2025-10-18 17:32:32 +02:00
Leland Kemble 348789fa8d The Renamening- upgrades UNIQUE_RENAME and moves a lot of renaming implementations under it (#93115)
## About The Pull Request

Moves a lot of the unique renaming implementations described in #82664
to the functions given by the `obj_flag` `UNIQUE_RENAME`.
`UNIQUE_RENAME` has been given new properties to account for
non-standard renaming, these being the `RENAME_NO_DESC` flag that
prevents changing the description, the `nameformat()` and `descformat()`
procs that, when modified, allow for applying naming formats(i.e. "Body
Bag - [input]"), as well as other post-renaming handling such as
changing the name of the output plant of a renamed seed, the
`rename_checks()` proc that allows for unique naming prevention(such as
a locked personal closet), and the `rename_reset()` proc to clean up
other possible renamed variables potentially changed in `nameformat()`
and `descformat()`.

This also adds `/datum/element/tool_renaming` to crayons, which will let
them rename anything that has `UNIQUE_RENAME`. I looked through
everything with that flag, and I didn't see anything that I don't think
should be renameable by a crayon(except things that shouldn't be
renamable with pens), so it shouldn't fuck anything up.

## Why It's Good For The Game

moves all of the non-honorable mentions in #82664 to the same renaming
system, and also moves all of the honorable mentions save for:

- plaques, as they only get renamed once and wouldn't benefit from
`UNIQUE_RENAME` imo
- books, because they're far more than just renaming, and are persistent
- paintings, because they're persistent
- photos, because they're not normal renaming and they're persistent
- endoskeletons, because they're done with a multitool in UI
- cardboard IDs, because they're far more than just renaming

Additionally, this fixes:

- Implanter renaming didn't work because a ! was missing
- Clown borg picket sign renaming didn't work because they didn't use
the correct arguments

This'll make it easier to make renameable objects in the future, as
well.

## Changelog
🆑

fix: fixes implanter renaming not working
fix: fixes clownborg picket sign renaming not working
code: brought most unique renaming implementations under UNIQUE_RENAME

/🆑
2025-10-17 01:56:09 +02: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
EnterTheJake a2c7c8e57b Heretic Antagonist Full Overhaul. (#92119)
## About The Pull Request

Heretic has received a complete overhaul. This PR touches nearly every
aspect of the antagonist. For readability's sake, not every change is
going to be listed in this pull request.

For the full list of changes please refer to the design doc:
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.

Code by Me, @Xander3359 and @Arturlang 

TGUI by @Arturlang 

Sprites by OrcaCora and GregorDM

Writing bits by @necromanceranne 

### Core changes

- Cross-pathing has been removed. Main knowledge spells are now
exclusive to their path (for the most part).

- For every main knowledge unlocked (save for the robes and the blade
upgrade), Heretics can choose one option from a draft of 3 random side
knowledges (this is a free point).

- Heretics can now purchase side knowledges from a new tab, the
"Knowledge Shop". Side-knowledges have been divided by tier (Stealth,
Defense, Summons, Combat and Main). Tiers are unlocked as you progress
toward your main path.

- Heretics now gain the grasp and mark upgrade immediately, but their
main knowledge choices cost twice as much (except for the first spell,
the robes and the blade upgrade).

- Path specific robes have been introduced! They come with their own set
of quirks.

- Each Path has received a passive ability. This passive is upgraded
when you first create your robes, and again when you complete the Ritual
of Knowledge.

- Paths have been rebalanced as a result of the removal of cross-path
progression. Cosmic and Moon paths have received soft reworks.

- Upon unlocking the path 2nd level or reaching a total of 8 points
worth of knowledge, Heretics will lose the ability to blade break (and
the limit on blades all together).

- Ascension now automatically calls the shuttle with no possibility of a
recall.

- Late join Heretic has been removed.

### New UI 
<img width="750" height="635" alt="moon path ui"
src="https://github.com/user-attachments/assets/184ef783-5c9c-48a1-a2f7-4807ca93e990"
/>


### Knowledge shop

<img width="787" height="669" alt="Knowledge shop"
src="https://github.com/user-attachments/assets/3dc89b84-8c70-4d47-b612-54396e3ea6e7"
/>




### Quality of life //General balance changes

- Heretics will now gain X-ray vision for a few seconds when nearby an
eldritch essence (this effect has a cooldown).

- Ritual of knowledge now requires 1 uncommon item instead of 2. You may
now use a stunprod instead of a baton to complete the ritual. Beartraps
have been removed from the list of possible reagents.

- The maximum number of possible sacrifices required to ascend has been
reduced from 6 to 5 while the minimum has been upped to 4.

- Codex Cicatrix no longer requires a special pen to be made.

### Passive abilities

- Heretics now start with a passive ability. You can find what it does
on the path info tab after a path has been selected, and what they gain
when upgraded.

- Crafting your first set of Eldritch robes will bump your passive to
level 2.

- Unlocking the 2nd level will subsequently unlock your "Ritual Of
Knowledge"

- Completing the ritual of knowledge or ascending will net you the final
level.

### Path Specific Robes

- Armorer's Ritual is no longer a side knowledge. Each path will have
their own unique version of the ritual. This is placed after the 2nd
spell in the tree.

- Robes can no longer be destroyed by fire and acid, grant t4 flash
protection (Moth Heretics stay winning) and protection against basic
syringes, to bring them on par with other antagonist's armor sets.

- The recipe to craft the robes is now a set of armor/vest, a mask (any
mask will do now, not just gas masks), plus the unique reagent required
for the blades (Plasma for Cosmic, Trash For Rust, match for Ash and so
on)

- Wearing the robes as a non-heretic may yield some unfortunate
side-effects.

### Moon Path Rework

Moon path  rework.

Moon Heretics gain immunity to brain traumas and slowly regenerate brain
health. Equipping the moon amulette channels its effects through the
moon blade; making it unblockable and cause sanity damage instead of
brute. Ring leader's Rise now summons an army of harmless clones that
explode when attacked; the explosion briefly stuns non-heretics and
cause sanity and brain damage to them. Moon blade can also now be used
when pacified and Moon spells are no longer blocked by regular anti
magic, only mind magic protection.


**Cosmic Path Rework**

Cosmic path has received the biggest batch of changes alongside Moon.
The path has been dead last in ascension and pickrate (less than 5%) for
almost 2 years. It did gain some popularity over the last few months,
reaching the highest ascension rate in the game (12%) while mantaining a
relatively low pickrate.

Cosmic sits in a weird spot, where pretty much every knowledge
surrounding the path is either mediocre or, in the case of the
ascension, dysfunctional. Yet it has maintained a smidge of relevancy
due to how quickly Cosmic heretics can capture and sacrifice targets
thanks to Star Touch.

As a result, the best course of action would be to rebalance the
entirety of the kit; granting the heretic more tools to manipulate space
and dictate the flow of a fight, while lessening their ability to end a
confrontation by instantly sleeping their opponents.

lastly The Star Gazer is now ghost controlled ; And they shoot lazers!

<img width="636" height="451" alt="gazer gag 3"
src="https://github.com/user-attachments/assets/601d6881-c042-4e42-8ce6-ac90cd27848b"
/>


## Why It's Good For The Game


### Ok...but why do we want this?

Again, if you want my full reasoning, please check my doc
https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g.

To keep it short and concise; Heretic is too complex and unintuitive for
its own good. Too impenetrable for new players and too abusable for
experienced players. This can be chalked up to a lot of poor design
decisions. But ultimately, what I believe being the biggest contributor
to the current status of Heretic is the ability to move into different
paths, also known as "Cross-Pathing".

### Cross Pathing my beloathed.

Cross-pathing, while cool in theory, overcomplicates the antagonist and
overloads them with power. Players dealing with the heretic are
incapable of working out what a given heretic can do. This also leads to
late game heretics having 3 rows Worth of action buttons and virtually
no weakness.

Over the last year, I've often received the understandable but also kind
of unfair accusations of making Heretic too powerful without a clear aim
or purpose.

My goal with the paths I've reworked over the last year (Rust,Void and
Blade) wasn't necessarily to just make them stronger (although that was
also part of the goal, as they were paths that were underperforming),
but for them to have more interactions with the sandbox and to better
live up to the fantasy presented to the player.

If an harbringer of frost gets countered by a cup of coffee, we probably
messed something up.


Unfortunately, the current incarnation of Heretic doesn't really allow
for surgical balance changes to specific paths. Every time a knowledge
gets buffed, we make every path that can easily tap onto that knowledge
stronger by default. It doesn't take a genius to understand why this
system is ultimately unsustainable.

### Blade Breaking

I feel that after a heretic has reached the near peak of their power,
they no longer need the ability to instantly escape any encounter. Check
my doc for my full reasoning.

## Less versatile, more specialized paths.

By removing cross-pathing, we remove a huge maintainability burden from
the antagonist. Paths can now be designed around clearer strengths and
weaknesses. They become easier to balance and less of an headache to
understand for everyone.

It also means we can give paths some needed quality of life quirks
without having to worry how such a change might have a knock-on effect
for other paths.

Ash heretics can finally let loose without dying by their own flames.
Cosmic Heretic can go to space without having to carry a modsuit. Moon
Heretic can use their abilities without fear of one random trauma
ruining their day, and so on.

### What a horrible night to have a curse...., wait how do I curse
people again?

As of right now the heretic tree has quite a hefty amount of trinkets
that pretty much never see use.

Partly because the tree itself is a nightmare to navigate. And partly
because why would anyone set up an elaborate plan or scheme when they
can unleash 2 rows of spell in the span of bunch of seconds.

Heretics mostly gravitate towards powers that push them towards greater,
more potent combat strength. If it doesn't contribute to killing people
quicker, it isn't worth doing for most. And given the opportunity cost
associated for taking those powers, they will remain that way so long as
there are better choices to be poached.

The new draft system encourages Heretics to play more with the tools at
their disposal. If you want to go for a specific combo from the side
path options, you may now do so by tapping into the knowledge shop.

Yes, the shop does include a few knowledges from the other paths. But
these are limited to 1 per path, are very expensive and can only be
unlocked very late into the shift.

## Drip Of the Mansus

The iconic heretic robe is actually sequestered to a side path that is
most easily access by only two paths at a time. Since heretic paths are
being made to be much more specialized, the most obvious way in which
this can be showcased is through an easily
identifiable outfit.

By using the robes, we can both telegraph WHAT heretic you are looking
at, and just how much power they've accumulated and when it is
reasonable to take the kid gloves off and treat them as a genuine
threat. If a heretic is in their
robes, that heretic is now a significantly more prominent danger to the
station.

It also serves as a useful means for gating some of the more powerful
effects of a heretic's path behind the robes, AND enable options for
disarming them of that power should they be captured without making it
something endemic to their mob.

A major problem with heretics is a lack of certainty as to how powerful
they have become. A heretics robes is one of the milestones to help
players dealing with heretics identify that.

### Will this be 100% fair and balanced?

This is a massive overhaul to a pretty complex and bloated antagonist.
I've done my best to show the changes to several maintainers and other
members of the community for their feedback. But at some point we'll
have to see how this behave in the environment to get a feel if
something is over or undertuned. (that's my way of saying, yes this is
likely gonna require a testmerge or two).

What I will say is that I'm not trying to change the core identity of
Heretic.

Heretics should have the upperhand in single encounters early on, be
able to joust a small group of players after they unlock their final
spell, and end the round when they ascend. They're a progression
antagonist. They should retain their payoff as well as pose a danger as
they grow stronger.

But if more players feel like they are more reliably able to play the
antagonist in more varied and interesting ways, rather than the
antagonist largely existing as a measuring stick for 'robustness' due to
its elitist design philosophy, then the rework has been a success. There
should be something for
everyone in the antagonist, as is true for all of our antagonist roles.
2025-10-15 22:34:51 +00:00
MrMelbert d1cee0d780 Cuffsnapping doesn't spam runtimes in context (#93411)
## About The Pull Request

Asserts that target is a mob when target is definitely not always a mob

<img width="673" height="200" alt="image"
src="https://github.com/user-attachments/assets/f47c2464-0eb1-4bdf-b39f-a35ec53fff2b"
/>
2025-10-12 23:48:53 +02:00
MrMelbert da10322dc1 Fix modsuits and defibs (#93373)
## About The Pull Request

Fixes #93359

Caused by #93165

Inventory screen elements were no longer considered reachable, which
broke mousedrop handing on objects that check "is dragging into
inventory slot"

I don't know the best way to fix this yet but I figured the next best
thing would be to make all of these use the `drag_pickup` element, which
skips this reach-ability check

Thus I refactored it slightly to accommodate for items which should
contextually not be drag-pick-up-abble and bam, works like a charm

## Changelog

🆑 Melbert
fix: Dragging defibs and modsuits off your back works again
/🆑

---------

Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
2025-10-11 18:17:23 -04:00
Ghom aa4cf2b136 The nullrod refactor (the carp-sie plushie is now actually a plushie) (#93311) 2025-10-10 13:42:33 +11:00
MrMelbert a431f9b6dc Fix master (#93342)
## About The Pull Request

#93165 skewed with #93305
2025-10-07 22:13:28 +02:00
die 0204ab8fdd Canreach refactor (#93165)
## About The Pull Request
ports https://github.com/DaedalusDock/daedalusdock/pull/1144
ports https://github.com/DaedalusDock/daedalusdock/pull/1147

full credit to @Kapu1178 for the juice

instead of `reacher.CanReach(target)` we now do
`target.CanBeReachedBy(reacher)`, this allows us to give special
behavior to atoms which we want to reach, which is exactly what I need
for a feature I'm working on.
## Why It's Good For The Game
allows us to be more flexible with reachability
## Changelog
🆑
refactor: refactored how reaching items works, report any oddities with
being unable to reach something you should be able to!
/🆑
2025-10-07 20:28:59 +02:00
MrMelbert d3c806c070 Fix strip menu (#93336) 2025-10-07 17:23:59 +00:00
SmArtKar 975d3d47ae Fixes certain broken icons in the outfit editor, stripping menu and multiple others (#93319)
## About The Pull Request

``icon2base64`` does not like animated icons and will display an atlas
in TGUI when one is passed into it

<img width="239" height="220" alt="JKneqDL9NH"
src="https://github.com/user-attachments/assets/47e0ffdf-c155-4c84-94ce-c23203281012"
/>

Additionally added some padding between the icon and the slot name in
the outfit editor because it annoyed me

## Changelog
🆑
fix: Fixed certain broken icons in the outfit editor, stripping menu and
multiple others
/🆑
2025-10-07 18:42:17 +02:00
Ghom f72eb75a6f Handcuffs can now be used to bind certain items (briefcases, toolboxes, etc.) to your hand. (#93305)
## About The Pull Request
Technically, this PR introduces the cuffable_item element and the
cuffed_item status effect and their relative code.

In more player-friendly terms, this allows the ability to use handcuffs
to bind certain items to your hands by right-clicking it with a pair of
handcuffs in your active hand. This makes the item unable to be dropped,
for better or worse, until you or someone else remove said cuffs. And
no, this doesn't conflict with the ability to be handcuffed if you're
silly enough to think that.

There are more than one way to remove the cuffs. For the player with the
item cuffed to their hand, to remove the cuffs they can either click the
status alert, or examine the item and click the relative hyperlink. The
second option is good to have if for some reason the status alert
doesn't show up (too many alerts etc.).

For other people, they can remove the cuffs by opening the strip
inventory menu (the one you open by click-dragging the sprite of person
with the item onto yours). It's an alternative action specific to this
status effect (therefore only held items). Until the cuffs are removed,
trying to remove the item **directly** will bring you nowhere **because
the item is stuck to their hands**, duh. Alternatively you can just chop
their arm off. You do what you do.

For a list of items that can be bound with cuffs (suggestions welcome):
- briefcases
- toolboxes
- lockboxes
- first aid kits
- shields (they generally have handles and all. gameplay-wise they
already take away one hand slot to use. Using cuffs seals the deal: no
swapping items on the go, so no two-handed weapons, but you won't drop
the shield until it's broken)
- jerrycans (Kryson's suggestion)
- soup pots (ditto, kinda weird)
- coffee mugs, and the mauna mug (ditto)
- buckets
- plushes (silly stuff, if you ever want to arrest a plush or test the
feature)
- pet carriers
- mining drills
- swords with closed guards (ERT chainsaw-sword, cap's sabre, parsnip
sabre, cutlass, e-cutlass...)
- crutches and the white cane
- baskets
- flashlights and lamps (not subtypes like flares, glowsticks and
torches)
- TTVs
- chairs

## Why It's Good For The Game
This opens up for some emergent use for handcuffs beside people (or
prisoner shoes). Inspired by a scene of some 1998 action movie, where
one of the bad guys had the mc guffin briefcase latched to his wrist
with a pair of handcuffs.

Codewise, it was also a reason to refactor bits of code like handcuffs
and screen alerts slightly. On a sidenote, actual sprites for
cult/heretic shackles.

## Changelog

🆑
add: You can now bind certain items like briefcases, toolboxes, medkits,
shields, jerrycans etc. to your hand with a pair of handcuffs,
preventing them from being dropped. You can remove said binds at any
time unless incapacitated, and so can others through the strip inventory
menu.
qol: The appearance of a screen alert now updates if the object it
represents (like, an item offered by another player) changes appearance.
imageadd: The shadow shackles item (from cult magic and heretic
sacrifices) now has its own icon.
/🆑
2025-10-07 05:24:20 -06:00
Hatterhat 99c25d0ca5 lore component and lore component usage for the br38, iaito, sc/fisher, ansem/sc (#93135)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-10-05 20:50:06 +11:00
xPokee 5e629dff04 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync 2025-10-03 07:05:54 -04:00
MrMelbert 44acefa73f More things use trait huds over raw hud management (#93084) 2025-10-02 21:36:40 +02:00
SmArtKar 5ee4ab33c6 Fixes immerse element runtimes (#93229)
## About The Pull Request

The runtimes themselves don't actually cause any issues in-game, as they
occur when an object without an overlay (due to flying, being thrown,
etc) does something that should modify the overlay. The easiest way to
handle this is to just check if its immersed in the signal receiver
itself, otherwise it'll get pretty messy with trying to keep track of
what is in what state of immersion.

## Changelog
🆑
fix: Fixed harmless runtimes when a flying object tried to cross lava
/🆑
2025-10-02 16:10:55 +02:00
MrMelbert e350c50a5c Emp prot tags are more specific, also no longer leak stealthy emp protection (#93211)
## About The Pull Request

Fixes #93199

EMP protection now specifies what it protects

Adds an EMP flag for things which should definitely not indicate they
are EMP proof

## Changelog

🆑 Melbert
fix: EMP proof objects now specify what they protect rather than only
implying it's 100% emp proof
fix: Some objects meant to stealthily be emp proof no longer broadcast
they are emp proof on examine
/🆑
2025-10-02 05:05:57 +02:00
theOOZ 67185ec2ce Adds accessory stripping to the strip-menu (#93177)
## About The Pull Request

The strip-menu can now support THREE alternate actions instead of two!
Adds stripping of accessories with a tgui input list.


https://github.com/user-attachments/assets/ab436b5a-751d-42b6-8e2c-1d83c7c7e081

## Why It's Good For The Game

Lets you take off accessories without stripping the person of their
uniform first.

## Changelog

🆑
add: Adds a button to the strip-menu to remove somebody's uniform
accessories
/🆑
2025-09-30 18:17:25 +02:00
SmArtKar 5f3c85eee0 Unifies mob, megafauna and boss crusher loot and achievements (#93068) 2025-09-30 17:24:34 +10:00
SmArtKar 5227e3e333 Reworks the mining MODsuit (#92948)
## About The Pull Request

Slightly reworks the mining MODsuit to be more distinct from other
mining gear and have its own designated role as an exploration and
mining tool.
- Base armor (when covered in ash) has been reduced to 50 from 60, being
equal to that of an explorer suit with two goliath plates attached.
However, entering the sphere mode will grant additional 20 armor,
bumping it up to 70 (equal to that of a H.E.C.K. suit)
- Integrated drill no longer mines instantly by default, instead having
a delay of 0.25 seconds. However, when entering the sphere mode, the
drill will overcharge and get back its instamine, as well as get halved
power consumption. Currently, those two are mutually exclusive, and the
drill cannot be used in the sphere mode.
- Mining bomb cooldown has been reduced to 1s from 1.25s. They also now
detonate much faster, and the detonation time matches their animation.
The digging radius has been reduced back to 3x3 from 5x5, and their
damage has been reduced to 28 from 48 to compensate increase in firing
speed and reduced detonation delay making them much easier to use
(functional DPS has been reduced from 36 to 28)
- Rewrote ore bag a bit to try and make sure it doesn't break when
depositing ores into the ORM. I only have faint suspicions of this being
possibly being caused by ore getting deleted and leaving a null in the
list, so removing it should hopefully? stop the bag from breaking.
- The 0.25 slowdown is back, but it should be less of a problem
considering that the sphere mode now is a much more viable traversal
tool and not an utter joke aside from lava traversal.
- The MODsuit now comes pre-equipped with a magnetic harness, which is
now capable of stowing kinetic crushers in addition to guns. This should
make using the sphere mode less of a pain in the ass, as you won't drop
your weapon whenever you enter the sphere mode before you remember to
put it in your suit storage slot. The delay on harnesses has also been
reduced to 0.5 seconds, which should make them more comfortable to use,
while still allowing someone to grab your gun if you're not careful.
- The sphere mode can no longer traverse lava roundstart, instead
requiring to be upgraded with two pieces of bileworm skin to get
lava-resistant plating. This is meant to work together with #92877,
being a part of ongoing effort to bring mining back in terms of speed
and action level, reducing mining and exploration speeds in favor of
higher ore spawns and more focus on gear and equipment progression.

<img width="92" height="98" alt="image"
src="https://github.com/user-attachments/assets/740ab28d-210d-4832-ba07-00dbd8680491"
/>

Additionally, both the mining drill and green raptor bumpmining has been
nerfed (technically fixed, practically nerfed) by removing the diagonal
movement... thing which allowed you to mine thrice as quickly and ignore
the one-tick movement delay due to how diagonal movement works.


https://github.com/user-attachments/assets/711e895f-e7e7-4cd9-b484-d7d11ff597af

Its still fast and comfortable to use, just not absurdly fast.

## Why It's Good For The Game

The mining MODsuit is in a very weird place both balance and progression
wise. Its very easy to get if you ignore vents, it has good armor stats,
it allows you to partly ignore being set on fire (or fully if you get
the regulator module, but that requires more effort). I don't think that
the buff was very needed, it was very strong as-is when used properly
(with a yellow or green raptor mount) which not a lot of people seem to
have realized.
However, its still in a pretty pitiful state as its core feature (sphere
mode) is nigh useless as the drill only works outside of it, and mines
themselves are extremely clunky and uncomfortable to use. This leaves it
only being useful for its cheap armor (without needing to kill
goliaths), free GPS and ore bag that don't occupy your pockets, and
ability to ignore environmental hazards.

The solution I've decided to go with is reworking the MODsuit to be
focused on mining and exploration rather than combat, being a good
equipment piece for newer players and miners less interested in hunting
megafauna. This carves the MODsuit its own niche rather than being
weirdly slotted between base suits and contending with drake armor in
terms of stats/effects.
Roundstart lava crossing capabilities removal alongside bumpmining nerf
is somewhat unrelated to the rest of the changes, it is a part of the
exploration rework alongside #92877, which is intended to force miners
to engage in combat more. Without the nerf, the suit is as fast as a
yellow raptor, which lets it go through lavaland at absurd speeds when
moving diagonally. (Yes, diagonal zig-zag movement ignoring the bump
delay allows you to outspeed someone moving cardinally)

More details about the project can be found in this [design
doc](https://hackmd.io/@smart-kar/HkUINgBtke). The instamine ability of
the sphere will likely get slightly nerfed in the future with the main
batch of ore spread buffs and mining speed nerfs, but I've left it as
powerful as a green raptor to not make the suit useless when compared to
other options in the meantime.

## Changelog
🆑
add: Mining MODsuit has gained a magnetic harness for all of your
crusher stowing needs.
balance: Magnetic harnesses now take only 0.5 seconds to pick up your
gun, and can pick up crushers.
balance: Mining MODsuit has regained it small slowdown, and lost 10
melee armor.
balance: Mining drill MODule is no longer instant (outside of the sphere
mode of a mining MOD)
balance: The mining sphere MODule now can break rocks when rolling into
them, gives 20 melee and bomb armor when active, and has a shorter bomb
cooldown, but bombs themselves have reduced damage and mining AOE.
balance: Mining sphere MODule now requires an upgrade in form of two
pieces of bileworm skin to be able to traverse lava, as opposed to being
able to do so innately.
fix: Fixed MODsuit ore bag sometimes breaking permanently when
depositing ores into the ORM.
/🆑
2025-09-29 01:34:41 -04:00