624 Commits

Author SHA1 Message Date
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
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
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
Roxy d14e538393 Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 2025-10-15 19:34:41 -04:00
necromanceranne 3bce974300 Restores the base warp_effect object (#93368)
## About The Pull Request

Was deleted in https://github.com/tgstation/tgstation/pull/92216

Should not have been.

## Why It's Good For The Game

Deleting used assets bad.

## Changelog
🆑
fix: The warp sfx now works properly.
/🆑
2025-10-11 00:15:35 +02:00
throwawayuseless 6bc67d2bc6 Emitter: The Emitting (#92327)
## About The Pull Request
Adds Diode Disks, installable disks that when fitted into an emitter can
change its function.
* Healing
* Stamina damage, and heals the SM slightly at the cost of internal
energy
* Traitor engi only explosive that damages and supercharges the SM if
used that way. Firerate is halved.
* Incendiary that slightly damages the SM but has lots of energy
* Sanity damaging one that improves SM psi coeff
* Magnetic item attracting one that improves SM mol absorption.
## Why It's Good For The Game
Fun and unique ways for Engi to use excess power or improve their SM
setups. Could also lead to neat engi inventions such as, say, a circuit
device that aims and fires a healing emitter at anyone nearby who is
damaged. Should also incentivize the researching of useful techs, hence
why important medium tier techs are what lock the different disks.
## Changelog
🆑
add: New Diode Disks which allow you to configurate emitters with
special functions.
add: New Engi & CE exclusive traitor item, a diode disk that causes an
emitter to create low radius explosions when it hits things. Note that
this will reduce the fire-rate of your emitter.
/🆑

---------

Co-authored-by: ThrowawayUseless <notarealemail@emailservice.fake>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2025-08-19 22:35:55 -04:00
nevimer 81313b27a5 Merge remote-tracking branch 'origin/pupstream-25-08-08' 2025-08-15 17:36:16 -04:00
throwawayuseless 2a7921d436 Emitter: The Emitting (#92327)
## About The Pull Request
Adds Diode Disks, installable disks that when fitted into an emitter can
change its function.
* Healing
* Stamina damage, and heals the SM slightly at the cost of internal
energy
* Traitor engi only explosive that damages and supercharges the SM if
used that way. Firerate is halved.
* Incendiary that slightly damages the SM but has lots of energy
* Sanity damaging one that improves SM psi coeff
* Magnetic item attracting one that improves SM mol absorption.
## Why It's Good For The Game
Fun and unique ways for Engi to use excess power or improve their SM
setups. Could also lead to neat engi inventions such as, say, a circuit
device that aims and fires a healing emitter at anyone nearby who is
damaged. Should also incentivize the researching of useful techs, hence
why important medium tier techs are what lock the different disks.
## Changelog
🆑
add: New Diode Disks which allow you to configurate emitters with
special functions.
add: New Engi & CE exclusive traitor item, a diode disk that causes an
emitter to create low radius explosions when it hits things. Note that
this will reduce the fire-rate of your emitter.
/🆑

---------

Co-authored-by: ThrowawayUseless <notarealemail@emailservice.fake>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2025-08-13 07:42:53 +10:00
LT3 53fd71ecf9 Fix delam suppression time restriction (#4400)
## About The Pull Request

Fixes https://github.com/Bubberstation/Bubberstation/issues/4387 by
actually passing args to the prerequisite check. Moves logging to
consistently be in Engine

## Changelog

🆑 LT3
fix: Fixed SM emergency stop button working beyond 30 minutes
/🆑
2025-08-08 14:58:44 -07:00
necromanceranne 2a778cd510 Changes flux anomalies and gravity anomalies to be a little less horrible to deal with. (#92216)
## About The Pull Request

Flux anomalies, when they detonate, do a minor explosion and emit a wide
EMP pulse. This can cause a lot of damage in its own right, but it won't
syndicate bomb a random section of the station anymore.

Gravity anomalies

A) No longer have the click catching giant image floating above it
anymore.
B) No longer chain hardstuns you if you get too close every time it
ticks. Instead, it knocks you down. You can also avoid this effect by
wearing magboots.
C) Also doesn't throw literally every object in an area around it
straight into you every time it ticks. Instead, it does so only 20% of
the time.

Long range gas analyzers can now scan anomalies.

## Why It's Good For The Game

> Flux

A really annoying anomaly and one that I think has caused several
shuttle calls in its time. If you don't catch it, it blows up a segment
of the station entirely at random. This thing can almost be as bad as a
vortex in some contexts. A giant EMP can still be pretty destructive,
but it isn't quite at the same level as a giant explosion and I suspect
not shuttle call worthy. The minor explosion will at most trash a room.

> Gravity

I literally do not understand how anyone was supposed to disable these.
I literally gave up years ago even trying to catch them. They're
practically designed to kill you for trying. The click catching warp
effect not only looked kind of lame, but it just straight up stopped you
being able to disable them (mouse opacity doesn't work here and I tried,
it redirects clicks to other tiles for some godawful reason, probably
byond weirdness). You had to spam click a LOT to even try.

On top of that, it just stuns you? It literally just stuns you if you
approach it? And magboots can't help you to avoid that? What the fuck
are you _supposed_ to do to avoid that?

Also it can just instantly kill you if you approach it and it gathered
enough stuff because it will just keep slapping you with every loose
object within a radius around itself? At speed 5 so things that don't
normally embed will embed?

So it mulches you for approaching it, chain hardstuns you for
approaching it, and it deliberately intercepts clicks in a completely
unintuitive fashion even if you do manage to click it. You need to
approach it to stop it. A recipe for disaster. Fuck that.

> Analyzer

It was annoying this wasn't able to do this already!

## Changelog
🆑
balance: Gravity anomalies can be properly clicked. Rather than chain
stunning you, the anomaly will knock you down. You can avoid the
negatives of gravity anomalies by wearing magboots. (Yes, it did not
really protect you until now)
balance: Flux anomalies detonate in a much smaller explosion, but
release a wide EMP as well.
balance: Long range gas analyzers can now scan anomalies.
/🆑

(cherry picked from commit 2b0a824132)
2025-08-08 15:33:41 -04:00
necromanceranne 2b0a824132 Changes flux anomalies and gravity anomalies to be a little less horrible to deal with. (#92216)
## About The Pull Request

Flux anomalies, when they detonate, do a minor explosion and emit a wide
EMP pulse. This can cause a lot of damage in its own right, but it won't
syndicate bomb a random section of the station anymore.

Gravity anomalies

A) No longer have the click catching giant image floating above it
anymore.
B) No longer chain hardstuns you if you get too close every time it
ticks. Instead, it knocks you down. You can also avoid this effect by
wearing magboots.
C) Also doesn't throw literally every object in an area around it
straight into you every time it ticks. Instead, it does so only 20% of
the time.

