mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-13 09:05:11 +01:00
docker-container
318 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f601a6ddaf | Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 | ||
|
|
a85369b66a |
New foam reactions for water varients (#96095)
## About The Pull Request Adds slipless foam + one slipless foam for each life time + adjusted long foam's life time from 30 seconds to 24. Adds new foam reactions, list of what they produce below. salt water = lasts shorter + no slip soda water = lasts shorter ice = no slip holy water = lasts longer + no slip hollow water = lasts longer ## Why It's Good For The Game Sometimes, you want to flood medbay with a colorful reagent grenade WITHOUT it slipping everyone and blocking it for a stupid amount of time. ## Changelog 🆑 add: New reactions for water variants that make foam code: New foam types that either slip or last longer or shorter /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
21b4095dfd |
[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
e98cb75c57 |
Refactor gasmix mole change into a proc (#95327)
## About The Pull Request Refactor the majority of the current gasmix mole change use cases into a proc called adjust_gas which simply adds the designated mole count of the species into the gas mix while also handling asserting the gas and garbage_collect() I also added adjust_multiple_gases and convert_gas() for modifying multiple gases and within a gasmix ## Why It's Good For The Game Lemon wanted this to be done as part of the air group refactor ## Changelog 🆑 refactor: refactored majority of gas_mix mole change into adjust_gas() proc /🆑 |
||
|
|
38037021ef |
Smoke applies to people once per tick (#95579)
## About The Pull Request Chem smoke no longer applies smoke during `spread()`, waiting for `process()` instead. Chem smoke no longer gives reagents to mobs during its override of `process()`, letting its parent do it instead. Smoke no longer calls both `trans_to()` & `expose()`, letting `trans_to()` call `expose()` instead. All in all, it triggers on mobs once per tick, instead of 3 or 5. Hooray for eyes everywhere. (Stuff like tear gas still goes kind of crazy with it, being volume-agnostic, but it's one third as bad) ## Why It's Good For The Game fixes #95539 |
||
|
|
6dcb01eb7d | Shark commits | ||
|
|
9d14e327b5 |
Begins Improving Sparks/Flares Somewhat, Adds Animatable Light Overlays (#95362)
## About The Pull Request [Adds a visual tick helper, integrates it into SSmove and such](https://github.com/tgstation/tgstation/commit/e97035f9f74fad5c67c5bf19d8d5d3bb4bd476b4) Basically, if we do "stuff" during verb time then the next chance clients have to actually see it is on the next visual tick (rather then the normal "this tick"). This is cause clients get their next frame during maptick, and maptick runs before verbs. We want to be able to handle this properly because if you say, create an object and then move it on the same VISUAL tick (NOT game tick), it will just teleport instead of playing out the move. I don't want this for stuff like sparks, so we need a way to work around it. [Moves most users of the _FAST flag to _INSTANT](https://github.com/tgstation/tgstation/commit/6f96daac00519c69adc7554f52114798a65f3ad5) These are the kids that don't immediately spawn something and the move it, and we want to allow them to move actually as soon as possible (important for stuff like space) [Improves basic effect systems, makes their products delete when they stop moving](https://github.com/tgstation/tgstation/commit/172cb25d80ed34e1ec523172a1677fb524239fba) Moves some stuff out to getters or vars so children can better decide how long effects should last/how fast they should move. Uses this to clean up weird dupe code used by explosions. Makes all these effects delete on contact with something that stops them. I'm doing this because an effect just hanging in the air looks really really odd. Does have consequences for sparks that are already moving at a wall though, might need a better way to handle that. Makes all these effects use _FAST loops so they don't just hang in the air for a second on spawn Adds a setter proc on sparks for their duration, gonna use this to improve their effects some [Refactors overlay lights, adds support for animating their images](https://github.com/tgstation/tgstation/commit/3ad0083cf2b536df51a6d93dca40eac20c1d62d1) Implements light_render_source and relevant setters, this allows us to replace the components of an overlay light with basically whatever we want Refactors overlay lighting to handle its images more consistently, allowing us to hook into an image being modified Combining the two of these will allow us to consistently copy a light's image, modify it in some way, and then relay that modification back down. Allowing us to animate it or do more advanced effects painlessly Also, fixes ranges of 1 or less not rendering at all on initial set (thank you kapu) [In which I get fed up and add a macro helper for UID generation](https://github.com/tgstation/tgstation/commit/aab48b03d407104d4f9cf9acb034494237def911) [adds vv hooking for all existing lighting vars](https://github.com/tgstation/tgstation/commit/b81c6200a0d74c36b440aa3f4c1f22c422090a2d) [Upgrade effect system's dir picking to avoid duplicates when possible](https://github.com/tgstation/tgstation/commit/18b622586b509c6be4c4bca4e3e7c175ad75fe91) [Uses the technique described above to animate spark's lights out as they move](https://github.com/tgstation/tgstation/commit/67ba177982213799984a70e89536c5efb3d17e14) This is a decently nice effect imo, it allows us to bump their power (read, alpha) since it'll get animated away. I try to sync the animation to the actual icon state's flow (it's 0.7s long). I also sped them up somewhat to hopefully have a nicer looking effect? we'll see. [Abstracts away intercepting overlay lights into a holder datum](https://github.com/tgstation/tgstation/pull/95362/commits/b3f1fe74f2c3bab1d8912ab8a666bd05677ad032) This should make it far easier to reuse this pattern! [Fixes overlay lights flashing to double intensity when picked up off the ground](https://github.com/tgstation/tgstation/pull/95362/commits/1d83f2031fa2b33312b2aea4359c0c37c9d04ac7) We needed to clear out their underlays BEFORE the animation [Adds a flickering effect to flares and their children](https://github.com/tgstation/tgstation/pull/95362/commits/b7a858e04a607c58b6c7fbe1476ffe2239e63bde) I'm still not 100% happy with this, I was trying to avoid it feeling like a heartbeat with random noise and I.. THINK it worked? it's honestly quite hard to tell [Adds the same flickering to lighters, welding tools and life candles](https://github.com/tgstation/tgstation/pull/95362/commits/3ec44027e17835ae96702cec5f0b12d1f4deb32b) Also, updated light candles to mirror the appearance of normal candles and use overlay lighting EDIT: I realized while working on flares that I accidentally double applied color, so if you saw the sparks animations before now it was different (less vibrant). IDK if I like this better or worse but it is RIGHT and that's what matters. ## Why It's Good For The Game I got mad about how bad these looked, and this is a start at improving them. Also, adds a framework for more dynamic effects applied to overlay lights (you could use this to apply a sort of "emergency rotating" effect, or flicker/buzz for example). <details> <summary>Before</summary> https://github.com/user-attachments/assets/66437f27-ee3c-4f14-a7ee-4a1c3e68533a https://github.com/user-attachments/assets/ed14fff8-a7eb-47fe-bab5-9a490ac96629 </details> <details> <summary>After</summary> https://github.com/user-attachments/assets/fb24ff2e-c745-42a5-8e11-c8a1eeef35a5 https://github.com/user-attachments/assets/fd8c2116-cb92-4fe6-ad3e-786a6538e52a </details> ## Changelog 🆑 add: Reworks how sparks render. They're now a bit brighter, will fade out as they move/if they hit something, will stack with each other less and also won't start hang in the air on spawn. add: Added a flickering effect to lighters, welding tools, flares, torches and candles (since they're flames). fix: Overlay based lights (think flashlights) will no longer flash to double intensity while being picked up. refactor: Reworked how some effects (explosion particles, sparks, some reagent stuff) function, report any bugs! /🆑 |
||
|
|
a097a96447 |
Fixes an oversight with the effect system refactor reusable effects logic (#95146)
## About The Pull Request `decrement_total_effects()` should run whenever an effect happens, otherwise reusable effects will be capped at 20 total (not 20 concurrent as it's meant to be). Meaning, reusable effects stop working once `total_effects` is 21. Fixes that. ## Why It's Good For The Game Fixes a bug/oversight. ## Changelog 🆑 fix: fixes certain particle effects not triggering under certain conditions /🆑 |
||
|
|
f58b8511f0 |
Refactors effect_system (#94999)
## About The Pull Request This PR refactors ``effect_system``s to be a bit easier to use by getting rid of ``set_up``, allowing ``attach()`` to be chained into ``start()`` and refactoring most direct system usages in our code to use helper procs. ``set_up`` was unnecessary and only existed to allow ``New``'s behavior to be fully overriden, which is not required if we split sparks/lightning/steam into a new ``/datum/effect_system/basic`` subtype which houses the effect spreading behavior. This allows us to roll all logic from ``set_up`` into ``New`` and cut down on code complexity. Chaining setup as ``system.attach(src).start()`` also helps a bit in case no helper method exists I've added ``do_chem_smoke`` and ``do_foam`` helpers, which respectively allow chemical smoke or foam to be spawned easily without having to manually create effect datums and reagent holders. Also turns out we've had some nonfunctional effect systems which either never set themselves up, or never started, so I fixed those while I was at it (mostly by moving them to aforementioned helper procs) ## Why It's Good For The Game Cleaner code, makes it significantly easier for users to work with. Also most of our effect system usage was copypasta which was passing booleans as numbers, while perfectly fine helper procs existed in our code. ## Changelog 🆑 refactor: Refactored sparks, foam, smoke, and other miscellaneous effect systems. refactor: Vapes now have consistent rigging with cigs using the new system. fix: Fixed some effects never working. /🆑 |
||
|
|
3e504a77ae |
Refactor girders and wall construction (#94364)
## About The Pull Request This PR refactors wall construction on girders, wooden barricades and metal foam to use a centralized element, which listens to item interaction signals and attempts to make any available wall recipe. This change is an atomized prerequisite to my blueprinting system, since that system requires a sane way to dynamically change the speed at which walls are built. This PR will later be expanded to refactor girder construction steps in general. I also added `proc/valid_typesof(base_type)` as a side effect of my previous attempts at refactoring this stuff. There's now what amounts to a code comment easter egg in the same file, because DM is wacko and you're going to get cursed now too. :) ## Why It's Good For The Game The old system had ~20 bespoke yet highly similar wall construction steps. Some of the wall recipes were also concatenated from a string on the used stack type. To put it bluntly, the code was fucking horrible. Same thing goes for the rest of the girder construction steps, they were all bespoke. ## Changelog 🆑 refactor: Refactored girders and wall construction. Report any bugs. tweak: Some niche wall types might have their wall delay changed by like 2 seconds. This doesn't affect normal walls, reinforced walls, falsewalls or any other important wall types. /🆑 |
||
|
|
c74f104c89 |
Rewrites plasma rigging code to be much more flexible and dynamic, and cover more cases (#94861)
## About The Pull Request Instead of being snowflake interactions on objects themselves, rigging things with plasma or welding fuel is now handled on reagents' side via ``on_spark_act``, allowing each reagent to decide how they want to handle exposure to electric currents or violent heating. - Obviously plasma and welding fuel cause explosions, but former gains additional power from electric current being passed through it (same math as powercells), while latter doesn't explode unless in an enclosed space, or a high enough current/temperature has been reached, and merely creates a hotspot instead. - Napalm and phlogiston create hotspots, or (try to) damage the holder if they're enclosed - Sorium, liquid dark matter, TATP, nitroglycerin and flash/smoke/sonic powders trigger their usual detonation effects, albeit slightly weaker. - Teslium creates a ZAP, with additional power for a BIG ZAP if it has been triggered by electric current. - RDX becomes spicier with temperature and current, similarly to how it becomes more dangerous when mixed with LE or teslium. - Gunpowder produces a delayed explosion effect (unless its hot or the current is high enough, in which case its instant) and causes sparks as the message claims it does (normal gunpowder explosions also do that) Plasma and gunpowder rigged items can now be controlled using stabilizing agent - in its presence, plasma will not explode unless the used charge is higher than 0.2% of a standard cell's per unit of agent, while gunpowder will instead spend 0.1 + (charge / 10% of a standard cell's charge) units of agent to delay its detonation. Smoke (powder) now produces a visible message and slightly damages lungs of whoever it reacted inside of, if the container was a mob. The numbers on plasma/welding fuel rigs should be ***roughly*** the same. Also lighters can now be rigged in a fashion similar to welding tools. Also it turns out we broke light rigging at some point, so now it works again. ## Why It's Good For The Game This makes the system much more flexible and allows players to make more creative IEDs, expanding upon the sandbox aspect of the game. Also I have an upcoming project bringing IEDs (kind of, in a new form) back, which is why I wrote this in the first place (but decided to atomize the PRs). As for smoke damage, it feels weird to not have any tells when someone suddenly starts hacking up volumetric amounts of smoke, it makes sense that they'd struggle a bit after coughing a few dozen cubic meters of thick vape clouds. ## Changelog 🆑 add: Multiple new reagents such as napalm, sorium, TATP, smoke/sonic/flash powders and other explosives can now be used to rig cells or tools. add: Plasma and gunpowder rigged items can now have controlled current requirement/delay by adding some stabilizing agent alongside the main reagent. balance: Creating chemical smoke inside of a mob now makes them violently cough it up, damaging their lungs a bit. fix: Chemically-rigged lightbulbs now once again explode. refactor: Refactored how power cells, welding tools, lightbulbs, cigarettes (and now, lighters) handle being rigged with chemicals. /🆑 |
||
|
|
7a3ad79506 |
All camelCase (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case. UNDERSCORES RULE! (#94111)
## About The Pull Request It's just a partial cleanup of anti-[STYLE](https://github.com/tgstation/tgstation/blob/master/.github/guides/STYLE.md) code from /tg/'s ancient history. I compiled & tested with my helpful assistant and damage is still working. <img width="1920" height="1040" alt="image" src="https://github.com/user-attachments/assets/26dabc17-088f-4008-b299-3ff4c27142c3" /> I'll upload the .cs script I used to do it shortly. ## Why It's Good For The Game Just minor code cleanup. Script used is located at https://metek.tech/camelTo-Snake.7z EDIT 11/23/25: Updated the script to use multithreading and sequential scan so it works a hell of a lot faster ``` /* // Copyright 2025 Joshua 'Joan Metekillot' Kidder This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. // */ using System.Text.RegularExpressions; class Program { static async Task Main(string[] args) { var readFile = new FileStreamOptions { Access = FileAccess.Read, Share = FileShare.ReadWrite, Options = FileOptions.Asynchronous | FileOptions.SequentialScan }; FileStreamOptions writeFile = new FileStreamOptions { Share = FileShare.ReadWrite, Access = FileAccess.ReadWrite, Mode = FileMode.Truncate, Options = FileOptions.Asynchronous }; RegexOptions regexOptions = RegexOptions.Multiline | RegexOptions.Compiled; Dictionary<string, int> changedProcs = new(); string regexPattern = @"(?<=\P{L})([a-z]+)([A-Z]{1,2}[a-z]+)*(Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss)([A-Z]{1,2}[a-z]+)*"; Regex camelCaseProcRegex = new(regexPattern, regexOptions); string snakeify(Match matchingRegex) { var vals = matchingRegex.Groups.Cast<Group>().SelectMany(_ => _.Captures).Select(_ => _.Value).ToArray(); var newVal = string.Join("_", vals.Skip(1).ToArray()).ToLower(); string logString = $"{vals[0]} => {newVal}"; if (changedProcs.TryGetValue(logString, out int value)) { changedProcs[logString] = value + 1; } else { changedProcs.Add(logString, 1); } return newVal; } var dmFiles = Directory.EnumerateFiles(".", "*.dm", SearchOption.AllDirectories).ToAsyncEnumerable<string>(); // uses default ParallelOptions // https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.paralleloptions?view=net-10.0#main await Parallel.ForEachAsync(dmFiles, async (filePath, UnusedCancellationToken) => { var reader = new StreamReader(filePath, readFile); string oldContent = await reader.ReadToEndAsync(); string newContent = camelCaseProcRegex.Replace(oldContent, new MatchEvaluator((Func<Match, string>)snakeify)); if (oldContent != newContent) { var writer = new StreamWriter(filePath, writeFile); await writer.WriteAsync(newContent); await writer.DisposeAsync(); } reader.Dispose(); }); var logToList = changedProcs.Cast<KeyValuePair<string, int>>().ToList(); foreach (var pair in logToList) { Console.WriteLine($"{pair.Key}: {pair.Value} locations"); } } } ``` ## Changelog 🆑 Bisar code: All (Brute|Burn|Fire|Tox|Oxy|Organ|Stamina)(Loss) procs now use snake_case, in-line with the STYLE guide. Underscores rule! /🆑 |
||
|
|
5146cfd403 |
Moves camera update handling to background subsystem, (maybe) fixing lag (#92208)
## About The Pull Request When a camera update is triggered, it is instead added to a queue on a background subsystem An AI entering a camera chunk which is queued to update will force the update immediately (bypassing the queue) While the root problem of this is, ultimately, not addressed... <img width="554" height="58" alt="467828777-eff3f0e5-49d6-4997-b4d7-05eff6432155" src="https://github.com/user-attachments/assets/c2d6a5f5-d958-463e-959f-116bd0dab475" /> ...the change will ultimately prevent update spam from consuming all of the server's resources - instead allocating updates to the backburner in times of high server stress (or on multi-z maps) ## Changelog 🆑 Melbert refactor: Refactored the way camera updates are handled to hopefully reduce some lag. Report any oddities /🆑 |
||
|
|
76bc3afae7 |
Significantly improves MODtether behavior, fixes multiple bugs and a potential server crash (#92807)
## About The Pull Request This PR rewrites how MODtethers behave when something appears in their way, when they run out of slack or get stuck on a corner. Currently, first case would freeze you in place, while the other two can result in the tether being blocked by an object which shouldn't interrupt the beam. Now when it cannot find a direct LOS or get too far from the owner, the tether will attempt to move to the side a bit to (hopefully) slide around the corner or whatever object is blocking it, as long as its distance permits it to do so. They'll also automatically snap if they cannot find LOS even after trying to move to the side. Also fixed multiple bugs and a potential crash due to recursion stemming from MODtethers. Additionally, while looking around path_info code I found that foam was calling its passibility check on an incorrect turf, checking if an object from the target turf could arrive to the turf itself, rather than sourcing it from its own location. I also fixed that, should prevent foam from going through directional objects ## Why It's Good For The Game This should make them less of a pain to use in-game, especially when the other half is connected to an unanchored object. ## Changelog 🆑 qol: Significantly improved MODtether behavior, they should be easier to work with now. fix: Fixed multiple MODtethers bugs and a potential server crash related to them. fix: Fixed foam sometimes passing through directional windows. /🆑 |
||
|
|
fadbf16e1b |
Asthma quirk, inhalers - Electric Boogaloo (#92747)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/79691 A while back, I made this PR, but lost motivation after diving too deep into the code soup of can_breathe and related procs. Now, I have removed those parts, and have simplified that part of the code to the point I think it's ready for review. Many reviews from the previous PR have been addressed in this PR. <hr> <details> <summary>Details</summary> Asthma is a 4 point negative quirk that emulates real life asthma. It works by slowly decreasing the amount of pressure each breath you take receives, until your lungs completely seal, ensuring death if you dont get oxyloss meds/windpipe surgery. Inflammation (the tracker for intensity) increases whenever you breathe smoke, use a cigarette, metabolize histimine, or suffer an asthma attack. Asthma attacks have a low chance of happening every second, starting 10 minutes after you spawn and with a 20-30 grace period between attacks. They are "diseases" that cant be outright cured by albuterol, only put into remission. They increase inflammation at varying rates depending on their severity, with extreme asthma attacks being a immediate threat to your life while mild ones might not even cause inflammation. The response to these is always the same - use your inhaler before you start choking. Asthmatics start with a rescue inhaler, a low-capacity inhaler loaded with albuterol, which I will get to later. Albuterol is a new medicine thats a little tricky to make but still doable. It can be efficiently created with inverse convermol, or transmutated from salbutamol and convermol. The opposite is true, with albuterol able to be turned into salbutamol. Two canisters are available in chemvends. Upon use, it increases the virtual pressure of all breaths taken by 40%. This allows for you to breathe in lower pressure environments, as well as enhancing the effects of things like healium. It's OD causes your diaphram to spasm, causing sporadic losebreath and forced breathing. Inhalers are a fancy new reagent application apparatus that uses the INHALE reagent bitflag. Inhalers themselves are rather unremarkable, they are merely the method of using inhaler canisters (they also have a rotary display approximating the uses left in a canister - just like real life inhalers). Inhaler canisters are the reagent containers, and are generally low capacity. They can only be used in a inhaler, and contain aerosolized chemicals. Inhaler canisters and inhalers are unlocked from chemical synthesis, and are printable for cheap from a medlathe. In order to use a inhaler, one must uncover the mouth of a carbon and wait a few seconds (its faster if its a self-application) before a small amount of the reagents are delivered via the INHALE bitflag. This only works on things currently breathing - if theyre dead, have no lungs, or just, arent breathing - it will fail. This includes asthmatics with 100% inflammation. </details> <img width="181" height="74" alt="282863233-77a7cd6b-44d2-458e-9966-06d485df1521" src="https://github.com/user-attachments/assets/293b6659-0834-4e9a-b033-cc3b0cfde18e" /> <img width="1465" height="202" alt="282863346-2a247736-0c3a-43b0-a60b-7cff10ce4963" src="https://github.com/user-attachments/assets/5d9a13dc-b7b2-4de2-adda-8fbc8276e667" /> Sprites are not mine; they are from swanni and I can NOT sprite for the life of me ## Why It's Good For The Game 1. Asthma is just cool. One of my favorite features on bay was the fact lung damage required you to turn up the pressure on your O2 tank to survive, and this does precisely that. 2. Its always fun to add new ways to interact with atmos as a player that arent grossly broken, and I fail to see how a 40% increase of gas intake will really affect balance too badly. 3. Inhalers are badass. ## Changelog 🆑 add: Asthma quirk, based on IRL asthma add: Inhalers, a new reagent administering method that uses INHALE add: Albuterol, a new reagent that increases the amount of gas you inhale by 40% balance: Inverse convermol now forms once the reaction is done, not on metabolize /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
a1d27e384d |
Merges copy_to() into trans_to() for reagent holder (#92410)
## About The Pull Request Merges `/datum/reagents/proc/copy_to()` -> `/datum/reagents/proc/trans_to()`. Added a parameter `copy_only` to indicate we want a copy operation ## Why It's Good For The Game - Less code to maintain - All the functionality of `trans_to()`[logging, transferring single reagent, expelling reagents from stomach, etc] now applies for copying reagents as well which was missing a lot of it, so we have consistent behaviour ## Changelog 🆑 refactor: code for copying reagents has been refactored. Please report bugs on github /🆑 |
||
|
|
41a25777ee |
Fixes foam slipping people standing on tables and racks (#92174)
## About The Pull Request Closes #92150 ## Changelog 🆑 fix: Fixed foam slipping people standing on tables and racks /🆑 |
||
|
|
4551b00801 |
Smart metal foam fixes multi-z holes (#92050)
## About The Pull Request Smart metal foam places foam plating on openspace ## Why It's Good For The Game It's supposed to fill the room but it leaves a bunch of holes to fall in ## Changelog 🆑 Melbert qol: Smart metal foam fixes multi-z holes /🆑 |
||
|
|
c5f1b7f8c3 |
Da blobmob update! Indepedent strains, new sprites, egglike spores, fixes, sounds and buffs! #Cytology2025 (#91368)
## About The Pull Request This PR makes a number of changes focusing on improving the blob minions, spores, nauts, zombies and their associated component. ## New sprites The blob spore, blob zombie and blobbernaut has been resprited. The spore and zombie have been lightly touched to preserve the most of the original characteristics while given a cleaner look. The spore and zombie have a partially desaturated version used to let more of the strain colour through instead of them all ending up dark brown. The blobbernaut has been reshaded and the side sprite has been made coherent with the front state, I made decided how the front state was shaded should be the "canon" one (this might be a bit controversial but the wild inconsistency was bugging me.) The blobbernaut is a bit less veiny, but the veins look more natural and use the strain complementary colour. Many combinations are cool, some are a bit lacking due to the weird choices of complementary colour.   ## New Cytology Related Features Blob mobs can now have strains independently of an overmind. The 15% mutation chance of vat grown creatures causes a spore or blobbernaut to get a random strain. When I first added the blob spore cell line, ghosts could click on cyto blob spores to posses them, they would then presumably(?) but not explicitly be free antags. This ability was lost when the blob spore code was modernised. Very few people knew about this, and no one grew blob spores anyway. This feature is coming back in a big way, vat grown blob spores present a new unique job hazard, they are automatically offered to ghost as an extremely shitty, but free antag. I have tested spawning like 15 antag pre-buff blob spores in a live round and they failed completely to antagonise the crew effectively, hopefully these buffed spores won't present too much of an issue to our great administration team, if that ends up being the case, there are many levers to pull to tone them down. ## Blob Spore Buffs Blob spores prior to this PR were almost completely useless. The main cause of this was the extremely dilute reagent smoke reaction; 10u divided over 20 seconds. This resulted the smoke clouds dealing 0.15 - 0.6 DPS, a completely negligible and useless amount. The smoke reagent concentration has been massively increased(10u -> 40u) and the smoke duration has been reduced(20s -> 8s). The result of this is that blob spore clouds are something you want to avoid standing in, but they provide less smoke cover for the blob and nauts. Blob spores have also gained the ability to vent crawl. Simple mobs that can't either open doors or vent crawl feel super bad to play. They also deal a little more melee damage, but this is still pathetically low on account of their low attack speed. I have adjusted their supplementary reagents and reduced the amounts of spores produced per cycle(2 -> 1) to make them a bit harder to mass produce. ## Blob Strain Buffs I have not made this PR with the goal of buffing any particular strain, but some changes have affected blob strain balance: ### Debris Devourer This was the only strain that was strongly mechanically tied to the core. In order to allow for independent debris devourer mobs, they can now eat trash(or any item really), they are independent, they store these items inside their mob, and use these for the debris devourer reactions. If they have an overmind, the item gets sent to the core. This should result in a nice buff to the strain, which I've been told is one of the bad ones. ### Regenerative Materia & Cryogenic Poison 5 years back another contributor removed the ability of blobs and blobbernauts to transfer reagents with their attacks(as their expose method is vapour). This was a completely undocumented change and possibly unintentional, so I am reverting it by giving blob reagents penetrates_skin = VAPOR again. This only really affects these two strains. It makes regenerative materia much stronger, while barely having any effect on cryogenic poison, because temperature normalisation changes has made it completely ineffective even with much more reagent applied. ### Electromagnetic Web The spore reagent cloud buff might also give a boost to some strains with good expose effects, like electromagnetic web. ## Blob Cooking Blob spores now drop spore sacks, they can be ground for spore toxin, or cracked on a griddle to create an egg-like treat! I also added a detoxification reaction to reduce the amount of toxin when cooked, might not work yet because I think griddles may not actually heat the food? ## Sound Effects Blob spores bursting and blobbernauts dying have sound effects. ## Why It's Good For The Game level 5 biohazard ## Changelog 🆑 image: blob mobs have been respectfully resprited. add: vat grown blob mobs can sometimes get born with a blob strain. add: blob spores drop spore sacks, crack them on the griddle. add: debris devourer mobs can now eat trash, sending it to the core, if there is one. add: vat grown blob spores are now sentient and evil. balance: blob spores now have much more concentrated smoke. balance: blob spores can ventcrawl. fix: regenerative materia and cryogenic poison strain blob tiles & nauts now inject chems again. sound: blob spores & blobbernaut now have death sound effects. /🆑 |
||
|
|
eb9696dd1b |
sparks will not ignire things in enclosed container, also slime extracts are enclosed containers (#91779)
## About The Pull Request title closes https://github.com/tgstation/tgstation/issues/91749 ## Changelog 🆑 fix: sparks will no longer ignite reagents in enclosed containers /🆑 |
||
|
|
79fae4eda2 |
Fixes weird pipe/vent/cable rendering under glass and catwalk floors (#91454)
## About The Pull Request Changes some logic in underfloor object and atmos component rendering to make them look nicer when visible, but not accessible under floors. Also changes how catwalks get rendered to improve their visuals when opened. Before:  After:  ## Why It's Good For The Game Makes pipes look less shit. The rendering curse reigns eternal. ## Changelog 🆑 fix: Fixed vents and pipes partially poking out from under glass and catwalk floors /🆑 |
||
|
|
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. /🆑 |
||
|
|
f00caffd90 |
Better metalgen logging and some behavior fixes (#90546)
## About The Pull Request Metalgen imprinting is now logged, foam and smoke have better logging and so do plasma metalgenned things, metalgen no longer causes a ton of runtimes on almost everything and foam and smoke no longer affect abstract objects. Also ***hopefully*** solves the issue with infinite hotspot loops, but I don't think anyone knows what exactly occured there. ## Why It's Good For The Game If servers explode, admins need to know who did it and coders need to know how they did it. ## Changelog 🆑 fix: Metalgen foam/smoke no longer cause an absurd amount of runtimes fix: Foam and smoke no longer affect abstract objects like landmarks admin: Metalgen imprinting is now logged admin: Improved logging for foam and smoke, and plasma metalgenned objects /🆑 |
||
|
|
63e652eb37 | Space cola removes rust (#90452) | ||
|
|
5e8dad9618 |
Punishable by death in 7 sectors! Kronkaine buff package. (#90192)
## About The Pull Request  ### Kronkus vine buffs: Kronkus seeds are now three times as common. The Kronkus vine has a greatly increased endurance stat(10->40) so it does not die on you while you run around gathering ingredients and matures quicker (8->6) ### Kronkaine buffs: * The instant stamina boost restores **double stamina**(12 per u) when injected or smoked. * Now also restores stamina over time based on volume: **0.08 stamina per unit each cycle**. * Heart damage from kronkaine is now also dose dependant, overdose damage has been adjusted to account for this. * Reaction requires less ammonia(5->3u) and welding fuel(10->5u). * Added an alternate reaction that uses lye instead of ammonia, also takes 3u. * Added some new drug messages for when using these optimized methods of administration. * Reworked how the anti-purging mechanic works, now it only punishes you with adrenal fatigue while you take >30 stamina damage while trying to purge. This makes life saving OD treatment less annoying, but still prevents abuse mid combat in a more elegant way. The amount of heart damage inflicted is much lower if used at low doses, the same as before at 20u and greater if more than 20u is administered. The heart damage formula is : **0.1 + 0.04 * volume (+0.5 if overdosed) damage per cycle**. It should work out to something like a 27.5u lethal dose with a pristine heart. ### Kronkus extract buffs: Lasts twice as long. More heart damage per cycle 0.1 -> 0.2. This value is still pretty modest. UPDATE: I had previously buffed the stamina regen of this reagent, but now kronkaine itself has stamina regen per cycle. #### Technical changes: proc/copy_to can now trigger on_transfer and pass exposure methoid if the new copy_method parameter is set. This enables sources that use copy_to like smoke clouds to trigger INHALE dependent effects like the new kronkaine enhancement. Infinite hyposprays now also have the inject method like normal hyposprays. These two were the only two cases where reagents where reagents were added to a mob using copy_to. #### Fixes: kronkus extracts heart damage now uses seconds_per_tick. ## Why It's Good For The Game After surveying the available discussion on the subject, the kronkaine drug itself seems to be generally well received. However the rarity of the seed and the arcane preparation method has limited player engagement with the mechanic. There is confusion regarding both the preparation and, especially regarding how the stamina restoring effect works. This PR seeks to make things a little smoother and more pleasant without making a rare thing into a trivial thing,. Players seems to mostly use the action speed part of kronkaine so I have massively buffed the stamina restoration part in a flavourful way to encourage more types of players to plant the seeds should they find them. Over time more and more stuff have been added to the maintenance loot spawn lists which have diluted the spawn chance of the seed packet which contributes to the problem. This PR increases the weight from 1 -> 3. ## Changelog 🆑 balance: kronkaine now restores double stamina when smoked or injected. balance: kronkaine now restores stamina each cycle, the effect is dose dependant. balance: kronkaine now causes heart damage in a dose dependant manner, instead of a flat value. balance: kronkus seed packs are now three times as common. balance: the kronkaine anti-purging disease now only triggers if you take stamina damage while using purging chems. balance: the kronkaine reaction uses less ammonia and welding fuel. add: added an alternative kronkaine reaction that uses lye instead of ammonia. balance: kronkus extract now lasts twice as long but deals a bit more heart damage(0.1->0.2) balance: the kronkus vine plant is now a lot hardier(endurance: 10 -> 40) and matures a bit quicker. tweak: kronkaine now warns the user more if it is about to kill your heart. fix: kronkus extract now inflicts heart damage correctly. /🆑 |
||
|
|
0228782f0b |
Fix chem smoke runtiming when it tries to cancel its spread (#89750)
## About The Pull Request Chem smoke asks the smoke subsystem to cancel its spread, if it's qdel'd or otherwise reaches the end of its lifetime before it finishes spreading. However, an error in how chem smoke was coded causes it to queue spreading with the *foam* subsystem, rather than the *smoke* subsystem. This causes a runtime in SSsmoke, as it attempts to index into the spread carousel at a bucket index that was returned from SSfoam. This runtime actually happens spuriously during CI over on Monkestation. However, I only started noticing it because it kept appearing in failed runs on my fork - where I have the "Rerun flaky tests" workflow disabled. I was able to replicate the runtime locally, whilst debugging it on the Monkestation fork: 1. Tag any turf as the place to spawn the smoke at (I chose one right next to a door) 2. Use Debug -> Advanced ProcCall to spawn in chem smoke with a high range (`/proc/do_chem_smoke`, `range` = 10, `location` = the tagged turf) (Technically speaking, the high range isn't needed, but it makes it easier to trigger the runtime.) 3. Wait some time (I found that around 12 seconds worked on my machine, when using `range = 10`) 4. Do something to make the chem smoke start spreading (opening a door works) 5. Wait - if the chem smoke is still spreading when its lifetime is up, it will cancel its spread - and in turn, trigger the runtime. Following these same steps after the change in this PR seems to show that this fixes the runtime. ## Why It's Good For The Game Less runtimes = More gooder ## Changelog No player-facing changes. |
||
|
|
20fdcea5c8 | Foam can pass through tables and computers and grilles (#89636) | ||
|
|
f5099185c8 |
Adds a new INHALE reagent transfer method and applies it to smoking and smoke inhalation. Nitrous oxide (the reagent version) inhalation causes brain damage. (#87306)
## About The Pull Request Adds the ``INHALE`` transfer method. Smoking and smoke exposure now uses this method. Makes a few sensible inhalation effects for current behaviours. Adds a unit test amongst the rest of the exposure method tests. Nitrous oxide does brain damage on inhalation based on volume inhaled. ## Why It's Good For The Game Smoke and smoking being based on ingestion rather than inhaling was always weird to me. It'd be nice to have a specific method for smoking instead of a method shared by drinking. Many of our smokables make sense as indigestibles, obviously, but maybe we'd like a chem you can ONLY smoke. ~~Also, I walked out of a job interview and up the street to see a guy throwing his empty nitrous canisters around and yelling at passerbys, so shout out to that fucking guy with this PR.~~ ## Changelog 🆑 code: Introduces a INHALE method for reagent transfer. Cigarettes and smoke reactions use this new method. balance: Nitrous oxide now brain damage if you inhale it. So don't do that. /🆑 --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
692540a7b9 |
Singularity_pull() standartize (#87304)
## About The Pull Request Previous attempt - https://github.com/tgstation/tgstation/pull/87227 `/atom/proc/singularity_pull(obj/singularity/singularity, current_size)` has first arg typed, but other procs were just referencing it as a un-typed variable. Since args are not standartized AND `atom/proc/singularity_pull(obj/singularity/singularity, current_size)` is out-dated, since it can be called by things that has `/datum/component/singularity` - not just by `obj/singularity/singularity` - This PR just adds args to every `proc/singularity_pull()` as follows: `proc/singularity_pull(atom/singularity, current_size)` ## Why It's Good For The Game Standartization ## Changelog No changelog needed |
||
|
|
ad111f4950 |
Spacemove refactor - Newtonian physics (#84869)
## About The Pull Request This PR significantly enhances how zero-g movement works. Its no longer locked to one of 8 directions, everything now has inertia and is affected by weight. This means that throwing a piece of wire will no longer completely reverse your movement direction, and that being thrown out of mass driver no longer will slow you down to a halt at some point. This leads to following gameplay changes: * Guns now accelerate you. Ballistics have higher acceleration than lasers, and higher calibers have higher acceleration than smaller ones. This means that firing full-auto weapons in zero-g will make you drift and accelerate significantly. While this can be a hilarious way to travel in space, it makes using them trickier. * Impacting a wall or an object while moving at high speeds will cause you to violently crash into it as if you were thrown. Careful when exploring! * Jetpacks now have inertia. Changes introduced in #84712 have been mostly reverted, although speed buff has been reduced to 0.3 instead of 0.5 (although this is compensated by new movement mechanics, so overall speed should be roughly equal). All MODsuit jetpacks now possess the speed boost. Advanced MODsuit jets (which has also been added back) and captain's jetpack instead have higher acceleration and stabilization power, providing much more precise control over your movement. * Firing guns while moving on a jetpack will partially negate your pack's acceleration, slowing you down. Non-advanced jetpacks' stabilization is not enough to compensate for heavy caliber weaponry as sniper rifles, shotguns or rocket launchers. * You no longer instantly decelerate upon sliding along a wall. Instead, it may take a few tiles if you are moving at extreme speeds. Passing over lattices still allows you to grab onto them! As space movement is angle-based instead of dir-based now, its much more smooth than before due to using new movement logic. Example of jetpack stabilization in action: https://github.com/tgstation/tgstation/assets/44720187/6761a4fd-b7de-4523-97ea-38144b8aab41 And, of course, you can do this now.  **This pull request requires extensive gameplay testing before merging**, as a large amount of numbers have been picked arbitrarily in an attempt to keep consistency with previous behavior (guns and normal-sized items applying 1 drift force, which is equal to what everything applied before this PR). Jetpacks and impacts may also require adjustments as to not be frustrating to use. Closes #85165 ## Why It's Good For The Game Zero-G refactor - currently our zero-g movement is rather ugly and can be uncomfortable to work with. A piece of cable being able to accelerate you the same as a duffelbag full of items when thrown makes no sense, and so does instantly changing directions. Inertia-based version is smoother and more intuitive. This also makes being thrown into space more of a hazard (possibly opening the door for explosive decompressions?) Jetpack inertia and gun changes - this is mostly a consequence of inertia-based movement. However, zero-g combat being preferred during modes like warops was an issue due to it negatively affecting everyone without jetpacks which are in limited supply onboard. This reverts the mobility changes which severely impacted space exploration, while making zero-g combat more dangerous and having it require more skill to be a viable option. ## What's left - [x] Refactor moth wings to use jetpack code - [x] Refactor functional wings to use jetpack code - [x] Locate and fix a recursion runtime that sometimes occurs upon splattering against a wall - [x] Add craftable tethers and modify engineering MOD tethers to use the same system ## Changelog 🆑 add: You can now craft tether anchors, which can be secured with a wrench and attached to with right click. They won't let you drift into space and you can adjust tether length/cut it via lmb/rmb/ctrl click on the wire. add: MOD tethers now remotely place and connect to tether anchors instead of throwing you at where they landed. balance: MOD tethers can now be used in gravity balance: Jetpacks are now inertia-based. balance: Guns can accelerate you significantly in zero-g. balance: All jetpacks now give you equal speed buff, however advanced MOD ion jets and captain's jetpack have higher acceleration/deceleration values. refactor: Refactored zero-g movement to be inertia-based and utilize angles instead of directions. /🆑 |
||
|
|
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 /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
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> |
||
|
|
fa3f591138 |
[no gbp] Reworked sparks to not be so immensely destructive in benign circumstances (#84193)
## About The Pull Request So sparks were laying waste to every department that had sparks as a little pizzazz particle effect, which turned out to be seemingly every single department, and also just a bunch of random shit we had laying around. That wasn't really the goal so I've reworked them, for now, until I'm able to more comprehensively address how we handle things that are combustible vs things that are actually dangerously flammable, which we don't differentiate for now. Sparks now send a signal to whatever thing is touching those sparks. Right now I've specifically made pools of welding fuel, things made of plasma, people covered in flammables, and cigarettes respond to this signal. Sparks that touch objects with reagents in them will heat those reagents marginally (approximately 40kelvin increase from 300 kelvin underneath a popped lightbulb). There is also another signal 'HAZARDOUS_SPARKS' but as of this PR it is not used. If you walk into sparks or get showered by them, the sparks will also interact with any of your visible equipment (outerwear and held items), but to reiterate, nothing besides the above stated items have interactions with sparks... for now... ## Why It's Good For The Game I won't apologize for being hilarious but turning departments into fields of burnt boxes, tables, vegetables, and crates wasn't really the intent. Addresses #84169 and similar ## Changelog 🆑 Bisar balance: Sparks have been heavily adjusted; they only affect items made of plasma, pools of welding fuel, flammable people, cigarettes, and items that contain reagents... for now. Their long-standing behavior of igniting flammable gas has been untouched. /🆑 |
||
|
|
daa34b9f19 |
[no gbp] Sparks don't ignite furniture (unless you made it out of plasma you fucking lunatic), sparks have a decreasing chance to ignite bigger items, small fix to obj/fire_act() signal (#84111)
## About The Pull Request Even though it's hilarious, sparks currently ignite any flammable thing they touch whatsoever; including gigantic wooden/cloth items, or tables and chairs. Turning areas with wooden furnitures into fields of ash wasn't the intent, so I adjusted sparks to not ignite furniture (you can put welding fuel under them if that's your intent) and items bigger than small items have a steadily decreasing chance to get ignited by sparks (normal is 50%, bulky is 20%, bigger than bulky won't ignite only from sparks) ## Why It's Good For The Game Even in a death trap space station of the future, sparks aren't THAT much of a fire hazard. ## Changelog 🆑 fix: Sparks will no longer turn areas with wooden furniture or similar into naught but a field of ashes; they no longer ignite furniture, (unless it's made of plasma(?!)) and have a decreasing chance to ignite items bigger than small size. /🆑 |
||
|
|
d10d790f67 |
Sparks ignite flammable things (including people), welding fuel pools now ignite in response to more things logically (#83673)
## About The Pull Request Currently, sparks only ignite the air in rooms with plasma/tritium/hydrogen in them. This PR changes sparks to ignite flammable things they touch, including mobs covered in flammable liquids. They also marginally heat containers (40K temp increase from a broken light bulb). The initial purpose was to make welding fuel pools more responsive to flaming things being thrown into them. I have also done that. They now respond to hot objects (including flaming mobs) entering their space or being thrown onto them. They are also ignited by sparks. This PR makes sparks a fire hazard. Keep a fire extinguisher handy. ## Why It's Good For The Game Safety hazards are fun. Sparks should, logically, set flammable things on fire, including YOU. Welding fuel pools should be more hazardous. ## Changelog 🆑 Bisar add: Sparks now ignite flammable things. Including you. Keep a fire extinguisher handy or stop dousing yourself in welding fuel! fix: Fixed a few oversights with welding fuel pools not igniting when you throw lit/hot things into them or when you walk into them while on fire. /🆑 |
||
|
|
bc4e7d3b4e | Remove data systems in favor of global datums (#82943) | ||
|
|
c1a775efe1 |
Implements data systems (#82816)
## About The Pull Request Subsystems currently come in two different flavors: 1. Systems that process at intervals with the master controller 2. Global data containers that do not fire And I think they should be split up... This moves 4 non firing, non init subsytems -> datasystem ## Why It's Good For The Game Clarity in code |
||
|
|
d39815a452 | Fix invalid List.Join() in chemsmoke logging (#82573) | ||
|
|
8eef5a5913 |
Atmos resin can cool the floor down directly. (#82553)
## About The Pull Request Makes atmos resin set the floor's temperature to 293.15 Kelvin. ## Why It's Good For The Game The floor can heat the air up. If someone were to extinguish a tritium fire or something ridiculous with halon, then an awkward situation will arise where the halon cools the air down, but when someone breaks the resin open, the floor heats the air back up, triggering the resin to spawn again and again, which can cause quite awkward problems. ## Changelog 🆑 balance: Atmos resin can directly cool the floor. /🆑 |
||
|
|
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>
|
||
|
|
d54fa170b3 |
Halon combustion releases resin foam and pluoxium. Halon is formed by electrolysing BZ, and the reaction is much quicker. (#81887)
## About The Pull Request Original PRs: #69196 and #74472 Applies both of those PRs to this PR. Doesn't apply the firefighter backpack halon requirement changes since absolutely no one liked that. Halon combustion will combust into 2.5 moles of pluoxium per mole of halon consumed, and release atmos resin. The resin will not only help choke out fires, but it will also help seal rooms from fires, or seal fires from other rooms. Halon formation now requires electrolysing BZ instead of CO2 and N2O. The electrolysis is much faster. 2 moles of halon and 0.2 moles of oxygen is released with 91.2321kJ of thermal energy per mole of BZ electrolysed. Halon combustion starts at 343.15K instead of 373.15K. Resin foam no longer consumes halon and pluoxium. The resin foam released from halon combustion is a special type that lasts longer to ensure the halon can spread and not block itself when combusting. ## Why It's Good For The Game I have only seen one, maybe two rounds ever where someone created halon, and 0 rounds where it was actually used. The main reason why it (at least I think) isn't used is because it takes a rather large amount of effort and time for something that is only going to be used in a fraction of rounds. Preemptively spending that much effort every round, where most of the time it doesn't get used, will get boring and repetitive for pretty much anyone very quickly. Creating it as a response to a fire is going to take too long because you need to build a special cooling chamber and a contraption to ensure low pressure, and then wait for it to react slowly. This PR tries to resolve this by changing the requirement to BZ, making the electrolysis much quicker and scales with temperature instead of inversely with pressure, and making it combust into pluoxium. BZ is a gas that takes a little effort to make, but is probably the most frequently made gas and is likely already available when there is an emergency. With the BZ requirement combined with electrolysis speed change, creating halon is just a matter of dumping BZ into an electrolyser, turning the electrolyser on then extracting the halon, which can be reasonably done as a response to a plasmaflood or whatever. Halon combusting into pluoxium also makes halon not a dead end on the tree of gases. By letting halon combust into pluoxium, atmospheric technicians may persue halon to create pluoxium, which should let it feel less of a waste of time if someone decides to make it and there's no emergency that calls for the use of it. Halon combustion releasing resin foam conveys a visual effect that it is strong at choking fires. Reducing the temperature allows it to react earlier to a spreading fire, so it can block it before it spreads. ## Changelog 🆑 balance: Halon combustion releases 2.5 moles of pluoxium per mole of halon consumed. balance: Halon combustion no longer releases carbon dioxide. balance: Halon combustion releases resin foam. balance: Halon formation requirements changed to require electrolysing BZ instead of N2O and CO2. balance: Halon formation changed to no longer slow down at higher pressures. It instead accelerates at higher temperatures. It is much faster overall. balance: Halon formation releases 91.2321kJ of thermal energy per mole of halon consumed. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
466b3df048 |
Refactor removing unused defines. (#82115)
## About The Pull Request Refactors a lot of the unused defines. ## Why It's Good For The Game Refactors a lot of the unused defines. ## Changelog Nothing player facing --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
0617369924 |
Suppresses excessive logging that results from fights in the deathmatch (#82096)
## About The Pull Request So this is a PR i have had testmerged downstream for like a month now because deathmatch SPAMS the hell out of admin logs. This makes doing admin work kinda annoying when all the useful logs are drowned out by people trying to smoke each other to death endlessly. I don't know how bad the problem is upstream, but I'd imagine TG admins would likely express the same gratitude to have less active logging in game, in the case something important happens that they need to see. This should still keep logging things to the actual log files so the logs will still exist, but this merely suppresses the massive spam of logs that admins actively see. ## Why It's Good For The Game Lets admins do their job a little bit better being able to see when things happen in the logs. Deathmatch logs can be rather disruptive towards admins. ## Changelog 🆑 SomeRandomOwl admin: Deathmatch Bombs, Smoke, and Liquid floods are now suppressed in the logs and will not actively spam admin logs. code: adds a area flag to suppress logging for floods and bombs /🆑 |
||
|
|
ef714c1c34 |
Overlay Lighting Color/Intensity Pass (#81425)
## About The Pull Request I was looking at screenshots of the game and realized we had a lot of light sources that were really... flat. Medium intensity, not colored at all, cringe. So I went over all the uses of overlay styled lighting (since I've done matrix lighting already) and gave them more unique features. Colors that match the sprite they're used with, intensity to produce vibes, that sort of thing. It's kinda impossible to go one by one cause there's a LOT. I may have gone a bit overboard with a few, I'm messing around with some things like giving bots colors based off their department, etc. We'll see how this all turns out. Oh also I tweaked how the cone of overlay lighting is drawn. It seemed a bit too present to me so I dropped the alpha down from like 200 to 120 at max (so it's roughly half of the mask's alpha so it's less overwhelming ## Why It's Good For The Game Lighting should be impactful, subtle and colorful <details> <summary> Old Lights </summary>           </details> <details> <summary> New Lights </summary>           </details> ## Changelog 🆑 add: Tweaked the saturation, color and intensity of a bunch of lights /🆑 |
||
|
|
70651816c2 |
Fixes complex lights not handling moving well, renames lighting defines (#81423)
## About The Pull Request [Fixes static lights not moving](https://github.com/tgstation/tgstation/commit/ffef43c05a55dae414ef94558ecf9b9df709ded7) Worked fine when the owner moved, but if the owner was inside something else, it would try and trigger an update on the PARENT's lights, which are obviously not us. [Renames MOVABLE_LIGHT and STATIC_LIGHT to better describe what they do](https://github.com/tgstation/tgstation/commit/de73a63bd4d97783c69c95370726d1c253ffb8fe) People keep trying to change the lighting system of lamps and it makes me mad. I choose OVERLAY_LIGHT and COMPLEX_LIGHT here, I couldn't figure out a better name for turf matrix lighting. Suggestions welcome ## Why It's Good For The Game Closes #80005 Hopefully improves understanding of lighting at a glance ## Changelog 🆑 fix: Fixes fancy lights not updating their source location when picked up and moved /🆑 |
||
|
|
f03084c1ca |
FOV is Dead (Long Live FOV) (#80062)
## About The Pull Request FOV as it is currently implemented is incompatible* with wallening. I'm doin wallening, so we gotta redo things here. The issue is the masking of mobs. Wallening relies on sidemap (layering based off physical position), which only works on things on the same plane (because planes are basically sheets we render down onto) So rather then masking mobs, let's reuse the masking idea from old fov, and use it to cut out a bit of the game render plane, and blur/over-saturate the bit that's masked out. My hope is this makes things visible in light, but not as much in darkness, alongside making more vivid shit more easily seen (just like real life) Here's some videos, what follows after is the commits I care about (since I had to rip a bunch of planes to nothing, so the files changed tab might be a bit of a mess) Oh also I had to remove the darkness pref since the darkness is doing a lot of the heavy lifting now. I'm sorry. Edit: NEW FOV SPRITES! Thanks dongle your aviator glasses will guide us to a better future. https://github.com/tgstation/tgstation/assets/58055496/afa9eeb8-8b7b-4364-b0c0-7ac8070b5609 https://github.com/tgstation/tgstation/assets/58055496/0eff040c-8bf1-47e4-a4f3-dac56fb2ccc8 ## Commits I Care About [Implements something like fov, but without the planes as layers hell](https://github.com/tgstation/tgstation/commit/a604c7b1c8d74cd27af4d806d85892c1f7e35ba8) Rather then masking out mobs standing behind us, we use a combo color matrix and blur filter to make the stuff covered by fov harder to see. We achive this by splitting the game plane into two, masking both by fov (one normally and one inversely), and then applying effects to one of the two. I want to make the fov fullscreens more gradient, but as an effect this is a good start [Removes WALL_PLANE_UPPER by adding a WALL_PLANE overlay to material walls (init cost comes here)](https://github.com/tgstation/tgstation/commit/25489337392f708cb337fbf05a2329eacdfc5346) @Mothblocks see this. comment in commit explains further but uh, we need to draw material walls to the light mask plane so things actually can be seen on them, but we can't do that and also have them be big, so they get an overlay. Sorry, slight init time bump, about 0.5 seconds. I can kill it with wallening. [Moves SEETHROUGH_PLANE above ABOVE_GAME_PLANE](https://github.com/tgstation/tgstation/commit/beec4c00e01d34a04fba7c2bb98a9b70d27ead82) I don't think it actually wants to draw here @Time-Green I think this was you so pinging for opinion [Resprites FOV masks to be clean (and more consistent)](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d) [f02ad13](https://github.com/tgstation/tgstation/pull/80062/commits/f02ad13696b3b17658af612c62848b48609d785d) This is 100% donglesplonge's work, he's spent a week or so going back and forth with me sharpening these to a mirror shine, real chill ## Why It's Good For The Game Walls are closing in ## Changelog 🆑 LemonInTheDark, Donglesplonge image: Redoes fov "mask" sprites. They're clean, have a very pleasant dithering effect, and look real fuckin good! del: Changed FOV, it no longer hides mobs, instead it blurs the hidden area, and makes it a bit darker/oversaturated /🆑 ###### * It's technically possible if we start using render targets to create 2 sets of sources but that's insane and we aren't doing it |
||
|
|
7a1b1fa9ad |
Splits placeontop proc (#79702)
## About The Pull Request I find the proc hard to read honestly. There's no reason we can't split this into two functions - the secondary functionality is used only once, in reader.dmm. ## Why It's Good For The Game Code improvement Glorious snake case ## Changelog N/A nothing player facing --------- Co-authored-by: san7890 <34697715+san7890@users.noreply.github.com> |