github sp-tarkov/build v3.6.0
SPT 3.6.0 (25206)

latest releases: 3.11.4, 3.11.3, 3.11.2...
9 months ago

Requires EFT 0.13.1.3.25206 (released 28th July 2023)

(If you have already installed 360, download the zip at the bottom and extact into your existing 360 folder, overwrite everything to get the fixes below)

  • 360 Hotfix #3 2023/08/04:
    • Added TerraGroup Trail Part 16/17/18/19
    • Fixed crazy assault scav warnings when entering a raid
    • Added workaround for custom traders killing server when accepting/completing their quests
      v2 of profile fixer system - configs/core.json-removeModItemsFromProfile Removes a lot more mod-specific data from profiles, allowing them to load into spt
    • Added missing nloot value for crazy assault scavs
    • Fixed server crashing when creating a new profile during christmas/new years event
    • Update missing quest assorts with more accurate stack sizes/prices (if you notice they're wrong and have accurate data, tag me on discord)
    • Lower the absurd flea price for a AKS-74U
    • Newly created profiles start with 0.01 lightkeeper rep to prevent them seeing the LK rep-gain quest
    • Added small chance PMCs carry secondary weapon, mostly SMGs + small chance of fn40gl
    • Fixed a server error when trying to randomise items for sale on fence when the underlying db item has no _props data
    • Handle missing data that prevented raids from starting on custom maps without properly configured static loot data
    • Fixed a server error when repairing an item using a repair kit that lacks a resource count value
    • Added crazy assault scav to PMC brain pool
  • Hotfix #2 2023/08/02:
    • Added TerraGroup Trial Event quests 10, 15
    • Added placeholder trader assorts for most assorts we're missing that're unlocked via quest (not ideal but better than not existing on trader at all)
      • Default to 25k rouble price
      • 10 in stock
      • No buy limit
    • Added Kappa gift code
    • Added more PMC message responses
    • Fixed server error due to having water-filter in water collector before starting game for first time (affects custom mod profiles)
    • Show an error when custom trader has not added itself to Traders enum list
    • Prevent trader messages disappearing when custom trader sends quest message
    • Fixed an error where event TerraGroup Trial Event quest 13 couldn't find the correct hideout DSP craft
    • Fixed English locale file missing its formatting
  • Hotfix #1 2023/07/31:
    • Regenerated map loot with new dumps gathered from the last 3 months
    • Added ammo weightings to level 50+ PMCs to favor higher tier ammo
    • Added Korean server translations (thanks Gomeng)
    • Added TerraGroup Trial part 12 quest
    • Added extra 20g + 9x18PM ammo types to PMC ammo pool
    • Made all items sellable on flea when BSG flea blacklist disabled in configs/ragfair.json
    • New SPT Developer profiles start with skills at level 40

Release notes

We started by looking into adding a gift-sending system to emulate recieving promo-code gifts. The existing system didn't support what we needed so it turned into rewriting and reverse engineering a large part of how SPT sends messages to the player.

One nice side effect was the above system made it very easy to add code to simulate how live-Prapor sends gifts to new accounts their first week.

This also led us to writing code to handle sending messages to the server, not just receiving (check your friend list!)

While creating the above, BSG released two patches which delayed us. However, it did result in us adding multiple additional event quests.

We quickly concluded we have a lot of event quests! they're scattered about and have various forced starting levels which were unpleasant to maintain, it wasn't ideal and we came to the conclusion something had to be done about them. If you've read this far, here's a code you can type to the SPT friend you have in game, TRAMBON. We decided the fix was to create an event quest handling system to hide event quests by default but allowing them to be shown via config edit.

We realised event quests are rather complex and can have different, types 'e.g'. loose events, seasonal etc.

So began the rewrite of seasonal event handling and incorporating event quests into it. We were able to include seasonal gifts because of the gift-sending system mentioned above, check your mail in the first week of January!

While the above was occurring bug reports kept coming in and fixes were written where possible, fixes from shooting Zryachiy causing errors to sealed weapon containers erroring when the weapon it picked didn't have a default preset to bots generating with empty magazines sometimes.

Another large improvement was code comments. Considerable time was spent adding and amending code comments to assist modders with the creation of mods.

I'm missing lots of other things that were done (generating the new crazyAssaultEvent and deciding to generate all bot equipment/loot again, manually adding in quest items to each maps loose loot file, creating a system to adjust badly priced weapon mods on the flea) but that's the bulk of it, enjoy.

Mod compatibility

  • 95% of server mods made for 3.5.8 are compatible
  • 0% of client mods are compatible and will need updates (using outdated client mods will break your game/profile)

Profile compatibility

  • 3.5.x profiles are compatible with 3.6.0

Automatic install instructions (Recommended)

Manual install instructions

  • Download Escape from Tarkov from https://www.escapefromtarkov.com/
  • Copy the live Tarkov folder to another location, call it something like "spt360" (Do NOT copy to a protected location, e.g. your Desktop or Program Files)
  • Do not remove the live Tarkov folder, it must remain in the original install location for SPT to function
  • Copy contents of RELEASE-SPT-3.6.0-25206 (found at the bottom of this post) into your newly created 'spt360' folder using 7Zip
  • Run Aki.Server.exe and wait for it to start
  • Start Aki.Launcher.exe
  • Enter any username into the username box (NOT the same details as your live account)
  • Click login - choose the edition you want (EoD, Standard, etc)
  • Click 'Start game'

Additional notes on installing manually can be found here

Upgrading from 3.5.x / Migrating existing profiles to SPT 3.6.0

  • Make sure your live EFT is updated
  • Download and copy the installer into a new folder, name it something like 'spt360'
  • Run it and let it complete, this will be your new SPT folder
  • Copy the user/profiles folder from your old SPT 3.5.x folder into your new SPT 3.6.0 folder
  • It is strongly recommended to download updated versions of any mods you had instead of copying them over from your old SPT folder
  • Delete your old SPT folder to save space

CHANGES

ADDED

  • Added new crazy scav event bot to various maps with Odobolobos N item on their person
  • Disabled event quests by default, can be enabled via showNonSeasonalEventQuests property in configs/quest.json (profiles with event quests accepted will keep them)
  • Removed all level requirements added to event quests, they all start at level 1, same as live
  • Added new Quests:
  • Prapor now gives new players gifts at the end of their accounts first and second day
  • A new years gift is sent to player the first week of a new year
  • Added a new friend to your friend list, you should say hello :)
  • Added Cocktail Tasting event quest (disabled by default)
  • Improved Intellect and HideoutCraft skill XP given when:
    • Inspecting
    • Crafting
    • Repairing with kit
  • Added the property removeModItemsFromProfile to configs/core that allows the server to go through your profile on game start and remove modded items. Intended for use when profiles break after removing a mod but modded items remain. By default this is off
  • Added ammo weightings to level 50+ PMCs to favor higher tier ammo
  • Added 12.7x108mm BZT-44M cartridge to scavcase rewards blacklist
  • Added bossZryachiy/followerZryachiy to PMC enemy type list
  • Added a system to handle promo codes
    • Start a chat with 'SPT' in your friends list and try sending a promo code, e.g. PINEWOOD
  • Added mod_hammer mods to be dynamically generated for PMCs
  • Added extra 20g + 9x18PM ammo types to PMC ammo pool
  • Added Rhino 200DS 9x19 revolver to PMC sidearm pool
  • Added code to handle sending trader messages after a quest is failed in-raid
  • Added code to fail adding loot items to a bots container after 4 failed attempts
  • Generate missing trader assort quest item barters as placeholders

