mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-07 15:20:12 +01:00
133d5b4a8564bb372bcffd3d403529de14b747cb
2071 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ae5a4f955d |
Pulls apart the vestiges of components still hanging onto signals (#75914)
## About The Pull Request Signals were initially only usable with component listeners, which while no longer the case has lead to outdated documentation, names, and a similar location in code. This pr pulls the two apart. Partially because mso thinks we should, but also because they really aren't directly linked anymore, and having them in this midstate just confuses people. [Renames comp_lookup to listen_lookup, since that's what it does](https://github.com/tgstation/tgstation/commit/102b79694fa8eb57ecf7b36032616a9e368ccced) [Moves signal procs over to their own file](https://github.com/tgstation/tgstation/commit/33d07d01fd336726b4f6f6f1b61bb0b3f11a00dc) [Renames the PREQDELETING and QDELETING comsigs to drop the parent bit since they can hook to more then just comps now](https://github.com/tgstation/tgstation/commit/335ea4ad081ec63c42cfa05856e582cca833af6e) [Does something similar to the attackby comsigs (PARENT -> ATOM)](https://github.com/tgstation/tgstation/commit/210e57051df63f88dac3dd83321236da825aae5e) [And finally passes over the examine signals](https://github.com/tgstation/tgstation/commit/65917658fb8a1e7d28ae23c9437a583d646f0302) ## Why It's Good For The Game Code makes more sense, things are better teased apart, s just good imo ## Changelog 🆑 refactor: Pulled apart the last vestiges of names/docs directly linking signals to components /🆑 |
||
|
|
2e5806626c |
Proper broken tiles (#75623)
 ## About The Pull Request The current broken tiles have some visual issues: - There is an ambient occlusion shade when it touches normal tile - It has a layer higher than it should be which leads to things that are normally above the floor layer, render below it. Such as atmos machinery, cleanable overlays, etc. This PR makes the render on a proper layer and work like a partially destroyed floor tile that can be reclaimed with crowbar. Also, the cleanables are now on FLOOR_CLEAN_LAYER to make dirt appear above catwalks and these new tiles. And the flat dirt now has 4 variants of sprites, while dust uses the old dirt sprite. It seems like dust was just dirt with different description before. ## Why It's Good For The Game A broken tiling with no visual bugs and proper floor-like logic. ## Changelog 🆑 MTandi, Borbop fix: Dust now has dust icon, instead of dirt icon. Dust on all maps replaced with dirt image: Flat dirt now picks from 4 new sprites refactor: Made broken tiling work more like tiling and have corresponding visuals. Added directional mapping variants. fix: Cleanables now use FLOOR_CLEAN_LAYER to make sure that trash is visible above catwalks /🆑 |
||
|
|
f97830c982 |
Change pride tiles to generic holiday tiles, add Tramstation support (#75665)
## About The Pull Request - Rewrites the Pride Week rainbow tiles coloring into a more generic 'Holiday' tile coloring proc so that it can be used by any holiday - Adds support for different color patterns - Adds support for the trimline decal subtype Tramstation uses - Adds stack types for tram tiles so that if you pull them up you can put them back - Fixes naming of tile decals ## Why It's Good For The Game - The generic proc allows us to specify a different color set for each holiday (think red white blue for July 4, or red/white/green for Christmas) - Players now have a way to put back tram platform tiles that have been pulled up - Tramstation gets colored tiles like the other maps  ## Changelog 🆑 LT3 fix: Tram platform tiles now have proper stack types refactor: Pride week tile coloring refactored into a generic holiday decal system spellcheck: Tile decals are no longer all named 'corner' /🆑 |
||
|
|
eb5e81fcb7 |
Sorts out posters.dm into its own files (where applicable) (#75757)
## About The Pull Request Title. ## Why It's Good For The Game Yeah, uhh, posters.dm was over 1k lines long. I cut it put, put it in its own folder, and now everything is split between contraband.dm, official.dm, and whatever misc/code was left in posters.dm and moved to the folder. ## Changelog 🆑 Jolly code: The code for posters has been split among three files. If you see something weird, please report it. fix: Fixed the single tank poster using the wrong typepath for its mapping dir. /🆑 |
||
|
|
e8376bfef8 |
No more un-pulsable syndicate anomalies (#75723)
## About The Pull Request Prevents anomalies from spawning with the frequency 121.3, which you can't select using signalers since it's a syndicate frequency. Switches to using the sanitize_frequency proc since it covers this and the "only uneven frequencies" check. Alternatively, it might make sense to remove the frequency limitation with signalers, as I don't believe there's any non-radio devices that rely on signals on the syndicate frequency, and it's rather unintuitive to have a frequency that just can't be selected without any feedback. But I don't know enough about the relevant functionality to know if that might break something. ## Why It's Good For The Game Fix bugs. We can't let the syndicate keep getting away with this. ## Changelog 🆑 fix: Anomalies shouldn't spawn with frequencies that can't be selected on signalers anymore /🆑 |
||
|
|
9ba14f5fd0 |
Adds a variable that allows invisible portals (#75712)
## About The Pull Request Adds simple var that allows a portal to be without the spark effect ## Why It's Good For The Game Because I am going to make an noneuclidean station with portals, and sparks make it too obvious ## Changelog 🆑 qol: Admins can make a portal not spark when teleporting /🆑 |
||
|
|
419dd2b754 |
Spider Infestation Balance Rebalance Expansion Part 1 (#75204)
## About The Pull Request https://hackmd.io/dxhPOOdRRKW7siqPbpfmYQ?view The HackMD goes in-depth into what this PR is about ## Content ### Ambush Spider   ### Scout Spider    ## Tangle    ### Spiderlings    ## Why It's Good For The Game Currently, spiders have plenty of issues that make them a very 2d mentional antag they kill,die, and respawn which is boring and leads to a bunch of balance issues for their current design this PR both fixes the current issues spiders have and adds more depth into the antag. ## Changelog 🆑 add: Added 3 new spider types add: Added more spider abilities balance: Rebalanced spiders fix: Fixes spiderlings having density /🆑 --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
1c60848edb |
Removes poseur tag graffiti (it's been dead for ~6 years Edition) (#75689)
## About The Pull Request The _poseur tag_ graffiti option was not removed in the gang gamemode removal back in #30056. Back then it would have chosen one of the gangs' tags to mimic. Now, if selected, it will create an empty graffiti. This will also apply to any mapped/generated graffiti. This sucks and this derailed me from my other thing I was doing in the crayons.dm vicinity. ## Why It's Good For The Game Removes a 6-year-old non-functioning graffiti option. ## Changelog 🆑 fix: exorcised a ghost of the gang gamemode from graffiti /🆑 |
||
|
|
be2b5f9e74 |
[MDB IGNORE] Adds a map lint against using non-dir helper posters (#75620)
## About The Pull Request Title. ## Why It's Good For The Game Similar to #75610. Gets our posters on the mapping directional helpers where needed. ## Changelog 🆑 Jolly code: The code for posters internally has been tweaked slightly. If you see posters floating in hallways, please report them ASAP!! /🆑 |
||
|
|
0c99bd28f4 |
Makes gasses use defines (#75542)
## About The Pull Request Adds defines for gasses and replaces uses I've found to instead use the defines. Can you believe I made this PR while trying to work with Xenos? This sucks! ## Why It's Good For The Game There's a lot of different uses of things like "o2" and "plasma", and they are pretty inconsistent. In some places, it's "hydrogen", in others it's "h2". In some it's "plasma", others "plasm". This unifies it all under defines so it has a less chance of breaking in the future. ## Changelog Nothing player-facing. |
||
|
|
b7fb33ab00 |
Adds Ethereal Drinks (#75487)
## About The Pull Request Adds 3 new electric-themed drinks for ethereals. They count as food for etherials, (not much, one glass is about equivelant to a plasma burger), but humans can drink them as well, among other effects. ## Why It's Good For The Game As an ethereal player, I do feel while our food is convenient, that we miss out on the RP other species get from going to the bar. This allows for etherials to order drinks from the bartender. All effects work on all races, with the hunger satiation as the exception. ## Changelog 🆑 add: Voltaic Yellow Wine - New "base" drink, found in booze-o-mat. No special effects besides acting as a weak ethereal food. Not very potent in terms of alcohol. add: Telepole - New mixed drink themed after thunderstorms, gives the same shock-resist grey bull does. Made from 1 part Voltaic Wine, 1 Part Sake, and 2 parts Dark & Stormy. Moderately potent. add: Pod Tesla - New mixed drink, themed after the old removed tesla engine (the singulo gets a cocktail, it should too!) Grants a brave - bull phobia resist, and a stronger grey bull shock resist allowing you to (temporarily) resist tesla arcs from reactive armor and the SM's tesla coils. Gives a pleasant thought to whoever drank it, because this thing is a pain to make. Made from 5 parts admiralty, 5 parts telepole, and 3 parts brave bull. Highly potent. qol: Unsure if this counts as QOL or balance, but the fact sol dry is in 3 different cocktails but the bartender has to buy 30u cans of it made me feel it deserved being added to the soda dispenser. image: Added graphics for the above drinks, shown below, from left to right: Pod tesla, Voltaic Yellow wine, Telepole, Voltaic Wine (bottle) <img width="171" alt="image" src="https://github.com/tgstation/tgstation/assets/69398298/901b2f64-1723-44b6-8f78-ef21bd477d96"> /🆑 --------- Co-authored-by: Aki Ito <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> |
||
|
|
b64a76ea56 |
Fixes moveloop shit (#75675)
## About The Pull Request I was using the step_x procs when I should have been using get_step_x and Move() This was causing some mob behavior to not properly respect things like gravity or potentially entered/exited signals. Also ensures we pass direction into Move consistently, and deletes a function that was meant to like, use step_to but with directions? Was never actually used properly I forgot to properly respect the "don't change dir" flag Closes #75673 🆑 fix: Mobs will fly around space... less /🆑 |
||
|
|
e1052fc62a |
Massive Spraycan and Crayon Powercreep: smaller graffiti cost less to draw. (#75588)
## About The Pull Request Currently, drawing a small circle on the floor consumes as much charge as any other drawable but the larger horizontal ones that cost five times as much, which is a bit dull for non-cyborg players, having to burn through a ton of spraycans just to cover the floor in several small dots if ever attempting to do some floor art. This PR aims to reduce the cost of some of the smaller drawables, like "shortline", "smallbrush", "pawprints" etc., in virtue of the smaller area they cover. The balances changes may seem bit of an arbitrary and not include ones that are a bit on the edge between "small" and not "small", but I'd rather keep it simple than have other values such like "semi-small" integrated and snowball this balance PR into a more finnicky, disputable or not agreeable with version of itself. This also covers re-coloring and existent graffiti. Currently it always costs 2 charges to change its color regardless if it costed 1 or 5 to spray in the first place. With this PR, the costs should match that of when they were drawn. To boot, It also takes into account the tagger quirk now. Code had to be cleaned up and improved a bit for a smoother implementation of these changes. A fairly unrelated but small change: Trying to suicide with an empty spraycan will now fail, because it's empty. It's that simple. ## Why It's Good For The Game Enables non-cyborg players to engage in jolly floor-vandalizing-art in a more consistent, slightly more enjoyable way. ## Changelog 🆑 balance: Drawing small graffiti like paw/foot/claw prints, small brush dots and short lines should cost half as many charges off your spraycan or crayon. balance: The cost of recoloring graffiti decals is now consistent with that of drawing them. balance: Trying to suicide with an empty spraycan will now fail, because it's empty. It's just that simple. /🆑 |
||
|
|
75537b97a5 |
GAGSifies Plushies (#75442)
image: Space lizard, carp, slime and snake plushies have been resprited and set up to support GAGS. |
||
|
|
12fdd1f0bc |
Fixed sealed webs not stopping any atmos gas from passing through them (#75293)
## About The Pull Request  Three lines of coder later  works good ## Why It's Good For The Game ## Changelog 🆑 fix: fixed sealed webs not stopping active atmos /🆑 |
||
|
|
adc010275f |
Spiderlings can cross webs (#75404)
## About The Pull Request Reliable web traversal is now governed by a trait instead of a type check. Spiderlings have that trait. ## Why It's Good For The Game Spiderlings are spiders and shouldn't get stuck in webs. Turning this into a trait means that we can make more things apply the trait in future if we want, without having to expand a list of allowed mobs. ## Changelog 🆑 fix: Spiderlings no longer get stuck in webs /🆑 |
||
|
|
ad34d5341e |
Fixes posters not fitting in the boxes they spawn in (#75366)
## About The Pull Request This makes posters, such as from the Poster Boy quirk or the syndicate objective, able to fit back into the boxes the spawn in. ## Why It's Good For The Game It just seems odd that posters can't fit back into the boxes they come in, particularly when every other art supply fits just fine (and can even be placed in the same boxes as the posters before you've taken them out). If it's this way for balance reasons then I don't want to argue that change and will close the PR (or feel free to close it for me). But it feels like it's just an oversight and I don't think it really has balance implications? ## Changelog 🆑 qol: Posters can now fit back into the boxes they come in. /🆑 |
||
|
|
209ffe90d0 |
Fixes a runtime with stable / "hollow" anomalies (#75334)
## About The Pull Request Setting `aSignal = null` wasn't the most proper way to make an anomaly not drop a core, `drops_core` should've also been set to `FALSE`. Changed it to set `drops_core = FALSE`. Also changed it to `QDEL_NULL` the core rather than just null it. Adds a better stack trace and did a minor cleanup thing.  ## Why It's Good For The Game Runtimes ## Changelog 🆑 Melbert fix: Runtime from neutralizing "hollow" anomalies /🆑 |
||
|
|
5c2d3da4af |
Fixes ghosts & AI's detonating landmines, and jaunting mobs setting them off without first stepping on them (#75362)
Fixes #75049 🆑 ShizCalev fix: Ghosts & camera mobs (ie blobs & AI's) will no longer set off landmines. fix: Jaunting mobs will now only set off landmines if they stepped on them BEFORE jaunting. fix: Flying mobs will no longer detonate landmines that were not first stepped on. /🆑 |
||
|
|
a4822c165b |
Now blocking is more noticeable! New blocking and parrying sounds (#74998)
## About The Pull Request Now whenever an attack is blocked, the sound will play and deflection with the item now plays sound too: https://github.com/tgstation/tgstation/assets/42353186/1a0cc5b7-f2af-4d72-88d7-57cc11f5baa3 The parry.ogg was updated to a better-sounding one https://github.com/tgstation/tgstation/assets/42353186/5ffc53d8-0b3c-4e6b-9256-b7b9735918bc Every item now has a "block_sound" that can be set, it determines what sound is played when you block an attack with it. Cult items no longer have their own way of fuckery to play parry sounds, now they use this system as well. Now shield bash sound is 80% smaller after cutting out all of its noise and silence. ## Why It's Good For The Game Adds feedback on whether the attack was blocked or not, signalling both to the attacker and defender that it didn't go through even if the animation played, which is a great QoL. Same with the deflection sound (although deflection is still pretty visible, the sound would not hurt) New sounds add more flavour to the weapons, especially the energy sword, giving it even more badassery. Cutting down the noise from the shield bash sound has made it better to listen and saved some kilobytes of information. And making every item use the universal system for blocking sounds, removing cultist items' own code for playing parrying sounds. ## Changelog 🆑 DrDiasyl aka DrTuxedo#0931 qol: Now blocking an attack will play a sound and display a spark effect, giving back feedback sound: parry.ogg was updated to a better-sounding version sound: shieldbash.ogg no longer has noise and unnecessary silence sound: New block_shield.ogg and block_blade.ogg for shields and energy swords code: Cultists items no longer have their own code for playing parrying sounds /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
f209c7a604 |
Fixes a runtime from foam in a weird loc / improves the stack trace (somewhat) (#75281)
## About The Pull Request - Fixes a runtime from foam being created inside plasmamen, instead of at the plasmamen's loc, from the clown plasmaman suit  - Adds a stack trace for mobs having foam created inside of them - So, in the past foam would runtime if created in a non-turf at all, mobs or otherwise. I changed it so it creates a more helpful stack trace. - While tackling this, however, I realized that we may want to support foam in non-turf, non-mob locs? Like closets? That is to say, if you release a foam reaction while stuck in a locker and it floods the locker, it would stay in the locker until it is opened, and affect other people in the locker itself? Unsure, so I left it as an option, albeit it may not function entirely correctly. - This may also false-positive in some places, such as a mob within mob. I'm unsure if it should have its own case, or of it should act like closets are implied to do above? But that may produce some silent errors. So eh. ## Why It's Good For The Game Less runtimes, more intended code. ## Changelog 🆑 Melbert fix: Fixes a runtime with plasmaman clown suit lube spray /🆑 |
||
|
|
bf880f553a |
Makes industrial gold and regenerative gold spawn random coins. Also adds chococoin to coin spawner. (#75199)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request So they just had list from 6 coins and not random picking of coins, so now its random. It will also spawn chococoin because it's a coin too. But won't spawn `coin/gold/debug` because it's debug and eldritch coin because comxy asked about it. Added chococoin to `/obj/effect/spawner/random/entertainment/coin` and holdables list of wallet. <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Random is funny. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 add: Indusrial Gold and Regenerative Gold extracts now spawn random coins and not just list of 6 coins. But no mythril as it has miserable chance to have summoning effect which have even more miserable chance to spawn something dangerous and not just mice. add: Chococoin now has a chance to spawn wherever the coins are used to spawn (wallets, greed ruins, deltastation bar) /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
ceff62c6a9 |
Mildly buffs Active Sonar module (#75174)
Lowers the cooldown from 25 seconds to 15 seconds Lowers the power drain from 25 to 20 Sonar visuals now move for the duration of their existence (see below) |
||
|
|
e4c45dcdfd |
Makes stable bluyespace anomaloes only teleport on bump (#75223)
The anomaly research ruin spawns bluespace anomalies, but those anomalies can teleport without bumping if you just walk past them. This, combined with the ruins plasma river, makes them unfairly lethal for explorers |
||
|
|
2068ea9ab5 |
Crate, Closet Refactors & Access Secured Stuff (#74754)
## About The Pull Request This PR is actually 2 parts, one that fixes runtimes with crates & the other that allows secured closets to be crafted along with a secured suit storage unit **Crate Fixes** Fixes #74708 The problem starts here https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L31-L34 Not only does this if condition look ugly but it's highly error prone because one single call to `update_appearance()` can cause this to fail, and sure enough if you look at the parent `Initialize()` proc it calls just that https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L81-L88 Since we know the appearance is guaranteed to be changed in some way before the if condition gets executed let's check what the final state of the crate would be before this if check https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L54-L56 We see that the final icon state depends on the variable `opened` so if we want to place/spawn a crate that is opened at round start we have to ensure that `opened = TRUE` so the `if(icon_state == "[initial(icon_state)]open")` succeeds and does its job correctly. Sadly we did dum shit like this ``` /obj/structure/closet/crate{ icon_state = "crateopen" } ``` throughout the entire code base, we thought backwards and were only concerned in making the closet look open rather than setting its correct variables to actually say that it is opened. because none of these crates actually set `opened = TRUE` the final icon state becomes just "crate" NOT "crateopen" therefore the if condition fails and we add the component https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L36-L37 with the wrong parameters, so when closing the closet after_close() removes the component with the wrong arguments https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L81-L84 that is does not unregister the signals and readds the component i.e. re-registers the signals causing runtime. The solution just do this ``` /obj/structure/closet/crate/open[mapping helper] ``` To clearly state that you want the closet to be open, that way you don't have to memorize the icon_state for each different type of crate, it's consistent across all crates & you don't get runtimes. And that's exactly what i did everywhere Another issue that is fixed is "Houdini crates" i.e. crates which are open & appear empty but when you close & reopen them magical loot appears, Go ahead walk upto to cargo and find any empty crate that is open and do this Fixes #69779 https://user-images.githubusercontent.com/110812394/232234489-0193acde-22c8-4c19-af89-e897f3c23d53.mp4 You will be surprised, This is seriously harmful to players because they can just walk by a crate that appears to be open & empty only to realize later that it had some awesome loot. Just mean The reason this happens is because of the Late Initialization inside closets https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L85-L86 What late initialization does is suck up all stuff on its turf https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/closets.dm#L97-L100 In theory this is supposed to work perfectly, if the closet is closed move everything on the turf into the closet and so when the player opens it, they all pop back out. But what happens if the closet is opened before ` LateInitialize()` is called? This breaking behaviour is caused by object spawners https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/effects/spawners/random/structure.dm#L94-L100 And maint crates https://github.com/tgstation/tgstation/blob/f1178342084bf89897a46f6ce9dc849233bed21b/code/game/objects/structures/crates_lockers/crates.dm#L141-L143 These 2 spawners open up the crate based on random probability before ` LateInitialize()` is called on the crate and so what happens is the crate is first opened and then stuff on the turf is sucked in causing an open but empty crate to appear. The solution is simple just check again in ` LateInitialize()` if our crate is still closed before we proceed.That's fixed now too **Code Refactors** 1. Introduced 2 new signals COMSIG_CLOSET_PRE/POST CLOSE which are the counter parts for the open signals. hook into them if you ever need to do stuff before & after closing the closet while return BLOCK_CLOSE for COMSIG_CLOSET_PRE_CLOSE if you want to block closing the closet for some reason 2. 2 new procs `before_open()` & `before_close()` which are the counter parts for `after_open()` & `after_close()`. If you need to write checks and do actions before opening the closet or before closing the closet override these procs & not the `open()` & `close()` procs directly **Secured Craftables** This is just a reopened version of #74115 after i accidently merged another branch without resolving the conflicts first so i'll just repaste everything here, since crates & closets are related might as well do all in one 1. **Access secured closets** - **What about them?** **1. Existing System** If you wanted to create a access secured closet with the existing system its an 4 step process - First construct a normal closet - Weld it shut so you can install the airlock electronics - Install the electronics [4 seconds] - Unweld This is a 4 step process which takes time & requires a welding tool **2. New system** Combine the 4 steps into 1 by crafting the secure closet directly  - **Bonus Features** **1. Card reader** The card reader acts as an interface between the airlock electronics & the player. Usually if you want to change access on a locker you have to - Weld the closet shut - Screw driver out the electronics - Change the settings - Install it back - Unweld With a card reader there is no need of a welder & screwdriver. You can change the access of the locker while its operational **How do i install the card reader?** 1. Weld the closet shut 3. Insert card reader with hand 4. To remove the card reader use crowbar or just deconstruct the whole closet with a welding tool 5. Unweld closet **How to change its access?** This will overwrite the settings on your airlock electronics. To do this 1. make sure the closet is first unlocked. This is important so that no random person who doesn't have access to the closet can change its access while its locked. It would be like giving the privilege of changing your current password without first confirming if you know the old password 2. attack/swipe the closet with your PDA. Make sure your ID card is inside the PDA for this to work. You can also just use your ID card directly without a PDA 3. You will get 3 options to decide the new access levels  They work as follows - **Personal**: As the name implies only you can access this locker and no one else. Make sure to have your ID on you at all times cause if you loose it then no one can open it - **Departmental**: This copies the access levels of your ID and will allow people having those exact same access levels. Say you want to create a closet accessible to only miners. Then have an miner choose this option and now only miners can open this closet. If the Hop sets custom access on your ID then only people with those specific access levels can open this closet - **None**: No access, free for all just like a normal closet **Security:** After you have set the access level it is important to lock the access panel with a "multi-tool", so no one else can change it. Unlock the panel again with the "multi-tool" to set the new access type **2. Give your own name & description** To rename the closet or change its description you must first make the closet access type as personel i.e. make it yours, then use an pen to complete the job. You cannot change names of departmental or no access closets because that's vandelism **3. Custom Paint Job** Use airlock painter. Not intuitive but does the job.  **4. Personal closets** Round start personal closets can have their access overridden by a new ID when in it's unlocked state. This is useful if the last person has no use for the closet & someone else wants to use it. - **Why its good for the game?** 1. Having your own personal closet with your own name & description gives you more privacy & security for your belongings so people don't steal your stuff. Personal access is more secure because it requires you to have the physical ID card you used to set this access and not an ID which has the same access levels as your previous ID 2. Make secure closets faster without an welding tool & screw driver 3. Bug fix where electronics could be screwed out from round start secured closets countless times spawning a new airlock electronic each time 2. **Access secured freezers** - **What about them?** The craftable freezer from #73942 has been modified to support secure access. These can be deconstructed with welders just as before  - **How does it work?** The access stuff works exactly the same as secure closets described above. You can rename & change description with pen just like the above described secure closets. No paint job for this. Install card reader with the same steps described above. - **Why it's good for the game?** 1. Make access secured freezers faster without a welder and screwdriver 2. Your own personally named & locked freezer for storing dead bodies is always a good thing 4. **Access secured suit storage unit** - **What about them?** Suit storage units now require airlock electronics for construction. The access levels you set on it will be used to decide 1. If a player can unlock the unit 2. If the player can open the unit after unlocking 3. If the player can disinfect whatever is inside By default all round start suit storage units have free access - **Install card reader** Provides the same functionality as secured closets described above. To install it 1. Open its panel with a screw driver 2. Add a card reader to it with hand 3. Close the panel When you deconstruct the machine the card reader pops back out - **Why it's good for the game?** 1. Having your own access protected and named suit storage unit so random people don't steal your mod suits? Who wouldn't want that.? Provides security for department storage units. 2. If you have the unit locked then you cannot deconstruct the machine with a crowbar providing additional security 3. Fixes #70552 , random people can't open/unlock the suit storage unit without access. You can set personal access to make sure only you can access the unit ## Changelog 🆑 add: Access secured closets. Personal closets can have their access overwritten by an new id in it's unlocked state add: Access secured freezers. add: Access secured suit storage units. fix: Suit storage unit not having access restrictions. fix: airlock electronics not properly getting removed after screwing them out from round start lockers fix: round spawned open crates run timing when closed fix: open crates hiding stuff in plain sight fix: open closets/crates sucking up contents during late initialize causing them appear empty & open /🆑 --------- Co-authored-by: Tim <timothymtorres@gmail.com> |
||
|
|
8f885edff6 |
Single Tank Guide contraband poster (#75167)
## About The Pull Request Adds a contraband poster with a guide for high quality single tank bombs.  ## Why It's Good For The Game Nice poster for the contraband pool. ## Changelog 🆑 image: added single tank bomb guide contraband poster /🆑 |
||
|
|
1674f25725 |
New Medical job: The Coroner (#75065)
## About The Pull Request HackMD: https://hackmd.io/RE9uRwSYSjCch17-OQ4pjQ?view Feedback link: https://tgstation13.org/phpBB/viewtopic.php?f=10&t=33972 Adds a Coroner job to the game, they work in the Medical department and have their office in the Morgue. I was inspired to make this after I had played my first round on Paradise and messed around in there. The analyzer is copied from there (https://github.com/ParadiseSS13/Paradise/pull/20957), and their jumpsuit is also mostly stolen from it (i just copied the color scheme onto our own suits). Coroners can perform autopsies on people to see their stats, like this  They have access to Medbay, and on lowpop will get Pharmacy (to make their own formaldehyde). They also have their own Secure Morgue access for their office (doubles as a surgery room because they are edgelords or whatever) and the secure morgue trays. Secure Morgue trays spawn with their beepers off and is only accessible by them, the CMO, and HoS. It's used to morgue Antagonists. Security's own morgue trays have been removed. The job in action https://cdn.discordapp.com/attachments/950489581151735849/1102297675669442570/2023-04-30_14-16-06.mp4 ### Surgery changes Autopsies are a Surgery, and I tried to intertwine this with the Dissection surgery. Dissections and Autopsies both require the Autopsy scanner to perform them, however you can only perform one on any given body. Dissections are for experiments, Autopsies is for the paper of information. Dissected bodies now also give a ~20% surgery speed boost, this was added at the request of Fikou as a way to encourage Doctors to let the Coroner do their job before reviving a body. I also remember the Medical skill, which allowed Doctors to do surgery faster on people, and I hope that this can do something like that WITHOUT adding the potential for exploiting, which led to the skill's downfall. ### Morgue Improvements Morgue trays are no longer named with pens, they instead will steal the name of the last bodybag to be put in them. Morgue trays are also removed from Brig Medical areas and Robotics, now they have to bring their corpses to the Morgue where the Coroner can keep track and ensure records are properly updated. ### Sprite credits I can't fit it all in the Changelog, so this is who made what McRamon - Autopsy scanner Tattax - Table clock sprites and in-hands CoiledLamb - Coroner jumpsuits & labcoats (inhand, on sprite, and their respective alternatives) - Coroner gloves - CoronerDrobe (the vending machine) ## Why It's Good For The Game This is mostly explained in the hackmd, but the goal of this is: 1. Increase the use of the Medical Records console. 2. Add a new and interesting way for Detectives to uncover mysteries. 3. Add a more RP-flavored role in Medical that still has mechanics tied behind it. ## Changelog 🆑 JohnFulpWillard, sprites by McRamon, tattax, and Lamb add: The Coroner, a new Medical role revolving around dead corpses and autopsies. add: The Coroner's Autopsy Scanner, used for discovering the cause for someone's death, listing their wounds, the causes of them, their reagents, and diseases (including stealth ones!) qol: Morgue Trays are now named after the bodybags inside of them. balance: The morgue now has 'Secure' morgue trays which by default don't beep. balance: Security Medical area and Robotics no longer have their own morgue trays. balance: Dissected bodies now have faster surgery speed. Autopsies also count as dissections, however they're mutually exclusive. /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> |
||
|
|
aacc85964a |
Adds a unit test that all roundstart spawnable jobs have a landmark to spawn at (#74995)
## About The Pull Request https://github.com/tgstation/tgstation/pull/74985#issuecomment-1523773626 Tests that all jobs that have `spawn_position > 0` at roundstart have a location to spawn at. Also changes the failure message for `get_default_roundstart_spawn_point` to send to `log_mapping` rather than `log_world`, as it is a map error and log world doesn't really help anyone. This would've been sufficient for the existing unit test `log_mapping`, but that unit test expects that the log has an areacoord supplied, which we can't really do, given we're reporting a _lack_ of something. ## Why It's Good For The Game Stops maps from regressing and dumping people on the latejoin shuttle roundstart. ## Changelog ~~Not necessary unless I find a map which forgot a landmark~~ 🆑 Melbert fix: Tramstation Robotics and RD now spawn in their departments roundstart fix: Birdboat detective now spawns in their office /🆑 |
||
|
|
1b5c0489a4 |
ex_act() will work on basic mobs again (lol) + Unit Test (#74953)
basically ex_act's implementation on basic mobs would call parent and then react to it's value, this is presumably to do the first check about space vine mutations and whatever. the problem is that the `/mob/living` implementation would itself also call parent, and that would always return null because `/atom/proc/ex_act` doesn't have a set return value. So, this simply would _always_ early return, with ex_act presumably *never* working on basic mobs for at least four months now. I decided to then change up the return values for pretty much all implementations of `ex_act()` since there was no rhyme or reason to returning null/FALSE/TRUE, and documenting why it's like that. Just to make sure I wasn't breaking anything doing this (at least on base implementations), I wrote a unit test for all of the three major physical types in game (objs, mobs, turfs) because i am a paranoid fuckar. we should be good to go now though. ## Why It's Good For The Game i noticed this because placing c4's on sargeant araneus wouldn't actually damage it whatsoever. now it actually does the stated 30 damage, but araneus has like 250 health so it doesn't actually matter in the long run. whatever at least it does the damn 30 now. also adds a unit test for this specific case as well as a range of other cases to ensure this stuff doesn't silently break in this way anymore |
||
|
|
f2fd69a49a |
Minerals have been refactored so costs and minerals in items are now in terms of mineral defines. (#75052)
Ladies, Gentlemen, Gamers. You're probably wondering why I've called you all here (through the automatic reviewer request system). So, mineral balance! Mineral balance is less a balance and more of a nervous white dude juggling spinning plates on a high-wire on his first day. The fact it hasn't failed after going on this long is a miracle in and of itself. This PR does not change mineral balance. What this does is moves over every individual cost, both in crafting recipes attached to an object over to a define based system. We have 3 defines: `sheet_material_amount=2000` . Stock standard mineral sheet. This being our central mineral unit, this is used for all costs 2000+. `half_sheet_material_amount=1000` . Same as above, but using iron rods as our inbetween for costs of 1000-1999. `small_material_amount=100` . This hits 1-999. This covers... a startlingly large amount of the codebase. It's feast or famine out here in terms of mineral costs as a result, items are either sheets upon sheets, or some fraction of small mats. Shout out to riot darts for being the worst material cost in the game. I will not elaborate. Regardless, this has no functional change, but it sets the groundwork for making future changes to material costs much, MUCH easier, and moves over to a single, standardized set of units to help enforce coding standards on new items, and will bring up lots of uncomfortable balance questions down the line. For now though, this serves as some rough boundaries on how items costs are related, and will make adjusting these values easier going forward. Except for foam darts. I did round up foam darts. Adjusting mineral balance on the macro scale will be as simple as changing the aforementioned mineral defines, where the alternative is a rats nest of magic number defines. ~~No seriously, 11.25 iron for a foam dart are you kidding me what is the POINT WHY NOT JUST MAKE IT 11~~ Items individual numbers have not been adjusted yet, but we can standardize how the conversation can be held and actually GET SOMEWHERE on material balance as opposed to throwing our hands up or ignoring it for another 10 years. |
||
|
|
fa0225b05c |
Converts Spiderlings from Structures to Basic Mobs (#75001)
If I could've made this more atomic, I would have in a heartbeat, trust me. ## About The Pull Request Hey there. People were mocking us for having spiderlings still be a subtype of `/obj/structure`. I decided to take a lot of time to fix that. A lot of behavior it was implementing was just pseudo-mob stuff, so it was actually easier than it looked for the raw conversion. A lot of the footwork on spider stuff in the basic framework was already done previously by Jacquerel, so that was pretty nice. However, there are two new things that weren't introduced in the code that had to be put in. A) A component to handle growth and differentiation into a mob. This may have already existed, no clue. If it does (and it's NOT evolutionary_leap), let me know. B) AI Behavior to handle seeking out a vent, entering a vent, and then exiting out of a different vent. I may have gone a bit wacky on the code, but it certainly works as expected (spiderling goes in one vent, exits the other). Let me know if you can think of a way it can be better optimized, but it was deliberately written to be very failsafey in case shit goes yonkers. One fundamental difference between structure spiderlings and basic mob spiderlings (beyond the AI and not just a random prob() check for movement) is the fact that they had vent movement coded in... but we _really_ don't need stuff like that for our intents and purposes. If the range turns out to be too OP in the current framework, we can always change it up a bit, but also there's a _lot_ of vents we can end up in the station (my testing had one spiderling end up in the AI sat to get obliterated). ## Why It's Good For The Game Spiderlings aren't structures! They behave like a mob should! Players can possess spiderlings! They work seamlessly with differentiating into a giant spider! Better AI! More room for people to add into this very under-utilized buggers! ## Changelog 🆑 refactor: Spiderlings are now basic mobs, report any complete weirdness/deviation from known behavior. They should be a lot more intelligent now though. add: AI Spiderlings are super fragile, but they're also super fast, especially when they get into a vent. Once they're in circulation, they could end up everywhere! Maybe in the armory, maybe in a locked closet in maintenance. Be sure to be vigilant and splat them whenever you can to save the station from a whole lotta heartache! /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
a49af57567 | March into Mapness - Moon Base 19 (#74067) | ||
|
|
b093b12e03 |
Burning and acid components fixes and improvements (#74803)
## About The Pull Request Generally cleans up code on both components. Moves burn proc back to /obj level, I'm not sure why I moved it to /atom level, it was unnecessary. Acid component generalized so it can be used on any atom that uses atom_integrity. Fixes a bug where objects that stopped burning didn't update their burn overlay properly due to bad removal logic and leftover code. Standardizes examine messages on burning items by just slapping an examine signal registration on the component. Adds fire particles to items thanks to Lemon's PR: https://github.com/tgstation/tgstation/pull/74524 ## Why It's Good For The Game Particles look cool   Bugfixes are good Code improvements are good ## Changelog 🆑 add: Burning items now get (small) smoke particles. Sick. fix: Burning objects now clear their burning overlay properly. qol: Examining burning objects will always tell you that they are burning. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
b8f03c5e9a |
Stops the base random poster spawner from spawning traitor posters (#74868)
## About The Pull Request When the syndicate posters were added, they were intended to be a traitor objective. To quote from the original PR: >"If you start seeing red posters then you know there are traitors somewhere." As an unintended consequence of how poster randomization works however they are able to spawn from the base random poster mapping object, defeating the purpose. They should only be able to be placed by actual player traitors (or a deliberate mapping decision). This PR just removes them from the pool of posters to select from when using `/obj/structure/sign/poster/random`. You can still use `/obj/structure/sign/poster/traitor/random` to spawn random traitor posters both when mapping or ingame via commands. This will close https://github.com/Skyrat-SS13/Skyrat-tg/issues/17956. ## Why It's Good For The Game More control over mapping poster placement. ## Changelog 🆑 fix: traitor objective posters will no longer be able to spawn from general random poster spawners. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
77aebb4c29 |
Audio File Cleanup (#74863)
## About The Pull Request Removes a bunch of sound files that we don't use and moves some sound files into better locations. I'm hoping to get an archive repo for sounds going, much like the [map_depot](https://github.com/tgstation/map_depot) and [SS13-sprites](https://github.com/tgstation/SS13-sprites). EDIT: The old sound files are being moved here: https://github.com/tgstation/SS13-sounds Also increased the volume of the clownana rustle sound and clipped off some dead air from shockwave_explosion ## Why It's Good For The Game Removes a total of 1.95MB worth of unused sound files from the codebase. ## Changelog 🆑 Tattle soundadd: increased the volume of the clownana rustle /🆑 --------- Co-authored-by: tattle <article.disaster@gmail.com> |
||
|
|
fa644f7aee |
Fixes eigen lockers bypassing TP protection (#74722)
## About The Pull Request Fixes eigenlockers bypassing teleport protections.  Tested w/ one and multiple lockers, prevents entering or exiting from a tp-prot eigenlocker ## Why It's Good For The Game This came up in an away mission designed to be a "one-way-trip", the only exit being at the very end of the away mission. However, people are able to bypass this with eigenlockers, thanks to them performing no teleportation checks, which I believe is an oversight. ## Changelog 🆑 fix: Eigenstasium lockers no longer bypass teleport protection /🆑 --------- Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: san7890 <the@san7890.com> |
||
|
|
9219ca33f9 |
Optimizes particle holders (#74524)
## About The Pull Request It isn't really an issue now, but these will be used more in future, so let's start off strong. There's a lot of work going on here that doesn't really need to be happening, mostly off not knowing a trickTM. Biggest one is vis_locs and vis_contents are linked lists, being in one requires being in another. Atoms clear out their vis_locs on Destroy, so we do not need to "own" references to things that have us in their vis_contents. This combined with knowing our old loc's loc off Moved made the use of weakrefs here unneeded. Similarly, atoms inside atom movables qdel on when the upper layer is deleted, so most cases of the qdeleting signal were unneeded. Also, we only cared about movement if we were an item (speaking of which, I swapped out the isitem stuff with a flag that gets passed into the new() call) ## Why It's Good For The Game Speed |
||
|
|
d0441464fb |
Basic pollen-particles for plants pollenating. (#74675)
Legally endorsed nightcode 👍 ## About The Pull Request When 2 plants are adjacent to each other, they will begin to cross-pollenate, sharing their potency, instability, and yield values between the two. This has been in the game since #50001 , however we never added a more clear visual tell that cross-pollenation exists. Thanks to the magic of *barticles*, now you can!  _pictured: wheat and tomatoes pollenating_ Adds a simple particle effect, largely lifted from bonfires, that indicates that two plants are sharing stats at minimum. ## Why It's Good For The Game Following discussion from #74621, it was decided we needed and preferred a more visual cue to the mechanic. As a general point I think that's a longer term fix to the issue, and this adds more visual clarity to an otherwise arcane mechanic (heh). Looking for feedback on how to improve the look of the particles but for fast nightcode I think I did okay for a first try ## Changelog 🆑 imageadd: Hydroponics trays now have pollen particles that they generate when they share stats and chems. Non-allergenic! /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
a0e368930f |
Reworks burning objects to be a component (#74688)
## About The Pull Request Title. ## Why It's Good For The Game Simply put, allows for atoms which are not /obj but use atom_integrity to burn up too, which is nice and good. But also, it allows for neat behavior like burning particle effects (only structures use that right now to spawn smoke)  ## Changelog 🆑 add: Burning structures spawn smoke particles. Sick. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> |
||
|
|
b1716732b0 |
The North Star Expeditionary Vessel - A Second Wind (#74371)
## About The Pull Request A new map for TGstation, in the works! It has 4 fucking Z levels, a massive expansive maintenance with unique designs, and some unique code features in the works. To Do: - [x] Update the Map to Modern TG - [x] Local Tests - [x] Work on Map Optimizations - [x] Run Live Tests Fikou has greatly helped with creating an important flavour aspect of this map, Trek Uniforms on anyone who joins! See the forum thread for more. This includes the framework for innate station traits, station traits loaded as long as it's in a map's json Here's the forum dev thread there are screenshots there. https://tgstation13.org/phpBB/viewtopic.php?p=657252#p657252 ### Mapping March Ckey to receive rewards: Cheshify ## Why It's Good For The Game So, this is the North Star. An effort taking multiple mappers and of 9~ months of hard work. This map was not initially designed for TGstation, but always designed for TGstation code. The process of retooling the map for TGstation was an absolute joy and I feel like the map definitely has it's niche as a massive and unique experience for it's players. I adore this map, it's gorgeous, has a unique aesthetic, and a number of very funny interactions with multi-Z. The PR comes packed with unique mechanics for future mappers (innate station traits!), a number of map-fitting shuttles, and a fun spacefaring uniform gimmick for the crew. **This is my second attempt at bringing this map into rotation. It was initially closed due to concerns about maptick and performance, as I wasn't willing to push for a map to be added to the repository if it didn't function to my own standards. I've been informed by a number of coders far better than I that optimizations are arriving and enroute, so I think it's time to dust her off and set sail for another journey.** **Quick Disclaimer: Due to some design decisions disagreed upon by the headcoder team and myself, the map will not be featuring unique roundstart uniforms, and despite my design intentions, the innate station trait features will be shelved for now.** ## Changelog 🆑 Cheshify, Fikou, Blue-Berry, Zytolg, InfiniteGalaxies, Striders, Sylphet, Riggle, Soal, Andry, Crit, Deranging, and Pumpkin0. add: Nanotrasen's Newest Exploratory Vessel is now available! Meet the North Star! add: More landmines, and a landmine random spawner. add: energy barriers now have a regenerative subtype, fit for permanent installations. code: Raised the number of possible level render to 4, check your preferences if needed to be reduced. /🆑 --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
4c48966ff8 |
Renames delta time to be a more obvious name (#74654)
This tracks the seconds per tick of a subsystem, however note that it is not completely accurate, as subsystems can be delayed, however it's useful to have this number as a multiplier or ratio, so that if in future someone changes the subsystem wait time code correctly adjusts how fast it applies effects regexes used git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i 's/DT_PROB/SPT_PROB/g' git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i 's/delta_time/seconds_per_tick/g' |
||
|
|
9b401a87be |
[MDB IGNORE] UpdatePaths to convert directional pane windows to their proper subtypes, also creates the /south spawner for consistency (#74517)
## About The Pull Request Title. ## Why It's Good For The Game 1. This nukes a lot of silly var edits, and cleans up maps 2. The south spawner *isn't* really needed, but having it is nice for consistency and clarity 3. Sometime ago I forget which map but one of them had var edited directional subtypes and that made me cry ## Changelog 🆑 Jolly fix: Maps internally had the code for the "directional" windows altered a bit. If you see stacked window panes or things look incorrectly, please file a bug report as that isn't intentional!! /🆑 |
||
|
|
6346df18bc |
Significantly speed up create & destroy by reducing the amount of time to wait for GC (#74604)
The check queue is 5 minutes long because that's the longest a client can hold onto a reference. Without clients, we can drastically decrease the time we have to wait. This lowers the time down to 10 seconds (though everything right now deletes in 5). This will represent a 5 minute decrease in CI across the board, freeing up runners. Makes a few changes to stuff that was being held for more than 10 seconds. - `VARSET_CALLBACK` now works through weakrefs, to allow for pAIs to have their holochassis init timers. - Nar'Sie cleans herself up in GLOB.cult_narsie if she's deleted. - "Spooky portals" no longer hold onto a reference for 2 minutes. - `poll_candidates` short circuits to an empty list if there are no candidates, to avoid several 30 second+ long timers Originally this was going to be a more clever hack from @MrStonedOne about short circuiting if everything deletes before the wait, but we realized that basically nothing actually holds onto references for that long without clients, and that nothing really should anyway |
||
|
|
f024f54baa |
Convert Atmos Sanity to use Landmarks (#74454)
## About The Pull Request Lets mappers do their thing without causing needless grief Lets mappers mark areas as a goal area for atmos connectivity, aswell as starting points There are four landmarks added. - Goal - Start - Ignore - Station Areas Goal and start are fairly self explanatory, note that not having any goals will default to using all station areas, with a notice. If you intend for that to happen place the Station Areas landmark somewhere on the map, preferably near the top left of the map. The ignore marker allows you to mark an area as ignored for purposes of connectivity. If you purposefully want a disconnected room off in near space for example. ## Why It's Good For The Game Alternative of and closes https://github.com/tgstation/tgstation/pull/74444 More workability for mappers |
||
|
|
20ea0d7a31 |
Stops admin spawned ghost portals from mutating global lists (#74607)
## About The Pull Request Admin spawned ghost portals call `make_ghost_swarm(null)` This in turn causes `!length(candidate_list)` to succeed The intended effect of this is that the candidate list gains the entries of `GLOB.current_observers_list` and `GLOB.dead_player_list` In actuality, what this does is that it causes `candidate_list` to be assigned to `GLOB.current_observers_list`, then adds the contents of `GLOB.dead_player_list` to `GLOB.current_observers_list` This is because `null += list()` just sets the variable to the list, while `list() += list()` adds the contents of the latter to the former in place (does not produce a new list object) All this needs is a default set so that a `null` value passed uses an empty list rather than nothing ## Why It's Good For The Game This is very unlikely to pop up (admin only in fact), but it's mutating managed globals like this is not good. ## Changelog 🆑 Melbert fix: Admin spawned ghost portals no longer make all dead players considered also as observers (they're two different things) /🆑 |
||
|
|
73ba9046df |
[Ready] New Cosmic Heretic Path DLC (#73915)
## About The Pull Request This PR adds a new Cosmic Heretic.      Main Paths: - Eternal Gate: Opens up the Path of Cosmos to you. Allows you to transmute a sheet of plasma and a knife into an Cosmic Blade. You can only create two at a time. - Grasp of Cosmos: Your Mansus Grasp will give people a star mark (cosmic ring) and create a cosmic field where you stand. - Cosmic Runes: Grants you Cosmic Runes, a spell that creates two runes linked with eachother for easy teleportation. Only the entity activating the rune will get transported, and it can be used by anyone without a star mark. - Mark of Cosmos: Your Mansus Grasp now applies the Mark of Cosmos. The mark is triggered from an attack with your Cosmic Blade. When triggered, the victim transport back to the Cosmic Diamond, which is the location your mark was applied to them. After getting transported they will be paralyzed for 2 seconds. - Star Touch: Grants you Star Touch, a spell that will give people a star mark (cosmic ring) and create a cosmic field where you stand. People that already have a star mark will be forced to sleep for 4 seconds. When the victim is hit it also creates a beam that deals a bit of fire damage and damages the cells. The beam lasts a minute, until the beam is obstructed or until a new target has been found. Can remove Cosmig Runes and teleport you to your Star Gazer when used in hand. - Star Blast: Fires a projectile that moves very slowly and create a cosmic field on impact. Anyone hit by the projectile will recieve burn damage, a knockdown and a star mark. - Cosmic Blade: our blade now deals damage to peoples cells through cosmic radiation. - Cosmic Expansion: Grants you Cosmic Expansion, a spell that creates a 3x3 area of cosmic fields around you. Nearby beings will also receive a star mark. - Creators's Gift: The ascension ritual of the Path of Cosmos. Bring 3 corpses with bluespacedust in their body to a transmutation rune to complete the ritual. When completed, you become the owner of a Star Gazer. You will be able to command the Star Gazer with Alt+click. You can also give it commands through speech. The Star Gazer is a strong mob that can even break down reinforced walls. Star Touch can now teleport you to your Star Gazer when Star Touch is used in hand." Side Paths: - Ash-Cosmic: Fire Fish: Allows you to transmute a pool of ash, eyes, and a sheet of plasma into a Fire Shark. Fire Sharks are fast and strong in groups, but are bad at combat. - Ash-Cosmic: Curse of The Stars: Allows you to transmute a bluespace crystal, a pool of ash, and a liver to cast a Curse of The Stars on a crew member. While cursed, the victim will recieve a star mark that lasts for at least 3 minutes. This star mark makes it so that the crew member cannot enter cosmic carpet fields. The victim will also recieve a cosmic carpet trail for at least 3 minutes. - Ash-Cosmic: Eldritch Coin: Allows you to transmute a sheet of plasma, a diamond and eyes to create an Eldritch Coin. The coin will heals when landing on heads and damages when landing on tails. The coin will heal for more, but only for heretics. Extra ability information: - Star Mark: This is a status effect that prevents people from walking into cosmic fields. - Cosmig Fields: Only block entities marked with a star mark, projectiles or throwing items will still work. Lasts only 30 seconds and 5 seconds for the Cosmig Trail trait. Some things I wanted to mention: - Why the Star Gazer is balanced: It has 3000 health and can kill people pretty fast, but at the same time, anyone can space the Star Gazer and lead it away from the heretic if they do not pay attention. - The Cosmic Heretics balancing has been carefully considered. It is relatively weak in group situations but strong in one to one combat. - Balance changes can also be made after the PR gets merged need be, or it can be test merged first. ## Why It's Good For The Game New heretic path means more choice and a different play style. ## Changelog 🆑 add: Adds new Cosmic Heretic. soundadd: Adds Cosmic Heretic sounds. imageadd: Adds Cosmic Heretic sprites. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> |
||
|
|
6085e3b5ee |
Reagent soup / Soup rework / Stoves - A kitchen expansion (#74205)
## About The Pull Request  **This PR:** - Reworks most* existing soup into reagents. - Adds Stoves and Ranges. Ranges replace most* existing ovens. - Adds soup pots, to cook soup **How does it work?** In the kitchen you will find a stove now. Stoves act as a "reagent container heater", essentially a chem heater. You can set a pot onto the stove. To make soup, visit the cooking recipe book for a guide. Most recipes are the same as before, just tweaked slightly - Add water to the pot (50 units for 1 batch generally), then add all the corresponding ingredients to the pot. Set the pot out on the stove and right click it to turn it on. If the recipe's correct, shortly it will start to mix and give you soup! One soup recipe will give you roughly 3 servings of soup. You can pour our the soup into a bowl using a ladle or just by pouring it manually. Of note: **All of the reagent contents of the ingredient are transferred into the soup.** Better, more nutrient rich ingredients produces more soup, and poisoned produce will pass it on. If you place the soup into a chem master, you will notice it's roughly half "soup reagent" and half a variety of reagents, including nutriments / proteins. This is your soup! It is recommended you serve your soup with the reagents included, as they make up more nutrition for the customer, however you can separate it out if you're picky. **Todo:** - [x] Fill out the PR body a bit more - [x] Mapping (wait for big merge conflict pr to go past) - [x] Soup colors - [x] Balance pass over for soup recipes - [x] TODOs - [ ] Unit tests - [x] Cullen Skink's recipe is invalid - [x] Try to see if there's an easy way to prevent soup from fattening you up too easy. ## Why it's good for the game Adds some more depth to the kitchen and moves chef away from the click-button-get-food style that exists. Allows for inherently custom soups by the way of making it reagents, so no need to support custom soup food items. ## Changelog 🆑 Melbert, stove and pot sprites by Kryson, ladle sprite by Kinneb add: Kitchens are now stocked with Ranges. add: You can now print (and create) Stoves. add: The dinnerware vendor now dispenses ladles. add: Spoons can now actually spoon... things. add: Soup has been reworked entirely. Soups are now reagents, cooked via a soup pot on a Stove or Range. Simply add water and your required items, then apply heat. Be careful not to boil over! add: Stoves, Ranges, and Griddles will now heat up their surroundings - don't turn them on around plasma! fix: Fixes being able to cook in an Oven while the room is depowered qol: Hitting a customer bot with an incorrect recipe no longer counts as a hostile attack leading to your demise shortly after refactor: Customer bots that request a reagent now use custom orders code: Cut down a lot of code in the crafting menu code, and removes some ugly ispaths del: Soup is no longer food items, so can't appear in random food pools (at least not yet). balance: Virus Food recipe now requires you cool it to 200k. /🆑 |
||
|
|
78db293e77 |
Fire and water particle effects for mobs (sick) (#74555)
## About The Pull Request Mobs on fire and wet mobs get cool particle effects ## Why It's Good For The Game https://user-images.githubusercontent.com/82850673/230459326-184b5553-17db-49df-997f-8db4c87df601.mp4 fire particles (big fire) small fire just reduces the spawn rate of particles to 20% of this https://user-images.githubusercontent.com/82850673/230468680-b831e557-bb0a-4489-8aef-4fefdfc14e43.mp4 wet particles sick ## Changelog 🆑 add: Mobs on fire get particle effects (it looks sick) add: Wet mobs get particle effects (it looks sick) /🆑 |
||
|
|
126d1cc835 |
Fix anomaly releaser creating a "Stable " (#74525)
## About The Pull Request Fixes this.  ## Why It's Good For The Game Bugfix ## Changelog 🆑 fix: Anomaly releaser no longer creates a "Stable " /🆑 --------- Co-authored-by: Time-Green <timkoster1@hotmail.com> |
||
|
|
768bc7b942 |
[MDB Ignore] Audits all generic event landmarks, removed them from generic maintenance and ai satellite cores (except in Tramstation modular maint) (#74492)
## About The Pull Request I went through all of our maps and audited our generic event spawn landmarks. They have largely been removed from maintenance, unless in a unique maintenance area. They have also been removed from AI satellite cores. Finally, many maps which have had any placed in certain departments now have them. ## Why It's Good For The Game ### Why? With #74374, now we have two landmarks for generic event use, "Generic Event Spawn" and "Generic Maintenance Event Spawn". So I wanted to give the former a pass through to have the two overlap less. I removed generic event spawn points from all non-specific maintenance locations. That is to say maintenance that doesn't have its own area, like "Abandoned Kitchen" etc. I did this to all maps except Tramstation's maintenance modules, because I didn't want to audit all 90 of them. While doing this, I went through the rest of the map and added generic events to departments missing it. A few remaps, especially on Icebox, completely forgot to add any event landmarks. And also while doing this, I noticed we weren't consistent on whether it should affect ai satellites or not. So I err'd on the side of caution and removed any from AI satellite cores, but left one in the lobby / teleporter room. ### What does this effect? In the past generic event spawns were used for **Clock cult portal locations** (the comment was never even updated!). Given it's gone, what's it used for now? Well, only three things - Radiation Leak event, placing anomalies during a supermatter delamination, and placing safety portals during a supermatter cascade. With this context, this means these events / occurances will have slightly more teeth to it. Instead of having them placed in random maintenance halls or largely unreachable areas (Ai core), it is placed in more publicly available to the player areas. ## Changelog 🆑 Melbert code: Audits the placement of Generic events markers. Some departments which previously had none now have some, and maintenance largely no longer holds them. balance: Anomalies from a supermatter delamination, radiation leaks, and suipermatter cascade portals are now placed in more commonly traversed and easy to identify areas. They will also now trigger in places like Icebox med and brig when they previously couldn't. /🆑 |