3591 individual conflicts
Update build.js
Update install_node.sh
Update byond.js
oh my fucking god
hat
slow
huh
holy shit
we all fall down
2 more I missed
2900 individual conflicts
2700 Individual conflicts
replaces yarn file with tg version, bumping us down to 2200-ish
Down to 2000 individual conflicts
140 down
mmm
aaaaaaaaaaaaaaaaaaa
not yt
575
soon
900 individual conflicts
600 individual conflicts, 121 file conflicts
im not okay
160 across 19 files
29 in 4 files
0 conflicts, compiletime fix time
some minor incap stuff
missed ticks
weird dupe definition stuff
missed ticks 2
incap fixes
undefs and pie fix
Radio update and some extra minor stuff
returns a single override
no more dupe definitions, 175 compiletime errors
Unticked file fix
sound and emote stuff
honk and more radio stuff
## About The Pull Request
Just adds the NTNRC client to the pAI digital messenger software's
starting programs.
To avoid also giving this to the AI, creates a new silicon PDA subtype
for pAIs and applies it similarly to borgs.
## Why It's Good For The Game
It's already barely ever used, and I just think it'd be fun to let pAIs
talk to the never-checked department consoles or open chatrooms with
each other or their hosts.
Currently you can do this by being in your host's PDA, but this means
they couldn't use their PDA at the same time as you just... chatting.
Nor could you share a chatroom with them, due to sharing the same
account.
Also the pAI cabal using the bootleg IRC client to plot their next move
is just incredibly funny to me.
## Changelog
🆑
balance: The pAI digital messenger software now includes the NTNRC
client.
/🆑
## About The Pull Request
<details>
- renamed ai folder to announcer
-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer
- separated the ambience folder into ambience and instrumental
-- ambience --
- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it
-- instrumental --
- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)
-- items --
- moved secdeath to hailer
- moved surgery to handling
-- effects --
- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects
-- vehicles --
- moved mecha into vehicles
created mobs folder
-- mobs --
- moved creatures folder into mobs
- moved voice into mobs
renamed creatures to non-humanoids
renamed voice to humanoids
-- non-humanoids--
created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg
-- humanoids --
-- misc --
moved ghostwhisper to misc
moved insane_low_laugh to misc
I give up trying to document this.
</details>
- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc
- [X] mobs
- [X] runtime
- [X] vehicles
- [ ] attributions
## Why It's Good For The Game
This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.
## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
## About The Pull Request

For a long time borgs have only had two PDA programs: `filemanager` and
`robotact`, but there are other simple programs with useful information
for gameplay. This PR remedies this by including three other programs to
borgs by default: `borg_monitor`, `atmosscan`, and `crew_manifest`. In
the interest of transparency, I've included possible negatives in the
form of disclaimers below.
`borg_monitor`:

This is the "SiliConnect" program in-game, and allows showing a brief
overview to cyborg players who else is connected as a cyborg and what
their model is, which allows for informed decisions on which module to
choose for themselves, among other minor useful data.
**_Disclaimer: I'm pretty sure the "Send message" button on this program
is unusable for borgs due to how it's coded
[here](ab222330ef/code/modules/modular_computers/file_system/programs/borg_monitor.dm (L116)),
but I'm unable to test it with another player. Looks like it requires an
ID, which borgs don't have, so I'm assuming this is a non-issue._**
`atmosscan`:

The AtmoZsphere program, which shows local oxygen/nitrogen data to help
make informed decisions on protecting humans.
`crew_manifest`:

