* Crushers and PKAs: Coop Upgrades (#81940)
## About The Pull Request
This PR makes 2 changes, one to the crusher and one to the PKA
Crushers: Their projectile no longer overrides eachother, so a mob can
have the blue bubble from several crushers. Triggering it will only
trigger the one that you own, so each player has to go hit the mob to
strike.
PKA: Fixed the minebot passthrough upgrade, and also adds a human
passthrough upgrade. They are incompatible with eachother, so you choose
between solo+minebot or coop, which is a compromise I thought as a
better alternative to taking mod space (the minebot passthrough
currently takes none). This upgrade is available solely at the mining
vendor, for 750 points.
## Why It's Good For The Game
The new mining has been great, and one thing I love is that it
encourages more coop play. Excavating boulders with other miners is much
more engaging and has good teamwork in it, and also is a good way to
encourage miners to stick together more and even fight megafauna in
pairs.
This hopes to make that easier to do, because currently having anyone
with a crusher is sort of a detriment to the whole team. Either the PKA
dude will accidentally shoot the crusher user while they're going in for
a melee kill, or 2 crusher users will be constantly erasing the mark of
the other. This will hopefully make that aspect better, and make mining
with friends a little better.
## Changelog
🆑
balance: Crusher marks no longer overwrite eachother, fauna can have one
from each crusher.
balance: Ash drake's crusher trophy no longer affects people the same
faction as you (like hiero trophy), so you won't friendly fire people
with it.
add: Added a new upgrade: Human Passthrough. You can shoot your PKA
without having to worry about friendly fire with this, for 750 mining
points at your mining vendor.
fix: Minebot passthrough upgrade now properly makes PKAs pass through
minebots.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Crushers and PKAs: Coop Upgrades
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Thermal Pistol Rework Attempt Two: You Spin to Win (it uses the crank energy weapon mechanics) (#81819)
## About The Pull Request
Thermal pistols now can be 'cranked' in order to reload them, similar to
a smoothbore disabler. Each 'crank' recharges one shot out of 8 shots.
And by crank, I mean you SPIN THE GUN. In order to spin guns, you need a
holster. So, without a holster, you can't utilize this mechanic of the
pistols.
(Also they're more accurate while dual-wielded hoo haa)
Thermal pistol crates are now slightly more expensive, at 2000 credits.
(is this even a balancing point now that we have stocks?)
## Why It's Good For The Game
People really liked what was going on in this [PR with the gun flipping
resulting in a
reload](https://github.com/tgstation/tgstation/pull/76076). However, it
was...maybe a little too strong.
As a more middle ground approach, the gun crank component was a
particularly helpful addition to the game that allows for things
like...slow bullet-by-bullet reloading of even energy weapons.
## Changelog
🆑
balance: Thermal pistols can now be 'cranked' to recharge shots. You
must have a holster equipped in order to utilize this feature. Also,
they have a tighter dual-wield cone.
balance: Thermal pistol crates are now 2000 credits, up from 1400
credits.
/🆑
* Thermal Pistol Rework Attempt Two: You Spin to Win (it uses the crank energy weapon mechanics)
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Buffs the SC/FISHER Saboteur Handgun. (#81553)
## About The Pull Request
The saboteur gun will now silence pAIs, toggle off radio broadcasting
(won't auto-relay nearby speech), disable turrets, chill out secbots a
little, and turn off APCs like power outages do.
The disrupt duration has also been buffed from 10/20 to 15/25 for ranged
and point-blank respectively.
Removed a conspicious chat message from an otherwise inconspicious gun.
Brought the code up to date.
## Why It's Good For The Game
The concept is cool, alas it's also undermined by how much of a joke
it's right now, and the game has plenty already.
The amount of interactions it has with things is underwhelming, so you
could barely consider it a stealth tool. The duration is also quite
scarce, I pointed that out in the original PR too.
Basically, I want to make the item cooler.
## Changelog
🆑
balance: Buffed the duration of the SC/FISHER Saboteur Handgun's
disruption effects. It's also stealthier and it won't conspiciously
alert living mobs hit by it.
add: Added saboteur interactions with radios, pAIs, turrets, secbots and
APCs.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Buffs the SC/FISHER Saboteur Handgun.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Adds and improves logging for various shit. (#81738)
## About The Pull Request
Adds logging for RCD construction and deconstruction. Hallucinated
projectiles no longer causes logs. Flamethrowers log gas mixture
information, the flamethrower, the gas tank, tank distribution pressure
and whether it was lit. Adds a lot more logging to records consoles.
Frozen objects now log when they get shattered.
## Why It's Good For The Game
Closes#68452Closes#71798Closes#78008Closes#81098Closes#81130
## Changelog
🆑 Pickle-Coding and Rhials
admin: RCD construction and deconstruction are logged.
admin: Hallucinated projectiles no longer log.
admin: Gives more detail to flamethrower logging.
admin: More actions are logged for records consoles usage.
admin: Frozen object shattering is logged.
/🆑
---------
Co-authored-by: Rhials <Datguy33456@ gmail.com>
* Adds and improves logging for various shit.
---------
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
Co-authored-by: Rhials <Datguy33456@ gmail.com>
* Fixes the M-90GL saying that it takes 5.56 when it actually takes .223. (Shush this is the same bullet) (#81716)
* Fixes the M-90GL saying that it takes 5.56 when it actually takes .223. (Shush this is the same bullet)
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Fixes complex lights not handling moving well, renames lighting defines (#81423)
## About The Pull Request
[Fixes static lights not
moving](ffef43c05a)
Worked fine when the owner moved, but if the owner was inside something
else, it would try and trigger an update on the PARENT's lights, which
are obviously not us.
[Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they
do](de73a63bd4)
People keep trying to change the lighting system of lamps and it makes
me mad.
I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a
better name for turf matrix lighting. Suggestions welcome
## Why It's Good For The Game
Closes#80005
Hopefully improves understanding of lighting at a glance
## Changelog
🆑
fix: Fixes fancy lights not updating their source location when picked
up and moved
/🆑
* Oh well
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
ArcMining Pr Beta: Version 1.2 (#78524)
This one's not like the last one, so much so that I'm not even going to
outsource the PR description to a robot this time!
Basically, **You should read the PR body before assuming that everything
is the same as last time. It's not.**
Click the link below to see a video summary of the main features of this
pull request.
https://youtu.be/Aho2omR0mjY?feature=shared
This pull request serves as a large rework of minerals produced by
mining, and by extension mining itself. I'll try and list each change
and it's associated nuance here.
The biggest addition to the game with ArcMining is **Ore Vents**. Ore
vents spawn as a ruin on the map, placing a randomized ore vent onto map
generation. Ore vents spawn in 3 different sizes, **Small, Medium, and
Large**. These vents will pick from a pool of materials they can
generate, and will hang out across the map. A player can use a mining
scanner to discover an ore vent, granting a small quantity of **mining
points** to begin with. Once scanned, ore vents will show what minerals
that ore vent will generate after they're fully tapped.
Scanning the vent again will trigger the extraction process. A small
drone will fly down, called the NODE drone, and buckle onto the vent.
Your job during wave defense is to protect the drone and to defeat waves
of randomly spawning mobs (dependent on if you're on lavaland or on
icebox). The quantity, duration, and time between waves is scaled to the
size of the vent you're protecting. Starting by scanning and protecting
lower tier vents earlier in the shift is a safer bet than doing a large
vent in the first few minutes. The drone has 500 health, and can take a
good few hits, but leaving it alone will cause it to meet an unfortunate
end quite quickly.
Cooperation can be your best asset, as mining with allies can greatly
help with wave defense, and mineral points are granted to anyone who
helps with defending the ore vent equally (So 500 * size tier,
regardless of how much help you receive). Once complete, the ore vent
will have a mining machine constructed on top of it, and will start to
dredge up **Boulders** from the earth automatically. More on boulders
later.
Ore vents can be located based on your mining scanner, and will provide
an appropriate audio cue based on if the ore vent has been discovered or
not, and once processed will no longer alert you to it's presence.
**Each station comes with a free vent that produces exclusively iron and
glass, free of charge.** This is to help with shifts where the station
may not have shaft miners to produce minerals, and to provide the
station with a baseline amount of minerals where none may exist
otherwise.
Mineral generation has been completely reworked. Previously, Mineral
Generation had a flat 13% spawn rate in-game. Once minerals spawned,
they would also have a chance to propagate their minerals to nearby
tiles, resulting in a rather massive pool of minerals that could spawn
throughout lavaland on the whole.
This tweaks that, by making minerals in walls spawn based on their
proximity to ore vents on maps that use cave generation. Both the
probability, and quantity of ores spawning in walls is scaled based on
distance, with ore vents looking like large caches of ores found in
walls. This makes following ores found in walls and checking their
quantity of minerals spawned a good indicator of how close you are to a
nearby vent in-round.
This means you can collect some points form both discovering ore vents
first, as well as collecting their surrounding ores, turn those in for
mining points, and then trading them in for gear upgrades to more
effectively take on ore vents. As a result of tweaking the balance of
this, the total amount of ores spawned in walls overall has been
decreased. However, by making more of the process time based, we still
result in a mostly balanced finished product.
On station, there are now three new machines. These are the BRM, the
Refinery, and the Smelter.
- The BRM acts as a teleporter. Instead of needing to carry boulders
back to the station, you can activate the BRM, and it will automatically
pick boulders to teleport back to itself. You can use this to teleport
boulders dredged up from lavaland onto the station for processing. **The
BRM will only lock on to boulders that are resting on an ore vent.**
Moving boulders back by hand will mean you'll have to haul it back by
hand.
- The refinery processes the non-metallic materials out of boulders.
This process sends the materials straight to the ORM, and collects
mining points from the ores smelted in the machine. Swiping with an ID
card lets you withdraw those points for your own personal account, but
remember that these points are for your whole team to share from. The
**Mining points obtained from this process is only 75% of the amount an
equivalent amount of ores would provide.**
- The smelter works nearly identically, however the smelter produces
metallic materials out of boulders instead.
- Once a boulder has had all of it's materials extracted, it's broken
down and deleted from the line. Otherwise, the boulder is spat out for
the next machine to process it (either the refinery or smelter).
- Once there's no minerals left in a boulder of any type, the refinery
or smelter will break the boulder down.
- Boulders **do not stack onto tiles with each other**, so they'll block
each other when pulled or when moving on a conveyor belt.
Boulders can also be processed by hand. Using a mining tool on a boulder
with right click will allow you to break down a boulder into it's
composite ores, but limits you to a maximum of 10 ore per boulder, where
the full amount can be extracted using the proper processing machines.
Also, processing by hand does deal small amounts of stamina damage over
time, do breaking a full large boulder can be particularly taxing.
Additional Boulder Processing Machines can be built, with the BRM board
being obtained from the Protolathe, while the Smelter and Refinery
boards being obtainable from the Autolathe instead. A _boulder
processing beacon_ can also be obtained from the mining points vendor as
a reward to assist with boulder processing. Boulder processing beacons
can be used to spawn in a new BRM, refinery, and smelter on the tile the
user is standing on, however **you'll still need to link them to the
ORM**!
All three machines can be upgraded with Stock Parts, allowing for **more
boulders to be processed at a time**. It does not, however, increase the
amount of minerals received from boulders, or points earned.
Mining borgs have been given some minor adjustments to compensate for
the changes to mining. Their mineral scanner, which now has an active
component to gameplay, is now a module as opposed to built into the mob.
This module allows for the same ability to discover and start waves of
monsters to fight.
Mining modules will find that their PKA now has a total of 90% mod
capacity as compared to the 80% they had before, to allow for more
robust defense of ore vents.
In addition, all borgs and AIs can interact with the BRM for boulder
collection.
Mining Mechs have had their utility tweaked as a result of these changes
as well. Mineral scanners to be used on mining mechs now have a larger
radius by comparison to their handheld cousins. Similarly, it now has an
active scanning button, which will actively discovery nearby ore vents.
To begin wave defense, you will need to hop out and scan a second time
however, so that you can properly accept the risks of drawing a horde of
bloodthirsty wildlife towards you and your companions.
Mechs can also manually process boulders, similar to mining tools using
their drill.
Golems, being more gentle and less aggressive than humans, while being
made out of LITERAL ROCKS, have a greater need to secure access to ores
and minerals to eat. As such, they have adapted to be able to do two new
things:
- Golems may now right click ore vents to be able to manually haul a
boulder out of the vent. This costs a hefty amount of stamina, but it
allows for golems to avoid combat during regular gameplay.
- Golems may now left click a boulder with an open hand in order to
manually process a boulder like a pickaxe. While not faster, it is
consistent and prevents golems from starving if they have access to a
vent, but no ores, somehow.
The labor camp, being a camp for rehabilitation and ~~excessive manual
labor~~ has been tweaked. Boulders now replace the random minerals
located on their island, and to acquire their prizes inside, much be
excavated and then broken out of the rock. Now YOU TOO can excavate
minerals and become a true mineral hero by working your way to freedom.
As a result of fewer mining points being available across the map due to
the new ore spawning mechanics, and the shift in how and when ores will
be coming in, almost every progress based mining point cost has been
reduced by around 10-20%. Many numbers are still subject to change at
present, but the idea is that core progress unlocks should be made a bit
more available earlier in the round before players can start to solo or
duo larger or more difficult ore vents, after which they'll be rolling
in ores.
Every once in awhile, an unusual boulder will get hauled up from the
mineral rich depths of lavaland. These **Artifact boulders** can
occasionally produce rare items, but for now they've mostly just been
pulling up **Strange objects** for science. Nanotrasen Natural Sciences
department will reward you extra points to be collected by boulder
processing machines for successfully extracting one. In the future, this
opens up a passive reward space that mining can reward to the station,
like providing cytology DNA samples, ancient seeds, or other artifacts.
- Boulders can be stored in all varieties of ore boxes (ground, mech)
should you choose, however as mentioned it's best to leave them where
they spawn and teleport them to the station for convenience.
- Maps that are not subject to cave generation will find that they are
largely untouched in terms of mineral balance.
- Future or existing ruins can now be tweaked to have a mineral balance
cost, as the ore vent ruin does. This will allow us to spawn in more
interesting ruins for pre-made combat challenges.
- There are unique ore vents that spawn across the map, that will summon
a boss mob relevant to that map. If the boss mob is defeated, that vent
will spawn large boulders pulling from every possible ore type that can
spawn. Not for the faint of heart!
- Similarly, the number of ore vents and mineral budget is now
adjustable in the cave generation procs, so maps may spawn with more or
less ore vents as desired for balance.
- Artifact boulders opens up a LOT of room for possible future content
like archaeology, xenoarch, artisci, and other design spaces!
- Megafauna STILL SPAWN ON THE MAP. They just happen to spawn in
addition to boss ore vents.
- **I'll add more to this as I get asked questions and remember things,
this is a huge PR and I'm confident I've missed at least something**
I outlined a lot of this in #78040, so I'll try and keep this relatively
snappy this time, while noting that I've made some concessions to make
the whole system a lot more playable while not trying to break out
design decisions that are at the end of the day, better for the game and
the overall resource balance in round.
Minerals are a very poorly balanced system, and have been since their
inception many years ago. We heavily rely on mineral balance in round,
and yet we've really only balanced it by introducing so much supply that
there's no equivalent exchange for materials that doesn't just heavily
flood the exchanged material. For example, items printed from materials
that are otherwise considered "rare" on master exist in such quantities
and they'll never practically run out in our allotted 90 minute time
slot design. This PR adjusts how ores spawn to a point where we can
minimize the amount of ores that need to exist on the map for mining to
be able to progress, while still providing enough resources for the
station that it covers the needs of the station adequately.
Miners will need to be more strategic about what resources they've
collected, and be able to make decisions about which vents are worth the
risk of attempting to fight, how to prepare for a wave defense, and when
to head back up for upgrades, while finally giving them at least some
kind of incentive to work together and use different equipment.
Resonators make cleaning up the caves around vent easy, sandbags set up
easy defenses for your vent, mechs can serve as a wider range radar
while mining, all while still providing a new gameplay loop to mining.
By limiting the amount of ores that can enter the round from the
massive, massive amounts that were coming into the round beforehand (see
gameplay to the processing of minerals. I have some plans for that,
however this PR already got bloated really REALLY badly due to scope
creep and the number of intersecting systems that rammed into each other
to make this PR possible. So that'll be next. Plus, as I've mentioned,
we open up places for ore processing to find fossils, relics, and other
things that can implemented down the line.
Overall, I don't expect this PR to save or kill ore balance, but we gain
a LOT more control over it through the use of our mining defines
attached to this PR, and at the end of the day, that's a great place to
start off of.
🆑
add: Added ore vents. Scanning them with mining scanners shows what
minerals they contain. Scan again to fight off a horde of beasts as your
drone assistant excavates the vent, so the ore vent will produce mineral
boulders!
bal: Ores that spawn in walls now spawn based on their proximity to ore
vents, with their chance to spawn and their minerals contained scaling
from low to high.
add: Added the BRM, Refinery, and Smelter. These pieces of equipment are
used to process ore boulders into minerals for the station. Stock Part
upgrades allow more boulders to be processed at one time. They collect
mining points as well, to be redeemed with an ID card swipe.
add: Boulders are teleported to the station via the BRM if left
untouched. Boulders can also be cracked open for a reduced amount of ore
using pickaxes or golems hands.
add: All stations come equipt with a pre-excavated ore vent, which
produces a basic supply of iron and glass only. Scan other vents for
your critical resources!
add: Look there's a shit ton of changes on mining, for more detail check
out the Pull Request: https://github.com/tgstation/tgstation/pull/78524.
sound: New sounds and noises for your high octane factorio-like
gameplay!
image: All new boulder sprites for the new minerals and rocks added to
the mining gameplay loop, as well as mining machines!
image: Overlays appear over vents when scanned to let you know their
contents at a glance when actively scanned with any mining scanners.
/🆑
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Removes timeout_mod arg from add_mood_effect (#80964)
## About The Pull Request
Partial Revert of https://github.com/tgstation/tgstation/pull/80800
Assuming every num passed in the parameters of `add_mood_effect` is a
`timeout_mod` is incorrect, because there can be mood events that take a
numeric arg which is not meant to be multiplied against the timeout.
This leads to the same issue as multiplying it with strings essentially
(in one case, shown below, this results in a negative duration of a
timer).


Plus having a keyword arg that may or may not actually be what the
keyword arg claims to be is really confusing and bad.
Instead here's what I propose: passing in an instantiated mood datum
itself, which has been modified, and copying the timeout from it before
discarding it.
It is not as clean as I'd prefer either, but at least it's logically
sound and the intent is clear, and it's the best I can think of short of
a major refactor of the entire system for this one small thing which is
only being used by food quality.

## Why It's Good For The Game
Clearer, less smelly code.
## Changelog
🆑
code: removed the timeout_mod arg from add_mood_event, which was only
used for one thing and causes more issues than it's worth
/🆑
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* fixes a bunch of moodlets potentially lasting forever (less band-aidy) (#80800)
## About The Pull Request
In a previous PR (https://github.com/tgstation/tgstation/pull/79661), I
noted that a lot of moodlets tended to have their timeouts break because
it was passing their names and whatnot as a parameter, that gets fed
into the timeout modifier parameter, causing the timeout multiplier to
break, because BYOND type-agnosticism means that it can multiply a
number (timeout_mod) by text (a name or some other object), resulting in
0 - which makes a moodlet permanent. This is probably not intended.
This fixes that in two ways:
- Adding a `1` to potentially applicable moodlets (searched for with a
regex of `.add_mood_event(.*, .*,)`) just to make sure the timeout
doesn't get multiplied out weirdly.
- Making the add_mood_event thing CRASH() if the timeout_mod is bad.
If someone else wants to come up with a solution better than this,
please do.
## Why It's Good For The Game
Maybe having your arm permanently fall asleep after getting it
reattached sucks, moodlet-wise. (Being stuck with permanent
positive/negative moodlets is probably not intended.)
## Changelog
🆑
fix: Moodlets with parameters/effects e.g. limb reattachment moodlets
should probably disappear more appropriately.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
* fixes a bunch of moodlets potentially lasting forever (less band-aidy)
* wew
---------
Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fishing hook and reel line tweaks (also qol for the fish bounties) (#80599)
## About The Pull Request
This PR includes a series of small changes and additions to hooks and
reel lines, as well as the aforementioned bounties. My objective here is
to make the (base) hook and reel line feel more useful. Ditto with a few
other things.
Here's the list of changes:
- Almost all fishing rods come with a hook and reel line pre-installed.
The rod from the fishing toolbox comes with separate hook and reel line.
- Without a hook, you cannot fish. Without a reel line, the cast range
is reduced (from 5 to 3).
- Fishing with a reel line installed provides a mild boon to completion
speed by default.
- The sinewy reel line (craftable from lavaland mobs) can now be used to
fish on lava / liquid plasma, but it's a bit stiff and gives a mild
malus to completion speed.
- Unlike other hooks, the rescue and jawed hooks now allow you to cast a
line and reel in living mobs too, not only items. They even get a status
alert they can click to un-snag themselves, or move away far enough to
achieve the same effect.
- Master fishing rod buffed. It now comes with a flexible reel line and
weighted hook pre-installed, and can be cast further than other rods.
- On top of that, the jawed hook will slow down living mobs snagged by
it and is a bit harder to remove.
- when casting a line, it will now show the icon of the current hook as
projectile, not a generic one.
- Reeling now correctly checks movement resistance and anchorage.
- Reeling an object (or a mob) now plays a sound. Ditto for
installing/removing slotted items.
- A few balloon alert feedbacks.
- Minor code improvements.
- The jawed hook should look a smidge sharper.
- reel lines are now small items.
## Why It's Good For The Game
The base hook and reel line didn't do anything begin with, and you would
do just fine without them. In the end it's just a bit unintuitive for
them not to be a requirement.
Beside that, it makes sense for the rescue hook to be able to snag mobs,
so they may as well be used to drag people out of lava or liquid plasma.
As for the jawed hook, it always felt to me a bit underwhelming and a
bit of a filler I had cooked up on the moment. It really could have some
'tactical' utility in virtue of being one of those niche black market
items.
## Changelog
🆑
add: Most fishing rods come with a hook and line preinstalled. Fishing
toolboxes come with separate reel and lines as usual.
balance: Fishing hooks are now required to fish.
balance: Without a reel line, the range of fishing rods is reduced by
two tiles. Conversely, having one installed gives a mild buff to the
minigame completion speed.
balance: The craftable sinewy reel line can now be used to fish on lava
or liquid plasma, but it's a bit harder to use.
balance: The rare-to-find-in-maintenance master fishing rod now comes
with a flexible line and weighted hook preinstalled, and has better
range than other rods.
balance: Fishing reel lines are now small enough to fit pockets.
add: The rescue and jawed hook can now snag and reel in mobs, not only
items. The jawed hook also slows down when applied, a la beartrap.
qol: Fish bounties now accept filled (stasis) fish cases.
qol: Several balloon alerts for fishing rod interactions.
fix: Reeling in items (and mobs) now respects movement resistance and
anchorage.
fix: Fixed the fishing rod equipment UI being too small to fit its
components.
sound: Reeling in something now plays a sound.
/🆑
* Fishing hook and reel line tweaks (also qol for the fish bounties)
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Stop misfiring from re-iterating and looping through every munition in the mag like that doesn't make much sense. (#80796)
## About The Pull Request
So, the misfiring proc (`blow_up`) can trigger even when the shot is
aimed at oneself, which is what the proc does. It also tries to loop
through every loaded projetile in the magazine when you only need the
chambered round, which is the one we're going to fire anyway. It's...
just plain dumb and can freeze your game for a fair bit.
## Why It's Good For The Game

## Changelog
🆑
fix: Fixed misfiring for firearms like tinkered detective revolvers.
/🆑
* Stop misfiring from re-iterating and looping through every munition in the mag like that doesn't make much sense.
---------
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* Correctly offsets bayonets on pipeguns (#80805)
## About The Pull Request
Changes the offset for pipegun bayonets to align with the gun properly.
Fixes#79607
## Why It's Good For The Game
Floating bayonets are ugly
## Changelog
🆑
fix: Pipeguns no longer have floating bayonets
/🆑
* Correctly offsets bayonets on pipeguns
---------
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
* Fixes every instance of 'kenetic' in the codebase (#80782)
## About The Pull Request
There were several instances of this being misspelled as 'kenetic'
rather than kinetic. This fixes that.
## Why It's Good For The Game
oughe
## Changelog
🆑
spellcheck: Corrects every misspelled 'kenetic' in the codebase.
/🆑
* Fixes every instance of 'kenetic' in the codebase
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* fix a hard delete in basic statues (#80696)
## About The Pull Request
if the creator of the statue got deleted, it might cause a hard delete.
also i noticed this variable wasnt being used so i removed it and
instead directly added the ref of the creator to the mob's faction list.
also i noticed the proc that was setting it had alot of nested
typechecks so i split it into child procs
## Why It's Good For The Game
fixes a hard delete
## Changelog
not player facing
* fix a hard delete in basic statues
---------
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
* Balance changes to swords, energy shields and modsuit shields. (#80072)
## About The Pull Request
### Sword Weaponry
Mundane sword weapons of all sorts do not block ``LEAP_ATTACK`` attacks
whatsoever. These attacks include tackles, xeno tackles and bodythrows.
Energy swords and double energy swords only gain 25% block probability
against such attacks.
### Double Energy Sword
No longer grants outright energy projectile immunity while employed.
Instead, it just has a high probability of reflecting (the typical 75%
to block any other attack). So, very solid defense against energy
projectiles, but not immunity.
Against non-reflectable projectiles, like ballistics or nanite bullets,
the desword only has 50% block, similar to an energy sword.
To compensate for the loss of defensive power, we'll make it all the
more rewarding for getting on top of someone with the sword by giving it
40 force while active. And also it costs 13 TC.
### Combat Energy Shield
This also lost outright energy projectile immunity, but gained the
standard blocking power of shields on top of the ability to reflect
energy projectiles when they block them. This significantly increases
the shields potential effectiveness while no longer pigeonholing the
shield to only energy weapons. (This makes them exceptionally good
against tackles and body throws, by the by).
Deathsquads still have the perfect deflection energy shield so that they
can continue to spam pulse shots with impunity.
### MODsuit Shield Module
Only has one charge instead of three, but it recharges in half the time.
This is no longer such a perfect defense, and does somewhat need you to
be thinking about how you're utilizing the shield rather than not
thinking about defense at all by barreling forward under three potential
hits worth of protection.
Also much cheaper, at almost half price of 8 TC. Because of how cheap it
is (and how much it still is necessary to keep you alive), I've put it
into the core equipment box (which brings the price up to 22 TC. As a
reminder, this is not meant to be at any discount, and is more aimed
towards teaching newer players which items contribute towards success.
If you don't want all the times within, don't buy this box, just buy
what you want separately.)
## Why It's Good For The Game
This is a doozy of an explanation, I hope you're ready for it under the
spoiler.
<details>
With my tackling and bodythrow prs, numerous people expressed
exasperation at the fact that these two tools may have been keeping some
outlier antagonist gear from becoming too easy to steamroll with if you
already knew what you were doing. My intent was to create consistent
rules and behaviours that both A) did not rely on bugs to keep the
balance of power from tipping one way or the other, and B) was at least
consistent or had consistent rules established.
This PR is tackling overperforming gear combinations for already
competent nukies that may have, over time, crept out of control, and
applying some consistency to the rules around similar equipment.
AND also deals with quite possibly the most braindead element of game
design we've tolerated for about a decade, and half a decade after it
was necessary to maintain that decision.
Part of the culprit of this issue is that, specifically in regards to
nukies, crew can't use the vast majority of their weapons effectively
against them. This largely is because this antagonist can gain
immunities to those types of equipment. And that is rapidly increasing
as we move closer towards outright ballistic removal. I don't think the
game is made healthier by everyone on the station having to fight armed
mercenaries with spears, and doesn't make much thematic sense either.
More so, most greener players probably just don't know this is how it
works, and so surprise Pikachu when their lasers bounce off nukies
harmlessly. (This bit reminds me of the problem of new players using
disablers against simple mobs)
But of course, that isn't the only part of the problem. The other half
is due to being able to be layered on a much more broad defensive tool
in the form of the MODsuit Shield Module, whose three charges could
render the mindful nukie near untouchable if they're pairing it with
some other layered defense, such as a desword. Notice that this doesn't
really address armor. The culprit is negation, and not mitigation, and
we should be sparing in how easily we hand out outright effect negation
simply because it isn't super obvious to a new player why it happened,
and how to resolve it. At the very least, we should look to find ways to
add options for players to overcome these problems. Especially with
teamwork.
Energy projectile immunity made sense while there floated around an
energy projectile that ostensibly would down you in a single shot.
Nukies ALSO had projectile weapons that worked much the same (c-20r stun
bullets, taser shot bulldogs, etc.), so it was predominantly
tit-for-tat. These immunity granting equipment pieces forced crew
members to get shotguns and ballistic guns to fight these dangers;
something more available at the time.
We've exercised large bits and pieces of this from the game a long time
ago, but we still have some remnants convinced we're still in a
taser-rich, ballistic available environment. We need to move the games
languishing tools into the modern era and re-established their place in
the game. Namely, the double-energy sword and the combat energy shield
are almost entirely unchanged besides refactors for the last decade or
so, even while the game around them have changed. They've been a
continuous sore point for me in all my time developing and a constant
nagging issue. I want to deal with it now.
MODsuit Shield Module is just kind of really good and only made stronger
the more defenses you have. It's good to have a defense like this, but I
think it is too brain dead. With only one charge, it will save you from
a lost joust here and there, but it won't make it as simple as running
right at every problem you encounter and eating a volley of attacks
while you kill someone with impunity.
**With regards to traitors**, since they also get double-energy swords;
I'm open to suggestions if this is hitting them far too hard, but I'm
not terribly concerned using this weapon for a few reasons. **Firstly**,
I think their presence amongst the crew make it a much better weapon for
tots than nukies (in isolation) simply because they can find ways to
exploit it via tools they gather from the station. It is a force
multiplier. Traitors also have a much bigger element of surprise
usually. **Secondly**, round-start traitors typically grow to be a bit
stronger over time, but I don't foresee many waiting to pay for the
double-energy sword unless they're already flush with TC. So if a
traitor is in a position after they've unlocked access to it to buy one
of these, they are probably doing pretty okay for themselves.
</details>
### TL;DR
Defense stacking and attack immunities are not particularly healthy
things to both design around, or experience in-game. They are kind of
just relics of the past made only sorer once I ripped off a few
bandaids. This is a source of a number of symptomatic issues in the
game, so let's fix that and make it easier on all of us going forward.
Much of the way these things worked operated on extremely outdated
design considerations. It doesn't make sense for them to work like this
today, and only makes things harder by keeping the status quo.
## Changelog
🆑
balance: Mundane sword-like and medieval weapons are not able to block
tackles, xenomorph tackles and body throws.
balance: The double-energy sword and energy sword have trouble blocking
physical projectiles, body throws and tackles.
balance: The double-energy sword also no longer has guaranteed energy
projectile deflection; only doing so on a successful block (75% chance
to block).
balance: But it does have 40 force now, so it is more lethal a weapon.
Traitors can purchase the sword for only 13 TC (down from 16 TC).
balance: The combat energy shield (The one you hold) now functions as a
normal shield (it used to only protect you against energy projectiles
and nothing else). It loses guaranteed energy projectile deflection, but
still reflects the projectile so on a block.
feature: Death commandos continue to have their energy shields deflect
all incoming energy projectiles. Because who cares about deathsquads
being balanced?
balance: The MODsuit shield module only has one charge, but recharges
every 10 seconds. It also costs 8 TC (down from 15). It is also now in
the Core Gear beginner box (bringing the total price up to 22 TC).
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Balance changes to swords, energy shields and modsuit shields.
---------
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Attack chain refactoring: Broadening `tool_act` into `item_interact`, moving some item interactions to... `atom/item_interact` / `item/interact_with_atom`
* Patches up merge skew (#80197)
## About The Pull Request
Yeah #79968 (1e76fd70b4) was not
compatible with master but no one said anything on the PR so i got
jebaited into merging it. The code should be up to the same standards
per the documentation I read (preventing thwacking the target in certain
situations while not returning anything in other situations)
master will definitely compile now though
* Patches up merge skew
* Merge conflicts
* Modular adjustments
* Removes this entirely duplicated proc...
* Update tool_override.dm
* Update weldingtool.dm
* Update tool_override.dm
* Update tool_override.dm
* Nope. Copy paste begone.
A skyrat edit is so much easier to deal with here
* Update brand_intelligence.dm
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Removes an exploit that can farm Russian revolver moodlets, adds Russian revolvers to the contraband section of games vendors (#80159)
## About The Pull Request
Fixes https://github.com/tgstation/tgstation/issues/80158 by making
curses block you from playing Russian roulette regardless of whether or
not there's a live bullet in your Russian revolver's chamber.
A Russian revolver has been added to the contraband section of each Good
Clean Fun vendor.
## Why It's Good For The Game
The bug is incredibly funny, but ~~I want GBP~~ probably should be
fixed.
There's no actual way to get (more) Russian revolvers outside of the
mapstart ones, and that can be a bit stifling to gimmicks that involve
them. And Russian roulette IS a game.
Like the roundstart ones, you could unload these vendor revolvers for
.357 bullets, but you can already just print .357 bullets from a hacked
autolathe directly, so I don't think that's an issue.
## Changelog
🆑 ATHATH
fix: Spacemen can no longer use curses to cheat at Russian roulette by
selectively blocking attempts to shoot themselves.
add: A Russian revolver has been added to the contraband section of each
Good Clean Fun vendor.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Removes an exploit that can farm Russian revolver moodlets, adds Russian revolvers to the contraband section of games vendors
---------
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Fixes issues on guns with BOLT_TYPE_LOCKING (#80154)
## About The Pull Request
Bolt-actions no longer open their bolt aftering firing their last shot.
All BOLT_TYPE_LOCKING weapons, including semi automatics, no longer open
their bolt after dryfiring
Fixes#75452Fixes#79128
## Why It's Good For The Game
Fixes unintended and confusing gun behavior
## Changelog
🆑
fix: Bolt action rifles no longer open their bolt when firing their last
bullet.
/🆑
---------
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fixes issues on guns with BOLT_TYPE_LOCKING
---------
Co-authored-by: TJatPBnJ <69724863+TJatPBnJ@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Demotes the "electrical conductivity" flag from `flags_1` to `obj_flags` (#80033)
## About The Pull Request
Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game
Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.
I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️
* Demotes the "electrical conductivity" flag from `flags_1` to `obj_flags`
* Modular
* Update misc.dm
---------
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Converts russian revolvers use of initial to the new :: operator (#79948)
What the title says...
515 is cool this is a cool operator
* Converts russian revolvers use of initial to the new :: operator
---------
Co-authored-by: Nathan Singer <supernovaa41@gmx.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* (NO GBP) Revert "Stops rebar crossbow crashing dreamseeker when fired at point blank. (NO GBP) (#79803)" (#79885)
## About The Pull Request
#79803 was opened *after* I had opened my own PR (#79587) that more
directly fixed the problem the former was opened to address. It got
merged before mine did.
## Why It's Good For The Game
It's safe to take off the metaphorical bandaid that the first mentioned
PR was.
## Changelog
🆑
fix: Rebar crossbow bolts are now reuseable again, without risking
crashing clients when fired at point-blank range.
/🆑
* (NO GBP) Revert "Stops rebar crossbow crashing dreamseeker when fired at point blank. (NO GBP) (#79803)"
---------
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
* Different pen types have unique behavior when used in foam darts. (#79587)
## About The Pull Request
This PR makes the following changes:
- Refactors inserting items into foam darts into a component on items
that can be inserted into darts
- Adds the aforementioned component to pens
- Provides an inspection tip for how to modify a foam dart
- Gives different pen types specific behavior when used in a foam dart
Pens typically give a foam dart 5 brute and 50% embed chance (affected
by falloff). The following types of pens give the specified properties
(usually directly derived from the pen's stats and additional
functions):
- Red pen (and four-color pen set to red): Slightly faster dart
- Captain's fountain pen: Slightly faster dart, and 75% base embed
chance
- Sleepypen: Tries to inject its reagents into the hit mob, but doesn't
penetrate thick clothing like syringe guns do
- Energy Dagger: 35 brute, 100% base embed chance, and slightly faster
dart
- Survival Pen: Mines rocks on impact
- Fine Tip Pen (if someone somehow manages to get one): 100 bare wound
bonus and 9000 demolition modifier
## Why It's Good For The Game
Expands the emergent gameplay possibilities of using pens in foam darts.
While there are balance risks involved with traitors being able to buy
the equivalent of reusable 45u syringe shots and 35 brute bullets, you
are not likely to get your pen back once it hits its target, unless you
somehow have the recall spell and have bound the pen to it. There are
probably more TC-efficient ways to achieve comparable projectile
weaponry, but foam dart guns have an air of subtlety to them... at least
until your skin is pierced by a pointy writing implement that may also
be something more deadly. If maintainers still have balance concerns,
please let me know.
## Changelog
🆑
add: Certain types of pens now function like you expect they would when
inserted into a foam dart
qol: Examining a foam dart closely will show you how to modify it, or
what it is modified with
/🆑
* Different pen types have unique behavior when used in foam darts.
---------
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
* Adds `UPSIDE_DOWN` movetype for negative gravity / makes Atrocinator affected by less things (#79785)
## About The Pull Request
Fixes#79764
I was going to tackle this issue by slamming `TRAIT_NO_SLIP_ALL` on
Atrocinator users and calling it a day, but like, that didn't feel
proper.
So I thought hey, we could just give them the flying movetype, even
though they technically aren't flying it means they're unaffected by
things that flying would make you unaffected by.
Nope, this means the mob technically "negates gravity", so no falling
and no feetsteps.
Let's try floating - this give us feetsteps but no falling upwards.
So instead of going back to square one, with `TRAIT_NO_SLIP_ALL`, I
decided to go for the more complex route of just adding a movetype.
Hence, move type `UPSIDE_DOWN`. This covers situations where a mob would
be "floating" above the ground, but still walking. ...Negative gravity.
This means overall the Atrociator acts more as you'd expect - you don't
slip on ice, you don't trigger bear traps or mouse traps, you can walk
over railings, unaffected by conveyor belts, etc.
## Why It's Good For The Game
Makes the Atrocinator a lot more consistent with how you'd expect for it
to work.
Admittedly it is a bit niche use of movetypes, but it can possibly be
expanded to more things in the future, who knows? I applied it to mobs
on meat spikes (even though they don't move), just for proof of concept.
## Changelog
🆑 Melbert
fix: Atrocinating mobs will now behave more as you'd expect. Meaning
they don't slip on wet patches, can't trigger bear traps / landmines /
mouse traps, ignore conveyors, and can walk over tables and railings.
fix: Floating mobs are unaffected by conveyor belts, acid (on the
ground), glass tables
fix: Floating mobs won't squish stuff like roaches anymore
fix: Fixes bear traps triggering on floating / flying mobs
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Adds `UPSIDE_DOWN` movetype for negative gravity / makes Atrocinator affected by less things
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* Makes the SC/FISHER a bit better - more range/accessibility/pacifist-usability (#79835)
## About The Pull Request
- SC/FISHER is now pacifist-usable.
- SC/FISHER black-market availability prob up to 75, from 50.
- SC/FISHER range bumped from 14 to 21.
## Why It's Good For The Game
The SC/FISHER does no damage (except against ethereals, where it does a
grand total of 3 per shot), which I think is negligible but can be
removed if it's that bad to allow pacifists a gimmick method of
murdering another guy, so I think pacifists should be allowed to use it.
The range buff and black-market availability are just because I felt
like it, since I don't think it's available enough, especially for a
doohickey whose sole purpose is "break lightbulbs".
## Changelog
🆑
balance: The SC/FISHER disruptor pistol is now more likely to show up in
black market uplinks.
balance: The SC/FISHER now has more range (21 tiles up from 14), and is
usable by pacifists.
/🆑
---------
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
* Makes the SC/FISHER a bit better - more range/accessibility/pacifist-usability
---------
Co-authored-by: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Co-authored-by: Hatterhat <Hatterhat@ users.noreply.github.com>
* Nukes radio.dmi, adds inhands for somewhat relevant items. (#79792)
## About The Pull Request
Third /icon/ cleansing splinter 1. Comments on commits say all it does
pretty much.

## Why It's Good For The Game
Inhand for walkietalkie was requested in the project, gets rid of some
usecases of old 'gangtool', headset splitoff requested by Fazzie.
Inhands reflecting the items they are supposed to represent is nice.
## Changelog
🆑
image: Following now have unique item sprites: syndicate war declaration
radio, curator and chief beacon's, chaplain beacon.
image: Following now have unique inhand sprites: radio, export scanner,
walkie-talkie, syndicate war declaration radio, curator and chief
beacon's, chaplain beacon.
/🆑
* Nukes radio.dmi, adds inhands for somewhat relevant items.
---------
Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
* More code compression for reagent holder (#79796)
## About The Pull Request
Part 2 of #79686 where we trim down the size of `holder.dm` even further
and in the process give some procs more advanced features as they get
merged with their counterparts.
**1. Removes & merges `get_multiple_reagent_amounts()` proc with
`get_reagent_amount()`**
The proc `get_multiple_reagent_amounts()` was only used by bio generator
and 1 other item with its only use being finding the sum of all reagents
present in the list returned by
`typesof(datum/reagent/consumable/nutrient)`. Currently the approach is
very inefficient because.
- `typesof()` is an expensive call which returns a long list of reagents
- `get_multiple_reagent_amounts()` would then use 2 nested for loops.
One to loop over every reagent in this holder & another inner for loop
to loop over every reagent returned by `typesof()` operator so the time
complexity of this proc is overall multiplicative which in lamen terms
means "Bad"
We can replicate the same behaviour of `typesof()` by using the
`type2parent()` proc and 1 more direct type check to get the exact same
behaviour but with much faster results, therefore reducing overall code
**2. Removes & merges `get_reagent()` proc with `has_reagent()`**
The proc `has_reagent()` is way more advanced than `get_reagent()` with
arguments requesting for a specific amount, metabolization and now even
has a new argument i.e. `chemical flag`. `has_reagent()` has always
returned the reagent reference directly and not a simple TRUE/FALSE so
it is a perfect replacement for `get_reagent()`, therefore reducing
overall code
**3. Removes & merges `has_chemical_flag()` proc with `has_reagent()`**
The proc `has_reagent()` can now look for a specific reagent with a
specific chemical flag as well as mentioned above thus it can replace
`has_chemical_flag()` therefore reducing overall code
## Changelog
🆑
code: Removes & merges `get_multiple_reagent_amounts()` proc with
`get_reagent_amount()` inside reagent holder
code: Removes & merges `get_reagent()` proc with `has_reagent()` inside
reagent holder
code: Removes & merges `has_chemical_flag()` proc with `has_reagent()`
inside reagent holder
refactor: Reagent holder code has been further compressed. Report bugs
on github
/🆑
* More code compression for reagent holder
* Update hemophage_organs.dm
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* More standardization for ghost notifications (READY) (#79596)
## About The Pull Request
I'm still not satisfied with how ghost notifications work. This gives
every notification with a source (99% of all notifications, in other
words) a link to jump/orbit. Currently, notifications with "play"
interactions would only get the interact link, so jumping to the source
was pretty annoying.
It removes posting the entire message in the alert tooltip, as some got
pretty lengthy and it didn't seem to fit. To replace this, they will
always use headers
After:



NOTIFY_JUMP and NOTIFY_ORBIT have been merged, since the only difference
seems to be whether it's a turf. The result shaves off some redundant
lines of code, since most-every usage of notify_ghosts uses
NOTIFY_ORBIT.
## Why It's Good For The Game
More standardization for the ghost notification system. Adds a few alert
headers that never had them. All in all, makes it easier for creators to
throw alerts at ghosts
## Changelog
🆑
qol: Nearly every ghost alert should now feature a "VIEW" button, even
those with click interaction.
del: Ghost alerts no longer show the entire message in the tooltip,
instead have been replaced with titles.
/🆑
* More standardization for ghost notifications (READY)
* Modular
* Update outpost_of_cogs.dm
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Stops rebar crossbow crashing dreamseeker when fired at point blank. (NO GBP) (#79803)
## About The Pull Request
Simply put, due to how "caseless" is an element added to the ammo when
it hits something, but ammo is qdeleted upon hitting someone. If shot
point blank without combat mode (for some reason) it tries to add
caseless to an ammo that no longer exists. For some reason, the result
of this is to just fucking crash DS instead of aborting the adding of
the element. The ammo isnt reusable anymore, but I'll take that over
crashing.
## Why It's Good For The Game
Removes a game-breaking bug. I hate gun ammo code so much.
## Changelog
🆑
fix: Stopped a DS crash when shooting a rebar crossbow in specific
circumstances.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Stops rebar crossbow crashing dreamseeker when fired at point blank. (NO GBP)
---------
Co-authored-by: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Code compression for reagent holder. Lowers plumbing reaction chamber tick usage (#79686)
## About The Pull Request
More code improvements for reagent holder. As you can see it removes a
lot more code than it adds so code savings are significant. This does
not touch on any floating point arithmetic, all that is behind us, this
focuses on removing redundant procs and merging existing procs to
achieve the same functionality so if you do see any changes in reagent
related behaviour it's not intentional and should be reported as a bug
here.
The following code changes can be summarized into points.
**1. Removes procs `get_master_reagent_id()` &
`get_master_reagent_name()`**
Both of these procs have the exact same functionality as
`get_master_reagent()` with the only exception of returning a different
value. Instead we can just call `get_master_reagent()` directly and
infer the name & type of it ourselves rather than creating a wrapper
proc to do it for us, therefore reducing overall code
**2. Removes & Merges `remove_all_type()` proc into `remove_reagent()`**
The proc `remove_all_type()` is highly inefficient, it first uses a for
loop to look for the reagent to remove & then it again calls
`remove_reagent()` on the reagent once it has found it. We can just
embed this functionality directly into `remove_reagent()` by simply
adding an additional parameter `include_subtypes`. This way the
operation is faster, and we reduce the code to get the job done. Also
now `remove_reagent()` will return the total volume of reagents removed
rather that a simple TRUE/FALSE
**3. Removes & Merges `trans_id_to()` proc into `trans_to()`**
Both these procs have the same job of transferring either a single
reagent or all reagents. `trans_id_to()` is a scaled down version of
`trans_to()` because
- It does not have any `method` var. This means if you want to transfer
a single reagent to a mob/organ or any other object it does not have the
functionality to expose the target to that transferred reagent.
- It does not have a `multiplier` var to scale reagent volumes
- It does not have code to deal with organs or stop reactions i.e. it
does not have the `no_react` var.
We can overcome all these short comings by simply adding an extra var
`target_id` to specify what specific reagent to transfer therefore
attaining the same functionality while keeping the benefits of
`trans_to()` proc therefore reducing overall code
**4. Lowers plumbing reaction chamber tick usage for balancing ph.**
Rather than invoking a while loop to balance ph it's much easier for the
player to simply make the reaction chamber wait for e.g. add a reagent
that will never come. This will make the chamber wait therefore giving
the reaction chamber ample time to correctly balance the ph and then
remove that reagent from the list therefore getting correct ph levels.
No need to create code hacks when the player can do it themselves so
the while loop has been removed
## Changelog
🆑
code: removed redundant procs `get_master_reagent_id()` &
`get_master_reagent_name()`
code: merged `remove_all_type()` proc with `remove_reagent()` now this
proc can perform both functions. `remove_reagent()` now returns the
total volume of reagents removed rather than a simple TRUE/FALSE.
code: merged `trans_id_to()` proc with `trans_to()` now this proc can
perform both functions
refactor: plumbing reaction chamber will now use only a single tick to
balance ph of a solution making it less efficient but more faster. Just
make the reaction chamber wait for longer periods of time to accurately
balance ph
refactor: reagent holder code has been condensed. Report any bugs on
GitHub
/🆑
* Code compression for reagent holder. Lowers plumbing reaction chamber tick usage
* Modular update
* Update alcohol_reagents.dm
---------
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
* Makes Telekinesis + Russian Revolver Interaction more fair (#79740)
## About The Pull Request
Fixes#77238
Basically, you were able to just spam kill people with the russian
revolver if you had telekinesis, which isn't really fair. Now, after
taking a leaflet out of the the discussion in that issue report, you can
still pull off the same party trick... once...
Basically, let's just say that when you focus on firing the gun in your
mind... you're also pointing it directly at your mind (your brain (your
skull (you instantly die))). This occurs even if the projectile doesn't
actually touch you (because that would be hellish to account for) but
you're the one who's playing russian roulette man
You still get to do some collateral damage because that's still a very
funny interaction but you only get to do it once per life. I don't know
if people will be happy to revive you after you "shoot" them. Also, the
way it's coded means that you can still leave the revolver on the table
and fire it at your foot or something, or just use it normally, as a
telekinesis user. This _only_ applies to distance-based firings.
## Why It's Good For The Game
The russian revolver is specifically coded to prevent you from damaging
other people, and this was a pretty silly way to sidestep that based on
the checks. Instead, let's make it so that you can still do this
admittedly funny interaction, but with enough reason to not do it (the
reason being that you'll always get fucking blatted).
## Changelog
🆑
balance: After a string of unfortunate incidents, persons with
telekinesis have been strongly warned against playing Russian Roulette,
as they tend to hyperfixate on the gun a bit too much and end up firing
it directly at their head.
/🆑
* Makes Telekinesis + Russian Revolver Interaction more fair
---------
Co-authored-by: san7890 <the@san7890.com>
* Removes suppressor from illegal tech
* Removes suppressor from illegal tech
* Makes a subtype of suppressor that are considered legal
Syndicate ones are now their own type.
* Update tgstation.dme
* Update armament_utility.dm
* Removes final remnants of 'targetted' (#79626)
## About The Pull Request
Finishing what https://github.com/tgstation/tgstation/pull/79513/
started, removes 'targetted' typo from code. Also updates the basic mob
guide with the new updated var names.
## Why It's Good For The Game
Typos bad. Accurate guides good.
## Changelog
🆑
code: gets rid of the rest of the instances of 'targetted' typo from
code
/🆑
* Removes final remnants of 'targetted'
---------
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
* Emergency hotfix for engi crossbow [NO GBP] (#79606)
Hadnt added these commits when the PR got merged due to not expecting it
oops
## Why It's Good For The Game
See above, used to make my last pr actually function as intended.
## Changelog
🆑
fix: fixed engi crossbow being able to be used onehanded + ability to
craft with sci inducers
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Emergency hotfix for engi crossbow [NO GBP]
---------
Co-authored-by: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Adds engi improvised weapon - rebar crossbow + Engi Exclusive Tot Shop Variant (#78777)
<!-- 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

Engi now has access to a Half Life 2 Inspired rebar crossbow! Made of
rods, wire, and an inducer, it shoots sharpened iron rods at a high
velocity. High damage and good embed chance, but requires you to reload
every shot which requires you to stand still for three seconds to pull
the string back. You can also Use a wrench on it to force it to store
more rods (read: more than one), but risks it exploding and shooting you
instead.
The syndicate variant, avaliable to traitor engis, can fire three rounds
before needing a reload, and features a scope and better armor piercing
ammpo, but costs 10TC. I see it as a sidegrade to the revolver - quieter
and has much more widespread ammuniton, but holds less ammo and doesnt
have the same burst stopping power. And, to those concerned about the
balance of a non-traitor with this item - the AP ammo can only be made
by the traitor who bought it, and anyone else has to use normal ammo.
GUN STAT JUNK
Normal one has 60% embed chance and does 40 damage (against unarmored
targetd), but requires you to wait at least 3 seconds not moving to pull
the string back. Good alpha strike but not sustainable in a long fight.
Its akin to a pipegun.
Lacks any AP qualities besides piercing a jumpsuit, because any wound
chance it has is due to a bare skin bonus. Generally not a great weapon
to fight sec with.
Syndie version is generally the above but better. Takes less to pull the
string back, slightly higher damage, better fire rate, etc. Doesnt fare
well against any armor thats equivalent to sec gear or better due to
most having low (relatively) AP and wound chance, but good bare wound
bonus.
STATS TLDR: Its good against unarmored chumps and greyshirts but anyone
in armor that protects against bullets will kick your teeth in.
Also, Ammo is crafted from an iron rod. I wanted to have it just fire
rods as is, but theyre stacked items which you cant define projectiles
or ammo from.
## Why It's Good For The Game
I've always felt engi, for as big of a department as it is, is lacking
in the "fun weapons" area. Sci has mechs and xenobio, med has chem nades
and syringe guns, and cargo has anything the QM will buy - but other
than the flamer and shocked doors, engi doesnt have much. Thats why I
made this pr. it was originally just a traitor item, as they lacked many
traitor items in their shop, but I felt like a worse, bootleg version
would suit them.
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
add: Enginenering rebar crossbows + tot kit
add: Added a bunch of ammos and crafting junk to make the ammo exist
image: added icond for all the above
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
* Adds engi improvised weapon - rebar crossbow + Engi Exclusive Tot Shop Variant
---------
Co-authored-by: KingkumaArt <69398298+KingkumaArt@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>