Commit Graph

378 Commits

Author SHA1 Message Date
Dev
87229cc58d Make killing a traitor scav give positive fence rep 2024-02-16 15:11:09 +00:00
Kaeno
cfe321cf4b Change durability calculation to match live better 2024-02-16 12:56:39 +00:00
DrakiaXYZ
d77c930396 Fix bitcoin desync between client/server while offline (!225)
The server expects that the total "Progress" when a bitcoin is complete to be the "ProductionTime" value (145000 by default). However the server was using a modified target value, while only adding the actual time change to the Progress.
This results in a drift over time between the client/server while the server is stopped, as the client gets an incorrect value on startup.

If we instead scale the addition to Progress based on the adjusted craft time, and target the base productionTime for completion, we can get a much more accurate progress while offline that matches the client

I used the profile from this ticket for testing: https://dev.sp-tarkov.com/SPT-AKI/Issues/issues/496

The user has both an upgrade and bitcoin going at the same time, so they should progress at the same rate. This is what the code was previously resulting in:
![image](/attachments/fe428a3b-d271-40e1-a3f6-08ef936224b6)

While the server was shut down for 50 minutes (As noted by the upgrade), only 36 minutes was deducted from the bitcoin craft.

This is the result of that same profile after these changes were made:
![image](/attachments/d2ce44e6-1a0e-4991-aa51-3eb340c22ca5)

You can see that ~2 hours 25 minutes was deducted from both the upgrade, as well as the bitcoin craft timer. There is still a slight discrepancy, but in a total bitcoin run it should be minimal

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/225
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-02-15 08:57:26 +00:00
Dev
99df88ec24 Clean up passing IItemEventRouterResponse around and then returning it in same function 2024-02-14 14:59:43 +00:00
Dev
22d158f8a4 Remove second call to this.saveServer.getProfiles() + only run offer processing for profiles that have the necessary level to create flea offers 2024-02-14 14:01:27 +00:00
Dev
882d1b6ee5 FIx equipment preset flea seach not showing any offers 2024-02-14 11:58:17 +00:00
Dev
d5217928c2 Add 40% chance armors with plates do not have them whem listed on flea - mimics live behaviour 2024-02-14 11:12:20 +00:00
Dev
2e3f624131 Update PMC encyclopedia post-raid
Update scav encyclopedia during generation to be pmc encyclopedia

Remove redundant return statements from function
2024-02-13 12:20:30 +00:00
Dev
c4520ddbe9 Protect again null quest object when trying to send a message during quest failure 2024-02-12 21:23:20 +00:00
Dev
456220767e Do not reduce scav rep after killing a traitor scav 2024-02-12 17:08:21 +00:00
Kaeno
28ab029ef3 Fixed ammo boxes again. location starts at highest count instead of lowest 2024-02-11 17:31:52 +00:00
Dev
9e70b1135c Reverse ammo stacks in ammo boxes to fix issue with opening ammo boxes in raid - Thanks to Kaeno for investigation + fix 2024-02-11 15:15:21 +00:00
Dev
bba30d616b Fix durability filtering on flea not working for helmets / armors
Updated  `getItemQualityModifierForOfferItems()` to return root items quality modifer when its a weapon
Fixed `getItemQualityModifierForOfferItems()` assuming quality started at 1
2024-02-11 14:59:25 +00:00
Dev
da6244e1ac Improvements to calculateFenceStandingChangeFromKillsAsScav() - should properly handle additional rep loss when over 6 fence rep 2024-02-11 13:03:38 +00:00
Dev
9819ac3737 Mimic live behaviour for ammo box locarion values 2024-02-11 12:12:27 +00:00
Dev
b5639f481f More logging 2024-02-11 10:51:00 +00:00
Dev
1858fe5bd5 Fix pockets being lost on death 2024-02-10 23:28:36 +00:00
Dev
d436534ea0 Fixed flea quality filters not applying to weapons 2024-02-10 15:06:20 +00:00
Dev
b34edb0d3b Adjustments to profile saving logging logic
Bundle up profile save time and display in one line + do not log to file
Don't log when each profile is saved
Do not log to file how much fuel is left in generator
2024-02-10 10:07:40 +00:00
Dev
fbd371b5c7 Fix code that would detete majority of quest progress from profile 2024-02-09 23:18:23 +00:00
Dev
4b9f2ddbd1 Fixed 2 issues with collecting bitcoins;
Only check if progress was only `great than` craft time, not `great than or equal to`
Didn't take into account developer accounts have reduce craft timers
2024-02-09 22:01:19 +00:00
Dev
1cfc7f2a16 Fixed issue with server not properly handling item rotations when trying to fit an item into a container
Added small optimisations to skip full rows when looking for a free slot to put item in
Added small optimisation to skip looking for a free slot when entire container is full
Fixed error messages not properly being passed back up chain
2024-02-09 17:13:19 +00:00
Dev
8b6de1a7ea Rename splitStackIntoSmallerStacks to splitStackIntoSmallerChildStacks 2024-02-09 15:57:54 +00:00
Dev
8e80fa6350 Removed unused function hydrateAmmoBoxWithAmmo() 2024-02-09 15:48:57 +00:00
Dev
4a8c12dc59 Improve canPlaceItemInInventory() logging
Increase attempts to fit into container to 3 from 2
2024-02-09 15:18:49 +00:00
Dev
5a8317b8a1 Correctly pass item rotation when calling fillContainerMapWithItem()
Removed unused legacy function `placeItemInInventoryLegacy()`
Dont return stash layout as result in `fillContainerMapWithItem()`

