Dev
8c7b5da9ff
Rename variable for clarity
2023-11-24 15:38:37 +00:00
Dev
5a2f6b7581
Optimisation: addAmmoIntoEquipmentSlots()
, if it fails because of lack of space, break out of loop and skip trying to add remaining ammo
2023-11-24 15:35:19 +00:00
Dev
a0016ae2fa
Parse result inside getRandomizedMagazineCount()
to number before returning
2023-11-24 15:31:16 +00:00
Dev
0c658745eb
Add missing base class
2023-11-24 15:26:56 +00:00
Dev
27e16e09d7
log when addLooseWeaponsToInventorySlot()
fails to add weapon to bot inventory
2023-11-24 15:26:41 +00:00
Dev
7342849f61
Resolve getRandomizedBulletCount
returning extremely large ammo values for rotating grenade launchers
2023-11-24 15:24:46 +00:00
Dev
dcb579116c
Fix regression in fixIncorrectAidValue
if check
2023-11-23 20:21:02 +00:00
Dev
ddb9917c6b
Rework of post-raid scav/pmc profile handling:
...
Moved logic out of `updateProfileBaseStats()` and into separate functions for pmc/scav, left profile-agnostic code alone
new functions `updatePmcProfileDataPostRaid` and `updateScavProfileDataPostRaid`
scav - Only copy active quest progress from client profile to server scav profile
scav - dont attempt to update trader standings, none exist on scav profile
scav - dont transfer psot-raid limb damage to server profile
Update quest status values similarly to PMC quests post raid to ensure they're consistent with existing quest data in profile
Simplifies `migrateScavQuestProgressToPmcProfile`
made various warnings debug instead
2023-11-20 16:33:04 +00:00
Dev
d2209114c9
Rename parameter as it can be scav or pmc profile
2023-11-20 15:07:59 +00:00
Dev
525e5cd21b
Fix length comparison not working as its an object, not an array
2023-11-20 15:05:35 +00:00
Dev
9929cf8c33
Clone handbook data before caching it
2023-11-20 13:47:47 +00:00
Dev
1abc7e3604
Handle failing a quest while raiding as scav
2023-11-20 11:19:11 +00:00
Dev
ccc017c976
Fix issue with scav case rewards being collectable twice
2023-11-20 10:22:03 +00:00
Dev
2132ea7adb
Fix issue with hideout crafts being collectable twice
2023-11-20 10:14:21 +00:00
Dev
f727b13215
prevent collection quests requesting more than 1 ammo per repeatable quest
2023-11-19 20:29:41 +00:00
Dev
aeea8f6e49
Guard against empty RepeatableQuests
array in profile
2023-11-19 16:12:20 +00:00
Dev
396b56d08d
Expose uniqueItemCount
config value for use in choosing total items to return in Completion
quests
...
Weekly quests now require more items than dailies
2023-11-19 14:58:45 +00:00
Dev
1def90e9d6
Improve handling of how reward items have their stack count randomised
...
Separated out how weapons are chosen as rewards
Lowered chance of skill reward
Added additional reward types to most traders
2023-11-19 13:21:34 +00:00
Dev
8cb4833001
Fix reward creatio code giving 1 extra reward compared to what was specified
2023-11-19 10:54:06 +00:00
Dev
ee3096328e
Exit reward finding loop when reward pool is empty
2023-11-19 10:52:50 +00:00
Dev
8fe9fb9391
Adjust getWeaponRepairSkillPoints()
to never return a value below 0
2023-11-18 21:59:48 +00:00
Dev
aed65ce1cb
Rework getWeightedCompatibleAmmo()
to loop over cartridges until it finds one compatible instead of giving up after the first failure
2023-11-18 18:46:03 +00:00
Dev
b0afad72dd
Randomise min durabiltiy value for weapon/armor collection quests to be 60 or 80%
...
rename param for clarity
2023-11-18 12:33:00 +00:00
Dev
79cb201b82
Split maxExtracts
into additional maxExtractsWithSpecificExit
for repeatable quests
2023-11-18 12:32:03 +00:00
Dev
fa1e15897a
Only heal bodypart if player chose hp healing in post-raid therapist healing screen
2023-11-18 11:33:06 +00:00
Dev
5e919f4793
Only add xp reward to repeatable quests when value is > 0
2023-11-18 11:13:36 +00:00
Dev
0abcd8b3b7
Further adjustments to daily/weekly reward xp/roubles/skill reward chance
...
Adjusted fence quest values in level increments of 10 + make fence reward Euros instead of Roubles
2023-11-17 18:39:08 +00:00
Dev
c2aaf9c6fb
Add workaround for stm-9 generating with an impossible configuration and being reset to default
2023-11-17 12:40:23 +00:00
Dev
ba2666f801
Set production
property to null when no updates are to be sent to the client
2023-11-17 11:13:14 +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
b70474133b
Fix multiple locations in code where an array for hideout areas is incorrectly accessed like a dictionary
2023-11-16 14:33:39 +00:00
Dev
15082afde2
Fix reorderHideoutAreasWithResouceInputs()
off by one error because it was checking the index instead of finding the area type
2023-11-16 14:30:08 +00:00
Dev
fce724b380
Fix water collector craft not resetting after completion of craft
2023-11-16 12:55:57 +00:00
Dev
925d9b3f07
Add fence rep gain on taking COOP extract
...
Refactored fence rep handling code for Car extracts
2023-11-16 11:38:55 +00:00
Dev
467c87b026
Fix trader repair not costing any money
2023-11-15 20:17:24 +00:00
Dev
6dddeed6a8
Add 25% chance to double daily reward stack (item should be stackable and not weapon)
2023-11-15 19:43:35 +00:00
Dev
3b053b741b
Allow custom profiles to use localied descriptions
...
Fixed an inconsistently named locale key
Added logger to LauncherController
2023-11-15 11:16:56 +00:00
Dev
8cda48cac7
Get a more accurate price for weapon preset rewards
2023-11-14 23:12:50 +00:00
Dev
c9dc0d2192
Make each trader reward different types of items
...
Prevent trader from rewarding more than 1 weapon
Fixed trader failing to find default weapon to send as reward
2023-11-14 23:05:34 +00:00
Dev
cd36e3993d
When rewarding a weapon for a repeatable quest, choose a random default preset if the chosen weapon has no defaults
2023-11-14 21:43:37 +00:00
Dev
909d79f415
Remove unnecessary removeMapAccessKey()
method, now handled in client
2023-11-14 17:34:44 +00:00
Dev
bb8677bc65
Rework payMoney()
to handle taking money from post-raid therapist healing
2023-11-14 17:06:11 +00:00
Dev
844cb12cc1
If offer to remove is not found, don't reduce rep loss
2023-11-14 16:09:45 +00:00
Dev
1021a945cb
Fix insurance costing 0 roubles
2023-11-14 11:46:51 +00:00
Dev
6cf91ad923
Skip null production objects inside handleRecipe()
2023-11-13 12:01:48 +00:00
Dev
0666aad779
Implement Unbind
event handler
...
Occurs when player moves item from quick access panel to inventory
Small optimistion for `Bind` event, once item is found, exit loop
2023-11-12 10:10:34 +00:00
Dev
5f774bf3c8
Exit loop after deleting hideout craft
2023-11-11 20:15:46 +00:00
Dev
8fda5395e6
FIx getFleaPriceForItem()
handing items with a price of 0 incorrectly.
...
Only show error when price returned is undefined
2023-11-10 20:11:36 +00:00
Dev
d2f4327871
Update updateProductionTimers()
to handle Progress
value being undefined
2023-11-10 19:18:58 +00:00
Dev
37029791da
Nullguard removeQuestFromScavProfile()
accessing a null scav quest array
2023-11-10 19:13:14 +00:00
Dev
7849a730f2
Fix nullguard firing for all traders
2023-11-10 19:00:04 +00:00
Dev
ade4875362
Change warning in checkTraderRepairValuesExist()
to use nickname
2023-11-10 10:37:26 +00:00
Dev
c4c923f8dc
Update checkTraderRepairValuesExist() to not use .clone
2023-11-10 10:31:22 +00:00
Dev
21dd62269e
Log server values on start
2023-11-09 22:27:20 +00:00
Dev
4580c1cea8
FIx hideout crafts flaged as needFuelForAllProductionTime
not progressing
2023-11-08 16:17:14 +00:00
Dev
dfd1bcc589
getTemplatePrice(), when an item cannot be found in the handbook, add it with the price of 0 instead of 1
2023-11-07 21:21:34 +00:00
Dev
7941675102
getItemPrice()
if static price is 0 and dynamic price is missing, return 0 instead of undefined
2023-11-07 21:13:41 +00:00
Dev
1f622a0760
Add Trader Repair Value on game start
2023-11-07 20:00:02 +00:00
Dev
8fb8b66afb
Add Charisma bonus when using repair kit (50% chane of no toall durability loss on kit use)
2023-11-07 17:01:24 +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
d10c226db0
Add Melee skill to enum
2023-11-07 15:05:59 +00:00
Dev
7defca2ae4
Add ability for repeatable quests to reward skill points
...
Slightly increase rep gain from weekly quests
2023-11-07 14:38:13 +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
Dev
206509359e
Add Charisma points when insuring items
, points to reward is a total guess until data can be obtained
2023-11-07 10:40:14 +00:00
Dev
938e439c81
Use daily quest count value from globals instead of hard coding it
2023-11-07 10:20:59 +00:00
Dev
1510237b01
take into accout Charisma skill at elite level when calculating daily quest count
2023-11-07 09:58:58 +00:00
TheSparta
a244e89abe
Skip mods that are duplicated ( !165 )
...
- Instead of loading duplicated mods, it now skips all of them.
- Changed a few localisation strings, deleted the ones that became outdated.
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/165
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-11-06 14:51:31 +00:00
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
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
8f70b03284
Fix hasBuyRestrictions erroring on bad input data
...
Fix isItemTplStackable erroring on bad input data
2023-11-05 12:37:17 +00: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
Dev
75958ee7d2
Replace hard coded blacklist in isValidItem()
with more appropriate call to ItemFilterService.isValidItem()
2023-11-04 10:49:52 +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
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
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
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
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
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
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
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