Commit Graph

597 Commits

Author SHA1 Message Date
Dev
f5b3377d12 Point local debug config to correct command 2023-10-14 10:10:10 +01:00
Refringe
7948e3473c Refactor of InsuranceController & New ItemHelper Methods (!151)
This commit is my second go-around at refactoring the `InsuranceController`, attempting to improving the code's modularity, maintainability, and efficiency while squashing a few bugs along the way.

1. **InsuranceController.ts**
    - Removed `ITemplateItem` import, as it is no longer used.
    - Introduced the `adoptOrphanedItems` method to manage orphaned items in the insurance list.
        - Since "normal" items are individually rolled for deletion, and can be nested within one another, there are situations where a parent item is deleted, leaving its children orphaned. This method moves those orphaned children from their missing parent into the root of the insurance container.
    - Overhauled `findItemsToDelete` method to improve its efficiency and readability:
        - Divided the original monolithic method into smaller, specialized methods like `populateItemsMap`, `populateParentAttachmentsMap`, `processRegularItems`, and `processAttachments`.
        - Changed the return type to `Set<string>` for better performance.
        - Introduced `EnrichedItem` interface (a simple extension of the `Item` interface) to add additional item data, like `name` and `maxPrice` to `Item` objects as they're processed throughout the class. This is done in place of repeatedly querying for this data, or complicating return types.
        - Enhanced logging capabilities to debug the item deletion process. Due to the *current* lack of testing available I've stepped up the amount of debug logging that is done. This will hopefully help us find issues in the future.
    - Modified the `rollForItemDelete` method, now renamed to `rollForDelete`, to include more detailed logging, return a boolean directly, and changed the `insuredItem` parameter to be optional.
    - Added new methods for dealing with some of the particulars that arise from item adoption and creating item maps.
    - Improved inline comments and documentation for better code maintainability.

2. **ItemHelper.ts**
    - Added the `isRaidModdable` method to check if an item is *actually* modifiable in-raid, which takes into account not just the item, but the item that it's attached to.
    - Added the `getAttachmentMainParent` method to fetch the main parent item of a given attachment, useful for item hierarchy traversal. For example, if you pass it an item ID of a suppressor, it will traverse up the muzzle brake, barrel, upper receiver, and return the gun that the suppressor is ultimately attached to, even if that gun is located within other multiple containers.
    - Added the `isAttachmentAttached` method to check if an item is an attachment that is currently attached to its parent.

**Fixes:**
 - Resolved an issue that caused item attachments from being property grouped together for deletion rolls. This issue prevented valuable attachments from being taken first.
 - Resolved an issue that caused child items being orphaned when their parent was removed due to an insurance roll. Probable cause of the bug that made the client spaz out and send repeated insurance packages to the profile---Though I'm still unable to reproduce.
 - Probably more...

Co-authored-by: Refringe <brownelltyler@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/151
Co-authored-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
Co-committed-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
2023-10-14 09:05:49 +00:00
TheSparta
723f8db572 Updated dependencies + A few other things (!150)
Initially this was going to be an update to dependencies but it seems i got a little carried away!

Anyways this PR removes 2 unused dependencies (`jshint` and `utf-8-validate`), and 2 other, `del` and `fs-extra` that were replaced by the built-in `fs/promises`.

It also renames all `tsconfig` and `Dockerfile` files, in a way that when viewed in a file tree sorted alphabetically they will be next to each other.