The Plexagon Crew List - A simple window that shows an updated list of
current crew members and their jobs.
**_Disclaimer: The "print" button on this program allows borgs to spam
printed crew manifests on the ground if they choose to do so, which may
have the potential to be overused, however they've also had the ability
to spam-print photos using the Robotact program and I don't know of any
issues this has caused (correct me if I'm mistaken)._**
## Why It's Good For The Game / Potential additional changes
Currently cyborg gameplay can become a walking simulator if they need
simple information that a crew manifest computer would have, or an air
alarm (which might've just been blown up, disabled, or out of power), or
if they just got borgified at a Roboticist and would like to know which
other cyborgs are currently in play but don't want to pick a model
already being used. All humans have this data and more on their handheld
PDAs. Cyborgs should at least have these three as a bare minimum.
There are other useful programs: `records/medical`, `records/security`,
`custodial_locator`, and `supermatter_monitor` (NT CIMS), which could go
into Mediborgs, Peacekeepers, Janiborgs, and Engiborgs respectively.
I've tested these and am unable to change these records as a borg, only
view them, so this is purely informational data that could be useful for
various RP reasons. It could be fun for a cyborg buddy to patrol with a
Sec officer (or Paramedic) and give them up-to-date info on a crew
member's status just by having the human ask about them. Or, Engiborgs
are given the ability to keep an eye on the Supermatter using NT CIMS
and can inform engineers out in the field of its status.
Just having this general information available only to humans feels a
bit silly when cyborgs are meant to be connected to the station in a way
that allows them to interact with doors from a distance but not
something simpler like viewing a crew manifest. This still keeps the
power in human's hands since this data cannot be manipulated by borgs,
only humans (ID required).
## Changelog
🆑
add: Added three programs to cyborg PDAs: SiliConnect, AtmoZphere, and
Crew Manifest
/🆑
## About The Pull Request
Xenos can apparently use shenanigans such as
https://github.com/tgstation/tgstation/issues/86703 to put some items in
their hand, and there are likely methods like this dotted around the
codebase. However, the signal to put something in their hand is called
consistently across any process that would cause them to pick up or
otherwise have something to put in their hand, so instead I added
/datum/component/itempicky to xenos.
While I was in there, I expanded the functionality of itempicky; it can
run a callback to determine a condition that needs to be met now.
## Why It's Good For The Game
Fixes https://github.com/tgstation/tgstation/issues/86703
Expands a component's usefulness
## Changelog
🆑 Bisar
fix: Xenomorph restrictions on items they can pick up have had their
determining logic made more _robust_.
code: The itempicky component (restricts what can be picked up via a
whitelist) can now, optionally, have a callback fed to it to determine
cases of bypassing that whitelist.
/🆑
---------
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
## About The Pull Request
Introduces a new MODule in the uplink, makes the user transperent and
grants the ability to siphon light sources to recharge your suit.
Ingame demonstration: https://www.youtube.com/watch?v=bhXNOAMDy4U
## Why It's Good For The Game
I've been playing a ton of Splinter Cell and Intravenous recently and
this random idea popped in my head.
"Wouldn't it be cool if traitors could blend in the darkness to get a
jump on their opponents?"
Also unrelated
"Wouldn't it be cool if tots had a tool to recharge their suit that
didn't involve sitting in a pod for 10 minutes?"
This PR introduces a new module to the uplink, the Wraith.
It comes with a passive and active component.
Passively it works exactly like the crew version of the cloaking module
with just a couple of differences.
1) Doesn't need to be manually activated, if you lose the cloak it's
regained after 5 seconds.
2) Lower stealth alpha value( how trasperent you are basically),
slightly less visible than the crew version, not as good the ninja
module however , I tuned it just enough so that you are more or less
undetectable in the dark.
The active component of the module lets you destroy stationary lights to
recharge your suit power, if used on handheld or borg lights it turns
them off for a minute.
**Why do we need this module when we already have the stealth implant
and the chameleon projector?**
I can think of a few reasons.
1) MODsuits were designed to be customizible, traitor suits range
between 6 to 16 TC, having to invest in a 7-8 TC item after you already
bought a suit is fairly expensive.
2) This MODule would be a better fit for ambushes, as it doesn't have
the *uncloaking* delay of its counterparts.
It is however considerably worse if you get caught, as the cloak is
disrupted on bump or damage.
3) It has better interactions with the sandbox.
Lights can go out for many reasons, maybe it’s just a power outage, or
some assistant broke it, or maybe it was anightmare.
It leaves room for plausible deniability, adding to the paranoia.
It's also not complete invisibility, if you want to stay undetected you
need to lurk in the darkness, you might expand your domain, at the cost
of the crew eventually wising up to your shaeneningans.
Lastly, since the active component of the module uses the same proc of
the saboteur handgun, I've updated the code to be a generic proc rather
than a signal, to make it easier to reuse in the future.
Item desc provided by NecromancerAnne.
Module sprite made by Orcacora.
## Changelog
🆑
add: The Wraith Cloaking Module is now available in the uplink, costs 3
TC.
code: the saboteur handgun now uses a generic proc rather than a signal
/🆑
---------
Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
## About The Pull Request
This is a remake of https://github.com/tgstation/tgstation/pull/84501
with a few small changes to avoid mapping issues. This time it's
restricted to a once-in-a-year event, mainly because neither Jacq and
Lemon were ok with the possibility of Pun Pun being posibly playable all
year, however Jacq said he's fine with it being available on the
holiday, while Lemon isn't around on Discord atm so I don't know what
he's to say.
The trait makes pun pun playable and gives them the job of being a
busser (waiter) in the cafeteria. They're clever and can use tools most
other monkeys can't, but cannot be humanized, while also being unable to
speak Galactic Common. Should they roll traitor, they'll be able to buy
syndicate monkey reinforcements and equipment, which it can also use,
being a monkey itself.
## Why It's Good For The Game
This is a fairly unique job, like the Cargo Gorilla, due to the fact
it's not a conventional humanoid crew member nor the AI or a cyborg. I
thought this was a fun idea, though I met some obstacles and the
original PR was DNM'ed and then closed. However, the trait perfectly
fits the theme of the holiday, making a good compromise since Pun Pun
will stay AI-controlled the rest of the year, as Jacquarel and Lemon
want it to be. It can also be added by an admin through VV, whether
they're planning some shenanigean or just want to add something more to
the round.
## Changelog
🆑
add: Pun Pun is a playable crewmember during Monkey Day (14 December).
/🆑
## About The Pull Request
Plexagon Crew Manifest has been made into a publicly accessible and
roundstart installed PDA app instead of being restricted to heads,
security and a few odd medical jobs. For this, it lost its major
Detomatix resistance which has been added to security records (minor
resistance) and status display control (major resistance)
To ensure that noone has to wipe their PDAs roundstart, its size on PDA
drives has been halved.
## Why It's Good For The Game
Crew manifest can be easily accessed from the messenger app, but without
nice formatting that plexagon has. The app itself does not have any
capabilities beyond reading crew manifest and printing it out on paper
from consoles, neither of which are something that cannot be already
done with ease. I believe this is a remnant from old PDA days and
doesn't really deserve to stay.
## Changelog
🆑
balance: Plexagon Crew Manifest is now a default PDA app for everyone,
and is free.
balance: Plexagon Crew Manifest no longer provides Detomatix resistance,
but security records and status display control now do.
/🆑
## About The Pull Request
This PR adds a pair of fishing gloves that let you fish and work out at
once, and also a MODsuit module that lets you use MOD gloves to do the
same thing (without the workout, an external fishing rod has to be
inserted first). In both cases, you can equip or unequip bait, hook and
line by using the fishing rod interface which you can open by
right-clicking the gloves. To get both of them, you've to perform the
first fish scanning experiment.
I had to refactor the profound fisher component a bit to do this.
## Why It's Good For The Game
Interweaving a few different features with fishing. Fishing and
Athletics are both skills, so I thought it'd be nice if it were a way to
take advantage of both, and level them up accordingly. Also fishing
gloves with maxxed out athletics can make fishing a lot noticeably
easier at higher difficulty.
## Changelog
🆑
add: Added Athletic Fishing Gloves and Fishing Glove Module to the
advanced fishing tech node. Both can be used to fish without having to
hold a fishing rod. The athletic fishing gloves will also train your
athletics skill.
/🆑
## About The Pull Request
https://github.com/user-attachments/assets/b756bc49-70f0-4c86-8b04-5f0566d606a2
I've made the sound really quiet (quieter than most other sounds in the
game) so it shouldn't be too annoying, there is 7 variants of the clicks
so ear fatigue shouldn't strike too bad.
## Why It's Good For The Game
Clicky sounds release a dopamine surge for players and gives you audio
feedback when you're doing something, it also triggers when someone is
else working at a computer which tells you that they're using it.
## Changelog
🆑 grungussuss
sound: computers now make clicky clacky sounds
/🆑
* puts all the default command programs on /pda/heads rather than their specific role (#85228)
## About The Pull Request
Makes it so the default programs in the head PDAs actually works so all
5 do not need to be rewritten for each and every head of staff PDA
## Why It's Good For The Game
there were an unnecessary 5 lines of code per head (minus the captain),
this reduces it to just the special additions they get
## Proof of Testing

## Changelog
🆑
code: made it look a little cleaner for head PDAs
/🆑
* puts all the default command programs on /pda/heads rather than their specific role
---------
Co-authored-by: Odairu <mdesisto510@gmail.com>
## About The Pull Request
Makes it so the default programs in the head PDAs actually works so all
5 do not need to be rewritten for each and every head of staff PDA
## Why It's Good For The Game
there were an unnecessary 5 lines of code per head (minus the captain),
this reduces it to just the special additions they get
## Proof of Testing

## Changelog
🆑
code: made it look a little cleaner for head PDAs
/🆑
## What's going on here
Kept you waitin huh!
This pr resprites most all walls, windows and other "wall adjacent"
things to a 3/4th perspective, technical term is "tall" walls (we are
very smart).
If you're trying to understand the technical details here, much of the
"rendering tech" is built off the idea of split-vis. Basically, split a
sprite up and render it on adjacent turfs, to prevent seeing "through"
walls/doors, and to support seeing "edges" without actually seeing the
atom itself.
Most of the rest of it is pipelining done to accommodate how icons are
cut.
## Path To Merge
Almost* all sprites and code is done at this point.
There are some things missing both on and off the bounty list, but that
will be the case forever unless we force upstream (you guys) to stop
adding new shit that doesn't fit the style.
I plan on accepting and integrating prs to the current working repo
<https://github.com/wall-nerds/wallening> up until a merge, to make
contribution simpler and allow things like bounties to close out more
easily
This pr is quite bulky, even stripping away map changes it's maybe 7000
LOC (We have a few maps that were modified with UpdatePaths, I am also
tentatively pring our test map, for future use.)
This may inhibit proper review, although that is part of why I am
willing to make it despite my perfectionism. Apologies in advance.
Due to the perspective shift, a lot of mapping work is going to need to
be done at some point. This comes in varying levels of priority. Many
wallmounts are offset by hand, some are stuck in the wall/basically
cannot be placed on the east/west/north edges of walls (posters), some
just don't look great good in their current position.
Tests are currently a minor bit yorked, I thought it was more important
to get this up then to clean them fully.
## What does it look like?






## Credits
<details>
<summary>Historical Mumbojumbo</summary>
I am gonna do my best to document how this project came to be. I am
operating off third party info and half remembered details, so if I'm
wrong please yell at me.
This project started sometime in late 2020, as a product of Rohesie
trying to integrate and make easier work from Mojave Sun (A recently
defunct fallout server) with /tg/.
Mojave Sun (Apparently this was LITERALLY JUST infrared baron, that man
is insane) was working with tall walls, IE walls that are 48px tall
instead of the normal 32. This was I THINK done based off a technical
prototype from aao7 proving A it was possible and B it didn't look like
dogwater.
This alongside oranges begging the art team for 3/4th walls (he meant
TGMC style) lead to Rohesie bringing on contributors from general /tg/,
including actionninja who would eventually take over as technical lead
and Kryson, who would define /tg/'s version of the artstyle. Much of the
formative aspects of this project are their work.
The project was coming along pretty well for a few months, but ran into
serious technical issues with `SIDE_MAP`, a byond map_format that allows
for simpler 3/4th rendering.
Due to BULLSHIT I will not detail here, the map format caused issues
both at random with flickering and heavily with multiz.
Concurrent with this, action stepped down after hacking out the
rendering tech and starting work on an icon cutter that would allow for
simpler icon generation, leaving ninjanomnom to manage the project.
Some time passed, and the project stalled out due to the technical
issues. Eventually I built a test case for the issues we had with
`SIDE_MAP` and convinced lummox jr (byond's developer) to explain how
the fuckin thing actually worked. This understanding made the project
theoretically possible, but did not resolve the problems with multi-z.
Resolving those required a full rework of how rendering like, worked. I
(alongside tattle) took over project development from ninjanomnom at
this time, and started work on Plane Cube (#69115), which when finished
would finally make the project technically feasible.
The time between then and now has been slow, progressive work. Many many
artists and technical folks have dumped their time into this (as you can
see from the credits). I will get into this more below but I would like
to explicitly thank (in no particular order) tattle, draco, arcanemusic,
actionninja, imaginos, viro and kylerace for keeping the project alive
in this time period. I would have curled up into a ball and died if I
had to do this all myself, your help has been indispensable.
</details>
<details>
<summary>Detailed Credits</summary>
Deep apologies if I have forgotten someone (I am sure I have, if someone
is you please contact me). I've done my best to collate from the git
log/my memory.
Thanks to (In no particular order):
Raccoff: Being funny to bully, creating threshold decals for airlocks
aa07: (I think) inspiring the project
ActionNinja: Laying the technical rock we build off, supporting me
despite byond trying to kill him, building the icon cutter that makes
this possible
ArcaneMusic: Artistic and technical work spanning from the project's
start to literally today, being a constant of motivation and positivity.
I can't list all the stuff he's done
Armhulen: Key rendering work (he's the reason thindows render right), an
upbeat personality and a kick in the ass. Love you arm
Azlan: Damn cool sprites, consistently
Ben10Omintrix: You know ben showed up just to make basic mobs work, he's
just fuckin like that man
BigBimmer: A large amount of bounty work, alongside just like, throwing
shit around. An absolute joy to work with
Capsandi: Plaques, blastdoors, artistic work early on
CapybaraExtravagante: Rendering work on wall frames
Draco: SO MUCH STUFF. Much of the spritework done over the past two
years is his, constantly engaged and will take on anything. I would have
given up if not for you
Floyd: Early rendering work, so early I don't even know the details.
Enjoy freedom brother
Imaginos16: A guiding hand through the middle years, handled much of the
sprite review and contribution for a good bit there
Iamgoofball: A dedication to detail and aesthetic goals, spends a lot of
effort dissecting feedback with a focus on making things as good as they
can be at the jump
Infrared: Part of the impetus for the project, made all the xenomorph
stuff in the MS style
Jacquerel: A bunch of little upkeep/technical things, has done so much
sprite gruntwork (WHY ARE THERE SO MANY PAINTING TYPES)
Justice12354: Solved a bunch of error sprites (and worked out how to
actually make prs to the project) Thanks bro!
Kryson: Built the artstyle of the project, carrying on for years even
when it was technically dying, only stopping to casually beat cancer. So
much of our style and art is Kryson
KylerAce: Handled annoying technical stuff for me, built window frame
logic and fully got rid of grilles.
LemonInTheDark: Rendering dirtywork, project management and just so much
fucking time in dreammaker editing sprites
Meyhazah: Table buttons, brass windows and alll the old style doors
Mothblocks: Has provided constant support, gave me a deadline and
motivation, erased worries about "it not being done", gave just SO much
money to fill in the critical holes in sprites. Thanks moth
MTandi: Contributed art despite his own blackjack and hookers club
opening right down the road, I'm sorry I rolled over some of your
sprites man I wish we had finished earlier
Ninjanomnomnom: Consulted on gags issues, kept things alive through some
truly shit times
oranges: This is his fault
Rohesie: Organized the effort, did much of the initial like, proof of
concept stuff. I hope you're doin well whatever you're up to.
san7890: Consulting on mapper UX/design problems, being my pet mapper
Senefi: Offsetting items with a focus on detail/the more unused
canidates
SimplyLogan: Detailed map work and mapper feedback, personally very kind
even if we end up talking past each other sometimes. Thank you!
SpaceSmithers: Just like, random mapping support out of nowhere, and
bein a straight up cool dude
Tattle: A bunch of misc project management stuff, organizing the
discord, managing the test server, dealing with all the mapping bullshit
for me, being my backup in case of bus. I know you think you didn't do
much but your presence and work have been a great help
Thunder12345: Came out of nowhere and just so much of the random
bounties, I'm kind of upset about how much we paid him
Time-Green: I hooked him in by fucking with stuff he made and now he's
just doin shit, thanks for helping out man!
Twaticus: Provided artistic feedback and authority for my poor feeble
coder brain, believed in the project for YEARS, was a constant source of
❤️ and affirmation
unit0016: I have no god damn idea who she is, popped out of nowhere on
the github one day and dealt with a bunch of annoying
rendering/refactoring. Godspeed random furry thank you for all your
effort and issue reports
Viro: A bunch of detailed spriting moving towards 3/4ths, both on and
off the wallening fork. If anyone believed this project would be done,
it was viro
Wallem: Artistic review and consultation, was my go-to guy for a long
time when the other two spritetainers were inactive
Waltermeldon: Cracked out a bunch of rendering work, he's the reason
windows look like not dogwater. Alongside floyd and action spent a TON
of time speaking to lummox/unearthing how byond rendering worked trying
to make this thing happen
ZephyrTFA: Added directional airlock helpers, dealt with a big fuckin
bugaboo that was living in my brain like it was nothing. Love you
brother
And finally:
The Mojave Sun development team. They provided a testbed for the idea,
committed hundreds and hundreds of hours to the artstyle, and were a
large reason we caught issues early enough to meaningfully deal with
them. Your work is a testament to what longterm effort and deep detailed
care produce. I hope you're doing well whatever you're up to. Go out
with a bang!
</details>
## Changelog
🆑 Raccoff, aa07, ActionNinja, ArcaneMusic, Armhulen, Azlan,
Ben10Omintrix, BigBimmer, Capsandi, CapybaraExtravagante, Draco, Floyd,
Iamgoofball, Imaginos16, Infrared, Jacquerel, Justice12354, Kryson,
KylerAce, LemonInTheDark, Meyhazah, Mothblocks, MTandi, Ninjanomnom,
oranges, Rohesie, Runi-c, san7890, Senefi, SimplyLogan, SomeAngryMiner,
SpaceSmithers, Tattle, Thunder12345, Time-Green, Twaticus, unit0016,
Viro, Waltermeldon, ZephyrTFA with thanks to the Mojave Sun team!
add: Resprites or offsets almost all "tall" objects in the game to match
a 3/4ths perspective
add: Bunch of rendering mumbo jumbo to make said 3/4ths perspective work
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: = <stewartareid@outlook.com>
Co-authored-by: Capsandi <dansullycc@gmail.com>
Co-authored-by: ArcaneMusic <hero12290@aol.com>
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: SomeAngryMiner <53237389+SomeAngryMiner@users.noreply.github.com>
Co-authored-by: KylerAce <kylerlumpkin1@gmail.com>
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: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Runi-c <5150427+Runi-c@users.noreply.github.com>
Co-authored-by: Roryl-c <5150427+Roryl-c@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: Senefi <20830349+Peliex@users.noreply.github.com>
Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
Co-authored-by: BluBerry016 <50649185+unit0016@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com>
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Rob Bailey <github@criticalaction.net>
Co-authored-by: MMMiracles <lolaccount1@hotmail.com>
## About The Pull Request
Adding interactions between ID/PDA and money.
So, you can swipe it on cash and get it on your bank.
## Why It's Good For The Game
Now you don't have to constantly insert every coin into the card.
<details>
<summary>GIF and evidence that I tested</summary>

</details>
## Changelog
🆑
qol: Now IDs and PDAs have money-reader module for picking some cash
into your bank by swiping on money.
/🆑
## About The Pull Request
Adding interactions between ID/PDA and money.
So, you can swipe it on cash and get it on your bank.
## Why It's Good For The Game
Now you don't have to constantly insert every coin into the card.
<details>
<summary>GIF and evidence that I tested</summary>

</details>
## Changelog
🆑
qol: Now IDs and PDAs have money-reader module for picking some cash
into your bank by swiping on money.
/🆑
## About The Pull Request
it's - conjunction of "it" and "is"
its - possessive form of "it"
grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good
## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
## About The Pull Request
it's - conjunction of "it" and "is"
its - possessive form of "it"
grammar is hard, and there were a lot of places where "it's" was used
where it shouldn't have been. i went and painstakingly searched the
entire repository for these instances, spending a few hours on it. i
completely ignored the changelog archive, and i may have missed some
outliers. most player-facing ones should be corrected, though
## Why It's Good For The Game
proper grammar is good
## Changelog
🆑
spellcheck: Numerous instances of "it's" have been properly replaced
with "its"
/🆑
* Heads of staff PDAs start with twice as much disk space (#84874)
## About The Pull Request
Title. Makes heads' and captain's PDAs have 128 GQ of memory instead of
only 64.
## Why It's Good For The Game
RD and CE's PDAs are completely filled roundstart, and while its not
critical for CE, RD needs to delete at least two apps in order to be
able to submit gas shell experiments which is extremely annoying. Other
heads of staff PDAs have been upgraded for parity.
## Changelog
🆑
qol: Heads of staff PDAs start with twice as much disk space
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
* Heads of staff PDAs start with twice as much disk space
---------
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
## About The Pull Request
Title. Makes heads' and captain's PDAs have 128 GQ of memory instead of
only 64.
## Why It's Good For The Game
RD and CE's PDAs are completely filled roundstart, and while its not
critical for CE, RD needs to delete at least two apps in order to be
able to submit gas shell experiments which is extremely annoying. Other
heads of staff PDAs have been upgraded for parity.
## Changelog
🆑
qol: Heads of staff PDAs start with twice as much disk space
/🆑
---------
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* adds swapping pens in PDAs (#84437)
## About The Pull Request
Added the ability to swap items in PDAs
<details>
<summary>Videos</summary>
https://github.com/tgstation/tgstation/assets/112967882/b3c63d7b-7913-42a6-83e7-d2989cdac8b2
</details>
## Why It's Good For The Game
You can quickly change items stored in the PDA slots without doing
unnecessary actions (pulling the pen out of the PDA, removing it, and
inserting another pen)
## Changelog
🆑
qol: you can now swap pens in pdas
/🆑
---------
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
* adds swapping pens in PDAs
---------
Co-authored-by: Kocma-san <112967882+Kocma-san@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
## About The Pull Request
There was a feedback that the new techweb made it harder to do science
on ghost roles, namely Charlie station crew.
This PR makes a few tweaks to oldstation to lower the bar on the
experiments:
- Added a pure N2O tank for easier BZ creation
- Added one diamond to the ai sat to create artificial BS crystal
- Added research console to ai sat with frontier app pre-installed
- Added a gas compressor to Beta station atmos area
Also moved the NTNet relay back to tcomms node as it requires tcomms
parts. And moved chem pack/blood pack from tier 1 to tier 0 per players`
request.
Also fixed the dissection experiments giving the old amount of bonus
points, before the recent point denomination.
Made a few other minor changes to the map.
## Why It's Good For The Game
Charlie is supposed to be friendly for the beginner players, yet the new
experiments are hard to do with the limited resources on Charlie.
## Changelog
🆑
qol: It is easier to do some required techweb experiments on Charlie
station now
fix: Fixed experimental dissection surgeries giving too many points
balance: Techweb: Moved NTNet relay back to tcomms node
balance: Techweb: Moved blood pack and chem pack to the starting node
/🆑
## About The Pull Request
Since non-clothing items can also be worn on several slots, there's no
need for cigarettes/vapes to be subtypes of masks anymore, since that
comes with a few oddities like #82870.
## Why It's Good For The Game
This should fix#82870, with about no side-effect aside them no longer
being edible by moths 🤢.
* Adds cool sword mouse cursor maintenance pda app (#84337)
## About The Pull Request
Adds a maintenance disk that makes your PDA turn your mouse cursor into
a cool sword when it's worn in your ID slot
https://github.com/tgstation/tgstation/assets/51863163/ae5c50a1-e6fd-40bb-8957-4af2f6618cba
## Why It's Good For The Game
I saw a discord comment about this and it made me laugh.
## Changelog
🆑 Melberte
add: Cool Sword Cursor Maintenance App
/🆑
* Adds cool sword mouse cursor maintenance pda app
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
## About The Pull Request
Adds a maintenance disk that makes your PDA turn your mouse cursor into
a cool sword when it's worn in your ID slot
https://github.com/tgstation/tgstation/assets/51863163/ae5c50a1-e6fd-40bb-8957-4af2f6618cba
## Why It's Good For The Game
I saw a discord comment about this and it made me laugh.
## Changelog
🆑 Melberte
add: Cool Sword Cursor Maintenance App
/🆑
* Refactor modular computer (and application) attackby into item_interaction (#84245)
## About The Pull Request
Sooooooooo I was recently notified of an issue (#84185) that popped up
from me replacing the `attackby(...)` chain on id cards, where it's no
longer possible to put money into IDs inside of PDAs by slapping it
against the PDA.
As I expected, this is because modular computers both still use
`attackby(...)`, and would call `attackby(...)` on the ID they contained
if hit with cash.
24a23009e8/code/modules/modular_computers/computers/item/computer.dm (L799)
Now this could've been an easy one line no-gbp fix where I just replace
it with a direct call to `insert_money(...)` on the ID and call it a
day!
But hey. Might as well get rid of the `attackby(...)` altogether while
we're at it.
First off, because the `attackby(...)` proc was getting quite bloated,
we split off all the specific item behaviours into `[X]_act(...)` type
procs to clean it up.
We then make those return item interaction flags, so we can call them on
`item_interaction(...)` after the right typecheck passes and immediately
return their results.
This also involves replacing the `application_attackby(...)` on
applications with an `application_item_interaction(...)`, and making it
return the item interaction flags too.
The code of each subsection isn't significantly different, though
reorganized a bit in some cases.
Like inserting a computer disks now tries to move it into the computer
_first_ before swapping out whichever disk is already in there, so it
doesn't swap out the disk if putting the new one in fails.
## Why It's Good For The Game
Fixes#84185.
Having more stuff be updated to the proper `item_interaction(...)`
system is cool and good.
* Refactor modular computer (and application) attackby into item_interaction
---------
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com>
* NT Frontier can read files from data disks (#84189)
## About The Pull Request
Made the NT Frontier app look for valid experiment files not only on the
local file system, but also on the data disk.
## Why It's Good For The Game
Less clicks.
## Changelog
🆑
qol: NT Frontier app now allows to select experiments from inserted data
disks
/🆑
* NT Frontier can read files from data disks
---------
Co-authored-by: Andrew <mt.forspam@gmail.com>
## About The Pull Request
As the title says. A standard power cell now only stores 10 KJ and
drains power similar to how it did before the refactor to all power
appliances.
The new standard megacell stock part stores 1 MJ (what cells store right
now). APCs and SMESs have had their power cells replaced with these
megacell stock parts instead. Megacells can only be used in APCs and
SMESs. It shouldn't be possible to use megacells in any typical
appliance.
This shouldn't change anything about how much 'use' you can get out of a
power cell in regular practice. Most should operate the same and you
should still get the same amount of shots out of a laser gun, and we can
look at expanding what can be switched over to megacells, e.g. if we
want mechs to require significantly more power than a typical appliance.
Thanks to Meyhazah for the megacell icon sprites.
## Why It's Good For The Game
Power cell consumption is way too high ever since the power appliance
refactor that converted most things to be in joules. It's a bit
ridiculous for most of our machinery to drain the station's power supply
this early on.
The reason it's like this is because regular appliances (laser guns,
borgs, lights) all have a cell type that is identical to the APC/SMES
cell type. And it means that if we want to provide an easy way to charge
these appliances without making it easy to charge APCs/SMESs through a
power bug exploit, we need to introduce a new cell type to differentiate
between what supplies power and regular appliances that use power. This
is primarily what the megacell stock part does.
This moves us back to what it was originally like before the power
refactor, where recharging power cells wouldn't drain an exorbitant
amount of energy. However, it maintains the goal of the original
refactor which was to prevent people from cheesing power generation to
produce an infinite amount of power, as the power that APCs and SMESs
operate at is drastically different from the power that a regular
appliance uses.
## Changelog
🆑 Watermelon, Mayhazah
balance: Drastically reduces the power consumption and max charge of
power cells
balance: Added a new stock part called the battery, used primarily in
the construction of APCs and SMESs.
add: Suiciding with a cell/battery will shock you and potentially dust
you/shock the people around you if the charge is great enough.
/🆑
---------
Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com>
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
## About The Pull Request
Sooooooooo I was recently notified of an issue (#84185) that popped up
from me replacing the `attackby(...)` chain on id cards, where it's no
longer possible to put money into IDs inside of PDAs by slapping it
against the PDA.
As I expected, this is because modular computers both still use
`attackby(...)`, and would call `attackby(...)` on the ID they contained
if hit with cash.
24a23009e8/code/modules/modular_computers/computers/item/computer.dm (L799)
Now this could've been an easy one line no-gbp fix where I just replace
it with a direct call to `insert_money(...)` on the ID and call it a
day!
But hey. Might as well get rid of the `attackby(...)` altogether while
we're at it.
First off, because the `attackby(...)` proc was getting quite bloated,
we split off all the specific item behaviours into `[X]_act(...)` type
procs to clean it up.
We then make those return item interaction flags, so we can call them on
`item_interaction(...)` after the right typecheck passes and immediately
return their results.
This also involves replacing the `application_attackby(...)` on
applications with an `application_item_interaction(...)`, and making it
return the item interaction flags too.
The code of each subsection isn't significantly different, though
reorganized a bit in some cases.
Like inserting a computer disks now tries to move it into the computer
_first_ before swapping out whichever disk is already in there, so it
doesn't swap out the disk if putting the new one in fails.
## Why It's Good For The Game
Fixes#84185.
Having more stuff be updated to the proper `item_interaction(...)`
system is cool and good.
## About The Pull Request
Made the NT Frontier app look for valid experiment files not only on the
local file system, but also on the data disk.
## Why It's Good For The Game
Less clicks.
## Changelog
🆑
qol: NT Frontier app now allows to select experiments from inserted data
disks
/🆑
## About The Pull Request
PR for collecting techweb feedback post merge and address valid issues
of #84024.
People seem to dislike the abundance of new experiments in the middle of
the tree, so reducing some requirements for those for now.
Also updated NT frontier app a bit, as people are confused with the
shell experiments.

## Why It's Good For The Game
Balancing out the new tree.
## Changelog
🆑
balance: Added ordnance to extra access of geneticists and roboticists
balance: Reduced parts scanning tests' machine count to 4 from 8
balance: Reduced augmented organs scanning tests mob count to 1 from 2
balance: Reduced equipped mech scanning test count to 1 from 2
balance: Added polycrystal option to bluespace crystal scan test
fix: Allowed NTNet relay in away circuit imprinter for NT Frontier app
qol: NT Frontier app installed on RD and Scientists` PDAs by default
qol: Updated NT Frontier app to be more user-friendly
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Mild QOL updates to vending machine-cargo interactions. (#83933)
## About The Pull Request
This Pull makes a few minor improvements to the features I added with
vendor cargo (#81582).
Changes are as follows:
* Vending machines, when restocked with a refill pack and while
containing a number of credits, will play a cash register sound to alert
you that there's a payout associated with the action.
* The Vending Restock app now works on all modular computer platforms,
as opposed to just laptops and tablets.
* This is actually hilarious because I even made a screen icon for
modular consoles, and it's just been unused ever since merge.
* The "cargochat" cargo modular console now has the vendor refill app
pre-installed.
* Vending machines, when determining their missing inventory during the
associated station trait, now adds from 1-5 credits per missing item, up
from 0-1. The original number was far too low to feel like a strong
incentive based on feedback I'd received, and while still lower than
providing a flat percentage of the missing item specifically (we ran
some numbers on this a few months back), it should at least incentivize
players to keep the station better stocked during regular rounds.
Also, the UI now shows a difference between if all vending machines are
stocked or not.

## Why It's Good For The Game
Most of these are just interfacing and ease of use improvements, as
having the app pre-installed in a place where players can actually make
some use of it's contents should help to improve it's versatility with
regards to the restocking app.
Audio feedback is always good.
In terms of the balance tweak on the stored value on vending machines,
basically it's a way to better incentivize it as an option on the
station and to better encourage players to do these kinds of minor
upkeep tasks for the crew.
## Changelog
🆑
qol: Vending machines now give audio feedback when you restock a vending
refill and get a payout.
qol: The Restock tracker NTOS app for tracking vending machine contents
now works on all consoles, and comes pre-installed on the cargochat
cargo computers.
balance: Vending machines now offer a bit more credits when missing
contents at the start of a round after getting restocked.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
* Mild QOL updates to vending machine-cargo interactions.
---------
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@ users.noreply.github.com>
## About The Pull Request
This Pull makes a few minor improvements to the features I added with
vendor cargo (#81582).
Changes are as follows:
* Vending machines, when restocked with a refill pack and while
containing a number of credits, will play a cash register sound to alert
you that there's a payout associated with the action.
* The Vending Restock app now works on all modular computer platforms,
as opposed to just laptops and tablets.
* This is actually hilarious because I even made a screen icon for
modular consoles, and it's just been unused ever since merge.
* The "cargochat" cargo modular console now has the vendor refill app
pre-installed.
* Vending machines, when determining their missing inventory during the
associated station trait, now adds from 1-5 credits per missing item, up
from 0-1. The original number was far too low to feel like a strong
incentive based on feedback I'd received, and while still lower than
providing a flat percentage of the missing item specifically (we ran
some numbers on this a few months back), it should at least incentivize
players to keep the station better stocked during regular rounds.
Also, the UI now shows a difference between if all vending machines are
stocked or not.

## Why It's Good For The Game
Most of these are just interfacing and ease of use improvements, as
having the app pre-installed in a place where players can actually make
some use of it's contents should help to improve it's versatility with
regards to the restocking app.
Audio feedback is always good.
In terms of the balance tweak on the stored value on vending machines,
basically it's a way to better incentivize it as an option on the
station and to better encourage players to do these kinds of minor
upkeep tasks for the crew.
## Changelog
🆑
qol: Vending machines now give audio feedback when you restock a vending
refill and get a payout.
qol: The Restock tracker NTOS app for tracking vending machine contents
now works on all consoles, and comes pre-installed on the cargochat
cargo computers.
balance: Vending machines now offer a bit more credits when missing
contents at the start of a round after getting restocked.
/🆑
---------
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Fixes crayon not fitting in pda by replacing attackby w/ item_interaction (#83951)
## About The Pull Request
Fixes a bug, what else do you need
fixes#83948
## Why It's Good For The Game
Bugs are bad for game health and crayons fitting in pdas aren't really a
major change.
## Changelog
🆑
fix: Crayons now fit in pdas
/🆑
* Fixes crayon not fitting in pda by replacing attackby w/ item_interaction
---------
Co-authored-by: Lucy Grindler <110352801+LucyGrind@users.noreply.github.com>
## About The Pull Request
Fixes a bug, what else do you need
fixes#83948
## Why It's Good For The Game
Bugs are bad for game health and crayons fitting in pdas aren't really a
major change.
## Changelog
🆑
fix: Crayons now fit in pdas
/🆑
## About The Pull Request
Same idea as #82656 but for ctrl click & ctrl shift click cause why not
- Does your signal & `can_perform_action()` checks using
`interaction_flags_click` flags before delegating the event down to
`ctrl_click()` proc.
- The one new change now is that `ctrl_click()` proc is now blocking,
meaning returning `CLICK_ACTION_SUCCESS` or `CLICK_ACTION_BLOCKING` will
stop the object from getting grabbed/pulled. So remember to return these
values if you want to stop the grab action or return `NONE` if you want
to process the click but still want the object to get grabbed as well
## Changelog
🆑
refactor: Ctrl click & Ctrl shift click has been refactored. Please
report bugs on GitHub
/🆑
## About The Pull Request
Mouse drag & drop has been refactored into its own attack chain. The
flowchart below summarizes it

Brief summary of each proc is as follows
**1. `atom/MouseDrop()`**
- It is now non overridable. No subtype should ever touch this proc
because it performs 2 basic checks
a) Measures the time between mouse down & mouse release. If its less
than `LENIENCY_TIME`(0.1 seconds) then the operation is not considered a
drag but a simple click
b) Measures the distance squared between the drag start & end point. If
its less than `LENIENCY_DISTANCE`(16 pixels screen space) then the drag
is considered too small and is discarded
- These 2 sanity checks for drag & drop are applied across all
operations without fail
**2. `atom/base_mouse_drop_handler()`**
- This is where atoms handle mouse drag & drop inside the world. Ideally
it is non overridable in most cases because it also performs 2 checks
- Is the dragged object & the drop target adjacent to the player?.
Screen elements always return true for this case
- Additional checks can be enforced by `can_perform_action()` done only
on the dragged object. It uses the combined flags of
`interaction_flags_mouse_drop` for both the dragged object & drop target
to determine if the operation is feasible.
We do this only on the dragged object because if both the dragged object
& drop target are adjacent to the player then `can_perform_action()`
will return the same results when done on either object so it makes no
difference.
Checks can be bypassed via the `IGNORE_MOUSE_DROP_CHECKS` which is used
by huds & screen elements or in case you want to implement your own
unique checks
**3. `atom/mouse_drop_dragged()`**
- Called on the object that is being dragged, drop target passed here as
well, subtypes do their stuff here
- `COMSIG_MOUSEDROP_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
**4. `atom/mouse_drop_receive()`**
- Called on the drop target that is receiving the dragged object,
subtypes do their stuff here
- `COMSIG_MOUSEDROPPED_ONTO` is sent afterwards. It does not require
subtypes to call their parent proc
## Why It's Good For The Game
Implements basic sanity checks across all drag & drop operations. Allows
us to reduce code like this
8c8311e624/code/game/machinery/dna_scanner.dm (L144-L145)
Into this
```
if(!iscarbon(target))
return
```
I'm tired of seeing this code pattern `!Adjacent(user) ||
!user.Adjacent(target)` copy pasted all over the place. Let's just write
that at the atom level & be done with it
## Changelog
🆑
refactor: Mouse drag & drop attack chain has been refactored. Report any
bugs on GitHub
fix: You cannot close the cryo tube on yourself with Alt click like
before
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>