Commit Graph

529 Commits

Author SHA1 Message Date
Dev
25bfda0d56 Prevent increasing a skill to beyond the game limit of 5100 points 2023-12-11 11:43:30 +00:00
Dev
3acd07c034 Update cleanUpCompleteCraftsInProfile() to handle when a hideout craft is cancelled by player
value in kvp will be null
2023-12-10 22:31:55 +00:00
Dev
12cda6acb8 getWeaponRepairSkillPoints() has a chance to return 0 due to the possibility of a critical failure, only run addSkillPointsToPlayer() if value is above 0 2023-12-10 13:18:14 +00:00
Dev
bdd9a4cd9b Improve handling of Lightkeeper quests
When LK gives a time-gated quest it was being saved into the profile with a status of `Locked`, meaning it would stay there forever.

Post raid:
Check post-raid for locked quests and update them to be `AvailableAfter` + assign the unlock time to `availableAfter`
Check for quests flagged as  `AvailableAfter` and have a  `availableAfter` timestamp before current time, change to `AvailableForStart`
2023-12-10 13:09:54 +00:00
Dev
18dc76ec2c Improve handling of adding items to a bot container when the items type is incompatible with container 2023-12-08 16:27:34 +00:00
Dev
8a78e074a4 From testing, inspecting an item sets value to false, not true 2023-12-07 20:37:56 +00:00
Dev
c015882eac Improve handling of a mail profileChangeEvents property 2023-12-07 20:16:04 +00:00
Dev
7c2d93e87b Handle edge case when an item is missing a min/max stack size value 2023-12-07 20:07:46 +00:00
Dev
3f46cffcfe Rewrote getCategoriesFromOffers() to make use of filter.reduce instaed of a giant loop 2023-12-07 11:57:28 +00:00
Dev
ef9ecfd51d Change warning to debug message 2023-12-06 19:18:25 +00:00
Dev
7f995de5d1 Reworked how the flea market categories are calculated, instead of trying to be smart and add/remove in a cache as offers are created, calculate the categories when needed
Categories:
Are now much more accurate
take into account when player is below flea unlock level
Any with a (1) and no offers have been fixed
Take into account when offers are barters + barters are filtered out

Skip items with a type of `node` during flea assort generation
2023-12-05 20:41:43 +00:00
Dev
56366068e0 Remove redundant quest item check from fence assort generation as its already handled by itemHelper.isValidItem() 2023-12-05 15:00:23 +00:00
Dev
ef769cf0d7 Cleanup of var names and comments inside addForcedLoot()
Prevent duplicate loot locations with same Id being added to client response
2023-12-04 16:00:44 +00:00
Dev
221cd98316 Allow fixProfileBreakingInventoryItemIssues() to also fix clothing issues
Move `fixProfileBreakingInventoryItemIssues` into `ProfileFixerService`
2023-12-03 20:37:35 +00:00
Dev
fd40d47698 Handle when hideout crafts have null progress values, not just undefined 2023-12-03 14:50:01 +00:00
Dev
48de3139ae Fix bug where setting ragfairconfig.purchasesAreFoundInRaid to true would make trader purchases on flea Found in raid 2023-12-03 12:06:52 +00:00
DanW
1fdd1967e9 Change name of trainArrivalDelaySeconds to clarify its meaning (!171)
Changed the name of the new `trainArrivalDelaySeconds` setting to `trainArrivalDelayObservedSeconds` so it's more obvious that it doesn't actually control the train arrival time.

`trainArrivalDelayObservedSeconds` is my first choice for naming this setting, and `trainArrivalDelayThatYouDefinitelyShouldNotChangeSoDoNotEvenThinkAboutItSeconds` is my second choice.

Co-authored-by: dwesterwick <dwesterwick@yahoo.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/171
Co-authored-by: DanW <danw@noreply.dev.sp-tarkov.com>
Co-committed-by: DanW <danw@noreply.dev.sp-tarkov.com>
2023-12-02 19:41:27 +00:00
Dev
f5e5136603 Fix big that casued bots to spawn with only 1 magazine at most 2023-12-02 19:25:46 +00:00
Dev
12cb176a42 Potential fix for failed/repeatable quests keeping their subtask completed status 2023-12-02 00:10:25 +00:00
Dev
19f6bbaed4 improve weightedRandom() handling of bad data input
update allowed param types, should only be arrays
2023-12-01 17:22:24 +00:00
Dev
52b91cae87 Remove useless length check 2023-12-01 16:45:31 +00:00
Dev
e1790ff7a5 Prevent getWeightedValue() function from null error if items and weights do not match 2023-12-01 14:15:11 +00:00
Dev
2a3839f6de Move trainArrivalDelaySeconds value into config 2023-12-01 09:03:14 +00:00
DanW
1994832281 Improved check for disabling train extracts in Scav raids (!170)
Made the following changes for determining if train extracts should be disabled in Scav raids:
* When determining at what time the train will leave, include the extraction time and the delay between the train extract activating and it becoming available to board
* Fixed the variable used for determining if the extract should be disabled
* Ensure `MinTime` and `MaxTime` for extracts are never negative

Also, trains are hard, and my brain hurts.

