Commit Graph

59 Commits

Author SHA1 Message Date
acidphantasm
3d2fd7b40a Add stash row quest reward functionality (!316)
This functionality is currently not in use and would be nice to have for mod developers. There have been 'seasonal' quests in the past that had stash rows as a reward but this was never implemented in SPT.

Co-authored-by: acidphantasm <127812106+acidphantasm@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/316
Co-authored-by: acidphantasm <acidphantasm@noreply.dev.sp-tarkov.com>
Co-committed-by: acidphantasm <acidphantasm@noreply.dev.sp-tarkov.com>
2024-05-01 08:22:11 +00:00
Refringe
01d97953fa
Fixes Linting Issues
Fixes a number of Biome linting issues:
- Variable implicitly has the any type.
- Use a function type instead of a call signature.
- Reassigning a function parameter is confusing.
- Suppression comment is not being used
2024-04-22 23:43:35 -04:00
Dev
765c2ae270 Only send failed message to player if failure message text length is great than 0 (after having whitespace trimmed) 2024-04-12 11:29:50 +01:00
Dev
364e590960 Improved logic for failing a quest - will never send a failed message for daily 2024-04-12 11:20:30 +01:00
Dev
2516354451 Fixed getNewlyAccessibleQuestsWhenStartingQuest() not filtering out quests flagged for non-player side 2024-03-24 17:17:40 +00:00
Dev
fc1a1432ee Do not return output object from failQuest() 2024-03-12 21:29:50 +00:00
Dev
378bb7fdae Resolve issue with failQuest() breaking when no quest or repeatable quest is found and it attempts to send a mail message to player 2024-03-12 21:24:46 +00:00
Dev
479898ecab Centralise check for upd object / creation if it doesnt exist into one helper function inside ItemHelper
Some minor formatting updates
2024-03-07 09:18:39 +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
fbd371b5c7 Fix code that would detete majority of quest progress from profile 2024-02-09 23:18:23 +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
Dev
bf5f3316b1 Rename cloned variables to help with readability 2024-02-05 14:43:46 +00:00
Dev
d362e17e1b prevent failQuest() from failing when no repeatable quest is found 2024-02-03 23:10:42 +00:00
Dev
164bf08b08 FIx armor filtering code to correctly return non-armored rigs when requested 2024-02-03 14:00:47 +00:00
Dev
8d2eaf2485 Copy over stackobject count from original reward 2024-02-03 12:47:52 +00:00
Dev
0a6a866ae8 Correctly clone and remap default preset before returning 2024-02-03 12:15:20 +00:00
Dev
e3cf4c3c92 Fix starting quest armor rewards not showing correctly 2024-02-03 11:41:30 +00:00
Dev
12a9cb5ded Fix processReward() incorrectly trying to add mods to armor items without slots
Add `itemHasSlots` to itemHelper and consolodate its use across code
2024-02-03 11:00:30 +00:00
Refringe
90492f3aa2
Formatting
Have you been using the recommended VSCode extensions? ;)
2024-02-02 15:00:21 -05:00
Dev
d3f9cea4c1 Fix ammobox + magazine cartridges being given to player with an incorrect FiR status, shouild match parents status 2024-01-23 15:24:02 +00:00
Dev
5005a5160a Improve buyItem() handling of multiple and stackable item purchases
rename `reparentPresets` to `reparentItemAndChildren` and move to `itemHelper`
2024-01-14 21:12:56 +00:00
Dev
47a84e508b Fix some quests failing twice (chemical part 4), reducing rep twice as much as it should
Quest failure is handled by client now, no need to find and fail quests in server on quest completion

Move `getQuestsFailedByCompletingQuest()` to questHelper
2024-01-14 12:29:58 +00:00
Dev
41d491dd16 Show error when quest not found in db 2024-01-14 10:27:26 +00:00
Dev
cb18d251ba Improve selection of items to add mods for:
quest rewards
bot loot gen
map loot gen
fence assort gen

Updated `removeRandomModsOfItem()` to also skip slots with a _required prop
2024-01-11 17:42:58 +00:00
Dev
297bc2786a Improve armor quest rewards
Attempt to return the armor preset found in globals.json first as this has default plates, if that fails construct item outselves based on mods _requried properties
2024-01-10 10:04:09 +00:00
Dev
443d8da7f7 FIx server error when passing failed quest data to client 2024-01-09 18:46:44 +00:00
Dev
a9c36ec205 Fix issue with armors as quest rewards not being sent with soft inserts
Centralised a soft insert check into `ItemHelper`

