Reference Devices compiles

damage_amplifier_powerup_device: Supercharge Your Players' Damage

The `damage_amplifier_powerup_device` temporarily multiplies every point of damage a player deals, turning a skirmish into a power-fantasy moment. From Verse you can set the multiplier at runtime, spawn or despawn the pickup on demand, grant it directly to a specific player, and listen for the moment someone grabs it — all without touching the UEFN Details panel after launch.

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

Overview

The damage_amplifier_powerup_device is a powerup_device subclass that wraps the in-world Damage Amplifier pickup. Drop one on your map and it sits there glowing until a player walks over it; the player then deals amplified damage for the configured duration.

Reach for this device when you want to:

  • Reward skill — spawn a high-multiplier pickup after a player gets an elimination streak.
  • Create timed power windows — grant the buff directly to all players at the start of a round.
  • Build dynamic difficulty — lower or raise the multiplier mid-match based on score.
  • Gate progression — despawn the pickup until a puzzle is solved, then spawn it as the prize.

Because SetMagnitude and SetDuration only affect future pickups (not currently active effects), you must configure them before the player picks up the item or before you call Pickup.

API Reference

damage_amplifier_powerup_device

Used to amplify an agent's damage temporarily. This applies to any weapon the agent is using at the time of the powerup.

Full public surface, resolved verbatim from the live Epic digest (Fortnite.digest.verse). Inherited members are merged from powerup_device.

damage_amplifier_powerup_device<public> := class<concrete><final>(powerup_device):

Events (subscribe a handler to react):

Event Signature Description
ItemPickedUpEvent ItemPickedUpEvent<public>:listenable(agent) Signaled when the powerup is picked up by an agent. Sends the agent that picked up the powerup.

Methods (call these to make the device act):

Method Signature Description
SetMagnitude SetMagnitude<public>(Magnitude:float):void Sets the Magnitude for this powerup, clamped to the Min and Max defined in the device. Will not apply to any currently applied effects. For the Damage Amplifier Powerup, this is the damage multiplier.
GetMagnitude GetMagnitude<public>()<transacts>:float Returns the current Magnitude for the powerup. For the Damage Amplifier Powerup, this is the damage multiplier.
Spawn Spawn<public>():void Spawns the powerup into the experience so users can interact with it.
Despawn Despawn<public>():void Despawns this powerup from the experience.
SetDuration SetDuration<public>(Time:float):void Updates the Duration for this powerup, clamped to the Min and Max defined in the device. Will not apply to any currently applied effects.
GetDuration GetDuration<public>()<transacts>:float Returns the Duration that this powerup will be active for on any player it is applied to.
GetRemainingTime GetRemainingTime<public>(Agent:agent)<transacts>:float If the Agent has the effect applied to them, this will return the remaining time the effect has. Returns -1.0 if the effect has an infinite duration. Returns 0.0 if the Agent does not have the effect applied.
HasEffect HasEffect<public>(Agent:agent)<transacts><decides>:void Returns the Agent has the powerup's effect (or another of the same type) applied to them.
IsSpawned IsSpawned<public>()<transacts><decides>:void Succeeds if the powerup is currently spawned.
Pickup Pickup<public>(Agent:agent):void Grants this powerup to Agent.
Pickup Pickup<public>():void Grants this powerup without an agent reference. Requires Apply To set to All Players.

powerup_device

Base class for various powerup devices offering common events like ItemPickedUpEvent.

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

powerup_device<public> := class<abstract><epic_internal>(creative_device_base):

Events (subscribe a handler to react):

Event Signature Description
ItemPickedUpEvent ItemPickedUpEvent<public>:listenable(agent) Signaled when the powerup is picked up by an agent. Sends the agent that picked up the powerup.

Methods (call these to make the device act):

Method Signature Description
Spawn Spawn<public>():void Spawns the powerup into the experience so users can interact with it.
Despawn Despawn<public>():void Despawns this powerup from the experience.
SetDuration SetDuration<public>(Time:float):void Updates the Duration for this powerup, clamped to the Min and Max defined in the device. Will not apply to any currently applied effects.
GetDuration GetDuration<public>()<transacts>:float Returns the Duration that this powerup will be active for on any player it is applied to.
GetRemainingTime GetRemainingTime<public>(Agent:agent)<transacts>:float If the Agent has the effect applied to them, this will return the remaining time the effect has. Returns -1.0 if the effect has an infinite duration. Returns 0.0 if the Agent does not have the effect applied.
HasEffect HasEffect<public>(Agent:agent)<transacts><decides>:void Returns the Agent has the powerup's effect (or another of the same type) applied to them.
IsSpawned IsSpawned<public>()<transacts><decides>:void Succeeds if the powerup is currently spawned.
Pickup Pickup<public>(Agent:agent):void Grants this powerup to Agent.
Pickup Pickup<public>():void Grants this powerup without an agent reference. Requires Apply To set to All Players.