Long range gas analyzers can now scan anomalies.

## Why It's Good For The Game

> Flux 

A really annoying anomaly and one that I think has caused several
shuttle calls in its time. If you don't catch it, it blows up a segment
of the station entirely at random. This thing can almost be as bad as a
vortex in some contexts. A giant EMP can still be pretty destructive,
but it isn't quite at the same level as a giant explosion and I suspect
not shuttle call worthy. The minor explosion will at most trash a room.

> Gravity

I literally do not understand how anyone was supposed to disable these.
I literally gave up years ago even trying to catch them. They're
practically designed to kill you for trying. The click catching warp
effect not only looked kind of lame, but it just straight up stopped you
being able to disable them (mouse opacity doesn't work here and I tried,
it redirects clicks to other tiles for some godawful reason, probably
byond weirdness). You had to spam click a LOT to even try.

On top of that, it just stuns you? It literally just stuns you if you
approach it? And magboots can't help you to avoid that? What the fuck
are you _supposed_ to do to avoid that?

Also it can just instantly kill you if you approach it and it gathered
enough stuff because it will just keep slapping you with every loose
object within a radius around itself? At speed 5 so things that don't
normally embed will embed?

So it mulches you for approaching it, chain hardstuns you for
approaching it, and it deliberately intercepts clicks in a completely
unintuitive fashion even if you do manage to click it. You need to
approach it to stop it. A recipe for disaster. Fuck that.

