* basic system + convert all plantmetabolism
* stragglers
* convert all old metabolisms over
* fix YAML errors + dumb serialization issue
* remove unused thingy
* reimplement
* add organ type condition
* organtype condition but real
* cleanups + test fix
* metabolismtype -> metabolizertype
* solution resilience
* fixes
* serializer + use entityuid + hashset
* this is apparently an entirely different thing
* turns out it just works
* oops
* Move entity solution entity systems to shared
* Move SolutionComponents to Server
* Fix namespaces
* Remove Networked Component.
* Fixes
* Add components to ignore list
* Rename SolutionContainerCaps -> Capability
* Move IExamine event to Chemistry System.
* ECS the ISolutionChange into SolutionChangeEvent
* Unify SolutionContainer into a single shared component
* Replace ISolutionInteraction with SolutionContainerComponent
* Move all methods from SolutionContainer to ChemistrySystem
* Refactor EntitySystem calls to Dependencies
* Refactor SolutionContainer to SolutionManager
* Fix yamls
* Fix test fails
* Fix post merge issues
* Fix various issues with SolutionManager
* More fixes
* Fix more components
* Fix events not being directed
* Fixes for Hypospray
* Separate removal and iteration on Metabolism
* Fix creampie problems
* Address some of sloth's issues
* Refactors for Systems
* Refactored solution location
* Fix tests
* Address more sloth issues
* Fix dependency
* Fix merge conflicts
* Add xmldocs for Capabilities components
* Remove HasSolution/TryGetDefaultSolution and Add/Remove Drainable/Refillable
* Replace Grindable/Juiceable with Extractable
* Refactor field names
* Fix Drainable
* Fix some issues with spillable and injector
* Fix issues with Grinder
* Fix Beaker having duplicate solutions
* Fix foaming
* Address some MGS issues
* Fix Uid issues
* Fix errors in solution Tranfer
* Fixed some extra values constant values
* Cola is drinkable now
* adds an overdose metabolism with sensible default settings
* adds the compoenents for the run fast part of meth
* not sure what I changed here but I trust my past self to not fuck up for once
* adds basic meth recipe
* correctly names comething
* I really should've checked my spelling before making this pr
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* adds suggestion from the maintaner, who managed to get to this pr suprisingly fast
* Revert "adds suggestion from the maintaner, who managed to get to this pr suprisingly fast"
This reverts commit 9b0f07402e35ed5890b3af805691b690671b950c.
* tweak
* tweak
* git's gitting on my nerves
* some small tweaks
* don't need these anymore
* makes some stuff required
* changes the meth recipe to arbitary bullshit to get the yaml thingy to leave me alone goddamnit
* extremely minor change
* removes overdose, because however it's gonna be done, it's definitely not my way
* i should really double check every key I press
* hm
* sigh, I should be more thorough with looking at error messages.
* beenus
* gay sex is gay
* this one goes out to bingo
* reviews
* not sure why status lifetime description wasn't being commited
* Update MovespeedModifierMetabolism.cs
Co-authored-by: mirrorcult <notzombiedude@gmail.com>
* adds VV to component variables
* rebalances meth, and makes the completely unrealistic recipe properly work now
* meth effects should go away now or something do you think I test these changes before pushing??
* ah yes, orginization
* adds proper recipe and prequisite chemicals
* fixes linter hopefully
* Update chemicals.yml
* a
* starts working on prediction
* thing
* predmiction??
* changes thing
* does it properly
* uses timespan instead of timer
* uses dif timers and adds a system
* updates robust and tweaks a small thing
* Fixes
* "Fix" prediction
* starts changing the timer to timespans to avoid icky on timer end
* okay fixes the check thing but now meth is broken and I don't know why
* fixes predicition (partially)
* Delete ContentNetIDs.cs
whoops
* some changes advised by sloth
* certified scalycode fix right here
* moves resettimer to the metabolism to make it less oop stinky
* moves resettimer to the metabolism to make it less oop stinky
* gamin
* when the is
* updates mth colour to be accurate because I forgot
* abc hard ok
* everything should be up to date now
* makes MovespeedModifierMetabolism ECS and cleans up some other stuff
* does a fixy wixy
* fix thing
* Revert "Merge branch 'master' of https://github.com/space-wizards/space-station-14 into meth"
This reverts commit 62886561098be02f9adb6352f4e858a8269d5bd5, reversing
changes made to ca34fffb5b7a40f19aec7b9e4bc37bdeab914bc1.
* Revert "Revert "Merge branch 'master' of https://github.com/space-wizards/space-station-14 into meth""
This reverts commit 4f550da19656abfd0be05f818fc6b7100252d5b8.
* fix hopefully
* updates metabolism to works with mirror's fancy new system
* updates yaml + tweaks
* bruh
* yaml moment
* :yaml moment
* Revert " :yaml moment"
This reverts commit 8cb51573c64db76d989de22acdbb9c50b2c6d052.
* 99th commit yay, also I need to not do this
* removes something that I don't need
* makes system work with this and gets rid of unnesescary check
* make the update only work on active components
* oops
* Cleanup
* alphabetise this shit
* Touchup
* Woops stupid alloc by me
* Nerf nyoom for now
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: mirrorcult <notzombiedude@gmail.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
* metabolism -> respirator, add reageanteffect and reagenteffectcondition, start on metabolizercomp/system
* move LiverBehavior metabolism logic to Metabolizer
* minor tweaks and update all YAML
* how about actually taking conditions into account
* off by one
* removals
* reviews
* HealthChangeMetabolism now scales with ticktime and metabolism rate
Both Food and Drink metabolisms scale with ticktime, Now HealthChangeMetabolism also does so.
Additionally, 'healthChange' now correctly scales with the metabolism rate, so it's description is now correct.
* LiverBehaviour now uses correct frameTime
Previously, the liver only metabolised reagants once every second, but incorrectly passes the current frameTime to the metabilism function, not 1 second.
* Stomach now only transfers non-empty solutions.
Makes debugging bloodstream bugs easier if the stomach is not constantly adding empty solution to it.
* Fixed StomachBehaviour using wrong SolutionContainerComponent
Stomach was using the first SolutionContainerComponent in the owner of the body, instead of the container in the owner of the mechanism (stomach). As a result, it used to use the BloodStreamComponent.Solution as a "Stomach".
* Update StomachBehavior.cs
Somach now checks if it still contains a reagant, before transferring it.
* Added argument to IMetabolizable.Metabolize()
Added availableReagent argument to IMetabolizable.Metabolize(), This ensures that this function does not over-metabolize a reagant, which can happen if tickTime*metabolismRate is larger than the available reagant
* Revert "Stomach now only transfers non-empty solutions."
This reverts commit 2a51e2d87e6e17ab76b48e5316ce501ec05ac061.
* Renamed _updateInterval to _updateIntervalSeconds
Also modified doc comment specifying units
* Fix spelling of healthChangeAmount
Changed from healthChangeAmmount to healthChangeAmount
* Fixed comment
comment used to mention _updateInterval, which has been renamed _updateIntervalSeconds
* Fixed typo in comment
* fixed typos: reagant -> reagent
Most typos were just in comments.
* Make metabolizable classes inherit from DefaultMetabolizable
Also involved changing around IMetabolizable
* Renamed variables
metabolismAmount -> amountMetabolized
* Updated Comments in DefaultMetabolizable
Makes it clearer why DefaultMetabolizable works as it does, and that other classes depend on it.
* basic eui and window
* finish EUI, update defaults
* unnecessary usings
* convert to bounduserinterface
* merge me up
merge me up inside
* Fix repeated define for component in prototype
* impl swept UI suggestion
* apply discord reviews
* small changes
* Remove the unnecessary NetID property from ComponentState.
* Remove Component.NetworkSynchronizeExistence.
* Removed Component.NetID.
* Adds component netID automatic generation.
* Removed NetIdAttribute from serverside components with no corresponding clientside registration.
* Completely remove static NetIds.
* Renamed NetIDAttribute to NetworkedComponentAttribute.
* Add GenerateNetIds calls to client and server entry points.
Add test to make sure auto generated NetIds are identical.
* Component changes when rebasing that I am too lazy to rewrite into the branch.
Co-authored-by: Vera Aguilera Puerto <6766154+Zumorica@users.noreply.github.com>
* Converted all SnapGridPositionChangedEvent subscriptions to AnchorStateChangedEvent.
* Fixes power tests with new anchored requirements.
* Moved AnchorableComponent into construction.
AnchorableComponent now uses Transform.Anchored.
* Fixed bug with nodes, power works again.
* Adds lifetime stages to Component.
* Update Engine to v0.4.70.
* serv3 in shared pt 1
* beginning of deepclone api
* progress in implementing ideepclone & serv3 in content
* adds target
* its cant hurt you it cant hurt you
* more changes to content.server
* adds dataclasses
* almost there
* renamed & edited entry
* finishes refactoring content to use serv3
* gasmixture runtimes, next: reagentunit
* fucin hell that was an annoying one
* adds flags
* fixes some yaml errors
* removes comment
* fixes generic components for now
* removes todo
actually clones values my god paul
fixes bug involving resolving custom data classes from other proj
renames dataclass
fixes spritecomp
adds WithFormat.Constants support
* adds deepclone to ResistanceSet
* adds a bunch of deepclone implementations
adds a deepclone analyzer (TODO)
adds a deep clone fallback for classes & structs
* fixes a bunch of runtimes
* adds deepclone to entityuid
* adds generator to sln
* gets rid of warnings
* fixes
* argh
* componentdata refactors
* more deepclone impl
* heck me i reworked all of content deepclone
* renames custom dataclasstarget
* misc
* reworks prototypes
* deepclone nuke
* renamed customdataclass attribute
* fixes everything
* misc fixed
* the killcommit
* getting there
* changed yamlfieldattribute namespace
* adds back iselfserialize
* renames everything to data(field/definition)
* ouch
* Fix most errors on content
* Fix more errors in content
* Fix some components
* work on tests
* fixes some customdataclasses
* fuggin shit
* yes
* yeas
* Remove data classes
* Data field naming fixes
* arg
* Git resetti RobustToolbox
* Merge fixes
* General fixes
* Fix startup serialization errors
* Fix DamageContainerPrototype when supported classes or types are null
* Implement construction graph step type serializer
* Fix up construction serialization
* Fix up construction serialization part 2
* Fix null list in technology database component
* Fix body serialization
* Fix entity storage serialization
* Fix actions serialization
* Fix AI serialization
* Fix reaction serialization
* Fix body serialization
* Fix grid atmosphere serialization
* Rename IServ3Manager to ISerializationManager
* Convert every non generic serializer to the new format, general fixes
* Serialization and body system fix
* pushinheritance fix
* Update all prototypes to have a parent and have consistent id/parent properties
* Merge fixes
* smh my head
* cuddling slaps
* Content commit for engine PR
* stuff
* more fixes
* argh
* yes even you are fixed
* changelog fixes
* fixes seeds
* argh
* Test fixes
* Add writing for alert order prototype
* Fix alert order writing
* FIX
* its been alot ok
* Fix the rest of the visualizers
* Fix server alerts component tests
* Fix alert prototype tests not using the read value
* Fix alert prototype tests initializing serialization multiple times
* THIS IS AN AMERICAN CODEBASE GOD BLESS THE USA
* Add ImplicitDataDefinitionForInheritors to IMechanismBehavior
Fixes the behaviors not being found
* Fix NRE in strap component
Good night to the 1 buckle optimization
* Fix clothing component slot flags serialization tag
* Fix body component in all components test
* Merge fixes
* ffs
* Make construction graph prototype use serialization hooks
* human yaml linted
* a
* Do the thing for construction
* stuff
* a
* monke see yaml linter
* LINT HARDER
* Remove redundant todo
* yes
* Add skip hook argument to readers and copiers
* we gamin
* test/datafield fixes
* adds more verbose validation
* moves linter to action
* Improve construction graph step type serializer error message
* Fix ammo box component NRE
* gamin
* some updates to the linter
* yes
* removes that test
* misc fixes
* array fix
priority fix
misc fixes
* adds proper info the validation
* adds alwaysrelevant usa
* Make yaml linter take half as long to run (~50% less)
* Make yaml linter 5 times faster (~80% less execution time)
* based vera being based
* fixes mapsaving
* warning cleanup & moves surpressor
* removes old msbuild targets
* Revert "Make yaml linter 5 times faster (~80% less execution time)"
This reverts commit 3e6091359a26252c3e98828199553de668031c63.
* Add -nowarn to yaml linter run configuration
* Improve yaml linter message feedback
* Make dependencies an argument instead of a property on the serialization manager
* yamllinting slaps
* Clean up type serializers
* Move yaml linter code to its own method
* Fix yaml errors
* Change yaml linter action name and remove -nowarn
* yaml linter please shut
* Git resetti robust toolbox
Co-authored-by: Paul <ritter.paul1+git@googlemail.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
* Add nullable to some Content.Shared files.
* Use [NotNullWhen(true)]
* Undo adding now redundant !'s
* Forgot one
* Add a ton more nullable
* You can guess
* Fix some issues
* It actually compiles now
* Auto stash before merge of "null2" and "origin/master"
* I lied
* enable annotations -> enable
* Revert ActionBlockerSystem.cs to original
* Fix ActionBlockerSystem.cs
* More nullable
* Undo some added exclamation marks
* Fix issues
* Update Content.Shared/Maps/ContentTileDefinition.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Resolve some issues
* Remove unused method
* Fix more issues
* Fix more issues
* Fix more issues
* Fix more issues
* Fix issue, rollback SharedGhostComponent.cs
* Update submodule
* Fix issue, invert some if-statements to reduce nesting
* Revert RobustToolbox
* FIx things broken by merge
* Some fixes
- Replaced with string.Empty
- Remove some exclamation marks
- Revert file
* Some fixes
* Trivial #nullable enable
* Fix null ables
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
* Engine namespace changes.
* Automated remove redundant using statements.
* Simplified Graphics namespace.
* Apparently the container system stores full type names in the map file.😞 This updates those names.
* API Changes to LocalizationManager.LoadCulture.
* Update submodule to v0.3.2
* 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.