Commit Graph

683 Commits

Author SHA1 Message Date
Dev
4bce4b49f4 Change server logging to be grouped by day instead of per hour 2023-11-06 12:44:59 +00:00
Dev
6ba0cfa459 Fix inverted check 2023-11-06 09:24:13 +00:00
Dev
32b356d3f1 Fix isbotPmc isBotBoss and isBotFollower failing when undefined values are passed in 2023-11-05 20:29:10 +00:00
Dev
5656384c8f Merge branch '3.8.0' of https://dev.sp-tarkov.com/SPT-AKI/Server into testing-redux 2023-11-05 20:25:15 +00:00
Dev
d3b7e5ef7a Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0 2023-11-05 20:24:28 +00:00
Dev
df6a08367b Remove reduandant else from getRepairableItemQualityValue() 2023-11-05 13:19:10 +00:00
Dev
c527824d60 Change getRepairableItemQualityValue() to handle max durability being lower than durability 2023-11-05 13:16:59 +00:00
Dev
7e409735d1 Merge branch '3.8.0' of https://dev.sp-tarkov.com/SPT-AKI/Server into testing-redux 2023-11-05 12:39:38 +00:00
Dev
c7dfc5b9cf Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0 2023-11-05 12:39:20 +00:00
Dev
8f70b03284 Fix hasBuyRestrictions erroring on bad input data
Fix isItemTplStackable erroring on bad input data
2023-11-05 12:37:17 +00:00
Refringe
98a35f4b47
Merge branch '3.8.0' into testing-redux 2023-11-04 21:12:49 -04:00
Dev
8ee176b9d8 Handle when fillCamora() cannot find camora slots in weapons modPool 2023-11-04 20:11:09 +00:00
TheSparta
9638288381 Fix level calcualtion function 2023-11-04 17:01:24 +00:00
TheSparta
45dad54e3e Fixed PlayerService.calculateLevel 2023-11-04 14:53:08 +00:00
Dev
86c519b117 Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0 2023-11-04 10:50:13 +00:00
Dev
75958ee7d2 Replace hard coded blacklist in isValidItem() with more appropriate call to ItemFilterService.isValidItem() 2023-11-04 10:49:52 +00:00
Dev
24894643de Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0 2023-11-04 10:43:06 +00:00
Dev
ab01e42271 Call getDynamicItemPrice() correctly inside getItemPrice() 2023-11-04 10:28:33 +00:00
Dev
432f778512 Make randomiseAmmoStackSize() and randomiseMoneyStackSize() not purge the entire upd object
Always randomise the ammo stack size, not only if it doesnt have one
2023-11-04 09:08:33 +00:00
Refringe
047884e9c7
Additional InsuranceController Tests
- Adds tests for the remaining methods in the `InsuranceController`.
- Adds a `countAllInsuranceItems()` method to the `InsuranceController`.
- Adds the Vitest UI and coverage packages.
- Updates the `profileInsuranceFactory` to use second-epoch dates instead of millisecond-epoch dates.
- Updates the `InsuranceController.fetchHideoutItemParent()` method to log a warning when an item with a slotId of 'hideout' cannot be found.

TODO:
- The Vitest coverage options are not working.
2023-11-03 17:39:33 -04:00
Dev
93209e4a76 Add config option to force stock to spawn on a bot during weapon generation
Enable it for various bot types (most bosses/raiders)
2023-11-03 17:40:00 +00:00
Dev
a5a0bf82d7 Changes after feedback from Drakia 2023-11-02 21:16:31 +00:00
Dev
981da646b0 Add 2023 haloween event system
Event bots are generated from their base type, then their role is updated before being sent to the client e.g. peacefullZryachiyEvent becomes bossZryachiy for generation, then back to peacefullZryachiyEvent
2023-11-02 15:02:18 +00:00
Dev
0a85f6f319 Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0 2023-11-02 09:00:14 +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
Refringe
946552199e
Merge branch '3.8.0' into testing-redux
# Conflicts:
#	project/package.json

Manually resolved by Refringe
2023-11-02 01:56:18 -04:00
Refringe
85a227e7d5
Updates 🚀
- Created profileInsurance test fixture.
- Created ProfileInsurance test factory class.
- Improved many of the InsuranceController method tests by utilizing the factory and fixture. Still some left to do here.
- Adds the `date-fns` package as a development dependancy for easy date manipulation.
- Cleaned up some comments.

Bug Fixes 🐞
- Resolved an issue where `ItemHelper.getAttachmentMainParent()` was not returning null when it should have.
- Resolved an issue where `InsuranceController.populateParentAttachmentsMap()` would continue to process when the parent could not be found.
2023-11-02 01:47:28 -04:00
Dev
b1842e1c49 When generating a specific location condition for an elimination quest, don't add weapon requirement props to it - unnecessary
Clean up kill condition generation method comments/param names

