This document describes loot customization features in SCUM. Loot customization is performed through creation and modification of various JSON files. Familiarity with JSON basics is prerequisite, so if you’ve never heard of JSON or just need to brush up your knowledge, here are some useful links:
- https://en.wikipedia.org/wiki/JSON
- https://www.w3schools.com/js/js_json_intro.asp
- https://www.json.org/
Most of the loot related JSON files can be exported from the game via various admin commands while some of them have to be created manually. The root path where the JSON files are found is:
- <Server>\SCUM\Saved\Config\WindowsServer\Loot for multiplayer server.
- %LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot for singleplayer.
JSON files are loaded at game startup and any subsequent changes can be reloaded via #ReloadLootCustomizationsAndResetSpawners command to test modifications quickly. Mentioned command will be described in detail later on as well as the process of exporting, creating and modifying loot related JSON files.
Before going deeper and jumping into commands and loot modification, we’ll be covering some concepts and prerequisite features which would prove essential for effective loot customization.
If you want to get started immediately, jump to the Exporting section.
Rarity
Rarity is used extensively throughout the loot customization. It determines the probability of selecting some object from the set of objects. Object is an abstract term and can mean anything. You can think of an object as an item for now. Each object in the set is assigned a rarity which can be one of the following values:
- Abundant: 32 times more likely to be selected than Extremely Rare
- Common: 16 times more likely to be selected than Extremely Rare
- Uncommon: 8 times more likely to be selected than Extremely Rare
- Rare: 4 times more likely to be selected than Extremely Rare
- Very Rare: 2 times more likely to be selected than Extremely Rare
- Extremely Rare: The same likelihood to be selected as any other Extremely Rare object in the set
So for example, let’s say you have the following set of objects (objects are items in this example):
{ Apple (Abundant), Banana (Common), Lemon (Uncommon), Kiwi (Rare), Mango (Very Rare), Watermelon (Extremely Rare) }
Apple is 2 times more likely to be selected than Banana, 4 times more likely to be selected than Lemon, 8 times more likely to be selected than Kiwi, 16 times more likely to be selected than Mango and 32 times more likely to be selected than Watermelon. On the other hand, Banana is 2 times less likely to be selected than Apple, 2 times more likely to be selected than Lemon, 4 times more likely to be selected than Kiwi, 8 times more likely to be selected than Mango and 16 times more likely to be selected than Watermelon. Likelihood of other fruit selection compared to remaining fruits can be deduced in a similar way.
Another way of looking at rarities is through a roulette wheel where the area occupied by the object determines the likelihood of it being selected. For the above example, roulette wheel looks like this:
As you can see, Apple occupies the most area so it is the most likely to be selected as opposed to Watermelon which occupies the least area so it is the least likely to be selected. Other fruits are in between.
Let’s look at another example:
{ Apple|Common, Banana|Common, Lemon|Rare, Watermelon|Very Rare }
This time, some rarities are “missing” and we have two fruits having the same rarity. Objects having the same rarity are grouped together. To determine the selected object in the group, one more dice is rolled with equal chances for all objects having the same rarity. Let’s look at roulette wheel for the example above:
In this case, Apple or Banana are 4 times more likely to be selected than Lemon and 8 times more likely to be selected than Watermelon. In the roulette wheel above, Apple or Banana are first selected and then dice would roll once more to select either Apple or Banana, each of them having 50% chance to be selected.
Knowing how the object selection works using rarities is important since it is used throughout the rest of the document for item selection, node selection and subpreset selection. Don’t worry if you don’t know what nodes and supresets mean. They will be explained in the following sections.
Loot Tree Nodes
Overview
Before explaining what loot tree nodes are, let’s cover the motivation for them. Let’s say we have a bar which can spawn the following items:
- Beer
- Absinthe
- Chips
- Hazelnuts
- 1H_KitchenKnife
We must somehow assign probabilities to items because it does not make sense that Hazelnuts for example have the same probability to spawn as Beer. At least not in a bar. We already have rarities to specify probabilities, so let’s try that:
- Beer (Abundant)
- Absinthe (Very Rare)
- Chips (Uncommon)
- Hazelnuts (Rare)
- 1H_KitchenKnife (Extremely Rare)
The issue with this approach is that these probabilities make sense in a bar but would not necessarily make sense somewhere else. For example if we need to spawn items in a residential kitchen, 1H_KitchenKnife would have greater probability to be found than Hazelnuts or Absinthe. Additionally, if we’re dealing with a very large number of items, rarities would simply not provide enough granularity. One solution could be to use numbers for probability instead of rarities but this could prove cumbersome for tweaking and maintaining.
We approached this issue by categorizing items and their rarities in a tree. Each tree node has a name and rarity. Parent node represents a bag of items which share some common traits. For example, the parent node could be a Bar which contains items that make sense in a bar. Furthermore, the Bar node could contain other bags such as Drinks, Food and Weapons which would contain items that make sense for those bags. Let’s put 5 items above into a tree:
- Bar
- Drinks
- Beer
- Absinthe
- Food
- Chips
- Hazelnuts
- Weapons
- 1H_KitchenKnife
- Drinks
So, the first step was to organize items into a tree. The next step is to assign rarities. Each node’s rarity is relative to other sibling node’s rarities. Since this is a bar, drinks should be more common than food and much more common than weapons. Also, beer should be more common than absinthe and chips should be more common than hazelnuts. We could assign rarities like this:
- Bar
- Drinks (Abundant)
- Beer (Abundant)
- Absinthe (Rare)
- Food (Uncommon)
- Chips (Abundant)
- Hazelnuts (Common)
- Weapons (Very Rare)
- 1H_KitchenKnife
- Drinks (Abundant)
Note that Bar and 1H_KitchenKnife nodes do not have rarities assigned. Bar because it is a root and 1H_KitchenKnife because it does not have siblings so it is the only choice within Weapons node.
The remaining question is how is an item selected from a tree such as one above. The answer is from left to right or in the tree terminology, from root node to leaf node. In the example above, the Bar node is the root node so selection starts there. The next thing to select is the child node of Bar. Bar node has three children: Drinks (Abundant), Food (Uncommon) and Weapons (Very Rare). Child node selection is made according to rarities as explained in the Rarity section. Let’s say a Food node is selected. Now the process continues until the leaf node is reached. Food node has two children: Chips (Abundant) and Hazelnuts (Common). Selection is made according to rarities and let’s say Chips node is selected. Chips node is leaf node and the selection stops there. The player would get Chips item spawned.
The same process applies for even the largest of trees. Selection starts from root, selects children according to rarities and proceeds until leaf node is reached. Leaf nodes are always items. Nodes containing child nodes are always bags of items.
We call this type of tree a loot tree and nodes within such a tree a loot tree nodes (or nodes for short).
Node IDs
In order for nodes to be used somewhere they must be referenced somehow. For example, let’s say we have three locations in the bar:
- Drawer that contains bar kitchen tools
- Refrigerator that contains various drinks
- Bar tables that could have either drinks or food placed on them
We’ll use nodes from the previous section to assign which items can be spawn by which location:
- Drawer gets Weapons node
- Refrigerator gets Drinks node
- Tables get Drinks and Food nodes
In the example above we used node names to specify which nodes provide items for which location. This is all fine for the tree as simple as one in the example but the issue is that the actual loot tree used in the game is huge and node names do not have to be unique. For example, we could have a node named Weapons both in the bar and in the police station. We must have a more precise way to specify which nodes are referenced. This is where node IDs come into play. Each node has an ID which uniquely identifies it. Node ID for a particular node is formed by prepending names of ancestor nodes to that node name while separating all names with a dot symbol. Let’s now use IDs instead of raw names to assign nodes to locations above:
- Drawer gets Bar.Weapons node
- Refrigerator gets Bar.Drinks node
- Tables get Bar.Drinks and Bar.Food nodes
Another way of looking at node IDs is as if they’re paths in the file system. Root node and inner nodes (bags) could be folders and leaf nodes (items) could be files. The only significant difference is that the separator for path segments is dot symbol instead of slash symbol.
JSON Specification
Nodes are specified using the JSON objects. Each node is a JSON object with the following two attributes:
Name | Type | Description |
Name | String | Name of the node. Must be unique among siblings. |
Rarity | String | Rarity of the node. Can be one of the values listed in the Rarity section. |
Nodes that contain other nodes (bags) have one additional attribute:
Name | Type | Description |
Children | Array of objects | Nodes that are children of this node. |
Nodes that represent items (leaf nodes) can have one additional attribute:
Name | Type | Description |
Variations | Array of strings | Some items represent the same logical item but have different “skins”. The example would be the same piece of clothes with different colors. Items which are variations on the color can be specified in the variation array of the item node. Whenever an item node with variations is selected, either item represented by the node or one of its variations will be selected using equal chances. |
This is how would JSON look for the tree in the previous section:
{ “Name”: “Bar”, “Children”: [ { “Name”: “Drinks”, “Rarity”: “Abundant”, “Children”: [ { “Name”: “Beer”, “Rarity”: “Abundant” }, { “Name”: “Absinthe”, “Rarity”: “Rare” } ] }, { “Name”: “Food”, “Rarity”: “Uncommon”, “Children”: [ { “Name”: “Chips”, “Rarity”: “Abundant” }, { “Name”: “Hazelnuts”, “Rarity”: “Common” } ] }, { “Name”: “Weapons”, “Rarity”: “Very Rare”, “Children”: [ { “Name”: “1H_KitchenKnife” } ] } ] } |
Exporting Built-in Nodes
So far, we have been using a simple loot tree to illustrate some basic concepts. Now is the time to export the actual loot tree used by the game. To accomplish this, two commands are used: #ExportDefaultLootTree and #ExportCurrentLootTree. #ExportCurrentLootTree will be
explained in the Customization section.
#ExportDefaultLootTree
Exports the loot tree in its default state. Default state is the state before any loot customizations have been made and that is the state game is shipped with. After you execute this command, you will get the loot tree in the following folder:
- <Server>\SCUM\Saved\Config\WindowsServer\Loot\Nodes\Default for multiplayer server.
- %LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Nodes\Default for singleplayer.
Default loot tree is too large to be managed when exported into a single file so it is exported into multiple JSON files where each file contains JSON for each direct child of ItemLootTreeNodes node. ItemLootTreeNodes is the root node for all nodes used in the game. This is how the output folder looks like:
You can inspect the generated default loot tree here.
After you have exported the default loot tree, you have not yet made any customizations. You just have a starting point useful for analysis and modification.
Customization
This section will guide you through customization of the loot tree used in a game. We’ll show you, step by step, how to modify and test what particular object in a game drops after being examined. Please keep in mind that game objects do not necessarily need to use nodes to specify which items they drop. They could be referencing items directly and not use nodes at all. But since we’re explaining nodes, we’ll be covering that case. Different ways of specifying which items are dropped by the game objects are explained in the Spawner presets section.
We’ll now completely customize what the red trash container on the image below drops.
For demonstration purposes, the idea is for the red trash container to drop drinks and food. Drinks should be dropped more commonly than food. When drinks are selected, we wish to drop either water or beer. Beer should be dropped rarely. When food is selected, we wish to drop apples or bananas with equal chances.
To accomplish the above, we need to make a loot tree JSON out of the description above. Here is the complete JSON loot tree for this example:
{ “Name”: “ItemLootTreeNodes”, “Children”: [ { “Name”: “Trash”, “ChildrenMergeMode”: “Replace”, “Children”: [ { “Name”: “Drinks”, “Rarity”: “Abundant”, “Children”: [ { “Name”: “Water_05l”, “Rarity”: “Abundant” }, { “Name”: “Beer”, “Rarity”: “Rare” } ] }, { “Name”: “Food”, “Rarity”: “Common”, “Children”: [ { “Name”: “Apple” }, { “Name”: “Banana” } ] } ] } ] } |
Here is also a GitHub link.
There is one JSON attribute above that was not mentioned previously in the JSON Specification section and that is the ChildrenMergeMode attribute on a bag. What it does is instructs the loot customization system on how to merge children of two bags that have the same ID. In the loot tree above, the custom node is a bag with ID ItemLootTreeNodes.Trash. Bag with that ID already exists in the default loot tree and is completely different from the one we’re making. Loot system has two options when bags have the same ID:
- Completely replace the children of the default bag with children from the custom bag.
- Merge children so that the resulting bag gets the children with the same name updated and new children added.
The first behavior is achieved by adding the ChildrenMergeMode attribute to conflicting bags and setting its value to Replace. The second behavior is achieved by either omitting the ChildrenMergeMode attribute altogether or setting its value to UpdateOrAdd. We’ve chosen Replace as merge mode for our custom bag because we don’t care what’s in the default ItemLootTreeNodes.Trash bag.
To additionally help you understand how merging works and what is the end result of merging, you can use #ExportCurrentLootTree command. It works in the same way as #ExportDefaultLootTree with two important distinctions:
- Loot tree is exported in a folder named Current as opposed to Default.
- The result is an actual loot tree that will be used to evaluate which items to spawn and it is a result of merging between default loot tree and any custom loot trees you have made. If you don’t have any loot tree customizations, the current loot tree is identical to the default loot tree.
So now we have a custom loot tree and we need to make the red trash container drop water bottles, beer, apples and bananas. To do this, follow these steps:
- Start the game. We recommend singleplayer for experimentation with nodes.
- Teleport your character using the following command: #Teleport -493223 -423063 611. Red trash container should be around you.
- Export default loot tree using the #ExportDefaultLootTree command. The game will tell you where the tree has been exported. In singleplayer, this should be:
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Nodes\Default - The red trash container drops items from the ItemLootTreeNodes.Trash bag by default. You’ll learn later on how to determine which game object drops what, whether it uses nodes, fixed set of items or some other way to specify the loot outcome. For now, just keep in mind that the red trash container can drop any item from the ItemLootTreeNodes.Trash bag. Open Trash.json and inspect it. We’ll not be using this file, just go through it to get a feeling how the nodes are structured and what items can be dropped from the red trash container.
- Since we’ll be modifying the nodes and testing what we got, it would be useful that the red trash container drops items each time it is searched. We don’t want to waste time waiting for spawner cooldown, especially if the game object drops nothing. First thing we’ll do is increase the probability of game objects dropping items. Download GeneralZoneModifiers.json file and place it in the
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot folder. This file will cause all examine spawners on the map to have increased probability to drop items. The probability will be increased 100 times so basically, all examine spawners will have a 100% chance to drop something. GeneralZoneModifiers.json section explains this in detail. Just take general zone modifiers as is for now. - Since you have now added a new customization (general zone modifiers) in the Loot directory, you need to tell the game to reload it.
Execute #ReloadLootCustomizationsAndResetSpawners command to reload all loot customizations. After executing the command, the game will increase the probability of examine spawners dropping items by 100 times and also reset the cooldowns on all examine spawners. - Try searching the red trash container and then executing
#ReloadLootCustomizationsAndResetSpawners command in a succession repeatedly. If you do that, you can see that you can repeatedly search and get something out of the red trash container. This enables you to test what is dropped quickly. - Create Override folder in the
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Nodes folder.
The game reads all loot tree customizations from the Override folder. - Create MyTrash.json file in the Override folder and copy paste the custom ItemLootTreeNodes.Trash bag JSON made previously into the file. Alternatively, download this file into your Override folder.
- Use #ReloadLootCustomizationsAndResetSpawners to apply and test loot tree customizations.
- Experiment with different node structure, rarities and items.
- Don’t forget to delete GeneralZoneModifiers.json file after you’re done unless you wish everything spawned with 100% probability in a regular singleplayer session.
This should be everything you need to know about nodes for now. Later on, you’ll learn how to reference nodes from custom Spawner presets.
Common Pitfalls
It is a common occurrence to make a small syntax error in the JSON file and wonder why loot customization does not work afterwards. When loot customizations do not work as expected, we recommend checking the game log for errors. For example, if we’ve made an error in the MyTrash.json and put the comma in the wrong place, the output log will contain something like this:
LogItemSpawningDataRegistry: Error: Failed to parse
‘E:/Projects/SCUM/Main/SCUM/Saved/Config/Windows/Loot/Nodes/Override/MyTrash.json’.
We agree it’s not very descriptive but at least you know in which file to look for an error.
Besides syntax errors, loot related game logs contain other useful information on the loot customizations. Loot related categories are LogItemSpawning, LogItemLootTree and LogItemSpawningDataRegistry so you should be able to filter game logs with those phrases.
Exporting
We have already exported everything written below. You will also find all of the sectors and a few towns so you can practice modifying in Singleplayer without having to export by locations in Multiplayer. You can download it here: https://github.com/CheeseKingu/Loot-Modifiers/blob/main/Loot.7z
#ExportDefaultItemSpawningParameters
This command will create a .json file with parameters for all items that can be spawned by the loot system. The example of items that are not included are crafted items.
- After typing #ExportDefaultItemSpawningParameters in Multiplayer you will export “Parameters.json” located here: Server\SCUM\Saved\Config\WindowsServer\Loot\Items\Default
- After typing #ExportDefaultItemSpawningParameters in Singleplayer you will export “Parameters.json” located here: %LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Items\Default
- We will take M82A1 as an example to explain what the lines mean:
- “IsDisabledForSpawning”: false – the item can be spawned, if you put “true” the item won’t spawn.
- “AllowedLocations”:
Coastal – items that will only be spawning on the sea coast area of the map.
Continental – items that will only be spawning on the continental area of the map.
Mountain – items that will only be spawning in the mountain area of the map.
- “CooldownPerSquadMemberMin”: 0 – if the item was looted by anyone in your squad, the entire squad can’t find the item for the minimum amount set here (in hours).
- “CooldownPerSquadMemberMax”: 0 – if the item was looted by anyone in your squad, the entire squad can’t find the item for the maximum amount set here (in hours).
- If it’s set this way “CooldownPerSquadMemberMin”: 1 and “CooldownPerSquadMemberMax”: 4 the cooldown for a certain item will be from 1 to 4 hours.
- “Variations”: [ “Weapon_M82A1_Black”, “Weapon_M82A1_Desert”, “Weapon_M82A1_Snow” ] – As you can see these are all of the skin variations for M82A1 placed here. If you put Weapon_M82A1 in Nodes or Items settings in any spawner preset it can also spawn its variations.
- “ShouldOverrideInitialAndRandomUsage”: false – it will not use the usage settings from the spawner preset, it will instead use the “InitialUsageOverride” and “RandomUsageOverrideUsage” inside this file.
- “InitialUsageOverride”: 0 – the value is in percentage, if you set it to 80 it will remove 80% of the maximum amount of uses an item has.
- “RandomUsageOverrideUsage”: 0 – the value is in percentage, if you set it to 20 it will remove 0-20% from the maximum amount.
- For example: our Gas Canister has 40 uses. We have set “InitialUsageOverride”: 80 and “RandomUsageOverrideUsage”: 20. If “RandomUsageOverrideUsage”: 20 picked let’s say 10, then a total of 90% will be removed from 40 uses. In this case our Gas Canister will spawn with 4/40 uses.
Overriding Parameters.json
- In order to modify your “Parameters.json”, you need to create the “Override” folder
- For Multiplayer go to Server\SCUM\Saved\Config\WindowsServer\Loot\Items and create the “Override” folder.
- For Singleplayer create it here:
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Items\ - You can create as many .json files as you want and name them whatever you want in the Override folder, this is purely for organization purposes.
- You can place any number of items inside the .json files you create, it’s up to you how you want to organize them. Example of such a folder: https://github.com/CheeseKingu/Loot-Modifiers/blob/main/Items.7z
- In this folder you can see that we have the Default and the Override we have created.
- Inside the Override folder, we have created 2 json files that we’ve named to our likings. Inside the json files we have overridden a couple of items.
#ExportDefaultItemSpawnerPresets:
This command will export all of the default spawner presets that we’re using in the game.
- To get started, type #ExportDefaultItemSpawnerPresets in Multiplayer, this will create the “Loot” folder in your Config located here: Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Default
- If you #ExportDefaultItemSpawnerPresets in Singleplayer it will be saved here:
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Spawners\Presets\Default
- Inside the Default folder you will find all exported spawner presets. You can’t create new ones, you can only change the existing ones.
- Presets that have “Examine” in their name are assigned to objects that you have to “Search” for them to drop loot, for example Buildings-Kitchen-Examine_Cabinet is assigned to kitchen cabinets you search in houses.
- Presets that have “World” in their name are assigned to spawners that spawn items in the vicinity. For example, Buildings-Garage-Residential-World_Shelf is assigned to shelves in garages in residential areas and drop items such as gas canisters or car batteries.
#ExportItemSpawnerPresetsInZone
This command will export all of the spawner presets used in a certain zone.
- Locations can only be specified with a rectangle shape on the map or by using the sector name.
- This command doesn’t generate some Landscape presets, Farming, Character and Cargo drop spawner presets, those have to be added manually as explained in the steps later.
- All of the zones exporting should be done in Multiplayer, in Singleplayer there is a certain distance loaded around your prisoner, so you won’t be able to export effectively.
Exporting by sector name:
- If you type #ExportItemSpawnerPresetsInZone A2 in Multiplayer. This will create the following folder: Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Override\A2
- If you type #ExportItemSpawnerPresetsInZone A2 in Singleplayer. This will create the following folder: %LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Spawners\Presets\Override\A2
- Inside the “A2” folder you will find all of the spawner presets that are used in the A2 sector.
- At the bottom of the folder you will find the “Zones.json”:
- This file contains “TopLeft” and “BottomRight” locations of the rectangle which is in this case the A2 sector:
- The “Zones” file determines the location boundary for all of the spawner presets in the given folder; it will make more sense in the next paragraph.
Exporting by rectangle locations:
- Open any admin helper program or open https://scum-map.com/en/interactive_map
- Find a location that you would like to modify, for example we’re gonna be modifying Tisno:
- If we were to type #ExportItemSpawnerPresetsInZone A2, we would get the spawner presets for the entire A2 and we only want to specify Tisno here.
- The format used for this command is #ExportItemSpawnerPresetsInZone X Y X Y Name.
- So we would type the X Y of the top left location, then the X Y of the bottom right location and the name is completely for organizational purposes. The name specified will be the name of the folder that will be created.
- Right click on the Top left location of the rectangle and press Copy TP location. You will get this value: #Teleport -15613.1299 -472342.2348 0 (X= -15613.1299, Y= -472342.2348).
- Save the location somewhere and then copy the bottom right location of the rectangle, you will get this value: #Teleport -83853.2402 -516124.1469 0 (X= -83853.2402, Y= -516124.1469).
- To use the command now, we need to take the X Y from the first location and the second location and put it in the command. We will also type Tisno for organizational purposes.
- So type in #ExportItemSpawnerPresetsInZone -15613.1299 -472342.2348 -83853.2402 -516124.1469 Tisno. It has exported 130 presets for the given location
- We have now created the folder called “Tisno” located here: Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Override\Tisno.
- Inside that folder we can find all of the spawner presets that are used on that location and we can see that command created the appropriate “Zones.json” file.
Zones.json
- The “Zones.json” determines the boundaries for the spawner presets in a certain folder.
- If there is no Zones file in a certain folder, it will use the Zones from the parent folder (so the child Zones file overrides the parents’ Zones file).
- If there is no Zones file included anywhere in the entire “Override” folder then it will use the global location (the presets will be used on the entire map).
- We will use the example of what we have already exported and we will export another small rectangle in the Port of Tisno (We have exported the A2 sector and Tisno itself).
- So we will use the same steps of exporting the location by using the top left and the bottom right location of the Port itself.
- Top left location: #Teleport -52954.4182 -493783.9695 0
- Bottom right location: #Teleport -77080.9405 -510602.7629 0
- Now we put the X Y X Y and the TisnoPort in the command itself: #ExportItemSpawnerPresetsInZone -52954.4182 -493783.9695 -77080.9405 -510602.7629 TisnoPort
- This is what our situation on the map looks like now:
- So now we have the “Zones” file in our A2 folder, we also have it in our “Tisno” folder and we have it in our “TisnoPort” folder.
- The locations are prioritized from smallest to biggest.
- So in this case our configuration for A2 will be set for everything in A2 excluding Tisno and excluding TisnoPort.
- Configuration done in Tisno folder will prioritize spawner presets over the spawner presets in the “A2” folder.
- Same for TisnoPort, it will prioritize the spawner presets inside over the “Tisno” spawner presets.
Modifying smaller locations
- You can modify house by house if you want to, but please beware the locations on admin helper programs might not be accurate.
- If you want to modify house by house, you should take in-game locations best done with two players (one placed at top left location, one placed at bottom right location).
- Admins should type #Location when they are at their desired locations.
- After you take the in-game locations you should transfer them to the admin command using the X Y X Y locations generated.
Overlapping zones
- If you have a situation as shown below, the red rectangle will have its own loot preset.
- But the top right part of the red rectangle will be overwritten by the green rectangle as the set location is smaller.
- So all of the spawner presets on the overlapped rectangle will be prioritized from the green rectangles folder.
- Example: if you set that rocks drop a Katana in the red rectangle and you set that rocks in the green rectangle drop a MK18, every rock in the overlapping rectangle will drop a
MK18.
GeneralZoneModifiers.json
- This is something that we can use if want to select a certain rectangle area on the map or the entire sector to modify loot globally on the selected area.
- You have to manually create the “GeneralZoneModifiers.json” in the root “Loot” folder located here: Server\SCUM\Saved\Config\WindowsServer\Loot
- Example of how to use it, copy paste link: https://github.com/CheeseKingu/Loot-Modifiers/blob/main/GeneralZoneModifiers
- We have created the “GeneralZoneModifiers.json” and we have added the “TopLeft” and the “Bottomright” location of the Fish Factory.
- The “Name” line is strictly for organization purposes.
- This will globally increase the loot we have specified below in that certain area.
- You can also globally increase the loot of the entire sector as shown in the picture above.
- These are basically multiplying with your “ServerSettings.ini” loot settings for the area you have selected and also the amount you have typed in.
- So we have set the ExamineSpawnerQuantity to 5 for the entire A1 sector, if it’s set to 0.5 in your “ServerSettings.ini”. It will be set to 2.5 (5 * 0.5 = 2.5).
- We have also set the entire FishFactory to the values as shown in the picture.
#SetShouldPrintExamineSpawnerPresets
This command will print which spawner preset you are looting from which object.
- To find out which Examine preset is assigned to which object in game you need to type #SetShouldPrintExamineSpawnerPresets true. After searching an object the spawner preset assigned will be printed to your chat and your log.
- You can filter the log with these lines to find everything you have searched using this line: Examine spawner preset.
- Example of the lines printed in SCUM.log and Loot.log: LogItemSpawning: Examine spawner preset: Buildings-Office-Police-Examine_File_Cabinet.
Singleplayer
To test in Singleplayer all of the searches you have done are printed to your “SCUM.log” located in the: C:\Users\%username%\AppData\Local\SCUM\Saved\Logs
Multiplayer
To test in Multiplayer all of the searches you have done are printed to your “Loot.log” located in the: Server\SCUM\Saved\SaveFiles\Logs\Loot.log
#ReloadLootCustomizationsAndResetSpawners
Reloads all loot customizations you have made in the Config/Loot. Also resets examine spawners so that they roll which items to spawn without waiting on a cooldown (if they have been searched recently). Vicinity spawners are not reset so you need to wait for a cooldown to pass to test those. Alternatively, you can test in Singleplayer and create a new character after each loot modification.
This command is very useful if you wish to quickly test out the customizations you have made. One common workflow could be:
- Make loot customization of you choice (don’t forget to save modified files).
- Execute #ReloadLootCustomizationsAndResetSpawners command.
- Test out loot customization by searching the container(s) affected by modifications in step 1.
Spawner presets
Spawner presets determine which loot you will find in the world or while searching objects.
Every object you search has a spawner preset assigned to it, every searchable object as well.
Spawner preset notes:
- Presets that have “Examine” in their name are assigned to objects that you have to “Search” for them to drop loot, for example Buildings-Kitchen-Examine_Cabinet is assigned to kitchen cabinets you search in houses.
- Presets that have “World” in their name are assigned to spawners that spawn items in the vicinity. For example: Gas Canister on shelves, Clothes on washing machines, etc.
- Only the changes done in the “Override” folder will modify the changes of spawner presets, everything else you have extracted are their default values.
- If you add Spawner presets to “Override” folder only, those changes will be global as you didn’t specify a location with “Zones.json”.
- Items that already exist on the map will not be replaced once the spawner preset is modified.
- After modifying a certain spawner preset you need to wait for the item to expire and for the new one to spawn or you can use #ReloadLootCustomizationsAndResetSpawners to reload searchable objects. This doesn’t affect vicinity spawns or “World” spawns.
- The best way would be to extract everything you need in Multiplayer and then transfer the entire Loot folder to Singleplayer by pasting it here: C:\Users\%username%\AppData\Local\SCUM\Saved\Config\WindowsNoEditor
- In Singleplayer you can just create a new character and your vicinity spawns will also reload.
Spawner preset settings
- We’re going to use Buildings-Factory-Quarry-World_Production_Line as an example to describe what the spawner preset settings refer to:
Probability
- “Probability”: 25, – 25% for the item to drop multiplied by what you have in your ServerSettings.ini and zone modifiers.
- If you want a 100% drop chance, you can simply Delete the entire “Probability” line
- Beware if you put Probability”: 100, it will still multiply with the ServerSettings.ini and zone modifiers, and your drop chance won’t be 100%
Quantity
- “QuantityMin”: 1, – minimum number of items that will drop from the spawner preset.
- “QuantityMax”: 1, – maximum number of items that will drop from the spawner preset.
- If you put “QuantityMin”: 4 and “QuantityMax”: 9, the spawner preset will choose a number from 4 to 9 and drop that many items.
Duplicates
- “AllowDuplicates”: false, – it will never give you two same items
- Even if the spawner preset chooses to give you 7 items but 3 of those items are duplicate, you will only get 4 items.
- “AllowDuplicates”: true – the spawner preset can spawn the same item multiple times.
Damage
- “InitialDamage”: 5, – the item should spawn on 100% durability, but the spawner preset will deal 5% durability damage to that item, so you will get the item on 95%
- “RandomDamage”: 35, – picks a number from 0 to 35 and deals that much % damage of the maximum durability.
- In this case we have “InitialDamage”: 5 and “RandomDamage”: 35 has picked 25, our item will spawn on 70% durability (100 – 5 – 25 = 70)
Uses
- “InitialUsage”: 5, – removes 5% of the maximum uses on an item, if the item has 20 uses it will remove 1 use.
- “RandomUsage”: 35, – picks a number from 0 to 35 and deals that much % of the maximum durability.
- In this case we have “InitialUsage”: 5 and “RandomUsage”: 35 has picked 15, our item will spawn on 16/20 uses (20 – 20% = 20 – 4 = 16).
ShouldFilterItemsByZone
- This refers to the “Coastal”, “Continental” and “Mountain” zone locations that are set in the Parameters.json.
- “ShouldFilterItemsByZone”: true, – means that it will be using the zone locations set in the Parameters.json, if you put it to false it can spawn anywhere.
(For an example: you have 10 items in your Node and the spawner preset is set on an object that is in the Continental area. Every item that doesn’t have Continental in its AllowedLocations won’t spawn there). - You can export the Parameters.json with this command: #ExportDefaultItemSpawningParameters it will be located here Server\SCUM\Saved\Config\WindowsServer\Loot\Items\Default
- Beware, if you want to edit the Parameters.json you need add items to files created in the “Override” folder explained in the Overriding Parameters.json section. The location will be: Server\SCUM\Saved\Config\WindowsServer\Loot\Items\Override
- Coastal – items that will only be spawning on the sea coast area of the map.
- Continental – items that will only be spawning on the continental area of the map.
- Mountain – items that will only be spawning in the mountain area of the map.
- For an example you will never find a santa jacket close to the sea as it doesn’t have Coastal in it:
- You will also never find a tactical jacket on the Continental or Coastal area as it only has Mountain in it:
Organizing spawner presets:
- We will modify the spawner presets we have already extracted in the steps above.
- So now we have extracted all the spawner presets used in A2, Tisno and TisnoPort.
- Since our “Override” folder has those three extracted inside, we will put them in folders by priority for better organization as they are all located in the A2 sector.
- Since “TisnoPort” is going to overwrite “Tisno” spawner presets and “Tisno” will overwrite “A2” spawner presets we will put them in that order as explained in the Zones.json.
- Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Override\A2\Tisno\TisnoPort.
Modifying spawner presets:
- There are 4 different ways you can modify the loot within a certain spawner preset: FixedItems, Items, Nodes and Subpresets.
- We will explain step by step how to use each of these and what do they mean and how they are used.
FixedItems
FixedItems is used when you want all items on the list spawned.
- FixedItems ignores all of the spawner preset settings except: InitialDamage, RandomDamage, InitialUsage, RandomUsage and PostSpawnActions.
- Copy paste link of a spawner preset with “FixedItems”: https://github.com/CheeseKingu/Loot-Modifiers/blob/main/FixedItems
- Open any of the spawner presets we have already extracted in the “Override” folder, we have chosen the Street-Residental-Examine_Trash_Container_Red.json in the “TisnoPort” folder located here:
Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Override\A2\Tisno\TisnoPort - This spawner preset has a certain node inside that can drop a number of things, but we want a certain item or multiple items.
- We will take the code from https://github.com/CheeseKingu/Loot-Modifiers/blob/main/FixedItems and replace it with what we have in the Street-Residental-Examine_Trash_Container_Red.json
- We have added three items to the spawner preset. In order to test this immediately you can use this command: #ReloadLootCustomizationsAndResetSpawners. Now when we loot the red container in the TisnoPort you will get the items as shown below:
Items
- When you want to add a number of items, you need to assign a rarity to them as well
- Copy paste link of a preset with “Items”: https://github.com/CheeseKingu/Loot-Modifiers/blob/main/Items
- Spawner presets with “Items” inside depend on their Rarity, Probability, QuantityMin and QuantityMax inside the spawner preset itself
- We will take an example of the spawner preset from the link above.
- We’re going to add it to one of the spawner presets we have already extracted in the steps above.
- Go to Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Override\A2\Tisno and select any spawner preset.
- We’ll pick Landscape-Foliage-Examine_Aloe_Vera.
- Copy the code from the link above and replace the code inside the Landscape-Foliage-Examine_Aloe_Vera.
–Now every Aloe vera we loot in Tisno area will have this spawner preset: - After you search Aloe vera in the selected area, first you have a chance of getting any loot which is defined by the probability.
- If you will get any item, the quantity depends on what you put in the “QuantityMin” and “QuantityMax”, in this case you will get from 1 to 2 items.
- Lesser rarity items will have a higher drop chance as explained in the Rarity.
Subpresets
- If you want to have multiple presets with any kind of spawning preset inside a certain spawner preset it’s most convenient to use Subpresets. In our case we’re using FixedItems inside our Subpresets.
- If Subpresets don’t have a rarity assigned to them, they will be uncommon by default. If you want to assign rarities to them to increase or decrease chances you should do it as described below.
- Copy paste link of a preset with “Subpresets”: https://github.com/CheeseKingu/Loot-Modifiers/blob/main/Subpresets
- We’re gonna use Buildings-Armory-TV_Bunker-Examine_Weapon_Locker_Lockpick_Tier_4 as an example
- We’re using “Subpresets” here because we want multiple presets of “FixedItems” spawn
- They are all the same rarity, so they all have the same chance to spawn.
- If we want to change the “Subpresets” or if we want to see what they contain, we need to find them in the Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Default
- We will take Special_Packages-Vault-Examine_RPK_Vault_Pack and open it in the “Default” folder
- If it’s going to spawn this “Subpreset” we will get the “FixedItems” contained inside.
- To change what they contain, you can simply open a subpreset and change the items.
Nodes
- Link on how to use Nodes entirely: Loot Tree Nodes
- We’ll provide two ways of how you can use them in your spawner presets.
- Copy-paste link of Nodes for your spawner preset: https://github.com/CheeseKingu/Loot-Modifiers/blob/main/Nodes
- Multiple nodes separated by rarity:
https://github.com/CheeseKingu/Loot-Modifiers/blob/main/MultipleNodes
Grouping by rarity
- You can group nodes by rarity, when your spawner preset is rolling to determine which node you will get you can add a number of them to the same rarity, example:
- You will have a much larger chance of getting the nodes grouped in the “Uncommon” rarity than the node separated with “Rare” rarity.
- When you have a number of nodes in one rarity, the nodes inside still have their own rarity, the rarity we’ve specified in the grouping just determines the rarity of the grouped nodes.
- In this case we have:
-Workshop.Tools that is “Uncommon”,
-Workshop.WorkClothes that is “Common”
-Workshop.Crafting that is “Common”
–Workshop.LightsFire that is “VeryRare” - After our spawner preset has chosen this group of nodes, it will still go through rarities of the mentioned nodes inside, so depending on their rarities the chances of certain items will differ.
- In order to assign desired rarities to certain nodes, please check the example below.
Separating by rarity
- You can separate nodes by rarity as we’ve shown above but here is an example of a larger number of nodes:
- The spawner preset will roll a dice to determine which node will be chosen from this list, the lower the rarities the higher the chances of getting them.
- After the spawner preset chooses which node you will get here, you can only get items contained in the mentioned node.
Combining
- You can modify spawner presets with multiple methods.
- Best example of this is what we already have in the game, we will open Landscape-Examine_GroundRocks_Snow.json located here: \Loot\Spawners\Presets\Default
- This spawner preset says that you will always get “Stone_Small”, “Snowballs_01” as said in the “FixedItems” . You will also get 1 to 2 items from the “Items” section as stated in the “QuantityMin” and “QuantityMax”:
- You can add any number of methods to any spawner preset, it is most convenient to combine “FixedItems” with “Items”/”Subpresets”/Nodes”.
Landscape, Puppets, Cargo and Farming drops:
- When you export spawner presets for certain locations, it will not give you Puppet, Cargo, Farming and Sentry drop spawner presets and it will not give you some Landscape spawner presets such as rocks
- In order to modify these spawner presets you need to take them out of the \Loot\Spawners\Presets\Default folder and add them to the location you have extracted (If you add them to the Override they are going to change globally)
- Beware, there are a lot of these spawner presets. For an example: there are 53 Puppet spawner presets, if you want your puppets to drop nothing or to drop a certain item. You need to change all of them
- Go to this location: Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Default
- We’re going to take a few presets here:
Landscape-Examine_GroundRocks
Special_Packages-Cargo_Drops-Examine_ASVal_CargoDrop
Character-Puppets-Military-Examine_SK_Millitary_Zombie_03
Farming-Examine_Cabbage - In order to modify them, you need to take the entire preset and copy-paste it to your desired area, in this case we have already extracted the A2 sector Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\Override\A2
- We will place those in the A2 sector folder and we will use the code that we have linked in “FixedItems” for each of these presets https://github.com/CheeseKingu/Loot-Modifiers/blob/main/FixedItems
- Now that we have replaced them with the desired “FixedItems”, every single rock we search in the A2 sector will drop a M82A1, a MK18 and a Katana
- If you search a Military_Zombie_03, it will also drop those items
- If you find the ASVal_Cargodrop preset you will also get those 3 items
- Every Cabbage that you grow with farming will drop those 3 items in their ripe stage, so you can basically grow any item you put inside
- You can use any kind of loot modifier for these spawner presets as stated above in the Modifying spawner presets
Post spawn actions
- Post spawn actions are added in the “PostSpawnActions” line if we want to modify the items that will drop
- Link of a spawner preset using multiple “PostSpawnActions” : https://github.com/CheeseKingu/Loot-Modifiers/blob/main/PostSpawnActions
List of post spawn actions:
- AbandonedBunkerKeycard – If the item is a keycard, assign that it can open the closest bunker.
- SetAmmoAmount_BigStash – If the item is ammo, sets the ammo count to 50-100% capacity of the caliber (example: cal_22 maximum number is 20, it will be 10-20/20).
- SetAmmoAmount_SmallStash – If the item is ammo, sets the ammo count to 0-35% capacity of the caliber (example: cal_22 maximum number is 20, it will be 0-7/20).
- SetCashAmount_BigStash – If the item is Cash, sets it’s value to 200-500.
- SetCashAmount_MediumStash – If the item is Cash, sets it’s value to 50-200.
- SetCashAmount_SmallStash – If the item is Cash, sets it’s value to 1-100.
- SetClothesDirtiness_DeadPuppets – if the item is clothes, sets the dirtiness to 93-96%
- SetClothesDirtiness_DirtyClothes – if the item is clothes, sets the dirtiness to 60-85%
- SetClothesDirtiness_ResidentialClothes – if the item is clothes, sets the dirtiness to 0-20%
- SetUsage_Max – All items with uses will spawn with 0 uses, for example Water Bottle will spawn with 0/5 uses, Pet Bottle with 0/20, etc.
Example of post spawn actions:
- We will take Street-Residential-Examine_Car_Wreck_Scrap for an example:
- This spawner preset says that if the item that drop is clothes the dirtiness of the item will be set to 0-20% dirtiness as explained above.
- Another example of using multiple “PostSpawnActions” in this spawner preset: Buildings-Garage-Residential-Examine_Wardrobe_Locker:
- SetAmmoAmount_SmallStash – If the item is ammo, set the ammo count to 0-35% capacity of the caliber.
- SetCashAmount_SmallStash – If the item is Cash, set it’s value to 1-100.
- SetClothesDirtiness_DirtyClothes – if the item is clothes, sets the dirtiness to 60-85%