Commit Graph

2785 Commits

Author SHA1 Message Date
Ghom f5bfff758d [NO GBP] Fixes the venomous element for projectiles, invisible arrows and something off with envenomable casings. (#76565)
## About The Pull Request
See #76551. The on hit effect component was treating the `hit_limb` arg
of the projectile on_hit signals as if it were a bodypart item rather
than a string. This wasn't my fault.
Also, invisible arrows because I forgot to set up their definition of
update_icon_state() and base icon state var.
Lastly, the envenomable casing registering a signal on the wrong atom,
and the arrow bullet subtype being defined twice.

## Why It's Good For The Game
This will close #76551.

## Changelog

🆑
fix: Fixes venomous projectiles for real, and invisible arrow sprites.
/🆑
2023-07-10 13:00:01 +01:00
Jacquerel e2de2046b5 Bibles, Lighters, and Cowboy Hats can block bullets (#76521)
## About The Pull Request

If you are wearing a bible or lighter in your suit slot, or a cowboy hat
on your head, there is a small (2%) chance that bullets (only bullets,
not lasers) will hit them instead of you.
This destroys lighters, removes the storage capacity of the bible, or
sends the hat flying off your head.

The Bounty Hunter's cowboy hat has a significantly higher chance to
intercept bullets.

## Why It's Good For The Game

Adds some fun flavour to these items.

## Changelog

🆑
add: A bible or lighter in your suit slot, or cowboy hat on your head
will occasionally intercept a bullet.
/🆑
2023-07-07 18:36:04 +08:00
Sealed101 a39be6dbc2 Fixes empty casings being incorrectly replaced by a casing in guns with internal magazines (#76323)
## About The Pull Request
<details><summary>What?</summary>

### e.g. double-barrel shotgun
spent shell inserted -> no chambered shell, all is fine -> spent shell
goes into the shotgun's mag -> spent shell gets added to the mag -> gun
chambers a round from the mag - it's the newly added spent shell

2nd spent shell inserted -> chambered shell present, dump it out (but
forget to remove it from the mag) -> 2nd spent shell goes into the
shotgun's mag -> gun chambers a round from the mag - it's the last shell
to be added to the mag - it's the 2nd shell

dump the gun's mag -> mag still has the 1st shell -> dumps the 2nd shell
and the 1st one gets moved to the dump tile

relevant code:

https://github.com/tgstation/tgstation/blob/b832e2f47765ea321457221cc4e2a8ea64137555/code/modules/projectiles/guns/ballistic.dm#L369-L380


https://github.com/tgstation/tgstation/blob/b832e2f47765ea321457221cc4e2a8ea64137555/code/modules/projectiles/boxes_magazines/_box_magazine.dm#L128-L156


https://github.com/tgstation/tgstation/blob/b832e2f47765ea321457221cc4e2a8ea64137555/code/modules/projectiles/boxes_magazines/_box_magazine.dm#L101-L110
</details> 

so we just remove the dumped shell from the mag as well? it works but i
think i'm maybe missing something?

## Why It's Good For The Game
Fixes #54771

## Changelog
🆑
fix: fixed shotguns not clearing their "mag" correctly
/🆑
2023-07-01 19:25:53 +01:00
Vekter 304ccb1716 Adds 50 armor penetration to neurotoxin spit (#76420)
## About The Pull Request
Someone noted in an issue report that virologists could tank like 7 of
these without breaking a sweat, that's a little goofy. This knocks it
down to 4. You're still getting some protection by having extra gear on,
but you're not immune to it.

Fixes #76389

## Why It's Good For The Game
Xenos should be dangerous to most of the crew without significant
protection. I argue that, while a labcoat is meant to protect from nasty
fluids, it shouldn't completely negate them, especially if a Sentinel
has saved up a good chunk of plasma to throw at you.

## Changelog
🆑 Vekter
balance: Increased armor penetration on xenos' neurotoxin spit.
Well-protected crew members should still take more than a few hits to
down but shouldn't be immune to it.
/🆑
2023-06-30 21:00:19 +01:00
Cheshify b9fa1bc8f4 The Laser Musket (2023) (Settlement Helper Edition) (#76231)
## About The Pull Request
This adds a craftable laser musket to the game. It's slow and unwieldy,
but consistent! I'd be happy to tweak the numbers if it's too good/bad.

This PR also adds an independent militia ERT, who travels the spinward
sector to help defend stations!

TO DO LIST:

- [x] Finish worn sprites
- [x] Add a crafting recipe on par with the pipegun
- [x] Add bayonets
- [x] Separate charging into two stages and REDO THE AUDIO AAAA
- [x] Clean up code (Needs review, totally)

Scrapped:

- Possibly add overcharge mechanic (This is just beyond my skill level
for now)
- Find a unique sound for the weapon firing (We have a unique
projectile, and I can't a sound that fits more than the laser gun one)


![image](https://github.com/tgstation/tgstation/assets/73589390/40ee8f1d-5c1f-4638-af70-ff1215b85c9e)

![1211
(1)](https://github.com/tgstation/tgstation/assets/73589390/1a4b9856-a878-4500-96ce-4fd83587fa81)

![musket (2) (2)
(2)](https://github.com/tgstation/tgstation/assets/73589390/2ebdc2ed-6f78-4761-9deb-a1b2d337a02d)

![aaaa1
(1)](https://github.com/tgstation/tgstation/assets/73589390/6076edd3-97c9-41ec-a67a-90717f97eab0)


![image](https://github.com/tgstation/tgstation/assets/73589390/c47e44bd-3f4b-44b3-aaa5-9b1c25a72cad)

Inhands by RedSentry27
Suit sprite by Kinnebian
Prime Laser Musket sprites by RedSentry27

Balance Considerations (ew):
25 damage (30 on prime)
Normal wound
40 Stamina damage (45 on prime)
Weak to armour (prime not weak to armor)
2 second charge time, needs to be charged twice
No overcharge
Requires two hands to hold (like a chainsaw)

Crafting Recipe:
One rifle stock
Fifteen Cable Coils
Four Iron Rods
One micro laser
One capacitor
One pair of prescription glasses
One drinking glass
Craft for 10 seconds with a wirecutter and screwdriver

Prime crafting recipe: (REQUIRES READING MAINTENANCE LOOT: "journal of a
space ranger")
One laser musket
Fifteen cable coils
Five silver
One water recycler
Fifteen units of nuka cola
Craft for 30 seconds with a screwdriver while wearing cowboy boots and a
cowboy hat
## Why It's Good For The Game
The idea of assistants and revs forming firing lines in the halls to
shoot eachother sounds hilarious. Besides, we need a parallel to the
pipegun, and this is the funniest way to do so.
## Changelog
🆑 Cheshify, Kinnebian, and RedSentry27
add: Maintenance engineers have sent out blueprints across the sector
for a new laser musket.
admin: A new energy-gun toting ERT is available to send to the crew.

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-06-30 19:54:33 +00:00
necromanceranne 8af20d1577 Fixes some inconsistencies with the chaplain revolver and gets rid of a weird ammo define (#76237)
## About The Pull Request

Firstly, I gave the revolver a new sprite. I mean, this isn't so much of
an improvement as it is a reference I wanted to go with, so if people go
'no not a new sprite' I don't mind reverting.

What's the reference? Check the new name I added as a potential name
roll.

![lucky
38](https://github.com/tgstation/tgstation/assets/40847847/e11874be-1416-4e21-bda9-4881d49cad1b)

Secondly; I applied to the gun itself revenant bane, the ability to
clear runes, and proper magic immunity as a full null rod would enable.
This last bit was a deliberate design choice, but the divine bow has
full magic protection, so I think this is now more of a consistency
consideration compared to the divine bow.

Thirdly, the revolver is a .38 revolver, HOWEVER, it uses a damage
multiplier to bring it back to the damage it did originally. It also
cannot be reloaded without the prayer action. No cheating. Effectively,
this is the same mechanically as it was before.

It rarely does a funny crit fanfare. This does nothing mechanically, I
just thought it was a funny nod to the sprite's reference (and I guess
another game that the crit fanfare is based on). Borrowed parts of the
code and sprite from this April Fool's pr by Wallemations >
https://github.com/tgstation/tgstation/pull/74425

## Why It's Good For The Game

I think this might have been a little forgotten since implementation now
that we have another projectile weapon for the chaplain. So I'm brushing
it up a bit.

## Changelog
🆑
fix: Makes the chaplain's revolver consistent with its immediate
sibling, the Divine Bow, by giving it similar statistics.
code: Makes the chaplain revolver a .38 but prevents it from being
loaded without using the special prayer action. Also applies a damage
multiplier to keep it at the original 18 force. Mechanically, no
different.
sprite: Gives the chaplain revolver a new sprite.
code: Removes an unnecessary admin log when removing runes.
/🆑
2023-06-27 20:57:02 -06:00
Ghom 6b007f758b Replaces ammo_casing/caseless and bullet/reusable with elements. (#76335)
The reusable and caseless types only purposes are the behaviors of
deleting the casing when fired and spawning a new object when the
projectile ultimately reaches its maximum range or hits a target, both
of which are easily "elementizable". Also, I don't like those barely
filled sub-folders in the projectile module, and the fact we've
divergent reusable and single use arrow types.
2023-06-28 01:14:59 +00:00
Hatterhat 7941de57ab reduces the Regal Condor's base spread from 10 to 0, mildly revises its desc (#76161)
## About The Pull Request
uh. tin? regal condor's spread override got dropped so it should just be
getting the base gun spread of 0.

## Why It's Good For The Game
So, quick review on what you have to do to make the Regal Condor:
- emag a cargo console (4 tc investment)
- drum up 20k credits (or 22k if you're private-ordering it)
- read the memoirs to unlock the recipe
and then, the recipe for the gun itself involves stealing the captain's
crown and getting your grubby mitts on:
- a makarov (7 tc),
- 3 raw telecrystals (3 tc)
- a tactical toolbox (1 TC/spaceloot)
- a syndicate mask (contraband crates/spaceloot)

The gun itself does not come with a magazine; magazines are a separate
recipe and, as part of the recipe, require 2 raw TC each.

If you manage to put it together, I think you should feel confident in
your gun's ability to hit where you click, and not have to worry about
random projectile deviation shooting a wall or a tank, instead of the
security officer who probably wants to kick you in the nuts for emagging
a great many things and/or gathering the components to make a really
spicy handgun.

## Changelog

🆑
balance: The Regal Condor's base spread has been reduced to 0, like damn
near every other gun that exists.
/🆑

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2023-06-27 00:05:39 -07:00
ReinaCoder 8629482d3f updates mosin mob sprite (#76325) 2023-06-26 16:08:46 -04:00
IndieanaJones daa33d89fe Xenomorph/Alien Rework 2023: Part 1 (#75286)
## About The Pull Request

Alternative to #75277

Kept you waiting, huh?

This PR is the first part of a Xenomorph rework which seeks to make the
big lugs more balanced and up to date with /tg/'s current design. This
mainly involves curtailing xenomorph's infamous hardstuns into more
interactive forms of combat, while also giving some buffs to the
xenomorph's more unique abilities in order to keep them threatening.

Part 1 will focus on simple number changes and some simple mechanic
changes. In the future, changes will be made to endgame involving
xenomorphs, along with changes to other facets of Xenomorphs.

Highly based off of #55937.

Changes:

- Xenomorph disarm has been completely reworked. While a disarm will
attempt to, well, disarm, a human opponent should they be holding
something, it will no longer immediately hardstun targets when they
aren't. Instead, the xenomorph will shove the target several tiles back
and inflict 35 stamina damage. If the target slams into a wall, this
will also come with the added effect of knocking them down. If a human
is incapacitated, however, right click will slam them into the ground,
which paralyzes them for a lengthy 5 seconds (which is ultimately half
the time xenos could stun you for before), allowing for safe transport
back to the nest as long as you keep them close.

- Humans can now shove xenomorphs. Due to being the superior predator,
however, you can't knock down xenomorphs from shoving. You can slow them
for a little bit akin to humans though.

- Neurotoxin no longer is a hardstun. Instead, it deals 50 stamina
damage on contact. It is still resisted by BIO armor.

**HUNTER:**
- Speed reduced from -1 to -0.3.
- Pounce speed is twice as fast as before (1 to 2)
- Hardstun time on pounce reduced from 10 seconds to 5 seconds.

Hunters being insanely fast has been a major balance-ruining factor of
xenomorphs for many years now. These buggers could practically ambush
anyone, hardstun them immediately, and then leave before anyone could do
anything. Now, with their speed nerfed and in combination with the xeno
shove changes, hunters will need to spend more time to down a target.
Their pounce was practically useless, so its been sped up in order to
make it more practical to use.

**SENTINEL**
- Speed reduced from 0 to 0.2
- Cloak alpha reduced from 0.75 to 0.25 (you're more hidden now)

Sentinels receive a large nerf in regards to their spit, but their
before useless cloaking ability has been greatly improved upon as
compensation. They now serve better as defenders and ranged ambushers.

**XENOMORPH DRONE**
- No changes

As in the original PR, drones are perfeclty balanced in my eyes, so no
changes were required.

**XENOMORPH PRAETORIAN**
- Speed increased from 1 to 0.5
- No changes

Praetorians get affected by the nerfs of the other xeno abilities, but
now they're a bit faster in order to close the gap to use their
abilities.

**XENOMORPH QUEEN**
- Speed increased from 3 to 2
- Health increased from 400 to 500
- Damage increased from 20 to 50

Xenomorph queens have been sped up and made more tanky and lethal in
close-range combat. Fighting this beast up-close should be a death
sentence to almost anything else in the game. Speed increases will help
her re-position and close the gap on potential prey.

**OTHER CHANGES**
- Fixed a bug where simplemobs didn't actually use xenomorph's damage
values when they were attacked by them.

## Why It's Good For The Game

Xenomorphs are old, and haven't been updated for quite a long time. This
has left them as sources of a bunch of hardstuns which made counterplay
from a modern spaceman extremely difficult. With these changes, fighting
xenomorphs is more interactive and should end up being more enjoyable
for both crew and xenos. Buffs were also given out to incentivize usage
of xenomorph's unique abilities as opposed to the standard disarm spam
which was most effective for them until now.

## Changelog
🆑
balance: Xenos have been rebalanced, removing their hardstuns on their
disarm and neurotoxin, along with a slew of other changes. Xenos have
received buffs to their more unique abilities in return.
fix: Fixed simplemobs ignoring xenomorph's melee damage values when
being attacked by them.
/🆑
2023-06-24 20:59:07 -04:00
Ghom 1436b3f63a Fixes the envenomable casing element and arrows. (#76219)
## About The Pull Request
Both the element and the object were trying to add an element as a
component, which to my amusement, just silently fails without throwing
any runtime, crash or stack trace (stuff for another PR, I suppose).

## Why It's Good For The Game
This will fix #75448.

## Changelog

🆑
fix: arrows can now be actually coated with reagents.
/🆑
2023-06-24 11:52:59 +02:00
MrMelbert 024c1c331c Fix guns without magazines loaded making no fire sounds (#76196)
## About The Pull Request

Runtimed from `90 / null` here. 
What's the point in a `?` sanity check if you don't default it to any
values? Come on guys

## Why It's Good For The Game

Bugfix

## Changelog

🆑 Melbert
fix: Fix shooting guns without a magazine loaded making no fire sound
effect
/🆑
2023-06-21 15:08:58 -04:00
cnleth 38983ee289 Fix rockets embedding in people (#76136)
## About The Pull Request
Rockets can't embed anymore and are now blunt objects (so they cause
blunt wounds instead)
This is what could happen before:

![rocket_embed](https://github.com/tgstation/tgstation/assets/113535457/b1213460-fb87-4c28-bde9-454a271a38fc)
## Why It's Good For The Game
I've been told that the embedding is not intentional, so this PR fixes
an oversight
## Changelog
🆑
fix: Rockets can no longer embed in people and cause blunt wounds
instead of piercing
/🆑
2023-06-20 21:57:21 -04:00
Time-Green 8788e48378 Shuttle events (#76008)
## About The Pull Request


https://github.com/tgstation/tgstation/assets/7501474/a2d83ce8-eba1-42d9-a1f8-9d73f7c40b21

Adds shuttle events! Stuff can now start to happen outside the shuttle,
either benign or spicy (but usually just fun to watch)!
## Why It's Good For The Game

The shuttle escape sequence is an important part of the game, uniting
about every player surviving player. Recently, #71906 has made the
escape sequence more forgiving as well as more interesting by
conditionally doubling the playing field. The area outside the shuttle
is still mostly empty though, except for the few people being spaced,
daredevils and the occasional epic space fight.

This PR adds adds some space events to spice up the outside of the
shuttle! This both gives people something too look at, making the escape
sequence feel less static and more lively, as well as give people a
reason to go outside and get the full experience of ~being decapitated
by a meteor~ swimming with the fishes!

<details>
  <summary>Shuttle Events</summary>

**Friendly carp swarm**
Spawns a group of carp that flies past the shuttle, completely friendly
unless provoked.

**Friendly meteors**
Spawns a lot of strong meteors, but they all miss the shuttle.
Completely safe as long as you don't go EVA

**Maintenance debris**
Picks random stuff from the maintenance spawn pool and throws it at the
shuttle. Completely benign, unless you get hit in the head by a toolbox.
Could get you some cool stuff though!

**Dust storm**
Spawns a bunch of dust meteors. Has a rare chance to hit the shuttle,
doing minimal damage but can damage windows and might need inflight
maintenance

**Alien queen**
One in every 250 escapes. Spawns a player controlled alien queen and a
ripley mech. RIP AND TEAR!! Really not that dangerous when you realize
the entire crew is on the shuttle and the queen is fat as fuck, but can
still be fun to throw people around a bit before being torn to shreds.

**ANGRY CARP**
Once in every 500 escapes. Spawns 12 normal carp and 3 big carps, who
may just decide to go through the shuttle or try and bust through the
window if you look at them wrong. Somewhat dangerous, you could stay
away from the windows and try to hide, or more likely shoot at them and
weld the windows

**Fake TTV**
Lol

**Italian Storm**
Once in every 2000 rounds. Throws pasta, pizza and meatballs at the
shuttle. Definitely not me going off the rails with a testing event

**Player controlled carp trio**
Once in every 100 escapes. Spawns three player controlled carp to harass
the shuttle. May rarely be a magicarp, megacarp or chaos carp. I can't
honestly see them do anything other than be annoying for 3 seconds and
die

There are some other admin only ones: a group of passive carps going
directly through the shuttle and just being little shits, and a magic
carp swarm
</details>

Events are selected seperately, there isn't a crazy weighting system,
each just has a chance to run, and multiple could run at once. They also
don't immediately trigger, so people can get settled a bit, and to make
sure just waiting out the more dangerous ones is still a valid strategy.

## Changelog
🆑
add: Adds shuttle events! If shuttle escapes weren't exciting before
(doubtful), they definitely are now! I'm joking it's mostly an
atmosphere thing.
admin: Adds an admin panel to interact with shuttle events, under the
Events tab: Change Shuttle Events
fix: Objects spawned in hyperspace will properly catch hyperspace drift
/🆑

There's a few things I'd like to do later (another PR) (honestly anyone
can do them because I suck at follow-ups), because this is too big as
is:
- Hijack triggered shuttle events
- More events (got a lot of cool suggestions, but I'm putting most of
them on hold)
- Maybe stration announcements if some more dangerous ones get added
- Structures appearing next to the escape shuttle???

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-06-18 08:14:05 -04:00
MrMelbert 22799fcb89 Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?) (#76000)
## About The Pull Request

- Refactors the stun absorption list into a status effect

- Does a fair bit of cleanup around stun code

Weird thing involved in this.
Check out this define. 
`IS_STUN_IMMUNE(source, ignore_canstun) ((source.status_flags & GODMODE)
|| (!ignore_canstun && (!(source.status_flags & CANKNOCKDOWN) ||
HAS_TRAIT(source, TRAIT_STUNIMMUNE))))`
Notice anything odd about it?
It only checks for `CANKNOCKDOWN`. 
What does this mean?
Well, *every single* one of the stun procs used this macro for checking
stun immunity. Which means every method of stun checked the
`CANKNOCKDOWN`.
This means that, say you have a mob which has `CANSTUN` but not
`CANKNOCKDOWN`.
Intuitively this means that the mob cannot be knocked down, but can be
stunned.
But instead, this means the mob can't be stunned either. 
This doesn't affect humans, they have all the status flags, but it does
affect some other mobs.
Alien adults (not queens) have `CANUNCONSCIOUS|CANPUSH`. Before, they
didn't have `CANKNOCKDOWN`, so they were fully immune to stuns and
sleeps. But now, they can be knocked unconscious.
However, overall it doesn't change much, as most mobs that flipped off
`CANKNOCKDOWN` flipped off the others too.
For consistency though it makes sense for these flags to work as they
imply.

- `incapacitate` didn't have a signal, now it does

## Why It's Good For The Game

More consistent, better code? I may use this in the future.

## Changelog

🆑 Melbert
refactor: Refactored Stun Absorptions (Bastard Sword, His Grace)
refactor: Refactored Stun Immunity. Note this means that some mobs
which, prior, were immune to all forms of incapacitation are now
vulnerable to some. Notably, adult non-queen xenomorphs are now
vulnerable to falling unconscious.
/🆑
2023-06-16 14:44:25 -06:00
Ghom 2bb4dfe76c Expanding the Experimental MODsuit Bepis Node with three new modules. (#75801)
## About The Pull Request
So, I've had this idea to make a contribution to the Bepis feature with
some modsuit stuff. The gimmicky stuff is ok and a good way to even out
the better content since it has game of chance design it has (you can
find those disks in space anyway so...). However, the Experimental
MODsuit node feels very underwhelming right now, compared to how big
that feature is.

This PR adds three MOD modules to the Experimental MODsuit node, plus
two more:
- Magneto Charger: While the Modsuit is activated, each step the user
takes will charge the installed power cell by a tiny bit, enough to
sustain a standard modsuit of generic slow speed with only a few, easy
modules installed. It won't work in zero G, while flying, pulled by
someone else, on a conveyor belt, riding a vehicle or crawling on the
floor, though.
- Recycler: It collects (most) garbage and casings off the ground and
recycles them into material sheets that can be dispensed on an adjacent
location or storage with with Middle Mouse Button. Doesn't clean debris,
and scuffed because most trash doesn't yield material anyway.
- - It also has two subtypes, unbound from the node: one that dispenses
riot foam darts and can be found on the black market, and another that
dispenses the more innocuous foam darts, rarely found in maints.
- Shooting Assistant: A configurable module. On Stormtrooper mode, it
will give the user a faster fire rate (the double tap trait) at the cost
of accuracy. On Sharpshooter mode, it will improve the user accuracy and
make their shots ricochet against walls at least once (if the hit atom
allows that, that is, e.g. lasers don't ricochet against iron walls), at
the cost of movement speed. Both modes also prevent the user from dual
wielding guns.

To make the Stormtrooper mode stackable with the poor aim quirk and
refrain from making a new trait for the sharpshooter mode, the gun
spread code in gun.dm has also received a little refactor and cleanup.
Also, it's been tested.

## Why It's Good For The Game
The Experimental MODsuit node is quite shabby and could use something
extra to make it more appealing to MODsuit enjoyers.

Also doubles down as a small addition to the black market and maint
loot, and code cleanup, since gun code gives off some garbled vibes.

## Changelog

🆑
add: Expanded the Experimental MODsuit Bepis node with three new
modules: Magneto Charger, Recycler and Shooting Assistant.
add: Added a Riot Foam Recycler module to the black market, as well a
more innocuous version as maint loot.
/🆑
2023-06-14 23:00:05 -04:00
necromanceranne ed0ac95c98 Fixes various bow issues and includes new sounds for the bow (#75828) 2023-06-14 13:12:12 -06:00
LemonInTheDark ae5a4f955d Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request

Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.

This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.

[Renames comp_lookup to listen_lookup, since that's what it
does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced)

[Moves signal procs over to their own
file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc)

[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e)

[Does something similar to the attackby comsigs (PARENT ->
ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e)

[And finally passes over the examine
signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302)

## Why It's Good For The Game

Code makes more sense, things are better teased apart, s just good imo

## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
2023-06-09 06:14:31 +00:00
Penelope Haze f15a971193 Fixes cases where doors do not bolt correctly (#75882)
## About The Pull Request
Some things, like door control buttons, set locked directly instead of
calling lock() or unlock(). This fixes that, which should make sound
effects play. Also annotates some code where we *don't* want that to
happen with an explanation of why we just set locked directly.

## Why It's Good For The Game
Fixes Skyrat-SS13/Skyrat-tg/issues/21510, which also applies to
upstream.
2023-06-06 17:34:03 -06:00
Ghom 88b898dffd Stops shields getting broken by pillows and disablers. (#75759)
## About The Pull Request
See the title. Doing so by adding a new arg for damage type to
`check_shields()` and `hit_reaction()`. The other way would had involved
a couple istype checks for item or projectile damage type, but this is a
longer term solution and can tackle more than just that.

## Why It's Good For The Game
Fixes #74876.

## Changelog

🆑
fix: Stops shields getting broken by pillows and disablers.
/🆑
2023-06-01 16:26:10 -04:00
larentoun e5d3045847 fix: Gun overlays are now one with gun's icon (#75773)
<!-- 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

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

Adds `KEEP_TOGETHER` flag to the gun's `appearance_flags`, so overlays
are now one with gun's icon.

Before:

![Screenshot_23](https://github.com/tgstation/tgstation/assets/31931237/df47ace7-bccd-4847-bf44-47bd1facae05)
![Screenshot_24](https://github.com/tgstation/tgstation/assets/31931237/7b0bbc57-6e6e-4092-9a7f-a87b9500373a)

After:

![image](https://github.com/tgstation/tgstation/assets/31931237/7b238bd0-3e2c-4514-abfd-b4cdd54cfc23)
![image](https://github.com/tgstation/tgstation/assets/31931237/07a057ff-a26c-4a08-b530-20e69f39beea)


## Why It's Good For The Game

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

Better visuals. Also required, when guns are forced to be placed in 90
degree

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

🆑
fix: Gun overlays (energy ammo counter, flashlights, bayonette, etc) are
now one with gun's icon, which makes said overlays to transform
correctly with gun's transform (ie, throwing)
/🆑

<!-- 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. -->
2023-06-01 16:19:19 -04:00
TheVekter 4822bbd6a4 Adds a proper name and description for the base variant bow (#75736)
## About The Pull Request
Fixes #75711.

Someone forgot to add a name and description for the base bow, so it
uses the default projectile/gun one.

## Why It's Good For The Game
I'm not certain you're intended to get this version of the bow, but
there's literally no reason to not have it look normal if someone gets
it.

## Changelog
🆑
fix: Added a name and description for the basic version of the bow.
/🆑
2023-05-31 14:27:30 -04:00
Zonespace 8414a7463e Fixes some other harddels (#75730)
## About The Pull Request
Cannot bother to atomize the rest of these

- Chem grenades didn't clean up their wires or beakers
- Implant cases didn't clean up their implants
- ammo boxes didn't clean up their ammo


![image](https://github.com/tgstation/tgstation/assets/41448081/afa57816-7c0e-4850-97f2-1fe712ac5395)

![image](https://github.com/tgstation/tgstation/assets/41448081/f3201e25-e8a7-4d9d-a0ef-443b0ce26e2e)

![image](https://github.com/tgstation/tgstation/assets/41448081/85944745-eb14-4fe4-9874-cee9c3ecab7c)
2023-05-30 19:55:04 +02:00
SyncIt21 2922d36500 Refactors for material container, ammo box & recycler (#75422)
**1. Material Container Refactors**

   a. `/datum/component/material_container/proc/insert_item()`

- Will now do stack spliting i.e. it will consume as many sheets from a
stack as possible and leave out the rest, It was moved from a player
interaction feature in `user_insert()` to this low level allowing many
things to take advantage of it
- Will now delete the item for you if it could salvage any materials
from it, you don't have to do it explicitly anymore if insertion was
successfull (i.e. this proc returns an non zero value) If you inserted a
stack and not all of it's sheets were inserted from the above point then
you still have to check it explicitly
  - Will now invoke `after_insert` if any materials were salvaged

   b. `datum/component/material_container/proc/user_insert() `

- Will now split the stack by the requested amount making precise
insertion work again & Fixes #72288
- will now consume all contents inside of the object reccursively, this
means items like ammo boxes will no longer have to adjust their custom
materials based on how much ammo they contain because `user_insert()`
will loop through all its contents and salvage the metal of every bullet
inside the box contents so this means

https://github.com/tgstation/tgstation/blob/9686971c76fb6300939c9c191c635d2a852a143c/code/modules/projectiles/boxes_magazines/_box_magazine.dm#L206
has been removed.

    **The Problem with this proc**
take `/obj/item/ammo_box/foambox/riot` for example. it has 40 darts each
having 1125 worth of iron, this proc will add the total iron of all the
bullets to the box custom material so the box custom materials would
become
`5000(base iron of box. see the definition of
/obj/item/ammo_box/foambox/riot) + 45000(40 bullets each having 1125
worth of iron) = 50000 iron`

What happens when you throw this ammo box in an recycler? The recycler
will recycle this box(Now 50000 worth of iron) AND the iron of each of
it's 40 bullets thus yielding

`50000(iron from box because of update_custom_materials()) + 45000(40
bullets each having 1125 worth of iron) = 95000 iron` `

because of this single proc we got `95000 - 50000 = 45000 extra iron`
from thin air

     **The Solution?**

Remove this proc and set a constant custom material value for the ammo
box(it's now 5000 computed see code) AND allow the material container to
loop through every bullet in the box and salvage iron from them. This
would yield

`5000(base iron of box. see the definition of
/obj/item/ammo_box/foambox/riot) + 45000(40 bullets each having 1125
worth of iron) = 50000 iron`

    From both box & bullets combined and not just from the box alone
    
    Fixes #43570
    Fixes #57548

This also allows you to do cool stuff like fill your bag with iron,
glass, whatever and dump them in the autolathe/ore silo by attacking the
machine with your bag rather than pulling out & inserting each item
individually so hey convinience

**2. Recycler patches**
- Recycler will stop consuming items when it runs out of power mid
recycling(which can happen if it recycles a large amount of items). It
used to previously run through the list of items without breaking so
even when power was lost, it still did it's job
   - Recycler will now Properly recycle all the contents inside an atom.
  
     **The Problem**
        Say we have 2 Items
          - Backpack
          - Glass sheet inside Backpack
If we process the items in the following order while deleting each item
that is processed first "Backpack" then "Glass Sheet" then when
"Backpack" is fully recycled and "Deleted" since the "Glass Sheet" is
inside the "Backpack" it get's deleted as well, so when we actually try
to recycle the "Glass Sheet" next, nothing happens because it was
deleted when we deleted the "Backpack".

      **The Solution**
Recycle the items in the reverse order first recycle the "Glass Sheet"
delete it & then the "Back Pack" so we don't deal with deleted items. So
you should see more materials come out when you put stuff inside storage
mediums & throw them in the recycler

- Recycler will consume only half the power when it's deleting items
that can't be recycled(no material was salvaged). just for convinience
2023-05-29 20:30:16 +00:00
MrMelbert 899c46a711 Changes gun flipping to use attack self secondary, moves it to base gun level (#75680)
## About The Pull Request

- Gun flipping is now done via attack self secondary (right click it
when it's in your active hand) rather than attack self ("use" hotkey or
left clicking it when in active hand)

- Moves gun flipping to `/gun` level

## Why It's Good For The Game

- Gun flipping has historically had very bad UX, as most ballistic guns
used attack self for some function - loading the gun, ejecting spent
rounds, racking the gun, etc. By putting it on attack self secondary, it
makes it a bit more of a deliberate thing and keeps it out of the way of
expected behavior
- TLDR: Makes it much less likely you end up spinning your shotgun like
a dingus in the middle of a firefight instead of racking the thing.
- Also makes it less likely you dump your entire mag trying to show off.

- Putting it on the base level lets me spin lasguns and disablers around
which I've always wanted to. It also means you can spin stuff like wands
and bows but I'm not too plussed about that. It's just funny

## Changelog

🆑 Melbert
qol: Gun Flipping is now done by right clicking the gun when it's in
your active hand ("use secondary"), meaning you should be less likely to
accidentally spin your gun instead of ejecting rounds / racking / etc.
qol: You can gun flip all guns, instead of just ballistics. This
includes stuff like wands.
/🆑
2023-05-27 23:42:43 -04:00
Stalkeros2 951f341c63 Weapon magazine ejection sound implementation (#75672)
## About The Pull Request
Implements (possibly re-implements if it was used some time ago)
magazine ejection sounds for firearms.
## Why It's Good For The Game
Better weapon feedback as you can distinguish whether you've inserted a
mag or not.
## Changelog
🆑 Stalkeros
fix: Adds or possibly re-adds firearm magazine ejection sounds.
/🆑
2023-05-27 18:15:10 -04:00
Ghom 6e5ae1cc24 Fixing a few minor maintenance hindrances. (#75594)
## About The Pull Request
See the title and relative issue reports mentioned in the section below.

## Why It's Good For The Game
Closes #75461, closes  #75462, closes #75467.

## Changelog

🆑
fix: Capturing CTF control points no longer requires the active hand to
be empty.
/🆑
2023-05-23 16:51:36 -06:00
Jordan Dominion 033e1b48e4 Fix SHOULD_NOT_SLEEP hit in borg adjustable tracer bolts (#75512)
See #75232
2023-05-18 19:00:08 -06:00
Thunder12345 642722affa Adds a blacklist for putting guns in turrets (#75263)
## About The Pull Request

Fixes #75197

Adds a global list of gun types banned from being added to turrets. Adds
dueling pistols to the banned list as they can freely round remove
people when in turrets without the usual restrictions.

## Why It's Good For The Game

Instakill turrets are an undesirable outcome.

## Changelog
🆑
fix: Dueling pistols can no longer be fitted in turrets to instantly
kill people.
/🆑
2023-05-19 00:04:36 +02:00
Hatterhat 0bace67e62 Some Bolt-Action Fixes (sniper rifle mag manip independent of bolt, among other things) (#75079)
- because pipeguns can no longer misfire, removes the code relevant to
cleaning them with a cloth
- the above makes it so that you can insert/remove a sniper rifle's
magazine regardless of bolt open/close status, which is neat
- also nudges some code around so that affixing a bayonet or whacking
your gun with any item no longer spams it with "can't jam!" or "bolt
closed!"
## Why It's Good For The Game
less random irrelevant popups, and also the magazine on sniper rifles
thing just kind of irked me
2023-05-16 08:53:55 +00:00
ShizCalev a94a61c6a0 Fixes runtime when qdel'ing self-recharging guns with bayonets attached (#75406)
```
[00:29:34] Runtime in energy.dm, line 161: cannot read from list
proc name: can shoot (/obj/item/gun/energy/can_shoot)
src: the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator)
src.loc: the plating (81,77,2) (/turf/open/floor/plating)
call stack:
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): can shoot()
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): update overlays(16777215)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): update icon(16777215)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): update appearance(16777215)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): clear bayonet()
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): handle atom del(the survival knife (/obj/item/knife/combat/survival))
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): handle atom del(the survival knife (/obj/item/knife/combat/survival))
the survival knife (/obj/item/knife/combat/survival): Destroy(0)
the survival knife (/obj/item/knife/combat/survival): Destroy(0)
the survival knife (/obj/item/knife/combat/survival): Destroy(0)
...
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): deconstruct(0)
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): atom destruction("melee")
the proto-kinetic accelerator (/obj/item/gun/energy/recharge/kinetic_accelerator): blob act(the normal blob (/obj/structure/blob/normal))
the normal blob (/obj/structure/blob/normal): ConsumeTile()
the normal blob (/obj/structure/blob/normal): Be Pulsed()
the blobola (/obj/structure/blob/special/core): pulse area(the blobola overmind (/mob/camera/blob), 12, 4, 3)
Objects (/datum/controller/subsystem/processing/obj): fire(1)
Objects (/datum/controller/subsystem/processing/obj): ignite(1)
Master (/datum/controller/master): Loop(2)
Master (/datum/controller/master): StartProcessing(0)
```

🆑 ShizCalev
fix: Fixed a runtime which occured when a self-recharging gun (ie
proto-kinetic accelerator) with a bayonet attached was deleted.
/🆑
2023-05-13 20:33:17 -04:00
ShizCalev dbcc4a63f5 FIXES RUNTIME CAUSING GUNS WITHOUT A MAGAZINE INSERTED TO NOT FIRE (#75407)
Caused by #75058

🆑 ShizCalev
fix: Guns without magazines inserted can now fire again!
/🆑
2023-05-13 20:32:37 -04:00
ynot01 27650dac1d Prevents desert eagles from loading sniper rounds (and vice versa) (#75382)
## About The Pull Request

This splits CALIBER_50 into CALIBER_50BMG and CALIBER_50AE, setting the
sniper rifle to use the former and the deagle to use the latter.
## Why It's Good For The Game

Prevents each of these weapons from loading calibers that they are not
intended to.

Recorded from yogs:


![teS5bum](https://github.com/tgstation/tgstation/assets/28408322/856a8af0-2fd4-40a2-b473-0bea160028e4)
## Changelog
🆑
fix: Desert Eagles can no longer load .50 BMG sniper rifle rounds and
vice versa.
/🆑
2023-05-13 00:04:07 -07:00
DrTuxedo a4822c165b Now blocking is more noticeable! New blocking and parrying sounds (#74998)
## About The Pull Request
Now whenever an attack is blocked, the sound will play and deflection
with the item now plays sound too:


https://github.com/tgstation/tgstation/assets/42353186/1a0cc5b7-f2af-4d72-88d7-57cc11f5baa3

The parry.ogg was updated to a better-sounding one


https://github.com/tgstation/tgstation/assets/42353186/5ffc53d8-0b3c-4e6b-9256-b7b9735918bc

Every item now has a "block_sound" that can be set, it determines what
sound is played when you block an attack with it.
Cult items no longer have their own way of fuckery to play parry sounds,
now they use this system as well.

Now shield bash sound is 80% smaller after cutting out all of its noise
and silence.
## Why It's Good For The Game
Adds feedback on whether the attack was blocked or not, signalling both
to the attacker and defender that it didn't go through even if the
animation played, which is a great QoL. Same with the deflection sound
(although deflection is still pretty visible, the sound would not hurt)

New sounds add more flavour to the weapons, especially the energy sword,
giving it even more badassery.

Cutting down the noise from the shield bash sound has made it better to
listen and saved some kilobytes of information. And making every item
use the universal system for blocking sounds, removing cultist items'
own code for playing parrying sounds.
## Changelog
🆑 DrDiasyl aka DrTuxedo#0931
qol: Now blocking an attack will play a sound and display a spark
effect, giving back feedback
sound: parry.ogg was updated to a better-sounding version
sound: shieldbash.ogg no longer has noise and unnecessary silence
sound: New block_shield.ogg and block_blade.ogg for shields and energy
swords
code: Cultists items no longer have their own code for playing parrying
sounds
/🆑

---------

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
2023-05-11 17:53:46 +00:00
oranges 7317025857 Buffs Lasers (#75329)
## About The Pull Request
This increases laser wound chance, increases the damage and also makes
them use less energy.

## Why It's Good For The Game
Lasers cannot reload so they're not as convenient as a gun, so this will
maybe make them more cool, honestly I just want to try this to see what
happens.

## Changelog
🆑 oranges
balance: increased laser damage, decreased energy cost and increased
wound chance
/🆑
2023-05-11 10:39:28 -07:00
SyncIt21 2068ea9ab5 Crate, Closet Refactors & Access Secured Stuff (#74754)
## About The Pull Request
This PR is actually 2 parts, one that fixes runtimes with crates & the
other that allows secured closets to be crafted
along with a secured suit storage unit

**Crate Fixes**

Fixes #74708

The problem starts here

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L31-L34
Not only does this if condition look ugly but it's highly error prone
because one single call to `update_appearance()` can cause this to fail,
and sure enough if you look at the parent `Initialize()` proc it calls
just that

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L81-L88
Since we know the appearance is guaranteed to be changed in some way
before the if condition gets executed let's check what the final state
of the crate would be before this if check

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L54-L56
We see that the final icon state depends on the variable `opened` so if
we want to place/spawn a crate that is opened at round start we have to
ensure that `opened = TRUE` so the `if(icon_state ==
"[initial(icon_state)]open")` succeeds and does its job correctly.
Sadly we did dum shit like this
```
/obj/structure/closet/crate{
	icon_state = "crateopen"
}
```
throughout the entire code base, we thought backwards and were only
concerned in making the closet look open rather than setting its correct
variables to actually say that it is opened. because none of these
crates actually set `opened = TRUE` the final icon state becomes just
"crate" NOT "crateopen" therefore the if condition fails and we add the
component

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L36-L37
with the wrong parameters, so when closing the closet after_close()
removes the component with the wrong arguments

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L81-L84
that is does not unregister the signals and readds the component i.e.
re-registers the signals causing runtime.

The solution just do this
```
/obj/structure/closet/crate/open[mapping helper]
```
To clearly state that you want the closet to be open, that way you don't
have to memorize the icon_state for each different type of crate, it's
consistent across all crates & you don't get runtimes.

And that's exactly what i did everywhere

Another issue that is fixed is "Houdini crates" i.e. crates which are
open & appear empty but when you close & reopen them magical loot
appears, Go ahead walk upto to cargo and find any empty crate that is
open and do this

Fixes #69779


https://user-images.githubusercontent.com/110812394/232234489-0193acde-22c8-4c19-af89-e897f3c23d53.mp4

You will be surprised, This is seriously harmful to players because they
can just walk by a crate that appears to be open & empty only to realize
later that it had some awesome loot. Just mean

The reason this happens is because of the Late Initialization inside
closets

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L85-L86

What late initialization does is suck up all stuff on its turf

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L97-L100

In theory this is supposed to work perfectly, if the closet is closed
move everything on the turf into the closet and so when the player opens
it, they all pop back out.
But what happens if the closet is opened before ` LateInitialize()` is
called? This breaking behaviour is caused by object spawners

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/effects/spawners/random/structure.dm#L94-L100
And maint crates

https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L141-L143
These 2 spawners open up the crate based on random probability before `
LateInitialize()` is called on the crate and so what happens is the
crate is first opened and then stuff on the turf is sucked in causing an
open but empty crate to appear.

The solution is simple just check again in ` LateInitialize()` if our
crate is still closed before we proceed.That's fixed now too

**Code Refactors**
1. Introduced 2 new signals COMSIG_CLOSET_PRE/POST CLOSE which are the
counter parts for the open signals. hook into them if you ever need to
do stuff before & after closing the closet while return BLOCK_CLOSE for
COMSIG_CLOSET_PRE_CLOSE if you want to block closing the closet for some
reason
2. 2 new procs `before_open()` & `before_close()` which are the counter
parts for `after_open()` & `after_close()`. If you need to write checks
and do actions before opening the closet or before closing the closet
override these procs & not the `open()` & `close()` procs directly

**Secured Craftables** 
This is just a reopened version of #74115 after i accidently merged
another branch without resolving the conflicts first so i'll just
repaste everything here, since crates & closets are related might as
well do all in one

1. **Access secured closets**
   
   - **What about them?**
          **1. Existing System**
If you wanted to create a access secured closet with the existing system
its an 4 step process
            - First construct a normal closet
            - Weld it shut so you can install the airlock electronics
            - Install the electronics [4 seconds]
            - Unweld
This is a 4 step process which takes time & requires a welding tool
         **2. New system**
Combine the 4 steps into 1 by crafting the secure closet directly
                    
![Screenshot
(184)](https://user-images.githubusercontent.com/110812394/235904926-c2ea231c-eba7-45d0-a5af-e0456fdd40bc.png)

    - **Bonus Features**
              **1. Card reader**
The card reader acts as an interface between the airlock electronics &
the player. Usually if you want to change access on a locker you have to
                  - Weld the closet shut
                  - Screw driver out the electronics
                  - Change the settings
                  - Install it back
                  - Unweld
With a card reader there is no need of a welder & screwdriver. You can
change the access of the locker while its operational

        **How do i install the card reader?**
             1. Weld the closet shut
             3. Insert card reader with hand
4. To remove the card reader use crowbar or just deconstruct the whole
closet with a welding tool
             5. Unweld closet

         **How to change its access?**
This will overwrite the settings on your airlock electronics. To do this
1. make sure the closet is first unlocked. This is important so that no
random person who doesn't have access to the closet can change its
access while its locked. It would be like giving the privilege of
changing your current password without first confirming if you know the
old password
2. attack/swipe the closet with your PDA. Make sure your ID card is
inside the PDA for this to work. You can also just use your ID card
directly without a PDA
         3. You will get 3 options to decide the new access levels
           
![Screenshot
(174)](https://user-images.githubusercontent.com/110812394/233454364-d99a2fb6-9f26-4db3-9fac-a10689955484.png)


        They work as follows
- **Personal**: As the name implies only you can access this locker and
no one else. Make sure to have your ID on you at all times cause if you
loose it then no one can open it
- **Departmental**: This copies the access levels of your ID and will
allow people having those exact same access levels. Say you want to
create a closet accessible to only miners. Then have an miner choose
this option and now only miners can open this closet. If the Hop sets
custom access on your ID then only people with those specific access
levels can open this closet
         - **None**: No access, free for all just like a normal closet

**Security:** After you have set the access level it is important to
lock the access panel with a "multi-tool", so no one else can change it.
Unlock the panel again with the "multi-tool" to set the new access type

       **2. Give your own name & description**
To rename the closet or change its description you must first make the
closet access type as personel i.e. make it yours, then use an pen to
complete the job. You cannot change names of departmental or no access
closets because that's vandelism

       **3. Custom Paint Job**
    Use airlock painter. Not intuitive but does the job. 
   
![Screenshot
(181)](https://user-images.githubusercontent.com/110812394/234202905-00946b88-2513-489d-b0a2-d618a72f3e49.png)

      **4. Personal closets**
Round start personal closets can have their access overridden by a new
ID when in it's unlocked state. This is useful if the last person has no
use for the closet & someone else wants to use it.


    - **Why its good for the game?**      
1. Having your own personal closet with your own name & description
gives you more privacy & security for your belongings so people don't
steal your stuff. Personal access is more secure because it requires you
to have the physical ID card you used to set this access and not an ID
which has the same access levels as your previous ID
2. Make secure closets faster without an welding tool & screw driver
3. Bug fix where electronics could be screwed out from round start
secured closets countless times spawning a new airlock electronic each
time
      
2. **Access secured freezers**

    - **What about them?**
The craftable freezer from #73942 has been modified to support secure
access. These can be deconstructed with welders just as before

![Screenshot
(185)](https://user-images.githubusercontent.com/110812394/235905000-ba165feb-4384-4759-b46b-dba77c9e6ba3.png)


    - **How does it work?**
The access stuff works exactly the same as secure closets described
above. You can rename & change description with pen just like the above
described secure closets. No paint job for this. Install card reader
with the same steps described above.

    - **Why it's good for the game?**
1. Make access secured freezers faster without a welder and screwdriver
2. Your own personally named & locked freezer for storing dead bodies is
always a good thing

4. **Access secured suit storage unit**
   - **What about them?**
Suit storage units now require airlock electronics for construction. The
access levels you set on it will be used to decide
       1. If a player can unlock the unit
       2. If the player can open the unit after unlocking
       3. If the player can disinfect whatever is inside
       
      By default all round start suit storage units have free access

   - **Install card reader**
Provides the same functionality as secured closets described above. To
install it
     1. Open its panel with a screw driver
     2. Add a card reader to it with hand
     3. Close the panel
     
     When you deconstruct the machine the card reader pops back out

   - **Why it's good for the game?**
1. Having your own access protected and named suit storage unit so
random people don't steal your mod suits? Who wouldn't want that.?
Provides security for department storage units.
2. If you have the unit locked then you cannot deconstruct the machine
with a crowbar providing additional security
3. Fixes #70552 , random people can't open/unlock the suit storage unit
without access. You can set personal access to make sure only you can
access the unit

## Changelog
🆑
add: Access secured closets. Personal closets can have their access
overwritten by an new id in it's unlocked state
add: Access secured freezers.
add: Access secured suit storage units.
fix: Suit storage unit not having access restrictions.
fix: airlock electronics not properly getting removed after screwing
them out from round start lockers
fix: round spawned open crates run timing when closed
fix: open crates hiding stuff in plain sight
fix: open closets/crates sucking up contents during late initialize
causing them appear empty & open
/🆑

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
2023-05-08 10:42:54 -07:00
ReinaCoder 7a823f2d1e Resprites the mosin nagant, (#75060)
## About The Pull Request
Hi, this pr resprites the mosin nagant. It's been moved from its own dmi
it a new 42x32 one (mosinnagant.dmi). The new sprite is 42x32. Here are
some pictures:

![image](https://user-images.githubusercontent.com/83892995/235358149-8042cb6c-bd39-4ba8-9d0a-eb2f9710f21c.png)

![image](https://user-images.githubusercontent.com/83892995/235358391-20bb5b7a-a293-4744-a3cd-24d3d1dce8b4.png)

![image](https://user-images.githubusercontent.com/83892995/235358425-cadb89d5-9849-416e-8e15-c6081b78d67c.png)
Any critique or suggestions welcomed
## Why It's Good For The Game

![image](https://user-images.githubusercontent.com/83892995/235358497-3873ab14-f522-4dcb-a721-155b989c9585.png)
The current sprite is aged and muddy. It's a cool gun and I think it
deserves a newer cleaner sprite
## Changelog
🆑
image: The Mosin and Prime Nagants have been resprited.
/🆑
2023-05-08 10:29:19 -07:00
Jacquerel 1a918a2e14 Golem Rework (#74197)
This PR implements this design document:
https://hackmd.io/@Y6uzGFDGSXKRaWDNicSiEg/BkRr176st
Put briefly, this will remove every existing golem subtype and
consolidate golems into a single species with cool new sprites.
NOT implemented from that PR is the ability to eat Telecrystals, I
couldn't come up with an appropriate visual that can stack with the
existing ones, but that should be a reasonably trivial add for a future
artist & developer.

New Golems have a food-based mechanic where their hunger decays pretty
quickly and can only be replenished by eating minerals. They start
moving slower as they get hungrier, until eventually they become
completely immobilised and need to be rescued.
Eating different kinds of minerals will visually change your sprite and
give you a special effect in a similar way to old golems, but temporary.
While transformed, you can't eat any other kind of mineral which would
transform you (but can still consume glass).
To see the full list of effects, look at the hackmd above.

In service of these sprites working I have refactored the
`species/offset_features` feature by killing it and delegating that
responsibility to limbs instead. Rather than applying an offset to items
due to your species, it is due to your weird head or arms. This makes
overall more sense to me, but it inflates the code changes in this PR
somewhat.
It doesn't make a lot of sense to atomise unfortunately because that
code also seemed to be entirely unused until I tried to use it in this
PR, so you wouldn't be able to tell if my changes broke anything. I
might make a downstream sad by doing this.

All of the actual numbers in this PR are made up and only loosely
tested, it will need some testmerges to gather feedback about whether it
sucks or not.

Other relevant changes:
I reworked how bioscrambling works based off bodypart bodytypes, to
automatically exclude golem limbs in either direction. There's really no
way to have those work on humans or vice versa. Organs still fly though.
2023-05-07 22:45:20 +00:00
Thunder12345 cbdc5275cd Makes the divine bow renamable (#75180)
## About The Pull Request

Adds the UNIQUE_RENAME flag to the divine bow to allow the
name/description to be modified.

## Why It's Good For The Game

Consistency with every other null rod option (all of which inherit the
flag from `/obj/item/nullrod`

## Changelog
🆑
fix: The chaplain's divine bow can now be renamed like all other null
rod variants.
/🆑
2023-05-07 11:59:18 +02:00
ArcaneMusic f2fd69a49a Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. (#75052)
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you
all here (through the automatic reviewer request system). So, mineral
balance! Mineral balance is less a balance and more of a nervous white
dude juggling spinning plates on a high-wire on his first day. The fact
it hasn't failed after going on this long is a miracle in and of itself.

This PR does not change mineral balance. What this does is moves over
every individual cost, both in crafting recipes attached to an object
over to a define based system. We have 3 defines:

`sheet_material_amount=2000` . Stock standard mineral sheet. This being
our central mineral unit, this is used for all costs 2000+.
`half_sheet_material_amount=1000` . Same as above, but using iron rods
as our inbetween for costs of 1000-1999.
`small_material_amount=100` . This hits 1-999. This covers... a
startlingly large amount of the codebase. It's feast or famine out here
in terms of mineral costs as a result, items are either sheets upon
sheets, or some fraction of small mats.

Shout out to riot darts for being the worst material cost in the game. I
will not elaborate.

Regardless, this has no functional change, but it sets the groundwork
for making future changes to material costs much, MUCH easier, and moves
over to a single, standardized set of units to help enforce coding
standards on new items, and will bring up lots of uncomfortable balance
questions down the line.

For now though, this serves as some rough boundaries on how items costs
are related, and will make adjusting these values easier going forward.

Except for foam darts.

I did round up foam darts.

Adjusting mineral balance on the macro scale will be as simple as
changing the aforementioned mineral defines, where the alternative is a
rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam
dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~

Items individual numbers have not been adjusted yet, but we can
standardize how the conversation can be held and actually GET SOMEWHERE
on material balance as opposed to throwing our hands up or ignoring it
for another 10 years.
2023-05-03 14:44:51 +00:00
Zonespace c3ff5a5180 [NO GBP] Style meter fixes (#75090)
## About The Pull Request
Fixes:

- Crusher mark score applying to attacked corpses
- Parrying not working, in 2 different forms
- The style bar not being accurate with >= 600 style points

## Why It's Good For The Game
Bugs bad

## Changelog
🆑
fix: Style meter parrying works again
fix: Style meter bar now works correctly with very high style point
count
/🆑
2023-05-02 18:42:42 +02:00
Ryll Ryll f7a49c4068 Gunpoints now take half a second to activate, make gasp sounds, and briefly immobilize the shooter and target, other small balance changes (#74036)
## About The Pull Request
This PR messes around with gunpoints a bit, with the purpose of making
them more viable in certain scenarios without making them obnoxious. The
biggest change is that gunpoints now require a 0.5 second do_after()
where neither the shooter nor the target moves, and immobilizes both of
them for 0.75 seconds if point blank, or half that if you're 2 tiles
away. Originally you were supposed to only be able to initiate a
gunpoint from point-blank, but #56601 seems to have removed that
requirement, so we'll run with it and just leave it as advantageous to
gunpoint closer up. The do_after() reinforces that it should be used as
an ambush tactic, and so you can't use it on someone who's actively
fleeing or fighting you.

Getting held up will now make you emit a shocked gasp sound, a la Metal
Gear Solid, which combined with the short immobilize will hopefully make
it more noticeable that someone's pointing a gun at you.

Holdups will now immediately give a 25% bonus to damage and wounds,
instead of having to wait 2.5 seconds to hit the double damage stage.

Finally, right clicking someone that you're holding up will no longer
shoot them. That just feels like good consistency.

## Why It's Good For The Game
Hopefully makes gunpoints a little more viable for when you want to
stick someone who's not expecting it up without them immediately jetting
off. In the future I'd like to ape Baycode and let the gunman have an
action that toggles whether the victim is allowed to move, so you can
order them to move to a second location without instantly shooting them,
but that'll come later.
## Changelog
🆑 Ryll/Shaps
balance: Holding someone at gunpoint now requires both the shooter and
the victim to hold still for half a second before activating, so you
can't hold-up people fleeing or fighting you. After that, it will
briefly immobilize the both of you, 0.75 seconds if adjacent, or half
that if you're two tiles away. Nuke ops are immune to the
immobilization, since they're ready to die anyways.
balance: Holding someone up will immediately apply a 1.25x damage and
wound multiplier, rather than waiting 2.5 seconds to hit 2x.
soundadd: Being held up will now make the victim play a sharp gasp
sound, a la Metal Gear Solid.
qol: Trying to hold someone up that you're already holding up will no
longer shoot them.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-02 10:38:02 +12:00
Thunder12345 461ef29f18 Bows no longer randomly become unusable (#75058)
## About The Pull Request

Fixes bows randomly becoming unusable.

On firing bows were leaving behind a reference to their casing in the
internal magazine. As arrows are technically caseless ammo there was no
way to remove this casing, and eventually it would turn into a null,
rendering the magazine unable to load any new arrows.

This is fixed by adding a check for whether the ammo is cased to all
ballistic guns in `process_fire()`. Caseless ammo has its casing removed
from the magazine's `stored_ammo` list to prevent it rotting away to a
null down the line.

While I was here renamed and autodocced the var `heavy_metal` which
appears to be exactly the var for having a casing that I needed.

## Why It's Good For The Game

Bows becoming randomly useless because of leftover vars is bad and
silly, and so are mystery meat vars with undescriptive names and no
autodoc.

## Changelog
🆑
fix: Bows will no longer randomly stop taking new arrows.
/🆑
2023-05-01 14:08:12 -06:00
Zonespace 0d4ec59197 Miner Style Points 2: Style on Everyone (#74690)
## About The Pull Request
A re-open of https://github.com/tgstation/tgstation/pull/66326 with
Fikou's permission

Adds the style meter, it can be bought from the mining vendor for 1500
points, it is an attachment to your glasses.
The style meter creates a display on your hud, with your recent actions,
like attacking enemies, killing them, mining ore etc. Actions like
spinning or flipping increase your score multiplier, making you get more
points.
Your style meter affects how much ore you get from mining rocks. By
default with the meter, you get 20% less ore, but at the highest, you
can get 1.2x the ore from mining. In addition, on B-tier or above, you
can "hotswap" items, by attacking an item in your backpack with one in
your hand (should it fit and all that). Also features a leaderboard for
highest style point count!

New streamable: https://streamable.com/eewi6l

The following are sources of points:

- Killing things
- Killing big things
- Killing small things
- Punching things
- Melee'ing things
- Mining rocks and ores
- Having matrix traps detonate
- Hit, defuse, and detonate gibtonite
- Detonate crusher marks
- Scan geysers
- Parry projectiles (others or your own)

Oh, right. While wearing the style meter, you're able to parry any
lavaland-based projectile by clicking on it or the tile it is on, which
reflects it back in a 7 degree arc, making it 20% faster and 15% more
damaging. Usually not very easy.

Maybe-plan in the future for some syndicate variant of this (with bullet
parrying and appropriate style sources, etc.), but not for this PR

Thanks to Arcane, multitooling the style meter will make it play some
sounds on rank-up.


![image](https://user-images.githubusercontent.com/41448081/231605640-a01c2b60-1ba1-4390-8bea-0aa804ea1973.png)

https://streamable.com/nheaky

Parrying in action

## Why It's Good For The Game
Makes miners bring more ore in a fun way.

## Changelog
🆑 Fikou, Zonespace, Arcane for voicing
add: The mining vendor now has a style meter. This meter gauges your
style points and uses them to improve your ore yield.
/🆑

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
2023-04-29 02:33:09 +00:00
tralezab bc813ab93d Cleans up + Improves bows, Sorts files, Adds the Divine Archer clothing, weapon, rite (#74811)
## About The Pull Request

### Divine Archer 🏹 


![image](https://user-images.githubusercontent.com/40974010/232647927-aace69ea-bda8-4ec9-9bf1-60140034fbb3.png)

Adds a new chaplain weapon and suit of armor, the divine archer. It's an
orderable set of armor, but provides less armor than the rest, but you
get more pieces of armor (boots, bracer, undersuit).

The divine bow comes with a quiver that holds holy arrows. The holy
arrows come with bane support, dealing critical damage to revenants.

### Bow Features  

- arrows can now be dipped in poison

### Bow Improvements 🔧 

- bows now drop their arrow when you put them on your back while nocking
a bow
- bows give feedback for trying to draw without a nocked arrow
- codewise, bows support subtypes much better. They still have
hard-sprited loaded arrows, but one day that'll change.

## Why It's Good For The Game

Yeah, we could add null rod #2342 that does almost the same as the
others, or we could have a unique bow weapon!

Player Dev Project thread:
https://discord.com/channels/326822144233439242/1093521091957370940/1093521091957370940

## Changelog
🆑 tralezab code, Drag for the commission and player project, cre#0484
for their spritework
add: Divine Archer Armor and Weapon
qol: Bows give more feedback when you're doing something wrong, like
trying to draw without a nocked arrow
code: Sorted files, cleaned bow code up to allow subtypes
/🆑
2023-04-29 02:07:44 +00:00
rageguy505 6e1b38ec0a adds spent subtypes for some ammo and adds them to the waystation and the faceoff space ruins. (#74950)
## About The Pull Request
Adds spent subtypes for .357, .45 acp and buckshot.
Replaces live ammo with the spent subtype on the waystation and the
faceoff space ruins.
## Why It's Good For The Game
I talked with a map maker and he didn't intend for 60+ live .357 rounds
on his map.
I assumed its the same for the waystation.
## Changelog
🆑

fix: Replaced live ammo found that was unintended on the waystation and
the faceoff with spent subtypes.
/🆑
2023-04-27 19:26:18 +01:00
carlarctg 11070cca95 Adds support for ammunition 'bands' and differentiates between detective speedloaders. (#74494)
## About The Pull Request

Adds support for ammunition 'bands', basically intended to be used
rather than wholly new sprites for new ammotypes. Additionally, they're
(meant to be) greyscale, which allows one overlay to be used for many
ammo types. Only implemented on the detective revolver.

From left to right

Default
Tracking (Purple)
Match (Silvery Blue)
Rubber (Blue)
DumDum (Yellow)
Hotshot (Red)
Iceblox (Light Blue)


![image](https://user-images.githubusercontent.com/53100513/231662171-7da7c5b3-17f8-42d6-a73b-1e9624a6e4c9.png)

These sprites are damn bad, as I'm not a spriter. I would appreciate it
if someone could improve them.

I am also not attached to the specific colors, any alternatives would be
appreciated.
## Why It's Good For The Game

Tired of all speedloaders being identical.
## Changelog
🆑
code: Adds support for ammunition 'bands', basically intended to be used
rather than wholly new sprites for new ammotypes. Additionally, they're
(meant to be) greyscale, which allows one overlay to be used for many
ammo types. Only implemented on the detective revolver.
/🆑
2023-04-26 11:21:48 +12:00
DrTuxedo b2eba17f07 New laser and disabler sounds! (#74900)
## About The Pull Request
Changes old laser sounds (and sear sound) to new ones, made by me in FL
Studio.

(The sound getting too distorted when pitching up will be soon fixed, as
Goof will make pitching down of gun sounds better)


https://user-images.githubusercontent.com/42353186/233795506-d68825d9-63a5-4cff-a52d-9fc949f2ec13.mp4


https://user-images.githubusercontent.com/42353186/233795520-525bada0-265c-4003-bb76-0b256ee844fb.mp4


https://user-images.githubusercontent.com/42353186/233795548-e97528ab-c9d6-4389-bee1-f849ceb71c60.mp4

## Why It's Good For The Game
For a long time, people have always been liking ballistics more than
laser for many reasons.
But I often heard that the ballistics sound gives feedback of a punch
and that laser guns (especially disablers) sound like toys.

And to make the laser more satisfying and intimidating to use, I have
created new sounds for them which are more in-depth. And also changed
the sear sound (when you get hit by a laser) to give more of a punch.
## Changelog
🆑
sound: Disablers and lasers have a new deeper sound to them
sound: Sound of lasers hitting a person now are giving more of a punch
/🆑
2023-04-23 22:59:59 -07:00
Borisvanmemes b2b7fb1752 Buffs the Bulldog (#74781)
## About The Pull Request

Buffs the Bulldog via giving it a damage modifier of 1.2.

## Why It's Good For The Game

Assuming default ammo, the C-20r is 30 damage a shot. The M-90gl is 35
damage, and has grenades as a side dish. The Saw is 30 and is fully
automatic. The Sniper is 70 alongside having incredible range, stunning,
and delimbing.

The Bulldog when loaded with buckshot does a grand total of 45 damage
point blank.

That's a pretty rough comparison, and once you take into account the
other types of ammo nukie guns can use, it doesn't get much better. As
is the only real usecase for the Bulldog is meteor slugs, and you're not
really using those for murder anyways.


## Changelog


🆑
balance: Bulldogs now hit 20% harder with their projectiles!
/🆑
2023-04-23 11:29:36 -04:00
vect0r c4d5b1ec51 Makes the blowgun not need to windup before shooting (#74641)
## About The Pull Request

Removes the windup before shooting a blowgun

## Why It's Good For The Game

The blowgun already has 25 oxygen damage, and stamina drain when you
fire it, which puts it way below a syringe gun. This also gets rid of
the "one viable option" of ranged syringe gun that people rush, because
maybe if somebody steals the syringe gun, you can still make some
(worse, but viable) syringe gun.

## Changelog

🆑 Vect0r
balance: The blowgun no longer takes time to windup before you can shoot
it.
/🆑
2023-04-15 21:51:45 -06:00