# Party RPG Inventory

> The Party RPG inventory style: a backpack with no size that slows the character as it fills, pouches with slots of their own, worn gear on a paper doll, a belt of four slots in a row and a stash.

Markdown version of https://rigbak.com/docs/universal-player-combat/inventory-party-rpg, a page of the Universal Player Combat documentation. Link that page when citing it.

## Set it up (5 minutes)

1. **Copy it with a low limit**

   Duplicate `Demo/Items/Inventory/InventoryConfig_UPC_PartyRPG` as `InventoryConfig_MyParty` and set its **Carry Rules** **Weight Limit** **Limit** to 10. Set the copy as **Config** on `BP_UPC_Character`'s **InventoryComponent**, and add it to **Inventory Screen Classes** on `BP_UPC_PlayerController`'s **InventoryScreens** component with `WBP_UPC_InventoryScreen_PartyRPG`.

   In **InventoryConfig_MyParty**, under Rules > Weight Limit, set:

   | Property | Value |
   | --- | --- |
   | Limit | 10 (replaces 60) |

   *The Encumbered and Heavily Encumbered thresholds stay at 0.7 and 1 of the limit, 7 and 10 here.*
2. **Press Play and take the rack's weapons**

   Press Play in `LVL_UPC_Demo` and take the swords and shield off the weapon rack. Two swords weigh 8 of 10, past seven tenths of the limit: the character is Encumbered, walks at 85 percent and cannot sprint. The shield brings it to 14 and Heavily Encumbered too: it stands still until it drops something.
3. **Open the screen**

   Press **I** (or tap View). The weight bar marks seven tenths of the limit and the limit.

---

## What it holds

