Commit Graph

966 Commits

Author SHA1 Message Date
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
b3f2e3e2a5 Stop PMCs being genered as usec with side of bear 2024-01-27 16:19:26 +00:00
Dev
30efd8b720 Only add location property to mag cartridge stacks when more than 1 is added 2024-01-27 15:03:15 +00:00
Dev
b6327b7d0d Build fix 2024-01-27 09:03:39 +00:00
Dev
ac78ce1b82 Make name consistent 2024-01-26 22:40:30 +00:00
Dev
26ebe6cfca Add modUrl for mod data 2024-01-26 22:37:40 +00:00
Dev
89b16cf7c1 remove 2 lint errors 2024-01-26 17:57:42 +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
9b09319d3d Cleanup of cancelled player flea offer code 2024-01-26 10:49:06 +00:00
Kaeno
09a07ece66 Fix to Items not retaining upd properties when returning them from hideout area stashes 2024-01-25 23:49:35 +00:00
Dev
9520a2977e Move variable calculation outside of loop 2024-01-25 22:38:42 +00:00
Dev
c116adc0b9 Clenaed up how PMC names are replaced during event 2024-01-25 22:17:18 +00:00
Dev
e8013321ce improve flea result filtering to allow weapon presets to show when searching for 1 build item but ignore presets when searching for mulitple 2024-01-25 15:09:10 +00:00
Dev
9b47c3b50e Fix being unable to buy items via equipment preset menu 2024-01-25 14:40:28 +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
fc9e3f9f59 Fix server error when generating single sptBear/sptUsec 2024-01-25 12:59:45 +00:00
Dev
9fbed0c23f Variable cleanup of generateModsForEquipment() and removal of duplicate call to db 2024-01-25 10:55:33 +00:00
Dev
2c50139dba Round armor/weapon durability values to 2 DP 2024-01-25 09:30:50 +00:00
Dev
7d734a18f1 Bot wave adjustments
Remove gifter from streets
Remove manual waves from streets
2024-01-24 19:49:42 +00:00
Dev
a6eac990aa Add more missing props to ITempalteItem 2024-01-24 17:29:11 +00:00
Dev
008d431cf2 Add missing props to ITemplateItem 2024-01-24 17:20:42 +00:00
Terkoiz
d2254249e6 Fixed and expanded QTE type definitions (!206)
Co-authored-by: Terkoiz <terkoiz@spt.dev>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/206
Co-authored-by: Terkoiz <terkoiz@noreply.dev.sp-tarkov.com>
Co-committed-by: Terkoiz <terkoiz@noreply.dev.sp-tarkov.com>
2024-01-24 16:35:23 +00:00
Dev
e6c3271b23 JSON update 2024-01-24 13:48:02 +00:00
Dev
3ec63ef31d Fix issue with addChildSlotItems() and add additional mods 2024-01-23 21:33:24 +00:00
Dev
b68164b830 Add support for sub locales - initial support for PT and ZH 2024-01-23 20:49:06 +00:00
Kaeno
7f90c52386 Corrected isinsured check 2024-01-23 20:19:53 +00:00
Dev
054aea23e0 Enhance findAndReturnChildrenAsItems with the ability to filter out stored child objects 2024-01-23 20:00:36 +00:00
Dev
2e6574c917 Clean up imports 2024-01-23 16:49:00 +00: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
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
Dev
6378ac6f87 Add back CLIENT_START_TIMESTAMP saving on game start 2024-01-23 10:14:37 +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
32eb8ae35c Refactor handleRecipe() to use addItemToStash() 2024-01-21 20:51:00 +00:00
CZPZ
1551a5e793 feature: add probability for extra rep gain on pmc kills as pscav (!204)
Feel free to rename everything.

We can also use the new function from randomutil and replace code block below on InsuranceController.ts

```
        const maxRoll = 9999;
        const conversionFactor = 100;

        const returnChance = this.randomUtil.getInt(0, maxRoll) / conversionFactor;
        const traderReturnChance = this.insuranceConfig.returnChancePercent[traderId];
        const roll = returnChance >= traderReturnChance;
```

I killed 2 PMCs with 100% chance and gained 0.07 rep (rounding issue probably somewhere else)

![image](/attachments/00f00922-eb18-4fdc-8958-129b680af704)

Some JS problems :S

![image](/attachments/dcbeb1d1-2ee3-4809-890e-e19fe3190840)

