mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-27 17:41:50 +00:00
4b4fa2d61269aa56cdcaba5fb2f0d8fb104fefdd
987 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
6fb59f6aa9 |
[MDB Ignore] Removes the strange 4 second density delay that security barricades have after spawning. Refactors barricade item interaction code. (#91918)
## About The Pull Request Removes the quite weird 4 second density delay from security barriers. That's kind of what the grenade timer is for. Refactors barricade interactions to use tool acts and item_interaction(), rather than attackby. Also makes it so that wooden barricades don't....delete themselves and spawn a new one instead when repaired? ## Why It's Good For The Game > Security Barrier I think this was potentially depreciated code that was grandfathered forward in new forms. Very few places seem to explain WHY it has that but I think that might have been how barrier grenades used to spawn in their barrier from the grenade itself. Totally inexplicable really. > Refactors This codes old as hell, some of it nearly a decade. ## Changelog 🆑 qol: Security barrier grenades no longer have an arbitrary 4 second delay on becoming tangible. refactor: Barricades now use tool act and item interactions, and behave sanely. Looking at you wooden barricade. /🆑 |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
1d7b326bf1 |
Change hardcoded ice/snow temperatures values to use ICEBOX_MIN_TEMPERATURE define (#90228)
## About The Pull Request Several variables in the code had hardcoded temperature vars set to 180 when it should just use the `ICEBOX_MIN_TEMPERATURE` define that is used to indicate a 180 temp. ## Why It's Good For The Game No hardcoded values. ## Changelog 🆑 code: Change some hardcoded ice/snow temperature variables that were set to 180 to use `ICEBOX_MIN_TEMPERATURE` instead. /🆑 |
||
|
|
2df73da53e |
Fix ByondUI small map preview (#90277)
## About The Pull Request This PR should fix the problem of small previews in TGUI once and for all (I hope). What was causing it? Because TGUI takes a long time to open, that's why previews were generated broken (small). On Byond 515 this problem was not so noticeable as the interfaces opened faster, but with the release of 516 it became much worse. Previews were generated inside a window that was not yet open, so the scale was broken, sometimes the window would open before the preview was done and sent, usually with small interfaces, or when reopening. I'm not very good at working with signals, and to tell the truth this is my second experience with them, so I hope I did it right. ## Why It's Good For The Game No more small map previews <details> <summary> Video </summary> https://github.com/user-attachments/assets/834f3820-cc6a-4f65-90e5-d6bb2a118bcf </details> ## Changelog 🆑 fix: Fixed small character preview, color matrix preview, mech preview, and other previews with uses ByondUI map /🆑 --------- Co-authored-by: Gaxeer <44334376+Gaxeer@users.noreply.github.com> |
||
|
|
0ac282f03f |
Fixes spiderwebs, alien weeds, kudzu, and other stuff layering below catwalks and glass floors (#89893)
## About The Pull Request Vents/scrubbers look a bit weird as their pipes still go above catwalks/glass floors but I need my stuff from #89702 and it should be atomized from this PR. Closes #87022 Closes #88823 ## Changelog 🆑 fix: Fixed spiderwebs, alien weeds, kudzu, and other stuff layering below catwalks and glass floors /🆑 |
||
|
|
7e20627406 | Fixes things being statistically weighted to drop in security (#88788) | ||
|
|
6da4462e14 |
Fix gravity for areas in space near station (#88176)
## About The Pull Request - Fixes #76827 This removes gravity from the following areas: - Solars - Nearstation - Space - Ordnance bomb testing ##### Note - Asteroid areas (Tram) or planet areas (Ice) are not affected. <details> <summary>Examples of outside gravity turfs</summary>  </details> Now stepping on floor plating in those areas will result in mobs drifting. (like they do inside the station when gravity is offline) Stepping on or near catwalks, lattices, or walls stills controls your movement. Also refactored a little bit of the `has_gravity` code to use defines instead of `TRUE/FALSE`. ## Why It's Good For The Game Consistency. Mag boots are highly recommended when performing EVA. ## Changelog 🆑 fix: Fix gravity for areas in space near station (solars, nearspace, bomb testing, etc.) /🆑 |
||
|
|
25c616e353 |
fixes the museum cafeteria puzzle and some other things related to the museum (#88287)
## About The Pull Request the dotted color board was missing a color for the 10th digit, and orange and brown were not valid byond colors (damn you ghommie) fake scrubbers and vents use the correct layer and plane you may no longer deconstruct indestructible windows you can no longer push indestructible grilles and robust windows if you have a strong move force step teleporters may not teleport abstract objects or mirage holders (due to init shenanigans this sometimes teleported a mirage holder messing the visuals up) ## Why It's Good For The Game bug bad also i didnt make these bugs ok ## Changelog 🆑 fix: fixed the museum password puzzle (to the cafeteria), and the scrubbers and vents there now look correctly (also fixed a rare visual bug) fix: it is now harder to bypass indestructible windows and grilles (those are placed there for a reason, you know!) /🆑 |
||
|
|
778ed9f1ab |
The death or internal/external organ pathing (ft. fixed fox ears and recoloring bodypart overlays with dye sprays) (#87434)
## About The Pull Request This PR kills the abstract internal and external typepaths for organs, now replaced by an EXTERNAL_ORGAN flag to distinguish the two kinds. This PR also fixes fox ears (from #87162, no tail is added) and mushpeople's caps (they should be red, the screenshot is a tad outdated). And yes, you can now use a hair dye spray to recolor body parts like most tails, podpeople hair, mushpeople caps and cat ears. The process can be reversed by using the spray again. ## Why It's Good For The Game Time-Green put some effort during the last few months to untie functions and mechanics from external/internal organ pathing. Now, all that this pathing is good for are a few typechecks, easily replaceable with bitflags. Also podpeople and mushpeople need a way to recolor their "hair". This kind of applies to fish tails from the fish infusion, which colors can't be selected right now. The rest is just there if you ever want to recolor your lizard tail for some reason. Proof of testing btw (screenshot taken before mushpeople cap fix, right side has dyed body parts, moth can't be dyed, they're already fabolous):  ## Changelog 🆑 code: Removed internal/external pathing from organs in favor of a bit flag. Hopefully this shouldn't break anything about organs. fix: Fixed invisible fox ears. fix: Fixed mushpeople caps not being colored red by default. add: You can now dye most tails, podpeople hair, mushpeople caps etc. with a hair dye spray. /🆑 |
||
|
|
d33660e716 |
Ragnarok/Lattice/Species post-merge tune-up (#86606)
## About The Pull Request ### Ragnarok - Uncomplicated the arena. The center area's river has been muddied over, the bonfires have been made dense, the ants on the ground everywhere have been removed. - The Warrior's loadout has been simplified, removing any Ash aspects and making it more concise and understandable. - The Scribe's loadout has also been simplified, and given an additional rifle clip. (Yes, it's a clip.) It lost cosmic expansion and the pacifism mansus, but gained mind gate and some formerly bugged labyrinth handbooks. - The Crusader should be able to adjust their nullrod now. - The Rat'var Apostate's beakers are now named so people other than me can get the joke. ### Lattice - Unbreakable lattices are now actually unbreakable and can't be snipped into nothingness. - Added true invis walls to the edges. - Moved spare rods to the pockets. ### Species - Added no_smoothing to the funny, so it's actually hidden now. ## Why It's Good For The Game Time playing these ingame has shown some oversights and imbalances. Ragnarok in particular was far too overcomplicated and indulgent to the detriment of gameplay. Too many things - ants, rivers, bonfires, spells, it was cloying. I toned this down a lot here to make the arena more fun. We still do need a way to pre-bind spells but out of scope. ## Changelog 🆑 balance: - Uncomplicated the Ragnarok arena. The center area's river has been muddied over, the bonfires have been made dense, the ants on the ground everywhere have been removed. The Warrior and Scribe have had their loadouts simplified. qol: - The Rat'var Apostate's beakers are now named so people other than me can get the joke. fix: - Unbreakable lattices are now actually unbreakable and can't be snipped into nothingness. fix: - Added true invis walls to the edges of Lattice Battles. Moved spare rods to the pockets. fix: - Species Warfare: Added no_smoothing to the funny, so it's actually hidden now. /🆑 |
||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## 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 /🆑 |
||
|
|
69176298ed |
Spelling Fixes (#86056)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game Improves readability and user experience. ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
1880003270 |
Reworks silicon/ai access checking & fixes some ui_act's (#84964)
## About The Pull Request Currently to check for Silicon access, we do: ``if is silicon or is admin ghost or has unlimited silicon privileges or has machine remote in hand`` What has unlimited silicon privileges? Bots, Drones, and admin ghosts. To check for AI access, it just checks for AI instead of silicon, and doesnt check for unlimited silicon privileges. This was kinda silly, so I thought I should make this a little easier to understand. Now all silicon/ai traits come from ``AI_ACCESS_TRAIT`` or ``SILICON_ACCESS_TRAIT``. I made a single exception to keep Admin ghost, since now instead of being a var on the client, we moved it to using the same trait but giving it to the client instead, but since we have to keep parity with previous functionality (admins can spawn in and not have this on, it only works while as a ghost), I kept previous checks as well. No more type checks, removes a silly var on the mob level and another on the client. Now while I was doing this, I found a lot of tgui's ``ui_act`` still uses ``usr`` and the wrong args, so I fixed those wherever I saw them, and used a mass replace for the args. Other changes: - machinery's ``ui_act`` from https://github.com/tgstation/tgstation/pull/81250 had ``isAI`` replaced with ``HAS_AI_ACCESS``, this has been reverted. Machine wands and admin ghosts no longer get kicked off things not on cameras. This was my fault, I overlooked this when adding Human AI. - Human AI's wand gives AI control as long as it's in your hand, you can swap to your offhand. I hope this doesn't end up going horribly, otherwise I'll revert this part. It should let human AIs not have their UI closed on them when swapping to eat food or use their door wand or whatnot. - Bots previously had special checks to scan reagents and be unobservant, I replaced this with giving them the trait. I also fixed an instance of unobservant not being used, so now statues don't affect the basic creature, whatever that is. ## Why It's Good For The Game This is an easier to understand way of handling silicon access and makes these mobs more consistent between eachother. Other than what I've mentioned above, this should have no impact on gameplay itself. ## Changelog 🆑 fix: Statues don't count as eyes to creatures. fix: Human AIs and Admin ghosts no longer get kicked off of machines that aren't on cameranets. /🆑 |
||
|
|
d9168e7254 |
Adds a treasure chest to the ocean/beach fishing spot. (#85276)
## About The Pull Request This PR adds a treasure chest that can be fished from the ocean if you're lucky enough (or have enough explosives or lobstrosities to do it for you). The treasure chest is basically a mystery box (like the ones from the deathmatch) with a couple catches; the treasure chest can be opened up to 18 times in total before breaking down, however, it can only be opened up to 3 times per spaceman, encouraging the player to share it with others. Here the possible loot by the by: - A toolbox containing a master fishing rod, all the hooks and reels, fish feed, an experi-scanner, an aquarium kit and a can of super baits - A box containing a lazarus injector, a cup and a bottle of strange reagent which you can use to revive fish now - A circuit board for a pre-emagged fishing portal generator - A master fishing rod - A can of super fishing baits - A fish case containing Tiziran fish - A fish case containing Syndicate fish - An old, yet fairly strong cutlass - An old laser gun which fires only 5 shots before running out - A crank laser musket - A smoothbore disabler - A surplus bolt action rifle - A ration pack - A can of squid ink - A bottle of aged rum that forces you to switch to the piratespeak language - A money bag with some doubloons inside - A piratespeak manual - Pirate armored coat - Pirate armored hat - A pre-loaded cannon - Four trash cannon balls - Four cannon balls ## Why It's Good For The Game Mystery boxes are fun, from the little fanfare they play to the potential loot they can give, and I had an old treasure chest I had sprited for fun years ago around so I've come up with an entertaining idea. If you think the loot list is a bit too hot, I can cool it down a bit. Also yeah, I wanted to make fish revivable with strange reagent, since you can already do it with lazarus injectors even though using a lazarus injector for this would be a severe waste of mining points. ## Changelog 🆑 add: Added a treasure chest you can rarely fish from the ocean/beach, with loot being a mix of fishing and piratey stuff. add: You can revive fish with strange reagent now. /🆑 |
||
|
|
fec946e9c0 |
/Icon/ Folder cleansing crusade part, I think 4; post-wallening clean-up. (#85823)
Hello everybuddy, your number three rated coder-failure here to clean up some mess. This PR accomplishes some of the more major structural clean up changes I wanted to do with /obj/ folder, but decided to wait on until wallening gets merged, and so, time has come. Several things to still be done, although I know these cleaning PR's are quite a load, so will wait for this one to get done with first. ## Why It's Good For The Game Saner spriters, better sprites, less annoyance. Also deleted a whole load of redundancy this time around, a lot of sprites which existed simultaniously in two places now got exit their quantum superposition. |
||
|
|
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> |
||
|
|
e00eb5ec6a |
Added a config to override the def gateway delay for specific start points. (#85341)
## About The Pull Request I've a few gripes with start points and the gateway delay. First of all, there's no way to discriminate peaceful away locations that do not need a with a 30 minutes timegate from the rest. Places like the beach and the museum hardly have anything OP that could tip the scales. Second, none of the awaystart landmarks have identifiers of their own, which means all awaystart landmarks from all away missions are linked under the same destination point datum. This is hardly an issue in the current state where only one map is ever loaded and all maps have only one way in that directs you to one of several locations at least until the gateways are linked, but it's nevertheless something that I have to take care of, since the config requires it. ## Why It's Good For The Game See above. ## Changelog 🆑 config: Added a config for specific gateway delays so locations like the beach and the museum don't have to take 30 minutes to become available like the rest. /🆑 |
||
|
|
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" /🆑 |
||
|
|
e90a9b4b68 |
Flattens The Floor Plane (Camera Update Too) (#84350)
## About The Pull Request Ok so like, side map right? It makes things higher up in the world render above things lower down in the world. Most of the time this is what we want, but it is NOT what we want for floors. Floors are allowed to be larger then 32x32, and if they are we want them to render based off JUST their layer. If we don't allow this grass turfs and others get cut off on their bottom edge, which looks WEIRD. In order to make this happen, we can add TOPDOWN_LAYER to every layer on the floor plane and disable sidemap. I've added documentation for this to VISUALS.md, and have also implemented unit test errors to prevent mixing TOPDOWN layers with non topdown planes (or vis versa). This new test adds ~1 second to tests, which is I think a perfectly scrumpulent number. EDIT: I nerd sniped myself and implemented sidemap layering and lighting for cameras (also larger then 32x32 icon support for getflat) The lighting isn't perfect, we don't handle things displaying in the void all that well (I am convinced getflat blending is broken but I have no debugger so I can't fix it properly), but it'll do. This came up cause I had to fix another layering issue in cameras and thought I might as well go all in.  ## Why It's Good For The Game Old:  New:  ## Changelog 🆑 fix: Grass turfs will render properly now. Reworked how floors render, please report any bugs! fix: Cameras now properly capture lighting fix: The layering seen in photos should better match the actual game /🆑 |
||
|
|
e87045b377 |
Tweaks some instances of get_safe_turf so things like the nuclear disk doesn't accidentally teleport to the Icebox Syndicate Base (#83012)
Yes, I know preventing the nuke disk teleporting to the icebox syndicate base (or possibly the wendigo arena) is removing soul. Please don't kill me :( ## About The Pull Request Adds some missing variables to instances of get_safe_turf() so they will only teleport to the given z-level. Replaces some instances of get_safe_turf() with get_safe_random_station_turf(). ## Why It's Good For The Game First, the differences between get_safe_turf() and get_safe_random_station_turf(): ### get_safe_turf() - gets a random safe turf on a z-level (usually any of the staiton z-levels), not accounting for the /area/ - should be used if you don't care if it spawns on the station or not, or if you need to specifically teleport to a z-level - not very expensive performance wise ### get_safe_random_station_turf() - gets a random safe turf that will always be a station area, ignoring z-level. - should be used if you NEED the turf to be on a station's area - slightly more expensive performance wise than get_safe_turf, but still very cheap Some code was using get_safe_turf() when it should've been using get_safe_random_station_turf(), and some code that should be using get_safe_turf() were incorrectly using the zlevels arg instead of zlevel arg (Yes, there is a difference), or didn't include it at all. All the changes were made to my best judgement. If you're curious about a change, please ask and I will explain why I did it. ## Changelog 🆑 BurgerBB fix: Tweaks some instances of get_safe_turf so things like the nuclear disk doesn't accidentally teleport to the Icebox Syndicate Base /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
c57afc4689 |
Wawastation (#82298)
- [x] #82282 - [x] map in aux base how the hell did i forget it - [x] fill out maints - [x] properly test the goddamn thing - [x] fix major cameranets - [ ] fix any issues - [x] write a proper pr body ## About The Pull Request adds this map to the map rotation bottom level (24.5.2024)  upper level (24.5.2024)  ## general map details and department stuff - the station is more focused on the bottom level, so falling in doesnt roundremove you - this is an asteroid station, so assistants can larp as dorfs and mine towards the sweet loot - there is plenty multiz usage - service is the center of the station **Service** - Is the center of the station. Arrivals docks directly in the middle of the station next to Upper Service, so bar might get more traffic. Not much different than normal Service, but janitors closet is also present here, he sleeps on the floor. We do not talk about the janitor. Above Bar is Library and Hydroponics with an overlook to look at bar. The Theater has a big curtain and a podium directly in the bar. 29.3.2024  **Civilian** - Also in the center of the station, next to bar. There isnt much to talk about dorms, its pretty normal. **Cargo** - Absence of chutes that go to departments, reminder that mail sorting is a thing. Cargo bay is a big open area with a boutique/shop facing primary hall that starts closed, and Cargo has its own crate elevator. Theres upper Cargo where mining, bitrunning and a secure warehouse is located (There may be a murder scene). The quartermasters office spans two z-levels and is relatively compact. Not much else different from regular cargo. ~~Oh also the QM starts with an empty PML-9 and a mostly functional rocket~~ 29.3.2024  **Medical** - Large centralized medbay, also two z-levels. There is a public waiting room with triage and a reception. There is also an inner elevator for the crippled. There are two medbay-access patient rooms that are unrestricted from the inside, and two operating rooms. Medbay has its own rad shelter. The virologist does not get their own satellite, but is still relatively secure. 29.3.2024 https://i.ibb.co/hs9kKbV/ezgif-1-f7b697b067.gif (large gif) **Command** - AI Sat transit tube access is here. HoP has an open stall facing primary hall, ~~and maybe a piano trapdoor~~ pretty classic bridge, Captain does not get his own office but gets a really comfortable quarters with his own emergency mass ejection for abandoning ship. The council meeting room is present above bridge, with ERT Ferry dock docking inside adjacent to the council room. **Security** - Mostly bottom z level security. Very compact brig cells, and a meeting room that everyone that is related to security may spawn in if youre lucky. Warden has a weapon handout point facing the inner security hall and the equipment room. Reeducation chamber has a shocked grille treadmill. HoS and Warden Room and armory are on the upper z-level, and warden has a VERY good overlook over permabrig. Armory is seperated into nonlethal to mostly nonlethal and lethal. 29.3.2024  **Science** - Also pretty centralized, breakroom with a smoking corner, two z levels and a big overlook. RD office overlooks toxins and bomb site. Genetics and RD Office is on the upper floor, with a science exclusive monkey exhibit. Xenobio is thick due to proximity to bomb site, otherwise normal. 29.3.2024  **AI Sat** - Okay at this point assume any department is multiz. The antechamber is an elevator and the turrets are on said elevator. The elevator may be sent to the top level by engineers, where the AI core is. Telecomms is on the bottom level, and AI core is above it. Contains a borg entertainment room, and also the upload. The elevator being raised is necessary to properly enter AI Room. **Engineering** - Contains a less stale but still average and less than optimal SM setup. Prone to catastrophic disaster. The SM Room is two levels and very open, and CE has a trapdoor directly into the shard. Turbine is above atmospherics, so is the crystallizer. The HFR and main atmos and distribution room are on the bottom level. Piped by **Kendra Hunter**. Contains a built in electrolyzer corner so atmos mains stop gutting the aesthetics to place down some dumb machine. ## Why It's Good For The Game another interesting map into the roster, different from the other multiz maps in the form that you dont get stuck in hell by falling down a hole todo write better section ## Changelog 🆑 add: wawastation, the station map /🆑 --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> |
||
|
|
a97fe316db |
Gateway sounds (#83274)
## About The Pull Request Adds sounds for the gateway ### Sound files: https://drive.google.com/drive/folders/1POAc79zV95aX8sRKJVcxu31HjxhzLrzS?usp=sharing ### Demo: https://github.com/tgstation/tgstation/assets/96586172/a4318ac5-8184-4364-8b12-4d67a225825d ## Why It's Good For The Game Having sounds for an alien piece of tech adds to the immersion ## Changelog 🆑 grungussuss and Virgilcore sound: added sounds for the gateway /🆑 |
||
|
|
02448fd058 |
Sunders the many unused sprites and organizes what's left in structures.dmi (#82658)
## About The Pull Request Hello again, I noticed the /obj/structures.dmi file had a lot of unused stuff like tables from two generations ago, so I changed some stuff around: - Many unused, old icons deleted, mostly window variants used in old smoothing systems I imagine - Reorganized many sprites in the file so they're more grouped together - Tweaked some barricade sprite naming to be consistent/standardized, and to let others know they're not _too_ old... - Fixed a misnomer that I believe was making directional tinted windows look like frosted windows ## Why It's Good For The Game Saves on file space, and satisfies your brain's pattern recognition bits ### Spriting Old:  New:  also good lord those linen bin sprites are a crime ## Changelog 🆑 fix: Probably fixed directional tinted windows looking like directional frosted windows image: Deleted a bunch of unused structure sprites /🆑 |
||
|
|
227cdd2c7c |
[NO GBP] Patches & renaming for NO_DECONSTRUCTION flag (#82547)
## About The Pull Request 1. Renames `NO_DECONSTRUCTION` -> `NO_DEBRIS_AFTER_DECONSTRUCTION`. As the name suggests when the object is deconstructed it won't drop any items/debris. After my last refactor for this flag it now serves a new purpose so its name has been changed to match that 2. Fixes objects that are now using `NO_DECONSTRUCTION` incorrectly. Some of these changes include - Removing the flag in objects where there are no means to deconstruct them (e.g. jukebox, hydroponics soil, flora etc) - Replacing the flags old purpose by overriding its tool procs so that it regains its old behaviour(e.g. You once again cannot deconstruct ctf reinforced tables, survival pods, indestructible windows etc) ## Changelog 🆑 code: renamed `NO_DECONSTRUCTION` to `NO_DEBRIS_AFTER_DECONSTRUCTION` so its name matches its intended purpose fix: fixes some items that incorrectly used `NO_DECONSTRUCTION` prior to its refactor, meaning makes some objects non deconstructable again /🆑 |
||
|
|
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. |
||
|
|
9723b4b317 |
Replaces even more deciseconds with SECONDS (#82438)
## About The Pull Request
Using these search regexes:
Ending in 0:
`addtimer\((.*),\s?(\d{1,3})0\b\)`
replacement:
`addtimer($1, $2 SECONDS)`
Two digit ending in odd:
`addtimer\((.*), (\d)([1-9])\)$`
replacement:
`addtimer($1, $2.$3 SECONDS)`
Single digit ending odd:
`addtimer\((.*), ([1-9])\)$`
replacement:
`addtimer($1, 0.$2 SECONDS)`
## Why It's Good For The Game
Code readability
---------
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
|
||
|
|
9ac81e1a64 |
New station trait job: Human AI (#81681)
## About The Pull Request This PR does many things, I'll try to explain the basic/background stuff to the main thing first: 1. Adds a new remote that allows a human to function like an AI. It controls a fly that will fly around the station slowly, and when it reaches a machine then the person can interact with it as if they were an AI. This required changing a lot of silicon/AI checks with one that also checks for this remote, and some messing with shared ui state. 2. Moves req_access from the obj and bot to ``/atom/movable`` which lets it be shared between the two, no more copy-paste and one side lacking features/checks/signals the other has. 3. Adds a check for AI config for AI-related station traits, which was lacking prior Now for the good part... Adds a new station trait that replaces the AI with a Human. This person is equipped with an AI headset (including Binary), an advanced camera console, an omni door wand, the machine controller, and their laws. They are immune to the SAT's turrets (even if set to target borgs) and are slow outside of the SAT, mimicing the actions of the AI. They interact with the world through their advanced camera console, which allows them to do most AI stuff needed, and the holopad they can connect to without having to ring first (like Command can). They are given a paper with the laws they must follow, but since they are human they are able to bend it. Cyborgs that run the default lawset are "slaved" to them via an unremovable law 0, so the Human AI can bend the laws if they really need to (for their own survival n such), and make the cyborgs obey their commands above laws, but in general this shouldn't be a frequent occurrence. This does take into account the unique AI trait, so it's not guaranteed Asimov. When this station trait rolls, all Intellicards, AI uploads, and AI core boards are destroyed and are unresearchable. They can be spawned by admins in-game if necessary. Maybe in the future we can also exclude Oldstation from this but I haven't really decided. Extra perks: Human AI spawns with a Robotic voicebox (unless they are a body purist) and teleport blocking implant, so they can't use teleporters to bypass their on-station slowdown. They also have an infinite laser pointer that can be used to blind through their camera console. This is unfortunately nerfed from the recent borg balance PR that removed its stun. This was meant to be the alternative to no longer being able to permanently lock borgs down like AIs can (or more than one, for that matter). They aren't affected by Roburgers, Acid, and Fuel's toxicity. Bots salute them like they do Beepsky (which is now a trait) They spawn with SyndEye to replace the AI's tracking ability They do not have a bank account ### The machine remote The machine remote has a little fly in it that flies to the machines it is pointed to, working as the arms and legs of the Human AI. It scans the machine and punches in the action the AI does, and is how the AI accesses basically anything. This fly slowly moves from one machine to the next, and can be recalled with Alt Click. It works on machines and bots. ### Video (Low quality to fit Github) https://github.com/tgstation/tgstation/assets/53777086/e16509f8-8bed-42b5-9fbf-7e37165a11e8 ## Why It's Good For The Game I've seen a funny screenshot one day of a person replacing the AI by using a bunch of door remotes, camera console, crew monitoring console, and a few other things. I've been thinking about that for a few years and really wanted to make it official if not easier to make possible, because it is an incredibly funny interaction. This makes it a reality, and while they aren't as powerful as regular AIs, I think it makes for better and funnier in-game moments. With the same weight as Cargorilla (1), I hope this wouldn't be rolling too often and ruin rounds, but instead show off the different capabilities that Humans and AIs can do, to do the job of an AI. You win some you lose some. ## Changelog 🆑 JohnFulpWillard, Tattax add: Adds a new station trait job: The Human AI. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
fbe6e2ebba |
museum away mission (#81208)
## About The Pull Request adds a new gateway map, the Nanotrasen Museum it is filled with """"Mannequins"""" and Common Core lore im not putting the preview here because you really should explore it yourself but if youre that curious i think the Checks tab in mapdiffbot would have it this gateway map contains no combat unless you count falling into chasms because you did not carry a light or going into the boarded room with no loot or any incentive with obvious signs that there is the sole enemy on the map in there the loot is the lore ok thanks also makes mines detonate if theyre detonated by a non-mob im pretty sure this couldnt have been intentional trams stop chasms and also the relevant items <details> <summary>on second thought if you want spoilers check this</summary>  </details> ## Why It's Good For The Game more gateway maps = good ## Changelog 🆑 add: nanotrasen museum gateway map /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
f1a3fc839f |
Replaces /obj:: -> parent_type:: (#81146)
## About The Pull Request This just seemed like a minor error with the new syntax that popped up: The intent of these seem to be "take our obj flags and add `NO_DECONSTRUCTION` to it", which was perfectly serviceable in a majority of places, as the parent type had the same obj flags as `/obj`. But in a small handfull of places (such as any table subtypes) this was not the case, and it caused some objects to have missing flags that they were otherwise intended(?) to inherit. So I replaced `/obj::` with `parent_type::` meaning rather than using the base obj flags and then adding `NO_DECONSTRUCTION`, they use their parent type's obj flags and then add `NO_DECONSTRUCTION`. ## Changelog 🆑 Melbert fix: You can build on some niche tables again, such as the Wabbajack Altar. /🆑 |
||
|
|
45438b4f04 |
Removes the attack_slime proc, and other slime refactors (#80487)
## About The Pull Request - **Removed attack_slime**. Most of the attack_slime content has been moved to a proc that signs up for COMSIG_LIVING_UNARMED_ATTACK. Its ugly, but will make converting slimes to a basic mob easier. They now use attack_animal for now, which might cause some unexpected interactions. Hopefully when they are converted to basic mobs, these can be cleared up properly. - This caused some issues with cyborgs, who used to get only half damage dealt to them. As refactoring this would have been too much of a difficult task without much real gain, after much pondering, I have decided that since slimes can always flash cyborgs with each of their strikes, maybe cyborgs should only fear slimes that have electric charges in them. In addition, slimes electric charges decrease now after they successfully zap an cyborg, making them more consistent with the zaps that affect carbons. AIs are still fully immune to slimes. - The slime.dm and slime.life files were extremely bloated, and unorganized. I have created two new files, defense.dm and ai.dm. I have moved the various attack_by/attack_hand/etc procs to defense.dm. Ai.dm now contains every single proc the slime's "AI" uses; this should help getting a clearer picture of the current functionality, which should aid with basic mob conversion and decision tree creation. The remaining files have been slightly organized, with overrides in front, and new procs at the back. - Created a proc for swapping out Adult and Baby states of a slime. Previously, attack_slime was in many cases ignoring fields like melee_damage_lower and melee_damage_upper, replacing it with magic numbers based on the slime's lifestate. Now these values are hard set by these procs. This has caused slimes to be more consistent, though baby slimes might do a bit less damage on the low end. I am tempted to turn these in datums in the future, or as part of this PR. - Removed baby slime's chance to accidentally attack a window/grille by bumping into it, they had 0 object damage anyways, unlike adult slimes, so there was no reason not to early return. - The proc of `handle_feeding` assumed adjustBruteLoss and adjustToxLoss return positive values when damage has been done, when in reality, it returns the total health change along with its direction. This meant slimes would fell off simple or basic mobs after a single bite. This has been fixed. - Also updated the warning before the slime type defines, as they were out of date. - I have removed the bespoke spacewalk override for slimes, which should allow them to drift, should gravity go out. - The nutrition stats are assigned only once, when the slime grows up, instead of compared to being an adult every life tick ## Why It's Good For The Game Less duplicated code. This refactor should help in the basic mob conversion process. Cyborgs have an easier time wrangling slimes, who could previously kill them in three hits, if charged. They are mostly encased in metal, they should feel fine when not hit with electric attacks. Lets slimes feast on delicious corgis. |
||
|
|
260b98c277 |
Alien nests and some other stuf can be hit again. (#80418)
## About The Pull Request Another small issue fixed. Thanks Melbert for telling us what's wrong with it. EDIT: other objects were rendered unhittable by that flags refactor PR. ## Why It's Good For The Game Fixes #80311. I made the xmas tree indestructible because the comment to the `NO_DECONSTRUCTION` flag didn't make a load of sense since that doesn't stop it from getting destroyed anyway. ## Changelog 🆑 MrMelbert, Ghommie fix: Alien nests, and some other stuff, can be physically attacked again. balance: x-mas trees (the ones with presents), are indestructibles. Truly protected by a yuletide spirit. /🆑 |
||
|
|
5ce9d5806d |
Scopes NODECONSTRUCT_1 from flags_1 to obj_flags (#80104)
This flag only worked on the `/obj/structure` and `/obj/machinery` level, so let's rescope it from `flags_1` and put it where it belongs - `obj_flags`. Bitflag operators should be scoped to their subtype specific bitfield, not really useful to have this take up a spot on the `/atom` level if absolutely nothing other than `/obj`s use it. |
||
|
|
7f7688b60a |
Demotes the "electrical conductivity" flag from flags_1 to obj_flags (#80033)
## About The Pull Request
Code to handle this flag only ever existed on the `/obj` sublevel, so
there's no need for it to be on the `/atom` level `flags_1`. There was
probably a point in time in which mobs or turfs conducted electricity
but there's zero code for it anymore so we truly just live in a society
now.
## Why It's Good For The Game
Frees up a slot on `flags_1` (which is really nice actually), proper
scoping of certain bitflag stuff, etc.
## Changelog
Not relevant to players.
I may have screwed something up, will be doing a few passes on this
myself to ensure all the search and replaces went alright but we should
be good™️
|
||
|
|
2893b7fb97 | TGUI for Safes and Secure briefcases (Safes are now a structure, too) (#79594) | ||
|
|
93ec5a72f7 |
A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc (#79024)
## About The Pull Request
- Refactored `bullet_act`. Adds `should_call_parent` and refactors
associated children to support that.
- Fixes silicons sparking off when hit by disabler fire.
- Desnowflakes firing range target integrity and cleans up its
bullet-hole code a bit.
- Cleans up changeling tentacle code a fair bit and fixes it not taking
off throw mode if you fail to catch something.
- The Sleeping Carp deflection is now signalized
- Nightmare projectile dodging is now signalized and sourced from the
Nightmare's brain rather than species
- Refactored how cardboard cutouts get knocked over to be less
snowflaked / use integrity
- Also adds projectile `on_hit` `should_call_parent` and cleans up a bit
of that, particularly their arguments.
- On hit arguments were passed wrong this entire time, it's a good thing
nothing relied on that.
## Why It's Good For The Game
This is cringe.
|
||
|
|
96d7e9c690 |
Invisibility refactor (#78908)
This adds a tracker for sources of invisibility and a priority system. I needed this for another thing so I'm doing this first since it touches a lot of code. As for the bugs fixed in the changelog, it's only what I noticed while going through everything and there's likely a few more things fixed with this. This should be testmerged for a while, I'll bring this out of draft when it feels safe. 🆑 admin: Invisimin can now be used on mobs that are already invisible, whether through temporary or permanent effects. fix: Monkeyize/Humanize mob transformations no longer permanently reveal invisible mobs if they had effects making them invisible otherwise. fix: Objects with the undertile element that have been made invisible through other means are no longer revealed by being uncovered. /🆑 |
||
|
|
88c3f4bfa4 |
bitrunning hotfix 2 [NO GBP] (#78633)
Bitrunning releated fixes --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
41f20bc3ce |
[MDB IGNORE] Angled Lights & Lighting Prototyping Tool (#74365)
## About The Pull Request Hello friends, I've been on a bit of a lighting kick recently, and I decided I clearly do not have enough things to work on as it is. This pr adds angle support to static lights, and a concepting/debug tool for playing with lights on a map. Let's start from first principles yeah? ### Why Angled Lights? Mappers, since they can't actually see a light's effect in editor, tend to go off gut. That gut is based more off what "makes sense" then how things actually work This means they'll overplace light sources, and also they tend to treat lights, particularly light "bars" (the bigger ones) as directional. So you'll have two lights on either sides of a pillar, lights inside a room with lights outside pointing out, etc.  This has annoying side effects. A lot of our map is overlit, to the point that knocking out a light does.... pretty much nothing. I find this sad, and would like to work to prevent it. I think dark and dim, while it does not suit the normal game, is amazing for vibes, and I want it to be easier to see that. Angled lights bring how lights work more in line with how mappers expect lights work, and avoids bleedover into rooms that shouldn't be bled into, working towards that goal of mine. ### How Angled Lights? This is more complex then you'd first think so we'll go step by step  Oh before we start, some catchup from the last time I touched lighting code. Instead of doing a lighting falloff calculation for each lighting corner (a block that represents the resolution of our lights) in view we instead generate cached lightsheets. These precalculate and store all possible falloffs for x and y distances from a source. This is very useful for angle work, since it makes it almost totally free. Atoms get 2 new values. light_angle and light_dir Light angle is the angle the light uses, and light_dir is a cardinal direction it displays in We take these values, and inside sheetbuilding do some optional angle work. getting the center angle, the angle of a pair of coords, and then the delta between them. This is then multiplied against the standard falloff formula, and job done. We do need some extra fenangling to make this all work nicely tho. We currently use a pixel turf var stored on the light source to do distance calculations. This is the turf we pretend the light source is on for visuals, most often used to make wall lights work nice. The trouble is it's not very granular, and doesn't always have the effect you might want. So, instead of generating and storing a pixel turf to do our distance calculations against, we store x and y offset variables. We use them to expand our working range and sheet size to ensure things visually make sense, and then offset any positions by them. I've added a way for sources to have opinions on their offsets too, and am using them for wall lights. This ensures the angle calculations don't make the wall behind a light fulldark, which would be silly. ### Debug Tool? In the interest of helping with that core problem, lights being complex to display, I've added a prototyping tool to the game. It's locked behind mapping verbs, and works about like this. Once the verb is activated, it iterates over all the sources in the world (except turfs because those are kinda silly), outlining and "freezing" them, preventing any future changes. Then, it adds 3 buttons to the owners of a light source.  The first button toggles the light on and off, as desired. The third allows you to move the source around, with a little targeting icon replacing your mouse The second tho, that's more interesting. The second button opens a debug menu for that light  There's a lot here, let's go through it. Bit on the left is a list of templates, which allow you to sample existing light types (No I have no idea why the background is fullwhite, need to work on that pre merge) You can choose one by clicking it, and hitting the upload button. This replaces your existing lighting values with the template's, alongside replacing its icon and icon state so it looks right. There are three types as of now, mostly for categorization. Bar, which are the larger typically stronger lights, Bulb, which are well, bulbs, and Misc which could be expanded, but currently just contains floor lights. Alongside that you can manually edit the power, range, color and angle of the focused light. I also have support for changing the direction of the light source, since anything that uses directional lighting would also tie light dir to it. This isn't *always* done tho, so I should maybe find a way to edit light dir too. My hope is this tool will allow for better concepting of a room's lights, and easier changing of individual object's light values to suit the right visuals. ### Lemon No Why What Ok so I applied angle lights to bars and bulbs, which means I am changing the lighting of pretty much every map in the codebase. I'm gonna uh, go check my work. Alongside this I intend to give lighting some depth. So if there's room to make a space warmer, or highlight light colors from other sources, I will do that. (Images as examples)  I also want to work on that other goal of mine, making breaking lights matter. So I'll be doing what I can to ensure you only need to break one light to make a meaningful change in the scene. This is semi complicated by one light source not ever actually reaching fullbright on its own, but we do what we must because we can.  I'm as I hope you know biased towards darker spaces, I think contrast has vibes. In particular I do not think strong lights really suit maintenance. Most of what is used there are bulbs, so I'm planning on replacing most uses with low power bulbs, to keep light impacts to rooms, alongside reducing the amount of lights placed in the main tunnels  **If you take issue with this methodology please do so NOW**, I don't want to have to do another pass over things. Oh also I'm saving station maps for last since ruins are less likely to get touched in mapping march and all. ### Misc + Finishing Thoughts Light templates support mirroring vars off typepaths using a subtype, which means all the templates added here do not require updating if the source type changes somehow. I'd like to expand the template list at some point, perhaps in future. I've opened this as a draft to make my intentions to make my changes to lights known, and to serve as motivation for all the map changes I need to do. ### Farish Future I'm unhappy with how we currently configure lights. I would like a system that more directly matches the idea of drawing falloff curves, along with allowing for different falloffs for different colors, alongside extending the idea to angle falloff. This would make out of engine lighting easier, allow for nicer looking lights (red to pink, blue to purple, etc), and improve accessibility by artists. This is slightly far off, because I have other obligations and it's kinda complicated, but I'd like to mention it cause it's one of my many pipedreams. ## Changelog 🆑 add: Added angle lighting, applies it to most wall lights! add: Adds a lighting prototyping tool, mappers go try it out (it's locked behind the mapping verb) /🆑 --------- Co-authored-by: MMMiracles <lolaccount1@hotmail.com> |
||
|
|
06ca7a4481 |
Hud screens now set hud owner in Initialize. (#76772)
## About The Pull Request Adds an arg in huds' screens to add the hud owner in the Initialize, instead of manually setting it every time we need to. This is already done in ``New()`` for lobby screens, which I left intact as lobby screens are used for new players, and are given out before atoms are Initialized. Everything else, however, uses Initialize, so it does not mess with any other args in their own Initializes (like the Escape menu). This also allows us to set the screens' HUDs as a private var, to ensure this won't be messed with in the future. Lastly I replaced instances of ``client`` with ``cannon_client`` to be consistent with a lot of other parts of hud code. ## Why It's Good For The Game Huds are easy to break when they do not have a hud owner, and for something as important as that I believe it should be something you opt-out of when you don't want it, rather than something you opt-into by manually setting hud owner every time. This cuts down on a lot of copy paste in hud code for humans, aliens, etc. ## Changelog 🆑 refactor: Huds now have their hud owner set in Initialize /🆑 |
||
|
|
fb10121022 |
Icons folder cleaning wave two (#76788)
## About The Pull Request Further continous organizing and cleaning the Icons folder. There are still some minior nitpicks left to do, but I reached my daily sanity expenses limit again, and the faster these get in the less issues for both me and others later. Also cleans some mess I caused by my blindness last PR. ## Why It's Good For The Game Saner spriters = better sprites |
||
|
|
a373b4cb08 |
Icon folder cleaning wave one (#76703)
## About The Pull Request Due to a mental breakdown caused by unfathomable abomination that is icons folder, I swore to myself to one day clean it. Today is kind of that day. Been at it for around 6, you gotta understand I need a rest. I tracked most changes in descriptions of commits if you are looking for details. ## Why It's Good For The Game Saner spriters make better sprites. And also, just helps keep track of things. ## Changelog 🆑 image: added sprites for different variants of scrolls. image: modified couple posters with ghost pixels. /🆑 --------- Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com> |
||
|
|
755fa4db6d |
Loads Away Missions for Unit Testing (#76245)
## About The Pull Request
Hey there,
A pretty bad bug (#76226) got through, but it was fixed pretty quickly
in #76241 (
|
||
|
|
596ca8b6d4 |
Fixes and includes clothing_under_armor_subtype_check.dm in the unit tests. (#76351)
## About The Pull Request See #76345 (which said: Unit test clothing_under_armor_subtype_check is unticked in _unit_test.dm and also would fail if it was ticked It's not included, it doesn't run Even if it would run, it's currently doing an istype when it should be doing an ispath, so it'd fail) ## Why It's Good For The Game This will fix #76345. ## Changelog N/A |
||
|
|
b7ac832cd2 |
Adds wound armor to ALL jumpsuits that were missing it (#75956)
## About The Pull Request Adds wound armor to ALL jumpsuits that were missing it. Every jumpsuit, by default, has 5 wound armor. However, because for some godforsaken reason armor datums don't use subtypes (seriously, the fuck?), the vast majority of jumpsuits weren't updated to have anything in case they overrode the base armor. This includes critical oversights such as any nonstandard jumpsuit meant to be armored (Tracksuits, turtlenecks, admin suit, tgmc suit). This is especially critical a problem on nuclear operatives, who face a lot of combat every round and need that wound armor. Any nonstandard jumpsuit that also protects from departmental hazards doesn't recieve the wound armor, this is seemingly reasonable with, say, medical jumpsuits, but starts to get weird when it includes engineering, botany, the RD, CMO, and CE.. Plasmaman envirosuits also don't by default. This may or may not be on purpose but I added it on them just in case. Armored jumpsuits that didn't have the wound resistance now have 10, instead of the base 5, since they're meant to be, well, armored. This might also make durathread useful for something (lol, as if) ## Why It's Good For The Game Consistency. It's very inconsistent that 'wound' armor randomly pops in and out of places ingame. It requires you to think like a space whale to figure out what's the Best Combat Uniform rather than picking what SHOULD be the right choices. ## Changelog 🆑 fix: Adds wound armor to ALL jumpsuits that were missing it /🆑 |
||
|
|
8788e48378 |
Shuttle events (#76008)
## About The Pull Request https://github.com/tgstation/tgstation/assets/7501474/a2d83ce8-eba1-42d9-a1f8-9d73f7c40b21 Adds shuttle events! Stuff can now start to happen outside the shuttle, either benign or spicy (but usually just fun to watch)! ## Why It's Good For The Game The shuttle escape sequence is an important part of the game, uniting about every player surviving player. Recently, #71906 has made the escape sequence more forgiving as well as more interesting by conditionally doubling the playing field. The area outside the shuttle is still mostly empty though, except for the few people being spaced, daredevils and the occasional epic space fight. This PR adds adds some space events to spice up the outside of the shuttle! This both gives people something too look at, making the escape sequence feel less static and more lively, as well as give people a reason to go outside and get the full experience of ~being decapitated by a meteor~ swimming with the fishes! <details> <summary>Shuttle Events</summary> **Friendly carp swarm** Spawns a group of carp that flies past the shuttle, completely friendly unless provoked. **Friendly meteors** Spawns a lot of strong meteors, but they all miss the shuttle. Completely safe as long as you don't go EVA **Maintenance debris** Picks random stuff from the maintenance spawn pool and throws it at the shuttle. Completely benign, unless you get hit in the head by a toolbox. Could get you some cool stuff though! **Dust storm** Spawns a bunch of dust meteors. Has a rare chance to hit the shuttle, doing minimal damage but can damage windows and might need inflight maintenance **Alien queen** One in every 250 escapes. Spawns a player controlled alien queen and a ripley mech. RIP AND TEAR!! Really not that dangerous when you realize the entire crew is on the shuttle and the queen is fat as fuck, but can still be fun to throw people around a bit before being torn to shreds. **ANGRY CARP** Once in every 500 escapes. Spawns 12 normal carp and 3 big carps, who may just decide to go through the shuttle or try and bust through the window if you look at them wrong. Somewhat dangerous, you could stay away from the windows and try to hide, or more likely shoot at them and weld the windows **Fake TTV** Lol **Italian Storm** Once in every 2000 rounds. Throws pasta, pizza and meatballs at the shuttle. Definitely not me going off the rails with a testing event **Player controlled carp trio** Once in every 100 escapes. Spawns three player controlled carp to harass the shuttle. May rarely be a magicarp, megacarp or chaos carp. I can't honestly see them do anything other than be annoying for 3 seconds and die There are some other admin only ones: a group of passive carps going directly through the shuttle and just being little shits, and a magic carp swarm </details> Events are selected seperately, there isn't a crazy weighting system, each just has a chance to run, and multiple could run at once. They also don't immediately trigger, so people can get settled a bit, and to make sure just waiting out the more dangerous ones is still a valid strategy. ## Changelog 🆑 add: Adds shuttle events! If shuttle escapes weren't exciting before (doubtful), they definitely are now! I'm joking it's mostly an atmosphere thing. admin: Adds an admin panel to interact with shuttle events, under the Events tab: Change Shuttle Events fix: Objects spawned in hyperspace will properly catch hyperspace drift /🆑 There's a few things I'd like to do later (another PR) (honestly anyone can do them because I suck at follow-ups), because this is too big as is: - Hijack triggered shuttle events - More events (got a lot of cool suggestions, but I'm putting most of them on hold) - Maybe stration announcements if some more dangerous ones get added - Structures appearing next to the escape shuttle??? --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
dfc3e61d1f |
Fixes ghosts being unable to click gateways to teleport through (#76070)
## About The Pull Request Ghosts can click gateways to teleport again ## Why It's Good For The Game I *believe* the "gateway visual" update made it so the bumper was unclickable, not sure why Seemed easier to move it to the gateway itself rather than be on the bumper Also made it so you cant teleport into secret gateways ## Changelog 🆑 Melbert fix: Ghosts can click on active gateways to teleport to the destination set. Doesn't work for secret gateways. /🆑 |
||
|
|
22ad858d48 |
Yeets a duplicate ambience .ogg (#75909)
## About The Pull Request Removed `ambigen2.ogg` and renamed all the generic ambience sounds after `ambigen1.ogg` to account the fact we have one less generic ambience sound file now. ## Why It's Good For The Game This will close #75010 ## Changelog N/A, it wasn't even used in the code. |
||
|
|
0c99bd28f4 |
Makes gasses use defines (#75542)
## About The Pull Request Adds defines for gasses and replaces uses I've found to instead use the defines. Can you believe I made this PR while trying to work with Xenos? This sucks! ## Why It's Good For The Game There's a lot of different uses of things like "o2" and "plasma", and they are pretty inconsistent. In some places, it's "hydrogen", in others it's "h2". In some it's "plasma", others "plasm". This unifies it all under defines so it has a less chance of breaking in the future. ## Changelog Nothing player-facing. |