Commit Graph

264 Commits

Author SHA1 Message Date
SkyratBot
33d7bdecc2 [MIRROR] Removes material breakdown flags, traits & miscellaneous fixes. [MDB IGNORE] (#25836)
* Removes material breakdown flags, traits & miscellaneous fixes. (#80389)

## About The Pull Request
1. Removes material breakdown flags i.e. all flags with the format
`BREAKDOWN_XXX`. These flags do nothing, there are no special checks to
transform materials based on these flags, they are passed around just
because certain procs require them for syntax purposes only.

Apparently there were plans to make these flags do something special
from the comment

302247c0d1/code/__DEFINES/construction/material.dm (L43)
But nobody got any ideas for years now. The only special thing we can do
with them now is remove them and reduce code clutter, so let's do that

The only flag that ever did something was the
`BREAKDOWN_INCLUDE_ALCHEMY` flag. This only worked when coupled together
with `TRAIT_MAT_TRANSMUTED` trait(which is only used by the reagent
metalgen) and when both this trait & flag are combined together... they
still do nothing

302247c0d1/code/game/atom/atom_materials.dm (L41-L42)
Yup they cancel out each other to prevent returning an empty list, the
traits only job was to prevent materials from being recycled (like why?
what's the benefit of that? nothing) and the flag was meant to bypass
this restriction so both the trait & the flag cancel out each other
therefore doing nothing meaningful. Best remove them both and call it a
day.

2. Fixes an error in displaying number of sheets inserted into a mat
container when that sheet is made up of alloy materials. it would count
as 2 or more because it would take the sum of total material amount
inserted and not the actual sheets. That's fixed now.

3. Remote materials now properly respect the `MATCONTAINER_NO_INSERT`
flag

4. Adds helper proc to insert materials via the remote material
component with proper context

## Changelog
🆑
fix: mat container displays correct number of sheets inserted for alloy
materials.
fix: remote materials now properly respect the `MATCONTAINER_NO_INSERT`
flag.
code: removes material breakdown flags and related traits.
code: adds helper proc to insert materials via the remote material
component with proper context.
/🆑

* Removes material breakdown flags, traits & miscellaneous fixes.

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-12-25 10:13:29 +00:00
SkyratBot
0f1761fa40 [MIRROR] Color matrix defines for filters and identity [MDB IGNORE] (#25823)
* Color matrix defines for filters and identity (#80320)

This PR converts the procs `color_matrix_identity`,
`color_matrix_lightness` and `color_matrix_contrast` into
defines/macros. Also adds in defines for common color matrix filters.

I don't like how `color_matrix_identity` is a one-line proc with no arg.
Also these help people identify the sort of color matrix filter is being
used.

* Color matrix defines for filters and identity

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-12-24 20:58:26 +00:00
SkyratBot
899063da95 [MIRROR] Circuit action button refactor [MDB IGNORE] (#25798)
* Circuit action button refactor (#80379)

## About The Pull Request

This PR makes several changes to how circuit action buttons work:
- The MOD action and BCI action components have been merged into a
single component.
- MOD circuit actions can be pinned from the configuration menu. This
works the same way as pinning individual modules, and can be done both
by the wearer and a suit AI.
- Action components have an output pin for the user of the action. This
allows MOD module circuits to distinguish between the wearer and an AI.
- Creates a supertype for `/datum/action/item_action/mod/pinned_module`
named `/datum/action/item_action/mod/pinnable`, which implements common
functionality for pinned modules and pinned circuit module actions.

## Why It's Good For The Game

The prior functionality of circuit MOD actions was somewhat unintuitive,
requiring the user to select an action from a radial menu *after*
activating the module, whether from a pinned action or from the module
radial. Providing similar pinning functionality to modules themselves
makes MOD actions more readily usable.

Merging the two different types of circuit components into one was made
with the idea that adding new types of shells with equipment actions
would inflate the number of subtypes of
`/obj/item/circuit_component/equipment_action` without adding much
meaningful functionality.

## Changelog

🆑
qol: MOD wearers and internal AIs can pin the individual actions in a
MOD circuit module in a similar way to how they can pin modules. Circuit
module actions can be pinned from the configuration menu of the circuit
refactor: The MOD action and BCI action components have been merged into
one component - the Equipment Action component.
/🆑

* Circuit action button refactor

---------

Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
2023-12-23 19:26:25 -05:00
SkyratBot
9a3fb5c5c1 [MIRROR] FOV is Dead (Long Live FOV) [MDB IGNORE] (#25600)
* FOV is Dead (Long Live FOV)

* Update _megafauna.dm

* Update _vehicle.dm

* FOV Hotfix: Actually offsets gameplane render relays

* removes redundant visual_shadow

* removes GAME_PLANE_UPPER references

* Update mob_movement.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-23 17:47:07 +00:00
SkyratBot
7bfe7215ff [MIRROR] Throwing a bee at someone injects reagents [MDB IGNORE] (#25663)
* Throwing a bee at someone injects reagents (#80354)

## About The Pull Request

Throwing a bee at someone injects that bee's reagents.
This has a larger code footprint than you might expect because venom
injection is done via an element which in turn gives a callback to a
component.
While I was touching that I also separated `COMSIG_MOVABLE_IMPACT` into
`COMSIG_MOVABLE_PRE_IMPACT` because a lot of effects trigger from
`COMSIG_MOVABLE_IMPACT` despite the fact that the throw impact can be
cancelled after the signal is sent.

I also added an inject check onto the venomous element for mob attacks,
so thick clothing can now protect you from venom injection.
I elected that Giant Spiders have big enough fangs to ignore this such
that this isn't a major balance change, as do moonicorns (that horn is
massive), Fire Sharks, and Clowns (no idea how they are applying chems
at all to be honest).

## Why It's Good For The Game

I thought about someone throwing a bee at someone like a little dart and
thought "hee hee"

## Changelog

🆑
add: If you throw a bee at someone it will hit them sting-first and
inject that bee's reagent
balance: Thick clothing can now protect you from the venom of bees,
snakes, frogs, and (small) spiders
/🆑

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>

* Throwing a bee at someone injects reagents

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@ users.noreply.github.com>
2023-12-17 10:06:35 -05:00
SkyratBot
2fa469566c [MIRROR] Balance changes to swords, energy shields and modsuit shields. [MDB IGNORE] (#25531)
* Balance changes to swords, energy shields and modsuit shields. (#80072)

## About The Pull Request

### Sword Weaponry

Mundane sword weapons of all sorts do not block ``LEAP_ATTACK`` attacks
whatsoever. These attacks include tackles, xeno tackles and bodythrows.

Energy swords and double energy swords only gain 25% block probability
against such attacks.

### Double Energy Sword

No longer grants outright energy projectile immunity while employed.
Instead, it just has a high probability of reflecting (the typical 75%
to block any other attack). So, very solid defense against energy
projectiles, but not immunity.

Against non-reflectable projectiles, like ballistics or nanite bullets,
the desword only has 50% block, similar to an energy sword.

To compensate for the loss of defensive power, we'll make it all the
more rewarding for getting on top of someone with the sword by giving it
40 force while active. And also it costs 13 TC.

### Combat Energy Shield

This also lost outright energy projectile immunity, but gained the
standard blocking power of shields on top of the ability to reflect
energy projectiles when they block them. This significantly increases
the shields potential effectiveness while no longer pigeonholing the
shield to only energy weapons. (This makes them exceptionally good
against tackles and body throws, by the by).

Deathsquads still have the perfect deflection energy shield so that they
can continue to spam pulse shots with impunity.

### MODsuit Shield Module

Only has one charge instead of three, but it recharges in half the time.
This is no longer such a perfect defense, and does somewhat need you to
be thinking about how you're utilizing the shield rather than not
thinking about defense at all by barreling forward under three potential
hits worth of protection.

Also much cheaper, at almost half price of 8 TC. Because of how cheap it
is (and how much it still is necessary to keep you alive), I've put it
into the core equipment box (which brings the price up to 22 TC. As a
reminder, this is not meant to be at any discount, and is more aimed
towards teaching newer players which items contribute towards success.
If you don't want all the times within, don't buy this box, just buy
what you want separately.)

## Why It's Good For The Game

This is a doozy of an explanation, I hope you're ready for it under the
spoiler.
<details>
With my tackling and bodythrow prs, numerous people expressed
exasperation at the fact that these two tools may have been keeping some
outlier antagonist gear from becoming too easy to steamroll with if you
already knew what you were doing. My intent was to create consistent
rules and behaviours that both A) did not rely on bugs to keep the
balance of power from tipping one way or the other, and B) was at least
consistent or had consistent rules established.

This PR is tackling overperforming gear combinations for already
competent nukies that may have, over time, crept out of control, and
applying some consistency to the rules around similar equipment.

AND also deals with quite possibly the most braindead element of game
design we've tolerated for about a decade, and half a decade after it
was necessary to maintain that decision.

Part of the culprit of this issue is that, specifically in regards to
nukies, crew can't use the vast majority of their weapons effectively
against them. This largely is because this antagonist can gain
immunities to those types of equipment. And that is rapidly increasing
as we move closer towards outright ballistic removal. I don't think the
game is made healthier by everyone on the station having to fight armed
mercenaries with spears, and doesn't make much thematic sense either.
More so, most greener players probably just don't know this is how it
works, and so surprise Pikachu when their lasers bounce off nukies
harmlessly. (This bit reminds me of the problem of new players using
disablers against simple mobs)

But of course, that isn't the only part of the problem. The other half
is due to being able to be layered on a much more broad defensive tool
in the form of the MODsuit Shield Module, whose three charges could
render the mindful nukie near untouchable if they're pairing it with
some other layered defense, such as a desword. Notice that this doesn't
really address armor. The culprit is negation, and not mitigation, and
we should be sparing in how easily we hand out outright effect negation
simply because it isn't super obvious to a new player why it happened,
and how to resolve it. At the very least, we should look to find ways to
add options for players to overcome these problems. Especially with
teamwork.

Energy projectile immunity made sense while there floated around an
energy projectile that ostensibly would down you in a single shot.
Nukies ALSO had projectile weapons that worked much the same (c-20r stun
bullets, taser shot bulldogs, etc.), so it was predominantly
tit-for-tat. These immunity granting equipment pieces forced crew
members to get shotguns and ballistic guns to fight these dangers;
something more available at the time.

We've exercised large bits and pieces of this from the game a long time
ago, but we still have some remnants convinced we're still in a
taser-rich, ballistic available environment. We need to move the games
languishing tools into the modern era and re-established their place in
the game. Namely, the double-energy sword and the combat energy shield
are almost entirely unchanged besides refactors for the last decade or
so, even while the game around them have changed. They've been a
continuous sore point for me in all my time developing and a constant
nagging issue. I want to deal with it now.

MODsuit Shield Module is just kind of really good and only made stronger
the more defenses you have. It's good to have a defense like this, but I
think it is too brain dead. With only one charge, it will save you from
a lost joust here and there, but it won't make it as simple as running
right at every problem you encounter and eating a volley of attacks
while you kill someone with impunity.

**With regards to traitors**, since they also get double-energy swords;
I'm open to suggestions if this is hitting them far too hard, but I'm
not terribly concerned using this weapon for a few reasons. **Firstly**,
I think their presence amongst the crew make it a much better weapon for
tots than nukies (in isolation) simply because they can find ways to
exploit it via tools they gather from the station. It is a force
multiplier. Traitors also have a much bigger element of surprise
usually. **Secondly**, round-start traitors typically grow to be a bit
stronger over time, but I don't foresee many waiting to pay for the
double-energy sword unless they're already flush with TC. So if a
traitor is in a position after they've unlocked access to it to buy one
of these, they are probably doing pretty okay for themselves.
</details>

### TL;DR

Defense stacking and attack immunities are not particularly healthy
things to both design around, or experience in-game. They are kind of
just relics of the past made only sorer once I ripped off a few
bandaids. This is a source of a number of symptomatic issues in the
game, so let's fix that and make it easier on all of us going forward.

Much of the way these things worked operated on extremely outdated
design considerations. It doesn't make sense for them to work like this
today, and only makes things harder by keeping the status quo.

## Changelog
🆑
balance: Mundane sword-like and medieval weapons are not able to block
tackles, xenomorph tackles and body throws.
balance: The double-energy sword and energy sword have trouble blocking
physical projectiles, body throws and tackles.
balance: The double-energy sword also no longer has guaranteed energy
projectile deflection; only doing so on a successful block (75% chance
to block).
balance: But it does have 40 force now, so it is more lethal a weapon.
Traitors can purchase the sword for only 13 TC (down from 16 TC).
balance: The combat energy shield (The one you hold) now functions as a
normal shield (it used to only protect you against energy projectiles
and nothing else). It loses guaranteed energy projectile deflection, but
still reflects the projectile so on a block.
feature: Death commandos continue to have their energy shields deflect
all incoming energy projectiles. Because who cares about deathsquads
being balanced?
balance: The MODsuit shield module only has one charge, but recharges
every 10 seconds. It also costs 8 TC (down from 15). It is also now in
the Core Gear beginner box (bringing the total price up to 22 TC).
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Balance changes to swords, energy shields and modsuit shields.

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-12-10 20:51:37 -05:00
SkyratBot
8df7202455 [MIRROR] Rename notify_ghost_cloning to notify_revival [MDB IGNORE] (#25442)
* Rename notify_ghost_cloning to notify_revival (#80096)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

Renames
- `/mob/proc/notify_ghost_cloning` to `/mob/proc/notify_revival`
- `/mob/dead/observer/proc/notify_cloning` to
`/mob/dead/observer/proc/send_revival_notification`
- `/atom/movable/screen/alert/notify_cloning` to
`/atom/movable/screen/alert/revival`.

I could have found a way to merge both procs together but default
parameters keep me up at night.

<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->

## Why It's Good For The Game

Conciseness, code that is named after a removed feature is silly.

<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

nothing playerfacing

<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->

* Rename notify_ghost_cloning to notify_revival

* Missed wow

* Modular

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
2023-12-06 01:36:04 -05:00
SkyratBot
3a400ebc5d [MIRROR] Falling down a z-level while standing up can (occasionally) break your legs. Felinids will now always land on their feet (for better or for worse). [MDB IGNORE] (#25407)
* Falling down a z-level while standing up can (occasionally) break your legs. Felinids will now always land on their feet (for better or for worse).

* This whole proc needs to be overridden??

* Update living.dm

* Delete human.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-03 11:03:14 +00:00
SkyratBot
67c8055df5 [MIRROR] Disables mod links from virtual modsuits [NO GBP] [MDB IGNORE] (#25370)
* Disables mod links from virtual modsuits [NO GBP] (#80038)

## About The Pull Request
Via discussion in discord:

![image](https://github.com/tgstation/tgstation/assets/42397676/b1990bce-35c3-4266-9ee1-3f6abde846bb)
## Why It's Good For The Game
Virtual entities, however suited up they are, shouldn't be able to
communicate station side with crew or with syndicate entities.
## Changelog
🆑
fix: Mod links are now disabled in the virtual realm.
/🆑

* Disables mod links from virtual modsuits [NO GBP]

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
2023-12-02 08:56:57 -05:00
SkyratBot
b2594720d0 [MIRROR] [NO GBP] Correctly fixes the quick carry module [MDB IGNORE] (#25312)
* [NO GBP] Correctly fixes the quick carry module (#79928)

## About The Pull Request
Messed something up in #79909, now the `FAST_MED` trait should be
correctly applied, as well as the appropriate quick or quicker carry
trait. Cleans up the procs a bit too so that things don't have to be
redefined.
## Why It's Good For The Game
Makes a fix actually fix stuff
## Changelog
🆑
fix: The quick carry module should now correctly apply the appropriate
traits
/🆑

* [NO GBP] Correctly fixes the quick carry module

---------

Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
2023-11-28 11:33:08 -06:00
SkyratBot
13ef1be324 [MIRROR] Quick carry modules now give the correct bonus [MDB IGNORE] (#25236)
* Quick carry modules now give the correct bonus (#79909)

## About The Pull Request
Fixes #79470
The quick carry module and its advanced version both gave the same buff
after a copy/paste error. That ain't right.
## Why It's Good For The Game
Uuuuuhhhh oversight bad
## Changelog
🆑
fix: MOD quick carry modules now give the correct carry speed bonus
/🆑

* Quick carry modules now give the correct bonus

---------

Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
2023-11-25 13:18:28 -05:00
SkyratBot
3fa98bd2cc [MIRROR] Adds UPSIDE_DOWN movetype for negative gravity / makes Atrocinator affected by less things [MDB IGNORE] (#25155)
* Adds `UPSIDE_DOWN` movetype for negative gravity / makes Atrocinator affected by less things (#79785)

## About The Pull Request

Fixes #79764

I was going to tackle this issue by slamming `TRAIT_NO_SLIP_ALL` on
Atrocinator users and calling it a day, but like, that didn't feel
proper.

So I thought hey, we could just give them the flying movetype, even
though they technically aren't flying it means they're unaffected by
things that flying would make you unaffected by.

Nope, this means the mob technically "negates gravity", so no falling
and no feetsteps.

Let's try floating - this give us feetsteps but no falling upwards.

So instead of going back to square one, with `TRAIT_NO_SLIP_ALL`, I
decided to go for the more complex route of just adding a movetype.

Hence, move type `UPSIDE_DOWN`. This covers situations where a mob would
be "floating" above the ground, but still walking. ...Negative gravity.

This means overall the Atrociator acts more as you'd expect - you don't
slip on ice, you don't trigger bear traps or mouse traps, you can walk
over railings, unaffected by conveyor belts, etc.

## Why It's Good For The Game

Makes the Atrocinator a lot more consistent with how you'd expect for it
to work.

Admittedly it is a bit niche use of movetypes, but it can possibly be
expanded to more things in the future, who knows? I applied it to mobs
on meat spikes (even though they don't move), just for proof of concept.

## Changelog

🆑 Melbert
fix: Atrocinating mobs will now behave more as you'd expect. Meaning
they don't slip on wet patches, can't trigger bear traps / landmines /
mouse traps, ignore conveyors, and can walk over tables and railings.
fix: Floating mobs are unaffected by conveyor belts, acid (on the
ground), glass tables
fix: Floating mobs won't squish stuff like roaches anymore
fix: Fixes bear traps triggering on floating / flying mobs
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* Adds `UPSIDE_DOWN` movetype for negative gravity / makes Atrocinator affected by less things

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-11-20 17:10:59 -05:00
SkyratBot
b237afa316 [MIRROR] Mob attackedby / check_block refactor, plus some minor cleanup of attack_x procs [MDB IGNORE] (#25079)
* Mob `attackedby` / `check_block` refactor, plus some minor cleanup of `attack_x` procs

* Fix the race condition

* Modular

* Ooops

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-18 02:19:31 -05:00
SkyratBot
020d2ad13e [MIRROR] Code compression for reagent holder. Lowers plumbing reaction chamber tick usage [MDB IGNORE] (#25050)
* Code compression for reagent holder. Lowers plumbing reaction chamber tick usage (#79686)

## About The Pull Request
More code improvements for reagent holder. As you can see it removes a
lot more code than it adds so code savings are significant. This does
not touch on any floating point arithmetic, all that is behind us, this
focuses on removing redundant procs and merging existing procs to
achieve the same functionality so if you do see any changes in reagent
related behaviour it's not intentional and should be reported as a bug
here.

The following code changes can be summarized into points.

**1. Removes procs `get_master_reagent_id()` &
`get_master_reagent_name()`**
Both of these procs have the exact same functionality as
`get_master_reagent()` with the only exception of returning a different
value. Instead we can just call `get_master_reagent()` directly and
infer the name & type of it ourselves rather than creating a wrapper
proc to do it for us, therefore reducing overall code

**2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`**
The proc `remove_all_type()` is highly inefficient, it first uses a for
loop to look for the reagent to remove & then it again calls
`remove_reagent()` on the reagent once it has found it. We can just
embed this functionality directly into `remove_reagent()` by simply
adding an additional parameter `include_subtypes`. This way the
operation is faster, and we reduce the code to get the job done. Also
now `remove_reagent()` will return the total volume of reagents removed
rather that a simple TRUE/FALSE

**3. Removes & Merges `trans_id_to()` proc into `trans_to()`**
Both these procs have the same job of transferring either a single
reagent or all reagents. `trans_id_to()` is a scaled down version of
`trans_to()` because
- It does not have any `method` var. This means if you want to transfer
a single reagent to a mob/organ or any other object it does not have the
functionality to expose the target to that transferred reagent.
- It does not have a `multiplier` var to scale reagent volumes
- It does not have code to deal with organs or stop reactions i.e. it
does not have the `no_react` var.

We can overcome all these short comings by simply adding an extra var
`target_id` to specify what specific reagent to transfer therefore
attaining the same functionality while keeping the benefits of
`trans_to()` proc therefore reducing overall code

**4. Lowers plumbing reaction chamber tick usage for balancing ph.**
Rather than invoking a while loop to balance ph it's much easier for the
player to simply make the reaction chamber wait for e.g. add a reagent
that will never come. This will make the chamber wait therefore giving
the reaction chamber ample time to correctly balance the ph and then
remove that reagent from the list therefore getting correct ph levels.
No need to create code hacks when the player can do it themselves  so
the while loop has been removed

## Changelog
🆑
code: removed redundant procs `get_master_reagent_id()` &
`get_master_reagent_name()`
code: merged `remove_all_type()` proc with `remove_reagent()` now this
proc can perform both functions. `remove_reagent()` now returns the
total volume of reagents removed rather than a simple TRUE/FALSE.
code: merged `trans_id_to()` proc with `trans_to()` now this proc can
perform both functions
refactor: plumbing reaction chamber will now use only a single tick to
balance ph of a solution making it less efficient but more faster. Just
make the reaction chamber wait for longer periods of time to accurately
balance ph
refactor: reagent holder code has been condensed. Report any bugs on
GitHub
/🆑

* Code compression for reagent holder. Lowers plumbing reaction chamber tick usage

* Modular update

* Update alcohol_reagents.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-16 18:27:20 -05:00
SkyratBot
11e109c37c [MIRROR] You cannot store ammo casings (individual bullets) and ammo boxes (like magazines) in your suit storage [MDB IGNORE] (#24691)
* You cannot store ammo casings (individual bullets) and ammo boxes (like magazines) in your suit storage (#79311)

## About The Pull Request

What it says on the tin.

## Why It's Good For The Game

A) This messes with hotkey muscle memory quite significantly. Unless you
have something in suit storage when you go to put a magazine back into
your other storage (like your belt), you may accidentally place it into
your suit storage.

B) This may be why people think magnetic holsters are bad/don't work.
Operatives sometimes hotswap half clips, and what might happen during a
particularly intense combat is that they inadvertently put the magazine
they just pulled from their gun into their suit storage because they're
hotkeying; denying them their magnetic holster's major upside. Snapping
their guns back into their storage and away from prying assistant hands.

C) It serves no tactical purpose to put a bullet into your suit storage
over the gun itself. Priority should always be to the belt storage.

## Changelog
🆑
qol: To avoid poor magazine discipline, most combat-ready personnel have
instructed _not_ to put magazines into the gun loops on their armor
vests.
/🆑

* You cannot store ammo casings (individual bullets) and ammo boxes (like magazines) in your suit storage

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2023-10-31 18:34:32 -04:00
SkyratBot
1a942cccd2 [MIRROR] Fixes mod reskins not having their icon in radial menu when using different dmi path [MDB IGNORE] (#24685)
* Fixes mod reskins not having their icon in radial menu when using different dmi path (#79357)

## About The Pull Request
Changes repaint proc a bit so it actually supports `MOD_ICON_OVERRIDE`
in reskins and shows their icons correctly
## Why It's Good For The Game
It's good for downstreams that want to make new reskins for modsuits and
place them in to different dmi's

in short, fixes this

![278809338-ea90bb56-fc61-4e7e-87e2-5ddb56694bba](https://github.com/tgstation/tgstation/assets/8430839/fb1e3378-cc4b-4c3a-8e5e-1f531fdcfb55)

to this...

![image](https://github.com/tgstation/tgstation/assets/8430839/3db3521f-9992-40be-b428-4f44a9966cbe)
(left one has both skins using `MOD_ICON_OVERRIDE`, but each one has
different icon file)
## Changelog
🆑
code: mod reskins now properly shows their icon when skins loaded from
different .dmi
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>

* Fixes mod reskins not having their icon in radial menu when using different dmi path

---------

Co-authored-by: Iajret <8430839+Iajret@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
2023-10-31 18:32:59 -04:00
SkyratBot
58be66a653 [MIRROR] Nukie Update Followup: Returns CQC to the previous price range, Core Gear kit for newbies, hat stabilizers for everyone [MDB IGNORE] (#24679)
* Nukie Update Followup: Returns CQC to the previous price range, Core Gear kit for newbies, hat stabilizers for everyone (#79232)

## About The Pull Request

Brings the CQC kit back down to the same price range of 14 TC (it's 1
more than before weapon kits). It feels like currently that CQC is
overpriced, even with the stealth box coming along with it, and by
comparison the energy sword and shield got a huge value increase by
combining the two. They're both melee styles and also equally difficult
play styles. It isn't really necessary to make one more expensive than
the other. Also now comes with syndicate smokes. It's a whatever change,
ops get these for free on the base.

Adds a core gear kit in the weapon category. This kit comes with a
doormag, a freedom implant, stimpack and c-4 charge. All of these are
items almost every nukie buys if they want to succeed, so let's inform
newer players by putting it RIGHT on top of the list. This isn't at any
discount, this is mostly to help inform players what items help make you
successful.

Hat stabilizers are now a part of every syndicate modsuit for FREE. It
comes built in, can't be removed, and has no complexity cost. Now
everyone can wear their wacky hats as they operate.

## Why It's Good For The Game

CQC felt like it got shafted waaay too hard with the weapon case
changes. Definitely don't believe that it is punching at the same weight
as many of the other high cost weapons. So we've dropped it down a
category. 14 TC is still a large upfront cost, even if it comes bundled
with a lot of goods.

Melbert gave me the idea of a core bundle kit to help newer players and
I was really taken with that. So I added it as part of this followup.

I want people to wear their hats goddamnit, and I didn't learn my
mistake with the tool parcels. So now everyone has hat stands on their
suits. WEAR THE SOMBRERO YOU **FUCK**.

### THIS IS NOW A THREAT.

## Changelog
🆑
balance: Operatives can once again read about the basics of CQC at a
reasonable price of 14 TC.
qol: All Syndicate MODsuits come with the potent ability to wear hats on
their helmets FOR FREE. No longer does any operative need be shamed by
their bald helmet's unhatted state when they spot the captain, in their
MODsuit, wearing a hat on their helmet. The embarrassment has resulted
in more than a few operatives prematurely detonating their implants! BUT
NO LONGER! FASHION IS YOURS!
qol: There is now a Core Gear Box, containing a few essential pieces of
gear for success as an operative. This is right at the top of the
uplink, you can't miss it! Great for those operatives just starting out,
or operatives who need all their baseline equipment NOW.
/🆑

* Nukie Update Followup: Returns CQC to the previous price range, Core Gear kit for newbies, hat stabilizers for everyone

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2023-10-31 10:24:57 -07:00
SkyratBot
c38316cd68 [MIRROR] Adds a var to determine if anomaly-locked MOD modules can have cores uninstalled [MDB IGNORE] (#24556)
* Adds a var to determine if anomaly-locked MOD modules can have cores uninstalled (#79171)

## About The Pull Request
Title. The `core_removable` var on the `anomaly_locked` MOD module
typepath now determines if a core can be removed post-installation. This
isn't used anywhere, at the moment, but could be used to, say, prevent a
space-loot MOD module's core from being removed for other purposes.

Adds `/prebuilt/locked` subtypes to the currently present and defined
anomaly-locked modules, which have this var enabled, and puts them
nowhere else.

![image](https://github.com/tgstation/tgstation/assets/31829017/af222175-7668-4e46-abab-5adf08be5d34)

![image](https://github.com/tgstation/tgstation/assets/31829017/4d6f4149-1227-4dd9-b368-7d55696fba92)

## Why It's Good For The Game
Another way to control distribution of anomaly cores - making people
commit to having a limited-supply item installed in a thing, or
something like that.

For habitual Github-readers, this is *unused*, at the moment, just
something that could be used by another coder down the line or
something.

## Changelog

🆑
add: Anomaly-locked MODsuit modules can now be varedited to have
unremovable cores, or can be spawned with this functionality by using
the /prebuilt/locked subtype.
/🆑

Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>

* Adds a var to determine if anomaly-locked MOD modules can have cores uninstalled

---------

Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
2023-10-24 15:20:19 -04:00
SkyratBot
b6da56408e [MIRROR] A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc [MDB IGNORE] (#24430)
* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc (#79024)

## About The Pull Request

- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
   - Fixes silicons sparking off when hit by disabler fire.
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
   - The Sleeping Carp deflection is now signalized
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.

## Why It's Good For The Game

This is cringe.

1863eb2cd8/code/modules/mob/living/carbon/human/_species.dm (L1430-L1442)

Bullets should overall act more consistent across mob types and objects.

## Changelog

🆑 Melbert
fix: Silicons don't spark when shot by disablers
fix: Changelings who fail to catch something with a tencacle will have
throw mode disabled automatically
fix: Fixes occasions where you can reflect with Sleeping Carp when you
shouldn't be able to
fix: Fixes some projectiles causing like 20x less eye blur than they
should be
refactor: Refactored bullet-mob interactions
refactor: Nightmare "shadow dodge" projectile ability is now sourced
from their brain
/🆑

* A comprehensive refactor / cleanup of `bullet_hit` and `on_hit` to cut out a single bad species / mob proc

* Modular changes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-19 22:18:41 -04:00
SkyratBot
22943b9449 [MIRROR] Refactors UnarmedAttack so we don't have like 4 Unarmed Attack signals, kills two more snowflake species procs [MDB IGNORE] (#24356)
* Refactors `UnarmedAttack` so we don't have like 4 Unarmed Attack signals, kills two more snowflake species procs

* Update chameleon.dm

* Update _species.dm

* Modular

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-16 12:37:49 -04:00
SkyratBot
a924d29501 [MIRROR] Fixes a bug with the plasma flower core MODsuit that would cause a butterfly murder scene wherever there were turrets [MDB IGNORE] (#24367)
* Fixes a bug with the plasma flower core MODsuit that would cause a butterfly murder scene wherever there were turrets (#78978)

## About The Pull Request

Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/24306

The butterfly effect.

The "MOD plasma flower core" spawns temporary butterflies using a
`/datum/component/spawner`, which is nice and cute. Until you start
getting shot at by turrets because spawners assign the faction of the
mob to `MOB_MINING` by default.

Fixes that.

## Why It's Good For The Game

No more being murdered by your butterflies.

![dreamseeker_bxeIGl84sS](https://github.com/tgstation/tgstation/assets/13398309/96690e19-c541-4209-85a0-3f3f667e5f2b)

## Changelog

🆑
fix: Fixes a bug with the plasma flower core MODsuit that would cause a
butterfly murder scene wherever there were turrets
/🆑

* Fixes a bug with the plasma flower core MODsuit that would cause a butterfly murder scene wherever there were turrets

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-16 11:36:04 -04:00
SkyratBot
00b8a76a6d [MIRROR] Makes the active sonar stop destroying the game [MDB IGNORE] (#24353)
* Makes the active sonar stop destroying the game (#79006)

## About The Pull Request
Hey did you know the active sonar would just repeatedly add mobs to its
internal list no matter if they were there already or not?

Yea.

Anyways that's fixed now, overtime is saved
## Why It's Good For The Game

![image](https://github.com/tgstation/tgstation/assets/66052067/dea57189-034a-46a4-bee3-5d2a1f9eec61)

![kylo-kylo-ren](https://github.com/tgstation/tgstation/assets/66052067/8cbeca30-fd8b-451e-ab61-a91c7192f873)
## Changelog
🆑 Wallem
fix: The active sonar module won't attempt to create 6000000 new pings
per process cycle anymore
/🆑

* Makes the active sonar stop destroying the game

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2023-10-15 19:54:51 -04:00
SkyratBot
0c9149bf35 [MIRROR] Refactor gib code to use bitflags and have documentation [MDB IGNORE] (#24143)
* Refactor gib code to use bitflags and have documentation

* Modular updates

* Modular updates

* Modular updates

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-10-09 15:00:17 -04:00
SkyratBot
897b7faab2 [MIRROR] Adds a passive scan to the Active Sonar module [MDB IGNORE] (#24117)
* Adds a passive scan to the Active Sonar module (#78734)

## About The Pull Request
Adds a passive, radial scan to the Active Sonar module.
This will scan a 1/8th slice around the player for any creatures, and
place a much smaller marker over them for the player to see.
These small markers do not update their location when the scanned
creature moves, unlike the normal markers.
Activating the module initiates the normal full scan, which scans the
entire radius at once rather than just a slice. Doing so will put _both_
scans in cooldown.

https://github.com/tgstation/tgstation/assets/66052067/96226090-fa32-42d5-99f4-a8dbdc36cf98
## Why It's Good For The Game
Honestly I still felt the Active Sonar was a little weak even after I
tried to buff it a little.
I wanted to initially find a way to make the large scan effects smoothly
move with whoever you're following, but since I couldn't manage to
figure that out instead I went with a recommendation from ninjanomnom to
make a radial scan.
I think this is far more interesting either way
## Changelog
🆑 Wallem
add: Buffs the Active Sonar module with a radial scan, and makes the
power costs more in-line with other modules.
/🆑

* Adds a passive scan to the Active Sonar module

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2023-10-04 23:49:41 -04:00
Pinta
1f99cc2167 [SEMI-MODULAR] NIFSoft Scryer (#23482)
* the goods

* Update scryer.dm

* Apply suggestions from code review

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update scryer.dm

* Update scryer.dm

* Apply suggestions from code review

* Update modular_skyrat/modules/modular_implants/code/nifsofts/scryer.dm

* Apply suggestions from code review

* pain

* Apply suggestions from code review

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

* Update modular_skyrat/modules/modular_implants/code/nifsofts/scryer.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-01 02:30:09 +00:00
SkyratBot
7ed9f33e99 [MIRROR] Removes flight from lavaland syndicate modsuits [MDB IGNORE] (#24010)
* Removes flight from lavaland syndicate modsuits (#78649)

## About The Pull Request

Fixes #78557
I wasn't really thinking of these guys when I gave nuke op suits the
ability to fly.
The lavaland syndicate base now simply spawns a modsuit with no jetpack
or jump jet in it.
Those guys aren't going to space, they don't need it.

## Changelog

🆑
fix: Lavaland syndicate operatives can no longer trivially use the
jetpack on their modsuit to fly over the lava.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>

* Removes flight from lavaland syndicate modsuits

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
2023-09-29 07:45:22 -04:00
SkyratBot
0949b95e3a [MIRROR] [no gbp] Jump jets activate a linked jetpack in a more sensible way [MDB IGNORE] (#23685)
* [no gbp] Jump jets activate a linked jetpack in a more sensible way (#78296)

## About The Pull Request

fikou pointed out that the code I wrote not only wasn't reliable on
destroy but also was overengineered
but only _after_ he merged it 😠

now we just ask the jetpack module if it is on rather than using a weird
trait

## Changelog

not player facing

* [no gbp] Jump jets activate a linked jetpack in a more sensible way

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-14 14:49:45 -07:00
SkyratBot
55135555a0 [MIRROR] Nuclear Operative Jump Jets [MDB IGNORE] (#23659)
* Nuclear Operative Jump Jets (#78088)

## About The Pull Request

This PR gives operative MODsuits access to "jump jets".
This is an activated module (starts pinned) with a 30 second cooldown
which removes your personal gravity for 5 seconds and (if possible)
pushes you upwards by one z level. In combination with your regular
jetpack this allows you to fly over gaps, and (most importantly) out of
pits such as you may inadvertently find yourself wandering into on
Icebox.
I have a few other changes I want to make specifically targetted at the
experience of Icebox station destruction causing people to fall several
z levels and get trapped, but this is the first one.

You have to stand still for 1 second to activate the jump jet. This is
because jetpack movement without gravity is actually usually faster than
an operative will walk, and I don't want them to just toggle it as a
sprint button while running around. If people find other tactical uses
for this though I think that's cool.

This module currently isn't available to crew on the tech web, although
maybe someone could add it later if they wanted to. It's not quite so
useful if you don't _also_ have a jetpack though.
I bumped the available complexity of the suits I attached it to up by
the complexity cost of this module so it's not taking up previously
available space.

## Why It's Good For The Game

It's funny when the whole ops team falls in a hole after an explosion
they caused and gets stuck in there fighting Snow Legions but they
should probably have some method for dealing with that.
It also lets them pop back up from the tram hole, a risky proposition
because any flying mob hit by the tram dies almost instantly.

## Changelog

🆑
add: Operative MODsuits now have an attached "jump jet" which sends you
upwards and allows you to use your jetpack under gravity for a few
seconds, perfect for navigating the pits and valleys of Icebox Station.
/🆑

* Nuclear Operative Jump Jets

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-12 13:14:22 -07:00
SkyratBot
ace8d31dd6 [MIRROR] kinesis now properly removes grabbed traits [MDB IGNORE] (#23500)
* kinesis now properly removes grabbed traits (#78099)

## About The Pull Request
why isnt this a global proc like add_trait and remove_trait is???

## Why It's Good For The Game
\
gdsahehsjsrj

## Changelog
🆑
fix: kinesis plus properly lets you move again when grabbed once
/🆑

* kinesis now properly removes grabbed traits

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-09-04 01:21:57 -04:00
SkyratBot
97deb8a95e [MIRROR] Adds the medbeam module which replaces the Nukie Medgun [MDB IGNORE] (#23501)
* Adds the medbeam module which replaces the Nukie Medgun (#77897)

## About The Pull Request
Adds the Medbeam module, essentially works the same way as the implant
version does where it pops into your hand. Replaces the handheld version
with the modsuit one in the nuclear uplink
## Why It's Good For The Game
Ever since modsuits were added I've wanted to see this become a module
of its own, that and the medbeam itself doesn't see much use in most
nukies rounds. As the borg gets that plus the nanities with nodrop, this
might give it a teeny bit more use cases as now the operatives won't
have to worry about dropping it in the middle of a firefight.
## Changelog
🆑
add: Adds the medbeam module for nukies, don't cross the damn beams.
(Also removes the handheld one from the uplink)
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>

* Adds the medbeam module which replaces the Nukie Medgun

---------

Co-authored-by: DaydreamIQ <62606051+DaydreamIQ@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
2023-09-04 01:21:26 -04:00
SkyratBot
1fb770b55d [MIRROR] [NO GBP] Fixes more retrieve typos [MDB IGNORE] (#23464)
* [NO GBP] Fixes more retrieve typos (#78069)

## About The Pull Request

Continuation of https://github.com/tgstation/tgstation/pull/77946, I
missed quite a few of these it seems.

## Why It's Good For The Game

Stop the spread of these typos!!

## Changelog

Nothing player facing

* [NO GBP] Fixes more retrieve typos

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-02 11:54:34 -04:00
SkyratBot
1edbfcd0f0 [MIRROR] Nuclear operatives can now be other species. Pref toggle to always be human as operative [MDB IGNORE] (#23433)
* Nuclear operatives can now be other species. Pref toggle to always be human as operative

* remove skyrat edit

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-08-31 14:27:59 -07:00
SkyratBot
d190922988 [MIRROR] Engineering/atmos modsuit changes [MDB IGNORE] (#23382)
* Engineering/atmos modsuit changes

* Update mod_types.dm

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-08-28 14:31:01 -07:00
SkyratBot
e74d3c5331 [MIRROR] roundstart scryers now come with the nt frequency [MDB IGNORE] (#23376)
* roundstart scryers now come with the nt frequency (#77957)

## About The Pull Request
fixes #77934

## Why It's Good For The Game
blegh

## Changelog
🆑
fix: roundstart modlink scryers now come with the nt frequency
/🆑

* roundstart scryers now come with the nt frequency

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-28 01:54:16 -04:00
Deadmon
461917c115 Adds the Emergency Tether to the Engineering Modsuit (#23279)
* Adds the Emergency Tether to the Engie Modsuit

* Update code/modules/mod/mod_types.dm

---------

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-08-26 10:49:21 -07:00
SkyratBot
c529b754fb [MIRROR] Fixes a bunch of callbacks that were being qdeleted, and code cleanup [MDB IGNORE] (#23319)
* Fixes a bunch of callbacks that were being qdeleted, and code cleanup (#77904)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/13398309/559eb50a-461c-4220-b628-55412baaffc3)

Continuing the work of
https://github.com/tgstation/tgstation/pull/77850.

it started with finding one that was being missed and causing a
runtime...then I noticed a whole lot more. While I was doing this I
found callbacks that weren't being nulled in `Destroy()`, so I added
that wherever I found these spots as well as some general code cleanup.

There were a lot more of these than I initially hoped to encounter so
I'm labeling it as a refactor.

## Why It's Good For The Game

Fixes lots of runtimes, improves code resiliency.

## Changelog

🆑
refactor: fixed a bunch of instances of callbacks being qdeleted and
cleaned up related code
/🆑

* Fixes a bunch of callbacks that were being qdeleted, and code cleanup

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-25 19:06:07 -04:00
SkyratBot
0017eb3554 [MIRROR] ninja stungloves nerf + quirks [MDB IGNORE] (#23294)
* ninja stungloves nerf + quirks (#77810)

## About The Pull Request
the ninja stungloves are no longer a knockdown + shove in one click (not
a stun). clicking on people now first does the shove and THEN knocks
someone down for 3 seconds after a 0.3 second delay. this means you need
to click on them twice
ninja's stealth module now gives you the silent footsteps trait when
active
all ninjas now have the light step and freerunning quirks

## Why It's Good For The Game
ninjas really cool but he doesn't really need 1 click stuns in addition
to all his other tools, he can escape pretty much anything and has a
sword for melee encounters, and knocking someone down instantly is still
really powerful
ninjas getting quirks that fit them is cute i think, makes sense and is
useful

## Changelog
🆑
balance: ninja's stealth module gives silent footsteps when active
balance: all ninjas now have the light step and freerunning quirks
balance: ninja's hacker module shove no longer stuns in 1 hit. first
shove knocks down and pushes away, second one stuns
fix: fixes ninja shoves not causing sparks
qol: the person in an energy net is now reasonable to hit, the dark part
of the sprite is now an underlay, so you can click the person inside the
net pretty easily and if you wanna hit the net you click the green part
or the darker sides that the human sprite doesnt cover
/🆑

* ninja stungloves nerf + quirks

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-23 22:41:38 -04:00
SkyratBot
4ab5f6d2d6 [MIRROR] small modlink fixes [MDB IGNORE] (#23293)
* small modlink fixes (#77804)

## About The Pull Request
fixes bug in multitools where they didnt unregister signals
fixes modlink scryers checking battery charge without a battery
frequency stuff is a bit more explained

## Why It's Good For The Game
good stuf

## Changelog
🆑
fix: fixes multitools possibly randomly losing their buffer
fix: fixes modlinks checking battery charge without a battery and
working without charge
qol: modlink stuff is a bit more explained
fix: modlinks printed from rnd no longer start with a frequency
(remember to copy it from another one with a multitool buffer, robotics
starts with 2 NT frequency linked ones)
/🆑

* small modlink fixes

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-23 22:41:22 -04:00
SkyratBot
867fa1cdc5 [MIRROR] General code maintenance for Mat container related stuff [MDB IGNORE] (#23251)
* General code maintenance for Mat container related stuff (#77671)

1. Removes `/obj/machinery/ore_silo/proc/remote_attackby()`. This proc
calls `datum/component/material_container/user_insert()` anyway which
performs all the checks necessary for inserting stuff into the ore silo
and `/obj/machinery/ore_silo/proc/remote_attackby()` was just repeating
its code & checks. So now inserting into the ore silo is directly
handled by the mat container without this proxy proc making the
operation slightly faster
2. Removed silo `attackby` code. Same operations can be done via
`screwdriver_act` & `crowbar_act` procs much cleaner
3. The ore silo now hooks onto signals
`COMSIG_MATCONTAINER_ITEM_CONSUMED` and
`COMSIG_MATCONTAINER_SHEETS_RETRIVED` and logs into silo when they are
triggered. This means when you insert/eject sheets from the silo the
connected machine performing the operation no longer has to do the
logging manually thus the proc `silo_log` has been removed from a lot of
places ,reducing overall code size
4. A lot of stuff that use materials from the ore silo follow this
pattern.

i.e. They first use the materials from the silo and then log it via
`silo_log` proc. This code pattern is repeated in a lot of places so
let's just merge these 2 lines with some extra sanity checks into a
single proc inside `remote_materials` itself. That's what was done and
the number of places where you log manually into the silo has been
removed further reducing code size everywhere.
5. Added auto doc & cleaned up some procs

Since logging is now done by the ore silo directly, we need a way to
pass the machine that is inserting items into the silo to the signal
handlers of the ore silo [via the `context` var]. So other code changes
elsewhere is because of this var

* General code maintenance for Mat container related stuff

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
2023-08-21 23:43:04 -04:00
SkyratBot
68f4deff40 [MIRROR] MODLink System (+ NWTLMM) [MDB IGNORE] (#23199)
* MODLink System (+ NWTLMM) (#77639)

## About The Pull Request
A pact made with `@ Kapu1178`
Small changes you should not care about:
RD MODsuit outfit (admin only) no longer has a beret that blocks the
activation of the suit
The beret used by death squad officers no longer is blocked from being
put on a hat stabilizer module
Admins can now Shear matrices of objects in Modify Transform
Multitool buffers have been a little refactored to use a setter proc
that saves them from causing hard dels
Cooler stuff:
A revival and remake of [Nobody Wants To Learn Matrix
Math](https://github.com/tgstation/tgstation/pull/59103), this time with
additional tooling for quick matrix calculations.

![image](https://github.com/tgstation/tgstation/assets/23585223/eb387738-0839-463a-aed8-4703d139b11a)
The MODLink system, available through every MODsuit and MODLink scryers
(a neck item obtainable from advanced modsuit research or
charliestation)
Let's you make a holographic call with any other MODLink user, where you
can chat in realtime and see what's up with em

![image](https://github.com/tgstation/tgstation/assets/23585223/5a822f9f-e823-497e-b766-40055f2fc0d6)
![image](https://github.com/tgstation/tgstation/assets/23585223/062983ee-6058-4e78-a3aa-bccda1a3e224)

## Why It's Good For The Game
Adds a fun way for the crew to communicate with each other that can be
done in real-time with relative privacy compared to radio.

## Changelog
🆑 Fikou, Armhulen, Sheets (+rep for Mothblocks and Potato)
fix: RD MODsuit outfit (admin only) no longer has a beret that blocks
the activation of the suit
fix: The beret used by death squad officers no longer is blocked from
being put on a hat stabilizer module
admin: Admins can now Shear matrices of objects in Modify Transform
admin: Admins now have access to Test Matrices in the VV dropdown, an
all-in-one tool for editing transforms.
add: MODLink system, available through scryers (from RnD and Charlie
Station) and through MODsuits. Lets you call people with holographs!
/🆑

* MODLink System (+ NWTLMM)

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-19 05:09:31 -04:00
SkyratBot
0e1a0fd697 [MIRROR] makes syndie modsuits not be irrevocably destroyed merely by being on fire [MDB IGNORE] (#23191)
* makes syndie modsuits not be irrevocably destroyed merely by being on fire (#77694)

## About The Pull Request

gives them FIRE_PROOF resistance flag
like every modsuit has that flag anyway

## Why It's Good For The Game

dropping your entire modsuits contents while fighting bad
fixes #77690

## Changelog
🆑
fix: you can no longer destroy syndicate modsuits by just being on fire
/🆑

* makes syndie modsuits not be irrevocably destroyed merely by being on fire

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2023-08-18 21:34:35 -04:00
SkyratBot
d21e06104f [MIRROR] Dunking handle_atom_del() in the trash bin. [MDB IGNORE] (#23183)
* Dunking handle_atom_del() in the trash bin.

* Update _box_magazine.dm

* Modular paths

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-18 12:17:04 -04:00
Bloop
b766255ef6 [MISSED MIRROR] Setting a few things straight with embedding and caseless ammo. (#77450) (#23014)
Setting a few things straight with embedding and caseless ammo. (#77450)

## About The Pull Request
So, when I made the `caseless` and `projectile_drop` elements, I failed
to take into account that bullets have an embedding variable sets, which
led to a few projectiles being embeddable when they shouldn't.

Beyond that, I wanted arrows and harpoons to be reusable yet embeddable,
which lead me to change a couple lines on the `embed` element, since
whoever made the element thought it was a good idea to add the
unnecessary step of attaching a copy of it to the `payload_type` of a
fired projectile before trying to embed it. Like, why? All that's going
to do is cause the resulting item to become embeddable, which may be an
issue for anything other than drop-deletable shrapnels. So yea, arrows
and harpoons, and emagged lollipops will now embed properly.

I've also deleted an unused, problematic subtype of quiver and arrow
casing, and made the quiver storage use

## Why It's Good For The Game
This will fix #77187. Perhaps buff harpoons and arrows a little but meh.

## Changelog

🆑
fix: Fixed fired foam darts, gumballs and (harmless) lollipops being
embeddable.
fix: Projectiles that should embed while being reusable will now do so
correctly, actually embedding the reusable casing instead of a shrapnel.
balance: Arrows are generally more likely to embed now, except for
blazing ones, that kind of just blaze.
qol: the quiver storage now uses numerical stacking (like botany and ore
bags, or the RPED, for example).
/🆑

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-08-11 14:23:29 -04:00
SkyratBot
8e713c9110 [MIRROR] fixes kinesis not actually immobilizing or blocking hands of grabbed mobs [MDB IGNORE] (#23007)
* fixes kinesis not actually immobilizing or blocking hands of grabbed mobs (#77498)

## About The Pull Request
FUCK

## Why It's Good For The Game
shit

## Changelog
🆑
fix: fixes kinesis not actually immobilizing or blocking hands of
grabbed mobs
/🆑

* fixes kinesis not actually immobilizing or blocking hands of grabbed mobs

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-10 19:48:03 -07:00
SkyratBot
f67839eed9 [MIRROR] ninja energy net uses a projectile [MDB IGNORE] (#23001)
* ninja energy net uses a projectile (#77423)

## About The Pull Request
the ninja energy net uses a projectile instead of being an instant
click, it also has a cooldown of 5 seconds, up from 1.5 seconds
improves some of the energy net code
the net also deletes itself when the suit turns off

## Why It's Good For The Game
This module is not that fun for either of the sides
For people fighting the ninja, getting instantly stuck with no
counterplay isn't that fun.
For the ninja, the cooldown on a missed use is pretty debilitating and
it's annoying to try and snipe someone.
Being a projectile means people can run away from it, and the ninja can
just shoot it, he doesn't have to try clicking 50 times.

## Changelog
🆑
balance: Space Ninja's energy net uses a projectile to catch people now.
/🆑

* ninja energy net uses a projectile

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-08-10 14:18:09 -04:00
SkyratBot
c6e0ba7516 [MIRROR] Drill module automatically disables if it's about to drill into gibtonite [MDB IGNORE] (#22990)
* Drill module automatically disables if it's about to drill into gibtonite (#77385)

## About The Pull Request

Drill module automatically disables if it's about to drill into
gibtonite.

## Why It's Good For The Game

> Drill module automatically disables if it's about to drill into
gibtonite

There's not enough time to react, the mining scanner is surprisingly
slow sometimes and it means you drill straight into gibtonite, which
primes it the first drill and blows it up the second, which is a lot
more of a pain than it sounds because drilling is night-instant. These
explosions are usually enough to crit you, and if they don't, the stun
and area clear means any fauna can wander in and finish you off.

The auto-disable still makes it an annoyance to stumble upon gibtonite,
but it won't round end you for using modsuits.

## Changelog

🆑
qol: Drill module automatically disables if it's about to drill into
gibtonite
/🆑

* Drill module automatically disables if it's about to drill into gibtonite

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-08-10 13:20:05 -04:00
SkyratBot
3e0a36e038 [MIRROR] pAIs can be inserted into a MODsuit [MDB IGNORE] (#22852)
* pAIs can be inserted into a MODsuit

* Update MODsuit.tsx

* Update objective_items.dm

* Update mod_actions.dm

* Update mod_activation.dm

* Update mod_control.dm

* Update mod_ui.dm

* Update MODsuit.tsx

* Update modules_ninja.dm

* prettier

* Update mod_control.dm

* This is torture

* Removes most of the overrides for pAIs in MODsuits, to use the procs from upstream (and reduce the amount of clutter/duplication)

* Damnit keyboard

* Good catch Vinyl!

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-08-08 18:24:17 -04:00
SkyratBot
3ea0f05168 [MIRROR] kinesis changes + smaller misc modsuit stuff [MDB IGNORE] (#22846)
* kinesis changes + smaller misc modsuit stuff (#77241)

## About The Pull Request
renames plasmaman helmet exempt flag to stackable helmet exempt. hat
stabilizer now cares about this instead of letting you stack eva helmets
on top of modsuit helmets
improves some code that dripped in quality when i was on break
kinesis has some tweaks
previously it used to stun for a set amount of time - i think this is
because the creator couldnt figure out how to stop movement while being
held? this is changed, now as long as youre holding someone they are
immobilized
you can cancel your kinesis without throwing or moving out of range by
using right click on the click catcher
adds an admin version of kinesis just for the admin suit. it can grab
(almost) ANYTHING and config menu lets you enable phasing, which makes
it so the atom you grabbed phases through everything. pick up that can.

## Why It's Good For The Game
its fun

## Changelog
🆑
balance: hat stabilizer module can now hold what plasmaman helmets can
hold
qol: kinesis module can be stopped without launching an object with
right click
balance: kinesis module stuns last until the kinesis stops
add: admin suit has a version of kinesis that can pick up anything at
any range and can be configured to make grabbed mobs phase through walls
:)
/🆑

* kinesis changes + smaller misc modsuit stuff

* modular adjustments

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-02 21:17:05 -04:00
SkyratBot
2fef750da0 [MIRROR] fixes interdyne MODsuit typoes [MDB IGNORE] (#22794)
* fixes interdyne MODsuit typoes (#77227)

## About The Pull Request

Fixes multiple typoes in the interdyne MODsuit's description.

## Why It's Good For The Game

typoes and bad grammar are bad

## Changelog
🆑
spellcheck: fixed the interdyne modsuit's typoes
/🆑

* fixes interdyne MODsuit typoes

---------

Co-authored-by: Vincent983 <124026007+Vincent983@users.noreply.github.com>
2023-07-31 20:03:07 -04:00
SkyratBot
6d989a1788 [MIRROR] Bluespace MOD Storage can now hold bulky storage items. [MDB IGNORE] (#22783)
* Bluespace MOD Storage can now hold bulky storage items. (#77211)

## About The Pull Request

The admin-only bluespace MOD storage can now hold bulky storage items
(backpacks, belts) without needing a varedit to do so, kinda like the
bag of holding can do.

Is this even a rebalance if it's very likely an oversight on an
admin-only item?

## Why It's Good For The Game

The bluespace MOD storage is pretty much just a super snowflakey bag of
holding for modsuits, so this brings it more in line.

## Changelog

🆑
balance: The bluespace MOD storage can now hold bulky storage items
(backpacks, toolbelts) just like the bag of holding.
/🆑

* Bluespace MOD Storage can now hold bulky storage items.

---------

Co-authored-by: CRITAWAKETS <sebastienracicot@hotmail.com>
2023-07-30 16:27:16 -04:00