* ECS and damage Data
* Comments and newlines
* Added Comments
* Make TryChangeDamageEvent immutable
* Remove SetAllDamage event
Use public SetAllDamage function instead
* Undo destructible mistakes
That was some shit code.
* Rename DamageData to DamageSpecifier
And misc small edits
misc
* Cache trigger prototypes.
* Renaming destructible classes & functions
* Revert "Cache trigger prototypes."
This reverts commit 86bae15ba6616884dba75f552dfdfbe2d1fb6586.
* Replace prototypes with prototype IDs.
* Split damage.yml into individual files
* move get/handle component state to system
* Update HealthChange doc
* Make godmode call Dirty() on damageable component
* Add Initialize() to fix damage test
* Make non-static
* uncache resistance set prototype and trim DamageableComponentState
* Remove unnecessary Dirty() calls during initialization
* RemoveTryChangeDamageEvent
* revert Dirty()
* Fix MobState relying on DamageableComponent.Dirty()
* Fix DisposalUnit Tests.
These were previously failing, but because the async was not await-ed, this never raised the exception.
After I fixed MobState component, this exception stopped happening and instead the assertions started being tested & failing
* Disposal test 2: electric boogaloo
* Fix typos/mistakes
also add comments and fix spacing.
* Use Uids instead of IEntity
* fix merge
* Comments, a merge issue, and making some damage ignore resistances
* Extend DamageSpecifier and use it for DamageableComponent
* fix master merge
* Fix Disposal unit test. Again.
Snapgrids were removed in master
* Execute Exectute
* 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
* Initial
* Cleanup a bunch of things
* some changes dunno
* RequireAnchored
* a
* stuff
* more work
* Lots of progress
* delete pipe visualizer
* a
* b
* pipenet and pipenode cleanup
* Fixes
* Adds GasValve
* Adds GasMiner
* Fix stuff, maybe?
* More fixes
* Ignored components on the client
* Adds thermomachine behavior, change a bunch of stuff
* Remove Anchored
* some work, but it's shitcode
* significantly more ECS
* ECS AtmosDevices
* Cleanup
* fix appearance
* when the pipe direction is sus
* Gas tanks and canisters
* pipe anchoring and stuff
* coding is my passion
* Unsafe pipes take longer to unanchor
* turns out we're no longer using eris canisters
* Gas canister inserted tank appearance, improvements
* Work on a bunch of appearances
* Scrubber appearance
* Reorganize AtmosphereSystem.Piping into a bunch of different systems
* Appearance for vent/scrubber/pump turns off when leaving atmosphere
* ThermoMachine appearance
* Cleanup gas tanks
* Remove passive gate unused imports
* remove old canister UI functionality
* PipeNode environment air, make everything use AssumeAir instead of merging manually
* a
* Reorganize atmos to follow new structure
* ?????
* Canister UI, restructure client
* Restructure shared
* Fix build tho
* listen, at least the canister UI works entirely...
* fix build : )
* Atmos device prototypes have names and descriptions
* gas canister ui slider doesn't jitter
* trinary prototypes
* sprite for miners
* ignore components
* fix YAML
* Fix port system doing useless thing
* Fix build
* fix thinking moment
* fix build again because
* canister direction
* pipenode is a word
* GasTank Air will throw on invalid states
* fix build....
* Unhardcode volume pump thresholds
* Volume pump and filter take time into account
* Rename Join/Leave atmosphere events to AtmosDeviceEnabled/Disabled Event
* Gas tank node volume is set by initial mixtuer
* I love node container
* 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 Stack Visualizer
* Add cigarette pack resources
Adds transparent layers for visualizing cigarettes
* Add Bag Open/Close Visualizer
So storage opened in inventory can have different icons when opened
or closed.
* Create a component that only enumerates single item
Used for creating stuff like matchbox, or cigarettes. As a bonus.
It will only update stack visualizer for that particullar item.
* Refactoring stuff
* Fix other usage of stack in Resources
* Add docs
* Apply suggestions from code review
Apply metalgearsloth suggestions
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Applied suggestions from metalgearsloth
* Changed SingleItemStorageComponent to StorageCounterComponent
Difference. New component doesn't spawn items, merely counts them.
* Refactored StackVisualizer
* Fix breakage with master
* Update Resources/Prototypes/Entities/Objects/Consumable/fancy.yml
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update with MGS suggestions
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.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
* #272 add bordered panel for effects bar
* #272 avoid mouse overlapping tooltip when near edges,
change tooltip colors to match mockups
* #272 WIP defining status effect states as YML and
sending them as encoded integers
* #272 refactor to use new alert system
* #272 refactor to use new alert system
* #272 fix various bugs with new alert system and update
alerts to have color
* #272 WIP
* #272 rename status effects to alerts
* #272 WIP reworking alert internals to avoid code dup
and eliminate enum
* #272 refactor alerts to use
categories and fix various bugs
* #272 more alert bugfixes
* #272 alert ordering
* #272 callback-based approach for alert clicks
* #272 add debug commands for alerts
* #272 utilize new GridContainer capabilities for sizing of alerts tab
* #272 scale alerts height based on
window size
* #272 fix tooltip flicker
* #272 transparent alert panel
* #272 adjust styles to match injazz mockups more, add cooldown info in tooltip
* #272 adjust styles to match injazz mockups more, add cooldown info in tooltip
* #272 alert prototype tests
* #272 alert manager tests
* #272 alert order tests
* #272 simple unit test for alerts component
* #272 integration test for alerts
* #272 rework alerts to use enums instead
of id / category
* #272 various cleanups for PR
* #272 use byte for more compact alert messages
* #272 rename StatusEffects folder to Alerts,
add missing NetSerializable
* 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
* 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>
ReagentUnit now implements IComparable and IEquateable.
ReagentUnit now uses double internally.
Added multiplication without shifting for ints.
InvariantCulture for some string things.
Added units tests for Equals and CompareTo.
Added unit tests to Solution that deals with nasty fractionals.
#574 added an out arg to `SolutionComponent.TryRemoveSolution` containing the solution that was removed. I made this change since I thought there was no way to get the removed solution for further use. Didn't notice `SplitSolution` which provides nearly the same behavior. With this PR I want to remove that out arg from `TryRemoveSolution` to keep the SolutionComponent API simple and to avoid having multiple ways of doing things. Existing code uses `SplitSolution`, I just wasn't paying attention.
Feel free to deny merging this if I'm over thinking it. I think it'll help keep solution code from becoming a mess.
* Add click-based solution transfer
For example, clicking on a beaker with a soda can to transfer the soda to the beaker. Works on plain solution containers like beakers and also on open drink containers like soda cans as long as they have the `PourIn` and `PourOut` solution capabilities. If no `SolutionComponent` is added to a drink entity, the `DrinkComponent` will give the entity one. This PR extends that behavior slightly by also giving these default `SolutionComponent`'s the proper capabilities for pouring in/out.
* Improve fix for poured drinks not immediately disappearing
Instead of making `DrinkComponent.Use` public this
splits out the code important to both users and made that function public, leaving `Use` private.
* Shorten solution transfer popup
* Make code review changes
- Move pouring code from SolutionComponent to new PourableComponent. Added PourableComponent to client ignore list and added to existing container prototypes.
- Added EmptyVolume property to shared SolutionComponent for convenience.
- Removed DrinkComponent fix from pouring AttackBy code. Instead DrinkComponent subscribes to the SolutionChanged action and updates its self when necessary.
- Fixed pouring being able to add more than a containers max volume and sometimes deleting reagents.
- Added message for when a container is full.
* More code review changes
- Remove IAttackBy ComponentReference attribute in PourableComponent
- Remove _transferAmount from shared SolutionComponent. Left over var from previous commit not being used anymore.
* Fix exception in ReagentPrototype
Due to client trying to access concrete implementations of IMetabolizable that are in Content.Server. This fix checks to see if the prototype is being loaded by the client through reflection. I don't want to move the prototype completely into Content.Server since it's useful for the client to view descriptions and values of reagents without needing to send that data from the server.
* Make fix slightly more explicit
Now it will only load the metabolizable when in Robust.Server, instead of it being anything that's not Robust.Client.
* Add IModuleManager and ModuleManager
Provide simple way to check if shared code is being run by the server or the client
* Change ModuleManager implementations to not require assembly name comparison
Now just has ClientModuleManager registered to client, and ServerModuleManager registered to server.
* Change IModuleManager functions to properties
* Fix failing tests.
This was failing because the tests weren't initializing IoC. Simply using RobustUnitTest wasn't enough because that doesn't initialize content either. I did some cleaning up so now content IoC is registered via ContentUnitTest.
* Non-accessed local variable
* Merge cast and type checks.
* StringComparison.Ordinal added for better culture support
* Supposed code improvement in launcher. Remove unused code.
* Update ExplosionHelper.cs
Unintentional change.
* Optimized Import
* Add Robust.Shared.Utility import where it was deleted
* Other random suggestion
* Improve my comment
* Added the ReagentPrototype class.
* Added the new Solution class.
* Added new shared SolutionComponent to the ECS system.
* Added some basic element and chemical reagent prototypes.
* Added a new Beaker item utilizing the SolutionComponent. This is a testing/debug entity, and should be removed or changed soon.
* Added filters for code coverage.
* Nightly work.
* Added the server SolutionComponent class.
* Added a bucket.
Verbs set up for solution interaction.
* Adds water tank entity to the game.
* Added a full water tank entity.
Solutions are properly serialized.
Solution can be poured between two containers.
* Solution class can now be enumerated.
SolutionComponent now calculates the color of the solution.
* Minor Cleanup.
* CEV-Eris SMES sprite as RSI.
Has been modified so that the light overlay states use alpha blending.
* Add tiny glow to SMES display sprite.
* Appearances work v2
* More WiP
* RoundToLevels works correctly on even level counts now.
* SMES -> Smes because MS guidelines.
* CEV-Eris APC sprite.
* APC visuals.
* Reduce SMES scale again to normal levels.
* Update submodule