Made use of primary constructor
Made `GetModsForWeaponSlot` access dictionary via`TryGet`
Made `GetCompatibleModsForWeaponSlot` access dictionary via`TryGet`
Removed INT cast when returning value from `FromRUB`
Renamed `HydrateLookup` and made protected
Made `LookupCollection` protected and moved inside `HandbookHelper
Decoupled `IsValidRewardItem` from repeatable config
Made `IsValidRewardItem` public
Added `RequiredItemTypeBlacklist` to Completion config, Blacklisted ammo
More nullguards
Made `RagfairRequiredItemService` a singleton
Made `RagfairRequiredItemService ` store offerIds instead of offer objects, reducing memory footprint
Reworked `GetOffersThatRequireItem` to work with `RagfairRequiredItemService` changes
Moved `GenerateDynamicOffers` to run after garbage colelction, this means GC will work on memory prior to new offers being added but after stale offers are removed
Made `PaymentHelper` a singleton + Store currency tpls in a hashset instead of list
Comment improvements
This will break mods and their examples!
In addition:
- Removes being able to add custom locales, modders should do .AddTransformer on the LazyLoaded value in the database!
- Fixes up PostDBLoad methods trying to use .Value which won't work as this data will be unloaded after 30 seconds
- Move all other SPT code to use .AddTransformer
* Rename `Assets` to `SPT_Data`
* Added GZ 20+ variant to repeatable quest system #395
* Repeatable code cleanup
* Removed PMC level check for repeatable Quest pool generation #395
they will always generate for both GZ variants
* Rename `Assets` to `SPT_Data`
---------
Co-authored-by: Chomp <dev@dev.sp-tarkov.com>
Made forced loot aware of weapon and armors. Now adds their presets instead.
Made `GetLootThatFitsContainer` aware of items inside container and will fail when container is full
Fixed issue where split stacks were not added correctly to airdrops
Comment improvements