mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 01:24:21 +01:00
mayfools
477 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
6e9f2ccfc0 |
Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts: # .github/workflows/compile_all_maps.yml # .github/workflows/run_integration_tests.yml # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/_onclick/hud/credits.dm # code/controllers/subsystem/networks/id_access.dm # code/datums/diseases/advance/advance.dm # code/datums/diseases/advance/symptoms/heal.dm # code/game/machinery/doors/door.dm # code/game/objects/structures/crates_lockers/closets/secure/medical.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/modules/antagonists/malf_ai/malf_ai_modules.dm # code/modules/jobs/job_types/_job.dm # code/modules/loadout/categories/accessories.dm # code/modules/loadout/loadout_helpers.dm # code/modules/loadout/loadout_items.dm # code/modules/loadout/loadout_preference.dm # code/modules/mob/living/silicon/robot/robot_defense.dm # code/modules/mod/mod_theme.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/reagents/reagent_containers/cups/drinks.dm # code/modules/shuttle/mobile_port/variants/supply.dm # code/modules/surgery/organs/internal/eyes/_eyes.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png # icons/hud/screen_full.dmi |
||
|
|
0b0c5ea91e |
Unit test material checks are now performed on all crafting recipes by default. All stack recipes now transfer mats to the results (#92620)
## About The Pull Request Extends the part of the crafting unit test that ensures consistency between the total mats of the components of a recipe (or rather, the result of said recipe) and a generic instance of the same type as its result, previously only implemented on food recipes. ## Why It's Good For The Game This ensures a degree of consistency with the material composition of various objects in the game. I couldn't do it in the original PR as that one was too big already and it took months to get it merged, and have the relative bugs fixed. Currently a WIP as I slowly deal with the unit test reports. ## Changelog 🆑 refactor: Follow-up to the crafting/material refactor from months ago. All objects crafted with stacks now inherit their mat composition (not necessarily the effects and color) by default, while previously only a few things like chair, sinks and toilets did. Report any object looking or behaving weirdly as a result. fix: The material composition of ammo boxes is no longer a 1/10 of what it's supposed to be. It was a shitty hack to make it harder to recycle empty ammo boxes. Instead, they lose materials as they're emptied now. /🆑 |
||
|
|
baf3837ae8 |
Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29
# Conflicts: # _maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm # _maps/RandomRuins/SpaceRuins/garbagetruck2.dmm # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # _maps/map_files/tramstation/tramstation.dmm # code/_onclick/hud/new_player.dm # code/datums/components/squashable.dm # code/datums/diseases/advance/symptoms/heal.dm # code/datums/diseases/chronic_illness.dm # code/datums/status_effects/buffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/stamcrit.dm # code/game/machinery/computer/crew.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/wall_mounted.dm # code/game/turfs/closed/indestructible.dm # code/modules/admin/view_variables/filterrific.dm # code/modules/antagonists/heretic/influences.dm # code/modules/cargo/orderconsole.dm # code/modules/client/preferences.dm # code/modules/events/space_vines/vine_mutations.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/carbon/human/death.dm # code/modules/mob/living/carbon/human/species_types/jellypeople.dm # code/modules/mob/living/damage_procs.dm # code/modules/mob/living/living.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mob_spawn/mob_spawn.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/projectiles/guns/ballistic/launchers.dm # code/modules/projectiles/guns/energy/laser.dm # code/modules/reagents/chemistry/machinery/chem_dispenser.dm # code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/medicine_reagents.dm # code/modules/surgery/healing.dm # code/modules/unit_tests/designs.dm # icons/mob/inhands/items_lefthand.dmi # icons/mob/inhands/items_righthand.dmi # tgui/packages/tgui/interfaces/ChemDispenser.tsx |
||
|
|
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! /🆑 |
||
|
|
8c89b371af |
[NO GBP] Fixes ear protection equipment doing nothing. Flashbangs don't work well in vacuums (#93866)
## About The Pull Request Turns out ear protection was subtracting the values rather than adding them to the protection, and I didn't notice that much until later (now). Also flashbangs don't have much of a bang (flashbangs without the bang basically) when there's no air. ## Why It's Good For The Game Also everyone should know that IRL sounds don't work well in vacuums cuz there are no molecules to carry sound waves around. Unfortunately we are not so refined about it in game, which is a fucking shame. This is a very simplistic implementation than anything. The fact that I'm adding it to this PR as well is because being in a vacuum gives you plenty of sound protection now. It's about *some* consistency. ## Changelog 🆑 fix: Fixes ear protection equipment doing nothing. balance: Detonating a flashbang in space or any environment with little to no air no longer stuns anyone NOT on the same tile as the flashbang with loud bangs. Flashing still works as intended though. /🆑 |
||
|
|
71faa643bf | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-12 | ||
|
|
8ee1cd2474 |
Makes EMP logs less bad (#93841)
## About The Pull Request closes #93805 ## Why It's Good For The Game we actually have almost no emp logging at all lol, not even emp chem reaction, so you barely can track potential griefer? ## Changelog 🆑 admin: EMP logs are improved, additionally chemical EMP reactions are now logged. /🆑 |
||
|
|
d0ca474789 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 | ||
|
|
922bd0cb92 |
Refactor get_ear_protection() and soundbang_act() to be less bs (#93472)
so, the current `COMSIG_CARBON_SOUNDBANG` signal is kinda lame because: 1) it's relegated to carbon mobs 2) it means ear protection equipment actually has no effect when `get_ear_protection` is called instead. 3) It's sent in more than one place in the code So I replaced it with another signal, this one properly sent in `get_ear_protection`, and therefore `soundbang_act` as well. What's also lame is that the code for both `get_ear_protection` and `soundbang_act` can be easily moved to the living type, and it wouldn't make a huge impact aside causing simple mobs to be stunned very briefly by flashbangs since they cannot be knocked down anyway. The less the code is specific to a subtype, the easier it's to work with, the fewer the paradigms etc. Another lame thing is some of the code being kinda old. Also I wanted to fix an issue with the shriek ling ability detailed in #93401. I wanted to make the ability more consistent with how other sound-related abilities work by making it use `soundbang_act`, but with an intensity higher than any other feature so far, beside point-blank flashbangs (holding on standing on one). I've also buffed the "ear protection" offered by vacuums from 1 to 3, meaning nothing but point-blank flashbangs will go through. Yes, this means shrieks are not good in a vacuum because sound generally propagate in absence of molecules that can transmit the vibration... at least IRL. The game's an approximation anyway, but it's still inconsistent, like a fuckton of other things that are even more outside of the scope of this PR. Well, at least it affects simple/basic mobs too now. ## Why It's Good For The Game This will fix #93401 and make some code less old and bad. ## Changelog 🆑 refactor: refactored code for ear/soundbang protection. Flashbangs and other things can now affect simple/basic mobs as well, not just carbon and occasionally silicons. balance: Aliens are no longer impervious to soundbang_act. Still very resistant to it due to their hardcoded ear protection balance: How the resonant shriek changeling ability works is now slightly more consistent with the ear/soundbang protection, meaning it won't work well in a vacuum, but at least it works on simple mobs now. fix: Everyone can now hear a changeling shriek, unless they're already deafened or in a vacuum. /🆑 |
||
|
|
d14e538393 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-15-10-2025 | ||
|
|
a2c7c8e57b |
Heretic Antagonist Full Overhaul. (#92119)
## About The Pull Request Heretic has received a complete overhaul. This PR touches nearly every aspect of the antagonist. For readability's sake, not every change is going to be listed in this pull request. For the full list of changes please refer to the design doc: https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g. Code by Me, @Xander3359 and @Arturlang TGUI by @Arturlang Sprites by OrcaCora and GregorDM Writing bits by @necromanceranne ### Core changes - Cross-pathing has been removed. Main knowledge spells are now exclusive to their path (for the most part). - For every main knowledge unlocked (save for the robes and the blade upgrade), Heretics can choose one option from a draft of 3 random side knowledges (this is a free point). - Heretics can now purchase side knowledges from a new tab, the "Knowledge Shop". Side-knowledges have been divided by tier (Stealth, Defense, Summons, Combat and Main). Tiers are unlocked as you progress toward your main path. - Heretics now gain the grasp and mark upgrade immediately, but their main knowledge choices cost twice as much (except for the first spell, the robes and the blade upgrade). - Path specific robes have been introduced! They come with their own set of quirks. - Each Path has received a passive ability. This passive is upgraded when you first create your robes, and again when you complete the Ritual of Knowledge. - Paths have been rebalanced as a result of the removal of cross-path progression. Cosmic and Moon paths have received soft reworks. - Upon unlocking the path 2nd level or reaching a total of 8 points worth of knowledge, Heretics will lose the ability to blade break (and the limit on blades all together). - Ascension now automatically calls the shuttle with no possibility of a recall. - Late join Heretic has been removed. ### New UI <img width="750" height="635" alt="moon path ui" src="https://github.com/user-attachments/assets/184ef783-5c9c-48a1-a2f7-4807ca93e990" /> ### Knowledge shop <img width="787" height="669" alt="Knowledge shop" src="https://github.com/user-attachments/assets/3dc89b84-8c70-4d47-b612-54396e3ea6e7" /> ### Quality of life //General balance changes - Heretics will now gain X-ray vision for a few seconds when nearby an eldritch essence (this effect has a cooldown). - Ritual of knowledge now requires 1 uncommon item instead of 2. You may now use a stunprod instead of a baton to complete the ritual. Beartraps have been removed from the list of possible reagents. - The maximum number of possible sacrifices required to ascend has been reduced from 6 to 5 while the minimum has been upped to 4. - Codex Cicatrix no longer requires a special pen to be made. ### Passive abilities - Heretics now start with a passive ability. You can find what it does on the path info tab after a path has been selected, and what they gain when upgraded. - Crafting your first set of Eldritch robes will bump your passive to level 2. - Unlocking the 2nd level will subsequently unlock your "Ritual Of Knowledge" - Completing the ritual of knowledge or ascending will net you the final level. ### Path Specific Robes - Armorer's Ritual is no longer a side knowledge. Each path will have their own unique version of the ritual. This is placed after the 2nd spell in the tree. - Robes can no longer be destroyed by fire and acid, grant t4 flash protection (Moth Heretics stay winning) and protection against basic syringes, to bring them on par with other antagonist's armor sets. - The recipe to craft the robes is now a set of armor/vest, a mask (any mask will do now, not just gas masks), plus the unique reagent required for the blades (Plasma for Cosmic, Trash For Rust, match for Ash and so on) - Wearing the robes as a non-heretic may yield some unfortunate side-effects. ### Moon Path Rework Moon path rework. Moon Heretics gain immunity to brain traumas and slowly regenerate brain health. Equipping the moon amulette channels its effects through the moon blade; making it unblockable and cause sanity damage instead of brute. Ring leader's Rise now summons an army of harmless clones that explode when attacked; the explosion briefly stuns non-heretics and cause sanity and brain damage to them. Moon blade can also now be used when pacified and Moon spells are no longer blocked by regular anti magic, only mind magic protection. **Cosmic Path Rework** Cosmic path has received the biggest batch of changes alongside Moon. The path has been dead last in ascension and pickrate (less than 5%) for almost 2 years. It did gain some popularity over the last few months, reaching the highest ascension rate in the game (12%) while mantaining a relatively low pickrate. Cosmic sits in a weird spot, where pretty much every knowledge surrounding the path is either mediocre or, in the case of the ascension, dysfunctional. Yet it has maintained a smidge of relevancy due to how quickly Cosmic heretics can capture and sacrifice targets thanks to Star Touch. As a result, the best course of action would be to rebalance the entirety of the kit; granting the heretic more tools to manipulate space and dictate the flow of a fight, while lessening their ability to end a confrontation by instantly sleeping their opponents. lastly The Star Gazer is now ghost controlled ; And they shoot lazers! <img width="636" height="451" alt="gazer gag 3" src="https://github.com/user-attachments/assets/601d6881-c042-4e42-8ce6-ac90cd27848b" /> ## Why It's Good For The Game ### Ok...but why do we want this? Again, if you want my full reasoning, please check my doc https://hackmd.io/@BiST8PJVRjiwVPY86U3bLQ/B11HyChz1g. To keep it short and concise; Heretic is too complex and unintuitive for its own good. Too impenetrable for new players and too abusable for experienced players. This can be chalked up to a lot of poor design decisions. But ultimately, what I believe being the biggest contributor to the current status of Heretic is the ability to move into different paths, also known as "Cross-Pathing". ### Cross Pathing my beloathed. Cross-pathing, while cool in theory, overcomplicates the antagonist and overloads them with power. Players dealing with the heretic are incapable of working out what a given heretic can do. This also leads to late game heretics having 3 rows Worth of action buttons and virtually no weakness. Over the last year, I've often received the understandable but also kind of unfair accusations of making Heretic too powerful without a clear aim or purpose. My goal with the paths I've reworked over the last year (Rust,Void and Blade) wasn't necessarily to just make them stronger (although that was also part of the goal, as they were paths that were underperforming), but for them to have more interactions with the sandbox and to better live up to the fantasy presented to the player. If an harbringer of frost gets countered by a cup of coffee, we probably messed something up. Unfortunately, the current incarnation of Heretic doesn't really allow for surgical balance changes to specific paths. Every time a knowledge gets buffed, we make every path that can easily tap onto that knowledge stronger by default. It doesn't take a genius to understand why this system is ultimately unsustainable. ### Blade Breaking I feel that after a heretic has reached the near peak of their power, they no longer need the ability to instantly escape any encounter. Check my doc for my full reasoning. ## Less versatile, more specialized paths. By removing cross-pathing, we remove a huge maintainability burden from the antagonist. Paths can now be designed around clearer strengths and weaknesses. They become easier to balance and less of an headache to understand for everyone. It also means we can give paths some needed quality of life quirks without having to worry how such a change might have a knock-on effect for other paths. Ash heretics can finally let loose without dying by their own flames. Cosmic Heretic can go to space without having to carry a modsuit. Moon Heretic can use their abilities without fear of one random trauma ruining their day, and so on. ### What a horrible night to have a curse...., wait how do I curse people again? As of right now the heretic tree has quite a hefty amount of trinkets that pretty much never see use. Partly because the tree itself is a nightmare to navigate. And partly because why would anyone set up an elaborate plan or scheme when they can unleash 2 rows of spell in the span of bunch of seconds. Heretics mostly gravitate towards powers that push them towards greater, more potent combat strength. If it doesn't contribute to killing people quicker, it isn't worth doing for most. And given the opportunity cost associated for taking those powers, they will remain that way so long as there are better choices to be poached. The new draft system encourages Heretics to play more with the tools at their disposal. If you want to go for a specific combo from the side path options, you may now do so by tapping into the knowledge shop. Yes, the shop does include a few knowledges from the other paths. But these are limited to 1 per path, are very expensive and can only be unlocked very late into the shift. ## Drip Of the Mansus The iconic heretic robe is actually sequestered to a side path that is most easily access by only two paths at a time. Since heretic paths are being made to be much more specialized, the most obvious way in which this can be showcased is through an easily identifiable outfit. By using the robes, we can both telegraph WHAT heretic you are looking at, and just how much power they've accumulated and when it is reasonable to take the kid gloves off and treat them as a genuine threat. If a heretic is in their robes, that heretic is now a significantly more prominent danger to the station. It also serves as a useful means for gating some of the more powerful effects of a heretic's path behind the robes, AND enable options for disarming them of that power should they be captured without making it something endemic to their mob. A major problem with heretics is a lack of certainty as to how powerful they have become. A heretics robes is one of the milestones to help players dealing with heretics identify that. ### Will this be 100% fair and balanced? This is a massive overhaul to a pretty complex and bloated antagonist. I've done my best to show the changes to several maintainers and other members of the community for their feedback. But at some point we'll have to see how this behave in the environment to get a feel if something is over or undertuned. (that's my way of saying, yes this is likely gonna require a testmerge or two). What I will say is that I'm not trying to change the core identity of Heretic. Heretics should have the upperhand in single encounters early on, be able to joust a small group of players after they unlock their final spell, and end the round when they ascend. They're a progression antagonist. They should retain their payoff as well as pose a danger as they grow stronger. But if more players feel like they are more reliably able to play the antagonist in more varied and interesting ways, rather than the antagonist largely existing as a measuring stick for 'robustness' due to its elitist design philosophy, then the rework has been a success. There should be something for everyone in the antagonist, as is true for all of our antagonist roles. |
||
|
|
66e3b9e222 |
Fix selfsustaining and clusterbuster bugs with extracts (#93415)
## About The Pull Request Fixes slime extract bugs with selfstaining slime and clusterbuster. Fixes: #93315 ## Why It's Good For The Game Fixes slime extract bugs ## Changelog 🆑 fix: Self sustaining slime and clusterbuster now correctly fill required reagents /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
0800c75540 |
Artifically spawned mobs have a vastly reduced penalty for death moodlet (#93348)
## About The Pull Request Closes #93285 Mood event from the death of a mob spawned "artificially" is 75% weaker, lasts 80% the duration, and don't compound An artificial monkey's death will now result - -8 * 0.25 * 0.5 = floor(1) = 1 strength moodlet for the average crew member - ...Lasting 30 seconds (unless refreshed) - -8 * 0.25 * 1.5 = floor(3) = 3 strength moodlet for animal friends - ...Lasting 1.5 minutes (unless refreshed) - -8 * 0.25 = floor(2) = 2 strength moodlet for compassionate crew members - ...Lasting 1 minute (unless refreshed) Artifical spawning includes - Moneky Cube - Xenobiology Console - "Life" reaction - Summoned rats - Spawner grenades - Cult ghosts Lemmie know if I'm missing any obvious spawns ## Why It's Good For The Game While funny it was not my intention to have Xenobiology / Genetics / Virology nuke your mood. ## Changelog 🆑 Melbert balance: Death of artifical mobs (such as monkey cube monkeys) result in a 75% weaker, 80% shorter moodlet that does not compound with more deaths. /🆑 |
||
|
|
0f849cad42 |
The effects of flashbangs become less severe the further away you are from the flashbang when it detonates. (#92294)
## About The Pull Request <img width="691" height="207" alt="flashbang agony zone" src="https://github.com/user-attachments/assets/a4cc5fdb-19dc-4849-8c4a-2db1ac0fe212" /> In this handy chart, you can now see the impact of the flashbang based on location. **Dead Center:** While our Powergaming RD for Testing Pruposes is immune to this, being on this tile when the flashbang goes off still hard stuns you for a really long time even if you have ear protection. The bang doesn't do anything in a vacuum. **Pointblank:** This works as it does live, going through protections. Though the bang doesn't work in a vacuum. **Sweetspot:** This works as it does live, stunning and knocking you down, but not if you're protected from the flash and the bang. This is currently set to 3 tiles. **Stagger Zone:** If you're vulnerable to the bang, you are staggered and drop your items, rather than stunned and knocked down. If you're vulnerable to the flash, you are dizzied and drop your items, rather than stunned and knocked down. **Safe Zone:** Basically this is outside of the flashbang's effective range. The effective range is the same as live (7 tiles). ## Why It's Good For The Game Flashbangs are a pretty easy room wide attack that acts as a one of our more extreme gear checks. You either are entirely safe from this, or you probably are going to eat shit to something just tossed into your line of sight. Either you need to be able to disappear from the room immediately, or the flashbang gets you. Without nullifying the room attacking effect too severely, as well as the mass disarming capabilities of the flashbang, this at least helps provide some ways to counteract flashbangs without absolutely needing to have the protections. You can play around the stagger and dizziness more easily than you can the stuns. The vacuum stuff is mostly because being hit by a flashbang's bang in a vacuum is a bit absurd. The flash still works, however. ## Changelog 🆑 balance: The effects of flashbangs become less severe the further away you are from the flashbang. balance: The bang effect of flashbangs cannot affect you in a vacuum. The flash still functions in a vacuum. /🆑 --------- Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> |
||
|
|
77375b66eb |
The effects of flashbangs become less severe the further away you are from the flashbang when it detonates. (#92294)
## About The Pull Request <img width="691" height="207" alt="flashbang agony zone" src="https://github.com/user-attachments/assets/a4cc5fdb-19dc-4849-8c4a-2db1ac0fe212" /> In this handy chart, you can now see the impact of the flashbang based on location. **Dead Center:** While our Powergaming RD for Testing Pruposes is immune to this, being on this tile when the flashbang goes off still hard stuns you for a really long time even if you have ear protection. The bang doesn't do anything in a vacuum. **Pointblank:** This works as it does live, going through protections. Though the bang doesn't work in a vacuum. **Sweetspot:** This works as it does live, stunning and knocking you down, but not if you're protected from the flash and the bang. This is currently set to 3 tiles. **Stagger Zone:** If you're vulnerable to the bang, you are staggered and drop your items, rather than stunned and knocked down. If you're vulnerable to the flash, you are dizzied and drop your items, rather than stunned and knocked down. **Safe Zone:** Basically this is outside of the flashbang's effective range. The effective range is the same as live (7 tiles). ## Why It's Good For The Game Flashbangs are a pretty easy room wide attack that acts as a one of our more extreme gear checks. You either are entirely safe from this, or you probably are going to eat shit to something just tossed into your line of sight. Either you need to be able to disappear from the room immediately, or the flashbang gets you. Without nullifying the room attacking effect too severely, as well as the mass disarming capabilities of the flashbang, this at least helps provide some ways to counteract flashbangs without absolutely needing to have the protections. You can play around the stagger and dizziness more easily than you can the stuns. The vacuum stuff is mostly because being hit by a flashbang's bang in a vacuum is a bit absurd. The flash still works, however. ## Changelog 🆑 balance: The effects of flashbangs become less severe the further away you are from the flashbang. balance: The bang effect of flashbangs cannot affect you in a vacuum. The flash still functions in a vacuum. /🆑 --------- Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> |
||
|
|
e7c25d4c40 |
The Glitterening (#92226)
## About The Pull Request Adds a number of new capabilities to glitter. - It can be any colour. <img width="657" height="398" alt="image" src="https://github.com/user-attachments/assets/60e80c04-8eee-470c-8953-47f6eda9f83e" /> - It can be made in chemistry and dyed by combining it with acetone and other reagents to give it the average colour of the non-glitter, not-acetone reagents. - Multiple colours can be mixed into one reagent datum, randomly depositing a colour from those in the datum on the floor. <img width="554" height="507" alt="image" src="https://github.com/user-attachments/assets/9cc7d1d5-9bec-4b28-af06-310ffb24de49" /> - Anyone with glitter reagent in them will cough glitter onto the floor - Glittery crates will leave a trail of appropriately coloured glitter when moved <img width="960" height="259" alt="image" src="https://github.com/user-attachments/assets/71cc1176-23f9-4ae7-b500-1744b752c014" /> Resprited glitter to support these changes and make it not look like gas (or ass). ## Why It's Good For The Game It looks cool and raises the bar for chemists maximally pissing off the janitor as they fill a room with multicoloured glitter and all the occupants run off to cough more up all over the surrounding area. ## Changelog 🆑 add: Glitter can now be made from plastic polymers and aluminium. add: Plastic polymer can be made at any temperature, and then heated to produce sheets. add: Glitter can now be made any colour, mix 10 units each of glitter and acetone to change its colour to that of the other reagents in the beaker. add: Mixing different colours of glitter will cause a random selection of those colours to appear on the floor when released. add: Being exposed to glitter in reagent form causes you to cough up more glitter onto the floor add: Dragging glittery crates will now spread a trail of glitter and angry janitors behind them. image: Added new glitter sprites (that don't look like gasses) /🆑 |
||
|
|
d97c57b263 |
The Glitterening (#92226)
## About The Pull Request Adds a number of new capabilities to glitter. - It can be any colour. <img width="657" height="398" alt="image" src="https://github.com/user-attachments/assets/60e80c04-8eee-470c-8953-47f6eda9f83e" /> - It can be made in chemistry and dyed by combining it with acetone and other reagents to give it the average colour of the non-glitter, not-acetone reagents. - Multiple colours can be mixed into one reagent datum, randomly depositing a colour from those in the datum on the floor. <img width="554" height="507" alt="image" src="https://github.com/user-attachments/assets/9cc7d1d5-9bec-4b28-af06-310ffb24de49" /> - Anyone with glitter reagent in them will cough glitter onto the floor - Glittery crates will leave a trail of appropriately coloured glitter when moved <img width="960" height="259" alt="image" src="https://github.com/user-attachments/assets/71cc1176-23f9-4ae7-b500-1744b752c014" /> Resprited glitter to support these changes and make it not look like gas (or ass). ## Why It's Good For The Game It looks cool and raises the bar for chemists maximally pissing off the janitor as they fill a room with multicoloured glitter and all the occupants run off to cough more up all over the surrounding area. ## Changelog 🆑 add: Glitter can now be made from plastic polymers and aluminium. add: Plastic polymer can be made at any temperature, and then heated to produce sheets. add: Glitter can now be made any colour, mix 10 units each of glitter and acetone to change its colour to that of the other reagents in the beaker. add: Mixing different colours of glitter will cause a random selection of those colours to appear on the floor when released. add: Being exposed to glitter in reagent form causes you to cough up more glitter onto the floor add: Dragging glittery crates will now spread a trail of glitter and angry janitors behind them. image: Added new glitter sprites (that don't look like gasses) /🆑 |
||
|
|
c51c19aae7 | Alters a significant chunk of the syndicate uplink's explosives, grenades and pyrotechnics options (#91793) | ||
|
|
455bf20488 | Alters a significant chunk of the syndicate uplink's explosives, grenades and pyrotechnics options (#91793) | ||
|
|
2710c0f0b4 | Healium crystals actually fix air (#91449) | ||
|
|
9c070ef477 | Healium crystals actually fix air (#91449) | ||
|
|
ba988f2230 |
Refactor split_stack to two separate procs, fixes a hard delete in the process (#91306)
## About The Pull Request I was trying to fix a hard delete and it became a whole thing - Reworks `/obj/item/stack/proc/split_stack` to no longer also try to put it in the user's hands, or take a user at all. The proc now purely splits the stack and returns the new one - Creates `/obj/item/stack/proc/split_n_take` which uses `split_stack` and does the other behaviors like fingerprint adding and putting in the user's hands - Update usages of `split_stack` to either properly use it and remove the code added to get around the put in hands behavior, or change them to use `split_n_take` instead - Fix a random bug in pipe bomb building I noticed while testing ## Why It's Good For The Game Ultimately this fixes a hard delete with goldgrubs eating a piece of ore while sitting on top of another piece of ore of the same type (the put in hands behavior of split stack would cause the ore being consumed to drop to the ground briefly, merge with the ore there, and then qdel while still being moved to the goldgrub contents), but also added bonus that it makes `split_stack` just split the stack and not some other stuff too. Also a pipe bomb bug fix ## Changelog 🆑 fix: fixed being able to add seemingly infinite refined bluespace crystals to pipe bombs refactor: /obj/item/stack/split_stack no longer tries to move the stack into the user's hands, use /obj/item/stack/split_n_take for that /🆑 |
||
|
|
7d08da9fd6 |
Refactor split_stack to two separate procs, fixes a hard delete in the process (#91306)
## About The Pull Request I was trying to fix a hard delete and it became a whole thing - Reworks `/obj/item/stack/proc/split_stack` to no longer also try to put it in the user's hands, or take a user at all. The proc now purely splits the stack and returns the new one - Creates `/obj/item/stack/proc/split_n_take` which uses `split_stack` and does the other behaviors like fingerprint adding and putting in the user's hands - Update usages of `split_stack` to either properly use it and remove the code added to get around the put in hands behavior, or change them to use `split_n_take` instead - Fix a random bug in pipe bomb building I noticed while testing ## Why It's Good For The Game Ultimately this fixes a hard delete with goldgrubs eating a piece of ore while sitting on top of another piece of ore of the same type (the put in hands behavior of split stack would cause the ore being consumed to drop to the ground briefly, merge with the ore there, and then qdel while still being moved to the goldgrub contents), but also added bonus that it makes `split_stack` just split the stack and not some other stuff too. Also a pipe bomb bug fix ## Changelog 🆑 fix: fixed being able to add seemingly infinite refined bluespace crystals to pipe bombs refactor: /obj/item/stack/split_stack no longer tries to move the stack into the user's hands, use /obj/item/stack/split_n_take for that /🆑 |
||
|
|
bc2215667f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
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). 🆑 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) /🆑 |
||
|
|
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) /🆑 |
||
|
|
ae39a084c4 |
Updates bruh moments to be more up to date (#91080)
## About The Pull Request Someone's gotta maintain it. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: Updated bruh moments. /🆑 |
||
|
|
62a5158f6a |
Updates bruh moments to be more up to date (#91080)
## About The Pull Request Someone's gotta maintain it. ## Why It's Good For The Game ## Changelog 🆑 spellcheck: Updated bruh moments. /🆑 |
||
|
|
251d23530e |
Changes all uses of notify_ghosts to use the real names of mobs (#90919)
## About The Pull Request Quite simple - this changes every direct mention of a mob in a `notify_ghosts` message to use `[mob.real_name]` instead of just `[mob]` ## Why It's Good For The Game makes things less confusing - ghosts can see easily their actual identity anyways, so it's not like there's much of a reason _not_ to do this. ## Changelog 🆑 qol: Ghost notifications will now use the real names of mobs when something happens (i.e no more "Unknown has completed an ascension ritual!") /🆑 |
||
|
|
37ec7f8054 |
Changes all uses of notify_ghosts to use the real names of mobs (#90919)
## About The Pull Request Quite simple - this changes every direct mention of a mob in a `notify_ghosts` message to use `[mob.real_name]` instead of just `[mob]` ## Why It's Good For The Game makes things less confusing - ghosts can see easily their actual identity anyways, so it's not like there's much of a reason _not_ to do this. ## Changelog 🆑 qol: Ghost notifications will now use the real names of mobs when something happens (i.e no more "Unknown has completed an ascension ritual!") /🆑 |
||
|
|
11d82b7995 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
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. Improving old code. And I want to be able to pet mobroaches while holding them too. 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
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. /🆑 |
||
|
|
753d8e5ba4 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a | ||
|
|
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. /🆑 |
||
|
|
5a85095111 |
Introduces 6 New Heretic sideknowledges, 1 new spell to Blade Path. + changes to the Research Tree. (#89169)
Introduces 6 new Heretic Sideknowledges. **Warren King's Welcome:** Starting side-knowledge, Grants to the Heretic's id Maints and External Airlock access. **Phylactery Of Damnation:** T1 Knowledge, located between Imperfect Ritual and Keykeeper's Burden, creates a bottle that can Siphon a small quantity of blood from your victim, (they'll still feel a tiny prick).  **Ether Of The Newborn:** T2 knowledge, replaces Curse Of Paralysis slot in the tree (Inbetween Mark of Madness and Moonlight Amulette).  1 use potion, fully restores the inbiber to full health, removes any sort of affliction,trauma,disease or implant at the cost of knocking the user out for 1 minute. **Codex Morbus:** T3 knowledge, located between Caretaker's Refuge and Ringleader's RIse.   Upgrade of the Codex Cicatrix, draws and siphons runes and essences a bit faster, can be used on a rune to curse a crewmember, provided their blood is on the rune or on the Heretic. **Greaves Of The Prophet:** T3 knowledge, located between Entropic Plume and Wolves Among Sheep.  They work as magical magboots minus the slowdown; they confer full immunity to slips (yes, even space lube). **Rust Sower Grenade:** T2 knowledge, replaces curse of corrosion in the tree (between Aggressive Spread and Star Blast).  Eldritch grenade, Releases a smoke that rusts all affected turfs, blinds whoever doesn't have mask protection and utterly annihilates silicons, mechs, augs and bots. Video Showcase: https://www.youtube.com/watch?v=H1GeO7MYFek **New Blade Path Spell: Wolves Among Sheep** Video Showcase: https://www.youtube.com/watch?v=2LsmUiQzpzA - Briefly transforms the surrounding the heretic into an arena. - Both The Heretic and Crew members caught inside the spell cannot leave or change z level until the spell expires. - The arena is impassable to outsiders. - Everyone caught inside the spell receives a special buff that makes them immune to most enviromental hazards and all forms of Crowd Control while blocking teleportation. - Non Heretics are granted a temporary Heretic Blade and an antag datum. - Scoring a critical hit grants the winner the ability to leave the arena, Critting the heretic fully dissolves the spell. - Critting yourself doesn't remove the debuff. - The Heretic receives a heal upon critting someone. - Breaking a blade while inside the arena will rip off your arm regardless if you are crew or a Heretic. - 2 minutes cooldown. - Replaces Furious Steel as the last spell unlocked pre-ascension. Lastly as you may have guessed, curses have been completely refactored, they are now bound to the new item (Codex Morbus), are no longer empowered by blood but require it as a reagent. Curse of Corrosion and Paralysis have been rebalanced to be slightly stronger than they were at their base value now that they can no longer be empowered. 2 new curses have be introduced. **Curse Of Indulgence:** tanks the target hunger, makes them a carnivore and drastically increases their hunger decay rate, lasts 8 minutes. **Curse Of Transmogrification:** Allows the Heretic to change the target's Race(minus plasmamen for obvious reasons), lasts until the Codex Morbus is destroyed. Lastly the Blade Heretic tree has been shuffled a bit to introduce the new spell. Stance Of the Torn Champion has been **TEMPORARILY** Removed, it will come back in a later PR. Code by me and Xander Sprites by INFRARED_BARON and OrcaCora. Lore tibids by NecromancerAnne. The following is an atomisation of The Heretic Knowledge Rework I'm currently working on alongside Edge (Heretic's Grandaddy). Given the whole PR was probably going to be impossibly big to review; I asked Melbert If could introduce the new knowledges first, so here we are. Do not stress the locations of these knowledges in the tree; While they do fill what few empty slots we still have, it doesn't change the fact that the Heretic tree is an incomprehensible mess and will soon be reworked. **Warren King's Welcome:** Not having mantainence access as an antag sucks. Arguably it sucks even more for Heretics as they are required to find some place discrete in order to be able to cast their rituals. It's not unusual for the station to be so crowded, that setting up a base in space is the only option, the external access helps with that a little bit. **Phylactery Of Damnation and Codex Morbus** Explaining them in the same paragraph as they are intended to be used together. Curses might as well not exist in their current state. The process of cursing a crewmember is way too machineous, annoying, and nowhere near as affective as simply running to your victim and smacking it with your blade. All Curses have now been bundled to the new Codex, they no longer require X reagents, only a drip of the victim's blood. That's when the phylactery comes into play. Victims still feel "a tiny prick" upon being juiced, so beware. **Ether Of The Newborn:** The point of this knowledge is to serve as a backup plan to "random bullshittery". It's not really fun rolling one bad trauma or disease and have it completely invalidate your Heretic round. We already have potions that either heal or provide remedies against wounds/limb loss, the Ether is supposed to be an extreme solution, hence why it causes a 1 minute sleep upon consumption. **Greaves Of The Prophet:** Heretic to this day is fairly lacking when it comes to passive immunities or tools we grant to most of our core antagonists. Specifically, for a melee-focused antagonist, a total lack of antislip is kinda lame, being one of the most common defense tools employed by the crew against newbie antagonist players. Given these cannot be concealed unlike the traitor counterpart and how far down the tree they are, i felt like making them lube resistant was a unique twist and sensible for what's essentialy our core progression antagonist. **Rust Sower Grenade:** directly inspired by the 40k Blight Grenades. The Rust Sower nades serve a double purpose. 1) They introduce a new form of area Denial available to all heretic paths. 2) They confer to non Rust Heretics a way to deal with the so hated Silicon Menace. I'm of the not-so-unpopular school of thought of "Mechs and Silicons have had it too good for too long". A massive chunk of our threat roster gets to this day completely shut down by mechs. I feel like it was about time to make everything Inorganic feel afraid again. To make it a bit more fair, these grenades have a fairly long detonation timer and have been given a couple of unique SFX. **Wolves Among Sheep** Even after the last batch of Changes, Blade Heretic still felt a bit uninspired to me. The path is still essentialy just about running at people and stabbing them in the face. While that's part of the appreal, I'd reckon it's still lacking a bit on the eldritch side of things. Trapping opponents into an arena when they are forced to either engage you or betray their friends to escape can create some potentially interesting story-telling. It also warps the ,oh, so beloathed stun meta we live in by forcing participants to resort to lethal weaponry. Ultimately, this is supposed to be a high risk/high reward spell, if you trap 5 people arm them with heretic blades, and make them all fully stun immune, you are likely gonna get lynched. To free up a slot in the tree I **TEMPORARILY** Removed Stance of the Torn champion, it will come back in my nextish pr, so don't worry about it too much. 🆑 add: New Heretic starting Side-Knowdge Warren King's Welcome add: New Heretic T1 Side knowledge, Phylactery Of Damnation. add: New Heretic T2 Side knowledge, Ether Of The Newborn. add: New Heretic T3 Side knowledge, Codex Morbus. add: New Heretic T2 Side knowledge, Rust Sower grenade. add: New Heretic T3 Side knowledge, Greaves Of The Prophet. add: New Blade Path Spell, Wolves Among Sheep. balance: Heretic curses have been removed from the tree and bundled in the new Knowledge, Codex Morbus. balance: Blade Path tree has been shuffled a bit, all spells have been moved up by one tier to make space for the new spell. removal: Stance Of The Torn Champion has been removed. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
a916f4ec62 |
Cleans up chem grenade code, fixes prox sensors not working in grenades (#89891)
## About The Pull Request Closes #89886 Closes #89887 Closes #89888 ## Changelog 🆑 fix: You can no longer insert infinite amounts of slime cores into advanced chem grenades fix: Non-beaker containers in grenades work once more fix: Proximity sensors in grenade finally work after like, 4 years. code: Cleaned up chemical grenade code /🆑 |
||
|
|
589cf0a904 |
Refactors how item actions are handled (#89654)
## About The Pull Request This PR tackles our piss-poor item action handling. Currently in order to make an item only have actions when its equipped to a certain slot you need to override a proc, which I've changed by introducing an action_slots variable. I've also cleaned up a ton of action code, and most importantly moved a lot of Trigger effects on items to do_effect, which allows actions to not call ui_action_click or attack_self on an item without bypassing IsAvailible and comsigs that parent Trigger has. This resolves issues like jump boots being usable from your hands, HUDs being toggleable out of your pockets, etc. Also moved a few actions from relying on attack_self to individual handling on their side. This also stops welding masks/hardhats from showing their action while you hold them, this part of the change is just something I thought didn't make much sense - you can use their action by using them in-hand, and flickering on your action bar can be annoying when reshuffling your backpack. Closes #89653 ## Why It's Good For The Game Makes action handling significantly less ass, allows us to avoid code like this ```js /obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/halt)) halt() else adjust_visor(user) ``` |
||
|
|
4dd6cdeb72 |
Refactors how item actions are handled (#89654)
## About The Pull Request This PR tackles our piss-poor item action handling. Currently in order to make an item only have actions when its equipped to a certain slot you need to override a proc, which I've changed by introducing an action_slots variable. I've also cleaned up a ton of action code, and most importantly moved a lot of Trigger effects on items to do_effect, which allows actions to not call ui_action_click or attack_self on an item without bypassing IsAvailible and comsigs that parent Trigger has. This resolves issues like jump boots being usable from your hands, HUDs being toggleable out of your pockets, etc. Also moved a few actions from relying on attack_self to individual handling on their side. This also stops welding masks/hardhats from showing their action while you hold them, this part of the change is just something I thought didn't make much sense - you can use their action by using them in-hand, and flickering on your action bar can be annoying when reshuffling your backpack. Closes #89653 ## Why It's Good For The Game Makes action handling significantly less ass, allows us to avoid code like this ```js /obj/item/clothing/mask/gas/sechailer/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/halt)) halt() else adjust_visor(user) ``` |
||
|
|
b6b8306fda | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a | ||
|
|
7809f0f501 |
Introduces 6 New Heretic sideknowledges, 1 new spell to Blade Path. + changes to the Research Tree. (#89169)
## About The Pull Request Introduces 6 new Heretic Sideknowledges. **Warren King's Welcome:** Starting side-knowledge, Grants to the Heretic's id Maints and External Airlock access. **Phylactery Of Damnation:** T1 Knowledge, located between Imperfect Ritual and Keykeeper's Burden, creates a bottle that can Siphon a small quantity of blood from your victim, (they'll still feel a tiny prick).  **Ether Of The Newborn:** T2 knowledge, replaces Curse Of Paralysis slot in the tree (Inbetween Mark of Madness and Moonlight Amulette).  1 use potion, fully restores the inbiber to full health, removes any sort of affliction,trauma,disease or implant at the cost of knocking the user out for 1 minute. **Codex Morbus:** T3 knowledge, located between Caretaker's Refuge and Ringleader's RIse.   Upgrade of the Codex Cicatrix, draws and siphons runes and essences a bit faster, can be used on a rune to curse a crewmember, provided their blood is on the rune or on the Heretic. **Greaves Of The Prophet:** T3 knowledge, located between Entropic Plume and Wolves Among Sheep.  They work as magical magboots minus the slowdown; they confer full immunity to slips (yes, even space lube). **Rust Sower Grenade:** T2 knowledge, replaces curse of corrosion in the tree (between Aggressive Spread and Star Blast).  Eldritch grenade, Releases a smoke that rusts all affected turfs, blinds whoever doesn't have mask protection and utterly annihilates silicons, mechs, augs and bots. Video Showcase: https://www.youtube.com/watch?v=H1GeO7MYFek **New Blade Path Spell: Wolves Among Sheep** Video Showcase: https://www.youtube.com/watch?v=2LsmUiQzpzA - Briefly transforms the surrounding the heretic into an arena. - Both The Heretic and Crew members caught inside the spell cannot leave or change z level until the spell expires. - The arena is impassable to outsiders. - Everyone caught inside the spell receives a special buff that makes them immune to most enviromental hazards and all forms of Crowd Control while blocking teleportation. - Non Heretics are granted a temporary Heretic Blade and an antag datum. - Scoring a critical hit grants the winner the ability to leave the arena, Critting the heretic fully dissolves the spell. - Critting yourself doesn't remove the debuff. - The Heretic receives a heal upon critting someone. - Breaking a blade while inside the arena will rip off your arm regardless if you are crew or a Heretic. - 2 minutes cooldown. - Replaces Furious Steel as the last spell unlocked pre-ascension. Lastly as you may have guessed, curses have been completely refactored, they are now bound to the new item (Codex Morbus), are no longer empowered by blood but require it as a reagent. Curse of Corrosion and Paralysis have been rebalanced to be slightly stronger than they were at their base value now that they can no longer be empowered. 2 new curses have be introduced. **Curse Of Indulgence:** tanks the target hunger, makes them a carnivore and drastically increases their hunger decay rate, lasts 8 minutes. **Curse Of Transmogrification:** Allows the Heretic to change the target's Race(minus plasmamen for obvious reasons), lasts until the Codex Morbus is destroyed. Lastly the Blade Heretic tree has been shuffled a bit to introduce the new spell. Stance Of the Torn Champion has been **TEMPORARILY** Removed, it will come back in a later PR. Code by me and Xander Sprites by INFRARED_BARON and OrcaCora. Lore tibids by NecromancerAnne. ## Why It's Good For The Game The following is an atomisation of The Heretic Knowledge Rework I'm currently working on alongside Edge (Heretic's Grandaddy). Given the whole PR was probably going to be impossibly big to review; I asked Melbert If could introduce the new knowledges first, so here we are. Do not stress the locations of these knowledges in the tree; While they do fill what few empty slots we still have, it doesn't change the fact that the Heretic tree is an incomprehensible mess and will soon be reworked. **Warren King's Welcome:** Not having mantainence access as an antag sucks. Arguably it sucks even more for Heretics as they are required to find some place discrete in order to be able to cast their rituals. It's not unusual for the station to be so crowded, that setting up a base in space is the only option, the external access helps with that a little bit. **Phylactery Of Damnation and Codex Morbus** Explaining them in the same paragraph as they are intended to be used together. Curses might as well not exist in their current state. The process of cursing a crewmember is way too machineous, annoying, and nowhere near as affective as simply running to your victim and smacking it with your blade. All Curses have now been bundled to the new Codex, they no longer require X reagents, only a drip of the victim's blood. That's when the phylactery comes into play. Victims still feel "a tiny prick" upon being juiced, so beware. **Ether Of The Newborn:** The point of this knowledge is to serve as a backup plan to "random bullshittery". It's not really fun rolling one bad trauma or disease and have it completely invalidate your Heretic round. We already have potions that either heal or provide remedies against wounds/limb loss, the Ether is supposed to be an extreme solution, hence why it causes a 1 minute sleep upon consumption. **Greaves Of The Prophet:** Heretic to this day is fairly lacking when it comes to passive immunities or tools we grant to most of our core antagonists. Specifically, for a melee-focused antagonist, a total lack of antislip is kinda lame, being one of the most common defense tools employed by the crew against newbie antagonist players. Given these cannot be concealed unlike the traitor counterpart and how far down the tree they are, i felt like making them lube resistant was a unique twist and sensible for what's essentialy our core progression antagonist. **Rust Sower Grenade:** directly inspired by the 40k Blight Grenades. The Rust Sower nades serve a double purpose. 1) They introduce a new form of area Denial available to all heretic paths. 2) They confer to non Rust Heretics a way to deal with the so hated Silicon Menace. I'm of the not-so-unpopular school of thought of "Mechs and Silicons have had it too good for too long". A massive chunk of our threat roster gets to this day completely shut down by mechs. I feel like it was about time to make everything Inorganic feel afraid again. To make it a bit more fair, these grenades have a fairly long detonation timer and have been given a couple of unique SFX. **Wolves Among Sheep** Even after the last batch of Changes, Blade Heretic still felt a bit uninspired to me. The path is still essentialy just about running at people and stabbing them in the face. While that's part of the appreal, I'd reckon it's still lacking a bit on the eldritch side of things. Trapping opponents into an arena when they are forced to either engage you or betray their friends to escape can create some potentially interesting story-telling. It also warps the ,oh, so beloathed stun meta we live in by forcing participants to resort to lethal weaponry. Ultimately, this is supposed to be a high risk/high reward spell, if you trap 5 people arm them with heretic blades, and make them all fully stun immune, you are likely gonna get lynched. To free up a slot in the tree I **TEMPORARILY** Removed Stance of the Torn champion, it will come back in my nextish pr, so don't worry about it too much. ## Changelog 🆑 add: New Heretic starting Side-Knowdge Warren King's Welcome add: New Heretic T1 Side knowledge, Phylactery Of Damnation. add: New Heretic T2 Side knowledge, Ether Of The Newborn. add: New Heretic T3 Side knowledge, Codex Morbus. add: New Heretic T2 Side knowledge, Rust Sower grenade. add: New Heretic T3 Side knowledge, Greaves Of The Prophet. add: New Blade Path Spell, Wolves Among Sheep. balance: Heretic curses have been removed from the tree and bundled in the new Knowledge, Codex Morbus. balance: Blade Path tree has been shuffled a bit, all spells have been moved up by one tier to make space for the new spell. removal: Stance Of The Torn Champion has been removed. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
d0a7f955f8 |
Fix various issues with names in string interpolation (#89246)
## About The Pull Request Commit messages should be descriptive of all changes. The "incorrect `\The` macro capitalization" was intentional when it was added, but as far as I know TG says "the supermatter" rather than "The Supermatter," so it's incorrect now. This is completely untested. I don't even know how you'd go about testing this, it's just a fuckton of strings. Someday I want to extract them and run NLP on it to catch grammar problems... ## Why It's Good For The Game Basic grammar pass for name strings. Should make `\the` work better and avoid cases like `the John Smith`. |
||
|
|
4c2a76ede3 |
Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to variable names, but only the really egregious ones like "concious". |
||
|
|
3499727a6d |
Implements datumized embedding handlers in place of element-component-datum triad (#88511)
## About The Pull Request This PR completely rewrites our embedding system in favor of embedding datum handlers which acts as containers for all embedding-related data and logic. Currently embedding logic relies on an element-component-datum triad, where elements on the items handle embedding logic, singleton datums store embedding data and components (which get assigned to ***mobs*** in whom the item embedded) handle pain and the item being ripped out. How do we access all the procs? By using comsigs as procs, which is really bad. This code was written back in 2020 when DCS was hot stuff but in hindsight this implementation was a mistake, as it heavily restricts custom embedding behaviors unless you're willing to constantly run GetComponent (bad, ugly, incarnation of evil) This PR rewrites all that logic to be handled by lazyloaded ``/datum/embedding``, which is stored similarly to current ``/datum/embed_data``. Upon being requested, it is initialized and assigned to a parent from whom all the logic is handled, from being embedded to pain and having the item ripped out. On projectiles this only handles one proc, after which it copies itself down to the shrapnel item instead and runs the chain further from there. Ideally, most embedding-related logic now should be handled purely datum-side - in most cases items should not be hooking up to themselves like they did before (unless said logic is for when the item is made sticky or smth) and instead the code should be handled by the embedding datum (see sholean grapes implementation in this PR). This should allow us to do fancy stuff like syringe guns embedding syringes into targets and injecting them that way, and fix some bugs along the way. Closes #88115 Closes #87946 Also fixed a bug with scars not displaying when examined closely from #86506 because i was in the area anyways |
||
|
|
43f83b09b2 |
Sprites for mega-stingbangs + fixes primed stingbang sprites (#88472)
## About The Pull Request  ## Changelog 🆑 fix: Fixes primed stingbangs being invisible sprite: Added new sprites for mega stingbangs /🆑 |
||
|
|
09f868f59e |
Fixes stingbangs using wrong sprites (#87812)
## About The Pull Request Stingbangs (and much rarer rotfrags) used their disassembled sprite until primed this entire time. Yeah. ## Why It's Good For The Game Handle appearing out of nowhere looks very jarring |
||
|
|
e59d8ba64b | Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b | ||
|
|
bb70889f6e |
TG Upstream Part 1
3591 individual conflicts Update build.js Update install_node.sh Update byond.js oh my fucking god hat slow huh holy shit we all fall down 2 more I missed 2900 individual conflicts 2700 Individual conflicts replaces yarn file with tg version, bumping us down to 2200-ish Down to 2000 individual conflicts 140 down mmm aaaaaaaaaaaaaaaaaaa not yt 575 soon 900 individual conflicts 600 individual conflicts, 121 file conflicts im not okay 160 across 19 files 29 in 4 files 0 conflicts, compiletime fix time some minor incap stuff missed ticks weird dupe definition stuff missed ticks 2 incap fixes undefs and pie fix Radio update and some extra minor stuff returns a single override no more dupe definitions, 175 compiletime errors Unticked file fix sound and emote stuff honk and more radio stuff |
||
|
|
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 /🆑 |
||
|
|
baaa96c357 |
Security Flashbangs cannot be instantly detonated anymore. (#86704)
## About The Pull Request Removes the option of setting a sec flashbang to instant detonation. ## Why It's Good For The Game My reasoning from my previous PR hasn't really changed, so excuse me for the few copypasted bits. Flashbang grenades are one of the best tools in Security arsenal. they are available round-start, widely abundant, and part of the reason why they are so strong is how rare ear protection tends to be. But what tilts the scale from strong to just unfair, in my opinion, is the combination of instant detonation and being able to pierce ear protection entirely on adjacent tiles. This is a hardcoded stun by the way, You could literally have no eyes nor ears and it won't make a difference. I initially considered just reducing the radius at which penetration occurs, but i failed to consider how it would probably result in an unintended buff due to the ability to drag a primed flashbang. So instead, after discussing options with a few other people, including mantainers I think the sanest option is to remove the ability for instant detonation. You can still technically run at someone as a desperate attempt to disarm them, but they'll have a sliver of chance to react. Flashbangs should be used as grenades, not as instant unreactable hardstuns, this strategy requiring teamwork to pull off doesn't justify it being completely unfair and unreactable on the receiver. ## Changelog 🆑 balance: Security Flashbangs can no longer be primed for instant detonation. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
4c4930c71d | Merge branch 'master' of https://github.com/tgstation/tgstation into pulls-tg-to-fix-shit | ||
|
|
a380e4c218 |
gives some items sound_vary true (#86467)
## About The Pull Request changed the `sound_vary` var that gives `vary` to pickup/drop sounds to `TRUE` on: - grenade - handcuffs - lead pipe - batons - beaker - drinking glass ## Why It's Good For The Game will give more variety for the soundscape, only did it for items that will sounds good with it ## Changelog 🆑 grungussuss sound: some more items will vary in pitch when picking them up and placing them down /🆑 |