Commit Graph

1786 Commits

Author SHA1 Message Date
Hatterhat
0ff75d301e SKS interaction tweaks and bolt-action rifle interaction fix (#89760)
## About The Pull Request
The SKS was repathed to the bolt rifle subtype in order to make it not
eject its entire magazine, and to make it act more like its real
counterpart (e.g. you have to keep the bolt open/locked back in order to
load more ammo).

Also fixes the issue where bolt-actions' interaction blocking was
non-functional due to being moved to a different proc, so now you need
to open the bolt on bolt-actions (and now the SKS) to load ammo.)

## Why It's Good For The Game
Ejecting your entire magazine on-use kind of sucked. The
bolt-open-to-load thing is for funsies.

## Changelog

🆑
fix: The Sakhno SKS no longer ejects its entire internal magazine upon
interaction. To facilitate this, it now requires the bolt to be open
like its bolt-action contemporaries in order to load ammunition.
fix: You can no longer force ammunition into Sakhno precision rifles and
other bolt-action-likes through a closed bolt.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-03-07 19:49:56 +01:00
SmArtKar
7f15e11993 Adds a new syringe gun mode and improves foam darts. (#89510)
## About The Pull Request

This PR implements multiple new features:

Foam darts now can stick to people as long as their cap isn't removed.
Riot foam darts have a chance to jostle when you move with one stuck
inside of you, dealing a bit of stamina damage from the weight stuck to
your limbs.

Syringe guns received a second "low power" mode, toggleable with in-hand
right click. In this mode, syringes fired will embed into their target
and slowly leak their reagents instead of instantly delivering them.
Thankfully, they can be plucked out pretty quickly.

You can also insert syringes into uncapped (screwdriver-ed) foam darts
(similarly to pens) to achieve the same result, allowing you to get a
bootleg low-efficiency syringe gun.

Additionally, I fixed/cleaned up some embedding issues/code which I
found while coding this.

## Why It's Good For The Game

This allows players to explore new funny interactions between items and
chems, as we don't have a reliable slow release mechanism aside from IV
drips currently. And foam darts embedding it just (mostly) harmless
fluff, if someone figures out a way to cause havoc with it then I'll be
very proud of them (someone totally will).

## Changelog
🆑
add: Foam darts now stick to people when they have their cap on, riot
foam darts also can passively deal a bit of stamina damage when you move
with one.
add: Syringes can be inserted into foam darts, making them embed and
slowly leak their reagents into their victim.
add: Syringe guns can be toggled (with right click) between high power
and low power modes, former being their normal functionality and latter
making syringes embed and slowly leak their contents.
fix: Fixed projectiles sometimes not embedding when they should've
code: Cleaned embedding code up
/🆑
2025-03-01 22:52:19 +11:00
Hatterhat
06f4a78b58 Separates fire delay into burst delay and fire delay (#89634)
## About The Pull Request
Guns now have two variables affecting delay between shots;
`burst_delay`, which affects how fast projectiles are fired *in* a burst
(assuming the weapon is burst-capable) and `fire_delay`, which affects
how long a gun cannot fire after shooting.

Assuming that all fire delays for automatic weapons were actually meant
for controlling burst delays, variables have been changed accordingly.

## Why It's Good For The Game
Separating burst delay and fire delay means burst-firing weapons can now
be balanced both on "how fast can I throw bullets downrange" *and* "how
long do I have to wait between bursts" instead of having one variable
affecting both.

## Changelog

🆑
code: Guns now have burst delay and fire delay variables instead of fire
delay affecting both. If a weapon's burst feels off, please submit an
issue report.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-02-26 12:52:50 +01:00
necromanceranne
4972c88044 Partially reverts #87936; the mech PKA AOE only harms mining mobs, reduces the damage and increases the attack cooldown (#89619) 2025-02-25 12:01:17 +01:00
SmArtKar
894d21e64f Improves hitscan projectile chunking (#89616)
## About The Pull Request

Hitscan projectiles that run out of dedicated tick time before they hit
anything abort their movement, ensuring that firing an emitter beam into
space won't cause horrible lag. However, most hitscans also have icons
and have visible (albeit unanimated) movement in such a case, making it
look like projectile code is exploding as tracers appear only after a
rather visible and tangible projectile hits its target.

This PR resolves the issue by making hitscans "chunk" their trails in
such cases, ensuring that they always look like actual hitscans. Video
below has an artificial speed cap on hitscans, to showcase how it'd look
during extreme lag.


https://github.com/user-attachments/assets/eeac034d-d08e-45b0-b7d2-8589376f1c7d

Also some minor hitscan code improvements because I can.

## Changelog
🆑
fix: Hitscan projectiles like emitter beams should look less weird
during extreme lag spikes
/🆑
2025-02-23 10:14:24 +01:00
necromanceranne
0619c2a21c Replaces the surplus rifle from the gang mode era with the Sakhno SKS semi-automatic rifle (#89453)
## About The Pull Request

No. Not the Sakhno M2442 Army. It isn't the Sakhno Precision Rifle. I'm
talking about the dinky shitty rifle you find in the snow resort away
mission. The one with a 3 second cooldown between shots and fires 10mm.

The Sakhno SKS semi-automatic rifle fires at the same rate as standard
semi-automatic weapons, and fires .310 Strilka caseless rounds. It has a
x0.5 damage multiplier (so does 30 damage rather than 60 damage per
shot), and has 10 rounds in its internal magazine. Stripper clips come
in sets of 5, so you'll need two clips to fully load the rifle.


![image](https://github.com/user-attachments/assets/5de3752f-a664-4c8f-8d44-9f3ea6a3d8d1)

You can get the Chekhov version of the weapon from the resort, but you
can also acquire a parts kit from the black market. Put together with a
stock and receiver, you get yourself a (empty) fresh new SKS. You can
also acquire the ammo via the black market as well.


![image](https://github.com/user-attachments/assets/d5af5abd-3dba-463d-81dd-402291f534b6)

## Why It's Good For The Game

This gun is a travesty. It is so ancient that it can be carbon dated to
around when our codebase was moved to Github. It actively has the worst
statistic of any weapon in the game. And it exists in this strange
half-existence in a ruin as, I guess, some purpose that is barely
understood or remembered today.

The irony of it being called Chekhov's gun yet finding no functional use
in the map is either the joke itself, or a failing of the map.

Anyway, so I decided to go all out and replace it with an SKS. Because I
figured someone would like that.

## Changelog
🆑
add: Replaces the 10mm semi-automatic surplus rifle with the Sakhno SKS
semi-automatic rifle.
add: You can acquire a SKS parts kit from the black market.
/🆑
2025-02-21 14:25:42 +00:00
necromanceranne
b61a67b7c6 Gives the Sakhno Precision Rifle and Sakhno M2442 Army a wooden finish rather than olive drab (#89556) 2025-02-20 03:22:52 -05:00
SmArtKar
2b44bffdeb Adds The Liberator: Doorhickey Corporation's brand new gun (#89495)
## About The Pull Request

The Liberator is a brand-new 3D printable gun, holding a single 10mm
shot in it's barrel. It has a damage multiplier of x0.5, dealing 20
damage per shot. However, shooting someone point blank gives it an x2
modifier, and shooting someone while holding them at gunpoint adds
additional x1.5 multiplier.


https://github.com/user-attachments/assets/b27adf1a-5b02-4817-90ad-2ba922cc6bf9

They can be printed for dirt cheap 3 sheets of plastic and 2 sheets of
iron from an autolathe. However, as a downside, whenever you're firing a
liberator you're risking it blowing up in your hands, potentially
wounding you! Reloading is also a bit tricky, since you need to unscrew
the barrel before placing the bullet in, and screwing it back on.

In order to print them, you'll need to find a (mildly rare) disk in
maintenance and upload the design to an autolathe. You also can find a
whole gun, albeit at a lower chance.

## Why It's Good For The Game

Funny gun that can be used for some gimmicks, not too overpowered but a
nifty tool for assistants. Can be countered by a well timed baton, or a
shove if your opponent is next to a wall.

## Changelog
🆑
add: Added a new 3D printable gun "The Liberator", you can find the gun
itself or its design disc in maintenance tunnels.
/🆑
2025-02-16 23:46:29 +00:00
_0Steven
5e186df1ac Fix emotion mask reskinning (#89389)
## About The Pull Request

Sooooo I recently noticed emotion masks wouldn't actually change their
skin upon reskinning, even though the reskinning went through
successfully.
Looking into it, I found it's because in a recent pr we added an
`update_appearance()` call to the reskinning procs, while masks reset
their `icon_state` during that line of calls:

80d3d8a230/code/modules/clothing/masks/_masks.dm (L53-L55)
Meaning, the emotion mask would never actually reskin properly.

So in this pr we instead make this `update_icon_state()` proc prioritise
`base_icon_state`, and make reskinnable masks use
`unique_reskin_changes_base_icon_state = TRUE`.
We also change a similar odd implementation of this in
`/obj/item/gun/ballistic/update_icon_state()`:

80d3d8a230/code/modules/projectiles/guns/ballistic.dm (L203-L208)
To just use `unique_reskin_changes_base_icon_state = TRUE` instead of
awkward usage of `unique_reskin[current_skin]` on an otherwise
duplicated line.

This fixes our issues.
## Why It's Good For The Game

Good if stuff works
## Changelog
🆑
fix: Emotion mask reskinning works properly
/🆑
2025-02-15 10:50:01 +01:00
necromanceranne
ad5a70eac6 Refactors gun repair and maintenance. Gun maintenance kits; available in cargo or the security equipment vendor (#89205)
## About The Pull Request

Misfire chance, gun jamming (currently only on boltaction rifles) and
integrity repairs are now handled by gun maintenance kits. Using a kit
on a gun resets any misfire chance or jamming, and restores the weapon's
integrity back to full.

You can find gun maintenance kits in security equipment vendors, or
order a crate of them from cargo.

You can also make a maint version to retain the improvised nature of the
previous cleaning functionaltiy.

## Why It's Good For The Game

Firstly, clearing misfires was always a little confusing for most
players, as it required a bolt of cloth to fix. That's really on me for
making that as confusing as possible.

We ended up with multiple firearm degradation mechanics, so
consolidating their restoration makes it easier for future code
maintenance.

I disliked that the kits existed but were mostly only for the sake of an
extremely niche interaction. And that interaction was, at best, kind of
niche. Expanding out their use to gun maintenance generally is honestly
better design.

## Changelog
🆑
refactor: Gun maintenance is now consolidated into a single item, the
gun maintenance kit, rather than multiple different item interactions.
It is handled on the maintenance kit itself, and not in gun code.
qol: You can order maintenance kits from cargo, and get some out of the
security equipment vendor. Helpful if someone spilled acid onto your
disabler. You can also make a makeshift one from maintenance trash.
/🆑
2025-02-06 18:30:13 -08:00
Penelope Haze
d0a7f955f8 Fix various issues with names in string interpolation (#89246)
## About The Pull Request
Commit messages should be descriptive of all changes.
The "incorrect `\The` macro capitalization" was intentional when it was
added, but as far as I know TG says "the supermatter" rather than "The
Supermatter," so it's incorrect now.
This is completely untested. I don't even know how you'd go about
testing this, it's just a fuckton of strings.
Someday I want to extract them and run NLP on it to catch grammar
problems...

## Why It's Good For The Game
Basic grammar pass for name strings. Should make `\the` work better and
avoid cases like `the John Smith`.
2025-01-29 17:46:03 +01:00
Penelope Haze
4c2a76ede3 Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to
variable names, but only the really egregious ones like "concious".
2025-01-28 22:16:16 +01:00
high-speedspin-cycle
4025b42a84 Fix kinetic accelerator cooldown mods becoming permanent (#88883)
## About The Pull Request

As described in issue #87019, the recharge time reduction given by
proto-kinetic accelerator cooldown modkits can become permanent,
resulting in a PKA with reduced cooldown without any mod capacity cost.
This PR ensures the recharge time is calculated based on the cooldown
kits actually installed, and recalculated whenever one is added or
removed.

## Why It's Good For The Game

Fixes #87019.

## Changelog
🆑
fix: Fixed PKA cooldown mods becoming permanent
/🆑
2025-01-15 13:12:05 +01:00
jimmyl
edc0a30893 MMIs in an odysseus get the medhud, medical beamgun works properly (#88891) 2025-01-08 22:44:49 +01:00
StaringGasMask
e43834548e Buffs the tesla cannon and makes it hitscan (#88929)
## About The Pull Request

The tesla cannon now shoots hitscan lightning bolts instead of the
extremely weak tesla orbs.
The damage of these bolts is 15, 5 of which is raw BURN damage, and 10
that comes from a shock, in a similar fashion to the 5 shock damage the
old iteration of the projectiles did.

## Why It's Good For The Game

(Hopefully) Makes one of the worst anomalocked items available into a
decent weapon that can compare, and possibly surpass the much more
widely available laser carbine.
For reference, this is hitscan, deals 50% more damage, but has 7 less
shots in the magazine, which I consider a fair gain due to the anomaly
core used.
Aditionally, I kept the functionality of dealing less damage to people
without full body insulation (which was the idea behind the shock
damage), although now it's no longer full immunity to this gun.

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

🆑
balance: The tesla cannon now fires hitscan lightning bolts with buffed
damage to non-insulated targets.
balance: Flux anomalies now have a limit of 5 per round, instead of 8.
/🆑
2025-01-09 07:08:34 +11:00
Hatterhat
6f10dc6bd8 Even More Magazine Miscellany - Pen Interactions, Stripes, Descriptions (#88930)
## About The Pull Request

![image](https://github.com/user-attachments/assets/dd4d2935-de64-4a23-8789-7ca17fe2d488)
The original purpose of this PR was to extend the previous Magazine
Miscellany PR by adding the ability to recolor magazine indicators if
they had a defined icon. This functionality is present by using a pen on
a magazine that has a defined ammo band icon state.

This PR also further standardizes magazines with different ammo types by
using a define to append their description and magazine color for AP
ammo, hollow-points, and incendiary ammo.

This PR also _also_ gives ammo indicator bands to the magazines for the
Stechkin APS and C-20r. And also gives descriptions to every magazine so
they're not using a placeholder that mentions error signs anymore. Each
description is roughly in the format of "caliber, suitable for gun". Not
sure if I should standardize magazine names to be "caliber and special
ammo type" - the only outlier I can think of right now for that would be
the 7mm ammo boxes for the L6.

## Why It's Good For The Game

Ammo stripes are neat, functionally, so changing the stripes on
magazines in case someone chooses to reload spent mags with autolathe
ammo is probably nice as a QoL thing. Descriptions that aren't
placeholders are pretty cool too.

## Changelog
🆑
add: Magazines with defined ammo bands can now have their color changed
with a pen, in case you're reloading spent magazines or speedloaders
with different ammunition and want to change magazine colors to be
appropriate.
qol: C-20r magazines and Stechkin APS magazines now have ammo band
support.
qol: Standardized some descriptions for AP, HP, and incendiary
magazines.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-01-08 11:57:19 +11:00
Hatterhat
81e1b149ee Magazine Miscellany (and a very small tidbit of gun examine QoL) (#88889)
## About The Pull Request
- Makarov magazines no longer have a placeholder description from the
base type.
- Standardized pistol magazines' descriptions and extended descriptions
for ammo types.
- Repathed the gangs-era surplus rifle's magazines (these still exist?
wow) from m10mm/rifle to /sr10mm so they no longer fit in Ansems.
- Ammo counts from examined guns are now bolded to be slightly easier to
notice at a glance.
- Magazines now show ammo count on a new line.

![image](https://github.com/user-attachments/assets/8a30a631-24fb-4d23-b2ca-895bfe24cbc3)


## Why It's Good For The Game
Makarov description being an obvious placeholder bugged me and then
things got out of scope.
The bold ammo count thing is really small but it might come in handy for
someone? Possibly?

## Changelog
Surplus rifle changes not mentioned in changelog because it's
unobtainable in-game and also just really bad as a gun in general.
🆑
qol: Examining a gun or magazine now shows the ammo capacity in bold.
spellcheck: Standardized pistol magazine descriptions, fixing Makarov
magazines having a placeholder description.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2025-01-06 03:22:43 +01:00
MrMelbert
586710e0d4 You can light a match on the heel of your boot (#88690)
## About The Pull Request

- Matches can be ignited with boots.
- Matches have a rare chance of failing to ignite (prompting you to try
again) or an even rarer chance of snapping (wasting it).
- Also makes ignition span use mostly-consistent (using rose span for
the "cooler" ignition effects).

## Why It's Good For The Game

You may be thinking "hey, matches won't light on just friction unless
they're from the 1800s", and you'd be right. But it's a cool movie
trope, which means it should be possible, I don't make the rules.

## Changelog

🆑 Melbert
add: You can light matches on the heel of your boots - Just don't do it
too hard.
/🆑
2025-01-06 03:16:59 +01:00
SmArtKar
3499727a6d Implements datumized embedding handlers in place of element-component-datum triad (#88511)
## About The Pull Request

This PR completely rewrites our embedding system in favor of embedding
datum handlers which acts as containers for all embedding-related data
and logic.

Currently embedding logic relies on an element-component-datum triad,
where elements on the items handle embedding logic, singleton datums
store embedding data and components (which get assigned to ***mobs*** in
whom the item embedded) handle pain and the item being ripped out. How
do we access all the procs? By using comsigs as procs, which is really
bad. This code was written back in 2020 when DCS was hot stuff but in
hindsight this implementation was a mistake, as it heavily restricts
custom embedding behaviors unless you're willing to constantly run
GetComponent (bad, ugly, incarnation of evil)

This PR rewrites all that logic to be handled by lazyloaded
``/datum/embedding``, which is stored similarly to current
``/datum/embed_data``. Upon being requested, it is initialized and
assigned to a parent from whom all the logic is handled, from being
embedded to pain and having the item ripped out. On projectiles this
only handles one proc, after which it copies itself down to the shrapnel
item instead and runs the chain further from there.
Ideally, most embedding-related logic now should be handled purely
datum-side - in most cases items should not be hooking up to themselves
like they did before (unless said logic is for when the item is made
sticky or smth) and instead the code should be handled by the embedding
datum (see sholean grapes implementation in this PR). This should allow
us to do fancy stuff like syringe guns embedding syringes into targets
and injecting them that way, and fix some bugs along the way.

Closes #88115
Closes #87946

Also fixed a bug with scars not displaying when examined closely from
#86506 because i was in the area anyways
2025-01-02 23:18:27 +00:00
_0Steven
bd0e2dc9b6 Fix quiver max_slots var not actually setting storage max_slots (#88731) 2024-12-27 21:45:57 +01:00
Hatterhat
42d80a5963 Fixes .357 Heartseeker not homing in on people (#88696)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2024-12-24 23:05:29 +00:00
necromanceranne
c1a180c35d Traitors can purchase weapon cases for the Makarov and Riot Toy Pistol. Basic ammo comes in ammo packs. Other stuff. (#88482)
## About The Pull Request

Makarovs and Donksoft Riot Toy Pistols now come in weapon cases. These
cases come with the gun, two spare magazines and a box of spare loose
ammo.

Basic ammunition for these guns come in case packs of three, with a
spare box of loose ammo. The basic ammo for Makarovs is slightly more
expensive.

Donksoft Toy Pistols from the uplink (and given to clown ops) now deal
substantially more damage. For riot darts, this goes from 25 to 35
stamina force. However, the case now costs 6 TC.

Makarov and Donksoft toy pistols have had their magazines increased by 4
bullets, for a total of 12. The Ansem is still at 8.

The pistol cases now have a unique sprite thanks to SmartKar.


![image](https://github.com/user-attachments/assets/e5726d45-47bc-405a-9d14-c68fd4cb95d5)

All included cases come with a disposal bomb built into the case. Use
Alt-Right-Click on the case to start the countdown, and stand back. Or
chuck it at someone you don't like.

## Why It's Good For The Game

>Makarovs and Donksoft Riot Toy Pistols now come in weapon cases. These
cases come with the gun, two spare magazines and a box of spare loose
ammo.

>Basic ammunition for these guns come in case packs of three, with a
spare box of loose ammo. The basic ammo for Makarovs is slightly more
expensive.

A long time ago, I proposed to a maintainer that maybe traitor weapons
should be bundled together with some starting ammo, to give them a
little bit of a necessary boost for longevity for their cost. This being
in a state of the game with only 20 TC and no way to get more. I thought
progtot may alleviate this issue somewhat, but I don't believe it has at
all.

I narrowed this down to just the Makarov and Toy Pistol as I think
they're the ones in need of help, and my reasoning is thus;

A) The TC value is extremely deceptive. 

The weapons themselves are not very good at doing anything without
additionally putting in more TC to load up on ammunition or support
equipment. While it does say 7 TC on the header for the Makarov, if you
want it to be silent, you have to spend more TC on a suppressor (3 TC).
Then, if you're not entirely sure that only 8+1 shots you get from the
beginning is enough to take out a target (maybe they're known to have
armor), then you may need to get either specialized ammo or additional
ammunition. At a certain point, it begs the question 'why didn't I just
buy the bigger stick and get more value out of my purchase as well as
more reliability?' Particularly since drawing heat probably means all
that TC is just going straight into more ammo, one way or another. Or a
bigger stick if you're doing side objectives, making that early purchase
redundant.

B) Whenever you look at either, I want you to consider. 'Could I get
better results by just getting a station weapon?'

The answer is almost universally 'yes'. Even some improvised weapons can
be more reliable. Even spending TC on getting that weapon (like C-4) is
miles more worthwhile than spending TC to get either weapon upfront.

C) It significantly overvalues autolathe access just to make the weapon
feel less like a ripoff. If the uplink can't in of itself justify using
the weapons, they're just flat out not good. and that's assuming players
even know to keep magazines.

It's just a bad value purchase and deceptive in just how expensive it
can end up to use them. The weapon is overshadowed by fairly comparable
items once you factor additional expenditures.

Even the toy pistol is a bad value purchase and it's literally just 2
TC, because the damage it does is dogshit. It's worse than a disabler.
It's worse than a sleepy pen for value to effect. It's so shit, people
put them on maps for free grabs. Let's resolve that with the following.

> Donksoft Toy Pistols from the uplink (and given to clown ops) now deal
substantially more damage. For riot darts, this goes from 25 to 35
stamina force. However, the case now costs 6 TC.

Subtle weapon, good, reliable damage. Fantastic for kidnapping at 40
damage. All without ever actually inflicting a real point of damage.
Great for clowns, great for pacifist tots. Decent deniability. Silicons
may have a harder time justifying an intervention. Genuinely a budget
tool that increases the value of any TC you put into it. Since it has so
much more value, this is why I've increased the price to offset this. It
is actually competing with similar tools well enough to not go too
overboard.

> Makarov and Donksoft toy pistols have had their magazines increased by
4 bullets, for a total of 12. The Ansem is still at 8.

Longevity is the only thing Makarovs seem to want to claim to have over
the revolver, and it isn't much more longevity from just the gun itself
(7 bullets on the revolver compared to 8+1 on the pistol). If we're
talking real longevity, and particularly if you're considering getting a
silencer, than the ebow is literally 3 TC more expensive, silent, and
has endless ammunition with high damage output.

You still need to dump a lot of TC into the Makarov to satiate its ammo
needs if you happen to be skirmishing a lot. By comparison, just getting
a single laser can often times do a much better job at skirmishing than
the tot with a Makarov can. And do comparable damage no less. From
experience, I've always done better with lasers than the Makarov.

Making it more directly able to maintain a good ammo count during a
fight hopefully makes the Makarov feel more like a value purchase for
what I think should be its strength. Staying power and the ability to be
aggressive with ammo expenditure. Particularly against larger numbers,
which traitors are almost always expected to go up against. If those
opponents have lasers, the Makarov just always gets outgunned by an
absurd amount (lasers on their own have like 16 shots, so you can do the
math if there are even two people with a laser each).

Simply put; let's not make make tots feel like a dumbass for not just
getting a laser themselves or buying a ebow to maintain firepower over
long fights, especially with rechargers usually being in pretty nicely
secluded locations for them to access.

## Changelog

🆑 NecromancerAnne (code), SmArtKar (sprites)
balance: Makarovs and Toy Pistols come in weapon cases. Complete with
spare ammo.
balance: Basic ammo for either weapon comes in weapon cases of three
extra magazines at an affordable price.
balance: Donksoft Toy Pistols from the uplink are much stronger than
their standard counterparts, but now priced at 6 TC.
balance: Makarovs and Toy pistols have a magazine capacity of 12 rounds.
balance: Gun/Ammo cases from the traitor uplink can be destroyed by
activating the disposal bomb. Press Alt-Right-Click on the case to start
the timer.
/🆑

---------

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2024-12-22 02:39:59 +01:00
SmArtKar
7c9cc84c72 Fixes mech KA AOE dealing full damage in pressurized environments (#88538)
## About The Pull Request
Technically applied to normal KAs too? Damage was not reduced on
on_range, so if you hit someone with the AOE blast at the end of
projectile's lifetime you'd deal full 80 bomb damage

## Changelog
🆑
fix: Fixed mech KA AOE dealing full damage in pressurized environments
/🆑
2024-12-18 02:54:10 +00:00
SmArtKar
02334afae5 Fixes c38 not misfiring when chambered in c357 (#88537)
## About The Pull Request
Closes #88535
what

## Changelog
🆑
fix: Fixed c38 not misfiring when chambered in c357
/🆑
2024-12-18 00:46:41 +01:00
SmArtKar
7ddc30783a Adds better attack animations and alternate attack modes (#88418)
## About The Pull Request

This is the first PR in a series attempting to modernize our damage and
armor, both from a code and a gameplay perspective. This part implements
unique attack animations, adds alternate attack modes for items and
fixes some minor oversights.

Items now have unique attack animation based on their sharpness - sharp
items are now swung in an arc, while pointy items are thrust forward.
This change is ***purely visual***, this is not swing combat. (However,
this does assign icon rotation data to many items, which should help
swing combat later down the line).

Certain items like knives and swords now have secondary attacks - right
clicks will perform stabbing attacks instead of slashing for a chance to
leave piercing wounds, albeit with slightly lower damage - trying to
stick a katana through someone won't get you very far!

https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1

Turns out that spears acted as oversized knives this entire time, being
SHARP_EDGED instead of SHARP_POINTY - in order for their animations to
make sense, they're now once again pointy (according to comment,
originally they were made sharp because piercing wounds weren't very
threatening, which is no longer the case)

Another major change is that structure damage is now influenced by armor
penetration - I am not sure if this is intentional or not, but attacking
item's AP never applied to non-mob damage.

Additionally, also fixes an issue where attack verbs for you and
everyone else may differ.
2024-12-17 12:35:52 -06:00
MrMelbert
ce6caf06c7 Reworks Tasers (doesn't give them back to Security though) Because Funny (#88347)
## About The Pull Request


https://github.com/user-attachments/assets/ef727913-6568-4705-91ca-330e7a1bb177


- Electrodes now have a physical representation in the form of a beam

- When you are hit with an electrode you will rapidly lose stamina while
the beam is attached

- The electrode, being physical, can be interacted with
   - If you are stun immune, you can resist to remove them
   - If you get out of range of them, they'll remove themselves
   - You can help intent on someone to remove them
- If someone runs into them, they will become tangled in them (being
partially stunned themselves, but removing them)

- Yes, this affects AI turrets. AI turret electrodes are stronger (they
do double the amount of stamina damage)
- Turret tasers will avoid tasing the same target for infinite time, and
will attempt to avoid tasing the same target

- Handheld tasers can be cancelled early by clicking on the target again

- Tasers will drain power as they continue to tase a target

## Why It's Good For The Game

Tasers are pretty one note so I thought it'd be cool to add some depth
to them while making them function more like... well... a taser.

<Details>

<Summary> Original idea behind this </Summary>

I had an idea, in that we could give security more specialized gear
setups (a la Goon) - putting stuff like tasers in a support weapon
position while batons sit in a "front line" position, then allowing
people to pick and choose at shift start

This way we could balance certain aspects of the security toolkit
(*cough cough batons*) while still allowing newer players to be
effective in a security position

As right now, if you want to contribute as a security officer, you
**have** to know your way around melee combat - lest you get disarmed
and owned, which is why it's so strong.

Buuuuut if newer players had the option to pick a primarily ranged
option (with its own strengths and weaknesses), or an option that is
most effective when paired with a friend, we could bring the baton
strength down accordingly.

</Details>

## Changelog

🆑 Melbert
balance: Tasers are now more realistic
del: Electrodes are no longer in the hallucination projectile pool
/🆑
2024-12-15 20:51:13 -08:00
necromanceranne
e9471b00b0 Adds the NT BR-38 Battle Rifle. A sci-fi hybrid gun, but better than the last attempt. Only SOMETIMES fails at existence. (#88095)
## About The Pull Request

A repeat of the first half of
https://github.com/tgstation/tgstation/pull/86853

The NT BR-38 Battle Rifle is a semi-automatic
railgun...marksman...carbine...rifle...thingy that uses .38 ammunition
and is magazine fed from a 15 round magazine. It comes with a scope, and
is bulky.


![image](https://github.com/user-attachments/assets/456aba07-ba0a-4ad3-993c-7fc2bc1395d6)

Sprites by OrcaCora.

### Some of its features

The gun shoots at a higher than normal velocity for .38. This means it
hits harder (30 damage compared to the standard 25), and flies faster
through the air.

The gun, however, suffers from degradation as it is used. It has a 10
shot buffer before suffering degradation. After the 10 shot buffer, it
has a 10% chance each shot to increase in degradation stage. From stage
1 to stage 5 (the maximum stage), it begins to lose fire rate and
projectile flight speed.

To recalibrate the gun, you can do one of two things; 
A) Use a multitool on the gun. This completely resets the gun, but its
pretty slow.
B) Insert it into a weapon recharger to recharge its buffer and reduce
its degradation stages.

### Some of its downsides

The weapon is EMP vulnerable. If it gets EMP'd, it immediately degrades
and loses any buffer it has. While EMP'd, there is a 75% chance it
doesn't fire when you pull the trigger. This is also true if the gun has
hit maximum degradation. Keep your guns in good shape.

It can be emagged. While emagged, the gun has increased damage (40 for
standard ammunition), but once it hits maximum degradation, it
immediately begins to catastrophically fail. It also degrades
significantly faster while emagged. There is no way to reverse this
effect, and the explosion is extremely lethal.

### Where can I find it? What about ammo?

You can purchase the gun from cargo at a significant premium, as well as
some additional magazines of some basic ammo types.

There is exactly one of these in the armory, and you can print more
magazines from the security protolathe. As research progresses, you can
print different, specialized ammunition for the rifle. (and also the
detective .38 revolver, obviously)

### New .38 ammunition types

True Strike bounces accurately between targets, but deals significantly
less damage than other ammo types (15 base, 18 in this rifle).

It is printed once the station gets Exotic Ammo.

## Why It's Good For The Game

This is a followup on my previous PR, where I tested this weapon and
gathered a whole bunch of feedback on it. Most people quite liked it.
but had some concerns that I feel this addresses.

Much of the justifications given there apply here. Obviously ignoring
anything to do with the combat shotgun removal.

Some stuff obviously has not come back from the original test. Notably,
the TRAC changes were probably a little too powerful. As much as I liked
a default entirely nonlethal ammunition type, TRAC itself is better left
as a late research goal.

In addition, I moved the explosion part to an emag effect. It's funny,
and lends itself to the original intention of the weapon; a callback to
the WT-550 incident. But it isn't a standard part of the guns mechanics.
2024-12-13 19:46:24 +00:00
FlufflesTheDog
4eaea4d78d Eradicates some obj/item overrides of /New (#88135)
## About The Pull Request
Removes some /New overrides, replacing them either with nothing because
they're entirely redundant or with more intuitive/consistent interfaces
## Why It's Good For The Game
Code consistency/readability, fixes an obscure potential-bug that would
delete non-implanted cybernetic implants that are a part of a
loadout/outfit, I'm being haunted by code from 2015 send help
## Changelog
Hopefully not player facing. Except this random thing I saw while I was
here.
🆑
spellcheck: paywall firing pins no longer set the gun description to the
pin's description on removal
/🆑
2024-12-06 23:42:06 +01:00
jimmyl
560d849e04 gatfruit shoots peas (#88051)
## About The Pull Request
basically #64128 slightly redone (with permission)

gatfruit now shoots peas; 
(injects assuming hit zone is unblocked and this assumes you havent
modified the plants reagent genes)
at 0 potency to god knows what potency a single pea (bullet) deals 5
brute and injects 1u of phytotoxins
at 50 potency it fires 10 brute and injects 15u of phytotoxin
at 100 potency it fires 15 brute and injects 30u of phytotoxin
phytotoxin is the Toxin chemical but with no liver damage, it is not
particularly strong but serves to recreate the original PRs 5 tox with
possibility of actually modifying that

![2024-11-20
17_04_00-Window](https://github.com/user-attachments/assets/4803f02a-d8a5-4acd-bc49-fd50959b4794)

upon peeling the fruit its reagents are spread among the revolvers 7
casings

also i attempted to make the revolver look more plant-like but im pretty
sure i screwed up

![image](https://github.com/user-attachments/assets/0e1b374d-0b8a-441c-b359-6c94298c6ad1)


## Why It's Good For The Game

a bullet of 357 deals 60 brute (not counting falloff (which i dont think
it gets) and armor)
there are 7 bullets of 357 in a revolver so 420 brute in 1 revolver, and
it basically takes 200 brute to kill someone outright if oxygen and
other damage doesnt do it first
at 10 yield (or whatever max yield is i cant really remember) thats 10
revolvers, so 10 x 420 so 4200 in a bag brute per harvest (again 200
brute if you decide to shoot until something dies so you can kill like
21 people if you dont miss in a single yield 10 harvest)
thats pretty busted for something you can achieve fast by making REALLY
easy chems after getting the seeds from exodrones or lavaland

with this change its still a viable weapon but not a supremely lethal
traitor weapon, and also enables some botany gaming if you make it
contain felinid mutation toxin or something

## Changelog
🆑
balance: A mutation in gatfruit seeds has led to a drastic alteration in
the observable traits of the plant, which now fires hardened peas that
deal less damage, but poison the target. Additionally, its poison can
be, with some botanical engineering, replaced with whatever you wish.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2024-12-06 23:18:55 +01:00
SmArtKar
bbb7a41743 Guncode Agony 4: The Great Projectile Purge (#87740)
## About The Pull Request
~~Kept you waitin huh!~~
The projectile refactor is finally here, 4 years later. This PR (almost)
completely rewrites projectile logic to be more maintainable and
performant.

### Key changes:
* Instead of moving by a fixed amount of pixels, potentially skipping
tile corners and being performance-heavy, projectiles now use
raymarching in order to teleport through tiles and only visually animate
themselves. This allows us to do custom per-projectile animations and
makes the code much more reliable, sane and maintainable. You (did not)
serve us well, pixel_move.
* Speed variable now measures how many tiles (if SSprojectiles has
default values) a projectile passes in a tick instead of being a magical
Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired
because it never had a right to exist in the first place. __This means
that downstreams will need to set all of their custom projectiles' speed
values to ``pixel_speed_multiplier / speed``__ in order to prevent
projectiles from inverting their speed.
* Hitscans no longer operate with spartial vectors and instead only
store key points in which the projectile impacted something or changed
its angle. This should similarly make the code much easier to work with,
as well as fixing some visual jank due to incorrect calculations.
* Projectiles only delete themselves the ***next*** tick after impacting
something or reaching their maximum range. Doing so allows them to
finish their impact animation and hide themselves between ticks via
animation chains. This means that projectiles no longer disappear ~a
tile before hitting their target, and that we can finally make impact
markers be consistent with where the projectile actually landed instead
of being entirely random.

<details>

<summary>Here is an example of how this affects our slowest-moving
projectile: Magic Missiles.</summary>


Before:


https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e

After:


https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915

</details>


<details>

<summary>And here is a much faster, and currently jankier, disabler
SMG.</summary>


Before:


https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348

After:


https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238

</details>

### But how will this affect the ~~trout population~~ gameplay?

Beyond improved visuals, smoother movement and a few minor bugfixes,
this should not have a major gameplay impact. If something changed its
behavior in an unexpected way or started looking odd, please make an
issue report.
Projectile impacts should now be consistent with their visual position,
so hitting and dodging shots should be slightly easier and more
intuitive.

This PR should be testmerged extensively due to the amount of changes it
brings and considerable difficulty in reviewing them. Please contact me
to ensure its good to merge.

Closes #71822
Closes #78547
Closes #78871
Closes #83901
Closes #87802
Closes #88073

## Why It's Good For The Game

Our core projectile code is an ungodly abomination that nobody except
me, Kapu and Potato dared to poke in the past months (potentially
longer). It is laggy, overcomplicated and absolutely unmaintaineable -
while a lot of decisions made sense 4 years ago when we were attempting
to introduce pixel movement, nowadays they are only acting as major
roadblocks for any contributor who is attempting to make projectile
behavior that differs from normal in any way.

Huge thanks to Kapu and Potato (Lemon) on the discord for providing
insights, ideas and advice throughout the past months regarding
potential improvements to projectile code, almost all of which made it
in.

## Changelog
🆑
qol: Projectiles now visually impact their targets instead of
disappearing about a tile short of it.
fix: Fixed multiple minor issues with projectile behavior
refactor: Completely rewrote almost all of our projectile code - if
anything broke or started looking/behaving oddly, make an issue report!
/🆑
2024-11-23 04:02:35 -08:00
Penelope Haze
b67a0901f2 Fix issues discovered via TypeMaker (#87596)
## About The Pull Request
Fixes issues with var typing and proc arguments, discovered using
OpenDream's WIP TypeMaker feature (using improvements I haven't PR'd
upstream yet).

## Why It's Good For The Game
Codebase maintenance.
2024-11-19 15:24:52 -05:00
EnterTheJake
15247f28f1 Arcmines The Clarke Exosuit + Tech node changes. (#87936)
## About The Pull Request

The Clarke Exosuit has received several adjustments to make it worth
using in the Arcmining era.

- Clarke no longer requires gold bars to be built.

- HP bumped from 200 to 250, melee armor bumped from 20 to 40.

- Clarke Ore storage module can now collect boulders and smelt them
internally.

- Exo mining scanners can now be used in proximity to a vent to start
the wave defense event.

- Mech Pkas now do more damage  and have the AOE upgrade preinstalled.

- Mech drills are now a utility module rather than a weapon.

- New Internal module unique to the Clarke, It's a rusty sleeper that
can be used to recover dead miners, but lacks the ability to inject
chems

- Fixed Mech sleepers not granting life support.

- Plasma cutters and Bluespace satchels tech nodes are no longer locked
behind experiments, but they are now discounted by them.

## Why It's Good For The Game

Ever since the inception of Arcmining, the Clarke Exosuit has fallen
from being niche to straight up irrelevant.

The Clarke sits in this weird spot, where, while not being roundstart
available, it is an effectively worse fit than your regular Shaft Miner
in all aspects of the job.

This PR aims to address this by making The Clarke able to be built even
if the miners are absent or haven't secured a haul, while making it
actually capable of interacting with the new elements introduced by
Arcmining.

**Arcmining Clarke and Improved Combat functionality**

The Mech mining scanner can now be used to trigger the vent wave
defense, The internal storage module can now collect boulders and
internally smelt them within the Clarke.

Video Demonstration: https://www.youtube.com/watch?v=gtsNK5JbI3o

The Clarke is now a more capable fighter on Lavaland, being a bit
beefier overall.

The mech Pka was also in dire need of some love. It being unable to be
upgraded made it frankly underwhelming at dealing with Vent defences.

I was considering just having PkA upgrades applicable to the mech itself
but ultimately decided against it in fear of having it become a problem
on the station.

Instead, I just went for a flat damage increase and have the AOE upgrade
come preinstalled to better deal with legion swarms.

Lastly The drill modules have been reworked to be utility modules
instead of weapons.

Frankly these shouldn't be weapons, they are nowhere near as valuable as
the cutter or the PKA and can't be used at all on moving targets due to
the long cost time.

**New Clarke Exclusive Internal Module: Mining Sleeper**


![image](https://github.com/user-attachments/assets/bf807ec7-57e0-4caf-a2ac-bbd70ccc44c0)


Just a bit of extra functionality to aid miners that have tragically
fallen, this sleeper is effectively a worse version of the Odysseus, it
can stabilize patients but cannot inject chems, I also fixed an issue
where Mech sleepers were not putting patients on life support like
regular sleepers do.

**Tech Node Changes**

This is not something super related to the Clarke in and on itself, but
I figured I might push my luck and try these anyway.

There is just no good reason as to why satchels and cutters should be
hard locked behind gas shells.

These experiments are fairly trivial, but have a huge impact on lowpop
as they usually force people to break into ordinance or the teleporter
room just so miners could get their basic tools.

The shells still exist but now grant a discount instead of hardlocking
tech, so there's still an incentive to do them.

ROCK AND STONE!

## Changelog

🆑
add: New internal sleeper module for the Clarke.
balance: Clarke Integrity has been bumped from 200 to 250 HP, melee
armor bumped from 20 to 40.
balance: Exo mining module can now be used to scan vents and begin the
wave defense event.
balance: The Clarke Ore Storage Module can now collect boulders and
internally smelt them.
balance: Mech Pka is now bundled within the Clarke tech node, it now
does more damage and comes with the AOE upgrade preinstalled.
balance: Exo mining drills are now a utility module rather than a
weapon.
balance: Applied Bluespace Research and Controlled Plasma tech nodes are
no longer hardlocked behind surveys, they instead favor from a discount
if they are completed.
fix: Fixes Exo Mech modules not granting life support to housed
patients.
/🆑

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-11-17 13:51:18 +00:00
carlarctg
31459b4883 Buffs the Anomalock modules (#87743)
## About The Pull Request

Significantly buffed the anomalock modules.

Anomalock modules can be used with eachother.

Antigravity module costs 2 complexity.

Teleporter module is thrice as fast at teleporting with a slightly
reduced cooldown, but has a much larger power cost.

Changed how teleporter tracks maximum range to be less painful to the
end user.

Kinesis module's default range has been extended to 8.

Kinesis module can drag around people in critical condition or worse.
## Why It's Good For The Game

These modules have historically been, well, kind of a complete joke.
They seem to have been crippled out of fear of them being overpowering
with the end result of being unusable.

Anomaly items are allowed and meant to be fun, strong, and wild, so I
really don't see why these need to be so weak. The amount of times I'd
rather make a teleporter that takes 3 seconds to get you anywhere
instead of an instant portal gun or a bag of holding is roughly zero.

People hate modsuits, and in part that hate is because of modules which
do very, very little due to severe undertuning. Let's fix that with the
anomaly ones here.

> Anomalock modules can be used with eachother.

Let people get a buncha anomaly modulse together if they want to. An
antigravity user with teleporting and kinesis could be something to
fear, but not so much as to strike it from existence altogether without
even letting people mess around with it first.

> Antigravity module costs 2 complexity.

Antigravity module is glorified wittel -> gravitum, but it takes a core
and 3 complexity. At least let it be somewhat cheap.

> Teleporter module is thrice as fast at teleporting with a slightly
reduced cooldown, but has a much larger power cost.

Teleporter module is a big damn joke ATM, as stated above being
effectively overshadowed in every way by the portal gun. This now gives
it a fun niche instead, of being able to teleport around everywhere at
the cost of a massive power draw.

> Changed how teleporter tracks maximum range to be less painful to the
end user.

view() was working weirdly when I was using it. It was failing to
register tiles somewhat near the end of the screen, so I just ditched it
for a get_dist check that I threw 9 in as a somewhat arbitrary value
for.

> Kinesis module's default range has been extended to 8.

There's this bug on live where when you kinesis someone it flies all the
way to the SW corner of the screen for seemingly no reason. I don't know
why it happens but it drives me mad.

Even without that bug, 5 tiles is extremely frustrating to handle - it's
super, super annoying to find a middleground between 'not slapping you
in the face', 'not losing your grip'. 8 tiles is a lot more forgiving
and makes the module actually fun to use.

> Kinesis module can drag around people in critical condition or worse.

This one might be a bit nuts, but I really want to see this ingame, it's
kind of the best part of the module yet is unobtainable. Maybe some
stuff would need to be tuned for it, like making human throws flimsy.
## Changelog
🆑

balance: Significantly buffed the anomalock modules.
balance: Anomalock modules can be used with eachother.
balance: Antigravity module costs 2 complexity.
balance: Teleporter module is thrice as fast at teleporting with a
slightly reduced cooldown, but has a much larger power cost.
code: Changed how teleporter tracks maximum range to be less painful to
the end user.
refactor: Refactored LoS checks to be a proc on atom, los_check
balance: Kinesis module's default range has been extended to 8.
balance: Kinesis module can drag around people in critical condition or
worse.
/🆑
2024-11-14 19:56:30 +01:00
SmArtKar
0b99107cc2 Guncode Agony 3: Projectile code cleanup (#87628)
## About The Pull Request

Massive cleanup/pseudo-refactor of projectile and projectile-adjacent
code. One letter variables, weird logic, some runtimes, all of that.
Atomized in a separate PR from the actual refactor so we don't end up
with a 5k line PR.

## Why It's Good For The Game

Makes the code possible to work with before I nuke pixel_move and kevinz
units™️
2024-11-03 21:46:13 +00:00
SmArtKar
c0c1074bb0 [NO GBP] Fixes some guns runtiming when attempting to reload (#87579)
## About The Pull Request

Closes #87567
Closes #87559

I have zero clue how this code worked during TMs or prior to my changes,
only sensible explanation I can come up with being that we had a
horrific hanging refs issue this entire time?

## Changelog
🆑
fix: Fixed some guns runtiming when attempting to reload
/🆑
2024-11-01 01:07:47 +01:00
Ghom
778ed9f1ab The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request
This PR kills the abstract internal and external typepaths for organs,
now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds.

This PR also fixes fox ears (from #87162, no tail is added) and
mushpeople's caps (they should be red, the screenshot is a tad
outdated).

And yes, you can now use a hair dye spray to recolor body parts like
most tails, podpeople hair, mushpeople caps and cat ears. The process
can be reversed by using the spray again.

## Why It's Good For The Game
Time-Green put some effort during the last few months to untie functions
and mechanics from external/internal organ pathing. Now, all that this
pathing is good for are a few typechecks, easily replaceable with
bitflags.

Also podpeople and mushpeople need a way to recolor their "hair". This
kind of applies to fish tails from the fish infusion, which colors can't
be selected right now. The rest is just there if you ever want to
recolor your lizard tail for some reason.

Proof of testing btw (screenshot taken before mushpeople cap fix, right
side has dyed body parts, moth can't be dyed, they're already fabolous):

![immagine](https://github.com/user-attachments/assets/2bb625c9-9233-42eb-b9b8-e0bd6909ce89)

## Changelog

🆑
code: Removed internal/external pathing from organs in favor of a bit
flag. Hopefully this shouldn't break anything about organs.
fix: Fixed invisible fox ears.
fix: Fixed mushpeople caps not being colored red by default.
add: You can now dye most tails, podpeople hair, mushpeople caps etc.
with a hair dye spray.
/🆑
2024-10-30 08:03:02 +01:00
SmArtKar
1cd662cc8c Magazines now lazyload their contents in order to save on gun init times (#87224)
## About The Pull Request
Ammo boxes, this includes magazines and magazines inside of guns, now
lazyload their ammo in order to save on init times by keeping it as
types in their ammo list and initializing them as needed. As a side
effect, you can only use get_round to access rounds now, direct array
access will probably not work.

## Why It's Good For The Game

trying to save on init times and delay death of guncode by a tiny bit

## Changelog
🆑
code: Magazines now lazyload their contents in order to save on gun init
times. Please report any broken/non-functional guns!
/🆑
2024-10-28 22:57:09 -07:00
grungussuss
f375249588 ballistics handling sounds try 2 (#87053)
## About The Pull Request
just trying to salvage https://github.com/tgstation/tgstation/pull/85603
mostly


https://github.com/user-attachments/assets/32f4634a-ff76-4a4e-9ddb-7607e1e7a2d0
## Why It's Good For The Game
more sound variety
## Changelog
🆑 grungussuss
sound: ballistics have new handling sounds
/🆑
2024-10-07 14:34:32 +02:00
SyncIt21
35d008dfab General maintenance for inducer (#86929)
## About The Pull Request
**1. Qol** 
- Adds examines & screentips for screwdriver act, inserting & removing
cell

**2. Code Improvements**
 - Autodocs & removes some unused/redundant vars
 - Corrects return values of `screwdriver_act()`
 
**3. Fixes**
- Fixes #85408. Charging is consistent with cell rating & scales for
higher tier cells
- Syndicate inducers now uses super batteries not cells so they have
higher charge
 
**4. Refactor**
- Moved attack chain to `item_interaction()` & `interact_with_atom()` &
removes a lot of procs to merge with this new attack chain
 

## Changelog
🆑
qol: adds extra examines & screentips for inducer
fix: inducer charging rate scales with cell rating
fix: syndicate inducers now have correct charge & batteries installed
refactor: inducer attack chain has been improved & redundant vars/procs
have been removed, report bugs on github
/🆑

---------

Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-10-06 18:27:40 +00:00
iwishforducks
d8615a5cd3 Returns the original Revolver look for traitors (#87039)
## About The Pull Request

Returns the original look of the revolver for traitors:

![srBs2K1fvz](https://github.com/user-attachments/assets/e1d7f569-e854-4762-ab08-59b0bcb74f60)
While still giving Nuclear Operatives the red-revolver:

![dreamseeker_guBVku71t9](https://github.com/user-attachments/assets/17f86e07-7387-48a1-93e8-5b3b7aeda997)
Re-flavors the red revolver to a "Badass Revolver" as well, so that it
helps differentiate it a bit more:

![dreamseeker_YrF52zMuWv](https://github.com/user-attachments/assets/bcf75096-a775-4971-846b-ef23ee0d50fd)

## Why It's Good For The Game

I always thought that the red "Syndicate Revolver" was way too on the
nose and dorky, especially for undercover agents. However, I thought
that dorkiness was a perfect fit for the Nuclear Operatives who love
painting all of their gear to be red and over-the-top badass looking.

## Changelog

🆑
image: Traitors now get the classic Revolver in their uplink. Nuclear
Operatives still keep the red look for their revolvers.
/🆑
2024-10-05 02:02:51 +02:00
Da Cool Boss
ac6231b432 Rebalances Donksoft vendors. (#86542)
## About The Pull Request
![!](https://i.imgur.com/bml0Ivn.png)
![!](https://i.imgur.com/TVDaHPa.png)
![!](https://i.imgur.com/p098Hd4.png)

Notable changes:
- Prices have been increased across the board. They're about on par with
the good clean fun vendor now.
- Less of each item. The machine will have to be restocked more often.
- Fake emags and fake hot potatoes are now avaliable.
- The ammo boxes are half-size boxes (20 darts) in the non-syndicate
vendor. Each foam dart costs 5 credits, and every riot dart costs 10
credits. The syndicate vendor sells the old size of boxes (40 darts) for
the same price, getting twice as many darts per credit.
- Syndicate balloon is now in the contraband section. There is only one
of them per vendor and they cost 999 credits.
- Replica space suits come in boxes now, instead of the parts being
bought seperately.
- All toy guns bought from the syndicate vendor are loaded with riot
darts.
- No more discounts for service jobs. Everyone pays the full price.

## Why It's Good For The Game
The current vendor isn't balanced very well, the pricing is a
placeholder and the vast amounts of gear in them make them a
destabilizing element when it makes its way on station. Spawning a lot
of high-end riot dart guns is easy, and the fact that this has 5
syndicate balloons with a value of 20 telecrystals avaliable for
effectively free is simply absurd. Reining it in a little makes it
easier for mappers and admins to put these machines in player-accessible
spots without worrying about it derailing rounds or empowering griefers.

Additionally, this change makes this vendor play nicer with the new
vending restock economy.

None of the pricing changes affect any vending machine that was mapped
in off the station z-level. Lavaland syndicates will continue not to be
charged for using their machine.
## Changelog
🆑
balance: Donksoft vendors now stock slightly more items, slightly less
of each item, and has increased prices across the board.
/🆑
2024-09-30 18:11:23 -04:00
Cheshify
18ffabca05 Laser Musket & Smoothbore Disabler BUFFS (Crank it AND Run) (#86867)
## About The Pull Request
This rebalances the Laser Musket and Heroic Laser Musket

Replaces glasses with 2 drinking glasses in the crafting recipe
Removes 2-handed demand
Standard shot damage slightly increased and stamina damage greatly
decreased
Heroic shot made a 3-round scatter shot, very powerful, damage and
stamina damage decreased to compensate
Crank-charge weapons, except the thermal revolvers, can be charged while
moving
Muskets can also be worn on jackets

## Why It's Good For The Game

These things were severely underused, and I always kinda wanted them to
be crankable while you moved, I just didn't know how. This should also
help the Militiamen ERT be less of a joke. I would appreciate
balanceposters giving some advice on the numbers if you're seeing this.

The heroic musket is incredibly rare, and SHOULD be pretty powerful.
## Changelog
🆑
balance: laser muskets have been rebalanced
balance: crank weapons can be charged while moving
/🆑
2024-09-28 08:05:19 +12:00
SmArtKar
d4ac95a0e1 Nobody expects the span inquisition: replaces most <span>s with macros (#86798)
## About The Pull Request
123 changed files and multiple crashes after writing broken regex, I
replaced most remains of direct spans with macros. This cleans up the
code and makes it easier to work with in general, see justification for
the original PR. I also fixed a bunch of broken and/or unclosed spans
here too.
I intentionally avoided replacing spans with multiple classes (in most
cases) and spans in the middle of strings as it would impact readability
(in my opinion at least) and could be done later if required.

## Why It's Good For The Game

Cleaner code, actually using our macros, fixes borked HTML in some
places. See original PR.

## Changelog
Nothing player-facing
2024-09-26 19:36:13 +00:00
SmArtKar
ad111f4950 Spacemove refactor - Newtonian physics (#84869)
## About The Pull Request

This PR significantly enhances how zero-g movement works. Its no longer
locked to one of 8 directions, everything now has inertia and is
affected by weight. This means that throwing a piece of wire will no
longer completely reverse your movement direction, and that being thrown
out of mass driver no longer will slow you down to a halt at some point.

This leads to following gameplay changes:
* Guns now accelerate you. Ballistics have higher acceleration than
lasers, and higher calibers have higher acceleration than smaller ones.
This means that firing full-auto weapons in zero-g will make you drift
and accelerate significantly. While this can be a hilarious way to
travel in space, it makes using them trickier.
* Impacting a wall or an object while moving at high speeds will cause
you to violently crash into it as if you were thrown. Careful when
exploring!
* Jetpacks now have inertia. Changes introduced in #84712 have been
mostly reverted, although speed buff has been reduced to 0.3 instead of
0.5 (although this is compensated by new movement mechanics, so overall
speed should be roughly equal). All MODsuit jetpacks now possess the
speed boost. Advanced MODsuit jets (which has also been added back) and
captain's jetpack instead have higher acceleration and stabilization
power, providing much more precise control over your movement.
* Firing guns while moving on a jetpack will partially negate your
pack's acceleration, slowing you down. Non-advanced jetpacks'
stabilization is not enough to compensate for heavy caliber weaponry as
sniper rifles, shotguns or rocket launchers.
* You no longer instantly decelerate upon sliding along a wall. Instead,
it may take a few tiles if you are moving at extreme speeds. Passing
over lattices still allows you to grab onto them!

As space movement is angle-based instead of dir-based now, its much more
smooth than before due to using new movement logic.

Example of jetpack stabilization in action:

https://github.com/tgstation/tgstation/assets/44720187/6761a4fd-b7de-4523-97ea-38144b8aab41

And, of course, you can do this now.

![jetpack_500](https://github.com/tgstation/tgstation/assets/44720187/37b11cd8-2bd1-4640-ae0c-5e0cc505bf52)

**This pull request requires extensive gameplay testing before
merging**, as a large amount of numbers have been picked arbitrarily in
an attempt to keep consistency with previous behavior (guns and
normal-sized items applying 1 drift force, which is equal to what
everything applied before this PR). Jetpacks and impacts may also
require adjustments as to not be frustrating to use.

Closes #85165

## Why It's Good For The Game

Zero-G refactor - currently our zero-g movement is rather ugly and can
be uncomfortable to work with. A piece of cable being able to accelerate
you the same as a duffelbag full of items when thrown makes no sense,
and so does instantly changing directions. Inertia-based version is
smoother and more intuitive. This also makes being thrown into space
more of a hazard (possibly opening the door for explosive
decompressions?)
Jetpack inertia and gun changes - this is mostly a consequence of
inertia-based movement. However, zero-g combat being preferred during
modes like warops was an issue due to it negatively affecting everyone
without jetpacks which are in limited supply onboard. This reverts the
mobility changes which severely impacted space exploration, while making
zero-g combat more dangerous and having it require more skill to be a
viable option.

## What's left

- [x] Refactor moth wings to use jetpack code
- [x] Refactor functional wings to use jetpack code
- [x] Locate and fix a recursion runtime that sometimes occurs upon
splattering against a wall
- [x] Add craftable tethers and modify engineering MOD tethers to use
the same system

## Changelog
🆑
add: You can now craft tether anchors, which can be secured with a
wrench and attached to with right click. They won't let you drift into
space and you can adjust tether length/cut it via lmb/rmb/ctrl click on
the wire.
add: MOD tethers now remotely place and connect to tether anchors
instead of throwing you at where they landed.
balance: MOD tethers can now be used in gravity
balance: Jetpacks are now inertia-based. 
balance: Guns can accelerate you significantly in zero-g.
balance: All jetpacks now give you equal speed buff, however advanced
MOD ion jets and captain's jetpack have higher acceleration/deceleration
values.
refactor: Refactored zero-g movement to be inertia-based and utilize
angles instead of directions.
/🆑
2024-09-26 02:49:54 -07:00
grungussuss
58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

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

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

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

-- instrumental --

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

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

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

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

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

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

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

- [ ] attributions

## Why It's Good For The Game

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

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00
carlarctg
7d3004bc79 Removes caps from many improper items (#86759)
## About The Pull Request

Removes caps from many improper items.
For example - Heated Rebar Crossbow -> heated rebar crossbow

I've kept a lot of items untouched because for some reason or another it
felt nicer to me that they be, uh, capsed. For example Hat of the
Honkmother, anything that has 'weight' to it.

There's also some minor name changes that I think fit better, such as
Rebar Storage Quiver -> rebar quiver. I mean, we already know it's for
storage. That's the whole point of quivers.
## Why It's Good For The Game

This is one of my biggest pet peeves, Randomly Capitalized Items For No
Reason. It looks sloppy, awkward, and half-assed. This PR brings a lot
of the worst offenders in line. if your name isn't a proper noun it
almost never should have caps.
## Changelog
🆑
spellcheck: Removes caps from many improper items
/🆑

---------

Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2024-09-21 00:09:34 +02:00
Ghom
4c58bf51db Fixes the offsets of the chimp shotgun (#86632)
## About The Pull Request
Gee...
## Why It's Good For The Game
## Changelog
🆑
fix: Fixed the offsets of the chimp shotgun when held.
/🆑
2024-09-15 13:51:05 +02:00
John Willard
a4e7929a3b Lighters use welding fuel and can be used as welders in some cases (#85941)
## About The Pull Request

Lighters now have welding fuel which can be filled/extracted by hand,
giving a small but consistent source of welding fuel for non-chemists.
Welding fuel is now required for these lighters to work, they'll close
automatically once they're out of fuel.
They last for a minute, zippo lasts 2 minutes, before they need to be
refuelled. It can have other reagents put into it but it only checks for
welding fuel, so it won't work at all unless its got some.
They can be used as welding tools in minor cases, mostly fixing things
and welding doors shut, but can't do big things like deconstruction,
except the xenobio one because it's a lot hotter than the normal
lighter.

Also added a baseline support to check for heat to perform certain
welds, before heat is just this binary "has or doesnt have heat", which
made its value useless.

## Why It's Good For The Game

Adds a ghetto way of getting welding fuel, hiding reagents, and a ghetto
welding tool without being something that prisoners could break out of
prison with. They could weld the doors shut which is a little funny,
security still has proper welding tools to counter it.
It also currently is kinda lame that lighters could just be open 24/7,
unlike matches which has a lifespan of 10 seconds each or something.

## Changelog

🆑
add: Lighters now use and require welding fuel to work, but can be used
as a welding tool for tasks that don't require much heat.
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-09-13 12:32:09 +00:00
Ghom
06ba9d93eb Pun Pun Station Trait, But it's only active on Monkey Day (14 December, every round) (#86091)
## About The Pull Request
This is a remake of https://github.com/tgstation/tgstation/pull/84501
with a few small changes to avoid mapping issues. This time it's
restricted to a once-in-a-year event, mainly because neither Jacq and
Lemon were ok with the possibility of Pun Pun being posibly playable all
year, however Jacq said he's fine with it being available on the
holiday, while Lemon isn't around on Discord atm so I don't know what
he's to say.

The trait makes pun pun playable and gives them the job of being a
busser (waiter) in the cafeteria. They're clever and can use tools most
other monkeys can't, but cannot be humanized, while also being unable to
speak Galactic Common. Should they roll traitor, they'll be able to buy
syndicate monkey reinforcements and equipment, which it can also use,
being a monkey itself.

## Why It's Good For The Game
This is a fairly unique job, like the Cargo Gorilla, due to the fact
it's not a conventional humanoid crew member nor the AI or a cyborg. I
thought this was a fun idea, though I met some obstacles and the
original PR was DNM'ed and then closed. However, the trait perfectly
fits the theme of the holiday, making a good compromise since Pun Pun
will stay AI-controlled the rest of the year, as Jacquarel and Lemon
want it to be. It can also be added by an admin through VV, whether
they're planning some shenanigean or just want to add something more to
the round.

## Changelog

🆑
add: Pun Pun is a playable crewmember during Monkey Day (14 December).
/🆑
2024-09-12 09:35:37 -07:00
BeansKidney
55bd28d0ae Reformats rebar crossbow description, removes nonexistent misfire warning. (#86474)
Reworked description of rebarxbow, and rebarxbow/syndie. Removed
incorrect missfire label on rebarxbow regular variant.
## About The Pull Request

The description for the rebar crossbow is too long-winded, so I made it
succinct.
Fixes a few typos too, and removes a warning about misfire for regular
crossbows that has no business for being there.

What this PR does **not** fix are the recent changes in gun code
lowering the reserve ammo count for all crossbows by one, thanks to some
off-by-one shenanigans that crossbows formerly exploited.
I chose to not include a fix for it in this PR, as it could be
considered a balance change.


## Why It's Good For The Game

Good grammar good, Bad grammar bad. Long text bad, shorter text good.

## Changelog


🆑
spellcheck: Changed description of Rebar crossbow.
fix: Rebar crossbow description will no longer lie about it's missfire
potential.
/🆑
2024-09-05 15:34:08 +02:00