Commit Graph

328 Commits

Author SHA1 Message Date
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
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
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
96de45e580 Expose SPT friend nickname in core config 2023-08-09 16:01:51 +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
14c6104b65 FIx dialogs not showing 2023-08-04 18:58:00 +01:00
Dev
4dc290c284 Nullgaurd against mods that adjust map static data 2023-08-04 12:57:16 +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
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
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
b25342d2f5 Log error when RAID_CONFIGURATION values cannot be found inside getBotDifficulty() 2023-07-28 17:11:18 +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
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
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
fd365df8ba FIx getGameConfig() failing on profile creation 2023-07-25 10:22:12 +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
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
253fd3a42a Fix prapor gift system failure on new profile creation 2023-07-23 11:36:41 +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
c3a4caa38a Convert sptDev profiles quest starter email function to use mail send service 2023-07-22 14:02:13 +01:00
Dev
429d357e89 Correctly parse hours into second for quest code 2023-07-22 13:35:49 +01:00
Dev
f3e1dd59fb Migrate quest controller to use new message service instead of dialogHelper 2023-07-22 12:56:15 +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
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
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
3cba3bfd4a Additional types added to BaseClasses 2023-07-18 17:16:23 +01:00
Dev
942c079284 Rename all globals.ts interfaces to improve naming consistency 2023-07-18 15:44:14 +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
2b6980358c Moved keepalive code out of GameCallbacks and into its own function inside GameControler 2023-07-15 10:57:39 +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
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
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
503551c27e Refactor getClientQuests 2023-07-10 15:48:49 +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
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
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
Dev
e4fb8cb40d Refactor getTraderSuits() to make better use of .filter() instead of loops
Moved magic strings into object
Misc comments
2023-06-02 16:21:35 +01:00
Dev
cfbe2739f9 Fix issue with insurance message being incorrect
Moved `sendLostInsuranceMessage()` to `insuranceService` + make it read correct id from locale file
2023-06-01 21:24:23 +01:00
Dev
9bf533a1b1 Add additional comments and formatting fixes 2023-06-01 10:46:16 +01:00
Dev
bb9d3739c4 Move logging 2023-05-30 13:58:02 +01:00
Dev
22279a7353 Log sessionid on game start 2023-05-30 13:55:46 +01:00
Dev
774357c1f3 Move fence logging 2023-05-30 13:36:15 +01:00
Dev
00e1679dd9 Log fence standing changes post-raid 2023-05-30 13:35:34 +01:00
Dev
a4efdf9b43 Revert "Store the location insured gear was lost on + time it was lost against insured items in profile"
This reverts commit 77508ace73.
2023-05-27 22:39:32 +01:00
Dev
72239e4434 Rename variables for clarity 2023-05-27 22:31:43 +01:00
Dev
77508ace73 Store the location insured gear was lost on + time it was lost against insured items in profile 2023-05-27 22:31:24 +01:00
Dev
1a3c107f0a Remove duplicate method that does same as storeLostGear() 2023-05-27 22:26:58 +01:00
Dev
c489db81b1 Protect loop from undefined error inside fixBrokenOfflineMapWaves() when map has missing waves array 2023-05-27 19:03:52 +01:00
Dev
e2b1d4d0c6 null guard against a map without a base json inside fixBrokenOfflineMapWaves() 2023-05-27 19:02:30 +01:00
Dev
17d517e4a9 Improve logging 2023-05-24 19:19:05 +01:00
Dev
17afc9e460 Add endpoint stubs and improve request/response objects 2023-05-20 18:37:39 +01:00
Dev
dcd1da28a6 Refactor InsuranceController.processReturn() 2023-05-19 17:39:26 +01:00
Dev
4d27efd9d1 Additional fix when purchasing clothing 2023-05-15 19:18:42 +01:00
Dev
ce63d5418b Fix error on purchasing clothing from ragman 2023-05-15 18:37:09 +01:00
Dev
2c3e61b413 Refactor endOfflineRaid() 2023-04-24 11:57:19 +01:00
Dev
9fff59f464 FIx typo, no more pies 2023-04-23 13:44:15 +01:00
Dev
9f8bfae75d Refactor of buyClothing() 2023-04-23 12:17:18 +01:00
Dev
d284ca47d4 Refactor wearClothing() 2023-04-23 11:38:57 +01:00
chomp
7974e4531b Refactor functions (!90)
(cherry picked from commit f6fc6e41c0)

Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/90
2023-04-22 22:41:04 +00:00
Dev
102584e24b Workaround for bad shotgun dispersion values 2023-04-08 22:17:04 +01:00
Kaeno
ca931165b2 Fix: Fixed some ragfair issues (!86)
Fixed bug with removing offers from flee and item returning too quickly.
Fixed bug with error message that would show on removal of offers.
Expose property expireSeconds in ragfair.json.

