* A big hecking chemistry-related refactor.
Changed SolutionContainerCaps. It now describes "stock" behavior for interacting with solutions that is pre-implemented by SolutionContainerComponent. As such things like syringes do not check it anymore (on themselves) to see "can we remove reagent from ourselves". That's assumed by it... being a syringe.
SolutionContainerCaps now has different flags more accurately describing possible reagent interaction behaviors.
ISolutionInteractionsComponent is the interface that describes the common behaviors like "what happens when injected with a syringe". This is implemented by SolutionContainerComponent but could be implemented by other classes. One notable example that drove me to making this interface was the /vg/station circuit imprinter which splits reagent poured in into its two reservoir beakers. Having this interface allows us to do this "proxying" behavior hack-free. (the hacks in /vg/ code were somewhat dirty...).
PourableComponent has been replaced SolutionTransferComponent. It now describes both give-and-take behavior for the common reagent containers. This is in line with /vg/'s /obj/item/weapon/reagent_containers architecture. "Taking" in this context is ONLY from reagent tanks like fuel tanks.
Oh, should I mention that fuel tanks and such have a proper component now? They do.
Because of this behavioral change, reagent tanks DO NOT have Pourable anymore. Removing from reagent tanks is now in the hands of the item used on them. Welders and fire extinguishers now have code for removing from them. This sounds bad at first but remember that all have quite unique behavior related to this: Welders cause explosions if lit and can ONLY be fueled at fuel tanks. Extinguishers can be filled at any tank, etc... The code for this is also simpler due to ISolutionInteractionsComponent now so...
IAfterInteract now works like IInteractUsing with the Priority levels and "return true to block further handlers" behavior. This was necessary to make extinguishers prioritize taking from tanks over spraying.
Explicitly coded interactions like welders refueling also means they refuse instantly to full now, which they didn't before. And it plays the sound. Etc...
Probably more stuff I'm forgetting.
* Review improvements.
* Moves ContainsReagent from SolutionContainer to Solution
GetMajorReagentId from SOlutionContainer to Solution
Makes capability checks use HasFlag
Moves Solution Color calculation from SolutionContainer to Solution
Replaces SolutionContainerCaps.NoExamine with CanExamine
Misc SolutionContainer.Capabilities yaml cleanup
* Moves IReactionEffect from server to shared
* Moves ReactionPrototype from server to shared
* Moves SolutionValidReaction from SolutionContainer to ChemicalReactionSystem
* Moves PerformReaction from SolutionContainer to ChemicalReactionSystem
* Moves CheckForReaction from SolutionContainer to ChemicalReactionSystem
* Removes unused SolutionContainer methods
* Removes now-unused GetMajorReagentId from SOlutionContainer
* ChemicalReactionSystem comments
* Replaces usage of SolutionContainer.ContainsReagent and replaces it with SolutionContainer.Solution.ContainsReagent
* ChemicalReactionSystem ProcessReactions
* Moves ExplosionReactionEffect to shared, comments out server code, TODO: figure out how to let ReactionEffects in shared do server stuff
* Fixes SolutionContainer.CheckForReaction infinite recursion
* Moves IReactionEffect and ExplosionReactionEffect back to server
* Moves ChemicalReactionSystem and ReactionPrototype back to server
* Uncomments out Explosion code
* namespace fixes
* Moves ReactionPrototype and IReactionEffect from Server to Shared
* Moves ChemicalReactionSystem from Server to Shared
* ChemicalReaction code partial rewrite
* Moves CanReact and PerformReaction to Solution
* Revert "Moves CanReact and PerformReaction to Solution"
This reverts commit bab791c3ebd0ff39d22f2610e27ca04f0d46d6b8.
* Moves ChemistrySystem from Server to Shared
* diff fix
* TODO warning
Co-authored-by: py01 <pyronetics01@gmail.com>
* commit skeleton reagent grinder component
* add reagentgrinder bounduserinterface, add suffix to grinder yml, add reagentgrinder sprites
* implement much more of the grinder ui functionality
* get more use out of hasbeaker bool
* complete wiring up most of the chamber/beaker UI controls
* remove whitelist prototype id. add grindable tag component
* add juiceable component
* rename boolparam to be clearer
* more juice
* add some juice reagents and apply them to their drink prototypes
* re add glassyellow
* implement juicing and results
* add time delay to grindjuice
* add reagent grinder visualizer, add reagent grinder sounds, fix some yaml errors too
* interface has clear indication of currennt operation, and busy status
* add ReagentGrinder to Client ignnored components
* Update Content.Client/GameObjects/Components/Kitchen/ReagentGrinderBoundUserInterface.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Client/GameObjects/Components/Kitchen/ReagentGrinderBoundUserInterface.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Shared/Kitchen/SharedReagentGrinderComponent.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* implemennt sloth changes
* fix isbusy
* Disable grind/juice buttons if there's nothing to grind or juice, also some misc fixes
* unsubscribe from messages on remove + fix xmlcomment
* fix bounding box
* Add these to dictionary
* Add these to client ignore
* Whitespace and unneeded import fixes
* tommy's toes
* Where'd these newlines come from
* power
* improve bounding box
* Check power better & show contents when beaker is ejected
* check power here
* Disable eject buttons when running
* improve comments
* readwrite for viewvars on work time and capacity
* Address most of Sloth's reviews
* Make this cleaner
* add grindablecomponent to motherfucking everything
* Fix reviews
* some more null suppressions
* remove unused random field
Co-authored-by: scuffedjays <yetanotherscuffed@gmail.com>
Co-authored-by: namespace-Memory <66768086+namespace-Memory@users.noreply.github.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Add Butcherable component to humans.
...What?
* Meat from a meat spike is now named after the source
Note: This doesn't propagate to burgers (add a component maybe)
* WIP changes
* Merge conflict fixes
* Bring pull controlelr to current year
* Sync and predict PullController on the client
* Clean imports
* Slow down pullers and make pulling tighter
* Stop pulls on pullable or puller component removals
* Make pulling not occur when moving towards the pulled entity
* Early commit
* Early commit 2
* merging master broke my git
* does anyone even read these
* life is fleeting
* it just works
* this time passing integration tests
* Remove hashset yaml serialization for now
* You got a license for those nullables?
* No examine, no context menu, part and mechanism parenting and visibility
* Fix wrong brain sprite state
* Removing layers was a mistake
* just tear body system a new one and see if it still breathes
* Remove redundant code
* Add that comment back
* Separate damage and body, component states, stomach rework
* Add containers for body parts
* Bring layers back pls
* Fix parts magically changing color
* Reimplement sprite layer visibility
* Fix tests
* Add leg test
* Active legs is gone
Crab rave
* Merge fixes, rename DamageState to CurrentState
* Remove IShowContextMenu and ICanExamine
* Rehydratable component -> monkey cubes now have some of their behaviour
* Placeholder kitchen spike entity
* KitchenSpike component: the kitchen spike now has basic functionality
still placeholder sprite though
* Kitchen Spike: Import meatspike assets from CEV-Eris
* Kitchen Spike: Actually use sprites somewhat
* Kitchen Spike: Forgot I removed the MeatParts property from Butcherable
* Monkey cubes: Use IReagentReaction even though it doesn't quite work yet. Butcherable: remove imports
* Monkey cubes/Rehydratable: Re-add ISolutionChange
* Update Resources/Prototypes/Entities/Constructible/Ground/kitchen.yml
Co-authored-by: Víctor Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* Separate part management from the rest of body manager component
* Component reference
* Move more methods over
* Fix docs and move over BodyPreset
* Fix up body preset
* Create initialize method and remove constructor for BodyPreset
* Do the same for BodyTemplate and add Initialized properties
* Fix BodyTemplate HashCode test
* BodyTemplate test PLS
* Add test that puts all components on an entity and checks for no exceptions
Also fix all the exceptions that happened because of this
* Add comments to the test
* Fix nullable errors
* Fix more nullable errors
* More nullable error fixes
* Unignore basic actor component
* Fix more nullable errors
* NULLABLE ERROR
* Add string interpolation
* Merge if checks
* Remove redundant pragma warning disable 649
* Address reviews
* Remove null wrappers around TryGetComponent
* Merge conflict fixes
* APC battery component error fix
* Fix power test
* Fix atmos mapgrid usages
* Make IInteractUsing async, make tools use DoAfter.
* Disable warning 1998 in Content.Server
* Update Content.Server/GameObjects/Components/AnchorableComponent.cs
* Things and stuff with grids, unfinished w/ code debug changes.
* Updated submodule and also lost some progress cause I fucked it up xd
* First unfinished draft of the BodySystem. Doesn't compile.
* More changes to make it compile, but still just a framework. Doesn't do anything at the moment.
* Many cleanup changes.
* Revert "Merge branch 'master' of https://github.com/GlassEclipse/space-station-14 into body_system"
This reverts commit ddd4aebbc76cf2a0b7b102f72b93d55a0816c88c, reversing
changes made to 12d0dd752706bdda8879393bd8191a1199a0c978.
* Commit human.yml
* Updated a lot of things to be more classy, more progress overall, etc. etc.
* Latest update with many changes
* Minor changes
* Fixed Travis build bug
* Adds first draft of Body Scanner console, apparently I also forgot to tie Mechanisms into body parts so now a heart just sits in the Torso like a good boy :)
* Commit rest of stuff
* Latest changes
* Latest changes again
* 14 naked cowboys
* Yay!
* Latest changes (probably doesnt compile)
* Surgery!!!!!!!!!~1116y
* Cleaned some stuff up
* More cleanup
* Refactoring of code. Basic surgery path now done.
* Removed readme, has been added to HackMD
* Fixes typo (and thus test errors)
* WIP changes, committing so I can pull latest master changes
* Still working on that god awful merge
* Latest changes
* Latest changes!!
* Beginning of refactor to BoundUserInterface
* Surgery!
* Latest changes - fixes pr change requests and random fixes
* oops
* Fixes bodypart recursion
* Beginning of work on revamping the damage system.
* More latest changes
* Latest changes
* Finished merge
* Commit before removing old healthcode
* Almost done with removing speciescomponent...
* It compiles!!!
* yahoo more work
* Fixes to make it work
* Merge conflict fixes
* Deleting species visualizer was a mistake
* IDE warnings are VERBOTEN
* makes the server not kill itself on startup, some cleanup (#1)
* Namespaces, comments and exception fixes
* Fix conveyor and conveyor switch serialization
SS14 in reactive when
* Move damage, acts and body to shared
Damage cleanup
Comment cleanup
* Rename SpeciesComponent to RotationComponent and cleanup
Damage cleanup
Comment cleanup
* Fix nullable warnings
* Address old reviews
Fix off welder suicide damage type, deathmatch and suspicion
* Fix new test fail with units being able to accept items when unpowered
* Remove RotationComponent, change references to IBodyManagerComponent
* Add a bloodstream to humans
* More cleanups
* Add body conduits, connections, connectors substances and valves
* Revert "Add body conduits, connections, connectors substances and valves"
This reverts commit 9ab0b50e6b15fe98852d7b0836c0cdbf4bd76d20.
* Implement the heart mechanism behavior with the circulatory network
* Added network property to mechanism behaviors
* Changed human organ sprites and added missing ones
* Fix tests
* Add individual body part sprite rendering
* Fix error where dropped mechanisms are not initialized
* Implement client/server body damage
* Make DamageContainer take care of raising events
* Reimplement medical scanner with the new body system
* Improve the medical scanner ui
* Merge conflict fixes
* Fix crash when colliding with something
* Fix microwave suicides and eyes sprite rendering
* Fix nullable reference error
* Fix up surgery client side
* Fix missing using from merge conflict
* Add breathing
*inhale
* Merge conflict fixes
* Fix accumulatedframetime being reset to 0 instead of decreased by the threshold
https://github.com/space-wizards/space-station-14/pull/1617
* Use and add to the new AtmosHelpers
* Fix feet
* Add proper coloring to dropped body parts
* Fix Urist's lungs being too strong
* Merge conflict fixes
* Merge conflict fixes
* Merge conflict fixes
Co-authored-by: GlassEclipse <tsymall5@gmail.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: AJCM-git <60196617+AJCM-git@users.noreply.github.com>
* Multiple hands in gui first pass
* Remove IHandsComponent interface
* Create hand class and more hand textures
* Refactor ServerHandsComponent to use a single list of hands
* Seal SharedHand
* Fix picked up items not showing on top of the hand buttons
* Remove HandsGui buttons and panels dictionaries
* Fix items in hands rendering
* Fix wrong hand container comparison
* Fix not updating the location of duplicate hands
* Change ClientHandsComponent to use a SortedList instead of a dictionary
* More merge conflict fixes
* Change SortedList to List
* Fix hand button order
* Add item tooltip for more than 2 hands and updating when removing hands
* Add add hand and remove hand command
* Merge conflict fixes
* Remove nullable reference type from ContainerSlot
* Fix texture errors
* Fix error when reaching 0 hands
* Fix error when swapping hands with no hands
* Merged remove hand methods
* Fix item panel texture errors
* Merge conflict fixes
* Fix addhand and removehand command descriptions
* Add properly displaying tooltips for 2 hands
* Make hand indexes and locations consistent across the client and server
* Add dropping held entity if a hand is removed
* Change hand location to be calculated by index
* Made different hand gui updates more consistent
* Remove human body yml testing changes
* Sanitize addhand and removehand commands
* Merge conflict fixes
* Remove testing changes
* Revert body system changes
* Add missing imports
* Remove obsolete hands parameter in yml files
* Fix broken import
* Fix startup error and adding and removing hands on the same tick
* Make hand container id use an uint
In case someone gets more than 2 billion hands
* Rename hand component files
* Make hands state use an array