Added small optimisation to `fillContainerMapWithItem()`, check if all slots of failled before trying to fit item
2024-02-09 15:13:49 +00:00
Refringe
115f217c02
Refactor Insurance Processing for Gear Lost in Raids
Notable coding Changes:
- Added `getRootItemParentID` method in `InsuranceService` to standardize the determination of the root insurance container.
- Added `IInsuranceEquipmentPkg` model for structuring insurance packages, a type used to store insurance item data before it's saved in the profile.
- Added `HashUtil` in `InsuranceController` and `InsuranceService` for generating an ID for the root insurance container in the case that the root ID cannot be found.
- Updated and normalized item map generation and usage across `InsuranceService` and `InsuranceController`.
- Updated `ItemHelper` with new methods `adoptOrphanedItems` and `generateItemsMap`, facilitating better management of item relationships and efficient item look-ups.
- Updated `InsuranceController.findItemsToDelete` and related methods to use the new `rootItemParentID` parameter to ensure that all root level items share the same parent ID.
- Updated logic in `InsuranceService` for creating insurance packages and handling orphaned items.

Uh-huh, but what would you say you do here?
- Resolves an issue that arose when `lostondeath.json` equipment configuration options were set to `false`. On death, the equipment's children items would be sent back to the player through insurance, duplicating them.
- Resolves an issue that prevented items from appearing in an insurance return even though they passed an insurance roll.
- Improved debug logging.

Remaining Oopses:
- We do not have data on items that were dropped in a raid. This means we have to pull item data from the profile at the start of the raid to return to the player in insurance. Because of this, the item positioning may differ from the position the item was in when the player died. Apart from removing all positioning, this is the best we can do.

