0% found this document useful (0 votes)
1K views44 pages

Loot Modification

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views44 pages

Loot Modification

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 44

Introduction

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
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

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:
1. Start the game. We recommend singleplayer for experimentation with nodes.
2. Teleport your character using the following command: #Teleport -493223 -423063 611.
Red trash container should be around you.
3. 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
4. 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.
5. 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.
6. 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.
7. 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.
8. Create Override folder in the
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Nodes folder.
The game reads all loot tree customizations from the Override folder.
9. 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.
10. Use #ReloadLootCustomizationsAndResetSpawners to apply and test loot tree
customizations.
11. Experiment with different node structure, rarities and items.
12. 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
1. For Multiplayer go to Server\SCUM\Saved\Config\WindowsServer\Loot\Items
and create the “Override” folder.
2. For Singleplayer create it here:
%LocalAppData%\SCUM\Saved\Config\WindowsNoEditor\Loot\Items\
3. 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.
4. 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
5. In this folder you can see that we have the Default and the Override we have
created.
6. 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).

1. 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).
2. 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.
3. Top left location: #Teleport -52954.4182 -493783.9695 0
4. Bottom right location: #Teleport -77080.9405 -510602.7629 0
5. 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
6. This is what our situation on the map looks like now:

7. 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.
8. The locations are prioritized from smallest to biggest.
9. So in this case our configuration for A2 will be set for everything in A2 excluding Tisno
and excluding TisnoPort.
10. Configuration done in Tisno folder will prioritize spawner presets over the spawner
presets in the “A2” folder.
11. 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

1. We have created the “GeneralZoneModifiers.json” and we have added the


“TopLeft” and the “Bottomright” location of the Fish Factory.
2. The “Name” line is strictly for organization purposes.
3. This will globally increase the loot we have specified below in that certain area.
4. You can also globally increase the loot of the entire sector as shown in the
picture above.
5. These are basically multiplying with your “ServerSettings.ini” loot settings for
the area you have selected and also the amount you have typed in.
6. 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).
7. 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:

1. Make loot customization of you choice (don't forget to save modified files).
2. Execute #ReloadLootCustomizationsAndResetSpawners command.
3. 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.

1. So now we have extracted all the spawner presets used in A2, Tisno and TisnoPort.
2. 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.
3. 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.
4. 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

1. 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
2. This spawner preset has a certain node inside that can drop a number of things, but we
want a certain item or multiple items.
3. 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

4. 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

1. We will take an example of the spawner preset from the link above.
2. We’re going to add it to one of the spawner presets we have already extracted in the
steps above.
3. Go to Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\Presets\
Override\A2\Tisno and select any spawner preset.
4. We’ll pick Landscape-Foliage-Examine_Aloe_Vera.
5. 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:

6. After you search Aloe vera in the selected area, first you have a chance of getting any
loot which is defined by the probability.
7. 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.
8. 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

1. We’re gonna use Buildings-Armory-TV_Bunker-


Examine_Weapon_Locker_Lockpick_Tier_4 as an example

2. We’re using “Subpresets” here because we want multiple presets of “FixedItems”


spawn
3. They are all the same rarity, so they all have the same chance to spawn.
4. 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
5. We will take Special_Packages-Vault-Examine_RPK_Vault_Pack and open it in the
“Default” folder

6. If it’s going to spawn this “Subpreset” we will get the “FixedItems” contained inside.
7. 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

1. Go to this location: Server\SCUM\Saved\Config\WindowsServer\Loot\Spawners\


Presets\Default
2. 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
3. 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
4. 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
5. 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
6. If you search a Military_Zombie_03, it will also drop those items
7. If you find the ASVal_Cargodrop preset you will also get those 3 items
8. 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
9. 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:
1. We will take Street-Residential-Examine_Car_Wreck_Scrap for an example:

2. 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.
3. Another example of using multiple “PostSpawnActions” in this spawner preset:
Buildings-Garage-Residential-Examine_Wardrobe_Locker:

4. SetAmmoAmount_SmallStash - If the item is ammo, set the ammo count to 0-35%


capacity of the caliber.
5. SetCashAmount_SmallStash - If the item is Cash, set it's value to 1-100.
6. SetClothesDirtiness_DirtyClothes - if the item is clothes, sets the dirtiness to 60-85%

Disclaimer
Third-party links in this document may direct you to third-party websites that are not affiliated
with us. We are not responsible for examining or evaluating the content or accuracy and we do
not warrant and will not have any liability or responsibility for any third-party materials or
websites, or for any other materials, products, or services of third-parties.

We are not liable for any harm or damages related to the purchase or use of goods, services,
resources, content, or any other transactions made in connection with any third-party websites.
Please review carefully the third-party's policies and practices and make sure you understand
them before you engage in any transaction. Complaints, claims, concerns, or questions
regarding third-party products should be directed to the third-party.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy