* Fix usages of TryIndex()
Most usages of TryIndex() were using it incorrectly. Checking whether prototype IDs specified in prototypes actually existed before using them. This is not appropriate as it's just hiding bugs that should be getting caught by the YAML linter and other tools. (#39115)
This then resulted in TryIndex() getting modified to log errors (94f98073b0), which is incorrect as it causes false-positive errors in proper uses of the API: external data validation. (#39098)
This commit goes through and checks every call site of TryIndex() to see whether they were correct. Most call sites were replaced with the new Resolve(), which is suitable for these "defensive programming" use cases.
Fixes#39115
Breaking change: while doing this I noticed IdCardComponent and related systems were erroneously using ProtoId<AccessLevelPrototype> for job prototypes. This has been corrected.
* fix tests
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* refactor: move puddle evaporation + absorbents to shared
* refactor: move SolutionRegeneration to shared
* refactor: make AbsorbentSystem visuals clientside
* style: general formatting/cleanup on touched files
- Few logical simplifications
- Add field for hard-coded sparkle effect ent
- Switch stuff to Entity<T>
No actual prediction fixes in this commit (though in
retrospect I should've done this commit last).
* fix: use predicted variants for predicted code
* fix: average out evaporation rates in mixtures
* refactor: move SolutionPurge to shared
* style: Basic SolutionPurgeComponent field cleanup
* fix: general prediction + timing + networking fixes
- Moves client side visuals back to shared because other
players exist
- Don't accumulate CurTime in Purge/RegenerationSystem
- Network the next update field in Purge/RegenerationSystem to
deal with UI mispredictions???
* fix: add udder bug workaround
Not needed for SolutionPurgeSystem which doesn't resolve
solutions (probably fine that SolutionPurgeSystem doesn't
cache since it's much rarer, though it probably should), and
likely not needed for AbsorbentSystem since it only resolves
against puddles which, I don't think can be in containers.
* fix: don't divide by zero for evaporation speed = 0.
* refactor: revert evaporation changes
Will cherry-pick these out in another PR.
Also reverting the evaporation speed bugfix since it's easier
to revert all at once. :)
* fix: component cleanup; autopause fields, use ProtoID
* fix: remove unused AbsorbentComponentState
* fix: ProtoId is not string
* refactor: move PuddleSystem.UpdateAppearance to shared
* style: general PuddleSystem.UpdateAppearance tweaks
- Switch to Entity<T>
- Use ProtoIds
- Minor simplifications
* fix: add udderly silly PVS workaround
* cleanup
* fix
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* Create TurfSystem equivalent for and obsolete TurfHelpers.GetTileRef
* Fix EntitySystem uses of TurfHelpers.GetTileRef
* Fix EntitySystem uses of TurfHelpers.TryGetTileRef
* Fix construction condition uses of TurfHelpers.GetTileRef
* Fix last use of TurfHelpers.IsBlockedTurf
* Create TurfSystem equivalent to and obsolete TurfHelpers.GetContentTileDefinition
* Fix uses of TurfHelpers.GetContentTileDefinition(TileRef)
* Fix uses of TurfHelpers.GetContentTileDefinition(Tile)
* Create TurfSystem equivalent to and obsolete TurfHelpers.IsSpace
* Fix EntitySystem uses of TurfHelpers.IsSpace(Tile)
* Fix EntitySystem uses of TurfHelpers.IsSpace(TileRef)
* Fix remaining uses of TurfHelpers.IsSpace
* Fix uses of TurfHelpers.GetEntitiesInTile
* Delete TurfHelpers.cs
* Add GetEntitiesInTile lookup methods
* Convert some GetEntitiesInTile methods to LookupSystem extension methods
* Use new GetEntitiesInTile methods
* Recycle spiderweb hashset
* Recycle floor tile hashset
* feat: now vacuum cleaner can suck solutions from floor
* refactor using AbsorbentSystem instead of separate vacuum cleaner
* refactor: remove unused vacuum cleaner files
* refactor: renamed ConnectedContainerComponent to SlotBasedConnectedContainerComponent (and system)
* fix: fix invalid comp name
* fix: no more spray nozzle messaging about water inside bottles etc.
* refactor: minor refactor in SlotBasedConnectedContainerSystem and adjustments after merge
* refactor: cleanups
* refactor: renaming
* refactor: update to use _puddleSystem.GetAbsorbentReagents
* refactor: changed interactions with SlotBasedConnectedContainerSystem into events
* refactor: new sound and action delay adjusted to sound (amount tweaked a bit accordingly, almost)
* refactor: added networking for SlotBasedConnectedContainerComponent
* fix attribution for vacuum-cleaner-fast.ogg
* trying to fix multi-license for mix sound file
* remove empty line
* refactor: remove trailing whitespace
* by ref struct, brother
---------
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
Co-authored-by: EmoGarbage404 <retron404@gmail.com>
This simplifies the code and makes the experience of examining contents
easier without the reagent dispenser UI, as well as adding the possibility
for dispensers to have items of heterogeneous sizes in them, which would
allow configuring reagent dispensers to accept smaller containers such
as beakers or vials in order to allow for more types of smaller quantities
of reagents, or other flexibilities brought by using a standard storage
component.
* Init Commit
* windows yelling at me to update commit
* working commit, need prediciton and more dehardcoding
* Project 0 warnings
* Working Commit (Near Final)
* ryder got confused commit
* I love Merge Conflicts :)
* Working commit, no prediction
* Forgot the yaml changes
* Comments and typos
* Apparently while the reduced launch mult of lube was initialized it was never used so I revered back to default
* Fixed an incorrect divisor
* bit of cleanup
* Prediciton fixed, and puddles now affect all entities
* FORGOT TO RENAME A VERY IMPORTANT VARIABLE OOPS
* Really big I forgor moment
* Even bigger I forgor moment
* four more merge conflicts to fix four more oopsies
* fixed actual divide by zero moment and also im very dumb
* Even bigger I forgor moment
* four more merge conflicts to fix four more oopsies
* fixed actual divide by zero moment and also im very dumb
* Fix all test fails
* code cleanup
* Webedit whitespace
* Code cleaup
* whitespace webedit
* whitespace webedit
* whitespace webedit
* whitespace removal
* Comments and cleanup
* Re-Added 20 warnings as per Ork's request
* Cleanups
* Spacing fix
* bugfixes and cleanup
* Small bugfix
* Actually dirty the slipComp for real
* Added Friction field to Reagent Prototype per design discussion
* Sliding system is kill
* init, god help us all
* further refining
* final round of bugfixes
* whoopsies
* To file scoped namespace
* first review
* oopsie
* oopsie woopsie
* pie is on my face
* persistence
* datafieldn't
* make PreviousTileRef nullable
* change component to file scoped namespace
* Minor tweaks:
- We clamp the reaction amount to a minimum value because when working with percentages and dividing, we approach numbers like 0.01 and never actually properly delete the entity (because we check for zero). This allows us to react with a minimum amount and cleans things up nicely.
- Minor clarification to comments.
- Rebalancing of the spray nozzle projectile.
* the scug lies!!!!
* undo file scoped namespace in system
* kid named warning
---------
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Extracts magic strings from Tag calls
When #36281 gets merged, the `TagSystem` methods will all give warnings. Let's fix those warnings before they even happen!
* Adds missing libraries
* Remove not yet implemented TagSystem changes
* Fix tag spelling error
Genuinely surprised there was only 1!
* Styling and proper type changes
* Styling
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
---------
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
* Adding sorting to chem master
* Chem Master can now sort based on following categories
- Alphabetical
- Quantity
- Time Added to Machine
* Sorting is disabled by default and persist in the machine for everyone
* Removed some pointless code from Chem Master's UI
* Changed None and Time Added's text to reflect what they do better
* Minor adjustments to the code requested by maintainers
* Fix superSlippery and stepTrigger values persist
- made values in SpillTileReaction's public so we can query the
prototype
- made the default values for slippery component and
StepTriggerComponent based on default constants
for easier resetting
- added a calculation and check in UpdateSlips to check
if a super slip is present as well as Update
relevant steptrigger and slip values based on the contents of the
solution
* The worlds biggest change
---------
Co-authored-by: Myra <vascreeper@yahoo.com>
* Init testing
* copyright
* oops
* Tracking the embed entity uid
* testing stuff for gradual injection
* work
* weh
* god save me
* bleh
* Yippee!
* Again
* Mini syringe ammo
* cleaning up
* mini syringes have a texture for fill amount
* -3 cool points :(
* hitboxes
* init cleanup
* much needed fixes
* Fixes
* clean up solution regen and drain comps
* Tape applied.
* Update Content.Server/Chemistry/Components/SolutionRegenerationComponent.cs
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
* remain entity
* That has to be a rogue test fail.
---------
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
* Replace instances of SolutionContainerSystem with SharedSolutionContainerSystem
* guap
* More fixes
* Wait you can do that?
---------
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
* Power stuff
- Add shared IsPowered
- Add shared ResolveApc
- Move PowerChangedEvent to shared for now
- Add SlimPoweredLight that actually functions how you'd expect a PoweredLight to function it id didn't have a bunch of bloat on it.
* big update
* boing
* Added the ability for blood to track DNA using ReagentData; Forensic Scanner now accounts for solution DNA, non-DNA holders have "Unknown DNA"
* Removes touch DNA for puddles, adds DNA to vomit
* DNA now leaves traces in containers and those marked without don't show DNA on scan (except for puddles), gibbed parts have DNA
* Fix stupid metamorphic glass bug grrr
* Removed SpillableComponent since DnaSubstanceTraceComponent is used instead
* Removes data field from maps, adds DNA tracking for some missed items
* Give default value, fix missing values.
* Fixes recipe bug
* Review changes
* Make the Data list into a nullable type
* Revert map changes
* Move gibbed unknown DNA to forensicssystem
* GET WORLD POSITON, ROTATION
* Missing parentheses
* ui system depndency
* the issue
* Unused
* Let the function do the transform
---------
Co-authored-by: plykiya <plykiya@protonmail.com>
* Shaking and Stirring
* Remove shake message
* Switch if order a bit
* Add doafter supprot for reactionmixer
* Fix nullability
* Timespan zero
* Forgot to remove loc string
* Reorganize usings
* Remove unneeded usings, fix b52 needing to be shaken
* Oh the possibilities
* Merge fixes
* Forgot to remote LavaSystem oops
* Changed EntityEffectArgs to EntityEffectBaseArgs and EntityEffectReagentArgs
* Throw exception for unimplemented effectargs
* Remove Json and overrideable datafields
* Fix test issues
* Actually fix the compiling issue
* Fix comments and remove EntityEffectArgs (no longer used, replaced with EntityEffectBaseArgs)