Co-authored-by: dwesterwick <dwesterwick@yahoo.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/170
Co-authored-by: DanW <danw@noreply.dev.sp-tarkov.com>
Co-committed-by: DanW <danw@noreply.dev.sp-tarkov.com>
2023-12-01 08:37:52 +00:00
Dev
8ddad763be Cleanup of handleScavCase() 2023-11-30 13:44:43 +00:00
Dev
3d01fe6211 Move TraderData object into ItemEventRouterBase where it will cause less confusion 2023-11-30 10:30:13 +00:00
Dev
b52ea4f1fa Only set start time in resetQuestState() when new status is started 2023-11-30 10:13:45 +00:00
Dev
9ed5869fa6 Reduce calls to this.timeUtil.getTimestamp() inside getQuestReadyForProfile()
Set `startTime` property inside `resetQuestState()`
2023-11-30 10:09:23 +00:00
Dev
67f7eb59c5 Improve handling of profileChanges, dont overwrite existing data when adding new objects 2023-11-30 10:02:00 +00:00
Dev
288b7cf654 Further cleanup of acceptQuest 2023-11-30 09:36:28 +00:00
Dev
a941a22305 Attempt to resolve issue where failed quests that are restarted retain their previous completed statuses until client restart
New function to purge completed condtions + remove status timers beyond what a newly started quest would have + add updated quest status object to `questsStatus` property on profile changes response object
2023-11-29 23:36:31 +00:00
Dev
bfee07d5fe Fix item tag regex replacing non-english characters 2023-11-29 22:30:23 +00:00
Dev
000e48ca4c Allow wave adjustment to be controlled via config param
Prevent bot wave min/max from falling  below 0
2023-11-29 17:18:45 +00:00
Dev
dde5c7e8af Move raid adjustment code into own service
Rename various parts of sytem to better match what it does
2023-11-29 16:52:13 +00:00
Dev
5d0d9e2cd9 Fix issue where OriginalSurvivalTimeSeconds would be set to the raid time in minutes, not the survival time in seconds 2023-11-29 14:22:48 +00:00
Dev
3945de8b1f Fix incorrect NewSurviveTimeSeconds value being sent to client
Thanks to DanW
2023-11-29 13:32:55 +00:00
Dev
a1d6596f8d Fix multiple typos 2023-11-29 11:36:20 +00:00
Dev
c801dba0b7 Fix some weapons not having their chamber loaded with a cartridge during weapon generation
weapons:
weapon_izhmeh_mr43_sawed_off_12g
weapon_izhmash_mp18_multi

`addCartridgeToChamber` assumed the only id a chamber could have was `patron_in_weapon` this is wrong, it can also have `patron_in_weapon_000` and  `patron_in_weapon_001`
it also assumed weapons only have one chamber
Some weapons can have multiple chambers
Some weapons can have 1 chamber but have the id `patron_in_weapon_000` not `patron_in_weapon`
2023-11-29 11:35:34 +00:00
Dev
9c2725e2fe Add system that adjusts the loot multipliers for a scav raid based on the percentage of the raid time remaining
Controlled per location

Most maps are capped at 40/50% min

Added multiple config proeprties to configure how system works
Added ability to remove all AppContext values by key

During `getRaidTime()` loot % modifier values are stored in app context,
Then, during `generate()` those values are retreived and applied if found
After loot generation values are reset to their original value
2023-11-28 12:42:58 +00:00
Dev
f9cf3242c8 Add new core config entry fixProfileBreakingInventoryItemIssues, defaults to off
Attempts to fix common issues that happen to profile inventory items:
Duplicate items with the same _id value
Item Tag names with non alphanumeric characters
StackObjectsCount null values
2023-11-28 11:06:08 +00:00
Dev
382cf4c785 Update getMessageItemContents() to handle when its items.data property is null 2023-11-27 18:24:02 +00:00
Dev
cc488477fb Logging improvements 2023-11-27 17:01:38 +00:00
Dev
58e6cc8cd7 Remove message sending code from acceptRepeatableQuest() dailies in live do not send messages upon accepting them 2023-11-27 16:35:44 +00:00
Dev
7a798d2b60 Reworked singleplayer/settings/getRaidTime endpoint
Handles adjustments to train extract appearance times
Handles time needed to be alive in a raid to get a Success raid status
Added extra reduction percent weight: 30%
2023-11-27 15:02:35 +00:00
Dev
14e917823c Nullguard getMessageItemContents() when checking count of reward items 2023-11-26 22:53:09 +00:00
Dev
130f120fda Comment change 2023-11-26 22:35:26 +00:00
Dev
8d32cf2d03 Store player scav brain data in config and pass to client when requested 2023-11-26 21:33:47 +00:00
Dev
ac459335c0 Add new endpoint to calcualte a reduced raid time for scavs and send the maps base.EscapeTimeLimit value to client for PMC raids 2023-11-26 21:11:03 +00:00
Dev
1350fdb78b Find quest in player quest array using .find instead of .filter 2023-11-25 13:28:52 +00:00
Dev
64722bac17 Add quit exit for gameStart when resetting profile 2023-11-25 13:26:11 +00:00