mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-22 14:44:12 +01:00
4e1eb514b5a75a24a475a48afb3f8de5f3d7bace
1028 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0204ab8fdd |
Canreach refactor (#93165)
## About The Pull Request ports https://github.com/DaedalusDock/daedalusdock/pull/1144 ports https://github.com/DaedalusDock/daedalusdock/pull/1147 full credit to @Kapu1178 for the juice instead of `reacher.CanReach(target)` we now do `target.CanBeReachedBy(reacher)`, this allows us to give special behavior to atoms which we want to reach, which is exactly what I need for a feature I'm working on. ## Why It's Good For The Game allows us to be more flexible with reachability ## Changelog 🆑 refactor: refactored how reaching items works, report any oddities with being unable to reach something you should be able to! /🆑 |
||
|
|
5fbe7ce8eb |
Makes shuttle engines no longer use weakrefs (and more minorly makes them actually give engine power) (#93116)
## About The Pull Request - Makes shuttle engines no longer use weakrefs, they now use normal references - Makes shuttle engines no longer give negative initial engine power on being unconnected ## Why It's Good For The Game > Makes shuttle engines no longer use weakrefs, they now use normal references - Weakrefs are for when we care about an object but it does not care about us, shuttles literally have a list of engines. I think they do kind of care about us and are going to hard-delete if the engines aren't deleted first. So might aswell ignore the more expensive weakrefs and use normal ones instead. > Makes shuttle engines no longer give negative initial engine power on being unconnected - So imagine this: > I wrench in the engine, cool its now connected to the shuttle > I weld the engine, fun it now provides shuttle power > I unweld the engine, damn it now does not provide shuttle power > I unwrench the engine, unsyncing it. It now provides negative power because unsyncing it made it give less power again > I cry > My shuttle now needs twice the engines it needed before Not fun, so unsyncing no longer takes away engine power. ## Changelog 🆑 fix: shuttle engines no longer provide negative power to your shuttles if you unwrench them. /🆑 |
||
|
|
912daabe18 |
Assorted custom shuttle fixes (#93001)
## About The Pull Request This PR makes the following changes to code relevant to shuttle construction. - (Un)welding shuttle engines now only checks if the tool has 1 fuel, which is how much is already used in the process. - Constructed shuttle engines that were built from anchored machine frames start in the wrenched but unwelded state. - Fixes a runtime that occurs when expanding shuttles. - Fixes the incorrect logic in the shuttle blueprint UI responsible for #92986. - Makes several changes to the wording of several functions of the shuttle blueprint UI in the hopes of better conveying what each button does. ## Why It's Good For The Game Fixes #92986, as well as some other issues I may not have found in my brief search. ## Changelog 🆑 fix: You no longer need 40 welding fuel to start welding or unwelding shuttle engines, despite only consuming 1. fix: Shuttle engines constructed from anchored machine frames start in the wrenched-but-unwelded state. fix: Expanding custom shuttles from shuttle frames is once again possible without href exploitation. fix: Shuttle expansion now correctly checks for other shuttle docking ports the expanded shuttle's footprint would encroach upon. qol: Tries to make some of the buttons in the custom shuttle UI more indicative of what they actually do. /🆑 |
||
|
|
67d27ffe91 |
Accounting Glowup: Advances, Pay raises and cuts, and more (#92419)
## About The Pull Request Fixes #92188 1. The Accounting console now has a new UI <img width="757" height="486" alt="image" src="https://github.com/user-attachments/assets/0c6ce73f-ae1c-4a54-b6ba-bcc3b3232d13" /> 2. The Accounting console can now dish out advances on paychecks, giving you for full paycheck early. You can give up to 3 advances. This of course means your next paycheck is not paid out when relevant. 3. The Accounting console can now change paycheck sizes of crewmembers - up to 1.5x and down to 0.5x. ## Why It's Good For The Game - Gives the HoP some more duties, now being able to dish out money on request, reward good behavior, or punish bad behavior. ## Changelog 🆑 Melbert add: Accounting Console: New UI! add: Accounting Console: Now can give advances to crewmembers add: Accounting Console: Can now give pay raises or pay cuts add: Accounting Console: Now only printable in the security lathe add: Accounting Console: A spare board is now now found in secure tech storage. fix: Fix vending machines adding payments to audit log twice. fix: Non-crewmembers are no longer shown in the accounting console /🆑 --------- Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> |
||
|
|
dce0bf9f9a |
Correct bitwise logic for bitfield checks (#92609)
## About The Pull Request This fixes several bitfield operations that were missing parenthesis encapsulation. I noticed this problem in: - #92601 And decided to use regex to search for similar patterns which I came across in: - Move loops bypassing the `MOVELOOP_STATUS_RUNNING` status - Elastic arms mutation bypassing `ABSTRACT` object flags for picking up objects - Species radiation bypassing `HEAD_HAIR` hairstyle flags for balding - Damaged APC board status bypassing `EMAGGED` and `BROKEN` status for screentips - Shuttle cleanup code bypassing `MOVE_CONTENTS` for moving old turfs - Tram crossing signals bypassing `NORTH` and `EAST` direction checks ## Why It's Good For The Game Code behaves as intended. |
||
|
|
48fc67f7bb |
Fixes an issue where called shuttles would say "1 minutes" instead of "1 minute" (#92539)
## About The Pull Request <img width="397" height="190" alt="image" src="https://github.com/user-attachments/assets/41e915bc-6d8c-4180-83f1-12380c76554c" /> <img width="220" height="112" alt="image" src="https://github.com/user-attachments/assets/ef3aa542-e6e3-4983-8917-66009d4f843e" /> ## Why It's Good For The Game It. is good 👍 ## Changelog 🆑 spellcheck: shuttles will now say "arriving in 1 minute" instead of "1 minutes" /🆑 |
||
|
|
260960d6f4 |
Converts a bunch of time/delay vars to use time defines (#92495)
## About The Pull Request Converts as many time vars expressed in deciseconds as I could find to use time defines. ## Why It's Good For The Game Makes these values neater and more readable. ## Changelog 🆑 code: Converted a lot of time-based variables to be expressed with time defines. /🆑 |
||
|
|
703fdcc51c |
Makes shuttle docks keep track of their position to ensure that shuttle catastrophe does not cause a random crashlanding (#92492)
## About The Pull Request - Closes #92444 ## Changelog 🆑 fix: Shuttle catastrophe should no longer cause random unintended crashlandings /🆑 |
||
|
|
acf84dc9fe |
Adds an argument to cargo logging to differentiate between Materials/Mining/Bitrunning/etc. and Regular Crates. (#92366)
## About The Pull Request This adds a `data` argument to the record_feedback used in the cargo shuttle's `buy()` proc, so that when we parse the data on superset, we have an additional field to filter by to better represent how some of these personal orders are being compared against each other. ## Why It's Good For The Game Namely, I've been trying to get my data together again to start writing some design docs and get to fixing some issues again, and something's been bothering me about how the superset data was being collected on cargo crate purchases, so I've added an extra field to be able to better sort between the collected data and better represent the different methods of personal orders available via cargo, so we can make better decisions about the collected data. ## Changelog No player facing changes. |
||
|
|
6d23cc2781 |
Deletes knockdown while buckled from shuttle movement (#92132)
## About The Pull Request Deletes the knockdown part of "on shuttle move while buckled", leaves just immobilize. ## Why It's Good For The Game I added this not long ago but it didn't really end up working as I expected and causes issues like randomly losing your cigarette during shuttle launch, so... eh. It can go. ## Changelog 🆑 Melbert del: If buckled during a violent shuttle launch, you'll no longer be knocked down + immobilized, instead just immobilized. Unbuckled effects are unchanged. /🆑 |
||
|
|
177dc73236 |
GMM correctly adjusts ordered materials with proper feedback (#92009)
## About The Pull Request - Fixes #82910 Cargo now adjusts the material market quantity & prices when the shuttle is called from the order console itself instead of adjusting it after the shuttle arrives 1 minute later. This has 2 implications - If the market crashes 1 minute after calling the shuttle i.e when it arrives, the ordered quantities are not affected because it retrieved those sheets from the market at the time of calling the shuttle from the order console - If some orders could not be satisfied because there were not enough materials at the time of calling the shuttle then instead of arriving with an empty crate a detailed summary is displayed explaining which orders could not be delivered & why, even cancelling the order if needed **a) Order adjusted**  **b) Order adjusted & cancelled**  **c) Order fully cancelled**  ## Changelog 🆑 fix: ordering materials from the GMM won't result in empty crates & will display detailed feedback if there weren't enough sheets in the market /🆑 |
||
|
|
2d41569c65 |
Flatpacker & machine frame enhancements (#91752)
## About The Pull Request **1. Makes the machine creation process from both efficient.** The machine frame no longer creates & deletes the machines old component parts before moving in the new parts. It instead now passes its parts directly to the circuit boards `apply_default_parts()` meaning the old parts are never created and the new ones get applied directly. This also mean it does not have to again call `RefreshParts()` as the machines `Initialize()` proc will do that for us by default so the performance is just faster now. Flatpack box also benefits from this and it will need it as stated below - Fixes #86514. As the circuit board is passed to the machine's `Initialize()` proc during reconstruction so it sets it's `all_products_free` from the board both during mapload & when player constructed from either machine frame & flatpack **2. Flatpack enhancements** - The flatpack box now passes its stored circuit board into the machine meaning any changes made like with a screw driver or such are preserved in the newly created machine rather than the board getting deleted & the machine creating the default board - Flatpacker now accept custom component parts that replaces its stored circuit board default parts. This implements https://github.com/tgstation/tgstation/pull/91670#issuecomment-2977259973 meaning instead of the vendor created from the flatpacker starting out empty it now accepts the refill canister and will package both of them together. Then during deployment that stored canister is stored back in the vendor meaning instead of starting out empty you get to carry over all your previous stock Depends on https://github.com/tgstation/tgstation/pull/91512 because of named arg conflict. Keep this drafted till that gets merged ## Changelog 🆑 qol: flatpacker now accepts custom component parts(like vendor refill canister) along with the circuit board so you can carry over your previous stock during deployment rather than starting out empty fix: flatpack boxes now passes its stored circuit board into the machine thus preserving its properties instead of creating a default board in the machine fix: vending machines reconstructed on station from circuits loaded off station(having free products) will continue to sell free products code: machine construction via flatpacker/machine frame is faster performance wise /🆑 |
||
|
|
2a5768ef10 |
Item which lets you remote control (some) shuttles (#91663)
## About The Pull Request Adds a remote which can be printed with sufficient research, or auto-linked by mapping the remote ontop of a nav console. Once linked it can send off or call the shuttle towards a home and away destination. These destinations can be changed with alt+rmb. ## Why It's Good For The Game Let people send and call their shuttle without being at the nav computer. Really useful for antags that arrive on a shuttle, so their shuttle can be safe in deepspace while they fuck about onstation. (Should pirates have this?)  ## Changelog 🆑 theOOZ, kittysmooch add: Adds the shuttle remote item unlocked with shuttle engineering research, it lets you remote control the whiteship or custom shuttles. /🆑 |
||
|
|
0675ddf6cb |
Doubles time between mail shipments and blocks mail on red / delta alert (the amount of mail is not changing don't worry) (#91869)
## About The Pull Request 1. Mail is now shipped every 2 SSeconomy ticks, rather than every SSeconomy ticks. The amount of mail per round will not change. 2. Mail is not shipped during Red or Delta alert. Mail will still continue to pile up for if the station returns to blue alert. ## Why It's Good For The Game 1. The time between cargo shipments is like five minutes. This means you get mail practically every cargo shipment, if only a few pieces. I think it's a bit spammy, so doubling time between shipments means you actually get substantial shipments of mail and you don't have to pay attention to mail constantly. 2. In the event of an emergency and the cargo shuttle has to fly back and forth for emergency supplies (like guns for a blob), being blocked because of mail is annoying. It's also reasonable from an in character perspective that they would hold your mail until the emergency is resolved. ## Changelog 🆑 Melbert qol: Mail is now shipped every 10 minutes rather than every 5 minutes. The amount of mail remains unchanged (so you get 1 crate with 6 mail instead of 2 crates with 3 mail each). qol: Mail is no longer shipped while the station is on red alert - mail held will be sent if the station returns to blue alert. /🆑 |
||
|
|
4c277dc572 |
Dynamic Rework (#91290)
## About The Pull Request Implements https://hackmd.io/@tgstation/SkeUS7lSp , rewriting Dynamic from the ground-up - Dynamic configuration is now vastly streamlined, making it far far far easier to understand and edit - Threat is gone entirely; round chaos is now determined by dynamic tiers - There's 5 dynamic tiers, 0 to 4. - 0 is a pure greenshift. - Tiers are just picked via weight - "16% chance of getting a high chaos round". - Tiers have min pop ranges. "Tier 4 (high chaos) requires 25 pop to be selected". - Tier determines how much of every ruleset is picked. "Tier 4 (High Chaos) will pick 3-4 roundstart[1], 1-2 light, 1-2 heavy, and 2-3 latejoins". - The number of rulesets picked depends on how many people are in the server - this is also configurable[2]. As an example, a tier that demands "1-3" rulesets will not spawn 3 rulesets if population <= 40 and will not spawn 2 rulesets if population <= 25. - Tiers also determine time before light, heavy, and latejoin rulesets are picked, as well as the cooldown range between spawns. More chaotic tiers may send midrounds sooner or wait less time between sending them. - On the ruleset side of things, "requirements", "scaling", and "enemies" is gone. - You can configure a ruleset's min pop and weight flat, or per tier. - For example a ruleset like Obsession is weighted higher for tiers 1-2 and lower for tiers 3-4. - Rather than scaling up, roundstart rulesets can just be selected multiple times. - Rulesets also have `min_antag_cap` and `max_antag_cap`. `min_antag_cap` determines how many candidates are needed for it to run, and `max_antag_cap` determines how many candidates are selected. - Rulesets attempt to run every 2.5 minutes. [3] - Light rulesets will ALWAYS be picked before heavy rulesets. [4] - Light injection chance is no longer 100%, heavy injection chance formula has been simplified. - Chance simply scales based on number of dead players / total number off players, with a flag 50% chance if no antags exist. [5] [1] This does not guarantee you will actually GET 3-4 roundstart rulesets. If a roundstart ruleset is picked, and it ends up being unable to execute (such as "not enough candidates", that slot is effectively a wash.) This might be revisited. [2] Currently, this is a hard limit - below X pop, you WILL get a quarter or a half of the rulesets. This might be revisited to just be weighted - you are just MORE LIKELY to get a quarter or a half. [3] Little worried about accidentally frontloading everything so we'll see about this [4] This may be revisited but in most contexts it seems sensible. [5] This may also be revisited, I'm not 100% sure what the best / most simple way to tackle midround chances is. Other implementation details - The process of making rulesets has been streamlined as well. Many rulesets only amount to a definition and `assign_role`. - Dynamic.json -> Dynamic.toml - Dynamic event hijacked was ripped out entirely. - Most midround antag random events are now dynamic rulesets. Fugitives, Morphs, Slaughter Demons, etc. - The 1 weight slaughter demon event is gone. RIP in peace. - There is now a hidden midround event that simply adds +1 latejoin, +1 light, or +1 heavy ruleset. - `mind.special_role` is dead. Minds have a lazylist of special roles now but it's essentially only used for traitor panel. - Revs refactored almost entirely. Revs can now exist without a dynamic ruleset. - Cult refactored a tiny bit. - Antag datums cleaned up. - Pre round setup is less centralized on Dynamic. - Admins have a whole panel for interfacing with dynamic. It's pretty slapdash I'm sure someone could make a nicer looking one.   - Maybe some other things. ## Why It's Good For The Game See readme for more info. Will you see a massive change in how rounds play out? My hunch says rounds will spawn less rulesets on average, but it's ultimately to how it's configured ## Changelog 🆑 Melbert refactor: Dynamic rewritten entirely, report any strange rounds config: Dynamic config reworked, it's now a TOML file refactor: Refactored antag roles somewhat, report any oddities refactor: Refactored Revolution entirely, report any oddities del: Deleted most midround events that spawn antags - they use dynamic rulesets now add: Dynamic rulesets can now be false alarms add: Adds a random event that gives dynamic the ability to run another ruleset later admin: Adds a panel for messing around with dynamic admin: Adds a panel for chance for every dynamic ruleset to be selected admin: You can spawn revs without using dynamic now fix: Nuke team leaders get their fun title back /🆑 |
||
|
|
57456921a4 |
Makes vendors created from flatpacks start empty to prevent duping (#91670)
## About The Pull Request Flatpacks pass an arg into ``on_construction`` which makes vendors wipe their inventory to prevent duping by repeatedly flatpacking a vendor to refill its inventory. Closes #91615 ## Changelog 🆑 fix: Flatpacked vendors start empty to prevent duping /🆑 |
||
|
|
326dec95ad |
Fix shuttle blueprint runtime spam (#91718)
## About The Pull Request `shuttle_expand_check` asserts it must be passed a shuttle, but it doesn't pass it a shuttle. |
||
|
|
3368d30a20 |
Unbuckles new arrivals from the seats of the arrival shuttle + a bugfix (#91708)
## About The Pull Request Makes it so new arrivals automatically unbuckle from the seat when the arrival shuttle lands on station, this also fixes some logic from #91504 that actually makes the intended "If you're buckled on a shuttle which has "knockdown" force, you won't be paralyzed - instead, just knocked down and immobilized for a short period (so you can still use your hands / act)." from that PR work ## Why It's Good For The Game New players should be able to just waddle away from the arrival shuttle to actually play the game instead of being stuck on their seat trying to find their seatbelt for 30 minutes (this situation has actually happened before). ## Changelog 🆑 qol: With Nanotrasen's brand new Auto-Seats™, late crew members will now automatically unbuckle from their seats when the arrival shuttle arrives at the destination! fix: Leaving your seat too early on a shuttle with a knockdown force will now properly immobilize and knockdown you as intended. /🆑 |
||
|
|
ed7e92bf77 |
Fixes war ops being able to launch shuttle before 20 minutes passed. (#91687)
Fixes the lockdown timer counting from server start instead of challenge start. ## Why It's Good For The Game I'm not sure it's actually good, but balance should be explicit not confluence of bugs. |
||
|
|
0343a41b42 |
Handrails, visual shuttle buckles, and buckling feedback changes (#91504)
## About The Pull Request 1. Adds Handrails, currently mapper only. [Sprite ported from Baystation](https://github.com/Baystation12/Baystation12/blob/dev/icons/obj/structures/handrail.dmi). This is just a small fluff object designed to be put onto shuttles. Players can click on it (or mouse drop) to buckle to it (grab it), keeping them from being thrown around on shuttle launch.  2. Adds Shuttle chair restraints. [Sprite ported from Aurora](https://github.com/Aurorastation/Aurora.3/blob/master/icons/obj/structure/chairs.dmi), though altered a decent amount. They flip up with no one seated and flip down when someone buckles, but they have no gameplay effects (ie, they don't require a do-after, they don't block hands, etc etc)   3. Some objects now have unique feedback messages for buckling - you sit on chairs, or lay down on beds. This message will change depending on if the mob is restrained, so it's a bit more obvious when someone is tied to a chair vs just sitting down.  4. If you're buckled on a shuttle which has "knockdown" force, you won't be paralyzed - instead, just knocked down and immobilized for a short period (so you can still use your hands / act). ## Why It's Good For The Game 1. Gives mappers some additional fluff for shuttles, especially if their shuttle has knockdown force. 2. Adds muh immersion to shuttle rides. Just a flavor thing. 3. Adds muh immersion to sitting down at the bar. Again just a flavor thing. 4. I did this to make handrails work, but I can find an alternate workaround if so desired. ## Changelog 🆑 Melbert, sprites from Baystation / Aurorastation add: Adds grabbable handrails (mapper only for now) image: Adds a visual effect to buckling to shuttle seats qol: Different objects have different chat messages for buckling. qol: If you're buckled in on a violent shuttle ride, you will be knocked down and immobilized, but not fully stunned (ie: can still use hands). /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
3382e1b5f1 |
Removes redundant vars from custom shuttle consoles + spawned custom shuttle consoles can be disassembled (#91399)
## About The Pull Request Removes some redundant var definitions from the custom shuttle flight console. Also defines the circuit var for custom shuttle flight consoles, allowing maploaded/adminspawned instances of them to be disassembled. ## Why It's Good For The Game Cutting down on redundant definitions is generally a good thing. Also makes maploaded/adminspawned shuttle consoles work like the constructed ones. ## Changelog Redundant definition removal isn't a player-facing change. 🆑 fix: If you find a custom shuttle flight control console that was created by an admin or loaded as part of the map, you can dismantle it with a screwdriver. /🆑 |
||
|
|
9b54dbf974 |
Adds usb support to advanced camera consoles (#91235)
## About The Pull Request This PR adds usb functionality to advanced camera consoles. The advanced camera console component gets the last valid position viewed from the console, which is usually the current viewed position, unless you move the view into static. The advanced camera target intercept outputs the position you left/right click (except shift-clicking), and what you clicked on. This only works for atoms the camera can actually see, even if you somehow glitch your way into not seeing static on your client. Equipment action components on circuits attached to a camera console will add their actions to be used from the console. ## Why It's Good For The Game Expands the use cases for the advanced camera console, providing a means to extend their functionality, as well as a potentially powerful source of input data for circuit users able to acquire illegal tech (or get the board from a space ruin). ## Changelog 🆑 add: Advanced camera consoles now have usb ports. Connected circuits can get the position the camera is viewing, get the location of targeted entities, and provide the console with actions that the user can activate. /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
29664e618e |
Immobile shuttles will not appear launchable on flight control consoles. (#91275)
## About The Pull Request Custom shuttles introduced a weird edge case in shuttle code where the flight control console shows the shuttle as able to be launched, despite a lack of engines making it unable to move. This fixes that edge case by specifically showing the shuttle as immobile in the console. ## Why It's Good For The Game I tried to launch a custom shuttle but I couldn't figure out why it wasn't moving. This fix at least lets players know that it won't launch when it can't. ## Changelog 🆑 fix: Shuttle flight control computers will show you when the linked shuttle cannot move. /🆑 |
||
|
|
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) /🆑 |
||
|
|
e698c965b3 |
Fix map_export admin verb not saving objects properly (#90998)
## About The Pull Request When using the `map_export` admin verb the following things are fixed: - All objects density, anchored, opacity, atom_integrity, and resistance_flags vars are saved - Multi-tile objects being spammed on all tiles the sprite reaches - Dirt decals error icon - Airlocks error icon and to save welded state - Dark Wizard Simple Mobs error icon - Closets to save welded, open, and locked states - Air alarms to save name - Air scrubbers/vents to save name and welded states - APCs to save name, charge, cell, lighting, equipment, and environmental states - APCs spawning a duplicated terminal underneath it when one already exists - SMES to save charge, input, and output states - Holodecks to revert any holodeck turfs to the empty turf and skip saving any hologram items - Photos and Paintings error icons - Bloody Footprints error icons - False Walls error icons - Docking Ports runtimes because the map template var would change - Effects (lasers, portals, beams, sparks, etc.) saving when they should be omitted I would have loved to get `component_parts` to save for machines and turf decals, but perhaps that is for another day since it requires complicated solutions. Here are some before and after pictures:     ## Why It's Good For The Game Better map saving code. ## Changelog 🆑 fix: Fix `map_export` admin verb not properly saving a massive amount of objects. /🆑 |
||
|
|
80ec197457 |
Fixes USB ports/cables erroneously detaching when shuttles move (#91043)
## About The Pull Request When a shuttle moves, usb ports now wait for the shuttle to finish moving all of its contents to determine whether they should detach from whatever they are connected to. This PR also adds a new signal whose registered handlers can affect what gets moved when part of a shuttle moves, but until a handler for that signal actually needs to do so, that behavior only really matters in the sense that it is now exposed to lua scripting. |
||
|
|
709df7adf5 |
Multiple custom shuttle fixes (+one qol tweak) (#90898)
## About The Pull Request This PR adds four small fixes: - Custom shuttle docking consoles no longer runtime at the world border - Custom shuttle docking consoles are no longer blocked by where the linked shuttle currently is - Shuttle blueprints don't runtime and bluescreen while on whiteships - Custom shuttles don't cause a divide-by-zero runtime when installing engines for the first time (and are calculated correctly) And one major QOL tweak: - Shuttle frames are now datums which can track their own size, as well as track which custom shuttles are adjacent to them. This allows shuttle blueprints to display the size of the shuttle that will be built or expanded, as well as much more performantly report issues that would prevent shuttle construction or expansion. ## Why It's Good For The Game I've been informed of several issues and nice-to-haves regarding custom shuttles, and caught several other issues in the process of implementing the requested changes. ## Changelog 🆑 fix: Shuttle blueprints don't error out when opening them while on non-custom shuttles. fix: Custom shuttles calculate their engine count correctly, no longer lagging behind by one engine (un)installation. fix: Custom shuttle docking consoles are no longer blocked by where the linked shuttle currently is. qol: Shuttle blueprints now show you how large a shuttle frame is, along with any issues preventing you from building or expanding a shuttle using said frame. /🆑 |
||
|
|
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. /🆑 |
||
|
|
b626509622 |
[MDB IGNORE] Implements an automatic nearstation area tiler (#90660)
## About The Pull Request Space turfs will now assign the nearspace area to themselves whenever they're replaced, or lattice or catwalks are placed ontop of them. This fixes lighting missing from player-created space structures until they create a custom area, and resolves a similar issue with shuttle ceilings. To track this we had ceilings spawn the "shit be fucked" marker whenever they were created outside of nearspace, which is now gone. Shuttles bypass this autotiler for non-space areas, because they'd replace it anyways. **This does not work on mapload to cut down on init times**, mappers still have to place nearstation areas on their maps where they place some sort of a structure in space. They do not have to do this for shuttle landing areas now, however. Closes #84597 ## Why It's Good For The Game Shit be fucked markers created by ceilings are a god awful solution because we have player-controlled shuttles with custom positioning, so every time you moved a shuttle to a bottom level of any multiz map, you get a bunch of them on your shuttle's roof. ## Changelog 🆑 fix: Fixed "shit be fucked" errors and missing lighting on shuttle ceilings docked to bottom z levels of multiz maps /🆑 |
||
|
|
2762e359ea |
Fix some wacky shuttle pipe interactions (#90721)
## About The Pull Request Fixes #90648 And also fixes that pipes would often make nonsensical connections during shuttle rotations Zero/negative volume: Caused by set_init_directions fighting with code elsewhere for how big pipes should be. When the shuttle moved, init_directions would get called again, updating the pipe (but not the pipenet) volume to 140. Later, update_pipe_icon uses that modified volume as the "old" volume when calculating how much volume to remove from the pipenet, so frequently removes too much. Incorrect connections: There's two steps when pipes go through a shuttle transition, first shuttleRotate, then afterShuttleMove, where connections are made. However, afterShuttleMove is called before shuttleRotate has been called for every atom, causing connections to happen to devices that have yet to be rotated away. Changing to use lateShuttleMove seems to fix this issue, as it is only called once the 'rotate' step has fully completed. ## Why It's Good For The Game i can't breathe without my air ## Changelog 🆑 fix: Shuttle atmos volumes should no longer become negative fix: Shuttle atmos devices will no longer make illegal connections during rotations /🆑 |
||
|
|
9bd45e2f3a |
Part 3: Storage Improvements (#90476)
Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
4e4cd7667c |
Allows you to put people through wooden tables, like a wrestling match. (#89826)
## About The Pull Request <img width="161" alt="image" src="https://github.com/user-attachments/assets/af923130-b928-4a66-a428-619f37f48616" /> Simply put, wooden tables (aka, both wood legs and top) have a 1 in 5 chance to break like glass ones when you stand on them. ## Why It's Good For The Game More potential for funny, but harmless chaos is always nice, and given wrestling is probably the most commonly played sport in this game, being able to do tables matches felt fitting - but please do not let this pull request distract you from the fact that in 1998, The Undertaker threw Mankind off Hell In A Cell, and plummeted 16 ft through an announcer's table. ## Changelog 🆑 Webcomicartist add: People shoved onto wooden tables now have a 1 in 3 chance to break it, for all your wrestling needs - but please do not let this pull request distract you from the fact that in 1998, The Undertaker threw Mankind off Hell In A Cell, and plummeted 16 ft through an announcer's table. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
0893f4f945 |
Part 2: Storage Improvements (#90390)
## About The Pull Request Continuation of #90365 - Formatted some usages of `set_holdable()` to be more readable - `exception_hold` list now stores its values inside ` GLOB.cached_storage_typecaches`. This means we don't have to manage a static typecache list per storage but can share the value across all storages making memory management slightly more efficient - Monkey cube boxes now cannot hold gorilla cubes cause that would make gorilla cube boxes obsolete also now gorilla cube boxes can now only hold gorilla cubes & not general monkey cubes(which gorilla cubes is a subtype of) cause that would make monkey cube boxes obsolete. We are specializing each box for that specific use case ## Changelog 🆑 code: further improved storage code fix: monkey cube boxes can no longer hold gorilla cubes & vice versa /🆑 |
||
|
|
6b83a91956 |
Revert "Refactor for storage initialization & organization (#89543)" (#90332)
## About The Pull Request Reverts the storage initialization refactor and all subsequent related PRs. The original PR is below our standards both for code quality and testing, and is majorly flawed at its core. This has been discussed with other maintainers and headcoder(s?) over on discord. A lot of changes from the PR could be brought over later, but in its current state it should not have been merged. - Closes #90322 - Closes #90313 - Closes #90315 - Closes #90320 - Closes #90312 - Closes #90344 ## Why It's Good For The Game This PR causes a series of major issues which cannot be resolved without either completely rewriting a lot of the original PR, or bad code. Not matching our standards is grounds for not merging a PR, and the fact that a PR should not have been merged is a reason for a revert. ## Changelog 🆑 fix: Fixed a series of storage-related bugs caused by a refactor PR. /🆑 |
||
|
|
0f57a23830 |
Refactor for storage initialization & organization (#89543)
## About The Pull Request A Huge chunk of changes just comes from moving existing storage code into new files & seperating `atom_storage` code into its own subtype under the already existing `storage/subtypes` folder. With that the changes in this PR can be organized into 3 categories. **1. Refactors how `/obj/item/storage/PopulateContents()` initializes storages** - Fixes #88747 and every other storage item that has a similar variant of this problem The problem with `PopulateContents()` is that it allows you to create atoms directly inside the storage via `new(src)` thus bypassing all the access restrictions enforced by `/datum/storage/can_insert()` resulting in storages holding stuff they shouldn't be able to hold. Now how this proc works has been changed. It must now only return a list of items(each item in the list can either be a typepath or a solid atom or a mix of them in any order) that should be inserted into the storage. Each item is then passed into `can_insert()` to check if it can fit in the storage. If your list contains solid atoms they must be first moved to/Initialized in nullspace so `can_insert()` won't count it as already inserted. `can_insert()` has now also been refactored to throw stack traces but explaining exactly why the item could not fit in the storage thus giving you more debugging details to fix your stuff. A large majority of changes is refactoring `PopulateContents()` to return a list instead of simply creating the item in place so simple 1 line changes & with that we have fixed all broken storages(medical toolbox. electrical toolbox, cruisader armor boxes & many more) that hold more items they can handle **2. Organizes initialization of `atom_storage` for storage subtypes.** All subtypes of `/obj/item/storage` should(not enforced) create their own `/datum/storage/` subtype under the folder `storage/subtypes` if the default values are not sufficient. This is the 2nd change done across all existing storages Not only does this bring code cleanliness & organization (separating storage code from item code like how `/datum/wire` code is separated into its own sub folder) but it also makes storage initialization slightly faster (because you are not modifying default values after `atom_storage` is initialized but you are directly setting the default value in place). You now cannot & should not modify `atom_storage` values inside `PopulateContents()`. This will make that proc as pure as possible so less side effects. Of course this principle is not enforced and you can still modify the storage value after `Initialize()` but this should not be encouraged in the future **3. Adds support for automatic storage computations** Most people don't understand how `atom_storage` values work. The comment here clearly states that https://github.com/tgstation/tgstation/blob/55bbfef0da70d87455ca8d6fd5c95107eb8dbefb/code/game/objects/items/storage/toolbox.dm#L327-L329 Because of that the linked issue occurs not just for medical toolbox but for a lot of other items as well. Which is why if you do not know what you doing, `PopulateContents()` now comes with a new storage parameter i.e. `/datum/storage_config` This datum allows you to compute storage values that will perfectly fit with the initial contents of your storage. It allows you to do stuff like computing `max_slots`, `max_item_weight`, `max_total_weight` etc based on your storage initial contents so that all the contents can fit perfectly leaving no space for excess. ## Changelog 🆑 fix: storages are no longer initialized with items that can't be put back in after taking them out refactor: storage initialization has been refactored. Please report bugs on github /🆑 |
||
|
|
3b73af32c5 |
Table frame interaction refactor (#89880)
## About The Pull Request So I was looking for `attackby(...)` instances to kill and, hey look, table frames- oh what the fuck is this. Oh why does this have the same checks like five times, across the parent type and subtypes. So this pr's primary point is to refactor the table frame `attackby(...)` into `item_interaction(...)`, and by extension lower the amount of weird `attackby(...)` override jank going on with them. Instead of having all of the subtypes define their own almost exactly the same table construction interactions, we use a single generic interaction chain and add a new `get_table_type(...)` proc to let subtypes override what tables to construct for what stacks. We also move the assigning of frame-and-stack-related things to the actual table types themselves, instead of specifying all these interactions on the frame. We also add screentips for deconstruction and table construction, again using the `get_table_type(...)` proc so screentips can differentiate between which stacks can and can't make a table for our table without needing to change the screentips manually for the subtypes. Beyond that is mostly generic clean-up. I'm a bit icky on my implementation of `/obj/item/stack/proc/get_table_type()`, because of hardcoding for `/obj/structure/table/greyscale`, but I think it's better than the alternatives. This lets us use the old method of letting all `/obj/item/stack/sheet` subtypes use the generic material table, but limit it to working as long as they define a `material_type`. I feel it's better than letting broken tables exist, needing to hardcode it on the table frame, or needing to expect people to add the generic material table `table_type` whenever they add a `material_type` (no one would do this). ## Why It's Good For The Game Screentips good 👍 Less jank encountered good. Specifically the inability to deconstruct table frames on right click when tables can be deconstructed on right click has thrown me off so many times it's wild. ## Changelog 🆑 refactor: Refactored table frame interactions, please report any issues. fix: You can no longer make material-less material tables out of certain items. fix: Fancy tables remember which carpet was used to make them, and no longer magically transmute carpets into simpler types. fix: You can no longer stack abductor table frame-using tables specifically. qol: Added screentips for deconstructing table frames and constructing tables out of them if the material you're holding can do so. qol: Table frames can now also be deconstructed on right click for parity with tables, in addition to left click. qol: Table frame interactions use balloon alerts. /🆑 |
||
|
|
013de1fb80 |
Custom Shuttle QOL tweaks (and a fix to a mild shuttle engine exploit) (#89774)
## About The Pull Request This PR adds some tweaks to make custom shuttles a bit easier to use, and more useful. - The station blueprints can be used to allow/forbid custom shuttle docking in station/custom areas. Custom areas allow shuttle docking by default, while station areas (apart from the asteroid) forbid it. - A station area that allows shuttle docking can have a shuttle built/expanded in it, as long as the area's APC isn't contained within the frame used to construct/expand the shuttle. - A shuttle frame does not need to contain the entirety of a custom area, unless that frame contains the area's APC. If the frame doesn't contain the entirety of the custom area, that section of the frame becomes part of the default area, instead of a separate area. - Custom shuttles will go off into the sunset at the end of the round, as long as they have a welded engine. - I think I saw a bug that caused engines to contribute twice the intended power to the attached shuttle, possibly creating an exploit in the case where the engine was broken while welded. I fixed that. - Custom shuttle docking computers can cross over to any z-level adjacent to the shuttle's z-level (or vertically-connected z-levels, because docking computers can traverse stacked z-levels freely). This is based on the new `zlink_range` var on all shuttle docking consoles, which can be var-edited to provide the same functionality. - Shuttle engines constructed from circuits now link to shuttles without needing to be unanchored and reanchored. ## Why It's Good For The Game The tweaks to shuttle construction and docking serve to address several gripes I heard about players not being able to build/dock custom shuttles in station areas. The means to do this have been locked behind possession of the station blueprints. I don't see what problem there would be with allowing custom shuttles to leave the station at the end of the round, but I could lock it behind a particular action (antag-exclusive or otherwise). Custom shuttles don't quite have as much utility if you have to manually travel to z-levels to drop off gigabeacons. Jumping to adjacent z-levels one at a time is a bit more useful for space exploration. ## Changelog 🆑 add: The station blueprints can be used to toggle whether custom shuttles can be built/expanded/docked within station areas. qol: Custom areas do not have to be completely contained within shuttle frames, as long as the APC isn't attached to the frame. add: Custom shuttles with functioning engines will fly off into the sunset when the emergency shuttle leaves. add: Custom shuttle navigation computers can view space levels adjacent to the one the shuttle is currently docked at. fix: Constructed shuttle engines no longer contribute twice as much engine power to shuttles, nor can they be used to add unlimited shuttle power. fix: Constructed shuttle engines now connect to shuttles when build, rather than needing to be unachored and then reanchored. /🆑 |
||
|
|
cbc3350224 |
Custom Shuttles Redux: Allows for the construction of custom shuttles. (#88493)
## About The Pull Request This incredibly detailed PR adds the ability to construct custom shuttles, which function similarly to whiteships. To construct a custom shuttle, you need the following items: - Shuttle frame rods These rods can be hand-crafted by using 5 rods on 1 sheet of titanium, or printed at a sci/engi/cargo lathe after researching the Shuttle Engineering techweb node. Lattices built with these rods, and catwalks/floors built on top of these lattices, are valid for shuttle construction. - Shuttle engines Did you know shuttle engines have boards that weren't normally obtainable? Well the board for one specific engine type is now available from the sci/engi/cargo lathe after researching Shuttle Engineering. Of course, the old options remain. You can steal engines from other shuttles, including escape pods (it's not like engines are strictly necessary for *those* shuttles anyways). Alternatively, the shuttle engine supply pack is no longer locked behind the purchase of the BYOS. - Flight Control & Navigation Console boards These boards are printed at the sci/engi/cargo lathe after researching the Shuttle Engineering techweb node. If built on a custom shuttle, it will automatically link to it, unless the shuttle already has such a console. If built on a turf that is valid for custom shuttle construction, it will automatically link to any shuttle constructed from or expanded with that turf. - Shuttle blueprints Standard shuttle blueprints can be printed at the sci/engi/cargo lathe after researching the Shuttle Engineering techweb node. A cyborg upgrade granting access to a shuttle blueprint database can be printed at the exofab after researching the aforementioned node. Crude shuttle blueprints can be crafted by hand with a sheet of paper and either a rainbow crayon or 10 uses of a blue crayon or spraycan. If Science won't research the tech, you can also buy a goody pack containing a flight control board, a docker board, two engine boards, and a set of shuttle blueprints for 1200 credits, if you have aux base access. A shuttle can be constructed atop any continuous region of turfs containing a shuttle rod lattice or a catwalk/tile built upon such. Currently, this region cannot intersect any area other than space, lavaland, the icemoon, or the station asteroid. Preexisting custom areas can be included in the construction of the shuttle, but only if every turf in the custom area is valid for shuttle construction. In the shuttle blueprint UI, you can toggle a visualizer to display which turfs fulfill all of the aforementioned conditions. The following video goes through the basic process of shuttle construction. https://github.com/user-attachments/assets/3283422e-a201-4978-972d-67527b5df4ee The blueprint used to construct the shuttle will be its master blueprint. The master blueprint can be copied to other blank shuttle blueprints (or to engiborgs with the shuttle database upgrade), and allows the holder to perform a christening ritual on the shuttle to rename it. If a shuttle's master blueprint ceases to exist, a blank blueprint can be linked to the shuttle to become the new master blueprint, or an existing blueprint associated with that shuttle can be promoted to the master blueprint. Once constructed, the following options are available from the blueprint UI to modify it: - Create Area Convert a continuous open area of the shuttle into a new area with the name written in the above text input. This operates very similarly to regular area construction. - Rename Area Change the name of the area you're currently in to the name written in the above text input. - Expand Area Add a continuous open area of the shuttle to the neighboring area selected from the dropdown to the left. This operates like regular area expansion. - Expand Shuttle Expand a shuttle with valid frame turfs as defined above. These turfs must be physically connected to the shuttle. - Remove Area Remove an area, giving its tiles to the default shuttle area. - Cleanup Empty Space (implemented after the above video was recorded) Removes all completely empty turfs from the shuttle. If all the turfs in one of the shuttle's areas were removed, that area is deleted. If absolutely no turfs of the shuttle remain, the shuttle itself is deleted. Due to the ability for this action to delete the shuttle, only the master blueprint can do it. As mentioned above, the shuttle's master blueprint can be used to christen its associated shuttle. To do this, fill a glass drink bottle with some amount of reagents, then hit it against one of the shuttle's walls from outside while holding the master blueprint. You will be prompted to enter a new name for the shuttle. The variety of things that can happen while inputting a new name can cause the christening rite to fail in one of several humorous ways. ### Optional (Unless specifically requested by a maintainer) Todo's - [x] A way for shuttle circuits to be obtainable without techweb nodes - [x] A more convenient way to carry around shuttle engines or the means to deploy them - [ ] A shuttle construction guide available as a reference book - [ ] Allow boards to be linked to shuttles before construction so they can be used outside the shuttle ## Why It's Good For The Game Shuttles have been part of the sandbox for an incredibly long time, but their limited accessibility has rendered them the exclusive territory of lucky space explorers or the few antagonists who get one off the bat (nukies and pirates). Giving players the means to construct shuttles to their liking opens up a variety of possibilities for gimmicks for antags and non-antags alike. Besides the applications for antaggery and crew-sided gimmicks, this provides side content for several departments to engage with during the relatively-frequent periods of time where they have little else to do as part of their intended roles. With respect to engineering, if the station isn't actively being damaged, the supermatter is in perfect working order, and nobody is clamoring for machine upgrades, engineers have little else to resort to other than construction projects. While the BSA station goal provides an incentive for engineers to construct dedicated rooms for the cannon, it will not necessarily be available every round. Custom shuttles not only provide such a construction project to pursue, but provide the rare opportunity, as well as a very good reason, to set up an independent power network, complete with its own power source. While atmos techs have a lot to do with gas mixing and the crystallizer, they rarely get the opportunity to set up working life support systems outside of repairing the ones that get blown up. Custom shuttles will frequently start with no air, and unless the design settled upon is an open floor plan, it will have several independent chambers that cannot so easily be profused with a proper airmix by just opening a canister. Furthermore, if the air in a custom shuttle gets messed up, a proper scrubber and distro network is a significantly less tedious method of rectifying the problem than cleaning the air manually with portable scrubbers and pumps. Scientists, it can be argued, with their access to RPDs through ordnance, have similar opportunities to atmos techs, even though the act in and of itself is not exactly part of their duties. But compared to the other job content they could be working with after they've completed most of their gameplay loop, custom shuttle construction is a substantially more active endeavor. And I know how much people complain about late-game science content just being sitting around at a console and making gamer gear. Roboticists can have a part to play in this too. They can put their mech RCDs to a use other than 2D topdown Fortnite, and with the shuttle database upgrade, they can help interested cyborgs get in on the action. Cargo is yet another department known for having significant amounts of downtime during a considerable number of rounds. If every other department has gone through their initial rounds of departmental orders, and there isn't an active need for cargo to order lots of one thing or another, cargo techs have little to do besides mail (at least on the days where there **is** mail to deliver). Usually, if cargo techs do, in fact, do something as a department when not presented with more pressing duties, they order guns and other contraband. As funny as this is, there's not a lot of variety in how this behavior manifests. With custom shuttles, cargo can use their free time to plan, and execute, a unique collective expression of design sensibilities, not limited by the size and shape constraints of the cargo bay itself. ## Changelog 🆑 Y0SH1_M4S73R (with special thanks to Vect0r, whose original PR inspired the implementation of these changes) add: Shuttle blueprints, the tool used to construct and modify custom shuttles. Print a set at a science, engineering, or cargo techfab after researching Shuttle Engineering, or craft a crude set from the crafting menu. add: Shuttle blueprint database upgrade for engineering cyborgs, printable from the Exosuit Fabricator after researching Shuttle Engineering. A version of shuttle blueprints designed for use by cyborgs. add: Shuttle frame rods, usable to construct custom shuttles. Hand-craft by using 5 rods on 1 titanium sheet, or by printing them at a science, engineering, or cargo techfab after researching Shuttle Engineering. add: Custom shuttle flight control and navigation boards, printable from a science, engineering, or cargo techfab after researching Shuttle Engineering. add: Shuttle engine boards can be printed from a science, engineering, or cargo techfab after researching shuttle engineering. add: The shuttle engine supply pack is no longer locked behind the purchase of the Build Your Own Shuttle kit. add: Shuttle Construction Starter Kit goodie pack, containing a set of shuttle blueprints, flight control and navigation console boards, and two engine boards, can be purchased from cargo for 1200 credits. Requires aux base access to purchase. refactor: Shuttles now keep track of what areas are underneath each of their individual turfs, so that the areas left behind on movement are consistent with what they were beforehand. refactor: Shuttle ceilings now place themselves down as baseturfs, instead of only appearing if the turf above is open space. /🆑 --------- Co-authored-by: vect0r <71346830+Vect0r2@users.noreply.github.com> Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com> |
||
|
|
67143afff1 |
Replaces slowdown/FOV on space suits, rad/bio/bomb helmets with the new dirt component (#89497)
## About The Pull Request #87102 introduced a new clothing dirt component, which increases tint when you get spraypainted. This PR expands it to work when you are spraypainted and applies it to space helmets, gas masks and rad/bomb/bio helmets, and gives all items a fancy overlay when spraypainted/peppersprayed.   Spraypainting a person wearing an item with this component randomly applies 2-3 levels of tint, potentially blinding them until they wash their helmet or mask. Additionally, driscoll mask has lost its eye covering, and welding gas mask gained it - doesn't make sense for former to have it, and for latter to be missing it. ## Why It's Good For The Game Bomb suits and bio hoods are already extremely weak, while rad suits are super situational when there are MODsuits with none of the downsides. 90 degree FOV is extremely punishing and makes them essentially unusable. Space helmet slowdown was added because they gave pepperspray protection with no downside, which this PR brings, so there's no reason to keep it around considering how bad slowdown feels in our game. Also spraypainting someone's visor is just extremely funny to me. ## Changelog 🆑 balance: Space helmets and bio/bomb/rad hoods have lost their slowdown/FOV respectively, but now can have their visor covered by spraypaint or pepper spray. balance: Driscoll mask no longer protects your eyes, unlike welding gas mask which received said protection. /🆑 |
||
|
|
8a5898212b |
Automated Announcement System refactor (#89276)
## About The Pull Request I standardized stuff in AASs code, and all current reference to it. Also added interactions for bounty cubes, weather reports and request consoles, all of it can be changed from AASs UI. Also it's easier now to add new config entries for AAS to proceed, and it's now downstream friendly. ## Why It's Good For The Game Well, because kind of order in code and because it's funny to make custom messages for... Almost everything? BTW any entry can be blocked from ingame changes, by default you can't change Broken Arrival shuttle and Security Officer arrival announcements, how it was before. But may be we should allow it - it's an open question. ## Changelog 🆑 add: Many things now handles via AAS: Bounty Cubes, Request Consoles, Brig Cells, Vending Machines and Orion Trails alerts, Weather Reports, Cargo Order Console code: Now anyone can make their own entry for AAS refactor: AAS internals, also cleanup /🆑 |
||
|
|
2ee02682f7 |
Converts most other usages of block() to x/y/z format (#89290)
## About The Pull Request The sequel to https://github.com/tgstation/tgstation/pull/89234 > someone should do the rest at some point guess what, I'm that someone :3 ## Why It's Good For The Game Same reasoning as the previous PR: > less cluttered code is nice, and it should in theory be more optimized as we avoid the need to run min, max, and locate. ## Changelog No user-facing changes |
||
|
|
d0a7f955f8 |
Fix various issues with names in string interpolation (#89246)
## About The Pull Request Commit messages should be descriptive of all changes. The "incorrect `\The` macro capitalization" was intentional when it was added, but as far as I know TG says "the supermatter" rather than "The Supermatter," so it's incorrect now. This is completely untested. I don't even know how you'd go about testing this, it's just a fuckton of strings. Someday I want to extract them and run NLP on it to catch grammar problems... ## Why It's Good For The Game Basic grammar pass for name strings. Should make `\the` work better and avoid cases like `the John Smith`. |
||
|
|
cbd3ab9b4c |
Fix shuttle parallax (#89184)
<!-- 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 Fixes shuttle parallax that was broken as a result of the [PR](https://github.com/tgstation/tgstation/pull/82644). The problem was that Move would only update after walking and such. The update was forcing Parallax to update when a mob is standing still. **BEFORE FIX** https://github.com/user-attachments/assets/f015435e-16d4-44d4-97e5-03d242ddda4c **AFTER FIX** https://github.com/user-attachments/assets/22d4e256-54b9-4d8c-93ee-2312f2cabe39 ## Why It's Good For The Game Full immersive gameplay comeback. ## 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 its 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. --> 🆑 fix: Fixed shuttle parallax when a mob is standing still. /🆑 <!-- 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. --> |
||
|
|
92a585cb3a |
new icebox ruin: outpost 31 + megafauna (technically???) (#88714)
## About The Pull Request <details> <summary> expand to spoil the fun of exploring something for yourself </summary> firstly, the new ruin: outpost 31 its layout is vaguely based off an official map of the Outpost 31 from the Thing movie but i ran out of space halfway  the boss drops a keycard for the storage room that you cant get in otherwise, containing its own special item, and other stuff probably useful for crew crusher loot: trophy that heals you on each hit the ruin is guarded by like 3 flesh blobs, very resilient (and slow) masses of flesh that deal 3 brute damage, not harmful in melee but WILL attempt to grab and devour/assimilate you which is FAR more lethal https://github.com/user-attachments/assets/542cc6d0-f4ee-4598-9677-a03170c6c1c3 Boss: The Thing (with creative liberties otherwise this thing would instakill you if it was true to source material) difficulty: medium apparently idk mining jesus beat it with 400ms or so HP: 1800 It is a much higher ranking changeling than those infiltrating SS13 It has 3 phases, 600hp each. Depleting its phase health will turn it invincible and it will heal back half in 10 seconds. In order to prevent this, the two Molecular Accelerators must be overloaded by interacting with them to blast the changeling with deadly scifi magic or whatever they do, forcing it to shed its form further and go to the next phase. Not necessary for phase 3 because it literally just dies then it focuses mostly on meleeing you and making certain tiles impassable for you with 1hp tendrils, all attacks are telegraphed so theres no dumb instakills here it alternates between aoe abilities and abilities melee behavior: - if too far, charge at target (charges twice on phase 3) - too close, shriek (unavailable in phase 1) (technically AOE but its more like a melee ability you know??) - otherwise just try to melee Shriek: if the player is too close emit a confusing shriek that makes them confused and drop items aoe behavior (phase 2, 3 only): 1: Puts 4 tendrils in a line cardinally 2: Puts tendrils around itself 3. Puts a patch of tendrils around and under the target, 3x3 in phase 3 4. Phase 3 only - spits patches of acid into the air that hurt when stepped on _(crusher is hard ok)_ https://github.com/user-attachments/assets/cbb98209-d3f0-470d-b0e8-4e310c5b709c unique megafauna loot for this boss is like 1 AI-Uplink brain its like a BORIS module but for humans i think you can figure out what that means while in a human shell they cannot roll non-malf midrounds and cannot be converted, and cannot be mindswapped the human MUST have all robotic organs (minus tongue because its not in the exosuit fab and that kinda sucks to get) will undeploy if polymorphed https://github.com/user-attachments/assets/abcc277a-995a-4fa7-b980-0549b6b7cf52 </details> ## Why It's Good For The Game icebox is severely lacking in actual good ruins (fuck that one fountain ruin) i feel that the loot given by megafauna has been and still apparently is exclusively to make the victor more powerful, which kinda sucks because thats just powergaming???? the loot of this boss is more crewsided, specifically aiding the AI in a VERY limited quantity (1), so its not anything good for powergamers, good for crew if the AI is not rogue ## Changelog 🆑 add: outpost 31, the icebox ruin. Also its associated mobs, and megafauna, and loot. Im not spoiling anything, find it yourself. /🆑 --------- Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> |
||
|
|
0115e0d4a5 |
Fix an icon smoothing runtime caused by shuttles during recursive map loading (#89024)
## About The Pull Request So, funny thing. The syndie base lazy template loads recursively, as it contains two shuttle docks (infiltrator and steel rain). But stationary shuttle docks will immediately load their `roundstart_template` _asynchronously_ upon Initialize. This can cause issues - such as the shuttle's atoms being initialized before everything else is, in a weird way. The usual side-effect of this would be runtimes resulting from the shuttle's initialized walls trying to smooth with non-initialized turfs on the template that loaded it. I simply moved to stationary docking port's async load to LateInitialize. There's prolly a better long-term solution, but this doesn't hurt, and solves the relevant issue. you know i really hope we don't have _3_ layer map templates anywhere. ## Why It's Good For The Game less runtime good. ## Changelog 🆑 fix: Fixed an icon smoothing error caused by shuttles during recursive map loading, i.e the nukie shuttles with their base. /🆑 |
||
|
|
2e4d70afe5 |
Updates href uses for 516 (#88699)
## About The Pull Request Was just scrolling through the Paradise github since they seem to have more work done for 516 to see if there's anything I can port over, found this and thought why not. Ports parts of https://github.com/ParadiseSS13/Paradise/pull/25105 Specifically, updaing all hrefs to use the internal ``byond://``, and adding it to grep. ## Why It's Good For The Game More work towards 516. ## Changelog Nothing player-facing. |
||
|
|
3a25ac7f94 |
Nav computer icons (#88169)
## About The Pull Request To add context when placing a custom shuttle location, added additional icons to the shuttle navigation computer view for a few important objects: * The shuttle computer * The shuttle navigation computer * Turrets * <strike>The firing trajectory of the Yamato cannon</strike> * External airlocks <details> <summary>Images</summary> Old:  New:  </details> ## Why It's Good For The Game It's much easier to place the syndicate shuttle / white ship in a convenient location when you know exactly where the turrets and external airlocks are going to be when you land. Showing the shuttle computers also helps to communicate the orientation of the ship to anyone who is not already familiar with the outline, since the computers are usually placed right at the front, where the pilot is sitting. ## Changelog 🆑 add: Shuttle navigation computers now show the location of airlocks, turrets, and the shuttle control consoles on the ship outline while placing a custom landing location. /🆑 |
||
|
|
88d15354e1 |
Pressure Tanks no longer runtime when shuttleRotated, Remedies constant CI fails (#88413)
## About The Pull Request Fixes #71092 ## Why It's Good For The Game Flaky tests bad, fixman good... ## Changelog 🆑 fix: Pubby's whiteship no longer breaks when it tries to dock /🆑 |
||
|
|
558e6528c1 |
Reorganizes and splits shuttle code (#88228)
## About The Pull Request refer to title No code changes were made here, i just copypasted code around The only real difference is that I removed a pretty useless define that depended on TESTING because it got in my way of splitting emergency.dm tbh i didnt want a 50k line refactor pr that nobody is going to review so im getting it out of the way in a separate PR ## Why It's Good For The Game Shuttle code is literally all over the place please help me oh gosh ## Changelog Nothing player facing or developer facing (at least I really hope so) |
||
|
|
f5a712b054 | Labor shuttle no longer takes off with more than one prisoner inside (#88083) |