Replace magic strings with objects
2023-11-01 13:29:47 +00:00
Dev
9d56030880 Remove unused class property 2023-11-01 13:06:01 +00:00
Dev
90b76eab68 Correctly check when difficulty is not a number 2023-11-01 11:36:13 +00:00
Dev
d1db6cc7a9 Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0 2023-11-01 11:35:18 +00:00
Dev
37b7712602 Rename function getAllSeasonalEventItems() to getInactiveSeasonalEventItems() 2023-11-01 11:35:05 +00:00
Dev
9d3f6dc092 For slots that have seasonal items added, force slot spawn chance to be at least 75% 2023-11-01 11:00:43 +00:00
Dev
1c6550894e Add additional items to halloween items list 2023-11-01 10:43:47 +00:00
Refringe
7f37d48753
InsuranceController Tests & Minor Changes
- Adds tests for the majority of the methods within InsuranceController.
- Simplifies the `InsuranceController.sendMail()` method so that the toDelete parameter is no longer required.
- Modifies `InsuranceController.findItemsToDelete()` to only process regular and attachment items when they exist.
- Modifies `InsuranceController.rollForDelete()` to return null in the event that the provided Trader can not be found.
2023-10-31 23:08:13 -04:00
Dev
fc606ee540 Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0
# Conflicts:
#	project/assets/database/bots/types/assault.json
#	project/assets/database/bots/types/bossknight.json
#	project/assets/database/bots/types/bosszryachiy.json
#	project/assets/database/bots/types/followerzryachiy.json
2023-10-31 19:10:23 +00:00
Dev
1c18282cfe Log profile save action into console window, not log file 2023-10-30 15:14:26 +00:00
Dev
dacb72e78d Cleanup of akihttplistener 2023-10-30 09:36:19 +00:00
Dev
476788fee8 Fix build issue caused by merge of #162 2023-10-30 09:25:34 +00:00
ree
9fa0bcc705 Properly re-assemble all data in http requests before handling it (!162)
Remove unneeded HttpBufferHandler

-----------

The old code processed each chunk of data as an entire request, which is not correct. It was observed split data after ~14600 bytes (on a 1 gig lan connection). I think it was worse on remote connections.

This was the cause of the "unknown compression method" and invalid json parse errors when saving the profile.

Co-authored-by: Decoy <redacted@example.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/162
Reviewed-by: Terkoiz <terkoiz@noreply.dev.sp-tarkov.com>
Co-authored-by: ree <ree@noreply.dev.sp-tarkov.com>
Co-committed-by: ree <ree@noreply.dev.sp-tarkov.com>
2023-10-30 09:23:30 +00:00
TheSparta
f354811ca8 A few changes to Watermark and Error Handling
- Made it so Watermark doesn't initialize on the constructor, this makes it possible for tests to use `@spt-aki/di/Container`;
- Removed unnecessary calls to `ErrorHandler.handleCriticalError`, all you really need to do is `throw new Error()` and it'll get caught automatically.
2023-10-29 22:20:33 +00:00
Refringe
00ac9e190a Additional Tests & New Setup
- Adds additional ItemHelper tests
- Attempts to bring container registration into the environment to debug how we can register everything but not actually start the server.
2023-10-29 22:20:32 +00:00
Dev
fe703b34ec Remove unused file 2023-10-29 20:46:50 +00:00
Dev
220a89b915 Default value to false if not found intead of letting it be undefined 2023-10-29 20:45:35 +00:00
Dev
6f62d0b400 Rename variable for clarity
Remove redundant `BlocksX` check
2023-10-29 20:44:41 +00:00
Dev
8223124882 Sort mod_barrel after mod_handguard to prevent weapon gen errors with certain combinations of barrel + gas blocks causing all handgaurds to be incompatible
Also force gas block to be processed AFTER barrel + handguard
2023-10-29 16:35:03 +00:00
Dev
fd7e59d1d2 Adjust servers handling of item stacks, when item has a StackMaxSize value of 1, use that instead of items db property StackMaxRandom 2023-10-28 19:39:45 +01:00
Dev
6d30d86ea4 Correctly handle when crafts are completed, null craft data instead of removing entire production key/value pair 2023-10-28 17:57:14 +01:00
Dev
cc86ecce2b Send correct data to client to inform it craft has been cancelled 2023-10-28 17:48:37 +01:00
Dev
ce50c88b87 Improve error message text 2023-10-28 16:16:39 +01:00
Dev
0316278b15 First pass at handling the cancellation of a hideout craft.
Doesnt explode server with unhandled exception error
Does remove craft from profile
Doesnt remove it from client screen until client refresh
2023-10-28 15:53:13 +01:00
Dev
73be87bee4 Update IBotDurability with additional bot types 2023-10-28 12:44:44 +01:00
Dev
48913e8707 Update getDefaultCounters() to return data found from live profile 2023-10-28 12:40:21 +01:00
Dev
6e3e8f13d6 set NeedWipeOptions on profile creation 2023-10-28 12:28:52 +01:00
Dev
6e5d35dbd1 Update JSONs 2023-10-28 12:20:48 +01:00
chomp
ea518adb32 Add new WildSpawnTypes for 26835 (!161)
Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/161
2023-10-28 09:39:49 +00:00
Dev
f4fce0612e Force handguards that take a sub-handguard to set handguard spawn chance to 100% - fixes split handguards appearing without the lower part
Only adds lower when weapon has no launcher attached

