mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-14 01:24:21 +01:00
docker-container
97 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
966d6547e8 |
Big tooltype decargo-culting (continued) (#95814)
## About The Pull Request Gets some instances that I caught missed by https://github.com/tgstation/tgstation/pull/95408 |
||
|
|
a91f04d435 |
Being absorbed now makes you into an imaginary friend of the changeling (#94956)
## About The Pull Request When you get absorbed by a changeling, you get made into an imaginary friend of the changeling that absorbed you <img width="349" height="185" alt="image" src="https://github.com/user-attachments/assets/03b00f37-8428-49c9-90c0-c165429e0674" /> <img width="290" height="223" alt="image" src="https://github.com/user-attachments/assets/b40fe663-736b-4184-a50f-18376905a79a" /> <img width="682" height="161" alt="image" src="https://github.com/user-attachments/assets/982102da-7e15-4a9c-93ef-3e12dc72d7d8" /> This imaginary friend doesn't show up on health scan (obviously), and they communicate via hivemind chat, meaning all other changelings are capable of hearing them If your body is revived, you get yoinked out of the hivemind as you'd expect You also have a button to eject yourself from the hivemind (if you prefer to observe). And the ling themselves has a button to eject people from their hivemind that are being annoying ## Why It's Good For The Game Makes being absorbed a little less of a bummer, now you can tag along and maybe even give them some tips about how your character would act if they choose to disguise as you. ## Changelog 🆑 Melbert add: When you get absorbed by a changeling, you get made into an imaginary friend of the changeling that absorbed you. refactor: Refactored how people are returned to their bodies after occupying separate bodies, such as bitrunners and ghost roles. Report any oddities or failure to return correctly. /🆑 |
||
|
|
68153c2333 | Refactors faction lists to use getters and setters and be cached (#94490) | ||
|
|
3425cf03e5 |
Gun Muzzle Flash (2) (#94172)
## About The Pull Request Continues https://github.com/tgstation/tgstation/pull/81507 Adds a directional muzzle flash to all guns (excluding suppressors, toys, e-bow, etc). Changes color depending on the laser/projectile. If anything is missed, let me know. ## Why It's Good For The Game Realism Cool visuals Makes sense |
||
|
|
d76d2f5438 |
Laser Gun Update: Deep Lore, Gun Variety, Pew Pew (#93520)
## About The Pull Request Updates the laser gun into four proper subtypes: Standard, Pistol, Rifle and Carbine. <img width="229" height="210" alt="image" src="https://github.com/user-attachments/assets/12c03076-8ebf-4d87-8c98-6a8cce6821db" /> Current sprites are pending a palette change. **Standard:** Functions as you would expect. Same as ever. **Pistol**: Lower charge, 20 force, normal sized, recharges faster. **Carbine**: 15 force, 26 mag, two round burst. Projectiles flight slightly faster. Cannot dual-wield. **Rifle**: 20 force. 40 mag. Two round burst. EMP resistant (not immune). Projectiles fly slightly faster. Cannot dual-wield (not that you need to). All but the rifle can be sourced from cargo. You can also buy the sovl version of the laser gun if you're especially nostalgic. ### Armory Changes The Armory now can potentially spawn either pistols, carbines or standard. The weighting leans closer to spawning carbines and standard as opposed to pistols. ### Lore Dump The laser line of weapons now all have lore. That rich, deep lore that every game needs and is totally not important at all to the meat and potatoes of the game. I'm paid by the hour ($0.00) ### Code Tidying Lasers are old and a total mess code-wise so we've tidied up while we're here. ## Why It's Good For The Game Variety is the spice of life and also some of these weapons could have used a face lift. Especially the laser carbine. Both functionaltiy wise and appearance wise. A bit of randomness in the armory means some rounds might have unique outcomes compared to others. Sometimes, items in cargo don't see particularly much use, so peppering in a few random potential deviations can maybe nudge people to utilize variant gear on future rounds. I'm obsessed with writing too much information. I blame Hatterhat. ## Changelog 🆑 add: Three variants of the laser gun; Carbine (replacing the existing one), Pistol and Rifle! Find it (possibly) in your armory today! balance: The armory laser guns might be different variants of the laser gun, rather than always being the standard. The standard is the same as ever, even if it looks different. add: If you care, the sovl version is available as a goodie. And in the hands of pirates... spellcheck: Lore! LORE FOR LASER GUNS! LOOOORE! Examine laser guns closely and you might learn more about them. balance: The new set of laser guns come with brand new sprites. /🆑 --------- Co-authored-by: StaringGasMask <62149527+Exester509@users.noreply.github.com> |
||
|
|
6fb59f6aa9 |
[MDB Ignore] Removes the strange 4 second density delay that security barricades have after spawning. Refactors barricade item interaction code. (#91918)
## About The Pull Request Removes the quite weird 4 second density delay from security barriers. That's kind of what the grenade timer is for. Refactors barricade interactions to use tool acts and item_interaction(), rather than attackby. Also makes it so that wooden barricades don't....delete themselves and spawn a new one instead when repaired? ## Why It's Good For The Game > Security Barrier I think this was potentially depreciated code that was grandfathered forward in new forms. Very few places seem to explain WHY it has that but I think that might have been how barrier grenades used to spawn in their barrier from the grenade itself. Totally inexplicable really. > Refactors This codes old as hell, some of it nearly a decade. ## Changelog 🆑 qol: Security barrier grenades no longer have an arbitrary 4 second delay on becoming tangible. refactor: Barricades now use tool act and item interactions, and behave sanely. Looking at you wooden barricade. /🆑 |
||
|
|
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. /🆑 |
||
|
|
cb51a652a9 |
Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
## About The Pull Request Revival of https://github.com/tgstation/tgstation/pull/86482, which is even more doable now that we have rustg iconforge generation. What this PR does: - Sets up every single GAGS icon in the game to have their own preview icon autogenerated during compile. This is configurable to not run during live. The icons are created in `icons/map_icons/..` - This also has the side effect of providing accurate GAGS icons for things like the loadout menu. No more having to create your own previews.  <details><summary>Mappers rejoice!</summary>   </details> <details><summary>Uses iconforge so it does not take up much time during init</summary>  </details> --- ### Copied from https://github.com/tgstation/tgstation/pull/86482 as this still applies: Note for Spriters: After you've assigned the correct values to vars, you must run the game through init on your local machine and commit the changes to the map icon dmi files. Unit tests should catch all cases of forgetting to assign the correct vars, or not running through init. Note for Server Operators: In order to not generate these icons on live I've added a new config entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in the config.txt ## Why It's Good For The Game No more error icons in SDMM and loadout. ## Changelog 🆑 refactor: preview icons for greyscale items are now automatically generated, meaning you can see GAGS as they actually appear ingame while mapping or viewing the loadout menu. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
5261efb67f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
## About The Pull Request Melee attack chain now has a list passed along with it, `attack_modifiers`, which you can stick force modifiers to change the resulting attack This is basically a soft implementation of damage packets until a more definitive pr, but one that only applies to item attack chain, and not unarmed attacks. This change was done to facilitate a baton refactor - batons no longer hack together their own attack chain, and are now integrated straight into the real attack chain. This refactor itself was done because batons don't send any attack signals, which has been annoying in the past (for swing combat). ## Changelog 🆑 Melbert refactor: Batons have been refactored again. Baton stuns now properly count as an attack, when before it was a nothing. Report any oddities, particularly in regards to harmbatonning vs normal batonning. refactor: The method of adjusting item damage mid-attack has been refactored - some affected items include the Nullblade and knives. Report any strange happenings with damage numbers. refactor: A few objects have been moved to the new interaction chain - records consoles, mawed crucible, alien weeds and space vines, hedges, restaurant portals, and some mobs - to name a few. fix: Spears only deal bonus damage against secure lockers, not all closet types (including crates) /🆑 |
||
|
|
339616ae78 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
## About The Pull Request People can now pet held mothroaches and pugs if they want to, or use items on them, hopefully without causing many issues. After all, it only took about a couple dozen lines of code to make... ...Oh, did the 527 files changed or the 850~ lines added/removed perhaps catch your eye? Made you wonder if I accidentally pushed the wrong branch? or skewed something up big time? Well, nuh uh. I just happen to be fed up with the melee attack chain still using stringized params instead of an array/list. It was frankly revolting to see how I'd have had to otherwise call `list2params` for what I'm trying to accomplish here, and make this PR another tessera to the immense stupidity of our attack chain procs calling `params2list` over and over and over instead of just using that one call instance from `ClickOn` as an argument. It's 2025, honey, wake up! I also tried to replace some of those single letter vars/args but there are just way too many of them. ## Why It's Good For The Game Improving old code. And I want to be able to pet mobroaches while holding them too. ## Changelog 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
b78fc4ebbb |
Move mafia, CTF, and deathmatch maps into minigame folder (#90356)
## About The Pull Request Repaths all the various minigames to be in the same mapping folder for organization. ## Why It's Good For The Game Being able to find maps is nice. ## Changelog 🆑 map: Move mafia, CTF, and deathmatch maps into minigame folder /🆑 |
||
|
|
894d21e64f |
Improves hitscan projectile chunking (#89616)
## About The Pull Request Hitscan projectiles that run out of dedicated tick time before they hit anything abort their movement, ensuring that firing an emitter beam into space won't cause horrible lag. However, most hitscans also have icons and have visible (albeit unanimated) movement in such a case, making it look like projectile code is exploding as tracers appear only after a rather visible and tangible projectile hits its target. This PR resolves the issue by making hitscans "chunk" their trails in such cases, ensuring that they always look like actual hitscans. Video below has an artificial speed cap on hitscans, to showcase how it'd look during extreme lag. https://github.com/user-attachments/assets/eeac034d-d08e-45b0-b7d2-8589376f1c7d Also some minor hitscan code improvements because I can. ## Changelog 🆑 fix: Hitscan projectiles like emitter beams should look less weird during extreme lag spikes /🆑 |
||
|
|
2ee02682f7 |
Converts most other usages of block() to x/y/z format (#89290)
## About The Pull Request The sequel to https://github.com/tgstation/tgstation/pull/89234 > someone should do the rest at some point guess what, I'm that someone :3 ## Why It's Good For The Game Same reasoning as the previous PR: > less cluttered code is nice, and it should in theory be more optimized as we avoid the need to run min, max, and locate. ## Changelog No user-facing changes |
||
|
|
25eb08420a |
Temporary bodies return players to minds without bodies (#89323)
## About The Pull Request There are a couple of cases where ghost roles that give the temporary body component prevent you from returning to the round when they really shouldn't. The particular cases are: - You entered a temporary body while you had no body, but could be recovered via means such as podcloning - You enter a temporary body, and while in that body, your original body is permanently removed while your mind could be recovered via means such as podcloning - Basketball This PR addresses those cases by allowing the temporary body component to operate with a null `old_body`, and allowing the temporary body component to be given to ghosts whose minds don't have bodies. ## Why It's Good For The Game Erroneous DNRs caused by code oversights are probably very undesirable to the playerbase. ## Changelog 🆑 fix: Joining a minigame or taking certain ghost roles, while you have a mind without a body, will no longer DNR you, just in case you can be resurrected by some means. fix: If your old body is permanently destroyed while you are playing a minigame or as certain ghost roles, you will still return to your character's original mind, just in case you can be resurrected by some means. fix: The basketball minigame now gives its players and referee temporary bodies. /🆑 |
||
|
|
b3085c973a |
Fixes some instances of PostTransfer not using new_parent argument (#88398)
## About The Pull Request Since #87866 PostTransfer now has it's parent set to nil, and instead has a `datum/new_parent` argument supplied to it. Why does the ***post*** transfer proc not have it's parent set yet? Not sure, but some procs (and the documentation) haven't been adjusted yet and this PR fixes that also: fixes #88156 fixes #88325 ## Why It's Good For The Game Fix man good... ## Changelog 🆑 fix: /datum/component/PostTransfer() procs that didn't have their new_parent arguments have now been fixed fix: This means that turning into a Domain gondola shouldn't RR people anymore /🆑 |
||
|
|
b67a0901f2 |
Fix issues discovered via TypeMaker (#87596)
## About The Pull Request Fixes issues with var typing and proc arguments, discovered using OpenDream's WIP TypeMaker feature (using improvements I haven't PR'd upstream yet). ## Why It's Good For The Game Codebase maintenance. |
||
|
|
9f7d6dea62 |
Outfits that put items in your hand now respect if the outfit is visual only (#87355)
## About The Pull Request On a downstream, we have an antagonist, that is a less competent wizards. This antagonist's preview outfit has a beer bottle in their hand, which has caused runtimes, as the bottle did not have any reagents instantiated, and it tried check its length for sloshing. After putting in a check for the `initial` argument of `on_equip`, I have noticed that the problem goes deeper: the various procs that handle putting something in your hand do not pass along if the items is put in your hand as a preview or not. This PR adds a new optional var to these procs, ensuring that unwanted behaviour during previews won't trigger. I also swapped `visualsOnly` to snake case, as it looked inconsistent with the rest of the code style. ## Why It's Good For The Game Making the argument that ensures avoiding side effects during previews work with all kinds of items is good. ## Changelog 🆑 fix: if an outfit puts a reagent container in the preview dummy's hand, it will not try to slosh code: outfits putting items in your hand will respect the visual_only argument /🆑 |
||
|
|
58501dce77 |
Reorganizes the sound folder (#86726)
## About The Pull Request <details> - renamed ai folder to announcer -- announcer -- - moved vox_fem to announcer - moved approachingTG to announcer - separated the ambience folder into ambience and instrumental -- ambience -- - created holy folder moved all related sounds there - created engineering folder and moved all related sounds there - created security folder and moved ambidet there - created general folder and moved ambigen there - created icemoon folder and moved all icebox-related ambience there - created medical folder and moved all medbay-related ambi there - created ruin folder and moves all ruins ambi there - created beach folder and moved seag and shore there - created lavaland folder and moved related ambi there - created aurora_caelus folder and placed its ambi there - created misc folder and moved the rest of the files that don't have a specific category into it -- instrumental -- - moved traitor folder here - created lobby_music folder and placed our songs there (title0 not used anywhere? - server-side modification?) -- items -- - moved secdeath to hailer - moved surgery to handling -- effects -- - moved chemistry into effects - moved hallucinations into effects - moved health into effects - moved magic into effects -- vehicles -- - moved mecha into vehicles created mobs folder -- mobs -- - moved creatures folder into mobs - moved voice into mobs renamed creatures to non-humanoids renamed voice to humanoids -- non-humanoids-- created cyborg folder created hiss folder moved harmalarm.ogg to cyborg -- humanoids -- -- misc -- moved ghostwhisper to misc moved insane_low_laugh to misc I give up trying to document this. </details> - [X] ambience - [x] announcer - [x] effects - [X] instrumental - [x] items - [x] machines - [x] misc - [X] mobs - [X] runtime - [X] vehicles - [ ] attributions ## Why It's Good For The Game This folder is so disorganized that it's vomit inducing, will make it easier to find and add new sounds, providng a minor structure to the sound folder. ## Changelog 🆑 grungussuss refactor: the sound folder in the source code has been reorganized, please report any oddities with sounds playing or not playing server: lobby music has been repathed to sound/music/lobby_music /🆑 |
||
|
|
69176298ed |
Spelling Fixes (#86056)
## About The Pull Request Fixes several errors to spelling, grammar, and punctuation. ## Why It's Good For The Game Improves readability and user experience. ## Changelog 🆑 spellcheck: fixed a few typos /🆑 |
||
|
|
9a9b428b61 |
Wallening Revert [MDB Ignore][IDB Ignore] (#86161)
This PR is reverting the wallening by reverting everything up to
|
||
|
|
00a0d0b890 |
Special radio channels now use bitflags instead of individual vars (#85150)
## About The Pull Request Radios/encryption keys now use a `RADIO_SPECIAL_XXXXX` bitflag for behaviors related to "special" radio channels (Binary, Centcom, Syndie). I decided to do this because I wanted to add a radio channel for pirates and hunters (hence the branch name), but it felt weird adding two more variables. The more I look at the changes I've made here the more I realize that the effort was probably not worth the utility but whatever. This also subtypes some varedited intercoms and makes them their own objects. ## Why It's Good For The Game Compresses a whopping three (3!) variables into a single one. Easier to scale (I guess?). I felt like adding a fourth/fifth variable and just moving on with the original project, but decided "lets do this the unnecessarily hard way instead". ## Changelog 🆑 Rhials code: Radios/encryption keys now use a single variable for "special" frequencies. Please report if you experience any strangeness with accessing/being unable to access the Centcom, Syndicate, or Cyborg radio. /🆑 --------- Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> |
||
|
|
fec946e9c0 |
/Icon/ Folder cleansing crusade part, I think 4; post-wallening clean-up. (#85823)
Hello everybuddy, your number three rated coder-failure here to clean up some mess. This PR accomplishes some of the more major structural clean up changes I wanted to do with /obj/ folder, but decided to wait on until wallening gets merged, and so, time has come. Several things to still be done, although I know these cleaning PR's are quite a load, so will wait for this one to get done with first. ## Why It's Good For The Game Saner spriters, better sprites, less annoyance. Also deleted a whole load of redundancy this time around, a lot of sprites which existed simultaniously in two places now got exit their quantum superposition. |
||
|
|
e4adc1a939 |
Bow Update: Fletching instruction manual, bows using projectile damage multipliers, unhardcoded bow sprites, hot pink death (#84435)
## About The Pull Request Adds a new crate to the Service section of cargo. The Fletching and Bow-Making Starter Kit. Comes with some materials and a fletching instruction manual. The manual teaches you how to make shortbows (18 force from normal arrows utilizing projectile multipliers), arrows, holy arrows (but you need a divine bow to make them), quivers (but they only hold 10 arrows), plastic arrows and violins. For reasons.  ### Fixes Bows now no longer utilize hardcoded sprites for their loaded sprite. Now they use overlays. Bows properly become undrawn once fired. No longer can your bow magically launch arrows by sheer force of will. ## Why It's Good For The Game Initially I just wanted to provide a way for bow wielding chaplains to produce additional arrows for their bow. Running out of those always felt pretty lame. But then I got to thinking; actually, I kind of want to LARP sometimes as an archer. I think that'd be kind of goofy and fun. So I bundled that together into a solution for both. The shortbow is really, really not meant to be a meaningful weapon. It's just kind of silly, and meant to let people pretend to be Robin Hood and occasionally hurt someone in a workplace accident. I'm particularly thinking of clowns being the perfect users for this with their clumsy trait. I will make this weaker if I have too. (I am not, at this moment, redoing flaming arrows okay? I saw the code comment. I know. Not right now. @tralezab, if you have any flaming arrow sprites lying around, please let me know.) ## Changelog 🆑 add: Fletching starter kit! Make your own bow, shoot your friends in an unfortunate workplace accident. Replace all those holy arrows you lost. fix: Bows now properly undraw once they have fired an arrow. code: Bows now utilize overlays in order to display loaded arrows. Unique overlays per arrow. /🆑 |
||
|
|
69b673bba6 |
Adds more "curated" version of human randomization (for humonkeys, corpse spawners, and fresh characters) (#84443)
## About The Pull Request Basically, adds a version of `randomize_human` that's a tad more curated, IE, primarily picks results to create a more "coherent" result than full randomization. Shown here: Humans, Lizards, Felinids. Looks a bit boring, but that's the point.  Non-humans I left almost entirely untouched, as they generally form a more "coherent" mob from pure randomization already. ## Why It's Good For The Game Basically just aiming to perform a more "consistent" style for humonkeys and corpses. For monkeys, it doesn't make the most sense when they pop up with a giant red afro. For corpses, it's a bit hard to feel immersed in the ruins when they've all got pink and green mustaches. ## Changelog 🆑 Melbert add: Humonkeys and random corpse spawns now look more... human. /🆑 |
||
|
|
227cdd2c7c |
[NO GBP] Patches & renaming for NO_DECONSTRUCTION flag (#82547)
## About The Pull Request 1. Renames `NO_DECONSTRUCTION` -> `NO_DEBRIS_AFTER_DECONSTRUCTION`. As the name suggests when the object is deconstructed it won't drop any items/debris. After my last refactor for this flag it now serves a new purpose so its name has been changed to match that 2. Fixes objects that are now using `NO_DECONSTRUCTION` incorrectly. Some of these changes include - Removing the flag in objects where there are no means to deconstruct them (e.g. jukebox, hydroponics soil, flora etc) - Replacing the flags old purpose by overriding its tool procs so that it regains its old behaviour(e.g. You once again cannot deconstruct ctf reinforced tables, survival pods, indestructible windows etc) ## Changelog 🆑 code: renamed `NO_DECONSTRUCTION` to `NO_DEBRIS_AFTER_DECONSTRUCTION` so its name matches its intended purpose fix: fixes some items that incorrectly used `NO_DECONSTRUCTION` prior to its refactor, meaning makes some objects non deconstructable again /🆑 |
||
|
|
fa31403353 |
LateInitialize is not allowed to call parent anymore (#82540)
## About The Pull Request I've seen a few cases in the past where LateInitialize is done cause of the init return value being set to do so for no real reason, I thought I should try to avoid that by ensuring LateInitialize isn't ever called without overriding. This fixes a ton of machine's LateInitialize not calling parent (mechpad, door buttons, message monitor, a lot of tram machines, abductor console, holodeck computer & disposal bin), avoiding having to set itself up to be connected to power. If they were intended to not connect to power, they should be using ``NO_POWER_USE`` instead. Also removes a ton of returns to LateInit when it's already getting it from parent regardless (many cases of that in machine code). ## Why It's Good For The Game I think this is better for coding standard reasons as well as just making sure we're not calling this proc on things that does absolutely nothing with them. A machine not using power can be seen evidently not using power with ``NO_POWER_USE``, not so much if it's LateInitialize not calling parent. ## Changelog 🆑 fix: Mech pads, door buttons, message monitors, tram machines, abductor consoles & holodeck computers now use power. /🆑 |
||
|
|
9ac81e1a64 |
New station trait job: Human AI (#81681)
## About The Pull Request This PR does many things, I'll try to explain the basic/background stuff to the main thing first: 1. Adds a new remote that allows a human to function like an AI. It controls a fly that will fly around the station slowly, and when it reaches a machine then the person can interact with it as if they were an AI. This required changing a lot of silicon/AI checks with one that also checks for this remote, and some messing with shared ui state. 2. Moves req_access from the obj and bot to ``/atom/movable`` which lets it be shared between the two, no more copy-paste and one side lacking features/checks/signals the other has. 3. Adds a check for AI config for AI-related station traits, which was lacking prior Now for the good part... Adds a new station trait that replaces the AI with a Human. This person is equipped with an AI headset (including Binary), an advanced camera console, an omni door wand, the machine controller, and their laws. They are immune to the SAT's turrets (even if set to target borgs) and are slow outside of the SAT, mimicing the actions of the AI. They interact with the world through their advanced camera console, which allows them to do most AI stuff needed, and the holopad they can connect to without having to ring first (like Command can). They are given a paper with the laws they must follow, but since they are human they are able to bend it. Cyborgs that run the default lawset are "slaved" to them via an unremovable law 0, so the Human AI can bend the laws if they really need to (for their own survival n such), and make the cyborgs obey their commands above laws, but in general this shouldn't be a frequent occurrence. This does take into account the unique AI trait, so it's not guaranteed Asimov. When this station trait rolls, all Intellicards, AI uploads, and AI core boards are destroyed and are unresearchable. They can be spawned by admins in-game if necessary. Maybe in the future we can also exclude Oldstation from this but I haven't really decided. Extra perks: Human AI spawns with a Robotic voicebox (unless they are a body purist) and teleport blocking implant, so they can't use teleporters to bypass their on-station slowdown. They also have an infinite laser pointer that can be used to blind through their camera console. This is unfortunately nerfed from the recent borg balance PR that removed its stun. This was meant to be the alternative to no longer being able to permanently lock borgs down like AIs can (or more than one, for that matter). They aren't affected by Roburgers, Acid, and Fuel's toxicity. Bots salute them like they do Beepsky (which is now a trait) They spawn with SyndEye to replace the AI's tracking ability They do not have a bank account ### The machine remote The machine remote has a little fly in it that flies to the machines it is pointed to, working as the arms and legs of the Human AI. It scans the machine and punches in the action the AI does, and is how the AI accesses basically anything. This fly slowly moves from one machine to the next, and can be recalled with Alt Click. It works on machines and bots. ### Video (Low quality to fit Github) https://github.com/tgstation/tgstation/assets/53777086/e16509f8-8bed-42b5-9fbf-7e37165a11e8 ## Why It's Good For The Game I've seen a funny screenshot one day of a person replacing the AI by using a bunch of door remotes, camera console, crew monitoring console, and a few other things. I've been thinking about that for a few years and really wanted to make it official if not easier to make possible, because it is an incredibly funny interaction. This makes it a reality, and while they aren't as powerful as regular AIs, I think it makes for better and funnier in-game moments. With the same weight as Cargorilla (1), I hope this wouldn't be rolling too often and ruin rounds, but instead show off the different capabilities that Humans and AIs can do, to do the job of an AI. You win some you lose some. ## Changelog 🆑 JohnFulpWillard, Tattax add: Adds a new station trait job: The Human AI. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
f1a3fc839f |
Replaces /obj:: -> parent_type:: (#81146)
## About The Pull Request This just seemed like a minor error with the new syntax that popped up: The intent of these seem to be "take our obj flags and add `NO_DECONSTRUCTION` to it", which was perfectly serviceable in a majority of places, as the parent type had the same obj flags as `/obj`. But in a small handfull of places (such as any table subtypes) this was not the case, and it caused some objects to have missing flags that they were otherwise intended(?) to inherit. So I replaced `/obj::` with `parent_type::` meaning rather than using the base obj flags and then adding `NO_DECONSTRUCTION`, they use their parent type's obj flags and then add `NO_DECONSTRUCTION`. ## Changelog 🆑 Melbert fix: You can build on some niche tables again, such as the Wabbajack Altar. /🆑 |
||
|
|
279904e079 |
Saves some free lag by removing some in area (in world) loops (#80644)
## About The Pull Request Goes through and changes some `in area` / `in a` loops to use `get_contained_turfs` to cut down on `in_world` loops. Saves some free lag. ## Changelog 🆑 Melbert fix: Some things which affect everything in an area are less laggy, the "all lights are broken" station trait especially /🆑 |
||
|
|
f34174414d |
Cleans up some extra args in Destroy() (#80642)
## About The Pull Request After https://github.com/tgstation/tgstation/pull/80628, these shouldn't be needed anymore right? ## Why It's Good For The Game Cleans up some vestigial code ## Changelog EDIT: Not player-facing. |
||
|
|
c1d68698fb |
Micro-optimize qdel by only permitting one parameter (#80628)
Productionizes #80615. The core optimization is this: ```patch - var/hint = to_delete.Destroy(arglist(args.Copy(2))) // Let our friend know they're about to get fucked up. + var/hint = to_delete.Destroy(force) // Let our friend know they're about to get fucked up. ``` We avoid a heap allocation in the form of copying the args over to a new list. A/B testing shows this results in 33% better overtime, and in a real round shaving off a full second of self time and 0.4 seconds of overtime--both of these would be doubled in the event this is merged as the new proc was only being run 50% of the time. |
||
|
|
260b98c277 |
Alien nests and some other stuf can be hit again. (#80418)
## About The Pull Request Another small issue fixed. Thanks Melbert for telling us what's wrong with it. EDIT: other objects were rendered unhittable by that flags refactor PR. ## Why It's Good For The Game Fixes #80311. I made the xmas tree indestructible because the comment to the `NO_DECONSTRUCTION` flag didn't make a load of sense since that doesn't stop it from getting destroyed anyway. ## Changelog 🆑 MrMelbert, Ghommie fix: Alien nests, and some other stuff, can be physically attacked again. balance: x-mas trees (the ones with presents), are indestructibles. Truly protected by a yuletide spirit. /🆑 |
||
|
|
71a1fee2f1 |
Explodes device.dmi (#80025)
## About The Pull Request I woke up today and thought 'what would be easy thing to do today so I can say I've done something?'. Then I remembered I saw several gangtool usages the time I split radio up, and I could remedy those. 7 hours later, device.dmi is split in a folder of its own, and I've also given unique sprites to door remotes and landing desginators. ## Why It's Good For The Game The device.dmi was kind of a mess. ## Changelog 🆑 /🆑 |
||
|
|
5ce9d5806d |
Scopes NODECONSTRUCT_1 from flags_1 to obj_flags (#80104)
This flag only worked on the `/obj/structure` and `/obj/machinery` level, so let's rescope it from `flags_1` and put it where it belongs - `obj_flags`. Bitflag operators should be scoped to their subtype specific bitfield, not really useful to have this take up a spot on the `/atom` level if absolutely nothing other than `/obj`s use it. |
||
|
|
bbe440b3d6 |
More standardization for ghost notifications (READY) (#79596)
## About The Pull Request I'm still not satisfied with how ghost notifications work. This gives every notification with a source (99% of all notifications, in other words) a link to jump/orbit. Currently, notifications with "play" interactions would only get the interact link, so jumping to the source was pretty annoying. It removes posting the entire message in the alert tooltip, as some got pretty lengthy and it didn't seem to fit. To replace this, they will always use headers After:    NOTIFY_JUMP and NOTIFY_ORBIT have been merged, since the only difference seems to be whether it's a turf. The result shaves off some redundant lines of code, since most-every usage of notify_ghosts uses NOTIFY_ORBIT. ## Why It's Good For The Game More standardization for the ghost notification system. Adds a few alert headers that never had them. All in all, makes it easier for creators to throw alerts at ghosts ## Changelog 🆑 qol: Nearly every ghost alert should now feature a "VIEW" button, even those with click interaction. del: Ghost alerts no longer show the entire message in the tooltip, instead have been replaced with titles. /🆑 |
||
|
|
08cbf579fe |
Fixes some shielded component jank (#79674)
## About The Pull Request If you attempted to use the shielded component properly (applying it in `Init`), it would not work because the equipped signal was improperly passing its arguments to `set_wearer`. The only reason why this worked now is that every consumer added the component after it was `equipped`... usually in `equipped`. This also meant shielded items that added it in equipped were open to an exploit, allowing you to reset the charges by unequip / re-equip. ## Changelog 🆑 Melbert fix: Fixes some potential exploits and issues involving shielded equipment. /🆑 |
||
|
|
3c7005a37c |
Converts some notify_ghosts args to bitflags, multilines all notify_ghosts calls (#79320)
## About The Pull Request This helps clean up my favorite helper proc in the whole codebase, `notify_ghosts()`. The notify_suiciders, ignore_mapload, and flashwindow args are GONE. They have been replaced with the notify_flags bitflag argument. This was intended to make deadchat announcements a bitflag argument too, but those got reverted right before I originally wanted to submit this PR. The on-screen popup now shows the notification body when you hover it with your mouse again. The format is now `[notify_ghosts message] -- [click action (orbit/jump/play)]` Every single `notify_ghosts()` call has been changed to multiline format and has been given trailing commas. Pretty! ## Why It's Good For The Game Cleans up a proc that is very popular and going through a lot of changes at the time. Allows for further flexibility when this proc inevitably gets tweaked or improved. 12 -> 10 args is an improvement, and it doesn't impact the helper's flexibility at all. ## Changelog 🆑 Rhials code: The notify_ghosts proc has been cleaned up. Please report any abnormal changes in deadchat notification behavior. qol: The on-screen deadchat popups now contain the notification blurb when hovered with your mouse again. /🆑 |
||
|
|
93ec5a72f7 |
A comprehensive refactor / cleanup of bullet_hit and on_hit to cut out a single bad species / mob proc (#79024)
## About The Pull Request - Refactored `bullet_act`. Adds `should_call_parent` and refactors associated children to support that. - Fixes silicons sparking off when hit by disabler fire. - Desnowflakes firing range target integrity and cleans up its bullet-hole code a bit. - Cleans up changeling tentacle code a fair bit and fixes it not taking off throw mode if you fail to catch something. - The Sleeping Carp deflection is now signalized - Nightmare projectile dodging is now signalized and sourced from the Nightmare's brain rather than species - Refactored how cardboard cutouts get knocked over to be less snowflaked / use integrity - Also adds projectile `on_hit` `should_call_parent` and cleans up a bit of that, particularly their arguments. - On hit arguments were passed wrong this entire time, it's a good thing nothing relied on that. ## Why It's Good For The Game This is cringe. https://github.com/tgstation/tgstation/blob/1863eb2cd82e7cee4fdfff37b42d3fd0c7edd797/code/modules/mob/living/carbon/human/_species.dm#L1430-L1442 Bullets should overall act more consistent across mob types and objects. ## Changelog 🆑 Melbert fix: Silicons don't spark when shot by disablers fix: Changelings who fail to catch something with a tencacle will have throw mode disabled automatically fix: Fixes occasions where you can reflect with Sleeping Carp when you shouldn't be able to fix: Fixes some projectiles causing like 20x less eye blur than they should be refactor: Refactored bullet-mob interactions refactor: Nightmare "shadow dodge" projectile ability is now sourced from their brain /🆑 |
||
|
|
b527d465ec |
Observers can now play CTF again. (#79000)
## About The Pull Request #78957 accidently made it so CTF could only be played by people with mobs to return to after dying. I've made it so those who don't have mobs to return to (e.g. roundstart observers) can play CTF again. ## Why It's Good For The Game Everyone should be allowed to play CTF without needing to engage with the space roleplay game we've strapped on. ## Changelog 🆑 fix: Players without bodies to return to can play CTF again. /🆑 |
||
|
|
b764f0e8c3 |
Improves code for power usage of energy weapons (#78677)
## About The Pull Request Currently, the power cost for each shot is just written as a number, and you have to know the size of the cell to know what this number means. If you just see than a laser gun costs 83 energy, then it's not clear that this translates to 12 shots unless you know that the cell holds 1000 units of energy. Now, all energy weapons (except those that cost 0 energy and one that costs 10000) use a macro define in the form of `LASER_SHOTS(X)`. So the laser gun would example be `LASER_SHOTS(12)`, to clearly convey that it gets 12 shots out of a full charge. I also removed the `laser/hellfire/antique` subtype because it had no mechanical difference from `laser/hellfire` whatsoever. ## Why It's Good For The Game Readable code is good. ## Changelog No player facing changes. |
||
|
|
78463cda4c |
Manifest Rune/Capture the Flag no longer DNR you. Blocks suicides in CTF areas (#78957)
## About The Pull Request You can return to your old body after playing CTF or being summoned as a manifest rune cult ghost. This is done by slapping the temporary_body component onto cult rune summons and CTF bodies. This also extends to Medisim Shuttle knights. This also blocks suicides from being performed in CTF areas. Ghosting and "manually" suiciding is, of course, still an option. ## Why It's Good For The Game There's no reason these two cases should lock you out of being revived. They both also dust bodies on death or after their job is done, making them a perfect fit for this component. Blocking suicides ensures that all bodies are properly "cleaned up" by the death dusting process. Gun suicides, for instance, would remove the brain from the body and bypass cleanup. This not only prevents the user from being returned to their old body, but likely has other unforeseen problems that leaving a body behind might cause. ## Changelog 🆑 Rhials qol: You can now return to your old body after being summoned by a manifest rune. qol: You can now return to your old body after dying in CTF. qol: You can now return to your old body after dying in the Medisim Shuttle battle area. qol: You can no longer suicide in CTF areas, for integrity purposes. /🆑 |
||
|
|
15efbf64a5 |
Grand Ritual Finale: An end to death (#78497)
## About The Pull Request Adds a new Wizard Ritual Finale effect which makes everything immortal. By this I mean, 10 seconds after death a ghostly image of them will appear somewhere near where the corpse was and then 50 seconds after that the mob will return to life at that location. This applies to every mob, everywhere. This is likely to cause a little bit of disruption to the rest of the round, so you can only do it after at least 30 minutes have passed. After that the crew will have to figure out how to deal with their new gift of immortality. It will involve throwing people into chasms and lava, probably.  Here's a gif sped up for example purposes. You can escape from the cycle of death and rebirth via suicide, purely because it's pointless to try and force people to play the video game if they don't want to. Also I split all of these effects into their own files, the only new code for those is in `immortality.dm` shout out to Vekter for distracting Oranges while I posted this wizard-related PR so I didn't get disapprovingly reacted for posting magic shit (yet) ## Why It's Good For The Game This might be _too_ much but I want to see what would happen. It will allow us to simulate whether polite society can survive when violence has no consequences. ## Changelog 🆑 add: Wizards who complete the grand ritual can now gift everyone with eternal life /🆑 |
||
|
|
803f9edabe |
Few CTF changes. (#77533)
## About The Pull Request - Fixed that if you chose to press a cross while toggling instagib mode it will react as `Yes` instead of just canceling - Added description for assault class (with shotgun and rocket gloves) so you know that you have faster moving speed and lover armor. - Fixed that when you already chose a team and try to click on other teams spawners you'll be asked to consider other teams to make them equal. - Decreased time of recharge start delay from 20 seconds to 12, because when it takes soo much to regen your shield its just faster to die and respawn with a new one. - Added 1.7 scope to marksmans rifle. - Little cleanup. **Everything is arguable.** **Ask if something is unclear or confusing.** ## Why It's Good For The Game Less buggs, less wondering why do you die in 1 hit and others don't, a little bit of consistency. ## Changelog 🆑 qol: CTF assault class' (with shotgun and rocket gloves) description now mentions that it has low armor and increased moving speed. balance: Decreased CTF recharge start delay for shields from 20 seconds to 12 seconds. balance: Marksmans rifle now has 1.7 scope. fix: When toggling instagib mode for CTF and pressing a cross now will just cancel instead of proceeding. fix: When clicking on other CTF teams spawners and after you already chose your team no more will ask you to join some other team to make them even. /🆑 |
||
|
|
69827604c4 |
Improves the RPG loot wizard event. (#77218)
## About The Pull Request As the title says. Adds a bunch more stat changes to various different items and a somewhat simple way of modifying them whilst minimizing side-effects as much as possible. Added a new negative curse of polymorph suffix that can randomly polymorph you once you pick up the item. Curse of hunger items won't start on items that are not on a turf. Curse of polymorph will only activate when equipped. Bodyparts, two-handed melees, bags, guns and grenades, to name a few, have a bunch of type-specific stat changes depending on their quality. Some items won't gain fantasy suffixes during the RPG loot event, like stacks, chairs and paper, to make gamifying the stats a bit harder. I'm sure there'll still be other ways to game the event, but it's not that big of a deal since these are the easiest ways to game it. High level items also have a cool unusual effect aura ## Why It's Good For The Game Makes the RPG item event cooler. Right now, it's a bit lame since everything only gains force value and wound bonus on attack. This makes the statistic increases more type-based and make it interesting to use It's okay for some items to be powerful since this is a wizard event and a very impactful one too. By making the curse of hunger items not spawn on people, it'll also make it a less painful event too. ## Changelog 🆑 add: Expanded the RPG loot wizard event by giving various different items their own statistic boost. /🆑 --------- Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> |
||
|
|
69a7f56cbc |
Splits ballistic firearms "mag_type" into "accepted_magazine_type" and "spawn_magazine_type", fixing a few funny magazine bugs (#76973)
## About The Pull Request As the title says, mag type has been split into two variable that do different things: Accepted magazine type handles what magazines that gun will accept, type and any subtypes. If spawn magazine type isnt defined, then it will be made equal to accepted magazine type to prevent having to double define magazines on every gun ever. Spawn magazine type is separate from accepted magazine type, spawn magazine type is what magazine the gun will actually spawn with. This exists because there are a few weapons which are made to spawn with special magazines, that can't use normal magazines anymore. For example, the riot dart pre-loaded donk soft pistol can only ever be reloaded with the riot subtype of donk soft magazines at the moment. This isn't typically something people notice because new magazines are usually not a thing people come by with these specific weapons, but its a problem I noticed while coding some weapons. ## Why It's Good For The Game In short, certain weapons (mostly donksoft weapons, but there's a single traitor pistol subtype that spawns with fire ammo) will no longer be limited to the exact subtype of magazine they spawned with, allowing them to use the normal versions of those magazines as well. ## Changelog 🆑 refactor: The mag_type variable on guns has been split between accepted_magazine_type and spawn_magazine_type, allowing weapons to safely spawn with subtypes of their normal magazines without breaking the weapon fix: Several weapons that spawned with special magazines, the riot dart pre-loaded donk pistol for example, will now be able to accept normal donksoft magazines that don't spawn loaded with riot darts. /🆑 |
||
|
|
ad43eece56 |
Standardizes a majority of the GAGS configs for Clothing (#76384)
## About The Pull Request
Yikes this stuff is messy to work with...
Fairly comprehensive changelist:
- Removed a LOT of redundant .json files, huzzah!
- Moves the Large Scarf into the normal Scarves .json since they're both
2 component states and can thus share a file
- Renamed almost every single config to have the same naming schemes
("Name (Type)")
- Subtyped a majority of the configs to related ones, inheriting where
possible
- Renamed some icons to account for now-inherited .jsons where needed
---
**A relevant question for coders/maintainers:**
As of now, the .json configs are structured with a few rules in place:
- a .json config's states MUST have the same amount of colored component
states
- a .json config can not have states that are not buildable via a linked
.dmi
The second one is proving troublesome; namely, for toggleable clothing.
The object sprites of a majority of these don't change, but the worn
sprites have _d added to the end. For a majority of the cases I've been
able to just share a .json for the object and worn GAGS configs, but for
every toggleable item (such as jumpsuits) they need to keep their own
separate .json just to add a new state.
I'm not knowledged in coding proper systems like this, so I was just
wanting to ask, is there a way that GAGS's .json configs can have
toggle-states without assembling one for the objects?
## Why It's Good For The Game
Code standardization and legibility yahoo
## Changelog
🆑
refactor: refactored some code relating to greyscale clothing - please
report relevant issues on github!
/🆑
|
||
|
|
f2fe624ca4 |
Stops CTF players delivering the flag to the flag (#76789)
## About The Pull Request Adds more warnings telling CTF players the flag has to be taken to the controller to capture it by: Text when picking up the flag Text and angry buzz when trying to hit another flag with it ## Why It's Good For The Game Players continue to obliviously drop flags on the ground on top of their own flag despite being told what to do when joining the match, so this information needs to be reiterated during the match when relevant to the player. ## Changelog 🆑 qol: CTF has more reminders of how to capture flags. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
a373b4cb08 |
Icon folder cleaning wave one (#76703)
## About The Pull Request Due to a mental breakdown caused by unfathomable abomination that is icons folder, I swore to myself to one day clean it. Today is kind of that day. Been at it for around 6, you gotta understand I need a rest. I tracked most changes in descriptions of commits if you are looking for details. ## Why It's Good For The Game Saner spriters make better sprites. And also, just helps keep track of things. ## Changelog 🆑 image: added sprites for different variants of scrolls. image: modified couple posters with ghost pixels. /🆑 --------- Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com> |
||
|
|
6b007f758b |
Replaces ammo_casing/caseless and bullet/reusable with elements. (#76335)
The reusable and caseless types only purposes are the behaviors of deleting the casing when fired and spawning a new object when the projectile ultimately reaches its maximum range or hits a target, both of which are easily "elementizable". Also, I don't like those barely filled sub-folders in the projectile module, and the fact we've divergent reusable and single use arrow types. |
||
|
|
6e5ae1cc24 |
Fixing a few minor maintenance hindrances. (#75594)
## About The Pull Request See the title and relative issue reports mentioned in the section below. ## Why It's Good For The Game Closes #75461, closes #75462, closes #75467. ## Changelog 🆑 fix: Capturing CTF control points no longer requires the active hand to be empty. /🆑 |