* 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>
* Stores owned by mind instead of body
* Requested changes, traitor uplink fixed
* Store, listings fixed and now use Entity<MindComponent>
* Removed duplicate code
* test change
* test change 2
* back to mind entityuid
* MilonPL requested minor changes
* ScarKy0 requested changes
* feat: #26107 uplink discounts for traitors and nukies
* refactor: #26107 extracted discount label from price of StoreListingControl
* refactor: minor renaming
* refactor: parametrized adding discounts to uplink store
* fix: #26107 prevent exception on empty discountOptions
* feat: uplink now have 'Discounted' category which contains all discounted items on this session.
* after merge fixups
* rename discount categories according to common sense
* refactor: DiscountOptions is now optional (nullable) on ListingData
* add nullability check ignore for already checked listingData.DiscountOptions
* fix after merge store menu ui
* remove unused using
* final fix after merge conflicts
* [refactor]: #26107 fix variables naming in UplinkSystem
* fix: #26107 fix after merge
* refactor: #26107 now supports discountDownUntil on ListingItem, instead of % of discount
* feat: #26107 support multiple currency discount in store on side of discount message label
* refactor: #26107 extracted discounts initialization to separate system. StoreDiscountData are spread as array and not list now
* refactor: #26107 move more code from storesystem to StoreDiscountComponent
* refactor: #26107 separated StoreSystem and StoreDiscountSystem using events
* fix: #26107 placed not-nullable variable initialization in ListingData for tests
* refactor: #26107 minor renaming, xml-docs
* fix: #26107 changed most of discounts to be down to half price for balance purposes
* ids used in with discounts are now ProtoIds, dicountCategories are now prototypes, code with weights simplified
* decoupled storesystem and store discount system
* xml-docs
* refactor: #26107 xml-doc for StoreDiscountSystem
* is now a thing (tmp)
* fix: compilation errors + StoreDiscountData.DiscountCategoryId
* refactor: rename ListingDataWithCostModifiers, fix all cost related code, enpittyfy performance, uglify uplink_catalog
* refactor: removed unused code, more StoreDiscountSystem docs, simplify code
* refactor: moved discount category logic to respective system, now creating ListingData c-tor clones all mutable fields as expected
* refactor: rename back (its not prototype)
* refactor: move ListingItemsInitializingEvent to file with handling logic
* refactor: comments for StoreBuyFinishedEvent handling, more logging
* refactor: moved StoreInitializedEvent, xml-doc
* refactor: simplify StoreDiscountSystem code (reduce nesting) + xml-doc
* refactor: restore old listing data cost field name
* refactor: fix linter in uplink_catalog.yml
* refactor: xml-doc for ListingDataWithCostModifiers
* refactor: limit usage of ListingData in favour of ListingDataWithCostModifiers
* refactor: purged linq, removed custom datafield names, minor cleanup
* refactor: removed double-allocation on getting available listings
* refactor: StoreSystem.OnBuyRequest now uses component.FullListingsCatalog as reference point (as it was in original code)
* fix: minor discount categories on uplink items changes following design overview
* refactor: StoreBuyListingMessage now uses protoId and not whole object
* refactor: store refund and discount integration test, RefreshAllListings now translates previous cost modifiers to refreshed list, if state previous to refresh had any listing items
---------
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
* uplink ringtone code + minor cleanup
* show uplink code in character menu
* no log
* rgbee
* no red
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* some work
* equip: done
unequip: todo
* unequipping done & refactored events
* workin
* movin
* reee namespaces
* stun
* mobstate
* fixes
* some work on events
* removes serverside itemcomp & misc fixes
* work
* smol merge fix
* ports template to prototype & finishes ui
* moves relay & adds containerenumerator
* actions & cuffs
* my god what is actioncode
* more fixes
* im loosing my grasp on reality
* more fixes
* more work
* explosions
* yes
* more work
* more fixes
* merge master & misc fixed because i forgot to commit before merging master
* more fixes
* fixes
* moar
* more work
* moar fixes
* suffixmap
* more work on client
* motivation low
* no. no containers
* mirroring client to server
* fixes
* move serverinvcomp
* serverinventorycomponent is dead
* gaming
* only strippable & ai left...
* only ai and richtext left
* fixes ai
* fixes
* fixes sprite layers
* more fixes
* resolves optional
* yes
* stable™️
* fixes
* moar fixes
* moar
* fix some tests
* lmao
* no comment
* good to merge™️
* fixes build but for real
* adresses some reviews
* adresses some more reviews
* nullables, yo
* fixes lobbyscreen
* timid refactor to differentiate actor & target
* adresses more reviews
* more
* my god what a mess
* removed the rest of duplicates
* removed duplicate slotflags and renamed shoes to feet
* removes another unused one
* yes
* fixes lobby & makes tryunequip return unequipped item
* fixes
* some funny renames
* fixes
* misc improvements to attemptevents
* fixes
* merge fixes
Co-authored-by: Paul Ritter <ritter.paul1@gmail.com>
* Remove IHandsComponent and ISharedHandsComponent
* Copy the documentation from the interfaces
* Revert "Copy the documentation from the interfaces"
This reverts commit 7638a2d4817743d487c7b255ba3e56add77dca86.
* Perform a minute amount of cleanup
* Uplink menu has icons now
* Add item icons
* Add few descriptions
* Better withdraw window
* Finished with withdraw window
* Refactored withdraw ui and fix some bugs
* Basic withdraw
* Quick fixes
* Removed uplink listing for TCs
* Move slider to separate control
* Final touches
* A bit more
* Not again...
* Fixed names
* Address review
* Fixed robust
* Non necessary check
* testing decription textlabel
* Move uplink listing to a new menu
* Add search bar
* Added description
* Added radio uplink
* Added preset uplinks
* Minor fix
* Fixed comma
* Moved pen slot to separate component
* Moved it all to more generic item slot class
* Add sounds
* Item slots now supports many slots
* Some clean-up
* Refactored slots a bit
* Moving ID card out
* Moving pda to system
* Moving PDA owner to ECS
* Moved PDA flashlight to separate component
* Toggle lights work through events
* Fixing UI
* Moving uplink to separate component
* Continue moving uplink to separate component
* More cleaning
* Removing pda shared
* Nuked shared pda component
* Fixed flashlight
* Pen slot now showed in UI
* Light toggle now shows correctly in UI
* Small refactoring of item slots
* Added contained entity
* Fixed tests
* Finished with PDA
* Moving PDA uplink to separate window
* Adding-removing uplink should show new button
* Working on a better debug
* Debug command to add uplink
* Uplink send state to UI
* Almost working UI
* Uplink correcty updates when you buy-sell items
* Ups
* Moved localization to separate file
* Minor fixes
* Removed item slots methods events
* Removed PDA owner name
* Removed one uplink event
* Deleted all uplink events
* Removed flashlight events
* Update Content.Shared/Traitor/Uplink/UplinkVisuals.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Server/Containers/ItemSlot/ItemSlotsSystem.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Server/Containers/ItemSlot/ItemSlotsSystem.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Update Content.Server/GameTicking/Presets/PresetTraitorDeathMatch.cs
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
* Item slots system review
* Flashlight review
* PDA to XAML
* Move UplinkMenu to seperate class, fix WeightedColors methods
* Move UI to XAML
* Moved events to entity id
* Address review
* Removed uplink extensions
* Minor fix
* Moved item slots to shared
* My bad Robust...
* Fixed pda sound
* Fixed pda tests
* Fixed pda test again
Co-authored-by: Alexander Evgrashin <evgrashin.adl@gmail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Visne <vincefvanwijk@gmail.com>