* Bespoke Material Backend
- Adds support for bespoke materials:
- Reimplements [/datum/material/var/id]
- Ports GetIdFromArguments from SSdcs
- Adds a wrapper define for GetMaterialRef
- Adds [MATERIAL_INIT_BESPOKE]
- Adds [/datum/material/proc/Initialize]
- Does not actually add any bespoke materials
- [ ] TODO: Code docs
- [ ] TODO: Actually adding bespoke materials
* Some has_material procs and cleaning up some spaghetti
- Adds a pair of has_material procs for use in checking whether a given atom has a given material
* Adds meat
- Adds bespoke meat variants
- Does not make them accessible
- Shuts up the linter
* Implements bespoke meat
- Makes the material container preserve bespoke materials
- Makes the sheetifier accept bespoke materials
- Makes the autolathe accept bespoke materials
- Makes the gibber produce bespoke meats
* Makes butchering produce bespoke meats
This is jank and really needs to be folded into a unified butchering and gibbing system
* Material documentation
- Adds, fixes, and touches up some documentation
* Material container insertion callback
- Changes the proc used to expand the material container's material list ot a proc used to check whether a material fits into a material container
- Instantiating new materials is no longer O(n) relative to the number of autolathes in existence.
* Makes processing meat conserve materials
- Makes bespoke meat carry over into meatballs
* Makes preserving custom materials an option
- Implements the ability to turn preserving custom materials _off_ for processor recipes
* Fixes all bespoke materials of the same type using the same singleton
- We use ids now, not just types.
* Makes the fat sucker produce bespoke meats
- Because consistency is good.
* Fixes autolathes merging bespoke stacks into normal stacks.
* Makes the callback to test materials for holdibility optional
- @Floyd
* GetMaterialRef -> GET_MATERIAL_REF
- We capitalize macros.
* Removes an extraneous callback
- Makes the sheetifier use functionality I didn't notice I implemented a few commits ago.
* Makes mob and species meat null compatible
* Fixes the ore silo
- The ore silo had really snowflake material handling that has been brought in line with the rest.
- The materials should show up in the correct order.
* Fixes minor lathe bugs
- Fixes stack_traces caused when lathes tried to fetch materials using reagent typepaths
- Fixed the selective reagent disposal topic. I have no idea how long this has been broken.
* Various documentation fixes
- Clarified a couple comments
- Removes an extraneous ?. operator
- Fixed mat floor tiles having bugged reagent temperatures
* More fixes
-/datum/material/meat/mob -> /datum/material/meat/mob_meat
- Adds atom typecheck to material containers.
* Fixes old typepaths
Huge removal of dead vars, bad timers, and other sloppy jitteriness from beams. They go from checking movement to waiting for a signal.
VARIABLE KILL LIST:
sleep_time: signals baby
finished: signals BAYBEEE
target_oldloc: not only not typecasted as a turf or named as a turf, it was unused. when are we going to use this? the beam starts from the origin!
origin_oldloc: bad name, not typecasted. renamed to originturf
static_beam: how are you an unused variable and still get replaced by signals like really
timing_id: signallllss bbbaaaabbyy
recalculating: you get the drill by now signals baby
base_icon: unused, seemingly replaced by visuals I think
* The Re-pricening
* Rewritten and adjusted for paycheck defines.
* I made the map changes finally.
* And the refills too.
* "OH YEAH REPLACING IT ALL WITH DEFINES AND SCALING IT THE EXCEL DOCUMENT WILL BE EASY, ARCANE!!!"
* And the premium ones too.
* Accidently spoiled a future pr due to dme bleedover
* Replaces some CANATMOSPASS calls with a new define that checks if the turfs are in each others atmos adjacent list, as that's the same info that they want.
Replaces like 70-80% of 0 and such, as a side effect cleaned up a bunch of returns
Edit: Most left out ones are in mecha which should be done in mecha refactor already
Oh my look how clean it is
Co-authored-by: TiviPlus <TiviPlus>
Co-authored-by: Couls <coul422@gmail.com>
Moves all opacity var manipulation to a proc which sends a signal.
light_blocker element for movable opaque atoms made, which tracks its movement and updates the affected turfs for proper lighting updates.
has_opaque_atom boolean replaced by the opacity_sources lazylist to keep track of the sources, and a directional_opacity which serves a similar function but also allows for future expansion with on-border opaque objects (not yet implemented).
Some opacity-related sight procs optimized as a result of this.
Some variables moved to the object's definition.
A define or two added into the mix for clarity.
Some code cleaning, like turning booleans into their defines.
One file renamed for clarity.
Changelog
cl
balance: Mechs no longer block sight. It's a non-trivial cost for the lighting system with little to no gain.
/cl
* adds directional window setting for normal grille window mode
adds furnishing upgrading to the rcd for chairs, stools, tables, and glass tables
both of these new introductions have their direction based on where you are facing when the timer for the build finishes
* adds the luxary rcd cargo pack with a loaded rcd, all 4 upgrade disks, and 3 extra compressed matter cartridges
* adds the furnishing upgrade to the techwebs
allows cyborgs to install rcd upgrades except silos
allows loading of metal and matter into the rcd by simply clicking on the thing you want to insert
lowers price of the cargo pack and removes the silo upgrade
adds banned upgrades var to the rcd
* you can now create windoors and deconstruct them as well
you can now deconstruct tables
doubles the price of the cargo pack for rcds
* removed cargo pack
* changes define to bitshift flags
moves matter addition to rcds to a proc on sheets
* matter amount is now a stack variable
Defined all the existing light_color values.
Moved their definitions to colors.dm
Made white the default color. It was so already, but that was very obscured.
Moved the atom light-related variables to the atom definition.
Wrapped changes to variables such as light_color into procs that report the event through signals.
Moved the light_on variable to the atom level, also adding a signal for its changing, to represent toggling lights.
Cleaned up a little bit of code in where new variables were defined before redefinitions.
This is all atomization to reduce changes in #52413
None of this affect gameplay at all, it's all code cleaning and refactoring.
There's more colors to standardize, a search for color = will find lots of targets, and I see little need to have both the LIGHT_COLOR and COLOR patterns, but I don't want to make this PR bigger than it already is.
* Renames a few variables. Also reorders fallback order again.
Renames item_state to inhand_icon_state
Renames mob_overlay_icon to worn_icon
Renames mob_overlay_state to worn_icon_state
worn_icon_state/mob_overlay_state now never gets used for inhands.
* Fixes some comments
* Fixes map issue
* Restart lints
* Properly resolves conflicts
* update_icon() improvements
Fixes some update_icon() calls to properly call parent and use update_overlays() and update_icon_state().
The rest of obj/item fuck it
* Suggested fixes, also passes the linter
* I always forget . = ..() is faster than return ..() FOR SOME FUCKING REASON
* Actually this is better
* Signilzes datum/action to update its icon when its connected item does.
* Squashes Commits, has BEPIS, Techs, TGUIs, Rewards, and fixes.
* Makes rewardable techs a variable in all_nodes, and removes RnD Points rewards from the minor reward pool.
* Fixes conflict with pubby and beam icon.
* Review comments and basic cleanup A
* Review Comments and basic cleanup B, also cleans up icon states to work fluidly.
* Map Update
* Indentation, flipped Update_decal_path, and rebuilds tgui
* One last clean up of icon_state, adds the last bit of changes from review, and that should be everything.
* Alright last change for real I swear 105%
* Last change, adds simple sanity check for silicons.
* Moved Human and card variables into ui_interact.
* Fixes map conflict
* Alright Review Round 2 Part A, Fixes Grammar, splits polycircuit into it's own file, UI QOL improvements, Withdrawing credits, changes from arbitary values on the mini RLD, etc.
* More review bits, Part 2:B. Easier returns for less processing, Defines, fixes the merge conflict and updates the UI with new buttons. Just need to figure out Button Mapping for the UI and Duplicate prevention.
* Implemented duplicate tech protection. Yeet.
* Get back in there you
* Alright why are you breaking on me god damnit.
* It's optimized, closer to god, nearly perfect, all together it's ready to ship.
* Cleans up all of the decal painter, shorter, cleaner, works around all the turf_decal quirks.
* Tab spacing on github will look fucky
* More review changes.
* Uses use_power == ACTIVE_POWER_USE instead of powered except for the UI
* prices & income
* more prices
* lower megaseed premium prices
* custom prices for premium tools
* slightly lowers prices for some snacks/drinks/cigs
* hey get back here
* Modified the RCD to fit on a belt, cleaned up some of the upgrade descriptions.
* reeeeee tabbing
* As above except RPD
* Added the same functionality for the Plumbing Constructor and RLD
cl
add: Plumbing equipment is now available through the medical protolathe. It's under medical machinery boards
add: Add's a new chemistry area on metastation for chemical factories. It's located left of main surgery.
tweak: Chemistry has been turned into the Apothecary. It's basically normal chemistry, but Medical Doctors have acces aswell.
tweak: The smoke machine is now plumbing compatible. Put this knowledge to good use.
sprite: Thanks to @CRITAWAKETS for the plumbing RCD sprite!
/cl
Finally adds plumbing to the game!
Chemistry has been turned into the apothecary. For all intents and purposes it's old chem, but doctors have acces.
West of main surgery is now the new chemistry factory area.
I've also had to move stuff around alot, because you can't just add a big new room without having stuff in the way.
Currently only on metastation. I'm completely drained from adding it to meta alone and doing all maps right now will burn me out.
removes materials list from items, uses custom_materials instead. This might introduce some bugs so we should testmerge this for a while (and Ill test stuff locally as much as I can)
this also adds material crafting to sheets. Test case being chairs. In the future we can add stuff like tables, walls, doors etc.
also applies materials to everything, with fixes, which can close#46299
About The Pull Request
Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls
This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE
I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game
Code usability
* 1/4 done? maybe?
* more
* stuff
* incremental stuff
* stuff
* stuff & things
* mostly done but not yet
* stuffing
* stuffing 2: electric boogaloo
* Git Commit and the Kingdom of the Crystal Skull
* make it actually compile
* found more stuff
* fixes
* fix AI laws appearing out of order
* fix windows
* should be the remaining stuff
* this time for real
* i guess it should compile too
* fix sechuds