Co-authored-by: Kaeno <>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/86
Co-authored-by: Kaeno <kaeno@noreply.dev.sp-tarkov.com>
Co-committed-by: Kaeno <kaeno@noreply.dev.sp-tarkov.com>
2023-04-06 16:23:52 +00:00
Kaeno
33195f8efb Fix: Workaround fixing marksmans not spawning on maps in function. fixBrokenOfflineMapWaves (!84)
Fix: Workaround fixing marksmans not spawning on maps in function fixBrokenOfflineMapWaves
Co-authored-by: Kaeno <>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/84
2023-03-29 19:50:02 +00:00
Dev
27a0df2d92 Fix: Improve InventoryController.toggleItem() to handle items without a upd property
Rewrote loop to use .find()
Added comments + logging
2023-03-26 16:52:40 +01:00
Dev
43ad523dce Fix: null guard bonus check during upgradeComplete 2023-03-25 16:35:38 +00:00
Dev
990c33b9c6 Feature: expose 3 variables to PMC messages: playerLevel/playerName/playerSide 2023-03-22 17:12:19 +00:00
chomp
d595e26ee6 Feature: Allow PMCs that kill the player to message them a positive/negative message (!81)
Store bots spawned in raid inside cache (`MatchBotDetailsCacheService`)
Clear cache after raid

Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/81
2023-03-22 10:25:34 +00:00
Dev
415b73d674 Feature: Update incrementSkillLevel() call to replace hard coded value with value from globals 2023-03-21 14:35:29 +00:00
Dev
249730ee65 Fix: return the found quest 2023-03-21 14:22:45 +00:00
Dev
1fc35881d8 Refactor: Update various functions with changes from code review 2023-03-21 14:19:49 +00:00
Dev
927273d71d Feature: Add ability to define different types of airdrop loot containers
+ Fixed a typo in `createRandomloot()` function name
+ Added more generically named`getWeightedValue()` function as future replacement for `getWeightedInventoryItem()`
+ Changed `LootRequest` into interface

Added:
Weapon/armor
Barter
Medical/Food
Mixed
2023-03-18 17:29:26 +00:00
chomp
b44f62bb99 Feature: send launcher descriptions of profiles when calling connect() (!70)
Localise description text
Add `IConnectResponse` object for LauncherController.connect()
Move server name into core.json config

Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/70
2023-03-15 14:18:55 +00:00
chomp
f74031b4d5 Feature: Ensure chosen extract for repeatable quest always has a chance above 0 (!68)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/68
2023-03-14 12:39:36 +00:00
chomp
08b760cf4c Feature: expand PMC response system to include different message suffixes (!64)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/64
2023-03-13 14:02:39 +00:00
chomp
c81633ac38 Fix: resolve issue with handing in item to quest that allows multiple types of items to be handed in (e.g. punisher p5 - 2 types of makarov can be handed in) (!63)
Moved some error logging in handoverQuest() to separate functions
Renamed `itemHandoverMode` to `isItemHandoverQuest`

Included some additional pmc responses

Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/63
2023-03-13 09:34:04 +00:00
chomp
a79c04ad28 Feature: warn players who have botReload skill active (!58)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/58
2023-03-10 11:26:59 +00:00
chomp
d192044b68 Fix: remove redundant reward code as quests are set to ready to start, not started (!56)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/56
2023-03-09 11:53:19 +00:00
chomp
1cfd6d76bb Fix: Give dev-usec profiles starting rewards (!53)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/53
2023-03-08 22:41:57 +00:00
chomp
1137912d51 Feature: Add system that allows PMCs to send text messages to player post-raic. Can be positive or negative (!40)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/40
2023-03-08 13:26:32 +00:00
chomp
e4bc6c8d68 Feature: Improve numerous endpoints + add function for sending messages to player (!39)
Co-authored-by: Dev <dev@noreply.dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/39
2023-03-07 22:25:23 +00:00
Dev
3d849b427b Squashed 22 commits in an attempt to fix Gitea object bloat 2023-03-05 22:02:56 +02:00
Dev
e1310d74ca Add Repo 2023-03-03 15:23:46 +00:00