mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-18 04:33:40 +01:00
91a71ea2b88ffe77242865fb52aa8d0e0033a2d2
7 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
075c028489 |
[MIRROR] Machines now transfer their local materials to silo during linking [MDB IGNORE] (#23744)
* Machines now transfer their local materials to silo during linking (#78263) ## About The Pull Request - Closes #78029 Rather than dumping their local materials as sheets on the turf, machines (protolathe, exosuit fab, component printer and others that can link to silo) now transfers their materials from local storage to silo during linking with multitool This way you don't have to pick up the sheets and manually put them in the silo yourself & this can also save you from a lot of manual labour of picking up sheets when you have a large amount of local materials stored inside. ## Changelog 🆑 qol: Machines now transfer their local materials to silo during linking with multitool /🆑 * Machines now transfer their local materials to silo during linking --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> |
||
|
|
1fb770b55d |
[MIRROR] [NO GBP] Fixes more retrieve typos [MDB IGNORE] (#23464)
* [NO GBP] Fixes more retrieve typos (#78069) ## About The Pull Request Continuation of https://github.com/tgstation/tgstation/pull/77946, I missed quite a few of these it seems. ## Why It's Good For The Game Stop the spread of these typos!! ## Changelog Nothing player facing * [NO GBP] Fixes more retrieve typos --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> |
||
|
|
567105d31d |
[MIRROR] [NO GBP]Refactors how sheets are ejected from mat container [MDB IGNORE] (#23401)
* [NO GBP]Refactors how sheets are ejected from mat container (#77945) ## About The Pull Request As #77936 pointed out an infinite while loop occurs in the recycler. This was caused due to my recent mat changes as follows. When the recycler eats up an item. If it found any material inside, it would attempt to eject any sheets formed from it over here https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/game/machinery/recycler.dm#L199 Inside this proc i first create the sheets in `null space` why is explained in the comment https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/datums/components/material/material_container.dm#L599-L600 After doing logging & stuff i then would move the sheets back into its target turf so it could get merged again https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/datums/components/material/material_container.dm#L607-L608 Unfortunately this would trigger `COMSIG_ATOM_ENTERED` signal which the recycler is hooked onto. The recycler would then eat the newly ejected sheets again, which would cause more sheets to be ejected, which would again trigger the signal `COMSIG_ATOM_ENTERED` and you have your infinite loop. I did this because i had no clue how to stop the stack from merging when it got spawned and this was a poor solution, so upon examining the code i found there is a var to specifically stops stacks from merging https://github.com/tgstation/tgstation/blob/ed71735fb3d60e834abf5771525c98809a0bb6f5/code/game/objects/items/stacks/stack.dm#L81 Yup there is specific param called `merge=TRUE` which allows you to explicitly stop stacks from merging. I now use this var and manually merge stacks afterwards without calling `forceMove()` so it doesn't trigger the recycler anymore which caused the infinite loops. ## Why It's good for the game Writing checks to see if an object came from null space is weird. It makes the code difficult to reason with as such situations never happen. Now it makes sense for an atom to be moved "into" null space for e.g. when it gets deleted but for an atom to "return back from it" never happens and you shouldn't be bothered with figuring out how that happened. ## Changelog 🆑 refactor: sheets are merged in a better way when ejected from machines & material related stuff /🆑 * [NO GBP]Refactors how sheets are ejected from mat container --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> |
||
|
|
8fbe6e4137 |
[MIRROR] Fixes a typo [MDB IGNORE] (#23360)
* Fixes a typo * Update order_computer.dm --------- Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com> Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> |
||
|
|
867fa1cdc5 |
[MIRROR] General code maintenance for Mat container related stuff [MDB IGNORE] (#23251)
* General code maintenance for Mat container related stuff (#77671) 1. Removes `/obj/machinery/ore_silo/proc/remote_attackby()`. This proc calls `datum/component/material_container/user_insert()` anyway which performs all the checks necessary for inserting stuff into the ore silo and `/obj/machinery/ore_silo/proc/remote_attackby()` was just repeating its code & checks. So now inserting into the ore silo is directly handled by the mat container without this proxy proc making the operation slightly faster 2. Removed silo `attackby` code. Same operations can be done via `screwdriver_act` & `crowbar_act` procs much cleaner 3. The ore silo now hooks onto signals `COMSIG_MATCONTAINER_ITEM_CONSUMED` and `COMSIG_MATCONTAINER_SHEETS_RETRIVED` and logs into silo when they are triggered. This means when you insert/eject sheets from the silo the connected machine performing the operation no longer has to do the logging manually thus the proc `silo_log` has been removed from a lot of places ,reducing overall code size 4. A lot of stuff that use materials from the ore silo follow this pattern. i.e. They first use the materials from the silo and then log it via `silo_log` proc. This code pattern is repeated in a lot of places so let's just merge these 2 lines with some extra sanity checks into a single proc inside `remote_materials` itself. That's what was done and the number of places where you log manually into the silo has been removed further reducing code size everywhere. 5. Added auto doc & cleaned up some procs Since logging is now done by the ore silo directly, we need a way to pass the machine that is inserting items into the silo to the signal handlers of the ore silo [via the `context` var]. So other code changes elsewhere is because of this var * General code maintenance for Mat container related stuff --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> |
||
|
|
6ccbd41fdc |
[MIRROR] [NO GBP]Mat container Final clean-up & patches [MDB IGNORE] (#22765)
* [NO GBP]Mat container Final clean-up & patches (#77092) ## About The Pull Request 1. Fixes #77177 Some things were not connecting to the ore silo round start because the silo was not initialized yet so it went to local storage. Now it connects with the ore silo again 3. Removed some unused code in remote materials 4. Protolathe uses `eject_sheets()` defined in remote materials and not it's own version because that's redundant 5. Don't put the item back in the players hand when inserting it in the material container cause we haven't even removed it yet 6. `fast_split()` is now even faster & robust and is a global proc 7. Some code cleanup for RHD silo link ## Changelog 🆑 fix: some things not connecting to the ore silo round start /🆑 * [NO GBP]Mat container Final clean-up & patches --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> |
||
|
|
6a5f3c50c4 |
[MIRROR] Material container & related stuff ui refactors & clean-up [MDB IGNORE] (#22667)
* Material container & related stuff ui refactors & clean-up (#76220) ## About The Pull Request **1. Material container clean-up & refactor** - Replaced `total_amount` var with `total_amount()` proc, this var can be easily computed by summing up all material amounts rather than storing it as a var which is tedious to update & keep track of when materials are added/removed - Removed unused procs `transer_amt_to()`, `can_insert_amount_mat()`, and `get_categories()`. These procs are not used anywhere in the codebase so let's remove them & make some space. - Callbacks are replaced with signals, the callbacks don't need to be explicitly garbage collected & having macros & procs marked with `SIGNAL_HANDLER` makes your intentions more readable & explicit. - Fixes #76151 All material adding, removal, checking operations are "Integer" operations, i.e. the final value is rounded & them made 1 if the final value is 0 using the macro `OPTIMIZE_COST`[coudn't come up with a better name]. No more dealing with decimal value materials The problem was after the protolathe was upgraded with better parts all the design costs were multiplied with a decimal `efficiency_coeff` value, this means even though in the UI the cost was displayed as 60 bluespace crystals its actual cost was `60.0001` something in the backend causing this check for materials to fail & print the error message. - Replaced `GetComponent(/datum/component_material_container)` with just a simple ref to the material container when adding the component, so we can save some overhead from calling this proc - Gave all procs a ton of documentation with documentation having documentation - Fixes #76506 RCD and other devices that uses the silo link upgrade now have the correct material usages - Fixes #72096. It wasn't just a problem with ancient protolathe but with all machines that used `datum/component/remote_materials` the problem was remote materials would add an instance of `datum/remote/material_container` if it wanted to use local storage but this component would get added before `datum/component/remote_materials` could be registered i.e. it comes before remote_materials in the component list. So when the machine is destroyed it will first destroy `material_container` & then `remote_materials` therefore destroying the materials before they could get ejected - Silo link is established when parent is registered with remote materials raher than adding an external timer which is faster - Everything that uses a material container will auto eject their sheets when destroyed - Moved this & remote materials into its own folder for better organization **2. Material UI Changes** - Removed the x25 & x50 print buttons from the autolathe, now they just have x5 & x10 buttons like the protolathe, These buttons were of no use since you could just type the exact amount you want to print in the `[Max: <some amount>]` side bar. The code to compute these buttons was just plain right nasty & some of it unused in the UI. - The material eject button in the material bar does not gray out when you can eject exactly one sheet - All material cost are integer values rounded - Fixes #76253 Exosuit Fabricator sends the material container static data to the UI so its material bar is not greyed out when there are sufficient materials to eject - Component printer material bar sends the material container static data to the UI so its material bar is not greyed out when there are sufficient materials to eject - Autolathe Material bars now display number of sheets available - Max printable amount of items are now computed & updated correctly in the UI. They were displaying wrong values & now get updated when items are printed, materials are removed - Silo hold actually works now. When a machine is put on hold it calls this proc https://github.com/tgstation/tgstation/blob/e929cf39cded5207d63df1fa8521f41f2816b383/code/datums/components/remote_materials.dm#L78-L87 Notice how the key is `src` so we should be consistent during checking if a machine is on hold using the same `src` var. But for some reason we did dumb shit like this https://github.com/tgstation/tgstation/blob/e929cf39cded5207d63df1fa8521f41f2816b383/code/datums/components/remote_materials.dm#L150-L153 What is category? Why do we care for the area the machine is in? None of it made sense so i removed all that junk and just made it check for `src` like it should - Removed redundant `removable` & `sheets` var from the material container ui_data. These vars are unused in the UI - If an item does not have the required materials then upon clicking that item you will not get any error message but instead nothing happens ## Changelog 🆑 fix: items can be printed from autolathe & protolathe when the exact material amounts are present in them after upgrading fix: max printable amount now shows the correct value & updates when items are printed, materials are removed in the autolathe & protolathe fix: component printer material bar is not greyed out when there are sufficient materials to eject fix: rcd and other devices that uses the silo link upgrade now have the correct material usages fix: silo hold actually works fix: machines using local storage to hold materials will eject it's materials as sheets when deconstructed/destroyed refactor: Autolathe Material bars now display number of sheets available refactor: printing an item that does not have enough materials will fail silently with no error messages refactor: Drone dispenser will eject sheets upon deconstruction refactor: all things that store materials will auto ejects its sheets(if there is sufficient material) when destroyed refactor: inserting an item into the material container will display the units consumed as sheets not absolute units refactor: removed x25 & x50 print buttons from the autolathe * Material container & related stuff ui refactors & clean-up * Update ammo_workbench.dm --------- Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com> Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com> |