It also updates the typescript target to `ES2022`, and changes moduleResolution from `Node` to `Node10` (this isn't an update, they are the same thing but `Node` is now deprecated).

It also adds the `node:` discriminator to every import from built-in modules.

It also has major changes to the build script, `del` and `fs-extra` were only being used in the build script, it's now using `fs/promises` instead, cleaned up the code from some functions, adds better documentation to a few functions, and renames some gulp tasks and npm scripts to better represent what they actually do.

And finally it updates dependencies, except for `atomically` which can't be updated unless the project switches to ESM.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/150
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-14 09:01:41 +00:00
Dev
8c972908d2 Fix daily bolt action requirement id being incorrect
Removed incorrec sniper rifle requirement from daily weapon category pool
2023-10-14 09:56:32 +01:00
Dev
87e2948806 Remove scripts content from imported mods package data 2023-10-14 09:48:24 +01:00
Dev
035fce63c3 Make use of Set data structure inside createRandomLoot() to improve performance via .has instead of .includes 2023-10-13 20:18:39 +01:00
Dev
292791aca4 make itemHasBaseClass() more robust against bad input 2023-10-13 16:54:17 +01:00
Dev
8e377594da Split up code inside validateQuestAssortUnlocksExist() to improve readability 2023-10-13 09:45:47 +01:00
Dev
45788e1489 Fix scav case erroring on item generation 2023-10-13 09:28:04 +01:00
Dev
38371f47fb Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server 2023-10-13 09:13:27 +01:00
Dev
1bce472cf5 Adjust rogue/raider/follower weapon dura values 2023-10-13 09:13:07 +01:00
ElRabbito
1e0b768786 Fixing playerscav.json error causing exceptions when karma is below -5 (!149)
That error caused game freeze because of server exception after played scav death or after successful extraction of played scav

Co-authored-by: ElRabbito <you@example.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/149
Co-authored-by: ElRabbito <elrabbito@noreply.dev.sp-tarkov.com>
Co-committed-by: ElRabbito <elrabbito@noreply.dev.sp-tarkov.com>
2023-10-12 19:51:10 +00:00
Dev
10b4c5bcd6 Add streets coop extract 2023-10-12 20:45:53 +01:00
Dev
3c3fd56e65 Send gift to player after taking coop extract 2023-10-12 20:04:50 +01:00
Dev
3598418f6e Disable filtering out healing items from backpack loot 2023-10-12 14:33:09 +01:00
Dev
8c2233a0a1 Adjust follower weapon durability down based on feedback 2023-10-12 13:50:59 +01:00
Dev
a59a8a3fc4 Add additional ranking of daily pmc quest: 16-40
Adjust values to be somewhere between 1-15 and previous 16-100
adjusted 16-100 (now 41-100) values to be harder
2023-10-12 13:44:05 +01:00
Dev
dfc46068d2 Add machine gun as possible weapon category for kill quests
Adjust weapon category chances
2023-10-12 13:41:45 +01:00
Dev
29ffe86caa Remove redundant item added check from value check 2023-10-12 13:25:13 +01:00
Dev
db619a30b3 Add boss item blacklist and wire into:
airdrops
scav cases
sealed weapon containers
daily quests

Default boss item filter to on
2023-10-12 11:00:04 +01:00
Dev
4a570b438f Remove broken MarksmanRifle from weapon category, is already handled by DMR
Add Bolt actions to weapon category
Increased item reward count for scav daily
2023-10-12 10:07:19 +01:00
Dev
d430159a3c Daily quests adjustments:
Added a new range for weekly elimination, intead of having two, `1-15, 16+`, we have` 1-15, 16-40, 17+`
weekly elimination kill count requirements went way up
body part targeting is lower for low level weeklies, no change at high level
disabled specific weapon requirement for all elimination quests
level 1-15 weekly quests will target scavs more
2023-10-12 09:57:14 +01:00
Dev
d71d636578 Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server 2023-10-12 09:54:43 +01:00
Dev
c468e267db Adjust raider and rogue weapon durability values based on feedback 2023-10-12 09:42:39 +01:00
Refringe
52172f2953 InsuranceController Quality and Maintainability (!148)
This pull request aims to refactor the InsuranceController class to improve its code quality and maintainability. The changes include restructuring methods, adding detailed comments, and enhancing the overall logic for processing insured items.

Specific changes include:

- Updating the `findItemstoDelete()` method (and the entire class, really) to keep track of which items are tagged using a Set. This *ensures* that an item can only be attempted to be deleted once, as Sets cannot contain duplicates.

- Changing the method in which we remove insurance packages from the profile. We were iterating over them using a `for` in reverse order and then removing them with a splice and the current index. On paper this should work, but funny things were happening... Sometimes. I've created a new method that removes packages from a profile by matching against the package systemData date, time, and location. This should give us a specific insurance package (as we don't have an ID to use). In addition to this we're fetching a new instance of the profile to edit, instead of modifying packages that are being iterated over as they're being iterated over.

-----

I was unable to reproduce the issue where insurance packages were not being removed from the profile, but hopefully these simplified approaches lead to less funny business.

