mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-18 20:53:55 +01:00
60e3451960cfc1d40597dcafe7fc6165d6c012e3
438 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
20118ad747 |
Converts a bunch of time/delay vars to use time defines (#92495)
## About The Pull Request Converts as many time vars expressed in deciseconds as I could find to use time defines. ## Why It's Good For The Game Makes these values neater and more readable. ## Changelog 🆑 code: Converted a lot of time-based variables to be expressed with time defines. /🆑 # Conflicts: # code/modules/clothing/head/hat.dm # code/modules/clothing/shoes/boots.dm # code/modules/clothing/suits/utility.dm |
||
|
|
8b0d22d14b |
General maintenance for vending machines (#91987)
## About The Pull Request **1. Code Improvements** - Removed unused vars `coin`, `bill` & other stuff - Removed duplicate definition of `on_deconstruction()` - Autodoc for a lot of procs - Merged smaller procs into larger ones to avoid scrolling in the code editor & reduced overhead - Split the vending machine file into several smaller files for easy code management **2. Qol** - Implemented vending machine ads. They now display random stuff on the UI https://github.com/user-attachments/assets/9720ea60-f268-4ca2-940d-243e3d0ac75f - More error messages for custom & normal vendors as to why an item could not be loaded - Custom vending machines can be deconstructed safely via crowbar without any explosion only after unlinking your account from the machine else you get the same explosion. Upon deconstruction all loaded items are moved into its restock canister meaning the machine can be safely moved with all its products just like a regular vending machine to a new location **3. Fixes** - Fixes #81917. Any returned items in the vending machine now show up as free in the UI & won't cost credits to buy them - Fixes #87416. Custom & normal vendors now keep track of products removed via `Exited()` so the UI gets always updated - Fixes #83151. Items with different names & custom prices now show up in unique rows - Fixes #92170 Custom vendors now show the correct icon for inserted items - Closes #80010. From the above fix this situation is impossible so it's safe to close this as a duplicate - Closes #78016 same problem as above with `Exited()` duplicate - Custom vendors can now actually be used by players who are not the owner instead of locking down the UI - Vending machines keep track of `max_amount` of stocked items by hand as well & not just RPED **4. Refactor** - Separates custom vending machine code from normal vending machine code. This prime Marely focus on the `vending_machine_input` list which now only exists inside the custom vending machine - Compressed the UI code for vending machine so both custom & normal vending machines can send the same data instead of separating the 2. Overall less code - Moved attack chain from `attackby()` to `item_interaction()` for loading items ## Changelog 🆑 code: cleaned up vending machine code qol: vending machines now have more product slogans you never heard before qol: custom & normal vending machines now have more feedback on why an item could not be loaded qol: vending machines now display random ads on the UI qol: custom vending machines can be deconstructed via crowbar safely only after unlinking your account from the machine. qol: upon deconstructing a custom vendor all its products are moved into its refill canister & it will be restored when reconstructing the machine elsewhere fix: Returned items to the vending machine now show up as free in the UI and won't be greyed out if you don't have credits to get them back fix: items that leave the vending machine by any means will update the UI in all cases fix: loading items by hand to the vending machine now respects the max_amount for that category fix: custom vendors can now actually be used by players who are not the owner thus enabling them to transfer credits to the owner during purchases & basically they do their job again fix: custom vendors now show the correct icon for inserted items fix: Items with different names & custom prices now show up in unique rows in custom vendors refactor: separated custom & normal vending machine code. Reduced UI code & improved attack chain /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> # Conflicts: # code/modules/vending/_vending.dm # tgui/packages/tgui/interfaces/Vending.tsx |
||
|
|
1c0ac21cb4 |
Fixes the issue of usr pointing to admins by making Trigger pass down clicker (#92354)
## About The Pull Request
Fixes the issue of usr pointing to admins by making Trigger pass down
clicker, as usr is fucky and can be passed down by other unrelated
procs. Fun.
Added the clicker arg to all usages of Trigger as well
Also changes isobserver check in antagonist ui_act code that prevents
observers from clicking UI's instead to check if the ui.user is
owner.current
## Why It's Good For The Game
Fixes admins giving heretic to people opening the heretic UI for the
admin instead
(cherry picked from commit
|
||
|
|
5e8214e464 |
Adds some throwing datum nullchecks (#91720)
## About The Pull Request A few places seem to call `hitby` or `throw_impact` without a throwing datum to mimic the effect of colliding with something, which is cringe, but I guess we should support it. So we need to nullcheck for `get_thrower`, else it runtimes and cancels the whole proc. ## Changelog 🆑 Melbert fix: Glass shards from colliding with vendors or glass table hurt you again. /🆑 |
||
|
|
ef5b60a920 |
Stacks check for invalid amounts (#91656)
## About The Pull Request Alleviates #91603 As in it does not fix it because i have not been able to reproduce it. It now checks for invalid values and defaults to `amount`(which is 1) during `Initialize()` and not null so we don't have to pass the number `1` when creating a single sheet. A stack trace is thrown for <= 0 sheet amounts so we can debug & fix stuff ## Changelog 🆑 code: stacks error on invalid amounts, removed manual passing of number `1` when creating a single stack in many cases /🆑 |
||
|
|
4f76587e68 |
Un-hardcode door ID on derelict vault door computer (#91528)
## About The Pull Request Change the code for the Russian derelict vault to use a var instead of having a hardcoded value for the door ID to link to, also change the default value to a define ## Why It's Good For The Game Enables mappers and var editors to make use of these things for shenanigans ## Changelog 🆑 code: the russian derelict vault computer now uses a variable for the door id /🆑 |
||
|
|
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. /🆑 |
||
|
|
9ef0768b1c |
Removes a couple of duplicate gag map_icons + fixes the gags_recolorable component + most lootpanel gags previews (#91341)
## About The Pull Request Turns out there were a couple of black mask subtypes that I missed as well as a prisoner uniform subtype. Also fixes some bugs that are not related to the map icon pr to further improve the situation with GAGS previews. ## Why It's Good For The Game Smaller .dmis, working previews ## Changelog 🆑 fix: spraycan can now be used to recolor the gi, glow shoes, striped dress, H.E.C.K. suit fix: most GAGS items should now be showing up in the lootpanel again /🆑 |
||
|
|
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.   |
||
|
|
655b66bdd0 |
Adds automatic GAGS icon generation for mapping and the loadout menu (#90940)
Revival of https://github.com/tgstation/tgstation/pull/86482, which is even more doable now that we have rustg iconforge generation. What this PR does: - Sets up every single GAGS icon in the game to have their own preview icon autogenerated during compile. This is configurable to not run during live. The icons are created in `icons/map_icons/..` - This also has the side effect of providing accurate GAGS icons for things like the loadout menu. No more having to create your own previews.  <details><summary>Mappers rejoice!</summary>   </details> <details><summary>Uses iconforge so it does not take up much time during init</summary>  </details> --- this still applies: Note for Spriters: After you've assigned the correct values to vars, you must run the game through init on your local machine and commit the changes to the map icon dmi files. Unit tests should catch all cases of forgetting to assign the correct vars, or not running through init. Note for Server Operators: In order to not generate these icons on live I've added a new config entry which should be disabled on live called GENERATE_ASSETS_IN_INIT in the config.txt No more error icons in SDMM and loadout. 🆑 refactor: preview icons for greyscale items are now automatically generated, meaning you can see GAGS as they actually appear ingame while mapping or viewing the loadout menu. /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
bc2215667f |
Re-refactors batons / Refactors attack chain force modifiers (#90809)
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). 🆑 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) /🆑 |
||
|
|
7728ca19e9 |
Adds a new expansion card to nukie base, and buffs nukie ordnance (#90967)
## About The Pull Request Rearranges some stuff in nukie base and adds a freezer line into the chamber, with a electrizer for hydrogen. Adds a pipe scrubber so nukies can clean the pipeline out faster and adds a new keycard the janitorial closet for 10 TC coming with neccesary janitor equipment and a water vapour canister!  ## Why It's Good For The Game Crew can already make hydrogen pretty fast and usually suicide bomb nukies with it, this allows nukies (who think a little out of the box to do the same with the crew, adding more setups possible with the ordnance section and some quality of life aswell like a door letting the person trough it ## Changelog 🆑 Ezel add: Nuke ops can now buy a keycard to access their new custodial closet! map: Rearranges nuke ordnance room, and adds the custodial closet /🆑 |
||
|
|
251d23530e |
Changes all uses of notify_ghosts to use the real names of mobs (#90919)
## About The Pull Request Quite simple - this changes every direct mention of a mob in a `notify_ghosts` message to use `[mob.real_name]` instead of just `[mob]` ## Why It's Good For The Game makes things less confusing - ghosts can see easily their actual identity anyways, so it's not like there's much of a reason _not_ to do this. ## Changelog 🆑 qol: Ghost notifications will now use the real names of mobs when something happens (i.e no more "Unknown has completed an ascension ritual!") /🆑 |
||
|
|
1428f663e0 |
Part 4: Storage Improvements (#90783)
- Address https://github.com/tgstation/tgstation/pull/90476#discussion_r2051701283. Makes pill bottle code cleaner - Datumized some more storage values(monkey guncase toolbox & crafter toolbox) making their init slightly faster - Moved all standard storage subtypes(bags, boxes, lockboxes etc) that is scattered across various files & folders in the codebase into their respective files under `code/game/objects/item/storage` folder. This means for e.g. if you want to see all boxes in the game you can find them in `code/game/objects/item/storage/boxes` folder & don't have to go looking for hidden subtypes in various module files or folders where they were hidden away. Makes looking for stuff & modifying these storages much saner & easier 🆑 code: organized storage subtypes under the same files & folders /🆑 --------- Co-authored-by: _0Steven <42909981+00-Steven@users.noreply.github.com> |
||
|
|
6e17e9b62b |
Removes 'thrownby' var on items (#90877)
## About The Pull Request Fully removes thrownby as a var on items, and is now instead handled by throwingdatums' ``get_thrower()`` proc Also replaces the early return for throwing things at yourself (it now only prevents the call for check_block and therefore hit reaction stuff), since the only way to throw things at yourself is with boomerangs, which currently only works because it doesn't pass you as the thrower for boomerang's return Speaking of, boomerangs now see the thrower as thrower on returns Before (Boomerangs don't pass you as the thrower, so it shows you as being hit by nothing):  After (Boomerangs pass you and you can affect yourself, so it sees you hitting yourself & it still batons you):  This is gonna be used for https://github.com/tgstation/tgstation/pull/90689 as well. ## Why It's Good For The Game Better logging for boomeranged items, removes a deprecated var and better consistency for thrown items leaving better readability. ## Changelog 🆑 admin: People throwing boomeranged items and hitting themselves now logs it as them hitting themselves (rather than being hit by the air). /🆑 |
||
|
|
d315286ec3 | Readds Cloning (#90754) | ||
|
|
b296d71625 |
Aquariums have now three different modes (Manual/Assisted/Stasis) (#90605)
## About The Pull Request This PR replaces the toggleable safe mode with Manual, Assisted and Stasis. Manual and Stasis mode works much like the old safe mode being off and on respectively. The real addition here is the new default assisted mode, which automatically sets fluid and temperature based on what combination of these two settings would keep the most fish alive. It can also temporarily enable stasis if over half of the fish population is at risk of dying. The main difference with stasis is that it doesn't necessarily prevent fish death if it's a minority of the general population, rather just make aquarium easier for players to manage. Also added a line about fluid and temp when examining aquariums. Still have to test it, definitely a WIP. ## Why It's Good For The Game I want to make aquariums a bit easier and more accessible, since the benefits are fairly meager for the efforts needed to maintain one, excluding the power generator. I'll probably look into fish traits and fish reproduction next, who knows... ## Changelog 🆑 add: Aquariums can now be switched between three different modes (Manual/Assisted/Stasis) to replace the old Safe Mode toggle. /🆑 |
||
|
|
4ba1520df8 |
There will be (colorful) blood: datumizes bloodtypes, greyscales blood sprites, and fixes a lot of inconsistencies with gibs and forensic data (#90593)
## About The Pull Request This PR: - Converts all of the blood types into their own datums, which can be set up to have their own colors, descriptions, and other fun unique properties. For example, the clown blood that is constantly randomizing itself. - Converts all the blood decals into greyscale, which in turn eliminates the need for separate xeno sprites. They both use the same ones now. - Audit of blood splatters/gibs/bodyparts/organs to make sure that they are getting the correct forensic data applied to them. - For the admins: Adds a clown blood smite. My primary goal with was to make the appearance of the new sprites look almost indistinguishable to the original ones. I consider this a "first pass", as in there are still some further refactors I would like to do on the backend side, but am satisfied with it enough to push it forward as a first step towards a better blood system! I didn't want to do too much at once because of A) fatigue and B) easier to test things to make sure I'm not breaking something important this way. This has been test-merged on Nova for over a week now and has been going great, so I finally got around to upstreaming the bones to TG. Although I did test it a bit you may want to TM it just in case I missed some things when copying it over. |
||
|
|
11d82b7995 |
You can now interact with held mobs beside wearing them (feat: "minor" melee attack chain cleanup) (#90080)
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. Improving old code. And I want to be able to pet mobroaches while holding them too. 🆑 qol: You can now interact with held mobs in more ways beside wearing them. /🆑 |
||
|
|
a592471053 | New sprites for Envy Knife (#90527) | ||
|
|
8c3e6f2635 |
Fixes runtimes caused by get_atom_on_turf and reverts an unintentional balance change to stabilized crossbreeds (#90500)
get_atom_on_turf would return the last movable in chain, even if it was passed a type, which is not the behavior most people would expect and thus had led to errors in multiple other segments of code. Additionally, regardless of their storage depth which was an intentional limiter - this restores said behavior. - Closes #90498 - Closes #90497 Runtimes bad, and so are unintentional change to game's balance. 🆑 fix: Fixed runtimes caused by stabilized crossbreeds fix: Fixed an unintentional buff to stabilized crossbreeds, they now once again need to be put in your backpack or pockets. /🆑 |
||
|
|
12d995aeea |
Squashed commit of the following:
commit cb550ab79badae3ffd493dcee24d96f7ad146ed6 Merge: 732416f01d8 |
||
|
|
753d8e5ba4 | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-04a | ||
|
|
6b83a91956 |
Revert "Refactor for storage initialization & organization (#89543)" (#90332)
## About The Pull Request Reverts the storage initialization refactor and all subsequent related PRs. The original PR is below our standards both for code quality and testing, and is majorly flawed at its core. This has been discussed with other maintainers and headcoder(s?) over on discord. A lot of changes from the PR could be brought over later, but in its current state it should not have been merged. - Closes #90322 - Closes #90313 - Closes #90315 - Closes #90320 - Closes #90312 - Closes #90344 ## Why It's Good For The Game This PR causes a series of major issues which cannot be resolved without either completely rewriting a lot of the original PR, or bad code. Not matching our standards is grounds for not merging a PR, and the fact that a PR should not have been merged is a reason for a revert. ## Changelog 🆑 fix: Fixed a series of storage-related bugs caused by a refactor PR. /🆑 |
||
|
|
abb8f539bd |
Cain & Abel (new mining loot) (#89455)
## About The Pull Request adds the Cain & Abel to the lootpool of the colossus!  these are a set of angelic twinblades bound together by some chains. The long chains allow u to attack mobs from a distance (2 tiles max) and at very FAST speed, and come with a few new mechanics: -Attacking a mob with the cain and abel grants you a special whisp that follows your character. these whisps empower ur next melee attacks u can collect a maximum of up to 6 whisps, (their bonuses stack), after which they reset. If u get hit by a mob once, you'll lose ur whisps (and ur melee bonus), so ull have to regain them by rebuilding up ur combo. u can also choose to sacrifice ur whisps by firing them at mobs (by right clicking them) for some hefty damage (this again means u'll lose them) https://github.com/user-attachments/assets/0a1738db-9fa4-4226-ac80-334f5e97cfa5 -u can also choose to hurl one of ur daggers at enemies, there's 2 throw modes u can toggle between by pressing Z while holding ur weapon. 1- On launch mode, u can throw one of ur daggers at a tile, afterwhich the chains will rapidly pull u towards it, making for some cool getaways in tense situations. this puts throw mode on a 7 second cooldown 2- On crystal mode, u can hurl a dagger at an enemy or at a tile. Spiked crystals will errupt on nearby floors, dealing some damage to nearby mobs and stunning them for 2 seconds (bosses dont get stunned tho). puts throw mode on a 15 second cooldown https://github.com/user-attachments/assets/665b9cf4-c5a1-4263-a36b-86e3f35d0ae5 -Lastly is the swing ability. This will swing ur daggers around u, dealing AOE damage to nearby mobs, and makes u block all melee attacks, tentacle attacks, and deflect incoming projectile attacks (could for example be used to deflect the colossus' shotgun blast back to it). ull only block attacks while the animation is active, which lasts a good 1.75 seconds, and is at a 20 second cooldown. https://github.com/user-attachments/assets/073e5324-af5b-45ab-912e-5bcaa13fc728 Here's a short clip of me using them to fight a colossus and a bubblegum https://www.youtube.com/watch?v=kp5Hu16dHPQ&ab_channel=Kobsa ## Why It's Good For The Game adds a new fun weapon with a few deep mechanics to the game. also makes taking down colossi alot more rewarding. ## Changelog 🆑 add: adds the cain and abel to the colossus lootpool! /🆑 # Conflicts: # icons/mob/inhands/equipment/kitchen_lefthand.dmi |
||
|
|
7c81098d33 |
Cain & Abel (new mining loot) (#89455)
## About The Pull Request adds the Cain & Abel to the lootpool of the colossus!  these are a set of angelic twinblades bound together by some chains. The long chains allow u to attack mobs from a distance (2 tiles max) and at very FAST speed, and come with a few new mechanics: -Attacking a mob with the cain and abel grants you a special whisp that follows your character. these whisps empower ur next melee attacks u can collect a maximum of up to 6 whisps, (their bonuses stack), after which they reset. If u get hit by a mob once, you'll lose ur whisps (and ur melee bonus), so ull have to regain them by rebuilding up ur combo. u can also choose to sacrifice ur whisps by firing them at mobs (by right clicking them) for some hefty damage (this again means u'll lose them) https://github.com/user-attachments/assets/0a1738db-9fa4-4226-ac80-334f5e97cfa5 -u can also choose to hurl one of ur daggers at enemies, there's 2 throw modes u can toggle between by pressing Z while holding ur weapon. 1- On launch mode, u can throw one of ur daggers at a tile, afterwhich the chains will rapidly pull u towards it, making for some cool getaways in tense situations. this puts throw mode on a 7 second cooldown 2- On crystal mode, u can hurl a dagger at an enemy or at a tile. Spiked crystals will errupt on nearby floors, dealing some damage to nearby mobs and stunning them for 2 seconds (bosses dont get stunned tho). puts throw mode on a 15 second cooldown https://github.com/user-attachments/assets/665b9cf4-c5a1-4263-a36b-86e3f35d0ae5 -Lastly is the swing ability. This will swing ur daggers around u, dealing AOE damage to nearby mobs, and makes u block all melee attacks, tentacle attacks, and deflect incoming projectile attacks (could for example be used to deflect the colossus' shotgun blast back to it). ull only block attacks while the animation is active, which lasts a good 1.75 seconds, and is at a 20 second cooldown. https://github.com/user-attachments/assets/073e5324-af5b-45ab-912e-5bcaa13fc728 Here's a short clip of me using them to fight a colossus and a bubblegum https://www.youtube.com/watch?v=kp5Hu16dHPQ&ab_channel=Kobsa ## Why It's Good For The Game adds a new fun weapon with a few deep mechanics to the game. also makes taking down colossi alot more rewarding. ## Changelog 🆑 add: adds the cain and abel to the colossus lootpool! /🆑 |
||
|
|
d3d3a12540 |
The big fix for pixel_x and pixel_y use cases. (#90124)
## About The Pull Request 516 requires float layered overlays to be using pixel_w and pixel_z instead of pixel_x and pixel_y respectively, unless we want visual/layering errors. This makes sense, as w,z are for visual effects only. Sadly seems we were not entirely consistent in this, and many things seem to have been using x,y incorrectly. This hopefully fixes that, and thus also fixes layering issues. Complete 1:1 compatibility not guaranteed. I did the lazy way suggested to me by SmArtKar to speed it up (Runtiming inside apply_overlays), and this is still included in the PR to flash out possible issues in a TM (Plus I will need someone to grep the runtimes for me after the TM period to make sure nothing was missed). After this is done I'll remove all these extra checks. Lints will probably be failing for a bit, got to wait for [this update](https://github.com/SpaceManiac/SpacemanDMM/commit/4b77cd487d0a7b6a069df20356b701af5b20489d) to them to make it into release. Or just unlint the lines, though that's probably gonna produce code debt ## Why It's Good For The Game Fixes this massive 516 mess, hopefully. closes #90281 ## Changelog 🆑 refactor: Changed many of our use cases for pixel_x and pixel_y correctly into pixel_w and pixel_z, fixing layering issues in the process. /🆑 --------- Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com> Co-authored-by: SmArtKar <master.of.bagets@gmail.com> |
||
|
|
0f57a23830 |
Refactor for storage initialization & organization (#89543)
## About The Pull Request A Huge chunk of changes just comes from moving existing storage code into new files & seperating `atom_storage` code into its own subtype under the already existing `storage/subtypes` folder. With that the changes in this PR can be organized into 3 categories. **1. Refactors how `/obj/item/storage/PopulateContents()` initializes storages** - Fixes #88747 and every other storage item that has a similar variant of this problem The problem with `PopulateContents()` is that it allows you to create atoms directly inside the storage via `new(src)` thus bypassing all the access restrictions enforced by `/datum/storage/can_insert()` resulting in storages holding stuff they shouldn't be able to hold. Now how this proc works has been changed. It must now only return a list of items(each item in the list can either be a typepath or a solid atom or a mix of them in any order) that should be inserted into the storage. Each item is then passed into `can_insert()` to check if it can fit in the storage. If your list contains solid atoms they must be first moved to/Initialized in nullspace so `can_insert()` won't count it as already inserted. `can_insert()` has now also been refactored to throw stack traces but explaining exactly why the item could not fit in the storage thus giving you more debugging details to fix your stuff. A large majority of changes is refactoring `PopulateContents()` to return a list instead of simply creating the item in place so simple 1 line changes & with that we have fixed all broken storages(medical toolbox. electrical toolbox, cruisader armor boxes & many more) that hold more items they can handle **2. Organizes initialization of `atom_storage` for storage subtypes.** All subtypes of `/obj/item/storage` should(not enforced) create their own `/datum/storage/` subtype under the folder `storage/subtypes` if the default values are not sufficient. This is the 2nd change done across all existing storages Not only does this bring code cleanliness & organization (separating storage code from item code like how `/datum/wire` code is separated into its own sub folder) but it also makes storage initialization slightly faster (because you are not modifying default values after `atom_storage` is initialized but you are directly setting the default value in place). You now cannot & should not modify `atom_storage` values inside `PopulateContents()`. This will make that proc as pure as possible so less side effects. Of course this principle is not enforced and you can still modify the storage value after `Initialize()` but this should not be encouraged in the future **3. Adds support for automatic storage computations** Most people don't understand how `atom_storage` values work. The comment here clearly states that https://github.com/tgstation/tgstation/blob/55bbfef0da70d87455ca8d6fd5c95107eb8dbefb/code/game/objects/items/storage/toolbox.dm#L327-L329 Because of that the linked issue occurs not just for medical toolbox but for a lot of other items as well. Which is why if you do not know what you doing, `PopulateContents()` now comes with a new storage parameter i.e. `/datum/storage_config` This datum allows you to compute storage values that will perfectly fit with the initial contents of your storage. It allows you to do stuff like computing `max_slots`, `max_item_weight`, `max_total_weight` etc based on your storage initial contents so that all the contents can fit perfectly leaving no space for excess. ## Changelog 🆑 fix: storages are no longer initialized with items that can't be put back in after taking them out refactor: storage initialization has been refactored. Please report bugs on github /🆑 |
||
|
|
eb2796831b |
[MDB Ignore] Refactors pills, patches, and generalizes stomach contents, nothing to see here. (#89549)
## About The Pull Request Currently patches are a subtype of pills, and while they have the ``dissolveable`` var set to FALSE, barely anything checks it (because people don't expect patches to be pills in disguise) so we end up patches being dissolveable and implantable, which is far from ideal. Both have been moved into an ``/obj/item/reagent_containers/applicator`` class, which handles their common logic and helps handling cases where either one fits. As for gameplay changes: * Pills no longer dissolve instantly, instead adding their contents to your stomach after 3 seconds (by default). You can increase the timer by dropping sugar onto them to thicken their coating, 1s per 1u applied, up to a full minute. Coating can also be dissolved with water, similarly -1s per 1u applied. Pills with no coating will work like before. * Patches now only take half as long to apply (1.5s), but also slowly trickle in their reagents instead of instantly applying all of them. This is done via embedding so you could theoretically (if you get lucky) stick a ranged patch at someone, although they are rather quick to rip off. The implementation and idea itself are separate, but the idea for having a visual display has been taken from https://github.com/Monkestation/Monkestation2.0/pull/2558.  * In order to support the new pill mechanics, stomachs have received contents. Pills and items that you accidentally swallow now go into your stomach instead of your chest cavity, and may damage it if they're sharp, requiring having them surgically cut out (cut the stomach open with a scalpel, then cauterize it to mend the incision). Or maybe you can get a bacchus's blessing, or a geneticist hulk to gut punch you, that may also work. Alien devour ability also uses this system now. If you get a critical slashing wound on your chest contents of your cut apart stomach (if a surgeon forgot to mend it, or if you ate too much glass shard for breakfast) may fall out. However, spacemen with the strong stomach trait can eat as much glass cereal as they want. Pill duration can also be chosen in ChemMaster when you have a pill selected, 0 to 30 seconds.  ## Why It's Good For The Game Patches and pills are extremely similar in their implemenation, former being a worse version of sprays and pills, with only change being that pills cannot be applied through helmets while patches and sprays ignore both. This change makes them useful for separate cases, and allows reenactment of some classic... movie, scenes, with the pill change. As for stomach contents, this was probably the sanest way of implementing pill handling, and everything else (item swallowing and cutting stomachs open to remove a cyanide pill someone ate before it dissolves) kind of snowballed from there. I pray to whatever gods that are out there that this won't have some extremely absurd and cursed interactions (it probably will). ## Changelog 🆑 add: Instead of dissolving instantly, pills now activate after 4 seconds. This timer can be increased by using a dropper filled with sugar on them, 1s added per 1u dropped. add: Patches now stick to you and slowly bleed their reagents, instead of being strictly inferior to both pills and sprays. add: Items that you accidentally swallow now go into your stomach contents. refactor: Patches are no longer considered pills by the game refactor: All stomachs now have contents, instead of it being exclusive to aliens. You can cut open a stomach to empty it with a scalpel, and mend an existing incision with a cautery. /🆑 |
||
|
|
34310e680e |
Adds Film Studio space ruin (+ Actor/Director Space roles) (#89419)
Adds a space ruin revolving around a studio where ghost roles can provide entertainment to the station, the studio has a bunch of construction stuff and costume vendors to create any set and portray any character you'd want. Features 3 stages and a radio station (neutral aligned syndie comms agent?) there's a total of 4 ghost roles, 3 actors. 1 director.  Studio also has a sizable living quarters and a mini-medbay for basic provisions. a couple of paper fluff texts are strewn about on the noticeboards The cast:  In terms of things that can be balance-breaking, I can only name the gas masks and agent ID actors/directors spawns in. But I think its a necessary sacrifice for them to play "characters" I think too many of the ghost roles have too little interactions with the main station, this is for good reasons obviously, balance and metagrudges and all that. But, say. what if we can have a ghost role that interacts and give something to the station besides being their own little isolated game? it can't be anything material of course. so what if we have the ghost role centered around giving entertainment? which is how this PR came to be 🆑 add: After some light bit of restructuring, the local TV station, serving SPACE SECTOR 13 has opened up again! /🆑 |
||
|
|
434e4e435e |
Removes Secondary & Final Objectives from Traitors (#89466)
## About The Pull Request  Pre-discussed with @Watermelon914, this PR removes Secondary & Final Objectives from all Traitors, rather than just midround ones. It also removes all of the surrounding supporting code. Randomly assigned Primary Objectives still exist, I just used the ability to rewrite mine to take the screenshot. In terms of final objectives, the surrounding items that were available still exist but don't necessarily have sources. If anyone has good ideas for readding these in some other form it can be done in future PRs. It also allows all traitors to buy the Contractor kit, previously limited to midround traitors which lacked secondary objectives, because now all traitors lack secondary objectives. This essentially limits all traitors to a maximum of 20 TC (16 if they spawn with an uplink implant). Currently I don't foresee that they strictly need any additional way of gaining TC during a round as 20 is quite sufficient, but it may take some time to adjust and get used to it after such a long time of having access to more. If we need to adjust the starting value or add a slow drip of more points over time or something, that can be done in followup PRs. This also removes the ability to recreate your uplink added by my beautiful wife in #74315 This was part of the progression traitor design document, but ultimately probably a bad idea as it essentially made traitors impossible to properly disarm. You will once more just need to carefully protect your uplink. **This does not remove the threat/progression system**. Like midround traitors, all Reputation requirements on gear are now simple timelocks, most of which will have elapsed by the time 30 minutes have passed. **Finally** this PR also adds Romerol to the traitor uplink for 25 TC and 30 minutes of reputation, as a treat (and because I removed the final objective that previously granted it). ## Why It's Good For The Game We've tried this system for a long time (3 years last month!) and while I think it had a lot of promise, enabled some cool moments, and also solved several of the problems it set out to solve, overall I think some of the behaviours it has encouraged in players have been overall negative for the game. While the _game systems_ are fine, even quite fun and cool (especially final objectives) I am of the opinion that having them in the game creates a net negative purely in the way that they react with players' _brains_, creating incentives towards behaviour we don't actually want people to pursue. While it's hard-to-impossible to prove any of this with hard data, there has been a prevailing feeling for some time among many (though certainly not all) people that the simple fact of _having_ a constant drip-feed of objective available to players leads directly to less interesting antagonist play. While certainly nobody is _forced_ to do secondary objectives you are directly and quite strongly rewarded for doing so, doing so efficiently, and doing so in a way which makes sure that nobody (alive) sees you do it. This leads to a tendency to play defensively and try to maximise the number of tasks you can complete in one round, which also has a knock-on effect of generally minimising the number of people you attempt to interact with in a round (unless you are killing them). Even people who _intend_ on doing some more interesting gimmick can fall into this trap, as "having more tools" is always useful for anyone who is intending on any kind of plan at all, but then executing on the secondary objectives again incentivises you to lay low, not interact with anyone, be efficient, and then reduces the time you are spending doing the thing that's your actual plan for the round. Removing the ever-present temptation to fish for extra TC leaves "doing whatever your actual plan is" as the sole thing to optimise. Final Objectives too have created unfortunate psychological effects between crewsided players and other antagonists. Because of the _threat_ (no matter how remote, Final Objectives have always been tuned to be appropriately rare) that leaving any antagonist alone will cause them to snowball by acquiring more power, it starts to feel foolish to respond to any threat with less than the maximum possible level of force even if they seem relatively innocuous in the moment. This even has an effect on other non-progression antagonists, as traitors are the most common antagonist type and how people treat them is going to be their default level of reaction to most other station threats. While there has always been the promise of expanding the system with novel and exciting objectives that leverage appearing mid-round to do something unique, we've taken very little advantage of that over time. Most objectives we have added that didn't boil down to "kill someone, with a twist" have been somewhat unsuccessful, serving either as ways to get yourself arrested and killed for no reason or ways to get free telecrystals by doing something the crew don't really care about stopping you from doing. The option still exists to add more roundstart objectives to traitors, if someone suddenly has a great idea that would fit in this space. The ideal outcome of making this change is a slight relaxation of crew attitude towards feeling like their only option after catching an antagonist that isn't sandbagging is to permanently remove them from the round (although it's fine to do this still in many scenarios), and a broadening of traitorous activity which is not purely focused on collecting as many checkboxes as possible and might give people more time to roleplay with other players, not worrying that this time could have been more efficiently spent pursuing a different secondary goal. I don't anticipate or desire that this will prevent traitors from killing anyone (or even stop them from killing people they don't have a specific objective to kill), I just want to remove the FOMO from people's minds. Also this gives us something to talk about at the coder townhall meeting on the 22nd. ## Changelog 🆑 del: Misplaced or stolen traitor uplinks can no longer be recreated using a radio code and special device, guard yours carefully or buy a backup implant. del: Roundstart traitors can no longer take on additional objectives in order to earn additional Telecrystals and fast-forward any unlock timers on items. They also cannot earn the ability to complete a Final Objective. balance: Roundstart traitors can now buy the Contractor Kit from their traitor uplink, rather than only midround traitors. add: Traitors can buy Romerol for 25 TC, after 30 minutes of time has passed in a round. /🆑 |
||
|
|
254cd32c93 | Merge branch 'master' of https://github.com/Bubberstation/Bubberstation into upstream-25-02a | ||
|
|
de52a6452d | cursed spring repath | ||
|
|
af06b24bc0 |
Adds 3 (well, technically 4) More Infinite Dorms Maps (#3140)
## About The Pull Request Hello! Since I've been bored, I decided to test my mapping muscles, and so I come to you with 3 Infinite Dorms maps. **1. Corporate Office** First one's quite easy and simple, a rather large Corporate Office, comes with all the expected amenities; fake bookcases, coffee, donuts, luxury alcohol, cigars, stamps, paperwork, intercoms, Italian maple desks, comfy chairs, secure consoles, motion-sensitive camera that keeps blinking red for whatever reason. Ideal for anyone with more interests in the 'corpo' side, or just for people who want to ERP in an office environment.  **2. Recovery Wing** A more hospital-themed dorm, thought of as the Recovery Ward of the whatever Facility that NT uses to keep putting spessmen together after they have been blown up twenty times during one shift. Comes with two separate Patient rooms, a small Nurse station and a similarly small commons area.  **3. Secluded Grotto** Did notice there was no real "outdoors" area, this map tries to- and kinda fails to rectify this issue, as in-lore the map takes a place in a small, secluded and remote grotto, perfect for running away from everyone, comes with a small picnic space, with a freezer full of snacks, a small pond to the upper right and the center-piece in the form of a fire pit, complete with a guitar and some stools. Also comes in a night version.   ## Why It's Good For The Game well, more varied dorms are better since they (theoretically) allow for more varied RP. ## Proof Of Testing it do the compile thing without melting my poor poor computer  ## Changelog 🆑 map: Added "Corporate Office" Infidorm map map: Added "Recovery Wing" Infidorm map map: Added "Grotto" Infidorm map map: Added "Grotto (night)" Infidorm map /🆑 |
||
|
|
b6b8306fda | Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-25-02a | ||
|
|
14a1b5e1e8 |
Adds Film Studio space ruin (+ Actor/Director Space roles) (#89419)
## About The Pull Request Adds a space ruin revolving around a studio where ghost roles can provide entertainment to the station, the studio has a bunch of construction stuff and costume vendors to create any set and portray any character you'd want. Features 3 stages and a radio station (neutral aligned syndie comms agent?) there's a total of 4 ghost roles, 3 actors. 1 director.  Studio also has a sizable living quarters and a mini-medbay for basic provisions. a couple of paper fluff texts are strewn about on the noticeboards The cast:  In terms of things that can be balance-breaking, I can only name the gas masks and agent ID actors/directors spawns in. But I think its a necessary sacrifice for them to play "characters" ## Why It's Good For The Game I think too many of the ghost roles have too little interactions with the main station, this is for good reasons obviously, balance and metagrudges and all that. But, say. what if we can have a ghost role that interacts and give something to the station besides being their own little isolated game? it can't be anything material of course. so what if we have the ghost role centered around giving entertainment? which is how this PR came to be ## Changelog 🆑 add: After some light bit of restructuring, the local TV station, serving SPACE SECTOR 13 has opened up again! /🆑 |
||
|
|
23ac16411d |
Removes Secondary & Final Objectives from Traitors (#89466)
## About The Pull Request  Pre-discussed with @Watermelon914, this PR removes Secondary & Final Objectives from all Traitors, rather than just midround ones. It also removes all of the surrounding supporting code. Randomly assigned Primary Objectives still exist, I just used the ability to rewrite mine to take the screenshot. In terms of final objectives, the surrounding items that were available still exist but don't necessarily have sources. If anyone has good ideas for readding these in some other form it can be done in future PRs. It also allows all traitors to buy the Contractor kit, previously limited to midround traitors which lacked secondary objectives, because now all traitors lack secondary objectives. This essentially limits all traitors to a maximum of 20 TC (16 if they spawn with an uplink implant). Currently I don't foresee that they strictly need any additional way of gaining TC during a round as 20 is quite sufficient, but it may take some time to adjust and get used to it after such a long time of having access to more. If we need to adjust the starting value or add a slow drip of more points over time or something, that can be done in followup PRs. This also removes the ability to recreate your uplink added by my beautiful wife in #74315 This was part of the progression traitor design document, but ultimately probably a bad idea as it essentially made traitors impossible to properly disarm. You will once more just need to carefully protect your uplink. **This does not remove the threat/progression system**. Like midround traitors, all Reputation requirements on gear are now simple timelocks, most of which will have elapsed by the time 30 minutes have passed. **Finally** this PR also adds Romerol to the traitor uplink for 25 TC and 30 minutes of reputation, as a treat (and because I removed the final objective that previously granted it). ## Why It's Good For The Game We've tried this system for a long time (3 years last month!) and while I think it had a lot of promise, enabled some cool moments, and also solved several of the problems it set out to solve, overall I think some of the behaviours it has encouraged in players have been overall negative for the game. While the _game systems_ are fine, even quite fun and cool (especially final objectives) I am of the opinion that having them in the game creates a net negative purely in the way that they react with players' _brains_, creating incentives towards behaviour we don't actually want people to pursue. While it's hard-to-impossible to prove any of this with hard data, there has been a prevailing feeling for some time among many (though certainly not all) people that the simple fact of _having_ a constant drip-feed of objective available to players leads directly to less interesting antagonist play. While certainly nobody is _forced_ to do secondary objectives you are directly and quite strongly rewarded for doing so, doing so efficiently, and doing so in a way which makes sure that nobody (alive) sees you do it. This leads to a tendency to play defensively and try to maximise the number of tasks you can complete in one round, which also has a knock-on effect of generally minimising the number of people you attempt to interact with in a round (unless you are killing them). Even people who _intend_ on doing some more interesting gimmick can fall into this trap, as "having more tools" is always useful for anyone who is intending on any kind of plan at all, but then executing on the secondary objectives again incentivises you to lay low, not interact with anyone, be efficient, and then reduces the time you are spending doing the thing that's your actual plan for the round. Removing the ever-present temptation to fish for extra TC leaves "doing whatever your actual plan is" as the sole thing to optimise. Final Objectives too have created unfortunate psychological effects between crewsided players and other antagonists. Because of the _threat_ (no matter how remote, Final Objectives have always been tuned to be appropriately rare) that leaving any antagonist alone will cause them to snowball by acquiring more power, it starts to feel foolish to respond to any threat with less than the maximum possible level of force even if they seem relatively innocuous in the moment. This even has an effect on other non-progression antagonists, as traitors are the most common antagonist type and how people treat them is going to be their default level of reaction to most other station threats. While there has always been the promise of expanding the system with novel and exciting objectives that leverage appearing mid-round to do something unique, we've taken very little advantage of that over time. Most objectives we have added that didn't boil down to "kill someone, with a twist" have been somewhat unsuccessful, serving either as ways to get yourself arrested and killed for no reason or ways to get free telecrystals by doing something the crew don't really care about stopping you from doing. The option still exists to add more roundstart objectives to traitors, if someone suddenly has a great idea that would fit in this space. The ideal outcome of making this change is a slight relaxation of crew attitude towards feeling like their only option after catching an antagonist that isn't sandbagging is to permanently remove them from the round (although it's fine to do this still in many scenarios), and a broadening of traitorous activity which is not purely focused on collecting as many checkboxes as possible and might give people more time to roleplay with other players, not worrying that this time could have been more efficiently spent pursuing a different secondary goal. I don't anticipate or desire that this will prevent traitors from killing anyone (or even stop them from killing people they don't have a specific objective to kill), I just want to remove the FOMO from people's minds. Also this gives us something to talk about at the coder townhall meeting on the 22nd. ## Changelog 🆑 del: Misplaced or stolen traitor uplinks can no longer be recreated using a radio code and special device, guard yours carefully or buy a backup implant. del: Roundstart traitors can no longer take on additional objectives in order to earn additional Telecrystals and fast-forward any unlock timers on items. They also cannot earn the ability to complete a Final Objective. balance: Roundstart traitors can now buy the Contractor Kit from their traitor uplink, rather than only midround traitors. add: Traitors can buy Romerol for 25 TC, after 30 minutes of time has passed in a round. /🆑 |
||
|
|
7d34f23db1 |
Fixes hotel rooms and adds new one (#3082)
## About The Pull Request Adds a new hotel room as of the request of Leathergnome who also made said hotel room, all credit goes to him i just PRed it, ontop of that this PR also fixes https://github.com/Bubberstation/Bubberstation/pull/3078 as said rooms were forgotten to be added to the selectable list, shit happens love the new rooms by the way. ## Why It's Good For The Game Another dorms room to enjoy and fix for already PRed ones ## Proof Of Testing Works and Complies on localhost  ## Changelog 🆑 map: Added new Hotel room fix: Fixed the other hotel rooms not showing up from a different PR /🆑 |
||
|
|
78468452a4 |
[SEMI-MODULAR] Adds 3 new Infinite Dorm Maps! (#3078)
## About The Pull Request Adds three new awesome Infinite dorms for varying roleplay scenarios and creative environments. -Cultist's Cavern: A spooky cave-like environment populated with an underground spring, a cultist-themed bedroom, a mining hold-out, and general cave flora/decorations around. Spawns a crate of flashlights/flares/hardhats etc to help light the area as this is a darker dorm for lame Heretic/Cult rp. (unoriginal) Also adds a neat little spring however for a more natural swimming hole area instead of hot tubs and pools. -Winter Woods: A cozy little wooden cabin near the edge of a plasma pond of sorts. Very ambient and romantic. Features a campfire, cabin, dark wooded area, and a crate filled with NRI attire. Also features an effect to where it's constantly snowing, the same animated sprite used for light snowstorms. Has a custom area added so that it plays Ice Moon ambience. -Evacuated Station: The Hydroponics Cloning Farm of an evacuated Space Station that _apparently_ got sucked inside of a Void anomaly of sorts. Alarms blaring. Emergency lighting. A deadspace-like environment, or rather what the shuttle leaves behind at the end of a Gamer shift. Features a Bedroom, small engineering lab, damaged flooring and windows, small maintenance path, and a Research Director's Quarters. I had to touch the Modular Herbert Hotel File, similar to what Skyrat did. Those changes are noted with //BUBBER EDIT ADDITION BEGIN - Infinite Dorm Maps Add and //BUBBER EDIT END ## Why It's Good For The Game Infinite dorms are really cool I think ## Proof Of Testing Each were ran locally repeatedly with 0 additional run-time errors. <details> <summary>Screenshots/Videos</summary>    </details> ## Changelog 🆑 map: Added THREE new Infinite Dorms! map: Added 'Cultist's Cavern' Infinite Dorm. map: Added 'Winter Woods' Infinite Dorm. map: Added 'Evacuated Station' Infinite Dorm. /🆑 |
||
|
|
1a0dc51e93 |
fix: oldstation fluff microfix (#89281)
## About The Pull Request Replaced "Singularity Generation Disk" with "Supermatter Crystal Shard" (and the space in front of the "prototype modsuit" has been removed, because it doesn't look pretty.) ## Changelog 🆑 spellcheck: Replaced the words "Singularity Generation Disk" with "Supermatter Crystal Shard" on a paper found by the old station ruin, to match the contents of the inventory room. /🆑 |
||
|
|
bc01d6eefe |
Gets rid of mobile hollow bioscramblers spawning in the anomaly research ruin. (#89303)
## About The Pull Request What it says on the tin. Mobile anomalies still spawn in and around the ruin, but never bioscramblers. ## Why It's Good For The Game A) These fucking things cannot be disabled by conventional means. It needs anomaly research. B) They drift through space away from the ruin literally every single time the ruin spawns. They are meant to be an environmental hazard for the ruin, not for the entire playing space because a remote ruin spawned. C) Because they are not blocked by walls, they will keep drifting until eventually arriving on the station, where they will stay there. Typically occupying a space perpetually until a scientist comes and fixes the problem with their anomaly neutralizer. The only reason this happened was because of bioscramblers being reworked into the state they are now. I don't imagine the original creator intended for the ruin to create problems for the wider round like this. ## Changelog 🆑 del: Mobile hollow bioscramblers no longer spawn from the anomaly research ruin, sparing everyone from the inevitable unannounced arrival of a permanent hollow bioscrambler aboard the station. You maybe still encounter immobile bioscramblers in the ruin, however. /🆑 |
||
|
|
4c2a76ede3 |
Fix a large number of typos (#89254)
Fixes a very large number of typos. A few of these fixes also extend to variable names, but only the really egregious ones like "concious". |
||
|
|
7ddc30783a |
Adds better attack animations and alternate attack modes (#88418)
## About The Pull Request This is the first PR in a series attempting to modernize our damage and armor, both from a code and a gameplay perspective. This part implements unique attack animations, adds alternate attack modes for items and fixes some minor oversights. Items now have unique attack animation based on their sharpness - sharp items are now swung in an arc, while pointy items are thrust forward. This change is ***purely visual***, this is not swing combat. (However, this does assign icon rotation data to many items, which should help swing combat later down the line). Certain items like knives and swords now have secondary attacks - right clicks will perform stabbing attacks instead of slashing for a chance to leave piercing wounds, albeit with slightly lower damage - trying to stick a katana through someone won't get you very far! https://github.com/user-attachments/assets/1f92bbcd-9aa1-482f-bc26-5e84fe2a07e1 Turns out that spears acted as oversized knives this entire time, being SHARP_EDGED instead of SHARP_POINTY - in order for their animations to make sense, they're now once again pointy (according to comment, originally they were made sharp because piercing wounds weren't very threatening, which is no longer the case) Another major change is that structure damage is now influenced by armor penetration - I am not sure if this is intentional or not, but attacking item's AP never applied to non-mob damage. Additionally, also fixes an issue where attack verbs for you and everyone else may differ. |
||
|
|
408fd1fe90 | Prevents the overcharged smes from runtiming when the timer ss falls behind (#88376) | ||
|
|
051d705b6d |
Fixes necropolis gates being pushable by fauna (#88483)
## About The Pull Request Turns out some fauna can walk their way over to the necropolis gates an shove them aside. This should prevent that, or any other force of nature, from moving these ancient gates anywhere. ## Why It's Good For The Game It's silly that this is even possible ## Changelog 🆑 fix: Fauna can no longer push necropolis gates /🆑 |
||
|
|
6da4462e14 |
Fix gravity for areas in space near station (#88176)
## About The Pull Request - Fixes #76827 This removes gravity from the following areas: - Solars - Nearstation - Space - Ordnance bomb testing ##### Note - Asteroid areas (Tram) or planet areas (Ice) are not affected. <details> <summary>Examples of outside gravity turfs</summary>  </details> Now stepping on floor plating in those areas will result in mobs drifting. (like they do inside the station when gravity is offline) Stepping on or near catwalks, lattices, or walls stills controls your movement. Also refactored a little bit of the `has_gravity` code to use defines instead of `TRUE/FALSE`. ## Why It's Good For The Game Consistency. Mag boots are highly recommended when performing EVA. ## Changelog 🆑 fix: Fix gravity for areas in space near station (solars, nearspace, bomb testing, etc.) /🆑 |
||
|
|
58a0794fa6 |
Fix drink labels for alcohol bottles (#88355)
## About The Pull Request - Fixes #88351 An examine proc used bitflags to determine the contents of a bottle despite whatever reagents are inside. I went and changed the examine message to use `The label says it contains` instead of `It is` which is more appropriate. Also the empty bottle parent type was listed as `ALCOHOL` despite spawning with no reagents. A lot of alcohol subtypes relied on this to give them the correct bitflag. ## Why It's Good For The Game Drink consistency. ## Changelog 🆑 fix: Fix drink labels for alcohol bottles /🆑 |
||
|
|
8f715046e2 | prevents the overcharged smes from runtiming when SSprocessing falls behind | ||
|
|
cf100c7010 |
Fixes Hilbert's rigged analyzer not being able to scan the hotel orb (#88308)
## About The Pull Request Closes #87751 ## Changelog 🆑 fix: Fixed Hilbert's rigged analyzer not being able to scan the hotel orb /🆑 |
||
|
|
25c616e353 |
fixes the museum cafeteria puzzle and some other things related to the museum (#88287)
## About The Pull Request the dotted color board was missing a color for the 10th digit, and orange and brown were not valid byond colors (damn you ghommie) fake scrubbers and vents use the correct layer and plane you may no longer deconstruct indestructible windows you can no longer push indestructible grilles and robust windows if you have a strong move force step teleporters may not teleport abstract objects or mirage holders (due to init shenanigans this sometimes teleported a mirage holder messing the visuals up) ## Why It's Good For The Game bug bad also i didnt make these bugs ok ## Changelog 🆑 fix: fixed the museum password puzzle (to the cafeteria), and the scrubbers and vents there now look correctly (also fixed a rare visual bug) fix: it is now harder to bypass indestructible windows and grilles (those are placed there for a reason, you know!) /🆑 |