UPDATED

  • Updated SPT to work with latest EFT patch 25206
  • Regenerated map loot with new data
  • Updated flea prices
  • Regenerated bot equipment, loot and difficulty settings
  • Updated Jaeger trader icon to match live
  • Added code to check for and adjust weapon mod prices on the flea that are very large and adjusted them down, can be configured via configs/ragfair.json/unreasonableModPrices defaults to On and will adjust mods over 9x their flea price
  • Small optimisation to IsEnemyPatch.cs
  • SPT DLLs will now live in BepinEx/plugins/spt, this will make deleting client mods easier - delete everything except the spt folder
  • Increased stack count of spare ammo in PMCs secure container - should reduce chance PMC runs out of ammo
  • Updated ModLoader: loading %s mods text to ModLoader: loading %s server mods
  • Localised a lot of error and warning messages
  • Updated item blacklist to include Sanitars surgical kit
  • Improved PMC weapon mod variety slightly
  • Blacklisted sanitar medkit from PMC loot
  • Skip generating backpack loot for a bot if they don't have a backpack equipped - less warnings on bot generation
  • Forced a variety of healing items into PMCs secure container, controlled by configs/bot.json config property botGenerationBatchSizePerType
  • Made shooting Zryachiy or his followers reduce Lighthouse keeper rep (now triggers rep-gain mission)
  • Added small chance PMCs carry a secondary weapon, mostly SMGs + small chance of fn40gl
  • Trader standing changes that occur mid-raid persist out of raid
  • Made all items sellable on flea when BSG flea blacklist disabled in configs/ragfair.json
  • New SPT Developer profiles start with skills at level 40
  • Updated Spanish locale in Launcher (Thanks to ShadowXtrex)
  • Updated French locales (Thanks to Nehax)
  • Updated Korean server translations (Thanks Gomeng)