> Analyzer

It was annoying this wasn't able to do this already!

## Changelog
🆑
balance: Gravity anomalies can be properly clicked. Rather than chain
stunning you, the anomaly will knock you down. You can avoid the
negatives of gravity anomalies by wearing magboots. (Yes, it did not
really protect you until now)
balance: Flux anomalies detonate in a much smaller explosion, but
release a wide EMP as well.
balance: Long range gas analyzers can now scan anomalies.
/🆑
2025-08-07 13:47:35 -04:00
Rhials c8d83fb5a7 [NO GBP] Supermatter-spawned hallucination anomalies don't spawn decoys (#91634) 2025-06-21 22:36:04 -04:00
SmArtKar 0712d9870c Planecube Optimizations and Job Security: Part One (#91696)
## About The Pull Request

This is an atomized revival of #82419, with this part containing the
simplest of its features:
- Fixes AO pref refreshing the wrong plane, thus not updating until you
swap bodies
- Removes supermatter's copypasted warp effect
- Culls distortion effects when they're not in use because its a chonky
filter
- Hides the escape menu when its, well, hidden
- Fixes hide_highest_offset not working upon parent's creation (we're so
good at our jobs hell yeah)
- Replaces runechat's AO dropshadow with an outline, because its barely
visible due to low opacity.

## Why It's Good For The Game

Our rendering performance is shit and we need to improve it, and the
first step in this task is optimizing planecube's simplest parts. The
next step is conditional culling, better non-multiz handling and
parallax rework/removal, but all of those need to be atomized as to
prevent the PR from sharing the fate of the original.

## Changelog
🆑
fix: Ambient Occlusion pref should now update immediately upon being
changed, instead of having to swap bodies or waiting for server restart
to get it updated.
code: Slightly improved rendering code/performance just a tiny bit.
/🆑
2025-06-21 22:21:57 -04:00
Rhials f6acb2a7e8 [NO GBP] Supermatter-spawned hallucination anomalies don't spawn decoys (#91634) 2025-06-21 03:16:22 +02:00
SmArtKar 1e0668802c Planecube Optimizations and Job Security: Part One (#91696)
## About The Pull Request

This is an atomized revival of #82419, with this part containing the
simplest of its features:
- Fixes AO pref refreshing the wrong plane, thus not updating until you
swap bodies
- Removes supermatter's copypasted warp effect
- Culls distortion effects when they're not in use because its a chonky
filter
- Hides the escape menu when its, well, hidden
- Fixes hide_highest_offset not working upon parent's creation (we're so
good at our jobs hell yeah)
- Replaces runechat's AO dropshadow with an outline, because its barely
visible due to low opacity.

## Why It's Good For The Game

Our rendering performance is shit and we need to improve it, and the
first step in this task is optimizing planecube's simplest parts. The
next step is conditional culling, better non-multiz handling and
parallax rework/removal, but all of those need to be atomized as to
prevent the PR from sharing the fate of the original.