Add extra base types to `generateGearPool()` in equipment bot pool service
2024-01-09 16:49:59 +00:00
Dev
0b3ad5bbd8 Only send failed quest trader messages for non-repeatable quests 2024-01-07 23:51:28 +00:00
Dev
d3afe0b6f3 Fix issue with completing a quest
Altered `addTimeLockedQuestsToProfile()` to not fail when checked quest has no `target` property
Altered `getNewlyAccessibleQuestsWhenStartingQuest()` to check all statuses of quest, not just first
2024-01-06 09:11:04 +00:00
Dev
9dbd3d1acf Updated server handling of quests/repeatable quests to match 0.14 changes - this will break profiles 2024-01-05 19:52:21 +00:00
Dev
9e55a52965 update quest objects and implement get achievemetns 2023-12-27 17:15:38 +00:00
Dev
12cb176a42 Potential fix for failed/repeatable quests keeping their subtask completed status 2023-12-02 00:10:25 +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
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
1abc7e3604 Handle failing a quest while raiding as scav 2023-11-20 11:19:11 +00:00
Refringe
4ac12ef70a Formatting/Linting Changes (!168)
These are the formatting & linting configuration changes from the `3.8.0` branch and the changes that they make to the overall project.

The majority of these changes are from running two commands:

`npm run lint:fix`
`npm run style:fix`

This has already been run on the `3.8.0` branch and this PR should make `master` play nicer when it comes to merges going forward.

There are now four VSCode plugins recommended for server development. They've been added to the workspace file and a user should get a UI notification when the workspace is opened if they're not installed.

The four plugins are:
https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig
https://marketplace.visualstudio.com/items?itemName=dprint.dprint
https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
https://marketplace.visualstudio.com/items?itemName=biomejs.biome

Once installed they should just work within the workspace.

Also, be sure to `npm i` to get the new dprint application.

Co-authored-by: Refringe <brownelltyler@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/168
2023-11-16 21:42:06 +00:00
Dev
203ef0c011 Centralise getting a skill from a player profile into one location profileHelper.getSkillFromProfile() 2023-11-07 15:17:38 +00:00
Dev
5a60e4dcf0 Consolodate multiple functions (incrementSkillLevel, rewardSkillpoints) that do the same task into one addSkillpointsToPlayer, make them use enum for skill type instead of string 2023-11-07 11:20:25 +00:00
DrakiaXYZ
ebeda336db Implement live-like calculation of Weapon Maintenance XP (!164)
- Implement formula based on 30 weapon repairs done on live
- Return the repair amount as `repairAmount` from `repairItemByKit`
- Add an additional `repairPoints` to `RepairDetails` to return the repair points used
- Update `repairAmount` references to `repairPoints` to keep old behavior
- Add new parameter to rewardSkillPoints that applies live-like level scaling
- Only give weapon maintenance XP when using a repair kit

This implementation comes with a "Crit Fail" and "Crit Success" mechanic to account for live sometimes randomly being -4 or +4 off from my estimated values. By default the chance of each is 10%, and they can overlap and cancel each other out

Spreadsheet of live repair data:
https://docs.google.com/spreadsheets/d/1-tR4WYelhZfKZ3ZDbxr3nd73Y60E1wQRjDWONpMVSew/edit?usp=sharing

Useful columns:
C: The amount of dura attempted to be repaired, this is used in the estimated skill calculated
G: Hand entered value of how much skill gain I actually saw on live (Multiplied by 10 for readability. So "3.2" would be "32")
J: The estimated skill gain, based on the calculation included in this merge request
K: How far off the estimated skill gain was (Negative implies we guessed high and the actual result was lower)

One thing of note:
I've modified all the existing references to `repairAmount` to be the new `repairPoints` when a repair kit is used. This is to keep the existing behaviour outside of my direct changes as much as possible.

However, this seems to be incorrect in some cases (For example, buff chance is repairPoints/maxDura, but repairPoints will go down the higher your int. I'm assuming this is meant to be repairedDura/maxDura). May want to update these references to use `repairAmount` once they've been confirmed to expect the repair amount instead of repair points used.

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/164
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2023-11-02 08:56:02 +00:00
Dev
de2f70fb79 Remove replaced repeatable quest from PMC and scav profile 2023-10-21 17:39:44 +01:00
TheSparta
418d9f2a8f Import path alias on the whole project (!157)
- Ability to use @spt-aki path alias on the whole project.
- Swapped all imports from relative paths, for imports using the path alias.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/157
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-19 17:21:17 +00:00
Dev
68a8d34489 Protect against a missing upd object inside changeItemStack() 2023-10-10 22:37:38 +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
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
Dev
b2530a6083 log not implemented message for stash row reward 2023-08-06 16:54:31 +01:00
Dev
946512ca6d FIx server error with not being able to find singular hiddeout craft now there are two DSP crafts 2023-08-02 12:57:08 +01:00
Dev
9e056cf8f3 Handle failing quests post-raid if they are now failed and were not pre-raid 2023-07-25 19:50:46 +01:00
Dev
c3a4caa38a Convert sptDev profiles quest starter email function to use mail send service 2023-07-22 14:02:13 +01:00