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 forcrazy 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
- Added TerraGroup Trail Part
- Hotfix #2 2023/08/02:
- Added
TerraGroup Trial Event
quests10, 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
- Added
- 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)
- Download Escape from Tarkov from https://www.escapefromtarkov.com/
- Download the SPT-INSTALLER tool and follow the instructions
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
orProgram 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 using7Zip
- 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 oldSPT 3.5.x
folder into your newSPT 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 withOdobolobos N
item on their person - Disabled event quests by default, can be enabled via
showNonSeasonalEventQuests
property inconfigs/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
andHideoutCraft
skill XP given when:- Inspecting
- Crafting
- Repairing with kit
- Added the property
removeModItemsFromProfile
toconfigs/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
- Start a chat with 'SPT' in your friends list and try sending a promo code, e.g.
- 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 toOn
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 thespt
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 toModLoader: 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 propertybotGenerationBatchSizePerType
- 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 tofalse
- 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
andpmc
tobot.json/lootNValue
- Deprecated
BotLootGenerator.getRandomItemFromPool()
in favor ofgetRandomItemFromPoolByRole()
, 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 toconfigs/quest.json
, this contains a dictionary of event quests and various details about them - Added
showNonSeasonalEventQuests
property toconfigs/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 theSeasonalEventType.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 toconfigs/airdrop.json
to allow adjustment of what crate is dropped based on the drop type (food/weapon/barter/mixed) getAirdropLoot()
now returns aIAirdropLootResult
instead of aLootItem[]
- Added Halloween trader icons to
images/traders/halloween/
- Added
SeasonalEventService.adjustTraderIcons()
- Added
- Refactored
DatabaseImporter.loadImages()
to accept adirectories
array instead of doingthis.vfs.getDirs(filepath)
inside the function - Added
DatabaseImporter.getSptDataPath()
- Exposed
configs/hideout.json/expCraftAmount
instead of having it hard-coded insideHideoutController.ts.handleRecipe()
- Flagged
rewardSkillPoints()
as dupe ofPlayerService.incrementSkillLevel()
- Improved function to do same as rewardsSkillPoints()
- Flagged
incrementSkillLevel()
as dupe ofQuestHelper.rewardsSkillPoints()
- Improved function to do same as
incrementSkillLevel()
- Made it update skills last access timestamp
- Improved function to do same as
- Added
useSkillProgressRateMultipler
parameter (default false) toPlayerService.incrementSkillLevel()
, will enable use of multiplierSkillsSettings.SkillProgressRate
fromglobals
on the amount passed in before updating skill XP value - Replaced uses of
Console.WriteLine
with correctLogger.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 toconfigs/core
to allow toggling of shotgun dispersion fix + removing mod items from profile - Added
addOpenZonesToAllMaps
andaddCustomBotWavesToMaps
toconfigs/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()
toGameController.ts
- Added
resetAllTradersInProfile()
toProfileController.ts
- Added
deleteProfileBySessionId()
toProfileController.ts
- Used profile nickname is logged when game starts next to session id
- Added
resetSkillPointsEarnedDuringRaid()
toInRaidHelper.ts
- Reworked
generateAll()
inLocationController.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 inmodels/eft/common/Ixyz.ts
, renamed toIxyz
- Added quest type as enum for IQuest,
models/enums/QuestTypeEnum.ts
- Added missing values
AssortmentUnlock + ProductionScheme
toQuestRewardType.ts
- Added config property
blacklistSeasonalItems
toconfigs/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 fromconfigs/gifts.json
- Added
MailSendService
to help make sending messages to player easier than usingcreateMessageContext()
andaddDialogueMessage()
- Converted
INotification/type
from string into enumNotificationType
- Converted
ISaveProgressRequestData/exit
from string into enumPlayerRaidEndState
- Pass
sessionId
intolocationController.generateAll()
as parameter - Show URL of endpoint if JSON inside request data is invalid
- Post raid,
InRaidHelper.updateProfileBaseStats()
will now process failed quests viaprocessFailedQuests()
- Hideout data is stripped from non-PMC bots when generated before sending it to client (same as live)
- Added
forceHealingItemsIntoSecure
toconfigs/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
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