## Changelog
🆑
fix: Ambient Occlusion pref should now update immediately upon being
changed, instead of having to swap bodies or waiting for server restart
to get it updated.
code: Slightly improved rendering code/performance just a tiny bit.
/🆑
2025-06-18 21:00:23 -07:00
LT3 ef427fa77b Delam suppression system refactor (#3898)
## About The Pull Request

Code cleanup and refactors the delam suppression system. Instead of a
guaranteed heal of the crystal and flooding the room with a freon fire,
the suppression system will try its best to suppress the delam,
alternatively minimizing the explosion size of the delam through cooling
it.

- Orange alert threshold moved from 95% to 40%. (70% on skeleton crew)
- Reduced amount of freon in the system by half
- Windows in the SM chamber no longer explode when the system is
activated
- Various minor timing adjustments to fit the new system purpose
- Penalty to delam counter highscore reduced to 50% from 100%

## Why It's Good For The Game

The freon flood/fire in the engine room is pain in the ass busywork.
Instead, minimizing the size of the delam explosion keeps it mostly
contained to the engine room while also being a logical type of cleanup
associated with a delam.

Example of a minimized explosion:

![image](https://github.com/user-attachments/assets/f75964b3-7eee-4a94-bfb5-71c5a5135c87)

## Changelog

🆑 LT3
balance: Windows in the SM chamber no longer explode when the
suppression system is activated
balance: Reduced amount of freon in the delam suppression system by half
balance: Penalty to delam counter highscore reduced to 50% from 100%
qol: Automatic alert for delams fires later into the delam progress.
fix: The delam sound effect stops if the delam is saved during the 15
second countdown
fix: Partially delaminated supermatter crystal heat modifier actually
works
/🆑
2025-05-27 21:15:36 -07:00
MrMelbert 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
Pickle-Coding f436b46d23 Tesla and supermatter zaps can trigger electrolysis reactions. Hypernoblium to antinoblium conversion requires supermatter zaps. (#91048)
## About The Pull Request
Supermatter and tesla zaps can trigger electrolysis reactions.
Hypernoblium to antinoblium conversion requires supermatter zaps above 5
GeV, with 100% efficiency at 9GeV. Antinoblium is generated at 1:1 from
hypernoblium consumed. The requirement for hypernoblium conversion is
also included in the reaction console.
## Why It's Good For The Game
Ordinary electrolysis is a rather boring way to obtain antinoblium,
especially with fire extinguisher cheese. This limits the creation of
antinoblium to more extreme and loud methods. This is mainly intended
for balancing #91016, but seems out of scope to include in that PR. This
also gives room for antinoblium to be balanced as one of the more exotic
gases, and is much more obvious when antinoblium is being created.
## Changelog
🆑
add: Supermatter and tesla zaps can trigger electrolyzer reactions.
balance: Hypernoblium to antinoblium electrolysis requires supermatter
zaps above 5 GeV.
balance: Hypernoblium is converted to antinoblium 1:1 during
electrolysis.

/🆑
2025-05-22 21:17:27 -04:00
MrMelbert 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
Pickle-Coding 10fbd233f3 Tesla and supermatter zaps can trigger electrolysis reactions. Hypernoblium to antinoblium conversion requires supermatter zaps. (#91048)
## About The Pull Request
Supermatter and tesla zaps can trigger electrolysis reactions.
Hypernoblium to antinoblium conversion requires supermatter zaps above 5
GeV, with 100% efficiency at 9GeV. Antinoblium is generated at 1:1 from
hypernoblium consumed. The requirement for hypernoblium conversion is
also included in the reaction console.
## Why It's Good For The Game
Ordinary electrolysis is a rather boring way to obtain antinoblium,
especially with fire extinguisher cheese. This limits the creation of
antinoblium to more extreme and loud methods. This is mainly intended
for balancing #91016, but seems out of scope to include in that PR. This
also gives room for antinoblium to be balanced as one of the more exotic
gases, and is much more obvious when antinoblium is being created.
## Changelog
🆑
add: Supermatter and tesla zaps can trigger electrolyzer reactions.
balance: Hypernoblium to antinoblium electrolysis requires supermatter
zaps above 5 GeV.
balance: Hypernoblium is converted to antinoblium 1:1 during
electrolysis.

/🆑
2025-05-16 21:34:05 -07:00
LT3 3fe0c3dc6b Supermatter anomaly fixes/explosion scaled hallucination (#90788)
## About The Pull Request

- Some fixes for the supermatter crystal anomaly generation, ensuring
they spawn outside the chamber windows and adds the outright missing
dimensional anomalies.
- Hallucination duration is calculated based on both distance from the
SM as well as the size of the delam explosion (a modifier of 0.75x for a
small explosion, up to 1.25x for the largest delam explosion)

## Why It's Good For The Game

Bugfixes, improvement on the delam hallucination.

## Changelog

🆑 LT3
fix: Fixed supermatter anomaly generation, hallucination is based on
distance and delam explosion size
/🆑
2025-04-29 18:23:06 -06:00
Ghom 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
LT3 a6679f9638 Fixes delam hallucinations (#90465)
Fixes the delam hallucination proc to actually calculate based on
distance from the supermatter.

Fixes 2.5 year old bug.

🆑 LT3
fix: Supermatter delamination now applies hallucinations based on
distance
/🆑
2025-04-29 17:45:28 -06:00
LT3 d3ead037c7 Fix delam station-wide announcement sounds (#3647)
## About The Pull Request

Redoes the delam alarm sounds.
- Only the main engine will play the long ass Skyrat meltdown clips
- Cooldown added on the long clips so it's not playing a 12 second sound
every 30 seconds
- Properly times meltdown.ogg with the actual SM delam.

## Why It's Good For The Game

I hate it when the engineers are battling a delam, keeping it hovering
below 40% and we're subjected to the constant annoyance of that
announcement.

The first time the long clip plays, the station is now aware the engine
is now delamming. You don't need to repeat it every 30 seconds.

## Proof Of Testing

I did, much.

## Changelog

🆑 LT3
qol: Engine delam station-wide sound announcements are only triggered by
the main engine
/🆑
2025-04-26 17:45:52 -07:00
LT3 5995b0c877 Fix non-station SM crystals from activating the delam suppression system (#3638)
## About The Pull Request

lol


![image](https://github.com/user-attachments/assets/fba330da-5a66-43c0-b6af-b73a9b851718)

## Changelog

🆑 LT3
fix: Those jerks over at Cybersun can no longer trigger your station's
supermatter delam suppression system
/🆑
2025-04-26 01:18:01 -04:00
LT3 a1125ede4b Supermatter anomaly fixes/explosion scaled hallucination (#90788)
## About The Pull Request

- Some fixes for the supermatter crystal anomaly generation, ensuring
they spawn outside the chamber windows and adds the outright missing
dimensional anomalies.
- Hallucination duration is calculated based on both distance from the
SM as well as the size of the delam explosion (a modifier of 0.75x for a
small explosion, up to 1.25x for the largest delam explosion)

## Why It's Good For The Game

Bugfixes, improvement on the delam hallucination.

## Changelog

🆑 LT3
fix: Fixed supermatter anomaly generation, hallucination is based on
distance and delam explosion size
/🆑
2025-04-25 11:55:59 -07:00
LT3 607651eed2 Supermatter anomaly fixes/explosion scaled hallucination (#90788)
## About The Pull Request

- Some fixes for the supermatter crystal anomaly generation, ensuring
they spawn outside the chamber windows and adds the outright missing
dimensional anomalies.
- Hallucination duration is calculated based on both distance from the
SM as well as the size of the delam explosion (a modifier of 0.75x for a
small explosion, up to 1.25x for the largest delam explosion)

## Why It's Good For The Game

Bugfixes, improvement on the delam hallucination.

## Changelog

🆑 LT3
fix: Fixed supermatter anomaly generation, hallucination is based on
distance and delam explosion size
/🆑
2025-04-25 15:08:33 +00:00
Ghom 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
LT3 4fd5532902 Fixes delam hallucinations (#90465)
## About The Pull Request

Fixes the delam hallucination proc to actually calculate based on
distance from the supermatter.

## Why It's Good For The Game

Fixes 2.5 year old bug.

## Changelog

🆑 LT3
fix: Supermatter delamination now applies hallucinations based on
distance
/🆑
2025-04-20 10:51:58 -07:00
LT3 6bf01606d3 Fixes delam hallucinations (#90465)
## About The Pull Request

Fixes the delam hallucination proc to actually calculate based on
distance from the supermatter.

## Why It's Good For The Game

Fixes 2.5 year old bug.

## Changelog

🆑 LT3
fix: Supermatter delamination now applies hallucinations based on
distance
/🆑
2025-04-08 16:41:44 +02: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
Penelope Haze d0a7f955f8 Fix various issues with names in string interpolation (#89246)
## About The Pull Request
Commit messages should be descriptive of all changes.
The "incorrect `\The` macro capitalization" was intentional when it was
added, but as far as I know TG says "the supermatter" rather than "The
Supermatter," so it's incorrect now.
This is completely untested. I don't even know how you'd go about
testing this, it's just a fuckton of strings.
Someday I want to extract them and run NLP on it to catch grammar
problems...

## Why It's Good For The Game
Basic grammar pass for name strings. Should make `\the` work better and
avoid cases like `the John Smith`.
2025-01-29 17:46:03 +01:00
Mosley 9c7cf5ebaf Bubber Edits for mutant bodypart PR #2903
This is all the edits done squashed together.
2025-01-21 00:32:56 -07:00
zoomachina 83b7fc798d succesful -> successful (#88916) 2025-01-10 13:03:36 +01:00
xXPawnStarrXx 276544b1a2 Replace Skyrat santa hat with GAGS santa hat (#2693)
## About The Pull Request

Autodrobes now supply GAGs santahats.
## Why It's Good For The Game
Festive customisation.
## Changelog
🆑
fix: Made autodrobes dispense the right santahats.
/🆑

---------

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2024-12-20 12:47:47 -08:00
LT3 85bed04f4d Festive supermatter description (#2597)
## About The Pull Request

Adds the missing description for the festive supermatter

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>

</details>
2024-11-30 20:07:31 +00:00
MrMelbert 75696ab873 Fixes random stuff spilling into ooc tab (#88221)
## About The Pull Request

`boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger`
is identical it just doesn't carry the same baggage

## Changelog

🆑 Melbert
fix: Stuff like the SM exploding will no longer output to your OOC tab
/🆑
2024-11-27 17:41:52 +01:00
LT3 865e7b6628 Festive Supermatter (#2552)
## About The Pull Request

Adds a chance to add some holiday colours to the supermatter.

## Why It's Good For The Game

Adds some holiday flavour.

## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>


![xmas-sm-2](https://github.com/user-attachments/assets/bbfe5b6a-ca05-46f2-a19f-d1e508f746f5)

![xmas-sm-1](https://github.com/user-attachments/assets/0c78ed43-86bb-4e23-9a73-c16746120fcc)

</details>

## Changelog

🆑 LT3
image: A more festive supermatter for the holidays
/🆑
2024-11-26 02:32:17 -05:00
Qwertytoforty ca19d9876a The supermatter no longer spawns anomalies inside objects or mobs. (#87112)
## About The Pull Request
The supermatter no longer will spawn anomalies inside pipes, vents,
ebeams, cables, etc, as it now uses RANGE_TURFS instead of orange. We
believe this was the intention, as it is hard pathed to
var/turf/local_turf already, rather than any atom.

## Why It's Good For The Game
Technically, anomalies can pop out of the pipes when moving just fine,
however it can lead to confusion if the anomaly is unable to move, or
repeatedly fails to move, keeping it inside the pipe, before triggering
its ending effect (pyroclastic for example, or on paradise where we
found this issue, bluespace anomalies) could make it look like a fire
came out of no where, as it is effectively invisible when in a pipe.
And the anomaly is likely destroyed when whatever it spawns in is
destroyed, so ebeam anomalies would not even exist.

## Testing (with message admins not breakpoints)
Before: Some examples of the Supermatter spawning anomalies (with
message admins showing their LOC on initialize)

![image](https://github.com/user-attachments/assets/53696ff2-2617-47ad-9250-06a5ca537bb4)
After: After running the supermatter with high energy to spawn anomalies
for a while:

![image](https://github.com/user-attachments/assets/0ee7df93-be4a-458c-a3bc-bd2f290cd2b7)

(Sorry if this needs a no GBP label or something for being a one line
fix, first time pring here)
## Changelog
🆑
fix: Anomalies no longer spawn in objects or mobs from the supermatter.
/🆑
2024-11-14 16:01:04 -08:00
Pickle-Coding b281c0b76f Accumulates energy for the supermatter zapping. (#86700)
## About The Pull Request
Accumulates energy for supermatter zaps. The supermatter will build up
zap energy over time. It uses up a portion of that energy to release
zaps. Also allows it to zap multiple times between SSmachines ticks.
## Why It's Good For The Game
This allows the supermatter to zap more than once per 2 seconds again,
while still taking SSmachines time perspective.
## Changelog
🆑
balance: The supermatter accumulates zap energy and discharges a portion
of it to use for zapping per atmos tick, no longer being bounded by
machinery ticking.
/🆑
2024-11-11 00:43:39 -08:00
Ghom 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
carlarctg 193d9c8e90 Hitting an SM with extraction tongs won't dust them anymore (#87430)
## About The Pull Request

Hitting an SM with extraction tongs won't dust them anymore (the tips
are made out of hypernob too)

## Why It's Good For The Game

consistency

(real reason is me hitting the sm crystal with tongs while sleep
deprived and ruining my planned gimmick, but come on. theyre hypernob
tongs. )

## Changelog

🆑
fix: Hitting an SM with extraction tongs won't dust them anymore
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2024-10-25 15:40:45 +00:00
MelokGleb 2f99af2330 The Supermatter Resizing: How a crystal can fit into hand (#87232)
## About The Pull Request
adds supermatter sword craft made out of:
20 adamantium
2 vortex cores
actual sm
6 minutes of crafting
announcement on fourth minute
shrinking wand

first of all, you need to craft adamantium pedestal (2 min)

![image](https://github.com/user-attachments/assets/3a24611d-ddce-4438-9b9f-7283458b0791)

then, you should combine it with shrink wand and sm (2 min)
(announcement once you craft it) (it has a gps signal)

![image2](https://github.com/user-attachments/assets/667a58d5-1b3b-49bc-a781-45f84cdaf2b7)


and the last one, small sm and 2 vortex cores (2 min) (dont forget about
gps signal)

![image1](https://github.com/user-attachments/assets/ae432269-af3d-4e14-ab80-f42f558e3d46)
![image3](https://github.com/user-attachments/assets/313033f1-f375-43d3-a8d5-f7307713e69e)


## Why It's Good For The Game
wiz needs more challenges and fun
craft is very hard and challenging, but the reward is powerfull as fuck
## Changelog
🆑 MelokGleb and KREKS
add: very hard wiz-only sm sword craft
sprite: sm sword resprite
/🆑
2024-10-25 02:30:51 +02:00
StrangeWeirdKitten 25289b8bc6 fixes a fuck load of sounds 2024-10-24 07:52:55 -06: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
Waterpig 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
Qwertytoforty ace411a2ab The supermatter no longer spawns anomalies inside objects or mobs. (#87112)
## About The Pull Request
The supermatter no longer will spawn anomalies inside pipes, vents,
ebeams, cables, etc, as it now uses RANGE_TURFS instead of orange. We
believe this was the intention, as it is hard pathed to
var/turf/local_turf already, rather than any atom.

## Why It's Good For The Game
Technically, anomalies can pop out of the pipes when moving just fine,
however it can lead to confusion if the anomaly is unable to move, or
repeatedly fails to move, keeping it inside the pipe, before triggering
its ending effect (pyroclastic for example, or on paradise where we
found this issue, bluespace anomalies) could make it look like a fire
came out of no where, as it is effectively invisible when in a pipe.
And the anomaly is likely destroyed when whatever it spawns in is
destroyed, so ebeam anomalies would not even exist.

## Testing (with message admins not breakpoints)
Before: Some examples of the Supermatter spawning anomalies (with
message admins showing their LOC on initialize)

![image](https://github.com/user-attachments/assets/53696ff2-2617-47ad-9250-06a5ca537bb4)
After: After running the supermatter with high energy to spawn anomalies
for a while:

![image](https://github.com/user-attachments/assets/0ee7df93-be4a-458c-a3bc-bd2f290cd2b7)

(Sorry if this needs a no GBP label or something for being a one line
fix, first time pring here)
## Changelog
🆑
fix: Anomalies no longer spawn in objects or mobs from the supermatter.
/🆑
2024-10-10 11:45:46 +03:00
Pickle-Coding 5d7820057d Accumulates energy for the supermatter zapping. (#86700)
## About The Pull Request
Accumulates energy for supermatter zaps. The supermatter will build up
zap energy over time. It uses up a portion of that energy to release
zaps. Also allows it to zap multiple times between SSmachines ticks.
## Why It's Good For The Game
This allows the supermatter to zap more than once per 2 seconds again,
while still taking SSmachines time perspective.
## Changelog
🆑
balance: The supermatter accumulates zap energy and discharges a portion
of it to use for zapping per atmos tick, no longer being bounded by
machinery ticking.
/🆑
2024-10-06 19:02:19 +02:00
grungussuss 58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00