Make your SPT experience closer to live Tarkov with loot disappearing, doors opening, switches being turned on, and car extracts leaving throughout the raid. PMC's are more likely to spawn early in the raid, traders can sell out of items, and much more!
If you're using Fika, this mod should ONLY be installed on the host machine. Otherwise, changes to the raid may occur multiple times!
Trader-stock changes are disabled for SPT-AKI 3.8.0+ releases. Significant changes to the code will be required, so that feature will likely be released as a separate mod sometime later in the summer.
This mod makes the the following changes to your SPT experience:
- Loot (including on dead bots) will be gradually removed throughout the raid to simulate other players taking it.
- Doors will randomly open and close throughout the raid to simulate players moving through the map (thanks to help from DrakiaXYZ!). If you're lucky, locked doors may be opened for you...
- Switches will be toggled throughout the raid to simulate players turning on power switches, using extracts, etc.
- The car extract may leave at some point during the raid
- Compared to vanilla SPT, PMC's are more likely to spawn toward the beginning of the raid and less likely to spawn toward the end of it. However, this is disabled by default anticipating that SWAG/DONUTS or Questing Bots will be used for this instead.
- If you spawn into the map late as a Scav, bosses are less likely to spawn.
-
Trader stock reduces over time (until it resets), and desirable items (like MP-133's) can sell out - Fence sells more items, including ammo, but most items are significantly less valuable than what he sells in the base game
If you use both Questing Bots and Looting Bots, setting only_make_changes_just_after_spawning.enabled=true in config.json is highly recommended.
This mod is highly customizable by modifying the config.json file. Here are the settings you can change:
-
scav_raid_adjustments.always_spawn_late: If there should be a 100% chance that you spawn into the raid late as a Scav for all maps.
-
destroy_loot_during_raid.enabled: If the mod is allowed to remove loot throughout the raid. If you spawn into the raid late, loot will be immediately removed from the map until it reaches the target amount for the fraction of time remaining in the raid. This is true by default.
-
destroy_loot_during_raid.exclusion_radius: The radius (in meters) from you within which loot is not allowed to be despawned. By default, this is set to 40 meters.
-
destroy_loot_during_raid.exclusion_radius_bots: The radius (in meters) from any bot within which loot is not allowed to be despawned. By default, this is set to 25 meters.
-
destroy_loot_during_raid.nearby_interactive_object_search_distance: The maximum distance (in meters) to search for nearby interactive objects that may be blocking access to the loot item. By default, this is set to 0.75 meters.
-
destroy_loot_during_raid.only_search_for_nearby_trunks: If this is true, only trunks will be considered when searching for nearby interactive objects that may be blocking access to the loot item. If this is false, all interactive objects (doors, keycard doors, and trunks) will be considered.
-
destroy_loot_during_raid.avg_slots_per_player: The typical number of total "slots" worth of loot with which a player will extract. This does not include the starting items for the player. This is 60 by default.
-
destroy_loot_during_raid.players_with_loot_factor_for_maps_without_pscavs: If the map does not allow player Scavs to spawn, this factor will be applied to fraction_of_players_full_of_loot to reduce the amount of loot that can be destroyed throughout the raid. This is 0.3 by default.
-
destroy_loot_during_raid.min_loot_age: Loot must be on the map (either loose or in a container) for at least this long (in seconds) before it's allowed to be despawned. This does not apply to loot initially generated on the map. This prevents loot on bots from being destroyed too quickly after they're killed, and it prevents items you drop from being despawned to quickly (if the mod settings allow this to happen).
-
destroy_loot_during_raid.destruction_event_limits.rate: The maximum rate at which items are allowed to be despawned (in items/s). This is ignored when initially despawning loot at the beginning of Scav raids.
-
destroy_loot_during_raid.destruction_event_limits.items: The maximum number of individual items that can be despawned at the same time. Child items (i.e. weapon attachments) count as separate individual items. This is 30 by default.
-
destroy_loot_during_raid.destruction_event_limits.slots: The maximum number of slots containing items that can be despawned at the same time. For example, a hand drill is 6 slots. This is 50 by default.
-
destroy_loot_during_raid.map_traversal_speed_mps: The rate at which a typical player traverses the map (in m/s). This should not be the maximum speed a player can run in an open area because not all players are rushing Resort, Dorms, etc. at the beginning of every raid. Increase this value to despawn loot in map hot-spots (i.e. Resort) earlier in the raid. With the default setting, you have 2-3 min to get to Resort before loot can despawn there.
-
destroy_loot_during_raid.min_distance_traveled_for_update: The distance you need to travel (in meters) before the mod decides if loot should be despawned (from the last time loot was despawned). This shouldn't be changed in most cases.
-
destroy_loot_during_raid.min_time_before_update_ms: The minimum time that must elapse (in milliseconds) after loot was despawned before the mod is allowed to despawn loot again. If you're having performance issues, try increasing this.
-
destroy_loot_during_raid.max_time_before_update_ms: The maximum time that elapses (in milliseconds) after loot was despawned before the mod checks if loot should be despawned again.
-
destroy_loot_during_raid.max_calc_time_per_frame_ms: The maximum amount of time (in milliseconds) the mod is allowed to run loot-despawning procedures per frame. By default this is set to 5ms, and delays of <15ms are basically imperceptible.
-
destroy_loot_during_raid.max_time_without_destroying_any_loot: The maximum time (in seconds) after loot was despawned before the mod forces at least one piece of loot to despawn. This is included for compatibility with Kobrakon's Immersive Raids mod. By default, this is set to 60 seconds.
-
destroy_loot_during_raid.ignore_items_dropped_by_player.enabled: If items dropped by the player should not be allowed to be despawned. This allows you to effectively "hide" items and return for them later. This is true by default.
-
destroy_loot_during_raid.ignore_items_dropped_by_player.only_items_brought_into_raid: If items dropped by the player should not be allowed to be despawned only if they're not FIR. Items in your Scav character's starting inventory are not marked as FIR, just like your PMC's. This is false by default.
-
destroy_loot_during_raid.ignore_items_on_dead_bots.enabled: If the mod should not be allowed to despawn items on dead bots. This is true by default.
-
destroy_loot_during_raid.ignore_items_on_dead_bots.only_if_you_killed_them: If the mod should not be allowed to despawn items on dead bots only if you killed the bot. If you did not kill the bot, items in its inventory are still eligible for despawning. This is true by default.
-
destroy_loot_during_raid.excluded_parents: Items that are children of these parent-item ID's will not be allowed to despawn. Entries in this array should NOT be removed, or the mod may not work properly.
-
loot_multipliers: [time_remaining_factor, reduction_factor] pairs describing the fraction of the initial loot pool that should be remaining on the map based on the fraction of time remaining in the raid. A value of "1" means match the original loot amount.
-
fraction_of_players_full_of_loot: [time_remaining_factor, players_full_of_loot_fraction] pairs describing the fraction of the maximum players allowed on the map who will be full of loot based on the fraction of time remaining in the raid. A value of "1" in the second column means that the entire starting (full) lobby of players will have looted destroy_loot_during_raid.avg_slots_per_player slots worth of loot by that time. This value can be greater than one to include player Scavs.
The loot-ranking system uses the following logic to determine the "value" of each item:
- Quest items and items of type "Node" are excluded from the loot-ranking data because the mod will never despawn them.
- The cost of each item is the maximum value for it found in handbook.json and prices.json.
- To determine the cost-per-slot of an item, its cost (determined above) is divided by its size. Items that can be directly equipped (rigs, backpacks, weapons, etc.) are treated as having a size of 1.
- If the item is a weapon, the mod first tries finding the most desirable version of it (in terms of size and weight) available from traders. If no traders sell it, the mod will then find the most desirable preset for the weapon. If there are no presets for the weapon (as may be the case for mod-generated weapons), one with the cheapest and fewest parts possible will be generated.
- When the mod determines the size of a weapon, it's folded if possible.
After the loot-ranking data is generated, it's saved in user\mods\DanW-LateToTheParty-#.#.#\db. The ranking data can then be viewed using user\mods\DanW-LateToTheParty-#.#.#\db\LootRankingDataReader.exe. The program requires .NET 6.0 to run.
- destroy_loot_during_raid.loot_ranking.enabled: If loot should be ranked and destroyed in order of its calculated "value" (which is more complicated than simply cost).
- destroy_loot_during_raid.loot_ranking.randomness: The amount of "randomness" (defined as a percentage of the total loot-value range in the map) to apply when destroying ranked loot. A value of 0 is like playing in a lobby full of cheaters, and loot will be despawned exactly in order of its calculated value. A value of 100 means that the worst loot in the map has a small chance of despawning first, and vice versa. A value of >>100 is like playing in a lobby full of noobs who have no idea what to pick up (in which case you might as well simply disable loot ranking). This is 200% by default.
- destroy_loot_during_raid.loot_ranking.top_value_retain_count: The number of highest-value items (after applying destroy_loot_during_raid.loot_ranking.randomness) that will be prevented from being despawned each time loot is despawned. This ensures you always have a small chance of finding high-value items regardless of how late you spawn into the raid. This is 5 by default.
- destroy_loot_during_raid.loot_ranking.alwaysRegenerate: If the loot-ranking data is forced to generate every time the game starts. If you tend to check out new mods that may adjust item values, add new items, etc., you should make this true to ensure the loot-ranking data is valid for your specific SPT configuration. If you tend to install a few mods and stick with them, it should be safe to leave this at false. If any of the following loot-ranking parameters are changed, the loot-ranking data will be forced to regenerate.
- destroy_loot_during_raid.loot_ranking.child_item_limits.count: The maximum number of items and child items allowed to be despawned at one time. This is to prevent full backpacks from being despawned instantly.
- destroy_loot_during_raid.loot_ranking.child_item_limits.total_weight: The maximum combined weight of an item and its child items above which they will not be allowed to despawn. This is to prevent full backpacks from being despawned instantly. If the item has no child items, this limit is ignored.
- destroy_loot_during_raid.loot_ranking.weighting.default_inventory_id: The ID of the default inventory for the player, which is needed to see what items are allowed to be equipped. This should NOT be changed, or the mod may not work properly.
- destroy_loot_during_raid.loot_ranking.weighting.cost_per_slot: How much the calculated loot-ranking value of each item should be affected by its cost-per-slot. If the item can be directly equipped (backpacks, weapons, helmets, etc.), it's treated as occupying a single slot. Otherwise, the mod takes the price of the item (the maximum found in handbook.json and prices.json) and divides that by its size (length * width) to determine its cost-per-slot.
- destroy_loot_during_raid.loot_ranking.weighting.weight: How much the calculated loot-ranking value of each item should be affected by its weight.
- destroy_loot_during_raid.loot_ranking.weighting.size: How much the calculated loot-ranking value of each item should be affected by its size (length * width).
- destroy_loot_during_raid.loot_ranking.weighting.gridSize: How much the calculated loot-ranking value of each item should be affected by the number of grid slots it has (for rigs, backpacks, etc.).
- destroy_loot_during_raid.loot_ranking.weighting.max_dim: How much the calculated loot-ranking value of each item should be affected by its maximum dimension (either length or width).
- destroy_loot_during_raid.loot_ranking.weighting.armor_class: How much the calculated loot-ranking value of each item should be affected by its armor class (which is 0 if not applicable).
- destroy_loot_during_raid.loot_ranking.weighting.parents.xxx.name: If xxx is a parent of the item, its calculated loot-ranking value has an additional value applied to it. For each entry in the parents dictionary, name simply exists for readability. You can make this whatever you want to help you remember what the ID (key) for the dictionary is.
- destroy_loot_during_raid.loot_ranking.weighting.parents.xxx.weighting: If xxx is a parent of the item, its calculated loot-ranking value is adjusted by this value.
The mod uses the following process to determine which loot is accessible:
- If the loot was previously determined to be accessible, it will always be considered accessible for the rest of the raid.
- If the loot is in a locked container, it's considered inaccessible.
- If destroy_loot_during_raid.check_loot_accessibility.enabled=false, all other loot is considered accessible, and none of the other conditions below are checked.
- If the loot appeared on the map after the raid started, assume it's
accessible. That means it was dropped by the player, is on a dead bot, or is in an airdrop. - If the loot is more than destroy_loot_during_raid.check_loot_accessibility.exclusion_radius meters from any locked/inaccessible doors, it's considered accessible.
- If the accessibility of the loot is still unknown, the mod finds the nearest location on the map from the following:
- Spawn points (both Scav and PMC)
- You
- Alive bots
- If the loot is within destroy_loot_during_raid.check_loot_accessibility.max_path_search_distance meters of any of the locations above, the mod checks if the one nearest to the loot item is within destroy_loot_during_raid.check_loot_accessibility.navmesh_search_max_distance_player meters from the NavMesh. If either check fails, the mod assumes the loot is inaccessible.
- The mod checks if the loot is within destroy_loot_during_raid.check_loot_accessibility.navmesh_search_max_distance_loot meters from the NavMesh. If not, the mod assumes the loot is inaccessible.
- The mod tries finding a path via the NavMesh from the selected location in the list above to the loot. If it fails to find a complete path, the mod assumes the loot is inaccessible.
- If a complete path is found, the mod checks if obstacles exist between the end of the path and the loot item via raytracing. Obstacles that have a height below destroy_loot_during_raid.check_loot_accessibility.navmesh_obstacle_min_height meters or have an overall (bounds) volume below destroy_loot_during_raid.check_loot_accessibility.navmesh_obstacle_min_volume cubic meters are ignored. Foliage and bots are also ignored. If there are any remaining obstacles detected via raytracing that aren't ignored, the mod assumes the loot is inaccessible.
- If all checks above pass, the loot is considered accessible.
-
destroy_loot_during_raid.check_loot_accessibility.enabled: Check the accessibility of loot to determine if it's allowed to be despawned. If this is false, all loot will be considered accessible unless it's in a locked container. See the description below about how accessibility is determined. If you're having performance issues, try disabling this.
-
destroy_loot_during_raid.check_loot_accessibility.exclusion_radius: All loot that is at least this distance (in meters) away from locked or inaccessible doors will automatically be assumed to be accessible. The larger this radius is, the more false negatives are likely to occur when determining loot accessibility, and the more computation time will be required. However, a setting that is too small will result in false positives if the loot is positioned within a locked room but far from the door. This is 25 by default and should work for larger locked rooms like the KIBA store in Interchange.
-
destroy_loot_during_raid.check_loot_accessibility.max_path_search_distance: Do not check accessibility for loot that is within the destroy_loot_during_raid.check_loot_accessibility.exclusion_radius of a locked door but more than this distance (in meters) from you, a bot, or a spawn point. If this value is small, the accessibility of some loot will never be checked by the mod unless you or a bot walk near it, so it will never be eligible for despawning. If this value is large, most (if not all) loot will be checked, but it may be computationally expensive.
-
destroy_loot_during_raid.check_loot_accessibility.navmesh_search_max_distance_player: If the mod needs to check if loot is accessible from a location on the map (spawn point, player position, etc.), that location must be within this distance (in meters) from the NavMesh. If this value is small, the accessibility of some loot will never be checked by the mod, so it will never be eligible for despawning. If this value is large, there may be a small performance impact. This is 10 by default.
-
destroy_loot_during_raid.check_loot_accessibility.navmesh_search_max_distance_loot: If the mod needs to check if loot is accessible, it must be within this distance (in meters) from the NavMesh. If this value is small, the mod will not be able to calculate a NavMesh path to it, so it will never be eligible for despawning. If this value is large, the mod will be more likely to try and access the loot through floors and ceilings (thanks to a Unity quirk), and there may be a performance impact. This is 2 by default, and values much larger than this are not recommended.
-
destroy_loot_during_raid.check_loot_accessibility.navmesh_height_offset_complete: When a complete NavMesh path is found to access loot, the points in the path will then be offset to be this distance (in meters) higher. This is done to make the path easier to see when debug.loot_path_visualization.enabled=true, and it reduces the number of obstacles that may exist between the final NavMesh point and the loot item. This is 1.25 by default, which is approximately shoulder-level.
-
destroy_loot_during_raid.check_loot_accessibility.navmesh_height_offset_incomplete: When a valid NavMesh path cannot found to access loot, the points in the path will then be offset to be this distance (in meters) higher. This is 1 by default, and it's done to make the path easier to see when debug.loot_path_visualization.enabled=true.
-
destroy_loot_during_raid.check_loot_accessibility.navmesh_obstacle_min_height: Obstacles that are less than this value in height (in meters) will be ignored when checking the accessibility of loot. Obstacles are detected via raycasting from the last NavMesh point in a complete path to the loot item. This is 0.9 by default.
-
destroy_loot_during_raid.check_loot_accessibility.navmesh_obstacle_min_volume: Obstacles that have an overall volume below this value (in cubic meters) will be ignored when checking the accessibility of loot. The volume is determine by the overall bounds of the object, which can be visualized via debug.loot_path_visualization.enabled=true, not the actual volume of the object mesh. Obstacles are detected via raycasting from the last NavMesh point in a complete path to the loot item. This is 2 by default. Values below 1 are not recommended because some loot in filing cabinets will be considered inaccessible by the mod.
-
destroy_loot_during_raid.check_loot_accessibility.max_calc_time_per_frame_ms: The maximum amount of time (in milliseconds) the mod is allowed to toggle NavMesh obstacles (namely for locked doors) per frame. By default this is set to 4ms, and delays of <15ms are basically imperceptible.
-
destroy_loot_during_raid.check_loot_accessibility.door_obstacle_update_time: How frequently (in seconds) the mod checks if any NavMesh obstacles (namely for doors) should be toggled. This is 2 by default.
-
open_doors_during_raid.enabled: If the mod can open/close doors throughout the raid. This is true by default.
-
open_doors_during_raid.can_open_locked_doors: If the mod is allowed to open locked doors. This is true by default.
-
open_doors_during_raid.can_breach_doors: If the mod is allowed to open doors that can only be breached. This is true by default.
-
open_doors_during_raid.exclusion_radius: The radius (in meters) from you within which doors are not allowed to be opened/closed. By default, this is set to 40 meters.
-
open_doors_during_raid.min_raid_ET: The minimum time (in seconds) that must elapse in the raid (not necessarily from the time you spawn into the raid, namely as a Scav) before the mod is allowed to begin opening/closing doors. By default, this is set to 180 seconds.
-
open_doors_during_raid.min_raid_time_remaining: The minimum time (in seconds) that must be remaining in the raid for the mod to be allowed to open/close doors. By default, this is 300 seconds.
-
open_doors_during_raid.time_between_door_events: The time (in seconds) that must elapse after the mod opens/closes doors before it's allowed to open/close doors again. By default, this is 60 seconds.
-
open_doors_during_raid.percentage_of_doors_per_event: The percentage of eligible doors on the map that should be opened or closed per event. By default, this is 3%.
-
open_doors_during_raid.chance_of_unlocking_doors: The chance (in percent) that the mod will be able to unlock a door when trying to open it. By default, this is set to 50%.
-
open_doors_during_raid.chance_of_closing_doors: The chance (in percent) that the mod will close a door instead of opening a door. By default, this is set to 15%.
-
open_doors_during_raid.max_calc_time_per_frame_ms: The maximum amount of time (in milliseconds) the mod is allowed to run door-event procedures per frame. By default this is set to 3ms, and delays of <15ms are basically imperceptible.
-
toggle_switches_during_raid.enabled: If the mod can turn on switches throughout the raid. This is true by default.
-
toggle_switches_during_raid.time_between_events_ms: The mod will check for switches to toggle at regular intervals of this many milliseconds throughout the raid (3000 ms by default).
-
toggle_switches_during_raid.exclusion_radius: Switches will not be allowed to be toggled if they're within this distance (in meters) of you. This is 150 m by default.
-
toggle_switches_during_raid.min_raid_ET_for_exfil_switches: If a switch controls the ability for players to use extraction points (i.e. the power switch on Customs or elevator buttons on Labs), it will not be allowed to be toggled until this many seconds has elapsed since the beginning of the raid (before its shortened for Scav runs). This is 600 s by default.
-
toggle_switches_during_raid.delay_after_pressing_prereq_switch_s_per_m: After switches have been initially toggled for Scav raids, the mod will not toggle any switches if prerequisite switches must be toggled before them (i.e. the elevator power switches on Labs). In this case, the mod won't attempt to toggle the switch until a certain amount of time has elapsed after the prerequisite switch is toggled. This delay is calculated using this parameter (in seconds/meter) and the distance between the switches. The purpose of this delay is to simulate the time needed for a player to toggle the prerequisite switch and then travel to the first switch. This is 1 s/m by default.
-
toggle_switches_during_raid.raid_fraction_when_toggling.min/max: The minimum and maximum fractions of the overall raid time (before they're reduced for Scav runs) that switches are allowed to be toggled.
-
toggle_switches_during_raid.fraction_of_switches_to_toggle.min/max: The minimum and maximum fractions of switches that will be toggled throughout the raid. These values are fractions of the total number of switches on the map that can be toggled by players.
-
toggle_switches_during_raid.max_calc_time_per_frame_ms: The maximum amount of time (in milliseconds) the mod is allowed to run switch-toggling procedures per frame. By default this is set to 3ms, and delays of <15ms are basically imperceptible.
-
adjust_bot_spawn_chances.enabled: If the mod is allowed to change bot spawn-chance settings. This is true by default.
-
adjust_bot_spawn_chances.adjust_bosses: If the mod is allowed to reduce boss spawn chances based on the time you spawn into the raid. This is true by default.
-
adjust_bot_spawn_chances.adjust_pmc_conversion_chances: If the mod is allowed to change PMC-conversion chances. This is false by default.
-
adjust_bot_spawn_chances.pmc_conversion_update_rate: The time (in seconds) that must elapse after the mod updates PMC conversion-rate chances before it updates them again.
-
adjust_bot_spawn_chances.excluded_bosses: The names of bot types that should not be included when changing boss spawn chances. Entries in this array should NOT be removed, or the mod may not work properly.
-
pmc_spawn_chance_multipliers: [time_remaining_factor, reduction_factor] pairs describing how the PMC-conversion chance should change based on the fraction of time remaining in the raid. A value of "1" means match the original setting.
-
boss_spawn_chance_multipliers: [time_remaining_factor, reduction_factor] pairs describing how the boss-spawn chances should change based on the fraction of time remaining in the raid. A value of "1" means match the original setting.
-
car_extract_departures.enabled: If the mod is allowed to make the car extract leave at some point during the raid.
-
car_extract_departures.countdown_time: The countdown-timer length (in seconds) before the car extract leaves. By default, this is 60 s, which is the same as base EFT.
-
car_extract_departures.delay_after_countdown_reset: If the countdown timer is reset because you come too close to the car, the car won't be allowed to leave again for this many seconds (120 s by default). This is to prevent the car extract from constantly cycling between enabled and disabled if you keep getting too close and then far enough away from it.
-
car_extract_departures.exclusion_radius: The car extract will only be allowed to depart if you're more than this distance (in meters) away from it (150 m by default). This minimizes the chances of you seeing it leave without a bot leaving with it.
-
car_extract_departures.exclusion_radius_hysteresis: If the car extract has been activated by this mod, it will be deactivated if you come within this distance (as a fraction of car_extract_departures.exclusion_radius) of it. This is to prevent the car from leaving by itself when you're near it, and it prevents you from possibly getting a free ride. This is 0.9 by default.
-
car_extract_departures.chance_of_leaving: The chance (in percent) that the car will leave at some point during the raid.
-
car_extract_departures.raid_fraction_when_leaving.min/max: The minimum and maximum fractions of the overall raid length (before it's shortened for Scav raids) between which the car may leave. For example, if min=0.25 and max=0.75, the car will be allowed to leave between 10 and 30 minutes remaining in a 40-min Customs raid. If you spawn into the raid as a Scav later than the time randomly selected for the car to depart, it will depart immediately.
-
trader_stock_changes.enabled: If the mod should allow trader stock to deplete as well as change the number and variety of items sold by Fence.
-
trader_stock_changes.max_ammo_buy_rate: The maximum rate at which a trader's ammo supply (for each type) can be reduced in rounds/second.
-
trader_stock_changes.max_item_buy_rate: The maximum rate at which a trader's item supply (for each type) can be reduced in items/second.
-
trader_stock_changes.item_sellout_chance.min: The minimum chance (in percent) that any item in a trader's inventory can be sold out just before the trader's inventory resets.
-
trader_stock_changes.item_sellout_chance.max: The maximum chance (in percent) that any item in a trader's inventory can be sold out just before the trader's inventory resets.
-
trader_stock_changes.barter_trade_sellout_factor: A multiplier applied to trader_stock_changes.item_sellout_chance for barter items.
-
trader_stock_changes.hot_item_sell_chance_global_multiplier: A multiplier applied to all values in hotItems.json.
-
trader_stock_changes.ammo_parent_id: The parent ID of loose ammo, which is needed to determine what items are ammo. This should NOT be changed, or the mod may not work properly.
-
trader_stock_changes.money_parent_id: The parent ID of money, which is needed to determine what items are barter trades. This should NOT be changed, or the mod may not work properly.
-
trader_stock_changes.ragfair_refresh_time_fraction: The maximum fraction of the trader's refresh time that can elapse before the trader's inventory is forced to refresh when viewing his flea-market offers. For example, if this is 0.05 and the trader's refresh time is 3600 seconds, if the trader's inventory hasn't been refreshed in the last 180 seconds when viewing his flea-market offers, his inventory will first be forced to update. The purpose of this is to close a loophole of only viewing a trader's offers in the flea market to avoid having items sell out in the normal trader view. By default, this is 0.05.
-
trader_stock_changes.fence_stock_changes.enabled: If Fence's stock is allowed to be modified. This is false by default because Fence's inventory has significantly improved in recent SPT updates.
-
trader_stock_changes.fence_stock_changes.always_regenerate: If the list of items sold by Fence should be regenerated whenever you refresh it. This is false by default like in the base game.
-
trader_stock_changes.fence_stock_changes.assort_size: The number of items sold by Fence at LL1. This is 190 by default compared to the base game's 120.
-
trader_stock_changes.fence_stock_changes.assort_size_discount: The number of items sold by Fence at LL2. This is 90 by default compared to the base game's 50.
-
trader_stock_changes.fence_stock_changes.assort_restock_threshold: If Fence's stock drops below this percentage of trader_stock_changes.fence_stock_changes.assort_size or trader_stock_changes.fence_stock_changes.assort_size_discount, his inventory will be forced to regenerate.
-
trader_stock_changes.fence_stock_changes.maxPresetsPercent: The maximum percentage of trader_stock_changes.fence_stock_changes.assort_size that can be filled with weapons. This overrides fence.maxPresetsPercent in the SPT-AKI trader.json config file.
-
trader_stock_changes.fence_stock_changes.max_preset_cost: Any weapons that exceeds this cost after adjusting for item_cost_fraction_vs_durability will be removed from Fence's inventory.
-
trader_stock_changes.fence_stock_changes.min_allowed_item_value: Fence will always be able to sell any item below this price (using the maximum found in handbook.json and prices.json) regardless of the chance of selling it as determined by the fence_item_value_permitted_chance array.
-
trader_stock_changes.fence_stock_changes.max_ammo_stack: The largest stack of any type of ammo allowed in Fence's inventory.
-
trader_stock_changes.fence_stock_changes.sell_chance_multiplier: A multiplier applied to trader_stock_changes.item_sellout_chance for determining how likely an item in Fence's inventory is to be sold.
-
trader_stock_changes.fence_stock_changes.itemTypeLimits_Override: A dictionary describing the maximum number of items of a given type that Fence is allowed to sell per reset. If an entry for the type already exists in fence.itemTypeLimits in the SPT-AKI trader.json config file, its value will be overriden with this one. Otherwise, it will be added to that dictionary.
-
trader_stock_changes.fence_stock_changes.blacklist_append: The ID's that should be added to Fence's blacklist, which is initially set by fence.blacklist in the SPT-AKI trader.json config file.
-
trader_stock_changes.fence_stock_changes.blacklist_remove: The ID's that should be removed from Fence's blacklist, which is initially set by fence.blacklist in the SPT-AKI trader.json config file.
-
trader_stock_changes.fence_stock_changes.blacklist_ammo_penetration_limit: Any ammo that has a penetration value above this will be removed from Fence's inventory.
-
trader_stock_changes.fence_stock_changes.blacklist_ammo_damage_limit: Any ammo that has a damage value above this will be removed from Fence's inventory.
-
fence_item_value_permitted_chance: [item_value, sell_chance_percent] pairs describing how likely Fence is to sell an item with a certain value.
-
item_cost_fraction_vs_durability: [item_durability_fraction, price_multiplier] pairs describing how much cheaper Fence will sell degraded items. This applies to anything with durability (namely weapons and armor) and items with limited uses like medkits.
-
only_make_changes_just_after_spawning.enabled: Only allow changes to be made to only_make_changes_just_after_spawning.affected_systems for only_make_changes_just_after_spawning.time_limit seconds after you spawn into the raid. **This is highly recommend if you use Questing Bots and Looting Bots.**If you're having performance issues, try enabling this.
-
only_make_changes_just_after_spawning.time_limit: The number of seconds that changes are allowed to be made by only_make_changes_just_after_spawning.affected_systems after you spawn into the raid.
-
only_make_changes_just_after_spawning.affected_systems.loot_destruction: If loot destruction should only occur for only_make_changes_just_after_spawning.time_limit seconds after you spawn into the raid.
-
only_make_changes_just_after_spawning.affected_systems.opening_unlocked_doors: If unlocked doors should only be opened for only_make_changes_just_after_spawning.time_limit seconds after you spawn into the raid.
-
only_make_changes_just_after_spawning.affected_systems.opening_locked_doors: If locked doors should only be opened for only_make_changes_just_after_spawning.time_limit seconds after you spawn into the raid.
-
only_make_changes_just_after_spawning.affected_systems.closing_doors: If doors should only be closed for only_make_changes_just_after_spawning.time_limit seconds after you spawn into the raid.
-
only_make_changes_just_after_spawning.affected_systems.car_departures: If car extracts are allowed to depart after only_make_changes_just_after_spawning.time_limit seconds after you spawn into the raid.
-
only_make_changes_just_after_spawning.affected_systems.toggling_switches: If switches are allowed to be toggled after only_make_changes_just_after_spawning.time_limit seconds after you spawn into the raid.
-
debug.enabled: Enable debug mode.
-
debug.scav_cooldown_time: Cooldown timer (in seconds) after a Scav raid ends before you're allowed to start another one. This is 1500 by default, which is the same as the base game.
-
debug.free_labs_access: If true, Labs cards are no longer required to enter Labs.
-
debug.min_level_for_flea: The minimum player level to be able to access the flea market.
-
debug.trader_resupply_time_factor: A multiplier for trader reset times. For example, if this is 0.5, trader resets occur every 30 min instead of 60 min. trader_stock_changes.max_ammo_buy_rate and trader_stock_changes.max_item_buy_rate are divided by this value for testing purposes.
-
debug.loot_path_visualization.enabled: Enable visualization of loot items and NavMesh pathing to them to view which ones the mod thinks are accessible. Most visuals require destroy_loot_during_raid.check_loot_accessibility.enabled=true.
-
debug.loot_path_visualization.points_per_circle: The number of points to use for drawing a circle. This is 10 by default. Considering this is only used for debugging, higher values might result in rounder-looking circles, but there isn't much benefit.
-
debug.loot_path_visualization.outline_loot: Draw a spherical outline around loot items and loot containers that are not empty. The center of the sphere should be in the center of loose loot, but it will be somewhere around the perimeter of loot containers (and varies by the type of container). The color of the outline will change based on the loot's accessibility as determined by the mod. Green = accessible, Red = inaccessible, White = undetermined (cannot find a valid NavMesh path to the loot).
-
debug.loot_path_visualization.loot_outline_radius: The radius (in meters) for the circles used in debug.loot_path_visualization.outline_loot.
-
debug.loot_path_visualization.only_outline_loot_with_pathing: Only draw outlines for loot that requires the mod to determine its accessibility by finding a NavMesh path to it. Many items will be excluded because their accessibility is automatically determined from other parameters.
-
debug.loot_path_visualization.draw_incomplete_paths: Draw failed paths created when the mod tried to find a valid NavMesh path to the loot. The line color will be white.
-
debug.loot_path_visualization.draw_complete_paths: Draw NavMesh paths that successfully reached the loot. The line color will be blue.
-
debug.loot_path_visualization.outline_obstacles: Draw boundaries around the obstacles detected between the final point in completed NavMesh paths and the loot item (determined via raytracing). If the outline color is magenta, the obstacle was ignored. If the outline color is red, the mod thinks that obstacle is making the loot inaccessible.
-
debug.loot_path_visualization.only_outline_filtered_obstacles: Only draw boundaries around obstacles for debug.loot_path_visualization.outline_obstacles if they caused the mod to consider the loot inaccessible. The outline color will be red.
-
debug.loot_path_visualization.show_obstacle_collision_points: Draw a spherical outline at each point where a collision with an obstacle was detected between the final point in completed NavMesh paths and the loot item (determined via raytracing). Collisions with obstacles that are ignored will not be drawn. The outline color of each point will be red.
-
debug.loot_path_visualization.collision_point_radius: The radius (in meters) for the circles used in debug.loot_path_visualization.show_obstacle_collision_points.
-
debug.loot_path_visualization.show_door_obstacles: Draw an ellipsoidal outline around doors that should block NavMesh pathing either because they're locked or something is currently interacting with them. Outlines are updated every destroy_loot_during_raid.check_loot_accessibility.door_obstacle_update_time seconds. The outline color will be yellow.
-
debug.loot_path_visualization.door_obstacle_min_radius: Ensures the radii for ellipsoids drawn for debug.loot_path_visualization.show_door_obstacles are at least this value (in meters). Otherwise, the outlines may be hard to see.
If you're using this mod along with Kobrakon's Immersive Raids mod, please change the following in config.json:
- destroy_loot_during_raid.max_time_without_destroying_any_loot to any value you want. This is the frequency (in seconds) at which an item is removed from the map. If this value is small and you stay in the raid for a long time, you'll eventually have no more loot on the map.
Known issues:
- Trader-stock changes do not work in SPT-AKI 3.8.0+
- Any locked door on the map is equally likely to be opened, including those locked with rare keys and those nobody ever really opens/closes in live Tarkov.
- Some items have no price defined in handbook.json or prices.json, which makes the mod rank them as being extremely undesirable (i.e. the AXMC .338 rifle). This will hopefully be fixed as the data dumps available to the SPT developers improve.
- If destroy_loot_during_raid.check_loot_accessibility.enabled=false, loot can be despawned behind locked doors or in locked containers. If destroy_loot_during_raid.check_loot_accessibility.enabled=true, some loot is falsely considered inaccessible and will never be despawned.
- The "hot items" sold by traders are always the same, regardless of your player level or account age. This makes the trader stock changes always seem like it's early wipe.
- Traders may sell out of junk ammo that nobody actually buys.
- If you approach the car extract without taking it and this mod instructs it to leave later in the raid, you'll see the countdown timer when you check your extracts.
2.5K Downloads
- Fixed incompatibility with the loot-destruction system and Fika
config.json files from the 2.3.1 through 2.6.0 releases are compatible, but you'll receive warning messages in the server console about trader-inventory changes being disabled.
4.1K Downloads
- Updated to SPT 3.9.0
config.json files from the 2.3.1 through 2.5.1 releases are compatible, but you'll receive warning messages in the server console about trader-inventory changes being disabled.
Because the file structure has changed with this release, files from all previous versions of this mod must be removed before installing this version!
-
Allow the server and client to run on different machines. To accomplish this, the following changes were made:
- Moved the client DLL into its own folder ("DanW-LateToTheParty")
- Log files will now be stored within the new client directory for this mod
- Added server and client checks for an older client DLL still remaining in the "BepInEx\plugins" directory. If so, show an error when the server or game starts and disable this mod.
- If a "log" directory from older versions of the server files still exist, write warning messages in the server console, but still allow the mod to function
- Removed the LateToTheParty endpoint for writing error messages to the server console and will now use the SPT one
- If the map cannot be determined when loot is ready to be destroyed (namely when using Fika), write error messages to the game console and server console and then disable the loot-destruction system
- Bug fix for not being able to disable the loot-ranking system
- Bug fix for allowing SPT 3.9.0
config.json files from the 2.3.1 through 2.5.0 releases are compatible, but you'll receive warning messages in the server console about trader-inventory changes being disabled.
1.3K Downloads
- Added support for having multiple non-AI players
- Bug fix for opening doors requiring power (before it's turned on) when other mods are used that add context-menu actions
- Bug fix for opening the inner KIBA door before the outer door
config.json files from the 2.3.1, 2.4.0, and 2.4.1 releases are compatible, but you'll receive warning messages in the server console about trader-inventory changes being disabled.
5.8K Downloads
- Log error instead of allowing exception when trying to register a picked-up item that wasn't discovered in the loot pool
- Track player movement instead of camera movement for determining when to check for loot
config.json files from the 2.3.1 and 2.4.0 releases are compatible, but you'll receive warning messages in the server console about trader-inventory changes being disabled.
1.4K Downloads
- Updated for SPT-AKI 3.8.0
- Disabled changes to trader inventories. This will require significant updates to work with the SPT-AKI 3.8.0+ server code.
- Stop using trader enums in the server code
config.json files from the 2.3.1 release are compatible, but you'll receive warning messages in the server console about trader-inventory changes being disabled.
2.5K Downloads
Only compatible with SPT-AKI 3.7.4 - 3.7.6
- Added config option to disable trader stock changes for Fence. Fence changes are enabled by default because he still sells unrealistically nice stuff in SPT-AKI 3.7.6.
- Bug fix for constant NRE's when in the Hideout
- Updated server code per Lint recommendations
The config.json file from previous releases is NOT compatible.
3.0K Downloads
Only compatible with SPT-AKI 3.7.4 - 3.7.6
-
Added system to turn on switches (i.e. power switches) throughout the raid:
- A random number of switches will be toggled at random points throughout the raid (configurable). Only switches that players can toggle are eligible.
- Switches that control extract points (i.e. elevator buttons in Labs) will not be allowed to turn on until a certain amount of time has elapsed in the raid, before adjustments are made for Scav runs (600s by default)
- Switches will not be allowed to be turned on if you're within a certain distance from them (150m by default)
- Just like the systems that open doors and despawn loot, switches that are "missed" when spawning in late as a Scav will be toggled immediately after you spawn. Audio will be disabled for these switches so it's less obvious what has changed on the map.
- If a switch is only available to turn on after another one is turned on, that one will be toggled first. If this occurs after the initial switches have been turned on for Scav raids, the first switch won't be toggled until some time after the prerequisite switch is. The delay is proportional to the distance between the two switches.
- When spawning in late as a Scav, initial switches must be toggled before initial doors are opened (which then allows initial loot to be despawned). This ensures doors that require power will be eligible to be opened (if the power switch is turned on).
- Added the factor destroy_loot_during_raid.players_with_loot_factor_for_maps_without_pscavs (0.3 by default) to apply to fraction_of_players_full_of_loot for maps that do not allow player Scavs to spawn. This means that (by default) significantly less loot will be despawned throughout Labs raids.
- Reduced only_make_changes_just_after_spawning.time_limit from 30 to 5 seconds because it doesn't really need to be any longer than that.
The config.json file from previous releases is NOT compatible.
NOTE: This release uses the previous code (for SPT-AKI 3.6.1) to change Fence's inventory, so that will need to be revised now that SPT-AKI 3.7.0+ has fixed some of the issues LTTP addressed back in the 1.2.0 release.
233 Downloads
Only compatible with SPT-AKI 3.7.4 - 3.7.6
-
Improved car-extract behavior:
- The car will now leave at some point during the raid instead of having the chances of it being available reduced based on the time you spawn in.
- Just like in live Tarkov, the car extract will appear in green font after it has been activated (even if you haven't approached it yet), and it will appear in red font after it leaves.
- The car will not be allowed to leave if you're within a certain distance of it (150m by default). If the car extract has already been activated, it will be deactivated if you get too close to it so you don't get a free ride. After this happens, it won't be allowed to be activated again for a certain amount of time (120s by default).
- Added car-extract departures to systems that can be disabled by only_make_changes_just_after_spawning
- Changed default value of only_make_changes_just_after_spawning.affected_systems.opening_locked_doors to true because bots can now unlock doors in Questing Bots.
The config.json file from previous releases is NOT compatible.
NOTE: This release uses the previous code (for SPT-AKI 3.6.1) to change Fence's inventory, so that will need to be revised now that SPT-AKI 3.7.0+ has fixed some of the issues LTTP addressed back in the 1.2.0 release.
276 Downloads
Only compatible with SPT-AKI 3.7.4 - 3.7.6
- Allow keycard doors and car trunks to be unlocked, opened, and closed throughout the raid (and at the beginning of Scav raids)
- If loot is in a trunk, open the trunk before destroying it. If the trunk is locked, do not destroy it.
- Bug fix for constant exceptions if destroy_loot_during_raid.loot_ranking.enabled=false<br>
<br>
config.json files from the 2.0.0 release are compatible, but destroy_loot_during_raid.nearby_interactive_object_search_distance will always be 0.75, and destroy_loot_during_raid.only_search_for_nearby_trunks will always be true.
NOTE: This release uses the previous code (for SPT-AKI 3.6.1) to change Fence's inventory, so that will need to be revised now that SPT-AKI 3.7.0+ has fixed some of the issues LTTP addressed back in the 1.2.0 release.
1.0K Downloads
Only compatible with SPT-AKI 3.7.4 - 3.7.6
- Updated required version of SPT-AKI to 3.7.4
- The following changes for Scav raids are now managed by base SPT:
- Spawning into raids late
- Reducing the minimum time needed to stay in the raid to get a "Survived" status
- Updating train times
- Removing missed bot waves
- If destroy_loot_during_raid.enabled=false, reducing starting loot.
- Client-side raid-time calculations
- Added an option to force you to spawn late 100% of the time as a Scav (enabled by default)
- Caching original escape times is now done slightly later as you load into the raid
- Removed all code for features now managed by base SPT
- Removed enums from server code because they cause issues with development SPT builds
- Fixed incorrect type name Preset to correct name IPreset in server code
- Bug fix for the mod trying to store null items as loot picked-up or dropped by bots
The following changes for Scav raids can still be done by Late to the Party:
- Initial setup with doors opened and loot removed (in a more realistic manner than base SPT)
- Reduced vehicle extract chances
- Reduced boss spawn rates
- PMC-conversion chances change over the course of the raid (disabled by default)
The config.json file from previous releases is NOT compatible.
NOTE: This release uses the previous code (for SPT-AKI 3.6.1) to change Fence's inventory, so that will need to be revised now that SPT-AKI 3.7.0+ has fixed some of the issues LTTP addressed back in the 1.2.0 release.
946 Downloads
-
Adding a configuration option to only destroy loot for a short time after you spawn, but the option is disabled by default. This is intended to be enabled if you're using Questing Bots and Looting Bots. By default, loot will only be destroyed and doors will only be opened/closed for the first 30s after you spawn when this is enabled. However, locked doors can still be opened because Questing Bots does not yet allow bots to unlock doors (as of the 0.3.2 release). The following systems can be individually enabled or disabled for this feature:
- Loot destruction
- Opening unlocked doors
- Opening locked doors
- Closing doors
- Revised loot-sorting algorithm when loot ranking is enabled. Instead of destroy_loot_during_raid.loot_ranking.randomness applying to all possible items in the game, it only applies to the accessible loot on the map. This means that higher-value loot is more likely to be destroyed per loot-destruction event. To compensate for this, randomness has been increased by default from 30% to 200%, and a top_value_retain_count setting was added to prevent a configurable number of the highest-value items from being destroyed (5 by default). That way, you always have a small chance of finding high-value loot regardless of how much time has elapsed in the raid when you spawn. The randomness factor is now proportional to 2σ of the values of all accessible loot on the map, which effectively ignores outliers like Labs cards and provides better consistency between raids for the items that are destroyed.
- Added a slot-count limit for destroyed loot that's proportional to the maximum number of players for the map. Practically, this means there will be no change to the number of destroyed loot items for less loot-dense maps like Factory and Customs, but more loot will be remaining near the end of raids for more loot-dense maps like Interchange and Reserve.
- Limit the number of individual items and item slots that are destroyed per loot-destruction event. This provides better accuracy for the value of destroyed loot when destroying initial loot in Scav runs.
- Do not destroy loot until the first wave of doors have been unlocked (if applicable). This allows loot to be destroyed behind previously locked doors after you spawn in Scav runs.
- Boss spawn chances are reduced by default again if you spawn in late. Previously this was disabled by default because the setting to enable multiple options for adjusting bot-spawn chances were lumped together.
- Removed the version number from the directory name in \user\mods\
- Removed duplicate debug message when enumerating loot that is already in a player's inventory
- Revised debug messages to include more information about loot-destruction limits
- Removed commas in the names of items when generating the loot log at the end of raids. Otherwise, columns may be shifted in the CSV files.
- When creating loot-data CSV files at the end of raids, prevent the value of "Raid ET When Found" from being below 0
- Bug fix for loot-remaining fraction not including items that have been picked up by players/bots
The config.json file from previous releases is NOT compatible.
NOTE: This release uses the previous code (for SPT-AKI 3.6.1) to change Fence's inventory, so that will need to be revised now that SPT-AKI 3.7.0+ has fixed some of the issues LTTP addressed back in the 1.2.0 release.
Please make sure you delete previous versions of this mod from your \user\mods directory!
1.9K Downloads
- Updated for SPT-AKI 3.7.1
- Bug fix for not being able to enter a raid after leaving one while it was loading
config.json files from the 1.3.1 through 1.3.4 releases are fully compatible. config.json files from the 1.2.2 and 1.3.0 releases are compatible, but destroy_loot_during_raid.exclusion_radius_bots will always be 10m.
NOTE: This release uses the previous code (for SPT-AKI 3.6.1) to change Fence's inventory, so that will need to be revised now that SPT-AKI 3.7.0+ has fixed some of the issues LTTP addressed back in the 1.2.0 release.
- Updated for SPT-AKI 3.7.0
config.json files from the 1.3.1 through 1.3.3 releases are fully compatible. config.json files from the 1.2.2 and 1.3.0 releases are compatible, but destroy_loot_during_raid.exclusion_radius_bots will always be 10m.
NOTE: This release uses the same code (for SPT-AKI 3.6.1) to change Fence's inventory, so that will need to be revised now that SPT-AKI 3.7.0 has fixed some of the issues LTTP addressed back in the 1.2.0 release.
97 Downloads
- Bug fix for some functions not working after the first raid
config.json files from the 1.3.1 and 1.3.2 releases are fully compatible. config.json files from the 1.2.2 and 1.3.0 releases are compatible, but destroy_loot_during_raid.exclusion_radius_bots will always be 10m.
46 Downloads
- Bug fix for dropped items despawning (i.e. items in backpacks that you drop)
- Removed the root folder from the ZIP
config.json files from the 1.3.1 release are fully compatible. config.json files from the 1.2.2 and 1.3.0 releases are compatible, but destroy_loot_during_raid.exclusion_radius_bots will always be 10m.
Thanks to prettyplayer for the bug report!
363 Downloads
- Improved compatibility with LootingBots
- Loot cannot despawn if it's too close to a bot (25m by default)
- Improved accuracy for percentage of remaining loot
- If debug.free_labs_access=true, you will also be able to enter Labs as a Scav
- Fixed delayed door openings when spawning as a Scav
- Fixed doors constantly opening/closing when using ImmersiveRaids
- Fixed debug settings being enabled and changed by default
- Fixed adjust_raid_times.adjust_bot_waves being disabled by default
- Reduced minimum bot-wave time from 20s to 1s when spawning in late
- Disabled adjust_bot_spawn_chances.enabled by default anticipating that SWAG/DONUTS or QuestingBots will be used for this instead.
- Fixed NRE when searching for the bot closest to a point on the map
- Fixed game freezing when raids end
- Improved compatibility when parsing EFT JSON data from the server
config.json files from the 1.2.2 or 1.3.0 releases are compatible, but destroy_loot_during_raid.exclusion_radius_bots will always be 10m.
775 Downloads
- Updated for SPT-AKI 3.6.0
- Updated server dependencies for SPT-AKI 3.6.0
Config files from the 1.2.2 release are compatible with this release.
157 Downloads
- Bug fix for some inoperable doors being opened/closed by the mod (i.e. the door between Old Gas and the train tracks on Customs)
- Bug fix for trader inventory changes not being reflected in their flea-market offers
- When debug.enabled=true, the ID of doors will be logged in the bepinex console whenever you hover over them to show their context menu
The config.json file from previous releases is NOT compatible.
Thanks to Mark1502 for help with bug reports!
261 Downloads
- Fixed incompatibility with The Blacklist mod
- Show an error in the server console if it provides invalid data to the client
- Show a warning in the server console if prices in prices.json and handbook.json are both invalid
- Prevent items that don't have valid prices in either prices.json or handbook.json from being allowed in Fence's inventory
- Bug fix for corrupted loot-ranking data causing significant performance issues (Issue #1)
- Bug fix for the DLL constantly requesting loot-ranking data after it fails to retrieve it the first time (cause of memory leak in Issue #1)
- Bug fix for many NRE's appearing in the bepinex console when leaving a raid
- Bug fix for server failing to start when debug.enabled=true and some custom trader mods are used
Config files from the 1.2.0 release are compatible with this release.
Thanks to MusicManiac for help with testing!
221 Downloads
Big update!
- Trader stock now reduces throughout each reset, and desirable items can sell out (i.e. MP-133's)
- Fence now sells ammo
- Fence now sells more weapons, but they tend to be less desirable
- Fence now sells more items, but they tend to be less desirable and can sell out
- Prices for degraded items (weapons, armor, meds, etc.) sold by Fence are now reduced
- Fence's inventory now combines items that can't degrade to show multiple items per "stack"
- Locked doors are less likely to be opened throughout the raid
- Any loot found in the map after the raid started is now automatically considered accessible by the mod
- Performance improvement with many dead bots in the map
- Limit the despawn rate of loot in the map so a lot of items aren't despawned at once when a bot dies
- Added debug options for minimum player level for accessing the flea market, free access to Labs, and adjusting trader resupply times
- Bug fix for attachments despawning in your inventory after picking up items with them (i.e. tactical devices on weapons)
- Bug fix for handbook.json prices not being used when determining loot-ranking values
- Bug fix for getting an error when trying to interpolate outside of array bounds
- Updated minimum supported version of SPT-AKI to 3.5.7
- Changed destroy_loot_during_raid.loot_ranking.weighting.parents.xxx.weighting to destroy_loot_during_raid.loot_ranking.weighting.parents.xxx.value in config.json
The config.json file from previous releases is NOT compatible.
If you have any suggestions for changes to what items tend to be sold-out by traders, please let me know!
Thanks to Tron for help with testing!
272 Downloads
Created a new system to check if loot is accessible via NavMesh pathing and raycasting before allowing it to be despawned. This system is a WIP and may have a small performance impact. Please see the Overview tab or README for more details.
If you're experiencing performance issues after upgrading from 1.1.8 through 1.1.14, please try setting destroy_loot_during_raid.check_loot_accessibility.enabled=false. Whether or not that fixes it, please let me know.
Other changes:
- CRITICAL BUG FIX for the loot-despawning and door-opening systems not working if you enter the hideout before starting a raid
- Loot inside locked containers is no longer allowed to be despawned
- Reduced initial stutter when the mod searches for doors in the map
- Slightly improved the performance of checking for new loot
- When debug.enabled=true, reset the Scav timer if it's greater than the worst-case cooldown timer possible for debug.scav_cooldown_time
- Revised bepinex debug messages when splitting work across multiple frames
- Added loot accessibility to loot log files
- Fixed possible incompatibility with other mods starting with SPT-AKI 3.5.8
The config.json file from previous releases is NOT compatible.
Thanks to DrakiaXYZ for help with blocking locked doors from being used in NavMesh pathing. Thanks to Mindtality on Discord and oshtwtf for help with testing.
P.S. In case you look at the source code, sorry about the spaghetti code for the pathing visualization. It works, but I hate it and will eventually rewrite it.
310 Downloads
CRITICAL BUG: loot-despawning and door-opening systems do not work if you enter the hideout before starting a raid. This will be fixed in the 1.1.15 release.
- Airdrop loot is now able to be despawned starting destroy_loot_during_raid.min_loot_age seconds after the crate lands
- Full backpacks/rigs are less likely to be despawned via new config parameters for child-item count and total weight limits
- Slightly devalued weapons so they despawn later
- When debug=true, a CSV file will be generated containing all loot generated during the raid and its spawn/despawn times. The CSV will be generated when leaving the raid.
You can use your config.json file from the 1.1.9 release or later, but it's not recommended. If you do, the mod is more likely to despawn full backpacks/rigs.
252 Downloads
CRITICAL BUG: loot-despawning and door-opening systems do not work if you enter the hideout before starting a raid. This will be fixed in the 1.1.15 release.
- Further improved performance of loot-despawning system
- Fixed possible race condition when despawning loot while leaving a raid
- Removed deprecated client-side code
- Fixed incorrect client-side namespaces
config.json files from the 1.1.9 or later releases are compatible with this release.
100 Downloads
CRITICAL BUG: loot-despawning and door-opening systems do not work if you enter the hideout before starting a raid. This will be fixed in the 1.1.15 release.
- Updated for SPT-AKI 3.5.7
- Improved performance of loot-despawning system
- Fixed frequent NRE's in the bepinex console when ending raids
- Added crash logs for unhandled exceptions (WIP)
config.json files from the 1.1.9 or later releases are compatible with this release.
This release is NOT compatible with SPT-AKI 3.5.6 or below.
291 Downloads
CRITICAL BUG: loot-despawning and door-opening systems do not work if you enter the hideout before starting a raid. This will be fixed in the 1.1.15 release.
- Fixed incompatibility with SPT Realism Mod that would prevent the game from loading
- Fixed enabled flag in config.json not actually disabling everything when set to false
- Set destroy_loot_during_raid.loot_ranking.alwaysRegenerate=true by default to minimize chances of accidental loot-ranking-data corruption
config.json files from the 1.1.9 or later releases are compatible with this release.
Thanks to oshtwtf for helping with troubleshooting issues with SPT Realism Mod!
If you're experiencing stuttering issues after updating from v1.1.8 or below, please try setting destroy_loot_during_raid.loot_ranking.enabled=false. I'm hoping to fix this in early June.
56 Downloads
CRITICAL BUG: loot-despawning and door-opening systems do not work if you enter the hideout before starting a raid. This will be fixed in the 1.1.15 release.
- The loot-ranking system now uses weapon presets instead of random bot weapons if there are no matching trader offers for it.
- If there aren't any presets defined for a weapon, a barebones one will be created for it for the purpose of loot-ranking
- Eliminated "normal" warning and error messages when loot-ranking data is generated
config.json files from the 1.1.9 release are compatible with this release.
88 Downloads
CRITICAL BUG: loot-despawning and door-opening systems do not work if you enter the hideout before starting a raid. This will be fixed in the 1.1.15 release.
Loot is now ranked and despawned in order of its perceived "value" but with some amount of randomness applied. If you want to get high-value items, you'll need to run to contested areas right after you spawn just like in live Tarkov. However, thanks to the randomness, there's still a chance you'll be lucky and find a valuable item later in the raid.
The ranking system is still a work-in-progress and will likely be adjusted in the future. If you'd like to play with the ranking parameters, I've provided a utility to view how each item in the game is ranked by the algorithm in the mod (see the README or Overview tab for more information).
The config.json file from previous releases is NOT compatible.
CRITICAL BUG: loot-despawning and door-opening systems do not work if you enter the hideout before starting a raid. This will be fixed in the 1.1.15 release.
- The PMC spawn rate now changes dynamically throughout the raid. PMC's are about twice as likely to spawn toward the beginning of the raid and less than half as likely to spawn toward the end of it. The spawn rate changes can be adjusted in config.json.
- If you spawn into the raid late (namely as a Scav), bosses are less likely to spawn (to "simulate" players killing and looting them).
- Bug fix for incorrect raid time being used for your PMC character if you first select "Scav", go all the way to the "Ready" page, and then back completely out to the main menu.
You can use your config.json file from the 1.1.6 release or later, but it's not recommended. If you do, the mod will not make any PMC or boss spawn changes.
129 Downloads
- The door-opening system is now functional and enabled by default
- Implemented new check in DrakiaXYZ's Door Randomizer 1.0.2 mod
- Prevented doors that don't show context menus to the player from being opened/closed by the mod
config.json files from the 1.1.6 release are compatible with this release.
199 Downloads
- Removed hard-coded plausibility check for max raid time to support Kobrakon's Immersive Raids mod
- Added parameter in config.json for max time between loot despawning (default=60s) for Kobrakon's Immersive Raids mod
- Added flags in config.json to disable raid-time adjustments and other related changes
- adjust_bot_waves is now enabled by default because I found that my code was always making the changes regardless of this setting and nobody has complained about it yet
- Fixed crappy code in the last update and did some other refactoring
Please see the Overview tab (or README) for more information about Kobrakon's Immersive Raids mod compatibility.
The door-opening system is still in alpha testing and therefore is still disabled by default.
The config.json file from previous releases is NOT compatible.
61 Downloads
- Prevent loot from despawning until after a certain amount of time (120s by default) after it first appears on the map. This does not apply to loot initially placed on the map as it's generated. This is to give you time to reach bots that were killed at a distance outside of the exclusion_radius setting for loot despawning.
- Prevent loot on bots from despawning if they're killed by you or another bot. By default, loot on bots killed by you will never despawn, but loot on bots killed by other bots can still despawn.
The door-opening system is still in alpha testing and therefore is still disabled by default.
The config.json file from previous releases is NOT compatible.
56 Downloads
Alpha release of new system that randomly opens/closes doors throughout the raid (including locked/breachable doors). Since the system needs a lot more testing and tweaking, it's disabled by default. Please see the Overview tab (or README) for known issues, and please let me know if you find any unreported problems or have any other feedback. Shout out to DrakiaXYZ for providing the initial code and inspiration! I'm planning to publish a new release with this system enabled after another ~2 weeks of testing (also because I'll be out of town for a bit).
Otherwise, nothing has changed from the 1.1.3 release.
The config.json file from previous releases is NOT compatible.
- Significant code refactoring so it's not as bad as BSG's. If I did my job well, you shouldn't notice.
- Combined loose and static loot pools to make loot despawning seem more random.
- Slightly reduced initial stuttering when starting a Scav raid.
- Fixed bug causing items in a container (i.e. backpack) dropped by the player to still be eligible for despawning if they weren't in that container the first time the player dropped it.
- Suppressed all non-essential messages in the bepinex console if debug=false.
The config.json file from previous releases is NOT compatible.
136 Downloads
- Added map_traversal_speed_mps parameter in config.json to prevent the mod from despawning loot too far away from PMC spawn points to reasonably reach in time. With the default setting, you have 2-3 min to get to Resort before loot can despawn there.
- Slightly reduced the time delay before loot can begin despawning in PMC raids.
You can use your config.json file from the 1.1.0 or 1.1.1 release, but it's not recommended. If you do, the mod will assume map_traversal_speed_mps=2.
76 Downloads
Fixed most stuttering issues by spreading out the loot-destruction routine across multiple frames.
Please read the Overview tab (or README) for more details.
I still get slight stuttering in the first few seconds of a Scav raid, but I don't notice anything else otherwise. If you're expecting 120fps, the loot-destruction system probably isn't for you, but I rarely dropped below 60fps in my testing. If your experience greatly differs from mine, please post a comment to help me further improve this mod!
You can use your config.json file from the 1.1.0 release, but it's not recommended. If you do, the mod will assume the following values:
- min_time_before_update_ms: 30
- max_time_before_update_ms: 5000
- max_calc_time_per_frame_ms: 5
67 Downloads
Big update! Loot now despawns gradually throughout the raid (for both your Scav and PMC). Even if you spawn at the beginning of the raid as a PMC, loot will be much more sparse toward the end of the raid. You can no longer be complacent with grabbing the Machinery key or Unknown key just before leaving the raid because it may not be there anymore!
Please read the Overview tab (or README) for more details. The new loot-despawning system is still a work-in-progress and has some minor issues. If you disable it in config.json, the the mod will effectively use the previous system from the 1.0.3 release.
This release is not compatible with SPT-AKI 3.5.4 or older.
378 Downloads
Now compatible with random raid times generated by Refringe's Custom Raid Times mod
116 Downloads
Bug fix for minimum time to avoid a "Run Through" status not being adjusted when entering the raid late
You can now run directly to extract after spawning into Factory as a Scav and get a "Survived" status (assuming at least 7 min has passed since the original raid length). That means all of your gear will be FIR when you transfer it to your PMC's stash, just like in live Tarkov!
Bug fix for reduced loot multipliers not resetting for PMC raids
Not quite yet...