Walkthrough

Scenario: A boss arena. When the boss phase starts, a Damage Amplifier spawns in the center. The first player to grab it gets a 3× damage buff for 15 seconds. A HUD message announces who grabbed it, and a second amplifier is granted to every remaining player 10 seconds later as a catch-up mechanic.

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

# Localized message helper
PickupAnnounce<localizes>(Name : string) : message = "Power surge: {Name} grabbed the amplifier!"
CatchupAnnounce<localizes>() : message = "Catch-up boost granted to all remaining players!"

boss_arena_manager := class(creative_device):

    # Wire this to your Damage Amplifier Powerup device in the Details panel
    @editable
    Amplifier : damage_amplifier_powerup_device = damage_amplifier_powerup_device{}

    # Wire this to a second Damage Amplifier Powerup device (Apply To = All Players)
    @editable
    CatchupAmplifier : damage_amplifier_powerup_device = damage_amplifier_powerup_device{}

    # Wire this to a HUD Message device to display announcements
    @editable
    HUDMessage : hud_message_device = hud_message_device{}

    # Wire this to a trigger_device that fires when the boss phase begins
    @editable
    BossPhaseTrigger : trigger_device = trigger_device{}

    OnBegin<override>()<suspends> : void =
        # Configure the main amplifier before spawning
        Amplifier.SetMagnitude(3.0)   # 3× damage multiplier
        Amplifier.SetDuration(15.0)   # lasts 15 seconds

        # Configure the catch-up amplifier
        CatchupAmplifier.SetMagnitude(2.0)  # 2× for latecomers
        CatchupAmplifier.SetDuration(10.0)

        # Keep the amplifier hidden until the boss phase starts
        Amplifier.Despawn()
        CatchupAmplifier.Despawn()

        # Listen for the boss phase trigger
        BossPhaseTrigger.TriggeredEvent.Subscribe(OnBossPhaseStart)

        # Listen for someone picking up the main amplifier
        Amplifier.ItemPickedUpEvent.Subscribe(OnAmplifierPickedUp)

    # Called when the boss phase trigger fires
    OnBossPhaseStart(Agent : ?agent) : void =
        # Spawn the amplifier into the world so players can grab it
        if (not Amplifier.IsSpawned[]):
            Amplifier.Spawn()

    # Called when a player picks up the main amplifier
    OnAmplifierPickedUp(PickupAgent : agent) : void =
        # Confirm the effect is now active on this agent
        if (Amplifier.HasEffect[PickupAgent]):
            # Show how long they have left (should be ~15 s right after pickup)
            Remaining := Amplifier.GetRemainingTime(PickupAgent)
            # Announce the pickup — in a real project you'd resolve the player name
            # via a player_ui or name tag device; here we show the pattern
            HUDMessage.Show()

        # 10 seconds later, grant a catch-up buff to everyone else via Pickup()
        # Pickup() with no agent requires "Apply To = All Players" in the device settings
        spawn { DelayCatchupGrant() }

    DelayCatchupGrant()<suspends> : void =
        Sleep(10.0)
        if (not CatchupAmplifier.IsSpawned[]):
            CatchupAmplifier.Spawn()
        CatchupAmplifier.Pickup()   # grants to ALL players (Apply To = All Players)

Line-by-line explanation

Lines What's happening
SetMagnitude(3.0) Sets the damage multiplier to 3×. Clamped to the Min/Max you set in the Details panel.
SetDuration(15.0) The buff lasts 15 seconds after pickup.
Amplifier.Despawn() Hides the pickup on match start so it only appears during the boss phase.
BossPhaseTrigger.TriggeredEvent.Subscribe(OnBossPhaseStart) Subscribes to the trigger; OnBossPhaseStart receives ?agent.
Amplifier.IsSpawned[] Failable — succeeds only if the device is currently in the world. Used in an if guard.
Amplifier.Spawn() Materialises the pickup in the world at its placed location.
Amplifier.ItemPickedUpEvent.Subscribe(OnAmplifierPickedUp) Fires whenever any player grabs the pickup; sends the agent directly (not ?agent).
Amplifier.HasEffect[PickupAgent] Failable check — succeeds if the buff is active on that agent right now.
Amplifier.GetRemainingTime(PickupAgent) Returns seconds left; −1.0 = infinite, 0.0 = no effect.
CatchupAmplifier.Pickup() Grants the buff to all players at once (requires Apply To = All Players in Details).

Common patterns

Pattern 1 — Dynamic multiplier based on player count

Scale the damage multiplier up as the lobby shrinks, rewarding survivors.

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

