Reference Devices compiles

item_remover_device: Strip Players of Items on Demand

The `item_remover_device` lets you programmatically strip items from a player's inventory at any moment — perfect for penalty zones, round resets, or boss-room entry checks. With just three methods (`Enable`, `Disable`, and `Remove`) you get surgical control over what players carry and when. Wire it to any game event in Verse and your inventory rules become part of your game logic.

Updated Examples verified on the live UEFN compiler
Watch the Knotitem_remover_device in ~90 seconds.

Overview

The item_remover_device solves a common creative problem: taking items away from players at a specific moment, not just on elimination. Without it you'd have no Verse-side way to clear a player's loadout mid-round.

Typical use-cases:

  • Penalty zones — a lava pit or storm wall strips weapons from anyone who walks through it.
  • Round resets — clear every player's inventory before handing out a fresh loadout.
  • Boss-room entry — a trigger at the door removes gadgets so players fight fair.
  • Down-But-Not-Out loot drop — when a player is downed, call Remove so teammates can scavenge their gear.

The device's Affected Items setting (configured in the UEFN editor, not in Verse) controls which item categories are removed when Remove is called. Configure that in the Details panel, then drive the when and who from Verse.

API Reference

item_remover_device

Used to cause agents to drop or lose items from their inventory. For example, if an agent is Down But Not Out, they could drop items from their inventory, and other agents could then pick up those items.

Full public surface, resolved verbatim from the live Epic digest (Fortnite.digest.verse).

item_remover_device<public> := class<concrete><final>(creative_device_base):

Methods (call these to make the device act):

Method Signature Description
Enable Enable<public>():void Enables this device.
Disable Disable<public>():void Disables this device.
Remove Remove<public>(Agent:agent):void Remove items from Agents inventory. The items that are removed can be configured using Affected Items.

Walkthrough

Scenario: Penalty Zone — Strip Weapons When a Player Steps on a Trigger Plate

A player walks into a forbidden zone marked by a trigger_device. The moment they step on it, the item_remover_device strips their configured items. After 10 seconds the remover is disabled so late arrivals are safe (the round has moved on).

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

# Place this Verse device in UEFN, then assign the two @editable fields
# in the Details panel to your placed trigger_device and item_remover_device.
penalty_zone_manager := class(creative_device):

    # The trigger plate that marks the forbidden zone entrance.
    @editable
    PenaltyTrigger : trigger_device = trigger_device{}

    # The item remover configured in the editor to strip weapons/ammo.
    @editable
    ItemRemover : item_remover_device = item_remover_device{}

    OnBegin<override>()<suspends> : void =
        # Enable the remover at round start so it is ready to act.
        ItemRemover.Enable()

        # Subscribe to the trigger's TriggeredEvent.
        # TriggeredEvent sends ?agent, so the handler receives an optional agent.
        PenaltyTrigger.TriggeredEvent.Subscribe(OnPlayerEnteredZone)

        # After 10 seconds, disable the remover — late arrivals are safe.
        Sleep(10.0)
        ItemRemover.Disable()

    # Called each time the trigger fires.
    OnPlayerEnteredZone(MaybeAgent : ?agent) : void =
        # Unwrap the optional agent before using it.
        if (Agent := MaybeAgent?):
            # Strip the configured item categories from this specific player.
            ItemRemover.Remove(Agent)

Line-by-line explanation:

Line What it does
@editable PenaltyTrigger Exposes the trigger slot in the UEFN Details panel so you can wire a real placed device.
@editable ItemRemover Same for the item remover — configure Affected Items in the editor.
ItemRemover.Enable() Arms the device at round start. A disabled remover ignores Remove calls.
PenaltyTrigger.TriggeredEvent.Subscribe(OnPlayerEnteredZone) Registers our handler to run every time the plate fires.
Sleep(10.0) Suspends the coroutine for 10 seconds, then disables the remover.
if (Agent := MaybeAgent?) Safely unwraps the ?agent — if no agent is present the block is skipped.
ItemRemover.Remove(Agent) The key call — strips the configured items from exactly this player.

Common patterns

Pattern 1: Enable and Disable Around a Boss Fight

Enable the remover when the boss phase begins, disable it when the boss dies. Any player who enters the arena during the fight loses their gadgets; players who arrive after the fight keep theirs.

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }

boss_fight_controller := class(creative_device):

    # Trigger wired to the boss-room door sensor.
    @editable
    BossRoomTrigger : trigger_device = trigger_device{}

    # Item remover set to strip gadgets/utility items.
    @editable
    GadgetRemover : item_remover_device = item_remover_device{}

    # Trigger wired to the boss elimination sensor.
    @editable
    BossDefeatedTrigger : trigger_device = trigger_device{}

    OnBegin<override>()<suspends> : void =
        # Remover starts disabled — players keep items outside the arena.
        GadgetRemover.Disable()

        # Subscribe to both triggers.
        BossRoomTrigger.TriggeredEvent.Subscribe(OnEnterBossRoom)
        BossDefeatedTrigger.TriggeredEvent.Subscribe(OnBossDefeated)

    OnEnterBossRoom(MaybeAgent : ?agent) : void =
        # Enable the remover so it will act on Remove() calls.
        GadgetRemover.Enable()
        if (Agent := MaybeAgent?):
            GadgetRemover.Remove(Agent)

    OnBossDefeated(MaybeAgent : ?agent) : void =
        # Boss is gone — no more item stripping.
        GadgetRemover.Disable()

Pattern 2: Strip All Players at Round Start

At the beginning of each round, iterate every player and call Remove so everyone starts with a clean slate before a new loadout is granted.

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Game }

round_reset_manager := class(creative_device):

    # Item remover configured to strip ALL item categories.
    @editable
    FullStripRemover : item_remover_device = item_remover_device{}

    # Trigger that fires when the round-start countdown ends.
    @editable
    RoundStartTrigger : trigger_device = trigger_device{}

    OnBegin<override>()<suspends> : void =
        FullStripRemover.Enable()
        RoundStartTrigger.TriggeredEvent.Subscribe(OnRoundStart)

    OnRoundStart(MaybeAgent : ?agent) : void =
        # GetPlayspace() lets us reach all active players.
        AllPlayers := GetPlayspace().GetPlayers()
        for (Player : AllPlayers):
            # Remove items from every player, not just the one who hit the trigger.
            FullStripRemover.Remove(Player)

Pattern 3: Timed Disarm Trap

A trap tile strips items from anyone who stands on it, but only while it is active. A second trigger re-enables it after a cooldown, creating a pulsing hazard.

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }

disarm_trap := class(creative_device):

    # The pressure plate that activates the trap.
    @editable
    TrapPlate : trigger_device = trigger_device{}

    # Item remover set to strip weapons only.
    @editable
    WeaponRemover : item_remover_device = item_remover_device{}

    # How long (seconds) the trap stays inactive after firing.
    @editable
    CooldownSeconds : float = 5.0

    OnBegin<override>()<suspends> : void =
        WeaponRemover.Enable()
        TrapPlate.TriggeredEvent.Subscribe(OnTrapTriggered)

    OnTrapTriggered(MaybeAgent : ?agent) : void =
        if (Agent := MaybeAgent?):
            WeaponRemover.Remove(Agent)

        # Disable during cooldown so rapid re-triggers don't fire.
        WeaponRemover.Disable()
        spawn{ ReenableTrap() }

    ReenableTrap()<suspends> : void =
        Sleep(CooldownSeconds)
        WeaponRemover.Enable()

Gotchas

1. Remove silently does nothing when the device is Disabled

If you call Remove(Agent) while the device is in the Disabled state, no items are removed and no error is raised. Always call Enable() before expecting Remove to act — or structure your logic so the device is enabled by default and only disabled when you want a safe window.

2. Which items are removed is an editor setting, not a Verse parameter

Remove(Agent) has no item-type argument. The categories stripped (weapons, ammo, consumables, etc.) are set in the Affected Items option in the UEFN Details panel. If nothing seems to be removed, double-check that setting first.

3. Always unwrap ?agent before passing to Remove

trigger_device.TriggeredEvent delivers a ?agent (optional). Passing an unwrapped optional directly to Remove is a type error. Use if (Agent := MaybeAgent?): to unwrap safely:

# WRONG — type mismatch
ItemRemover.Remove(MaybeAgent)   # MaybeAgent is ?agent, not agent

# CORRECT
if (Agent := MaybeAgent?):
    ItemRemover.Remove(Agent)

4. GetPlayspace().GetPlayers() returns []player, which satisfies agent

When iterating all players, player is a subtype of agent, so you can pass each Player directly to Remove(Player) without any cast.

5. Disable does not undo a removal that already happened

Calling Disable() after Remove() has fired does not restore stripped items. Items are gone the moment Remove executes. If you need a restore mechanic, pair this device with an item_granter_device to re-award items explicitly.

Device Settings & Options

The item_remover_device User Options panel in the UEFN editor — every setting you can tune.

Item Remover Device settings and options panel in the UEFN editor — Affected Items, Amount to Remove, Removal Method, Apply To, Item List
Item Remover Device — User Options in the UEFN editor: Affected Items, Amount to Remove, Removal Method, Apply To, Item List
⚙️ Settings on this device (5)

Setting names read from the panel above — may be partial; the screenshots are the source of truth.

Affected Items
Amount to Remove
Removal Method
Apply To
Item List

Guides & scripts that use item_remover_device

Step-by-step tutorials that put this object to work.

Build your own lesson with item_remover_device

Generate a personalized, step-by-step lesson plan built around this object — grounded in this exact reference and our compile-verified knowledge base.

Build a lesson →