Commit Graph

339 Commits

Author SHA1 Message Date
YesterdaysPromise
fec946e9c0 /Icon/ Folder cleansing crusade part, I think 4; post-wallening clean-up. (#85823)
Hello everybuddy, your number three rated coder-failure here to clean up
some mess. This PR accomplishes some of the more major structural clean
up changes I wanted to do with /obj/ folder, but decided to wait on
until wallening gets merged, and so, time has come. Several things to
still be done, although I know these cleaning PR's are quite a load, so
will wait for this one to get done with first.

## Why It's Good For The Game
Saner spriters, better sprites, less annoyance. Also deleted a whole
load of redundancy this time around, a lot of sprites which existed
simultaniously in two places now got exit their quantum superposition.
2024-08-15 20:22:02 -07:00
DATAxPUNGED
98cb5162d4 Gives Janitor ERT no slips (#85607)
## About The Pull Request

Gives janitor ERT no slips instead of a clamp

## Why It's Good For The Game

Quite silly for the top of the top janitors from NT losing in a slip
battle with the regular station janny. I'm pretty sure no slip modules
weren't a thing when the ERT modsuits were made

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

🆑
qol: Nanotrasen has fitted the Janitorial Emergency Response Team with
equipment better suited for the job.
/🆑
2024-08-14 13:11:38 +02:00
SmArtKar
9bd2310d38 [NO GBP] (Not so) hotfix for ninja cloaking (#85673)
## About The Pull Request

Closes #85639
dumb me forgetting to test a specific module weeks ago and it getting
past review

## Changelog
🆑
fix: Ninjas can cloak again
/🆑
2024-08-14 12:30:15 +02:00
grungussuss
97c1af4853 Buff to MODsuit deployment time (#85705)
## About The Pull Request
Before it took 12 seconds to fully deploy (2 seconds per part) so it's
just an awkward standing around moment while you wait for your MOD to
activate in front of the airlock.
- Increased speed of MODsuit deploy time by 2 times
- Increased speed of infiltrator MODsuit deploy time by 4 times
## Why It's Good For The Game
One of the reasons why so many players are deterred from MODsuits is how
long the deployment or undeployment takes.
This change should increase the desire for players to use MODsuits and
will raise their value, giving more incentive to produce more, which
roboticists barely ever do.

The infiltrator MODsuit is supposed to be a sneaky sleek and quick
(infiltrating) device, allowing you to quickly disguise your identity
and then quickly become inconspicuous. This change allows it to execute
that purpose better.
## Changelog
🆑 grungussuss
balance: MODsuits now deploy 2 times faster
balance: The infiltrator MODsuit now deploys 4 times faster
/🆑
2024-08-14 12:27:34 +02:00
LemonInTheDark
4b4e9dff1d Wallening [IDB IGNORE] [MDB IGNORE] (#85491)
## What's going on here

Kept you waitin huh!

This pr resprites most all walls, windows and other "wall adjacent"
things to a 3/4th perspective, technical term is "tall" walls (we are
very smart).

If you're trying to understand the technical details here, much of the
"rendering tech" is built off the idea of split-vis. Basically, split a
sprite up and render it on adjacent turfs, to prevent seeing "through"
walls/doors, and to support seeing "edges" without actually seeing the
atom itself.

Most of the rest of it is pipelining done to accommodate how icons are
cut.

## Path To Merge

Almost* all sprites and code is done at this point. 
There are some things missing both on and off the bounty list, but that
will be the case forever unless we force upstream (you guys) to stop
adding new shit that doesn't fit the style.
I plan on accepting and integrating prs to the current working repo
<https://github.com/wall-nerds/wallening> up until a merge, to make
contribution simpler and allow things like bounties to close out more
easily

This pr is quite bulky, even stripping away map changes it's maybe 7000
LOC (We have a few maps that were modified with UpdatePaths, I am also
tentatively pring our test map, for future use.)
This may inhibit proper review, although that is part of why I am
willing to make it despite my perfectionism. Apologies in advance.

Due to the perspective shift, a lot of mapping work is going to need to
be done at some point. This comes in varying levels of priority. Many
wallmounts are offset by hand, some are stuck in the wall/basically
cannot be placed on the east/west/north edges of walls (posters), some
just don't look great good in their current position.

Tests are currently a minor bit yorked, I thought it was more important
to get this up then to clean them fully.

## What does it look like?


![dreamseeker_hBsU6wCu91](https://github.com/user-attachments/assets/5392fa3b-60f6-40ea-876f-e686f25f996a)

![dreamseeker_CTiK0Je5iR](https://github.com/user-attachments/assets/1aee23bd-a5ec-4679-b094-d044401b7222)

![dreamseeker_HYkS1Q9GRq](https://github.com/user-attachments/assets/bad8844b-3179-4856-8684-f912e14e844a)

![dreamseeker_Pa18tgyKYp](https://github.com/user-attachments/assets/c2e1d222-9e5c-4500-8829-dd065428644a)

![dreamseeker_BfOBwS2mjH](https://github.com/user-attachments/assets/7dc51153-111d-4b17-93c3-8389daa6b60b)

![dreamseeker_iJazOumiMQ](https://github.com/user-attachments/assets/5837e203-3865-4f60-854e-62b4875c6b99)

## Credits

<details>
<summary>Historical Mumbojumbo</summary>

I am gonna do my best to document how this project came to be. I am
operating off third party info and half remembered details, so if I'm
wrong please yell at me.

This project started sometime in late 2020, as a product of Rohesie
trying to integrate and make easier work from Mojave Sun (A recently
defunct fallout server) with /tg/.

Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man
is insane) was working with tall walls, IE walls that are 48px tall
instead of the normal 32. This was I THINK done based off a technical
prototype from aao7 proving A it was possible and B it didn't look like
dogwater.

This alongside oranges begging the art team for 3/4th walls (he meant
TGMC style) lead to Rohesie bringing on contributors from general /tg/,
including actionninja who would eventually take over as technical lead
and Kryson, who would define /tg/'s version of the artstyle. Much of the
formative aspects of this project are their work.

The project was coming along pretty well for a few months, but ran into
serious technical issues with `SIDE_MAP`, a byond map_format that allows
for simpler 3/4th rendering.
Due to BULLSHIT I will not detail here, the map format caused issues
both at random with flickering and heavily with multiz.

Concurrent with this, action stepped down after hacking out the
rendering tech and starting work on an icon cutter that would allow for
simpler icon generation, leaving ninjanomnom to manage the project.

Some time passed, and the project stalled out due to the technical
issues. Eventually I built a test case for the issues we had with
`SIDE_MAP` and convinced lummox jr (byond's developer) to explain how
the fuckin thing actually worked. This understanding made the project
theoretically possible, but did not resolve the problems with multi-z.
Resolving those required a full rework of how rendering like, worked. I
(alongside tattle) took over project development from ninjanomnom at
this time, and started work on Plane Cube (#69115), which when finished
would finally make the project technically feasible.

The time between then and now has been slow, progressive work. Many many
artists and technical folks have dumped their time into this (as you can
see from the credits). I will get into this more below but I would like
to explicitly thank (in no particular order) tattle, draco, arcanemusic,
actionninja, imaginos, viro and kylerace for keeping the project alive
in this time period. I would have curled up into a ball and died if I
had to do this all myself, your help has been indispensable.

</details>

<details>
<summary>Detailed Credits</summary>

Deep apologies if I have forgotten someone (I am sure I have, if someone
is you please contact me). I've done my best to collate from the git
log/my memory.

Thanks to (In no particular order):
Raccoff: Being funny to bully, creating threshold decals for airlocks
aa07: (I think) inspiring the project
ActionNinja: Laying the technical rock we build off, supporting me
despite byond trying to kill him, building the icon cutter that makes
this possible
ArcaneMusic: Artistic and technical work spanning from the project's
start to literally today, being a constant of motivation and positivity.
I can't list all the stuff he's done
Armhulen: Key rendering work (he's the reason thindows render right), an
upbeat personality and a kick in the ass. Love you arm
Azlan: Damn cool sprites, consistently
Ben10Omintrix: You know ben showed up just to make basic mobs work, he's
just fuckin like that man
BigBimmer: A large amount of bounty work, alongside just like, throwing
shit around. An absolute joy to work with
Capsandi: Plaques, blastdoors, artistic work early on
CapybaraExtravagante: Rendering work on wall frames
Draco: SO MUCH STUFF. Much of the spritework done over the past two
years is his, constantly engaged and will take on anything. I would have
given up if not for you
Floyd: Early rendering work, so early I don't even know the details.
Enjoy freedom brother
Imaginos16: A guiding hand through the middle years, handled much of the
sprite review and contribution for a good bit there
Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of
effort dissecting feedback with a focus on making things as good as they
can be at the jump
Infrared: Part of the impetus for the project, made all the xenomorph
stuff in the MS style
Jacquerel: A bunch of little upkeep/technical things, has done so much
sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES)
Justice12354: Solved a bunch of error sprites (and worked out how to
actually make prs to the project) Thanks bro!
Kryson: Built the artstyle of the project, carrying on for years even
when it was technically dying, only stopping to casually beat cancer. So
much of our style and art is Kryson
KylerAce: Handled annoying technical stuff for me, built window frame
logic and fully got rid of grilles.
LemonInTheDark: Rendering dirtywork, project management and just so much
fucking time in dreammaker editing sprites
Meyhazah: Table buttons, brass windows and alll the old style doors
Mothblocks: Has provided constant support, gave me a deadline and
motivation, erased worries about "it not being done", gave just SO much
money to fill in the critical holes in sprites. Thanks moth
MTandi: Contributed art despite his own blackjack and hookers club
opening right down the road, I'm sorry I rolled over some of your
sprites man I wish we had finished earlier
Ninjanomnomnom: Consulted on gags issues, kept things alive through some
truly shit times
oranges: This is his fault
Rohesie: Organized the effort, did much of the initial like, proof of
concept stuff. I hope you're doin well whatever you're up to.
san7890: Consulting on mapper UX/design problems, being my pet mapper
Senefi: Offsetting items with a focus on detail/the more unused
canidates
SimplyLogan: Detailed map work and mapper feedback, personally very kind
even if we end up talking past each other sometimes. Thank you!
SpaceSmithers: Just like, random mapping support out of nowhere, and
bein a straight up cool dude
Tattle: A bunch of misc project management stuff, organizing the
discord, managing the test server, dealing with all the mapping bullshit
for me, being my backup in case of bus. I know you think you didn't do
much but your presence and work have been a great help
Thunder12345: Came out of nowhere and just so much of the random
bounties, I'm kind of upset about how much we paid him
Time-Green: I hooked him in by fucking with stuff he made and now he's
just doin shit, thanks for helping out man!
Twaticus: Provided artistic feedback and authority for my poor feeble
coder brain, believed in the project for YEARS, was a constant source of
❤️ and affirmation
unit0016: I have no god damn idea who she is, popped out of nowhere on
the github one day and dealt with a bunch of annoying
rendering/refactoring. Godspeed random furry thank you for all your
effort and issue reports
Viro: A bunch of detailed spriting moving towards 3/4ths, both on and
off the wallening fork. If anyone believed this project would be done,
it was viro
Wallem: Artistic review and consultation, was my go-to guy for a long
time when the other two spritetainers were inactive
Waltermeldon: Cracked out a bunch of rendering work, he's the reason
windows look like not dogwater. Alongside floyd and action spent a TON
of time speaking to lummox/unearthing how byond rendering worked trying
to make this thing happen
ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin
bugaboo that was living in my brain like it was nothing. Love you
brother

And finally:
The Mojave Sun development team. They provided a testbed for the idea,
committed hundreds and hundreds of hours to the artstyle, and were a
large reason we caught issues early enough to meaningfully deal with
them. Your work is a testament to what longterm effort and deep detailed
care produce. I hope you're doing well whatever you're up to. Go out
with a bang!
</details>

## Changelog
🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan,
Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd,
Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson,
KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom,
oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner,
SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016,
Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team!
add: Resprites or offsets almost all "tall" objects in the game to match
a 3/4ths perspective
add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: = <stewartareid@outlook.com>
Co-authored-by: Capsandi <dansullycc@gmail.com>
Co-authored-by: ArcaneMusic <hero12290@aol.com>
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com>
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com>
Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com>
Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Rob Bailey <github@criticalaction.net>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
2024-08-14 09:07:45 +00:00
Da Cool Boss
06aa7b846a Fixes Donk Co. & Waffle Corp Trademark Issues (#85686)
## About The Pull Request
All references to "Waffle Co" and "Waffle Company" have been scrubbed
and replaced with appropriate branding. "The Waffle Corporation" may be
shortened to "Waffle Corporation", "Waffle Corp" or "Waffle Corp." only.

All references to "Donk Corp." and "Donk Corporation" have been scrubbed
and replaced with appropriate branding. "Donk Company" may be shortened
to "Donk", "Donk Co" or "Donk Co." only.
## Why It's Good For The Game
Keeps these names consistant and lore accurate.
## Changelog
🆑
spellcheck: fixed many incorrect spellings of Waffle Corp and Donk Co.
/🆑

---------

Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@users.noreply.github.com>
2024-08-09 23:22:53 -04:00
SmArtKar
523dc774f2 Callouts and MODsuit quick module pickers now track user (#85418)
## About The Pull Request
Callout and MODsuit quick picker (Ctrl + MMB) radials are now
user-bound, meaning that they won't change their screen position if you
move.

## Why It's Good For The Game

Those aren't radials bound to specific objects and rather appear at your
cursor purely for convenience. In case of callouts this is especially
important as you're most likely running while casting them which will
make your mouse move over and trigger a random option as you don't have
to click to use them.

## Changelog
🆑
qol: Callouts and MODsuit quick module pickers now track user
/🆑
2024-08-01 15:24:09 +01:00
Nick
b9dfb7a44f Power cell overlay now updates when exiting an object's contents (#85079)
## About The Pull Request
The charge indicator overlay on power cells is now properly updated when
the cell is charged/discharged. Before, you could use a power cell until
it's empty and the overlay wouldn't change at all.
## Why It's Good For The Game
The overlay is there to indicate the charge of the cell. It should work.
## Changelog
🆑
fix: The charge indicators on power cells now work properly.
code: Removed some now redundant power cell appearance updates
/🆑

---------

Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
2024-07-31 17:08:07 +02:00
SmArtKar
3b364b1cea Mining MODsuit sprite changes + balance (#85353)
## About The Pull Request

Slightly slimmed down the helmet, changed belt into plates, recolored
brown parts to blue and added a few more glowy bits to the mining
MODsuit.


![image](https://github.com/user-attachments/assets/a6e3113f-205e-401d-881a-fc87925cec7f)

Here's what it looks like currently


![image](https://github.com/user-attachments/assets/887be8c1-fe0c-4d8f-b574-051cf6c78c0e)

Mining MODsuit now hides belts, has THICKMATERIAL while active and got
large capacity storage. Eating apparatus no longer has an on-person
sprite. Adjusted drill module active sprite to actually fit on your hand
instead of being slightly to the side.

## Why It's Good For The Game

Currently the MOD looks a bit goofy, I tried making it a bit more
streamlined without removing the bulk and look of a reinforced explorer
exosuit. Belts are hidden for the sake of visuals, as almost all miners
wear riggings which do not fit with the MOD spritework at all. While
inactive it has THICKMATERIAL but for some reason loses it when
activated, which doesn't make much sense. Its a thick, armored
spacesuit.

Eating apparatus isn't a module that people around you need to be
acutely aware of, nor did it look particularly good. I tried respriting
it but there's not much to be done with 12 pixels worth of space.

Large storage is a rather impactful change - currently only loader and
advanced (CE's personal) MODs have it, and more can be printed after
researching advanced engineering MODsuit designs (from my experience,
usually done by ~40 minute mark). Storage space is a very important
aspect, and mining MODs already have high competition with ash drake and
H.E.C.K. armors. Having less storage makes them a weird sidegrade,
arguably even a downgrade, to roundstart explorer gear that has been
upgraded with plates; its only real advantage is being able to pass
through lava and freeing a pocket previously occupied by your ore
satchel due to arcmining nerfing its main purpose (ore mining). While
this still is technically worse than roundstart backpacks, this should
allow them compete with with other equipment in terms of usability.

## Changelog
🆑
balance: Mining MODsuits are now considered thick clothing and gained
expanded storage.
image: Mining MODsuits got a slight glowup and hide belts now
/🆑
2024-07-31 14:53:51 +01:00
Ghom
2535df375d Carps, frogs and young lobstrosities now fear the fishing hat! (#85380)
## About The Pull Request
Carps, frogs and young lobstrosities now fear legendary anglers wearing
the legendary fishing hat and will flee. The item is skill-locked, so
only those that have maxxed out the skill can wear it.

Differently, adult lobstrosities and megacarps (and suicide frogs, which
are used nowhere) do not flee but will still prioritize them over the
rest.

## Why It's Good For The Game
I'm putting some emphasis on the "fish fear me" _(lobstrosities and
frogs aren't exactly fish but it'd been quite boring to only include
carps)_ and also making the hat a bit more than just some cosmetic
novelty.

## Changelog

🆑
add: Carps, frogs and young lobstrosities now fear people wearing
fishing hats! Adults and megacarp favour the 'fight' part of the fear
reflex however.
fix: The hat stabilizer module now inherits the clothing traits of the
attached hat.
/🆑
2024-07-31 14:38:37 +01:00
SmArtKar
9cc1baedb2 Fixes mining MODsuit suit storage (#85342)
## About The Pull Request

Closes #85332
#83437 had a copypasting error and ended up giving mining MOD suit
storage to loaders instead of mining MODs

## Changelog
🆑
fix: Mining MODsuits now can store everything that explorer suits can
/🆑
2024-07-29 16:35:12 +01:00
SmArtKar
13c713b3f3 Projectile dampener, recycler and ninja stealth MOD modules now work properly (#85307)
## About The Pull Request
Closes #85207

Projectile dampener didn't delete the field, recycler didn't work period
(how did nobody notice it?) and ninja stealth didn't apply silent
footsteps trait. Since the beginning. Yeah.
I think I got all of these, it shouldn't call empty parent and
especially should it not check for returns from it.

## Changelog
🆑
fix: Projectile dampener, recycler and ninja stealth MOD modules now
work properly
/🆑
2024-07-29 16:08:04 +01:00
SmArtKar
ddd9f6e05d Makes mirage grenade dispensers and ionic jump jets work (#85253)
## About The Pull Request

Partially handles #85207

## Changelog
🆑
fix: Mirage grenade dispensers and ionic jump jets now work
/🆑
2024-07-27 21:25:35 +02:00
necromanceranne
7088097eb8 [NO SELF SURGERY] Cybernetically augmented humanoids have alternative surgeries (both standard and advanced) [NO SELF SURGERY], as well as other misc additions (#84980)
<!-- 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

### Cybernetic variant surgeries

Many of the surgeries able to be performed on organic limbs now have a
version for robotic limbs. This includes;

### NONE OF THESE ARE SELF SURGERY OPTIONS

- Organ repair surgeries
- Stomach Pumps
- Blood filtering
- Autopsies
- Lobotomies
- Pacification
- Lipoplasty
- Amputation
- Brainwashing (including the Sleeper Agent protocol)
- Nerve Splicing and Nerve Grounding
- Vein Threading and Vein Muscle Membrane
- Ligament Hook and Ligament Reinforcement
- Cortex Folding and Cortex Imprint

These utilize mechanical steps and unique versions of their special step
that uses mechanical tools. But many of these are able to be performed
using standard surgery tools.

In fact, I've improved the chances for doing surgery using standard
tools for mechanical steps, recognizing that medical is often going to
end up with synths in medbay whether we like it or not.

### NONE OF THESE ARE SELF SURGERY OPTIONS

### Organ Repair Surgeries correct EMP Failure Cascades

When you repair a synthetic organ using the organ repair surgery, it
reverses the effects of organ failure from an EMP. That is, the
permanent failure of an organ. This allows for an alternative method to
replacing that organ wholesale, which makes treating synths a lot easier
for medical and EMPs less of a RNG death knell for people with
cybernetic organs. However, it still needs the surgery to correct the
error, so this isn't removing the danger of being EMP'd.

### Health Scanners report EMP Failure Cascades

Scanning someone with a cybernetic organ now actually tells you that the
organ is failing. Wow, why wasn't this already the case?

## Why It's Good For The Game

#### Surgeries

With the new techweb changes, augmented crew are becoming a lot, lot
more common place, as are the implantation of cybernetics. These are
required for research to be able to progress both medical and robotics
technology. Therefore, those using these items are becoming a lot more
common place.

However, our medical system is quite blind to these people as of the
moment. A lot of surgeries that are critical to recovering the
injured/dead do not work on them outright, and medical can't resolve the
problems that come with cybernetic organs entirely.

This change hopefully modernizes our surgeries to account for these
synthetic/cybernetically-altered crew members that neither forces people
to choose between taking them to medical or robotics (they're often
going to end up in medical regardless), and letting either department to
function as a place for these crew to obtain medical services.

Also gives them some cooler flavour to their surgeries, which I think is
the most important part of this change. It actually feels like you're
more than human without getting too much in the way of gameplay loops
and over complicating things.

Edit: To provide a bit of extra clarity on 'Why allow the advanced
surgeries?'

You can actually have the benefits of the advanced surgeries as an
augmented humanoid. The problem is that it has to take place before you
are augmented. They're not mutually exclusive, just slow to apply. There
isn't much reason for there not to be a method to apply them to robotic
people, particularly since augmentations are expected earlier in the
round than advanced surgeries.

#### EMP Failure and Detection

This mechanic is probably what people hate the most about cybernetics.
It is largely invisible, and forces you to have to go through a tedious
process of organ replacement on what could be any one of your organs,
since it wasn't being broadcast to the user which one is failing until
you are possibly already doubling over.

Now, it is easier for medical staff to identify if they have a
cybernetically enhanced patient in the midst of a failure cascade, and
have the means to resolve the problem. Robotics and cyborgs can too,
since sometimes they'll have the means usually to do the same operations
and detection.

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

🆑
add: Robotic variants of many of the standard and advanced humanoid
surgeries. You cannot perform self surgery with these surgeries.
balance: It is easier to do robotic surgeries with normal surgery tools.
qol: It is now possible to detect EMP organ failure cascades via health
scanners.
qol: EMP organ failure cascades can be reversed by doing organ repair
surgeries targeting the failing organ.
/🆑

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

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2024-07-22 18:07:05 +01:00
Afevis
9a4386d31d deletes wires on atom/destroy() (#85154)
Closes #85132
Fixes #85110
2024-07-21 21:56:01 -07:00
norsvenska
5f80128fa9 Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## About The Pull Request

it's - conjunction of "it" and "is"
its - possessive form of "it"

grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good

## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
2024-07-21 13:41:37 -06:00
SmArtKar
42b2f4dec4 Fixes organizer sometimes deleting brains (#85076)
## About The Pull Request

Closes #85058 by adding a special = TRUE (essentially organ hotswap) arg
to its Remove call, and added a safety check in case insertion fails
which should drop the organ.

## Changelog
🆑
fix: Fixes organizer sometimes deleting brains
/🆑
2024-07-20 02:26:22 +02:00
GPeckman
753a9cf5fa Adds a standalone Civilian Modsuit model, available from robotics (#84806)
## About The Pull Request

I talked with Fikou on discord about #84801, and he said that it would
be fine to make a standalone suit that is slowdown-free but also not
spaceproof. So yeah, that's what this is. The civilian skin for the
standard modsuit has been turned into a standalone model. It is similar
to the loader modsuit that cargo has, in that it has no slowdown while
active but doesn't protect you from space. It also has only a complexity
limit of 12 instead of the usual 15, and it has abysmal armor values. It
also doesn't protect you from pepper spray and the helmet doesn't allow
you to use internals or block you from eating.

I tweaked the sprites for it as well, removing the visor from the inhand
and mob overlay sprites, to better reflect it's lack of spaceproofing. I
also whipped up a quick sprite for the civilian mod plating, based off
of the medical mod plating since they have similar color schemes.
## Why It's Good For The Game

I'm going to just copy and paste what I said in the last PR, because all
of it still applies to this one. There are a lot of really cool modsuit
modules that are hampered by the other drawbacks that modsuits have.
These drawbacks exist for a good reason; space proof suits should have
tradeoffs, especially ones available at the start of the round like
modsuits are. But that doesn't really solve the problem with the
modules.

One of the biggest examples of this problem is the pepper shoulders
module that comes on security modsuits. It's a very cool module
conceptually, but it tends to have limited usefulness in practice. Out
in space, whoever you're fighting is likely wearing a spacesuit of their
own, which will make them completely immune to the pepper spray. On the
station, the person wearing the suit has to deal with the slowdown from
it, which will far outweigh any advantage granted by the pepper
shoulders module.

Another good example is the medical modules, like the surgical
processor, organ thrower/organizer, and thread ripper modules. All of
these are great for a medical player trying to perform surgery, but who
is going to be doing surgery in a depressurized room? All these modules
don't mesh well with the design of modsuits as special spacesuits, and
the new civilian model will hopefully give them more room to be used.
## Changelog
🆑
add: Added the civilian modsuit module as a standalone model. It offers
no slowdown while activated but does NOT protect you from the void of
space. You can print the plating from an exosuit fabricator and build it
like a normal modsuit.
del: Removed the civilian skin from the standard modsuit, as it is now a
standalone model.
image: Tweaked the sprites for the civilian modsuit head, both in-hand
and on the mob. Also added a civilian mod plating sprite.
/🆑
2024-07-19 18:40:32 +02:00
kawaiinick
7d31b79672 Jetpacks on sec mods are pinned by default (#85041)
## About The Pull Request

Sec mods didn't have their jetpacks pinned by default, like on the rest
of the mods

## Why It's Good For The Game

consistency and quality of life is good

## Changelog
🆑
qol: secmods jetpacks are now pinned by default
/🆑
2024-07-19 01:32:47 +02:00
SmArtKar
dfb12f91d6 HUD traits now apply their corresponding hud automatically. Most clothing/item/etc sources of HUDs now only use traits (#84984)
## About The Pull Request

Currently if you want to apply a HUD you usually add both its trait and
the HUD itself. Only exceptions are things like simplemobs where you
should avoid adding the hud trait since it adds security/med DB access
and such, but there is no cases where you'd want to apply the trait and
not apply the hud.

Requested by Melbert about a week ago.

![image](https://github.com/user-attachments/assets/8af3e9cc-ea22-4cee-86ec-54c397291727)

## Why It's Good For The Game

This makes working with HUDs significantly easier, as you no longer have
to bother with manually adding/removing them. Also potentially removes
an edge case where if your hud could get removed while keeping the
trait.

## Changelog
🆑
refactor: HUD traits now apply their corresponding hud automatically
/🆑
2024-07-19 01:24:07 +02:00
SmArtKar
abd0a76c57 Fixes kinesis runtime due to un-unregistering signals (#85037)
## About The Pull Request

Kinesis MODsuit module currently runtimes if you try to grab an item you
already grabbed and released before because the signals aren't
unregistered.

## Changelog
🆑
fix: Fixed kinesis runtime due to un-unregistered signals
/🆑
2024-07-19 01:18:59 +02:00
SmArtKar
4e68b0b208 You can properly aim mining bombs at turfs now (#85006)
## About The Pull Request

Due to lacking can_target_turfs mining bombs currently travel until they
hit a solid object or reach their range, making aiming often
frustrating.

## Why It's Good For The Game

This doesn't have a balance impact but makes mining with them a bit
easier as you can actually position them where you want.

## Changelog
🆑
qol: You can properly aim mining bombs at turfs now
/🆑
2024-07-17 08:58:04 +02:00
MrMelbert
34f3f479ae Small hulk cleanup / nukes TRAIT_IGNOREDAMAGESLOWDOWN (#85003)
## About The Pull Request

I was investigating a bug with hulk in which using it while damaged
doesn't put you back on full speed

I noticed `TRAIT_IGNOREDAMAGESLOWDOWN` on its own was subtly broken, in
that it did nothing if the user did not call `updatehealth` afterwards

And guess what, most (if not all) uses of the trait did not do this, so
it never applied correctly

So I nuked the trait entirely, made all uses of it use the same thing
morphine uses (`/datum/movespeed_modifier/damage_slowdown`)

And since I was auditing this I saw the ball module was broke, it
removed the immunity but never added it. Quick fix

I also cleaned up some Hulk stuff while I was in the area because I was
in the area. I removed all instances of `check_mutation` and replaced it
with trait checking because it made more sense.

I also also fixed a bug with the simple flying element never removing on
detach because I touched something that uses it for the above change.

## Changelog

🆑 Melbert
fix: Using hulk (and a myriad of similar effects) now properly updates
your movespeed to ignore the damage movespeed penalty
fix: Some things which temporarily make you fly don't make you fly
forever
fix: MODsuit ball module now properly makes you immune to damage
movespeed penalty when in ball form
fix: Adding Hulk via VV dropdown doesn't default to adding the strongest
hulk available (that which is used by the medieval pirates)
/🆑
2024-07-17 01:14:08 +02:00
paganiy
e2b755c728 If you can't shoot a gun, then... JUST TOSS IT AT THEM (#84827)
## About The Pull Request
Adds a new trait TRAIT_TOSS_GUN_HARD (which currently comes from the
Sleeping Carp scroll, ninja MODsuit, berserk armor, being a medieval
pirate or highlander). The owner of this trait deals an additional
**10-20** (depending on the size of the weapon) damage to the enemy by
throwing a gun, and also knocks them for 0.5 seconds. If a ballistic
weapon **with a magazine** was thrown, then the magazine is removed and
the bolt is racked, and if **without a magazine**, then all cartridges
(revolvers) or chambered one is removed. Here's a preview of how it
works:


https://github.com/tgstation/tgstation/assets/126676387/2a56eb74-6d37-4343-a685-3bf7159ab628


## Why It's Good For The Game
It's classic

![how-to-use-a-gun-in-katana-zero](https://github.com/tgstation/tgstation/assets/126676387/2d2e6be8-5fa2-4084-8928-a56bbf5fc82e)
## Changelog
🆑
add: If you can't shoot a gun, then... JUST TOSS IT AT THEM (for 0.5
seconds of knockdown and 10-20 an additional brute damage)
/🆑

---------

Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
2024-07-15 14:10:01 +01:00
SmArtKar
1b5c3fdb36 You can implant yourself with pathfinder MOD implant while you're wearing the suit (#84927)
## About The Pull Request
Pathfinder MODule now starts as a usable module which can be triggered
in order to implant MOD's wearer.

## Why It's Good For The Game

Its a very cool module which unfortunately is severely hampered by
having to open the suit and pull it out to eject. This doesn't have any
impact on balance, but does make people more likely to use it in-game as
its now not as bothersome to set up. Who even knew that captain's
MODsuit has it?

## Changelog
🆑
qol: Pathfinder MODule can now be triggered while wearing the MODsuit to
implant yourself without having to pull it out of the suit.
/🆑
2024-07-15 03:17:55 +02:00
SmArtKar
bb696fc33c Using ctrl + your quick MOD button now opens module selector on your mouse position (#84879)
## About The Pull Request

Title. Ctrl + middle by default, can be ctrl + alt + LMB if changed in
prefs. Both are unused and default to ctrl/alt click behavior
respectively.

## Why It's Good For The Game
A quick way to change modules. You *can* bind your module wheel to a
hotkey but that still opens it on your sprite, making it harder to
quickly swap modules in combat/danger.
## Changelog
🆑
qol: Using ctrl + your quick MOD button now opens module selector on
your mouse position
/🆑
2024-07-12 23:28:09 +02:00
SmArtKar
3b8ab52e3e Fixes MOD hypospray using incorrect fill sprites (#84875)
## About The Pull Request

After the syringe resprite their fill sprites no longer fit MOD hypos,
so I added proper fill textures for them.
Closes #81469

## Why It's Good For The Game

Current ones look jank and are going outside of the hypo

## Changelog
🆑
image: MOD hyposprays no longer use syringe fill sprites
/🆑
2024-07-12 04:09:02 +02:00
GPeckman
968c98a5ba Fixes mod paint kit (#84835)
## About The Pull Request

After all the attack chain refactors, the modsuit paint kit was bugged.
If you tried to use it on a modsuit that had storage installed, then the
paint kit would simply be inserted into the modsuit instead of allowing
you to change the skin/color.

Fixes #84620 
Fixes #84490 
## Changelog
🆑
fix: The modsuit paint kit is no longer broken.
/🆑
2024-07-11 18:00:25 +02:00
ArcaneMusic
43e62163fe Adds a Contraband trait, and implements contraband as a mechanic to security bounties. (#84003)
## About The Pull Request

This PR does a few things but centrally it's all centered around
mechanically enforcing what items are and are-not considered contraband
in-game.

### What does something being contraband MEAN?

Contraband items are visually indistinguishable from non-contraband. If
an item is Contraband, it can only be detected in two ways:
* After being scanned by an N-Spect scanner, which is a standard item
security item, assuming it still has a charge to do so.
* Via a scanner gate, which can now be upgraded with an N-spect scanner
to allow for it to scan a person and all their contents for contraband.

### What items ARE contraband?

Contraband items are intended to be determined both logically and
through other relevant examine text. However, here's the short list of
items that are considered contraband, reserving the right to expand the
list.

<details>
  <summary>In hindsight it's kind of a long list.</summary>
  
* Items that have "contraband" or "illegal" in the name or description.
* Items that allow for the player to obtain other illegal items, that
are NOT particularly stealthy.
* This means that a syndicate uplink is NOT considered contraband, as
they're typically hidden on your person as something else.
* Stealth items under the syndicate uplink, the revolutionary flash, and
some mapped in dangerous items that can come from both syndicate and
company-aligned resources are not considered dangerous.
* Items that are purchased from cargo after emagging or switching to
extended cargo range.
* Items purchased FROM syndicate uplinks, the wizard knowledge scroll,
or other antagonist shops.
* Cursed artifacts/tools magically produced by cultists or heretics.
* Items purchased from the blackmarket.
* Items purchased from the contraband section of vending machines.
* Some drugs and overtly dangerous or criminal byproducts.
  
</details>

### How does this interact with the round?
Well, primarily, this is an aid for in-game enforcement of space law.
Based on the length of the above list, we have a LONG, LONG list of
items in-game that are technically considered, in one way or another,
illegal to have on the station, and yet without either metaknowledge of
what those items are, or how they're used, security officers lack some
of the certainty of how to deal with these kinds of encounters.

Additionally to the knowledge aspect of this trait, security officers
may now receive a new civilian bounty to collect items that are
considered contraband, also giving them an incentive to look for and
confiscate contraband that's been found across the station while
upholding space law.

### Other minor changes that I rolled into this

Security has a bounty for 3 different rechargers, and considering access
limitations, most security players aren't going to make this exchange,
so I've lowered the required amount down to 1.

Adjusted the N-spect scanner's description to match it's new
functionality.

The Civilian bounty TGUI now has an additional 1 point of padding to
make it feel less cramped.



https://github.com/tgstation/tgstation/assets/41715314/c3cd4752-b03a-4e0b-959e-1252fcc2369d

**Updated as of 6/19/2024:**
Additionally, some storage items will block the presence of contraband
when going through a contraband aligned scanning gate. These items
include the infiltrator modsuit core, storage implant, void cloak, the
aptly named smuggler's satchel, and the chameleon kit's backpack.

**Updated as of 6/23/2024:**
N-spect scanner now has contextual screentips.

**Updated as of 6/29/2024:**
Scanner gates are now available in all lathes that have a feature
specific to how scanner gates function. So, includes cargo (contraband),
security (weapons), and medbay (diseases).

## Why It's Good For The Game

Originally, this started out as a way to be able to provide more
in-character and in-flavor bounties for security officers, because they
suck! Most security bounties as they exist right now do the worst
possible things from all respective bounties:
* They detract away from a job's actual responsibilities as opposed to
working with them.
* They're best completed while sitting next to your lathe and running
items back to the bounty pad.
* They exist with such esoteric rarity of high quantity of items that
it's miserable to fulfil.

As a result, I started work on this as a framework to allow security
officers to be further incentivized to collect contraband across the
station, either as a result of the gamemode or just through routine
patrols across the station.

Implementing it as a learning tool for security as well just happened to
work out as an additional bonus, and having a function in-game allowing
newer or less experienced players to know if an item is considered
dangerous or conspicuous also works as a particularly good way to
provide information where a player may not know what they're up against.

If nothing else, this might be interesting to try, and if not, I'll just
snip out the QOL changes from it and we'll see how it goes.

Going forward, I am a bit hesitant about the contraband scanner gate
mode, and as such, will try working with the admin team to determine if
that's a good feature to keep around for game health, while hoping to
give it a chance in the fullness of time.

## Changelog

🆑
add: Items spawned via traitor uplinks or are known illegal contraband
on the station can now be scanned and identified as such by the N-spect
scanners in security. These only applies to overt traitor or antagonist
items, and "stealth" items will not be seen as such.
add: Scanner gates can now be upgraded by using an N-spect scanner on it
to unlock "contraband scanning" mode.
add: Security officers can now be offered a bounty to turn in pieces of
contraband.
add: Some stealthy storage items like storage implants, smuggler's
satchels, void cloaks, the infiltrator modsuit, and the chameleon
backpack will block the presence of contraband on your person when
placed inside.
qol: N-spect scanner contextual screentips.
balance: Recharger security bounties ask for a quantity of 1, down from
3.
qol: security, cargo, and medbay have access to scanner gate boards.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-07-11 03:08:25 +02:00
EnterTheJake
0cb765a5e0 Creates an EMP act for Jetpacks + minor buffs to sec modsuits (#84582)
## About The Pull Request

Jetpacks are now vulnerable to EMP, they get disabled for a few seconds
after getting hit by an EMP blast.

Sec modsuits now start with the jetpack module preinstalled instead of
the mirage module, and their starting powercell has been upgraded.

## Why It's Good For The Game

It's no secret that regular jetpacks and your run of the mill eva suit
see far more use than actual security issued equipment.

Having your best option available from the start of the shift is just
boring, and doesn't encourage the crew to even engage with Modsuits in
any way.

With this PR i'm introducing a weakness to jetties by having em turn of
for 4 seconds if you get hit by a pulse.

In exchange sec mods are now a bit more suited for their job, Mirage
module has been swapped with Jetpack module and they now spawn with a
better cell.

## Changelog

🆑

balance: Jetpacks are now briefly disabled by EMP.
balance: Mirage module has been removed from Sec modsuits.
balance: Security modsuits now spawn with a better cell and the jetpack
module preinstalled.
/🆑
2024-07-08 22:06:23 +02:00
SmArtKar
b6c84135c3 Refactors embedding to use datums instead of storing data in bespoke elements (#84599)
## About The Pull Request

This refactors embedding elements to make them use singleton datums
(similarly to armor) instead being bespoke and creating a new element
every time armor values are supposed to be adjusted.
Default values have been removed from defines due to now being declared
in base class itself.
Additionally fixes vending machines and tackling gloves setting
generated shards (which they instantly embed into their victim) embed
properties to null after running the embedding code, despite said shards
having non-null embedding values by default, making them not be able to
embed into anyone else, also potentially breaking the pain/jostling code
if they somehow get updated.

## Why It's Good For The Game

Current embedding system is an unnecessarily complicated mess as bespoke
elements are hard to work with, and creating a new element every time
you change values is hacky at best. This change should make it easier to
read and work with.

## Changelog
🆑
fix: Fixed glass shards generated from falling vending machines or
tackling windows not being able to embed into anyone.
refactor: Refactored embedding code to use datums instead of bespoke
elements and ugly associated lists.
/🆑
2024-07-07 23:20:07 +02:00
jimmyl
27b6279ce1 All jetpacks are no longer full-speed (#84712)
## About The Pull Request

Full-speed has been removed from jetpacks
All jetpacks are now modsuit jetpack speed
Due to having no purpose now, Adv. Ion Jetpack has been replaced with
its lesser form, Ion Jetpack

## Why It's Good For The Game
The meta to just blow up gravity and use your jetpack that makes you
faster than 99% of the projectiles ingame and faster than a healthy full
mood human to dunk on literally anyone you see because they cant click
you because youre going mach 3000 is absolutely not fair
With jetpacks being reasonable speeds this is no longer a problem

## Changelog
🆑
balance: All jetpacks are now modsuit jetpack speed
del: Adv. Ion Jetpack module has been removed
/🆑
2024-07-07 15:06:09 -04:00
carlarctg
b83b169603 Renames the organ thrower to the 'organizer' and clears up its description (#84534)
## About The Pull Request

Renames the organ thrower to the 'organizer' and clears up its
description.

## Why It's Good For The Game

The organ thrower is a very silly module, and i do like it, but did you
know that it instantly replaces organs? As in, the organ is removed and
swapped instantly? And it can store multiple, making organ manipulation
surgeries eerily instant?

The description is funny, but it forsakes accuracy for amusement's sake.
I did my best to keep it both funny and accurate, accurately describing
its actual function now.

I also changed the name, because similarly, it wasn't very descriptive.
Jacquerel suggested 'organizer' which is a hilarious pun and I'm all for
it, even if it does also lack some accuracy which was supposed to be the
intention of the PR.

## Changelog

🆑
spellcheck: Renamed the organ thrower module to the 'organizer'
spellcheck: Made its description more accurate. Did you know it
instantly replaces up to 5 organs in active surgery?
/🆑
2024-07-07 03:40:03 +02:00
Holoo
d9315067a0 Fixes ninja's adrenaline boost modsuit module not recharging (#84678)
## About The Pull Request
Makes `adrenaline_boost ` use higher attack chain signal, so you can
actually recharge it instead of putting beaker in modsuit storage.
## Why It's Good For The Game
Functioning modsuit modules are good
## Changelog
🆑

fix: fixed ninja's adrenaline boost module not being rechargable
/🆑
2024-07-06 17:59:45 +02:00
carlarctg
2c1543d1a0 Projectile Dampener field now reduces stuns and stamina damage from incoming projectiles (ebow projectiles in particular) (#84284)
## About The Pull Request

Projectile Dampener field now reduces stuns and stamina damage from
incoming projectiles. Stamina damage is reduced by the same value as
damage, stuns and knockdowns by 33%

## Why It's Good For The Game

This is a pretty cool but underused module, and it doesn't really make
sense in my opinion that it only affects damage. It should affect any
other meaningful value the projectile has, which fits in with the flavor
and makes the item more valuable and usable. It doing absolutely nothing
to disabler shots is unintuitive and lame. You can always just baton
them.

## Changelog

🆑
add: Projectile Dampener field now reduces stuns and stamina damage from
incoming projectiles
/🆑
2024-07-05 20:33:03 +02:00
LemonInTheDark
e90a9b4b68 Flattens The Floor Plane (Camera Update Too) (#84350)
## About The Pull Request

Ok so like, side map right? It makes things higher up in the world
render above things lower down in the world.

Most of the time this is what we want, but it is NOT what we want for
floors.
Floors are allowed to be larger then 32x32, and if they are we want them
to render based off JUST their layer.
If we don't allow this grass turfs and others get cut off on their
bottom edge, which looks WEIRD.

In order to make this happen, we can add TOPDOWN_LAYER to every layer on
the floor plane and disable sidemap.

I've added documentation for this to VISUALS.md, and have also
implemented unit test errors to prevent mixing TOPDOWN layers with non
topdown planes (or vis versa).
This new test adds ~1 second to tests, which is I think a perfectly
scrumpulent number.

EDIT:

I nerd sniped myself and implemented sidemap layering and lighting for
cameras (also larger then 32x32 icon support for getflat)
The lighting isn't perfect, we don't handle things displaying in the
void all that well (I am convinced getflat blending is broken but I have
no debugger so I can't fix it properly), but it'll do.

This came up cause I had to fix another layering issue in cameras and
thought I might as well go all in.

![image](https://github.com/tgstation/tgstation/assets/58055496/601b422c-f6aa-42ba-bcd9-b1faebe236e3)


## Why It's Good For The Game

Old:

![image](https://github.com/tgstation/tgstation/assets/58055496/d4102386-420d-4346-b05c-b819e62d98d0)

New:

![image](https://github.com/tgstation/tgstation/assets/58055496/1f5e303e-adee-427d-8fe3-76c8f2dbe098)


## Changelog
🆑
fix: Grass turfs will render properly now. Reworked how floors render,
please report any bugs!
fix: Cameras now properly capture lighting
fix: The layering seen in photos should better match the actual game
/🆑
2024-07-04 12:10:41 -07:00
SyncIt21
e4c5c2fc2a Allows for proxy atoms in object melee attack chain (#83860)
## About The Pull Request
1. Objects now have an `get_proxy_for()` proc. This returns an atom that
will participate in the object melee attack chain on behalf of your
atom. Allows for general purpose polymorphism per object interaction
2. Cleaned up some multitool acts to accommodate proxy behaviour
3. You can pry tiles as an Engiborg with crowbar in hand & do other
similar behaviour with crowbar
5. Improves & Depends on #83880. We don't need a hidden omni toolbox &
can create the tools directly in the omnitool and pass them in the
attack chain as a proxy rather than calling the attack chain manually.
All tools are on the borg directly
   - Fixes #84355
   - Fixes #84359
   - Fixes #84393

## Changelog 
SyncIt21,zxaber
🆑
fix: omni crowbar tool interaction for replacing tiles has been fixed 
fix: techfab screentip does not runtime when you hover over it with an
omnitool multitool
fix: medi borgs can do brain surgery again
code: improved multitool & general tool code for some machines
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-07-03 15:47:18 -07:00
MrMelbert
4aa7bae77a Moves tool use back higher in the chain, but makes it so tool acts are only called on non-combat-mode (#84083)
## About The Pull Request

### Dilemma 

So we've been running into a dilemma recently as we move more and more
items over (#84070, #83910)

Some things like modsuits, tables, washing machines, storage items want
to do their tool acts before their item interactions

In the past this was perfectly fine, because it was `tool_act` ->
`attack`, but now it's a problem, because it's `item_interaction` ->
`tool_act` -> `attack`.

Rather than resort to snowflaking, my idea is that we can move tools
back up the chain so deconstruction and other similar effects are
handled first, before anything else like putting the tool onto the
table.

### So why does it require non-combat-mode?

A large amount of tool acts early return if the user's on combat mode to
allow the user to smack the thing instead of using the tool on it. So
I've decided to walk back on what I said like a week ago and make this
standardized behavior.

### Misc

Reintroducing `tool_act` as a proc that exist means that atoms can
easily hook certain interactions that must happen very high in the click
chain, such as doing something that block storage insertion. Moves some
of the behaviors I put on the (admittedly rather hacky) new proc to
that.

(Also cleaned up a bit of lockbox and medbot code)

## Changelog

🆑 Melbert
fix: Fixed modsuit interactions slightly. No longer requires combat mode
to use tools on it, plasma core works as intended as well. (Using combat
mode, however, will make you insert the item)
refactor: Refactored lockboxes
refactor: Refactored medbot skin application
/🆑
2024-06-28 16:18:50 -06:00
necromanceranne
044e2cebce Fixes head protector modules doing...nothing (#84346)
## About The Pull Request

The head protector module actually applies the trait appropriately.

## Why It's Good For The Game

Apparently head protection started at the hands.

## Changelog
🆑
fix: Headprotector modules and constructor modules work properly once
more.
/🆑
2024-06-26 23:52:28 -04:00
Watermelon914
0db2a23faf Adds a new power storage type: The Megacell. Drastically reduces power cell consumption/storage. [MDB Ignore] (#84079)
## About The Pull Request
As the title says. A standard power cell now only stores 10 KJ and
drains power similar to how it did before the refactor to all power
appliances.

The new standard megacell stock part stores 1 MJ (what cells store right
now). APCs and SMESs have had their power cells replaced with these
megacell stock parts instead. Megacells can only be used in APCs and
SMESs. It shouldn't be possible to use megacells in any typical
appliance.

This shouldn't change anything about how much 'use' you can get out of a
power cell in regular practice. Most should operate the same and you
should still get the same amount of shots out of a laser gun, and we can
look at expanding what can be switched over to megacells, e.g. if we
want mechs to require significantly more power than a typical appliance.

Thanks to Meyhazah for the megacell icon sprites.

## Why It's Good For The Game
Power cell consumption is way too high ever since the power appliance
refactor that converted most things to be in joules. It's a bit
ridiculous for most of our machinery to drain the station's power supply
this early on.

The reason it's like this is because regular appliances (laser guns,
borgs, lights) all have a cell type that is identical to the APC/SMES
cell type. And it means that if we want to provide an easy way to charge
these appliances without making it easy to charge APCs/SMESs through a
power bug exploit, we need to introduce a new cell type to differentiate
between what supplies power and regular appliances that use power. This
is primarily what the megacell stock part does.

This moves us back to what it was originally like before the power
refactor, where recharging power cells wouldn't drain an exorbitant
amount of energy. However, it maintains the goal of the original
refactor which was to prevent people from cheesing power generation to
produce an infinite amount of power, as the power that APCs and SMESs
operate at is drastically different from the power that a regular
appliance uses.

## Changelog
🆑 Watermelon, Mayhazah
balance: Drastically reduces the power consumption and max charge of
power cells
balance: Added a new stock part called the battery, used primarily in
the construction of APCs and SMESs.
add: Suiciding with a cell/battery will shock you and potentially dust
you/shock the people around you if the charge is great enough.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
2024-06-25 00:32:19 +00:00
necromanceranne
22735f1b5f Fixes the Infiltrator Module not having the correct welder protection and not adding the correct traits, improves welding protection defines. (#84240)
## About The Pull Request

The Infiltrator module provides the same welding protection as the
welding protection module, which it is not compatible with but is meant
to be analogous with.

The module properly adds the traits it is meant to add on activation.

Updates the definitions for the welding flash protections so that they
are more clear as to what they mean.

## Why It's Good For The Game

https://github.com/tgstation/tgstation/pull/84112 added higher
protections to the engineering module, but did not update the
Infiltrator module which also provides this protection. Easy mistake.

The module was not correctly adding the head protection trait is meant
to be providing. This resolves that.

The definitions were still not clear as to what level of protection they
were supposed to provide. There is an arbitrary value of protection
level in the game, there is no way to get a 'maximum' value.
2024-06-24 16:40:47 -05:00
grungussuss
10d1740c94 MODsuit welding module protects flash-sensitives from flashes (#84112)
## About The Pull Request
```php
desc = "A module installed into the visor of the suit, this projects a \
polarized, holographic overlay in front of the user's eyes. It's rated high enough for \
immunity against extremities such as spot and arc welding, solar eclipses, and handheld flashlights."
```
## Why It's Good For The Game
This module projects a screen on the inside of the MODsuit, why would it
not protect flash-sensitives.
## Changelog
🆑 grungussuss
fix: Welding protection module for MODsuits protect flash-sensitives
from welding arcs
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2024-06-20 18:47:33 +01:00
SyncIt21
b6369a47b4 Mouse drag & drop refactored attack chain (#83690)
## About The Pull Request
Mouse drag & drop has been refactored into its own attack chain. The
flowchart below summarizes it

![Flowchart](https://github.com/tgstation/tgstation/assets/110812394/d92047ff-d94c-44a6-9e87-354c3d525021)

Brief summary of each proc is as follows

**1. `atom/MouseDrop()`**
- It is now non overridable. No subtype should ever touch this proc
because it performs 2 basic checks
  
a) Measures the time between mouse down & mouse release. If its less
than `LENIENCY_TIME`(0.1 seconds) then the operation is not considered a
drag but a simple click

b) Measures the distance squared between the drag start & end point. If
its less than `LENIENCY_DISTANCE`(16 pixels screen space) then the drag
is considered too small and is discarded

- These 2 sanity checks for drag & drop are applied across all
operations without fail
  
**2. `atom/base_mouse_drop_handler()`**
- This is where atoms handle mouse drag & drop inside the world. Ideally
it is non overridable in most cases because it also performs 2 checks
- Is the dragged object & the drop target adjacent to the player?.
Screen elements always return true for this case
  
- Additional checks can be enforced by `can_perform_action()` done only
on the dragged object. It uses the combined flags of
`interaction_flags_mouse_drop` for both the dragged object & drop target
to determine if the operation is feasible.
     
We do this only on the dragged object because if both the dragged object
& drop target are adjacent to the player then `can_perform_action()`
will return the same results when done on either object so it makes no
difference.

Checks can be bypassed via the `IGNORE_MOUSE_DROP_CHECKS` which is used
by huds & screen elements or in case you want to implement your own
unique checks

**3. `atom/mouse_drop_dragged()`**
- Called on the object that is being dragged, drop target passed here as
well, subtypes do their stuff here
- `COMSIG_MOUSEDROP_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc

**4. `atom/mouse_drop_receive()`**
- Called on the drop target that is receiving the dragged object,
subtypes do their stuff here
- `COMSIG_MOUSEDROPPED_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc

## Why It's Good For The Game
Implements basic sanity checks across all drag & drop operations. Allows
us to reduce code like this


8c8311e624/code/game/machinery/dna_scanner.dm (L144-L145)

Into this

```
if(!iscarbon(target))
	return
```

I'm tired of seeing this code pattern `!Adjacent(user) ||
!user.Adjacent(target)` copy pasted all over the place. Let's just write
that at the atom level & be done with it

## Changelog
🆑
refactor: Mouse drag & drop attack chain has been refactored. Report any
bugs on GitHub
fix: You cannot close the cryo tube on yourself with Alt click like
before
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2024-06-13 13:28:41 -07:00
Jeremiah
526151c9ad Fixes two alt-click behaviors [no gbp] (#83898)
## About The Pull Request
You can now alt click mod suit bags and extinguishers while resting
Adds screentips to extinguishers

## Why It's Good For The Game
Fixes #83896
2024-06-13 12:55:49 -05:00
MrMelbert
ff6b41aa07 Afterattack is dead, long live Afterattack (#83818)
## About The Pull Request

- Afterattack is a very simple proc now: All it does is this, and all
it's used for is for having a convenient place to put effects an item
does after a successful attack (IE, the attack was not blocked)


![image](https://github.com/tgstation/tgstation/assets/51863163/1e70f7be-0990-4827-a60a-0c9dd0e0ee49)

- An overwhelming majority of afterattack implementations have been
moved to `interact_with_atom` or the new `ranged_interact_with_atom`

I have manually tested many of the refactored procs but there was 200+
so it's kinda hard

## Why It's Good For The Game

Afterattack is one of the worst parts of the attack chain, as it
simultaneously serves as a way of doing random interactions NOT AT ALL
related to attacks (despite the name) while ALSO serving as the defacto
way to do a ranged interaction with an item

This means careless coders (most of them) may throw stuff in afterattack
without realizing how wide reaching it is, which causes bugs. By making
two well defined, separate procs for handing adjacent vs ranged
interactions, it becomes WAY WAY WAY more easy to develop for.

If you want to do something when you click on something else and you're
adjacent, use `interact_with_atom`
If you want to do something when you click on something else and you're
not adjacent, use 'ranged_interact_with_atom`

This does result in some instances of boilerplate as shown here:


![image](https://github.com/tgstation/tgstation/assets/51863163/a7e469dd-115e-4e5b-88e0-0c664619c878)

But I think it's acceptable, feel free to oppose if you don't I'm sure
we can think of another solution

~~Additionally it makes it easier to implement swing combat. That's a
bonus I guess~~

## Changelog

🆑 Melbert
refactor: Over 200 item interactions have been refactored to use a
newer, easier-to-use system. Report any oddities with using items on
other objects you may see (such as surgery, reagent containers like cups
and spray bottles, or construction devices), especially using something
at range (such as guns or chisels)
refactor: Item-On-Modsuit interactions have changed slightly. While on
combat mode, you will attempt to "use" the item on the suit instead of
inserting it into the suit's storage. This means being on combat mode
while the suit's panel is open will block you from inserting items
entirely via click (but other methods such as hotkey, clicking on the
storage boxes, and mousedrop will still work).
refactor: The detective's scanner will now be inserted into storage
items if clicked normally, and will scan the storage item if on combat
mode
/🆑
2024-06-11 21:58:09 -07:00
EnterTheJake
bfd539e9a0 The Syndicate MODs are now resistant to batons knockdown. (#83510)
## About The Pull Request

Adds a new Module preinstalled into the nukie suits, and purchasable in
the uplink, grants resistance to batons knockdown.

## Why It's Good For The Game

At the last coderbus meeting, i personally asked to Fikou and Mothblocks
for more baton counters to be introduced, they seemed to be ok with the
idea, so here we are.

Introduces an unremovable module which grants to the wearer resistance
to baton knockdown, it comes preinstalled in all syndicate modsuits.

With the fix of "rest to prevent disarm", stun batons have gotten even
more powerful than they once were, and while i do agree secret kinda
abusable tech is bad for the health of the game, the end result is that
the stun meta is even more prominent than ever, so it's a good time
introduce a small counter to it.

From a thematic perspective, Syndie suits should at least make people
feel afraid, which is hard to do when a single prod from a stun stick
will make you drop like a sack of potatoes, lose your desword and get
slashed to bits.

On the gameplay side, wearing one of these will make you a target for
the entire station, if a traitor is willing to expose themselves, or in
the case of nukies, forced to; they should probably have a small edge on
what's the most common tool used to stop them.

Keep in mind that this only prevents the knockdown, it does nothing for
the stamina damage, you'll still get stamcritted in a couple of hits,
nothing changes on that front.

This is merely to prevent a scenario where a single baton hit will
immediately lose you a fight.

## Changelog

🆑
add: adds the MOD shock-absorption module, into the game.
add: The MOD shock-absorption module into the the uplinks, costs 4 TC.
balance: Nukie modsuits come with the shock_absorption module
preinstalled.
/🆑
2024-06-10 17:49:49 +02:00
necromanceranne
c1c43711f3 Mining armor and suit storage cleanup/generalization/modernization (#83437)
## About The Pull Request

### Suit Storage

Makes the suit storage of the various suits consistent across one
another. Now, all the mining suits use a single list which is easier to
maintain.

**The affected suit list is as follows;**

Explorer Suits (and therefore Syndicate Explorer Suits), Goliath Cloaks,
Bone Armor, Drake Armor, Godslayer Armor, Berserker Armor, Mining
MODsuits, H.E.C.K. Suit.

**The list of holdable items is as follows;**

Flashlights, Proto-Kinetic Accelerators, Advanced Mining Scanners /
Mining Scanners, Pickaxes, Upgraded Resonators / Resonators, Ore Bags,
Air Tanks, Spears, special monster organs like Regenerative Cores,
Knives, Proto-Kinetic Crushers, Cleaving Saws (the one that Blood-Drunk
Miners drop), Grappling Guns and Climbing Hooks.

~~It probably doesn't matter too terribly much because you know only air
tanks are going in that slot 95% of the time~~

### Bone Armor and Goliath Cloaks

Bone armor and goliath cloaks both have the same armor values,
environmental protections and coverage as the explorer suit (bone armor
includes the feet due to the sprite physically covering the feet, which
is not a terribly significant balancing point but worth mentioning).

They use the armor plate component to improve the parts of bone armor.
However, they use bone talismans instead of goliath hide to be upgraded.

Goliath cloaks come fully upgraded. You'll see why in a second.

Their recipes are slightly different. Goliath cloaks take nine hides
(I'm so sorry this is for consistency I promise you can't use the
upgrade system with something that deletes its own armor values like
this) and three sinew. Bone armor takes three goliath hides and 6 bone.

### Berserker Armor

Berserker armor can now be improved to the same armor value as drake
armor by using a full suit on both the body and the helmet of the
berserker armor. (Each drake makes two suits, so you need to use up both
suits).

Instead of an armor boost, rage now halves incoming brute damage. Fuck
you, Bubblegum!

### Minor Mining MODsuit Tweak and other armor value changes

The base value for the armor is now 20, rather than 15, so that when it
reaches max ash accretion it has equivalent armor to a fully upgraded
explorer suit. This is only a value difference of 5, but it always
annoyed me seeing it.

All the above mentioned suits also now have a value of about 10 wound
armor. This is because miners do actually experience wounding on
lavaland. Some of the armors had this wound armor. Some didn't. Now they
all do. I don't believe this to have been a deliberate design choice,
but rather, an oversight. Iunno, someone who keeps track of this please
tell me otherwise.

Upgraded suits get a prefix to show they are upgraded. Now, never doubt
whether the miner you are fighting is in a baseline explorer suit or a
riot suit level improved explorer suit ever again!

### Berserker Armor actually covers up clothing/hair underneath properly
and other minor stuff

This is why I started this PR by the way. This one fix. I expand the
scope of my horizons so broadly when I really sit down and PR, don't I?

H.E.C.K. and Berserker helmets can be used for internals. 

## Why It's Good For The Game

There is a great deal of inconsistency with regards to the various
lavaland armor you can find and use. Some armors were wildly inferior to
others and only really having value for aesthetic. Some just seemed to
have oversights that didn't seem quite right. And most importantly, the
actual storage list for mining suits in general were not only
inconsistent in of themselves, but were also not being updated as time
goes on.

Bringing them all into line allows for miners to have a bit of freedom
of choice when it comes to appearance, without it becoming a balancing
sticking point nor a detriment to their effectiveness. It is also much
easier to maintain one list than six or seven lists.

Assuming that the baseline of the explorer suit is a-okay for someone to
possess, goliath cloaks and bone armor should now feel more like
fashionable choices rather than, in some cases, being either a worse or
better choice to take (its bone armor, bone armor is the best of these,
its really good generalist armor). I don't care what effect it has on
the ashlander economy. Neither should you.

The minor tweaks and fixes are just stuff that annoyed me for autism
reasons or were oversights due to changes to the items in question or
the game around it. I doubt anyone but me cares very much about these
minor differences, but I like consistency.

## Changelog
🆑
balance: The various mining related suits now have consistent suit
storage. Try putting a knife into your explorer suit's suit storage
today!
balance: Bone armor work similarly to explorer suits, with similar armor
values and options to upgrade their parts. However, they use bone
talismans instead of goliath hides to upgrade. Magic? Just believing
really strongly that the drake is hitting you slightly less hard because
of the talismans? You be the judge.
balance: Goliath cloaks come fully upgraded. However...
balance: The recipes for bone armor and goliath cloaks are slightly
different. Particularly goliath cloaks, which need a lot more dead
goliaths to make. Sorry.
balance: Mining MODsuits achieve at maximum ash accretion the same
amount of melee armor as an upgraded explorer suit.
balance: These various suits also consistently have wound armor.
fix: Berserker armor properly hides underclothing and hair.
balance: Berserker armor pieces can absorb drake armor to gain their
enhanced protection. Become the warrior of Khorne you've always wanted
to be.
balance: Berserker rage now halves brute damage rather than just adding
Melee Armor to you and your squishy body.
qol: Berserker and H.E.C.K. helmets can be used for internals.
/🆑
2024-06-01 23:48:52 +02:00
FlufflesTheDog
2e3a90293d Dehardcoded modsuit fixes (#83425)
## About The Pull Request
Patches up some things that were lacking post #82905
- Some missing (un)seal messages
- a missed direct use of the mod_parts list
EDIT: Also fixes the modsuit painter, and makes sure modsuits can still
be set to use custom dmi files via
`MOD_ICON_OVERRIDE`/`MOD_WORN_ICON_OVERRIDE`
Fixes #83442
## Changelog
🆑
fix: some missing modsuit (un)sealing messages should no longer be
missing
fix: MOD circuit adapter core deployed parts output should work again
fix: Modsuit painter works again
/🆑
2024-05-28 14:32:28 +02:00
Fikou
49dccad3a0 unhardcodes modsuit parts (#82905)
## About The Pull Request

see #70061 but i almost finished it, i only need to go through every
single module and assign it a fitting part

## Changelog
🆑
refactor: modsuits have been refactored if you see bugs report them 
fix: admin cargo tech modsuit outfit now works correctly
/🆑

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2024-05-19 22:03:59 -07:00
paganiy
79ca00076b Adminmod now has radiation protect module (#83040)
## About The Pull Request
Adminmod now has radprotect module 
## Why It's Good For The Game
It’s kind of annoying to heal yourself every minute when you’re
experimenting with a tritium or a supermatter on a local server, so
radprotect module fixes this issue
## Changelog
🆑
qol: Admin modsuit now has a radiation protect module
/🆑

Co-authored-by: paganiy <leunscrupuloustrolle@gmail.com>
2024-05-05 15:24:46 +02:00