scaling_amplifier_manager := class(creative_device):

    @editable
    Amplifier : damage_amplifier_powerup_device = damage_amplifier_powerup_device{}

    # Wire to an elimination manager or player counter trigger
    @editable
    EliminationTrigger : trigger_device = trigger_device{}

    var AliveCount : int = 16

    OnBegin<override>()<suspends> : void =
        EliminationTrigger.TriggeredEvent.Subscribe(OnElimination)
        Amplifier.Spawn()

    OnElimination(Agent : ?agent) : void =
        set AliveCount = AliveCount - 1
        # Increase multiplier as players are eliminated
        NewMagnitude : float =
            if (AliveCount <= 4) then 3.0
            else if (AliveCount <= 8) then 2.0
            else 1.5
        Amplifier.SetMagnitude(NewMagnitude)
        # Log current configured multiplier for debugging
        CurrentMag := Amplifier.GetMagnitude()
        # Respawn the pickup so the new magnitude takes effect on next grab
        if (Amplifier.IsSpawned[]):
            Amplifier.Despawn()
        Amplifier.Spawn()

Key calls: SetMagnitude, GetMagnitude, IsSpawned[], Despawn, Spawn.


Pattern 2 — Grant the buff directly to a specific player on a button press

A vending-machine style interaction: player presses a button and instantly receives the buff.

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

vending_amplifier := class(creative_device):

    @editable
    Amplifier : damage_amplifier_powerup_device = damage_amplifier_powerup_device{}

    # A button_device the player interacts with to purchase the buff
    @editable
    PurchaseButton : button_device = button_device{}

    OnBegin<override>()<suspends> : void =
        # Keep the world pickup despawned — we grant programmatically
        Amplifier.Despawn()
        Amplifier.SetDuration(20.0)
        Amplifier.SetMagnitude(2.5)

        PurchaseButton.InteractedWithEvent.Subscribe(OnPurchase)

    OnPurchase(Agent : agent) : void =
        # Only grant if the player doesn't already have the effect
        if (not Amplifier.HasEffect[Agent]):
            Amplifier.Pickup(Agent)   # grants directly to this specific agent
        # If they already have it, check remaining time
        else:
            TimeLeft := Amplifier.GetRemainingTime(Agent)
            # TimeLeft > 0 means the buff is ticking; -1.0 means infinite

Key calls: SetDuration, SetMagnitude, HasEffect[], Pickup(Agent), GetRemainingTime.


Pattern 3 — Timed respawn loop

The amplifier respawns 30 seconds after it is picked up, creating a recurring power-up cycle.

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

respawning_amplifier := class(creative_device):

    @editable
    Amplifier : damage_amplifier_powerup_device = damage_amplifier_powerup_device{}

    OnBegin<override>()<suspends> : void =
        Amplifier.SetMagnitude(2.0)
        Amplifier.SetDuration(10.0)
        Amplifier.Spawn()
        Amplifier.ItemPickedUpEvent.Subscribe(OnPickedUp)

    OnPickedUp(Agent : agent) : void =
        spawn { RespawnAfterDelay() }

    RespawnAfterDelay()<suspends> : void =
        Sleep(30.0)
        # Only respawn if it hasn't somehow been spawned again already
        if (not Amplifier.IsSpawned[]):
            Amplifier.Spawn()

Key calls: ItemPickedUpEvent, IsSpawned[], Spawn.

Gotchas

1. SetMagnitude and SetDuration don't affect active buffs

These setters only influence the next pickup. If a player already has the effect running, changing the magnitude won't alter their current buff. Despawn and respawn the device (or let the current effect expire) before the new values matter.

2. IsSpawned[] and HasEffect[] are failable — use them inside if

Both methods carry <decides>, meaning they fail (rather than return false) when the condition isn't met. Always call them inside an if expression:

# Correct
if (Amplifier.IsSpawned[]):
    Amplifier.Despawn()

# Wrong — compile error, decides functions can't be called as statements
# Amplifier.IsSpawned[]

3. ItemPickedUpEvent sends agent, not ?agent

Unlike some device events that send ?agent, ItemPickedUpEvent on powerup_device sends a plain agent directly to the handler. Your handler signature must be (Agent : agent), not (Agent : ?agent). No unwrapping needed.

4. Pickup() (no-arg) requires Apply To = All Players in the Details panel

If you call Pickup() without an agent and the device isn't configured for All Players, the call silently does nothing. Use Pickup(Agent : agent) for targeted grants.

5. GetRemainingTime return values

  • Returns the seconds remaining if the effect is active.
  • Returns -1.0 if the duration is set to Infinite.
  • Returns 0.0 if the agent does not have the effect — not a failure, just zero. Check HasEffect[] first if you need to distinguish "no effect" from "just expired".

6. Magnitude is clamped by the Details panel

SetMagnitude is clamped to the Min and Max values you configure in the UEFN Details panel for the device. If your Verse call seems to have no effect, check that your target value falls within those bounds.

Guides & scripts that use damage_amplifier_powerup_device

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

Build your own lesson with damage_amplifier_powerup_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 →