mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
mayfools
161
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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! /🆑 |
||
|
|
337ab7f2c3 |
Refactors status effects to be based on subsystem ticks, among a few other minor status effect fixes/refactors (#93694)
## About The Pull Request Refactors status effects to track their durations and tick intervals using counters. In effect, [var/duration] now directly refers to how many deciseconds are left on the status effect. I've also moved the old [var/tick_interval] [world.time] implementation to a tick-based [var/time_until_next_tick] counter. There are a couple, less noteworthy changes in here as well. The main one is that there was an unused bit of bloat code for setting tick intervals based on a random lower and upper threshold, but that can be done in tick() now so it's completely redundant, and I thus removed it entirely. That makes parts of [proc/process] much easier to read. I added/modified some unit tests (which I expect to fail) to verify that [var/duration] and [var/tick_interval] are both multiples of the subsystem wait assigned to the status effect. If the programmer wants a duration of 2.5 seconds, they expect it to work that way, but it won't because SSfastprocess only ticks once every 0.2 seconds, which 2.5 is not a multiple of. This becomes way more apparent when a status effect is set to use SSprocessing. The final, perhaps most important unit test I've added, is one that verifies that the overall tick count and overall accumulated [seconds_between_ticks] are equal to "[var/duration] / [var/tick_interval]" and "[var/duration]" respectively. ## Why It's Good For The Game The main thing this PR fixes is timing inconsistencies. Before this PR, durations and tick intervals were tracked using world.time, while the [proc/tick] call timing was dependent on the wait time of the subsystem the status effect was processing on. Thing is, SSfastprocess and SSprocessing rarely run completely in one tick during real gameplay. This led to a continuous desync where status effects were consistently inconsistent in their overall tick count. This is a big problem as [seconds_between_ticks] is constant and thus doesn't account for this difference in tick count. As an example, Changeling's Fleshmend has a duration of 10 seconds, a tick interval of 1 second and a healing rate of 4 brute per tick. Previously, if the server was lagging even slightly and it only ticked 8 times over the course of 10 seconds, you would heal 32 health rather than the 40 that a full Fleshmend would give you. The total effect potency of a status effect being reliant on server lag is incredibly stupid, especially for status effects that have an associated cost. (like the aforementioned Fleshmend) As for the refactors, they make status effect code easier to read and debug. Unit tests also make verifying things are working as intended much easier. ## Changelog 🆑 fix: Status effects now tick consistently, with Fleshmend and such giving a consistent total healing amount. Report any oddities. refactor: Status effect code is now easier to read and makes more sense. Again, report any oddities, the changes are major. /🆑 |
||
|
|
999bde8f84 |
Most screen alerts now fit the player's hud style. (#93493)
## About The Pull Request Most screen alerts that use the midnight hud style no longer have the button baked in their icon. Other screen alerts with their own background or shape (robot and mech alerts, atmos, heretic buffs or debuffs etc.) are not affected. Also updated a couple sprites but didn't spend too much time on them. Mostly reusing existing assets. Montage of how the alerts look on threee different hud styles (Operative, Trasen-Knox, Detective, ALSO I FIXED THE BUCKLED ALERT ALREADY): <img width="293" height="323" alt="image" src="https://github.com/user-attachments/assets/3a2b972b-aa5a-4c27-a454-c8c39acf6e20" /> It looks only a smidge iffy on the syndicate since the top and bottom borders aren't layered over all the overlays, but it isn't something to worry about in this PR. ## Why It's Good For The Game Screen alerts always had the midnight hud button baked in their icon states (now overlays), which completely disregard the player's hud setting, much unlike action alerts buttons. Melbert has also said that it'd be nice if the code for action buttons could also be used in screen alerts and viceversa, to slim things down. That's obviously not what I'm doing today, but having most of the screen alerts already without the baked background will surely help if we ever pursue that objective. ## Changelog 🆑 refactor: Refactored screen alerts a little. Most should now fit the player's hud style. Report any issue. imageadd: A few screen alerts have been polished/updated a little. /🆑 |
||
|
|
44acefa73f | More things use trait huds over raw hud management (#93084) | ||
|
|
0aa5ef9eb8 |
The chain of command boosts action speed and not just move speed. (#92964)
## About The Pull Request Most contributors do not know or forget that we also have action speed modifiers (which are a tremendous copypasta tbh) and not just move speed modifiers. This is probably just another example of this. Also the item had an unused variable, no context tips and didn't have an attack animation, a balloon alert or a chat message when performing the action, only a whip sound. Also gave the chain of command its own file. ## Why It's Good For The Game I think it makes sense for the chain of command to hasten someone in ways other than just running one's legs. Also it's kinda more effective at boosting action speed because `do_after` actions are not as frequent as moving the mob in any direction at all. ## Changelog 🆑 balance: The secondary action of the chain of command (the chained whip) also boosts action speed and not just move speed. qol: The chain of command now has contextual tip for its secondary action, and plays the whip attack animation when it's done. /🆑 |
||
|
|
e991857e88 |
Girlifies His Grace (4) (low-stakes edition) (#92658)
## About The Pull Request Alternative to 3️⃣(#92591), which has been fatally shot. Makes it so that His Grace can be turned into Her Grace via a xenobiology gender-change potion. Her Grace turns the souls of the consumed into confetti, creating a nice party atmosphere. Also adds pronoun helpers for /atom/s, as they weren't there before. ## Why It's Good For The Game I thought this was a good idea <img width="934" height="153" alt="image" src="https://github.com/user-attachments/assets/aff7abe0-86b6-47e1-a8e6-2c233544e9aa" /> It's a silly little variation, and it's purely voluntary. Couldn't hurt. ## Changelog 🆑 add: His Grace will now drink gender-change potions /🆑 --------- Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com> |
||
|
|
7c6e6422cc |
Misc File Purge: The Return (#92438)
## About The Pull Request Purged several files inthe theme of misc.dm and broken the contents out into better organised files. Incidentally done some minor cleanup by removing an unused global list referring to a string file that no-longer exists, and removing a useless proc that replicated the behaviour of file2list(). ## Why It's Good For The Game See #60358 and all its successors ## Changelog 🆑 code: Reduced the number of files named misc.dm or similar by 14%. /🆑 |
||
|
|
70d36ada20 |
The Chain of Command can now give a speed boost by whipping other players (#92387)
## About The Pull Request The Chain of Command can now hasten other mobs when right-click attacked. https://github.com/user-attachments/assets/b6c2185e-0edb-45d5-a015-3c7e0a684ffc It's not a very ample speed boost, but it's enough to make it worth taking into battle if you have friendlies to buff. Lasts 7 seconds. Refreshes on hit. You cannot whip yourself. This only applies to the Chain of Command, not whips nor tailwhips. There's only one of these bad boys on the station. Use it well. ## Why It's Good For The Game The chain of command is nice as a ceremonial weapon, but it doesn't actually see any use in combat. Ever. Instead of just making it do more damage (boring), I wanted to make it a support tool. The captain (its owner) should usually be in the backlines of a fight, after all. Support tools gives less combat-focused players (or pacifists) a way contribute meaningfully to a team fight (nukies, revs). Not equipped to fight the blob with the rest of the team? You can use this to buff your allies without putting yourself within the blob's reach. <details> <summary>The EVIL secret reason I think it's good for the game...</summary> It gives people some mechanical incentive to steal the chain of command for once >:) </details> ## Changelog 🆑 Rhials balance: The Chain of Command will give a speed bonus to other players when right-clicking them. /🆑 |
||
|
|
72d829aa50 |
Makes deep water not quite so ultra lethal so you can actually go for a swim (#91135)
## About The Pull Request Currently, due to the amount of stamina damage that entering a tile deal, as well as the amount of stamina damage and the frequency of the stamina damage inflicted by the swimming status effect, wading into deep water may be tantamount to suicide without stimulants. To avoid this problem, we've made some adjustments to how and when we inflict our swimmer with stamina damage. Firstly, we've reduced the values for stamina loss and oxygen loss by a fairly decent margin. Secondly, we only inflict stamina damage on wading into deep water 30% of the time. When this happens, we award experience and give our swimmer the exercised buff. Thirdly, for a bit of realism, our combined weight class of equipped items and combined equipped item slowdowns contribute to our stamina penalty from wading through water. Smaller objects do not affect this, but things like jumpsuits and backpacks do. Shorts do not contribute to this weight specifically. You're definitely going to sink if you are wearing the RD's MODsuit. (though the RD has the strength to move in that thing anyway) Fourthly, we increased the tick interval for the swimming status effect from every second to every five seconds. This better represents long term swimming exhaustion. However, we don't award athletics skill points for this. You have to actually move to get skill improvements. Breath loss from drowning also has been put behind a probability, because losing breathes is actually pretty severe and we don't want this increment infinitely quickly. As an added bonus, we now include athletics boosters to swimming. Finally, we fixed a runtime in the exercised status effect when assigned to a mob without a mind. ## Why It's Good For The Game One time I found an assistant that had drowned in the 1x3 deep water on Metastation because he didn't know stepping into deep water was basically asking to die a horrible death. Rather nasty. Also that other swimming PR reminded me that this needs fixing. It is hilariously lethal. I just want to go for a swim at the beach! ## Changelog 🆑 balance: Swimming is no longer so hyper lethal, and also benefits from athletics boosters. balance: By default, swimming through deep water does a somewhat low but mounting quantity of stamina damage. Reduced by athletics skill and athletics boosters. balance: Your total carried equipment weight (and their slowdowns, if any) contribute to your stamina loss while swimming. If you fell into deep water, best start stripping items. balance: Floating is slightly less lethal, especially if you are starting to drown. fix: Fixes a runtime caused by the exercised status effect. /🆑 |
||
|
|
845ed7459e |
Bravo Six, Going Dark: Refactors client colors to fix dupe issues and support filters (#89843)
## About The Pull Request Completely refactored how client colors are handled. Now they're similar to traits, having a source associated with them. Instead of adding and removing by strict type (which makes client colors prone to getting duplicated and not cleaned up) you remove a filter associated with a specific source. Adding another client color with the same source as an already existing one will replace the existing one if its of a different type, or do nothing if they're the same (unless force is set to TRUE). Client colors can also force filter splitting, putting all colors that come before them, themselves, and all colors after them into separate filters - this is useful to prevent mixing in filters which are supposed to remove a certain color. <details> <summary>Example of how Perceptomatrix and nightmare vision goggles combined before this PR:</summary>  And this is after, as you can see nightmare vision effect's red is only slightly tinted by perceptomatix instead of being literally halved.  </details> Additionally, added support for custom filters (and not just colors) to client color code to allow us to work with more colorspaces. Also fixed weird blindness behavior, so this also Closes #89787 ## Why It's Good For The Game Makes code less ass to work with, fixes weird color mixing, etc. ## Changelog 🆑 fix: Fixed perceptomatix helmet allowing you to see even when unconscious refactor: Refactored how client colors are handled, ensuring that certain effects like nightmare goggles don't disappear when another vision-affecting piece of clothing is worn. /🆑 |
||
|
|
97459d6667 |
FINALLY!! Plant bodyparts will heal when transplanted (#89306)
## About The Pull Request Finally, I've done it. You can get plant limbs attached, and those limbs will actually regenerate in light! I've done the same for shadow healing for nightmares and shadowpeople.  **Details:** I've removed the healing/damage from their species, and instead have the prospective limbs add a new /datum/status_effect/bodypart_effect to the carbon, which other bodyparts with the same effect merge into. Plant people in specific also had oxy and tox healing, as well as nutritional gain. These attributes have been integrated into the bodyparts aswell, and scaled to the amount of bodyparts you have. You can take 1 plant limb to get 1/6th of the oxygen and toxin healing of a normal podperson. Same for nutritional gain. (Fun fact: you need 2 plant limbs to never lose hunger, 3 to actually be nutrition positive!) Damage wise, if you have 1 plant limb, you get 1/6th the plant healing but focused on only the plant limb. (This is hopefully exactly as you'd expect). Fun fact: if you remove your lungs and organs and take plant limbs, you will still die from oxygen loss or toxin loss because the oxy and tox healing is really weak. ## Why It's Good For The Game Honestly this is peak sandbox. I remember when transplants got added, and I took a plant limb, but it didn't heal in light :( This shattered my immersion and deeply saddened me. Honestly this is why I started the whole dedatumisation of species tirade. But it's here. Trans plant plant transplants will heal in light. Tgstation is saved and all furry downstreams are rebasing. ## Changelog 🆑 add: Taking plant or shadow limbs will now behave as expected! Take a plant arm, and it will heal in light! Or take plant and shadow limbs and be in constant agony as you realize this world was not made for you refactor: Refactors how we handle photosynthesis/nyxosynthesis by moving it into a new status_effect framework controlled by podyparts /🆑 |
||
|
|
851c5a5df9 |
Convert all traits given by status effects to use TRAIT_STATUS_EFFECT(id) (#89291)
## About The Pull Request This makes (almost?) all traits given by status effects use `TRAIT_STATUS_EFFECT(id)` as their source, rather than the previous mix of `id`, `type`, `REF(src)`, or some bespoke thing. ## Why It's Good For The Game Consistency is good. ## Changelog No user-facing changes |
||
|
|
3c40876f15 |
Fix itchy skillchip status effect "Curse of Mundanity", adds unit test for effects set to "Curse of Mundanity" (and missing IDs) (#88240)
## About The Pull Request Fixes a lot of status effects having the default alert, adds a unit test to check that status effects don't forget to change it I chose a test rather than just making the default "no alert" because I think people making status effects should think about whether it should have an alert Also I added a test for effects which did not set an ID because that's kind of important, I applied the same mindset here to account for abstract types but admittedly less sold on this one. ## Changelog 🆑 Melbert fix: You should be afflicted by the "Curse of Mundanity" far, far less /🆑 |
||
|
|
d3bc3e8cb4 |
Being drunk or having a broken arm hurts accuracy with ranged weapons. Also cleans up a fair bit of hand handling to be more readable (#87904)
## About The Pull Request 1. Having a broken arm will affect your accuracy when firing a weapon with that arm, even potentially causing damage to you if it's a weapon with recoil. This effect is not applied under the effects of a painkiller. 2. The sister effect of this (punching someone with a broken arm) now also has an interact with painkillers (it can no longer block your attack). 3. Being drunk heavily affects ranged weapon accuracy, unless you're the bartender 4. A lot of hand handling cleanup, using new macros to make it a lot more readable at a glance ## Why It's Good For The Game We have this system for modifying firearm accuracy but we don't really use it commonly, and I feel like it slots in well with a lot of places For broken arms, it adds some more depth to the wound system, in the same way that trying to punch someone with a broken arm causes pain. (I actually want to expand this to melee weapon accuracy and attacking with melee weapons in general, but that's for a later time) For drunkenness, it just adds to the drunk shenanigans. It also slightly reduces the effectiveness of drinks as combat healing chemicals, such as quadsec - makes it a bit more of a trade off. ## Changelog 🆑 Melbert balance: Having a broken arm affects your accuracy with ranged weapons fired with that arm. Utilizing a painkiller will nullify this effect, however. balance: Painkillers will prevent your punches from being cancelled due to having a broken arm. You'll still take damage, though. balance: Being drunk now affects your accuracy with ranged weapon. The bartender is immune to this effect via their skillchip. code: A lot of code involving left and right hand handling has been cleaned up, easier to read. Report any oddities, like left and rights being flipped /🆑 |
||
|
|
239797a4ee |
Deletes misleading infinite define, adds defines for clearer status effect durations (#87842)
## About The Pull Request 1. Deletes `INFINTIE`, it is misleading and not at all a big number and causes bugs 2. Adds `STATUS_EFFECT_PERMANENT` and `STATUS_EFFECT_NO_TICK` to make it clearer what infinite status effects are |
||
|
|
8fd9d6b49c | Makes mayhem-in-a-bottle text more obvious (#87586) | ||
|
|
734051bb1f |
update_body_parts() is now called when adding or removing bodypart overlays. (#87215)
## About The Pull Request I'm making sure that `update_body_parts()` is properly called when changing bodypart overlays, so that they actually show up the very moment they were changed. However, to avoid redundant `update_body_parts()` calls on init or while changing species, I've added a living flag that stops `update_body_parts()` from being called in these situations. I also scoured the codebase for other redundant `update_body_parts()` to remove and things to clean up a little. ## Why It's Good For The Game This automates the process of calling `update_body_parts()` a bit. ## Changelog Mainly backend. |
||
|
|
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 /🆑 |
||
|
|
c91c50f937 |
You can now raise lobstrosities from chasms chrabs. (#84969)
## About The Pull Request Lobstrosities can now be raised from aquarium icemoon/lavaland chrabs. First of all, you've to get a live chrab, an aquarium, and some fish feed. Second, you place the chrab inside the aquarium and turn the 'allow breeding' settting on (should probably rename it to a more apt name now). Keep the chrab well fed, and possibly with some friends and props in the same aquarium until it develops into a hopefully calm juveline lobstrosity and plops out of the aquarium (it can take some time). From there you can tame it by feeding it its favorite food: arms and lavaloop fish, and wait another dozen minutes for it to mature into a fully grown lobstrosity. Juveline lobstrosities are basically smaller and weaker lobstrosities, if not slightly faster in some ways. Unlike their taller counterparts, they can be tamed. Once done so, they'll retain their tamedness once grown up. Regardless, tamed lobstrosities can be given the pet command to fish for things by pointing at them. Thanks BenMatrix for the profound fisher component, woo. The chrab's weigth and size influence the growth speed of the first stage faster, meaning bigger chrabs (may require crossbreeding) will turn into juveline lobstrosities quickly. Amongst other things influencing the resulting mob are fish traits: Several traits have been given effects that apply to the mob, such as nocturnal regeneration, being venomous or being able to fly akin space carps. Also a new one that prevents the resulting lobstrosity from fully developing Now tested. ## Why It's Good For The Game I'm building upon fishing and aquarium stuff, which has been an interest of mine in a good while, though most of it doesn't have that many practical uses, I'm slowly trying to make it cooler, and chasm chrabs growing into lobstrosities is pretty much in line with the fluff texts for the fish. Eventually I'll have to add tips inside fishing toolboxes, otherwise people won't know even half of it. ## Changelog 🆑 add: You can raise lobstrosities from chasm chrabs inside an aquarium with the 'allow breeding' setting on. Keep the fish well fed, healthy and not lonely if you don't want an hostile one. add: Juveline lobstrosities (from chasms, plasma rivers, or aquariums, xenobio too) can be tamed with arms and lavaloop fishes. add: For lobstrosities grown from aquariums, they can have additional effects based on the fish traits they had in the aquarium, like being venomous or even flying. /🆑 |
||
|
|
34f3f479ae |
Small hulk cleanup / nukes TRAIT_IGNOREDAMAGESLOWDOWN (#85003)
## About The Pull Request I was investigating a bug with hulk in which using it while damaged doesn't put you back on full speed I noticed `TRAIT_IGNOREDAMAGESLOWDOWN` on its own was subtly broken, in that it did nothing if the user did not call `updatehealth` afterwards And guess what, most (if not all) uses of the trait did not do this, so it never applied correctly So I nuked the trait entirely, made all uses of it use the same thing morphine uses (`/datum/movespeed_modifier/damage_slowdown`) And since I was auditing this I saw the ball module was broke, it removed the immunity but never added it. Quick fix I also cleaned up some Hulk stuff while I was in the area because I was in the area. I removed all instances of `check_mutation` and replaced it with trait checking because it made more sense. I also also fixed a bug with the simple flying element never removing on detach because I touched something that uses it for the above change. ## Changelog 🆑 Melbert fix: Using hulk (and a myriad of similar effects) now properly updates your movespeed to ignore the damage movespeed penalty fix: Some things which temporarily make you fly don't make you fly forever fix: MODsuit ball module now properly makes you immune to damage movespeed penalty when in ball form fix: Adding Hulk via VV dropdown doesn't default to adding the strongest hulk available (that which is used by the medieval pirates) /🆑 |
||
|
|
ff836e10be |
First Genetics Content in 5 Years (Adds new positive mutations!) (#83652)
## About The Pull Request Sister PR to #83439, that needs to be merged before this. Adds a plethora of new positive mutations to the game! Mutations now have a variable that directly adds and removes traits instead of manually doing so for idk Tripled cryobeam range. Made the mushroom hallucinogen's code more readable. - Adrenaline Rush Trigger your body's adrenaline response, granting you 10 * P units of pump-up, synaptizine, and determination. After 25 seconds, you crash, recieving 7 * S units of tiring and dizzying solution. Can be Energized, Powered, and Synchronized. - Mending Touch Transfer injuries from the target to yourself! Heal 35 * P damage, recieving up to 35 * S damage in turn. Transfers moderate wounds, fire stacks, and attempts to parallel limb-to-limb damage. Has bonuses for pacifist players. Can be Energized, Powered, and Synchronized. - Elastic Arms Your arms become floppy and you can interact with things as if you were adjacent to them from one tile further! Does not work through walls or dense objects, and you become unable to lift huge items, pull large corpses, and you get chunky fingers. Split temperature adaptation into three: - Cold Adaptation Gain cold immunity, gain ice slip immunity! - Heat Adaptation Gain heat and ash storm immunity - Thermal Adaptation Resist both cold and heat, but no extra fancies. The sprite is green now! Pressure Adapt has a purple sprite. You can mix the cold mutations with Fiery Sweat to make these new ones: - Cindikinesis Instead of summoning snow, you can now summon... ash. Wow. Very cool. - Pyrokinesis You can fire fire now! Fires beams of heat that, unlike the temperature gun, actually ignite on hit. Higher instability cost than its sister mutation. The changes have been themed primarily around classic superhero gimmicks. Genetics feels like a natural spawning point for superheroes, and its mutations show this via the good ol' 'radiation made me fire eye lasers' hero backstory. Adding more ways to be a superhero is fun. Also, added two new speech mutations: - Trichromatic Larynx Every word you say is now either red, green, or blue! - Heckacious Larynx (Trichromatic Larynx x Wacky) You sound, well. Absolutely ridiculous. Spectacularly silly. Profoundly wacky. Don't give it to the clown. Unlocked the Elvis mutation as well. ## Why It's Good For The Game > Adds a plethora of new positive mutations to the game! Genetics is in desperate need of new content, all it's had for years is a slow gutting and removal of the few things it does have. Hulk is, being real, stupid, dumb, stagnated, and overpowered, but it's been begrudgingly accepted because genetics is quite literally just, nothing without it. I'm here to add the somethings to genetics and add some more variety (and no i'm not touching hulk) > Mutations now have a variable that directly adds and removes traits instead of manually doing so for every mutation. Less stupid > Tripled cryobeam range. Shit joke mutation is now long-range shit joke mutation! > Made the mushroom hallucinogen's code more readable. Slightly OOS because I was going to add color blind mutations but decided not to creep. This piece o shit code has been hurting my head for years and now that I've finally understood it I want to make sure others don't go through that pani. > - Adrenaline Rush A quick burst of some mild chemicals at the cost of eventual nausea, sounds like a fair trade to me! If you're already on the ground, this isn't going to do anything. > - Mending Touch Healing is something that's lacking from the mutations, and this puts a fun spin on it, making the caster a damage pincushion as they heal and absorb damage. > - Elastic Arms Classic superhero power, very funny, lots of silly and sandbox potential. Has innate drawbacks because 1. thematic and 2. it's pretty strong > Split temperature adaptation into three: They combine into the same thing it used to be, so don't freak out. This just adds some separation between the immune types, for things like themed superheroes. > - Cold Adaptation Perhaps mildly concerning, but I think this might be a fun spin on it? TODO: make hiking boots effect? > - Heat Adaptation Nothing to say. It's cool. > - Thermal Adaptation Nothing wrong with this mutation so it stays in > You can mix the cold mutations with Fiery Sweat to make these new ones: How can we have frozone and not, uh human torch or something. why are there no heavy hitter fire superheroes in marvel or dc??? > - Cindikinesis Can't really summon an equivalent to snow that's actually useful, so here's this instead. Clown might like it, or maybe the chemist. > - Pyrokinesis The ignition effect is fairly weak and mostly a deterrent. I think this is the most dangerous ranged mutation in the game, which is kinda sad. > - Trichromatic Larynx Colors are fun! We have speech mutations that change words but none that change their color. Though, to be fair, this was mostly added for the mutation below's combination. > - Heckacious Larynx (Trichromatic Larynx x Wacky) I felt that Wacky wasn't nearly wacky enough. It just made your speech comic sans. That's great and all, but. It's not much? This will be a truly clownly mutation, the Genetics equivalent of a HONK mech. I made it a combination mutation specifically to restrain its power level. > Unlocked the Elvis mutation as well. Was there a reason to lock this? ## Changelog 🆑 add: Added tons of new mutations to Genetics, alongside some recipes! add: Thermal Adaptation has been made a combination mutation from the stronger but narrower Cold and Heat adaptations. balance: Cryobeams have 9 tile range, and fiery sweat doesn't cause spread on contact. image: Added some neat new sprites for the new mutations, and added a greyscale version of the magic hand sprites. code: Infinitesmally improved mutation code. /🆑 |
||
|
|
df0e0811c2 |
Significantly increases stamina recovery on most effects that provide it (#83556)
## About The Pull Request Currently, stamina healing is a niche side effect on many drugs, besides a few effects (mostly heretic powers, an obscure side effect of some drinks) that actually contribute to a significant shift in gameplay style when you use them. In this PR I significantly increased the stamina recovery on almost every drug and some effects that provide it. Points of interest (not completely inclusive): Syndicate stimulants heal 12 instead of 5 stamina damage. This will bring you out of stam crit in two cycles, and let you heal out of the slowdown from the stamina damage from a baton strike. The current rate of 5 takes 5 seconds to heal out of stam crit, and the stamina reset takes place before you heal out of stamina damage slowdown. Bath salts heal stamina at the rate stimulants used to. Meth heals stamina slightly slower. Changeling adrenaline will instantly bring you out of stam crit if you're in it; otherwise, it will heal 10 stamina damage. Ephedrine heals 4 stamina per life, instead of 1. Being so drunk that you black out and give up your body to ghost control will make you heal stamina more quickly than an ascended rust heretic. You will also likely be dying of liver damage. ## Why It's Good For The Game At the levels they are set, most of these stamina healing effects have almost no effect on gameplay whatsoever except in the case of tanking a couple of extra disabler shots (only in the case of the high end drugs), or being able to do stamina consuming tasks slightly longer (breaking boulders, grinding with pestle and mortar, working out, ???). Adjusting these numbers would make these drugs an actual factor in combat situations that rely on stamina crit (stun batons, ebows, stamina damaging poisons and diseases). Most of the drugs already have side effects such as brain and organ damage, which in the current state hugely outweighs any reason to use most of them besides a few that give a movespeed buff or prevent baton knockdown (ephedrine, stimulants). This only affects stamina healing. There has been no change to any other interactions with things that knock down or cause any other kind of stun. These changes are in consideration of the fact that taking stamina damage puts you in a cooldown before you can recover your stamina naturally. Effects that cause steady stamina damage will bottom out your stamina the way they do now, unless you use something to heal it. ## Changelog 🆑 balance: Stamina healing has been significantly increased for most reagents and passive effects. /🆑 |
||
|
|
7499b84c9e |
Protects space spawned humans from radiation nebula (#83202)
Fixes #80864 When a mob is spawned in space in a nebula, they get 1 minute of radiation immunity. Ninja is the main one, but it'll also apply to other space spawned mobs (lone nukie, space changeling?) This only works for dynamic spawned antags. If an admin forces ninja through an event, it doesnt work  🆑 fix: Space Ninja and other space spawned antags get a 1 minute radiation shield in the radioactive nebula /🆑 |
||
|
|
11843651f5 |
Allows status effects with alerts to display their duration (on the alert), adds it to a select handful (#83211)
## About The Pull Request Plainly: Expands the status effect API so their alerts can showcase duration remaining. https://github.com/tgstation/tgstation/assets/51863163/02eaad84-ebb7-4af9-9895-977c6e71acc4 ## Why It's Good For The Game I figure there are some status effects out there which really want the player to know how long the duration is. And right now, for 95% of them, you have to code dive to find out. This is rather punishing for players who... don't code dive. At the same time, there are effects which *do* tell you how long they last, which leaves it up to the player to intuit when it'll run out. This can get a bit silly during lag, and again, punishes new players. That's not to say I think every status effect should report how much duration is left: **For very common effects, like sleeping, it should be left up to the player to guess.** Otherwise we lose a lot of paranoia and feeling of helplessness. (Also keep in mind this only applies to status effects with alerts associated.) Hence why I only added it, largely, to the more "gamified" buffs and debuffs - Things from (generally) one or two sources and with a static duration, (or things which already informed the player how long they last). Notable ones include Fleshmend, Convulsing (from emag defib), Regen core. ## Changelog 🆑 Melbert qol: Some alerts, such as Fleshmend's, show their remaining duration on their icon. /🆑 |
||
|
|
ca2ff33292 |
Rocky DLXIII: Fitness to Athletics, Athletics skill influences Boxing against Boxers, Boxing overhaul, Evil Boxing (#82611)
## About The Pull Request ### Changes Fitness skill to Athletics skill; Removes the sprite growth as the only meaningful reward Basically just a rebranding so that it is more broad in its concept. It isn't just about peak physique. It's about how you can apply it too. Reaching Legendary rewards you with the Golden Gloves. ### Boxing Overhaul I started it in this pr here https://github.com/tgstation/tgstation/pull/80635 But this is a more significant overhaul of boxing from the ground up. Namely, it now is majorly influenced by the Athletics skill, and also more thoroughly aligns with conventional punching in its current state. However, a major component of this is that boxing's breadth of mechanics is only relevant when used against another boxer. Non-boxer targets are only ever going to get smacked by a stamina punch, as it is currently (and more or less the same values too). Additionally, boxers cannot punch someone who is either unconscious or in stamina crit, so it can't be used to maintain stamcrit. - Boxing now has a One-Two Punch mechanic. Swapping between the left and right mouse buttons to punch and maintaining this causes every second punch to do more damage (to boxers). Breaking this chain by punching with the same button twice will cause you to lose damage (against boxers). - Boxing now can have crits occur below 50 stamina damage (against boxers). However, to knock someone out clean, the target must be staggered from a previous crit first. (Or I guess be staggered at all, maybe their shoelaces were tied or something). Crit probabilities are determined by adding your Athletics probability skill bonuses to your unarmed effectiveness, and then reduced by the targets own Athletics skill bonuses. It is hard for two athletes to knock each other out in one blow. It is trivial for a legendary boxer to knock out a novice in a single punch. Cybernetically enhanced boxers are dangerously effective at boxing. - Boxers can block other boxers by using throw mode, but the chances of doing so is based on Athletics skill bonuses. A successful block causes the attacker to take stamina damage (as does the blocker, but less so). - Participating in boxing increases the Athletics skill. Your gains are probably slower than normal training, but you at least get some reward for doing so. Only relevant if your opponent is a boxer. Get a sparring partner! ### Evil Boxing (Admin Only) So this is all well and good, but what if you're a scoundrel with no care for the other person in this equation? Well, that's where Evil Boxing comes in. Evil Boxing has absolutely no restrictions at all, and can freely use its boxing abilities against anyone. Even non-boxers. You can even grab people! Wow, what a scumbag. I bet you even king hit people. Thankfully, only an admin can make you into an Evil Boxer. ### Strength and Stimmed Mutations now benefit Exercising and Boxing (against boxers) Both mutations have a flimsy increase to instability of 5 because of how incredibly particular the bonus is. Strength now reduces the amount of stamina damage inflicted via exercising by half. Strength also adds a +2 damage bonus on boxing punches while boxing against boxers (this doesn't influence normal unarmed attacks whatsoever, or boxing against nonboxers). Obviously, evil boxers just get this benefit against everyone because they're knaves. Stimmed increases the duration of the exercised status effect by one factor. (That is, if you have no other modifiers, it will double the duration on its own) ## Why It's Good For The Game @Jacquerel was racking their brain trying to come up with an alternative to the skill rewards of Fitness. At the moment, sprite growth is not only a really bad bonus (it does literally nothing but make you big, and thus is actually a detriment due to how intrusive sprite size is with interaction, and plays weird with other sprite changing effects), but isn't really all that interesting for all the effort put in. Problem is, how do you make Fitness meaningful without making it a powergame mechanic? Simple! You make it applicable to a really niche, self-contained but still utilized game mechanic that is engaging to participate in and makes you meaningfully very good in it. AND scratches that power scaling itch that many players have. Boxing is reasonably self-contained as is, but pretty bland due to how old it is. While maintaining that self-contained nature, I hoped to expand the interactivity of boxing a little bit by giving it a small mini-game in of itself. And also introduce ways to simulate the idea of boxing a bit better. The idea of being an Evil Boxer is funny. For every Rocky, there is a [Insert Rocky Villain Here that isn't Creed]. But in this case, it's probably some Syndicate douchebag looking to punch clowns into a coma and inspire the mime to take up shadowboxing in revenge. ## Changelog 🆑 add: Replaces Fitness with Athletics; same skill, but now more specifically applicable to boxing. add: Athletics does not increase sprite size. balance: Overhauls Boxing to add a lot more depth to the interactions. Only applicable to other boxers, however. You can still punch the snot out of non-boxers though. But only up to stamcrit or unconsciousness. No hitting someone who can't fight back! balance: Adds Evil Boxing, which is the evil and fucked up version of boxing that you kill people with and are allowed to flout the sacred rules of boxing as you please. Everyone is a victim! /🆑 |
||
|
|
536381d308 |
Fitness rebalance and improvements - mood, fireman carry, and longer workouts (#79584)
## About The Pull Request So after getting feedback on fitness I've decided to make some balance changes: - ~~Every level of fitness now increases max hp. At max legendary fitness, all the hp bonuses combined results in a total of +25 max hp~~ - Fitness now decreases the time it takes to firemany carry by 0.33 seconds per level. (At max fitness, this means a decrease of 2 seconds) - Exercise status effect triggers the exercise mood event and goes away when the exercise status effect is gone - The better your fitness level, the more happiness you gain from the mood event - Decreased the fitness timers and effects by half and tweaked a few other values - Increased the nutrition cost of working out - Removed doubles metabolism exercise effect I'd also like this test merged to see if anymore minor tweaks need to be made. ## Why It's Good For The Game Fitness effects on gameplay were pretty underwhelming. This was deliberate since there is a concern about prisoners being able to abuse it in quite a lot of scenarios. ~~Adding a small boost to max hp is nice given that the downside is a bigger target.~~ Another problem was that the double metabolism rate resulted in a lot of the diet effects being metabolised before you could convert them into exercise gains. So this was removed. People would also hit their bench max rather quickly and then spend a long duration sleeping. Ideally I wanted people to spend more time working out than sleeping, so I halved the duration values so it takes them longer to achieve maxxing out. ## Changelog 🆑 balance: Fitness level decreases the time it takes to firemany carry someone. Fitness level determines how much of a positive mood the workout grants. Working out is now more difficult and requires more nutrition. balance: Exercise no longer triggers double metabolism. /🆑 --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
274eb2a52e |
Removes Clone Damage (#80109)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Does what it says on the tin. We don't have any "special" sources of clone damage left in the game, most of them are rather trivial so I bunched them together into this PR. Notable things removed: - Clonexadone, because its entire thing was centered around clone damage - Decloner gun, it's also centered around cloning damage, I couldn't think of a replacement mechanic and nobody uses it anyways - Everything else already dealt clone damage as a side (rainbow knife deals a random damage type for example), so these sources were removed <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Consider the four sources of normal damage that you can get: Brute, Burn, Toxins and Oxygen. These four horsemen of the apocalypse are very well put together and it's no surprise that they are in the game, as you can fit any way of damaging a mob into them. Getting beaten to death by a security officer? Brute damage. Running around on fire? Burn damage. Poisoned or irradiated? Toxin damage. Suffocating in space? Brute, burn and oxygen damage. Technically there's also stamina damage but that's its own ballpark and it also makes sense why we have a damage number for it. Picture this now: We have this cool mechanic called "clone pods" where you can magically revive dead people with absolute ease. We don't want it to be for free though, it comes at a cost. This cost is clone damage, and it serves to restrain people from abusing cloning. Fast forward time a bit and cloning is now removed from the game. What stays with us is a damage number that is intrinsically tied to the context of a removed feature. It was a good idea that we had it for that feature at the time, but now it just sits there. It's the odd one out from all the other damage types. You can easily explain why your blade dealt brute damage, but how are you going to fit clone damage into any context without also becoming extremely specific? My point is: **clone damage is conceptually a flawed mechanic because it is too specific**. That is the major issue why no one uses it, and why that makes it unworthy of being a damage stat. Don't take my word for it though, because a while ago we only had a handful of sources for this damage type in the game. And in most of the rounds where you saw this damage, it came from only one department. It's not worthwhile to keep it around as a damage number. People also didn't know what to do with this damage type, so we currently have two ways of healing clone damage: Cryotubes as a roundstart way of healing clone damage and Rezadone, which instantly sets your clone damage to 0 on the first tick. As a medical doctor, when was the last time you saw someone come in with clone damage and thought to yourself, "Oh, this person has clone damage, I cannot wait to heal them!" ? Now we have replacements for these clone damage sources. Slimes? Slime status effect that deals brute instead of clone. Cosmic heretics? Random organ damage, because their mechanics are already pretty fleshed out. Decloning virus? The virus operated as a "ticking timebomb" which used cloning damage as the timer, so it has been reworked to not use clone damage. What remains after all this is now a basically unused damage type. Every specific situation that used clone damage is now relying on another damage type. Now it's time to put clone damage to rest once and for all. Sure, you can technically add some form of cellular degradation in the future, but it shouldn't be a damage number. The idea of your cells being degraded is a cool concept, don't get me wrong, but make it a status effect or maybe even a wound for that matter. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## 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 it's 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. --> 🆑 del: Removed clone damage. del: Removed the decloner gun. del: Removed clonexadone. /🆑 <!-- 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. --> |
||
|
|
c00f7d53a3 |
The Inversenning : Superior Healing Medications (#79342)
Introducing new inverse reagents for existing superior healing medications! This push includes... **Benzoic Acid** : Inverse of Salicylic Acid. Robust fertilizer that provides a decent range of benefits for plant life. **Oxymetholone** : Inverse of Oxandrolone. Anabolic steroid that promotes the growth of muscle during and after exercise. **Bamethan** : Inverse of Salbutamol. Blood thinner that drastically increases the chance of receiving bleeding wounds. **Pendetide** : Inverse of Pentetic Acid. An unusual bioradioactive drug that purges basic radiation healing chems. Also increases the severity of radiation poisoning. **Hyoscyamine** : Inverse of Atropine. Heals heart and stomach damage, and slowly removes minor toxin damage. **Ammoniated Sludge** : Inverse of Ammoniated Mercury. A ghastly looking mess of mercury by-product which causes bursts of manic hysteria. **Inreziniver** : Inverse of Rezadone. Makes the user horribly afraid of all things related to carps. This is an effort to add more variety to the existing inverse reagent system within chemistry. Not only should this variety serve to provide additional options for a Chemist to experiment with, they should also broaden the possibilities for already existing strategies. |
||
|
|
573895a302 |
Traits from blessing of insanity are now applied correctly (#79704)
## About The Pull Request What it reads on the title. The traits should be applied to the owner and not the status effect itself. ## Why It's Good For The Game This will fix #79641. ## Changelog 🆑 san7890, Ghommie fix: The Blessing of Insanity now grants no damage slowdown and free hyperspace movement correctly. /🆑 |
||
|
|
af43f39737 |
Add new fitness skill and mechanics (#78922)
## About The Pull Request  ## New Fitness Skill - Working out on the weight machines will require less stamina - The exercised status effect durations are increased by the level - The more fitness you have, the bigger your mob sprite ## Exercised Status Effect - Boost your metabolism x2 - The max duration is determined by the fitness skill - Uses multipliers based on a good diet and ~~steriods~~ medicine to increase the duration - Will convert into fitness skill xp while sleeping based on the quality of sleep ## Weight Training Equipment - Weight machines now drain stamina and nutrition - Weight machines now give fitness xp - Punching bags now drain stamina (wearing boxing gloves lowers it) and gives a small amount of fitness xp - Being clumsy has a chance to hurt you, but it can be overcome with persistence. (the higher your fitness skill, the less chance of getting injuried) ## Why It's Good For The Game HUSTLE FOR THAT MUSCLE!!!  ## Changelog 🆑 add: Add new fitness skill and mechanics for weight machines and punching bags. Working out with a proper diet and good sleep will result in massive fitness gains. As your fitness increases, so does your mass. /🆑 |
||
|
|
68b798efa0 | A thorough audit of damage procs and specifically their use in on_mob_life() (with unit tests!) (#78657) | ||
|
|
24ee1a4681 | Refactors Snakes into Basic Animals (#78612) | ||
|
|
172f65989e |
Nuclear Operative Jump Jets (#78088)
## About The Pull Request This PR gives operative MODsuits access to "jump jets". This is an activated module (starts pinned) with a 30 second cooldown which removes your personal gravity for 5 seconds and (if possible) pushes you upwards by one z level. In combination with your regular jetpack this allows you to fly over gaps, and (most importantly) out of pits such as you may inadvertently find yourself wandering into on Icebox. I have a few other changes I want to make specifically targetted at the experience of Icebox station destruction causing people to fall several z levels and get trapped, but this is the first one. You have to stand still for 1 second to activate the jump jet. This is because jetpack movement without gravity is actually usually faster than an operative will walk, and I don't want them to just toggle it as a sprint button while running around. If people find other tactical uses for this though I think that's cool. This module currently isn't available to crew on the tech web, although maybe someone could add it later if they wanted to. It's not quite so useful if you don't _also_ have a jetpack though. I bumped the available complexity of the suits I attached it to up by the complexity cost of this module so it's not taking up previously available space. ## Why It's Good For The Game It's funny when the whole ops team falls in a hole after an explosion they caused and gets stuck in there fighting Snow Legions but they should probably have some method for dealing with that. It also lets them pop back up from the tram hole, a risky proposition because any flying mob hit by the tram dies almost instantly. ## Changelog 🆑 add: Operative MODsuits now have an attached "jump jet" which sends you upwards and allows you to use your jetpack under gravity for a few seconds, perfect for navigating the pits and valleys of Icebox Station. /🆑 |
||
|
|
d93dfbc35c |
Adds Summon Cheese (#77778)
oh apparently this is my 100th PR on tg, which is weird because github reports 99 total, and i made at least one to the old voidcrew repo, and filtering tg prs by my name still shows 99. weird. here's to 100 more i guess? <sub>could have been better if it was a get, jhonflupwliiard watch ur back 🔫 </sub> ## About The Pull Request Adds a new spell granter book to the Wizard's Den - Summon Cheese, which grants the spell by the same name, which summons 9 heads of cheese. That's about it, I think. ## Why It's Good For The Game Wizards are a hungry bunch, so why can't they just summon food? They can even share, if they'd like, since the notion of a friendly wizard still exists <details> <summary>... </summary> alright fine i'm slightly malding over not getting the 77777 get so no more roleplaying in the pr body Wizard Grand Ritual now has a hidden goal of sacrificing 50 cheese wheels. Sacrificing a cheese wheel is done with invoking the grand rune, and each invocation/pulse of the rune will whisk away more cheese until all cheese on the rune is taken by whichever entity lurks in the other realm. The sacrifice will be hinted at in an _ancient parchment_ which will be on the bookshelf (when i add it lmao) alongside the spell book. Meeting this cheese goal will lock the wizard's grand finale rune and grand finale effect to special ones. The cheese rune is mostly identical to the normal grand rune, barring the custom sprites/animations. The cheese finale consists of the wizard getting permanent Levitation (nogravity + free space movement), a 0.5 modifier(reducing incoming damage in half) to every damage type, a comically strong mood buff and **The Wabbajack**(separate sprite pending) - a juiced up chaos staff which can fire a lot more projectiles than a normal one can (it will get more, I may even make a few just for it). Everybody else (including any invader antags) gets hallucinations, 175 brain damage and a comically strong mood debuff, as well as a vendetta against the wizard. If the victim was already suffering from hallucinations from a trauma (including the quirk), they are instead healed. if you didn't catch the obvious reference, this entire shtick is a tribute to Sheogorath. the rune makes use of daedric script, and most of the catchphrases are a direct quotation of the Daedric Prince of Madness, so if any of those things can get us in trouble somehow, let me know. i will be sad but i will comply. This shtick is intended as an easter egg, really, so I wasn't really planning on expanding the wizard grand finale into heretic paths thing or whatever. Oh, and finale grand runes now allow the wizard to select the effect even if it's time-gated. If it is, you just won't be able to invoke it until the time comes. The rune will tell you how much time is left until you can invoke it. And grand finale runes with a finale effect selected also glow in the color of their effect. I also think I fixed some step of the grand rune animation not triggering but I'm not sure. <details><summary>Some rune animations (some are subject to change)</summary>   </details> ## Why It's Great For The Game it's funny </details> ## Changelog 🆑 Sealed101, EBAT_BASUHA for spritework add: Wizard's Den now has a book of Summon Cheese in the Studies Room /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
eea20b83e3 |
Kills seconds_per_tick from status effect tick, replaces it with seconds_between_ticks to clarify some things (#77219)
## About The Pull Request https://github.com/tgstation/tgstation/pull/66573#discussion_r861157216 `status_effect/proc/tick(seconds_per_tick)` is wildly misleading and I feel like I should address it For a majority of status effects, they process on fast processing but do not tick every fastprocessing tick This means that using `seconds_per_tick` here is not giving you the seconds between status effect ticks, it's giving you seconds between processing ticks (`0.2`) This is how it's misleading - If you have a tick interval of `1 SECONDS`, you'd think `seconds_per_tick` is, well, one. But it's actually one-fifth. So all of your effects are now 80% weaker. I have replaced the use of `seconds_per_tick` in tick with `seconds_between_ticks`. This number is, quite simply, the initial tick interval of the status effect divided by ten. An effect with the tick interval of `1 SECONDS` has a `seconds_between_ticks` of 1. As a consequence, some things which were inadvertently made weaker, such as fire and some heretic things (at a glance), are now a little stronger. ## Why It's Good For The Game See above. Makes it more clear what you're doing when working with effects. ## Changelog 🆑 Melbert code: Updated some status effect tick code to be more clear of how long is elapsing between ticks. Some effects that were inadvertently weakened are now stronger as a result (fire and some heretic effects). /🆑 |
||
|
|
dfd4801122 |
Adds p_They (and friends) for capitalized pronoun helpers (#76910)
## About The Pull Request  Basically replaces p_they(TRUE) with p_They ## Why It's Good For The Game Fewer ambiguous parameters (what does TRUE mean when passed to p_they?) More comprehensive helper functions. ## Changelog 🆑 Tattle spellcheck: Fixed the grammar on a few revenant messages /🆑 --------- Co-authored-by: tattle <article.disaster@gmail.com> |
||
|
|
32afa856db |
Makes cult leader handling work off of the Cult datum (#76556)
## About The Pull Request Removes Cult master's datum, it's not handled by the Cultist itself, using a helper to promote/demote people to leader. In practice, the only way someone would be demoted is through Admins, so this adds support for Admins to intervene in this Cult stuff if necessary. Moves cult objectives and cult team to their own files Removes the cult master's status effect that constantly processes to send a deathrattle, and instead moves it to a signal hooked to stat change. Also moves some things from ``get_antag_minds`` to checking the team, which doesn't change anything in-game but it does help add the currently non-functional support for several cult teams. Iunno. https://github.com/tgstation/tgstation/assets/53777086/573a4f13-35e1-4f34-9952-62fed10b49c9 ## Why It's Good For The Game Having the cult leader be its own datum has actually been handled like shit. To promote someone to cult leader, we currently make their current cult datum silent, then remove it, and finally add the cult leader datum. This means they lose their spells unless manually given back post-promotion, which sucks (and also, no one has done yet, meaning they just lose all their spells). It also means there's a lot more snowflake things, did you know there's a var to bypass converting mindshielded people? That's so cult masters can be promoted by Cultists who were mindshielded, and they have to be "ownable", that var is to bypass the check for mindshield to "convert" them to leader cultist. ## Changelog 🆑 fix: Cultists promoted to Leader no longer lose their spells (rip whoever tried saving up blood rites) admin: Admins can now force promote/demote people from Cult Leader if necessary. /🆑 |
||
|
|
22799fcb89 |
Refactors the worst list ever, Stun Absorptions, into status effects + makes status flags more accurate (making certain mobs more vulnerable to incapacitations?) (#76000)
## About The Pull Request - Refactors the stun absorption list into a status effect - Does a fair bit of cleanup around stun code Weird thing involved in this. Check out this define. `IS_STUN_IMMUNE(source, ignore_canstun) ((source.status_flags & GODMODE) || (!ignore_canstun && (!(source.status_flags & CANKNOCKDOWN) || HAS_TRAIT(source, TRAIT_STUNIMMUNE))))` Notice anything odd about it? It only checks for `CANKNOCKDOWN`. What does this mean? Well, *every single* one of the stun procs used this macro for checking stun immunity. Which means every method of stun checked the `CANKNOCKDOWN`. This means that, say you have a mob which has `CANSTUN` but not `CANKNOCKDOWN`. Intuitively this means that the mob cannot be knocked down, but can be stunned. But instead, this means the mob can't be stunned either. This doesn't affect humans, they have all the status flags, but it does affect some other mobs. Alien adults (not queens) have `CANUNCONSCIOUS|CANPUSH`. Before, they didn't have `CANKNOCKDOWN`, so they were fully immune to stuns and sleeps. But now, they can be knocked unconscious. However, overall it doesn't change much, as most mobs that flipped off `CANKNOCKDOWN` flipped off the others too. For consistency though it makes sense for these flags to work as they imply. - `incapacitate` didn't have a signal, now it does ## Why It's Good For The Game More consistent, better code? I may use this in the future. ## Changelog 🆑 Melbert refactor: Refactored Stun Absorptions (Bastard Sword, His Grace) refactor: Refactored Stun Immunity. Note this means that some mobs which, prior, were immune to all forms of incapacitation are now vulnerable to some. Notably, adult non-queen xenomorphs are now vulnerable to falling unconscious. /🆑 |
||
|
|
4c48966ff8 |
Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is not completely accurate, as subsystems can be delayed, however it's useful to have this number as a multiplier or ratio, so that if in future someone changes the subsystem wait time code correctly adjusts how fast it applies effects regexes used git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i 's/DT_PROB/SPT_PROB/g' git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i 's/delta_time/seconds_per_tick/g' |
||
|
|
e80879d22c |
Ensures some ling ability icon always update correctly, Fixes a potential input stall in Revival Stasis (#73616)
## About The Pull Request - For Fleshmend, on apply kinda happens before alerts are made, so using Fleshmend when you're on fire wouldn't make the alert the "you're on fire" alert. - For Revival Stasis, I think I just missed an update call? Which made it not update on occasion. - I also patched a potential issue with input stalling on Revival Stasis while here. ## Changelog 🆑 Melbert fix: Using Fleshmend while on fire gives the "on fire" fleshmend icon. fix: Using Revival stasis more accurately updates the icon where relevant fix: Fixes a potential input stall with revival stasis /🆑 |
||
|
|
9750f93693 |
Makes arms regrown by the Rod of Asclepius the correct color (#73152)
## About The Pull Request When an arm holding an activated Rod of Asclepius is cut off, the arm grows back with the rod held in it. However, due to an oversight, the arm that grows back is always the "default" color - the albino skintone for humans/felinids, and grey for everyone else. This PR makes the regenerated arm have the proper skintone instead. ## Why It's Good For The Game There's no good reason that a magical doctoring rod should drain all color from your arm, probably. ## Changelog 🆑 fix: Corrected the skintone on arms grown back by the Rod of Asclepius /🆑 |
||
|
|
0d3c71aeb2 |
Fixes an edge case where you can get incurable plasma damage, & fixes healing sources that don't have biotype restrictions not working if the mob doesn't have the MOB_ORGANIC biotype (#73017)
## About The Pull Request Fixes #72962 The plasma river applies toxins damage to a mob as it transforms individual limbs into plasmaman ones. Once all limbs have been transformed, the mob's species changes to plasmaman. This currently leads to incurable toxin damage as antitoxin drugs do not work on plasmamen. Made it so that upon transforming fully, the toxin damage is cleared. Also fixed an issue where healing sources that do not have a required_biotype parameter (e.g. `adjustToxLoss(-5)` vs `adjustToxLoss(-5, required biotype=whatever)`) will not work on mobs that do not have the `MOB_ORGANIC` biotype (e.g. plasmamen) due to it defaulting to `MOB_ORGANIC`. For now those use the `forced` param to accomplish this. ## Why It's Good For The Game Incurable damage is no good. ## Changelog 🆑 fix: fixed getting incurable tox damage when fully transformed into a plasmaman via plasma rivers fix: fixed rod of asclepius/medibeam etc not being able to heal tox damage despite not having biotype restrictions /🆑 |
||
|
|
6d1dc8dd26 | fixes linters (#71814) | ||
|
|
bf1b85ca78 |
Adds nest sustenance status effect, halves xenomorph nest escape time (#71691)
## About The Pull Request Hosts who are buckled to a xenomorph nests will gestate their xenomorph egg 20% faster (4 minutes in a nest, 5 without) as long as they are trapped. To keep them alive in the nest, they will recieve temperature stabilization and be healed until they are pulled (or break) free. To ensure the gift of life is not wasted by captured humans, they can now break free from resin nests after one minute of struggling, down from two. ## Why It's Good For The Game There's currently no incentive to not kill facehugger infectees immediately after they're impregnated. Dead bodies can't run away, gestate at the same speed, and hives are often breached from space making them deadly to live captures regardless. This serves the dual purpose of incentivizing live captures, while also making them a feasible option, without removing the ability to infect dead bodies and seriously impacting the xenomorph playstyle. Cutting the escape timer in half (while also ensuring that captured humans are alive enough to break out) means there will be many more opportunities for live captures to escape. Additionally, the xeno players will have to spare manpower to actively defend hosts and if they wish to ensure they do not escape. Hopefully it should give more reason to play defensively and set up a proper hive, instead of the hypermobile-hyperviolent playstyle you sometimes encounter. ## Changelog 🆑 Rhials balance: Xenomorph nests will now sustain humans that are buckled to them, and gestate xenomorph eggs slightly faster. balance: Xenomorph nests evolved healing capabilities in exchange for some of their grip. They now take only one minute to escape from. /🆑 |
||
|
|
79ffefa06d |
Allows Fully Heal to be passed a series of flags, fixes Adminordrazine being horrible (#71123)
## About The Pull Request - Fully heal can be passed a series of flags detailing what all is healed by the proc. This allows for things to provide almost-but-not-quite fully heals. - Uses this in Adminordrazine, so that it stops being a pain to update every time fully heal is updated. This includes some small balance changes which i'll go over, nothing extremely noticable. ## Why It's Good For The Game Allows for more precise control over full heals. ## Changelog 🆑 Melbert refactor: Fully heal can be passed a series of flags. As a result, some things which previously did a full heal might heal slightly less, or some things which did partial full heals might do slightly more. fix: Adminordrazine will no longer completely break every facet of a person admin: Ahealing a changeling will refill all of their chems. /🆑 |
||
|
|
ad5debaaa1 |
Add investigate_deaths (#71112)
## About The Pull Request Adds INVESTIGATE_DEATHS, an investigate category intended to better show causes of death.   Also makes suicide_act take a `mob/living` as an argument instead of a `mob`, and some minor style improvements since apparently I hate atomicity. ## Why It's Good For The Game Inspired by a mysterious death and dusting. More logging and leads for admins investigating deaths. Also fixes #59028 ## Changelog 🆑 Tattle admin: added investigate deaths to shed some more light on unusual demises, dustings, and gibbings /🆑 Co-authored-by: tattle <article.disaster@gmail.com> |
||
|
|
51b289d4c8 |
Change drop_all_held_items to work with cyborgs (#70682)
* Cyborgs now use the same drop_all_held_items that humans do instead of their own snowflake code. * Fixes Cyborgs not dropping all their modules at the same time, Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
c8bd98098b |
Fixes minor fleshmend runtime from clearing scars (#70700)
All scars is a lazylist. |
||
|
|
dafbcf29bd |
Prosthetic surgery now checks if you can attach the bodypart (#70157)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
1810b85553 |
Heretics cannot be converted, and are immune to cult stun hands. Instead, the cult is rewarded for sacrificing them with the bloody bastard sword, an oversized SPIN2WIN funblade. + Soul Stealing Fantasy Affix (#69725)
About The Pull Request Heretics can no longer be converted to a cult, as they follow their own Forgotten Gods. Instead, Nar'Sie will reward the cult for managing to sacrifice one, with the bastard sword. The bloody bastard sword has been cleaned up codewise and all that. Because it is a free reward instead of a (removed) progression mechanic of cult, it swings just a bit slower during the spin and doesn't have a jaunt. It's still a !fun! swinging sword of hilarity and death. BLOODY BASTARD https://www.youtube.com/watch?v=ukznXQ3MgN0 Fantasy weapons can now roll "soul-stealing" weapons. They, on killing something, capture its soul inside the item. Add fail conditions that instantly end a spin2win, ala how Mimes can now hold a baguette like a sword by right clicking it #69592 works Why It's Good For The Game Bloody bastard sword was fun, it made no sense that heretics were valid converts when they're already worshipping a DIFFERENT evil god granting them powers. Should be in a good spot as a nice little antag to antag special interaction. I fucking love antag to antag special interactions, we should have more of 'em Fantasy affixes are always a neat thing to throw a new component into Changelog cl add: Heretics can no longer be converted to cult. But sacrificing them is very valuable to Nar'Sie, and she will grant special weapons if you manage to do so. add: Fantasy affixes can also include soul-stealing items! /cl |