Commit Graph

966 Commits

Author SHA1 Message Date
SkyratBot
4fb4a50167 [MIRROR] A red spy has entered the base: Adds Spies, a roundstart antagonist inspired by Goonstation's Spy-Thief (#26711)
* A red spy has entered the base: Adds Spies, a roundstart antagonist inspired by Goonstation's Spy-Thief

* Update code/__DEFINES/role_preferences.dm

* Update code/__DEFINES/role_preferences.dm

* closet fix

* I am stupid

* fix effects

* there we go

* is this the end?

* ugh

* please stop

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: jjpark-kb <55967837+jjpark-kb@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
2024-03-23 16:27:57 -04:00
SkyratBot
b7f4873e1c [MIRROR] Adds a collar bomb to the black market. (#26907)
* Adds a collar bomb to the black market. (#81898)

## About The Pull Request
Originally part of the other blackmarket PR, but it seemed a tad awkward
to have it mandatorily installed on mobs rescued from the holding
facility.

But yeah, this PR adds a neck item that causes the wearer's death with a
5 seconds countdown when triggered, which can be bought from the market
uplinks. The box comes with a yellow button to trigger it, but it can
also hold a signaler (which the wearer cannot tamper) if you wish to use
assemblies. Take note that, upon being worn, the item cannot be removed
by any mean beside beheading iirc (so HARS should counter it), and
fire/acid if you have a ton of patience because of its high armor
values.

## Why It's Good For The Game
More mean and evilish stuff to populate the black market with.

## Changelog

🆑
add: Added a collar bomb to the black market.
add: Added a possible kit to the special syndie bundle B, which also has
uses these collars.
/🆑

---------

Co-authored-by: san7890 <the@ san7890.com>

* Adds a collar bomb to the black market.

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
2024-03-15 22:02:18 -04:00
SkyratBot
232ac4b6ee [MIRROR] Making the fuck you coupon trigger only once, take two (#26866)
* Making the fuck you coupon trigger only once, take two (#81953)

## About The Pull Request

So a previous pr attempted to fix the fuck you coupon, by adding 1 to
the arguments.
```dm
(tgstation/code/modules/cargo/coupon.dm, line 87)
cursed.AddComponent(/datum/component/omen, 1)
```
But this was setting the `vessel` rather than the `incidents_left`
argument to 1.
```dm
(tgstation/code/datums/components/omen.dm, line 20)
/datum/component/omen/Initialize(obj/vessel, incidents_left, luck_mod, damage_mod)
```
Moving this argument over one fixes the issue.
```dm
cursed.AddComponent(/datum/component/omen, null, 1)
```

However! We're now skipping over the `vessel` value, which is used to
burn up a curse's vessel once the curse is expended.
Setting this to `src` rather than `null` means the fuck you coupon
actually gets 'expended', which I think it better than just using `null`
or `incidents_left = 1`. The coupon's useless once it's done, and this
way it's cooler anyway.
For consistency, we then also add this behaviour to when the coupon
gives you a heart attack instead.

Then! I noticed there was a _second_ bug with fuck you coupons, where it
would stop prematurely if the location wasn't a mob.
```dm
(tgstation/code/modules/cargo/coupon.dm, line 80-81)
if(!ismob(loc))
	return FALSE
```
However, this also happens when you don't have a free hand for it to put
the coupon in, and thus entirely negating the curse and just giving you
a useless fuck you coupon.
We fix this by just adding a `user` argument to `generate`, which it
prefers to use when available, and is set to the user ripping off the
coupon in the first place.
## Why It's Good For The Game

Fixes #81946.
As fuck you coupons are pretty much useless after expending their curse,
and we have to add the vessel value anyway, I thought it'd be more
fitting to add the coupon as the vessel rather than just putting in
null. Then, for consistency, I felt it'd be best to make them *also*
burn when giving you a heart attack when you already have a curse.
Y'know, it's expending the coupon for it's one-time fuck you!

Also fixes fuck you coupons not actually applying their curse if you
didn't have any free hands for it to put the coupon in when ripping it
off.
## Changelog
🆑
fix: Fuck you coupons ACTUALLY trigger only once again. As a
consequence, they also burn up when expended for their one-time fuck
you.
fix: Fuck you coupons work regardless of whether you had a free hand or
not.
/🆑

* Making the fuck you coupon trigger only once, take two

---------

Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
2024-03-13 19:42:55 -04:00
SkyratBot
0e217eab7b [MIRROR] Sticker resprite and rewrite (#26853)
* Sticker resprite and rewrite (#81893)

Stealing from Goon is bad, but stickers are actually a good feature, and
loosing those will be a disappointment. This project aims to recreate
'em from scratch without using Jimmyl's and Goon's code. Also,
suspicious icons were resprited and renamed.

* Sticker resprite and rewrite

---------

Co-authored-by: Interception&? <137328283+intercepti0n@users.noreply.github.com>
2024-03-13 19:35:59 -04:00
SkyratBot
e04cd7d8bb [MIRROR] Adds more syndie-kits! 3 of them to be exact. (#26816)
* Adds more syndie-kits! 3 of them to be exact. (#81510)

## About The Pull Request
Adds 3 syndie-kits, two are in the special pool and the other in the
tactical pool. Below are the kits content:

Tactical:
1. Revolutionary (28TC), which contains:
- Hypnotic Flash (7TC)
- Radioactive Microlaser (3TC)
- LSD pills (~1TC)
- Sleepypen (4TC)
- Nagant Revolver (13TC, Comparable to 357. Revolvers (far harder to get
ammo though))
- Megaphone
- Revolutionary bedsheet
- Russian warcoat
- Ushanka
- Contraband poster boxes

![image](https://github.com/tgstation/tgstation/assets/127663818/2fde2a65-edb1-45b7-9d9e-6b19e3239dbd)

Special:
2. Prophunt (29TC), which contains:
- Chameleon Projector (7TC)
- Doorjack (3TC)
- Stealth Implant (8TC)
- Makarov (7TC)
- Thermal Glasses (4TC)

![image](https://github.com/tgstation/tgstation/assets/127663818/f17317fb-b852-4a25-a4b8-57f22365afb4)

3. Sam Fisher (32TC), which contains:
- Spec Ops suit (~6TC comparable to infiltrator suit)
- Night Vision Googles (~3TC)
- Assault belt with assorted items (18TC, refer to image)
- Combat Gloves + Krav Maga (5TC)

![image](https://github.com/tgstation/tgstation/assets/127663818/b903f978-4e77-40b5-9213-21a5d67edbd8)
## Why It's Good For The Game
I use syndie-kits a lot whenever I roll traitor, always found them to be
a quick and easy way to figure out what i'm going to do for the traitor
round. but there's only so much kits that eventually you'd get bored of
getting the same old kits. This PR fixes that! adds 3 different
syndie-kits each with their own little unique gimmick that weren't
present in the kits before.

 more kits = more gimmicks = more fun and engaging gameplay

The Revolutionary kit is centered around it being a budget
revolutionary, you're given a hypnoflash and various other gadgets to
help you get your own small army to do your bidding, also comes with a
drippy (do anyone still use that word anymore?) russian armor and
revolver for self defense.

Prophunt kit is self-explanatory, be the little gremlin you are,
stealing and sneaking your way through a greentext.

Meanwhile the Sam Fisher kit essentially allows you to be an spec ops
agent, getting a myriad of gear that's designed for sabotage and quick
assasinations. comes with a cool armor set
## Changelog
🆑
add: Adds 3 new kits into the syndie-kit spawn pool, 2 for special and
another for tactical
/🆑

* Adds more syndie-kits! 3 of them to be exact.

---------

Co-authored-by: Singul0 <127663818+Singul0@users.noreply.github.com>
2024-03-09 14:25:42 -05:00
SkyratBot
6cb52ccd22 [MIRROR] Remove 2 instances of duplicate argument names (#26716)
* Remove 2 instances of duplicate argument names (#81757)

## About The Pull Request

I fixed 2 instances of procs having multiple arguments with the same
name. BYOND does not error on these, instead ignoring all but the last.
It's best to remove these for clarity.

## Why It's Good For The Game

N/A

---------

Co-authored-by: san7890 <the@ san7890.com>

* Remove 2 instances of duplicate argument names

---------

Co-authored-by: wixoa <wixoag@gmail.com>
Co-authored-by: san7890 <the@ san7890.com>
2024-03-05 17:31:04 -05:00
SkyratBot
deac009edf [MIRROR] Fixed the floortile crate, adds them to blackmarket (#26710)
Fixed the floortile crate, adds them to blackmarket  (#81742)

https://github.com/tgstation/tgstation/pull/81512

i accidentally added it to the emagged console it should be on
contraband now.
also added a backpack to present it from interfering.
and its available in uplink

🆑
add: box with a set of floortile camo, which can be ordered in black
market uplink
add: also adds a backpack to camouflage
fix: i had the crate under emagged console, should be fixed now.
/🆑

---------

Co-authored-by: bigfatbananacyclops <angelwut@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-03-01 19:05:08 +01:00
SkyratBot
dc36025f92 [MIRROR] remove plasmaman check in survival boxes (#26527)
* remove plasmaman check in survival boxes

* There

---------

Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
2024-02-21 19:07:24 +01:00
SkyratBot
7e2cd23368 [MIRROR] Fixes Cargo Lockbox Iconstates (#26520)
* Fixes Cargo Lockbox Iconstates (#81481)

## About The Pull Request

The cargo lockboxes didn't update iconstates when locked. Seems like an
oversight given that their parent object does this and there's unused
sprites for this behaviour in this item, so this enables it to use those
sprites that are already in code.

## Why It's Good For The Game

It's hard to know if someone has taken their items or not because an
unlocked case looks identical to a locked one. Also fixes an oversight
idk.

## Changelog
🆑
fix: cargo lockboxes update iconstates correctly now
/🆑

* Fixes Cargo Lockbox Iconstates

---------

Co-authored-by: Sylphet <58074918+Sylphet@users.noreply.github.com>
2024-02-16 16:12:28 -05:00
SkyratBot
453a78dca1 [MIRROR] Contractor loadout adjustment + Price tweak (#26471)
* Contractor loadout adjustment + Price tweak

* skyrat change

---------

Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
2024-02-11 18:05:40 -05:00
SkyratBot
138d1324b8 [MIRROR] Comprehensive cleanup of storage datum, replaces the weakrefs with just refs (because they were managed already) (#26357)
* Comprehensive cleanup of storage datum, replaces the weakrefs with just refs (because they were managed already)

* fixes

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
2024-02-07 14:12:31 -05:00
SkyratBot
5543a44882 [MIRROR] ArcMining Pr Beta: Version 1.2 (#26205)
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>
2024-01-22 01:33:55 +01:00
SkyratBot
f2d01d0c00 [MIRROR] Filled trash bags use the correct sprites when worn. (#26182)
* Filled trash bags use the correct sprites when worn. (#81011)

## About The Pull Request

Fixes #81009.

Trash bags did not have a `worn_icon_state` set, which means that it
tried to use an invalid state when worn while not empty. This is now
fixed.
## Why It's Good For The Game

Missing sprites bad.
## Changelog
🆑
fix: Filled trash bags show up properly when worn.
/🆑

* Filled trash bags use the correct sprites when worn.

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
2024-01-20 13:50:49 -05:00
SkyratBot
da48f77628 [MIRROR] Implant pad TGUI [MDB IGNORE] (#26147)
* Implant pad TGUI (#80978)

## About The Pull Request

I was messing a little bit with TGUI stuff and ended up turning the
implant pad TGUI, so why not.
On top of the new UI, I replaced the messages to chat with nice and
consistent balloon alerts which will hopefully make it not seem like an
ancient piece of shit.

Video demonstration

https://github.com/tgstation/tgstation/assets/53777086/a1ebe0d4-005b-4e29-a623-2c1b352cd017

I also removed ``INTERACT_MACHINE_SET_MACHINE`` from the prisoner
console, because it was accidentally left in when the console was moved
to TGUI

## Why It's Good For The Game

I'm still going down the list of things that need to be TGUI, and I
ended up doing this cause I just felt like it while messing with some
other stuff.
Rest of the list is visible here:
https://hackmd.io/@ sClqlHM0T4yZfn-qa5KnAg/S152Tl2hh

## Changelog

🆑
refactor: Implant pads now use TGUI
/🆑

* Implant pad TGUI

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
2024-01-17 06:39:40 -05:00
SkyratBot
348fbc951a [MIRROR] Geared Assistants Station Trait [MDB IGNORE] (#25928)
* Geared Assistants Station Trait

* merge conflicts fixes

* hmmm

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-01-07 19:59:15 +00:00
SkyratBot
4ecf8128e1 [MIRROR] Changes the scope component to be appliable to other items and not just guns. Binocs and the Curator's mothic cap use it. [MDB IGNORE] (#25962)
* Changes the scope component to be appliable to other items and not just guns. Binocs and the Curator's mothic cap use it.

* Update moth.dm

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2024-01-04 21:40:24 -05:00
SkyratBot
861b94af58 [MIRROR] Lizard food: adds burger variants and a few extras [MDB IGNORE] (#25940)
* Lizard food: adds burger variants and a few extras (#80424)

## About The Pull Request
This PR is inspired by [SS13
TV](https://youtu.be/gVXki-1uBLY?si=l9QZyVFW1CyzIEL_&t=73) [The best
show on air.](https://youtu.be/gVXki-1uBLY?si=hrQ8NADTu0WwmH7n&t=223)
I wanted to help port the great human cuisine over to be something
lizards could comprehend.
I'm intending to add: 7 Burger variants (Rat, Plain, Chicken, Fish,
Sssloppy Moe, Rib and RootGuffin)

![image](https://github.com/tgstation/tgstation/assets/53197594/d341afac-7996-4eaa-a03d-f667875f82eb)
I also am adding two extra foods: Korta Wellington and
[Meatsicles.](https://media.tenor.com/CGDqgg8bb9AAAAAC/meat-popsicle-5th-element.gif)

![image](https://github.com/tgstation/tgstation/assets/53197594/8df66861-f2c5-4477-b37e-416bc8e7ebf8)
I'm not done yet! For human chefs, rejoice! I'm adding a way to make
vinegar from grape juice and enzyme (removing the wine recipe because
that just becomes grappa instantly.) and the ability to 'fold' your
pickle jars back into beakers to let you recycle the jar to make more
pickles without having to trek to the nearby lathe or autolathe.

Updated meatsicles.

![image](https://github.com/tgstation/tgstation/assets/53197594/52e042e8-dab1-4af1-90bb-84812975aa4c)

## Why It's Good For The Game
More food for lizards means a chef doesn't need to harass botany for
more and more plants just to satisfy the growing lizard population. You
can feed humans the same burgers they love without aggression from the
~~subhumans~~ lizardfolk who are hungry too.
Vinegar is now craftable, which means if your grapes and enzyme is of
high enough quality, it'll not impact your food quality. However, that
requires a competant botanist and more work. You can choose between
cargo or saving like 20cr for your work.
Not being able to just refill an empty jar didn't make any sense to me,
I've made pickles IRL and have never encountered that.
## Changelog
🆑
add: Added new lizard variants of existing foods for equality of
edibility.
qol: made pickle jars reusable and vinegar craftable.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Lizard food: adds burger variants and a few extras

---------

Co-authored-by: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2024-01-01 19:23:36 +00:00
SkyratBot
49452b3851 [MIRROR] The Coupon Master PDA app [MDB IGNORE] (#25855)
* The Coupon Master PDA app (#80240)

## About The Pull Request
This PR adds a new PDA program to the supply category, which allows
users to redeems coupons for various cargo packs (mostly goodies), like
the ones also found at the bottom of cig packs.

How it works is fairly simple:

- Once installed, the modular computer subsystem will periodically, at a
3-5 minutes interval, generate a coupon code datum associated to a plain
text code, which is sent out to everyone with the program installed.
- The user can then open the program and insert the text into an input
box to redeem the coupon code, which is then associated with their bank
account.
- He will then have to find a photocopier, and tap it with the PDA to
print the coupon. Only one coupon can be printed. Photocopier fees
apply, so it'd cost 5 creds to the average assistant to print the
coupon.
- He can then insert the coupon in a cargo console and order/reuest the
associated pack (same deal as cig coupons).
- Some coupon codes however, especially those with juicer discounts,
will expire after a while if not printed.

Albeit mostly innocuous, the program provides negative Detomatix
resistance, slowly fills the computer file storage with trash files with
each redeemed coupon, and halves the download speed of new apps. Not
really the cleanest ware out there.

This PR also extends coupons to several non-goody packs, since they have
been privately buyable for over the last couple years now. Some packs
get discounts less frequently however, with those in the uncommon
category being roughly 1 in a 12 chance and the rare being 1 in 50.

Here's a screenshot of the UI (outdated, I've reduced the height from
500 to 400 and the notice box tip to specify the right click):
![Coupon
Master](https://github.com/tgstation/tgstation/assets/42542238/1d242d09-0f62-4e2e-8a6e-014daa3f6a55)

Fun fact: Right now, the odds of a 75% discount coming from the Coupon
Master for the 1.000.000 credits bycycle pack are roughly 0.0012%, while
that of a 50% for the same pack, from a cig pack coupon are 0.0042%.

## Why It's Good For The Game
These last couple days I've been wanting to test myself at making simple
UIs, as well as contributing to the modular computers feature, which has
started to become pretty neat ever since PDAs were reworked into a
subtype of it.

Beside, coupons are a very small feature limited to the bottom of
cigarette packs (also possibly cursed) in the current state of affairs.
Cargo is filled with packs that are niche or fluff. Modular computers
also has those little things that, while interesting, do not contribute
a whole lot. Maybe this is one of them, but I guess free* coupons are
always a big W.

## Changelog

🆑
add: Added the 'Coupon Master' program for the PDA. Install it to
receive periodical, redeemable coupons for several cargo packs. Requires
NTnet connection and the messenger enabled to work.
add: Coupons are no longer only limited to goodies, but may also apply
discount to some other packs as well.
/🆑

<sup>*minus the photocopier fee</sup>

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>

* The Coupon Master PDA app

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Watermelon914 <37270891+Watermelon914@ users.noreply.github.com>
2023-12-25 20:38:54 +00:00
SkyratBot
d718af9913 [MIRROR] Bridge Assistant Station Trait [MDB IGNORE] (#25667)
* Bridge Assistant Station Trait

* Diffs

* fixes

* Update job_traits.dm

---------

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:54:11 +00:00
SkyratBot
d34aab9be3 [MIRROR] PDA general maintenance (NTNet downloader rework) [MDB IGNORE] (#25133)
* PDA general maintenance (NTNet downloader rework)

* Update modular_computer.dm

* e

* weh

* Update archive_viewer.dm

* Update three_layer_hats.json

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:28:40 +00:00
SkyratBot
49daf536b5 [MIRROR] [BOUNTY] Re-adds Contractors [MDB IGNORE] (#25094)
* [BOUNTY] Re-adds Contractors

* I hate copy pasted overrides so much. BEGONE

* Fixes the merge conflict. It's still not gonna work, too many proc redefinition

* The sheer amount of overrides

* This is hell

* remove modular copy of spawn_contractor_partner

* part 2 of spawn_contractor_partner oops

* un-duplicate create_contracts proc

* Remove duplicate contract generate and finish_enter

* something to make the linter stop crying

* Receiving

* removes our contractor stuff in favour of parity

* Update SyndicateContractor.tsx

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-24 22:00:55 +00:00
SkyratBot
31ab9cb461 [MIRROR] Adds Head of Security beret and bowman to their locker [MDB IGNORE] (#25806)
* Adds Head of Security beret and bowman to their locker (#80503)

## About The Pull Request

adds Head of Security beret to their garmet bag and adds Head of
Security bowman to their locker

## Why It's Good For The Game
Other departments start with their round start drip in their lockers,
Head of Security should too, for consistency!
Promoted Head of Security should get their fancy beret and headset

## Changelog
🆑
qol: Head of Security beret added to their garmet bag
qol: Head of Security bowman added to their locker
/🆑

* Adds Head of Security beret and bowman to their locker

---------

Co-authored-by: Redbert <109347230+Deadgebert@users.noreply.github.com>
2023-12-23 19:24:42 -05:00
SkyratBot
5cc6fe943c [MIRROR] GAGSify colored/job labcoats [MDB IGNORE] (#24498)
* GAGSify colored/job labcoats

* fixes two of our coats

* a few more fixes

* okay

* Update interdynefob.dmm

* okay digi

* e

---------

Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: jjpark-kb <mccorvey.norman@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
2023-12-23 16:34:06 +00:00
SkyratBot
2fa469566c [MIRROR] Balance changes to swords, energy shields and modsuit shields. [MDB IGNORE] (#25531)
* 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>
2023-12-10 20:51:37 -05:00
SkyratBot
d143f17ccd [MIRROR] "Security Implant" rework, prisoner management console updates [MDB IGNORE] (#25525)
* "Security Implant" rework, prisoner management console updates

* Fix conflicts

---------

Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-09 23:49:54 -05:00
Hypertorus Fusion Reactor
ee1d2ff5cc Good Assistant Points Punchcard. Now in Wallets! (#25471)
makes gbp_punchcard wallet-able

Co-authored-by: Hypertorus Fusion Reactor <109750345+MrDerpi@users.noreply.github.com>
2023-12-06 23:11:32 -05:00
SkyratBot
eccaf8ac77 [MIRROR] Fix medibots [MDB IGNORE] (#25454)
* Fix medibots

* Conflict!

---------

Co-authored-by: Verm <32827189+Vermidia@users.noreply.github.com>
Co-authored-by: SomeRandomOwl <somerandomowl@ratchtnet.com>
2023-12-05 22:14:38 -06:00
SkyratBot
9c60ff1de1 [MIRROR] Removes Clone Damage [MDB IGNORE] (#25429)
* Removes Clone Damage

* Update blackbox.dm

* Modular

* Update schema

* Update database_changelog.md

* More modular deprecated clone things

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-12-04 23:01:54 -05:00
SkyratBot
4c01e3f805 [MIRROR] Demotes the "electrical conductivity" flag from flags_1 to obj_flags [MDB IGNORE] (#25381)
* 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>
2023-12-03 07:58:26 +00:00
SkyratBot
3d42235690 [MIRROR] Patches Up Gifts In Anticipation Of The Holidays [MDB IGNORE] (#25383)
* Patches Up Gifts In Anticipation Of The Holidays (#80035)

## About The Pull Request

I decided to look at why everyone loves (and I despise) Christmas too
much, and was met with a lot of smelly code. In fact, some of it was
completely busted! Let's fix several things.

* We no longer use a GLOB for "every possible item you can cram into a
gift box", we now use static lists scoped to the proc. That saves us
some pollution for something that really didn't need it (and only was
set up that way for cacheing I believe). We also static-cache stuff that
we weren't doing previously, to save even more work (in anticipation for
entropic heat death of universe).
* Repaths `/obj/item/a_gift` to `/obj/item/gift`. I never liked the old
path and this new one is cleaner. This also uncovered a bug.
* Mappers would var-edit gifts to have a unique mapped-in type, but the
code never respected this. I fixed it so the behavior should now respect
that rather than override the variable on Initialize(). Now the goat
plushie gift will always have said goat plushie rather than just any
toy.
* Procs should now have the proper arg nomenclature.
* Also just cleans up a lot of single letter variables and the like.
There was some cooked shit that's now alphabetized and nicely
multilined.
## Why It's Good For The Game

Ho ho ho.
## Changelog
🆑
fix: Some mapped-in gifts that were supposed to guarantee a certain gift
weren't spawning that exact gift type, this has been patched to reflect
the mapper's intent.
/🆑

* Patches Up Gifts In Anticipation Of The Holidays

* Update flora.dm

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-12-03 06:41:03 +00:00
SkyratBot
59abf10ea7 [MIRROR] [NO GBP] ACTUALLY Allows dogtags to fit into wallets [MDB IGNORE] (#25193)
* [NO GBP] ACTUALLY Allows dogtags to fit into wallets

* Update wallets.dm

* Update wallets.dm

* Update wallets.dm

* Update wallets.dm

---------

Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-22 20:02:20 +00:00
SkyratBot
b0a9ec864c [MIRROR] [READY] The Tackleling: Unarmed bonuses and features contribute to tackle success and failure, significant outcome overhaul, among other things [MDB IGNORE] (#25191)
* [READY] The Tackleling: Unarmed bonuses and features contribute to tackle success and failure, significant outcome overhaul, among other things

* Update tackle.dm

* Update living.dm

* Update tackle.dm

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-11-22 19:13:26 +00:00
SkyratBot
94c339ce8c [MIRROR] TGUI for Safes and Secure briefcases (Safes are now a structure, too) [MDB IGNORE] (#25059)
* TGUI for Safes and Secure briefcases (Safes are now a structure, too) (#79594)

* TGUI for Safes and Secure briefcases (Safes are now a structure, too)

* Modular

* UpdatePaths

* Modular

---------

Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-11-17 10:21:49 -05:00
SkyratBot
e135ddecc1 [MIRROR] Changes to the lore of Knock [MDB IGNORE] (#24891)
* Changes to the lore of Knock (#79542)

## About The Pull Request

This PR renames Knock to Lock, and changes most of the knowledge gain
lore.

## Why It's Good For The Game

The Knock Lore, is based on the Knock Principle from Cultist Simulator,
with the path description being copied from the wiki. Many other
keywords and concepts are fully lifted from that game (Locksmith's
Secret, Mother Of Ants, etc). In my vision, if a heretic path has to be
based on a principle from cultist simulator, it should have its own
spin, and also, the knowledge gain texts should tell a story. For
example, Ash tells the story of a watchman burning down their city after
being betrayed, and Cosmic is a love story between a knowledge seeker
and a monster from the beyond.

So I have decided to reflavour Knock. I have changed the name to Lock,
so at least it would feel similar, just like how Blade is akin to Edge.
Many powers also block people or confuse their paths instead of opening
new ways, and thus, I feel a path whose name implies that it *both*
opens and closes would be more self describing.

I have changed most of its lore to be about the Locked Labyrinth, where
knowledge seekers willingly trap themselves and submit themselves to
servitude to find ultimate freedom by progressing through its trials.
These are the Stewards, who are basically workers in an infinite and
malicious hotel in their dreams. Consider them assistants if you will
(this wasn't my intention when I wrote the lore, but thinking about it
in retrospect, it honestly fits). In the implied story, the heretic
joins their ranks, but keeps getting closer to the more corrupt members,
along with parasitic spirits. Ultimately, they manage to open the
Labyrinth's core, letting out the Stewards, allowing them to manifest in
the forms of heretic summon creatures.

The side path spells and the lock knowledge ritual I have not touched,
they were fine. Some items have been renamed and repathed.

I have kept the distinctive sound effect for using the Grasp, as its
unique enough. Though if someone did have a nice sound effect for
turning a lock and added some filters, I would add it.

**DB Issue**

I have renamed the achievement's define to MEDAL_LOCK_ASCENSION but kept
the value as "Knock", as I don't know how trigger a change in the DB. If
this is a blocking change, I'll try to figure out how to make a
migration file.

**Future improvements**

I would also come back later with another PR, that hands out names to
the eldritch beings spawned by the portal, based on the Stewards in the
knowledge gain lore that I added, along with some new ones that fit the
theme, and some jokey ones like Minotaur.

## Changelog

🆑
spellcheck: Renamed Knock to Locks, and changed most of the flavor text
of knowledge gain, and renamed some items and knowledges from the path.
/🆑

* Changes to the lore of Knock

---------

Co-authored-by: Profakos <profakos@gmail.com>
2023-11-09 15:31:16 -05:00
SkyratBot
2033151c04 [MIRROR] Bandolier quality of life and minor buff [MDB IGNORE] (#24879)
* Bandolier quality of life and minor buff (#79518)

Gives the bandolier the ability to quick gather, adds .357 ammo to the
items it can carry and increases the capacity from 18 to 24

The bandolier feels a bit underwhelming to use with how it currently is,
Giving it quick gather and a higher carry capacity will make it worth
the belt slot, Also carrying .357 on it for a revolver is cool.

* Bandolier quality of life and minor buff

---------

Co-authored-by: starrm4nn <139372157+starrm4nn@users.noreply.github.com>
2023-11-09 07:05:16 -05:00
SkyratBot
064682b5cd [MIRROR] Adds engi improvised weapon - rebar crossbow + Engi Exclusive Tot Shop Variant [MDB IGNORE] (#24860)
* 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

![image](https://github.com/KingkumaArt/KingkumaTGSS13/assets/69398298/e4d921a6-9bd6-4eb3-9085-2bfa5df67826)
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>
2023-11-08 22:35:31 -05:00
SkyratBot
b612704f83 [MIRROR] Fix nuclear operative induction implants [MDB IGNORE] (#24845)
* Fix nuclear operative induction implants (#79554)

## About The Pull Request
Fixes #79547

#78597 broke induction implants by replacing the "has antag datum" check
with a "does not have a fake antag datum" check which passes on a null
case. I added an `isnull()` check to cover this.

The introduced `antag_flags` var was by default set to
`FLAG_FAKE_ANTAG`, presumably in error as the only antag datums to
override this are ERT and Valentines and they just set it to
`FLAG_FAKE_ANTAG` anyways. This also means the induction implants ONLY
worked on non-antags and anybody with any antag datum would fail the
implant. I changed the default to `NONE`. This may have some knock-on
effects as `is_special_character()` was returning `FALSE` with any antag
datum (unless allow_fake_antags was passed) but no special role which
this also fixes.
## Why It's Good For The Game
Non-antags can no longer self-antag their way onto a nuclear operative
team and antags can now antag their way onto a nuclear operative team.
## Changelog
🆑
fix: Nuclear operative induction implants now work correctly on
antagonists and fail on non-antagonists
/🆑

* Fix nuclear operative induction implants

---------

Co-authored-by: Isratosh <Isratosh@hotmail.com>
2023-11-07 09:42:02 -05:00
SkyratBot
a859b09902 [MIRROR] Gives the Revolvers on the Nuke Ops uplink Syndicate Firing Pins [MDB IGNORE] (#24692)
* Gives the Revolvers on the Nuke Ops uplink Syndicate Firing Pins (#79327)

## About The Pull Request

gives revolvers on the nukie uplink syndie firing pins

## Why It's Good For The Game

Every other firearm on the nukie uplink has a syndie firing pin.

## Changelog
🆑
fix: The Syndicate Revolver now has a Syndicate Firing Pin on the Nuke
Ops uplink.
/🆑

* Gives the Revolvers on the Nuke Ops uplink Syndicate Firing Pins

---------

Co-authored-by: starrm4nn <139372157+starrm4nn@users.noreply.github.com>
2023-10-31 18:35:28 -04:00
SkyratBot
58be66a653 [MIRROR] Nukie Update Followup: Returns CQC to the previous price range, Core Gear kit for newbies, hat stabilizers for everyone [MDB IGNORE] (#24679)
* Nukie Update Followup: Returns CQC to the previous price range, Core Gear kit for newbies, hat stabilizers for everyone (#79232)

## About The Pull Request

Brings the CQC kit back down to the same price range of 14 TC (it's 1
more than before weapon kits). It feels like currently that CQC is
overpriced, even with the stealth box coming along with it, and by
comparison the energy sword and shield got a huge value increase by
combining the two. They're both melee styles and also equally difficult
play styles. It isn't really necessary to make one more expensive than
the other. Also now comes with syndicate smokes. It's a whatever change,
ops get these for free on the base.

Adds a core gear kit in the weapon category. This kit comes with a
doormag, a freedom implant, stimpack and c-4 charge. All of these are
items almost every nukie buys if they want to succeed, so let's inform
newer players by putting it RIGHT on top of the list. This isn't at any
discount, this is mostly to help inform players what items help make you
successful.

Hat stabilizers are now a part of every syndicate modsuit for FREE. It
comes built in, can't be removed, and has no complexity cost. Now
everyone can wear their wacky hats as they operate.

## Why It's Good For The Game

CQC felt like it got shafted waaay too hard with the weapon case
changes. Definitely don't believe that it is punching at the same weight
as many of the other high cost weapons. So we've dropped it down a
category. 14 TC is still a large upfront cost, even if it comes bundled
with a lot of goods.

Melbert gave me the idea of a core bundle kit to help newer players and
I was really taken with that. So I added it as part of this followup.

I want people to wear their hats goddamnit, and I didn't learn my
mistake with the tool parcels. So now everyone has hat stands on their
suits. WEAR THE SOMBRERO YOU **FUCK**.

### THIS IS NOW A THREAT.

## Changelog
🆑
balance: Operatives can once again read about the basics of CQC at a
reasonable price of 14 TC.
qol: All Syndicate MODsuits come with the potent ability to wear hats on
their helmets FOR FREE. No longer does any operative need be shamed by
their bald helmet's unhatted state when they spot the captain, in their
MODsuit, wearing a hat on their helmet. The embarrassment has resulted
in more than a few operatives prematurely detonating their implants! BUT
NO LONGER! FASHION IS YOURS!
qol: There is now a Core Gear Box, containing a few essential pieces of
gear for success as an operative. This is right at the top of the
uplink, you can't miss it! Great for those operatives just starting out,
or operatives who need all their baseline equipment NOW.
/🆑

* Nukie Update Followup: Returns CQC to the previous price range, Core Gear kit for newbies, hat stabilizers for everyone

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
2023-10-31 10:24:57 -07:00
SkyratBot
0e3b7d842b [MIRROR] Adds a Syndicate Monkey Agent beacon uplink item [MDB IGNORE] (#24550)
* Adds a Syndicate Monkey Agent beacon uplink item (#79012)

## About The Pull Request

Adds a Syndicate Monkey Agent beacon uplink item. It spawns a dapper
monkey that must follow your orders.

Added a monkey gun case to the uplink, which contains monkey guns!
Though they aren't very powerful.

Added a more modularlike subtype for antagonist spawners to reduce
future hardcoding.

Gave the syndicate turtleneck a monkey sprite, from SS14!

## Why It's Good For The Game

I want to see the clown driving security insane with 2-3 monkeys and an
incredible amount of pranking. Or an assistant killing everyone with his
monkey friends while wearing a monkey suit. Or a geneticist sending out
mutated monkeys to kill people. Or a scientist equipping his monkeys
with bombs or xenobiology equipment and sending them out to wreak havoc.

6 TC is only enough for two monkeys, but you can get a third if you
finish any kind of objective.

> Added a monkey gun case to the uplink, which contains monkey guns!
Though they aren't very powerful.

We can't have the monkey mafia without guns, come on. The guns are weak
and only usable by monkeys. Additionally, they're restricted to
entertainment only.

Credit to SS14 for the monky turtleneck sprite.

## Changelog

🆑
add: Adds a Syndicate Monkey Agent beacon uplink item. It spawns a
dapper monkey that must follow your orders.
add: Added a monkey gun case to the uplink, which contains monkey guns!
Though they aren't very powerful.
refactor: Added a more modularlike subtype for antagonist spawners to
reduce future hardcoding.
sprite: Gave the syndicate turtleneck a monkey sprite, from SS14!
/🆑

---------

Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Adds a Syndicate Monkey Agent beacon uplink item

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: ATH1909 <42606352+ATH1909@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-10-24 10:11:25 -07:00
SkyratBot
293af8c980 [MIRROR] Skeleton Keys now fit in the Explorer's Webbing [MDB IGNORE] (#24479)
* Skeleton Keys now fit in the Explorer's Webbing (#79120)

## About The Pull Request
/obj/item/skeleton_key is now in the mining belt's holdable list
## Why It's Good For The Game
Fixes #79099. I assume this was a bug since plenty of other small-sized
mining purchasables can fit in the belt.
## Changelog
🆑 Treach
fix: Skeleton Keys now fit in the Explorer's Webbing.
/🆑

* Skeleton Keys now fit in the Explorer's Webbing

---------

Co-authored-by: Treach <treachce@gmail.com>
2023-10-21 14:20:33 -04:00
SkyratBot
85f883f22c [MIRROR] Export scanner no longer shows shipping manifest value + manifest error changes [MDB IGNORE] (#24478)
* Export scanner no longer shows shipping manifest value + manifest error changes (#78923)

## About The Pull Request

Adds a variable to exports called `scannable`. If you are trying to scan
it and its set to false, then it won't show the value. When the actual
sale is done, the value will still be added/subtracted.

I also reorganized the message the scanner sends because I didn't want
to put multiple inline if statements.

Lastly, made it so that locked crates and private order lockboxes can't
get the shipping manifest contents error by adding a new trait
`TRAIT_NO_MANIFEST_CONTENTS_ERROR`. For departmental orders, I just
entirely disabled the manifests having errors by setting it to
`MANIFEST_CAN_FAIL` to false.

This PR conflicts with #78911, sorry but that PR was what reminded me to
fix this bug.

## Why It's Good For The Game

Some may call it tedium but having to read paperwork is part of the
cargo experience. Since it is harder to determine the crates value,
there has been a few balance changes. The penalty for incorrect manifest
is half the crates price or 500 credits, whichever is less.

![image](https://github.com/tgstation/tgstation/assets/47338680/b7549d11-eb49-43a2-8bb2-70ca8817e04d)

Let me know if you have any suggestions for how the message is worded,
it might be too long.

Locked crates and private orders can no longer get the shipping manifest
contents error because it is basically impossible to get someone to tell
you all the contents of their purchase. It's only a 5% chance of being
wrong and if they're not in cargo they probably don't care about the
cargo budget.

## Changelog
🆑
balance: Export scanner no longer shows value of shipping manifests, now
you actually have to read them.
balance: Shipping manifest penalty is now only half crate cost as well
as capped to 500 credits.
balance: Shipping manifests for private orders or locked crates can no
longer have the incorrect contents error. Shipping manifests for
departmental orders can n longer have any error.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* Export scanner no longer shows shipping manifest value + manifest error changes

---------

Co-authored-by: BlueMemesauce <47338680+BlueMemesauce@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-10-20 22:48:13 -04:00
SkyratBot
8d6c531124 [MIRROR] Adds 'Bloody Spreader' component that bloodies everything it touches [MDB IGNORE] (#24436)
* Adds 'Bloody Spreader' component that bloodies everything it touches

* Update meat.dm

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-10-19 17:20:20 -04:00
SkyratBot
af9ed1ee04 [MIRROR] Basic Space Dragon [MDB IGNORE] (#24340)
* Basic Space Dragon (#78979)

* Basic Space Dragon

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-10-14 19:35:25 -04:00
SkyratBot
120cea1200 [MIRROR] Adds a cowboy bundle to the nuclear ops uplink [MDB IGNORE] (#24234)
* Adds a cowboy bundle to the nuclear ops uplink (#78874)

## About The Pull Request
Tin

The bundle includes revolver, holster, armored cowboy outfit, horse,
apples to tame said horse, and a complimentary lighter.

It costs 18tc, so it's a little more expensive than getting the revolver
& holster on their own, but you also get a horse so it's worth it.
## Why It's Good For The Game
This was intended as a lone-ops bundle so we can finally have some lone
rangers but I think having a crew of cowboy outlaws doing a "train
heist" for a nuke is really funny.
## Changelog
🆑 Wallem
add: Nuclear Operatives now have ready access to ancient cowboy
technology in the form of the Outlaw Bundle. Now you too can roll into
town on your horse.
/🆑

* Adds a cowboy bundle to the nuclear ops uplink

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
2023-10-09 20:09:08 -04:00
SkyratBot
d75fe97d7c [MIRROR] allows janitor keys to be stored in janitor wintercoats and janibets [MDB IGNORE] (#24157)
* allows janitor keys to be stored in janitor wintercoats and janibets (#78724)

## About The Pull Request
the janitor access key could not be stored on their belt, or their
wintercoat slot, which felt off to me. so i added it to both of them,
and added the janicart key to the coat slot as well. i figure if one can
fit, the other probably can too.
## Why It's Good For The Game
convenient, less cumbersome storage for items that you want to keep both
close to your person, and accessible for easy use.
## Changelog
🆑
qol: allows janitor keys to be stored in janitor wintercoats and
janibets
/🆑

* allows janitor keys to be stored in janitor wintercoats and janibets

---------

Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
2023-10-06 18:52:44 -07:00
lessthanthree
714da15d36 Hypovial capacity, availability changes (#24124)
* hypovial balance

* fix hypo types

* Update hypovials.dm

* Update hypovials.dm
2023-10-05 20:54:29 -04:00
SkyratBot
90f0f07709 [MIRROR] adds boxes of bandages, and bandages to go in them [MDB IGNORE] (#24065)
* adds boxes of bandages, and bandages to go in them (#78406)

## About The Pull Request
have you ever walked into medbay, picked up a suture, and asked yourself
"how do i know how to stitch myself up?"
do you long for the simplicity of a bandage that can be popped on, no
thought required?
well, look no further! now introducing, the DeForest First Aid Bandage!

![image](https://github.com/tgstation/tgstation/assets/110322848/bb737393-0e2b-4773-a673-ab784a409bed)
each box of bandages holds five each, which are all one time use items.
using one heals up to 25 brute damage from a single part of the body.
boxes of bandages will drain much faster than sutures, and are much less
precise for healing specific increments of damage, but heal more in
exchange. they are also worse at stopping blood loss, but not completely
useless for it.

they can be found in a handful of places:
(some) high value medkits
in paramedic's pockets
some medbay lobbies
some cargo holds
all sec infirmaries
in goodies on the cargo console
maint loot
and nanomeds!

i considered making these replace brute kits, but those are used in a
lot of old references, so it felt a bit passe. so i made a new item that
is a bit more balanced, so they can be mapped in and added to vendors
without much worry.
## Why It's Good For The Game
cute item, heals the people who wouldn't really be going into medbay
anyways, and is fairly flavorful. if it's a bit too strong as is i can
tweak the number, but the goal is to not be powerful enough to outshine
sutures, while still offering somewhat effective healing for rough
housing assistants and antags
## Changelog
🆑
add: adds boxes of bandages, a quick healing item
/🆑

* adds boxes of bandages, and bandages to go in them

* Update medical_boxes.dm

* Update VoidRaptor.dmm

---------

Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
2023-10-02 00:15:05 -07:00
SkyratBot
e08b56167a [MIRROR] Holster upgrade, badassery for everyone [MDB IGNORE] (#24025)
* Holster upgrade, badassery for everyone (#78642)

## About The Pull Request
Holsters now can be attached to _almost_ any clothing in the suit slot
(jackets, hazard vests, etc.)

Holsters now can hold Captain Antique gun and HoS gun (they are designed
to look like handguns, are normal-sized and can be fitted in the
backpack which is more convenient than a holster)

SecTech now has 4 energy holsters (which can only house medium-sized
energy/laser weaponry) in the premium section.
## Why It's Good For The Game
Holsters being possible to attach to the suits makes them more
convenient to use for those who have their belt slot occupied and don't
have armour while still wanting to have a badass holster. It won't be a
storage abuse as it is still more convenient and stealthy to keep guns
in the backpack (holsters can only hold normal-sized guns).

Captain Antique gun and HoS gun were the only normal-sized guns which
were left over from the holsters. Now Captains and HoSs can spin their
cool guns in their hands.

SecTech having holsters (can only house 1 gun) let Security more easier
access to more badass gear if they really want to. It won't change a lot
as they would've kept their gun on the armour anyway (which holster can
be clipped on).
## Changelog
🆑 DrDiasyl aka DrTuxedo
balance: Holsters can now be clipped to any suit, and house Captain
antique gun and HoS gun. You now can buy holsters from the SecTech
premium section.
/🆑

* Holster upgrade, badassery for everyone

---------

Co-authored-by: DrTuxedo <42353186+DrDiasyl@users.noreply.github.com>
2023-09-29 22:46:26 +00:00
SkyratBot
10873c630c [MIRROR] Valentines and ERTs will no longer get mood boosts from traitor moodener items [MDB IGNORE] (#23959)
* Valentines and ERTs will no longer get mood boosts from traitor moodener items (#78597)

## About The Pull Request

Valentines and ERTs will no longer get mood boosts from traitor moodener
items

Closes #73432

## Why It's Good For The Game

bugge

## Changelog

🆑
fix: Valentines and ERTs will no longer get mood boosts from traitor
moodener items
/🆑

* Valentines and ERTs will no longer get mood boosts from traitor moodener items

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-09-27 18:20:01 -04:00