mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-12 08:36:00 +01:00
docker-container
1268 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
1c0751265c |
Merge branch 'upstream-6-2-2026'
# Conflicts: # _maps/shuttles/zubbers/emergency_millionaire.dmm |
||
|
|
d132c3c5af |
Headshots in Examine Box (#5767)
## About The Pull Request I've been a player on Roguetown for a while, and a small thing I noticed I missed a lot was the feature of displaying character headshots in the examine text. As such, i've ported this in a fairly straightforward way from Ratwood Keep. The headshot will grow bigger on mouseover and shrink again when the mouse moves away. Headshots will be always hidden for someone who has an unknown identity (masked and without standard ID). There is an option toggle to not view chat headshots, should you prefer to not see them. ## Why It's Good For The Game Improves immersion, making it much quicker to see someone's headshot in a situation instead of needing to examine them closer. ## Proof Of Testing <details> <summary>Screenshots/Videos</summary> <img width="565" height="400" alt="image" src="https://github.com/user-attachments/assets/1b1df66e-63ac-4e8d-be2d-36bcd3461724" /> <img width="593" height="393" alt="image" src="https://github.com/user-attachments/assets/abd355e7-969b-42af-8eff-ded9acc1d52a" /> <img width="660" height="137" alt="image" src="https://github.com/user-attachments/assets/5e890a80-f1a4-453a-8cbf-c96ea6ff0ace" /> <img width="613" height="293" alt="image" src="https://github.com/user-attachments/assets/6024f190-4a1c-4daf-a6b5-d1ba0705c65c" /> </details> ## Changelog 🆑 add: Headshots now display in examine chat box. A toggle is added to options to disable this if you so desire. /🆑 |
||
|
|
f601a6ddaf | Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026 | ||
|
|
8eed335b94 |
Refactors inventory UI to be completely datum and vis_contents-based (#95998)
## About The Pull Request Completely removes individual inventory UI handling from mob and HUD code and moves it to slot datums. ``/datum/inventory_slot`` now is responsible for displaying items on the player UI and does so through vis_contests as opposed to screen_loc - which ensures that wide items will display properly rather than be offset to the right. Centralized, slot_id based handling allows us to significantly simplify inventory and HUD code (see how many lines were removed) as you no longer need to individually track all items for both the HUD owner and the observer, and makes it easier for us to fully datumize inventory handling in the future. Also fixes a bug where observers would see players' storage UI and have the items linger on-screen after its closed. ## Why It's Good For The Game Makes working with inventories and HUDs easier, fixes visual issues with wide items, I need this for human rendering refactors. ## Changelog 🆑 refactor: Refactors inventory UI to be completely datum and vis_contents-based fix: Observers should no longer see doubled up inventory UIs /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
751bfc08bb |
Removes the IC tab (#95893)
## About The Pull Request Removes the IC tab in its entirety - Some mobs (Blob Minion & Lightgeist) had manually removed the "pull" verb, this replaces it with taking away their pull force. - Lightgeist had their "Me" verb manually removed, this is replaced by giving them Emotemute trait (the same that mime's bane gives) - Floor Changer: You can now RMB the arrow buttons to look in a direction w/o moving. Added a tip to help with this. - Exit Hivemind: Already an action button and was removed without further edits ### Removed entirely Rest Resist Look Up/Down Move Upwards/Down Activate Held Object Open Language Menu Memories View Skills ### Moved to command bar (secret verb ooh) because I am biased Sleep Navigate ### Martial Arts Martial Arts had a button to see your current skills & the ability to cycle between artstyles. This was replaced with 1 action button that does both of these. <img width="317" height="148" alt="image" src="https://github.com/user-attachments/assets/afed910f-b6b6-441d-86cb-dade0e253044" /> Name auto-updates as you swap artstyle to whatever help verb the current style uses. Mention of RMB in the name is only there if you have more than 1 martial art, but the desc will remain just so players can see it even if they only have one, for future reference. ## Why It's Good For The Game Brings greater visibility to Martial Art stuff, and especially since the stat panel is being made optional we should not be hiding ANYTHING in there. This also helps me with my project listed in https://hackmd.io/443_dE5lRWeEAp9bjGcKYw?view And also fixes some sorta-removed features due to removing verbs not matching people's actual powers due to new features like "Custom Me" and "Ctrl Clicking". ## Changelog 🆑 SirNightKnight (sprites), JohnFulpWillard del: Deleted the "IC" tab of the stat panel. fix: Lightgeists can't emote or pull as intended. fix: Blob minions can't pull again. qol: Martial Art users now have an action button for their artstyle-related businesses, rather than it being in the stat panel. qol: You can now right-click the move up/down UI buttons to look in the direction without moving. /🆑 |
||
|
|
21b4095dfd |
[MDB IGNORE] [IDB IGNORE] Upstream Sync - 04/17/2026 (#5453)
Upstream 04/17/2026 fixes https://github.com/Bubberstation/Bubberstation/issues/5549 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Rhials <28870487+Rhials@users.noreply.github.com> Co-authored-by: rageguy505 <54517726+rageguy505@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com> Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: Maxipat <108554989+Maxipat112@users.noreply.github.com> Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> Co-authored-by: SimplyLogan <47579821+loganuk@users.noreply.github.com> Co-authored-by: loganuk <fakeemail123@aol.com> Co-authored-by: Leland Kemble <70413276+lelandkemble@users.noreply.github.com> Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com> Co-authored-by: Lucy <lucy@absolucy.moe> Co-authored-by: siliconOpossum <138069572+siliconOpossum@users.noreply.github.com> Co-authored-by: Isratosh <Isratosh@hotmail.com> Co-authored-by: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com> Co-authored-by: Neocloudy <88008002+Neocloudy@users.noreply.github.com> Co-authored-by: Alexander V. <volas@ya.ru> Co-authored-by: ElGitificador <168473461+ElGitificador@users.noreply.github.com> Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Tim <timothymtorres@gmail.com> Co-authored-by: Iamgoofball <iamgoofball@gmail.com> Co-authored-by: Layzu666 <121319428+Layzu666@users.noreply.github.com> Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> Co-authored-by: mrmanlikesbt <99309552+mrmanlikesbt@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: John F. Kennedy <54908920+MacaroniCritter@users.noreply.github.com> Co-authored-by: Cursor <102828457+theselfish@users.noreply.github.com> Co-authored-by: Josh <josh.adam.powell@gmail.com> Co-authored-by: Josh Powell <josh.powell@softwire.com> Co-authored-by: Yobrocharlie <Charliemiller5617@gmail.com> Co-authored-by: Hardly3D <66234359+Hardly3D@users.noreply.github.com> Co-authored-by: shayoki <96078776+shayoki@users.noreply.github.com> Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
3103f9c413 |
Adds a Tactical IFF Visor and slightly refactors eye rendering (#95547)
## About The Pull Request A new cybernetic eye implant, the tactical IFF visor, has been added to the game, available in the combat implants research node. Its main features are a cool LED display, dynamic color correction to make distinguishing important objects easier, and inbuilt IFF systems capable of distinguishing and highlighting allies and potential threats. They also give flash/welding protection and mild night-vision capabilities. However, this comes at a downside of making the user completely unable to distinguish appearances or voices, or even examine others. Everyone will simply show up as Unknown and be completely covered in static, bar the threat assessment outline. Examining will only display their threat status according to threat settings in the visor. The parameters for threat assessment (both ID access and security flag-based), as well as the visor display, can be configured by the user at any time. When emagged, the visor will instead completely hide and mute all mobs except the user themselves, leaving them completely "alone" on the station. Deathsquads get an unmodifiable version, configured to treat anyone but CentCom personnel as hostiles. Settings can also be adjusted before installation with a multitool, and locked using a screwdriver, preventing users from accessing them when installed. --- Eye rendering has been slightly refactored in order to support the monovisor, as well as to get rid of duplicate code (and missing features) on dismembered heads. Also moth eyes once again should block emissives properly. ## Why It's Good For The Game New content for both gameplay and roleplay, and fits deathsquad's purpose very well. |
||
|
|
76c88edea9 |
Removes Object & Server tab (#95292)
## About The Pull Request Removes Object tab, which didn't work as it required a whole reload of your verbs to update to what verbs would show up in it (which is very hard to actually trigger as a player), but leaves the verbs that had them show in the dropdown menu. Removes the Point-To and Examine verbs from the Stat panel, now it's commandbar only. Originally only did Point-To, but because the stat panel sorts itself by the category of the item, then the order of the name, I had to remove Examine's category so it would remain sorted the same. bruuuuuh <img width="1259" height="985" alt="image" src="https://github.com/user-attachments/assets/ea89db24-fafd-41d6-939e-4dbc7bbf3828" /> <img width="309" height="244" alt="image" src="https://github.com/user-attachments/assets/3b8d9c52-056b-44ce-8ee8-051439a2fa51" /> Removes Server tab for players (not Admins) by moving Show Map Vote Tallies to the OOC tab, as that was the only verb there. Activate Held Object has been moved to IC since it's a roundstart verb, I thought I should leave it be (do we have numbers on how many people use these? Why would someone use the verb over clicking on the item in-game or Z? Should I remove this too?). Admin's Object Possession verbs are now in Admin Fun instead of Object. Player stat panel <img width="299" height="194" alt="image" src="https://github.com/user-attachments/assets/8a3c9ad0-514a-44c5-b023-f71e57de4758" /> Admin stat panel <img width="581" height="224" alt="image" src="https://github.com/user-attachments/assets/7232485f-af41-469e-abfd-fce066816eec" /> <img width="624" height="297" alt="image" src="https://github.com/user-attachments/assets/6eb540be-4912-44f6-be36-5fe3a74b7f19" /> ## Why It's Good For The Game We have 2 tabs that exists for a total of 3 procs, 2 of them fit elsewhere and the last one doesn't work at all. Most verbs here don't show up in the stat panel at all for the vast majority of players due to the stat panel not actually loading them in when it's available, which to me shows that it's a feature that isn't really cared about anyways. It also helps newer players because there's less tabs to navigate and less verbs to sift through, we have a ton of verbs that basically don't need to exist and they only exist to make looking for the important verbs a larger hassle. ## Changelog 🆑 del: Deleted Object tab, and Server tab for players. Activate Held Object verb is now in the IC tab. Examine and Point To was removed from the stat panel. admin: Object possession verbs have been moved to Admin Fun. /🆑 |
||
|
|
16aef3a2fd |
Completely refactors HUD element management and datumizes inventory HUDs (#95119)
## About The Pull Request This is a port/revival of Kapu's https://github.com/DaedalusDock/daedalusdock/pull/883 By god, please TM this for a while, as HUDs are rather volatile and I might've missed something (also the original PR had harddel issues, so we should probably be on the lookout for those) Instead of being stored in a metric ton of separate variables, all HUD elements are now kept in a ``key -> element`` assoc list, and separate category lists have been turned into a single ``group_key -> list of elements`` assoc list for easier management. This massively simplifies HUD creation and management, and allows us to sanely dynamically modify HUDs without having to keep track of our elements ourselves (harddel fuel) I've also noticed that plasma vessels had... interesting, to say the least, way of managing their HUD and in humans were unable to display it, which I've changed (the element itself is displayed below stamina in non-aliens, as latter occupies the spot where you'd normally see it) Also fixes a bunch of minor unlikely to occur issues with HUD not updating when it should've sometimes. ## Why It's Good For The Game The two most important results of this is that A) we can fix the issue with items larger than 32x32 not displaying properly in inventories (in a separate PR) and B) this paves the way for datumized inventory slots, although that is a separate nightmare Some of this code is also actually over a decade old, and is an absolute nightmare to work with. ## Changelog 🆑 qol: Non-aliens with an implanted plasma vessel now see their plasma level in their HUD instead of just the stat panel refactor: Refactored the entirety of HUD management code, report if anything breaks! /🆑 --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> |
||
|
|
11fbb59049 | TGUIfies some VV actions, replaces the actions dropdown with a searchable one (#95480) | ||
|
|
038707f0b1 |
Adds a Memory button to the UI & other HUD Changes (#95303)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/91378 for renewed effort of ruining the stat panel for everyone. This PR does a few things to address issues I've had with the HUD in hopes to bring reliance less upon the stat panel. 1. Adds a Memory button <img width="133" height="169" alt="image" src="https://github.com/user-attachments/assets/7f643882-5666-4099-9c68-5d6092a6d82c" /> <img width="134" height="169" alt="image" src="https://github.com/user-attachments/assets/e7592ec3-ec3e-4afe-baa3-6d0e6d5d22c8" /> Potential alt icon, but I don't know if it's better <img width="1322" height="115" alt="image" src="https://github.com/user-attachments/assets/82cc6ad9-becd-4502-8b83-276b0ef6ed0d" /> 2. Makes Alien, Animal & Borg HUDs more compact (This is uploaded before Borg HUD icons were made) Borg - Removed 'Store' button, now you left click your model to store it (RMB to open/close), think of it more like a bag now. <img width="1054" height="324" alt="image" src="https://github.com/user-attachments/assets/5352a350-8f3e-4b3a-8634-929e2c9aa2f4" /> Alien <img width="305" height="189" alt="image" src="https://github.com/user-attachments/assets/c0f0b9f0-941a-405e-bdfd-4b5b46690fb6" /> Animals - Their HUDs now appear in the corner of the screen rather than having the strange offset <img width="202" height="168" alt="image" src="https://github.com/user-attachments/assets/ddf26108-d930-4744-8ef5-17f981a3384b" /> I didn't touch gorilla, they still look weird. <img width="732" height="181" alt="image" src="https://github.com/user-attachments/assets/5c1534c3-7190-491d-8a1f-6fe51eebd9a2" /> 2. Fixes borg numbers not showing up at the request of a user <img width="701" height="312" alt="image" src="https://github.com/user-attachments/assets/65464e15-8e31-41f8-b506-050fa27cebde" /> Closes https://github.com/tgstation/tgstation/issues/95163 I also added a rustle sound when you drop something as a borg so you have an audio cue that you dropped something, sometimes as a borg I'll drop something and think it disappeared, cause I didn't realize I accidentally hit drop. This is a local sound, so it doesn't play to anyone near you. Purely for feedback. 3. If you didn't notice, this de-hardcodes the UI for non-humans UIs now respect your prefs for many more mobs now, pretty much only the ones with unique special UIs (Alien, pAI, AI, Borg) will now respect your prefs. ## Why It's Good For The Game UIs make a bit more sense, takes Memories out of being only accessible through the stat panel, allows your prefs to be respected more and makes inventories a little more consistent through mob types. If the stat panel is to be removed or made optional, we can't afford to hide Memories through it because certain antagonists (see: nukies) absolutely rely on it. ## Changelog 🆑 ttt, JohnFulpWillard add: Added a Memory HUD to your UI. In case you didn't know, you get memories of things happening around the station, or important antagonist info such as the nuclear codes. del: Removed Borg's "store" button, now the cyborg module will behave more similar to a backpack (LMB to store, RMB to open/close) fix: Borg material now properly displays how much materials they can afford with their cell's charge. qol: Your HUD prefs are respected on more mobs now. qol: Improved the HUD of simple/basic animals, as well as Cyborgs, AIs, pAIs and Xenomorphs. /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> |
||
|
|
9a87ffeb6f | Removes Spells tab (#95293) | ||
|
|
d0f6dfd46e |
Ghosts now have runechat (#95223)
## About The Pull Request Ghosts now have runechat between eachother and when the round's over. Taken from https://github.com/Monkestation/Monkestation2.0/pull/797 ## Why It's Good For The Game It makes for better screenshots and for messages to not be drowned out between ghost convo. ## Changelog 🆑 dwasint qol: Ghosts now have runechat. /🆑 --------- Co-authored-by: Jordan Dominion <jordanhcbrown+github@gmail.com> |
||
|
|
00ccf0c6b5 |
Merge remote-tracking branch 'tgstation/master' into upstream-feb12-2026
# Conflicts: # .github/CODEOWNERS # .github/workflows/compile_changelogs.yml # .github/workflows/stale.yml # SQL/database_changelog.md # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/__DEFINES/atom_hud.dm # code/__DEFINES/inventory.dm # code/__DEFINES/mobs.dm # code/__DEFINES/species_clothing_paths.dm # code/__DEFINES/subsystems.dm # code/__DEFINES/surgery.dm # code/__HELPERS/global_lists.dm # code/_globalvars/lists/maintenance_loot.dm # code/_globalvars/traits/_traits.dm # code/controllers/subsystem/minor_mapping.dm # code/controllers/subsystem/processing/quirks.dm # code/controllers/subsystem/shuttle.dm # code/datums/components/palette.dm # code/datums/components/surgery_initiator.dm # code/datums/diseases/advance/advance.dm # code/datums/hud.dm # code/datums/mood.dm # code/datums/mutations/chameleon.dm # code/datums/quirks/negative_quirks/nyctophobia.dm # code/datums/status_effects/debuffs/debuffs.dm # code/datums/status_effects/debuffs/drunk.dm # code/datums/status_effects/debuffs/slime/slime_leech.dm # code/datums/weather/weather.dm # code/game/data_huds.dm # code/game/objects/items.dm # code/game/objects/items/devices/scanners/health_analyzer.dm # code/game/objects/items/frog_statue.dm # code/game/objects/items/rcd/RLD.dm # code/game/objects/items/robot/items/hypo.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/items/stacks/wrap.dm # code/game/objects/items/storage/garment.dm # code/game/objects/items/tools/medical/defib.dm # code/game/objects/items/weaponry.dm # code/game/objects/items/weaponry/melee/misc.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/game/objects/structures/curtains.dm # code/game/objects/structures/dresser.dm # code/game/objects/structures/girders.dm # code/game/objects/structures/maintenance.dm # code/game/objects/structures/mirror.dm # code/modules/admin/greyscale_modify_menu.dm # code/modules/admin/verbs/light_debug.dm # code/modules/antagonists/ashwalker/ashwalker.dm # code/modules/antagonists/heretic/knowledge/starting_lore.dm # code/modules/antagonists/ninja/ninjaDrainAct.dm # code/modules/art/paintings.dm # code/modules/client/preferences.dm # code/modules/client/verbs/ooc.dm # code/modules/clothing/head/wig.dm # code/modules/events/disease_outbreak.dm # code/modules/holodeck/holo_effect.dm # code/modules/jobs/job_types/head_of_security.dm # code/modules/jobs/job_types/security_officer.dm # code/modules/library/skill_learning/generic_skillchips/point.dm # code/modules/mining/lavaland/ash_flora.dm # code/modules/mining/lavaland/mining_loot/megafauna/ash_drake.dm # code/modules/mob/dead/new_player/new_player.dm # code/modules/mob/living/basic/guardian/guardian.dm # code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm # code/modules/mob/living/carbon/carbon.dm # code/modules/mob/living/carbon/human/human.dm # code/modules/mob/living/carbon/human/human_defines.dm # code/modules/mob/living/carbon/life.dm # code/modules/mob/living/living.dm # code/modules/mob/living/living_defines.dm # code/modules/mob/mob.dm # code/modules/mob_spawn/ghost_roles/mining_roles.dm # code/modules/mod/mod_control.dm # code/modules/mod/modules/modules_general.dm # code/modules/modular_computers/computers/item/computer_ui.dm # code/modules/paperwork/paper.dm # code/modules/paperwork/paperbin.dm # code/modules/power/lighting/light.dm # code/modules/projectiles/guns/energy/kinetic_accelerator.dm # code/modules/projectiles/projectile.dm # code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm # code/modules/reagents/chemistry/reagents/food_reagents.dm # code/modules/reagents/chemistry/reagents/other_reagents.dm # code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm # code/modules/research/xenobiology/crossbreeding/_clothing.dm # code/modules/research/xenobiology/crossbreeding/prismatic.dm # code/modules/surgery/advanced/brainwashing.dm # code/modules/surgery/advanced/lobotomy.dm # code/modules/surgery/amputation.dm # code/modules/surgery/blood_filter.dm # code/modules/surgery/bodyparts/_bodyparts.dm # code/modules/surgery/brain_surgery.dm # code/modules/surgery/cavity_implant.dm # code/modules/surgery/coronary_bypass.dm # code/modules/surgery/gastrectomy.dm # code/modules/surgery/healing.dm # code/modules/surgery/limb_augmentation.dm # code/modules/surgery/organ_manipulation.dm # code/modules/surgery/revival.dm # code/modules/surgery/sleeper_protocol.dm # code/modules/surgery/surgery_helpers.dm # code/modules/surgery/surgery_step.dm # code/modules/unit_tests/_unit_tests.dm # code/modules/unit_tests/designs.dm # code/modules/unit_tests/icon_state_worn.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_cultist.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_headrevolutionary.png # code/modules/unit_tests/screenshots/screenshot_antag_icons_provocateur.png # code/modules/unit_tests/screenshots/screenshot_husk_body.png # code/modules/unit_tests/screenshots/screenshot_husk_body_missing_limbs.png # icons/map_icons/clothing/head/_head.dmi # icons/map_icons/clothing/shoes.dmi # icons/map_icons/items/_item.dmi # icons/mob/huds/hud.dmi # icons/mob/inhands/64x64_lefthand.dmi # icons/mob/inhands/64x64_righthand.dmi # icons/obj/machines/computer.dmi # tgui/packages/tgui/interfaces/OperatingComputer.jsx # tgui/packages/tgui/interfaces/PreferencesMenu/CharacterPreferences/MainPage.tsx # tgui/packages/tgui/interfaces/PreferencesMenu/types.ts # tgui/packages/tgui/interfaces/SurgeryInitiator.tsx # tools/icon_cutter/check.py |
||
|
|
e4f533111f |
Deafness is now solely tracked by trait (#95029)
## About The Pull Request Deletes `can_hear`, replaces it with trait-checking deafness. The only two non-trait sources of deafness (hardcrit and lacking ears) were refactored into using the trait. ## Why It's Good For The Game Many places inconsistently check for the deaf trait rather than use can_hear which meant behavior was not consistent. Some code would treat "do we lack ears?" as being deaf, some would not. This unifies all the behavior so being deaf means you're deaf everywhere. It also means we can now easily react to gaining and losing deafness via signal, where before we could not react to it without hooking the trait, organ remove, AND stat change. Which no one did, of course, because who would ever think to do that? ## Changelog 🆑 Melbert refactor: Refactored how deafness is tracked. Please report any weird interactions with sounds, like messages or sfx being missing. fix: Lacking ears and being in hard crit now consistently treats you as "being deaf". This affects a few minor interactions like empath, the jukebox, and sleeping. /🆑 |
||
|
|
9526ed6e78 |
Makes COMSIG_MOB_SWAP_HANDS pass the current and previous held items as args (#95055)
## About The Pull Request Tin, that's all. In a lot of cases you will want to have these, especially if you are using elements with this signal. ## Why It's Good For The Game Better code ## Changelog Not player-facing |
||
|
|
68153c2333 | Refactors faction lists to use getters and setters and be cached (#94490) | ||
|
|
aedc5bae7a |
allowed is now signals based instead of hardcoded slots (#94871)
## About The Pull Request ID cards/MMI mech access/simple mob access/pAIs now use signals instead of checking specific slots with mob checks. We do this through mob's ``get_access`` proc that collects all access a mob has with a collect_access signal. ## Why It's Good For The Game It looks cleaner and we no longer individually check `check_access` for every single item that may have access. It's cleaner to put it all together and check in one go with all the access we've got. This also makes it easier to add items that hold access that aren't necessarily IDs but you want to be able to open stuff with. ## Changelog 🆑 refactor: ID checking for access has been reworked, please make a bug report if anything that's supposed to grant access is not working. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
c7e4e90004 |
Adds a new antag, the Blood Worm (#93787)
## LTS Document Check this document before making any significant future changes to blood worms, please. https://hackmd.io/@RikuTheKiller/H1AHQSKNZx ## About The Pull Request THIS PR SHOULD ABSOLUTELY BE TM'D FIRST Blood worms are a new progression antag. When the event runs, 2 candidates are picked from ghosts and spawned in as blood worm hatchlings, which then have to grow up, do a couple objectives and take over the station. Hatchlings are weak outside of a host, while juveniles can stand their own reasonably well. Adults have high offensive power and can only be dealt with using the right gear or a lot of luck and robustness. They're meant to be a moment of glory for achieving maximum progression and they can bootstrap the next hatchlings by gathering corpses before cocooning. Each growth stage requires 30 seconds in a cocoon, which can only be created after consuming a lot of blood. There's a falloff curve on a per-blood-type basis, meaning you can't drain the same person over and over again to reach adulthood. The medbay freezer is a priority target for the blood worms and can get one of them to the juvenile stage if fully ransacked. It takes 500 blood to mature from hatchling to juvenile, and 1500 blood to mature from juvenile to adult. You can only get up to 1000 blood from synthetic sources like monkeys, and consuming synthetic blood is 30% less efficient. Blood worms can also examine living targets to see how much blood a target has, and how much growth the blood worm would gain for consuming that blood. Blood worms spawn in vents and have night vision for maneuvering in maintenance. Hatchlings can ventcrawl, while juveniles can move around by breaking things. Optionally, you can take over a host with a lot of access like the Captain to go basically anywhere, especially if nobody knows you killed the captain. Behind the scenes, host-taking kicks the host's original mind to a backseat mob. This needs the most testing in practice, but it's confirmed that it returns the host's mind back to their body, at least in testing. All mob, ability and action sprites are made by INFRARED_BARON. Legal rights were transferred to me after I paid for the commission. Note, I've been working on this massive PR for quite a while, so documenting every small change is really hard! Apologies for anything I've missed. There's a lot. Final note, admins can spawn these by either: A. Trigger the midround event via the dynamic-panel verb, under the Rulesets tab. B. Giving someone the Blood Worm antag datum via the Traitor Panel in the Player Panel for the target player. This will transform their mob into a valid Blood Worm, with all of the associated objectives and such. ### Active Abilities 1. Leech Blood (No Host) - Lets the blood worm drain blood from living targets and reagent containers. Uses an aggressive grab to restrain living targets until leeching is over, which takes around a second to initiate. Causes oxyloss during the leeching. NPC monkeys can't escape from this and it floors targets as well. 2. Spit Blood (Both) - Multi-function ability, lets the blood worm fire ranged corrosive blood spit at targets, melt restraints on their hosts by right-clicking, and as an adult, shoot a burst of blood spit at a target by right-clicking. Note of the right-click abilities, shooting bursts can't be done while in a host. (to avoid unfair stealth kills) Shooting a burst has a much longer cooldown than shooting normally. All spit types cost blood to use. 3. Invade Corpse (No Host) - Lets the blood worm take a host for themselves, consuming all of the host's blood and in essence, "becoming" the host. Any bloodloss inflicted on the host is taken as damage to the blood worm, and the blood worm retains its weakness to fire even in this state. Burn damage itself no longer has any extra damage, though. 4. Leave Host (Host) - Title, literally just leaves the host after a delay. Notably works even while the host is moving, dead, incapacitated or otherwise fucked up in any way, shape or form. 5. Inject Blood (Host) - Lets the blood worm heal its host. The potency of this increases as the worm grows up, but so does the cooldown and blood consumption. This works on organ damage, injuries, etc. 6. Mature (No Host) - Makes the blood worm enter a cocoon for 30 seconds, emerging as the next growth stage. Requires an increasing amount of consumed blood / growth as the blood worm uses it. 7. Reproduce (No Host, Adult Only) - Makes the blood worm enter a cocoon for 30 seconds, with 4 hatchlings emerging out of it, including the original blood worm, now reverted back into a hatchling as well. 8. Revive Host (Host) - If the host is in a viable state to be revived, revives them after an animation sequence plays out. ### Passive Abilities 1. Space Immunity - Blood worms are immune to the cold, low pressures and a lack of oxygen. Only the immunity to a lack of oxygen carries on to hosts from this. 2. Organ Insertion - Blood worms can insert organs into their hosts by right-clicking on them with the organ in-hand. This mainly exists to deal with hosts that lack organs, and avoids the gotcha where an adult blood worm ends up gutting their host by hitting them too hard, as they can simply fix it on the spot. 3. Life Support - Blood worm hosts don't need a heart, lungs or a liver to survive. Lungs are useful for speaking, and a liver is necessary to process reagents. 4. Regeneration - Blood worms slowly heal over time. This is nowhere near enough to overcome bleeding or heat damage, since it's 0.3 hp/s for a hatchling, 0.4 hp/s for a juvenile and 0.5 hp/s for an adult. 5. Night Vision - Blood worms can see in the dark. This doesn't extend to hosts. 6. Ventcrawling - Hatchling blood worms can ventcrawl. 7. Doorcrawling - Hatchling and juvenile blood worms can slide under doors. Doing so takes 3 seconds for a hatchling and 5 seconds for a juvenile. 8. HUD - Blood worms can tell how much blood targets have at a glance, via a blood HUD bar exclusive to them. They can also tell apart other blood worm hosts from normal people via an antag HUD. There's also an examine message they can use on living targets for even more info. ### Weaknesses 1. Heat and Fire - Blood worms quickly die to heat, their bodies are flammable and their blood will burn up if their host's core temperature is too high. The main counter to this is getting a host with flame-resistant gear. 2. Bleeding - While in a host, bleeding wounds will directly damage the blood worm itself. How much a host needs to bleed before the worm dies depends on their growth stage. Blood worm hosts keep bleeding even while dead, so just keep hitting them and they'll die. Blood worms automatically leave their hosts when they hit 10% health or lower, and their hosts bleed 50% faster than normal people. 3. Stuns - Blood worms have no way of dealing with a stunned host other than getting out. They can deal with any restraints by melting them, though. 4. Testing - Security can order a blood worm testing crate from cargo, either for a 20 minute cooldown via the security cargo interface console, or for 10000 credits via the supply console. It contains 4 single-use testers that hurt a bit when applied, but are instant to use and 100% accurate. The stopgap is that they're really fucking expensive and only work once per item. ### Screenshot <img width="280" height="132" alt="image" src="https://github.com/user-attachments/assets/00d22361-997e-4347-a0bf-aa240de40727" /> ## Why It's Good For The Game Antagonist variety, mainly. This is basically Cortical Borers 2: Electric Boogaloo. Currently, we lack any antagonists with mind control abilities. That really sucks! I've also gotten a lot of positive feedback about the antagonist while working on it. This antagonist also has great potential for roleplay, as they can take over hosts, surprise attack people by getting out of a dead corpse, talk to each other using Wormspeak, etc. I think we're also itching for variety on "pest" antagonists. Right now we just have spiders and xenos. Everybody knows these two, so why not mix it up a bit? And as for balance? Blood worms are relatively easy to dispatch when you know their weaknesses, which are extremely clear. Bleeding for hosts, fire for either one, lasers for the worms themselves. As long as you get the host in crit and keep hitting, you've pretty much won, and they can't keep spamming Inject Blood forever since they'll quickly run out of blood to use. ## Changelog 🆑 add: Added a new heavy roundstart/midround antagonist, the Blood Worm. Credit to INFRARED_BARON for the sprites! fix: Removing traits based on a source no longer causes issues with trait signals. fix: High-priority effects no longer double-trigger due to subsystem issues. fix: Weighted averaging in reagent merging code has been band-aid fixed. It's not the best, but it works. /🆑 |
||
|
|
4d7b9be4a2 |
Fix a variety of grammar errors (#94707)
* Fix uncapitalized sentences, lack of "the", and singular/plural mixup when inserting items into lathes * Conform some job descriptions to the pattern used by the majority: bitrunner, chemist, coroner, janitor, RD, shaft miner * Remove extra colon from "Open Special Role Information" action buttons * Uncapitalize "no alerts" / "systems nominal" messages in atmos and station alert consoles * Fix incorrect feedback when wrenching down a freezer/heater with its panel open * Fix "Thank you for restocking the station!" appearing in the wrong place in the cargo export summary * Fix "pizza boxs" on cargo manifests * Fix mid-sentence capital "The" when: * Examining walls with mounted items * Inserting parts into machine frames * Fix "Pete's the udder" * Fix double-"the" and stringified datum typepath when scooping reagents * Fix missing spaces in door remote descriptions * Fix uncapitalized "Nanotrasen" in emergency respone drone ghost role poll * Fix double-space in canister opening admin log * Fix missing "the" when casting bear-form spell * Fix "auxiliry" in NebulaStation airlocks * Add `check_grep.sh` rules against "maintainance", "maintainence", and "maintenence" * Fix "maintainance" in NebulaStation airlocks, TCG cards, and in examines of netpod, byteforge, quantum server * Fix "maintainence" in examines of autolathe, flatpacker, cryo cell, ore silo, floodlight, power storage unit, turbine, chromatography machine, ChemMaster, all-in-one grinder, smoke machine, R&D machines, vending machines * Fix "maintenence" in Sulaco ruin terminal * Add missing periods to: * "That's X." examine block header * steal objective explanation text * atmospheric shield generator examine * autolathe examine * telescreen examine * accidentally stepping on a mousetrap * netpod examine * byteforge examine * hat/mask visor toggling * bizza box stack examine * ChemMaster 3000 examine * floodlight examine * power storage unit examine * ChemMaster interact messages * disposal bin animal eject message * techfab examine * vending machine examine * flatpacker examine * Fix name capitalization/propriety of: * big manipulator * DeForest first aid station * Christmas tree * Thunderdome plaque * commission plaque * chalkboard coffee menu * experimental destructive scanner * scanner array * prison cube * RaptorDex * atmospheric shield generator * high-performance liquid chromatography machine * all-in-one grinder * keycard authentication device * Fix plurality of: * fake stairs * HUDs * restaurant and bar seating * Fix misc grammar/typos in: * recharging station description * worm description * surgery tray description * access failure message of restaurant portal * mysterious pillar description * Pennywise painting description * floodlight examine * power storage unit examine * flatpacker examine * Remove extra newline from "Debug Z-Levels" verb |
||
|
|
53ed83bb9d |
Makes some more lists lazy (#94388)
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
f00b88fed4 |
Reworks golem revival, tankiness, and death (#94324)
## About The Pull Request 1. Golems have a whopping 0.5x modifier to brute and burn damage, but no longer have a 0.9x modifier to tox / oxy damage. 2. Golems have a new 0.6x modifier to stamina damage and stun duration, but a new 1.2x modifier to knockdown times. 3. Golems can no longer be defibrillated. 4. Golems can no longer fall into soft crit. They can still hard crit and die when taking sufficient damage though. 5. When a golem is attacked with brute or burn damage, they sustain direct nutrition drain. based on how much damage dealt. This is applied after damage reduction. 6. When a golem's nutrition falls to a low enough threshold, their nutrition begins to drain faster, until eventually they are forced unconscious. When a golem's nutrition hits 0, they die. 7. Additionally, golem nutrition drains faster when they pass the normal soft crit threshold. 8. Golems can be revived by applying materials to their corpse. Each sheet restores some brute and burn damage, as well as some nutrition. When sufficient brute, burn, and nutrition are restored, they are revived. Also 1. Reduces golem titanium brute reduction slightly (0.7x -> 0.8x) 2. Golems have their own bodyshape 3. Iron no longer heals tox or oxy Closes #94287 ## Why It's Good For The Game This arose from #94287 I think defibbing golems is a major flavor fail, they're like magical or some shit and their existence is based around how much material they have. This got me thinking. What if nutrition was their "material meter" and thus their "health bar"? So here we are: - Golems are now significantly tankier to physical damage, which I think fits their flavor a lot more. However, they have to manage their nutrition to stay upright. - Golems are now also significantly resistant to stuns, as they are rocks. However if they are knocked over, getting up is a bit tougher. This also feels very flavor appropriate. - Rather than using a defib on a rock to "revive it", you now have to re-assemble the rock with materials. This makes more sense and is a fair bit easier for free golems to accomplish. ## Changelog 🆑 Melbert balance: Golems have a whopping 0.5x modifier to brute and burn damage, but no longer have a 0.9 modifier to tox / oxy damage. balance: Golems have a new 0.6x modifier to stamina damage and stun duration, but also a new 1.2x modifier to knockdown duration. balance: Golems can no longer be defibrillated. Revival surgery is... untouched, I guess. balance: Golems can be revived by applying materials to their body. Each sheet restores some brute and burn damage, as well as some nutrition. When sufficient brute, burn, and nutrition are restored, they are revived! balance: Golems can no longer fall into soft crit. They can still enter hard crit and die when taking sufficient damage, though. balance: When a golem is attacked with brute or burn damage, they sustain direct nutrition drain based on how much damage dealt. balance: Golems drain nutrition faster if near starving or below the normal soft crit threshold. balance: Golems fall unconscious if starving. balance: When a golem's nutrition hits 0, they die! balance: Golems cannot get overweight, but are capped on the amount of nutrition they can have balance: The strength of titanium's reduction to brute damage when consumed by a golem or rock eater has been reduced (0.7x -> 0.8x) balance: Eating iron no longer heals tox or oxy for golems or rock eaters (still heals brute and burn) balance: Golems now have a unique bodytype, making them ineligible for some surgeries /🆑 |
||
|
|
6e9f2ccfc0 |
Merge remote-tracking branch 'tgstation/master' into upstream-12-15
# Conflicts: # .github/workflows/compile_all_maps.yml # .github/workflows/run_integration_tests.yml # _maps/map_files/CatwalkStation/CatwalkStation_2023.dmm # code/_onclick/hud/credits.dm # code/controllers/subsystem/networks/id_access.dm # code/datums/diseases/advance/advance.dm # code/datums/diseases/advance/symptoms/heal.dm # code/game/machinery/doors/door.dm # code/game/objects/structures/crates_lockers/closets/secure/medical.dm # code/game/objects/structures/crates_lockers/closets/secure/security.dm # code/modules/antagonists/malf_ai/malf_ai_modules.dm # code/modules/jobs/job_types/_job.dm # code/modules/loadout/categories/accessories.dm # code/modules/loadout/loadout_helpers.dm # code/modules/loadout/loadout_items.dm # code/modules/loadout/loadout_preference.dm # code/modules/mob/living/silicon/robot/robot_defense.dm # code/modules/mod/mod_theme.dm # code/modules/projectiles/ammunition/energy/laser.dm # code/modules/reagents/reagent_containers/cups/drinks.dm # code/modules/shuttle/mobile_port/variants/supply.dm # code/modules/surgery/organs/internal/eyes/_eyes.dm # code/modules/unit_tests/screenshots/screenshot_antag_icons_heretic.png # icons/hud/screen_full.dmi |
||
|
|
02271c6032 |
Provides two work arounds for uplink going off screen. (#94405)
## About The Pull Request This provides a work around for issue: #92706 Which prevents user from using uplink. YES -> A new verb called "Reset UI Positions". It puts them all to the 0,0 location which is top left of screen. YES, too! -> Holding ALT and clicking the background of the window will allow you to move it. ## Why It's Good For The Game This provides ADMINs two ways to help antags that get their uplink page stuck. |
||
|
|
4d32af1508 |
Biodegrade dissolves all restraints instead of one single restraint; including grabs (#94135)
## About The Pull Request @Metekillot Continues https://github.com/tgstation/tgstation/pull/92053 https://github.com/tgstation/tgstation/pull/92442 https://github.com/tgstation/tgstation/pull/92911 Biodegrade destroys all restraints instead of one single restraint. Biodegrade will now dissolve all* restraints (fixes niche use-cases such as strait jackets, cuffed prisoner shoes, etc). Biodegrade includes grabs (unless it's another ling): The manhandler gets splashed acid, dealing some damage (this damage is not that bad); the damage dealt depends on BIO protection (for reference - the default security uniform halves the damage). They will also be stunned briefly to give the ling a short chance to leg it. ## Why It's Good For The Game Same reasons as Metek's This change is meant to bring changelings in line with their categorized "uncontainable" valid salad demarcation. Biodegrade kinda sucks, and this makes it not-suck. Makes biodegrade a more attractive ability for changeling by significantly increasing its use as a method to escape confinement of any sort. Hopefully it has the gumption to close up cheesy edge cases as well. ## Changelog 🆑 ArchBTW, Bisar balance: Changeling's Biodegrade works against grabs. balance: Changeling's Biodegrade destroys all restraints instead of one single restraint. fix: Changeling's Biodegrade shows the effect when used inside lockers. fix: Changeling's Biodegrade properly covers restraint types (cuffed prisoner shoes, strait jackets, etc). /🆑 --------- Co-authored-by: tgstation-ci[bot] <179393467+tgstation-ci[bot]@users.noreply.github.com> Co-authored-by: ArchBTW <230859540+glue0000@users.noreply.github.com> Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> |
||
|
|
043677c6f6 |
Storing objects with slowdown in a backpack or belt (or any such storage) now properly updates your speed (#93967)
## About The Pull Request Another one of those things that I've noticed when playing around with fish tanks; The slowdown lingered even when the fish tank (which depends on the total weight of fish inside it) was no longer held and was only updated another item is equipped or held. This is because `attempt_insert` doesn't end up calling `DoUnEquip`, which along with `equip_to_slot`, is one of the cornerstones of the whole inventory system that we have had for over a decade. Luckily, this doesn't break things entirely because `item/doMove` seems to have a fallback, but it only covers held items and only does half of what `DoUnEquip` does, because it's its own copypaste code, disconnected from the standard unequip call stack. I've done some changes to make sure `DoUnEquip` is always called on `doMove` if we find that the item still has the IN_INVENTORY flag. I've also updated the code comment for it as well, to emphasize that the measure is a fallback and not an excuse to call forceMove or Move if we know that the object is held or equipped on a mob. If something doesn't work, it'll be likely caught by the CI (it's a core feature of the game after all) or stack traces. Also, despite equipment slowdown supporting all mob types, when equipping/unequipping items it's only applied to carbon mobs. This is not _strictly_ a contributing factor to the titled issue but it still limits a balance feature that ought to affect all mobs with hands and/or equipment slots. ## Why It's Good For The Game Fixing issues with inventory and storages. Hopefully improving and modernizing years old code a little. |
||
|
|
d0ca474789 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-2025-11-05 | ||
|
|
c173f898f8 |
Fixes examines sometimes running on qdeleted atoms (#93656)
## About The Pull Request <img width="573" height="77" alt="HAuAh8ioY0" src="https://github.com/user-attachments/assets/33eb5b66-330b-42c1-b395-841561ef2bb0" /> Because run_examinify can get queued to run async we need to consider the possibility that the item does not exist when the callback is finally invoked. ## Why It's Good For The Game Less runtime spam ## Changelog Not player-facing |
||
|
|
0f3d4596f3 |
Dullahan fixes (#93365)
## About The Pull Request Fixes up some of the blaring problems with the woefully unloved dullahans, making them at least playable in time for halloween. List of individual fixes in the changelog, but notable code changes include that visible/audible messages can (currently exists for dullahan heads and holopad projections) now be proxied, so that detached cameras can optionally relay TTS, emotes, and other messages to the proper client. ## Why It's Good For The Game Its spooky month! ## Changelog 🆑 fix: Dullahans spawn with their intended organs fix: Dullahans can hear/see emotes fix: Dullahan heads properly have preferences applied to them fix: Dullahan heads no longer appear eyeless fix: Dullahans can hear things from their head regardless of if their body is nearby fix: Dullahans can hear TTS messages fix: Dullahans have a TTS voice qol: Dullahans have a head in the character preview, for the sake of easier customization /🆑 |
||
|
|
e28e9fbdba | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025 | ||
|
|
58422276a6 | Admin VV dropdown button to grant all access (#93427) | ||
|
|
348789fa8d |
The Renamening- upgrades UNIQUE_RENAME and moves a lot of renaming implementations under it (#93115)
## About The Pull Request Moves a lot of the unique renaming implementations described in #82664 to the functions given by the `obj_flag` `UNIQUE_RENAME`. `UNIQUE_RENAME` has been given new properties to account for non-standard renaming, these being the `RENAME_NO_DESC` flag that prevents changing the description, the `nameformat()` and `descformat()` procs that, when modified, allow for applying naming formats(i.e. "Body Bag - [input]"), as well as other post-renaming handling such as changing the name of the output plant of a renamed seed, the `rename_checks()` proc that allows for unique naming prevention(such as a locked personal closet), and the `rename_reset()` proc to clean up other possible renamed variables potentially changed in `nameformat()` and `descformat()`. This also adds `/datum/element/tool_renaming` to crayons, which will let them rename anything that has `UNIQUE_RENAME`. I looked through everything with that flag, and I didn't see anything that I don't think should be renameable by a crayon(except things that shouldn't be renamable with pens), so it shouldn't fuck anything up. ## Why It's Good For The Game moves all of the non-honorable mentions in #82664 to the same renaming system, and also moves all of the honorable mentions save for: - plaques, as they only get renamed once and wouldn't benefit from `UNIQUE_RENAME` imo - books, because they're far more than just renaming, and are persistent - paintings, because they're persistent - photos, because they're not normal renaming and they're persistent - endoskeletons, because they're done with a multitool in UI - cardboard IDs, because they're far more than just renaming Additionally, this fixes: - Implanter renaming didn't work because a ! was missing - Clown borg picket sign renaming didn't work because they didn't use the correct arguments This'll make it easier to make renameable objects in the future, as well. ## Changelog 🆑 fix: fixes implanter renaming not working fix: fixes clownborg picket sign renaming not working code: brought most unique renaming implementations under UNIQUE_RENAME /🆑 |
||
|
|
5e629dff04 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-sync | ||
|
|
44acefa73f | More things use trait huds over raw hud management (#93084) | ||
|
|
939f2fc9ac | Merge branch 'master' of https://github.com/tgstation/tgstation into xpokee-test-upstream-sync | ||
|
|
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 /🆑 |
||
|
|
16aa15a136 |
Changes human name updates to be request-based instead of being automatically done every single tick (#92393)
## About The Pull Request
Changes human name to update whenever anything that could result in
their visible name changing occurs, such as changing IDs, equipping
gasmasks, picking potted plants, etc. Currently name updates occur every
``Life()`` tick and in a few "special" cases, which causes a lot of name
changes from sources such as equipment to not apply until the mob ticks,
and makes us waste a tiiiny bit of CPU time on name updates.
I've also slighly cleaned up human /Life() and made species'
``spec_life()`` not run when the mob is dead, as it was causing certain
unintended interactions, such as slimepeople regenerating blood while
dead.
## Why It's Good For The Game
Microoptimization, ensures that correct names are always used (in case
something could update their name but the mob hasn't ticked yet), plus
its just a cleaner implementation
(cherry picked from commit
|
||
|
|
87e1ef6f64 |
Changes human name updates to be request-based instead of being automatically done every single tick (#92393)
## About The Pull Request Changes human name to update whenever anything that could result in their visible name changing occurs, such as changing IDs, equipping gasmasks, picking potted plants, etc. Currently name updates occur every ``Life()`` tick and in a few "special" cases, which causes a lot of name changes from sources such as equipment to not apply until the mob ticks, and makes us waste a tiiiny bit of CPU time on name updates. I've also slighly cleaned up human /Life() and made species' ``spec_life()`` not run when the mob is dead, as it was causing certain unintended interactions, such as slimepeople regenerating blood while dead. ## Why It's Good For The Game Microoptimization, ensures that correct names are always used (in case something could update their name but the mob hasn't ticked yet), plus its just a cleaner implementation |
||
|
|
d0769a3335 |
Reduce Vulpkanin hunger drain from 2x to 1.5x (#4348)
## About The Pull Request By request from the original requester of Vulpkanin traits; Vulpkanin hunger drain has been reduced from 2x -> 1.5x. (i.e. those with the ``TRAIT_FAST_METABOLISM`` trait suffer less) ## Why It's Good For The Game 2x metabolism was deemed too fast by the community, this lowers the hunger drain for Vulps to a reasonable 1.5x so the chef still has food on the table for other crew. ## Proof Of Testing it compiles ## Changelog 🆑 balance: Vulpkanin hunger drain reduced from 2x -> 1.5x /🆑 |
||
|
|
6b7d03ff81 |
Removes double the when trying to write with an incorrect instrument (#92239)
## About The Pull Request Closes #92229 ## Changelog 🆑 spellcheck: Removed double the when trying to write with an incorrect instrument /🆑 |
||
|
|
0029e2ba13 |
Removes double the when trying to write with an incorrect instrument (#92239)
## About The Pull Request Closes #92229 ## Changelog 🆑 spellcheck: Removed double the when trying to write with an incorrect instrument /🆑 |
||
|
|
d5be02ecee |
Mob ckey sanity check now respects insano aghost code (#91517)
## About The Pull Request I HATE THIS PLACE DUDE, aghosting sets your ckey/key to your normal ckey/ckey but with @ prefixed. hhhhhhhhh. |
||
|
|
75e7ef6def |
Mutation code cleanup, mutations now have sources to avoid concurrency problems. (#91346)
This PR aims to clean or bring up to date portions of code about dna, the dna console and mutations. This includes taking care of or removing some of the awful choices like the pratically useless `datum/mutation/human` pathing, or the class variable, in favor of using sources to avoid potential issues with extraneous sources of a mutation. The files changed are over a hundred just because I removed the `datum/mutation/human` path, but the actual bulk of the code is mainly shared between the datum/dna.dm, _mutations.dm and dna_console.dm. Mutation shitcode is hurting my future plans for infusions a little. Also it's a much needed refactor. Drafted 'till I'm sure it works without issues. 🆑 refactor: Refactored mutation code backend. Report any issue. /🆑 |
||
|
|
c8701aa056 |
Mob ckey sanity check now respects insano aghost code (#91517)
## About The Pull Request I HATE THIS PLACE DUDE, aghosting sets your ckey/key to your normal ckey/ckey but with @ prefixed. hhhhhhhhh. |
||
|
|
14fb86e3e8 |
Mutation code cleanup, mutations now have sources to avoid concurrency problems. (#91346)
## About The Pull Request This PR aims to clean or bring up to date portions of code about dna, the dna console and mutations. This includes taking care of or removing some of the awful choices like the pratically useless `datum/mutation/human` pathing, or the class variable, in favor of using sources to avoid potential issues with extraneous sources of a mutation. The files changed are over a hundred just because I removed the `datum/mutation/human` path, but the actual bulk of the code is mainly shared between the datum/dna.dm, _mutations.dm and dna_console.dm. ## Why It's Good For The Game Mutation shitcode is hurting my future plans for infusions a little. Also it's a much needed refactor. Drafted 'till I'm sure it works without issues. ## Changelog 🆑 refactor: Refactored mutation code backend. Report any issue. /🆑 |
||
|
|
d841c9df40 |
[MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
Refactors most of blood handling code untouched by #90593 and completely rewrites all blood decals, components and reagents. - Blood types now have behavioral flags which allow them to control where they leave decals/DNA/viruses. Oil no longer transfers DNA and viruses with it, while podpeople water-blood doesn't leave visible decals on turfs and items, but still can be picked up by DNA scanners. - Multiple blood types have received unique handling - liquid electricity blood now glows in the dark, oil trails are flammable and lube ones are slippery. Oil blood can be restored with fuel, lube with silicon and slime with stable plasma (as normal plasma already passively regenerates their blood), instead of everything using iron. Saline solution only supplements on iron-based blood and won't do anything to help with bloodloss for species who rely on different blood types. (Roundstart this applies only to Ethereals) - All blood logic has been moved away from the blood reagent itself into a blood element that is assigned to the blood reagent by default, and to any reagent that's drawn from a mob as their "blood" (in ``transfer_blood_to``). This means that blood you draw from lizards will be green and have lizard's blood description instead of mentioning red blood cells, Ethereal "blood" will actually contain their DNA and genes, etc. - Refactored all blood decals. Blood states are no more, everything is now handled via blood DNA. Credits to MrMelbert and Maplestation, as a significant amount of code has been taken from https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his followup PRs. Oil and xenomorph splatters are now subtypes of blood, blood drying is now animated, blood trails now curve and can be diagonal. - Rewrote bloodysoles and bloody_spreader components, credits to Melbert again for the former, while latter now makes more sense with its interactions. Bloody soles no longer share blood DNA with your hands. - Ported Melbert's bloody footprint sprites and bot-blood-spreading functionality. - Removed all species-side reagent interactions, instead they're handled by said species' livers. (This previously included exotic blood handling, thus the removal) - Slightly optimized human rendering by removing inbetween overlay holders for clothing when they're not needed. - Blood-transmitted diseases will now get added to many more decals than before. - Cleaned up and partially refactored replica pods, fixed an issue where monkeys/manipulators were unable to harvest mindless pods. - Exotic bloodtype on species now automatically assigns their blood reagent, without the need to assign them separately. - Clown mobs now bleed (with colorful reagent instead of blood during april fools), and so do vatbeasts (lizard blood) - Implemented generic procs for handling bleeding checks, all sorts of scanners now also correctly call your blood for what it is. - Podpeople's guts are now lime-green like their organs, instead of being weirdly greyish like their water-blood. (Their bleeding overlays are still grey, as they're bleeding water) - Slimepeople now can bleed. Their jelly is pale purple in color, but their wound overlays copy their body color. - Injecting/spraying/splashing/etc mob with a reagent preserves its data, so you could theoretically recycle fine wines from someone's bloodstream - Fixed burdened chaplain's sect never actually giving a blessing when applying effects, and giving a blessing when nothing can be healed. Inverted check strikes again. - Closes #91039 A lot of blood here has dried, visually the blood colors are almost exactly the same as before either of the blood refactors.   |
||
|
|
b4061f1800 |
[MDB IGNORE] Blood Refactor Chapter 2: Collector's Edition (#91054)
## About The Pull Request Refactors most of blood handling code untouched by #90593 and completely rewrites all blood decals, components and reagents. - Blood types now have behavioral flags which allow them to control where they leave decals/DNA/viruses. Oil no longer transfers DNA and viruses with it, while podpeople water-blood doesn't leave visible decals on turfs and items, but still can be picked up by DNA scanners. - Multiple blood types have received unique handling - liquid electricity blood now glows in the dark, oil trails are flammable and lube ones are slippery. Oil blood can be restored with fuel, lube with silicon and slime with stable plasma (as normal plasma already passively regenerates their blood), instead of everything using iron. Saline solution only supplements on iron-based blood and won't do anything to help with bloodloss for species who rely on different blood types. (Roundstart this applies only to Ethereals) - All blood logic has been moved away from the blood reagent itself into a blood element that is assigned to the blood reagent by default, and to any reagent that's drawn from a mob as their "blood" (in ``transfer_blood_to``). This means that blood you draw from lizards will be green and have lizard's blood description instead of mentioning red blood cells, Ethereal "blood" will actually contain their DNA and genes, etc. - Refactored all blood decals. Blood states are no more, everything is now handled via blood DNA. Credits to MrMelbert and Maplestation, as a significant amount of code has been taken from https://github.com/MrMelbert/MapleStationCode/pull/436 and many of his followup PRs. Oil and xenomorph splatters are now subtypes of blood, blood drying is now animated, blood trails now curve and can be diagonal. - Rewrote bloodysoles and bloody_spreader components, credits to Melbert again for the former, while latter now makes more sense with its interactions. Bloody soles no longer share blood DNA with your hands. - Ported Melbert's bloody footprint sprites and bot-blood-spreading functionality. - Removed all species-side reagent interactions, instead they're handled by said species' livers. (This previously included exotic blood handling, thus the removal) - Slightly optimized human rendering by removing inbetween overlay holders for clothing when they're not needed. - Blood-transmitted diseases will now get added to many more decals than before. - Cleaned up and partially refactored replica pods, fixed an issue where monkeys/manipulators were unable to harvest mindless pods. - Exotic bloodtype on species now automatically assigns their blood reagent, without the need to assign them separately. - Clown mobs now bleed (with colorful reagent instead of blood during april fools), and so do vatbeasts (lizard blood) - Implemented generic procs for handling bleeding checks, all sorts of scanners now also correctly call your blood for what it is. - Podpeople's guts are now lime-green like their organs, instead of being weirdly greyish like their water-blood. (Their bleeding overlays are still grey, as they're bleeding water) - Slimepeople now can bleed. Their jelly is pale purple in color, but their wound overlays copy their body color. - Injecting/spraying/splashing/etc mob with a reagent preserves its data, so you could theoretically recycle fine wines from someone's bloodstream - Fixed burdened chaplain's sect never actually giving a blessing when applying effects, and giving a blessing when nothing can be healed. Inverted check strikes again. - Closes #91039 #### Examples A lot of blood here has dried, visually the blood colors are almost exactly the same as before either of the blood refactors.   |
||
|
|
cc8c6916eb |
Adds a sleep icon (and fixes Alien HUD a bit) (#91256)
## About The Pull Request Adds a new HUD element that only shows up when you're resting that flicks when you click it once, and puts you to sleep for 40 seconds if you double click it (so you don't accidentally sleep yourself for 40 seconds), which is meant to replace the verb in the stat panel. Doesn't show up if you're sleep immune. I also fixed alien huds a bit, putting rest on the right side where it is for every other mob, and brought the floor change buttons down to compensate. New Larva HUD (other xenos have Throw between rest and sleep)  Demonstration https://github.com/user-attachments/assets/11f7574d-dd6d-4da5-ab39-6fcf6d6694b9 Rest can be seen in IDB ### New accessibility setting As a compromise to putting a tgui confirmation menu in your face or requiring a double click, I added a new setting in accessibility tab that allows you to disable "double click" features. So far all it does is give a tgui menu instead of require double click for sleeping, and allow you to further examine things with a linked button in base examine. ## Why It's Good For The Game Sleep is currently only a verb available in the stat panel, this provides an alternative so it doesn't become a chatbar-only verb when the stat panel is removed. It's also just good feedback to the player that this action exists. |
||
|
|
d21c105522 |
Adds a sleep icon (and fixes Alien HUD a bit) (#91256)
## About The Pull Request Adds a new HUD element that only shows up when you're resting that flicks when you click it once, and puts you to sleep for 40 seconds if you double click it (so you don't accidentally sleep yourself for 40 seconds), which is meant to replace the verb in the stat panel. Doesn't show up if you're sleep immune. I also fixed alien huds a bit, putting rest on the right side where it is for every other mob, and brought the floor change buttons down to compensate. New Larva HUD (other xenos have Throw between rest and sleep)  Demonstration https://github.com/user-attachments/assets/11f7574d-dd6d-4da5-ab39-6fcf6d6694b9 Rest can be seen in IDB ### New accessibility setting As a compromise to putting a tgui confirmation menu in your face or requiring a double click, I added a new setting in accessibility tab that allows you to disable "double click" features. So far all it does is give a tgui menu instead of require double click for sleeping, and allow you to further examine things with a linked button in base examine. ## Why It's Good For The Game Sleep is currently only a verb available in the stat panel, this provides an alternative so it doesn't become a chatbar-only verb when the stat panel is removed. It's also just good feedback to the player that this action exists. |
||
|
|
03fa31e5d2 |
Custom emotes actually use +|_ emphasis formatting, your own emotes don't trip highlights (#90858)
<!-- 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. --> So I was running into the bit where custom emotes actually don't get the `+|_` emphasis formatting applied to them, _except_ for the runechat portion which *does*. This felt annoying, especially given I've seen a lot of people try it and have it not work. Add to that that your own emotes would keep getting highlighted, blotting out other people mentioning your highlighted messages, and here's this pr. In this pr we add a few flags to audible/visible messages, `WITH_EMPHASIS_MESSAGE` and `BLOCK_SELF_HIGHLIGHT_MESSAGE`, which respectively apply emphasis formatting and block highlighting the message to oneself. We're doing this with flags because I felt always applying this would be unnecessary. Most audible/visible messages won't need to check for formatting, and quite a lot we *do* want to be highlighted. As such, we apply these flags as need be. For emotes we do this by having `get_message_flags(intentional)`, which applies `BLOCK_SELF_HIGHLIGHT_MESSAGE` based on whether the message is intentional, and on the custom emote subtype applies `WITH_EMPHASIS_MESSAGE`. Because it's not just for _say_ anymore, and already was also used for emote runechats, we rename `say_emphasis(input)` into `apply_message_emphasis(input)`. We additionally move it down to `/atom` from `/atom/movable`, such that visible/audible messages can in fact call it. That resolves our issues. We also apply `BLOCK_SELF_HIGHLIGHT_MESSAGE` to sign language tone messages, as they're essentially a part of speech. <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> Being able to do `+|_` emphasis formatting on your emotes is nice, I've seen a lot of people try it and have it not work. Especially weird given it DOES apply to the runechat message, just not the text chat message. It's annoying when your own emotes trip your own highlights! Like if you have a name highlight, your own emotes getting constantly highlighted would blot out other people talking to you. So having your own emotes not trip it just like your own talking makes that less of a pain. But sometimes emotes are forced, and in that case I think it's better to keep the highlight because it's just like other people's messages information the player might want to be notified of. Generally, I think if it's the player's input it probably shouldn't be highlighted, while if it isn't the player's input it probably should. There's no need for us to ever highlight our own sign language tone messages, because they're essentially a part of our talking. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and its effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: When performing a custom emote, `+|_` emphasis formatting applies to the text chat message instead of just the runechat message. qol: Intentional emotes don't trip your own highlights. qol: Sign language tone messages don't trip your own highlights. /🆑 <!-- 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. --> |