Refill Asset Reference
Refill assets - colloquially referred to as water canisters - are a foundational utility item type in Unturned™ that handles the storage, transfer, and consumption of liquid resources. A refill asset defines a container that can hold water in four distinct quality states: empty, clean, dirty, and salty. Players can drink from a refill container to restore their survival stats (water, food, health, stamina, oxygen, immunity), and the quality state determines whether the effect is beneficial, neutral, or harmful. Refill assets are defined by the ItemRefillAsset class, which inherits from ItemAsset and extends it with a comprehensive set of per-state stat restoration fields.
57 Studios™ has documented and validated the full refill asset configuration surface across the shipped game files and the official Smartly Dressed Games documentation. This article covers every .dat field that applies to refill assets, the four-state water quality system, the stat restoration values for each state, the drinking mechanic, the purification system (converting dirty and salty water to clean water), the deprecated Water field, and the ConsumeAudioClip field for custom consumption audio. Complete worked examples drawn from shipped game files are provided for each configuration pattern.

Documentation source: This article references the official Smartly Dressed Games modding documentation for field definitions and game behavior, specifically the ItemRefillAsset class documented in the Refill Assets chapter. Shipped game file evidence from
Bundles/Items/Refills/is cited for field values and patterns. Community-validated notes are marked where the official documentation is silent on a detail.
Who this article is for
This article is written for Unturned™ mod authors who have already authored at least one consumable item (food, water, or medical) and are familiar with the item .dat format, the master bundle pipeline, and the survival stat system. If you are new to Unturned™ modding, start with Item Asset Anatomy and Food, Water, and Medical Items before returning here. A working local Unturned™ install for in-game testing is required to verify drinking mechanics and water quality behavior.
What you will learn
- Every
.datfield available on the refill asset type, organized by water quality state (Clean, Dirty, Salty). - How the four-state water quality system works at the runtime level and how each state affects the player's survival stats.
- The stat restoration formula for clean, dirty, and salty water, including the default multipliers when a field is omitted.
- How purification works: converting dirty and salty water into clean water using purification tablets or crafting.
- The
ConsumeAudioClipfield and how to assign a custom drinking sound to a refill asset. - The deprecated
Waterfield and how it maps to the modernClean_Waterfield. - How to author a complete refill asset with worked
.datexamples from shipped game files. - How to balance refill asset stat values against vanilla references.
How the refill system works
The refill system in Unturned™ is built around the UseableRefill script, which is the runtime handler for all refill asset items. When a player equips a refill container and activates it, the UseableRefill script reads the container's current water quality state (tracked as internal per-instance data) and applies the corresponding stat restoration values to the player's survival stats. The quality state is determined by the source of the water: water collected from a clean source (a purification tablet-treated container or a clean water pump) is clean; water collected from a natural water source (a river, lake, or pond) is dirty; water collected from a saltwater source (an ocean or saltwater pool) is salty. An empty container contains no water and cannot be drunk from.
Each stat field is independent. If a refill asset's .dat file defines Clean_Water 35 but omits Clean_Food, then clean water from that container restores water but does not restore food. If a dirty water variant omits Dirty_Food, the runtime uses a default that is 60% of the clean value, as documented in the SDG field reference. The four-state system means a single refill asset can serve multiple gameplay roles depending on where the player fills it.
The four water quality states
Unturned™ refill containers track their water quality through an internal state machine. The state is per-instance and persists across sessions - a container that was filled with dirty water remains dirty until its water is consumed, purified, or emptied.
| State | Description | How the container enters this state |
|---|---|---|
| Empty | No water in the container. Cannot be drunk. Cannot be used. | Default state when crafted or spawned without water. Achieved by drinking all water from any non-empty state. |
| Clean | Potable, safe water. Restores water and stamina; provides slight food and health restoration. | Filled from a clean water source (purification tablets applied to dirty/salty container, clean water pump, rain collector with filter). |
| Dirty | Non-potable, untreated fresh water. Restores some water but with reduced effectiveness. Increases immunity drain (negative virus effect). | Filled from a natural fresh water source (river, lake, pond, rain collector without filter). |
| Salty | Non-potable saltwater. Minimal water restoration with significant immunity penalty. | Filled from a saltwater source (ocean, saltwater pool). |
The state is determined entirely by the water source, not by the container's .dat configuration. The same refill asset can contain clean, dirty, or salty water depending on where the player fills it. The .dat fields define the stat restoration values for each state, but the state itself is a runtime property of the item instance.
File structure for a refill asset
A refill asset follows the standard item asset folder structure:
WaterBottle/
├── Asset.dat ← primary refill asset definition
├── English.dat ← display name and description
└── WaterBottle.unity3d ← master bundle containing the bottle prefabShipped game files in Bundles/Items/Refills/ follow this pattern. Each variant (Bottle_Birch, Bottle_Maple, Bottle_Pine, Canteen) occupies its own subfolder with its own Asset.dat and English.dat.
Determining water quality state from the container model
The water quality state is not visually indicated on the container model. A clean-water canteen looks identical to a dirty-water canteen. The only way for a player to know the water quality is to inspect the item tooltip, which displays the current state. Mod authors cannot add visual quality indicators through the .dat system; this is an engine limitation of the vanilla refill system.
Complete refill .dat field reference
Identity and shared fields
The following shared fields are required on every item asset, including refill containers. See Item Asset Anatomy for full documentation.
| Field | Type | Example | Notes |
|---|---|---|---|
ID | uint16 | 482 | Unique item ID. Use the 50000+ range for custom mods. |
GUID | uint128 hex | 619c2420ac19420caf2a260eb3f9e9aa | 128-bit globally unique identifier. Generate a fresh GUID for every refill asset. |
Type | enum | Refill | Must be Refill for this asset type. |
Name | string | Bottle_Birch | Internal name. |
Rarity | enum | Uncommon | Rarity tier. Most refill containers use Uncommon or omit the field. |
Useable | enum | Refill | Must be Refill for water canisters. |
Slot | enum | Any | Inventory slot. Refill containers use Any. |
Size_X | uint8 | 2 | Inventory grid width. Most refill containers are 2x2. |
Size_Y | uint8 | 2 | Inventory grid height. |
Bypass_ID_Limit | bool | True | Required for IDs above 2000. |
ConsumeAudioClip field
| Field | Type | Required | Example | Purpose |
|---|---|---|---|---|
ConsumeAudioClip | Master Bundle Pointer | No | Sounds/DrinkSwallow.mp3 | A master bundle AudioClip reference that plays when the player drinks from the refill container. If omitted, the engine uses a default drinking sound. Shipped refill assets use Sounds/DrinkSwallow.mp3. |
The ConsumeAudioClip field points to an AudioClip asset in the master bundle. The audio clip is defined as a path inside the bundle, not as a raw file path. To assign a custom drinking sound, import the audio file into the Unity project, assign it to the master bundle, and reference it in the .dat using the bundle-relative path.
Clean water stat fields
The Clean_* fields define the stat restoration values when the player drinks from the container in the Clean state. Each field is independent; omitting a field means the clean water provides zero restoration for that stat.
| Field | Type | Range | Default | Example | Purpose |
|---|---|---|---|---|---|
Clean_Water | float | -100 to 100 | 0 | 15 | Amount of thirst restored when drinking clean water. |
Clean_Food | float | -100 to 100 | 0 | 0 | Amount of hunger restored when drinking clean water. |
Clean_Health | float | -100 to 100 | 0 | 0 | Amount of health restored when drinking clean water. |
Clean_Stamina | float | -100 to 100 | 0 | 3 | Amount of stamina restored when drinking clean water. |
Clean_Oxygen | float | -100 to 100 | 0 | 0 | Amount of oxygen restored when drinking clean water. |
Clean_Virus | float | -100 to 100 | 0 | 0 | Amount of immunity depleted (positive) or restored (negative) when drinking clean water. |
Dirty water stat fields
The Dirty_* fields define the stat restoration values when the player drinks from the container in the Dirty state. If a dirty field is omitted, the runtime defaults to 60% of the corresponding clean field value. The default multiplier produces dirty water that is strictly worse than clean water across all stat categories.
| Field | Type | Default | Example | Purpose |
|---|---|---|---|---|
Dirty_Water | float | Clean_Water * 0.6 | 9 | Thirst restored when drinking dirty water. |
Dirty_Food | float | Clean_Food * 0.6 | 0 | Hunger restored when drinking dirty water. |
Dirty_Health | float | Clean_Health * 0.6 | 0 | Health restored when drinking dirty water. |
Dirty_Stamina | float | Clean_Stamina * 0.6 | 1.8 | Stamina restored when drinking dirty water. |
Dirty_Oxygen | float | Clean_Oxygen * 0.6 | 0 | Oxygen restored when drinking dirty water. |
Dirty_Virus | float | Clean_Virus * -0.399999976 | 0 | Immunity change when drinking dirty water. The default produces a net positive virus drain (immunity decreases) because the multiplier is negative, whereas the clean value is typically zero or positive. |
Dirty_Virus default calculation
The Dirty_Virus default formula is Clean_Virus * -0.399999976. When Clean_Virus is 0 (the common case - clean water does not affect immunity), the dirty water default is 0 * -0.399999976 = 0, meaning dirty water has no immunity effect by default. This is a nuance that is frequently misunderstood - dirty water is not inherently harmful to immunity if the clean water does not have an explicit virus value. The immunity penalty only appears when Clean_Virus is set to a positive value. Mod authors who want dirty water to always penalize immunity should explicitly set Dirty_Virus to a negative value regardless of the Clean_Virus setting.
Salty water stat fields
The Salty_* fields define the stat restoration values when the player drinks from the container in the Salty state. If a salty field is omitted, the runtime defaults to 25% of the corresponding clean field value. The default multiplier produces salty water that is the least effective quality state, with a significant immunity penalty.
| Field | Type | Default | Example | Purpose |
|---|---|---|---|---|
Salty_Water | float | Clean_Water * 0.25 | 3.75 | Thirst restored when drinking salty water. |
Salty_Food | float | Clean_Food * 0.25 | 0 | Hunger restored when drinking salty water. |
Salty_Health | float | Clean_Health * 0.25 | 0 | Health restored when drinking salty water. |
Salty_Stamina | float | Clean_Stamina * 0.25 | 0.75 | Stamina restored when drinking salty water. |
Salty_Oxygen | float | Clean_Oxygen * 0.25 | 0 | Oxygen restored when drinking salty water. |
Salty_Virus | float | Clean_Virus * -0.75 | 0 | Immunity change when drinking salty water. The default produces a larger immunity penalty than dirty water, with the same caveat about the Clean_Virus starting value. |
Deprecated Water field
| Field | Type | Status | Behavior |
|---|---|---|---|
Water | byte | Deprecated since 3.20.9.0 | When present, the value is assigned to Clean_Water at load time. The Water field exists only for backward compatibility with legacy refill assets. New refill assets should always use Clean_Water instead. |
The Water field is a single-byte integer (0-255), whereas Clean_Water is a float with a much wider range. Mod authors maintaining legacy refill assets should migrate from Water to Clean_Water to access the full float range and to maintain compatibility with future Unturned™ versions.
Stat restoration by quality state - comparative table
The table below summarizes how the same refill asset behaves across the three non-empty quality states, using a hypothetical container with Clean_Water 50 and all other clean fields at default values.
| Stat | Clean | Dirty (default 60%) | Salty (default 25%) |
|---|---|---|---|
| Water restored | 50 | 30 | 12.5 |
| Food restored | 0 | 0 | 0 |
| Health restored | 0 | 0 | 0 |
| Stamina restored | 0 | 0 | 0 |
| Oxygen restored | 0 | 0 | 0 |
| Virus change | 0 | 0 | 0 |
When explicit dirty and salty fields are provided in the .dat, the explicit values override the defaults. The defaults only apply when the corresponding dirty or salty field is absent from the .dat file.
Worked example: simple water bottle (Bottle_Birch pattern)
The example below is modelled on the shipped Bottle_Birch.dat with a custom ID and GUID. This configuration produces a standard reusable water container with moderate clean water restoration and no explicit dirty or salty fields.
ID 50060
GUID a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d
Type Refill
Name CustomWaterBottle
Useable Refill
Slot Any
Size_X 2
Size_Y 2
Bypass_ID_Limit True
Clean_Water 15
ConsumeAudioClip Sounds/DrinkSwallow.mp3Companion English.dat:
Name Custom Water Bottle
Description A reusable water bottle. Holds clean water when filled from a clean source. Purification tablets can treat dirty or saltwater.Because no Dirty_* or Salty_* fields are explicitly set, the runtime applies the default multipliers (60% for dirty, 25% for salty). The Dirty_Virus and Salty_Virus values default to zero because Clean_Virus is not set. This is acceptable for a simple water container where the water quality distinction is primarily about water restoration quantity rather than immunity effects.
Worked example: canteen with full stat fields (Canteen pattern)
The example below is modelled on the shipped Canteen.dat with custom IDs and explicit dirty and salty fields for fine-grained balance control.
ID 50061
GUID b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e
Type Refill
Name CustomCanteen
Rarity Uncommon
Useable Refill
Slot Any
Size_X 2
Size_Y 2
Bypass_ID_Limit True
Clean_Water 35
Clean_Food 0
Clean_Health 0
Clean_Stamina 5
Clean_Oxygen 0
Clean_Virus 0
Dirty_Water 20
Dirty_Food 0
Dirty_Health 0
Dirty_Stamina 2
Dirty_Oxygen 0
Dirty_Virus 0
Salty_Water 8
Salty_Food 0
Salty_Health 0
Salty_Stamina 0
Salty_Oxygen 0
Salty_Virus 0
ConsumeAudioClip Sounds/DrinkSwallow.mp3Companion English.dat:
Name Custom Canteen
Description A robust canteen with 35-unit water capacity. Provides stamina recovery from clean water. Dirty and saltwater are less effective.This canteen provides explicit stat values for all three quality states. The clean water restores 35 water and 5 stamina. The dirty water restores 20 water and 2 stamina. The salty water restores 8 water and no stamina. The immunity effect is neutral across all states because Clean_Virus is zero and the dirty and salty virus fields are explicitly set to zero as well.
Worked example: premium refill container with health and stamina restoration
The example below demonstrates a higher-tier refill container that provides health restoration in addition to the standard water and stamina effects.
ID 50062
GUID c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f
Type Refill
Name PremiumCanteen
Rarity Rare
Useable Refill
Slot Any
Size_X 2
Size_Y 2
Bypass_ID_Limit True
Clean_Water 50
Clean_Food 5
Clean_Health 3
Clean_Stamina 8
Clean_Oxygen 2
Clean_Virus 2
Dirty_Water 25
Dirty_Food 2
Dirty_Health 0
Dirty_Stamina 4
Dirty_Oxygen 0
Dirty_Virus -5
Salty_Water 10
Salty_Food 0
Salty_Health 0
Salty_Stamina 1
Salty_Oxygen 0
Salty_Virus -10
ConsumeAudioClip Sounds/DrinkSwallow.mp3Companion English.dat:
Name Premium Canteen
Description A rare insulated canteen. Clean water provides substantial restoration across all stats. Dirty water penalizes immunity. Saltwater is a survival option with a significant immunity penalty.This premium canteen demonstrates several advanced balance patterns. The Clean_Virus 2 means clean water actively boosts immunity. The Dirty_Virus -5 means dirty water penalizes immunity (the virus stat increases, depleting immunity). The Salty_Virus -10 means salty water is substantially worse for immunity than dirty water. This creates a meaningful risk-reward trade-off: the player who fills their premium canteen from a natural water source gets a reduced stat benefit and an immunity penalty, which incentivizes carrying purification tablets.
Water purification system
Dirty and salty water can be converted to clean water through the purification system. The primary purification method uses purification tablets - a consumable item that, when applied to a dirty or salty refill container, converts its water quality state to clean. The purification tablets are applied through the blueprint crafting system: the refill asset defines a Repair-type blueprint that consumes purification tablets and outputs the same container in the clean state.
The shipped Bottle_Birch demonstrates this pattern with a Repair blueprint that consumes Purification Tablets (GUID f2707771eebb4904b1e4b1f58929393b) and produces the clean container. The blueprint uses the RepairTargetItem operation, which changes the target item's state without replacing it with a different item.
A second purification method is available through the cooking system. A dirty water container placed in a cooking slot on a campfire or stove is heated, killing pathogens and converting the water to clean. The cooking time is determined by the cooking system configuration, not by the refill asset's .dat fields.
Authoring a purifiable refill asset
To make a custom refill asset purifiable with purification tablets, add a Repair-type blueprint to the .dat file that consumes purification tablets and uses the RepairTargetItem operation. The blueprint block follows the standard Unturned blueprint syntax. The purification table item can be referenced by its GUID. The shipped purification tablet GUID is f2707771eebb4904b1e4b1f58929393b; custom mods may reference a different purification item by its GUID.
Refill asset balancing guidelines
The table below provides cohort-recommended stat restoration ranges for refill assets organized by gameplay context and rarity tier.
| Rarity | Clean_Water | Clean_Stamina | Clean_Health | Clean_Virus | Context |
|---|---|---|---|---|---|
| Common | 10-20 | 0-3 | 0 | 0 | Basic water container. Found frequently in loot. |
| Uncommon | 25-40 | 3-8 | 0 | 1-3 | Standard canteen. Moderate loot frequency. |
| Rare | 40-60 | 5-12 | 2-5 | 3-5 | Premium container. Less frequent, higher impact. |
| Epic | 60-80 | 10-15 | 5-10 | 5-8 | High-end survival gear. Rare loot. |
| Legendary | 80-100 | 15-20 | 10-15 | 8-10 | Exceptional container. Very rare. |
The values above are guidelines. The engine does not enforce any relationship between rarity and stat values. A Common-rarity refill asset can have Clean_Water 100 if the mod design requires it, but the cohort experience is that matching stat impact to rarity produces more natural-feeling loot progression.
Dirty and salty stat multiplier design patterns
The cohort-validated approach to dirty and salty stat values follows one of two patterns:
| Pattern | Description | When to use |
|---|---|---|
| Default multiplier | Omit dirty and salty fields; let the runtime apply 60% and 25% defaults | Simple refill assets where water quality is a secondary gameplay concern |
| Explicit override | Provide explicit dirty and salty fields for every stat | Complex refill assets where water quality is a primary gameplay mechanic, or when immunity penalties are part of the design |
The explicit override pattern is recommended for survival-focused mods where water quality management is a meaningful gameplay loop. The default multiplier pattern is acceptable for casual, arcade-style, or creative-mode mods.
Frequently asked questions
What happens if Clean_Water is set to 0?
A refill container with Clean_Water 0 provides no thirst restoration in the clean state. The container can still be drunk from - the drinking animation plays and the audio clip fires - but no stat changes occur. This is a valid configuration for a placeholder or quest item that should be interactable without providing gameplay benefit.
Can a refill container have negative Clean_Water?
Yes. A negative Clean_Water value means drinking from the clean container actually depletes the player's thirst stat, making the player more thirsty. This is the correct pattern for a poisoned water container that appears clean but is harmful. The same applies to all Clean_*, Dirty_*, and Salty_* fields - positive values restore, negative values deplete.
How do I know what state a player's refill container is in?
The container's tooltip in the inventory UI displays the current water quality state. The state is shown as "Clean Water", "Dirty Water", "Salty Water", or "Empty" depending on the internal state. The tooltip text is driven by the game's localization system and cannot be customized per container through the .dat file.
Can a refill container hold other liquids?
No. The refill system is hardcoded to water in four quality states. There is no mechanism in the vanilla .dat system to define custom liquid types (fuel, oil, acid, potions) through the refill asset class. Custom liquid systems require server-side scripting and are beyond the scope of the refill asset configuration.
Does the ConsumeAudioClip field support 3D spatial audio?
The ConsumeAudioClip field references a master bundle AudioClip, and the audio system supports whatever spatial audio settings are configured on the AudioClip asset in Unity. The UseableRefill script plays the clip as a one-shot 2D sound by default. To enable 3D spatial audio, configure the AudioClip import settings in Unity with the Spatial Blend property set to 3D and adjust the 3D Sound Settings (min distance, max distance, rolloff) before building the master bundle. The .dat field itself does not include spatial audio configuration parameters.
What happens to the refill asset when the player has full thirst?
The player can still drink from the refill container even at full thirst. The stat restoration values are applied, but the player's thirst stat is capped at 100. Any excess Clean_Water value beyond what is needed to reach the cap is wasted. The same applies to all other stat fields - each stat is independently capped at 100, and excess restoration is discarded.
Can a refill container be refilled at any water source?
A refill container can be refilled at any water source that the game recognizes as fillable: rivers, lakes, ponds, rain collectors, water pumps, and ocean coastlines. The water quality state is determined by the source type: fresh natural sources produce dirty water, saltwater sources produce salty water, and purified sources (clean water pumps, purification tablet stations) produce clean water. The container's Rarity or Type fields do not restrict which sources accept the container.
Is the deprecated Water field still functional?
Yes, the Water field is still read by the engine, but its value is mapped to Clean_Water at load time. Any refill asset that defines Water instead of Clean_Water will function correctly in the current Unturned™ version. However, the Water field is a byte (0-255), which is a smaller range than the float Clean_Water field. The cohort recommendation is to migrate all refill assets to Clean_Water to access the full float range.
Can I make a refill container that starts empty?
The default state of a freshly crafted or spawned refill container is determined by the item's generation logic, not by the .dat fields. A refill container that is crafted via blueprint starts empty unless the blueprint explicitly fills it. A refill container that is spawned via loot table starts with a randomized state - it may be empty, clean, dirty, or salty depending on the spawn configuration. There is no Always_Spawn_Full equivalent for refill containers. If the mod design requires a refill container that always spawns with clean water, that behavior must be enforced through the spawn table configuration or through server-side scripting.
Why does my dirty water not penalize immunity?
Because Dirty_Virus defaults to Clean_Virus * -0.399999976. When Clean_Virus is 0 (the most common configuration), the dirty water default is 0. To make dirty water penalize immunity, explicitly set Dirty_Virus to a negative value (e.g., Dirty_Virus -5). The same logic applies to Salty_Virus - if Clean_Virus is 0 and Salty_Virus is not explicitly set, the runtime calculates 0 * -0.75 = 0, which is no immunity penalty.
Does the container size affect how much water it holds?
The Size_X and Size_Y fields define the inventory footprint but do not directly affect the water capacity. A 1x1 container can have Clean_Water 100 while a 3x3 container can have Clean_Water 10. The stat restoration values and the inventory footprint are independent design axes. The cohort recommendation is to match larger inventory footprints with proportionally higher stat values, but the engine does not enforce this relationship.
Diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
Refill container does not appear in inventory after @give | ID mismatch or .dat in wrong folder | Confirm ID in command matches ID in .dat; check folder path |
| Refill container appears but cannot be used | Useable Refill missing from .dat | Add Useable Refill to the .dat file |
| Drinking plays animation but no stats change | All stat fields at default (zero) or omitted | Set at least Clean_Water to a positive value |
| Water container shows wrong quality state | State is determined by fill source, not .dat | Check the source where the container was filled |
| Dirty water restores more than expected | Dirty_* fields not set; using 60% of clean default | Set explicit Dirty_* fields to override defaults |
| Salty water is as effective as clean water | Salty_* fields not set; using 25% of clean default may coincidentally match clean if clean values are small | Verify all fields are correctly authored |
| No drinking sound plays | ConsumeAudioClip missing or path incorrect | Add or correct ConsumeAudioClip field |
| Purification tablets do not work on container | Missing Repair blueprint in .dat | Add a Repair-type blueprint with purification tablet input |
| Pink material on bottle model | Shader missing or material not assigned in bundle | Re-assign material in Unity, rebuild bundle |
| Bottle model is invisible when dropped | Prefab reference broken in master bundle | Re-assign prefab in Unity, rebuild bundle |
| Container appears empty despite being spawned | Spawned containers have randomized initial state | Fill from a clean water source in-game to test full functionality |
| Old .dat uses Water field | Deprecated field from before 3.20.9.0 | Migrate to Clean_Water |
Best practices
- Generate a fresh GUID for every refill asset. Never reuse GUIDs from other items.
- Choose IDs in the 50000+ range to avoid collision with vanilla IDs (482 for Bottle_Birch, 337 for Canteen).
- Always set explicit
Dirty_*andSalty_*fields for survival-focused mods where water quality matters. - Set
Clean_Virusto a positive value when clean water should actively boost immunity. - Set
Dirty_Virusto a negative value when dirty water should penalize immunity. - Set
Salty_Virusto a negative value (a larger penalty than dirty water) when saltwater should be a survival option of last resort. - Use the
ConsumeAudioClipfield to provide a custom drinking sound that matches the container type. - Match inventory size to the container type: a small canteen (2x2) for standard containers, a larger footprint (3x2 or 3x3) for premium containers.
- Provide a Repair-type blueprint for purification if the refill asset should be purifiable with tablets.
- Migrate from the deprecated
Waterfield toClean_Waterfor all new refill assets.
Advanced considerations
Refill assets in RP server contexts
On roleplay servers such as Horizon Life RP - a 57 Studios™ development context - refill assets serve purposes beyond simple thirst management. A specific water bottle might be the only container allowed for water trading in a settlement economy; a canteen might require a specific faction role to equip; dirty water from a contaminated zone might be a plot item for questlines. These restrictions are enforced server-side through the RP server's plugin system, not through the .dat file. The .dat should be authored with base values reflecting the mechanical properties of the container; the RP server's configuration layer handles access control.
Refill assets with custom purification items
A mod that introduces a custom purification item (a filtering straw, a boiling attachment, a chemical treatment kit) can reference that item by GUID in the refill asset's Repair blueprint. The purification item does not need to be a refill asset itself - it can be any item type (Supply, Tool, etc.) that exists in the game world. The blueprint consumes the purification item and produces the clean refill container. This pattern allows mod authors to create custom purification supply chains.
Refill assets in cooking and crafting systems
Refill assets participate in the cooking system by being placeable in a campfire or stove cooking slot. When a refill container with dirty water is cooked, the game converts its state to clean. This cooking interaction is handled by the game's cooking system, not by the refill asset's .dat fields. The refill asset does not need any special configuration to be cookable - any refill asset is automatically eligible for cooking.
Multiple refill asset sizes in a single mod
The cohort-validated pattern for offering multiple refill container sizes is:
| Size class | Size_X | Size_Y | Clean_Water range | Rarity |
|---|---|---|---|---|
| Small flask | 1 | 1 | 5-15 | Common |
| Water bottle | 2 | 1 | 15-25 | Common |
| Standard canteen | 2 | 2 | 25-45 | Uncommon |
| Large water jug | 2 | 3 | 45-70 | Rare |
| Hydration pack | 3 | 3 | 70-100 | Epic |
Refill assets and the thirst economy
On servers where thirst is a primary survival mechanic, refill assets are the dominant tool for managing the thirst stat. A server with high thirst decay rates needs refill assets with higher Clean_Water values to be practical. A server with low thirst decay can use lower values. The cohort recommendation is to reference the target server's thirst decay configuration when authoring refill assets for a specific server environment.
Appendix A: Refill asset .dat quick-reference template
ID <50000+>
GUID <generated-uuid-no-hyphens>
Type Refill
Name <InternalRefillName>
Rarity <Common|Uncommon|Rare>
Useable Refill
Slot Any
Size_X <2>
Size_Y <2>
Bypass_ID_Limit True
Clean_Water <15>
Clean_Food <0>
Clean_Health <0>
Clean_Stamina <0>
Clean_Oxygen <0>
Clean_Virus <0>
Dirty_Water <default: Clean_Water * 0.6>
Dirty_Food <default: Clean_Food * 0.6>
Dirty_Health <default: Clean_Health * 0.6>
Dirty_Stamina <default: Clean_Stamina * 0.6>
Dirty_Oxygen <default: Clean_Oxygen * 0.6>
Dirty_Virus <default: Clean_Virus * -0.399999976>
Salty_Water <default: Clean_Water * 0.25>
Salty_Food <default: Clean_Food * 0.25>
Salty_Health <default: Clean_Health * 0.25>
Salty_Stamina <default: Clean_Stamina * 0.25>
Salty_Oxygen <default: Clean_Oxygen * 0.25>
Salty_Virus <default: Clean_Virus * -0.75>
ConsumeAudioClip Sounds/DrinkSwallow.mp3Appendix B: Refill asset stat comparison table
| Rarity | Clean_Water | Clean_Stamina | Clean_Health | Clean_Virus | Dirty_Water (default 60%) | Salty_Water (default 25%) |
|---|---|---|---|---|---|---|
| Common | 10-20 | 0-3 | 0 | 0 | 6-12 | 2.5-5 |
| Uncommon | 25-40 | 3-8 | 0 | 1-3 | 15-24 | 6.25-10 |
| Rare | 40-60 | 5-12 | 2-5 | 3-5 | 24-36 | 10-15 |
| Epic | 60-80 | 10-15 | 5-10 | 5-8 | 36-48 | 15-20 |
| Legendary | 80-100 | 15-20 | 10-15 | 8-10 | 48-60 | 20-25 |
Appendix C: External references
| Resource | URL | Notes |
|---|---|---|
| Smartly Dressed Games modding documentation | https://docs.smartlydressedgames.com/en/stable/ | Official field reference for ItemRefillAsset. |
| Unturned on Steam | https://store.steampowered.com/app/304930/Unturned/ | Game changelog and community hub. |
| Item Asset Anatomy | /items/item-asset-anatomy | Shared field reference for all item types, including refill assets. |
| Food, Water, and Medical Items | /items/food-water-medical | Companion article covering the consumable item types that share structural patterns with refill assets. |
| Fuel Asset Reference | /items/fuel-asset-reference | The previous article; covers fuel canister assets that share the useable-item structural pattern. |
| Supply Asset Reference | /items/supply-asset-reference | The next article; covers crafting supply items. |
| Project Folder Structure and GUIDs | /items/project-folder-structure-and-guids | GUID generation and folder layout for all item mods. |
Cross-references
- Item Asset Anatomy - the shared field reference for all item types, including the identity fields used by refill assets.
- Food, Water, and Medical Items - companion reference for the consumable asset types; covers the stat system that refill assets interface with.
- Fuel Asset Reference - the previous article; covers the structurally similar fuel canister asset type.
- Supply Asset Reference - the next article; covers crafting supply items that share the identity field set.
- Project Folder Structure and GUIDs - GUID generation and folder layout conventions for all item types.
- Master Bundle Export - the Unity bundling pipeline for packaging item prefabs.
- Smartly Dressed Games modding documentation - official field reference for the
ItemRefillAssetclass. - Unturned on Steam - game page and community.
Authoring checklist
Before publishing a refill asset mod, confirm the following:
- [ ] GUID is unique - generated fresh, not copied from another asset
- [ ] ID is in the 50000+ range
- [ ]
Type Refillis present - [ ]
Useable Refillis present - [ ]
Clean_Wateris set to a positive value (1 or higher) - [ ] Explicit
Dirty_*fields are set if default multipliers are not desired - [ ] Explicit
Salty_*fields are set if default multipliers are not desired - [ ]
Dirty_VirusandSalty_Virusare authored with intention (not accidentally left at zero) - [ ]
ConsumeAudioClipis set to a valid bundle audio path - [ ]
Bypass_ID_Limit Trueis present if ID exceeds 2000 - [ ]
English.datis authored with Name and Description fields - [ ] Master bundle contains the bottle prefab at the correct name
- [ ] Tested in single-player: container spawns, equips, drinking restores stats
- [ ] Tested across all three water quality states (clean, dirty, salty)
- [ ] Purification blueprint added if water should be purifiable with tablets
- [ ] Deprecated
Waterfield not used in new assets
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Full refill asset .dat field reference, water quality system, stat restoration fields, purification, worked examples, FAQ, diagnostic table, appendices. |
