Hotfix #2: 22/12/2022 changes:
- Added more missing equipment settings for sanitar and gluhar
- Fixed missing Chinese translations (Thanks iDkGK)
- Added logging to help diagnose when modded items break their traders/flea market
Hotfix #1: 21/12/2022 changes:
- Fixed Fence items having very high durability values
- Fixed Warnings shown during bot generation
missing x, using default etc
- Fixed Limb status effects not carrying over from hideout to raid and from raid to hideout
- Fixed a rare issue that caused building presets to fail
Requires EFT 0.12.12.20765 (released December 2022)
If this is your first time installing SPT consider using the AKI installer, you can find it here
A guide to installing SPT manually can be found here
Release notes
Significant time was spent refining bots:
- Making the new PMC generation system work better, fixing issues e.g. not shooting back
- Expanding the randomisation system PMC weapons use to include nearly all weapon parts, this has resulted in much more varied weapons
- PMC level now affects the gear they wear, PMCs between level 1 and 15 have a massively reduced pool of items to choose from in an attempt to simulate pre-flea players. This system can be expanded upon with mods
- Fixing the weapon generation to not create weapons with multiple scopes
- A system was added to limit scope types per weapon type, e.g. short-range sights for SMGs, riflescopes for sniper rifles
We also spent time working on performance profiling the server looking for code bottlenecks and removing them, this has resulted in:
- Server startup being reduced by half on most machines
- Flea load time being made 10x faster when viewing lots of items at once (clicking the weapon parts section)
One change we're very happy with is finding and fixing the 3+ minute start-up times some players experienced, glad that's finally gone.
A LOT of bug fixes and code clean up.
These changes unfortunatly mean there are a LOT of mod breaking changes!
This will be the last patch for awhile, the upcoming EFT patch is likely to cause us a lot of headaches and could take anywhere from weeks to months to get working.
Mod compatibility
Unless stated on the mods hub page, older mods are not compatible with 3.4.0.
Profile compatibility
3.X.X - Compatible
2.3.X and older - Incompatible
Fresh Automatic install instructions
- Download Escape from Tarkov from https://www.escapefromtarkov.com/
- Make a new folder somewhere (not your desktop or program files)
- Download the SPT-INSTALLER tool and copy the contents into the folder you've created
- Run
SPT_AKI_Intaller.exe
and let it complete - 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'
Fresh manual install instructions
- Download Escape from Tarkov from https://www.escapefromtarkov.com/
- Copy the live Tarkov folder to another location, call it something like "spt340" (Do NOT copy to a protected location, e.g. your Desktop)
- 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.4.0-20765
(found at the bottom of this post) into your newly created 'spt340' 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'
Migrating existing profiles to the new version
- Install
SPT 3.4.0
into a fresh folder, copy theuser/profiles
from yourSPT 3.3.0
folder into your newSPT 3.4.0
folder
Known SPT issues
- Server exe has a different icon (green shape)
- Scav daily quests have not been implemented; they will be added in a future release
- 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
- Looting while extracting can break the client - workaround: alt+f4 to escape
- Some Christmas items can still be found as loot
- 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
- Completing a quest that pushes a trader to the next loyalty level does not always correctly unlock the new level's items - workaround: buy an item from the trader to trigger the missing items to show
- The server will not load when placed in a folder path containing Unicode characters
- 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
Known NON-SPT issues
- Enabling the
scav war
option on the pre-raid screen causes bots to spin and shoot the ground - 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 is by BSG's design
- Opening a 120 bullet ammo pack in-raid creates a single stack of 120
- 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
Changes
- Feature: Updated to work with 20765 (BSG made a lot of code changes for 20765, we also had to adjust a lot of our code to get it working)
- Feature: Update flea prices to match live (17th December)
- Feature: Airdrop planes now shoot flares as they're dropping thier cargo crate (thanks SamSwat)
- Feature: Increase therapist insurance return chance to 90%
- Feature: Bleeds now persist post-raid
- Feature: Fence sells weapon presets
- Feature: Fence weapons/armor have drastically lower durability
- Feature: Empty scope mount fixing code now applies to all bot types, not just PMCs
- Feature: Added system to allow whitelisting bot scope types per weapon type
- SMGs can equip
Colllamator, CompactCollimator, IronSight
, whereas Snipers can equip
OpticScope, IronSight, SpecialScope, AssaultScope
- Only enabled for PMCs, but system can be used by modders for other bot types
- SMGs can equip
- Feature: Added
MP18, Toz-106, Klin, DVL, Saiga-9, Remington 700, Orsis T-5000
to PMCs weapon pool - Feature: Added paging to flea
- Feature: Added lots of additional weapon mods for PMCs
- Feature: Bot level is tied to gear, bots between the levels of 1 and 14 have lower quality equipment, smaller weapon pool and fewer weapon mod choices
- This is to simulate them not having access to the flea market
- Feature: PMCs of a roughly equal level spawn in maps with you, the level range they have to choose from is between 1 and current player level + 15
- This is to simulate the progression of other players during the wipe
- Feature: Added 25% chance of PMC group spawns at the start of a factory raid
- Feature: Added 25% chance of PMC group spawns at scav base on customs, scav base on woods
and pier on shoreline to help players completeCapturing Outposts
quest - Feature: Allow ncstar backup mount regardless of current weapon scope limit value
- Only spawn ncstar on weapons if it has an existing assault/optic/special scope
- Feature: Added missing voices to raiders/rogues
- Feature: Only disallow weapon mod mounts being added to weapon when scope limit reached if the scope is the only slot they have
- Feature: Allow scopes that have sub scopes to bypass scope limits
- Feature: Christmas event starts on the 16th of December instead of the 17th
- Feature: PMCs wear santa hats/beards during christmas event
- Feature: NVGs on bots can be configured in
configs/bot.json
(default is still 50% active chance) - Feature: When picking up a gun from a dead AI, if it supports full auto, that will be its default state
- Feature: Armor below 60% is no longer sellable to most traders, can be configured in
configs/trader.json
(fence still buys all armors regardless of durability level) - Added
mod_stock
andmod_reciever
to pmc randomisation - Feature: Added more warnings and errors to the translation system
- Feature: Flea offer count adjusted from 8 to 15, to 7 to 30
- Optimisation: Reduced server start up time significantly
- Optimisation: Small optimisations throughout codebase applied
- Optimisation: Significantly improved speed of searching flea
Fixes
- Fix: Added validation to
BotGenerationHelper.isItemIncompatibleWithCurrentItems()
to assist in finding invalid items - Fix: Removed ability for PMCs to use Gluhar personality as it has issues
- Fix: Adjusted PMCs max level to be 78, not 70
- Fix: Added missing
CAN_TALK
property to PMC difficulties, defaulted to false - Fix: Adjusted allowed bot personalities for PMCs, will reduce chance of 'brain dead' PMCs
- Fix: Added check to prevent a weapon spawning as loose loot with a laser/light attachment causes the server to throw an error
- Fix: Added missing quest images
- Fix: Hid prapors
test
mail message from being sent to player - Fix: Added back mk-18 trade on Jaeger
- Fix: Added helmet reward purchase to Ragman after completion of
Chemical Part 4
- Fix: Don't soft-lock when looting a container while extracting (BSG bug with offline raids)
- Fix: Flashbangs now trigger the annoying BZZZZZZZZ sound
- Fix: Lasers on bots weapons can now be active
- Fix: Scope and light/laser limits will be used when generating PMC weapons
- Fix: Weapon mod limit code now classifies range finders as a laser attachment when counting light/laser limits
- Fix: Bots will spawn with empty attachment mods less often
- Fix: Bot scope/laser limits are working again
- Fix: Fixed server erroring when buying lots of items on flea very quickly
- Fix: Always disallow mounts being added to a weapon that only hold only flashlights once flashlight limit reached
- Fix: Add AKMP-system front and rear sights to blacklist
- Fix: Lowered chance game loading takes 3+ minutes
- Fix: Openable lootable containers (e.g. pumpkins) now give the correct number of rewards
- Fix: Resolved an issue that caused AI to stare and not shoot at you
- Fix: Restating the server will not reset purchase limits
- Fix: Fixed issue that would soft lock the client if an items handbook price was a decimal
- Fix: Made Dollar/Euro flea offers have more relative prices when compared to their rouble counterparts
- Fix:
Prepare to Escape
profile has a fixed SV-98 - Fix: Partially repairing a weapon doesn't repair it fully
- Fix: Reduced chance rare face masks appear on assault scavs
Modders
- Feature: Updated server to Typescript 4.9.4
- Feature: Added
REGISTER_PLAYER_REQUEST
to ApplicationContext, has the id of the map the player is loading into. Call like thisconst registerPlayerInfo = this.applicationContext.getLatestValue(ContextVariableType.REGISTER_PLAYER_REQUEST).getValue<IRegisterPlayerRequestData>();
- Feature: Added
BotEquipmentModPoolService
, contains a full mapping of all weapons and equipment in the game and the mods that fit in each of their slots, idential in structure to themods
object inside each bot json (e.g.assault.json
) - Feature:
sptBear
andsptUsec
can be added to map waves and boss waves - Feature: Added
randomisation
section toconfigs/bot.json/equipment
- Uses level range identically to other equipment sections
- Adjust
equipment
andmod
chances from bot json files (e.g.assault.json
)
- Feature: Moved
randomisedArmorSlots
intorandomistion
section, it is now per-level instead of global - Feature: Moved
randomisedWeaponModSlots
intorandomistion
section, it is now per-level instead of global - Feature: Added
botRelativeLevelDeltaMax
toconfigs/bot.json/pmc
- Controls how much higher a PMC bots level can be relative to the players level
- Feature: added service
OpenZoneService
- Feature: added service
CustomLocationWaveService
- Assists with adding custom boss/normal waves to maps
- Feature: Added
REVOLVER
andIRON_SIGHT
toBaseClasses
- Feature Added
weaponSightWhitelist
tobot.json
- Feature: Added
ItemHelper.isOfBaseClasses()
to accompanyItemHelper.isOfBaseClass()
to assist in checking if an item tpl inherits from an array of base classes - Feature: If a randomised mod has sub-mods but no values in its modPool, check modPool service and use those
- Feature: Fence weapon preset durability can be configured via
configs/trader.json/fence/
,presetMaxDurabilityPercentMinMax
andarmorMaxDurabilityPercentMinMax
- Feature: Added
durabilityPurchaseThreshhold
toconfigs/trader.json
allows adjustment of point where each trader will buy damaged armor - Feature: Profiles that start the game with a mod will have a record stored in
profile.json/aki/mods
- Fix: Made empty weapon mount mod checking code check for more mount types
- Fix: Bot generation cache now caches by
role
anddifficulty
instead of justrole
- Fix: Reduced
bossGluhar
weighting insideconfigs/bot.json/pmc/pmcType
to 0 for all maps - Fix: Rewrote
ragfairOfferGenerator.calculateRoublePrice()
to use handbook price of dollars and euros when converting roubles instead of our own values - Optimisation: Pass modLimits into
generateModsForWeapon()
as param instead of creating each loop - Optimisation:
modHasReachedItemLimit()
no longer checks if scopes have reached light/laser max limit - Refactor: Altered parameters of
botEquipmentFilterService.filterBotEquipment()
- Refactor: Altered parameters of
botGeneratorHelper.generateModsForWeapon()
- Refactor: Altered parameters of
botWeaponGenerator.generateWeaponByTpl()
- Refactor: Altered parameters of
botInventoryGenerator.generateInventory()
- Refactor: Altered parameters of
botInventoryGenerator.generateAndAddEquipmentToBot()
- Refactor: Altered parameters of
botInventoryGenerator.generateAndAddWeaponsToBot()
- Refactor: Altered parameters of
botInventoryGenerator.generateEquipment()
- Refactor: Altered parameters of
botInventoryGenerator.addWeaponAndMagazinesToInventory()
- Refactor: Altered parameters of
botInventoryGenerator.generateRandomWeapon()
- Refactor: Altered parameters of
botLootGenerator.generateLoot()
- Refactor: Altered parameters of
botLootGenerator.addLooseWeaponsToInventorySlot()
- Refactor: Altered parameters of
botGenerator.generateByCondition()
- Refactor: Altered parameters of
botGenerator.generateBot()
- Refactor: Filtering of bot equipment now occurs in
botGenerator.generateBot()
instead ofbotGenerator.generateByCondition()
- Refactor: New function
botGenerator.generateBotNickname()
- Refactor: New function
botHelper.getBotRandomisationDetails()
- Refactor: New function
botEquipmentFilterService.adjustChances()
- Refactor: New class
BotLevelGenerator
- Refactor: New class
BotEquipmentModGenerator
- Refactor: New class
BotWeaponModLimitService
- Refactor: New class
SeasonalEventService
- Refactor: Move all seasonal code (Christmas/Halloween) into its own service
SeasonalEventService
- Refactor: Renamed
TraderHelper.traderFilter()
todoesTraderBuyItem()
- Refactor: Removed
botGenerator.generateRandomLevel()
replaced withbotLevelGenerator.generateBotLevel
- Refactor: Rewrote
BotController.generate()
, does majority of whatgenerateByCondition()
did - Refactor: Renamed
FenceService.generateFenceAssortCache()
togenerateFenceAssorts()
- Refactor:
botGenerationCacheService
now stores bots by role and difficulty, not just role - Refactor:
botGenerator.generateByCondition()
renamed toprepareAndGenerateBots()
and no longer decided if bots should become PMCs - Refactor: Moved:
botHelper.getPMCDifficulty()
toBotController
- Refactor: Reworked
isItemIncompatibleWithCurrentItems()
to return reason why item is incompatible - Refactor:
project/assets/database/locales/global/xx.json
has changed format - Refactor:
project/assets/database/locales/languages.json
has changed format - Refactor:
traderHelper.isItemUnSellableToTrader()
requires traderId be passed as parameter - Refactor: Replaced
traderHelper.isWeaponBelowTraderBuyDurability()
withitemIsBelowSellableDurabilityThreshhold()
Modder guidance
A short guide can be found here
The example mods have been updated for 3.4.0
Thanks
Rev and Req for Japanese translations
Lua for Korean translation improvements
Hubert for Polish translation
Fiaf for Swedish translation