Implements: https://dev.sp-tarkov.com/SPT-AKI/Issues/issues/150
Co-authored-by: alimoncul <alimoncul@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/204
Co-authored-by: CZPZ <czpz@noreply.dev.sp-tarkov.com>
Co-committed-by: CZPZ <czpz@noreply.dev.sp-tarkov.com>
2024-01-21 17:39:37 +00:00
Dev
c68c9a72fb Refactor handleScavCase() to use addItemToStash()
blacklist soft armor inserts from scavcase rewards
2024-01-21 16:40:14 +00:00
DrakiaXYZ
e31c52e7ff Add BTR config options (!203)
Also add the cover service entry

Co-authored-by: DrakiaXYZ <565558+TheDgtl@users.noreply.github.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/203
Co-authored-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
Co-committed-by: DrakiaXYZ <drakiaxyz@noreply.dev.sp-tarkov.com>
2024-01-21 08:46:12 +00:00
Dev
693dc4bbb5 Fix PMCs not spawning 2024-01-20 22:50:12 +00:00
Dev
910b5e946c Refactor removeResourceFromArea() to use addItemToStash() 2024-01-20 22:42:15 +00:00
Dev
d112d0fa6e Reworked openRandomLootContainer() to make use of addItemToStash() 2024-01-20 22:13:47 +00:00
Dev
af50cb7869 FIx getProfileTraderPurchase() failing when trader doesnt exist in profile 2024-01-20 20:37:41 +00:00
Dev
80b549a2d5 Migrate getBTC() to use addItemToStash() 2024-01-20 20:26:55 +00:00
Dev
ceba6b3064 Move isItemInStash into inventoryHelper
Cleanup of variable names
2024-01-20 20:15:03 +00:00
Dev
4bca0b7747 Migrate giveProfileMoney() to use addItemToStash() 2024-01-20 20:06:15 +00:00
Dev
399bbb2e3b Add framework for BTR config 2024-01-20 18:47:57 +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
a1f043d088 Fix issie with BuyRestrictionCurrent value persisting between profiles 2024-01-20 00:19:13 +00:00
Dev
4fd37e3a92 Fix all items being free 2024-01-19 22:49:31 +00:00
Dev
134d789a0e Merge branch '3.8.0' of https://dev.sp-tarkov.com/SPT-AKI/Server into 3.8.0 2024-01-19 19:23:11 +00:00
Dev
1c9acbbc2e improve bot generation time 2024-01-19 19:21:51 +00:00
Kaeno
812a6a6884 Fix function removing daily/weekly quests from profile on profile load 2024-01-19 16:41:35 +00:00
Dev
cdb5baac4b Improve variable names 2024-01-19 12:10:51 +00:00
Dev
34b9d318a3 Pull some code out of addLootFromPool() into its own function 2024-01-19 11:57:25 +00:00
Dev
63ca393372 Add short circuit optimisation to isItemIncompatibleWithCurrentItems() 2024-01-19 09:56:18 +00:00
Dev
f3f008e0ec Rename function to help with clarity 2024-01-19 09:52:56 +00:00
Dev
c96b177416 Disable use of sorting table when buying from flea/trader/fence - fixes client error 2024-01-19 09:08:11 +00:00
Dev
0d4fdf11e3 include handling armors without plates 2024-01-18 23:29:07 +00:00
Dev
310762d66d Refactor airdrop loot generation to account for armor plate changes 2024-01-18 23:25:08 +00:00
Dev
ea0d8224e6 Add loop to try multiple armor pieces to find one that's compatible with bots current loadout 2024-01-18 22:36:14 +00:00
Dev
8f12bf479a Generate armor vest for bots first, then rig 2024-01-18 21:39:35 +00:00
Dev
6eeb8c58d6 Improve iRagfairConfig comments 2024-01-18 20:30:13 +00:00
Dev
c8fa31184f Prevent gifter bot being added twice 2024-01-18 12:20:28 +00:00
Dev
bb741f681d Store and process secure container loot items for bots
Give gifter more items
2024-01-18 12:07:32 +00:00
snowythefox811
f6192f1891 Added The ability to have enhancements on armored rigs and helmets. (!200)
Added the vest and headwear classes to be eligible for armor enhancement

Co-authored-by: Snow <Notarealemail@email.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/200
Co-authored-by: snowythefox811 <snowythefox811@noreply.dev.sp-tarkov.com>
Co-committed-by: snowythefox811 <snowythefox811@noreply.dev.sp-tarkov.com>
(cherry picked from commit 35eb9feebf)
2024-01-18 09:08:22 +00:00
Dev
04edb19f14 Allow dogtags to be added to custom bots 2024-01-17 22:17:12 +00:00
Dev
f38d098aae Exclude scav coop exits when choosing pmc exit 2024-01-17 16:47:53 +00:00
Dev
727a85f5fc Improve repeatable quest exit choice code 2024-01-17 16:39:55 +00:00
Dev
43cbe45376 Make players PMC equipment id unique on profile creation 2024-01-17 15:05:01 +00:00
Dev
d9186e0e48 Improve workaround for spawnpoint values 2024-01-17 10:45:25 +00:00
Dev
03a451115c Temp fix to ensure dynamic loot count generator doesnt generate a negative value 2024-01-16 21:55:25 +00:00
Dev
15be241dbf FIx premature exiting of loop 2024-01-16 19:00:21 +00:00
Dev
93edb3e074 Fix player being charged multiple times
Fix issue with  `findBarterItems()` where it would incorrectly wipe out found results each loop
2024-01-16 18:25:03 +00:00
Dev
33d1395dea Add debug logging to getSortedMoneyItemsInInventory() 2024-01-16 17:24:28 +00:00
Dev
fbee59fede When choosing an item to add to a bot, check if the item being added would block an item already equipped 2024-01-16 13:14:48 +00:00
Dev
0166e30dd1 Reduce instances of IItemEventRouterResponse being passed into a function and then returned, its an object and passed by ref, no need to return it
Reduce instances of `IItemEventRouterResponse` being reassigned in a function

Rename `getMoney` to `giveProfileMoney`
2024-01-16 12:21:42 +00:00
Dev
9daa706325 Use correct buycount when buying from fence 2024-01-16 12:08:30 +00:00
Dev
ca1df5ee71 FIx appendErrorToOutput() overwriting warnings instead of appending 2024-01-16 12:04:55 +00:00
Dev
818bb7e37a Refactored flea purchase code 2024-01-16 11:47:40 +00:00
Dev
4d1066b51a Make use of presetHelper instead of rolling own implementation 2024-01-16 10:28:08 +00:00
Spoony
e1a8f26507 Generate ammo box Ragfair offers with cartridges (!198)
#### TL;DR
Previously, Ragfair offers involving ammo boxes weren't generated with cartridges inside of them. This copies a lot of the logic from `InventoryHelper.hydrateAmmoBoxWithAmmo()` to add ammo to offers when they are generated. Made to fix #312.

#### Testing
Purchased various ammo boxes from Flea:

![image](/attachments/340fb349-2589-4b1a-81fa-f8d63f6f1a36)

Purchased ammo boxes are listed as full:

![image](/attachments/f52057d3-efe0-40e7-b64e-8d257a818fa5)

Unloading them produces correct ammunition:

![image](/attachments/33c71f7b-d452-473e-9705-cbad1ecc3f7d)

Co-authored-by: Spoony <Spoony@example.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/198
Co-authored-by: Spoony <spoony@noreply.dev.sp-tarkov.com>
Co-committed-by: Spoony <spoony@noreply.dev.sp-tarkov.com>
2024-01-16 10:26:48 +00:00
Dev
2787b25c8d Items json changes 2024-01-15 23:14:15 +00:00
Dev
34628561ce Filter repeatable explore quest map exits per side 2024-01-15 23:13:57 +00:00
Dev
825db77b1f Move trader purchases over to new system
Fix callback errors not being propigated into client error message
FIx incorrect offer id being passed into `buyItem`
Update callbacks to accept a `buyCount` parameter - solves trader purchase limits being exeeded prematurely
Exit addItemToStash early if warning/error found in output
2024-01-15 14:25:17 +00:00
Merijn Hendriks
bdc505bed6 Add locales fallback (!197)
Fixes [#310](https://dev.sp-tarkov.com/SPT-AKI/Issues/issues/310)

Co-authored-by: Merijn Hendriks <merijn.d.hendriks@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/197
Co-authored-by: Merijn Hendriks <senko-san@noreply.dev.sp-tarkov.com>
Co-committed-by: Merijn Hendriks <senko-san@noreply.dev.sp-tarkov.com>
2024-01-15 12:45:24 +00:00
Dev
cff4a45291 Resolve fence selling helmets that lack inserts 2024-01-15 12:41:54 +00:00
Dev
0d059fbaf4 Remove ancient profile fix 2024-01-15 10:07:57 +00:00
Dev
1d9ff8ace8 Improve buyItem() to also support putting fence purchases through addItemToStash() 2024-01-14 22:30:05 +00:00
Dev
2f07d6083f Fix armor plates/visors/helmet plate inserts not having thier durability altered on ragfair 2024-01-14 22:28:53 +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
c2f390d4ac Make all properties of ITrader optional 2024-01-14 15:06:43 +00:00
Dev
303be64880 Move code to its own variable 2024-01-14 14:38:10 +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
4efb75ea58 Fix typo 2024-01-14 10:27:45 +00:00