mirror of
https://github.com/Skyrat-SS13/Skyrat-tg.git
synced 2026-07-16 02:14:01 +01:00
master
493 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bb70889f6e |
TG Upstream Part 1
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 |
||
|
|
4c4930c71d | Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit | ||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
4b4e9dff1d |
Wallening [IDB IGNORE] [MDB IGNORE] (#85491)
## 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> |
||
|
|
043d1f9b95 |
[MIRROR] If you have auto fit viewport enabled, it will trigger upon entering or exiting fullscreen (#29096)
* If you have auto fit viewport enabled, it will trigger upon entering or exiting fullscreen (#85302) ## About The Pull Request Automatically calls attempt_auto_fit_viewport() upon toggling fullscreen ## Why It's Good For The Game Fullscreen changes your viewport height but not width so if you're running stretch to fit (which is probably used by most of our players as fullhd does not integer scale) you have to manually use Fit Viewport verb every time you join the game and enter fullscreen which is rather annoying to do. ## Changelog 🆑 qol: If you have auto fit viewport enabled, it will trigger upon entering or exiting fullscreen /🆑 * If you have auto fit viewport enabled, it will trigger upon entering or exiting fullscreen --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
bab816a0c7 |
If you have auto fit viewport enabled, it will trigger upon entering or exiting fullscreen (#85302)
## About The Pull Request Automatically calls attempt_auto_fit_viewport() upon toggling fullscreen ## Why It's Good For The Game Fullscreen changes your viewport height but not width so if you're running stretch to fit (which is probably used by most of our players as fullhd does not integer scale) you have to manually use Fit Viewport verb every time you join the game and enter fullscreen which is rather annoying to do. ## Changelog 🆑 qol: If you have auto fit viewport enabled, it will trigger upon entering or exiting fullscreen /🆑 |
||
|
|
aefec7cb2b |
Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## 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" /🆑 |
||
|
|
5f80128fa9 |
Corrects 200+ instances of "it's" where it should've been "its" instead (#85169)
## 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" /🆑 |
||
|
|
58ab268888 |
[MIRROR] Adds Character Loadout Tab to preferences (with just a small handful of items to start) (#28126)
* Adds Character Loadout Tab to preferences (with just a small handful of items to start) * step one rip out all the old nasties * fixes, current bugs: donator lock, ckey lock, one item in case * opps * sanity checks, fixed, donator implementation, ckey locking. fixes. * wew * final fixes * Update loadout_categories.dm * Update loadout_items.dm * Update loadout_items.dm * Update declarations.dm --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> Co-authored-by: SpaceLoveSs13 <68121607+SpaceLoveSs13@users.noreply.github.com> |
||
|
|
01d5d9e47a |
[MIRROR] Fixes ambient sound preferences runtiming every time a client connects (#28312)
* Fixes ambient sound preferences runtiming every time a client connects (#84202) fixes #84200 forgot to pass the value that's sent while preferences are still initializing. * Fixes ambient sound preferences runtiming every time a client connects --------- Co-authored-by: Afevis <ShizCalev@users.noreply.github.com> |
||
|
|
d12576371c |
Fixes ambient sound preferences runtiming every time a client connects (#84202)
fixes #84200 forgot to pass the value that's sent while preferences are still initializing. |
||
|
|
32c37c0cb2 |
[MIRROR] Makes The Automute Thingo Yell At You A Bit Louder (#28060)
* Makes The Automute Thingo Yell At You A Bit Louder (#83636) ## About The Pull Request It makes the automute use bigger, redder text and also balloon alert I know ppl dont like punctuation in balloon alerts so I can remove the exclamation mark if u want, i like it tho I guess if u support darwinism u could leave it as is but in the era of runetext and TTS ppl cant pay attention to the chat window they're too busy watching subway surfers on their second monitor and scrolling tiktok on their phone Doesnt change the text so it stays deliberately vague like the comment says it should Before: <img src="https://i.ibb.co/3hDnpQm/Automute-Before.png"> After: <img src="https://i.ibb.co/0qSwJFB/Automute-After.png"> <img src="https://i.ibb.co/n3ch9fg/Automute-Balloon-Alert.png"> ## Why It's Good For The Game Being automuted when there's no admins on cuz u got a bit carried away isnt cool and then u have to urgent ahelp it, which is understandable cuz it's making the round unplayable for you but you did kinda bring it on yourself and the admin might not be too happy with you about it. ## Changelog 🆑 admin: The auto-mute system yells at you harder when you send a bunch of identical messages. /🆑 * Makes The Automute Thingo Yell At You A Bit Louder --------- Co-authored-by: Jackraxxus <60418544+Jackraxxus@users.noreply.github.com> |
||
|
|
d2dc233b73 |
Makes The Automute Thingo Yell At You A Bit Louder (#83636)
## About The Pull Request It makes the automute use bigger, redder text and also balloon alert I know ppl dont like punctuation in balloon alerts so I can remove the exclamation mark if u want, i like it tho I guess if u support darwinism u could leave it as is but in the era of runetext and TTS ppl cant pay attention to the chat window they're too busy watching subway surfers on their second monitor and scrolling tiktok on their phone Doesnt change the text so it stays deliberately vague like the comment says it should Before: <img src="https://i.ibb.co/3hDnpQm/Automute-Before.png"> After: <img src="https://i.ibb.co/0qSwJFB/Automute-After.png"> <img src="https://i.ibb.co/n3ch9fg/Automute-Balloon-Alert.png"> ## Why It's Good For The Game Being automuted when there's no admins on cuz u got a bit carried away isnt cool and then u have to urgent ahelp it, which is understandable cuz it's making the round unplayable for you but you did kinda bring it on yourself and the admin might not be too happy with you about it. ## Changelog 🆑 admin: The auto-mute system yells at you harder when you send a bunch of identical messages. /🆑 |
||
|
|
c454e1e1e1 |
[MIRROR] Converts parallax to pixel offsets, saves a bunch of cpu time, makes things nicer on clients too (#27866)
* Converts parallax to pixel offsets, saves a bunch of cpu time, makes things nicer on clients too (#83395) ## About The Pull Request Right now parallax is like a quarter of SSinput, which is BAD. It's so high mostly because of the animates we need to do, but also due to the cost of setting screen_loc.  This sucks. The default step is to reduce the poll rate of the effect, but I don't want to do that because it SUCKS. Sooooo how can we optimize. Well, if we stop thinking in terms of screen_loc, which is a string (tree shit) and also unanimatable, and start working in pixel offsets, this'd be a way cheaper. We can make that happen by sticking all our parallax layers on one rock screen object. Then they have relative positions and can be pixel offset (I have stolen this concept wholesale from Ter) This works unreasonably well, roughly a 65% cost reduction. S good shit.  While I'm here... [uses KEEP_TOGETHER to reduce clientside load, makes the flying animation better.](https://github.com/tgstation/tgstation/commit/52610398e2dc221c80d1f629e9c9f8fb59498977) We were individually rendering all like fucking 24 480x480 overlays on all 5 parallax layers, which means we had to apply our transform to EACH ONE. This has GOTTA suck shit for clients, so let's... not? Should help. The existing flying animation makes me depressed. it has some very visible stutter, and jumps around a lot. We can deal with the starting stutter by avoiding starting a new animation on the layer until the old one is finished. This is what was SUPPOSED to be happening, but because we fired one timer for all the layers, they'd desync and jump in ugly ways. This means we need to use one timer per layer, which does induce more cost then I'd like. IDK how I feel about this to be honest. I try and reduce ending weirdness by unscaling time at the end, so different aspects don't slow down at different rates. Speed on the parallax animation was weird, it'd spike up, then dip down in flight. This was because the percieved rate of change from the quad easing was closer to 2x the existing. I've handled this by halving the animation time in the loop Oh also there's no sense calling the update animation proc if we are coming to a stop, and thus have no follow up animation. ## Changelog 🆑 LemonInTheDark refactor: I have reworked how parallax and its animations (space travel) work. Please report any bugs lads! /🆑 --------- Co-authored-by: san7890 <the@ san7890.com> * Converts parallax to pixel offsets, saves a bunch of cpu time, makes things nicer on clients too --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: san7890 <the@ san7890.com> |
||
|
|
07882b23cc |
Converts parallax to pixel offsets, saves a bunch of cpu time, makes things nicer on clients too (#83395)
## About The Pull Request Right now parallax is like a quarter of SSinput, which is BAD. It's so high mostly because of the animates we need to do, but also due to the cost of setting screen_loc.  This sucks. The default step is to reduce the poll rate of the effect, but I don't want to do that because it SUCKS. Sooooo how can we optimize. Well, if we stop thinking in terms of screen_loc, which is a string (tree shit) and also unanimatable, and start working in pixel offsets, this'd be a way cheaper. We can make that happen by sticking all our parallax layers on one rock screen object. Then they have relative positions and can be pixel offset (I have stolen this concept wholesale from Ter) This works unreasonably well, roughly a 65% cost reduction. S good shit.  While I'm here... [uses KEEP_TOGETHER to reduce clientside load, makes the flying animation better.](https://github.com/tgstation/tgstation/commit/52610398e2dc221c80d1f629e9c9f8fb59498977) We were individually rendering all like fucking 24 480x480 overlays on all 5 parallax layers, which means we had to apply our transform to EACH ONE. This has GOTTA suck shit for clients, so let's... not? Should help. The existing flying animation makes me depressed. it has some very visible stutter, and jumps around a lot. We can deal with the starting stutter by avoiding starting a new animation on the layer until the old one is finished. This is what was SUPPOSED to be happening, but because we fired one timer for all the layers, they'd desync and jump in ugly ways. This means we need to use one timer per layer, which does induce more cost then I'd like. IDK how I feel about this to be honest. I try and reduce ending weirdness by unscaling time at the end, so different aspects don't slow down at different rates. Speed on the parallax animation was weird, it'd spike up, then dip down in flight. This was because the percieved rate of change from the quad easing was closer to 2x the existing. I've handled this by halving the animation time in the loop Oh also there's no sense calling the update animation proc if we are coming to a stop, and thus have no follow up animation. ## Changelog 🆑 LemonInTheDark refactor: I have reworked how parallax and its animations (space travel) work. Please report any bugs lads! /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
5a6ff98e2a |
Cleans up some admin-related stuff in client Destroy() and adminGreet() (#83427)
## About The Pull Request
It made me really mad to see a huge list in the middle of client/Destroy
for something that doesn't even run for 95% of users so I split it out
into another proc so the fingerprint of the very important `Destroy()`
stuff could be as minimal as possible without a big `pick()` so the
server can send the "I need a man 🥺" message could be punted off to
where no-one would care for it. It was already doing the async TGS
operation so it doesn't matter anyways as far as proc overhead in my
books.
I also fixed up the code for `adminGreet()` as well because that was
being really weird with not having proper booleans and running `pick()`
on things with literally one value (as well as excess
stringification)... it wasn't good so I just cleaned all that up too.
Ideally this all means we take up a little less CPU time but the aim of
this PR is to just clean it all up for modern coding standards.
alphabetized lists and early returns galore.
## Why It's Good For The Game
Code is better to read and less idented, and better yet it's no longer
necessary to read all the softie messages in the middle of `Destroy()`
## Changelog
Irrelevant
|
||
|
|
50de5108e2 |
Cleans up some admin-related stuff in client Destroy() and adminGreet() (#83427)
## About The Pull Request
It made me really mad to see a huge list in the middle of client/Destroy
for something that doesn't even run for 95% of users so I split it out
into another proc so the fingerprint of the very important `Destroy()`
stuff could be as minimal as possible without a big `pick()` so the
server can send the "I need a man 🥺" message could be punted off to
where no-one would care for it. It was already doing the async TGS
operation so it doesn't matter anyways as far as proc overhead in my
books.
I also fixed up the code for `adminGreet()` as well because that was
being really weird with not having proper booleans and running `pick()`
on things with literally one value (as well as excess
stringification)... it wasn't good so I just cleaned all that up too.
Ideally this all means we take up a little less CPU time but the aim of
this PR is to just clean it all up for modern coding standards.
alphabetized lists and early returns galore.
## Why It's Good For The Game
Code is better to read and less idented, and better yet it's no longer
necessary to read all the softie messages in the middle of `Destroy()`
## Changelog
Irrelevant
|
||
|
|
c54a263a8c |
Command bar typing indicators (client side html version) (#83081)
This uses a browser skin element to spy on the command bar and report back to the server what verb is currently in it and how many characters it has. it skips reporting if the text hasn't changed since the last report. im intentionally not providing the full text in the command bar to the server, while designing the system so new verbs can be given typing indicators by editing DM code, not html code. The report rate is once a second but this could be lowered or tweaked. Both the tgui say window being open and this system being active because the command bar starts with `say "` is undefined behavior, mostly the first one to end the indicator will just freeze indicators for the other one until it too ends its current indicator session. The system waits until something besides the `"` is in the argument to say. It is enabled for verbs `say`, `me`, and `whisper`. I don't actually know if this is the case for tgui say. this is a one line tweak anyways so let me know if this should be changed. [(This pr closes a bounty)](https://tgstation13.org/phpBB/viewtopic.php?p=726634#p726634) 🆑 MrStonedOne & Lilah Novi add: Say commands typed in the command bar now trigger typing indicators /🆑 --------- Co-authored-by: san7890 <the@ san7890.com> |
||
|
|
2bf57113df |
Command bar typing indicators (client side html version) (#83081)
This uses a browser skin element to spy on the command bar and report back to the server what verb is currently in it and how many characters it has. it skips reporting if the text hasn't changed since the last report. im intentionally not providing the full text in the command bar to the server, while designing the system so new verbs can be given typing indicators by editing DM code, not html code. The report rate is once a second but this could be lowered or tweaked. Both the tgui say window being open and this system being active because the command bar starts with `say "` is undefined behavior, mostly the first one to end the indicator will just freeze indicators for the other one until it too ends its current indicator session. The system waits until something besides the `"` is in the argument to say. It is enabled for verbs `say`, `me`, and `whisper`. I don't actually know if this is the case for tgui say. this is a one line tweak anyways so let me know if this should be changed. [(This pr closes a bounty)](https://tgstation13.org/phpBB/viewtopic.php?p=726634#p726634) 🆑 MrStonedOne & Lilah Novi add: Say commands typed in the command bar now trigger typing indicators /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
6ec24c7f87 |
General IP intel tweaks (#82904)
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: ZephyrTFA <matthew@tfaluc.com> Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> |
||
|
|
8f8195da22 |
ip intel mk2 (#82683)
Do not merge this without coordinating with your server's host. Slightly refactors the way we handle IP intel. You can still use the old data stored in the database. Adds the ability to automatically reject connections determined by config flags. We used to have IP intel to check for VPNs, although it was disabled due to being bad and unhelpful. This refactor should make it much more manageable for hosts and admins. This adds a new SQL table `ipintel_whitelist` Look at the schema! 🆑 admin: The return of IPIntel /🆑 --------- Co-authored-by: MrStonedOne <kyleshome@gmail.com> Co-authored-by: oranges <email@oranges.net.nz> |
||
|
|
82d5a88325 |
General IP intel tweaks (#82904)
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: ZephyrTFA <matthew@tfaluc.com> Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> |
||
|
|
ba5c112a86 |
Huge Mirror fixes (#27488)
* Fixes incorrect operator usage in mecha code (#82570)
## About The Pull Request
I completely screwed up and told the original PR author of #82415
(
|
||
|
|
cbcf5a7108 |
ip intel mk2 (#82683)
Do not merge this without coordinating with your server's host. ## About The Pull Request Slightly refactors the way we handle IP intel. You can still use the old data stored in the database. Adds the ability to automatically reject connections determined by config flags. ## Why It's Good For The Game We used to have IP intel to check for VPNs, although it was disabled due to being bad and unhelpful. This refactor should make it much more manageable for hosts and admins. ## HOSTS BEWARE This adds a new SQL table `ipintel_whitelist` Look at the schema! ## Changelog 🆑 admin: The return of IPIntel /🆑 --------- Co-authored-by: MrStonedOne <kyleshome@gmail.com> Co-authored-by: oranges <email@oranges.net.nz> |
||
|
|
7aa6664021 |
Mirror (#27453)
* Fix Conflicts
* Change COGBAR_ANIMATION_TIME to seconds and not deciseconds (#82530)
Most people should not be using this define
* New Battle Arcade (#81810)
Remakes Battle Arcade from just about the ground up, with exceptions
taken for emagged stuff since I didn't really want to touch its
behavior.
The Battle Arcade now has stages that players can go through, unlocking
a stage by beating 2 enemies and the boss of the previous one, but this
must all be done in a row. You can choose to take a break between each
battle and there's a good chance you'll sleep just fine but there's also
a chance it can go wrong either through an ambush or robbery.
The Inn lets you restore everything for 15 gold and you can buy a sword
and armor, each level you unlock is a new sword and armor pair you can
buy that's better than the last, it's 30 gold each but scales up as you
progress through levels. They are really worth getting so it's best to
try to not lose your money early in.
The battle system is nearly the same as how it was before but I removed
the poor combo system that plagued the old arcade as one big knowledge
lock, now it's more just turn based. The game is built on permadeath so
dying means you restart from the beginning, but if you are going to lose
you can try to escape instead which costs you half of your gold.
Getting to higher levels increases the difficulty of enemies but also
increases the gaming exp rewards which could make this a better way to
get exp if you can get good at it.
Gaming EXP is used to increase chances of counterattacking but doesn't
give any extra health to the player.
I also removed the exploit of being able to screwdriver arcade cabinets
because people would do that if they thought they were on the verge of
losing to bypass the effects of loss. I instead replaced it with a new
interaction that the Curator's display case key can be used to reset
arcade cabinets (there's several keys on the chain so it made sense to
me), which I added solely because I thought Curators would be the type
of person to have run an actual arcade.
This is some gameplay
https://github.com/tgstation/tgstation/assets/53777086/499083f5-75cc-43b5-b457-017a012beede
As a misc sidenote, I also split up the arcade file just like how Orion
Trail was before, just for neat code organization.
The Inn keeper is straight up just a photo of my localhost dude, he's
not a player reference or anything it's not my actual character.
I also have no idea how well balanced this is cause I suck at it lol.
Battle Arcade is one of 3 last machines in my hackmd here to turn into
TGUI https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA?view
I've always thought the current version of battle arcade is quite lame
and lacks any progression, like Orion Trail I thought that since I was
moving this to TGUI, it would also be a perfect opportunity to revamp it
and try to improve on where it failed before, especially since the
alternative (NTOS Arcade) is also lame as hell and is even lamer than
HTML battle arcade (spam mana, then spam health, then just spam attack,
rinse and repeat).
This will hopefully be more entertaining and give players sense that
they are getting through a series of tasks rather than doing one same
one again and again.
🆑 JohnFulpWillard, Zeek the Rat
add: Battle Arcade has been completely overhauled in a new progression
system, this time using TGUI.
add: The Curator's keys can now reset arcade cabinets.
balance: You now need to be literate to play arcade games, except for
Mediborg's Amputation Adventure.
fix: You can no longer screwdriver emagged arcade consoles. Accept your
fate.
fix: Silicons can no longer play Mediborg's Amputation Adventure.
/🆑
---------
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
* Change setting item weight class to a setter to patch some weight class related shenanigans (#82494)
## About The Pull Request
Fixes #81052
Fixes #58008
Setting weight class of items is now done via `update_weight_class`.
I updated as many occurrences of manually setting `w_class` as I could
find but I may have missed some. Let me know if you know of any I
missed.
This is done to allow datums to react to an item having its weight class
changed.
Humans and atom storage are two such datums which now react to having an
item in its contents change weight class, to allow it to expel items
that grow to a weight class beyond what is normally allowed.
## Changelog
🆑 Melbert
fix: You can't fit items which are normally too large for a storage by
fitting it in the storage when it is small, then growing it to a larger
size.
/🆑
* Material datum color update, plus touching up some material items (knight armor, tiles) (#82500)
## About The Pull Request
Tries to bring the material datum colors in closer approximation to the
stacks they're attached too. I literally used the colors on the stacks.
some might need to be lighter or darker, but for the most part they'll
look...closer to their actual material hues.

I've also tweaked the sprites of both the tile object and the actual
material tile turf to give it the right shading.

In addition to the tiles, I've also updated the knight armor and helmet
to look closer to the much higher quality plate armor already in the
game.
## Why It's Good For The Game
It bothered me that the material datum coloring was inconsistent with
the actual colors used for the material stacks. When they were updated,
and even before they were updated, material datum stuff just never
looked _right_. I wanted to change that so that it looks just right.
I did not like the old material knight armor whatsoever. It was a
dithered mess, and seemed to already use parts of the standard plate
armor but with all the actual shading removed or replaced with the wrong
colors. This fixes that so that the armor is actually readable for what
it is.
## Changelog
🆑
image: Updates the colors of various material datum to bring them closer
in-line with their actual material stacks
image: Improves the sprites for the material knight armor and helmet.
/🆑
* LateInitialize is not allowed to call parent anymore (#82540)
## About The Pull Request
I've seen a few cases in the past where LateInitialize is done cause of
the init return value being set to do so for no real reason, I thought I
should try to avoid that by ensuring LateInitialize isn't ever called
without overriding.
This fixes a ton of machine's LateInitialize not calling parent
(mechpad, door buttons, message monitor, a lot of tram machines,
abductor console, holodeck computer & disposal bin), avoiding having to
set itself up to be connected to power. If they were intended to not
connect to power, they should be using ``NO_POWER_USE`` instead.
Also removes a ton of returns to LateInit when it's already getting it
from parent regardless (many cases of that in machine code).
## Why It's Good For The Game
I think this is better for coding standard reasons as well as just
making sure we're not calling this proc on things that does absolutely
nothing with them. A machine not using power can be seen evidently not
using power with ``NO_POWER_USE``, not so much if it's LateInitialize
not calling parent.
## Changelog
🆑
fix: Mech pads, door buttons, message monitors, tram machines, abductor
consoles & holodeck computers now use power.
/🆑
* Fix table top deconstruction (#82508)
## About The Pull Request
Edited: updated changelog, read comments for changes in implementation
details
So previously, tables would let you use a wrench to fully deconstruct
them, or a screwdriver to take off only their top.
This, however, broke in two different ways in #82280, when their
deconstruction logic got changed.
First off, deconstructed tables would only drop the materials for their
top and not their frame.
For this, the primary culprit seems to be on line 307:
https://github.com/tgstation/tgstation/blob/c34d56a45b0461f5e0fad3cc75e81580c3357119/code/game/objects/structures/tables_racks.dm#L300-L307
Where `new framestack(target_turf, framestackamount)` accidentally got
an extra indent, and ended up in the less common half of the if-else
chain.
Just moving this outside of the if-else chain again fixes it.
Secondly, tables had their own special deconstruction logic, which got
'standardized'.
Issue. This was special to accommodate for having two different
deconstruction logics: full or top only.
With `deconstruct(...)` no longer being overridable, I feel it's awkward
to attempt to proxy that information to the new `atom_deconstruct(...)`
So we introduce a new method, `deconstruct_top`, for the screwdriver to
use, which handles deconstructing only the top.
```dm
/obj/structure/table/proc/deconstruct_top()
var/obj/table_frame = new frame(loc)
if(obj_flags & NO_DECONSTRUCTION)
table_frame.obj_flags |= NO_DECONSTRUCTION
else // Mimic deconstruction logic, only drop our materials without NO_DECONSTRUCTION
var/turf/target_turf = get_turf(src)
drop_top_mats(target_turf)
qdel(src)
```
Mimicking the `NO_DECONSTRUCTION` logic of normal deconstruction, and
copying over the flag onto its frames if need be.
This fixes screwdriver deconstruction.
## Why It's Good For The Game
Fixes #82503.
We can now deconstruct the table top separately again, AND get the right
materials back too.
## Changelog
🆑 00-Steven, SyncIt21
fix: Wrench table deconstruction gives the right materials again.
fix: Screwdriver table deconstruction only deconstructs the top again.
/🆑
* [NO GBP] Reagent grinders display reagents on examination (#82535)
## About The Pull Request
- Fixes #82531
Somehow omitted this during the general maintenance thing
## Changelog
🆑
fix: Reagent grinders display reagents of its beaker on examination
/🆑
* Monkeys now use height offset (and monkey tail works) (#81598)
This PR adds the ability for monkeys to wear any jumpsuit in the game,
and adds support for them to wear things like coats, gloves, and shoes
(though this cannot be obtained in-game and is solely achieved through
admins, which I also improved a bit upon by adding a defined bitfield
for no equip flags).
This reverts a lot of changes from
https://github.com/tgstation/tgstation/pull/73325 - We no longer check
height from limbs and such to bring sprites down, instead monkeys now
work more similarly to humans, so the entire PR was made irrelevant, and
I didn't really want to leave around dead code for the sake of having a
human with longer legs.
I've now also added support for Dwarfism, which makes monkeys look even
smaller. Very minor change but at least now the mutation doesn't feel
like it does literally nothing to monkeys (since they can already walk
over tables).
Here's a few examples of how it can appear in game (purely for
demonstration, as it is currently intentionally made impossible to
obtain in-game, though if someone wants to change that post-this PR now
that support is added, feel free):
Tails have been broken for a while now, the only reason you see them
in-game is because they are baked into the monkey sprites. This fixes
that, which means humans can now get monkey tails implanted into them
(hell yeah) and monkeys can have their tails removed (also hell yeah)
* Gets [weird] with (spies) by adding protect and deuteragonist-flavored objectives. (#82447)
## About The Pull Request
What are their goals? Why are they doing this? gets weird with Spy
objectives - namely by adding a lot more ways spies might be asked to
affect various targets around the station.
the first of these is by several flavors of Protecting targets (these do
NOT print a success at roundend in keeping with Spy design:)
- Protect (get a humanoid target off alive)
- Protect Nonhuman (get an entity off alive)
- Jailbreak (make sure a humanoid target escapes free)
- Detain (make sure a humanoid target gets taken out arrested)
the second of this is by a new escape condition:
- Exile (get off-station or off the Z-level by the end of the shift -
sometimes it's not just pods, you need to fuck off to space to win.)
the third is through a massive increase in the number of possible:
- objective templates
- departments to target (Command + Service added)
- specific locations to target
- general classes of objects to target (medicines, floor tiles, critical
infrastructure, etc.)
- efforts to target (such as meals, mechs, public supplies)
- ways to leave (you can be asked to abscond from the scene of your
crimes?)
## Why It's Good For The Game
More goofy and weird prompts to do more interesting things with Spies.
One thing I think we're sorely missing in our lineup is antagonists that
can act a bit more as deuteragonists - very possibly helping the crew
under certain conditions and frustrating the Hell out of them in others.
Since there's no way to check their objectives, and they get their
gear/progression through stealing shit, they're still very much an
antagonist and exist under the suspicion of doing bad... but, just going
by their objectives, introducing more varied (and in some cases even
benign) goals for them creates suggestions pointing to a lot more varied
and interesting stories if people choose to run with it.
* Adds anosmia quirk (#82206)
## About The Pull Request
Adds anosmia quirk. Anosmia, also known as smell blindness, is the loss
of the ability to detect one or more smells.
I tried to find all smells action and (most likely) update all of them,
unfortunately I can't change descriptions for this quirk.
## Why It's Good For The Game
Some characters will be able to not feel smells
That affect:
* Gases feelings and alerts (CO2, Plasma, miasm) - you don't feel them
* Bakery and cooking
* Changeling ability to feel other changelings by smell
* Some unimportant spans
* Explosions Part I - Directional Explosions (#82429)
## About The Pull Request
Adds the ability for explosions to be directional. This is achieved by
adding an angle check to `prepare_explosion_turfs()` to drop any turfs
outside the cone of the explosion. If the arc covers a full 360 degrees,
as is the default, it will accept all the turfs without performing the
angle check.
Uses this functionality to rework both rocket launcher backblast and X4
explosions. Rocket launcher backblast has been changed from a shotgun of
indendiary bullets to a directional explosion of similar length. X4 now
uses a directional explosion to "ensure user safety".
Apparently the old method of moving the explosion one tile away didn't
even work, as it blew up `target` before trying to check its density for
the directional behaviour.
https://youtu.be/Mzdt7d7Le2Y
## Why It's Good For The Game
Directional explosions - Useful functionality for a range of potential
use cases, which can be implemented with minimal extra processing cost
(Worst case scenario being very large directional explosions)
Backblast - Looks way cooler than a bunch of projectiles, and should be
significantly more functional in high-lag situations where projectile
code tends to get fucky
X4 - More predictable for players wanting to use it as a breaching
charge, you can actually stand near the charge and not have to worry
about being hoist upon your own petard.
## Changelog
🆑
add: Added support for directional explosions.
add: Rocket launcher backblast is now 271% more explosive, check your
six for friendlies!
add: X4 charges now explode in a cone away from the user when placed on
a sufficiently solid object.
fix: X4 charges will now behave correctly when placed on dense atoms
(note: don't try to read a variable from an atom you just blew up)
/🆑
* Add balloon alerts to plunging (#82559)
## About The Pull Request
Makes all plunging actions (pretty much anything using `plunger_act`)
have a visible balloon alert.
## Why It's Good For The Game
Makes sense that others would easily notice you plunging the shit out of
something.
Also, more people might finally learn that you can plunge the vent clogs
instead of welding them.
## Changelog
🆑
qol: Added balloon alerts whenever you start plunging something (i.e )
/🆑
* Fixes spurious runtime on Icemoon caused by turf calling unimplemented LateInitialize() (#82572)
## About The Pull Request
As of https://github.com/tgstation/tgstation/pull/82540 this runtime was
happening,

`/turf/open/openspace/icemoon/` can be changed to
`/turf/open/misc/asteroid/snow/icemoon/do_not_chasm` before
`Initialize()` returns, which resulted in it `INITIALIZE_HINT_LATELOAD`
getting returned on a turf that does not have an implementation of that
proc.
This should fix that.
## Why It's Good For The Game
Fixes CI error
* Blueprints tgui (#82565)
Blueprints now use a TGUI panel instead of the old HTML one.
Also did general code improvement and maintaining to blueprints in
general and also destroyed the ``areaeditor`` level, repathing it to
just 'blueprints'.
Also adds a sound when you look at structural data cause why not
Video demonstration:
https://github.com/tgstation/tgstation/assets/53777086/861773fd-3d57-472d-bc94-d67b0d4f1dbd
The 4 blueprint types:

Another HTML menu dead underground.
This is more responsive and doesn't require constant updating to see
which area you're in, feels less OOC (instead of saying "the blueprints
say", just say it, you ARE the blueprints).
Like, come on

Look at all this wasted space

🆑
refactor: Blueprints now use TGUI.
qol: Blueprints can now be used while lying down.
/🆑
* General maintenance for chem master (#82002)
**1. Qol**
- Adds screen tips & examines for screwdriver, wrench, crowbar & beaker
insertion, removal & replacing actions
- Analyzing reagents is now a client side feature & not a back end mode,
meaning one person can see details of a reagent while the other can
print stuff and do other operations so it's a non blocking operation.
This also means 2 players can see information of 2 different reagents in
their own screens, With that the overlay for analysis mode has been
removed
- You cannot do any tool acts on machines while printing. Balloon alerts
will be displayed warning you of that.
- The preferred container for the master reagent in the beaker is now
showed in both condiment & chem master. It can be enabled/disabled via a
CheckBox
**2. Code Improvements**
- Removed defines like `TARGET_BEAKER` , `TARGET_BEAKER` etc. ther
functionality is implemented as params in the `transfer_reagent()` proc
directly
- Removed all variables relating to analyzing reagents like
`reagent_analysis_mode`, `has_container_suggestion` etc. all memory
savings
- `printable_containers` now stores static values that can be shared
across many chem masters
- Updates only overlays and not the whole icon during operations for
efficiency
**3. Fixes**
- You can hit the chem master with the screwdriver, wrench, crowbar &
beaker when in combat mode
- You cannot insert hologram items into the chem master
- Deconstructing a condiment master will give you the circuit board
already pre-programmed with that option selected so you don't need to
use a screwdriver to re program it
- `printing_amount` is now the maximum number of containers that can be
printed at a time. Presently this number with upgraded parts would print
out empty containers especially for patches. This is because
`volume_per_item` does not take into consideration this var. Also this
var would not give control to the player on exactly how many containers
to print as whatever amount the player entered would be multiplied with
this value producing a lot of waste & worse empty containers. Now this
var determines exactly how many containers you can print and is imposed
on the client side UI as well
**4. Refactors (UI performance)**
- Beaker data is compressed into a single entity & sent to the UI. This
is set to null if no beaker is loaded thus saving data sent
- Reuses Beaker props from chem synthesizer to reduce code
- reagent REF replaced with direct type converted to text and later
converted with `text2path()` cause its much faster
🆑
qol: Adds screen tips & examines for screwdriver, wrench, crowbar &
beaker insertion, removal & replacing actions
qol: Analyzing reagents no longer blocks other players from doing other
operations. Multiple players can analyze different reagents on the same
machine
qol: You cannot do any tool acts on the machine while printing to
prevent any side effects.
qol: The preferred container for the master reagent in the beaker is now
showed in both condiment & chem master. The feature can be
enabled/disabled via a check box
code: removed defines for reagent transfer, vars for reagent analyzis to
save memory. Autodoc for other vars & procs
fix: You can hit the chem master with tools like screwdriver, crowbar,
wrench & beaker in combat mode
fix: You cannot insert hologram items into the chem master
fix: Deconstructing a condiment master will give you the circuit board
already pre-programmed with that option
fix: You now print the exact amount of containers requested even with
upgraded parts without creating empty containers. Max printable
containers is 13 with tier 4 parts able to print 50 containers.
refactor: Optimized client side UI code & chem master as a whole.
/🆑
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Wraps `lowertext()` to ensure proper stringification. (#82442)
Fixes #82440
This PR just creates a new macro, `LOWER_TEXT()` (yes the irony is not
lost on me) to wrap around all calls of `lowertext()` and ensure that
whatever we input into that proc will be stringified using the `"[]"`
(or `tostring()` for the nerds) operator. very simple.
I also added a linter to enforce this (and prevent all forms of
regression) because I think that machines should do the menial work and
we shouldn't expect maintainers to remember this, let me know if you
disagree. if there is a time when it should be opted out for some
reason, the linter does respect it if you wrap your input with the
`UNLINT()` function.
* Clowns can now make balloon... toys. And also mallets and hats. (#82288)
<!-- 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. -->
Clowns will now start with a box of 24 random long balloons and a
skillchip in their noggin allowing them to create balloon animals by
combining two of them of different colour together. Owners of the
skillchip also gain access to crafting recepies of balloon mallets,
vests, helmets and tophats, all created from long balloons. A crate of
long balloons, with a box of balloons inside, can be bought at cargo, in
case the clown runs out. I might edit this once I wake up, its 3 in the
morning right now.
Oh also, resprited how balloons look in inventory.

Balloon animals funny.
Silly features are my favourite kind of features, and this one's
open-ended too.
Someone on the coder chat recommended someone would do it that one time,
here it goes.
<!-- 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: Added long balloon box to the clown's starting inventory, and a
skill-chip of long lost honk-motherian knowledge to their brain.
add: Added long balloons. Consequently, added balloon animals to make
from such balloons. Also, balloon top hat, vest, helmet, and a mallet.
Don't ask about the mallet.
add: A long balloons box harvested fresh from the farms on the clown
planet will be able to be shipped in a crate to the cargo department
near you!
add: As per requests; water balloons can now be printed at service
lathe, and entertainment modsuit can now blow long balloons!
image: Balloons will now have an unique sprite when in the inventory,
compared when to on the ground.
/🆑
<!-- 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: _0Steven <42909981+00-Steven@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Quick spellcheck 'steall' (#82560)
## About The Pull Request
https://github.com/tgstation/tgstation/pull/82447 quick followup to
this, caught it while glancing through the code.
* Fix
* merge conflicts
* Revert "Monkeys now use height offset (and monkey tail works) (#81598)"
This reverts commit
|
||
|
|
a9ff046352 |
Administrator Cherrypick (#27405)
* Admin Verb Datums MkIII | Now with functional command bar (#82511) * Modular stuffs * Put some admin jump verbs back into the context menu | sorts area jump list again (#82647) ## About The Pull Request See title. ## Why It's Good For The Game Some admins wanted all the jump verbs back, aswell as making them not AGhost you. Also make the Jump To Area verb use a sorted list again * Hey what if admins were allowed to use the player panel (#82682) Re-adds the player panel verb to the verb panel. * Controller Overview UI (#82739) * Fixes a minor spelling mistake on the admin panel/verb list (#82747) ## About The Pull Request Corrects `inisimin` to `invisimin`. This addresses #82728, but only fixes one of the two issues mentioned ## Why It's Good For The Game -1 spelling mistake ## Changelog 🆑 spellcheck: 'inisimin' verb corrected to 'invisimin' /🆑 * Player Panel-age (#82757) * Admin Forced Mob Rename and Preference Update (#82715) --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com> Co-authored-by: chel <64568243+iliyaxox@users.noreply.github.com> |
||
|
|
d554ab7766 |
RPG Loot: Revisited & READY (#82533)
## About The Pull Request Revival of #72881 A new alt click window with a tarkov-y loading spinner. Replaces the object item window in stat panel. ## Videos <details> <summary>vids</summary> toggleable grouping:  now lists the floor as first obj:  in action:  </details> ## features: - search by name - 515 image generator is much faster than alt click menu - opening a gargantuan amount of items shouldnt freeze your screen - groups similar items together in stacks by default, toggleable - shows tile as first item - <kbd>Shift</kbd> and <kbd>Ctrl</kbd> compatible with LMB 🖱️ - RMB points points at items (sry i could not get MMB working) - key <kbd>Esc</kbd> to exit the window. For devs: - A new image generation tech. - An error refetch mechanic to the Image component - It does not "smart track" the items being added to the pile, just reopen or refresh. This was a design decision. ## Why It's Good For The Game Honestly I just dislike the stat panel Fixes #53824 Fixes  ## Changelog 🆑 add: Added a loot window for alt-clicking tiles. del: Removed the item browser from the stat panel. /🆑 --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: AnturK <AnturK@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
7f8752be14 | Admin Verb Datums MkIII | Now with functional command bar (#82511) | ||
|
|
c403a6eccc |
Wraps lowertext() to ensure proper stringification. (#82442)
## About The Pull Request Fixes #82440 This PR just creates a new macro, `LOWER_TEXT()` (yes the irony is not lost on me) to wrap around all calls of `lowertext()` and ensure that whatever we input into that proc will be stringified using the `"[]"` (or `tostring()` for the nerds) operator. very simple. I also added a linter to enforce this (and prevent all forms of regression) because I think that machines should do the menial work and we shouldn't expect maintainers to remember this, let me know if you disagree. if there is a time when it should be opted out for some reason, the linter does respect it if you wrap your input with the `UNLINT()` function. |
||
|
|
5e9ce5ab99 |
New Battle Arcade (#81810)
## About The Pull Request Remakes Battle Arcade from just about the ground up, with exceptions taken for emagged stuff since I didn't really want to touch its behavior. The Battle Arcade now has stages that players can go through, unlocking a stage by beating 2 enemies and the boss of the previous one, but this must all be done in a row. You can choose to take a break between each battle and there's a good chance you'll sleep just fine but there's also a chance it can go wrong either through an ambush or robbery. The Inn lets you restore everything for 15 gold and you can buy a sword and armor, each level you unlock is a new sword and armor pair you can buy that's better than the last, it's 30 gold each but scales up as you progress through levels. They are really worth getting so it's best to try to not lose your money early in. The battle system is nearly the same as how it was before but I removed the poor combo system that plagued the old arcade as one big knowledge lock, now it's more just turn based. The game is built on permadeath so dying means you restart from the beginning, but if you are going to lose you can try to escape instead which costs you half of your gold. Getting to higher levels increases the difficulty of enemies but also increases the gaming exp rewards which could make this a better way to get exp if you can get good at it. Gaming EXP is used to increase chances of counterattacking but doesn't give any extra health to the player. I also removed the exploit of being able to screwdriver arcade cabinets because people would do that if they thought they were on the verge of losing to bypass the effects of loss. I instead replaced it with a new interaction that the Curator's display case key can be used to reset arcade cabinets (there's several keys on the chain so it made sense to me), which I added solely because I thought Curators would be the type of person to have run an actual arcade. This is some gameplay https://github.com/tgstation/tgstation/assets/53777086/499083f5-75cc-43b5-b457-017a012beede As a misc sidenote, I also split up the arcade file just like how Orion Trail was before, just for neat code organization. The Inn keeper is straight up just a photo of my localhost dude, he's not a player reference or anything it's not my actual character. I also have no idea how well balanced this is cause I suck at it lol. ## Why It's Good For The Game Battle Arcade is one of 3 last machines in my hackmd here to turn into TGUI https://hackmd.io/XLt5MoRvRxuhFbwtk4VAUA?view I've always thought the current version of battle arcade is quite lame and lacks any progression, like Orion Trail I thought that since I was moving this to TGUI, it would also be a perfect opportunity to revamp it and try to improve on where it failed before, especially since the alternative (NTOS Arcade) is also lame as hell and is even lamer than HTML battle arcade (spam mana, then spam health, then just spam attack, rinse and repeat). This will hopefully be more entertaining and give players sense that they are getting through a series of tasks rather than doing one same one again and again. ## Changelog 🆑 JohnFulpWillard, Zeek the Rat add: Battle Arcade has been completely overhauled in a new progression system, this time using TGUI. add: The Curator's keys can now reset arcade cabinets. balance: You now need to be literate to play arcade games, except for Mediborg's Amputation Adventure. fix: You can no longer screwdriver emagged arcade consoles. Accept your fate. fix: Silicons can no longer play Mediborg's Amputation Adventure. /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
1196e7d629 |
[MIRROR] Fix job time stuff not detecting the database was down. (#26753)
* Fix job time stuff not detecting the database was down. (#81821) This comment hasn't been true for 7 years. * Fix job time stuff not detecting the database was down. --------- Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> |
||
|
|
ae109891c1 |
Fix job time stuff not detecting the database was down. (#81821)
This comment hasn't been true for 7 years. |
||
|
|
5a496e9842 |
[MIRROR] Micro-Optimize keyLoop's self time (#26513)
* Micro-Optimize keyLoop's self time (#81464) <!-- 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 This is a REALLY hot proc, takes up to like 2% of total cpu at highpop Let's micro it then First, clients do not go null at random. It's not predictable per say but it is consistent. We can use this understanding to remove a bunch of null checks here For loops are expensive. So rather then doing one each keyLoop, let's cache the client's intended move direction on the client. Simplifies some other code too There is no sense running a turn call if it would have no effect, let's be more intelligent about this ## 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. --> 🆑 refactor: Fucks with how movement keys are handled. Please report any bugs /🆑 <!-- 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. --> * Micro-Optimize keyLoop's self time --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
89073444db |
Micro-Optimize keyLoop's self time (#81464)
<!-- 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 This is a REALLY hot proc, takes up to like 2% of total cpu at highpop Let's micro it then First, clients do not go null at random. It's not predictable per say but it is consistent. We can use this understanding to remove a bunch of null checks here For loops are expensive. So rather then doing one each keyLoop, let's cache the client's intended move direction on the client. Simplifies some other code too There is no sense running a turn call if it would have no effect, let's be more intelligent about this ## 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. --> 🆑 refactor: Fucks with how movement keys are handled. Please report any bugs /🆑 <!-- 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. --> |
||
|
|
47f8ddd4b9 |
[MIRROR] Fixes the "Saw this admin message" button not working [MDB IGNORE] (#26107)
* Fixes the "Saw this admin message" button not working (#80908) ## About The Pull Request Wrong fuckin name brother (also topic doesn't automake textnums into nums) ## Why It's Good For The Game Closes #80020 ## Changelog 🆑 admin: Confirming that you have read an admin message now uh, works. it's been 2 years bros /🆑 * Fixes the "Saw this admin message" button not working --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
2ed5a9fca0 |
Fixes the "Saw this admin message" button not working (#80908)
## About The Pull Request Wrong fuckin name brother (also topic doesn't automake textnums into nums) ## Why It's Good For The Game Closes #80020 ## Changelog 🆑 admin: Confirming that you have read an admin message now uh, works. it's been 2 years bros /🆑 |
||
|
|
fc4a1e032e |
[MIRROR] update blacklisted client byond versions [MDB IGNORE] (#25815)
* update blacklisted client byond versions (#80523) Also cleans up old ones that don't matter. Since we use 514 client features so byond forces 514 clients anyways. Resolves #80504 * update blacklisted client byond versions --------- Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com> |
||
|
|
a470da144c |
update blacklisted client byond versions (#80523)
Also cleans up old ones that don't matter. Since we use 514 client features so byond forces 514 clients anyways. Resolves #80504 |
||
|
|
34a9897b5d |
[MIRROR] reload savefile on pref assosciation [MDB IGNORE] (#24382)
* reload savefile on pref assosciation (#78984) ## About The Pull Request Tells the preferences datum to reload the savefile when we associate to an already existing one ## Why It's Good For The Game This trolled me locally for a good hour wondering "why aren't my prefs updating when I swap out the file" ## Changelog * reload savefile on pref assosciation --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> |
||
|
|
1d698431fe |
reload savefile on pref assosciation (#78984)
## About The Pull Request Tells the preferences datum to reload the savefile when we associate to an already existing one ## Why It's Good For The Game This trolled me locally for a good hour wondering "why aren't my prefs updating when I swap out the file" ## Changelog |
||
|
|
ab13621437 |
[MIRROR] Adds logging for first time user connections [MDB IGNORE] (#23889)
* Adds logging for first time user connections (#78525) ## About The Pull Request Fikou asked me for this and I like fikou.  ## Changelog 🆑 admin: First time user connections are now logged /🆑 * Adds logging for first time user connections --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
167f683bee |
Adds logging for first time user connections (#78525)
## About The Pull Request Fikou asked me for this and I like fikou.  ## Changelog 🆑 admin: First time user connections are now logged /🆑 |
||
|
|
e1d49bd0e7 |
[MIRROR] Culls client/mouse code only used by beam rifles in favor of signals. [MDB IGNORE] (#23754)
* Culls client/mouse code only used by beam rifles in favor of signals. (#78113) * Culls client/mouse code only used by beam rifles in favor of signals. --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
a351e4522c | Culls client/mouse code only used by beam rifles in favor of signals. (#78113) | ||
|
|
08c4188c61 |
[MIRROR] Makes client upload limit a config, bumps admin file size upload limit to 5mb (from 2.5mb) [MDB IGNORE] (#23207)
* Makes client upload limit a config, bumps admin file size upload limit to 5mb (from 2.5mb) * Update client_procs.dm --------- Co-authored-by: Striders13 <53361823+Striders13@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
bf6648b3a9 |
Makes client upload limit a config, bumps admin file size upload limit to 5mb (from 2.5mb) (#77708)
## About The Pull Request Makes client upload limit a config. Increases max file size admins can upload to 5mb, up from 2.5mb. ## Why It's Good For The Game Makes it easier to do custom maps for events. Some of our in-game maps are already larger than 2.5mb (delta is almost 3mb). ## Changelog 🆑 admin: admins can now upload files to the server up to 5mb (used to be 2.5mb) config: file upload restriction is now config /🆑 |
||
|
|
29bbef79bf |
wtb active headmin (#77670)
## About The Pull Request this pr made me learn to webedit ## Why It's Good For The Game turns out headmins have interesting functionality, probably good to have them around ## Changelog 🆑 balance: Re-escalates terry powergaming by increasing the strength of sec /🆑 |
||
|
|
11bc3ab67b |
Routine maintenance of Client/New (#77666)
## About The Pull Request Just your every so often clearout of crummy shit ## Why It's Good For The Game  ## Changelog 🆑 balance: De-escalates terry powergaming by reducing the strength of sec /🆑 |
||
|
|
2ac66a8a4a |
[MIRROR] Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently [MDB IGNORE] (#23081)
* Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently * Update vox_procs.dm --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
ed8445a312 |
Adds sanity checking to prefs checks, fixing a bug that can cause emotes to stop displaying intermittently (#76946)
## About The Pull Request This PR adds a bunch of sanity checking to the `prefs.chat_toggles` var accesses. Prefs can be null when client is creating/deleting and this causes a runtime where you might not be able to use emotes.  EDIT: as per suggestion I stopped masking the issue and added stack traces instead. And made them into helper procs to avoid code duplication. For some of these procs it is important that we are able to continue running to get to the end. **A ghost having null prefs should not stop everyone else from hearing/seeing the emote.** So now they will put the stack trace and keep on trucking if that issue occurs. This is the main 'point' of the PR, which has seemingly gotten bogged down in the creation of the two helper procs--apologies. See https://github.com/tgstation/tgstation/pull/70404 for essentially the same issue but applied to chat messages. I have gone back and replaced the duplicated code from that to use the new helper procs instead. ## Why It's Good For The Game Anything chat related is a bad place to runtime. Some messages can take a while to type out and to have it not display is frustrating at worst, possibly detrimental if you have to communicate something urgently. ## Changelog 🆑 fix: fixes a bug that can cause emotes to stop working if a client is being created or deleted /🆑 |