FIXED

  • Fixed client error when shooting Zryachiy or his followers
  • Fixed PMCs being generated with one cartridge in their magazine 30%~ of the time
  • Fixed PMCs being generated with no cartridge in their weapon
  • Fixed PMCs not healing bleeds and slowly bleeding to death
  • Fixed majority of weapon generation errors when constructing an AXMC weapon for PMC
  • Fixed multiple missing commas in quest.json
  • PMCs were not appearing as roles other than standard (developer/sherpa/emmisary)
  • Fixed dogtag related error that would show in log when player died
  • Fixed bossZryachiy causing client errors in lighthouse
  • Fixed modded item checker stopping after finding one modded item in a profile
  • Fixed seasonal items appearing on fence when the seasonal event was not active
  • Fixed opening a sealed weapon container when your stash was full would result in the items being lost. Items are now placed in sorting table
  • Fixed sealed weapon containers failing to find a weapon if it has no default presets
  • Removed Vector .45 from sealed weapon container loot pool as it has no presets
  • Fixed bug where configs/inraid.json/MIAOnRaidEnd would not work when set to false
  • Fixed MTs-255-12 12ga cylinder having incorrect ammo data for PMCs
  • Fixed revolver-style weapons being generated with missing StackObjectsCount values
  • Fixed a bug that caused loot items that fail the container size check to still be counted towards the total loot cost count
  • Fixed server crashing when creating a new profile during christmas/new years event
  • Fixed a server error when trying to randomise items for sale on fence when the underlying db item has no _props data
  • Handle missing data that prevented raids from starting on custom maps without properly configured static loot data
  • Fixed a server error when repairing an item using a repair kit that lacks a resource count value
  • Fixed server error due to having water-filter in water collector before starting game for first time (affects custom mod profiles)

MODDERS

  • Updated server to es2021
  • Updated server and mod example dependencies details
  • Added PluginErrorNotifierPatch class to Modules project to assist with showing player they have problems with their client mods
  • Added SpawnProcessNegativeValuePatch class to solve the client getting confused with how many bots are alive, resulting in bots spawning forever
  • Added per bot type loot N values instead of just scav and pmc to bot.json/lootNValue
  • Deprecated BotLootGenerator.getRandomItemFromPool() in favor of getRandomItemFromPoolByRole(), it will be removed in a later patch
  • Updated package versions where possible in Server project
  • Updated trader questassort.json files to include assort/quest combos where the assort cannot be found, will log these missing combos on server start
  • Added eventQuests property to configs/quest.json, this contains a dictionary of event quests and various details about them
  • Added showNonSeasonalEventQuests property to configs/quest.json, this controls if event quests are shown to the player
  • Added type to each event object in configs/seasonalevents.json, this maps directly to the SeasonalEventType.ts enum
  • Added event filtering code to QuestController/getClientQuests(), will remove seasonal quests when event is not active
  • Added new function seasonalEventService.isQuestRelatedToEvent()
  • Refactor of SeasonalEventService.ts to work with above changes
  • Added containerIds property to configs/airdrop.json to allow adjustment of what crate is dropped based on the drop type (food/weapon/barter/mixed)
  • getAirdropLoot() now returns a IAirdropLootResult instead of a LootItem[]
  • Added Halloween trader icons to images/traders/halloween/
    • Added SeasonalEventService.adjustTraderIcons()
  • Refactored DatabaseImporter.loadImages() to accept a directories array instead of doing this.vfs.getDirs(filepath) inside the function
  • Added DatabaseImporter.getSptDataPath()
  • Exposed configs/hideout.json/expCraftAmount instead of having it hard-coded inside HideoutController.ts.handleRecipe()
  • Flagged rewardSkillPoints() as dupe of PlayerService.incrementSkillLevel()
    • Improved function to do same as rewardsSkillPoints()
  • Flagged incrementSkillLevel() as dupe of QuestHelper.rewardsSkillPoints()
    • Improved function to do same as incrementSkillLevel()
    • Made it update skills last access timestamp
  • Added useSkillProgressRateMultipler parameter (default false) to PlayerService.incrementSkillLevel(), will enable use of multiplier SkillsSettings.SkillProgressRate from globals on the amount passed in before updating skill XP value
  • Replaced uses of Console.WriteLine with correct Logger.LogX
  • Added additional nullguards to IsEnemyPatch.cs
  • Added additional nullguards to DogtagPatch.cs and to ignore when dogtag item is null if the calling code is the player
  • Stubbed out method to handle client/friend/request/cancel
  • Stubbed out method to handle client/mail/msg/send
  • Stubbed out method to handle Handle client/friend/ignore/set
  • Stubbed out method to handle Handle client/friend/ignore/remove
  • Converted various private methods/variables to protected
  • Added fixes object to configs/core to allow toggling of shotgun dispersion fix + removing mod items from profile
  • Added addOpenZonesToAllMaps and addCustomBotWavesToMaps to configs/location
  • checkForOrphanedModdedItems() takes an additional parameter, sessionId
  • Removed getTemplateQuests function as it no longer appears to be used
  • Refactored Modules/CheckAndAddEnemyPatch.cs
  • Refactored Modules/LighthouseProgressionClass.cs
  • Added getKeepAlive() to GameController.ts
  • Added resetAllTradersInProfile() to ProfileController.ts
  • Added deleteProfileBySessionId() to ProfileController.ts
  • Used profile nickname is logged when game starts next to session id
  • Added resetSkillPointsEarnedDuringRaid() to InRaidHelper.ts
  • Reworked generateAll() in LocationController.ts to not automatically skip maps called "base", instead it will skip maps without a base json
  • Added additional types to BaseClasses
  • Added lots of comments to various config interfaces e.g. IAirdropConfig.ts
  • Renamed all globals.ts interfaces to improve naming consistency
  • Replaced multiple duplicate xyz interfaces with one in models/eft/common/Ixyz.ts, renamed to Ixyz
  • Added quest type as enum for IQuest, models/enums/QuestTypeEnum.ts
  • Added missing values AssortmentUnlock + ProductionScheme to QuestRewardType.ts
  • Added config property blacklistSeasonalItems to configs/trader.json to control if seasonal items should be sold by fence when seasonal event is not active. Default is true
  • Added GiftService for sending gifts to player, reads gift data from configs/gifts.json
  • Added MailSendService to help make sending messages to player easier than using createMessageContext() and addDialogueMessage()
  • Converted INotification/type from string into enum NotificationType
  • Converted ISaveProgressRequestData/exit from string into enum PlayerRaidEndState
  • Pass sessionId into locationController.generateAll() as parameter
  • Show URL of endpoint if JSON inside request data is invalid
  • Post raid, InRaidHelper.updateProfileBaseStats() will now process failed quests via processFailedQuests()
  • Hideout data is stripped from non-PMC bots when generated before sending it to client (same as live)
  • Added forceHealingItemsIntoSecure to configs/bot.json
  • Show an error when a custom trader has not added itself to Traders enum list

