## About The Pull Request
Special thanks to Cato for helping me with decisionmaking and balancing
on this one [in a bunch of things here, but not all.]
This PR changes a lot of things so I will be breaking it up into
numbers.
# 1. Security Vouchers: Primary
Ported from monkestation, securirty no longer starts with a taser, but
instead with two vouchers. A utility and a primary. All sec should get a
utility, the HOS, ~~medic~~ and detective do not get a primary voucher.
The vouchers can be redeemed at the same vendor that you get
flashbangs/cuffs/donuts from.
The choices are:
- The default taser
- The disabler and an energy shoulder holster to pair
- A pepperball gun and a single clip
- A flash-bulb riot shield
Why the change?:
- Warden might not be there to give you your preferred loadout, so even
on lowpop, you get your preferred gear up to some extent. We're not
giving out hellfire lasers here. It adds nothing that couldn't have been
done before, frankly.
- The weapons are availible roundstart already, with the exception of
the pepperball, which was adjusted to match
- More variety in security playstyle, allows sec officers to personalize
and play in (mostly) different ways.
- The disabler, which is the question I always get, is left in due to it
being present in the game as a standalone tool AND some players just
having a preferrence to shoot themselves in the foot, or don't like
fiddling with modes on the go.
The pepperball gun now has a higher shot delay, which is offset by how
the weapon makes or breaks fights by applying item drop, knockdown and
temporary blindness with it's reagent. Pair it with a baton and any
antag who forgot a gas mask just lost.
# 2. Security Vouchers: Utility
The choices are:
- Barrier nades x2
- Stingbangs x2
- Sec laptop, a laptop with relevant programs on it. Lets you view
cameras on the go, among others.
- Justice Helmet
- Donuts
- Weighted Space Law/Corporate Regulations. More on that later.
- Security barrier projector. More on that later.
- A pair of pinpointers, linked with eachother
## Weighted Space Law and Space Law changes:
I'll call it space law but it's corporate regulations ok?
- Space Law actually links you to wiki. Still teaches you legalese, so
just use it more than once to open it.
- Weighted Space Law, otherwise known as Space Law: Collecter's Edition.
With a gold-coloured-metal-plated trim. Allows you to beat people with
space law for 13 damage, a chance to teach them legalese so they can sue
you after, and a funny message. Overall a gimmicky thing for more
interesting interactions.
## Security Projector changes
- Security projector can now CUFF people. Use it as handcuffs to do so.
- The cuffs can be EMP'd away at a 50% chance. Makes sense according to
what they are and it works for their general purpose of "infinite cuffs,
but no cuffs". THE CUFFS FIZZLE OUT IF YOU LEAVE 1 SCREEN OF RANGE. This
is because of the sheer amount of space you can save on cuffs by taking
this 1 item in their stead, with the condition of "if you can keep them
by you until you sit them in their cell.". Worse than cuffs, but a huge
timesaver if you feel confident in your skills as an officer.
# 3. Breaching Hammer Buff
In the current meta, the breaching hammer is dead. Long-gone. Frangible
rounds in shotguns, sawn off or otherwise, are much more worth it than
any amount of cooperated breaching which leads to yourself being shocked
as they are NOT insulated. For that reason, the hammer now takes just 1
person to breach and is resistant to electricity. It's easier to get
than the frangible shotgun, it needs potentially less space counting the
shots, is infinite, can be even used for dealing with insulated things
as security. Simple as. Item revival, way behind meta, or even just
convenience.
## Proof Of Testing
<img width="1409" height="684" alt="aaaaaaaaa"
src="https://github.com/user-attachments/assets/782c23ca-11bb-4ba7-8294-80086af1b134"
/>
<img width="307" height="269" alt="bbbbbbb"
src="https://github.com/user-attachments/assets/8d75a1bb-fb2e-44d8-8338-f22ed6be62da"
/>
<img width="260" height="311" alt="ddddddd"
src="https://github.com/user-attachments/assets/51229031-0a6d-480c-8021-0f57cd8496dc"
/>
<img width="193" height="181" alt="ccccccc"
src="https://github.com/user-attachments/assets/97254655-60f7-4713-9673-bb6b3071d97e"
/>
## Changelog
🆑
add: Security starts with a primary and utility voucher for redemption
in their equipment lathe to make a choice for what they want to use as
their main, nonlethal weapon that round, and a bonus piece of gear on
the side.
add: Corporate Regulations: Collector's Edition, a space law book with
some heft and blunt force to it...
add: Security holobarriers can now additionally create holographic cuffs
around people, which have a chance to disappear when EMP'd, and
disappear if they leave the projector's range of 9 tiles [1 screen]
add: Pepperball magazines now in security vendor, premium section
balance: Pepperball guns fire much slower, fire delay 8
balance: Breaching hammers can be used by 1 person to breach and are now
insulated
fix: Space law books now link our website's space law
/🆑
---------
Co-authored-by: Alexis <catmc8565@gmail.com>
## About The Pull Request
title
## Why It's Good For The Game
for a job dealing an awful lot with jobs, they can't see people's jobs.
Despite glasses for that being in the code.
## Proof Of Testing
no
<details>
<summary>Screenshots/Videos</summary>
</details>
## Changelog
🆑
add: HOP now gets Civilian HUDSunglasses in their garment bag.
/🆑
## About The Pull Request
- null all GAGS vars for brass wirecutters as it doesn't use GAGS
- Repath `mothbomb.dmi` so it actually gets deployed with the server
- Generate map icons
- Fix 150+ crafting material parity failures
- Fix airlock lights not working
- Fix certain species missing eyes
## Why It's Good For The Game
Don't like red X
## Proof Of Testing
If this PR is green check then you Know
## About The Pull Request
Updates the safe tree to use a proper blacklist instead of being boring
and just giving bloodthirsty spacemen and women toys... They were good
all year, they crave violence. This replaces the round start Christmas
trees with the safe trees, which no longer only give out toys, but also
no longer give out admin/debug gear. A compromise for all, just in time
for Christmas!
The Christmas event present spawns have all been replaced with the safe
variants that utilize the blacklist, the other means of acquiring
presents have been left untouched.
## Why It's Good For The Game
People not getting admin tools out of Christmas presents and causing
headaches for staff is probably good for the game, maybe.
## Proof Of Testing
<details>
<summary>Screenshots/Videos</summary>
<img width="418" height="452" alt="image"
src="https://github.com/user-attachments/assets/df6554ee-084a-40c2-9592-94c88f6569c4"
/>
</details>
## Changelog
🆑 xPokee, LT3
balance: All Christmas event presents have been replaced with the safe
variants.
refactor: The safe Christmas tree subtype now uses a blacklist instead
of just giving toys.
admin: Added a new verb in the 'game' tab to blacklist presents on the
fly.
/🆑
## About The Pull Request
Title. Porting https://github.com/NovaSector/NovaSector/pull/5020 by
[unit0016](https://github.com/unit0016), an OG. I love them which is why
I shamelessly stole and ported this.
## Why It's Good For The Game
Less piggybacking is good, it also does some... Good...Code... Stuff???
I dunno
## Proof Of Testing
TBD
## Changelog
🆑 LT3, unit0016, OrbisAnima, vinylspiders, Hydrosatan, theSelfish
add: The infinidorms have been rewritten and rethemed significantly,
coming with a handful of new rooms in the process.
fix: Ghost Cafe fishing doesn't affect station lootpools.
fix: Cafe Visitors, like plasmamen and vox get cannisters.
fix: Even if the Ghost Cafe somehow get radios, they won't transmit
anymore. This includes Borgs.
fix: Somehow, multitools returned to Ghost Cafe belts.
del: The not working Vox Box is gone from the Cafe.
code: Instead of being automapped, the Interlink CC office has been
merged into the map.
/🆑
---------
Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
## About The Pull Request
Fixes https://github.com/Bubberstation/Bubberstation/issues/4959 related
to bypassing borg expand/shrink restrictions. Ensures the borg has a
model selected before attempting to validate if it can be
expanded/shrunk.
Also cleans up the code, making the shrink module consistent with expand
and other TG upgrades.
## Why It's Good For The Game
Fix bug
## Changelog
🆑 LT3
fix: Fixed being able to expand/shrink borg models that are meant to
have those upgrades unavailable
/🆑
## About The Pull Request
- Gives `/obj/item/radio/headset/heads` a command headset icon, making
subtypes not need to redefine it 7 times for no reason
- (Also gives a fairly long if() check an early return, but thats more
minor)
## Why It's Good For The Game
> Gives `/obj/item/radio/headset/heads` a command headset icon, making
subtypes not need to redefine it 7 times for no reason
> (Also gives a fairly long if() check an early return, but thats more
minor)
- Makes the code slightly clearer to look at, that they all have the
same icon except for alts
## Changelog
🆑
code: slightly cleaned up command headsets in-code
/🆑
## About The Pull Request
Wirecutters already had the GAGS to be recolorable; this just enables
players to actually recolor them before purchasing, just like
screwdrivers. This doesn't affect printing them from any of the lathes.
(Big thanks to MrMelb for walking me through this)
## Why It's Good For The Game
Screwdrivers are recolorable, why not wirecutters too?
## Changelog
🆑
qol: Wirecutters are now recolorable when purchasing from a vendor
/🆑
## About The Pull Request
Depends on #94064 for the unit test but offers a better method for
finding an atom to mount on
- Finding a mount now takes into consideration the objects pixel x & y
offsets meaning diagonal mounting is now supported. Gives great
flexibility for mappers
- If you don't want to use pixel offsets but default back to using the
objects direction that behaviour is still preserved. Useful if your
object uses directional icon states(lights & cameras for now) AND don't
use offsets
- If no direction could be specified then as the last resort it defaults
back to the objects local turf for mounting
## Changelog
🆑
fix: all mounted objects on tables, fences, windows & walls should fall
of correctly when the atom it is placed on is destroyed
fix: security telescreen now falls off when their mounted wall is
destroyed
fix: defib wall mount falls off when their mounted wall is destroyed
fix: floor lights are mounted to the ground/catwalk/tram floor they are
sitting on meaning destroying it will destroy the light
fix: wall mounted plaques now fall off when their mounted wall is
destroyed
/🆑
## About The Pull Request
Last Christmas we had and resolved this bug #88595 where via the
mechanic of buying random trash, Cargo could roll on the roulette to try
and get random Christmas presents and open them for random items.
This was removed because it's not supposed to work that way and was a
way of exploiting Christmas cheer for personal gain, which is grinchsome
behaviour.
That said, being able to order Christmas presents is also kind of
soulful, so this PR brings that mechanic back but on purpose this time.
During the Christmas season _only_, Cargo can spend 3000 credits of
their budget to order a "Surplus Christmas Gifts" crate which contains
4-6 presents _with pre-assigned recipients_.
In a similar system to addressed mail, only the person written on the
gift tag can open the present, so unless you're sufficiently scroogeous
to collect a huge pile of presents on the cargo room floor in hopes of
getting a couple with your name on (in my testing these contained raw
unbaked croissant dough, and a piece of paper from a space ruin) you
should mostly be using this to deliver generalised holiday cheer to the
crew rather than just yourself.
This PR also contains (maybe as more lines than the actual feature) a
refactor changing a bunch of boolean vars on `/datum/supply_pack` into
bitflags, because I needed to add one more and it seemed silly to have
so many booleans.
## Why It's Good For The Game
It allows those with the yuletide spirit to deliver some christmas cheer
to their fellow man, isn't that the season's reason?
## Changelog
🆑
add: When the game considers it to be Christmas, Cargo can order
additional Christmas gifts pre-addressed to random crew members.
/🆑
## About The Pull Request
Canned ink/ink sac: remove 2 second paralyze, lowers stagger & blind to
2.5 (max 3) seconds, remove TRAIT_UNCATCHABLE
(current) Canned ink stats:
2 second paralyze [forced knockdown, legs dont work, hands dont work,
drops all items]
3.5 (max 6) second confusion [changeling shriek stagger]
7 (max 10) second blindness [no matter what helmet protection -
bio-hood/eva-helmet, etc.]
Reskinned banana cream pie
Cant catch with throw mode
Buy as many as you want from the chef console (13 credits)
## Why It's Good For The Game
Worth 13 credits (chef's console)
Overtuned (see above)
No counter - You can't catch them with throw mode
Permanent paralysis hard stun - Keep throwing them at the person lying
on the floor
## Changelog
🆑 ArchBTW
balance: Canned ink: Remove uncatchable & paralyze. Lower stagger &
blind
/🆑
---------
Co-authored-by: glue0000 <230859540+glue0000@users.noreply.github.com>
## About The Pull Request
Does as the title suggests. I am pretty impartial to these existing, so
long as they get a resprite, and get proper digitigrade leg sprites
before they make a return. If anyone is super attached to the hats, let
me know in the comments, and I'll remove them from this PR. I only
included them with this due to it feeling silly to only have the hats
without the uniforms.
## Why It's Good For The Game
I am normally a firm believer in "Improve. Don't remove." but these
sprites lack digitigrade sprites and their own sprites have clearly not
been touched up in quite some time leads me to believe they are being
unmaintained and would best be removed for the time being.
## Proof Of Testing
It compiled. If CI passes it should work.
## Changelog
🆑
del: Removed the imperial/naval hats and jumpsuits.
/🆑
## About The Pull Request
- Across the board, bleeding wounds cause ~0.85x slower blood loss.
- Wound clot rate while bandaged has also seen a ~0.85x reduction.
- And slashing wounds have also had their natural clotting rate reduced
by ~0.85x.
- All in all, blood wounds are expected to last marginally longer while
keeping the same level of deadliness.
- Sutures blood flow reduction has been reduced by ~0.85x as well.
Medicated suture is unaffected.
- Blood Mary now scales blood regeneration based on drunkness.
- Old: Flat 3 blood/tick.
- 0 drunkness = 0 blood/tick. 40 drunkness = 2 blood/tick. 80 drunkness
= 4 blood/tick.
- Epoetin Alfa saw drastic changes.
- No longer heals liver damage.
- No longer adds Sanguirite to the system.
- Now directly clots 0.1 flow of bloodiest wound (almost effectively
quadrupling clot rate, but 3x less effective than sanguirite)
- Blood/tick reduced from 3 blood/tick to 1 blood/tick.
- Now causes minor heart damage (0.2 damage/tick).
## Why It's Good For The Game
- A while back we were talking about how volatile blood wounds were.
Blood wounds are super scary, which is good, but just how scary they
were meant that the extent to which you interacted with this was a bit
stifled. My thoughts are slowing their pace a bit should open up more
opportunities for interaction while keeping them as scary.
- See above.
- Bloody Mary was ridiculously good at healing blood loss, better than
any chemical. The tweak to the effect aims to keep it as a pocket option
for aspiring bartender-alchemists without overpowering other chemicals
in medical contexts.
- Epoetin Alfa is effectively a producible form of Sanguirite which is
something that I believe is not mass producible for a reason (it's
really strong). The changes to it aim to make it a bit less potent that
sanguirite itself while keeping it as a viable blood healing option.
- I understand the liver healing is kinda a real world analog but in the
context of our chemical system, liver damage is something intentionally
not very common. It allows for complete negation of several other chem's
downsides. While I like this form of emergent chem mixing (mannitol and
bath salts, for example), this one earns a "particularly problematic"
badge due to negating 100% of the downsides of many chems.
## Changelog
🆑 Melbert
balance: Blood flow and clotting has universally been slashed by about
0.85x. This means blood wounds kill you slightly slower, but heal
slightly slower.
balance: Sutures now heal 0.85x less blood flow and gauze's clotting
bonus is also 0.85x lower. Medicated sutures are unaffected.
balance: Bloody Mary's blood healing effect now scales with how drunk
you are. Worse in low amounts, better in high amounts.
balance: Epoetin Alfa no longer generates Sangurite. It now directly
clots bleeding wounds (at a rate ~3x worse than sangurite, but still ~4x
better than the natural clotting rate)
balance: Epoetin Alfa no longer heals liver damage.
balance: Epoetin Alfa regenerates 3x less blood. It's still 4x effective
than Saline Glucose or Iron.
balance: Epoetin Alfa now causes minor heart damage (0.2 damage per
tick).
code: All "coagulating" effects now use a shared function.
/🆑
## About The Pull Request
Reused the old pre-rework heretic robe and blade assets as a new set of
chaplain gear and null rod option.
Replaced the last few existing uses of the now spriteless generic robe:
- Deathmatch, changed heretic warrior to use blade robes
- Deathmatch, changed ripper to use the new chaplain armour
- Tribal mothman legion corpse, changed to use new chaplain armour
- Heretic preview and hallucination, changed to use rust robes
- Heretic virtual domain, changed to use rust robes
<img width="127" height="131" alt="image"
src="https://github.com/user-attachments/assets/690e848e-5191-44d4-bd58-5e338fa2aa4e"
/>
## Why It's Good For The Game
Chaplains are the playground of old magic content assets, where they
find a second life as cosplay outfits. Chaplains can already cosplay
cultists, it's only fair that they can pretend to be a heretic as well.
## Changelog
🆑
add: Added a new set of chaplain armour based on the generic heretic
robes unavailable since the path rework.
/🆑
## About The Pull Request
Malf AI blow rcds didnt work right on mech rcd module, because the
module isn't an RCD and simply holds an internal real rcd. This led to
the rcd "blowing" but remaining intact, just useless as its internal rcd
was gone. This modifies the exosuit variant internal RCD's detonation
proc such that it properly destroys the fake rcd shell.
## Why It's Good For The Game
fixes#93921
## Changelog
🆑
fix: Malf AI "Destroy RCDs" power now properly destroys mech RCDs
/🆑
## About The Pull Request
This PR makes all R&D console boards that are either printed or sourced
from tech storage start out locked. They can be unlocked by swiping them
with an ID that has research access.
R&D consoles can also be unlocked with an emag, but doing so will break
their comms circuit as well, making all researched nodes broadcast over
public comms. You can still emag the console itself after it's been
constructed without breaking it in any way, while also silencing
announcements instead. (that's definitely a noob trap, but it's out of
scope for this PR)
The reason why the tech storage board is locked as well is because the
goal of this PR is to stop engineers from making R&D consoles, and
engineers have access to tech storage. Leaving the board unlocked and
moving it to secure tech storage would make engineers break in there
every shift.
The changelog basically has a FAQ for "Okay, so what do I do instead?",
because I know people will be confused about what route they're intended
to take when science closes their desk shutters for the umpteenth time
this week.
## Why It's Good For The Game
Engineering has a habit of making an R&D console every round to bypass
having to ask science or a head of staff to research things. Locking the
consoles at least makes engineers consider asking science to do
science's job.
Note that this doesn't solve the issue entirely, it just removes the
easiest and most convenient way of bypassing science. Engineers can
still break into R&D extremely easily using their wire knowledge, and do
so regularly.
More importantly though, this might shine some light on the fact that
heads of department like the CE have remote access to the research
network via their PDAs. This means engineers can ask the CE to research
things for them.
Asking people with access to the research network to research things is
a lot better for roleplay and immersion than having engineering
construct R&D consoles every shift.
## Changelog
🆑
balance: R&D console boards sourced from printing or tech storage are
now locked by default. It's recommended to ask your respective head of
department or the science department to complete research for you. Heads
of department can remotely access the research network using their PDAs.
/🆑
## About The Pull Request
Another one of those things that I've noticed when playing around with
fish tanks; The slowdown lingered even when the fish tank (which depends
on the total weight of fish inside it) was no longer held and was only
updated another item is equipped or held.
This is because `attempt_insert` doesn't end up calling `DoUnEquip`,
which along with `equip_to_slot`, is one of the cornerstones of the
whole inventory system that we have had for over a decade. Luckily, this
doesn't break things entirely because `item/doMove` seems to have a
fallback, but it only covers held items and only does half of what
`DoUnEquip` does, because it's its own copypaste code, disconnected from
the standard unequip call stack.
I've done some changes to make sure `DoUnEquip` is always called on
`doMove` if we find that the item still has the IN_INVENTORY flag. I've
also updated the code comment for it as well, to emphasize that the
measure is a fallback and not an excuse to call forceMove or Move if we
know that the object is held or equipped on a mob.
If something doesn't work, it'll be likely caught by the CI (it's a core
feature of the game after all) or stack traces.
Also, despite equipment slowdown supporting all mob types, when
equipping/unequipping items it's only applied to carbon mobs. This is
not _strictly_ a contributing factor to the titled issue but it still
limits a balance feature that ought to affect all mobs with hands and/or
equipment slots.
## Why It's Good For The Game
Fixing issues with inventory and storages. Hopefully improving and
modernizing years old code a little.
## About The Pull Request
Empy lists. There are a lot of 'em.
<img width="981" height="512" alt="image"
src="https://github.com/user-attachments/assets/b94b041a-2904-466b-ab89-54bd1de11b4e"
/>
Going through ways to reduce memory I found a few easy ones here. Wires,
the edible component, the seethrough component. None of these are really
a concern when it comes to needing lists in memory for performance
reasons. Wires aren't going to be cut most of the time for each door. A
lot of food does not have any junkiness. Seethrough component lies
dormant most of the round. Etc.
Making lists lazy in these cases should be a no brainer.
Everything I tested still seems to work exactly the same.
## Why It's Good For The Game
Frees memory that is just taking up space a lot of the time.
## Changelog
Not player-facing, this is all under-the-hood stuff.
## About The Pull Request
If you are **within**
(inside)
(as in you climb into a disposal bin)
(like if you're about to be flushed)
a disposal bin or chute, and drop something, the item goes into the bin
(with you)
(inside the bid)
(like if you put an item in a bin like normal)
(it will also be flushed)
rather than onto the floor around the bin
https://github.com/tgstation/tgstation/pull/40723 added a bunch of
snowflake `Bumped` calls to mimic this effect - they have been removed.
## Why It's Good For The Game
Seems logical to me. It might break a bunch of stuff but it probably
won't.
## Changelog
🆑 Melbert
qol: If you are within a disposal bin or chute, and drop an item, the
item will go into the bin, rather than onto the floor outside of the
bin.
/🆑
## About The Pull Request
This PR adds a new gateway with not too much threat a, a little bit of
reward more often in the form of gimmicky items or armor.
credit to https://github.com/NovaSector/NovaSector/pull/4880
For the gun and sfx sprite
## Why It's Good For The Game
The gateway system is about as decrepit and old, the last gateway that
was added was the museum which was made by somebody who would short
after receive a rule 8 ban and plus that away mission is a neat scenery
and has a lot of cool locations to look at but it has no loot, and you
know what? that's okay and it achieves what it sets out to do
beautifully, but if we discount that one for that reason alone (which
for the record is a bad reason to discount something) then the last
gateway that was added and that stuck was added in 2018? and it was
snowdin? I dont actually know, correct me on this. But basically, more
content good.
## Changelog
<details>
<summary>Screenshots/Videos</summary>
<img width="862" height="431" alt="image"
src="https://github.com/user-attachments/assets/d56add04-4b8c-4cd0-be7f-36d895e43868"
/>
<img width="654" height="665" alt="image"
src="https://github.com/user-attachments/assets/1ccd15c4-5c31-4b00-b5f8-9a662efa3436"
/>
<img width="651" height="571" alt="image"
src="https://github.com/user-attachments/assets/08ab4c1d-d9d0-413c-bc02-a3c51eda8761"
/>
<img width="1177" height="172" alt="image"
src="https://github.com/user-attachments/assets/8df5e28d-5041-4676-8370-b8ab351f5b52"
/>
<img width="850" height="586" alt="image"
src="https://github.com/user-attachments/assets/c03e6cbe-b290-421e-bbed-80a203221de4"
/>
<img width="1248" height="912" alt="image"
src="https://github.com/user-attachments/assets/aa3c415d-52de-46b9-b317-e397b481b1b7"
/>
<img width="885" height="697" alt="image"
src="https://github.com/user-attachments/assets/dd96d364-deae-4c56-9fc1-68b5e738ef4a"
/>
<img width="1284" height="646" alt="image"
src="https://github.com/user-attachments/assets/b433f591-d92f-4bea-921c-b231fce2e7d9"
/>
also NO you cannot make the sm sword using the slow recharge shrink ray
<img width="621" height="240" alt="image"
src="https://github.com/user-attachments/assets/75f7d235-33c2-424e-9260-a3cc8c931ab9"
/>
</details>
<details>
<summary>Documentation of all notable loot 11/8/2025</summary>
/obj/item/clothing/shoes/gunboots/disabler
/obj/item/gun/energy/shrink_ray/one_shot (A shrink way that has a long
recharge time and can only shoot once)
/obj/item/slimepotion/lovepotion x 2
/obj/item/slimepotion/genderchange x 1
/obj/item/slimepotion/slime/mutator
/obj/item/gun/energy/disabler/smoothbore
/obj/item/gun/energy/alien/zeta
/obj/item/gun/magic/midas_hand
/obj/item/autosurgeon/xeno (A autosurgeon that only allows xenomorph
organs, here because it looks unique)
/obj/item/organ/heart/gland (abductor organs, random.)
/obj/item/organ/eyes/corrupt
/obj/item/organ/appendix/corrupt
/obj/item/clothing/suit/utility/radiation/cbrnsuit x 2
/obj/item/clothing/head/utility/radiation/cbrnhood x 2
/obj/item/clothing/gloves/combat x 4
/obj/item/clothing/shoes/combat/swat x 2
/obj/item/clothing/mask/gas/atmos/glass x 2
/obj/item/clothing/under/rank/engineering/atmospheric_technician/nova/utility/advanced
/obj/item/gun/ballistic/automatic/wt550/p90 x 2
/obj/item/ammo_box/magazine/p90_mag x 14
/obj/item/gun/energy/modular_laser_rifle/carbine x 2
/obj/effect/spawner/random/armory/laser_gun
/obj/item/grenade/c4 x 3
/obj/machinery/deployable_turret/hmg x 3 (you think these are good, but
they're not, they are really not, they're only good if you hit somebody
with them when they're not expecting it, otherwise people will simply
just avoid it, or if your being defensive of an area this thing will
have you just be a beast.)
/obj/machinery/mounted_machine_gun x 8 (But with no ammo, so theyre only
setpieces, okay well there IS ammo on the map but its anchored, and
theres no way to unanchor anchored items, if fallout thirteen players
cant do it over the course of 4 years then tg players sure cant.)
Also hello there it looks like you actually read this section, if you
have dont worry, this PR wont get merged, why? I dont want to salt about
that here.
</details>
🆑
map: added the "heretic" gateway map (it has nothing related to
heretics)
/🆑
## About The Pull Request
Compact defib can be worn on the suit storage slot of labcoats, medical
coats, surgical aprons, and medical MODsuits
## Why It's Good For The Game
This thing is dope but sucks to use because you have to juggle your
belt.
Allowing docs to wear it on their coat so they don't have to inventory
juggle with their belt would make it 10x more usable.
## Changelog
🆑 Melbert
add: Compact defib can be worn and used on the suit storage slot of
labcoats, surgical aprons, and medical MODsuits
add: Drones and Dex Holoparasites can (hypothetically) wear and use
compact defibs
/🆑
## About The Pull Request
Extends the part of the crafting unit test that ensures consistency
between the total mats of the components of a recipe (or rather, the
result of said recipe) and a generic instance of the same type as its
result, previously only implemented on food recipes.
## Why It's Good For The Game
This ensures a degree of consistency with the material composition of
various objects in the game. I couldn't do it in the original PR as that
one was too big already and it took months to get it merged, and have
the relative bugs fixed.
Currently a WIP as I slowly deal with the unit test reports.
## Changelog
🆑
refactor: Follow-up to the crafting/material refactor from months ago.
All objects crafted with stacks now inherit their mat composition (not
necessarily the effects and color) by default, while previously only a
few things like chair, sinks and toilets did. Report any object looking
or behaving weirdly as a result.
fix: The material composition of ammo boxes is no longer a 1/10 of what
it's supposed to be. It was a shitty hack to make it harder to recycle
empty ammo boxes. Instead, they lose materials as they're emptied now.
/🆑
## About The Pull Request
The AI core structure now fully integrates item/tool interactions and no
longer uses attackby/take_damage overrides. Construction behaviour has
been isolated into its own file.
All handling relating to the AI core's status when shunted has been
turned into signals. For this reason, helper procs for managing core
link state have been made and integrated into the relevant users (APC
shunting, mech takeover). The AI core no longer references the remote AI
mob.
/obj/structure/ai_core/deactivated has been removed from code since it
had no function after refactoring. There was only a single instance of
it being used in a map, which has been replaced with a var edit.
There may be more things I changed, but I'm h
## About The Pull Request
High frequency blades, both null rod variant and admeme variant, can
block mech melee attacks. For the former, that is the only thing it can
block. Great if you're fighting a lot of mechs as a chaplain I guess.
And you're also really committed to the bit.
Weapons that were vibro subtypes are now claymore subtypes. The only
difference here is that they now have 30% block instead of 35% AP.
Null rod high frequency blades are now two-handed. This mostly
determines force changes (10 unwielded, 18 wielded), and mech attack
block chances.
Mech melee attacks respect block...assuming the blocking source can even
block the attack in the first place. Currently, the few sources that can
block/avoid mech attacks are;
- high frequency blades
- energy katanas
- Those staff nullrods (its a holy force field, iunno)
- wizard modsuit shield (and it will eat literally every single charge
it has to do that)
- Sleeping Carp evasion (and only at half the possible chance)
- CQC defense mode (themed as dodging the attack, and also halved)
- probably something I overlooked when I implemented OVERWHELMING_ATTACK
originally and have overlooked here as well.
Just think 'could this help avoid being hit by a road roller being
dropped on you' and go with your gut as to whether or not it is
appropriate if you spot something in the wild that seemingly can block a
mech.
## Why It's Good For The Game
> High Frequency Blade
I wanted to elevate the meme and that is as deep as this goes. Also I
wanted to make this two-handed, much like the true version.
The only thing it is lacking is the cool attack functionality, but I'll
be damned if I can get that to work in a sensible fashion for a crew
weapon...
> Vibro subtype
A lot less of these than I thought. And most of them seemed more
appropriate as claymore types anyway.
> Mech Block
I seeded this previously by making mech clamps respect block. I've now
come back to fully implement it in order to facilitate MGR memes.
For the most part, mechs should still enjoy being largely unblocked by
most sources, even from things like operative suit shields, and
certainly not from actual shields (which I've stripped the ability to
block the attack from entirely) and melee weapons.
The sources that can block them do so poorly. Or, in the case of the
high frequency blade, very well and that's pretty much the only thing it
IS good at blocking.
## Changelog
🆑
balance: High frequency blades (both null rod and admin versions) are
able to block melee attacks from mechs.
balance: High frequency blade null rods are now two-handed weapons.
balance: Mech melee attacks can be blocked or avoided by a few rare
sources.
/🆑
## About The Pull Request
This PR removes Defibrillators from being printable in the techlathe.
Which means the Compact belt becomes CMO exclusive item.
And adds a objective for spies to steal compact belt because it feeds it
into the black market, which other antags can maybe buy and emagg it to
turn it into a reasonable weapon
This pr also makes it so the baseline of roundstarting defibs is 4
## Why It's Good For The Game
Years ago we made defibrillators never printable, and there was no way
to get them unless it was trough cargo, and later we added it to the
techlathe which immediatly voided the cargo crate.
Medical starts with 4 defibrillators medbay usually uses 2, and then the
other 2 go to medical borgs (and theres not really ever a real reason to
print out another since you got plenty).
We also have spefific upgrade modules for medical cyborgs which is
voided by just printing a defib and inserting it into the medical borgs.
TL;DR order it from cargo either 1 using your departmental budget, 2
using your free ordering console, or 3 just from cargo
## Changelog
🆑 ezel
add: Compact Defibrillator is now a Spy objective
balance: Compact Defib is CMO exclusive again
balance: you can no longer print Defibrillators in techlathe (purchase
them via cargo if needed)
sprite: CMO compact defib now looks unique from other ones
map: catwalk defibs trimmed to 4 instead of 6
map: metastation defib added from 3 to 4
map: wawastation defib added from 3 to 4
map: tramstation defib added from 3 to 4
map: nebulastation defibs trimmed from 6 to 4
/🆑
## About The Pull Request
Closes#93635
`unique_reskin` is no longer a list on `/item`, now `/datum/atom_skin`
The actual reskinning behavior has been moved out to
`/datum/component/reskinable_item`
PKC reskinning is now handled via alt-click reskin, rather than via the
retooling kit. The retooling kit has been removed.
There's no limit on how many times you can reskin your PKC (though
perhaps we limit it to one reskin and keep the retooling kit as a way to
allow a miner to reskin it a second time?)
The Ashen Skull unique reskin is still a trophy, and instead unlocks its
unique reskin option in the alt-click radial.
## Why It's Good For The Game
I'm unsure why the retooling kit exists on its own, when it's relatively
cheap and just performs the behavior of alt-click reskinning.
So to keep it consistent with all other forms of reskinning I've just
made it baseline. To accomplish that I refactored reskinning.
The new form of reskinning allows for greater potential in adding
reskins, allowing far more than just an icon state change. Also we can
put it on turfs and mobs and structures now which is cool I guess
There's also the added benefit of being able to see an item's reskins
without needing to instantiate it, which the loadout menu uses to great
effect.
## Changelog
🆑 Melbert
refactor: Refactored item reskinning (the alt-click way), report any
oddities with that
del: Deleted the crusher retool kit, now you can just reskin your
crusher with alt-click. The Skull skin is still locked behind having the
Ashen Skull trophy applied.
fix: Stunswords no longer have an incorrect lore blurb
fix: Fixed loadout item reskinning's UI
/🆑
## About The Pull Request
Depends on #94064 for the unit test but offers a better method for
finding an atom to mount on
- Finding a mount now takes into consideration the objects pixel x & y
offsets meaning diagonal mounting is now supported. Gives great
flexibility for mappers
- If you don't want to use pixel offsets but default back to using the
objects direction that behaviour is still preserved. Useful if your
object uses directional icon states(lights & cameras for now) AND don't
use offsets
- If no direction could be specified then as the last resort it defaults
back to the objects local turf for mounting
## Changelog
🆑
fix: all mounted objects on tables, fences, windows & walls should fall
of correctly when the atom it is placed on is destroyed
fix: security telescreen now falls off when their mounted wall is
destroyed
fix: defib wall mount falls off when their mounted wall is destroyed
fix: floor lights are mounted to the ground/catwalk/tram floor they are
sitting on meaning destroying it will destroy the light
fix: wall mounted plaques now fall off when their mounted wall is
destroyed
/🆑
## About The Pull Request
Macros that are strings do not need to be doing this.
## Why It's Good For The Game
Less improper things to copy paste existing in the codebase
## About The Pull Request
Bot assemblies will only be picked up if you held the item you attached
the arm/sensor to, and will be put into the hand which you held the
storage item in.
Also changed firebots assemblies to item_interaction
## Why It's Good For The Game
Usually you don't want to pick up the assembly if you're making a bunch
of bots on the ground en-masse, and having the assemblies be put in your
offhand and not your main hand despite the latter just being freed is
weird and clunky.
## Changelog
🆑
qol: Bot assemblies will only be picked up if you held the
medkit/toolbox/helmet/etc in your hands when creating one.
qol: Assembling med/repair/secbots will now put their assemblies in your
main hand instead of your offhand
/🆑
## About The Pull Request
Currently they announce they're done if they attempt to recharge and
find out that the battery is already full. This PR makes it so that they
announce after they perform a successful charge that fills the battery
to max. Also gets rid of an unnecessary variable along the way. Also
when a battle rifle finishes recalibrating it'll say that it finished
recalibrating instead of recharging.
## Why It's Good For The Game
You can already inspect the charger to check the weapon's charge and
take the weapon out once it hits 100% even before it alerts you. This
just makes it not wait 2 seconds for no reason.
Also spellcheck.
## Changelog
🆑
qol: weapon rechargers don't wait an extra tick before announcing
they've finished recharging
spellcheck: weapon rechargers no longer claim a battle rifle has
"finished recharging" when it's finished recalibrating.
/🆑
Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
## About The Pull Request
It's just a partial cleanup of
anti-[STYLE](https://github.com/tgstation/tgstation/blob/master/.github/guides/STYLE.md)
code from /tg/'s ancient history. I compiled & tested with my helpful
assistant and damage is still working.
<img width="1920" height="1040" alt="image"
src="https://github.com/user-attachments/assets/26dabc17-088f-4008-b299-3ff4c27142c3"
/>
I'll upload the .cs script I used to do it shortly.
## Why It's Good For The Game
Just minor code cleanup.
Script used is located at https://metek.tech/camelTo-Snake.7z
EDIT 11/23/25: Updated the script to use multithreading and sequential
scan so it works a hell of a lot faster
```
/*
//
Copyright 2025 Joshua 'Joan Metekillot' Kidder
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
//
*/
using System.Text.RegularExpressions;
class Program
{
static async Task Main(string[] args)
{
var readFile = new FileStreamOptions
{
Access = FileAccess.Read,
Share = FileShare.ReadWrite,
Options = FileOptions.Asynchronous | FileOptions.SequentialScan
};
FileStreamOptions writeFile = new FileStreamOptions
{
Share = FileShare.ReadWrite,
Access = FileAccess.ReadWrite,
Mode = FileMode.Truncate,
Options = FileOptions.Asynchronous
};
RegexOptions regexOptions = RegexOptions.Multiline | RegexOptions.Compiled;
Dictionary<string, int> changedProcs = new();
string regexPattern = @"(?<=\P{L})([a-z]+)([A-Z]{1,2}[a-z]+)*(Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss)([A-Z]{1,2}[a-z]+)*";
Regex camelCaseProcRegex = new(regexPattern, regexOptions);
string snakeify(Match matchingRegex)
{
var vals =
matchingRegex.Groups.Cast<Group>().SelectMany(_ => _.Captures).Select(_ => _.Value).ToArray();
var newVal = string.Join("_", vals.Skip(1).ToArray()).ToLower();
string logString = $"{vals[0]} => {newVal}";
if (changedProcs.TryGetValue(logString, out int value))
{
changedProcs[logString] = value + 1;
}
else
{
changedProcs.Add(logString, 1);
}
return newVal;
}
var dmFiles = Directory.EnumerateFiles(".", "*.dm", SearchOption.AllDirectories).ToAsyncEnumerable<string>();
// uses default ParallelOptions
// https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.paralleloptions?view=net-10.0#main
await Parallel.ForEachAsync(dmFiles, async (filePath, UnusedCancellationToken) =>
{
var reader = new StreamReader(filePath, readFile);
string oldContent = await reader.ReadToEndAsync();
string newContent = camelCaseProcRegex.Replace(oldContent, new MatchEvaluator((Func<Match, string>)snakeify));
if (oldContent != newContent)
{
var writer = new StreamWriter(filePath, writeFile);
await writer.WriteAsync(newContent);
await writer.DisposeAsync();
}
reader.Dispose();
});
var logToList = changedProcs.Cast<KeyValuePair<string, int>>().ToList();
foreach (var pair in logToList)
{
Console.WriteLine($"{pair.Key}: {pair.Value} locations");
}
}
}
```
## Changelog
🆑 Bisar
code: All (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use
snake_case, in-line with the STYLE guide. Underscores rule!
/🆑
## About The Pull Request
Another relatively simple simple_mob to basic mob refactor. I wish more
people were doing these since I was saving these for people to get their
feet wet, but I think it's better to pivot away from that and just have
only the gargantuan ones outstanding (since those ones are pretty much
their own framework).
I also delayed this one because we didn't actually have the AI framework
available 1-2 years ago for this to be seamless and easy, but now we
have easy fleeing functionality so that's an easy plug and play.
This rework contains the following:
* General code readability changes and standardization (i.e. removing
single letter vars, `SECONDS` defines)
* Moves more stuff to subtypes instead of having it be on parent
* Removes the necessity for define "attack modes", that's on subtypes
now
* Fixed instances where args weren't defined. I think cult apparitions
via the mirror shield have been much weaker than what they were
originally intended to, so I changed it to what I thought was correct. I
can change the health to be down but it really doesn't make sense as a
lot of the args were not standardized (ideally we would have more
subtypes). I can change this back to the original arg order, let me
know.
* Clones now replicate on damage taken as well as when they attack. I
wanted to tweak this around more but this was originally added since I
confused myself, but it gave a more realistic mitotic effect I liked
more for the replicating clones.
## Why It's Good For The Game
If we want more flamboyant mirage escapes or sneaky clone AI behavior,
it is now far easier to implement. It's very simplistic at the moment
but is pretty much fully featured and representative of the simple mob
version of illusions. They were already laden to the item/mob that was
spawning them in anyways, so this is really the most simple stuff we got
going on.
I tested this with the mirage grenade, reactive stealth armor, and the
mirror shield. I have no clue how the heretic stuff works but it appears
to be a really simple framework plug-and-play so no real worries there I
think.
## Changelog
🆑
refactor: The Cult of Nar'Sie realized that they were installing the
mirrors on their mirror shields the wrong way around, thus altering the
makeup of their mirror clones health, damage, and re-replicability.
refactor: In response to the recent updates in clone magic, Nanotrasen's
Stealth Reactive Armor should now generate more convincing clones.
/🆑