Adjust sub stock adding code to trigger when stock has a subslot that starts with `mod_stock`, this means `mod_stock_akms` and `mod_stock_000` will be included
2023-10-26 20:31:05 +01:00
DrakiaXYZ
170a185928 Add a new /singleplayer/log route (!160)
Add a new /singleplayer/log route for logging data to the server console from the client

Supports:
- All server log levels
- `Custom` log level with text/background color
- Specifying the source of the log line (ex. Plugin name)

Example output:
![Example](https://i.imgur.com/c0XBYLm.png)

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/160
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2023-10-26 09:44:17 +00:00
Dev
1f90ae0bb0 Add undefined check to updateProfileBaseStats() 2023-10-25 18:13:33 +01:00
Dev
0e3d25df03 Improve getTrader()
Error when no profile found
Reduce returns to 1
fold two checks into one
Remove magic string reliance on TradersInfo exist check
More comments
2023-10-25 12:18:27 +01:00
Dev
729b180e85 Add request object type 2023-10-25 11:54:11 +01:00
Dev
b29f0a0904 Coop extract gifts from fence are now Found in Raid 2023-10-25 10:14:19 +01:00
Dev
90efc36360 Fix incorrect value names in getEliminationKillCount 2023-10-24 17:06:02 +01:00
Dev
a5dbfef7d0 Localise some error text 2023-10-24 16:40:34 +01:00
Dev
657dd358c2 Give method an access type protected 2023-10-24 15:12:18 +01:00
Dev
1cf63ad1ad Split pmc kill requirement for elimination into separate min/max counts from other bot types 2023-10-24 15:01:31 +01:00
Dev
c3777af231 Add guards to dynamic spawn point generation
Rename some variables for clarity
2023-10-24 11:15:23 +01:00
Refringe
8541e5f028 Refactor Currency Handling in PaymentService.payMoney() Method (!159)
This commit includes a series of changes aimed at improving the logic and readability of the `payMoney` method in the PaymentService class. The method is pivotal for handling in-game payments, specifically in cases involving multiple types of currencies and barter trades. The changes resolve an issue that prevented barter payments that included both a currency and another item.

## Changes:

- Replaced `barterPrice` variable with a `currencyAmounts` mapping that efficiently tracks each type of currency involved in the trade.
- Updated how the `costOfPurchaseInCurrency` variable is calculated to factor in multiple currencies.
- Introduced a new variable `totalCurrencyAmount` to sum up the total amount of all currencies, which is checked to determine whether any (non)currency payment is necessary.
- Added some inline comments for readability.

Resolves #176

Co-authored-by: Refringe <brownelltyler@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/159
Co-authored-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
Co-committed-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
2023-10-24 09:27:46 +00:00
Dev
250b9dca3f Merge branch 'master' of https://dev.sp-tarkov.com/SPT-AKI/Server 2023-10-23 19:29:35 +01:00
Dev
7b0298cda2 Adjsut 2 bot gen errors to be warnings 2023-10-23 19:19:05 +01:00
TheSparta
7aee78eb49 Fixes Insured items on secured containers (!158)
This PR fixes both https://dev.sp-tarkov.com/SPT-AKI/Issues/issues/174 and https://dev.sp-tarkov.com/SPT-AKI/Issues/issues/175.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/158
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-23 16:45:40 +00:00
Dev
69ee8983b2 Improve logging text 2023-10-22 13:14:38 +01:00
Dev
3c709311d8 Correctly save statusTimer values into profile 2023-10-21 21:24:14 +01:00
Dev
ec7d3e1699 Fix bad injection 2023-10-21 20:22:11 +01:00
Dev
54d47585f2 Show sessionid/profile id when profile data is saved 2023-10-21 20:19:45 +01:00
Dev
018b0a8f70 Fix profile creation error 2023-10-21 20:13:29 +01:00
Dev
573d91a9c2 Persist ConditionCounters data between pscav runs
Move values around to help with readability
2023-10-21 18:23:58 +01:00
Dev
de2f70fb79 Remove replaced repeatable quest from PMC and scav profile 2023-10-21 17:39:44 +01:00
Dev
3f07fc1bfc Cleanup of async method names
Add method comments
Reduction of code complexity inside `executeModsAsync()`
Add error message when loaded mod has no `main` property
2023-10-20 12:23:19 +01:00
Dev
33d3e6ce05 move log to correct place 2023-10-19 22:55:53 +01:00
Dev
234cd0b833 Randomise standing loss for dailies 2023-10-19 21:49:38 +01:00
Dev
83590dcc25 Get id if not found in profile 2023-10-19 21:44:10 +01:00
Dev
20b9a39cda Add missing IDs to json and pass throughout code 2023-10-19 21:36:17 +01:00
Dev
fa2a8c6513 Add missing id property to accept quest client response 2023-10-19 21:06:09 +01:00
Dev
11ae41dcff Fix missing text 2023-10-19 20:59:06 +01:00
Dev
489189bd81 Add missing properties to templates 2023-10-19 20:51:16 +01:00
Dev
79dc3cca1b Correct mistake in sending repeatable data to client on quest accept 2023-10-19 20:43:42 +01:00
Dev
d97beda4b7 Rework how repeatable quests are replaced 2023-10-19 20:04:47 +01:00
Dev
57b1fe0733 Improve bad replacement quest error messaging 2023-10-19 19:30:23 +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
5af4abab91 Handle critical errors on mod load better - show player error in console instead of closing it on error 2023-10-19 15:25:52 +01:00
Dev
6589bcc0a2 Show human readable error when two mods have conflciting load order requirements
Improve cyclic error message text
2023-10-19 15:18:07 +01:00
Dev
2507837198 When launcher requests profiles and the exp is null, fall back to 0 - Fixes profile killing launcher listing ability
Use properties without quotes
Update nullguard to use Nullish coalescing
2023-10-19 11:37:07 +01:00
Dev
14c0b73482 Log build date on server start 2023-10-19 11:25:41 +01:00
Dev
e8d3fb805e updates to modLoadOrder 2023-10-18 17:36:36 +01:00
TheSparta
6231d73109 Implemented loadBefore and loadAfter (!156)
This PR adds the ability to set `loadBefore` and `loadAfter` on a mod's package.json, this allows for modders to define an array of mods their current mod needs to load before or after.

Examples:

if we have <u>__MOD1__</u> that has `loadAfter` = `[ "MOD2" ]` the loading order would be:

1 - MOD2
2 - MOD1

if we have <u>__MOD2__</u> that has `loadBefore` = `[ "MOD1" ]` the loading order would also be:
1 - MOD2
2 - MOD1

Begone zzzzzz, name your mods the way you want to.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/156
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-18 14:44:29 +00:00
Dev
1adeed29ef Transfer ConditionCounter and quest status changes incurred during scav raid into pmc profile
Only add quests to scav profile when its a pickup/exploration/elimination quest
2023-10-17 22:04:19 +01:00
Dev
480967ab9a Incldue m4a1 with gas block item in modIsFrontOrRearSight() check 2023-10-17 20:45:40 +01:00
Dev
99cb77d3cf Save scav quests into scav profile when accepting them 2023-10-17 16:31:21 +01:00
Dev
650a3173c8 Implement Pickup quests for scav
It seems like these are scav-only
2023-10-17 16:28:48 +01:00
Dev
f70cbcced7 Set quest side to scav when generated for fence 2023-10-16 18:33:09 +01:00
Dev
4b70bfb60d Improve sourcemap handling in modCompilerService 2023-10-16 18:25:14 +01:00
TheSparta
fe6865b2f0 Added sourcemap generation for typescript mods (!155)
This PR makes it so typescript generates inline sourcemaps when transpiling mods to javascript.

This will make it so stacktraces originating in the mod source code point to the typescript files, lines and columns.

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/155
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-15 16:15:34 +00:00
Dev
04235ca024 Reward more items for daillies/weeklies
Cleanup of `generateReward` item reward pool generation into its own function + return an easier array to work with
2023-10-15 11:46:33 +01:00
Dev
7bc0d3f383 Prevent distance + melee kill quest combination 2023-10-15 10:49:23 +01:00
Dev
f155f5f0d0 Improve code comments 2023-10-15 10:44:12 +01:00
Dev
d44bda96cf make use of isbaseclasses to check for bad items instead of a non-optimal loop 2023-10-15 10:43:27 +01:00
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
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
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
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
0b50385b84 Fix error on death because extract is undefined 2023-10-14 10:31:01 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
14c6104b65 FIx dialogs not showing 2023-08-04 18:58:00 +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
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
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
cbcd431f09 Fixed new profiles failing to start game during christmas/new years event
Add new function in dialog helper for getting dialogs frm profile - creates empty object if none found

Set gift collection time to 48 hours if none supplied
2023-08-03 12:25:09 +01:00
Dev
0c37a76ff6 Improve processFailedQuests() handling of null parameter 2023-08-03 08:38:36 +01:00
Dev
172722a915 Cleanup code and also check if standing is 0 2023-08-02 16:15:33 +01:00
Dev
3fefe90b56 Set lightkeeper rep to 0,01 on account creation, prevents showing 2023-08-02 16:02:44 +01:00
Dev
f5eb96ed48 Refactor of hideout skill gains from area completion 2023-08-02 15:55:33 +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
3876e1ae15 Pull mod sorting code into its own function 2023-08-02 08:50:04 +01:00
Dev
cda89084d3 Show error when trader id can't be found in Traders enum
Exit early when sending messages from trader if no trader supplied
2023-08-02 08:29:23 +01:00
Dev
831dec7e55 Check for and remove dialogs with the key "undefined" 2023-08-01 23:16:06 +01:00
Dev
1bf3dba1a9 Add 1% chance all PMCs in players game are named after them with random prefixes 2023-08-01 13:31:58 +01:00
Dev
82de7c097d Replace old "evil x" pmc name system with v2 2023-08-01 12:51:40 +01:00
Dev
11acbbc0f2 Add Production object if none exists prior to adding a production to it + Move functions around for consistency 2023-07-31 19:18:29 +01:00
Dev
a912f7c9cd When bsg flea blacklsit is disabled, set all items as sellable on flea 2023-07-31 15:41:10 +01:00
Dev
59b2fc3602 Typo fix 2023-07-30 19:29:19 +01:00
Dev
5b7199b952 Update flea prices + Add sytem for adjusting unreasonable high mod prices on flea 2023-07-30 15:22:19 +01:00
Dev
6b8fadef40 Save trader standing changes post-raid 2023-07-30 11:30:31 +01:00
Dev
a514a94b45 Improve wording + Add missing properties from config 2023-07-29 10:16:03 +01:00
Dev
b25342d2f5 Log error when RAID_CONFIGURATION values cannot be found inside getBotDifficulty() 2023-07-28 17:11:18 +01:00
Dev
5a435b363a 25206 2023-07-28 10:01:14 +01:00
Dev
32b32e627b Force afaks into PMCs secure container 2023-07-27 15:01:08 +01:00
Dev
8a26d3f807 Rework items added to container code, now stops after 4 failed attempts
Don't increment cost of loot container total value if item was not placed in container
2023-07-27 13:14:09 +01:00
Dev
2d57bdb0ef Add option to force healing items into PMCs secure
Make bots heal to a 90% instead of 65%

Log when item cannot fit into container when genning bots
2023-07-27 12:15:06 +01:00
Dev
6581896e30 Revert 999 stack size of ammo in bots secure containers + set secure stack count to 20 instead of 15 2023-07-26 22:46:19 +01:00
Dev
ef03d546ce Improvements to PMC gear variety + comment changes 2023-07-26 16:41:54 +01:00
Dev
76dce7a548 Nullguard across multiple dialogueController methods to prevent missing profile/dialog from killing client 2023-07-26 12:47:42 +01:00
Dev
06d39b26a9 Improvements to chat responses
Exit response code when gift code entered

Reply to additional keywords

Randomisd responses + added multiple
2023-07-26 09:38:33 +01:00
Dev
69f08d9f87 Improve comments 2023-07-25 21:14:18 +01:00
Dev
6e33a9c37e Add functionality to fail quests on server after failing them in-raid, fixes failing colleagues part 3 by completing sadist 2023-07-25 20:37:45 +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
0a1913ab49 Fix issue with completing Sadist not failing Colleagues Part 3
Added fail state to colleagues p3
Reworked loop inside `getQuestsFailedByCompletingQuest()`  to use .some() instead
Reworked `failQuests()` to check all fail conditions instead of just the first one
2023-07-25 19:20:17 +01:00
Dev
903dbdf432 Improve emulation of live tarkov data - Remove hideout data from bots that are not pmcs or pscavs prior to being sent to client 2023-07-25 17:44:23 +01:00
Dev
b16d849280 Only add player to users inside getProfilesForMail() if they dont exist 2023-07-25 15:59:39 +01:00
Dev
8178f40b5d Comment improvements 2023-07-25 14:04:21 +01:00
Dev
38b921a7e4 Move gift checks into GiftService.sendPraporStartingGift 2023-07-25 11:17:54 +01:00
Dev
41b4bdc432 Fix bug that casued prapor to send new player gifts regardless of how old profile was
Surround gift sending code with gift recieved check first
2023-07-25 10:36:23 +01:00
Dev
1a80d3fab8 Prevent exception in gift existence check doesnt find a profile 2023-07-25 10:35:12 +01:00
Dev
fd365df8ba FIx getGameConfig() failing on profile creation 2023-07-25 10:22:12 +01:00
Dev
4a491df965 Add stackObjectCount for camora slots on weapons 2023-07-24 21:44:00 +01:00
Dev
777ca0c8ef Fix issue with PMCs generating with one cartridge in magazine + no cartridge in weapon chamber 2023-07-24 21:24:55 +01:00
Dev
7e60ea9d79 Remove dupe items from seasonal gear 2023-07-24 18:47:26 +01:00
Dev
070b9c7ad6 Send total in game time on game start 2023-07-24 16:38:28 +01:00
Dev
848302e769 Convert post-raid player status into an enum and update usages 2023-07-24 16:30:03 +01:00
Dev
ad576a937a Comment improvements 2023-07-24 15:52:55 +01:00
Dev
5c6aafea51 Add enum for notification type 2023-07-24 15:19:31 +01:00
Dev
40149edeb2 axmc bot weapon generation improvements
Slight weapon variety improvement for PMCs

Only generate backpack loot if bot has backpack - reduces warnings during botgen
Move warning mesage to debug

Add sanitar medkit to pmc blacklist

Pass ur to warning message when endpoint body fails json validation

Pass sessionId into `locationController.generateAll()` to help modders when overriding function

Test - Added grizzly x5 to PMC secure containers to see if they heal more when damaged
2023-07-24 13:20:17 +01:00
Dev
f4047489eb Clean up sptFriend generation code - reduce duplication 2023-07-23 12:30:15 +01:00
Dev
c5332986eb Fixed issues with moving items to sorting table after opening sealed container
Also allow money from sold flea offers to enter sorting table

Remove unused addItem() from InventoryController

Add optional param to inventoryHelper.addItem() to allow use of sorting table, default = off
2023-07-23 12:29:00 +01:00
Dev
e84781be5f Handle moving items into sorting table when stash has no space 2023-07-23 11:51:04 +01:00
Dev
253fd3a42a Fix prapor gift system failure on new profile creation 2023-07-23 11:36:41 +01:00
Dev
89ab3a99a8 sealedWeaponContainer - Get random weapon preset if default preset not found 2023-07-23 11:27:04 +01:00
Dev
e4b9be3bea Fix for ragfair failed offers killing profile 2023-07-23 10:47:38 +01:00
Dev
618a41fcd9 Add system to make prapor give giffts the first and second day after starting a fresh character
Add functionality to handle gift service to use locale ids instead of raw text
2023-07-22 23:23:42 +01:00
Dev
41ef304d97 Improve seasonal system to give gifts during event
Add additional equipment to PMCs when event is active
2023-07-22 20:07:58 +01:00
Dev
5071072092 Place fence seasonal item blocking behind config propery 2023-07-22 14:16:19 +01:00
Dev
a04113eaa1 Block seasonal items when not inside active season (christmas/halloween so far) 2023-07-22 14:11:47 +01:00
Dev
c3a4caa38a Convert sptDev profiles quest starter email function to use mail send service 2023-07-22 14:02:13 +01:00
Dev
ab912f519f Fix issue with trader ids not being propigated to the profile 2023-07-22 13:59:21 +01:00
Dev
00a2fbde22 typo 2023-07-22 13:37:40 +01:00
Dev
429d357e89 Correctly parse hours into second for quest code 2023-07-22 13:35:49 +01:00
Dev
a09c813358 Add extra check for messages from traders where dialog type is defined 2023-07-22 13:32:37 +01:00
Dev
25ea9afae4 Typo 2023-07-22 13:14:40 +01:00
Dev
f2caff3c70 Migrate ragfair returnItems() to use new mail send service
Some renames + comments
2023-07-22 13:13:01 +01:00
Dev
3526b2764a Migrate quest fail to new MailSendService 2023-07-22 13:02:42 +01:00
Dev
f3e1dd59fb Migrate quest controller to use new message service instead of dialogHelper 2023-07-22 12:56:15 +01:00
Dev
1617617cf2 Improve localisation to reduce confusion that server mods are loaded, not client and server mods
Small comment typo fix
2023-07-22 11:46:38 +01:00
Dev
de356f8f71 Fix bad ref 2023-07-21 19:37:51 +01:00
chomp
a7b4ebe316 Rework message sending to support gift system (!106)
Co-authored-by: Kaeno <e>
Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/106
2023-07-21 17:08:32 +00:00
Dev
a9e6d5d0fe Stub out more of gift service + allow adjustment of sender for dialogs 2023-07-20 21:29:27 +01:00
Dev
4092ff7c9d Add stub of gift service 2023-07-20 21:07:47 +01:00
Dev
67706f09fc Fix missing import 2023-07-20 20:51:49 +01:00
chomp
e2a1b10989 Fixed bug to when talking with another user. Player messages shows like its being send from player instead of reciever. (!105)
Co-authored-by: Kaeno <e>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/105
2023-07-20 19:27:28 +00:00
Dev
c3232ac979 Refactor of InsuranceService
Add two methods to item helper, `getStaticItemPrice()` + `getFleaItemPrice()`

Changed how getItemPrice() works to return handbook price if its 1 rouble, not if its over 1
2023-07-20 16:04:26 +01:00
Dev
58063ce303 Fix incorrect comment 2023-07-20 14:02:53 +01:00
Dev
78d097498c Update JSONs and add new properties to server interfaces 2023-07-20 13:53:44 +01:00
Dev
6edf331aff Use corect type 2023-07-20 13:22:47 +01:00
Dev
a79a5f7aec Allow modders to set item min/max stack size limits for any item on fence 2023-07-20 12:00:24 +01:00
Dev
d1d3674332 Localise warning messages 2023-07-19 13:16:45 +01:00
Dev
129fe0dc97 Localise server errors 2023-07-19 11:00:34 +01:00
Dev
d001fe8fb5 Adjust the secure container ammo stack sizes for PMCs to reduce chance PMCs run out of ammo 2023-07-18 19:14:52 +01:00
Dev
3cba3bfd4a Additional types added to BaseClasses 2023-07-18 17:16:23 +01:00
Dev
3768742bc8 Improvements to varous types throughout the codebase
Added quest type as enum for IQuest
Added missing values to QuestReward enum
2023-07-18 16:53:15 +01:00
Dev
f28d6c2a6b Added comments to various config files 2023-07-18 15:45:57 +01:00
Dev
942c079284 Rename all globals.ts interfaces to improve naming consistency 2023-07-18 15:44:14 +01:00
Dev
5b3e3e33df extend MinMax for a number of interfaces 2023-07-18 15:18:01 +01:00
Dev
ca48f0e83c Add property to location config to allow adding bot min/max spawn limits for maps
Limit marksman on customs/woods/streets between 2 and 4, woods to 2 and 5
2023-07-17 14:40:54 +01:00
Dev
02d43d491c Save time spent in raid to profile 2023-07-17 09:36:10 +01:00
Dev
965e3efbc7 Handle additional events: ignore/set and ignore/remove
Pass full request object generateDialogueView instead of just id

Handle case when getting dialogue from profile that does not exist

Improve `getMessagePreview()`  nullguard properties that may be missing
2023-07-15 15:01:23 +01:00
Dev
295ed59739 Additional code comments 2023-07-15 14:49:25 +01:00
Dev
5e3d3f5bd7 Rework generateAll() to not have hardcoded skip of "base" map + moved code around + varaible rename
Made generate() private
2023-07-15 11:58:35 +01:00
Dev
7a1140c229 Extract coder into function from updateProfileBaseState + log nickname on game start 2023-07-15 11:03:54 +01:00
Dev
ee3766aad3 Add SPT friend :3 2023-07-15 11:02:48 +01:00
Dev
18054e4004 Extract code into seperate functions inside ProfileController + add logger to class 2023-07-15 11:01:29 +01:00
Dev
5d20b6b781 Further comment improvements 2023-07-15 11:00:35 +01:00
Dev
76804c0326 Replace magic string with enum 2023-07-15 10:58:35 +01:00
Dev
2b6980358c Moved keepalive code out of GameCallbacks and into its own function inside GameControler 2023-07-15 10:57:39 +01:00
Dev
c1e7c70c65 Remove unused getTemplateQuests method 2023-07-15 10:56:47 +01:00
Dev
d2c2a39075 Add comments + improve comment consistency 2023-07-15 10:56:00 +01:00
Dev
195d0e3b1d Add 'fixes' section to core.json, expose some flags for enabling spt fixes
Added flag to enable deletion of modded items from profile - default is off
Fixed issue where loop would stop checking for modded items after finding the first item
2023-07-15 10:53:08 +01:00
Dev
9288a59a77 Convert some privates to protected + some publics to protected 2023-07-15 10:45:33 +01:00
Dev
2df0d44de5 Add mock implementation for client/friend/request/cancel endpoint
Addec comments
2023-07-14 13:03:55 +01:00
Dev
162709a5b0 Improve comments in gamecallback/controller
Move public functions to top of class
Use parameter property instead of hard coded string inside healthTreatment()
2023-07-14 12:55:32 +01:00
Dev
455bde264c Improve offraidEat
use .find() instead of iterating over every item in player inventory
Return client error if consumable item not found + localised
2023-07-14 12:53:31 +01:00
Dev
0b68fb53e0 Add return type to comment 2023-07-13 17:32:50 +01:00
Dev
5ecf16f78c Return correct type instead of any[] 2023-07-13 14:20:31 +01:00
Dev
7a16c7e998 Improvements to skill points given after performing actions:
Item crafting:
HideoutManagement skillpoints give
Intellect skillpoints given

Examining item:
Intellect given

Repairing weapon/armor
Intellect given

Cleanup of hideouthelper + reordering of functions

Flagged rewardSkillPoints() as dupe of PlayerService.incrementSkillLevel()
Flagged incrementSkillLevel() as dupe of QuestHelper.rewardsSkillPoints()
Need to decide which one wins

Added nullguards to incrementSkillLevel() + added optional multiplication by global skillprogression rate
Made it update last access timestamp
2023-07-13 10:26:47 +01:00
Dev
fd56bf040e Convert hideout craft exp magic string into config value 2023-07-12 20:12:16 +01:00
Dev
218eb35ecb Implement hallowen trader icon system
Rework DatabaseImporter.loadImages() to take additional parameter
2023-07-12 19:50:33 +01:00
Dev
ea270a95a5 Move hard coded gameversion/account type values into bot config 2023-07-11 11:58:26 +01:00
Dev
7bb93cdcaf Add clarifying comment 2023-07-10 22:25:59 +01:00
Dev
503551c27e Refactor getClientQuests 2023-07-10 15:48:49 +01:00
Dev
4b83046793 Update package versions where possible
Fix multi-type issue on ragfair tax calss
2023-07-09 19:40:05 +01:00
Dev
d0dcfc523b Move event quest code into own function 2023-07-09 16:31:42 +01:00
Dev
dba6b5f629 Allow modifcaiton of the container airdrop will use (capacity etc) 2023-07-09 14:47:02 +01:00
Dev
ad6b94d8a9 Filter out event quests from data prior to sending them to player
Rework season service to use enum instead of magic strings for event names

Add config property to control showing/hiding non-seasonal event quests from player
2023-07-09 14:45:06 +01:00
Dev
cad5dcd679 Add missing quest assort unlocks to questassort.json
Add function to write to console what quest assort unlocks are missing
2023-07-09 11:33:43 +01:00
Dev
0c0f48b93a Improve comments 2023-07-09 10:00:00 +01:00
chomp
6754d84484 24605 (!103)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/103
2023-07-07 20:24:42 +00:00
Dev
bf4e42b211 Add per bottype loot N values
Made bosses share same value as PMCs
2023-07-05 18:44:35 +01:00
Dev
d6fed1aa0f Cleanup of generateContainerLoot() to improve readability 2023-07-02 15:05:32 +01:00
Dev
d28d1a485d Add additional check to prevent trader item preset exploiting 2023-06-30 19:30:49 +01:00
Dev
343be66806 Add property to ragfair blacklist to toggle removal of damaged ammo packs 2023-06-30 14:00:08 +01:00
Dev
61a04c344d Resolved numerous issues with quest rewards showing a broken icon due to mismatching IDs
Added additional weight when picking a quest assort unlock (money or barter)
2023-06-27 17:23:21 +01:00
Dev
567dc6e289 Add clarifying comment 2023-06-27 11:22:03 +01:00
Dev
8534a35518 Add primorsky ave appt key to handbook with placeholder price of 1 rub 2023-06-26 08:23:08 +01:00
Dev
da6cbee387 Replaced getFleaPriceForItem() check for value = 1 with undefined check + move code above undefined = 1assignment 2023-06-26 08:10:36 +01:00
Dev
28ca90b02c Convert duplicate mods into comma separated string prior to being logged in checkForDuplicateMods() 2023-06-26 07:39:22 +01:00
Dev
7ad1fc3996 Add FiR config and wire up + cleanup of openRandomLootContainer() 2023-06-20 17:19:53 +01:00
Dev
26f29e1522 Add sealed crates to airdrops 2023-06-20 16:59:15 +01:00
Dev
0c31719013 Feature: Add code to handle sealed weapon containers when opened in menu
Add handbook price for sealed containers (default of 100rub)
2023-06-20 16:07:05 +01:00