Rewards Reference
Rewards are the outcome side of the NPC interaction, quest completion, object activation, and item consumption systems in Unturned™. Every time a player completes a quest, selects a dialogue response, activates an interactable object, or uses a consumable item, the engine evaluates the associated rewards list and grants every reward in sequence. A reward can set a flag, grant an item, award experience, spawn a vehicle, teleport the player, trigger a cutscene, broadcast a plugin event, or any of twenty-seven distinct reward types documented in the Smartly Dressed Games modding documentation.
This article is the 57 Studios™ canonical reference for the Unturned™ rewards system. It covers every reward type across the flag and non-flag categories, the rewards list syntax and structure, the grant delay and interruption behavior, the localization of reward descriptions, and the specific fields unique to each of the twenty-seven reward types. The article also covers how rewards interact with the conditions system -- conditions gate whether the rewards fire, and rewards set the flags that subsequent conditions check -- and includes worked examples for every reward category.
The rewards system, the conditions system, and the dialogue system together form the three pillars of dynamic server content. Every mod developer who authors NPC quests, interactive objects, or consumable items needs a working understanding of every reward type documented here and how reward lists compose multiple rewards into a single granting action.

Documentation source: This article references the official Smartly Dressed Games modding documentation for reward field definitions and game behavior. The reward types and parameters documented here correspond to Unturned™ Release 3.x.
Prerequisites
- Completion of Custom NPCs, Dialogues, and Quests or equivalent working knowledge of the NPC, dialogue, and quest asset formats.
- Completion of the Conditions Reference article, which covers the conditions that gate reward granting.
- Familiarity with the Unturned flag system and how flags persist in player save data.
- Familiarity with GUIDs and item IDs. See Project Folder Structure and GUIDs.
- A text editor capable of editing
.datfiles. See How to Install Notepad++. - Approximately one to two hours for a first rewards-authoring pass across a quest chain.
What you'll learn
- The syntax and structure of a rewards list, including the Rewards byte, indexed reward entries, and prefix conventions.
- How reward grant delay and interruption behavior work and when to use each.
- The four flag reward types (Flag_Bool, Flag_Math, Flag_Short, Flag_Short_Random) and when each is appropriate.
- The twenty-three non-flag reward types and their specific field parameters.
- How to reward items with pre-attached modifications (sight, grip, tactical, barrel, magazine, ammo overrides).
- How to use the Hint reward type for player-facing feedback on quest completion.
- How to use the Event reward type to broadcast to plugin systems.
- How rewards interact with the conditions system to create quest chains.
Rewards system architecture
Rewards exist inside rewards lists. A rewards list is a container of indexed reward entries that all fire together when the list is triggered. The list itself is embedded inside a parent asset: a Quest asset (which has two separate rewards lists -- Rewards for successful completion and AbandonmentRewards for abandonment), a Dialogue response, an Interactable object, or a Consumable item.
Every reward in the list is granted in sequence. There is no condition check between rewards within the same list; the conditions check happens once, at the list level, before any rewards fire. If the conditions pass, every reward in the list is granted. If the conditions fail, no reward is granted.
Rewards list syntax
A rewards list is a block of indexed properties in a .dat file. It starts with a Rewards byte field declaring the total number of rewards in the list, followed by indexed reward properties. The prefix depends on the context in which the rewards list appears.
| Context | Prefix pattern | Example |
|---|---|---|
| NPC dialogue response | Reward_#_ | Reward_0_Type Experience |
| Quest completion | Reward_#_ | Reward_0_Type Item |
| Quest abandonment | AbandonmentReward_#_ or Reward_#_ | AbandonmentReward_0_Type Flag_Bool |
| Interactable object | Reward_#_ | Reward_0_Type Teleport |
| Consumable item | Quest_Reward_#_ | Quest_Reward_0_Type Player_Life_Health |
The index starts at 0 and increments sequentially with no gaps. The Rewards byte must exactly match the number of Reward_#_Type entries. A mismatch between the declared count and the actual entries is a silent failure: the parser allocates the declared number of slots, and missing entries produce default-zero rewards that may or may not do anything depending on the reward type.
Grant delay and interruption
Every reward supports two optional timing fields that control when the reward is granted and what happens if the player disconnects or dies before the grant occurs.
| Field | Type | Default | Purpose |
|---|---|---|---|
Reward_#_GrantDelaySeconds | float | -1 (no delay) | If set, the reward is queued for the specified number of seconds before being granted. |
Reward_#_GrantDelayApplyWhenInterrupted | bool | False | If True, the reward is granted when the player dies or disconnects. If False, pending rewards are cancelled on death or disconnect. |
The grant delay mechanism enables timed reward sequences: a reward that fires 5 seconds after a dialogue response, a chain of rewards that fire at 1-second intervals to create a staged effect, or a delayed teleport that gives the player time to read a hint message before being moved.
When GrantDelayApplyWhenInterrupted is False (the default), any pending delayed rewards are cancelled if the player dies or disconnects before the delay expires. This is the appropriate setting for most quest rewards: a player who dies during a quest should not receive the completion rewards. When True, the reward is granted regardless of death or disconnect, and the setting is appropriate for critical story-flag rewards that should not be lost.
Delayed rewards and player expectations
A delayed reward with GrantDelayApplyWhenInterrupted False but no in-game feedback about the delay can create the perception that the reward was not granted. When using a grant delay, pair it with a Hint reward that fires immediately and tells the player what is coming and when. For example: an immediate Hint reward with text "Supplies arriving in 5 seconds" followed by an Item reward with GrantDelaySeconds 5.
Localization of reward descriptions
Every reward in a rewards list can have a localized display name that appears in the game's quest UI:
Reward_#: Name of the reward as it appears in user interfacesThe localization property follows the same prefix conventions as the reward properties themselves. For a hint on an interactable object, the localization property name would be Interactability_Reward_# rather than Reward_#. The prefix must match the context in which the reward appears.
Flag rewards
Flag rewards modify the player's persistent flag state. Flags are the primary mechanism for tracking quest progress, story decisions, and character attributes across sessions. Flag rewards are the most common reward type in quest completion lists because they set the flags that subsequent quests and dialogue responses check.
Flag_Bool
Sets a boolean flag to a target value of True or False. Flag_Bool is the standard reward for recording that a quest has been completed, a story choice has been made, or an NPC has been met.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Flag_Bool. |
Reward_#_ID | uint16 | Yes | ID of the flag to set. |
Reward_#_Value | bool | Yes | Target boolean value (True or False). |
Worked example: A quest completion reward sets flag 100 to True, marking the quest as completed. Subsequent dialogue responses check for flag 100 to determine whether the player has finished this quest.
Rewards 1
Reward_0_Type Flag_Bool
Reward_0_ID 100
Reward_0_Value TrueFlag_Math
Applies a mathematical operation to a flag value using a second flag or a literal value. Flag_Math enables arithmetic on flag values without requiring a separate scripting layer: addition, subtraction, multiplication, division, modulo, assignment, and random-range operations are all supported natively.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Flag_Math. |
Reward_#_A_ID | uint16 | Yes | ID of the flag to apply the operation to (the left-hand operand). |
Reward_#_B_ID | uint16 | No | ID of the flag containing the value to apply (the right-hand operand). If not specified, B_Value is used instead. |
Reward_#_B_Value | int16 | No | Default literal value to use if flag B is not set or if B_ID is zero. |
Reward_#_Operation | enum | Yes | The mathematical operation to apply. Values: Addition, Assign, Division, Modulo, Multiplication, Subtraction, Random_Inclusive, Random_Exclusive. |
Operation behavior:
| Operation | Effect on flag A |
|---|---|
Addition | A = A + B |
Assign | A = B |
Division | A = A / B |
Modulo | A = A % B |
Multiplication | A = A * B |
Subtraction | A = A - B |
Random_Inclusive | Set A to a random number between A and B, inclusive of both endpoints. If A is 1 and B is 3, the result can be 1, 2, or 3. |
Random_Exclusive | Set A to a random number between A and B, excluding B. If A is 1 and B is 3, the result can be 1 or 2. If A and B are equal, the exclusion rule is ignored. |
Worked example: Increment the player's quest-completion counter (flag 200) by 1 using a literal value.
Rewards 1
Reward_0_Type Flag_Math
Reward_0_A_ID 200
Reward_0_B_Value 1
Reward_0_Operation AdditionWorked example: Set flag 300 to a random value between 1 and 10 inclusive for a randomized reward magnitude.
Rewards 1
Reward_0_Type Flag_Math
Reward_0_A_ID 300
Reward_0_B_Value 10
Reward_0_Operation Random_InclusiveFlag_Short
Modifies a short flag by a specified amount using one of three modification operations: Assign, Increment, or Decrement. Flag_Short is simpler than Flag_Math for the common case of incrementing or decrementing a counter by a fixed amount.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Flag_Short. |
Reward_#_ID | uint16 | Yes | ID of the flag to modify. |
Reward_#_Value | int16 | Yes | The short value to apply. |
Reward_#_Modification | enum | Yes | How to apply the value. Values: Assign, Decrement, Increment. |
Worked example: Increment the player's reputation tracker (flag 400) by 50 points on quest completion.
Rewards 1
Reward_0_Type Flag_Short
Reward_0_ID 400
Reward_0_Value 50
Reward_0_Modification IncrementWorked example: Set a story-state flag to exactly 5 (Assign), representing chapter 5 of a story arc.
Rewards 1
Reward_0_Type Flag_Short
Reward_0_ID 500
Reward_0_Value 5
Reward_0_Modification AssignFlag_Short_Random
Modifies a short flag by a random value within a specified range. Flag_Short_Random is the randomized counterpart to Flag_Short and is used for variable-reward scenarios: loot drops with random quantities, randomized stat bonuses, or procedural quest rewards.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Flag_Short_Random. |
Reward_#_ID | uint16 | Yes | ID of the flag to modify. |
Reward_#_Min_Value | int16 | Yes | Minimum value to apply. |
Reward_#_Max_Value | int16 | Yes | Maximum value to apply. |
Reward_#_Modification | enum | Yes | How to apply the value. Values: Assign, Decrement, Increment. |
Worked example: Grant a random reputation bonus between 10 and 50 points.
Rewards 1
Reward_0_Type Flag_Short_Random
Reward_0_ID 600
Reward_0_Min_Value 10
Reward_0_Max_Value 50
Reward_0_Modification IncrementNon-flag rewards
Achievement
Grants a specific achievement to the player. Only certain achievements are configured as grantable through the rewards system; the full list of grantable achievement IDs is maintained in the official Smartly Dressed Games documentation.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Achievement. |
Reward_#_ID | string | Yes | ID of the achievement to grant. |
Airdrop
Calls in an airdrop at a specified location or at a random airdrop node. The airdrop cargo can be customized through an optional spawn table ID.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Airdrop. |
Reward_#_Use_Random_Airdrop_Node | bool | No | If True, calls in the airdrop at a random airdrop node placed in the level editor. |
Reward_#_Cargo | GUID or uint16 | No | Optional spawn table ID overriding which items to drop in the airdrop. |
Reward_#_Spawnpoint | string | No | Location to call in the airdrop, using the spawnpoint name as set in the level editor. |
Worked example: A quest completion reward calls in a supply airdrop at the Liberator airstrip.
Rewards 1
Reward_0_Type Airdrop
Reward_0_Spawnpoint Liberator_JetCurrency
Grants a specified amount of a currency asset to the player.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Currency. |
Reward_#_GUID | string | Yes | GUID of the currency asset. |
Reward_#_Value | int | Yes | Amount of currency to grant. |
Worked example: A quest rewards the player with 200 units of a custom currency.
Rewards 1
Reward_0_Type Currency
Reward_0_GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d
Reward_0_Value 200Cutscene_Mode
Toggles cutscene mode on or off for the player. While active, the first-person viewmodel is hidden and certain item actions such as shooting are disabled. Cutscene mode is saved and loaded with the player's session but resets on death.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Cutscene_Mode. |
Reward_#_Value | bool | Yes | Whether cutscene mode should be active. |
Effect
Spawns an effect asset at a specified location or at the player's position. Effects are the mechanism for visual and audio feedback that plays independently of the player's actions: fireworks, particle bursts, environmental ambiance triggers, and scripted visual events.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Effect. |
Reward_#_GUID | Asset Pointer | Yes | GUID of the Effect Asset to spawn. |
Reward_#_Spawnpoint | string | No | Location to spawn the effect, using the spawnpoint name as set in the level editor. |
Reward_#_AtPlayerPosition | bool | No | If True, spawn the effect at the triggering player's position. |
Reward_#_IsReliable | bool | No | If True, multiplayer ensures the effect is replicated to all clients. Defaults to True. |
Reward_#_RelevantDistance | float | No | Overrides the default multiplayer relevant distance of 128 meters. Defaults to -1. |
Reward_#_OnlyRelevantToInstigator | bool | No | If True, only the triggering player sees the effect. Takes priority over RelevantDistance. |
Worked example: A quest completion fires a visual celebration effect at the player's position, visible only to the quest completer.
Rewards 1
Reward_0_Type Effect
Reward_0_GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d
Reward_0_AtPlayerPosition True
Reward_0_OnlyRelevantToInstigator TrueEvent
Broadcasts an event ID that can be received by C# plugins through the NPCEventManager class or by Unity event components through the NPCGlobalEvent component. The Event reward is the bridge between the data-driven rewards system and custom scripting.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Event. |
Reward_#_ID | string | Yes | ID of the event to broadcast. All components or plugins listening for this event ID will receive it. |
Reward_#_Replicate | bool | No | If True, the event is triggered on clients as well as the server. Defaults to True. If False, event is only triggered on authority. |
Reward_#_InstigatorOnly | bool | No | If True, the event only runs for the triggering player. Takes priority over Replicate. |
Worked example: A quest completion broadcasts a "Fireworks" event. A Unity NPCGlobalEvent component with event ID "Fireworks" spawns a fireworks particle system in response.
Rewards 1
Reward_0_Type Event
Reward_0_ID FireworksExperience
Grants a flat amount of experience points to the player.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Experience. |
Reward_#_Value | int | Yes | Amount of experience to grant. |
Worked example: A quest grants 500 experience on completion.
Rewards 1
Reward_0_Type Experience
Reward_0_Value 500Item
Grants a specific item to the player's inventory, with optional attachment overrides and auto-equip behavior. The Item reward is the most commonly used reward type in quest completion lists and is the primary mechanism for distributing loot, weapons, tools, and consumables through quests.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Item. |
Reward_#_ID | uint16 | Yes | ID of the item to grant. |
Reward_#_Amount | int | Yes | Quantity of the item to grant. |
Reward_#_Auto_Equip | bool | No | If True, the item is automatically equipped by the player if the slot is available. Defaults to False. |
Reward_#_Ammo | byte | No | Override for the amount of ammunition loaded in the item reward. |
Reward_#_Barrel | uint16 | No | Override for the barrel attachment ID to attach to the item. |
Reward_#_Grip | uint16 | No | Override for the grip attachment ID to attach to the item. |
Reward_#_Magazine | uint16 | No | Override for the magazine attachment ID to attach to the item. |
Reward_#_Origin | EItemOrigin | No | Sets the item origin. Admin causes items to spawn at full quality. Defaults to Craft. |
Reward_#_Sight | uint16 | No | Override for the sight attachment ID to attach to the item. |
Reward_#_Tactical | uint16 | No | Override for the tactical attachment ID to attach to the item. |
Worked example: A quest rewards the player with an Eaglefire rifle (item ID 50001) with a pre-attached red-dot sight (attachment ID 50010) and 30 rounds of ammunition loaded.
Rewards 1
Reward_0_Type Item
Reward_0_ID 50001
Reward_0_Amount 1
Reward_0_Sight 50010
Reward_0_Ammo 30Worked example: A quest rewards the player with 3 bandages (item ID 50020) that auto-equip if the tertiary slot is available.
Rewards 1
Reward_0_Type Item
Reward_0_ID 50020
Reward_0_Amount 3
Reward_0_Auto_Equip TrueThe attachment override fields (Sight, Grip, Tactical, Barrel, Magazine) reference item IDs for attachments that must exist in the mod's item pool. The attachment is applied to the granted item at grant time. If the attachment ID does not correspond to a valid attachment item, the item is granted without the attachment. The Ammo override loads the specified number of rounds into the granted weapon; this is independent of the magazine asset's Amount field -- the ammo override on the reward determines how many rounds the weapon spawns with, while the magazine's Amount determines the maximum capacity.
Item_Random
Grants a random item from a spawn table, with optional quantity and auto-equip. Item_Random is the mechanism for randomized loot drops, loot-box rewards, and procedural quest payouts.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Item_Random. |
Reward_#_ID | uint16 | Yes | ID of the spawn table from which the random item is drawn. |
Reward_#_Amount | int | Yes | Quantity of the randomly selected item to grant. |
Reward_#_Auto_Equip | bool | No | If True, auto-equip the item. Defaults to False. |
Reward_#_Origin | EItemOrigin | No | Sets the item origin. Defaults to Craft. |
Worked example: A daily login bonus grants one random item from spawn table 60001.
Rewards 1
Reward_0_Type Item_Random
Reward_0_ID 60001
Reward_0_Amount 1The spawn table referenced by ID is a Spawn Table Asset configured separately in the mod's asset files. The spawn table controls which items are in the pool, their relative weights, and the randomization behavior. Item_Random resolves the spawn table at grant time and grants one randomly selected item. If the spawn table has no entries or is not found, no item is granted.
Hint
Displays a text message in the player's UI. The Hint reward is the primary mechanism for player-facing feedback: quest-completion announcements, objective updates, contextual tips, and tutorial messages.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Hint. |
Reward_#_Text | Rich Text | No | Debug fallback text shown when the asset's localization file is empty. If a localization file is present, the localized text is used instead. |
Reward_#_Duration | float | No | Duration of the hint display in seconds. Defaults to 2 seconds. |
Multiplayer hint localization
For localized hints to work in multiplayer, add Keep_Localization_Loaded true to the owning asset. Without this setting, the server's language localization is used for all players. The server does not have a direct reference to the reward itself (which the client has the text loaded for); instead, the asset ID and localization key are replicated to each client, and each client resolves the localized text from its own loaded localization file.
Worked example: Display a quest-completion message for 5 seconds.
Rewards 1
Reward_0_Type Hint
Reward_0_Text Quest complete: Supplies delivered.
Reward_0_Duration 5Player life rewards
Five reward types modify the player's current survival statistics. Each follows the same pattern: a Type field selecting the stat, and a Value field specifying the amount to add (positive) or subtract (negative).
| Reward type | Stat modified | Purpose |
|---|---|---|
Player_Life_Food | Current food level | Adds or subtracts from the player's food stat. |
Player_Life_Health | Current health | Adds or subtracts from the player's health. |
Player_Life_Stamina | Current stamina/energy | Adds or subtracts from the player's stamina. |
Player_Life_Virus | Current immunity level | Adds or subtracts from the player's immunity. |
Player_Life_Water | Current water level | Adds or subtracts from the player's water stat. |
Each of these five reward types takes exactly the same fields: Reward_#_Type (the enum value listed above) and Reward_#_Value (an integer amount to add; negative values decrease the stat).
Worked example: A medic NPC heals the player for 50 health as a dialogue reward.
Rewards 1
Reward_0_Type Player_Life_Health
Reward_0_Value 50Worked example: A cursed item reduces the player's food by 25 (negative value) when consumed.
Quest_Rewards 1
Quest_Reward_0_Type Player_Life_Food
Quest_Reward_0_Value -25Player_Spawnpoint
Overrides the player's default spawn location. The override is saved and loaded between sessions. If the ID is empty, the override is removed and default spawn locations are used.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Player_Spawnpoint. |
Reward_#_ID | string | Yes | ID of a spawnpoint node or name of a map location node, as set in the level editor. If empty, the spawn override is removed. |
Worked example: After a quest, the player's respawn point is set to the Liberator airstrip.
Rewards 1
Reward_0_Type Player_Spawnpoint
Reward_0_ID Liberator_JetQuest
Grants another quest to the player. Quest rewards are the mechanism for quest chains: completing quest A grants quest B, which the player can then track and complete.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Quest. |
Reward_#_ID | uint16 | Yes | ID of the quest to grant. |
Worked example: Completing quest 1001 as the final reward grants quest 1002, continuing the quest chain.
Rewards 1
Reward_0_Type Quest
Reward_0_ID 1002Remove_Zombies
Removes zombies from the game world that match a set of filters. Remove_Zombies is used for cleanup rewards: after a boss is killed, all remaining minions are removed; after a horde event concludes, remaining horde zombies are despawned.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Remove_Zombies. |
Reward_#_Zombie | enum | No | Zombie type to remove. Same enum list as the Kills_Zombie condition. Defaults to None, which matches all zombie types. |
Reward_#_LevelTableOverride | int | No | Unique ID of a zombie type shown in the level editor. If set, only zombies spawned from this table are removed. Defaults to -1 (all tables match). |
Reward_#_Nav | byte | No | Index of the navmesh to remove zombies from. Defaults to 255 (all navmeshes match). |
Worked example: After a boss fight quest completes, remove all Boss_Fire zombies from navmesh index 4.
Rewards 1
Reward_0_Type Remove_Zombies
Reward_0_Zombie Boss_Fire
Reward_0_Nav 4Reputation
Grants a specified amount of reputation to the player.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Reputation. |
Reward_#_Value | int | Yes | Amount of reputation to grant. |
Worked example: A quest grants 100 reputation.
Rewards 1
Reward_0_Type Reputation
Reward_0_Value 100Rewards_List_Asset
Grants a Rewards List Asset directly or resolves a Spawn Table Asset into one. The Rewards_List_Asset reward is the mechanism for composing reward lists hierarchically: a quest's reward list can reference a standalone Rewards List Asset, which itself contains a full rewards list that fires as a group.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Rewards_List_Asset. |
Reward_#_GUID | Asset Pointer | Yes | GUID of a Rewards List Asset to grant directly, or a Spawn Table Asset to resolve into one. |
Worked example: A quest completion reward references a standalone Rewards List Asset that bundles together an item grant, an experience grant, and a flag set -- the equivalent of a reward macro that can be reused across multiple quests.
Rewards 1
Reward_0_Type Rewards_List_Asset
Reward_0_GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5dSee the Rewards List Asset Reference for the full documentation of standalone Rewards List Assets and the spawn-table resolution pattern.
Teleport
Teleports the player to a specified spawnpoint location.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Teleport. |
Reward_#_Spawnpoint | string | Yes | ID of a spawnpoint node to teleport the player to, as set in the level editor. |
Worked example: Completing a quest teleports the player to the Liberator airstrip for the next quest stage.
Rewards 1
Reward_0_Type Teleport
Reward_0_Spawnpoint Liberator_JetVehicle
Spawns a vehicle at a specified location or above the NPC. The vehicle's paint color can be overridden.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Vehicle. |
Reward_#_ID | uint16 | Yes | ID of the vehicle asset to spawn. |
Reward_#_Spawnpoint | string | No | Location to spawn the vehicle, using the ID of a spawnpoint node as set in the level editor. If not provided, the vehicle spawns above the NPC. |
Reward_#_PaintColor | color | No | Overrides the color of the spawned vehicle. Bypasses the vehicle redirector asset's SpawnPaintColor and the vehicle asset's DefaultPaintColors. |
Worked example: A quest rewards the player with a vehicle (vehicle ID 80001) spawned at the Liberator garage.
Rewards 1
Reward_0_Type Vehicle
Reward_0_ID 80001
Reward_0_Spawnpoint Liberator_GarageZombie
Respawns zombies at named spawnpoint nodes. If insufficient dead zombies are available to respawn, living zombies of the correct type are converted to the required type and teleported to the spawnpoint. Zombie spawn points must be within a navmesh.
| Field | Type | Required | Purpose |
|---|---|---|---|
Reward_#_Type | enum | Yes | Must be Zombie. |
Reward_#_Zombie | enum | Yes | Type of zombie to spawn. Same enum list as the Kills_Zombie condition. |
Reward_#_Spawnpoint | string | Yes | Spawnpoint node name. When multiple nodes share a name, each zombie is spawned at a random node. |
Reward_#_LevelTableOverride | int | No | Unique ID of a zombie type shown in the level editor. Defaults to -1. |
Reward_#_SpawnQuantity | int | No | Number of zombies to spawn. |
Reward_#_CooldownId | string | No | If set, the spawn only occurs if a named global cooldown (shared between all players) has elapsed. |
Reward_#_CooldownDuration | float | No | Seconds since the cooldown last ran before the reward can spawn zombies again. |
Worked example: A quest completion respawns 5 normal zombies at the TownSquare spawnpoint with a 300-second global cooldown.
Rewards 1
Reward_0_Type Zombie
Reward_0_Zombie Normal
Reward_0_Spawnpoint TownSquare
Reward_0_SpawnQuantity 5
Reward_0_CooldownId TownRespawn
Reward_0_CooldownDuration 300Reward list composition patterns
Rewards lists are most powerful when multiple rewards are composed to produce a coherent outcome. The following patterns are cohort-validated approaches used in 57 Studios™ production quests.
The standard quest completion bundle
A typical quest completion rewards the player with experience, a currency payment, and one or more items, plus a flag set to mark the quest as completed for future dialogue gating. The rewards fire in order: flag first (so the quest is marked as completed regardless of whether inventory is full), then currency and experience, then items.
Rewards 4
Reward_0_Type Flag_Bool
Reward_0_ID 100
Reward_0_Value True
Reward_1_Type Experience
Reward_1_Value 500
Reward_2_Type Currency
Reward_2_GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d
Reward_2_Value 100
Reward_3_Type Item
Reward_3_ID 50001
Reward_3_Amount 1The staged narrative reward sequence
Using GrantDelaySeconds, rewards can be staged across time to create a narrative sequence: a hint fires immediately telling the player what is happening, an effect fires at the player's position after 2 seconds, and the item reward is granted after 5 seconds.
Rewards 3
Reward_0_Type Hint
Reward_0_Text Airdrop incoming at your position.
Reward_0_Duration 5
Reward_1_Type Effect
Reward_1_GUID a1b2c3d4e5f64a7b8c9d0e1f2a3b4c5d
Reward_1_AtPlayerPosition True
Reward_1_GrantDelaySeconds 2
Reward_2_Type Item
Reward_2_ID 50001
Reward_2_Amount 1
Reward_2_GrantDelaySeconds 5The quest-chain continuation pattern
A quest completion rewards the player with the next quest in the chain, a hint telling them where to go, and optionally a teleport to the next quest giver's location.
Rewards 3
Reward_0_Type Quest
Reward_0_ID 1005
Reward_1_Type Hint
Reward_1_Text New objective: Report to the quartermaster at the military base.
Reward_1_Duration 5
Reward_2_Type Teleport
Reward_2_Spawnpoint MilitaryBase_QuartermasterReward failure modes and inventory overflow
When an Item reward cannot be granted because the player's inventory is full, Unturned™'s default behavior is to drop the item on the ground at the player's position. The item exists as a world pickup object that the player can collect after freeing inventory space. This behavior is consistent across all item-granting reward types.
When a Currency reward cannot be granted because the currency asset's maximum is reached, the excess is silently discarded. The engine does not notify the player that currency was lost.
When a Vehicle reward cannot be spawned because the spawnpoint is obstructed, the vehicle spawns at the nearest valid position. If no valid position exists within the spawn resolution radius, the vehicle spawn fails silently.
Inventory overflow for quest-critical items
When a quest-critical item (an item that another condition checks for) is dropped on the ground due to inventory overflow, the player may not realize they have received it, and may leave the area without picking it up. The Item condition will fail because the item is on the ground rather than in the inventory, and the player will be stuck. To mitigate this, include a Hint reward immediately before the Item reward that warns the player their inventory is full and directs them to free space.
Reward authoring checklist
Before testing a rewards list in-game, confirm every entry:
- [ ]
Rewardsbyte matches the exact count ofReward_#_Typeentries. - [ ] Reward indices start at
0and increment sequentially with no gaps. - [ ] Every reward has a
Reward_#_Typethat is one of the twenty-seven valid enum values. - [ ] Every reward's type-specific fields are spelled correctly and use the correct data type.
- [ ] Item rewards with attachment overrides reference valid attachment item IDs that exist in the mod.
- [ ] Currency rewards reference valid currency asset GUIDs.
- [ ] Teleport and vehicle rewards reference spawnpoint names that exist in the level editor.
- [ ] Flag reward IDs are documented in the mod's flag-usage register.
- [ ] Localization entries for hint rewards are authored in the appropriate localization file if the mod targets multiple languages.
- [ ] For multiplayer hints,
Keep_Localization_Loaded trueis set on the owning asset. - [ ]
GrantDelaySecondsvalues are positive floats; a value of-1means no delay. - [ ]
GrantDelayApplyWhenInterruptedisTruefor critical story-flag rewards andFalsefor standard quest rewards.
Diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Reward item not granted | Player inventory is full and the item dropped on the ground was not noticed | Check the ground at the reward location. Add a Hint reward before the Item reward warning about inventory space. |
| Currency not received | Player already at currency cap | Reduce the player's currency below the cap or allow the currency asset to hold a higher maximum. |
| Vehicle does not spawn | Spawnpoint obstructed or spawnpoint name does not match level editor | Verify the spawnpoint name in the level editor matches the reward's Spawnpoint field exactly. |
| Hint text appears in wrong language in multiplayer | Keep_Localization_Loaded not set on the owning asset | Add Keep_Localization_Loaded true to the dialogue, quest, or object asset. |
| Flag not set after reward | Flag ID collision with another mod's flag | Verify the flag ID is unique across all loaded mods. |
| Effect not visible | Effect GUID invalid or effect asset not loaded | Verify the effect asset GUID and confirm the asset is included in the mod bundle. |
| Event not received by plugin | Plugin listener not registered for the event ID | Confirm the plugin subscribes to the exact event ID string used in the reward. |
| Reward fires on death when it should not | GrantDelayApplyWhenInterrupted is True | Set GrantDelayApplyWhenInterrupted False for rewards that should cancel on death. |
| Reward cancels on death when it should persist | GrantDelayApplyWhenInterrupted is False | Set GrantDelayApplyWhenInterrupted True for critical flag rewards that must persist. |
| Item_Random grants nothing | Spawn table is empty or not found | Verify the spawn table asset exists and contains at least one entry. |
| Zombie reward spawns no zombies | Spawnpoint is not within a navmesh | Verify the spawnpoint node is placed inside a navmesh in the level editor. |
| Airdrop lands at wrong location | Spawnpoint name does not match any airdrop node | Verify the spawnpoint name or set Use_Random_Airdrop_Node True. |
| Flag_Math does not modify flag | Right-hand flag B_ID is set but does not exist on the player | Use B_Value as a literal fallback for the case where flag B is unset. |
Best practices
- Always grant the completion flag (Flag_Bool) as the first reward in a quest-completion list so the quest is marked complete before any other rewards fire.
- Use
GrantDelayApplyWhenInterrupted Truefor critical story-progression flags andFalsefor cosmetic or monetary rewards. - Pair a Hint reward with every grant delay to tell the player what is happening and prevent confusion about missing rewards.
- Document every flag ID in a flag register that tracks which flag is used by which quest, the expected value range, and whether it resets.
- Use
Rewards_List_Assetreferences for reward bundles that repeat across multiple quests (standard faction-reputation payout, standard supply drop, standard currency bonus) to avoid duplicating reward entries. - Test item rewards with a full inventory to confirm the drop-on-ground behavior and verify the item is collectible.
- Test vehicle rewards at the spawnpoint to confirm the vehicle spawns without clipping into terrain or structures.
- Use
Flag_MathwithRandom_Inclusivefor randomized loot quantities rather than hardcoding a range in a script. - Always set
Keep_Localization_Loaded trueon assets that use Hint rewards for multiplayer environments. - When using
Zombierewards withCooldownId, test the cooldown behavior by triggering the reward twice in rapid succession.
Frequently asked questions
What is the difference between Flag_Short and Flag_Math?
Flag_Short is a simpler reward for the three most common operations: assign, increment, and decrement by a single fixed value. Flag_Math is the general-purpose arithmetic reward that supports eight operations (Addition, Subtraction, Multiplication, Division, Modulo, Assign, Random_Inclusive, Random_Exclusive) and can use either a literal value or another flag as the operand. Use Flag_Short for simple increment/decrement rewards; use Flag_Math when you need division, multiplication, random ranges, or cross-flag arithmetic.
Can a reward grant negative values?
Yes. The player-life rewards (Player_Life_Food, Player_Life_Health, Player_Life_Stamina, Player_Life_Virus, Player_Life_Water) accept negative values to decrease the stat. The Flag_Short reward with Modification Decrement functionally applies a negative change. The Reputation reward with a negative Value decreases reputation. Not all reward types accept negative values -- Experience and Currency with negative values are not documented behavior and should not be relied upon.
What happens if a reward references an item that does not exist?
If the item ID in an Item reward does not correspond to any loaded item asset, the reward fails silently. No item is granted, no error is logged to the server console, and no feedback is provided to the player. Verify every item ID in a reward against the mod's item manifest before testing.
Can Reward_List_Asset nest recursively?
The official documentation does not explicitly address recursive nesting, but recursive rewards-list resolution would create the risk of infinite loops. The cohort recommendation is to limit Rewards_List_Asset chains to a single level of indirection: a quest references a Rewards List Asset, and the Rewards List Asset contains concrete rewards (items, experience, flags) rather than further Rewards_List_Asset references.
How do I make a reward that fires only if the player does not already have the reward item?
Use a conditions list on the parent asset (the dialogue response, the quest, the object) that includes an Item condition checking for the absence of the item in the player's inventory. The reward itself cannot self-gate; the gating must happen at the conditions level.
Do rewards fire in multiplayer for all players or just the triggering player?
Most rewards fire only for the triggering player. The Effect reward has OnlyRelevantToInstigator and RelevantDistance fields that control visibility to other players. The Event reward has Replicate and InstigatorOnly fields that control whether the event reaches other clients. The Zombie and Remove_Zombies rewards affect the shared world state and are visible to all players. Currency, experience, items, flags, reputation, teleports, and player-life rewards always apply to the triggering player only.
How do quest abandonment rewards differ from completion rewards?
Quest abandonment rewards are a separate rewards list within the Quest asset, keyed by the AbandonmentReward_#_ prefix. Abandonment rewards fire when the player manually abandons the quest from the quest journal. The cohort pattern is to use abandonment rewards to reset quest-tracking flags (so the quest can be re-accepted) or to apply a reputation penalty for abandoning faction quests.
Can I use the Item reward to grant an item with a custom magazine loaded?
Yes. Use Reward_#_Magazine to specify the magazine attachment ID that should be pre-loaded into the granted weapon. The magazine must be compatible with the weapon (matching Caliber / Caliber_Reference). The Ammo field can be used to further override the number of rounds in the loaded magazine.
What is the maximum number of rewards in a single rewards list?
There is no hard maximum enforced by the engine. The practical limit is imposed by the .dat file format and the parser. Cohort-validated servers have used rewards lists with ten or more entries without issues. However, very large rewards lists (twenty or more entries) become difficult to maintain and debug; the cohort recommendation is to split large reward lists into multiple Rewards_List_Asset references.
Do Hint rewards support rich text formatting?
The Reward_#_Text field on the Hint reward is a Rich Text-capable field according to the official documentation. Rich text tags supported by Unturned's UI system (color tags, bold, italic) should render correctly. Test rich-text formatting in single-player before deploying to a server, as not all rich-text tags are supported on all platforms.
How do I test a rewards list without completing the full quest?
Use the /RunRewardList admin command on a rewards list asset to test it directly. For rewards lists embedded in quests or dialogue, use the @give command to spawn the parent item, the @flag command to set the prerequisite flags, or temporarily remove the conditions from the parent asset to force the rewards to fire. Always restore the conditions after testing.
Rewards composition diagram
The following Mermaid flowchart shows how a quest's Rewards list and AbandonmentRewards list interact with the player's flag state.
Appendix A: Rewards field quick reference
| Reward type | Category | Unique fields | Value type |
|---|---|---|---|
Flag_Bool | Flag | ID, Value | bool |
Flag_Math | Flag | A_ID, B_ID, B_Value, Operation | int16 (computed) |
Flag_Short | Flag | ID, Value, Modification | int16 |
Flag_Short_Random | Flag | ID, Min_Value, Max_Value, Modification | int16 (random range) |
Achievement | Non-flag | ID | string |
Airdrop | Non-flag | Use_Random_Airdrop_Node, Cargo, Spawnpoint | varies |
Currency | Non-flag | GUID, Value | int |
Cutscene_Mode | Non-flag | Value | bool |
Effect | Non-flag | GUID, Spawnpoint, AtPlayerPosition, IsReliable, RelevantDistance, OnlyRelevantToInstigator | Asset Pointer |
Event | Non-flag | ID, Replicate, InstigatorOnly | string |
Experience | Non-flag | Value | int |
Item | Non-flag | ID, Amount, Auto_Equip, Ammo, Barrel, Grip, Magazine, Origin, Sight, Tactical | uint16 + int |
Item_Random | Non-flag | ID, Amount, Auto_Equip, Origin | uint16 + int |
Hint | Non-flag | Text, Duration | string + float |
Player_Life_Food | Non-flag | Value | int |
Player_Life_Health | Non-flag | Value | int |
Player_Life_Stamina | Non-flag | Value | int |
Player_Life_Virus | Non-flag | Value | int |
Player_Life_Water | Non-flag | Value | int |
Player_Spawnpoint | Non-flag | ID | string |
Quest | Non-flag | ID | uint16 |
Remove_Zombies | Non-flag | Zombie, LevelTableOverride, Nav | enum + int + byte |
Reputation | Non-flag | Value | int |
Rewards_List_Asset | Non-flag | GUID | Asset Pointer |
Teleport | Non-flag | Spawnpoint | string |
Vehicle | Non-flag | ID, Spawnpoint, PaintColor | uint16 + string + color |
Zombie | Non-flag | Zombie, Spawnpoint, LevelTableOverride, SpawnQuantity, CooldownId, CooldownDuration | enum + string + int + float |
Appendix B: Flag_Math operation reference
| Operation | Formula | Use case |
|---|---|---|
Addition | A = A + B | Incrementing counters by a variable amount |
Assign | A = B | Setting a flag to a known value from another flag |
Division | A = A / B | Halving a stat, computing integer ratios |
Modulo | A = A % B | Wrapping a counter within a range |
Multiplication | A = A * B | Doubling a stat, scaling a value |
Subtraction | A = A - B | Decreasing a counter by a variable amount |
Random_Inclusive | A = rand(A, B) inclusive | Randomized loot quantities, variable rewards |
Random_Exclusive | A = rand(A, B) exclusive | Randomized rewards with an upper bound excluded |
Appendix C: Reward prefix reference by context
| Context | Standard prefix | Abandonment/alternate prefix |
|---|---|---|
| NPC dialogue response | Reward_#_ | , |
| Quest completion | Reward_#_ | AbandonmentReward_#_ |
| Interactable object | Reward_#_ or Interactability_Reward_#_ | , |
| Consumable item | Quest_Reward_#_ | , |
| Rewards List Volume | Reward_#_ | , |
Appendix D: External references
- Smartly Dressed Games modding documentation -- official reward field definitions and behavior notes.
- Unturned on Steam -- game page and update changelog.
- Conditions Reference -- the previous article; covers the conditions that gate reward lists.
- Rewards List Asset Reference -- the next article; covers standalone Rewards List Assets and their use as reward macros.
- Custom NPCs, Dialogues, and Quests -- the NPC system article; rewards are the outcome side of NPC interactions.
- Currency Asset Reference -- documents the currency assets referenced by the Currency reward type.
- Project Folder Structure and GUIDs -- GUID generation and folder layout.
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete reference for all 27 reward types across flag and non-flag categories. Includes worked examples, composition patterns, grant delay behavior, multiplayer localization guidance, and diagnostic table. |
Cross-references
- Conditions Reference -- the previous article in this section.
- Rewards List Asset Reference -- the next article; covers the standalone rewards list container.
- Custom NPCs, Dialogues, and Quests -- the NPC system article; rewards are the outcome of NPC interactions and quest completions.
- Currency Asset Reference -- documents the currency assets that Currency rewards reference.
- Airdrop Asset Reference -- documents the airdrop assets the Airdrop reward type interacts with.
- Smartly Dressed Games modding documentation -- official field reference.
- Unturned on Steam -- game page.
