mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-04 21:56:01 +01:00
ed94de4ddf7edad8694badefc577392e0f762bf5
1036 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
0b29e77985 |
Adds user feedback for going over order limits in cargo console (#76344)
## About The Pull Request This'll prevent weird "above the max by accident" cases, and also uses defines instead of hardcoded stuff. This code is often duped, wish we had a better way of handling it. Oh also removes a few safety copies before for loops that aren't actually needed (for x in list copies the list) ## Why It's Good For The Game Better UX, slightly saner code |
||
|
|
2333e8b0c1 |
Makes cargo orders and req forms easier to differentiate (#76499)
## About The Pull Request This PR makes two very simple changes. First, requisition forms printed off by the order consoles in cargo now print with a timestamp on the name, so that it's a bit easier to differentiate between forms when there's a bunch of them. Second, crates that come on the cargo shuttle now have the order ID they are associated with appended to their name. The req forms:  As well as two crates that would normally be impossible to differentiate   ## Why It's Good For The Game When there are lots of requisition forms laying on the ground and you need to refer back to one of them (to see who ordered what or something like that), it can be a pain to find the right one since they all have the same name. This is even worse if someone has tried to be helpful and put them all in a folder, since you now have to take them out and look at each one. Adding the timestamp helps to remedy this. For the crates, when someone orders something that doesn't come with a named crate (for example, some medical orders just have the name "medical crate"), or when multiples of the same things are ordered, it can be hard to match up the shipping manifest with the crate again, leading to unwanted fines, especially when people don't return all their crates at once. Adding the order ID to the name of the crate lets you easily identify which manifest goes where. ## Changelog 🆑 qol: Crates that come in the cargo shuttle now have the order ID in their name qol: Requisition forms are now blue, and named with the timestamp they were created on /🆑 --------- Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> |
||
|
|
064c8893bf |
Removes language encryption keys (#76309)
## About The Pull Request We want languages to be special to species, these devalue that and make them far too common. The listen only thing does this especially badly. I'm sorry arcane I know it's good for cargo but this vibes horrible and we shouldn't have it ## Why It's Good For The Game You should be able to talk privately via language with minimal snoopage ## Changelog 🆑 del: Removed language encryption keys from cargo, s bad for species talking among each other, a thing we want them to do /🆑 |
||
|
|
9eddec4bd1 |
HMS, once again. (#75654)
## About The Pull Request Bug reports seem to come in after the last fix gets merged. It makes me sad. ## Why It's Good For The Game The EHMS injector no longer continues to inject no matter what. Fixes #75776 ## Changelog 🆑 Chadley fix: fixes the EHMS injector's do_after() code: Improves the code for the disease scan proc (thank you fikou) /🆑 --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> |
||
|
|
9940fb62e6 |
Destroys /obj/vehicle/sealed/mecha/working with a W80 nuclear warhead (#76296)
## About The Pull Request Title. Also, fixes https://github.com/tgstation/tgstation/issues/75568 at the request of @TheVekter ## Why It's Good For The Game This subtype only exists to append ore box behavior and is clearly a relic of pre-2020 mechcode. Keeping it around will only make it harder in the future to add new mechs with ore box support. ## Changelog 🆑 fix: Clarke ore box now has a less confusing dump contents button. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
7732236f29 |
[s] Stop trusting user input in cargo computers (#76343)
<!-- 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 Swear to fucking christ |
||
|
|
674096e74e |
Don't use usr var inside ui_act() in cargo computer (#76007)
## About The Pull Request As explained in https://github.com/tgstation/tgstation/pull/74696#discussion_r1166099547 > no, bad 🗞️ > if this is in ui_act the ui datum holds a reference to the user mob, use that. We do not guarantee that ui_act will be called off topic() forever (it runs at the end of ticks so is possibly gonna get verb delay'd at some point) So yeah let's do that ## Changelog 🆑 code: makes sure cargo computer doesn't use `usr` var inside `ui_act()` which could cause undefined behaviour /🆑 |
||
|
|
3396d13ed5 |
Adds shark plushie, removes pickle Rick plushie (#76206)
## About The Pull Request Come on, look at it. It's adorable.   Sprites courtesy of INFRARED_BARON Available for purchase from Cargo as a goodie. Acts as a replacement for the pickle Rick plush which is going to Brazil where it belongs  ## Why It's Good For The Game Everyone needs a shark plushie. Happy pride! ## Changelog 🆑 add: Adds a shark plush, obtainable from Cargo for a nominal fee. del: Removed plush cucumber by popular request. Cucumber has been replaced by the shark plushie in arcade machines. /🆑 |
||
|
|
8a2e6f0eb8 |
Autolathe, protolathe, mech fab and comp printer now use defines for matter bins values. Also some production ui do. (#76020)
Changed hardcoded matter bins values to use defined `SHEET_MATERIAL_AMOUNT` for following stuff: autolathe, protolathe, mech fabricator and component printer. `Material Access Bar` and `MaterialIcon` used for protolathes, circuit printers and etc. now also use defined `SHEET_MATERIAL_AMOUNT`, via static ui data, to prevent same issues in future. Also changed some notes in /// parts just because why not. |
||
|
|
8229972398 |
Tablet apps are now deleted when necessary & removes console preset. (#75863)
## About The Pull Request Apps now properly delete themselves when removed, so they don't exist in nullspace anymore. Chat client now actually updates the uid, because its New() didn't call parent. Deletes the 'console' subtype of modular computer Updates how downloading and transferring files are handled Fixes being able to infinitely upload apps to a disk ## Why It's Good For The Game Fixes some more bugs I found with apps and prevents spamming apps in a disk. ## Changelog 🆑 fix: Maintenance data disks now properly transfer from PC to disk fix: Disks can no longer be flooded with the same app repeatedly. /🆑 |
||
|
|
dcbe081f64 |
Cannot use departmental budget cards as source of credit withdraw (#76113)
Currently you can put cargo's budget card into your PDA, go into NT Pay and send over the budget to any pay token you want including yours. This just adds a check to ensure you aren't using that kind of card as withdrawal source. |
||
|
|
1110229f70 |
Shipping manifests now display repeated items on a single line & Makes an adjustment to manifest errors (#76012)
## About The Pull Request Firstly, what is says on the tin. Screenshots for comparison: | Old | New | | ------------- | ------------- | |  |  | Secondly, I had to rewrite the way manifest content errors work and took the liberty of making some adjustments: - Items are now guaranteed to be missing from the manifest if the error is rolled (Otherwise you could get unlucky and receive a manifest that's labelled as erroneous but has no signs of it) - Rather than being a 50% chance to omit each item, it will remove a random number of items from 1 to half of the total amount of items. ## Why It's Good For The Game Improves the readability of the manifests. Removes a fairly annoying edge case with manifest errors. ## Changelog 🆑 fix: shipping manifests labelled as erroneous due to missing contents are now guaranteed to be missing contents spellcheck: shipping manifests now display repeated items on a single line /🆑 |
||
|
|
2bb4dfe76c |
Expanding the Experimental MODsuit Bepis Node with three new modules. (#75801)
## About The Pull Request So, I've had this idea to make a contribution to the Bepis feature with some modsuit stuff. The gimmicky stuff is ok and a good way to even out the better content since it has game of chance design it has (you can find those disks in space anyway so...). However, the Experimental MODsuit node feels very underwhelming right now, compared to how big that feature is. This PR adds three MOD modules to the Experimental MODsuit node, plus two more: - Magneto Charger: While the Modsuit is activated, each step the user takes will charge the installed power cell by a tiny bit, enough to sustain a standard modsuit of generic slow speed with only a few, easy modules installed. It won't work in zero G, while flying, pulled by someone else, on a conveyor belt, riding a vehicle or crawling on the floor, though. - Recycler: It collects (most) garbage and casings off the ground and recycles them into material sheets that can be dispensed on an adjacent location or storage with with Middle Mouse Button. Doesn't clean debris, and scuffed because most trash doesn't yield material anyway. - - It also has two subtypes, unbound from the node: one that dispenses riot foam darts and can be found on the black market, and another that dispenses the more innocuous foam darts, rarely found in maints. - Shooting Assistant: A configurable module. On Stormtrooper mode, it will give the user a faster fire rate (the double tap trait) at the cost of accuracy. On Sharpshooter mode, it will improve the user accuracy and make their shots ricochet against walls at least once (if the hit atom allows that, that is, e.g. lasers don't ricochet against iron walls), at the cost of movement speed. Both modes also prevent the user from dual wielding guns. To make the Stormtrooper mode stackable with the poor aim quirk and refrain from making a new trait for the sharpshooter mode, the gun spread code in gun.dm has also received a little refactor and cleanup. Also, it's been tested. ## Why It's Good For The Game The Experimental MODsuit node is quite shabby and could use something extra to make it more appealing to MODsuit enjoyers. Also doubles down as a small addition to the black market and maint loot, and code cleanup, since gun code gives off some garbled vibes. ## Changelog 🆑 add: Expanded the Experimental MODsuit Bepis node with three new modules: Magneto Charger, Recycler and Shooting Assistant. add: Added a Riot Foam Recycler module to the black market, as well a more innocuous version as maint loot. /🆑 |
||
|
|
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 /🆑 |
||
|
|
aa6b3be9cc |
Adds the Coroner vendor to the desc of its supply pack (#75915)
## About The Pull Request Forgot to add the MortiDrobe to the description of the pack when adding its refill canister, this is a minor fix. ## Why It's Good For The Game Minor fix to the pack description. ## Changelog 🆑 spellcheck: The Medical vending refill crate's description now properly displays the Coroner's vendor as being part of its contents. /🆑 |
||
|
|
daf55e611c |
Cleans up/renames as private some internal var definitions, removes some fucked uses of internal list vars (#75769)
## About The Pull Request [Improves the documentation of DCS lists, removes old list of callback docs that no longer apply](https://github.com/tgstation/tgstation/commit/c3821d9f5ffaeaa4772f927c819da0c1de0ca27c) [Adds a second signal register to decal rotating, adds a trait to objects under a tile. STOP DIRECTLY READING HIDDEN LISTS I SWEAR TO GOD](https://github.com/tgstation/tgstation/commit/6b3f97a76a6f7d24ab952739a1561633922994e1) [Removes direct reads of the timer list, they were redundant mostly](https://github.com/tgstation/tgstation/commit/14fcd9f8a6d1b2d42ec6df3493ebc76fe7c12032) [Please stop directly reading/modifying the traits list to ensure your dna rot follows the brain](https://github.com/tgstation/tgstation/commit/ec0e5237ec2b7c3b7806cb993670acc8ce388bdc) [Marks internal datum lists as well internal with _](https://github.com/tgstation/tgstation/pull/75769/commits/57c6577ff61629b8ea792ee37ec4f2490a8e2865) [57c6577](https://github.com/tgstation/tgstation/pull/75769/commits/57c6577ff61629b8ea792ee37ec4f2490a8e2865) Does the same to _clear_signal_refs() in hopes of keeping people from touching it ## Why It's Good For The Game They pissed me off. Users should not be touching these lists, especially in ways that make assumptions about their structure and are thus prone to breaking if that ever changes. Most of these are close to zero cost changes, using a wrapper to solve the problem, or just yeeting it Two aren't, Decals with a direction have gained a second signal register on init, and things that sit underfloor (cables/pipes) now get a trait when inserted there. This should have a minimal impact on memory/init time, bugging @Mothblocks about it just in case |
||
|
|
6378ef5687 |
Changes the base amount of bone gel. (#75851)
## About The Pull Request Changed the amount from 1 to 5 for original `bone_gel` so it's easier for mappers to add the right bone gel. Deleted subtype `/four` and added subtype `/one` specifically for bone gel creating. Increased from 4 to 5 because surgical tape has 5. ## Why It's Good For The Game Having 1 bone gel near 5 surgical tapes always seemed off. ## Changelog 🆑 balance: Bone gel standart amount has been increased to 5. /🆑 |
||
|
|
5ad04bfd2e |
PDA Fixes and Changes and Cargo Console Fix (#75768)
Was updating the documentation about PDAs on the wiki and saw some minor issues, threw in the bug fix for issue https://github.com/tgstation/tgstation/issues/75231 as well because why not. Also added the ability to put medipens into PDAs, they're small and pen-like enough, right? |
||
|
|
6676702008 |
Refactors chicks into basic mobs (#75663)
## About The Pull Request On the tin. They have pretty much nothing in common with chickens, so no subtyping. They are in the same folder to keep that whole thing tidy, though. Also includes fixes to `growth_and_differentiation` element that I made for spiderlings, since some stuff was yorked without me realizing. It pretty much worked flawlessly for these chicks otherwise though. It all works fine now. ## Why It's Good For The Game More verbose naming scheme (instead of "holo", we get "permanent" chicks), smarter AI for chicks, knocks them off the list, etc. etc. One thing that I wanted to do was to have chicks recognize their mother (if they had one), but that would be way out of scope for this simple port PR. I'll dwell on adding something cool for that in the future. ## Changelog 🆑 refactor: Chicks are now a bit smarter, be careful not to squish them! /🆑 Let me know if the whole "COMPONENT_KILL" thing is cringe, I couldn't figure out a better way to do it without abusing `GetComponent()` to `qdel()` it that way. |
||
|
|
97665d4e54 |
Adds Hereditary Manifold Sickness, a Chronic Illness Quirk (#75035)
## About The Pull Request Adds a new quirk called Chronic Illness. It provides a -12 score as it's a pretty life-altering quirk, but could give way to interesting RP. - Hereditary Manifold Sickness (HMS) can not be cured, it can only be delayed and treated using a new unmakable vaccine called "Sansufentanyl". You spawn with 6 pills and are able to order crates containing 12 more from cargo as it's proprietary to Interdyne. - HMS has 5 stages total. Stage 1 does nothing Stage 2 gives minor effects Stage 3 becomes debilitating Stage 4 is a danger zone. Upon reaching Stage 5, there are 4 possibilities, 1 is a recovery back to stage 1, and the other 3 are deaths which I won't explain here to avoid ruining it. (read the code I guess.) This also adds a new traitor objective to infect someone with HMS. - [x] Correcting the chronic aspect. - [x] Add traitor objective. - [x] Tweaking for fairness. ## Why It's Good For The Game HMS is a new quirk that gives a much more hardcore junky or tumor playstyle. Neglecting HMS can mean the end of your shift. it's not something you want to mess with. It puts a reliance on cargo rather than medical for a quirk and gives a use case for money. (price may be tweaked still). I think it'd be interesting to see if people will start mugging or robbing the vault more to get their life-saving medication. ## Changelog 🆑 add: Interdyne has released a new medication to treat those who are in the wrong timeline! add: Interdyne has also realized this is VERY profitable! They've begun arming their operatives with an autoinjector. /🆑 --------- Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com> |
||
|
|
e5ce1c09a7 |
Converts butterflies to basic mobs and adds them to cytology (#75582)
## About The Pull Request Converts butterflies into basic mobs. Also a little list organisation. <details> <summary>Yep, those are some butterflies alright</summary>  </details> ## Changelog 🆑 refactor: Converted butterflies to the basic mob system add: Butterflies can now be grown in cytology /🆑 |
||
|
|
e2bc712714 |
Converts Lizards to Basic Mobs (#75515)
This was pretty simple since they didn't have too much custom behavior, and whatever they did have already had AI behavior. I got really burned out the last two times I wrote intricate AI action/decision behaviors so I'm just taking it light and doing the bare minimum. one day our shackles will be free of the simple animal scourge. they're also a bit more intelligent, and i daresay a bit cuter too now. also that lizard gib animation has been sitting there for god knows how long completely unseen, so let's actually hook it into the mob. |
||
|
|
dff70625e7 |
Bible refactor (#75350)
## About The Pull Request This started as a simple addition where burning a bible would curse you, but then I realized... Bibles aren't even proper books, thus can't be burned! So yeah, since that is not necessary due to how atom_storage works, I reworked that. ## Why It's Good For The Game Because burning bibles and getting cursed for it is funny.   ## Changelog 🆑 add: You can burn bibles now! But heresy has a steep cost... /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
fe27d3198e |
Cargo category cleanup (#75374)
## About The Pull Request I accidentally discovered that when #55504 removed cargo export categories being a thing during export value evaluation, in two instances, they forgot to remove passing over the now defunct export categories, causing it to be passed in as the elasticity value, and by sheer coincidence, this was not causing problems (due to being overriden by a named argument in the pirates case, and cargo_exports being evaluated as true in another). This PR fixes the arguments, preventing possible bugs in the future. This also removes the code that set if the cargo shuttle could sell contraband and emagged items, as that is no longer a thing. I talked with @ArcaneMusic about this, and they agreed, albeit with the caveat that if someone finds a good use case for this feature, it could be saved. This PR also autodocs several export related files, and cleans up various single and two letter vars. ## Why It's Good For The Game Cleaner code, unused code removed. ## Changelog 🆑 code: cleaned up cargo export code a bit /🆑 |
||
|
|
4c4ca44775 |
Mortidrobe Restocks are now in Medical Wardrobe Supply Crates (#75299)
I noticed the mortidrobe restock wasn't actually in the medical wardrobe supply crate, so i added it to that. now coroners can get restocks for their clothes through cargo. the restock item itself, and the part to make it work with the vending machine were already done, so it was likely intended to be obtainable via this crate. Also fixes a typo of "autospy" to "autopsy" in the autopsy kit crate. |
||
|
|
77a4306df7 |
Coroner Tweaks (#75250)
I played some as coroner, and realized there were a few things that were either errors in the original PR, left out, or that could be added to improve the feel of the job a little more. It ended up covering a fair bit of ground, with a number of changes, but i'll go over the biggest parts here: First up! jumpsuits and jumpskirts! the medical doctor job, despite starting with scrubs, still has a jumpsuit and skirt available in the medidrobe. So, i added a pair for coroners to the mortidrobe, enjoy! (and thanks to the kind morgue skeleton for modeling these with me!) also, you may notice some black pixels on my head - that's because i added a black scrubcap to the mortidrobe as well! the sprites were done for this already, so when i noticed it was absent i opted to include it here, for consistency with the other scrub types in the game. next up, we have the other addition of this PR, the coroner's medkit this is mainly for storing and consolidating coroner job items, in a flavorful and interesting way. the coroner spawns with the larger variant, that has more storage, but can still only hold up to small items. it also includes a few more flavor items, that the compact version lacks. the smaller version can be obtained in the autopsy kit from cargo, and one more is available in the mortidrobe. smaller changes: i fixed some weird transparent pixels on the autopsy scanner itself, and cleaned up some incorrect shading on the obj icon for the black scrubs. before and after here: i also gave the coroner their own type of pda, since they were previously inheriting the medical one. this one matches their color palette! in addition to this, i swapped the botkeeper app they previously had for plexagon crew manifest. |
||
|
|
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> |
||
|
|
f2a455c2f3 |
Deletes unnecessary text from supply pod beacons desciption. (#75228)
## About The Pull Request It has 2 phrases which represent the same.   ## Why It's Good For The Game Less text to read ## Changelog 🆑 qol: Deleted unnecessary text from description of supply pod beacon. /🆑 |
||
|
|
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> |
||
|
|
4de3df461e |
[MDB Ignore] Adds a unit test for typepaths that are required to be mapped onto each station map (#74985)
## About The Pull Request Inspired by #74967 and #68459 , and the fact that Tramstation regresses very often - Adds a unit test, `required_map_items`, which ensures that certain typepaths which should definitely be mapped onto every map is mapped onto every map It can also be used to ensure that items which should not be mapped in multiple times are not, among other things. I included a few examples - - Min 1, max inf of each head of staff stamps - Min 1, max 1 departmental order consoles - Min 1, max inf comms console - Min 1, max 1 Pun Pun - Min 1, max 1 Poly - Min 1, max 1 Ian If, in the future, a mapper decides they (for some reason) do not want a certain previously-required item on their map, the test can be adjusted such that it allows excluding or something, but currently it should be for items which require conscious thought about. #### QA: Why not make this a linter? I attempted to make this a linter before realizing two things 1. Someone might make a spawner which spawns the items, or they might get placed in a locker, in any case this accounts for everything on init 2. Linters run on every map, non-station maps included So I went with a test ## Why It's Good For The Game #50468 #61013 #74967 Why is it always the CMO stamp? ## Changelog Not necessary (unless I find a map missing something, then this will be updated) |
||
|
|
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. |
||
|
|
ad302f209f |
Nanotrasen Budget Programme - Mothball Edition [BIRDSHOT STATION] (#73502)
## About The Pull Request --- The Space Tram is currently spaced. This is a known issue with not the map, but Trams in general. The Space Tram is a Space Tram to encourage a fix. Until then, the Space Tram is a maint tram that's an actual hazard but cannot directly kill anyone, including lizards. Enjoy the commodity as you zip from secmaint to medmaint. ------------------------------------------------------- I... really don't know if I should be proud of myself here. This whole process has been akin to a fever dream and it has only been little over a month since I first created the .dmm for this. What started as a simple yet humble reimagining of Birdboat has turned into an entirely new station, and blown past Metastation sized proportions. This has been my most expansive project yet, and somehow it's also been my quickest. So without further ado, I unveil Birdshot - Successor to Birdoat. ------------------------------------------------------- **Due to recent cost expenditures on Icemoon projects, and a growing need for orbital research stations, Nanotrasen has decided to pull Birdboat Station out of mothball after nearly 5 years of abandonment.** Since then, the station has seen a variety of changes at the hands of the various vagabond lawless scum and villains that have decided to make the abandoned station their home. Do not fret though, a Nanotrasen Operation has secured the companies rightful property for corporate use once again, though you'll need to be the stewards of the remaining cleanup operation. ------------------------------------------------------ Now, as you might have guessed by now, Birdshot is heavily based on Birdboat station. Many of the decisions here follow the original layout, and what had to be modified or moved still tries its best to replicate and imitate what bird being said. At least, that was the idea initially. This has very much grown into its own beast and as such, while the main inspiration has been Birdboat, there are a lot of new ideas thrown into the mix that really give this station its own unique and deserving identity. Maybe it's not perfect, but I've been inspired by @MMMiracles own performance with Tramstation to keep working on Birdshot and updating it with better and improved faculties. For now, though the station is in a playable state, and that means I'm making a PR. If I had to borrow the words of the good MMM, I would call this **Birdshot: Season 0**  See the image in more detail here: https://imgur.com/iT5Vi8k ## Why It's Good For The Game We've been with the same 5 maps for a while now. @san7890 jokingly said that I could sacrifice Metastation back in November if I remade Birdboat but modern. Obviously that wasn't going to happen, yet I was spurred on by the idea. When I began this in earnest early this January, @EOBGames said that a Birdboat sized map would replace Kilostation in the rotation. Interestingly we're not a small map anymore so I honestly have no clue where this goes. Maybe that ephemeral 6th map slot that's been rumored. What I can say, is that Birdshot is wholly unlike anything else that is currently in rotation. It's got an engineering section that feels way too small for a station of that size, almost evocative of Cere. Cargo is blessed with a Boutique that makes use of @Fikou's new mannequin dolls. Command is outfitted with a Corporate Guest Suite, and Officials sent from Nanotrasen can embark from their ferry into the safety of their own Corporate Dock. Elements of Cerestation are present, yet not in a way that makes traversal annoying. Furthermore we have **2 Trams** (that I have yet to get functional but we'll get there) on Birdshot, that's right 2. One Security Prison Tram, and then other, a Space Tram. Both Novel in their own ways. Departments on Birdshot twist and turn, and there's an abundance of Maintenance Tunnels to cut through everything, for the brave and the bold that is. And there's plenty left to discover, but I'd rather let Birdshot speak for itself. I'm proud of this one. If you want something new, this is something that is almost the complete opposite of Chilled Station - Explicitly Designed to send you back to the metal death trap that is: **Space Station 13.** ## Changelog 🆑 add: Birdshot station has been pulled out of Mothball. add: New station areas and places to visit. A Mix of Kilo and Delta maints with winding shortcutting paths. add: A host of new shuttles to support this bold endeavor to reclaim something that really shouldn't be reclaimed. add: Two Trams, Two Trams. add: For the last time Bob, the gaping hole is a **feature.** Use the breach shutters or have the virologist make starlight. add: A smiling salute to stations past... add: Secrets. /🆑 --------- Co-authored-by: Zytolg <theoriginaldash@gmail,com> |
||
|
|
77db52dc6b |
Corrects record_feedback()'s copy/paste comment (#74962)
## About The Pull Request
Corrects `record_feedback()`'s copy/paste comment.
## Pointless history
Originally being added in
|
||
|
|
aae0ce35eb |
Adjusts the SWAT crate description to be more accurate (#74943)
## About The Pull Request Changes the description of the Swat crate to mention gorilla gloves specifically instead of combat. ## Why It's Good For The Game Its kind of misleading as most would assume it means the insulated kind, not the 'throw yourself into someone at mach 5' kind. ## Changelog 🆑 fix: Swat crate's description now lists the correct kind of gloves /🆑 |
||
|
|
551a09211b |
Makes Black Market Uplinks more easily craftable, adds them to uncommon maint loot pool (#74744)
## About The Pull Request Replaced the subspace amplifier in the Black Market Uplink's crafting recipe with a signaller and a microlaser. Added the Black Market Uplink to the maintenance loot pool. ## Why It's Good For The Game The BMU is an _extremely_ rare device to find in rounds. It can quite literally ONLY be found via the crafting recipe, and with how stupidly bloated the crafting lists are, it isn't something many people know about. All this means that a very unique and engaging gimmick item is tragically extremely obscured. To add to this, the recipe requires a _subspace amplifier_. These items are UNBELIEVABLY rare - they need you to vend them from a techfab with bluespace communication technology researched, which is fair to say is not a common thing. Sometimes maps have them in tech storage, but even then you have to break and enter which can be quite risky at times and an annoying blockade the other times. The black market items are not worth this much hassle. They are all small cute gimmicky objects that do not heavily impact the round. By making it not only easier to craft with common items, but also appear in the maintenance loot pool, this will make assistants find out about it more often, which can further incentivize them to utilize the **cargo bounty system** to get enough money to buy their funny gadgets. Another idea would be to make the uplink appear as a bounty item, which would be a great way to tell players it exists and encourage them to mix both systems together. The system for getting items is also unnecessarily, miserably awful - your item either gets literally thrown into space from a random direction, or it is teleported silently without warning in 60 seconds onto a completely random place which can very much include Security, Command, the Vault, or other high-security areas. Needing to B&E into these areas to get your durathread vest is, uh. Not worth it. However these aren't part of this PR, unless they're given the A-OK. (also maybe make it cargo purchasable?) ## Changelog 🆑 balance: Makes Black Market Uplinks more easily craftable, adds them to uncommon maint loot pool /🆑 |
||
|
|
8d82924187 |
Implanted foreign bodyparts will resist being removed on species change (#74701)
## About The Pull Request Title. Also, to make bodypart code slightly nicer, I retooled some variables to be part of a new bitfield called bodypart_flags. ## Why It's Good For The Game We've been trying to move away from the species datum for limb stuff precisely because of funny shenanigans like this, no? ## Changelog 🆑 refactor: Implanted foreign limbs will no longer be wiped by species change. /🆑 |
||
|
|
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' |
||
|
|
997dac9616 |
Imports and Contraband: Different! Cargo crates without locks! MEAT! (#74490)
## About The Pull Request ### **Cargo Black Market goods should stay in cargo's hands** #### New Cargo Console Category: Imports This category is explicitly the non-departmental category beyond simply having a Misc category. It is meant for material that nobody is meant to be buying for their departments, and mostly for the odd-ball crates that might show up. It also allows us to maintain contraband as exactly that; contraband that the departments shouldn't have access too whatsoever. If someone is buying from this category, they probably intend to be a cheeky fuck. <details> <summary>The New Changes</summary> #### Baseline Imports MEAT: MEAT (meat backpack you can eat) <details> <summary>MEAT</summary>   </details> Duct Spiders: They're adorable and cause a mess, but that doesn't stop Nanotrasen from importing them from the Australicus sector to your station! Stack of 50 Bamboo Cuttings: Pretty expensive and kind of a premium. Allows for those people looking to make bamboo decorations without hoping botany exists, and are at least willing to pay. Also lets them make horribly dangerous stuff with bamboo, of course. A Single Sheet of Bananium: The problems this will cause I think speak for themselves. (mostly due to a clown fruitlessly attempting to make something actually disruptive while bankrupting cargo) Natural Fish Bait: It isn't cheating, it's homemade. (Really good bait but expensive and obviously drugs) A dumpster...: A corpse in a dumpster, doesn't get more complicated than that. Useful for corpse reasons. Made using some code I borrowed from over here! https://github.com/lizardqueenlexi/orbstation/pull/354 #### Contraband Imports Foam Force Pistols: Same as it ever was with a price reduction. I brought it down because riot darts are like 8 bullets a clip, and do less damage than a disabler using riot darts. It feels like a sidegrade weapon, and even if it technically is a ballistic weapon, it...isn't that strong. I think this is pretty safe. Definitely Not a Duct Spider: It's actually a giant spider in a box. If you want to waste cargo's money while also sending them a mess to deal with, this is the crate for you. Russian Surplus Military Gear Crate: I took this opportunity to futz with boltaction rifles. There are two kinds of mosin nagant you can get in this crate. One of them is the good kind (no jamming). The other is the shit kind (yes jamming), but you get more of them. You can get the good ammo, or you can get the shit ammo. You'll have to pick through it a lot more carefully to make sure you know which ones you've received. Since this dilutes the pool even further, getting a good number of mosins that aren't trash is even more expensive, and even if you do get mosins at all, you might still only get the bad ammunition that doesn't work against actual human threats as well. It also now cannot be purchased through the security cargo supply console, and as to why they could in the first place baffles me. Doesn't have a lock anymore because...it's contraband? Who is locking this stuff? **Side note: _You can make surplus 7.62 in the autolathe as well. It is not very good except to fight fauna or naked assistants._** **Side Side note: _I've killed off the shitty brand_new subtype and brought peace once more to this land._** #### Illegal Imports (Emag) NULL_ENTRY: A journal that suggests how to make a...very interesting weapon. The Regal Condor. Kind of an evolution on some other ideas I've had over the years. This one is basically a secret weapon with a few hurdles to jump through. Very lethal. Very expensive. **Side note: _For reference, it's effectively 19 TC worth of gear to make, but there does exist some methods to acquire this more cheaply if you can get some bits and pieces from world spawns. Given it requires you to get some pieces of equipment that might require additional purchases of contraband, and getting into the captain's office to loot a specific piece of clothing, the stakes more than make up for the effectiveness._** Smuggled WT-550 Autorifle Crate: This is basically the same, but you might have noticed had you recently attempted, like me, to buy these when you emagged them using a personal account and discovered a tragic oversight. You couldn't, because they still needed armory access. This removes that access, because you've already gone to the effort of getting your hands on an illicit firearm through cargo, and if they techs somehow miss the fact that you've purchased a WT-550...all the better for you! Smuggled WT-550 Ammo Crate: Includes AP and Incendiary! **Side note: _You can get WT-550 ammo again via the Illegal Technology node._** Shocktrooper: Replaces the Special Ops crate. Contains a box of EMPs, smoke grenades, a couple of gluon grenades and a couple of frag grenades. Funsies. Special Ops: The NEW Special Ops crate. Contains a chameleon mask, jumpsuit and agent card. And a knife. **Side note: _This is what appears in some cargo loan events._** Refurbished Mosin Nagant Crate: The actual good mosin nagants. There are 6 of them. But they don't come with spare ammo. Hand them out to your techs! </details> #### New Crates - MEAT crate - Standard - Duct Spider crate - Standard - Giant Hostile Spider crate - Contraband - 50 sheets of Bamboo crate - Standard - A single sheet of bananium crate - Standard - Natural (drugs) fish bait - Standard - Dumpster with a corpse in it - Standard - Shocktrooper crate (Grenades) - Emag - Special Ops crate (Disguise) - Emag - Appears in some cargo loan events - Refurbished Mosin Nagant crate - Emag - Regal Condor construction journal (NULL_ENTRY) - Emag #### Changed Crates - Foam Force Pistols (cheaper) - Contraband - Russian Surplus Crate (less reliable, can't be bought by security console) - Contraband - WT-550 crate (more obtainable via personal accounts, thus incriminating, not armory locked) - Emag - WT-550 ammo (includes incendiary and AP) - Emag #### Crates that got moved, unchanged, into Imports - Foam Force Crate - Cosa Nostra Crate - Black Market LTSRBT - 'Contraband' Crate - Biker Gang Crate #### Not crate changes - You can print Surplus 7.62 (same as normal 7.62 but it sucks against armor) from hacked autolathes. - You can get WT-550 ammo from illegal tech. - Removes the redundant Brand New Mosin subtype - Fixes a potential exploit with jamming chance on Mosins. ## Why It's Good For The Game I just think some of the magic of Cargo getting their hands on obviously dangerous equipment and either hording it for themselves or attempting to pawn it off was lost in recent times. A lot of this 'black market' gear, however, suddenly became openly available to the crew anyway. For _free_. Contraband crates and mafia crates could be purchased via the Service budget. Security could just stock up en masse on mosins through their console. And one fairly unfortunate consequence of a few recent changes has made it nearly impossible to actually get illicit gear in the first place, even if you did go to the effort of getting the money for it. On top of this, most of cargo's goods are pretty safe purchases. There isn't much that would be considered 'actually a really bad idea to buy' other than maybe supermatter shards. I wouldn't mind there existing ways for someone to waste cargo's money while also causing them to have to clean up the mess. ## Changelog 🆑 balance: A significant overhaul of various illicit and dubiously legal goods and gadgets available via cargo. balance: Cargo now has an Import category for all non-departmental goods. (And black market goods) balance: Most contraband that already exists has been moved into Imports. adds: Includes several new imports of dubious quality. You get what you pay for. code: Removes the brand new mosin subtype as it is now defunct. fix: Fixes potentially exploitative code in the jamming proc. Cleans up that code while I'm at it. /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.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. /🆑 |
||
|
|
739f3d84ef |
Cargo: making requisitions form useful (#74510)
Adds better requisitions text, helping Cargo know what was ordered, by who, when, and what access was needed. |
||
|
|
f4b5736283 |
Updates paper biscuits and the paper cutter (#74473)
## About The Pull Request Well this started as a PR updating some of the spelling and grammar on the biscuits... though spilled out a little into other aspects of the relevant code. There are a few things I've done here. **Paper biscuits:** - Updated spelling and grammar for paper biscuits. Confidental -> confidential, that sort of thing. - A little reorganisation and cleanup of the code itself. - Preset slips are now generated on init on the parent from a var, rather than each having its own init proc. - Early returns, clearer vars, etc **Paper Cutters** Ended up doing more here, even though it wasn't the original reason I started looking at this code. - Added one (1) paper cutter blade to the paper cutters cargo crate. Raised the price a little. This is just a reskinned hatchet, so I don't think it's much of a balance concern. - Clarifies and docs vars - Cleans up refs on destroy - Many `to_chat`s to `balloon_alert`s - Removed single-letter vars - Cancelled attack chains when trying to actually use the cutter. You now pick it up either by having the blade secured and no paper inside, or by dragging it into your hand. ## Changelog 🆑 spellcheck: Paper biscuits now have more proper spelling and grammar qol: You now get one spare paper cutter blade in the paper cutter cargo crate. tweak: You now use right click to cut paper with a paper cutter fix: You can now remove paper from a paper cutter if you change your mind. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
bf37597c24 |
"Biscuit" cards, and also now slip papers are actually paper! (#74329)
## About The Pull Request **This is not a literal biscuit which you eat. "Biscuit" is just a nickname of this kind of snap-cards.** Slip paper is now actually paper, before that, it was just literally nothing, an object which does nothing. Because of that, the paper cutter was useless as well, as it turned normal paper into useless paper slips. Because of this now paper cutters are placed at: - Bridge - HoP office - Warden office - Cargo Also adds biscuit cards. If you have no idea what it is, it's a kind of card placed around a piece of paper usually to conceal some document and it can be opened by cracking it with a crunchy sound (that's why it's named a biscuit). Those are usually only opened in certain situations or emergencies (The most famous example is the US president's nuclear biscuit, which contains nuclear codes) There are 2 biscuits: Normal and Confidential. Normal is a plain biscuit with nothing really special, can be coloured if you want as it's white.  The confidential biscuit is blue and has "NT" on it.  There is a not-sealed biscuit you can print in autolathe, it starts open so you can put paper in and seal later making it a normal crackable one. Now spare ID safe code automatically spawns in a confidential biscuit in a new paper slip subtype - corporate slip paper. It's a plastic card which is sturdier than the normal paper clip.  You can also create the corporate paper slip paper using - normal paper slip, plastic, and captain rubber stamp (making this paper having a rare status)   ## Why It's Good For The Game Paper slips being not paper is stupid and has no point in being that way. This also made the paper cutter useless; hence, it was never placed on any map (and never used). This PR makes it paper, so it's usable when crew members need a paper slip instead of a full-size sheet. Placing paper cutters around the station makes it so the crew can produce paper slips when they need them, this also gives it finally a use and place on the station. The 'biscuits' are cool and give more flavour to the spare ID safe codes, as well as to other documents people might put in future PRs. This also makes those paranoid captains which are scared of their spare ID safe code being stolen and read can sleep tight, as now if someone opens it up it's really obvious. Now also you can really make sure if that head is lying about "not touching the spare ID", _but not as anyone cares really._ **Okay, it's draft for now just so I can add some new things, and fix the dupe bug:** - [x] Being able to fax the paper biscuits - [x] Make it impossible to cut paper slips into paper slips - [x] Make corporate paper slips craftable or printable - [x] Make confidential biscuits craftable or printable - [x] Make paper cutters orderable at the cargo _CRUNCH_ ## Changelog 🆑 DrDiasyl aka DrTuxedo#0931 add: Added 'biscuit' cards! They can contain documents and can only be accessed by cracking them open, you can't close them back. Nanotrasen now stores spare ID safe codes in them. add: Placed paper cutters around the station. They're in Bridge, HoP office, Warden office, and Cargo. add: Now you can order paper cutters at cargo. fix: Now the paper slip is actually paper. imageadd: The paper slips sprite was slightly tweaked to have text lay more logically, added the corporate paper slip. /🆑 --------- Co-authored-by: san7890 <the@san7890.com> |
||
|
|
ccef887efe |
Lints Against Unmanaged Local Defines (#74333)
# MAINTAINER - USE THE BUTTON THAT SAYS "MERGE MASTER" THEN SET THE PR TO AUTO-MERGE! IT'S MUCH EASIER FOR ME TO FIX THINGS BEFORE THEY SKEW RATHER THAN AFTER THE FACT. ## About The Pull Request Hey there, This took a while to do, but here's the gist: Python file now regexes every file in `/code` except for those that have some valid reason to be tacking on more global defines. Some of those reasons are simply just that I don't have the time right now (doing what you see in this PR took a few hours) to refactor and parse what should belong and what should be thrown out. For the time being though, this PR will at least _halt_ people making the mistake of not `#undef`ing any files they `#define` "locally", or within the scope of a file. Most people forget to do this and this leads to a lot of mess later on due to how many variables can be unmanaged on the global level. I've made this mistake, you've made this mistake, it's a common thing. Let's automatically check for it so it can be fixed no-stress. Scenarios this PR corrects: * Forgetting to undef a define but undeffing others. * Not undeffing any defines in your file. * Earmarking a define as a "file local" define, but not defining it. * Having a define be a "file local" define, but having it be used elsewhere. * Having a "local" define not even be in the file that it only shows up in. * Having a completely unused define* (* I kept some of these because they seemed important... Others were junked.) ## Why It's Good For The Game If you wanna use it across multiple files, no reason to not make it a global define (maybe there's a few reasons but let's assume that this is the 95% case). Let me know if you don't like how I re-arranged some of the defines and how you'd rather see it be implemented, and I'd be happy to do that. This was mostly just "eh does it need it or not" sorta stuff. I used a pretty cool way to detect if we should use the standardized GitHub "error" output, you can see the results of that here https://github.com/san7890/bruhstation/actions/runs/4549766579/jobs/8022186846#step:7:792 ## Changelog Nothing that really concerns players. (I fixed up all this stuff using vscode, no regexes beyond what you see in the python script. sorry downstreams) |
||
|
|
302060acda |
Removes bepis Techweb and reworks tech disks in general (#74147)
## About The Pull Request Did you know that there's 2 types of disks Science can print? One of them creates a whole new techweb and is used to transfer data to and from techwebs (which used to be for Theft objective, but nowadays all it's used for is Admin techweb). The other one is these disks you can find from Lavaland & for the Limbgrower which holds nodes on them directly, they don't need anything else. These are both printable and have very similar names which could easily confuse people, especially since they are both printed and used at the same place, being the R&D room and R&D console. This will hopefully simplify it, by removing the base Tech disks from being printable. The only one that can be printed now is for Limbgrowers, which can't be easily mixed with the other type of Disk. Outside of that, Lavaland disks are staying the same, but I've moved Bepis disks to use this, which allows us to remove Bepis techwebs being made every single time a new bepis disk is created. Examples of it in-game    ## Why It's Good For The Game There's no reason why every single Bepis node should be making a whole new techweb set with experiments to complete, roundstart nodes researched, being constantly checked if it should gain research points, have a list of papers to publish, and everything else that techwebs do. Can you guess which disk does what in this screenshot?  ## Changelog 🆑 balance: You can no longer print Technology data disks. You can still print Tech disks, which hold techweb information on it, just not the one that holds up to 5 nodes. balance: ^ Because of this, there's no way to download nodes from an RD console and upload them to an Autolathe to bypass departmental restrictions, you have to go through a Techfab/Circuit imprinter for your needs. balance: Ones that are found cannot have anything uploaded/deleted off of them either, you can only upload them to the Web. code: Every individual Bepis disk no longer create an entire techweb /🆑 |
||
|
|
e610a34a5e |
[NO GBP] Corrects the pinata kit's Supply console category (#74043)
## About The Pull Request I misspelt costume in a typepath, causing pinata's to be in an unnamed category on supply consoles. ## Why It's Good For The Game Bugfix good ## Changelog 🆑 fix: Corgi pinata's no longer have their own category on the cargo shuttle console. /🆑 |
||
|
|
2524f42fe4 |
Adds the Smoking Room icebox surface ruin (#73876)
## About The Pull Request My contribution to the March Into Mapping/Mapness event -- The forlorn homestead of mister Charles Morlbaro, a high-brow individual with a taste for cigarettes. This ruin spawns on the surface level of Icebox.  A local of the ice planet, Morlbaro lived a peaceful life at home, until an _incident_ compromised one of his windows. Fearing the cold and unable to keep anything larger than a cigarette lit, he sequestered himself in his private smoking room, and hasn't been seen since. ... Oh, right, the loot. That's the most important part for some of you guys.  Where there's smoke, there's fire, and where there's cigarettes, there's lighters. Mister Morlbaro collected novelty lighters, which have to be worth something to someone, right? You might be able to find some if you dig around in his belongings. Just try not to disturb him if you choose to enter his smoking room. ### Mapping March <!-- If your pull request is part of Mapping March and you want to earn an antagonist token for your FIRST mapping pull request submitted this month, please include your ckey. For more information, read about the event here: https://hackmd.io/@EOBGames/BkwuRlxkh --> Ckey to recieve rewards: theduffelbag ## Why It's Good For The Game Ruin variety is nice. This one doesn't have any particularly spectacular loot, but it's a surface ruin. Bro space ruins are sooooo 2020 bro, it's all about icebox ruins now bro. ## Changelog 🆑 Rhials add: Adds the Smoking Room icebox ruin, found on the station level! /🆑 |
||
|
|
9843c23657 |
Replaces internal_organs with organs (#73918)
Internal_organs now also contains external organs, so the naming was incorrect Requested by @tralezab in #72734 Also removed some now incorrect 'as anythings' that assumed everything in the internal_organs list was an internal_organ (which is a lie since I put extorgans in there which means runtimes and unintentionakl behaviour 🆑 fix: fixes deadly harvesting just taking harmless extorgans code: renames internal_organs to organs now that it can also contain external_organs /🆑 |
||
|
|
2f2238855a |
Adds stickers (#73892)
## About The Pull Request Adds stickers to the game, purchasable from cargo. They are flammable, applied instantly, and fall off when washed by spacecleaner/showers/soap. They burn instantly if the mob it is attached to is ignited or the turf it is attached to reaches 100+ Celsius  Syndicate-only stickers on the left, normal on the right    ## Why It's Good For The Game Stickers probably could be cool if the clown puts googly-eyes on beepsky or smiley faces on the captain Probably good for tile art? look at this guy go  ## Changelog 🆑 add: Added stickers, purchasable from cargo /🆑 --------- Co-authored-by: Jacquerel <hnevard@gmail.com> Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> |
||
|
|
bd6a018083 |
Adds Pinatas that can be purchased by cargo and clown operatives! (#73868)
## About The Pull Request Pinata's drop various items when struck with a sufficiently powerful weapon. This PR adds two types, a standard one which can be bought from cargo which contains various candy items and a syndicate one which contains both candy items and explosives purchasable by clown operatives. The pinata functionality is also a component so admins can turn any structure/machine/mob into a pinata and customize the "candy" inside Sprites by @Mey-Ha-Zah animated versions by me ## Why It's Good For The Game Adds a cute little celebration themed structure that can be bought by players to accommodate a celebration based gimmicks or the party trait. I think the options on things to do as a crew during a celebration are a bit limited at present with most of the options being making/purchasing food, activity wise the main example of a celebration item is pin the tail on the corgi which is a bit uninteresting, the pinata on the other hand is more cathartic and provides a "reward" in the form of various candy items for people who participate in smashing it. I also think its just funny to have clown operative gambling half their TC to try and get explosives. ## Changelog 🆑 Mey-Ha-Zah & NamelessFairy add: Added pinata crates to cargo, they contain various candy items. Fun at parties. add: Clown operatives can now purchase a weapons grade pinata, this contains both candy and explosives. Still fun at parties. admin: Admins can now turn players, mobs and objects into pinata's with the new pinata component. /🆑 |
||
|
|
574e131ca2 |
Thermomachines no longer self-destruct when built on blocked ports (#73580)
## About The Pull Request Ever felt the utter pain when you make a new thermomachine, hook it up perfectly and then screwdriver it only for it to immediately become a pile of iron and components without warning? This PR fixes that. Instead of doing what it did previously, it unanchors itself and opens its panel. Right, almost forgot to mention, failing to wrench down a thermomachine no longer bonks it with the wrench. Due to not being allowed to use visual messages for when the port is blocked, I've added a mob/user variable to all on_construction() procs. (This allowed me to use balloon messages instead.) ## Why It's Good For The Game Saves a lot of unnecessary headaches when working with thermomachines. ## Changelog 🆑 fix: Atmosians have finally convinced the thermomachines to not self-destruct when built on blocked ports. fix: Failing to wrench down a thermomachine no longer hits it with the wrench. /🆑 |