* Removes networks from the game (#74142)
## About The Pull Request
This is a continuation of
https://github.com/tgstation/tgstation/pull/74085 - I announced in the
comments there that this would be my next PR, and this is it.
Removes SSnetwork, ``/datum/ntnet``,
``/datum/component/ntnet_interface``, ``var/network_root_id``, the
network unit test, and a lot of other things related to networks.
- NTNet circuits now check for an Ntnet relay, and uses signals to
operate.
- Logs in Wirecarp is now only for PDA and Ntnet Relay things, so you
can no longer see what ruins exist using it (why should Wirecarp know
that Oldstation spawned? The flavor is that they dont know its there).
- Removed it from MULEbots entirely, I don't think it even did anything
for them? Botkeeper seems to work without it, so it's possibly there
from pre-tgui PDAs.
- Moves assigning random names to a base proc instead of being tied to
network, this is things like random-naming scrubbers/vents. The behavior
hasn't changed at all.
- Makes Ntos work for consoles when relays are down, as the comments
said they're supposed to (because they're wired). I think this was an
accidental change on my part, so this is a revert of that.
## Why It's Good For The Game
Ntnet is ancient code that hasn't given us much that we can't do with
already existing alternatives, we've been slowly moving away from it for
init times, and though a large portion of that was limited to airlocks,
I still don't think this is a system worth keeping around.
It's way too complex to expect feature coders to do anything with it,
and too old with better alternatives for anyone to want to improve any
of it.
## Changelog
🆑
fix: Computers are now properly connected to Ethernet, and can use Ntos
when Relays are down.
refactor: Removes Ntnet and Ntnet interfaces, which was only used by
Ntnet circuits (which now directly checks for a Relay to work) and
MULEbots, which did nothing with it.
balance: Wirecarp no longer tells you what ruins spawned in a round,
instead it's limited to PDA logs, and tells you the source too. This
means the RD can catch someone running illegal programs if they don't
make any attempt at hiding it.
qol: Wirecarp logs is now set to save 300 at once, instead of 100 and
being increased to 300 by the RD during the round. This is pretty
insignificant, since there's no reason to NOT want as many logs as
possible.
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Removes networks from the game
---------
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Allows any bullet class that doesn't override wound_bonus to cause wounds. (#73838)
Overrides wound_bonus for the bullet class to be 0 instead of
CANT_WOUND.
## About The Pull Request
The bullet class has wound_bonus 0 instead of CANT_WOUND. This allows
things such as 9mm and 10mm to wound, and probably other things.
## Why It's Good For The Game
Makarovs that used 9mm and some other things just didn't cause any
wounds, and that was sad. Bullets are physical things, so it doesn't
make sense to make them not cause any wounds unless they were overidden.
## Changelog
🆑
balance: 9mm, 10mm, and other stuff can cause wounds.
/🆑
* Allows any bullet class that doesn't override wound_bonus to cause wounds.
---------
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
* New var on firing pins for admins to render them unremovable. Fixes firing pin swapping overlapping balloon alerts (#73837)
## About The Pull Request
A couple weeks ago I needed a gun that could not under any circumstances
have its firing pin removed for an event, there was a var for
"pin_removable" which didn't actually do this, I've reworked its purpose
to allow admins to edit as firing pin to make it unremovable and renamed
its old functionality to pin_hot_swappable to better clarify what the
var actually did.
Also I've changed the balloon alert for pin swapping to be a single
balloon alert stating the pins have been swapped rather than two, one
for removal and one for replacement.
None of existing firing pins has had to functionality implemented on
them so its admin only for the time being.
## Why It's Good For The Game
Better readability for pin swapping and admins/future coders can make
firing pins unremovable for events/code additions.
## Changelog
🆑
fix: Firing pin swapping's 2 balloon alerts have been replaced with a
single more readable one.
admin: Admins can now edit a pin_removable var on firing pins to render
them unremovable from the weapons they're installed in.
/🆑
* New var on firing pins for admins to render them unremovable. Fixes firing pin swapping overlapping balloon alerts
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* this code is so fucking funny it makes me want to merge w/o looking
* safety component stuff
* safeties should be finished
* I loooove safety component
* I swear that's all for gun safety
* manufacturer component
* cant forget this
* this is so awful
* 1100 line long gun file
* ok it actually compiles now
* that should not be an addition of any sort
* these defines should not be used anymore
* why?? the fuck??? are there var edited fire modes on black mesa?????
* how did that even happen
* maybe ci will shut up now
* oh man so many guns are lacking autofire now
* probably fixes safety toggling
* that should reference the gun not the component
* that should probably return
* makes it replicate current behavior, defaults safeties to being ON
* and that is all i have to say about that
* its automagically
* Removes the pipegun's chance to misfire and make you shoot yourself (#73738)
## About The Pull Request
As the title might imply, the increasing percentage chance that a
pipegun misfires and fires at the user has been removed.
## Why It's Good For The Game
The pipegun already has a large number of other downsides, like a 1
round ammo capacity, it being bolt action, the fact it can get dirty and
have the bolt jam, and the 3/4 damage modifier. While these all make
sense and can make for a pretty fun improvised weapon, the chance to
misfire brings it from 'interesting' to 'unusuable in 99% of
situations'.
## Changelog
🆑
balance: The pipegun's chance to misfire and shoot at you rather than
the person you're pointing it at has been removed
/🆑
* Removes the pipegun's chance to misfire and make you shoot yourself
---------
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
* Buffs mech disabler (#72941)
## About The Pull Request
Mech disabler now is works like a shotgun, shooting 5 weak disabler
beams(15 damage, the normal disabler beam has 30). The energy drain is
increased to 100 from 30. Has a cooldown of 1.5 seconds.
The exact numbers(weapon scatter, damage, amount of projectiles) can be
discussed.
## Why It's Good For The Game
When you are trying to nonlethally deal with someone, a normal security
officer with their roundstart available equipment is more effective then
an expensive lategame mech, due to that fact that it is really slow,
cant use stunbattons and even if you manage somehow to stamcrit a person
with a mech disabler you still need some time to get out in order to
handcuff them. So mech disablers are useless, especially compared with
other mech weapons, like rocket launchers and ballistic guns. This PR
makes the mech disabler not trash, so roboticists would have a wider
choice of useful weapons when making a mech.
## Changelog
🆑
balance: Mech disabler now works as a shotgun, shooting 5 weak disabler
beams at one time.
balance: Mech disabler now uses 100 energy instead of 30, and it's
attack cooldown increased to 1.5 seconds instead of 0.8
/🆑
* Buffs mech disabler
---------
Co-authored-by: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
* Soporific magazines use the correct icon, penetrator and marksman magazines now have icons. (#73217)
## About The Pull Request
Fixes#73192
Soporific sniper rifle magazines had used the wrong icon, I've fixed
this, I'm also re-purposed an old unused magazine sprite and added a new
one for the other 2 sniper ammo types.
## Why It's Good For The Game
Bug fix + now the alt sniper ammo types have unique sprites.
## Changelog
🆑
fix: Soporific sniper magazines use the correct icon again.
imageadd: Penetrator and Marksman sniper magazines now have icons.
/🆑
* Soporific magazines use the correct icon, penetrator and marksman magazines now have icons.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Fixes reverse revolver name (#73315)
## About The Pull Request
Reverse revolver is now named "Syndicate Revolver", same as the normall
syndie revolver.
Fixes https://github.com/tgstation/tgstation/issues/73313
## Why It's Good For The Game
Fix
## Changelog
🆑
fix: Fixes reverse revolver name being different from syndicate revolver
name
/🆑
* Fixes reverse revolver name
---------
Co-authored-by: SuperSlayer <91609255+SuperSlayer0@users.noreply.github.com>
* Rebuilds Luxury Shuttle (mostly), makes it emag-only (#72940)
## About The Pull Request

Changes the really goofy old lux shuttle to a cooler layout with some
additions to make it a luxury and not just
"anti-poor-people protection + food"
Shuttle was made bigger to make it less cramped for the luxury class,
pool was moved to its own room, added an arcade
and a bar corner, has real lasers to shoot poors with (20c each shot),
has fire extinguishers now
Adds a new preopen variant of hardened shutters
Adds a paywall pin subtype for the luxury shuttle, and a laser gun
subtype
Made emag-only at a price of 10000 credits
## Why It's Good For The Game
The old luxury shuttle looked REALLY awful with its pool, was pretty
cramped even in the luxury section and BARELY resembled a luxury..
This luxury shuttle provides luxuries such as a less poorly designed
pool, more space for legs, arcade, to make it resemble a luxury unlike
the old one
## Changelog
🆑
add: Luxury Shuttle is now bigger, and less ugly! Poor people still get
it rough though...
/🆑
* Rebuilds Luxury Shuttle (mostly), makes it emag-only
---------
Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com>
* Fixes an edge case where you can get incurable plasma damage, & fixes healing sources that don't have biotype restrictions not working if the mob doesn't have the MOB_ORGANIC biotype (#73017)
## About The Pull Request
Fixes#72962
The plasma river applies toxins damage to a mob as it transforms
individual limbs into plasmaman ones.
Once all limbs have been transformed, the mob's species changes to
plasmaman.
This currently leads to incurable toxin damage as antitoxin drugs do not
work on plasmamen. Made it so that upon transforming fully, the toxin
damage is cleared.
Also fixed an issue where healing sources that do not have a
required_biotype parameter (e.g. `adjustToxLoss(-5)` vs
`adjustToxLoss(-5, required biotype=whatever)`) will not work on mobs
that do not have the `MOB_ORGANIC` biotype (e.g. plasmamen) due to it
defaulting to `MOB_ORGANIC`. For now those use the `forced` param to
accomplish this.
## Why It's Good For The Game
Incurable damage is no good.
## Changelog
🆑
fix: fixed getting incurable tox damage when fully transformed into a
plasmaman via plasma rivers
fix: fixed rod of asclepius/medibeam etc not being able to heal tox
damage despite not having biotype restrictions
/🆑
* Fixes an edge case where you can get incurable plasma damage, & fixes healing sources that don't have biotype restrictions not working if the mob doesn't have the MOB_ORGANIC biotype
---------
Co-authored-by: Bloop <vinylspiders@gmail.com>
* The toy crossbow nolonger floats nearby your hand when you hold it. (#73140)
## About The Pull Request
The toy crossbow had its inhand dimensions set incorrectly to 64 causing
the inhand sprites to be offset incorrectly, I've set them to 32.
## Why It's Good For The Game
Bugfix.
## Changelog
🆑
fix: Toy crossbows have had their offset fixed and will now correctly
display in your hand.
/🆑
* The toy crossbow nolonger floats nearby your hand when you hold it.
---------
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Clarifies that TRAC bullets are not teleporter compatible (#73141)
## About The Pull Request
The detective's TRAC bullets embeds tracking implants into people. This
implants works similarly to the injectable tracking implant, such as
with the Prisoner Console or the Bluespace Locator. However, it has
`allow_teleport` set to false, preventing it from being used on the
teleporter. This has not been communicated in game, unless if you take
out the implant from whoever you shot, and stuck it inside the implanter
pad to read its in detail description.
This PR updates the ammo box and the design datum's description, to make
this clearer.
## Why It's Good For The Game
Closes#73121 , if a future detective examines the box, they will know
not to walk into the teleporter room to set up an ambush.
## Changelog
🆑
spellcheck: Clarifies that TRAC bullets are not teleporter compatible
/🆑
* Clarifies that TRAC bullets are not teleporter compatible
---------
Co-authored-by: Profakos <profakos@gmail.com>
* Documents bolt_types and fixes Mosin Nagant Sprite (#72448)
## About The Pull Request
For an unknown period of time, `/obj/item/gun/ballistic` used the wrong
type of sprite for it's `bolt_type`, so anyone trying to make a new gun
and using it as an example wouldn't be able to make it work. Being an
abstract item, it used `BOLT_TYPE_STANDARD` when it had a
`BOLT_TYPE_LOCKING` icon state.
If you spawn it in and look at it, it looks like this.

But if you VV `bolt_bolt` type to `4` ( `BOLT_TYPE_LOCKING`), it looks
correct.

Same with the Mosin, which now has a visible bolt, so you can tell if
it's open or not now!

So basically:
- Changes the Mosin to use the correct bolt type, `BOLT_TYPE_LOCKING`.
- Makes the abstract `/obj/item/gun/ballistic` use the correct type of
sprite. It comes in designer _Debug Purple checkerboard_.

- Adds `bolt_types_explained.md`. As the name implies, this explains in
detail what all the bolt types do, and what you should name the
iconstates for them when you're trying to make a new gun.
- Various comment changes in `ballistic.dm`, and the `combat.dm`
defines.
- De-souls the `boolets` variable name to `bullets` in the ammo counter
proc
- Adds a new parameter `handle_modifications = TRUE` to `sawoff()` When
set to false, it allows you to still use the sawing logic, but bypasses
all the snowflake code for variable changes, and only sets `sawn_off` to
true. This is helpful if you want to allow a weapon to be sawed off, but
don't want your icon forcibly set to `lefthand_file =
'icons/mob/inhands/weapons/guns_lefthand.dmi` or the weight class set to
normal.
## Why It's Good For The Game
Documentation is always good I hear. Also if you're trying to make a new
gun or fix a sprite issue, now you can look at the base type to
understand how it works!
## Changelog
🆑
fix: Mosin Nagant bolt sprites are now visible. It's like 5 pixels so
not a surprise nobody noticed for years.
/🆑
* Documents bolt_types and fixes Mosin Nagant Sprite
* Fixes our speargun overlay sprites
Co-authored-by: Stonetear <89315023+Stonetear@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Refactors memories to be less painful to add and apply, moves memory detail / text to memory subtypes. Adds some new memories to demonstrate. (#72110)
So, a huge issue with memories and - what I personally believe is the
reason why not many have been added since their inception is - they're
very annoying to add!
Normally, adding subtypes of stuff like traumas or hallucinations are as
easy as doing just that, adding a subtype.
But memories used this factory argument passing method combined with
holding all their strings in a JSON file which made it just frustrating
to add, debug, or just mess with.
It also made it much harder to organize new memories keep it clean for
stuff like downstreams.
So I refactored it. Memories are now handled on a subtype by subtype
basis, instead of all memories being a `/datum/memory`.
Any variety of arguments can be passed into memories like addcomponent
(KWARGS) so each subtype can have their own `new` parameters.
This makes it much much easier to add a new memory. All you need to do
is make your subtype and add it somewhere. Don't need to mess with jsons
or defines or anything.
To demonstrate this, I added a few memories. Some existing memories had
their story values tweak to compensate.
Makes it way simpler to add new memories. Maybe we'll get some more fun
ones now?
🆑 Melbert
add: Roundstart captains will now memorize the code to the spare ID
safe.
add: Traitors will now memorize the location and code to their uplink.
add: Heads of staff winning a revolution will now get a memory of their
success.
add: Heads of staff and head revolutionaries who lose their respective
sides of the revolution also get a memory of their failure.
add: Completing a ritual of knowledge as a heretic grants you a quality
memory.
add: Successfully defusing a bomb now grants you a cool memory. Failing
it will also grant you a memory, though you will likely not be alive to
see it.
add: Planting bombs now increase their memory quality depending on how
cool the bomb is.
refactor: Memories have been refactored to be much easier to add.
/🆑
* Modular!
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Experiment with holding hard references to objects being qdeleted in 515 (saves 1.1+ seconds on init times, more on prod) (#72033)
## About The Pull Request
Adds `EXPERIMENT_515_QDEL_HARD_REFERENCE`, which will queue to the GC
subsystem using hard references rather than `\ref`. This is only
possible in 515 because of the new `refcount` proc. `\ref` is very very
slow and has some nasty knock on effects, so removing its usages where
possible is good.
This is an explicit opt in define because I want to give us the ability
to test 515 on live while only testing 515 itself, not our experimental
changes. We have a few more of these we want to do so I made a separate
file for them. They're auto-defined in unit tests so we see them with
the alternate test runner. In a perfect world we'd test both on and off,
but eh.
Closes https://github.com/tgstation/dev-cycles-initiative/issues/10
* Experiment with holding hard references to objects being qdeleted in 515 (saves 1.1+ seconds on init times, more on prod)
* fix missed underbarrels
* HEV radio
* Keeps gc_destroyed from getting updated on every step thru the gc queue. (#72401)
Keeps gc_destroyed from getting updated on every step thru the gc queue.
Fixes logic that assumed gc_destroyed is the time the object first
qdel'ed. it used to get updated on each stage of the garbage controller
and there are 3 stages.
Added list index defines for the inner gc item list.
* test fix
* final fix
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars
* merge conflicts
* adjust_eye_blur and set_eye_blur_if_lower
* adjust drowsiness overdoses
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Clean up something else which was failing CI (#72299)
## About The Pull Request
Well my last PR passed the CI but everything else is still failing and I
want a little tick next to my pull requests.
So I guess I'm whacking moles until everything that 515 doesn't know how
to dispose of is disposed of?
I'll be honest I don't know what change makes this a requirement when it
wasn't before but it seems like a logical thing to be doing.
Unfortunately running this test locally doesn't produce a failure for me
so my only solution is to keep getting the CI to do it and hope that it
doesn't report a false positive again.
## Why It's Good For The Game

## Changelog
Not player facing
* Clean up something else which was failing CI
* modular m90
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Crafting/Cooking menu update
* Yeeted away all of the merge conflicts, time to fix the code
* Okay, now it compiles, and after testing, it seems to work just fine
* Actually, early addition of an upstream fix, so those that don't have hunger can still open the cooking menu
* Fixes the units tests by removing the extra comma in the Stuffed Muli Pod recipe
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* refreshes syndi-kits and syndicate surplus crates, introduces shared limited stock
* merge conflict
* Surplus balance, Consolidated our surplus crate and the new tg one to just use our stats
* use upstream surplus loot crates
* syndicrate
Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Adds an engraving to the staff of healing regarding proper healing beam usage. (#72403)
🆑
fix: Adds an engraving to the staff of healing regarding proper healing
beam usage.
/🆑
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Adds an engraving to the staff of healing regarding proper healing beam usage.
Co-authored-by: Iamgoofball <iamgoofball@gmail.com>
Co-authored-by: Fikou <23585223+Fikou@ users.noreply.github.com>
* Changes the missing food icon test to cover ALL /obj's
* Update implant.dm
* Hopefully fixes all the failing integration tests!
* Fixes more missing icons
* Even more icon fixes
* Hopefully that was all of them
* Okay now SURELY that's all of them
* I'm tired of this shit man
* Hopefully that's all, for real this time!
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
fixes neurotoxin newtonian movement and alien hud hand icons (#72269)
neurotoxin now properly moves u
also the alien spit shot by simplemob xenos is now a subtype of normal
because it was fucking stupid
also the nt hud pr broke the hud hand icons so fixes that
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* The Indestructible objective energy guns protect their contents, preventing them from bricking (#71976)
## About The Pull Request
Stops the two objective firearms from having their contents destroyed by
bombs. This isn't important for any other firearms, as they're all
destroyed by those explosions rather than surviving them, only to have
their contents deleted instead.
## Why It's Good For The Game
An everpresent consequence of oversimulation in firearms is that they're
prone to stupid shit like this happening. Since you can't replace the
power cell in these weapons, it just bricks the guns.
You can certainly replace the firing pin in the gun if that's destroyed,
but I figured it would be better to just wholesale make this no longer a
problem for these weapons.
## Changelog
🆑
fix: Stops strong enough explosions from bricking the objective energy
guns permanently.
/🆑
* The Indestructible objective energy guns protect their contents, preventing them from bricking
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Getting hit by a nuclear particle will always irradiate you. (#71812)
## About The Pull Request
Makes nuclear particles directly irradiate people.
## Why It's Good For The Game
Getting hit by a nuclear particle should be a death sentence.
## Changelog
🆑
balance: Nuclear particles will always irradiate you on hit.
/🆑
* Getting hit by a nuclear particle will always irradiate you.
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>