* 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>
* Initial:
Create Devour componentry, preliminary identity storage and the systems
for Devouring
* I have genuinely no idea what i'm doing
- added the radial menu, it has nothing in it.
- trying to get it to populate. the event under the event is broken,
i don't know why, but apparently it's not typed right
- Added a placeholder transform
- oh also fixed up some devour stuff and moved some things around.
* Holey moley, Transform, better devour, oh my!
- Move DnaComponent into Shared because we need it for the DNA cloning
- Make Transform MOSTLY work on the LAST identity devoured.
- Fix some issues on devour that involved prediction, canceling and
Damage exeucting (Thanks Plykiya for pointing out AttemptFrequency!)
* Proper tail stealing and Damage modifier attempt
Add check to add a wagging component on the Changeling if the victim's
species Prototype had one.
attempt to add the Damage mitigation check
* MAJOR CLEANUP AND FIXES AUGH 3 DAYS!!!
- Nullspaced a clone of a victim
- fix audio using server virtualized Pvs (i hate this)
- fix the mispredicted doafters
- Clean up a wholelotta code
- utilize clone systems to clone appearances
- Move CloneAppearance from server to shared So we can actually access
it
* Examine stuff, more cleanup, Jumpsuit ripping
- make rotting prevent the action
- Add ripping of clothing (guh why is it also server)
- add some System stuff for pushing husked corpse inspection
- clean up more badcode
* Doing things properly, UI sorta kinda works.
- Utilize Relayed events for Devour checking
- Get a UI that partially works, Says the name of identities, doesn't
show their looks
- Make use of the New Dynamic BUI assignment
- commit the sin of no client prediction cause nullspace entities aren't
networked
* Got an entity for the Frontend transform
Issue with the looks
* Stick a camera into a fake mobs forehead
- Get the UI to see the net entity in pause space by using a
ViewSubscriber to get the Pvs from the initially stored identity entity
- Remove all the other parts used to try to get this to work before hand
* Raaaaadiallllllls also fix protection coefficents
- Change FancyWindow to Radial
- Fix Issue where coeffeient checking was the wrong way round
* absolutely massive cleanup, no more camera in mobs
- cleaned up event variables that are not needed
- Removed the use of a Pause space and go back to Nullspace usage
- use a PvsOverride rather than ViewSharing
- Remove old commented out code and Lots of unused code
* Fix "Ui elements" dying on the screen
- some minor cleanup
- don't start the entities that get cloned
* ftl, cleanup, and fixing missing transform details
- add replace functionality to TypingIndicatorSystem and
BodyEmotesSystem
- add placeholder sounds and functions to TransformBodyEmotes
- add extra Pvs handling for later use
- attributions for the funny straw sound
- Sound collections for all of the sounds
- various cleanups
* Some extra cleanup
* Fix some false assumptions about TypingIndicator
- Bubbles now transfer on spawned humans rather than used humans
- Clean up YET MORE CODE
- make it so you can't eat yourself
* Oooprs, forgot to add a Husked Corpse Loc
* Missing period in the husked corpse loc
* bad devour windup placeholder
* Husking and WIP Lungs
- Husking now will be prevented from Revival fully and will change
the appearance of players
* Add finalized Sprites for actions and final meta
- add devour on and off sprites
- add transform action sprite
- Add Armblade sprite for future use
- Credit obscenelytinyshark for the sprites <3
* Remove ling lungs, Entity<> everything
- Remove the ling lungs stuff for now... body system is overly
complicated, makes my head hurt
- Switch every method to use Entity<> from Uid, Comp format
* cleanup, admin logging, WIP Roles
* Admin verb, Roundstart, gamerule stuff
- add a Admin verb to make Changelingification easy!
- Add game rule stuff for admin verb and to tell the hapless
goober how to be a changeling... sorta
- clean up parts to make VV easy... USE THE VERB!!
* Armor Coefficent Check
- Remove bespoke changeling armor check and replace it
with a generic armor coefficient query.
* move to UnrevivableComponent instead of husked
- Move UnrevivableComponent to shared
- add Analyzable and ReasonMessage to UnrevivableComponent
to give granular control of the message and whether or not it shows up
in the analyzer
- remove the check for HuskedComponent in DefibrillatorSystem
* aaaaaaa CopyComp
- Some cleanup
- make Vocal system shared
- make VocalSystem Not make more Actions than it needs
- Use some code from ChameleonProjector so we can copy components
- partially ungod method the Transform system
* Cleanup, Moving more things to CopyComp
- TransformBodyEmotes now uses CopyComp (it's a server component so i
need to tell the server to deal with it
- TypingIndicatorComponent also now uses CopyComp
- cleaned up old, now unused "replace" methods in favor of CopyComp
- BodyEmotesSystem now has a publically accessable LoadSounds to deal
with the same problem Screaming had
* WIP
* Devour Windup noise, ForensicsSystem cleanup
* Revert VocalSystem Changes
- Reverted Moving VocalSystem to shared, copy comp acomplishes it
- added component.ScreamActionEntity = null; for copy comp
* cleanup unneeded comments
* revert an accidental line removal
* Remove duplicate SharedHumanoidAppearanceSystem
* Cleanup Typo's and import Forensics components for Dna
* Some more forensics calls
* cleanup use CopyComp for now until CopyComps
* CR cleanup
* Undo some SharedHumanoidAppearanceSystem changes
* Confound these spaces
* Some Copycomp stuff and fixing some PVS override
* use the proper TryCopyComps that are merged
* Change TransformMenu with RadialWithSector
* All sounds done, Fix lack of typing indicator issue
* Updated attributions to include used sound authors
* some ftl typos and mind_role text issue
* DNA, Screaming, appearance, grammar, wagging
- reduced all of the above using ApplyComponentChanges
- Issue still remains with bodyEmotes sticking around in the UI
* Fix UI stuff, partials, entprotoid, good practices
- bunch of partials added
- UI now has a predicted message
- EntProtoID in the admin verb
- RipClothing now uses Entity<ButcherableComponent>
- husking is now optional (off by default) for testing/till we have
hivemind/when we figure out what were doing with devour
- remove TransformGrammarSet
* More CR stuff and documentation
- Make TargetIsProtected less of a meme, with a prototype
set of DamageTypes to check
- Documenation everywhere
- Move DevourEvents into its own file
* Predicted sounds and fix the comp clone list
- Made all start and stop sounds shared
- Split out the rest of the events and UI stuff into subfiles
- Fixed some Clone comp list issues where comments had -'s causing them
to be read incorrectly
* Damage cap check, Identity Shutdown cleanup, cleanup
* Sound stuff (but actually this time)
* Missed documentation
* Missed Documentation and a EntProtoId
* Remove unused dependency
* Remove a nullcheck
* Some dummy minplayers
* CR - Husked now uses a rem/ensure
* Update Actions in the Prototype
* Fixup mindswap handover
- cleanup and handover PVS on mindswap
* Fixup Missing meta from accidental "Take-theirs"
* Add the Armblade to the roundstart-role
* Cleanup, CR (everything but the UI and renames)
* missed a spot
* missed some more whitespace
* Renames
* Primary constructor and a space in these trying times
* User interface stuff for Slime transformation
* popup prediction
* Ling devour no longer makes duplicate identities
- added a key to identities to the original victim
- Add some extra clone settings
* add guard statements to OnClones
* SentOnlyToOwner additions
* fix for sound stoppage error
* Move Organ deleter into soon to be atomized husk
* clone event inventory
* mono sounds
* lower sound volume
* Fix networked sound warning
* Clone comps thing
* review
* attributions
* Fix clobbered changes
* I'm gonna weh out
- whole bunch of CR changes
* fix some very buggy git
* okay its fixed
* address most review points
* fix inventory
* we hate entityuids
* fix test and more cleanup
* move this
* fix more stuff
* fix validation and rootable
* Remove Quickswitch due to some UI quirks
* oops left out some better explanation
* remove dangling LastConsumed component fields
* fix test fail
* try this
* cleanup cloning subscriptions, add movement speed modifier
* fix slime storage
* fix cloning setting inheritance
* Add session information to transform admin logs
* slay the integration test hydra
* dwarf size
* more volume tweaks
* comments
* improve comments and unpredict deletion due to errors when shutting down the server
* fix displancement cloning
---------
Co-authored-by: ScarKy0 <scarky0@onet.eu>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
* PaintableAirlockComponent and AirlockGroupPrototype have been replaced
* Slightly redesigned SprayPainterSystem for greater versatility
* Added handling of changes to the appearance of doors and storages
* PaintableGroup prototypes have been created
* Generating tabs with styles in the UI
* Fix error with undiscovered layer
* Slight improvement
* Removed unnecessary property
* The category for `PaintableGroup` was allocated to a separate prototype so that the engine itself would check if the category existed
* Added canisters, but repainting doesn't work
* Added localization to styles
* Fix sprite changing
* Added the ability to paint canisters
* slight ui improvement
* Fix yamllinter errors
* Fix test
* The UI now remembers which tab was open
* Fix build (?)
* Rename
* Charges have been added to the spray painter
* Added a charge texture for the spray painter
* Now spray painter can paint decals
* Increased number of charges
* Spawning dummy objects has been replaced by PrototypeManager
* added a signature about the painting of the object
* fix
* Code commenting
* Fix upstream
* Update Content.Shared/SprayPainter/Components/SprayPainterAmmo.cs
Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
* review
* Now decals can only be painted if the corresponding tab in the menu is open.
* Fixed a bug with pipe and decal tabs not being remembered
* Update EntityStorageVisualizerSystem.cs
* record
* loc
* Cleanup
* Revert electrified visuals
* more cleanup, fix charges, del ammo4
* no empty file, remove meta component
* closet exceptions, storage visualizer fixes
* enable/disable decal through alt-verb
* Fix missed merge conflicts
* fix snap offset, button event handlers
* simpler order, fix snap loc string
* Remove PaintableViz.BaseRSI, no decal item, A-Z
* State-respecting UI, BUI updates, FTL fixes
* revert DecalPlacerWindow changes
* revert unwanted changes, cleanup function order
* Limit SprayPainterAmmo write access to AmmoSystem
* Remove PaintedSystem
* spray paint ammo lathe recipe, youtool listing
* category as a list, groups as subtabs
* Restore inhand copyright in meta.json
* empty spray painter, recipe produces an empty one
* allow alpha on spray painter decals
* add comments
* paintable wall lockers
* Restrict painting more objects
* Suggested event changes, event cleanup
* component comments, fix ammo inhands
* uncleanable decals, dirty styles on mapinit
* organize paintables, separate emergency/closet grp
* fix categories newline at EOF
* airlock group whitespace cleanup
* realphabetize
* Clean up EntityStorageViz merge conflict markers
* Apply requested changes
* Apply suggestions from sowelipililimute's review
Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
* betrayal most foul
* Remove members from EntityPaintedEvent
* No emerg. group, steelsec to secure, locker/closet
* Enable repainting the medical wall locker
* comments, no flags on PaintableVisuals
* Remove locked variants from closets/wall closets
* removable decals
* off value consistency
* can't paint away those bones
* fix precedence
* Remove AirlockDepartment, AirlockGroup protos
Both unused.
* whitelist consistency re: ammo component
* add standing emergency closet styles
* alphabetize the spray painter listings
---------
Co-authored-by: Ertanic <black.ikra.14@gmail.com>
Co-authored-by: Эдуард <36124833+Ertanic@users.noreply.github.com>
Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
* Optimise storage a quadrillion times
* How sweaty can we get
* Add fast angle checks
* Fix chunk indices
* Optimise the refresh method
Helps on client a lot as the clientside is suboptimal atm.
* Better name
* wawawewa
* Add single-angle path
* Okay FINE rider
* 1 warning in KudzuVisualizerSystem
* 2 warnings in ChameleonProjectorSystem
* 1 warning in MarkerSystem
* 2 warnings in ItemSystem
* 1 warning in GhostToggleSelfVisibility
* 1 warning in FoamVisualizerSystem
* 1 warning in ClickableTest
* 1 warning in ThrownItemVisualizerSystem
* 2 warnings in InfantSystem
* 1 warning in ChasmFallingVisualsSystem
* 1 warning in PotencyVisualsSystem
* 2 warnings in OrbitVisualsSystem
* 2 warnings in BeamSystem
* 1 warning in JitteringSystem
* 1 warning in CardboardBoxSystem
* 2 warnings in StationAiSystem
* 2 warnings in FirelockSystem
* 2 warnings in CargoSystem.Telepad
* 1 warning in StasisBedSystem
* 2 warnings in WeldableVisualizerSystem
* 2 warnings in DeliveryVisualizerSystem
* 1 warning in TimerTriggerVisualizerSystem
* 1 warning in StorageFillVisualizerSystem
* 2 warnings in RadiationCollectorSystem
* 2 warnings in BorgSwitchableTypeSystem
* 1 warning in TurnstileSystem
* 1 warning in SurveillanceCameraVisualsSystem
* 1 warning in BurnStateVisualizerSystem
* 2 warnings in CableVisualizerSystem
* 1 warning in JetpackSystem
* Cleanup warnings in DamageMarkerSystem
* Cleanup warnings in CuffableSystem
* Cleanup warnings in DeployableTurretSystem
* Cleanup warnings in StorageContainerVisualsSystem
* Cleanup warnings in ItemMapperSystem
* Cleanup warnings in ItemCounterSystem
* Cleanup warnings in RandomSpriteSystem
* Cleanup warnings in PowerCellSystem
* Cleanup warnings in ParticleAcceleratorPartVisualizerSystem
* Cleanup warnings in PaperVisualizerSystem
* Cleanup warnings in PoweredLightVisualizerSystem
* Cleanup warnings in LightBulbSystem
* Cleanup warnings in EmergencyLightSystem
* Cleanup warnings in DoorSystem
* Cleanup warnings in ClockSystem
* Cleanup warnings in BuckleSystem
* Cleanup warnings in JukeboxSystem
* Predict dumping
- This got soaped really fucking hard.
- Dumping is predicted, this required disposals to be predicte.d
- Disposals required mailing (because it's tightly coupled), and a smidge of other content systems.
- I also had to fix a compnetworkgenerator issue at the same time so it wouldn't mispredict.
* Fix a bunch of stuff
* nasty merge
* Some reviews
* Some more reviews while I stash
* Fix merge
* Fix merge
* Half of review
* Review
* re(h)f
* lizards
* feexes
* feex
* Remove storage hotbar GUI bandaid
With BUI deferred opens it also happened to fix this issue which is nice.
* Update Content.Client/Storage/StorageBoundUserInterface.cs
* Fix storage stars
* Fix some more storage bugs
- Fix positions not saving.
- Fix the 1-tick delay between parent and child storage UIs opening / closing.
- Fix BackButton being visible sometimes when it shouldn't be.
* milon is a furry
* Fix storage stars
* Fix some more storage bugs
- Fix positions not saving.
- Fix the 1-tick delay between parent and child storage UIs opening / closing.
- Fix BackButton being visible sometimes when it shouldn't be.
* milon is a furry
* 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
* Replace EntityCoordiates.InRange() with TransformSystem.InRange()
* nullspace
* I figured it out
* man I have no clue how client side sutff works
* please have mercy
* remove RadiationPulseOverlay changes
* nullspace
---------
Co-authored-by: plykiya <plykiya@protonmail.com>
* LockVisualizer
* Fix state
* Clean some code
* Make it component, fix tests fail
* Fix for StateUnlocked
Now it is possible to manually set the unlocked state and it will work!
* Optimize LockVisualizer, add check for unlocked state
* No todo I guess
* Grid Inventory
* oh boy we keep cracking on
* auto insertion is kinda working? gross, too!
* pieces and proper layouts
* fix the sprites
* mousing over grid pieces... finally
* dragging deez nuts all over the screen
* eek!
* dragging is 90% less horrendous
* auto-rotating
* flatten
* Rotation at last
* fix rotation and change keybind for removing items.
* rebinding and keybinding
* wow! look at that! configurable with a button! cool!
* dragging is a bit cooler, eh?
* hover insert, my beloved
* add some grids for storage, fix 1x1 storages, fix multiple inputs at once
* el navigation
* oh yeah some stuff i forgor
* more fixes and QOL stuff
* the griddening
* the last of it (yippee)
* sloth review :)