Co-authored-by: Refringe <brownelltyler@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/148
Co-authored-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
Co-committed-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
2023-10-12 08:38:22 +00:00
Dev
968911e3de Refactored repeatable quest system
Moved quest generation code into its own class
Moved shared methods used by controller and generator into helper class
2023-10-11 17:43:57 +01:00
Dev
0986bd0932 Make separate bossKill min/max properties + adjust various difficulty values 2023-10-11 17:05:06 +01:00
Dev
c2a6ca678e Add support for daily quests to request specific weapon kill requirements on elimination quests 2023-10-11 17:04:18 +01:00
Dev
67324edd9c merge stomach/chest target areas into one based on live feedback
Remoev dupe tagillas
Add missing bosses
2023-10-11 14:39:38 +01:00
Dev
af82c50a0c Remove knight from boss target pool for repeatables - not seen in live dailies 2023-10-11 14:17:49 +01:00
Dev
22bbf3eeab Add new bosses to repeatable quests pool
Adjust reward values up
2023-10-11 14:14:45 +01:00
Dev
b614d28736 Add streets to repeatable quests map pool 2023-10-11 14:04:25 +01:00
Dev
bf23722f78 Add Radio repeater to scavcase reward blacklist 2023-10-11 11:42:31 +01:00
Dev
ad33405e75 Adjust Raider weapon durabilities based on feedback from live 2023-10-11 10:57:16 +01:00
Dev
2f2e7c2e32 Variable rename to aid in readability 2023-10-11 10:47:54 +01:00
Dev
a19e322373 Remove debug logging inside addMissingHideoutBonusesToProfile() 2023-10-11 09:01:45 +01:00
Dev
68a8d34489 Protect against a missing upd object inside changeItemStack() 2023-10-10 22:37:38 +01:00
Dev
57dbfb36f7 Remove gp-34 from pmc weapon mod pool + update weapons to allow for gp-25 launcher 2023-10-10 22:19:47 +01:00
Dev
498cd0f01a Update map loot JSONs 2023-10-10 20:34:01 +01:00
Dev
b10a683650 Update bot JSONs 2023-10-10 18:46:10 +01:00
Dev
0c840db50b Update JSONs 2023-10-10 18:21:12 +01:00
Dev
f67c4293d8 Merge used profile mods onto a single record for each mod by name, choosing newest 2023-10-10 17:01:29 +01:00
Dev
76d8b944d5 Store `AvailableAfter value in statusTimer of timelocked quest
Send locked quest to client when requested
Delete `availableAfter` property when accepting a quest
2023-10-10 16:18:55 +01:00
Dev
8edc43e9de Do not send timelocked quests to client until timer is passed 2023-10-10 14:46:23 +01:00
Dev
117c965948 Version update 2023-10-10 13:24:35 +01:00
chomp
0b67a9a0e9 0.13.5.0 (!147)
Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Co-authored-by: Terkoiz <terkoiz@noreply.dev.sp-tarkov.com>
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-authored-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
Co-authored-by: Kaeno <e>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/147
2023-10-10 11:03:20 +00:00
ghost114514
fa6568a174 updated Chinese locale (!131)
Signed-off-by: bili@育碧苏联Ubisoviet
server strings are translated. player chat message WIP

Co-authored-by: Your Name <you@example.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/131
Co-authored-by: ghost114514 <ghost114514@noreply.dev.sp-tarkov.com>
Co-committed-by: ghost114514 <ghost114514@noreply.dev.sp-tarkov.com>
2023-09-14 19:27:02 +00:00
gasmo
8d911ccc19 Fix ballooning recursive function (!120)
The `BotEquipmentModPoolService.generatePool()` method is recursive, but it does not check if the pool it creates already contains data for sub items when it finds them and calls itself on them. This creates substantial bloat in the function that is undetectable to end users, but causes some additional delay when it is called.

I noticed this when using a server mod that allows for less restrictions on mod combinations (as it would hit the system recursion limit and error out) but the bloat still affects vanilla - it takes ~1 minute for all the recursive calls to end, whereas this fix reduces that to <10 seconds.

To fix this, I've moved a block of code into the conditional block that checks if the item we're adding (and its' sub items) are already in the pool before it calls itself.

This is my first pull request, so let me know if I've fudged up somewhere and I'll do my best to fix it.

I submitted a previous request about this, but I removed my name from the commits so I had to delete the branch.

Co-authored-by: gasmo <burr.cameron@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/120
Co-authored-by: gasmo <gasmo@noreply.dev.sp-tarkov.com>
Co-committed-by: gasmo <gasmo@noreply.dev.sp-tarkov.com>
2023-08-18 14:17:54 +00:00
Dev
1b387f706d Revert "Update JSONs + add new params to interfaces"
This reverts commit 3bf644c0e4.
2023-08-10 16:02:33 +01:00
Dev
3bf644c0e4 Update JSONs + add new params to interfaces 2023-08-10 16:00:49 +01:00
Dev
96ef616d48 Add comments 2023-08-10 14:30:29 +01:00
Dev
91ec0144ed Esxpose two endpoints for launcher to get mod-related data 2023-08-10 14:29:09 +01:00
Dev
e591ea9e8f make setFenceAssort and setFenceDiscountAssort public 2023-08-09 22:04:35 +01:00
Dev
285f65bb8d Only remove item from fence assort if he has items to remove
Add empty assort check to remove function too
2023-08-09 19:20:41 +01:00
Dev
e6d8e281ee Improve accuracy of terragroup p6 quest assort reward price/stock count 2023-08-09 18:56:36 +01:00
Dev
240fa7a144 Update trader assort values after improving assort gen tool 2023-08-09 18:52:33 +01:00
Dev
96de45e580 Expose SPT friend nickname in core config 2023-08-09 16:01:51 +01:00
Dev
99715f90cd Update JSONs and include end of wipe gift
Add additional method to send localised messages from SYSTEM to player
2023-08-09 14:22:16 +01:00
Dev
7a1301d436 Fix request logger throwing errors when logging non-json data 2023-08-09 12:16:41 +01:00
Dev
dea27097b3 Improve server start message selection 2023-08-09 12:07:31 +01:00
Dev
643cf9a268 Regenerate item cache on game start
Fixes 'item missing from cache' errors seen when using multiple mods that add items to the game
2023-08-09 12:04:31 +01:00
Dev
b3f5ea8287 FIx null excpetion when a weapon reward is picked that has no presets
We only want the default preset, so use that function instead
2023-08-09 11:52:20 +01:00
chomp
c1a4c544bc Add JSONC support to server configs + use by modders (!112)
Replaced calls (where possible) to JSON.parse/stringify with use of `jsonUtil` functions
`VFS.ts` was tricky, it can't be updated as it'd create a circular dependency

Also add json5 to package.json for modders to have access to

Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/112
2023-08-09 10:49:45 +00:00
Dev
ba06629577 Remove comma 2023-08-08 09:08:35 +01:00
Dev
d0b3f89dd5 Add json5 support to server 2023-08-08 09:08:18 +01:00
Dev
6262d74acc Pass the location insurance was lost into sendLostInsuranceMessage()
make use of mailSendService.sendLocalisedNpcMessageToPlayer()
Make use of new `insuranceFailedLabs` array in prapors json data
2023-08-07 22:43:00 +01:00
Dev
6b4341b955 Add extra insurance failed message keys to prapor/therapist 2023-08-07 22:40:41 +01:00
Dev
ee46d1e6b8 Extend sendLocalisedNpcMessageToPlayer() to allow for custom systemData 2023-08-07 22:40:06 +01:00
Dev
dd26a94ede Nullguard against missing data from client 2023-08-07 19:42:23 +01:00
Dev
7e75f867a0 BSG flea blacklsit should be enabled by default 2023-08-07 18:29:18 +01:00
Dev
74f7ee8e77 Rework usage of filter() into some() 2023-08-07 11:17:46 +01:00
Dev
92c30dbe5d Add code to check BackendCounter values pre vs post-raid 2023-08-07 11:13:17 +01:00
Dev
b2530a6083 log not implemented message for stash row reward 2023-08-06 16:54:31 +01:00
Dev
d661f89952 Increment version number 2023-08-06 16:03:10 +01:00
Dev
7f3b3ba1e3 Update JSONs 2023-08-06 16:02:39 +01:00
chomp
6a864bffa9 Rework high flea listing price adjuster to be configurable, more item types can be added (!111)
Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/111
2023-08-06 11:36:07 +00:00
chomp
a962823192 Persist durability changes + faceshield hit values incurred during a raid (!110)
Fixes insured items comin back full durability

Co-authored-by: CWX <CWX@noreply.dev.sp-tarkov.com>
Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/110
2023-08-05 17:26:16 +00:00
Dev
9dd2d3cd04 Improve nullguard code inside findAndAddRandomPresetToLoot() 2023-08-05 14:50:05 +01:00
Dev
5a3326189d Blacklsit Old hand Scythe from PMC backpacks 2023-08-05 09:09:47 +01:00
Dev
95b156b91c Add missing prereqs to TerraGroup Trail quests 2023-08-05 08:51:59 +01:00
Dev
4a1e3e9df3 Fix casing issue 2023-08-04 23:46:27 +01:00
Dev
14c6104b65 FIx dialogs not showing 2023-08-04 18:58:00 +01:00
Dev
30bd9545f5 i hate commas 2023-08-04 18:41:32 +01:00
Dev
20ce02c145 Add new event quests to quests config 2023-08-04 18:29:18 +01:00
Dev
cc88cd0e87 Fix typo 2023-08-04 18:22:44 +01:00
Dev
08c81aff26 introduce itemsDb variable inside repairItemByKit() 2023-08-04 15:59:34 +01:00
Dev
ce65ec1260 Add upd null object check to addMaxResourceToKitIfMissing() 2023-08-04 15:55:59 +01:00
Dev
1a402dde09 Add event quest 19 2023-08-04 14:52:57 +01:00
Dev
4dc290c284 Nullgaurd against mods that adjust map static data 2023-08-04 12:57:16 +01:00
Dev
2a98b0a1b9 Move trader enum checking logic into traderHelper 2023-08-04 11:19:27 +01:00
Dev
07217e9ed0 Further extension of profiel fixing code, deletes more
Clothing, active repeatable quests with bad trader/items, trader purchases from bad traders
2023-08-04 10:25:21 +01:00
Dev
281cba8db5 Prevent randomiseItemUpdProperties() running if the item being randomised has a db item with no _props data 2023-08-04 08:49:22 +01:00
Dev
e3b5ed44bf Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server 2023-08-04 08:35:08 +01:00
Dev
88f5edba61 Add small chance PMCs carry secondary weapon, mostly SMGs + small chance of fn40gl 2023-08-04 08:34:40 +01:00
Sister-Fister
07c99ec376 bot.json Missed Additions (!109)
Missed adding the new event bots to PMC's enemyType, and put bossZryachiy where appropriate.

Co-authored-by: Akrotluv <60285080+Akrotluv@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/109
Co-authored-by: Sister-Fister <sister-fister@noreply.dev.sp-tarkov.com>
Co-committed-by: Sister-Fister <sister-fister@noreply.dev.sp-tarkov.com>
2023-08-04 06:50:18 +00:00
Dev
b24abb1b2f crazy assault scav adjustments
Allow PMCs to use crazy scav brain
2023-08-03 16:51:07 +01:00
Sister-Fister
5b3980bebd Bot.JSON - Update crazyAssaultEvent & arenaFighters (!108)
Add crazyAssaultEvent to itemSpawnLimits, lootNValue.
Added crazyAssaultEvent bot equipment (NVGs/lasters/lights/faceshield) chances, armor & weapon durabilities and weaponModLimits, homebrewed values for what I thought would of been an okay compromise between cocaine huffing scav and a cocaine hugging Rogue.
Added crazyAssaultEvent bot (min:5/max:10), and arenaFighter & arenaFighterEvent (min:0/max:0) into convertIntoPmcChance.
Added (but disabled) arenaFighter, arenaFighterEvent and crazyAssaultEvent bot types to the pmcType.

Notes:
Dunno what other files I'll need to edit, but this was mostly to fix error spam I encountered on Shoreline in response to crazyAssaultEvent bots not having equipment and NLoot values. Seemed like it killed the population to, but could be unrelated.

I have NO clue how cracked the Bloodhounds/Arena and Crazy Assault AI would be in the hands of the PMC bots, although anything funny, I need to know and witness it with the Deer God, lol.

Values are obviously temporary, just things that kinda made sense to me at the time. No idea what the Crazy Assault Event was like, so...

Co-authored-by: Akrotluv <60285080+Akrotluv@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/108
Co-authored-by: Sister-Fister <sister-fister@noreply.dev.sp-tarkov.com>
Co-committed-by: Sister-Fister <sister-fister@noreply.dev.sp-tarkov.com>
2023-08-03 15:24:32 +00:00
Dev
dbf9955272 potential fix for custom trader issue 2023-08-03 15:46:50 +01:00
Dev
beb7c5069b Improve profile fixing system
Remove more modded items from profile when config set to true, warn of set to false

Handle weapon presets + messages containing modded items
2023-08-03 14:36:53 +01:00
Dev
207d72fba2 Add loot nvalue for crazyAssaultEvent bot 2023-08-03 13:45:38 +01:00