Commit Graph

569 Commits

Author SHA1 Message Date
Dev
fdd328b07a use function that only gets static price for daily rewards instead of function that falls back to flea price - improve price consistency 2023-10-15 10:39:35 +01:00
Dev
18c68fa353 make daily rewards found in raid 2023-10-15 10:38:50 +01:00
Dev
f23c8d484e Fix peacekeeper rewarding dollars instead of euros 2023-10-15 10:33:52 +01:00
Dev
cd74f05558 Cleanup of daily reward code doing the same item check multiple times 2023-10-15 10:28:52 +01:00
Dev
870f9a5092 Update daily reward scales 2023-10-15 10:14:46 +01:00
Dev
fbb1d7eb2f Adjust daily reward spread 2023-10-15 08:35:09 +01:00
TheSparta
1ab7c5946e Fixed stacktraces and source maps on the built exe (!153)
This PR fixes a long standing issue where stacktraces in the built executable didn't have line and column numbers, so you were left wondering where exactly in a given function an error occurred.

This also fixes source maps being generated but not actually included in the executable, this fix results in `source-map-support` actually doing it's job, so now stacktrace paths point to the typescript files, line and column number, instead of the transpiled javascript line and column number.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/153
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-15 07:31:16 +00:00
Kaeno
e327f8101a Revert accidental debug setting for max repeatable quests (!154)
Co-authored-by: Kaeno <e>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/154
2023-10-15 06:34:41 +00:00
Dev
3546e0c6cb Update flea prices 2023-10-14 17:02:09 +01:00
Dev
5a0e16634e Fixed seasonal event items not appearing on flea during event
Don't rely on globals event value for event check, store event bools on SeasonaleventService class construction

Remove dupe function `getSeasonalEventItemsToBlock(), rely on `getAllSeasonalEventItems()`
2023-10-14 16:52:48 +01:00
Dev
11b885539d Fix halloween icons not loading 2023-10-14 16:05:12 +01:00
Dev
a9a1b3e07b Remove dupe mod slots from usec 2023-10-14 15:47:23 +01:00
Dev
3628fc41d3 Allow PMCs to respond to commands 2023-10-14 14:10:24 +01:00
Dev
7ad291fe4c Set lockedMoveCommands to true for new profiles 2023-10-14 14:01:21 +01:00
Dev
5dd2e10211 Configure additional scav property values on generation 2023-10-14 13:29:27 +01:00
Dev
79b9b2a7aa Update various property values on scav generation 2023-10-14 13:18:07 +01:00
Dev
f4359211ec Increase change of nosler ammo on scav 2023-10-14 12:30:17 +01:00
Dev
a8ce1f489d Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server 2023-10-14 12:29:31 +01:00
Dev
3c9dfba79d Fix overlapping weekly range data
Reduce range requirements for all quests
2023-10-14 12:20:20 +01:00
Kaeno
f0ab464613 add new gift to gifts.json (!152)
Co-authored-by: Kaeno <e>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/152
2023-10-14 10:50:52 +00:00
Dev
933e7512a6 Adjust daily rouble/item reward values
Disable melee requirement from daily scav quest
2023-10-14 11:44:02 +01:00
Dev
0b50385b84 Fix error on death because extract is undefined 2023-10-14 10:31:01 +01:00
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