mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
master
977
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
7c0973ccf4 |
Refactors names and voices / potted plants no longer conceal voice (just appearance) / honorifics show on examine (#92781)
## About The Pull Request Closes #92778 Closes #86829 <img width="347" height="39" alt="image" src="https://github.com/user-attachments/assets/c50bd1ff-8c00-47a7-a31a-617fae2adc5b" /> 1. Splits `TRAIT_UNKNOWN` into `TRAIT_UNKNOWN_APPEARANCE` and `TRAIT_UNKNOWN_VOICE` 2. Renames some stuff like `getvoice` and `getspecialvoice` 3. Gets rid some crummy signals around `get_visible_name` and `get_voice` 4. Heads now apply the disfigured trait when relevant (rather than snowflake checking for damage amount) 5. Ling voice refactored into using special voice (it was only used by a viro symptom anyways; I don't anticipate this overlap being problematic) 6. Mask voice changer refactored into a trait ## Why It's Good For The Game Potted plants shouldn't have magical voice concealing powers - especially not over radio, but not over in person either. It's a damn plant So I addressed this by refactoring our face and voice system. Overall things should be a lot cleaner and easier to use. ## Changelog 🆑 Melbert refactor: Refactored a lot of code relating to human face and voice, ie, what shows up in examine and in say. Report anything odd when examining people, with ID cards, when talking over radio, or when disguised refcator: Refactored how you get disfigured when your head's super damaged refactor: Refactored ling mimic voice and traitor voice changer del: Potted plants no longer hide voice. They still hide appearance, though qol: Honorifics now show in examine / in world, rather than only when speaking. /🆑 |
||
|
|
939f2fc9ac | Merge branch 'master' of https://github.com/tgstation/tgstation into xpokee-test-upstream-sync | ||
|
|
76bc3afae7 |
Significantly improves MODtether behavior, fixes multiple bugs and a potential server crash (#92807)
## About The Pull Request This PR rewrites how MODtethers behave when something appears in their way, when they run out of slack or get stuck on a corner. Currently, first case would freeze you in place, while the other two can result in the tether being blocked by an object which shouldn't interrupt the beam. Now when it cannot find a direct LOS or get too far from the owner, the tether will attempt to move to the side a bit to (hopefully) slide around the corner or whatever object is blocking it, as long as its distance permits it to do so. They'll also automatically snap if they cannot find LOS even after trying to move to the side. Also fixed multiple bugs and a potential crash due to recursion stemming from MODtethers. Additionally, while looking around path_info code I found that foam was calling its passibility check on an incorrect turf, checking if an object from the target turf could arrive to the turf itself, rather than sourcing it from its own location. I also fixed that, should prevent foam from going through directional objects ## Why It's Good For The Game This should make them less of a pain to use in-game, especially when the other half is connected to an unanchored object. ## Changelog 🆑 qol: Significantly improved MODtether behavior, they should be easier to work with now. fix: Fixed multiple MODtethers bugs and a potential server crash related to them. fix: Fixed foam sometimes passing through directional windows. /🆑 |
||
|
|
f8186a7db3 |
Adds a furnace that grants space protection to nearby people (#92342)
## About The Pull Request ##### Code bounty for holinka4ever Adds a furnace equippable to the back slot, which when active (it is a lamp), will form a bubble of space protection, affecting the user and people nearby, and will last 5 minutes before it dissipates and needs to be re-formed. This item requires a pyroclastic anomaly core to activate, while the bubble itself can only be formed in pressurized environments. It's researchable in the Anomaly technology node. The downsides of the item is it requires 2 hands to hold, can't be inserted into storage items (as it's bulky), can only be equipped to the bag slot, and has slowdown while on, which only affects you when you're in gravity anyways. ## Why It's Good For The Game The pyro anomaly is currently one of the more useless anomaly cores, not even getting a unique reactive armour variation. This hopefully gives it some purpose as a good tool to keep people alive in a spaced area at a good cost to the user. This is an item that shouldn't be overpowered, but also isn't just a selfish tool- when someone's crafting this item it's specifically aiming to help people, which I think is a benefit. ## Changelog 🆑 JohnFulpWillard, sprites by PopLop add: Added a new pyroclastic anomaly locked item, the Space Furnace. Grants space immunity to people nearby while active. /🆑 |
||
|
|
4756a44141 |
MODSuit procs now pass who clicked the UI button + misc code cleanup (#92424)
## About The Pull Request Most of these changes are centered around removing `mod.wearer` references in module function bubble alerts. However, I cleaned up a few other things that I thought were easy fixes. ~~This PR should be testmerged~~ nah send it. I think I did a pretty good job testing, but there might be a bug or two I missed. (debug modsuit should allow conflicting modules and have unlimited complexity btw) ### Track who clicks the activate button * Adds `mob/activator` to `on_select()`, `activate()`, `deactivate()`, `used()`, `on_activation()`, `on_deactivation()` and `on_use()` * `mod_ui` now passes `ui.user`, which is who actually clicked the button in the UI.1 * module action proc now passes the person clicking. * **Alert bubbles:** Modifies many module code bubbles to pass the activation bubble text to `mob/activator` instead of `mob.wearer` so that pAIs get feedback on why clicking the button isn't working. ### Cargo clamp * **Clamp code cleanup:** The cargo clamp now has a variable for the max creature weight it can support, and the logic is changed around a bit to support this. * The cargo clamp uses an `accepted_items` typecache. ### Code cleanup * **Button malfunction chance** is controlled by a `MOD_MALFUNCTION_PROB` define. * **Pathfinder runtime:** `mod_control`'s `GetAccess()` now checks if there is an access before returning it. (This previously caused runtimes when using the pathfinder module if you didn't swipe your ID) * **Pathfinder code tweaks:** Reworks the code for the pathfinder module a bit. Activation logic is now stored in the module instead of the implant. The suit is prevented from being recalled by pAIs, which is controlled by a variable. * Adds `MODULE_ALLOW_UNWORN`, which lets you activate modules in suits that aren't currently being worn. Module activation code now smoothly supports modules being activated while not worn. * Chameleon module now works when unworn. This will probably be a Part 1, with a Part 2 to follow. Actions are kinda funky and could probably be cleaned up a little better. Plus, I want to make selectable modules theoretically usable by the AI, even if I leave it disabled. ## Why It's Good For The Game This PR doesn't contain any balance changes, and I manually disabled any new serious functionality that pAIs might gain. (Such as being able to activate the pathfinder implant) They *can* use the chameleon module with no wearer- but I'm going to consider this a bug that they couldn't before. Paves the way for more pAI modsuit nonsense I'm doing downsteam. ## Changelog 🆑 Stonetear refactor: MODsuit module code now knows who clicked the activation button. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
135a09182b |
Refactors obscured (#92779)
## About The Pull Request Fixes #85028 Obscured flags and covered flags are tracked on carbons, updated as items are equipped and unequipped. It's that shrimple. Closes #92760 Just removes the species exception checks for not making sense Also refactors handcuffs / legcuffs removal. In all of these situations they were hardcoded when they could easily just use an inventory proc to work. ## Why It's Good For The Game Stops a million excessive calls to `check_obscured_slots` Makes obscured behavior more consistent Makes obscured behavior easier to use Cleans up human rendering (There was some cursed stuff before with render item -> updated obscured -> update body -> cause side effects) ## Changelog 🆑 Melbert del: Golems which somehow manage to grow wings and somehow manage to equip something that covers their jumpsuit can no longer fly. (Seriously, this will not affect anyone) refactor: Refactored clothing obscurity entirely. Items should be a loooot more consistent and what covers what, and should update a lot snappier. As always, report any oddities, like mysteriously disappearing articles of clothing, hair, or species parts refactored: Refactored handcuffs and legcuffs a bit, report any odd situations with cuffs like getting stuck restrained /🆑 |
||
|
|
03771cf1ab |
Nerfs the recharge rate in wiz modsuit (#92800)
## About The Pull Request Nerfs the wizard modsuit shield recharges, it takes 20 seconds (double the original time) for them to start recharging, and they recharge every 3 seconds (used to be 1 second). can tone it down a bit if its too much ## Why It's Good For The Game I know wizard is meant to be super busted and all that, but a shield that blocks 5 attacks and it recharges every 10 seconds is extremely frustrating if not impossible to play against unless you bring a bomb, specially if they had any form of teleport (i dont think we should make all antags be only countered by bombs), wizard modsuit is already stacked with armour, no slips, anti flashbangs and space proofing, i think the shields are overkill ## Changelog 🆑 balance: wizard modsuit shield recharges slower /🆑 |
||
|
|
b348b617a3 |
Merge branch 'master' of https://github.com/tgstation/tgstation into pupstream-2025-09-07
# Conflicts: # README.md # code/__DEFINES/admin.dm # code/__DEFINES/melee.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/economy.dm # code/datums/components/crafting/crafting.dm # code/datums/elements/crusher_loot.dm # code/modules/antagonists/pirate/pirate_shuttle_equipment.dm # code/modules/clothing/suits/_suits.dm # code/modules/escape_menu/leave_body.dm # code/modules/jobs/job_types/_job.dm # code/modules/mining/equipment/mineral_scanner.dm # code/modules/mob/living/living.dm # code/modules/plumbing/plumbers/pill_press.dm # tgui/packages/tgui/interfaces/Vending.tsx |
||
|
|
e1bd1da4ec |
Adds toggleable suit sensor boosting to the MOD status display (#92816)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> |
||
|
|
f8511ea227 |
You can install B.O.R.I.S. in circuits with MMI components (+other MMI component changes) (#92002)
## About The Pull Request This PR adds the ability to install a B.O.R.I.S. in a circuit that contains an MMI component. These circuits can then be remotely connected to by an AI by clicking on them or anything they are inside of. To indicate that a circuit allows remote AI connection, an indicator is given to the circuit and anything containing it. Additionally: - Refactors the MMI component to use `item_interaction`, since it was pertinent. - You cannot insert an MMI/B.O.R.I.S. into a locked circuit. - You can no longer hotswap MMIs/B.O.R.I.S.es - you must manually eject the inserted one. Let me know what changelog labels I should use for the hotswap removal and the prevention of insertion into locked circuits. ## Why It's Good For The Game If you can put an MMI or posibrain in a circuit, why not allow an AI to use it using a B.O.R.I.S.? ## Changelog 🆑 add: B.O.R.I.S.es can be installed inside of integrated circuits with MMI components, allowing an AI to remotely interface with them the same way an MMI or posibrain could. refactor: The MMI component now uses item interaction behavior for inserting MMIs/B.O.R.I.S.es. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
c9956892db |
Merge remote-tracking branch 'origin/master' into pupstream-08-19-keepsha
# Conflicts: # _maps/map_files/BoxStation/BoxStation.dmm # code/_globalvars/lists/flavor_misc.dm |
||
|
|
d40bb5ddd2 |
H.A.U.L. gauntlets and package wrapper QOL (#92427)
## About The Pull Request - Wrapping a crate with package wrapping while pulling it will now automatically make you grab it - You can now open the crate while dragging it with the H.A.U.L. gauntlets if you're the one who's pulling it. Also applies to other items (including MOD modules) that have the component https://github.com/user-attachments/assets/7b4743c8-855d-4274-89ca-b0507f6d3e0e ## Why It's Good For The Game QOL for cargo technicians - having to constantly grab and let go of crates is very annoying |
||
|
|
a851577f73 |
MOD ash accretion fully cancels base mining MOD slowdown (#92817)
Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com> |
||
|
|
61031f6cfb |
Skyrat gun removal (#3697)
## About The Pull Request HackMD: https://hackmd.io/@Ssalty/r1wjAgSxll Ammo removals: IHDF Rubber (non-.38, non-shotgun, nukie ones stay since it'd require overrides. They were never purchasable to begin with.) Stardust Magnum Express .460 Rowland .457 Government MCR magazines .40 Sol Hornet's nest Gun removals: MCR's .457 revolver M4A5 .460 Rowland revolver CCK GP-7 R10 revolver Guns made inaccessible: NRI guns (including derringer, bobr, plasmas, Miecz) Sol35 (Tarkon, sol ERT, gateway, adminspawn) Sol40 (Tarkon, sol ERT, gateway, adminspawn) Trappiste caliber (wespe, some already adminspawn weapons) Turret adjustments: Twin Fang - 4.6x30mm, 2 Second burst delay (40 dmg every 2 seconds vs 30 dmg every 1.5 seconds (old)) Stinger - 4.6x30mm instead of .35, matching damage Colonist - .45 added instead of sol40, matching damage Hoplite - Same as above Armoury: Armoury spawned MCRs replaced with laser guns and energy guns SMG's and rifles with WT If there would be a case with two separate spawns of a WT, the other is gone. Breaching shell boxes do not spawn in the armoury (they were capable of 1 shotting a dark mauler I wish I was kidding) Lathe: 9mm stendo's, AP, HP, INC magazines not availible for print - the 9mm murphy magazine is. It fits in 9mm firing turrets and the murphy. ## Why It's Good For The Game Give me like a couple days and I'll fill this out. I doubt anyone who is already pro-skyrat-gun will change their mind but it's good to rationalize the decision regardless. Find this out as in lay it out on paper. EDIT 1: Adding the first part # Foreword This PR is a *draft*. That means a lot of things are subject to change, a lot of things can be disorganized and a lot of things will be done unoptimally. Going forwards, do keep in mind, the decision-making process behind "remove entirely" and "virtually remove" will not be dependant on us going forwards, as the decision on this matter requires maintainer input more than any other. Next, the delay. I simply am not a machine, neither are other people onboard this project. With different timezones, it was important to find what isn't working so I can relay it to people in working hours. Without further ado, ## The case of the ammo types and workbench The ammunitions workbench is a machine that provides ammunition into clips, refilling them. The ammunition workbench is also the source of a multitude of alternate ammunition types. It has with itself brought several issues that at least would warrant a rework or heavy adjustments: 1. Contraband ammunitions. There is no real reason that the entire security department, or even a single crewmember should be accessing phasic weapons in the form of printable ammotypes. The argument of "the pipegun having it" doesn't do it favours, as the way you get it is an 8% chance on crafting a junk round for a bulky gun and the only way to find out if you actually have it is checking each shell individually with a bandolier. 2. Complimentary with the removals. Most use cases for this machine are refilling the magazines you can order or get alongside your weapons. This collides with the protolathe, which sources most of our upstream-based ammunition instead. With the skyrat weapons gone, this machine becomes redundant. You may claim that it's still useful in saving on materials, where you would be right! However is it worth to have and maintain an entirely separate structure, with it's own mechanics, map placements, etc. to get a benefit equal to 1.6x more bang for the buck? At the end of the day, splitting ways of getting ammo across a single room for something so miniscule compared to the bloat it adds is pointless. # The weapons, why should they go, one by one. ### RomTech Flechette rifles Compared to a standard laser gun, which is in all means our baseline of ranged damage in ss13 - being the default armoury weapon, the default laser for turrets and default laser for mobs. Better yet, let's compare it to that and the default ballistic option that we have from TG. What turns out, is that not only is the romtech carbine faster at killing than the laser, but also rivals the WT with a split second of difference in ttk in the favour of the romtech. Let's assume it's human error and the WT is better TTK wise, just as an experiment. Clearly, there must be a tradeoff, somewhere, right? One that balances them all out to be equal weapons in the grand scale of things, contemporaries! Well, no, not really. Not even close. The carbine can be folded to fit in bags, that's one thing. The carbine has more ammo, that's another thing. Bursts are harder to dodge than series shots since they cover more perpendicular ground when attempting to dodge projectiles, as is staple for ss13 combat. Burst weapons are advantageous in applying more damage quicker, as you can see on the videos - and initial damage, an alpha strike, applies movement slowdown, ensuring future projectiles connect easier and the target cannot run. It might be a coincidence that the only /tg/ derived weapons that fire burst are adminspawn ERT or the Nukie weapons. But it doesn't end here, no, the RomTech's ammunition alone would warrant a complete overhaul if not a removal. **steel ball** <p> Takes 9 shots to stamcrit, deals mixed damage - further increasing the amount of slowdown applied, and not only is it MUCH faster at stamcritting than a disabler is, it also leaves the target with 70 damage. Over half their healthbar. Severely overtuned with little counterplay availible, alpha strike monster that is better at disabling than disablers and better at stopping people dead in their tracks than rifles, and if you look at our anti-stun, we have less than ever on antagonists with Adrenal implants gone, Adreanaline Glands reworked, etc, etc... </p> **Penetrator** NT's answer to armour! The penetrator has 60 AP and otherwise the same damage as the AP WT rifle. Meaning it's a straight upgrade. Meaning this weapon invalidates it's predecessor whilst being orderable roundstart, and not only that, but it can fully ignore elite modsuits on nukeops. Not every mechanic has to have a counter, there's no direct counter to someone healing after a fight, there is no direct counter to having multiple shots, and there shouldn't be a full nullification of armour for such a low cost. There shouldn't be one for a crew that can mass produce these, ever. **Magnesium** Arguably fine, 12 firestacks per shot is still quite insane for a lower chance of friendly fire compared to original incediary hot turfs, **Ripper** Steel ball, but even worse. They don't embed a single time, ***this embeds every time***. It takes several seconds to take out. Actually, let's compare this gun's bullets to ninja stars. - 2 times the embed chance at 200 vs 100 - 8 times the jostle chance at 80 vs 10 - Comparable fall chance, at 1 vs 0 - More pain stam pct, at 0.9 vs 0.8, meaning more stamina damage - More pain chance, at 70 vs 15 - Less pain modifier, at 2 vs 5 - Takes longer to take out, 5 seconds vs 3 - Jostling pain is the same ### One problem. There's three of those fired per burst, cannot be caught either. And the armour pen is the same. in conclusion, every aspect of this gun is unhealthy for the game, from it's gimmick, to it's execution, to it's stats, to it's ammo, to it's consistency, to it's firing mode, to it being able to be currently worn on sec belts along disablers - up to 4, if I remember correct. No reworks. It has to go. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 del: Removed breaching slugs from crew (not to be confused with frangible. These ones 1 shot mechs) del: Removed MCR, .457 revolver, .460 Rowland revolver, GP-7, R10 revolver, M4A5, and their associated ammo types. del: Removed ammunition types: IHDF, rubber variants excluding .38/shotgun/nukie, stardust, magnum, express, hornet's nest del: Made most NRI guns (Miecz, plasma pistol, plasma thrower, bobr, derringer) and Sol 35/40 (Tarkon, ERT, gateway, adminspawn) inaccessible to crew, kept for ERT/Gateway/Flavour/Admin reasons balance: Turrets which use a removed calibre have been adjusted into either that of the WT's, Ceres (still printable) or 9mm. balance: WT's replace missing sindanos across armouries, laser guns and eguns replace the missing MCR's. /🆑 --------- Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com> |
||
|
|
7ae021ee89 |
Makes fishing gloves MODule lower difficulty rather than increasing (#92675)
## About The Pull Request It was increasing the difficulty of fishing, when it shouldn't've. ## Why It's Good For The Game closes #92674 ## Changelog 🆑 fix: Fishing gloves MODule now actually lowers the difficulty of fishing like it says /🆑 |
||
|
|
10402c8a8a |
Fixes MODlink calls not cleaning up after themselves and bricking your ability to use them. (#92598)
## About The Pull Request So I was notified MODlinks break after you use them, sometimes! Looking into it, seems the culprit code was this: https://github.com/tgstation/tgstation/blob/138a670347eee4127d4713cbf11b3d8f0642cbe1/code/modules/mod/mod_link.dm#L461-L467 Specifically, MODlinks use `TRAIT_IN_CALL` to check whether the given user is already in a call to block them from opening new calls even with other MODlink devices. However, as seen above, the call datum actually gets the *current* user when cleaning up after itself, which if the call was ended by for example taking off a scryer... returns null, and thus doesn't remove the trait, and bars you from making new calls forever. A similar issue exists when deleting the visuals! Where it fails to unregister its signals on the user for the same reason. We fix this by tracking our current calling user in a weakref, and use/forward it where necessary. We also move more of the behaviour away from the call itself, and instead tell the MODlinks we've entered or exited a call. I feel this entire system should really be refactored, but due to how many hooks it needs and different ways to interact with it I'm not 100% certain on the best way to do it. So, well, posting this fix instead of letting it sit for the indeterminate amount of time needed for me to work that out. ## Why It's Good For The Game It's good if the things are actually functional. ## Changelog 🆑 fix: Ending a MODlink call in any non-standard way no longer bricks your ability to use MODlinks. fix: Ending a MODlink call in any non-standard way and then giving the item to someone else to call with no longer moves the visuals based on the first person to try to use the item. /🆑 |
||
|
|
20118ad747 |
Converts a bunch of time/delay vars to use time defines (#92495)
## About The Pull Request Converts as many time vars expressed in deciseconds as I could find to use time defines. ## Why It's Good For The Game Makes these values neater and more readable. ## Changelog 🆑 code: Converted a lot of time-based variables to be expressed with time defines. /🆑 # Conflicts: # code/modules/clothing/head/hat.dm # code/modules/clothing/shoes/boots.dm # code/modules/clothing/suits/utility.dm |
||
|
|
edb85b2d0c |
Refactors say modes and custom say verbs. Extends custom say verbs to more situations, forwards more spans. (#92127)
## About The Pull Request Oh man, so this entire pr started because of two things: 1. A kinda hacky fix to #92123 that got closed a good while ago. 2. A borg I know mentioning you can't do custom say verbs over robotic talk. Which subsequently led me down this rabbit hole of say modes and custom say verbs. So! The most wide-reaching thing this does is merge the custom say verb/radio emote logic that used to be specialcased in `compose_message(...)` into `say_quote(...)`, renaming this to `generate_messagepart(...)` with its new functionality. This means things that don't use the exact same chain as living things talking normally can still generate custom say verbs if given that message modifier. Then, we split up say modes into a "can we do this" and "try to do this" check to reduce conflicts (like #92123), and forward more of our data to the latter. This allows us to then edit the say modes to actually make use of that data, and with the previous addition of `generate_messagepart(...)` allow for custom say verbs to be used. In doing this I realized the logging was kind of awkward and all over the place, so we create the new logging helper `log_sayverb_talk(...)` which handles selecting how we should log things based on the given message modifiers. For better or worse I forgot about this pr for a few weeks, so I don't perfectly remember all the details, but those are the big key parts. ## Why It's Good For The Game Fixes #92123. I think custom say verbs are some of the best flavour we have for talking over radio, and any situation benefits from that being possible. It's great to be able to tap your microphone, and it's hilarious for an AI to be able to emote beaming an image directly into the heads of their borgs over robotic talk. The rest is mostly cleanup. |
||
|
|
99d95aae62 |
Some ITEM_SLOT bitflags fixes. (#92441)
## About The Pull Request This PR fixes wrong usage of bitflags in a few places, where instead of bitfields lists were used. ## Why It's Good For The Game It will help prevent problems that can be a thing in the future, improving consistency of the codebase. |
||
|
|
64d6f7c396 |
Fix night vision module (#92506)
<!-- 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 Fix night vision module before fix <img width="666" height="78" alt="image" src="https://github.com/user-attachments/assets/9f0548fb-5aa7-4484-b172-341057a41311" /> after fix https://github.com/user-attachments/assets/620758c5-ba0d-46bb-b499-0340eea9d24b ## Why It's Good For The Game item was broken, it will work now. ## Changelog 🆑 fix: night vision module can now be activated and turned off again. /🆑 <!-- 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. --> |
||
|
|
5775cd8cd2 |
Fixes MODlink calls not cleaning up after themselves and bricking your ability to use them. (#92598)
## About The Pull Request So I was notified MODlinks break after you use them, sometimes! Looking into it, seems the culprit code was this: https://github.com/tgstation/tgstation/blob/138a670347eee4127d4713cbf11b3d8f0642cbe1/code/modules/mod/mod_link.dm#L461-L467 Specifically, MODlinks use `TRAIT_IN_CALL` to check whether the given user is already in a call to block them from opening new calls even with other MODlink devices. However, as seen above, the call datum actually gets the *current* user when cleaning up after itself, which if the call was ended by for example taking off a scryer... returns null, and thus doesn't remove the trait, and bars you from making new calls forever. A similar issue exists when deleting the visuals! Where it fails to unregister its signals on the user for the same reason. We fix this by tracking our current calling user in a weakref, and use/forward it where necessary. We also move more of the behaviour away from the call itself, and instead tell the MODlinks we've entered or exited a call. I feel this entire system should really be refactored, but due to how many hooks it needs and different ways to interact with it I'm not 100% certain on the best way to do it. So, well, posting this fix instead of letting it sit for the indeterminate amount of time needed for me to work that out. ## Why It's Good For The Game It's good if the things are actually functional. ## Changelog 🆑 fix: Ending a MODlink call in any non-standard way no longer bricks your ability to use MODlinks. fix: Ending a MODlink call in any non-standard way and then giving the item to someone else to call with no longer moves the visuals based on the first person to try to use the item. /🆑 |
||
|
|
7002192079 |
ERTs now spawn with ion jetpacks (#4461)
## About The Pull Request ERTs get the ion jetpack module now. Waow ## Why It's Good For The Game I've heard complaining that ERTs are weak. Im not super sure about that myself, but something that continuously confused me is their lack of space maneuverability. They're an all-rounder team being sent to a SPACE STATION. Why don't they get jetpacks? From what I've observed, ERTs just get jetpacks from robotics anyways. So why not just give it to them? ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 add: ERTs now spawn with jetpacks /🆑 --------- Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
260960d6f4 |
Converts a bunch of time/delay vars to use time defines (#92495)
## About The Pull Request Converts as many time vars expressed in deciseconds as I could find to use time defines. ## Why It's Good For The Game Makes these values neater and more readable. ## Changelog 🆑 code: Converted a lot of time-based variables to be expressed with time defines. /🆑 |
||
|
|
089c6a8f94 |
Refactors say modes and custom say verbs. Extends custom say verbs to more situations, forwards more spans. (#92127)
## About The Pull Request Oh man, so this entire pr started because of two things: 1. A kinda hacky fix to #92123 that got closed a good while ago. 2. A borg I know mentioning you can't do custom say verbs over robotic talk. Which subsequently led me down this rabbit hole of say modes and custom say verbs. So! The most wide-reaching thing this does is merge the custom say verb/radio emote logic that used to be specialcased in `compose_message(...)` into `say_quote(...)`, renaming this to `generate_messagepart(...)` with its new functionality. This means things that don't use the exact same chain as living things talking normally can still generate custom say verbs if given that message modifier. Then, we split up say modes into a "can we do this" and "try to do this" check to reduce conflicts (like #92123), and forward more of our data to the latter. This allows us to then edit the say modes to actually make use of that data, and with the previous addition of `generate_messagepart(...)` allow for custom say verbs to be used. In doing this I realized the logging was kind of awkward and all over the place, so we create the new logging helper `log_sayverb_talk(...)` which handles selecting how we should log things based on the given message modifiers. For better or worse I forgot about this pr for a few weeks, so I don't perfectly remember all the details, but those are the big key parts. ## Why It's Good For The Game Fixes #92123. I think custom say verbs are some of the best flavour we have for talking over radio, and any situation benefits from that being possible. It's great to be able to tap your microphone, and it's hilarious for an AI to be able to emote beaming an image directly into the heads of their borgs over robotic talk. The rest is mostly cleanup. |
||
|
|
4722bf017e |
Some ITEM_SLOT bitflags fixes. (#92441)
## About The Pull Request This PR fixes wrong usage of bitflags in a few places, where instead of bitfields lists were used. ## Why It's Good For The Game It will help prevent problems that can be a thing in the future, improving consistency of the codebase. |
||
|
|
47cc0a98e9 |
Fix night vision module (#92506)
<!-- 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 Fix night vision module before fix <img width="666" height="78" alt="image" src="https://github.com/user-attachments/assets/9f0548fb-5aa7-4484-b172-341057a41311" /> after fix https://github.com/user-attachments/assets/620758c5-ba0d-46bb-b499-0340eea9d24b ## Why It's Good For The Game item was broken, it will work now. ## Changelog 🆑 fix: night vision module can now be activated and turned off again. /🆑 <!-- 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. --> |
||
|
|
2a96ae3344 |
Refactors reagent transfer operations (#92213)
- Fixes #92198 - Fixes #92298 **1) Replaces reagent `on_transfer()` with its corresponding `expose()` proc variants** This PR replaces all known implementations of `/datum/reagent/on_transfer()` with `/datum/reagent/expose_mob()`. We use `expose_mob()` & not the other `expose()` variants because all known implementations were targeting living beings so this was the correct replacement This has 2 benefits - `expose_mob()` gets called correctly when an impure reagent is converted to it's inverse variant like for Cryostylane & Cryogeldia. This isn't the case for `on_transfer()` so we get correct behaviour which fixes the above bug - Removing `on_transfer()` makes the proc `/datum/reagents/trans_to()` much faster performance wise because we aren't calling `update_total()` per reagent transfered now but only once at the end after all reagents are transferred Also there was little to no functional difference between the 2 procs, `expose()` works correctly in comparison & this won't confuse devs when deciding which proc to use. One proc to cover all scenarios **2) Removes unused expose signals** `COMSIG_ATOM_AFTER_EXPOSE_REAGENTS` & `COMSIG_REAGENTS_EXPOSE_ATOM` are not used anywhere in the codebase i.e. no listeners. They can be discarded as dead code **3) Fixes wrong transfer amount passed to `/datum/reagent/intercept_reagents_transfer()` & `/datum/reagents/expose()`** The wrong transfer `amount` was passed when it fact it should use `transfer_amount` which contains the multiplier & proportional multiplier applied. Also the reagent volumes exposed was computed incorrectly resulting in the 2nd issue listed above. Blood transferred to mobs now go to `blood_volume` directly instead of getting added to the mobs reagent holder as long as it's less than `BLOOD_VOLUME_MAXIMUM` level 🆑 fix: reagent intercept operations use correct volumes e.g. ph buffers fix: impure cryostylane now has inverse cryogeldia effects when applied on mods fix: exposing reagents now uses correct volumes i.e. injecting blood into mobs don't increase it exponentially and stops when max levels are reached. Exposure affects of all reagents are lessened upon continuous exposure refactor: refactors how reagent affects are applied on mobs. Report bugs on github /🆑 |
||
|
|
64376e2899 |
Refactors reagent transfer operations (#92213)
## About The Pull Request - Fixes #92198 - Fixes #92298 **1) Replaces reagent `on_transfer()` with its corresponding `expose()` proc variants** This PR replaces all known implementations of `/datum/reagent/on_transfer()` with `/datum/reagent/expose_mob()`. We use `expose_mob()` & not the other `expose()` variants because all known implementations were targeting living beings so this was the correct replacement This has 2 benefits - `expose_mob()` gets called correctly when an impure reagent is converted to it's inverse variant like for Cryostylane & Cryogeldia. This isn't the case for `on_transfer()` so we get correct behaviour which fixes the above bug - Removing `on_transfer()` makes the proc `/datum/reagents/trans_to()` much faster performance wise because we aren't calling `update_total()` per reagent transfered now but only once at the end after all reagents are transferred Also there was little to no functional difference between the 2 procs, `expose()` works correctly in comparison & this won't confuse devs when deciding which proc to use. One proc to cover all scenarios **2) Removes unused expose signals** `COMSIG_ATOM_AFTER_EXPOSE_REAGENTS` & `COMSIG_REAGENTS_EXPOSE_ATOM` are not used anywhere in the codebase i.e. no listeners. They can be discarded as dead code **3) Fixes wrong transfer amount passed to `/datum/reagent/intercept_reagents_transfer()` & `/datum/reagents/expose()`** The wrong transfer `amount` was passed when it fact it should use `transfer_amount` which contains the multiplier & proportional multiplier applied. Also the reagent volumes exposed was computed incorrectly resulting in the 2nd issue listed above. Blood transferred to mobs now go to `blood_volume` directly instead of getting added to the mobs reagent holder as long as it's less than `BLOOD_VOLUME_MAXIMUM` level ## Changelog 🆑 fix: reagent intercept operations use correct volumes e.g. ph buffers fix: impure cryostylane now has inverse cryogeldia effects when applied on mods fix: exposing reagents now uses correct volumes i.e. injecting blood into mobs don't increase it exponentially and stops when max levels are reached. Exposure affects of all reagents are lessened upon continuous exposure refactor: refactors how reagent affects are applied on mobs. Report bugs on github /🆑 |
||
|
|
077262c0f9 |
Changes to crusher trophies and mining AOE, adds a new raptor-sourced trophy (#92241)
## About The Pull Request - Rebuke effect (from god's eye and lobstrocity claw trophy) now works on basicmobs, increasing the cooldown on their ranged attacks just like it does for simplemobs. - Bileworm spewlet trophy shots no longer hit your allied mobs, as previously this would cause you to constantly hit your own raptor/minebots/NODE drones, making it actively detrimental in some situations. Its shots now deals brute damage instead of burn, as otherwise its damage was reduced by 70% due to innate projectile resistance of lavaland mobs, making it deal measely 6 damage every 10 seconds. - MOD sphere module bombs now properly aggro lavaland mobs, as previously they only worked on simplemobs (also fixed a direct assignment to the blackboard in legionnaire spine code). - They also no longer deal damage to minebots and NODE drones. - Afterimages from the ice demon and their trophy can now be passed through, although hostile AI would attempt to avoid doing so. This way the trophy should no longer be an active detriment to players, and demons themselves should be less jank to fight. And if you're a heartless enough bastard, you can kill and butcher your raptor to get a new raptor feather crusher trophy, which allows your destabilizer shots to phase through your allied mobs similarly to passthrough mods for PKA. <img width="174" height="125" alt="Aseprite_3Olcd7oyVJ" src="https://github.com/user-attachments/assets/99d7eebb-e36d-428b-aa48-f1261a173ca1" /> ## Why It's Good For The Game These changes should make vent defense more bearable, as right now its very easy to accidentally damage and kill your own drone due to them being hit by all AOEs in miner arsenal. - Rebuke - should probably work on basicmobs as only remaining simplemobs on lavaland are megafauna - Bileworm spewlet - its a joke of a trophy at 6 damage as it has a 10 second cooldown, and it hitting your allies made vent defense much harder than it should've been - Sphere changes - should make bombs not kill your NODE/mining drones, aggro helps prevent cheese. - Afterimages - the trophy can end up bodyblocking you, this change should make it less of a pain in the ass to use the trophy and to fight the demons themselves. - Raptor feather - useful for vent defense when you're using minebots or have dismounted your raptor, right now its a pain for reasons mentioned above ## Changelog 🆑 add: Added a raptor feather crusher trophy which makes your crusher shots go through your allied mobs. balance: Rebuke effect from lobster claw trophy and the eye of god now applies to basicmob attacks balance: Bileworm spewlet's damage is no longer reduced by 70% when hitting lavaland fauna, and it no longer can hit allied mobs balance: Sphere MODule bombs no longer hit NODE drones and minebots balance: Ice demon/ice demon cube afterimages can now be walked through by players fix: Sphere MODule bombs now aggro basicmobs hit by their explosions /🆑 |
||
|
|
49140d08c9 |
Proteans can now copy MOD plating directly (and storages will no longer get deleted) (#4205)
## About The Pull Request - Proteans can now copy MOD plating directly without needing a full suit. - Fixes the storage modules vanishing when assimilating modsuits. Modules inside the original suit will now be placed into a cache which will return when the suit is removed. ## Why It's Good For The Game Fixes good, plus some much needed tune ups based on feedback. ## Proof Of Testing It works ## Changelog 🆑 add: Proteans can now directly copy modsuit plating to transform their suit without needing an entire modsuit. fix: Storage modules on proteans will no longer delete when assimilating suits. It prioritizes the incoming storage and "pushes aside" the old storage until the suit is removed. /🆑 |
||
|
|
5a263b77a3 |
Changes to crusher trophies and mining AOE, adds a new raptor-sourced trophy (#92241)
## About The Pull Request - Rebuke effect (from god's eye and lobstrocity claw trophy) now works on basicmobs, increasing the cooldown on their ranged attacks just like it does for simplemobs. - Bileworm spewlet trophy shots no longer hit your allied mobs, as previously this would cause you to constantly hit your own raptor/minebots/NODE drones, making it actively detrimental in some situations. Its shots now deals brute damage instead of burn, as otherwise its damage was reduced by 70% due to innate projectile resistance of lavaland mobs, making it deal measely 6 damage every 10 seconds. - MOD sphere module bombs now properly aggro lavaland mobs, as previously they only worked on simplemobs (also fixed a direct assignment to the blackboard in legionnaire spine code). - They also no longer deal damage to minebots and NODE drones. - Afterimages from the ice demon and their trophy can now be passed through, although hostile AI would attempt to avoid doing so. This way the trophy should no longer be an active detriment to players, and demons themselves should be less jank to fight. And if you're a heartless enough bastard, you can kill and butcher your raptor to get a new raptor feather crusher trophy, which allows your destabilizer shots to phase through your allied mobs similarly to passthrough mods for PKA. <img width="174" height="125" alt="Aseprite_3Olcd7oyVJ" src="https://github.com/user-attachments/assets/99d7eebb-e36d-428b-aa48-f1261a173ca1" /> ## Why It's Good For The Game These changes should make vent defense more bearable, as right now its very easy to accidentally damage and kill your own drone due to them being hit by all AOEs in miner arsenal. - Rebuke - should probably work on basicmobs as only remaining simplemobs on lavaland are megafauna - Bileworm spewlet - its a joke of a trophy at 6 damage as it has a 10 second cooldown, and it hitting your allies made vent defense much harder than it should've been - Sphere changes - should make bombs not kill your NODE/mining drones, aggro helps prevent cheese. - Afterimages - the trophy can end up bodyblocking you, this change should make it less of a pain in the ass to use the trophy and to fight the demons themselves. - Raptor feather - useful for vent defense when you're using minebots or have dismounted your raptor, right now its a pain for reasons mentioned above ## Changelog 🆑 add: Added a raptor feather crusher trophy which makes your crusher shots go through your allied mobs. balance: Rebuke effect from lobster claw trophy and the eye of god now applies to basicmob attacks balance: Bileworm spewlet's damage is no longer reduced by 70% when hitting lavaland fauna, and it no longer can hit allied mobs balance: Sphere MODule bombs no longer hit NODE drones and minebots balance: Ice demon/ice demon cube afterimages can now be walked through by players fix: Sphere MODule bombs now aggro basicmobs hit by their explosions /🆑 |
||
|
|
ef76e736f1 | Fixes for #91944 | ||
|
|
d738cbb296 |
Several balance changes to Combat MODsuits (#91944)
## About The Pull Request atomization of https://github.com/tgstation/tgstation/pull/91702 with a few changes. - armor booster module has been removed, nukie suits are now always fully armored and EVA proof. - Jetpack modules have had their power drain reduced considerably. - Cap,Hos and Sec MODs armor values have been bumped up (similar to the old hardsuit values). - Sec armor plates are now a cargo import. The nf suit now comes with the Shock absorber pre-installed. - Fixes Nukie suits not having T4 flash protection. - All combat modsuits now have ear protection by default when the suit active (Cap,Sec,Hos,Syndie,ERT, Death Squad, Ninja and RD.) - Night visor module now comes preinstalled in the syndie mods and doesn't conflict with other vision modules, nor it costs complexity, power drain reduced, the module itself has been removed from the uplink. - Increases the complexity on the nukie suits by 2 points. - all traitor modules now cost 1 less TC. ## Why It's Good For The Game **armor booster removal** I really dislike how this module works, it's a constant hassle having to manually swap mode depending on the pressure, it's just an annoyng memory check that punishes you with chip damage when not respected. The choice of wheter wearing a mod or not doesn't really apply to nuclear operatives since they wear these things all the time and losing half of your armor in space never really made a ton of sense to begin with. **Jetpack power drain buff** The drain on this thing is absolute fucking nuts, it eats high capacity cells in a matter of minutes, power should be a limiting factor to using these things but it shouldn't tank your battery health this quickly. **Cap,Sec,Hos MODs buffs** Back when Fikou introduced MODsuits, one point he clarified in the design doc is that "Combat stuff usually leads to uninteresting design, it makes the suits do everything for everyone" I don't want to diss on the dude (Love you bud), but I don't think his point makes a ton of sense. Combat stuff, on this case Combat mods should be built with Combat in mind. In all fairness he then has a paragraph addressing why the crew based combat suits should have low armor, but it still rings hollow to me. Armored or not, being slower than your average spessman is enough to make you an easy target or to never be able to chase anyone on foot, even with their armor increased I don't see players having them constantly on all the time, the slowdown is a hard enough disincentive. The Magnate and HoS mods specifically are unique pieces of gear, and they are usually assigned to 2 of the most important (and prone to assassination) roles on the station. There's also a weird paradox with some of the modules they come equipped with the sec MODs, the pepper spray and the projectile dampener are built around getting hit, which is a hard sell when your armor is so low you might as well just die straight up. Out of respect to Fikou's will of not wanting to grant the crew the ability to mass produce combat MODs, I removed the sec modplates from the techweb and moved em as a cargo import. **Uplink MODules Price reduction** These were originally priced with progression in mind, traitor specifically has become considerably weaker since they lost access to avenues to generate extra TCs. It's hard to justify getting a suit when most weapons in the uplink cost more than half of your budget, let alone the modules. **Shock absorption into the inf suit** This module is pretty much already mandatory if you don't want to lose fights in one hit, wearing a syndie modsuit makes you giga valid to everyone on station and any traitor worth their salt will buy this module regardless anyway; it just punishes new players who don't know better. **Night Visor MOD changes** This module is completely useless, nobody ever uses it, because it conflicts with other vision modules, and it's completely redundant since Thermal vision already comes packed with NV on their own. **Complexity increase on the Nukie suits + T4 flashing protection added** The nukie suits have honestly quite limited complexity for the role they are supposed to fill , the T4 flash protection missing from the suit is unintended as we made any other MODsuit have T4 protection already, Moth Nukies rejoice. **Ear Protection on combat MODs (oh boy)** Listen, as of right now we have a total of 2 counters for flashbangs, a Bowman or being deaf. A sealed, airtight suit shouldn't offer less protection against loud noises than a mere headset. baddies that usually pack these suits usually have a Bowman anyway, Nukies have it, ninja can easily teleport into a sec outpost and get it, it's a bit more tricky for traitor since they usually have to invest in an emag to quickly take the set or kill a security officer. At least now if you see a baddie roll up in a suit you no longer have to play hypotheticals wheter your flashbang will work properly or not. I also gave the ear protection to the RD mod despite it not being a combat MOD, because frankly it made sense, it's a bomb proof armor, It should also protect you from loud noises. ## Changelog 🆑 removal: Armor booster module has been removed. balance: Jetpack module energy drain has been massively reduced. balance: armor on the Magnate,Safegaurd and sec modsuits has been considerably increased. balance: Sec MOD plates have been transferred from RnD to Cargo. balance The Infiltrator MOD now comes with the shock absorption module pre-installed. balance: Nukie MODsuits hav a bit more complexity. fix: Nukie MODs now have the same flash protection as the other suits with welding protection. balance: night visor module comes pre-installed in the syndie mods, no longer consumes complexity,drains less power and doesn't conflict with the other visor MODules. removal: Nightvision MODule removed from the uplink. balance: Combat MODs and RDs now grant earing protection when the suit is active. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> |
||
|
|
93bd0c3607 |
Balance changes to the Wizard MOD and energy shields. (#91932)
## About The Pull Request Wizard MOD is now bio,flash proof, and comes with the no slips module , and the Hilbert DNA lock module installed. Energy shield charges on the battle shield module have been reduced from 15 to 5 but now regenerate over time. energy shield charges are now only consumed if at least 3 damage is dealt to the bubble. ## Why It's Good For The Game atomization of this PR: https://github.com/tgstation/tgstation/pull/91702 so I'm just gonna copypaste the same reasoning. **Wiz Modsuit changes** Despite being the Mod given to arguably the highest possible threat a station should face, this thing is insanely underwhelming. It doesn't come packaged with even some basic immunities we would grant to our common antagonists, the charges are limited and once they expire this suit has nothing to offer besides basic space protection and some decent armor. The suit has been rebalanced to offer a wide array of protections and have the Shield charges regenerate overtime to a maximum of 5, and it no longer has any slowdown. You might also want to reconsider using this as crew.... "That's a lot of stuff Jake, won't this make the suit overpowered?" You can bet your spessman arse it will, Wizard is not supposed to be a balanced antagonist in any way shape or form, but an absolute force of chaos. Given how everything else in the game has been powercept over the Years, we left this poor dude behind, it's time to address that. **Energy Shield MOD changes** I don't think the Shield should expire if no damage (or a pitiful amount of) hits the bubble, these have already been nerfed to only have 1 charge, it shouldn't require so little firepower (or none of) to destroy. ## Changelog 🆑 balance: Wiz suit is now bio,flash proof, comes with the no slip and Hilbert dna module installed, slowdown was removed. balance: Energy shield charges on the battlemage module have been reduced to 5 but now regenerate over time. balance: energy shield charges now require a minimum of 3 total damage to be consumed. removal: you can no longer buy additional shield charges for the suit using the spellbook. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> |
||
|
|
ec0a685866 |
Several balance changes to Combat MODsuits (#91944)
## About The Pull Request atomization of https://github.com/tgstation/tgstation/pull/91702 with a few changes. - armor booster module has been removed, nukie suits are now always fully armored and EVA proof. - Jetpack modules have had their power drain reduced considerably. - Cap,Hos and Sec MODs armor values have been bumped up (similar to the old hardsuit values). - Sec armor plates are now a cargo import. The nf suit now comes with the Shock absorber pre-installed. - Fixes Nukie suits not having T4 flash protection. - All combat modsuits now have ear protection by default when the suit active (Cap,Sec,Hos,Syndie,ERT, Death Squad, Ninja and RD.) - Night visor module now comes preinstalled in the syndie mods and doesn't conflict with other vision modules, nor it costs complexity, power drain reduced, the module itself has been removed from the uplink. - Increases the complexity on the nukie suits by 2 points. - all traitor modules now cost 1 less TC. ## Why It's Good For The Game **armor booster removal** I really dislike how this module works, it's a constant hassle having to manually swap mode depending on the pressure, it's just an annoyng memory check that punishes you with chip damage when not respected. The choice of wheter wearing a mod or not doesn't really apply to nuclear operatives since they wear these things all the time and losing half of your armor in space never really made a ton of sense to begin with. **Jetpack power drain buff** The drain on this thing is absolute fucking nuts, it eats high capacity cells in a matter of minutes, power should be a limiting factor to using these things but it shouldn't tank your battery health this quickly. **Cap,Sec,Hos MODs buffs** Back when Fikou introduced MODsuits, one point he clarified in the design doc is that "Combat stuff usually leads to uninteresting design, it makes the suits do everything for everyone" I don't want to diss on the dude (Love you bud), but I don't think his point makes a ton of sense. Combat stuff, on this case Combat mods should be built with Combat in mind. In all fairness he then has a paragraph addressing why the crew based combat suits should have low armor, but it still rings hollow to me. Armored or not, being slower than your average spessman is enough to make you an easy target or to never be able to chase anyone on foot, even with their armor increased I don't see players having them constantly on all the time, the slowdown is a hard enough disincentive. The Magnate and HoS mods specifically are unique pieces of gear, and they are usually assigned to 2 of the most important (and prone to assassination) roles on the station. There's also a weird paradox with some of the modules they come equipped with the sec MODs, the pepper spray and the projectile dampener are built around getting hit, which is a hard sell when your armor is so low you might as well just die straight up. Out of respect to Fikou's will of not wanting to grant the crew the ability to mass produce combat MODs, I removed the sec modplates from the techweb and moved em as a cargo import. **Uplink MODules Price reduction** These were originally priced with progression in mind, traitor specifically has become considerably weaker since they lost access to avenues to generate extra TCs. It's hard to justify getting a suit when most weapons in the uplink cost more than half of your budget, let alone the modules. **Shock absorption into the inf suit** This module is pretty much already mandatory if you don't want to lose fights in one hit, wearing a syndie modsuit makes you giga valid to everyone on station and any traitor worth their salt will buy this module regardless anyway; it just punishes new players who don't know better. **Night Visor MOD changes** This module is completely useless, nobody ever uses it, because it conflicts with other vision modules, and it's completely redundant since Thermal vision already comes packed with NV on their own. **Complexity increase on the Nukie suits + T4 flashing protection added** The nukie suits have honestly quite limited complexity for the role they are supposed to fill , the T4 flash protection missing from the suit is unintended as we made any other MODsuit have T4 protection already, Moth Nukies rejoice. **Ear Protection on combat MODs (oh boy)** Listen, as of right now we have a total of 2 counters for flashbangs, a Bowman or being deaf. A sealed, airtight suit shouldn't offer less protection against loud noises than a mere headset. baddies that usually pack these suits usually have a Bowman anyway, Nukies have it, ninja can easily teleport into a sec outpost and get it, it's a bit more tricky for traitor since they usually have to invest in an emag to quickly take the set or kill a security officer. At least now if you see a baddie roll up in a suit you no longer have to play hypotheticals wheter your flashbang will work properly or not. I also gave the ear protection to the RD mod despite it not being a combat MOD, because frankly it made sense, it's a bomb proof armor, It should also protect you from loud noises. ## Changelog 🆑 removal: Armor booster module has been removed. balance: Jetpack module energy drain has been massively reduced. balance: armor on the Magnate,Safegaurd and sec modsuits has been considerably increased. balance: Sec MOD plates have been transferred from RnD to Cargo. balance The Infiltrator MOD now comes with the shock absorption module pre-installed. balance: Nukie MODsuits hav a bit more complexity. fix: Nukie MODs now have the same flash protection as the other suits with welding protection. balance: night visor module comes pre-installed in the syndie mods, no longer consumes complexity,drains less power and doesn't conflict with the other visor MODules. removal: Nightvision MODule removed from the uplink. balance: Combat MODs and RDs now grant earing protection when the suit is active. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> |
||
|
|
30305feb24 |
Balance changes to the Wizard MOD and energy shields. (#91932)
## About The Pull Request Wizard MOD is now bio,flash proof, and comes with the no slips module , and the Hilbert DNA lock module installed. Energy shield charges on the battle shield module have been reduced from 15 to 5 but now regenerate over time. energy shield charges are now only consumed if at least 3 damage is dealt to the bubble. ## Why It's Good For The Game atomization of this PR: https://github.com/tgstation/tgstation/pull/91702 so I'm just gonna copypaste the same reasoning. **Wiz Modsuit changes** Despite being the Mod given to arguably the highest possible threat a station should face, this thing is insanely underwhelming. It doesn't come packaged with even some basic immunities we would grant to our common antagonists, the charges are limited and once they expire this suit has nothing to offer besides basic space protection and some decent armor. The suit has been rebalanced to offer a wide array of protections and have the Shield charges regenerate overtime to a maximum of 5, and it no longer has any slowdown. You might also want to reconsider using this as crew.... "That's a lot of stuff Jake, won't this make the suit overpowered?" You can bet your spessman arse it will, Wizard is not supposed to be a balanced antagonist in any way shape or form, but an absolute force of chaos. Given how everything else in the game has been powercept over the Years, we left this poor dude behind, it's time to address that. **Energy Shield MOD changes** I don't think the Shield should expire if no damage (or a pitiful amount of) hits the bubble, these have already been nerfed to only have 1 charge, it shouldn't require so little firepower (or none of) to destroy. ## Changelog 🆑 balance: Wiz suit is now bio,flash proof, comes with the no slip and Hilbert dna module installed, slowdown was removed. balance: Energy shield charges on the battlemage module have been reduced to 5 but now regenerate over time. balance: energy shield charges now require a minimum of 3 total damage to be consumed. removal: you can no longer buy additional shield charges for the suit using the spellbook. /🆑 --------- Co-authored-by: Xander3359 <66163761+Xander3359@users.noreply.github.com> |
||
|
|
ddbb15bd18 |
Fixes infiltrator suit overslotting (#91933)
the infiltrator suit can now overslot chest and head again. bugfix. 🆑 fix: the infiltrator suit can overslot once more /🆑 |
||
|
|
cc3d9570c3 |
Fixes MODSuits Not Allowing Certain Items Over Them Like CatEar Headphones, Flowers, And Other Stuff No Thanks To TG (#4198)
## About The Pull Request I changed it from clothing to all items you can equip, I am a bad coder thats done like 4 months of Cyber Security in uni pls be gentle this my first pr here. Tested to ensure it didn't break gear that already worked too, it didn't!! ## Why It's Good For The Game Bug fix good! ## Proof Of Testing https://i.imgur.com/eVWpVMs.png https://i.imgur.com/s1ta68L.png ## Changelog 🆑 fix: MODSuits now go over all items like they should! /🆑 Closes: #3999 --------- Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> |
||
|
|
8bdcaf8332 |
Fixes infiltrator suit overslotting (#91933)
## About The Pull Request the infiltrator suit can now overslot chest and head again. ## Why It's Good For The Game bugfix. ## Changelog 🆑 fix: the infiltrator suit can overslot once more /🆑 |
||
|
|
161d744035 |
Telecomms Update: Ability to change existing radio channels and create new ones (#91647)
## About The Pull Request
I have added the ability to create and edit station radio channels
through the existing telecommunications system.
You can change the name of the radio channel and its color.
The channel settings are changed and created through the servers
(Frequencies Settings)

Here i created my own channel:
1) Add frequency at Receiver (you will not see channel name):

2) Add frequency at Bus (you will not see channel name):

3) Add frequency at Server
4) Add settings for your frequency

5) See the result:

Important Notes:
1) Headsets, radios, and intercoms will not see a change in
telecommunications, but will use standard names (Common, Security etc.).
2) There are still reserved names that cannot be used: CentComm,
Syndicate, Uplink, CTFs channels
3) Servers must filter frequency for applying settings on them
## Why It's Good For The Game
Now telecommunication channels names and colors depends on the settings
of the network servers, which makes it more flexible and logical. It is
also useful for foreign language servers, as you can translate channel
names.
## Changelog
🆑
add: Added ability to change existing radio channels and create new
qol: Added color for some buttons in Telecomms UI
/🆑
(cherry picked from commit
|
||
|
|
35494b93bb |
Telecomms Update: Ability to change existing radio channels and create new ones (#91647)
## About The Pull Request I have added the ability to create and edit station radio channels through the existing telecommunications system. You can change the name of the radio channel and its color. The channel settings are changed and created through the servers (Frequencies Settings)  Here i created my own channel: 1) Add frequency at Receiver (you will not see channel name):  2) Add frequency at Bus (you will not see channel name):  3) Add frequency at Server 4) Add settings for your frequency  5) See the result:  Important Notes: 1) Headsets, radios, and intercoms will not see a change in telecommunications, but will use standard names (Common, Security etc.). 2) There are still reserved names that cannot be used: CentComm, Syndicate, Uplink, CTFs channels 3) Servers must filter frequency for applying settings on them ## Why It's Good For The Game Now telecommunication channels names and colors depends on the settings of the network servers, which makes it more flexible and logical. It is also useful for foreign language servers, as you can translate channel names. ## Changelog 🆑 add: Added ability to change existing radio channels and create new qol: Added color for some buttons in Telecomms UI /🆑 |
||
|
|
c8deced1c0 |
Fixes ninja camera vision module so it provides welding protection (#91428)
## About The Pull Request The ninja camera vision module now provides the same welding protection as the welding module, as intended. This was due to the camera vision module not inheriting the function which applied the welding protection in on_part_activation() ## Why It's Good For The Game The camera vision module was not providing any flash protection to the ninja, despite its description clearly stating; "...as well as automatically dimming incoming flashes of light to protect the user's eyes. Become the unseen." In fact, the night vision goggles provided to the ninjas made them weak to flashes. ## Changelog 🆑 fix: Ninja Camera Vision module now correctly applies welding protection. /🆑 |
||
|
|
1f3894e793 |
Crafting refactor, implementing materials (#89465)
My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. Improving the backbone of the crafting system. Also materials and food code. 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑 |
||
|
|
a5a4b83a25 |
Sets prettier to run on the repo (#91379)
Prettier (an auto formatter) is set to only run within the tgui folder currently. This removes that limitation, allowing it to automatically format all supported files in the repo (.js, .html, .yml [etc](https://prettier.io/docs/)) I made a few exceptions for bundled and generated files I'm of the opinion that code should look uniform and am lazy enough to want CTRL-S to format files without having to think beyond that |
||
|
|
9ca522d4dd |
Fixes ninja camera vision module so it provides welding protection (#91428)
## About The Pull Request The ninja camera vision module now provides the same welding protection as the welding module, as intended. This was due to the camera vision module not inheriting the function which applied the welding protection in on_part_activation() ## Why It's Good For The Game The camera vision module was not providing any flash protection to the ninja, despite its description clearly stating; "...as well as automatically dimming incoming flashes of light to protect the user's eyes. Become the unseen." In fact, the night vision goggles provided to the ninjas made them weak to flashes. ## Changelog 🆑 fix: Ninja Camera Vision module now correctly applies welding protection. /🆑 |
||
|
|
4f6727024d |
Crafting refactor, implementing materials (#89465)
## About The Pull Request My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. ## Why It's Good For The Game Improving the backbone of the crafting system. Also materials and food code. ## Changelog 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑 |
||
|
|
9db2f6916b |
Sets prettier to run on the repo (#91379)
## About The Pull Request Prettier (an auto formatter) is set to only run within the tgui folder currently. This removes that limitation, allowing it to automatically format all supported files in the repo (.js, .html, .yml [etc](https://prettier.io/docs/)) I made a few exceptions for bundled and generated files ## Why It's Good For The Game I'm of the opinion that code should look uniform and am lazy enough to want CTRL-S to format files without having to think beyond that ## Changelog |
||
|
|
262c8cbeac |
[NO GBP] Fixes the MOD Soul Core saying it has no charge in the UI while worn (#91244)
## About The Pull Request I made an oopsie and forgot a single NOT operation in the line that checks if the suit is being worn. This also almost certainly fixes a runtime that I assume would happen when looking at the interface of a suit not currently being worn. ## Why It's Good For The Game The soul core isn't supposed to tell you there's no charge source when it is clearly fully functioning. ## Changelog 🆑 fix: The MOD soul core no longer tells you there's no charge source while worn. /🆑 |
||
|
|
655b66bdd0 |
Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
Revival of https://github.com/tgstation/tgstation/pull/86482, which is even more doable now that we have rustg iconforge generation. What this PR does: - Sets up every single GAGS icon in the game to have their own preview icon autogenerated during compile. This is configurable to not run during live. The icons are created in `icons/map_icons/..` - This also has the side effect of providing accurate GAGS icons for things like the loadout menu. No more having to create your own previews.  <details><summary>Mappers rejoice!</summary>   </details> <details><summary>Uses iconforge so it does not take up much time during init</summary>  </details> --- this still applies: Note for Spriters: After you've assigned the correct values to vars, you must run the game through init on your local machine and commit the changes to the map icon dmi files. Unit tests should catch all cases of forgetting to assign the correct vars, or not running through init. Note for Server Operators: In order to not generate these icons on live I've added a new config entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in the config.txt No more error icons in SDMM and loadout. 🆑 refactor: preview icons for greyscale items are now automatically generated, meaning you can see GAGS as they actually appear ingame while mapping or viewing the loadout menu. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
c4897e7c03 |
[NO GBP] Fixes the MOD Soul Core saying it has no charge in the UI while worn (#91244)
## About The Pull Request I made an oopsie and forgot a single NOT operation in the line that checks if the suit is being worn. This also almost certainly fixes a runtime that I assume would happen when looking at the interface of a suit not currently being worn. ## Why It's Good For The Game The soul core isn't supposed to tell you there's no charge source when it is clearly fully functioning. ## Changelog 🆑 fix: The MOD soul core no longer tells you there's no charge source while worn. /🆑 |