RAID STATE — USME STASH DROP-IN
UE 5.8  ·  ExtractorSDK 0.1.0


WHAT THIS IS

  An out-of-raid stash for Ultimate Multiplayer Survival Engine, held on a
  server rather than in a save file. Click an item in your inventory, click a
  square in the stash, and it is on the platform. Click it again and it comes
  back.


REQUIRES USME — AND DOES NOT INCLUDE IT

  Nothing in this download is USME content. WBP_StashUSME names USME's classes
  by path — BPC_MasterInventoryComponent, BPI_PlayerController, BFL_Shortcuts,
  W_Inventory, W_DragItem, W_HUD, W_InventoryHUD — and calls them the way any
  Blueprint calls another. It carries no copy of them, and it resolves only in
  a project that already has USME installed.

  You need your own licensed copy of Ultimate Multiplayer Survival Engine.
  Nothing here replaces or redistributes any part of it.


INSTALL — 1. CLOSE THE UNREAL EDITOR

  Unreal reads Plugins/ once at startup. It will not notice a plugin that
  appeared while it was running.


INSTALL — 2. DRAG TWO FOLDERS

  Plugins\ExtractorSDK\        ->  <YourProject>\Plugins\
  Content\RaidStateUSME\       ->  <YourProject>\Content\

  Create <YourProject>\Plugins\ if it does not exist. Stock USME has no
  Plugins folder.

  Why two folders: ExtractorSDK is generic and works in any project.
  RaidStateUSME references USME's own classes, so it cannot live inside the
  plugin without breaking the plugin for everyone who is not using USME.


INSTALL — 3. REOPEN THE EDITOR AND SET TWO VALUES

  Open the Raid State button in the level editor toolbar.

    Development API Key   ex_dev_...
    Item Data Table    /Game/Dreamrise_UMSE/Blueprints/Data/Inventory/DT_ItemData

  The API endpoint is already https://api.raidstate.com. There is nothing to
  type there and no server for you to run.

  A production ex_live_ key is refused from project settings on purpose — a key
  in an .ini ships inside your packaged game. Set EXTRACTOR_API_KEY in the
  environment instead.


INSTALL — 4. PLACE THE WIDGET  (the one step a file copy cannot do)

  Open  Content\Dreamrise_UMSE\Blueprints\Widgets\W_Inventory

    a. In the Palette, search: WBP_StashUSME
    b. Drag it into the Hierarchy, onto the HorizontalBox that already holds
       W_ArmorPanel, the inventory VerticalBox, W_Refinery and W_Crafting.
       In stock USME that box is named HorizontalBox_115.
    c. With it selected, set the slot to:
         Size          Auto
         H Align       Left
         V Align       Center
         Padding Left  24
    d. In Details, set:
         Visibility        Visible          <- required; it must receive clicks
         Provider          anonymous        <- steam when you ship
         Ticket            <any id>         <- whose stash to show
         Container Kind    stash
         Layout            Slots            <- USME is slots, not a grid
         Slot Count        80
         Slot Columns      10
         Cell Size         40
    e. Compile and Save.

  Layout is the one that matters. USME's inventory is a flat run of equal
  squares, so a rifle and a bandage take one square each. A container's layout
  is fixed when it is created, so picking Grid here and then creating the stash
  gives you a stash you cannot convert.

  We do not ship a modified W_Inventory.uasset on purpose. Overwriting yours
  would destroy any change you have made to your own inventory screen, and
  would break the next time USME ships a new version of it.


USING IT

  Deposit    Click an item in your inventory to pick it up (USME's normal
             pick-up), then click a square in the stash.

  Withdraw   Click an item in the stash while holding nothing. It goes to your
             inventory, or drops at your feet if there is no room.

  An occupied square refuses a deposit, which is what dropping an item onto an
  occupied square should mean.


IF CLICKING DOES NOTHING

  Visibility. A UserWidget is SelfHitTestInvisible by default and never
  receives clicks — only its children do. Set Visibility to Visible.


FULL GUIDE

  docs/usme-stash-dropin.md  — every step, how the USME protocol works, why
  the deposit ordering is what it is, and how to do the same for a template
  that is not USME.
