mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 23:58:07 +01:00
master
10126
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
07bebff6ac |
fixes runtime related to barber and lizard gas access (#6122)
## About The Pull Request The define for barber, lizard gas and a few others was typed as a number, rather than a string. This was causing list index out of bound runtimes in certain places, like interacting with the ore silo (for example, printing circuit boards). This PR fixes it by making the defines strings, rather than numbers ## Why It's Good For The Game Fixes runtimes. Also moves stuff from skyrat to bubbers files. ## Proof Of Testing I used the circuit imprinter on runtime station with the jannie debug ID and it stopped runtiming. The accesses I've changed are listed properly now. <details> <summary>Screenshots</summary> <img width="293" height="320" alt="image" src="https://github.com/user-attachments/assets/0ca862ec-f260-4d0a-b27a-c385fc0e0ca7" /> Before, the lizard gas manager ID had its access set as NONE because they were numbers. <img width="285" height="319" alt="image" src="https://github.com/user-attachments/assets/335548ce-9dac-4ac6-872b-3642e1ab7380" /> The gas lizard manager ID has access listed properly now. </details> ## Changelog 🆑 Swan fix: fixes runtimes related to lizard gas station and barber access. /🆑 |
||
|
|
2c8e9ef580 | Merge branch 'master' of github.com:Bubberstation/Bubberstation into upstream-sync-7-22-2026 | ||
|
|
8a01d69e7e | Various upstream related fixes | ||
|
|
4f74148dd3 |
Tarkon borgs (#6076)
## About The Pull Request https://github.com/Bubberstation/Bubberstation/pull/3687 Reupload of this PR. I finished it, it never got merged, i dont remember why. Lots of my PRs just kinda timed out. A new Borg subtype, for Tarkon specifically. has access to lots of dodads, very versatile model with access to multiple types on one shell. Not obtainable outside of Tarkon. ## Why It's Good For The Game Would be fitting thematically if they had their own borgs, plus giving more utility to one borg on a usually very small crew is good, and them being able to participate in the bulk of the fighting as more than a backline medic is nice. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> Minor reshuffle of the spawn area to acommodate the spawner. <img width="906" height="871" alt="image" src="https://github.com/user-attachments/assets/86fb438d-90a1-433b-a7fe-d9f2a82d83bf" /> Module choices <img width="618" height="559" alt="image" src="https://github.com/user-attachments/assets/28f868c6-e8fe-45a9-9a5f-e2252e84b83d" /> Laws and preamble on module selection <img width="1503" height="253" alt="image" src="https://github.com/user-attachments/assets/1775da72-fad2-4d47-bdc7-5c753fc10b98" /> Attemting to install more than 3 tarkon modules (the limit) <img width="554" height="68" alt="image" src="https://github.com/user-attachments/assets/b3b6d4df-72d2-4d3d-8cd2-59b62e4e1db4" /> </details> ## Changelog 🆑 add: New Tarkon borgs, jack of all trades /🆑 --------- Co-authored-by: Odairu <39929315+Odairu@users.noreply.github.com> Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com> |
||
|
|
a4df0d143c |
limb grower shadekin limbs, design enhancements (#5967)
## About The Pull Request - [x] Adds shadekin eyes and ears to the limb grower. - [x] Makes the various species parts available upon research without having to print 8 different design disks - [x] Adjust pricing of some bodyparts to be similar to base human parts - [x] Adds adaptable lungs as researchable expansion for limb grower ## Why It's Good For The Game Quality of life. Having to print the design disks alongside the limb grower is pointless, it costs next to nothing materials wise and takes a bunch of inventory space to do it. ## Changelog 🆑 LT3 add: Added shadekin eyes and ears to limb grower qol: Limb grower automatically includes species parts, no more species disks required add: Adaptive hot/oxy/tox lungs can now be printed from the limb grower once researched /🆑 --------- Co-authored-by: Alexis <catmc8565@gmail.com> |
||
|
|
7187319a7c |
Crafting CI, surely I won't have fucked everything up
more items (CI) Food process CI ammo CI + battery runtime might be right, CI will tell me :) :( borg items and fixing stuff I broke rations_printer_designs :( Biogen Parent Type Additions Pt. 1 Biogen Parent Type Additions Pt. 2 |
||
|
|
ab5034e97b |
Replaces waterbreathing with TG's NODROWN (#6069)
## About The Pull Request TRAIT_NODROWN is basically the same thing, so there's no reason to keep a weird snowflake check from skyrat. closes #4623 ## Why It's Good For The Game Less bloated code, and fixes an issue ## Proof Of Testing I ran around with my akula and it all worked, didn't drown in deep tiles, and I didn't drown in turf liquids either ## Changelog 🆑 fix: Akulas and other waterbreathers no longer drown in deep water refactor: TRAIT_NODROWN now fully replaces TRAIT_WATER_BREATHING in the backend for better consistency for when TG changes stuff. /🆑 Co-authored-by: Maia <maia@punches.cz> |
||
|
|
0b070c1cfa |
Upstream fixes 2
Linters (Again...)
This SHOULD be the last one needed.
Lewd part overlays now actually show up proper
penis not gone, tits not gone
KiloStation Automapper Stuff - Done by R0bwo
Revert "KiloStation Automapper Stuff - Done by R0bwo"
This reverts commit
|
||
|
|
f215b7eb22 |
Storyteller config cleanup and finer config control (#6030)
## About The Pull Request I was very annoyed at there being so many vars and configs on the storyteller that do absolutely fucking nothing so I removed them. While I was at it, I decided to fix some configs having wrong names, and add config control over the storyteller types, so that they can be controlled more finely via configs, rather than through code. ## Why It's Good For The Game Removes unnecessary configs that literally do not affect anything, so that admins don't get confused by tweaking values and not having anything change. Also makes it easier to control the storytellers via configs ## Proof Of Testing It compiled. I checked if the configs properly multiply the thresholds and they do. ## Changelog 🆑 Swan config: Added configs for finer control over the various storytellers, and renamed wrongly named configs. Removed configs which weren't tied to anything. /🆑 |
||
|
|
96857252d9 |
Fixes Size Collar + Cleanup (#6060)
## About The Pull Request Oops. Turns out I broke the size collar. ## Why It's Good For The Game Bugs bad ## Proof Of Testing See below. <details> <summary>Screenshots/Videos</summary> https://github.com/user-attachments/assets/ab8bc0ee-bea1-41a9-ba80-bfecddd205c1 </details> ## Changelog 🆑 fix: Fixed the size collar. /🆑 |
||
|
|
9cec1c732f |
The Great dna.features["body_size"] Killing (#6042)
## About The Pull Request Kills every instance of the body_size feature and changes everything to use current_size, RESIZE_DEFAULT_SIZE, and update_transform. Also cleans up oversized code big time. The only player-facing change from this is that the oversized specific organs are now gone. ## Why It's Good For The Game The oversized code was a mess and having snowflakey features when the proc and such already exists caused me pain. ## Proof Of Testing See below. <details> <summary>Screenshots/Videos</summary> https://github.com/user-attachments/assets/017fb9e3-aef9-48ce-a64e-b24a99ae49eb https://github.com/user-attachments/assets/4cdaa48c-0237-4447-a943-cabb222be25b https://github.com/user-attachments/assets/3bab0b0c-5098-4d51-b77e-994e21bcf87e </details> ## Changelog 🆑 del: Removed the oversized specific organs. /🆑 |
||
|
|
91a15ba310 |
Turns the Hemophage Species into a Quirk (#5919)
## About The Pull Request The goal of this PR is twofold: 1. Remove hemophages as a species. 2. Allow anyone to be a hemophage through the use of a quirk. Currently, hemophages are somewhat limited in what they can look like bodyshape wise due to being tied to a species, yet almost all of their abilities and traits are tied to organs. To-Do: - [x] Properly implement the removal of the organs when the quirk gets removed. - [x] Test the quirk with the other hemophage specific quirks, possibly work them into toggles with this quirk. ## Why It's Good For The Game This helps shorten our list of playable species while keeping the core aspects of hemophage gameplay able to be done. It also increases customization potential, yippee. ## Proof Of Testing See below. <details> <summary>Screenshots/Videos</summary> <img width="1917" height="1004" alt="image" src="https://github.com/user-attachments/assets/f2b6cb97-1425-4888-a9c4-4a7ed30d74bf" /> <img width="619" height="154" alt="image" src="https://github.com/user-attachments/assets/de0c21f9-bca5-4171-8fc9-d6d28b7e3ea0" /> </details> ## Changelog 🆑 del: Removed the hemphage specific quirks Masquerade, Sol Weakness, and Pseudo-Respiration. They are now toggles on the hemophage quirk. refactor: Refactored the hemophage species into being a quirk: Hemophagia. /🆑 --------- Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> |
||
|
|
ae1cc71b34 |
Initial upstream fixes
Is this even working Oooough ok I'll crack at this couple more fixes Probably the worst of all my commits so far Seriously, someone needs to check this. It compiles update atmos stuff update paths snakes linters 1 linters again more CI whoops Update map_previews.dmi Kills loose limbs The component it used no longer exists. podperson CI Fixes(?) Linters |
||
|
|
cbd0195c22 |
adds a station trait that allows HOP/RD/CE/CMO/QM to be antags (#5927)
## About The Pull Request Title + Still keeps Captain, Hos, NTR, Blueshield, and Bridge assistant as antag restricted ## Why It's Good For The Game These roles have some COOL items in the uplink exclusive to them + a lot of times they get away with a lot of things that normal crew would not because OOC we all know they can't be antag. "The CE is jaws-ing into your department? well he can't be antag so he probably has a good reason, better let him in." It's locked to a station trait, so the possibility is now ALWAYS THERE, hopefully this puts a little more scrutiny on these 5 roles and what they're doing. ## Proof Of Testing <img width="1244" height="977" alt="image" src="https://github.com/user-attachments/assets/ed6c02e5-628f-4fc0-bd41-05b45aee1bc9" /> <img width="1221" height="975" alt="image" src="https://github.com/user-attachments/assets/917c0f3f-a4e7-4a6d-8f4b-2267d2ae4c85" /> <details> <summary>Screenshots/Videos</summary> </details> ## Changelog 🆑 add: a station trait that allows heads of staff to be antags /🆑 --------- Co-authored-by: Alexis <catmc8565@gmail.com> |
||
|
|
9e638c4dd3 |
Tarkon borgs (#6076)
## About The Pull Request https://github.com/Bubberstation/Bubberstation/pull/3687 Reupload of this PR. I finished it, it never got merged, i dont remember why. Lots of my PRs just kinda timed out. A new Borg subtype, for Tarkon specifically. has access to lots of dodads, very versatile model with access to multiple types on one shell. Not obtainable outside of Tarkon. ## Why It's Good For The Game Would be fitting thematically if they had their own borgs, plus giving more utility to one borg on a usually very small crew is good, and them being able to participate in the bulk of the fighting as more than a backline medic is nice. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> Minor reshuffle of the spawn area to acommodate the spawner. <img width="906" height="871" alt="image" src="https://github.com/user-attachments/assets/86fb438d-90a1-433b-a7fe-d9f2a82d83bf" /> Module choices <img width="618" height="559" alt="image" src="https://github.com/user-attachments/assets/28f868c6-e8fe-45a9-9a5f-e2252e84b83d" /> Laws and preamble on module selection <img width="1503" height="253" alt="image" src="https://github.com/user-attachments/assets/1775da72-fad2-4d47-bdc7-5c753fc10b98" /> Attemting to install more than 3 tarkon modules (the limit) <img width="554" height="68" alt="image" src="https://github.com/user-attachments/assets/b3b6d4df-72d2-4d3d-8cd2-59b62e4e1db4" /> </details> ## Changelog 🆑 add: New Tarkon borgs, jack of all trades /🆑 --------- Co-authored-by: Odairu <39929315+Odairu@users.noreply.github.com> Co-authored-by: Waterpig <49160555+Maia-J@users.noreply.github.com> |
||
|
|
332cca2dea |
limb grower shadekin limbs, design enhancements (#5967)
## About The Pull Request - [x] Adds shadekin eyes and ears to the limb grower. - [x] Makes the various species parts available upon research without having to print 8 different design disks - [x] Adjust pricing of some bodyparts to be similar to base human parts - [x] Adds adaptable lungs as researchable expansion for limb grower ## Why It's Good For The Game Quality of life. Having to print the design disks alongside the limb grower is pointless, it costs next to nothing materials wise and takes a bunch of inventory space to do it. ## Changelog 🆑 LT3 add: Added shadekin eyes and ears to limb grower qol: Limb grower automatically includes species parts, no more species disks required add: Adaptive hot/oxy/tox lungs can now be printed from the limb grower once researched /🆑 --------- Co-authored-by: Alexis <catmc8565@gmail.com> |
||
|
|
2e35a9c9e1 |
Replaces waterbreathing with TG's NODROWN (#6069)
## About The Pull Request TRAIT_NODROWN is basically the same thing, so there's no reason to keep a weird snowflake check from skyrat. closes #4623 ## Why It's Good For The Game Less bloated code, and fixes an issue ## Proof Of Testing I ran around with my akula and it all worked, didn't drown in deep tiles, and I didn't drown in turf liquids either ## Changelog 🆑 fix: Akulas and other waterbreathers no longer drown in deep water refactor: TRAIT_NODROWN now fully replaces TRAIT_WATER_BREATHING in the backend for better consistency for when TG changes stuff. /🆑 Co-authored-by: Maia <maia@punches.cz> |
||
|
|
8d7f91751c |
Storyteller config cleanup and finer config control (#6030)
## About The Pull Request I was very annoyed at there being so many vars and configs on the storyteller that do absolutely fucking nothing so I removed them. While I was at it, I decided to fix some configs having wrong names, and add config control over the storyteller types, so that they can be controlled more finely via configs, rather than through code. ## Why It's Good For The Game Removes unnecessary configs that literally do not affect anything, so that admins don't get confused by tweaking values and not having anything change. Also makes it easier to control the storytellers via configs ## Proof Of Testing It compiled. I checked if the configs properly multiply the thresholds and they do. ## Changelog 🆑 Swan config: Added configs for finer control over the various storytellers, and renamed wrongly named configs. Removed configs which weren't tied to anything. /🆑 |
||
|
|
8cd86978fe |
Fixes Size Collar + Cleanup (#6060)
## About The Pull Request Oops. Turns out I broke the size collar. ## Why It's Good For The Game Bugs bad ## Proof Of Testing See below. <details> <summary>Screenshots/Videos</summary> https://github.com/user-attachments/assets/ab8bc0ee-bea1-41a9-ba80-bfecddd205c1 </details> ## Changelog 🆑 fix: Fixed the size collar. /🆑 |
||
|
|
c5a8e04a7e |
The Great dna.features["body_size"] Killing (#6042)
## About The Pull Request Kills every instance of the body_size feature and changes everything to use current_size, RESIZE_DEFAULT_SIZE, and update_transform. Also cleans up oversized code big time. The only player-facing change from this is that the oversized specific organs are now gone. ## Why It's Good For The Game The oversized code was a mess and having snowflakey features when the proc and such already exists caused me pain. ## Proof Of Testing See below. <details> <summary>Screenshots/Videos</summary> https://github.com/user-attachments/assets/017fb9e3-aef9-48ce-a64e-b24a99ae49eb https://github.com/user-attachments/assets/4cdaa48c-0237-4447-a943-cabb222be25b https://github.com/user-attachments/assets/3bab0b0c-5098-4d51-b77e-994e21bcf87e </details> ## Changelog 🆑 del: Removed the oversized specific organs. /🆑 |
||
|
|
96d60afb47 |
Turns the Hemophage Species into a Quirk (#5919)
## About The Pull Request The goal of this PR is twofold: 1. Remove hemophages as a species. 2. Allow anyone to be a hemophage through the use of a quirk. Currently, hemophages are somewhat limited in what they can look like bodyshape wise due to being tied to a species, yet almost all of their abilities and traits are tied to organs. To-Do: - [x] Properly implement the removal of the organs when the quirk gets removed. - [x] Test the quirk with the other hemophage specific quirks, possibly work them into toggles with this quirk. ## Why It's Good For The Game This helps shorten our list of playable species while keeping the core aspects of hemophage gameplay able to be done. It also increases customization potential, yippee. ## Proof Of Testing See below. <details> <summary>Screenshots/Videos</summary> <img width="1917" height="1004" alt="image" src="https://github.com/user-attachments/assets/f2b6cb97-1425-4888-a9c4-4a7ed30d74bf" /> <img width="619" height="154" alt="image" src="https://github.com/user-attachments/assets/de0c21f9-bca5-4171-8fc9-d6d28b7e3ea0" /> </details> ## Changelog 🆑 del: Removed the hemphage specific quirks Masquerade, Sol Weakness, and Pseudo-Respiration. They are now toggles on the hemophage quirk. refactor: Refactored the hemophage species into being a quirk: Hemophagia. /🆑 --------- Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> |
||
|
|
88e84645b1 | Merge commit '6b52b564a50e4f3091470529c683587e5de15d49' into upstream-sync-7-22-2026 | ||
|
|
6508994fdf |
Cabbage's Armory (#5757)
## Main Additions and Modifications This PR adds in a quite a few new things. ### Overview **WT-550 "Enhancements"** - made available via research. These modifications retain the full-auto capability of the WT-550 to varying degrees. Additionally a compressed WT550 magazine is available via research. It contains 40 weaker bullets compared to the normal magazine's 20. It is only allowed to contain compressed bullets to avoid cheesing, and requires bluespace to fabricate. It is designed as a sustained dps ammunition as opposed to a high dps ammunition **WT-550-B** - Shoots in bursts with decent recoil and slightly higher dps. **WT-550-C** - Shoots slower but has a higher damage and projectile velocity along with a scope. **Sawn-off WT-550** - Is smaller but has egregious recoil and spread. **.38 BR** - A simple but slightly less powerful alternative to the NT-38 battle rifle. Craftable via a kit obtained from research. **Stunstaff** - A weapon that is available via crafting and functions as an alternative to a baton and riot shield. A heroic variant exists within the code but the recipe can only be learned from a book that sometimes spawns in the armory contraband closet. **Advanced Energy SMG** - A hybrid of a disabler SMG, laser carbine, and advanced energy gun. Does exactly what you think it does. Obtainable via crafting. **Stingballer** - A rifle that rapidly shoots stingballs. Direct damage is lesser than a stingbang. Purchasable from cargo. **Security Juggernaut Suit** - A heavily armoured suit that severely cripples your mobility in exchange for very high protection. Crafting kit is printable from a technode. **Horizon Beam Rifle** - Damage is now 110 with 35 armor piercing, and a demo mod of 2. Upon contact with walls, it destroys them like how a pulse laser does. ### Crafting WT-550 weapons can all be made with just the gun and the kit. The sawn-off WT550 can be made by taking a saw to the WT550. The .38 BR requires an NT-38 battle rifle along with a multitool and a screwdriver. The Advanced Energy SMG requires a disabler smg, laser carbine, and an advanced energy gun. The Stunstaff requires two security batons, some plasteel and some cable, along with a welder and wrench. The Heroic Stunstaff requires some other ingredients. The Security Juggernaut suit requires a full toolbox of tools as well as the armor plates, a full coil of cable, a pair of magboots, a swat helmet, a swat suit, and two seclites. Stingbangs can be prepared into stingball canisters with a screwdriver and some wirecutters. Each contains 25 rounds are are used to fill the stingballer. ### Cargo **Stingballer** - Armory crate - Contains one stingballer. - 4500 credits. **Grenade Launcher** - Armory crate - Contains one grenade launcher and a box of flashbangs. - 15000 credits. **Kiboko Grenade Launcher** - Armory crate - Contains one Kiboko grenade launcher. - 7500 credits. ### R&D The **"Ballisitic Research"** technode has been removed and dragon's breath shells have been moved to the illegal technology node. The node remains within the code though if more exotic ammunition is developed and requires an additional research node for it. New **"Advanced Ballistics"** technode contains the part kits for the WT-550 modifications and NT-BR simplification kit and requires Exotic Ammunition to research. New **"Advanced Armor"** technode contains the Security Juggernaut Plates and requires Riot Suppression and Gas Compression to research. ### Code Adds to the buckling system where if something has TRAIT_NO_BUCKLE, it cannot be buckled at all. Adds to the vehicle system where if something has TRAIT_NO_VEHICLE, it will be flung off the vehicle it attempts to move the vehicle themselves. Adds to the chair system where if something has TRAIT_NO_VEHICLE, it will destroy the chair. Adds to the movement system where if something has TRAIT_LARGE_CLOTHES, TRAIT_BULKY_CLOTHES, or TRAIT_HUGE_CLOTHES, it will incur a 3, 4, and 5 move speed multiplier when pulling that thing. If anyone can help me do this more modular, please reach out, I have no clue how. Edits the equipment slowdown system to properly apply a special slowdown that cannot be negated by anything. Requires the TRUE_IMMUTABLE_SLOW bubber_obj_flag to be present. IMMUTABLE_SLOW is still required for red potion immunity. ### Other Misc. Changes The WT-551 has been effectively rendered impossible to get. This decision stems from the fact that the WT-550 and the WT-551 were functionally identical when used in-game. Instances of the 551 have been replaced with the 550. Skyrat's renaming of /tg/ bullets has been completely removed. Some descriptions have been kept and altered because they were kinda neat. .460 Ceres -> .45 .416 Stabilis -> .50 BMG 8mm Usurpator -> 4.6x30mm .454 Trucidator -> .50 Action Express .277 Aestus -> .223 ## Statistics For New Additions **Stunstaff** <img width="32" height="32" alt="image" src="https://github.com/user-attachments/assets/0e1c2a1a-20ba-47a9-91f1-e63ca11b5e43" /> - Two-handed, bulky. Fits on the back and an armor vest. - 65 stamina damage - 20 stun armour penetration - 14 force - 8 throw force - 50 block chance - 20 effective block vs tackles - 10 effective block vs projectiles **Heroic Stunstaff** - 24 stamina damage - 0.5 second stun - 4 times the cell charge consumption - No cooldown between stuns - 35 stun armor penetration - 15 force - 10 throw force - 75% throw stun chance - Can be thrown like a boomerang - 75 block chance - 30 effective block vs tackles - 50 effective block vs projectiles **WT-550-B** <img width="32" height="32" alt="image" src="https://github.com/user-attachments/assets/56fea4dd-9b0c-4e06-93a7-b0389f3d32c9" /> - Bulky sized, small weapon weight, dual wielding. - 2 round burst every 0.5 seconds - 0.25 recoil - 3 spread - Can be suppressed **WT-550-C** <img width="48" height="32" alt="image" src="https://github.com/user-attachments/assets/bd80570d-3e70-463d-8b6b-7cefcb1d54e6" /> - Bulky sized, heavy weapon weight, no dual wielding. - Half fire rate of normal WT (0.6 compared to 0.3) - 1.5x damage multiplier - 1.5x projectile speed multiplier - +5 projectile wound bonus - Can be Suppressed - Mediocre Scope **Sawn-off WT-550** <img width="32" height="32" alt="image" src="https://github.com/user-attachments/assets/6d786022-2d93-42da-9dcc-fe6dfadbbce1" /> - Normal sized, light weapon weight, dual wielding - 10 spread - 20 dual wielded spread - Sawn-off recoil (high) **Compressed WT-550 magazine** - 40 capacity - 12 damage (20 for normal rounds) **Stingballer** <img width="32" height="32" alt="image" src="https://github.com/user-attachments/assets/de30bda5-9e0b-44da-8097-ca9827d3d8c8" /> - Bulky sized, normal weapon weight, no dual wielding. - 8 rounds per second - 7.5 spread - 50 round capacity - 1.5 damage - 4 stamina damage - Embed chance at close range - Bouncy projectile - Low effective range **.38 Battle Rifle** <img width="48" height="32" alt="image" src="https://github.com/user-attachments/assets/24a9a257-97fe-4313-ba39-93d17230f1b4" /> - Overall same statistics as the NT-38 Battle Rifle except for - 1.0x damage multiplier (compared to 1.2x) - 1.0x projectile speed multiplier (compared to 1.2x) - 25.0% faster rate of fire (1.5 compared to 2) - No degradation mechanics - No scope **Advanced Energy SMG** <img width="32" height="32" alt="image" src="https://github.com/user-attachments/assets/2671009a-a994-4054-92ff-4db2959501e8" /> - Bulky Size, no dual wielding. - 0.8x damage multiplier (12 on kill, 12 on disable) - 1.2x projectile speed multiplier - 40 shots on kill, 40 shots on disable - Charges about half as fast as the regular advanced energy gun. - Same fire rate as the disabler SMG - 2 spread **Security Juggernaut Suit** <img width="32" height="32" alt="image" src="https://github.com/user-attachments/assets/5de0a084-4a07-4d8f-88a3-d9996de41010" /> - Built in helmet - Helmet protects head from flashes, loud noises, impacts and pepperspray - Full temperature and pressure protection - Helmet has powerful flashlight mounted - Takes 12 seconds to put on, 15 to put on someone else - Slows you down everywhere - Slows you down when in-hand - Slows down someone who's dragging you - Prevents aggressive grabs against you when worn - Prevents combat-mode pushing against you when worn - Prevents shove knockdowns when worn - Prevents gravity effects when worn - Prevents buckling when worn - Cannot be red potion'd. - Does NOT protect against batons or knockdown. Current Armor values: - melee = 80 - bullet = 80 - laser = 70 - energy = 60 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - wound = 30 ## Why It's Good For The Game This PR adds in quite a few items that fill certain role archetypes within security while allowing them to still use equipment that security would already have. ## Proof Of Testing Testing overall has been completed. Testing left to do: - [x] Cargo Orders ## Changelog 🆑 add: Added a bunch of alternative additional weapon and equipment upgrade options to security, allowing a little bit of difference in the late-game arsenal or general armament. add: Adds the WT-550-B and WT-550-C, upgrades to the classic autorifle. add: The WT550 can now also be sawn-off. add: Adds the Stingballer, a close range weapon that rapidly shoots stingballs. add: Adds the Stunstaff, an aura-farming alternative to the classic baton and shield. add: Adds the Advanced Energy SMG, an a modified AEG that gains rapid-fire capabilites. add: Adds the Security Juggernaut suit, an impossibly slow suit that hinders your movement but has some of the best armour you'll ever see. add: Adds the .38 battle rifle, a simplified NT-38 Battle Rifle. Lacks the combat improvements, but does not degrade. balance: The Horizon Beam Rifle's performance has been tweaked. Damage is now 110, with 35 armor penetration and a demolition mod of 2, as well as the ability to destroy walls like pulse rifles. add: The Kiboko and pneumatic grenade launcher can be bought from cargo now. del: The WT-551 has be completely removed and replaced with the WT-550 del: Any instances of Skyrat's ammunition naming system have been wiped. Please report any inconsistencies you may find. /🆑 --------- Co-authored-by: Cabbage <supredoode@gmail.com> Co-authored-by: Mathilde <146444134+ibexgoetia@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
bf98195fda |
Ghosts can see more info on health scan (#96792)
## About The Pull Request I have no idea how to word this so here's a list instead. 1. Fixes #96445 by making it so that instead of healthscan code coming up with cure text on the spot for viruses, advanced diseases have a function that can generate cure text so you can use it in things other than healthscanning. 2. Rewords a single letter var in medical kiosk code 3. As a result of 1, the code for disease state analyzers healthscanning has been shortened because the cure text generating function only has to be written once and not twice. 4. Health scans now have a power level instead of just being advanced or basic. There is a new power level called super, and it's only available to ghosts. Super scans can see all virus symptoms instead of just 3, and the current stage of an alien embryo. 5. For some reason a bunch of healthscan code (like stuff from the eye of god and health scanner mod module) were using 1 instead of SCANMODE_VERBOSE (a define that equals 1 but is more readable) for the scanmode. That's no longer the case. 6. A new health scanner, the super health scanner, that replaces the advanced one in the box of debug tools. <img width="620" height="223" alt="image" src="https://github.com/user-attachments/assets/a0c5e56e-cf19-4db2-a2df-b72456123c50" /> <img width="73" height="65" alt="image" src="https://github.com/user-attachments/assets/27f8c81b-4f89-455b-82fa-a0ecf94656cf" /> ## Why It's Good For The Game Ghosts should be able to see everything, I think ## Changelog 🆑 qol: Ghosts can see alien embryo stage and all virus symptoms when health scanning code: Health scanners now support multiple scan levels fix: Fixes medical kiosks not being able to identify advanced disease cures. /🆑 --------- Co-authored-by: Fghj240 <fakeemail@notrealemail.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
ee6818f4df |
Replaces Immunosilence with sepsisillin, nerfs aggressive healing. (#96972)
## About The Pull Request Attempts to balance aggressive healing by slightly cutting back on its incredible constant healing (which is still doable because I don't have the heart to kill virology uses) and removes immunosilence because we already have a chem that does that. Sepsisillin pills are mapped into virology to take its place. ## Why It's Good For The Game With immunodeficiency, an aggressive healing virus with high severity becomes incredibly powerful. The combination of chills and fever to buff severity while they cancel each other out along with a second symptom like nocturnal regen (because you have the stats for it) makes aggressive healing too powerful in the right situation but too weak for everyone else. Aggressive healing was given high stats under the assumption that they were necessary to resist natural recovery in hosts that aren't immunodeficient. That was probably a mistake since it also makes it a buffer symptom stronger than any other, so its stats are heavily tuned down. Immunosilence was removed (because it's just sepsisillin) and sepsisillin pills were mapped into virology in order to let people without immunodeficiency be able to better benefit from aggressive healing. Immunosilence was rather ineffective at its job because it still let viruses regress to their first stage, which disables your healing. Sepsisillin can also be used for testing viruses on monkeys. Pills were added to virology because sepsisillin is a pain to make and you can also use it to test on monkeys. The whole bottle should last one person 23 minutes and 20 seconds. Also I removed the no_self_cure trait that is now unused (it was given by immunosilence) and changed the description of the aggressive healing severity threshold to clarify that it starts scaling with any amount of positive severity, not just after the first point. ## Changelog 🆑 del: Removed ImmunoSilence and its trait balance: Aggressive healing has much lower stats fix: fixed a few things map: Added sepsisillin pills to virology spellcheck: Clarified the description of aggressive healing /🆑 --------- Co-authored-by: Fghj240 <fakeemail@notrealemail.com> |
||
|
|
01534749dd |
Modular computers (PDAs) now shutdown when out of power (#96932)
## About The Pull Request This PR refactors modular computers (PDAs) so that they actually respect their power cells and shut down when they hit 0% charge. Previously, PDA power mechanics were essentially non-functional. While the flashlight would drain more power, it would never actually turn off when the battery died. Additionally, there was broken code intended to make the messenger program immune to power requirements. That immunity code was so buggy that it made all the power mechanics get ignored. To fix this, I gutted the broken immunity code. The marginal power draw of the messenger program is so tiny that it doesn't need exceptions. Now, when a modular computer runs out of power, everything, including the flashlight, shuts off completely. ## Why It's Good For The Game Right now, the power mechanics for modular computers are effectively LARP that does nothing. Players now have a tangible reason to conserve power and seek out upgraded power cells if they plan on heavily utilizing their PDA's features. It's balanced so that you'd have to be quite careless with the flashlight to completely drain a standard battery. It adds consequence without being overly punishing to the average crewmember. ## Changelog 🆑 balance: Modular computers (PDAs) now shutdown when out of power fix: PDA flashlights now turn off when out of power sound: Added a terminal off switch sound to PDAs when power runs out /🆑 |
||
|
|
97cb4ae3b5 |
Maybe improves radio tts somewhat (hypothetically halves the cost but who really knows) (#96799)
## About The Pull Request Right now for radio TTS we get hearers twice. https://github.com/tgstation/tgstation/blob/62eb74613a141f197cca1f274431b734bd064034/code/game/machinery/telecomms/broadcasting.dm#L165-L170 This is not ideal as it's quite an expensive part of radio handling <img width="765" height="141" alt="image" src="https://github.com/user-attachments/assets/8245183b-c810-46bf-b466-9879c33e766c" /> My thought is we can remove one of the calls by only calling one or the other - If TTS is enabled, call `get_hearers_in_radio_ranges_track_radios` and combine the list of hearers from *that* list - If TTS is disabled, just use `get_hearers_in_radio_ranges` ```dm // Flat list of mobs who can hear the message var/list/receive // Assoc list of weakref to a radio to list of weakrefs to mobs who can hear the message var/list/receive_radios if(tts_radio_id) // only do this if we have a TTS identifier to save on perf var/list/recieved_radios_raw = get_hearers_in_radio_ranges_track_radios(radios, frequency) receive = list() receive_radios = list() for(var/radio, radio_hearers in recieved_radios_raw) receive |= radio_hearers var/datum/weakref/radio_ref = WEAKREF(radio) for(var/mob/possible_hearer as anything in radio_hearers) if(!isnull(possible_hearer.client) && can_hear_radio_tts(possible_hearer, frequency)) receive_radios[radio_ref] ||= list() receive_radios[radio_ref] += WEAKREF(possible_hearer) else receive = get_hearers_in_radio_ranges(radios) ``` I also went through and cleaned up TTS handling a bit to make it easier to parse, mostly completing my reviews from https://github.com/tgstation/tgstation/pull/95369 No I did not test it ## Changelog 🆑 Melbert code: Cleaned up radio TTS handling a bit, maybe it'll perform better, report anything weird /🆑 |
||
|
|
966e8aa3ba |
Medical doctors and CMOs can get virologist bounties (#96971)
## About The Pull Request Virologist bounties are currently unobtainable, probably from when virologist was removed. This PR gives medical doctors and CMOs a 25% chance to get a virologist bounty instead of a regular bounty. ## Why It's Good For The Game Content ## Changelog 🆑 add: Medical doctors and CMOs can get old virologist bounties spellcheck: Changed "transmissible" to "transmission" in virologist bounties /🆑 --------- Co-authored-by: Fghj240 <fakeemail@notrealemail.com> |
||
|
|
0716e3fff4 |
Atmos refactor & speedup by utilizing BYOND 516 vector functions (#96448)
## About The Pull Request ### Summary This PR changes internal structure of `/datum/gas_mixture`: `gases[gas_id][MOLES]` refactored into `moles[gas_id]`, `gases[gas_id][ARCHIVE]` into `moles_archive[gas_id]` and `gases[gas_id][GAS_META]` into `gas_meta` static variable. This allows us to use BYOND 516 vector functions for calculating total moles and heat capacity. Also it simplifies some parts of the code, allowing us to get rid of macros `ADD_GAS` and `ASSERT_GAS`. According to the profiler `/turf/open/process_cell` time is reduced by ~20%. ### Details `gas_mixture.gases` was a nested 2d-list with MOLES, ARCHIVE and GAS_META for each gas_id. For example, to get gas moles you had to do `gases[gas_id][MOLES]`. I've changed this structure to be as follows: `moles[gas_id]` - moles for the gas, `moles_archive[gas_id]` - archived version of moles, `gas_meta[KEY][gas_id]` - static var with meta information for the gas. Since I removed key GAS_META from the gases, `gas_meta` was moved to the static variable and the order of keys in the array was changed from `gas_meta[gas_id][META_KEY]' to 'gas_meta[META_KEY][gas_id]`. This was done to allow using it in vector calculations (for example heat capacity or fusion power). Static variable access is very fast and it is considered as accessing a global in the bytecode. Byond 516 introduced new vector functions: `values_sum`, `values_dot` and others. These functions are very fast, but operate only on associative lists. This allows us to change the way we calculate total_moles and heat_capacity - very hot and heavily used functions. `total_moles()` became just `values_sum(moles)`, and `heat_capacity` is just a dot product: `values_dot(moles, gas_meta[META_GAS_SPECIFIC_HEAT])`. As a side bonus, since `moles` is just an associative list, you don't really need old macros `ADD_GAS` and `ASSERT_GAS` - all they did was to make a copy of a list[3] with default value [0, 0, gas_meta] for specific gas. Now when you're adding gas you can just use `moles[gas_id] += amount` and when you query amount of gas you can just query the key (for example `moles[/datum/gas/oxygen]`) if the key does not exist, it returns null and works as 0 for all arithmetic and logic operations. For example, old code would be `if (!air.gases[/datum/gas/oxygen] || air.gases[/datum/gas/oxygen][MOLES] < 1)` and now it is `if (moles[/datum/gas/oxygen] < 1)`. This simplifies some parts of the code and also speeds things up. For the performance comparison I used Tracy profiler. I've done many different tests, and they all show slightly different numbers, but overall speedup for `process_cell` is about 20%. (-20% to average time per call from ). My testing setup was as follows: Load Icebox, drop 30/60/90 radius bomb in the middle of the bridge, set code to blue, wait 10 minutes until the round ends. Also I fixed random seed in the master controller and in the planetary gas randomization so generated maps are the same between tests. Althought it's not very realistic, it generates a lot of samples for the `process_cell` (around ~3.5M per 10 minutes). Another test I did was a plasmafire in an 8x8 space, on runtime station, it showed (-24% time on process_cell). Another test was a emagged holodeck burn test, it showed (-13% time) As for other functions of gas_mixture: `total_moles`: -50%(2x speedup), `heat_capacity`: -65%(3x speedup), `share`: -30%, `react`: -20%. Timings of all those functions is in microseconds range and they are very hot (call count is in the same order as process_cell) <details><summary>Some pictures from profiler</summary> <img width="569" height="642" alt="process_cell" src="https://github.com/user-attachments/assets/76fa0c27-719d-485d-9bfc-859fef788999" /> <img width="572" height="315" alt="image" src="https://github.com/user-attachments/assets/f68497e9-4db8-4a9c-b43f-ad04e6dc5cac" /> <img width="569" height="317" alt="image" src="https://github.com/user-attachments/assets/d7249e7b-f344-47a6-8b39-1bab0521182d" /> <img width="541" height="316" alt="image" src="https://github.com/user-attachments/assets/1bef71fd-533d-40fa-a85e-7a803ad322f7" /> <img width="519" height="409" alt="image" src="https://github.com/user-attachments/assets/51165289-174e-403d-a09c-787dd9af136a" /> <img width="523" height="318" alt="image" src="https://github.com/user-attachments/assets/fe4b1db0-17d8-47f9-8fd0-e2ecef2ee66a" /> </details> <details><summary>Setting up a profiler</summary> If you wanna to reproduce my results here is a list of steps 1. download: https://github.com/goonstation/byond-tracy-writer (this one has offsets for my version 1677) 2. build the dll, drop in the tgstation/ folder 3. download rtracy https://github.com/Dimach/rtracy 4. download Tracy profiler (0.13.1) https://github.com/wolfpld/tracy 5. uncomment `#define USE_BYOND_TRACY` in `_compile_options.dm` 6. build tgstation 7. open dream daemon, run the desired test, after round end dream daemon closes 8. navigate to tgstation/data/profiler, find the `123412341234.utracy` file 9. run `rtracty 123412341234.utracy` 10. open tracy-profiler.exe, press Connect, save the profiler data 11. repeat steps 5-10 with another branch, save another profiler data 12. open tracy-profiler, open first data, press compare, open second data </details> ## Why It's Good For The Game ## Changelog 🆑 refactor: Atmos refactor & speedup by utilizing BYOND 516 vector functions /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
3cc7bd77a0 |
Removes the cargo teleporter's ability to delete the server + Cargo Teleporter QOL (#5942)
## About The Pull Request The cargo teleporter is ye olde Skyrat shitcode and it shows. Its core loop is this: ``` for(var/check_content in target_turf.contents) ... do_teleport(movable_content, moving_turf, asoundout = 'sound/effects/magic/Disable_Tech.ogg') ``` It will teleport every movable on the tile, in one tick, each with its own `do_teleport` call, its own spark effect, and its own sound. There is no cap. I found this out the hard way when I aimed it at a disposals pile of roughly 800 items and killed the server. There happened to be an explosive reagent in the pile, which... well, it did not help. I'm making this PR to attone for my sins of crashing the server at least two times. Kat Blu says: ZA WURDO! (You have been disconnected, or the server is restarting). No seriously this thing was a biblical apocalypse and I'm shocked shit like this hasn't happened more often. <img width="343" height="37" alt="image" src="https://github.com/user-attachments/assets/e387f8dd-05a8-491b-a066-1b86a31f13c9" /> https://cdn.discordapp.com/attachments/1063282949648302090/1526027678002446406/za_wurdo.mp4?ex=6a558786&is=6a543606&hm=73dc0f7acbab2ecea90964d5b577e5e6807e5939e711d4c709de2b8f10c29218& It is also iterating `target_turf.contents` while `do_teleport` mutates that exact list, so it silently skips some. That probably doesn't matter as much but I don't think it's a good way to go about it. Fixed by feeding objects through one at a time. First object goes instantly, every object after it is done behind a recursive short `do_after`. It keeps going until the tile is empty, you walk away, or you put the teleporter away. You have to stand there for a little bit, but it will no longer be "The inexplicable player facing server reboot device". This also keeps us from having to reduce its utility for moving large quantities of items. While I was in here I fixed the rest of the file and did the QoL it should have shipped with: - Reflavored the beacons, they are now called telebeacons, can be color-coded per department with alt-click, you can also pick a Custom option for anything else), and can be relabelled with a pen. I also upped the total number of beacons to four instead of three. - Color option only paints the *next* beacon you stake out, so you can mark up engineering in orange and security in red because I hated its old color. - The beam and the teleport effect take the color of whichever beacon you fired at, so you can see where your stuff is going, it's the little things. - Added a 2 pixel charge indicator light on the handle, green when ready, amber while recharging. It pings when it's back up. Examine even lets you see the countdown. - Objects being teleported have a wibbly wobbly effect thing. ## Why It's Good For The Game It is a tool that can crash the server by accident with relative ease. You do not need to be griefing. You just need to point it at a big pile of junk. That is the whole argument. Everything else is because if I'm rewriting the file anyway, it may as well come out the other side being a tool people actually want to use. Colour-coded, labelled beacons make it more user friendly. ## Proof Of Testing <img width="1912" height="993" alt="image" src="https://github.com/user-attachments/assets/75361265-bbf2-461a-9a08-4239f916f660" /> <img width="568" height="543" alt="image" src="https://github.com/user-attachments/assets/c92dfda9-72b3-4ff6-970b-fee66193d727" /> </details> ## Changelog 🆑 Aeri fix: The cargo teleporter is no longer capable of casually rebooting the server. qol: Nanotrasen has upgraded the station's cargo teleporter device to the latest model after several incidents of reality disruption. qol: Cargo telebeacons can be color-coded and relabeled with a pen. Four can be deployed at once, up from three. /🆑 --------- Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> |
||
|
|
0f324120c6 | Reorganize how wiremod designs are shown in the component printer UI (#96796) | ||
|
|
cb535cdfa6 |
Refactor var/can_be_held to an element (#96917)
## About The Pull Request We were doing a lot of mental gymnastics in a bunch of other places, so let's change this wonky var to a streamlined element that will rely on the same signals that a lot of stuff was already using/accounting for in its own signal handling pathways, instead of being a weird coverage gap. This patch should also make the whole "checking if someone is attempting to pick a mob up" thing make a lot more sense and use a unified proc instead of spot-checking whatever random things it wants to spot-check. ## Why It's Good For The Game I didn't know this was a thing until I looked at #96873 and it made me sad because literally everything else involving mob drag-and-drop is already signal-based except this weird stinker that relied on proc overrides. Never mind that now, let's use nice traits to avoid typecasting and elements to avoid duplicating code. It should also be much cleaner to add holdability to a mob isntead of having to do `can_be_held = FALSE` as a weird behavior (at least one instance had this non-necessarily). All this really is is just middleware on the extant /mob/living code but still making it in proper lockstep with the other signalling procs. I did port over raptor code faithfully but I'm not 100% sure if it was meant to be like this? Regardless, that's how it is. ## Changelog 🆑 refactor: Picking up mobs has been altered a bit, please report any bugs or glitches. /🆑 |
||
|
|
4a5104e4a0 |
Turns janitor borgs into walking crew operated vacuum cleaners. (#96724)
## About The Pull Request Allows people to detach a cleaner and vacuum (uses the trash bag) from janitor borgs. This option uses zero water management and doesn't create slip tiles. The module can be locked with alt click. <img width="342" height="681" alt="image" src="https://github.com/user-attachments/assets/0fe53f8b-d850-4354-aa70-382ca40dcd37" /> <img width="590" height="581" alt="image" src="https://github.com/user-attachments/assets/70fea653-ad20-479a-8986-fed0e15af4b1" /> https://github.com/user-attachments/assets/ff81a214-1bfb-4a33-a660-ccb563e310af Sounds are from soundsnap and properly licenced. https://soundsnap.zendesk.com/hc/en-us/articles/115003916431-Legal ## Why It's Good For The Game I think co-op mechanics are fun. If you manage to get a friend, this is an option with zero water management. I feel like janitor borgs don't really have much the way to cooperate with their base mechanics. You can walk into a department and clean it wordlessly. This gives the option where you can clean with your friend (or the crime scene you're trying to scrub) ## Changelog 🆑 StrangeWeirdKitten, Toriate (sprites) add: Janitor borgs now have a crew operated end that allows their squishy overlords to do some cleaning themselves. /🆑 |
||
|
|
04ce8e1e07 |
Turns janitor borgs into walking crew operated vacuum cleaners. (#96724)
## About The Pull Request Allows people to detach a cleaner and vacuum (uses the trash bag) from janitor borgs. This option uses zero water management and doesn't create slip tiles. The module can be locked with alt click. <img width="342" height="681" alt="image" src="https://github.com/user-attachments/assets/0fe53f8b-d850-4354-aa70-382ca40dcd37" /> <img width="590" height="581" alt="image" src="https://github.com/user-attachments/assets/70fea653-ad20-479a-8986-fed0e15af4b1" /> https://github.com/user-attachments/assets/ff81a214-1bfb-4a33-a660-ccb563e310af Sounds are from soundsnap and properly licenced. https://soundsnap.zendesk.com/hc/en-us/articles/115003916431-Legal ## Why It's Good For The Game I think co-op mechanics are fun. If you manage to get a friend, this is an option with zero water management. I feel like janitor borgs don't really have much the way to cooperate with their base mechanics. You can walk into a department and clean it wordlessly. This gives the option where you can clean with your friend (or the crime scene you're trying to scrub) ## Changelog 🆑 StrangeWeirdKitten, Toriate (sprites) add: Janitor borgs now have a crew operated end that allows their squishy overlords to do some cleaning themselves. /🆑 |
||
|
|
4962a86b95 |
CSL / Mutual understanding changes (#96774)
## About The Pull Request 1. Redid the formula for calculating mutual language understanding Old: `base + (10 * (1 - (min(commonness, 1250) / 500)))`, or in other words `base + 10% to -15%` New: `base + max(20 - (commonness / 1000) * 20, -5)`, or in other words `base + 20% to -5%` 2. CSL strength preference has been changed Old: `"90%", "75%", "50%", "33%", "25%", "10%"` New: `"75%", "50%", "25%"` 3. If you understand a language partially, the icon in chat is differentiated slightly <img width="414" height="30" alt="image" src="https://github.com/user-attachments/assets/16af293a-698e-4ab8-9638-580920a38543" /> (Icon subject to change, it's just a `?` spliced with the icon rn) 4. CSL can now be taken by humans, doing so grants you gal-uncommon 5. Fixed a bug where contractions, due to being encoded, would be treated as lower frequency / rarer and thus be more likely to be translated ## Why It's Good For The Game 1. The current formula was a bit too harsh and resulted in more words being translated than you'd expect. The altered formula should make it less persistent. 2. These values were tweaked according to the new formula. If I left the 90% value it'd mean like every word would get translated and that defeats the point. 3. Makes things a bit clearer when it comes to partial understanding. 4. Requested, sounds like fun so why not. 5. Bugfix. ## Changelog 🆑 Melbert fix: Fixed a bug where contractions were treated as rarer words than they should be for the sake of partial language understanding balance: Tweaked the formula of partial language understanding: Less common words are penalized less, more common words are rewarded more. In other words more words will be understood on average. balance: Common Second Language numbers were tweaked according to the new formula. Now "75%", "50%", "25%". balance: Humans can now take Common Second Language. Doing so also grants Galactic Uncommon. add: Partially understood sentences now get an altered language icon in chat and runechat, indicating that only some of the words were translated. /🆑 |
||
|
|
25edacac7c |
Stops bioscrambler from selecting stumps oh fuck (#96907)
## About The Pull Request Bioscrambler could select stumps as replacements, that's not good so let's fix that ## Changelog 🆑 Melbert fix: Bioscrambler can no longer decapitate you (or remove any of your limbs for that matter) /🆑 |
||
|
|
2cf56ab1e1 |
Allows gorillas to kill themselves with items (#96736)
## About The Pull Request This PR moves most of the code for using an item to commit suicide from `human` to `living`, so that anything with hands can use what it is holding to commit suicide. This was surprisingly painless, as most `suicide_act` procs were already written without the assumption that the person killing themselves was a human even though they couldn't be anything else. This might occasionally mean that in some cases (like drones) it may reference anatomy that they don't have (like necks) but I think that's not a big deal and don't worry about it. ## Why It's Good For The Game It's funny. ## Changelog 🆑 balance: Anything with hands can now use the things it is holding to commit suicide /🆑 |
||
|
|
13266d8c55 |
Job sorting using department order for Jobs (#96835)
## About The Pull Request Reworks the code for job sorting so that job order is ADDED onto department order, to create a sorted list that properly mimmics how its acctually displayed in game (which is the only way its used anyway) This means we can shift all the display orders to be inner-department, meaning we can cut down the size of indecies you have to shift to update a job(if any) Also adds a unit test to ensure jobs and departments dont overlap orders to prevent any odd sorting behavoirs ## Why It's Good For The Game Prevents having to shift a ton of entires every time a job is sorted or removed. Creates a more sensible ordering so we dont have stuff like assistant being 1, prisoner being 40, despite the fact that they are displayed grouped. The only playing facing change is the command roles now get sorted how there departments appear in the order. <img width="1012" height="658" alt="image" src="https://github.com/user-attachments/assets/e641cdd1-a9b8-4f32-be19-f133b8c987dd" /> Old order for reference (putting the hos higher up makes alot of sense here tbh) <img width="268" height="200" alt="image" src="https://github.com/user-attachments/assets/42737704-8527-4dee-bac2-a09279d3b64e" /> ## Changelog 🆑 refactor: Job sorting is based on department /🆑 |
||
|
|
776e4d7009 |
Saves the AI's previous cam when tracking (#96846)
## About The Pull Request The AI currently saves `cam_prev` whenever you jump to a cam with a hotkey, so you can press 0 to instantly jump back to where you were looking before. This PR also sets `cam_prev` when tracking a mob. ## Why It's Good For The Game Huge QOL for the role. Whenever a human asks you to open a door, you can click their name, open their stupid door, press 0 and be right back looking at what you were before. ## Changelog 🆑 PapaMichael qol: AIs save their "previous camera" (accessed by pressing the '0' key) when tracking a mob. /🆑 |
||
|
|
a6500ba33e |
Fix BSRPED potentially bricking reagent containers (#96870)
## About The Pull Request Fixes #96867 Reverts part of #88909 The PR removed the signal in favor of flipping off reagent flags on insert, and restoring flags on removal This caused the linked issue: We didn't check if the thing we were restoring was a cell, so we'd just flip off a bunch of flags, leaving the cell's reagent container with `NONE` flags set However in fixing this, I noticed a pretty core issue with the idea of flipping off flags, and that's "well what happens if something else messes with the reagent container's flags"? Sure enough, if you lid and unlid a beaker in an RPED, you completely bypass the exploit check and can bomb like days of old So I reverted the flipping of flags back to a signal. It was the easiest way to handle the "flags" conflict without adding a bunch of traits or whatever. ## Changelog 🆑 Melbert fix: Fix the BSRPED potentially bricking reagent containers on removal fix: Fix a potential exploit with BSRPED and reagent containers /🆑 |
||
|
|
6eb2d1674a |
Implementing materials checks for techweb designs. (#96257)
## About The Pull Request In similar fashion to what was done with crafting recipes last year, this year it's time for techweb designs and printed items to be audited. This is mostly just about consistency, we've a lot of items that can be printed by protolathes, autolathes, circuit printers and techfab etc. However they almost all (except most stacks, mainly) have custom materials that do not match in one way or another with the materials used by the design, which is what this PR is for. "But items printed from lathes etc. already get the mats used to make them." Yes, they do, however that isn't the case for items of the same type that were spawned in some other way (cargo shuttle, space/maints loot, mapped, admins), this create a subtle discrepancy. It isn't a huge deal (in spite of the size of this PR, ton of designs), but given that I have done something similar with crafting recipes before, I may as well give it a second arc of some sort and bring things to completion. And fix a few possible oversights. TL;DR consistency and stuff ## Why It's Good For The Game Consistency, unit test checks to make it harder not to be consistent in the future. Still has a few TODOs like: - [x] Fixed newly printed, fully charged RCDs costing less than the RCD cartridges required to fully charge one. EDIT: I had to tweak the newly added RDD as well because it suffered from the same fundamental issue. - [x] Fixed plates being made of iron and yet shattering like ceramic ones. A new subtype for metallic ones has been made. ## Changelog 🆑 refactor: Refactored a few things with techweb designs (the ones for autolathes, protolathes, circuit printers, mechfabs etc.) to make sure that the materials of items that can be made from these designs more closely match the materials used to make them. fix: Lizard fries no longer need a plate to be made, like all other treats that used to require plates in a distant past. balance: Tweaked the materials cost of RCD, RDD and RCD cartridges. image: Oven trays now have a more metallic hue. balance: Plates printed printed from lathes won't shatter like ceramic ones, in virtue of them being made out of iron instead. /🆑 |
||
|
|
ff8b3e2b41 |
Lizard Gas Rework, Fixes & More (#5802)
## About The Pull Request A big update that reworks the Lizard's Gas Station, that fixes existing issues and makes the role overall more interesting. A third spawner is added, which is the Manager, who will be held to a higher standard, and is expected to be in charge of interactions between Lizard's Gas and other factions, along with controlling the budget. The manager spawns in with slightly more equipment that better allow them to protect themselves, their workers, and the station itself from danger. (A unique outfit for them is also planned, but it is still a WIP) Lizard's Gas will now have their own unique budget, which is mostly for fluff, but is also intended to be used for tracking the profits, paying the workers, and for making orders through trade - as an express console (like Tarkon or Persistence) would be counterproductive as the ghost role is intended to interact with others. Entirely new map layout, highly inspired by European service stations. This reworked layout has the following features: - A bigger shopfront, with shutters and direct connection to the employee only areas. - Store area itself made bigger, with a greater variety of goods on sale, along with a pair of flatpacked quantum pads. - The removal of the old shed outside of the gas station itself, which held the majority of equipment. - A garage, being the new dedicated workspace. Now holds most of the equipment that was in the shed. - A utility closet, containing the rest of the equipment, along with a big air tank and an SMES that actually works. - A CCTV system for the gas station, so you can view both what is outside and inside from relative safety. - A proper break room, for the employees, with privacy and access to the CCTV. - A nice fancy office, for the manager, with privacy and additional ways to contact other factions (holopad and fax machine), and of course access to the CCTV. - Air conditioning, could you imagine having to work on lavaland or an icemoon without it? Three new biogenerator machines that are (currently) entirely unique to Lizard's Gas, these combine some of the functionalities of other already existing biogens, while adding much more to them to create additional incentives to both play the roles and interact with them. These could potentially be added to other ghost roles in the future, as they are intended to cover for the lack of access to certain machinery or just general lack of space or extra hands to achieve the desired outcome. The medical biogenerator specifically is also meant to cover for negative quirks that normally would result in a quick death due to the lack of access to the quirk specific medicines, or to simply treat most common injuries on lavaland - making the role accessible to way more player characters. Also currently _planned_: - New power generators, fueled by wood and biomass. - New outfit for the manager. - Fixing the prefab shutters, as their animation is broken and their sprite could use more work and additional frames. ## Why It's Good For The Game The intention is to give the gas station the means to easily be self-sufficient, along with the right tools to connect themselves to a trading partner of their choosing without being intrusive - a cargo teleporter and a pair of quantum pads. This will allow Lizard's Gas to establish a direct link with others, allowing there to be much more interactions between it and their partner of choosing with much more ease, but still requiring the other side to assist by setting up their own cargo teleporter and deploying the quantum pad on their end. Also, being a neutral faction in a (literal) hotspot, they could act as an interesting hub for interactions between other factions or themselves. Here's a much more detailed breakdown of the issues being solved: - Spawn reliance - A bad spawn entirely dictates who you can and will be able to interact with, for a ghost role which is guaranteed to spawn, the spawn location shouldn't play this much of a factor. As such, Lizard's Gas now is provided a pair of flatpacked quantum pads and a cargo teleporter to be able to cooperate with any other entity to establish a quantum pad link (Communication being done by fax or PDA). Using the Cargo Teleporter allows the Quantum Pads to be set up without needing someone to actually manually to the Gas Station. - Quirks - Certain quirks that rely on medicines completely screw you, as getting more will require a full chemical setup, such as Phobia, Brain Degeneration, or the worst offender: Asthma. This is solved by the medical biogen added to Lizard Gas. - Husked = Roundremoved - If you somehow managed to get husked, or suffer a serious infection, you are pretty much dead dead. With your only real options is being taken to the station, or praying the Persistence players somehow stumble upon your dead body. To solve that issue without giving Lizard Gas a full chem setup, they instead can just make synthflesh patches with one of the biogens. - Bad Piping & Cables - The original map had serious issues with the piping, such as certain devices not being connected, being useless, or just going through walls when it is unnecessary, the worst offender was the oxygen recycler which is meant to suck in oxygen from lavaland not even working. Cables wise, the SMES was only able to draw power, and not output any of it. - No Theft Prevention - Coming across Lizard Gas previously without knowing about it could easily result in people accidentally stealing from the Ghost Role, as most of their supplies were completely out in the open and protected by two notes left on the floor. All of those supplies are now moved inside. - No Unique Access - Anyone could wander into the Gas Station if it was unbolted, and then enter the back areas and snatch whatever they wanted, which is even more of an issue when they are now provided with three unique machines that are fairly powerful. Giving the doors special access only provided to the Gas Station workers fixes that before it is even an issue. Along with fixing the aforementioned issues, there are quite a few additions that are meant to provide the following benefits: - Interaction Incentives - Now that it is more accessible, Lizard Gas required a bit more of a unique 'stock' to provide to people visiting it, and since none of them operate any plasma-fueled vehicles, the next best thing is selling them items for convenience, at a store, a convenience store if you will. With the three new machines, Lizard Gas will have access to a lot of products they can mass produce on the spot using only biomass. They can make you a burger on the spot! Sure, it tastes very synthetic and not that high quality, but it is produced on the spot. Most of the other products are already available in Company Imports, but this will be an option to trade for it for cheaper, player interaction is a good thing! - Neutral Hub - Being able to link themselves up other locations using a Cargo Teleporter and a pair of Quantum Pads allows the Lizard Gas workers to link up with the Station, Tarkon, and the Persistence - as long as there is someone else on the other end with a Cargo Teleporter as well. This allows all three groups a Neutral ground to be in, hopefully allowing for more interactions between players without having to worry about antags, while also being able to return to their workplace quickly and with ease. - Third Spawn - Adding a Manager, which fits thematically, and is expected to be held to higher standards. Now Lizard's Gas is a three slot Ghost Role! ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> Comparisons! **Old Lizard Gas:** <img width="799" height="799" alt="StrongDMM_VGH8uAiA9r" src="https://github.com/user-attachments/assets/1f72c14c-b070-4871-9058-bb7a540768c0" /> **New Lizard Gas (Icebox):** <img width="1356" height="1017" alt="dreamseeker_KLV97bjWii" src="https://github.com/user-attachments/assets/8b09df34-a64b-42a3-8af0-70de6b74fcd1" /> <img width="1356" height="1017" alt="dreamseeker_OAcImdnaPf" src="https://github.com/user-attachments/assets/86f6a343-3979-4ed6-a5eb-7e8db9ad4cc8" /> **New Lizard Gas (Lavaland):** <img width="1360" height="1017" alt="dreamseeker_N0k7u5zD8i" src="https://github.com/user-attachments/assets/3848a851-2213-44f2-bfac-eb2133f68526" /> <img width="1356" height="1017" alt="dreamseeker_dedS1dHqaB" src="https://github.com/user-attachments/assets/d928713e-8bef-40eb-acfc-dbb3ba8d5cfd" /> **The new machines & Contents:** <img width="275" height="138" alt="dreamseeker_NpTCSRoj6k" src="https://github.com/user-attachments/assets/06579bbe-11eb-4972-9fba-b5df4b30c51b" /> <img width="1189" height="973" alt="yLPMyfBjkU" src="https://github.com/user-attachments/assets/5174833f-bc91-43b6-a472-873e94c4e93b" /> <img width="1189" height="711" alt="lRgw4dVQux" src="https://github.com/user-attachments/assets/8d6cf74e-5e3e-4110-b6b5-ae1800a8f97b" /> <img width="1189" height="679" alt="7myy2173s3" src="https://github.com/user-attachments/assets/c949851c-f487-47a5-9bf5-4db6c2b62e7f" /> </details> ## Changelog 🆑 Moldb, Cerberushopeless, Dr.arielpro & Projectkepler-RU add: Added 3 new unique biomass based machinery intended for ghost roles only. They are functionally similar to cargo-orderable biogens (Organic Ration Printer, Organic Material Printer, Colonial Supply Core, Wall Med-Station) but are consolidated into much more specific roles, while also adding additional items to their lists. add: Added an additional spawner to Lizard's Gas, in the form of a manager role. add: Gave Lizard's Gas their own budget card, which can only be spent through trading with others. Their card is actually capable of withdrawals. image: New sprites used by the new biogens, taking direct inspiration from pre-existing machines to fit in nicely. map: Near complete rework of the Lizard Gas station, making it much more roomy and more akin to an European service station. /🆑 --------- Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> |
||
|
|
794e13ada5 | Allow more than one station lobby button to be shown at any time. (#96734) | ||
|
|
ff006aa4a5 |
verb macro system (pr 1/3) (#96720)
## About The Pull Request just macro-izes all the usages of verbs in the codebase as a pre-requisite to my follow up pr that serializes all the verbs arguments so we can tgui-ify the command bar, so we can then put it on the onscreen map. this also basically does the same as #94487 so can easily be integrated into the verb queueing stuff... but does not actually do any verb queueing by itself. basically im just trying to be https://github.com/tgstation/tgstation/labels/Atomic ## Why It's Good For The Game it doesn't really do anything by itself but it does let us do more stuff ## Changelog 🆑 code: the backend to all verbs in the game has been played with, please report any issues to github /🆑 --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> |
||
|
|
35ce72549b |
Skiff borgs from Troutstation (#5806)
## About The Pull Request Reference and species by Giik. <img width="1065" height="515" alt="1686261871 giik_08b93f0c-d2f3-45fd-b746-fccb955c3cad" src="https://github.com/user-attachments/assets/f2cdd051-6289-44d4-bb15-54e4e54a8a43" /> <img width="892" height="612" alt="pool_screenshot" src="https://github.com/user-attachments/assets/6fc32855-9f7c-40e5-8b1c-7dd7b291a041" /> I got permission to port the skiff sprites from Troutstaion. Original sprite credit: Giik <img width="1052" height="550" alt="image" src="https://github.com/user-attachments/assets/210072eb-3bdd-4b67-aa48-2ac34ddc8178" /> Cargo, Science, Standard, Syndie, Lustwish, Ninja, resting states and wrecked sprited by me. <img width="1126" height="732" alt="image" src="https://github.com/user-attachments/assets/796b9385-4f18-4fd5-adf7-73e294d100cd" /> ## Why It's Good For The Game Adds a new borg model to play as. ## Proof Of Testing <summary>Screenshots/Videos</summary> https://github.com/user-attachments/assets/70ef071e-bf75-4c50-820c-ae7797e02abc https://github.com/user-attachments/assets/0aeb6038-de1e-48a0-8946-7a316a079206 <img width="540" height="304" alt="skiffs1" src="https://github.com/user-attachments/assets/a54c726b-f742-42d6-8964-ebabec8c4491" /> <img width="540" height="271" alt="skiffs2" src="https://github.com/user-attachments/assets/0d93ae46-756b-4e63-9396-dcf6f3350827" /> <img width="540" height="271" alt="skiffs3" src="https://github.com/user-attachments/assets/ab4f60e7-5bfa-4135-a714-055bbafb24c8" /> <img width="540" height="305" alt="skiffs4" src="https://github.com/user-attachments/assets/0bd9d203-306f-4e3c-9842-e01c3d7059b0" /> <img width="540" height="305" alt="skiffs5" src="https://github.com/user-attachments/assets/5e2f207a-f046-4509-9bf0-934c20373285" /> <img width="540" height="271" alt="skiffs6" src="https://github.com/user-attachments/assets/0279f009-a7d5-4320-a6b5-f2453f084624" /> </details> ## Changelog 🆑 BitSynergy, Giik add: Ported Skiff cyborgs from Troutstation image: Added Skiff sprites image: Added extra resting states for Skiff image: Added wrecked state for Skiff image: Added new department sprites for Skiff /🆑 |
||
|
|
e9061e8b19 |
Blacksmith Revamp (#5360)
## About The Pull Request Makes a number of changes to blacksmithing to make the role more appealing, convenient, and special: <details> <summary>New Additions</summary> - [ ] Added a new blacksmith recipe that requires legendary skill and the skillchip: parts for a classical single-action revolver. High damage, but finnicky to use; no safety mechanism, can't accept speed loaders, and the hammer has to be cocked before each shot. Cocking the hammer is faster if both hands are free, allowing for fanning the hammer. - [ ] Smiths can now make new storage options: a cowboy holster that stores a handgun and multiple ammo boxes, a charging belt that recharges one energy gun, a botany bag with expanded storage, and multiple types of scabbards. - [ ] Added a new skillchip specific to blacksmithing; without the skillchip, your options on what you can produce via smithing are reduced. This is to make it so that the smithing job role (or at least, whoever has been given the skillchip from the QM's locker) is more special. Currently smithing is just sort of something anyone can do, the only things unique about spawning in as the blacksmith is that you have cargo access and smithing-specific bounties. - [ ] Replaced the water barrel with a new structure: the reagent quenching trough. This spawns in filled with a new reagent, quenching oil. Quenching a smithing item in the trough with any reagent will imbue it for zero reagent use, and heat the trough's reagent. </details> <details> <summary>General direction changes</summary> - [ ] Perfect hits are no longer probability-dependant; they're based on the player's timing. Except if the player is max level at blacksmithing, in which case all hits are perfects. - [ ] Right-clicking with a hammer on the anvil will allow the player to automatically forge the item they're working on, with a slower pace compared to manual forging. This is mostly meant to allow talking to someone while working on forges. - [ ] Removed multi-anvil smithing; blacksmithing lacks a dedicated space on most maps and so must occupy a hallway or something else instead. "Playing optimally" with multi-anvil smithing means taking up significantly more space, in addition to looking extremely silly and bypassing part of the loop with blacksmithing (levelling up the smithing skills to produce equipment faster); the smithing chip will reduce the swings needed to finish a job to compensate. - [ ] Reworked reagent imbued equipment; removed the bonus from leaving a weapon unimbued. This bonus can now be regained specifically by imbuing smithing oil (smithing oil is special; imbuing it doesn't inflict it as a reagent for effects, but makes the armor/weapon/etc. better by numbers). Also, reagent imbued equipment no longer has a big damage multiplier but will merely stop applying reagents after a certain integrity threshold is passed. - [ ] Significantly reduced the income from smithing cargo bounties. It honestly kind of sucks that blacksmiths' value to the station is that they print money and not for the actual quality of their items. - [ ] Blacksmiths now have weapon access by default. It's honestly kind of weird that the guy whose whole schtick is making weapons, didn't have weapon access to start. - [ ] Moved the crusader belt from the general crafting menu to the smithing crafting menu; it now requires lv7 smithing and the smithing chip. This change is because it's highly contingent on blacksmithing equipment for its main storage so it seems most sensible for a smith to work it. - [ ] The leather apron that blacksmiths roundstart with now has dedicated storage for various smithing and glassblowing tools. </details> <details> <summary>Interactivity changes</summary> - [ ] Trying to pick up a heated blacksmith item will now burn your hand. - [ ] Various quenched smithing items now have associated force values for dealing damage, but will also (usually) cut the user's hand for doing so. - [ ] You can now use water tiles or certain reagent containers (needs at least 300 units) to quench smithing equipment. - [ ] The forge now heats up it's surroundings and burns carbon dioxide while doing so. The wall-mounted heater now auto charges it's cell to compensate for this. - [ ] You can now weapon-bash your blacksmithing shields, similar to how you can slap your baton against your riot shields to intimidate. </details> <details> <summary>Convenience and misc.</summary> - [ ] Changed the Rapier sprites to match the other smithing weapon sprites. - [ ] Added more tutorial tooltips when inspecting blacksmith equipment. - [ ] The blacksmithing noises are quieter, thank god. - [ ] Using tongs on a stack now pulls only one item from the stack, instead of pulling all items in the stack. You never actually want to have more than one sheet in the tongs so there's no reason to include it really. - [ ] Completed blacksmith items can now be picked up with tongs and placed into the crafting bench with them. This is meant to reduce the tool-juggling for moving the item from the anvil to the basin, then moving the item from the basin to the bench. - [ ] The blacksmith ID trim now has an actual icon - [ ] Commented out the cortical borer cage recipe. We don't really need this since we don't run cortical borers. - [ ] Halved the number of necessary chains and plates for all recipes, but doubled the time needed to hammer them; this is to reduce how much item juggling is needed. - [ ] Cargo guards and cargo secoffs now have blacksmithing access. - [ ] Ensure that Ashwalkers, Primal Podpeople, and feral nekos have all the same mechanics as a skillchipped crewie, except cannot make the revolver </details> <details> <summary>Code refactoring</summary> - [ ] The reagent clothing and reagent weapon components now come from a general reagent imbued parent component. - [ ] Refactored how anvil smithing works; it now relies on an item component that handles item heat, hammer strikes, and quenching, instead of all the code being handled within the anvil itself. - [ ] Removed the skyrat_obj_flags variable that only functioned for the anvil_repair flag and nothing else. We have different ways to check for the stuff it relied on so it's not really needed. - [ ] Removed the in_use code from various forging objects. It's a really cumbersome system and annoying to manage all the time. Doafters with interaction_key stand as a replacement. </details> Overall, in the hands of blacksmiths, smithing-chipped characters, and the tribal factions, this should feel like a general buff. For everyone else, this should feel like a nerf, and they should go to the blacksmith or get skillchipped so they can make smithing stuff. It should also feel less 'shallow' and a bit more interactive with the rest of the game. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> <img width="180" height="108" alt="image" src="https://github.com/user-attachments/assets/fff5bf67-2f6b-42e6-b8a6-920b5ef8bf26" /> <img width="399" height="52" alt="image" src="https://github.com/user-attachments/assets/f7a1f395-d060-49ad-848f-52d0e4303177" /> https://youtu.be/hcPZXzCOSIU https://youtu.be/V7GeLetcRtk https://youtu.be/YEyW9pKidTU </details> ## Changelog 🆑 add: Way, way too many blacksmith job features & smithing system changes to list. But here's the highlights: balance: Forged blacksmith weapons can now be used nonlethally via striking with pommels, spear shafts, etc. which knocks down victims and stamina damages them like a weaker baton. qol: Blacksmith tongs now only pull one item at a time, if used on a stackable item. qol: Blacksmiths can now auto-smith at an anvil by right clicking with a hammer. qol: Blacksmithing tools now have more tooltips to tutorialize their usage. qol: Blacksmithing crafting bench can now store item stacks, forging plates, and forging chains. Right-click to view what's in it. balance: Removed multi-anvil smithing. Individual smithing pieces can now be made faster with the smithing chip and other means to compensate. add: Blacksmiths can now build a single action revolver if they are fully levelled. add: Blacksmiths can build a variety of new equipment at the crafting bench -- gun-charging holsters, knife belts, multiple types of scabbards, and even a new expanded-storage botany bag. add: Replaced the water barrel for smithing with a barrel of smithing oil; smithing oil is now used to grant the bonuses that was previously given by leaving the item unimbued. The new barrel can have its contents changed for reagent imbuing. add: A new reagent "smithing oil" which gives innate bonuses to any blacksmith equipment imbued using it. balance: Material types now affect the quality of resulting items and how quickly they can be forged. balance: The reagent smithing hammer now has increased toolspeed if forged well. balance: Reagent imbuing's durability penalty has been altered; it reduces durability for each time an imbue effect procs, and then stops functioning for such when below a certain durability percentage. /🆑 --------- Co-authored-by: Mathilde <146444134+ibexgoetia@users.noreply.github.com> Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> |
||
|
|
70eef1f46f |
Returns Space Z Level Count To 7 (#5864)
## About The Pull Request [The count was reduced all the way back in 2024 as a way to help server performance ](https://github.com/Bubberstation/Bubberstation/pull/2510) however I've been told it might be worth upping again. ## Why It's Good For The Game People yearn for the space age. Tiding gets boring and there's often not a lot in a given round, especially when you have stuff like Tarkon that take up half a large portion of a given z-level. ## Proof Of Testing The tests don't fail! Might need a test merge to judge the performance impact at scale if there's still concern. 🆑 Robwo code: Returned space Z-level count back to 7. /🆑 --------- Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
cad5a920a0 | Implements foodtypes being inherited to cooked and processed food items as well (#96551) | ||
|
|
6c30100e63 |
Adds a new cybernetic implant to the black market (#96744)
## About The Pull Request Adds a new cybernetic implant, the nutriment pump implant plus plus plus! Basically, it just makes you really fat. <img width="410" height="404" alt="Screenshot 2026-07-01 013026" src="https://github.com/user-attachments/assets/772c5cb6-d897-4a35-9492-3306ec43d526" /> It's a fairly common spawn on the black market. Also I fixed a small typo I found related to spies scanning drones. Nutrient pumps (in general) also have a new message instead of "you feel less hungry" if the person they are feeding isn't currently hungry, but that won't affect any other pump currently in the game. The black market pump has the unique ability to bump someone's overeat duration by 40 seconds each time it ticks, which means once you reach completely stuffed you'll become fat in around 10 seconds instead of 200. Oh also I added a define for the overeat limit since I kinda needed one to do the thing ## Why It's Good For The Game I think it's funny. ## Changelog 🆑 add: Added a new cybernetic implant to the black market, the nutrient implant pump plus plus plus spellcheck: fixed a single typo in logs /🆑 --------- Co-authored-by: Fghj240 <fakeemail@notrealemail.com> |
||
|
|
62ad8d3520 |
Allows arbitrary/custom/"unlimited" bodypart overlay layers (#96684)
## About The Pull Request `EXTERNAL_FRONT`, `EXTERNAL_ADJACENT`, and `EXTERNAL_BEHIND` are no longer bitflags Instead they are strings, that correspond to the sprite's icon state's postfix ie `wings_FRONT` / `wings_ADJ` Bodypart overlays now define their layers in terms of `postfix` to `rendering layer` For example wings are defined as: ```dm layers = list( EXTERNAL_FRONT = BODY_FRONT_LAYER, EXTERNAL_ADJACENT = BODY_ADJ_LAYER, EXTERNAL_BEHIND = BODY_BEHIND_LAYER, ) ``` Which translates to ```dm layers = list( "FRONT" = 2.5, "ADJ" = 22.9, "BEHIND" = 32.2, ) ``` ## Why It's Good For The Game What does this mean? One, you are no longer constricted to the three existing layers when adding a bodypart overlay. You can decide to put it on whatever layer you need... ```dm layers = list( "FRONT" = 2.4, // I specifically need this to render above other front overlays! ) ``` Two, you can easily add a new layer without needing to mess with core bodypart code at all ```dm layers = list( "FRONT_HIGHER" = 2.4, // I need a special layer "FRONT" = 2.3, ) ``` Three, you don't have to use the `EXTERNAL_FRONT` `EXTERNAL_ADJACENT` etc. at all if you don't want to. You can organize your layers however you want... ```dm layers = list( // I can make my icon states `wings_top` and `wings_bottom` instead of `wings_FRONT` and `wings_BEHIND` to make it easier to parse "top" = BODY_ADJ_LAYER, "bottom" = BODY_BEHIND_LAYER, ) ``` Ultimately, this makes it a ton easier to work with bodypart overlays, as you no longer need to learn what FRONT/ADJ/BEHIND means. You can just add your sprites and define your layers and you're done ## Changelog 🆑 Melbert refactor: Surprise, a follow up refactor to species part rendering, report any oddities with them (wings/snouts/tails/etc) /🆑 |