Commit Graph

272 Commits

Author SHA1 Message Date
Dev
cb10ec4148 When generating armors for static loot, try and use default preset first before generating randomly 2024-02-06 23:00:39 +00:00
Dev
1101927768 Improve fence price calculation code. Prices now take into account removed item mods + mod durability 2024-02-06 20:44:40 +00:00
Dev
72345abb4a Force plates to spawn in armor items found inside PMC backpacks 2024-02-06 10:53:08 +00:00
Refringe
807ba04967
Resolves Bot Generation Error
- Resolves an issue in bot generation caused by a missing parameter when calling the `shouldModBeSpawned` method.
- Adds a optional chaining operator within a condition to safeguard against undefined errors.

Contributed by: barlog_m

Thank you! :D
2024-02-05 19:16:36 -05:00
Refringe
3a2b24b9b8
Simple Parameter Reassignment Issues
Addresses some of the more simple linting errors regarding the reassignment of function parameters.
2024-02-05 19:03:26 -05:00
Dev
b7d74f1dec Add system to flag weapon slot ids as required.
Applies to stocks/recievers for PMCs
recievers for exusec/raider
2024-02-05 22:02:03 +00:00
Dev
422b7878ab Add getMatchingPreset() and add workaround for silenced DVL choosing wrong barrel mods 2024-02-05 15:36:05 +00:00
Dev
bf5f3316b1 Rename cloned variables to help with readability 2024-02-05 14:43:46 +00:00
Dev
63603f5d9a Reduce grizzly count added to PMC secure to 1 + morphine to 2 2024-02-04 14:43:37 +00:00
Dev
3dacbc98b2 Remove redundant .some() call 2024-02-03 23:11:36 +00:00
Dev
714386c793 Update generateEquipment() to return true when it adds item 2024-02-03 20:29:31 +00:00
Dev
ec9a877cd4 Force item limits to be used with special loot items 2024-02-03 17:34:08 +00:00
Dev
34d761a14f Fix edge case when getModPoolForSlot() gets default handguard for mp5 when the reciever is set to the mp5sd. Now uses correct default template 2024-02-03 16:59:54 +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
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
69a1723646
Fixes Linting Issues
- Reorders imports
- Removes unnecessary `else` control statements
- Simplifies some logic
- Converts key access to dot notation
- Converts Array.forEach loops to for...of loops
2024-02-02 15:00:21 -05:00
Refringe
90492f3aa2
Formatting
Have you been using the recommended VSCode extensions? ;)
2024-02-02 15:00:21 -05:00
Dev
31942b96eb Add marksman rifles to elimination dailies
Add weapon filtering based on range requirement of elimination quest:
> 50 = no pistols/shotguns
< 20 = no DMR/MarksmanRifles
2024-02-01 14:37:02 +00:00
Kaeno
23ceca5279 Blacklist Quest Items from Scav Case 2024-01-31 22:52:55 +00:00
Dev
a45cc3052e Fix issue with choosing a default mod for a weapon when the bot doesnt have the default mod in their mod pool already - would result in missing vital mods causing a fallback to a default weapon preset 2024-01-30 21:14:15 +00:00
Dev
9616f9b34b Improve armor slot compatibility checking 2024-01-30 16:32:03 +00:00
Dev
55154c8b1a improve block checking logic to be dynamic based on pool size 2024-01-29 23:02:09 +00:00
Dev
f3ec237674 Fix issue with weapon mod generation flagging mod as incompatible even though it passes compatibility checks
Stop trying to fit a mod to a weapon after 8 blocked attempts
Created streamlined mod compatability checker function
2024-01-29 22:41:08 +00:00
Dev
58d620d424 Fix weapon mod generation choosing a default mod only to keep it flagged as incompatible 2024-01-29 21:27:36 +00:00
Dev
a9517bb1cc Remove redundant return statements from RagfairOfferGenerator 2024-01-29 11:22:04 +00:00
Dev
e88a661e7e Convert hideout area bonus property + Bonus type property into an enum and update code that uses altered property 2024-01-29 10:42:02 +00:00
Dev
8ec94a1322 Skip gifter when removing christmas items 2024-01-27 22:39:57 +00:00
Dev
5ffa186b0e Build fix 2024-01-27 22:38:16 +00:00
Dev
023bf7ac3f Removed return type from generateId() 2024-01-27 21:01:57 +00:00
Dev
88179f1c4c Remove return type for generateInventoryID() 2024-01-27 20:31:20 +00:00
Dev
ccb610dda6 Add config property forceOnlyArmoredRigWhenNoArmor + wire it up 2024-01-27 18:52:36 +00:00
Dev
734d821630 Improve mod item filtering code 2024-01-27 18:12:13 +00:00
Dev
8ca0c5d82b Remove faceshield from headwear section 2024-01-27 17:08:01 +00:00
Dev
59bc9cb3e0 Move bot hands/head/voice over to weighted lists 2024-01-26 17:57:13 +00:00
Dev
3764d923fd Linting 2024-01-26 15:56:53 +00:00
Dev
c116adc0b9 Clenaed up how PMC names are replaced during event 2024-01-25 22:17:18 +00:00
Dev
fd7050b0ac Fix issue with weapon/equipment mod selection where it would ignore settings when mod slot was required
Fix JSON errors in bot.json
2024-01-25 13:45:42 +00:00
Dev
9fbed0c23f Variable cleanup of generateModsForEquipment() and removal of duplicate call to db 2024-01-25 10:55:33 +00:00
Dev
4ce26ea870 Refactor of RagfairAssortGenerator and associated code that touches it 2024-01-23 14:17:01 +00:00
Dev
b766fa1220 Allow armor items without plates to be listed on flea 2024-01-23 12:46:29 +00:00
Dev
27bc7cfa6e Fixed armors being listed with plates above the allowed level on flea 2024-01-23 11:42:47 +00:00
OkaMoez
1c6b76163b Make accelerated time calculations independent of client (!205)
Changes server accelerated time calculation to be fully independent of client calculations.

