Commit Graph

430 Commits

Author SHA1 Message Date
Chomp 2aebb3643b Fixed incorrect logic 2025-10-29 23:19:37 +00:00
Chomp 15fbe958c9 Don't apply hostility changes to maps without zombies during halloween
`ReplaceBotHostiltiy` has optional map whitelist param
2025-10-29 17:01:57 +00:00
Chomp 88037291d9 Change BTR skin to tarcola during Christmas event 2025-10-27 13:32:46 +00:00
DrakiaXYZ 60acb23d72 Move cooldown check inside the lock for better thread safety (#663)
Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Co-authored-by: Chomp <27521899+chompDev@users.noreply.github.com>
2025-10-26 17:27:30 +00:00
DrakiaXYZ 4e73778920 Fix multiple backups running at once
- Backups now have a cooldown, default of 30 seconds
- Backups now have a lock, in the event of a TOC/TOU race condition, the lock will stop duplicate backups
2025-10-26 10:17:26 -07:00
DrakiaXYZ d375879a3a Fix post-raid health (#661)
* Fix post-raid health
- Re-add death penalty for limbs
- Correctly set body part HP to 1 for cursed death only
- Use the server profile body part max HP for calculating penalties
- Never modify the body part max HP on the profile
- Remove ResetMaxLimbHp as it's unnecessary if we never update max HP elsewhere

* Formatting

* Remove unnecessary null coalescing

* Stupid formatting

---------

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
2025-10-26 08:47:40 +00:00
DrakiaXYZ a524dc47dd Merge pull request #658 from DrakiaXYZ/fix-savecontention
Fix potential file access contention in SaveProfileAsync
2025-10-25 21:43:14 +00:00
DrakiaXYZ 47089afdd1 Further attempt to resolve profile corruption issues (#650)
* Further attempt to resolve profile corruption issues
- FileUtil now uses File.Replace and does a sync flush
- Add restore capabilities to BackupService
- If loading a profile fails, attempt to restore from the most recent backup
- Trigger a backup creation on raid start, raid end, and game close
- Load profiles before starting the backupService to avoid backing up corrupt profiles

* - Switch async calls to .GetAwaiter().GetResult() for better exception handling

---------

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
2025-10-23 07:49:24 +02:00
DrakiaXYZ aa8911f5aa Add sanity checks to CustomItemService's AddToLocaleDbs method 2025-10-20 12:17:50 -07:00
Chomp 94d2a8d233 Lock existence check to prevent bots being generated without loot 2025-10-20 17:34:06 +01:00
Cj 37c900c8aa Always overwrite locales instead of reporting an error if the key exists 2025-10-19 16:40:45 -04:00
Cj fd47c47c3e Remove potential for deadlock in ProfileDataService 2025-10-19 01:13:46 -04:00
Cj 80b49eb077 Write profile data json indented 2025-10-19 00:28:45 -04:00
Cj 4f73860e66 Fix ProfileDataService adding the string to the cache instead of the object 2025-10-19 00:09:27 -04:00
Chomp 4ce5512d7d Added BotConfig.ReplaceScavWith to allow adjustment of scavs into other bot types 2025-10-17 10:53:25 +01:00
Chomp 2604db86e6 Fixed nullref error in FixProfileBreakingInventoryItemIssues due to BSG typo 2025-10-17 09:05:09 +01:00
DrakiaXYZ a98a5ce8a1 Discard duplicate item locale entry instead of throwing an exception 2025-10-16 18:19:08 -07:00
Chomp e9a6b5953d Flagged BotLocationModifier.AdditionalHostilitySettings as nullable 2025-10-16 21:09:34 +01:00
DrakiaXYZ 2d0713d94e Offset PMC spawns to start of raid when using a simulated raid start 2025-10-15 18:15:28 -07:00
Chomp a7798b1b27 Added comments to GetOffersOfType 2025-10-12 09:43:45 +01:00
Chomp a0937c2d33 Fixed gift code messages not working correctly 2025-10-10 17:43:15 +01:00
Chomp 48b41add00 Added dummy head to PMCs during Halloween event
Made `FIxDogtag` method protected
2025-10-10 10:54:13 +01:00
Chomp 310e8eee20 Fixed dogtag case not accepting all dogtag TPLs via FixDogtagCaseNotAcceptingAllDogtags call on server start 2025-10-10 09:41:32 +01:00
DrakiaXYZ b15d1e3034 Fix traders salessum not increasing on purchase
The chance of a PMC transaction ID overlapping with a trader is slim to none, but the request type can be multiple this for traders. Skip checking type, and validate just using the transaction ID
2025-10-08 16:29:20 -07:00
Chomp a5d98c1f61 Added offerListingTaxMultiplier to ragfair config and wired up. Defaults to off 2025-10-08 11:40:23 +01:00
Chomp 99891858cb Moved craft ids out of UnlockHideoutLootCrateCrafts into config 2025-10-04 13:32:48 +01:00
Chomp 0acb3cb9cc Moved shotgun tpls from FixShotgunDispersions to config 2025-10-04 13:22:06 +01:00
Chomp 6311f7a355 Renamed variable to improved clarity 2025-10-03 20:33:29 +01:00
Chomp 6e2286ca5b Added system to allow adjustment of static spawn weights via config
reduced `Power substation utility cabin key` on customs to 60% of original weight
2025-10-03 20:28:39 +01:00
Chomp cc745f4c46 Corrected ProcessBuyTradeRequestData transactionId to be Mongoid, updated associated code
Also moved TransactionId in `InsuranceRequestData` to be MongoId, updated associated code
2025-09-30 22:38:42 +01:00
Chomp d68a51f031 Fixed buying PMC offers from flea error #597 2025-09-30 22:05:41 +01:00
Chomp 836112dc50 Weather refactor (#596)
* First pass at Weather generation refactor

* Moved generation logic around

* Added seasonal variability support

* Expanded weather generation to use DI system and allow easier modding

* Updated weather weight values

Converted records into classes

* Added fallback when generator isn't found

* Fixed colliding lambda

Added method comments

* Cleanup of weather code

* Adjusted `weatherPresetWeight` values

---------

Co-authored-by: Chomp <dev@dev.sp-tarkov.com>
2025-09-30 12:23:46 +00:00
Cj 36b247d92e Move HideoutAreas to the Models.Enums.Hideout namespace 2025-09-29 18:14:59 -04:00
Chomp a872459e60 Fixed typo in GenerateWeather 2025-09-29 13:37:25 +01:00
Chomp 5efe5e8c4e Deconstructed kvp values inside RemoveExistingPmcWaves 2025-09-29 09:43:27 +01:00
Chomp 79e023392b Implemented CoreBot type
Enabled 'rudans' patrol flag in Christmas event
2025-09-29 09:33:16 +01:00
Chomp ecc0ba8406 Cleanup of warnings 2025-09-26 13:38:47 +01:00
Chomp 55b819e1ec Removed GetItemRarityMultiplier, the values in items.json are garbage and should not be used
Added system to add multiplier to items that are used to craft in the hideout
2025-09-18 23:35:27 +01:00
Archangel f3470aac59 Remove redundant checks for MongoId 2025-09-18 19:57:34 +02:00
Chomp f7e8aa9e77 Added GetItemRarityMultiplier 2025-09-18 16:31:35 +01:00
Chomp fb175d4341 Merge branch 'develop' of https://github.com/sp-tarkov/server-csharp into develop 2025-09-18 14:03:39 +01:00
Chomp e8897886d2 Added an item type price multiplier override to GetFleaBasePriceMultiplier
All keycards now use a `2.5` multiplier, not just the red keycard
2025-09-18 14:03:28 +01:00
Archangel 6a4efe9e53 Set correct type on global LocationInfection 2025-09-17 20:47:24 +02:00
Chomp 1ef9ebd88a Added system to generate item flea base prices based on handbook value 2025-09-16 22:24:35 +01:00
Chomp 3fa72b5064 Code lint 2025-09-14 16:40:05 +01:00
Chomp 7bbb76d755 Removed unused import 2025-09-14 16:03:06 +01:00
Chomp d0a24db828 Removed recursion from GeneratePool
Reduced use of locks
2025-09-14 15:44:04 +01:00
Chomp 60271229f9 Performance/locking/name improvements to GeneratePool 2025-09-14 15:07:20 +01:00
Cj 11ae50875a Custom quest service (#589)
* Initial work

* add todo

* Fix up errors

* More work on CustomQuestService

* Fix mistake

* Remove cloning work, its cancer

* clean-up

* Use TryAdd as a guard

* localize errors

* remove unused exception

* fix using

* fix not passing logging params
2025-09-14 09:20:25 +01:00
Cj 3596a12a19 Rename parameter for clarity 2025-09-10 12:04:54 -04:00