Modder guidance

A short guide can be found here

The example mods have been updated for this release

Older versions of the example mods can be found here

  • All resolvable classes can be found here
  • Code documentation can be found here - Outdated

Known SPT issues

  • RARE: Sometimes you'll start a map with no extracts, the only way to escape is to press alt+f4
  • Some quests need PMCs to spawn in map locations with no bot spawns, making them impossible to complete (e.g. kill x PMCs in scav fortress/base)
  • Selecting the overview tab as a scav can break your client - workaround: alt+f4 to escape
  • Your active flea offers are marked as expired when the server is offline and items are returned in the mail
  • Flea categories don't always show the correct number of offers when filtering by item
  • Extracts are not the same as live, scavs can spawn in PMC spots
  • The server will not load when placed in a folder path containing Unicode characters (Japanese and Korean characters especially)
  • Looting a PMC dogtag doesn't always show their name on the post-raid kill screen
  • Some high level items unlocked through quests are missing from traders' assorts, these will be added as we unlock them on live and dump the data
  • Insured quest items that are consumed in a quest can be returned to the player
  • The hideout wall is a hot mess right now, BSG have refactored how it works and we need to gut all of the server code that interacts with it and start again. Expect weirdness.
  • The post-raid screen shown after a scav raid displays 0 XP, this is incorrect and your scav does earn XP from the raid
  • Clicking sort on a container can sometimes cause items to vanish
  • Event quests with trader item unlocks don't unlock the item for purchase

Known NON-SPT issues

  • BSG have blacklisted a lot of high-level items from the flea. You can disable this blacklist by using a mod/editing configs/ragfair.json/dynamic/blacklist/enableBsgList/false
  • Rogues are insanely difficult, this matches live
  • Tagging items in raid with special characters, e.g. , or " can corrupt the profile on exiting the raid
  • Using horde mode on maps like Customs will cause large numbers of sniper scavs to spawn together in clumps, avoid using horde mode on all maps except factory
  • Receive All shows when nothing can be collected from mail
  • The first time you turn the generator on inside the hideout causes a bug where the client asks for it to be switched off instead of on, clicking the power button on/off again fixes this

Zip hash

Release Hash: VZDHMFodZv3H7wTqwkciwQ==

Thanks

  • Props
  • Kaeno
  • CWX
  • ShadowXtrex
  • Nehax
  • Gomeng
  • Ego

Don't miss a new build release

NewReleases is sending notifications on new releases.