Local testing over most of a day showed time acceleration continuing through relogging as a client, and calculated times being synced to about +- 2 seconds between server and client with no drift.

-----------
In #202 I referenced the client side formula for accelerate time:
`In Raid Time = Today's Date + Location Time + Time Since Client Connection * Acceleration`
At the time I didn't know where Location Time was set and conservatively tried to match the server calculations to the client.  Since then I've confirmed that it is set after calling `client/game/start` and holds the accelerated server timestamp from that call.  With this in mind, I'm more confident changing the server calculations and here we are.

Previously each time you started your client, the accelerated time would start counting from your irl time at launch.  This change moves that to the server, so you could leave your server running to have a more live-like experience where you won't be sure of the in raid accelerated time until you log in.

Added benefit of significantly simplifying the `getInRaidTime()` code.

Future work could be done to add save/load support to the server's timestamp to further emulate the live experience where timers won't reset to your irl time unless you wipe the data.  I'd personally lean towards saving it at a server level, not a profile level, to allow multiple profiles to share a single 'wipe'.

-----------

Co-authored-by: OkaMoez <43766412+OkaMoez@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/205
Co-authored-by: OkaMoez <okamoez@noreply.dev.sp-tarkov.com>
Co-committed-by: OkaMoez <okamoez@noreply.dev.sp-tarkov.com>
2024-01-23 10:13:53 +00:00
Dev
c68c9a72fb Refactor handleScavCase() to use addItemToStash()
blacklist soft armor inserts from scavcase rewards
2024-01-21 16:40:14 +00:00
Dev
d112d0fa6e Reworked openRandomLootContainer() to make use of addItemToStash() 2024-01-20 22:13:47 +00:00
Dev
13ce200f80 Small optimisations applied to reateRandomLoot() 2024-01-20 18:08:09 +00:00
Dev
80fdaf65e6 Finalise fence changes 2024-01-20 17:56:19 +00:00
Dev
42b915990e Moe majority of assort generation from FenceService into FenceBaseAssortGenerator
Generate an items children and store in fence assort base

Better handle presets
Fix `removeRandomItemFromAssorts()` not removing all of an items mods from memory
Correctly calculate an items price including its children
2024-01-20 16:20:39 +00:00
OkaMoez
8b2fa7c8dd Adjust server raid time calculations to match client (!202)
This change brings the server in raid time calculation (accelerated time/time you see when choosing a map) to parity with the client.

The time returned by `getInRaidTime()` effectively is the same, but the server can stop using `acceleration - 1` and the adjacent comment has an answer.

-----

The Tarkov client calculates current raid time via the following formula in `Session.GetCurrentLocationTime()`:
`In Raid Time = Today's Date + Connection Time + Time Since Client Connection * Acceleration`

The server currently uses the following:
`In Raid Time = Current Date and Time + Time Since Client Connection * (Acceleration - 1)`

The `Current Time` and `-1` used in the server calculation effectively cancel each other out if `acceleration > 1`.  Removing both should have no effect on the calculated time (not date).

The client side using `Today's Date + Connection Time` is kinda weird.  Using `acceleration = 1`, you'd see the calculated date move 2 days after 24 hours.  That said, I don't see the date portion of the raid time being used, so that might not matter.  Either way, I've matched the formula to avoid any edge cases causing desync.

Co-authored-by: OkaMoez <43766412+OkaMoez@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/202
Co-authored-by: OkaMoez <okamoez@noreply.dev.sp-tarkov.com>
Co-committed-by: OkaMoez <okamoez@noreply.dev.sp-tarkov.com>
(cherry picked from commit afb64c1ebf)
2024-01-20 10:02:59 +00:00
Dev
05533bb166 Prevent no exit data killing client start 2024-01-20 00:19:52 +00:00
Dev
1c9acbbc2e improve bot generation time 2024-01-19 19:21:51 +00:00