Commit Graph

252 Commits

Author SHA1 Message Date
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
SkyratBot
75be4766d5 [MIRROR] Fix timeline jumper MOD module not updating stamina on jaunt [MDB IGNORE] (#22786)
* Fix timeline jumper MOD module not updating stamina on jaunt (#77181)

## About The Pull Request
Fixes #77152
updating_stamina was set to 0 in the jaunt's setStaminaLoss for some
reason, this PR fixes that
## Why It's Good For The Game
It's a bugfix

* Fix timeline jumper MOD module not updating stamina on jaunt

---------

Co-authored-by: cnleth <113535457+cnleth@users.noreply.github.com>
2023-07-30 16:02:51 -04:00
SkyratBot
598952c1c2 [MIRROR] Refactors chameleon actions, Adds chameleon outfit saving, Adds chameleon scanner [MDB IGNORE] (#22773)
* Refactors chameleon actions, Adds chameleon outfit saving, Adds chameleon scanner

* Update cards_ids.dm

* Update _glasses.dm

* Delete chameleon.dm

* Update _glasses.dm

* Update _glasses.dm

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-07-29 21:09:06 -04:00
SkyratBot
80ae526549 [MIRROR] Removes the stealth-added ability to screwdriver springlock modules to make them not deadly because that defeats the point of the springlock module [MDB IGNORE] (#22733)
* Removes the stealth-added ability to screwdriver springlock modules to make them not deadly because that defeats the point of the springlock module (#77144)

>we add a feature with an intentional downside
>someone makes the downside bypassable entirely as "quality of life"

i hate balance posters

🆑
fix: Removes the ability to screwdriver springlock modules to make them
not deadly because that defeats the point of the springlock module
/🆑

* Removes the stealth-added ability to screwdriver springlock modules to make them not deadly because that defeats the point of the springlock module

---------

Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
2023-07-27 20:00:08 -04:00
SkyratBot
cbc88db9e4 [MIRROR] New MOD Suit UI [MDB IGNORE] (#22718)
* New MOD Suit UI

* Fix merge conflict+ bug that doesn't respect locked modsuits for non pais

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-27 17:29:34 -04:00
SkyratBot
6a5f3c50c4 [MIRROR] Material container & related stuff ui refactors & clean-up [MDB IGNORE] (#22667)
* Material container & related stuff ui refactors & clean-up (#76220)

## About The Pull Request

**1. Material container clean-up & refactor**
- Replaced `total_amount` var with `total_amount()` proc, this var can
be easily computed by summing up all material amounts rather than
storing it as a var which is tedious to update & keep track of when
materials are added/removed
- Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`,
and `get_categories()`. These procs are not used anywhere in the
codebase so let's remove them & make some space.
- Callbacks are replaced with signals, the callbacks don't need to be
explicitly garbage collected & having macros & procs marked with
`SIGNAL_HANDLER` makes your intentions more readable & explicit.
- Fixes #76151
All material adding, removal, checking operations are "Integer"
operations, i.e. the final value is rounded & them made 1 if the final
value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better
name]. No more dealing with decimal value materials
The problem was after the protolathe was upgraded with better parts all
the design costs were multiplied with a decimal `efficiency_coeff`
value, this means even though in the UI the cost was displayed as 60
bluespace crystals its actual cost was `60.0001` something in the
backend causing this check for materials to fail & print the error
message.
- Replaced `GetComponent(/datum/component_material_container)` with just
a simple ref to the material container when adding the component, so we
can save some overhead from calling this proc
- Gave all procs a ton of documentation with documentation having
documentation
- Fixes #76506 RCD and other devices that uses the silo link upgrade now
have the correct material usages
- Fixes #72096. It wasn't just a problem with ancient protolathe but
with all machines that used `datum/component/remote_materials` the
problem was remote materials would add an instance of
`datum/remote/material_container` if it wanted to use local storage but
this component would get added before `datum/component/remote_materials`
could be registered i.e. it comes before remote_materials in the
component list. So when the machine is destroyed it will first destroy
`material_container` & then `remote_materials` therefore destroying the
materials before they could get ejected
- Silo link is established when parent is registered with remote
materials raher than adding an external timer which is faster
- Everything that uses a material container will auto eject their sheets
when destroyed
- Moved this & remote materials into its own folder for better
organization

**2. Material UI Changes**
- Removed the x25 & x50 print buttons from the autolathe, now they just
have x5 & x10 buttons like the protolathe, These buttons were of no use
since you could just type the exact amount you want to print in the
`[Max: <some amount>]` side bar. The code to compute these buttons was
just plain right nasty & some of it unused in the UI.
- The material eject button in the material bar does not gray out when
you can eject exactly one sheet
- All material cost are integer values rounded
- Fixes #76253 Exosuit Fabricator sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Component printer material bar sends the material container static
data to the UI so its material bar is not greyed out when there are
sufficient materials to eject
- Autolathe Material bars now display number of sheets available
- Max printable amount of items are now computed & updated correctly in
the UI. They were displaying wrong values & now get updated when items
are printed, materials are removed
- Silo hold actually works now. When a machine is put on hold it calls
this proc

e929cf39cd/code/datums/components/remote_materials.dm (L78-L87)
Notice how the key is `src` so we should be consistent during checking
if a machine is on hold using the same `src` var. But for some reason we
did dumb shit like this

e929cf39cd/code/datums/components/remote_materials.dm (L150-L153)
What is category? Why do we care for the area the machine is in? None of
it made sense so i removed all that junk and just made it check for
`src` like it should
- Removed redundant `removable` & `sheets` var from the material
container ui_data. These vars are unused in the UI
- If an item does not have the required materials then upon clicking
that item you will not get any error message but instead nothing happens

## Changelog
🆑
fix: items can be printed from autolathe & protolathe when the exact
material amounts are present in them after upgrading
fix: max printable amount now shows the correct value & updates when
items are printed, materials are removed in the autolathe & protolathe
fix: component printer material bar is not greyed out when there are
sufficient materials to eject
fix: rcd and other devices that uses the silo link upgrade now have the
correct material usages
fix: silo hold actually works
fix: machines using local storage to hold materials will eject it's
materials as sheets when deconstructed/destroyed
refactor: Autolathe Material bars now display number of sheets available
refactor: printing an item that does not have enough materials will fail
silently with no error messages
refactor: Drone dispenser will eject sheets upon deconstruction
refactor: all things that store materials will auto ejects its sheets(if
there is sufficient material) when destroyed
refactor: inserting an item into the material container will display the
units consumed as sheets not absolute units
refactor: removed x25 & x50 print buttons from the autolathe

* Material container & related stuff ui refactors & clean-up

* Update ammo_workbench.dm

---------

Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-25 02:53:43 -04:00
SkyratBot
57514b2df1 [MIRROR] Removes the hat whitelist from the hat stabilizer mod [MDB IGNORE] (#22611)
* Removes the hat whitelist from the hat stabilizer mod (#76962)

## About The Pull Request
This PR allows you to use any hat with the hat stabilizer module.
Before, it was limited to a pretty small, very arbitrary list of hats
(captain's hats, centcom hats, and a few gimmicky hats), making it
disappointingly limited to both the captain, and anyone who finds the
thing in maints. I'm guessing this limit was put in place to avoid janky
looking hats, but plasmamen get the exact same thing without the
restriction, and there haven't really been any complaints there. While I
did not test this with every single hat, I *did* test it with every hat
currently in the autodrobe, and there wasn't any jank there, even with
things like wigs, and hats that cover the entire head.
There was also a bug/oversight where the MOD eating apparatus module
didn't properly disable pepper spray protection like it was supposed to.
It was literally just a matter of missing parentheses, so i fixed that
too.

Not super sure what to mark this change as btw (qol? balance? removal?)
so if I should change it, let me know.

## Why It's Good For The Game
Allows both the captain and anyone who finds/steals the module to
actually wear the hats they want to wear, instead of being limited to a
small, mostly arbitrary list of hats, and having less outfit choice that
a plasmaman.
## Changelog
🆑
qol: You can now use any hat with the hat stabilizer MOD
fix: The MOD eating apparatus module now properly disables pepper spray
protection
/🆑

* Removes the hat whitelist from the hat stabilizer mod

---------

Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
2023-07-21 17:03:41 -04:00
Pinta
4d7ba6ebcb [MANUAL MIRROR] Reworks Duffel Bags (Zippers) (#22363)
* Reworks Duffel Bags (Zippers)

* Update backpack.dm

* Duiffel Spotfix

* error fixes

* Update backpack.dm

* Update code/modules/antagonists/cult/cult.dm

* Update backpack.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-07-20 23:12:57 -04:00
Bloop
46d84e6119 [MANUAL MISSED MIRROR] Replaces lava and chasm's "safeties" and ignoring turf slowdown on catwalks with traits and a new element (#22384)
Replaces lava and chasm's "safeties" and ignoring turf slowdown on catwalks with traits and a new element. (#76376)

This adds a new element for movables that grants turfs they're in
traits, changes lava and the chasm component to check for traits
instead, ditto for turf slowdown. It also implements another trait that
prevents wet floor from slipping people, as well as some other changes
(feel free to opine on them really):
- Tables and conveyor belts now stop turf slowdown, much like catwalks,
as I imagine people walking on them are not really touching the floor.
(I'd include protection against lava too... until they melt, but that'd
mean finding a way to have these objects burn in the first place, and
lava code is still stupid despite a years old refactor I did)
- Tables also stop slippery turfs from slipping (bananas, soaps etc.
still apply). I wish there were a way to make some objects slippery by
coating them in water vapor or splashing water/lube, but that's outside
the scope of this PR.
- Fixed an edge case in which a mob standing on a lava turf would be
left permanently visually on fire if the lava is changed to another kind
of turf.
- Removed unused code from stone tiles.

I'm going to include these traits in that global list for admin-added
traits... tomorrow perhaps. 💤

Replacing some hard-coded mechanics with easier to use traits and an
element, which I also need for the submerge element PR.

🆑
refactor: Replaced hardcoded "safeties" for lava, chasms and ignoring
turf slowdowns on catwalks with traits.
balance: much like catwalks, tables and conveyors also disable turf
slowdowns.
balance: slippery turfs won't slip you when walking on a table.
fix: Fixed an edge case in which a mob standing on a lava turf would be
left visually but permanently on fire if the lava is changed to another
kind of turf.
/🆑

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2023-07-18 00:06:04 -04:00
SkyratBot
e264ee3644 [MIRROR] Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts [MDB IGNORE] (#22469)
* Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts

* Update communications.dm

* Modular override

* Some modular adjustments, removes 'emagged' vars in favor of obj_flags

* whoops, mobs don't have obj_flags.

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 16:46:17 -04:00
SkyratBot
1c22a5a8ce [MIRROR] Failed MOD auto-storage attempts now tell you that it failed [MDB IGNORE] (#22405)
* Failed MOD auto-storage attempts now tell you that it failed (#76673)

## About The Pull Request
title; if you try to retract your suit and it fails to store your suit
slot item (tank/gun/etc) into storage, now it tells you with both a
balloon alert and chat that you dropped something

![image](https://github.com/tgstation/tgstation/assets/31829017/318b3d19-ba74-46ea-a85b-6f620bcb2e19)

![image](https://github.com/tgstation/tgstation/assets/31829017/602ca3bf-ccb0-4f48-a8a6-9faa0b1c1f6c)

## Why It's Good For The Game
"oh shit where'd i put my oxygen tank" (you left it behind 3 Zs ago or
something)

## Changelog

🆑
qol: When a MOD fails to store something in itself when retracting,
you're now notified in both the chat and by a balloon alert.
/🆑

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

* Failed MOD auto-storage attempts now tell you that it failed

---------

Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
2023-07-12 17:03:00 -04:00
Hatterhat
76d520723c [MISSED MIRROR] Generic Crew-Available Status Readout Module - Continued (#22277)
* self mirror real

* trimmed fat

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
2023-07-12 06:27:30 +00:00
SkyratBot
9251afdede [MIRROR] Infiltrator MODs don't have a plasma visor anymore [MDB IGNORE] (#22360)
* Infiltrator MODs don't have a plasma visor anymore (#76164)

## About The Pull Request

Disables the plasma stabilizer's visor for any MODsuit that has an
infiltrator module

## Why It's Good For The Game

It doesn't make sense that a suit designed for concealing your identity
gave away your species. This changes that, allowing plasmamen to freely
use this MODsuit.

## Changelog

🆑 StaringGasMask
qol: Now plasmamen can use the infiltrator MODsuit without having their
species revealed. The helmet's still not sealed, so remember your mask.
/🆑

* Infiltrator MODs don't have a plasma visor anymore

---------

Co-authored-by: StaringGasMask <62149527+Exester509@users.noreply.github.com>
2023-07-11 22:08:01 -07:00