mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-10 23:54:14 +01:00
master
102 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0b5bc3c245 | fixes the "your mother" hallucination for plasmapeople (#96205) | ||
|
|
c41bc9c6c2 |
Fixes bubblegum suicide span, cleans up say spans (#96103)
## About The Pull Request Closes #96085 Also went through other say spans and converted them to defines, as well as fixed beepsky smash's hallucination beepskys not having their spans due to incorrect span being passed. ## Changelog 🆑 fix: Bubblegun suicide no longer makes the user yell out HTML fix: Beepsky Smash beepskys now use proper text formatting code: Cleaned up say span code in a few places /🆑 |
||
|
|
0064d94b1f | Hallucination delusions copy lighting underlays (#95496) | ||
|
|
0ac95930a9 |
Apply height filters to electrocution animation (#95455)
## About The Pull Request The skeleton from being shocked matches your height. ## Changelog 🆑 Melbert fix: The skeleton from being shocked matches your height /🆑 |
||
|
|
da64374423 |
Reverts "Add prosthetic limb" surgery to involve targeting limbs, rather than targeting chest. (Adds stumps) (#95252)
## About The Pull Request - The `prosthetic replacement` surgical operation has been reverted to be closer to how it used to work: The operation is done targeting the limb that's missing The change was made out of necessity, as surgical state was tied to limbs - you had to operate on the chest to re-attach limbs because there was no limb to operate on. To circumvent that, I have done the unthinkable of adding stumps when you are dismembered. - Missing limbs are now represented as an invisible, un-removable, un-interactable limb. Making this change was not as difficult as originally anticipated, and (at least surface level) seems to have broken very little. Surprisingly little had to change to make this work. Direct accesses to `mob.bodyparts` was changed to `mob.get_bodyparts()` with an optional `include_stumps` argument. Similarly, `get_bodypart()` had an optional `include_stumps` added. This means we ultimately barely needed to change anything, and in fact, some loops/checks were able to be streamlined. ## Why It's Good For The Game - As mentioned, this change was out of necessity and was easily the least intuitive part of the broader changes. Reverting it back to how it used to work should make it far easier for people to pick up on, and means we can cut out a bunch of bespoke instruction sets that I had to include. - The addition of stumps also adds a ton of future potential - code wise it allows for stuff like better damage tracking (we can transfer damage between limb <-> stump rather than limb <-> chest), and feature we can do "fun" stuff like have stumps bleed on dismemberment that you can bandage. ## Changelog 🆑 Melbert del: "Add prosthetic limb" surgical operation has been reverted to be a bit closer to how it used to work - you operate on the missing limb / limb stump, rather than on the chest. refactor: Missing limbs are now represented as limb stumps. In practice this should change nothing (for now), as no features were rewritten to make use of these besides surgery. Please report any oddities with missing limbs, however. /🆑 |
||
|
|
e4f533111f |
Deafness is now solely tracked by trait (#95029)
## About The Pull Request Deletes `can_hear`, replaces it with trait-checking deafness. The only two non-trait sources of deafness (hardcrit and lacking ears) were refactored into using the trait. ## Why It's Good For The Game Many places inconsistently check for the deaf trait rather than use can_hear which meant behavior was not consistent. Some code would treat "do we lack ears?" as being deaf, some would not. This unifies all the behavior so being deaf means you're deaf everywhere. It also means we can now easily react to gaining and losing deafness via signal, where before we could not react to it without hooking the trait, organ remove, AND stat change. Which no one did, of course, because who would ever think to do that? ## Changelog 🆑 Melbert refactor: Refactored how deafness is tracked. Please report any weird interactions with sounds, like messages or sfx being missing. fix: Lacking ears and being in hard crit now consistently treats you as "being deaf". This affects a few minor interactions like empath, the jukebox, and sleeping. /🆑 |
||
|
|
599f8dcd98 |
Tweaks some hallucinations to not trigger while unconscious or deaf (#94879)
## About The Pull Request - Fake body - All delusions - Eyes in the Dark - Fake chat messages - Fake death - Fake conspicuous messages - Fake chasms and anomalies - Mirage items (both self and others) - Fake malf APCs - Your Mom - Xeno attack Won't trigger while unconscious - Most fake station messages - Sound of battle Won't trigger while deaf ## Why It's Good For The Game Many of the effects these are mimicking can only trigger while conscious or able to hear, so if you ARE unconscious or deaf, it makes it extremely obvious it's a fake effect. We should instead give them a hallucination that will affect them, like appearing to be on fire. ## Changelog 🆑 Melbert add: Hallucinations that don't make sense to trigger while unconscious or deaf will no longer trigger while unconscious or deaf /🆑 |
||
|
|
bde7b7c903 |
Fixes chat hallucination runtimes caused by gibbed crew (#94700)
## About The Pull Request ``current`` can very well be null if the brain has been destroyed ## Changelog 🆑 fix: Fixed chat hallucination runtimes caused by gibbed crew /🆑 |
||
|
|
2d8c0a777b |
Eye icon folder is less hardcoded (#94242)
## About The Pull Request Moves eyes to there own folder and makes it so they state there icon folder rather then it being hard coded ## Why It's Good For The Game It felt weird that these are lumped into a file that's mostly hair and that its hard-coded like this. This makes it easier to sort out icons. (Thinly veiled downstream support) ## Changelog N/A |
||
|
|
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! /🆑 |
||
|
|
bb464fec9c |
Adds fake emagged apc hallucination (#93937)
## About The Pull Request Adds a common tier hallucination which makes an active apc near you flash blue. The hallucination itself has a low weight (and it has a random chance to skip if there are 0-1 ais) ## Why It's Good For The Game Someone gave me this idea after the change that made hacked APCs no longer consistently blue and I think it's pretty good ## Changelog 🆑 Melbert add: Adds emagged apc hallucination /🆑 |
||
|
|
c7cb0674cc |
Preliminary blood refactor (#93854)
## About The Pull Request Moves all blood handling into procs and adds ways to easily hook into basically every basic blood behavior. This PR is not meant to fix every single case of janky blood logic in the game. The main point and motivation of this PR is to add hooks for blood behaviors. This allows for way more flexibility with blood code. I am not going to fix our 3000 instances of single-letter vars, wacky blood transfers, etc. This is just the groundwork for future PRs to build off of, and by itself, should do very little to change blood behavior. I also added a rigorous set of unit tests for verifying that all of the basic blood volume procs work correctly. ## Why It's Good For The Game Previously, blood was handled via directly reading/writing [var/blood_volume]. This was INCREDIBLY inconsistent and there was no way to hook into it. This PR makes blood handling way more consistent, which is great for all sorts of features. |
||
|
|
f3848f1ef2 |
Renames flatten_list proc to assoc_to_values (#93453)
## About The Pull Request `/proc/flatten_list()` -> `/proc/assoc_to_values()`, also changes the code doc to mirror the language of `assoc_to_keys()`'s code doc ## Why It's Good For The Game Having a proc called `assoc_to_keys` that takes an associative list and returns a list of the keys, and also having a proc that takes an associative list and returns a list of the values, and the latter not being called `assoc_to_values` is very funny ## Changelog 🆑 code: renamed flatten_list proc to assoc_to_values /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
d87637e6ab |
Adjusts easing in places where EASE_IN/OUT was applied without a curve. (#92976)
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
451d12bb28 |
Fixes two inverted hallucination conditions (#92668)
## About The Pull Request Fixes #92639 The eyes-in-dark hallucination worked, but dispelled instantly due to checking "is light" instead of "is dark" Hallucination tier logic was inverted so it only re-calculated max tiers for hallucination effects which didn't want them recalculated ## Changelog 🆑 Melbert fix: Wackier hallucinations should rear their head again fix: Ghost eyes hallucination works properly /🆑 |
||
|
|
35494b93bb |
Telecomms Update: Ability to change existing radio channels and create new ones (#91647)
## About The Pull Request I have added the ability to create and edit station radio channels through the existing telecommunications system. You can change the name of the radio channel and its color. The channel settings are changed and created through the servers (Frequencies Settings)  Here i created my own channel: 1) Add frequency at Receiver (you will not see channel name):  2) Add frequency at Bus (you will not see channel name):  3) Add frequency at Server 4) Add settings for your frequency  5) See the result:  Important Notes: 1) Headsets, radios, and intercoms will not see a change in telecommunications, but will use standard names (Common, Security etc.). 2) There are still reserved names that cannot be used: CentComm, Syndicate, Uplink, CTFs channels 3) Servers must filter frequency for applying settings on them ## Why It's Good For The Game Now telecommunication channels names and colors depends on the settings of the network servers, which makes it more flexible and logical. It is also useful for foreign language servers, as you can translate channel names. ## Changelog 🆑 add: Added ability to change existing radio channels and create new qol: Added color for some buttons in Telecomms UI /🆑 |
||
|
|
9b7e67f705 |
Makes your mother turn around to face her disappointment of a child (#91478)
## About The Pull Request Doesn't get a flat icon of your mother, using an image instead thus making it that she correctly turns around when you try to run from her. Your mother's the opposite of flat anyhow.  Either fix or qol though I'm guessing fix ## Why It's Good For The Game Your mother is now even more realistic ## 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: Your mom now correctly turns around when running after her disappointment of a child /🆑 <!-- 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. --> |
||
|
|
b4061f1800 |
[MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request Refactors most of blood handling code untouched by #90593 and completely rewrites all blood decals, components and reagents. - Blood types now have behavioral flags which allow them to control where they leave decals/DNA/viruses. Oil no longer transfers DNA and viruses with it, while podpeople water-blood doesn't leave visible decals on turfs and items, but still can be picked up by DNA scanners. - Multiple blood types have received unique handling - liquid electricity blood now glows in the dark, oil trails are flammable and lube ones are slippery. Oil blood can be restored with fuel, lube with silicon and slime with stable plasma (as normal plasma already passively regenerates their blood), instead of everything using iron. Saline solution only supplements on iron-based blood and won't do anything to help with bloodloss for species who rely on different blood types. (Roundstart this applies only to Ethereals) - All blood logic has been moved away from the blood reagent itself into a blood element that is assigned to the blood reagent by default, and to any reagent that's drawn from a mob as their "blood" (in ``transfer_blood_to``). This means that blood you draw from lizards will be green and have lizard's blood description instead of mentioning red blood cells, Ethereal "blood" will actually contain their DNA and genes, etc. - Refactored all blood decals. Blood states are no more, everything is now handled via blood DNA. Credits to MrMelbert and Maplestation, as a significant amount of code has been taken from https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his followup PRs. Oil and xenomorph splatters are now subtypes of blood, blood drying is now animated, blood trails now curve and can be diagonal. - Rewrote bloodysoles and bloody_spreader components, credits to Melbert again for the former, while latter now makes more sense with its interactions. Bloody soles no longer share blood DNA with your hands. - Ported Melbert's bloody footprint sprites and bot-blood-spreading functionality. - Removed all species-side reagent interactions, instead they're handled by said species' livers. (This previously included exotic blood handling, thus the removal) - Slightly optimized human rendering by removing inbetween overlay holders for clothing when they're not needed. - Blood-transmitted diseases will now get added to many more decals than before. - Cleaned up and partially refactored replica pods, fixed an issue where monkeys/manipulators were unable to harvest mindless pods. - Exotic bloodtype on species now automatically assigns their blood reagent, without the need to assign them separately. - Clown mobs now bleed (with colorful reagent instead of blood during april fools), and so do vatbeasts (lizard blood) - Implemented generic procs for handling bleeding checks, all sorts of scanners now also correctly call your blood for what it is. - Podpeople's guts are now lime-green like their organs, instead of being weirdly greyish like their water-blood. (Their bleeding overlays are still grey, as they're bleeding water) - Slimepeople now can bleed. Their jelly is pale purple in color, but their wound overlays copy their body color. - Injecting/spraying/splashing/etc mob with a reagent preserves its data, so you could theoretically recycle fine wines from someone's bloodstream - Fixed burdened chaplain's sect never actually giving a blessing when applying effects, and giving a blessing when nothing can be healed. Inverted check strikes again. - Closes #91039 #### Examples A lot of blood here has dried, visually the blood colors are almost exactly the same as before either of the blood refactors.   |
||
|
|
3d01e86e29 |
There will be (colorful) blood: datumizes bloodtypes, greyscales blood sprites, and fixes a lot of inconsistencies with gibs and forensic data (#90593)
## About The Pull Request This PR: - Converts all of the blood types into their own datums, which can be set up to have their own colors, descriptions, and other fun unique properties. For example, the clown blood that is constantly randomizing itself. - Converts all the blood decals into greyscale, which in turn eliminates the need for separate xeno sprites. They both use the same ones now. - Audit of blood splatters/gibs/bodyparts/organs to make sure that they are getting the correct forensic data applied to them. - For the admins: Adds a clown blood smite. My primary goal with was to make the appearance of the new sprites look almost indistinguishable to the original ones. I consider this a "first pass", as in there are still some further refactors I would like to do on the backend side, but am satisfied with it enough to push it forward as a first step towards a better blood system! I didn't want to do too much at once because of A) fatigue and B) easier to test things to make sure I'm not breaking something important this way. This has been test-merged on Nova for over a week now and has been going great, so I finally got around to upstreaming the bones to TG. Although I did test it a bit you may want to TM it just in case I missed some things when copying it over. |
||
|
|
d3d3a12540 |
The big fix for pixel_x and pixel_y use cases. (#90124)
## About The Pull Request 516 requires float layered overlays to be using pixel_w and pixel_z instead of pixel_x and pixel_y respectively, unless we want visual/layering errors. This makes sense, as w,z are for visual effects only. Sadly seems we were not entirely consistent in this, and many things seem to have been using x,y incorrectly. This hopefully fixes that, and thus also fixes layering issues. Complete 1:1 compatibility not guaranteed. I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming inside apply_overlays), and this is still included in the PR to flash out possible issues in a TM (Plus I will need someone to grep the runtimes for me after the TM period to make sure nothing was missed). After this is done I'll remove all these extra checks. Lints will probably be failing for a bit, got to wait for [this update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d) to them to make it into release. Or just unlint the lines, though that's probably gonna produce code debt ## Why It's Good For The Game Fixes this massive 516 mess, hopefully. closes #90281 ## Changelog 🆑 refactor: Changed many of our use cases for pixel_x and pixel_y correctly into pixel_w and pixel_z, fixing layering issues in the process. /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: SmArtKar <master.of.bagets@gmail.com> |
||
|
|
eb0e842320 |
Hallucination revamps and additions (#89865)
## About The Pull Request 1. Hallucination effects are now tiered Hallucinations now all have tiers, ranging from common to special. If you are just hallucinating a teeny bit, you will not experience the more extreme hallucinations, like bubblegum or your mom. But if you're hallucinating off your butt, you will be a bit more likely to experience them. 2. Hallucination rate has been tweaked Default hallucination cooldown is now 20-80 seconds, up from 10-60 seconds. However the cooldown will *also* vary depending on just how much you're hallucinating, going down to 10-40 seconds. 3. RDS is now capped a bit lower (meaning you don't see the higher tiers like bubblegum). But I added a preference to uncap it. For the people who actually like bubblegum visits. 4. If a hallucination fails to trigger, the cooldown will partially reset. (by 75%) 5. "Fake chat" hallucination will pick more viable subjects. Fake chat will try to find someone who can actually speak your language, rather than make a monkey speak mothic or something. (I may revisit this so if you're super-hallucinating it reverts to old behavior though.) 6. Adds a hallucination: Fake blood You hallucinate that you start bleeding, very simple. 7. Adds a hallucination: Fake telepathy You hallucinate a random telepathic message, similar to fake chat. 8. Adds a hallucination: Eyes in the Dark A nearby dark turf will have a set of glowing red eyes shine through the dark. A classic. 9. Adds some new sub-hallucination: PDA ringtone (fake sound), summon guns/magic (fake item) Funny prank. 10. Makes mindbreaker a bit more effective at combating RDS. Pretty much does nothing right now unless you gulp like 50u. ## Why It's Good For The Game Hallucinations are pretty one note if you experience them for longer than 10 minutes. This is due to two fold: - Many hallucinations are goofy, and not subtle - Hallucinations trigger very rapidly You will never fall for a hallucination because in between "You see John Greytide put the blueprints away", you get your mom yelling at you, everyone looking like syndies (again), and bubblegum This pr addresses it by - Limiting the wacky hallucinations for when you're really off your gourd - Reducing the period between triggers - Adding a few hallucinations If the wackier hallucinations are reserved for when you're really off your rocker, this lets the more subtle ones sink in over time, leaves more room for second guessing ## Changelog 🆑 Melbert add: Adds 4-5 new hallucinations. Collect them all. balance: If you are only hallucinating a little bit, the game will prefer to pick more subtle hallucinations. If you are hallucinating a ton, it will prefer the more wacky hallucinations. balance: If you are only hallucinating a little bit, the cooldown between hallucinations is longer. If you are hallucinating a ton, it will be shorter. balance: If a hallucination fails to trigger (such as a deaf person getting a sound hallucination) the next one will be a lot sooner. balance: RDS hallucination amount is capped at mid tier hallucinations. This means bubblegum and co. will be a lot rarer, or will even never show. HOWEVER, there is now a preference allowing you to uncap your RDS hallucinations. balance: Mindbreaker toxin is more effective at suppressing RDS. balance: Some hallucinations effects have been tweaked up or down according to the new thresholds. Madness mask as an example. fix: "Fake Fire" Hallucination works again, and now has a unique message for if you stop-drop-roll that other people see. /🆑 |
||
|
|
5b7b747e7a |
Fixed delusions not updating their planes, made them override screentips and examine names (#89941)
## About The Pull Request Similarly to prosopagnosia, they also override your examine and tooltip names now. Closes #89926 ## Changelog 🆑 balance: Delusions now override your examine and tooltip names, similarly to prosopagnosia. fix: Delusions no longer turn you into shadowy blobs when moving between z-levels /🆑 |
||
|
|
ef2fe8266a |
Fixes fake airlock bolts being examineable (#89901)
## About The Pull Request Closes #89857 |
||
|
|
05d1bfe157 |
Fixes hallucinations using wrong planes (#89844)
## About The Pull Request All tested Closes #89836 ## Changelog 🆑 fix: Fixed certain hallucinations displaying below floors/decals/items /🆑 |
||
|
|
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> |
||
|
|
a439e2379a |
Tweaks to chat hallucinations (#89486)
## About The Pull Request It was pointed out to me that the hallucinations json file still mentioned "viro" (as a job) and "gang leader" (as something to be scared of), two things our codebase doesn't have. So I removed them from the list. While I was there I couldn't resist adding a bunch of extra stuff also. ## Why It's Good For The Game More diversity of fake callouts you can hear over the radio is fun. ## Changelog 🆑 add: Adjusted what things you can hallucinate people being accused of doing or being over the radio /🆑 |
||
|
|
bc19447758 |
Fix blades equipped to a void cloak having visible sprites (#89343)
## About The Pull Request Fixes https://github.com/tgstation/tgstation/issues/87345 This adds a new item trait, `TRAIT_NO_WORN_ICON`, which is exactly what it says on the tin - the worn overlay for said item will not be added when the trait is present, so we give it to items hidden by the hood. I also refactored the `EXAMINE_SKIP` item flag into `TRAIT_EXAMINE_SKIP`.  ## Why It's Good For The Game stealth thing having an obvious sprite tell is bad. bugfix good. ## Changelog 🆑 fix: Void Cloaks now properly hide blades and such in the suit storage from the wearer's sprite. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
b72368fd03 |
#87754: Batons have their stamina damage reduced by armor, get stun armor penetration, but not a test and actually intended to be merged (#88830)
## About The Pull Request This PR is literally just https://github.com/tgstation/tgstation/pull/87754 so you should probably go read the contents of that PR to learn more. ### Sorry, No Stunsword in this PR. Stunbaton inhand tips change color as the cell it has inside increases in capacity. They also have different animations based on the cell, to make it clearer which one you are looking at.  ## Why It's Good For The Game So, two things; A) The test showed that there is more work to be done, but that this was actually improving survivability to some degree against batons when properly geared, while not necessarily impacting the average tider arrest attempts. It didn't solve the issue of alleviating the need for anti-baton knockdown tools, but it did help a bit. Enough that I think this could be worked on further as a foundation for solving that problem. B) People have been asking me to, or have made it obvious that they would like to see this actually merged into the game. So uh...here is that PR if any maints care for it. I think there is still more to do for testing and possible changes to address the issues I was trying to investigate in the test. However, I actually think this change could be an important step towards accomplishing some of those changes. It isn't quite enough to start pulling out baton resistance from various sources just yet, but it is a start. ## Changelog 🆑 balance: Batons now respect the armor worn by targets. Analog batons respect MELEE armor. Cell-type batons respect ENERGY armor. balance: Various batons have differing amounts of armour penetration based on what type of baton it is. balance: Heads of staff have color graded batons to denote penetration power. Bronze (Quartermaster), Silver (Chief Engineer, Chief Medical Officer, Head of Personnel, Research Director), Gold (Captain). Contractor batons are equivalent to Gold. balance: Cell-type batons gain armor penetration based on their cell's quality. The better it is, the more it penetrates. /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> |
||
|
|
2e7be24aad |
Honor-riffic: Adds toggleable honorific titles to certain job ID trims (#88309)
## About The Pull Request This implements a new, minor, but flavorful system to IDs -- Honorifics. Does going by your full name not suit you? Do you demand respect for the position on Space Station 13 that you've earned and want to be addressed by your title? Do you take yourself WAY too seriously? This is for you. Toggled by ctrl-clicking your ID, honorifics append a title to your name depending on your position. Certain titles (Captain, Officer, Doctor, etc.) will only append to the start (replacing or including the first/last name), while others (PhD., Esq.) can only be appended at the end.  Each job TRIM has a set honorific and positions it can be assigned to. A doctor can be "Doctor Peterson" or "Doctor Peterson Bungle" or "Doctor Bungle". A Lawyer can only choose to be "Peterson Bungle, Esq.". This will only occur when the speaker's voice is the same identity as the one written on the ID's registered name. This should not interfere with Unknown voice obfuscation, stolen ID shenanigans, or anything gameplay-oriented. Hopefully. This feature is also mononym friendly!  This also makes `first_name()` and `last_name()` global procs, and adds one to check if a passed string has spaces/dashes/whitespace/whatever. All of this is compatible with ID name changes, but the voice name must align with the card name to display the honorific. If you are "Peter Stinkypants" with your honorific set to display "Doctor Stinkypants", and your ID's registered name is changed to "Peter Stinker", you show up as "Peter Stinkypants (as Peter Stinker)" with no honorific provided. If you become "Peter Stinker" and have a "Peter Stinker" ID, you will show up as "Doctor Stinker" once again. That all make sense? Great. <details> <summary>So about the ID name stuff...</summary> <br> So, when you activate an honorific on your ID, it DOES change the actual object's name. Not the registered name, but the ID's name will go from "Peter Dawson's ID card" to "Captain Dawson's ID card" when an honorific is applied. This, as far as I've tested, does not mess with anything important, but I can totally see it doing so in a way that makes ctrl-Fing through logs harder than it needs to be. This could probably be changed without too much effort so if the issue does arise I can fix it. If not I am totally fine with reverting this PR until I can make it work (if I can at all). <br> Admittedly this doesn't have much testing with holopads/radios, but I'm confident the message composure is handled well enough to only display the right names under the right circumstances. If this fucks up logging or naming in any way tell me ASAP because I have a sinking feeling it will in a way more catastrophic than I could ever predict. This PR has been tested thoroughly but I have my limits. </details> |
||
|
|
ce6caf06c7 |
Reworks Tasers (doesn't give them back to Security though) Because Funny (#88347)
## About The Pull Request https://github.com/user-attachments/assets/ef727913-6568-4705-91ca-330e7a1bb177 - Electrodes now have a physical representation in the form of a beam - When you are hit with an electrode you will rapidly lose stamina while the beam is attached - The electrode, being physical, can be interacted with - If you are stun immune, you can resist to remove them - If you get out of range of them, they'll remove themselves - You can help intent on someone to remove them - If someone runs into them, they will become tangled in them (being partially stunned themselves, but removing them) - Yes, this affects AI turrets. AI turret electrodes are stronger (they do double the amount of stamina damage) - Turret tasers will avoid tasing the same target for infinite time, and will attempt to avoid tasing the same target - Handheld tasers can be cancelled early by clicking on the target again - Tasers will drain power as they continue to tase a target ## Why It's Good For The Game Tasers are pretty one note so I thought it'd be cool to add some depth to them while making them function more like... well... a taser. <Details> <Summary> Original idea behind this </Summary> I had an idea, in that we could give security more specialized gear setups (a la Goon) - putting stuff like tasers in a support weapon position while batons sit in a "front line" position, then allowing people to pick and choose at shift start This way we could balance certain aspects of the security toolkit (*cough cough batons*) while still allowing newer players to be effective in a security position As right now, if you want to contribute as a security officer, you **have** to know your way around melee combat - lest you get disarmed and owned, which is why it's so strong. Buuuuut if newer players had the option to pick a primarily ranged option (with its own strengths and weaknesses), or an option that is most effective when paired with a friend, we could bring the baton strength down accordingly. </Details> ## Changelog 🆑 Melbert balance: Tasers are now more realistic del: Electrodes are no longer in the hallucination projectile pool /🆑 |
||
|
|
584de91709 |
Adds a chemical to the chem kit (#88393)
## About The Pull Request Adds Syndol to the chemical kit - It deals minor liver damage - It is a very addictive hallucinogen - When a security officer is exposed, they will hallucinate other mobs as Nuke Ops - When an assistant or clown is exposed, they will hallucinate other mobs as Security Officers - When exposed to less than ten units, these unique hallucinations will only apply to all mobs *outside* of the view of the victim. - When exposed to more than ten units (an overdose), it applies to *all* mobs, not just those in view. - All other members of the crew will just get normal hallucinations. - Exposure is completely silent (until the liver damage kicks in, which takes a while)  ## Why It's Good For The Game Someone dropped the idea in Discord and I thought it was pretty funny. It also gives syndies a way to temporarily disorient a security officer a la the old chaos holoparasite (oh god who was I chasing everyone is a syndie?). ## Changelog 🆑 Melbert add: Adds Syndol to the chemical kit, an addictive hallucinogen that applies bonus effects when security officers, assistants, or clowns are exposed. /🆑 |
||
|
|
75696ab873 |
Fixes random stuff spilling into ooc tab (#88221)
## About The Pull Request `boldannounce` is NOT for use ICly it's only for OOC stuff. `bolddanger` is identical it just doesn't carry the same baggage ## Changelog 🆑 Melbert fix: Stuff like the SM exploding will no longer output to your OOC tab /🆑 |
||
|
|
bbb7a41743 |
Guncode Agony 4: The Great Projectile Purge (#87740)
## About The Pull Request ~~Kept you waitin huh!~~ The projectile refactor is finally here, 4 years later. This PR (almost) completely rewrites projectile logic to be more maintainable and performant. ### Key changes: * Instead of moving by a fixed amount of pixels, potentially skipping tile corners and being performance-heavy, projectiles now use raymarching in order to teleport through tiles and only visually animate themselves. This allows us to do custom per-projectile animations and makes the code much more reliable, sane and maintainable. You (did not) serve us well, pixel_move. * Speed variable now measures how many tiles (if SSprojectiles has default values) a projectile passes in a tick instead of being a magical Kevinz Unit™️ coefficient. pixel_speed_multiplier has been retired because it never had a right to exist in the first place. __This means that downstreams will need to set all of their custom projectiles' speed values to ``pixel_speed_multiplier / speed``__ in order to prevent projectiles from inverting their speed. * Hitscans no longer operate with spartial vectors and instead only store key points in which the projectile impacted something or changed its angle. This should similarly make the code much easier to work with, as well as fixing some visual jank due to incorrect calculations. * Projectiles only delete themselves the ***next*** tick after impacting something or reaching their maximum range. Doing so allows them to finish their impact animation and hide themselves between ticks via animation chains. This means that projectiles no longer disappear ~a tile before hitting their target, and that we can finally make impact markers be consistent with where the projectile actually landed instead of being entirely random. <details> <summary>Here is an example of how this affects our slowest-moving projectile: Magic Missiles.</summary> Before: https://github.com/user-attachments/assets/06b3a980-4701-4aeb-aa3e-e21cd056020e After: https://github.com/user-attachments/assets/abe8ed5c-4b81-4120-8d2f-cf16ff5be915 </details> <details> <summary>And here is a much faster, and currently jankier, disabler SMG.</summary> Before: https://github.com/user-attachments/assets/2d84aef1-0c83-44ef-a698-8ec716587348 After: https://github.com/user-attachments/assets/2e7c1336-f611-404f-b3ff-87433398d238 </details> ### But how will this affect the ~~trout population~~ gameplay? Beyond improved visuals, smoother movement and a few minor bugfixes, this should not have a major gameplay impact. If something changed its behavior in an unexpected way or started looking odd, please make an issue report. Projectile impacts should now be consistent with their visual position, so hitting and dodging shots should be slightly easier and more intuitive. This PR should be testmerged extensively due to the amount of changes it brings and considerable difficulty in reviewing them. Please contact me to ensure its good to merge. Closes #71822 Closes #78547 Closes #78871 Closes #83901 Closes #87802 Closes #88073 ## Why It's Good For The Game Our core projectile code is an ungodly abomination that nobody except me, Kapu and Potato dared to poke in the past months (potentially longer). It is laggy, overcomplicated and absolutely unmaintaineable - while a lot of decisions made sense 4 years ago when we were attempting to introduce pixel movement, nowadays they are only acting as major roadblocks for any contributor who is attempting to make projectile behavior that differs from normal in any way. Huge thanks to Kapu and Potato (Lemon) on the discord for providing insights, ideas and advice throughout the past months regarding potential improvements to projectile code, almost all of which made it in. ## Changelog 🆑 qol: Projectiles now visually impact their targets instead of disappearing about a tile short of it. fix: Fixed multiple minor issues with projectile behavior refactor: Completely rewrote almost all of our projectile code - if anything broke or started looking/behaving oddly, make an issue report! /🆑 |
||
|
|
b67a0901f2 |
Fix issues discovered via TypeMaker (#87596)
## About The Pull Request Fixes issues with var typing and proc arguments, discovered using OpenDream's WIP TypeMaker feature (using improvements I haven't PR'd upstream yet). ## Why It's Good For The Game Codebase maintenance. |
||
|
|
9b40e13f8b |
Makes dust animation look less 2006 (#87435)
## About The Pull Request This was inspired by an effect I saw on Paradise but I sprited my own https://github.com/user-attachments/assets/2130053c-a6ea-48e6-8b62-4c08563fd154 (Todo, make the skeleton appearing less jank) ## Why It's Good For The Game 1. Looks less 2006. 2. The dust sprite will reflect the mob being dusted, since it's literally just Your Sprite. Your clothes, species, etc. 3. All species and all mob types now animate being dusted - from corgi to xenos, from borgs to lizards -, and we can even reuse this effect for items being dusted if we so desire ## Changelog 🆑 Melbert image: The animation for being dusted now takes into account your sprite, rather than being a normal nude spaceman /🆑 |
||
|
|
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 |
||
|
|
9f7d6dea62 |
Outfits that put items in your hand now respect if the outfit is visual only (#87355)
## About The Pull Request On a downstream, we have an antagonist, that is a less competent wizards. This antagonist's preview outfit has a beer bottle in their hand, which has caused runtimes, as the bottle did not have any reagents instantiated, and it tried check its length for sloshing. After putting in a check for the `initial` argument of `on_equip`, I have noticed that the problem goes deeper: the various procs that handle putting something in your hand do not pass along if the items is put in your hand as a preview or not. This PR adds a new optional var to these procs, ensuring that unwanted behaviour during previews won't trigger. I also swapped `visualsOnly` to snake case, as it looked inconsistent with the rest of the code style. ## Why It's Good For The Game Making the argument that ensures avoiding side effects during previews work with all kinds of items is good. ## Changelog 🆑 fix: if an outfit puts a reagent container in the preview dummy's hand, it will not try to slosh code: outfits putting items in your hand will respect the visual_only argument /🆑 |
||
|
|
96c0c0b12c |
Fish infusion (#87030)
## About The Pull Request I'm adding a new infusion ~~(actually four, but two of them are just holders for specific organs tied to a couple fish traits)~~ to the game. As the title says, it's about fish. The infusion is composed of three primary organs, plus another few that can be gotten from fish with specific traits. The primary organs are: - Gills (lungs): Instead of breathing oxygen, you now need to stay wet or breathe water vapor. - fish-DNA infused stomach: Can safely eat raw fish. - fish tail: On its own, it only speeds you up on water turfs, but it has another effect once past the organ set threshold. It also makes you waddle and flop like a fish while crawling (I still gotta finish sprites on this one) Other organs are: - semi-aquatic lungs: A subtype of gills from fish with the 'amphibious' trait, falls back on oxygen if there's no water. Can also be gotten from frogs, axolotl and crabs. - fish-DNA infused liver: From fish with the 'toxic' trait. Uses tetrodotoxin as a healing chem instead of a toxin. Also better tolerance to alcohol if you want to drink like a fish (ba dum tsh). - inky tongue: From fish with the 'ink production' trait. Gives mobs the ability to spit ink on a cooldown, blinding and confusion foes temporarily. The main gimmick of this infusion revolves around being drenched in water to benefit from it, In the case you get the gills organ, this also becomes a necessity, to not suffocate to death (alternatively, you can breathe water vapor, without any benefit). To enable the bonus of the organs set, three organs need to be infused. They can be gills, stomach, tail and/or liver, while the inky tongue doesn't count towards it. Once the threshold is reached, the following bonus are enabled: - Wetness decays a lot slower and resists fire a bit more. - Ink spit becomes stronger, allowing it to very briefly knock down foes. - Fishing bonuses and experience - Resistance to high pressures - Slightly expanded FOV - drinking water and showers mildly heal you over time. - for felinids: You won't hate getting sprayed by water or taking a shower. - While wet: - - If the fish tail is implanted, crawling speed is boosted. - - You no longer slip on wet tiles. - - You also become slippery when lying on the floor. - - You get a very mild damage resistance and passive stamina regeneration, and cool down faster. - - You resist grabs better. - - get a very weak positive moodlet. - However, being dry will make you quite squisher, especially against fire damage, slower and give you a modest negative moodlet. While working on it, I've also noticed a few things that explained why tetrodotoxin (TTX) did jackshit at low doses, because livers have a set toxin tolerance value, below which, any amount of toxin does nothing. Also I've felt like reagents like multiver & co were a bit too strong against a reagent that's supposed to work at very low doses, with slow metabolization, so I've added a couple variables to buff TTX a bit, making it harder to purge and resistant to liver toxin tolerance (also added a bit of lungs damage). ## Why It's Good For The Game I wanted to take a shot at coding a DNA infusion and see how chock-full I could make it. DNA infusions are like a middle point between "aha, small visual trinket" and organs with generally ok effects. I seek to make something a bit more complex ~~(also tied to fishing ofc because that's more or less the recurrent gag of my recent features)~~ primaly focused around the unique theme of being strong when wet and weaker when dry. EDIT: The PR is now ready, have a set of screenshots of the (fairly mid) fish tails (and gills, barely visible) on randomly generated spessman and one consistent joe:  ## Changelog 🆑 add: Added a new infusion to the game: Fish. Its main gimmick revolves around being stronger and slippery when wet while weaker when dry. balance: Buffed tetrodotoxin a little against liver tolerance and purging reagents. /🆑 |
||
|
|
c7e14784b3 |
Refactors health doll, replaces "wounded" screen alert (#87011)
## About The Pull Request The screen alert for being wounded is deleted Instead, your health doll will now glow red on any (and all) wounded limbs https://github.com/user-attachments/assets/83565684-3e19-4753-8034-d8de6574e2b8 To accomplish this, the doll was refactored a bit. No longer operates off of overlays, now uses vis contents across every limb, and just updates the icon state of all those vis contents ## Why It's Good For The Game Wounds really spam the hell out of you with screen alerts and it often blocks you from seeing more relevant alerts that you care about The mere presence of a minor dislocation on your leg prevents you from noticing that you are no longer breathing. This is a bit troublesome This can be resolved in other ways, of course - adding a priority value to alerts? - but instead, I think we can just make better use of our existing hud elements I find this decently intuitive, at a glance. - The old screen alert gave you a tooltip saying you could click the alert to examine yourself. - Clicking on the health doll examines yourself the exact same way. - So, players may see their doll glowing red, and click on it to self examine, to see the report of them having a wound on their leg or chest or whatever. ## Changelog 🆑 Melbert del: Having any wounds no longer gives you an alert in the top right qol: Having any wounds now make the corresponding bodypart on your health doll (the lil dude on the right side of the screen) glow red. refactor: Refactored how the hud's health doll shows up for humans. Report any oddities /🆑 |
||
|
|
3f0b4abb8d |
Replaces world.icon_size (and some magic numbers) with defines (#86819)
## About The Pull Request All usages of world.icon_size in code have been replaced with new `ICONSIZE_X`, `ICONSIZE_Y` and `ICONSIZE_ALL` defines depending on context Replaces some "32" magic numbers with the defines A few bits of code have been modified to split up x/y math as well ## Why It's Good For The Game Magic number bad, code more readable, code more flexible and I'm told there's an access cost to doing world.icon_size so minor performance gains ## Changelog 🆑 tonty code: made some code relating to the world's icon size more readable /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
2cf34ec44e | Reduces volume of the nuke sound (#86888) | ||
|
|
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
|
||
|
|
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> |
||
|
|
e90a9b4b68 |
Flattens The Floor Plane (Camera Update Too) (#84350)
## About The Pull Request Ok so like, side map right? It makes things higher up in the world render above things lower down in the world. Most of the time this is what we want, but it is NOT what we want for floors. Floors are allowed to be larger then 32x32, and if they are we want them to render based off JUST their layer. If we don't allow this grass turfs and others get cut off on their bottom edge, which looks WEIRD. In order to make this happen, we can add TOPDOWN_LAYER to every layer on the floor plane and disable sidemap. I've added documentation for this to VISUALS.md, and have also implemented unit test errors to prevent mixing TOPDOWN layers with non topdown planes (or vis versa). This new test adds ~1 second to tests, which is I think a perfectly scrumpulent number. EDIT: I nerd sniped myself and implemented sidemap layering and lighting for cameras (also larger then 32x32 icon support for getflat) The lighting isn't perfect, we don't handle things displaying in the void all that well (I am convinced getflat blending is broken but I have no debugger so I can't fix it properly), but it'll do. This came up cause I had to fix another layering issue in cameras and thought I might as well go all in.  ## Why It's Good For The Game Old:  New:  ## Changelog 🆑 fix: Grass turfs will render properly now. Reworked how floors render, please report any bugs! fix: Cameras now properly capture lighting fix: The layering seen in photos should better match the actual game /🆑 |
||
|
|
e4fe3946fc |
Unique Heretic Ascension Announcements (#82878)
## About The Pull Request All the audio work done by @Flleeppyy, coding done by me (Absolucy), with feedback and initial ideas from @aberrantQuesrist and @KittyNoodle [Preview of all sounds](https://www.youtube.com/watch?v=v5vBTgRPQKU) ## Why It's Good For The Game Adds extra flavor and spice to the game for important events, much better than the overused generic "space-time anomalies" announcement. ## Changelog 🆑 Flleeppyy, Absolucy sound: Added unique announcement jingles to each heretic path's ascension, replacing the old "space-time anomalies detected" announcement. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
430896b5cf |
Blueprints tgui (#82565)
## About The Pull Request Blueprints now use a TGUI panel instead of the old HTML one. Also did general code improvement and maintaining to blueprints in general and also destroyed the ``areaeditor`` level, repathing it to just 'blueprints'. Also adds a sound when you look at structural data cause why not Video demonstration: https://github.com/tgstation/tgstation/assets/53777086/861773fd-3d57-472d-bc94-d67b0d4f1dbd The 4 blueprint types:  ## Why It's Good For The Game Another HTML menu dead underground. This is more responsive and doesn't require constant updating to see which area you're in, feels less OOC (instead of saying "the blueprints say", just say it, you ARE the blueprints). Like, come on  Look at all this wasted space  ## Changelog 🆑 refactor: Blueprints now use TGUI. qol: Blueprints can now be used while lying down. /🆑 |
||
|
|
0dc6b71a87 |
Change setting item weight class to a setter to patch some weight class related shenanigans (#82494)
## About The Pull Request Fixes #81052 Fixes #58008 Setting weight class of items is now done via `update_weight_class`. I updated as many occurrences of manually setting `w_class` as I could find but I may have missed some. Let me know if you know of any I missed. This is done to allow datums to react to an item having its weight class changed. Humans and atom storage are two such datums which now react to having an item in its contents change weight class, to allow it to expel items that grow to a weight class beyond what is normally allowed. ## Changelog 🆑 Melbert fix: You can't fit items which are normally too large for a storage by fitting it in the storage when it is small, then growing it to a larger size. /🆑 |
||
|
|
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> |
||
|
|
0a17a2d0f1 |
Adds and improves logging for various shit. (#81738)
## About The Pull Request Adds logging for RCD construction and deconstruction. Hallucinated projectiles no longer causes logs. Flamethrowers log gas mixture information, the flamethrower, the gas tank, tank distribution pressure and whether it was lit. Adds a lot more logging to records consoles. Frozen objects now log when they get shattered. ## Why It's Good For The Game Closes #68452 Closes #71798 Closes #78008 Closes #81098 Closes #81130 ## Changelog 🆑 Pickle-Coding and Rhials admin: RCD construction and deconstruction are logged. admin: Hallucinated projectiles no longer log. admin: Gives more detail to flamethrower logging. admin: More actions are logged for records consoles usage. admin: Frozen object shattering is logged. /🆑 --------- Co-authored-by: Rhials <Datguy33456@gmail.com> |