| Row or setting | Does |
| --- | --- |
| **Backpack** | Unsized list, so space never refuses an item. **Opens Bags** is on: a pouch opens its own slots as it lands ([Bags and Banks](https://rigbak.com/docs/universal-player-combat/inventory-bags)). |
| **Stash** | Thirty slots off the character, reached only while it holds `UPC.State.AtStash`. |
| **Weight Limit** | Shipped at 60, refusing nothing: at 0.7 of it `UPC.State.Encumbered`, at 60 `UPC.State.HeavilyEncumbered` too. |
| **Equipped Space**, **Belt Space** | **Frees Its Place**: worn gear and belt items leave the backpack but their weight still counts. |
| **Belt Slots** | Four slots in a row, in place of the diamond. Each takes any item, but the screens put on the row only what its key would draw, put on or use: the ring, not arrows, poison or a pouch ([Quick Bar](https://rigbak.com/docs/universal-player-combat/quick-bar#a-belt-an-inventory-config-names)). |
| **Combine Sets** | `CombineSet_UPC_Demo`: poison onto arrows or a weapon, rounds into a magazine ([Combines](https://rigbak.com/docs/universal-player-combat/inventory-combines)). |
| **Equip At Once**, **Put Away At Once**, **Combine At Once** | On: what the screen does lands at once, with no animation or wait. |

The demo character answers the weight tags itself. On your own, add the two components from [Sprint and Speed](https://rigbak.com/docs/universal-player-combat/sprint-and-speed) if missing, set the **UPC Speed Modifier**'s **Speed Scale by Tag** to `UPC.State.Encumbered` 0.85 and `UPC.State.HeavilyEncumbered` 0, and add `UPC.State.Encumbered` to the **UPC Sprint** **Blocked Tags**.

---

## Change it

| To | Change |
| --- | --- |
| Refuse items past the limit | Tick **Refuse Over Limit** on the Weight Limit. |
| Let an item raise the limit | Set the Weight Limit's **Capacity Tag** to a tag of your own, such as `Capacity.Strength`, and give the item a **Capacity Bonus** fragment with a **Bonuses** row naming that tag and an **Amount**, such as 20: while the character owns it, the limit grows by 20. |
| Change how much each tier slows | **Speed Scale by Tag** on the character's UPC Speed Modifier. |
| Open pouches only on a bag bar | Duplicate `Container_UPC_Backpack`, set the config copy's backpack row **Definition** to it, untick **Opens Bags** and add a bag bar row ([Bags and Banks](https://rigbak.com/docs/universal-player-combat/inventory-bags#a-bag-bar)); the shipped screens draw no bag bar. |
| Keep worn gear and belted items in the backpack | **Equipped Space** and **Belt Space** to **Keeps Its Place**. |
| Go back to the diamond belt | Clear **Belt Slots**. |
| Hang all carried weapons on the body | Tick **Show Carried Items On Body**. |
| Wait for a draw or a combine | Untick **Equip At Once** or **Combine At Once** ([Containers and Rules](https://rigbak.com/docs/universal-player-combat/inventory-containers#combine-sets-and-timing)). |
| Show other body places on the doll | Edit **Places** on `WBP_UPC_PaperDoll` or your copy ([Inventory Screens](https://rigbak.com/docs/universal-player-combat/inventory-screens)). |

<details>
<summary>Weight in detail (Advanced)</summary>

- The Weight Limit weighs everything carried (**Weight** fragment times count); the stash weighs nothing.
- The tags sit on the character's ability system, where a speed scale, a sprint's Blocked Tags or a move's transition reads them. A weight bar reads **Get Weight** with an empty scope beside the rule's **Get Effective Limit**, and redraws on **On Carry Changed**.
- A carry rule reading something outside the inventory needs **Refresh Limits** called when that value changes ([Inventory Rules and Combines in Blueprint](https://rigbak.com/docs/universal-player-combat/inventory-blueprint#rules)).

| Demo item | Weight |
| --- | --- |
| Two-handed baton | 8 |
| Shield | 6 |
| Sword | 4 |
| Helmet | 3 |
| Shoulder cape | 2 |
| Potion, necklace, pouch, poison | 0.5 |

</details>

<details>
<summary>The demo</summary>

**Details panel: InventoryConfig_UPC_PartyRPG** (data asset, in Content Browser)

**Category: Containers**

| Property | Value |
| --- | --- |
| Containers | 2 Array elements |
| Containers > Index [0] > Container | UPC.Inventory.Container.Backpack |
| Containers > Index [0] > Definition | Container_UPC_Backpack |
| Containers > Index [1] > Container | UPC.Inventory.Container.Stash |
| Containers > Index [1] > Definition | Container_UPC_Stash |

**Category: Rules**

| Property | Value |
| --- | --- |
| Carry Rules | 1 Array element |
| Carry Rules > Index [0] | Weight Limit |
| Carry Rules > Index [0] > Limit | 60 |
| Carry Rules > Index [0] > Capacity Tag | None |
| Carry Rules > Index [0] > Refuse Over Limit | false |
| Carry Rules > Index [0] > Thresholds | 2 Array elements |
| Carry Rules > Index [0] > Thresholds > Index [0] > Fraction | 0.7 |
| Carry Rules > Index [0] > Thresholds > Index [0] > Tag | UPC.State.Encumbered |
| Carry Rules > Index [0] > Thresholds > Index [1] > Fraction | 1 |
| Carry Rules > Index [0] > Thresholds > Index [1] > Tag | UPC.State.HeavilyEncumbered |

**Category: Combines**

| Property | Value |
| --- | --- |
| Combine Sets | 1 Array element |
| Combine Sets > Index [0] | CombineSet_UPC_Demo |

**Category: Held Items**

| Property | Value |
| --- | --- |
| Belt Space | Frees Its Place |
| Equipped Space | Frees Its Place |
| Has Belt | true |
| Belt Slots | 4 Array elements |
| Belt Slots > Index [0] | None |
| Belt Slots > Index [1] | None |
| Belt Slots > Index [2] | None |
| Belt Slots > Index [3] | None |
| Swap When Full | false |

**Category: Body**

| Property | Value |
| --- | --- |
| Show Carried Items On Body | false |

**Category: Sorting**

| Property | Value |
| --- | --- |
| Sort Order | 0 Array elements |

**Category: Timing**

| Property | Value |
| --- | --- |
| Equip At Once | true |
| Draw Timing > Seconds | 0.2 (folded until clicked) |
| Draw Timing > Start Sound | None (folded until clicked) |
| Draw Timing > Commit Sound | None (folded until clicked) |
| Draw Timing > Cancel on Move | false (folded until clicked) |
| Put Away At Once | true |
| Stow Timing > Seconds | 0.2 (folded until clicked) |
| Stow Timing > Start Sound | None (folded until clicked) |
| Stow Timing > Commit Sound | None (folded until clicked) |
| Stow Timing > Cancel on Move | false (folded until clicked) |
| Combine At Once | true |

*A party RPG inventory: a backpack with no size where pouches open, a stash the character reaches only while it holds UPC.State.AtStash, a weight limit of 60 that refuses nothing and puts Encumbered and Heavily Encumbered on the character, and a belt of four slots that take any item.*

- `Item_UPC_Pouch` opens `Container_UPC_Pouch`; the screen shows one pouch's slots at a time after the backpack.
- `WBP_UPC_PaperDoll` shows what `BP_UPC_Character` wears and holds. The party kit fills the belt row with potion, sword, shield and a ring (its key puts it on and off).
- Coat Weapon gives a weapon three poisoned strikes in its `UPC.Inventory.Stat.Poisoned` stat tag, and turns the next flask down while the weapon is still coated. Your damage code reads and spends the tag; the plugin only counts the strikes ([Inventory Rules and Combines in Blueprint](https://rigbak.com/docs/universal-player-combat/inventory-blueprint)).
- A `BP_UPC_StorageBox` with its **Access Tag** set to `UPC.State.AtStash` serves as the stash, as for the [survival grid](https://rigbak.com/docs/universal-player-combat/inventory-survival-grid#the-stash); `LVL_UPC_Wardrobe_Hall` places one that serves every style. A chest the whole party sees is a [loot chest](https://rigbak.com/docs/universal-player-combat/loot-chests), as the hallway's `BP_UPC_LootChest`.

</details>

<details>
<summary>What runs where (Multiplayer)</summary>

- The server keeps the weight tags on the character as one gameplay effect; every machine sees them about half a round trip later and works the slow out itself, so no speed is sent.

</details>

---

Previous page: [Survival Grid Inventory](https://rigbak.com/docs/universal-player-combat/inventory-survival-grid). Next page: [Open World List Inventory](https://rigbak.com/docs/universal-player-combat/inventory-open-world-list)