Resolves #425
2024-02-08 15:57:04 -05:00
Dev
c097914e45 Add system to ignore armor plate slots when removing plates not suitable for flea 2024-02-08 16:53:14 +00:00
Dev
7d97bc4945 Correctly generate ammo boxes for dynamic/static/bot loot with one stack of cartridges. It seems the 0.14 client update now handles ammo boxes having a single stack and properly splits the ammo inside it 2024-02-08 16:01:38 +00:00
Dev
a06e0d1641 Improve flea handling of quality filtering for offers with child objects like armors/plates/weapons 2024-02-08 11:45:12 +00:00
Dev
0759afb84f Update daily system to correctly reward just weapons when traderWhitelistDetails.weaponRewardChancePercent passes its check instead of weapons or armor 2024-02-07 20:32:24 +00:00
Dev
424e438732 Improve how daily quests calculate the price of items when choosing a reward that's inside its price boundaries
Items with a default preset inside globals.json now use all items inside the preset for price calculation
2024-02-07 20:15:44 +00:00
Dev
57855fd316 Add whitelist system to magazine filling function fillMagazineWithRandomCartridge(). Fixes issues with kedr being filled with incompatible ammo 2024-02-07 14:45:43 +00:00
Azrael1123
7a4b27bbe1 Better fix for SPT-AKI/Issues#417 (!215)
[The wiki specifies](https://escapefromtarkov.fandom.com/wiki/Scavs#Scav_karma) that, between 6 and 8, Fence rep is reset to 6 before penalties are applied (i.e. killing someone at 7.5 rep leaves you at 5.9), but the current fix just subtracts a flat 1 reputation instead (i.e. a kill at 7.5 leaves you at 6.4)

this should change that.

Co-authored-by: Azrael <Azrael@noneofyourbusiness.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/215
Co-authored-by: Azrael1123 <azrael1123@noreply.dev.sp-tarkov.com>
Co-committed-by: Azrael1123 <azrael1123@noreply.dev.sp-tarkov.com>
2024-02-07 08:18:18 +00:00
Refringe
42dabc057b
Improved replaceIDs Method in ItemHelper
- Implemented deep cloning of input Items to prevent mutation.
- Reordered parameters: Items (required) now precede PMC data (optional).
- Updated method calls to bring them inline with these changes.
2024-02-06 18:39:06 -05:00
Refringe
c29482394b
(More) Simple Parameter Reassignment Issues
Addresses some of the simple linting errors regarding the reassignment of function parameters.
2024-02-06 18:35:11 -05:00
Dev
1101927768 Improve fence price calculation code. Prices now take into account removed item mods + mod durability 2024-02-06 20:44:40 +00:00
Dev
b40e41bd3d Improve sellChance logic
Two changes:

Calcualte the quality of an item and its mods, not just root item
Calcualte the average price of an offer using item + mods, not just root item
2024-02-06 15:52:22 +00:00
Dev
5f873e73b8 Move handbook override code into HandbookHelper.hydrate() - changes now apply to ragfair 2024-02-06 12:52:56 +00:00
Dev
62f51be3aa Improve readability of valid item check 2024-02-06 12:18:41 +00:00
Dev
7bc9fdbe95 Add system to override handbook price, add christmas gift items small/med/large 2024-02-06 12:16:26 +00:00
Dev
c6de12e6f8 Rename variables/comments for clarity 2024-02-06 09:49:51 +00:00
Refringe
3a2b24b9b8
Simple Parameter Reassignment Issues
Addresses some of the more simple linting errors regarding the reassignment of function parameters.
2024-02-05 19:03:26 -05:00
Refringe
34121182a1
Biome Linting Issues
Fixed some instances of:
- Unordered imports
- Reassigning function parameters
- Modifying values in assignment/return statements
- Array.forEach being used instead of for...of
- Simplified control logic
2024-02-05 19:03:26 -05:00
Dev
d36593ca57 Rework fence service to handle armor/weapons separately,
made config work with a weapon/equipment min/max value
Improve price filtering system to work with weapons/equipment
2024-02-05 19:52:46 +00:00
Dev
a04a05996d Adjust calculateFenceStandingChangeFromKills() to take into account rep loss when fence rep between 6 and 8 or rep > 8 2024-02-05 14:44:31 +00:00
Dev
bf5f3316b1 Rename cloned variables to help with readability 2024-02-05 14:43:46 +00:00
Dev
183e71370a Reworked buyItem() to use addItemsToStash() to ensure it performs a space check prior to adding any items to stash 2024-02-05 14:07:21 +00:00
Dev
2f673d12b9 Improve weapon/equipment item purchase filtering 2024-02-05 11:38:04 +00:00
Dev
946172d20c Add additional helmet soft inserts to getSoftInsertSlotIds() 2024-02-05 09:02:58 +00:00