Overview
The vehicle_spawner_quadcrasher_device is a specialized vehicle spawner that produces a Quadcrasher — the chunky, boost-and-bash ATV from Fortnite. It inherits everything from the abstract vehicle_spawner_device base class, so the same methods and events you learn here apply to every other vehicle spawner (sedan, big rig, surfboard, etc.).
Reach for this device when your game needs a drivable vehicle that you want to control from code: a race start gate that spawns each racer's ride, a respawn-on-death system that hands the player a fresh Quadcrasher, or a checkpoint that destroys an abandoned vehicle so the lane stays clear.
The key things it does for you:
- Spawn / respawn a Quadcrasher on cue (
RespawnVehicle). - Destroy the current vehicle (
DestroyVehicle). - Auto-seat a specific player as the driver (
AssignDriver). - Enable / Disable the spawner so players can or can't get a new ride.
- React when someone enters or exits, or when a vehicle spawns or is destroyed (
AgentEntersVehicleEvent,AgentExitsVehicleEvent,SpawnedEvent,DestroyedEvent).
API Reference
vehicle_spawner_quadcrasher_device
Specialized
vehicle_spawner_devicethat allows a Quadcrasher to be configured and spawned.
Full public surface, resolved verbatim from the live Epic digest (Fortnite.digest.verse). Inherited members are merged from vehicle_spawner_device.
vehicle_spawner_quadcrasher_device<public> := class<concrete><final>(vehicle_spawner_device):
Events (subscribe a handler to react):
| Event | Signature | Description |
|---|---|---|
AgentEntersVehicleEvent |
AgentEntersVehicleEvent<public>:listenable(agent) |
Signaled when an agent enters the vehicle. Sends the agent that entered the vehicle. |
AgentExitsVehicleEvent |
AgentExitsVehicleEvent<public>:listenable(agent) |
Signaled when an agent exits the vehicle. Sends the agent that exited the vehicle. |
SpawnedEvent |
SpawnedEvent<public>:listenable(fort_vehicle) |
Signaled when a vehicle is spawned or respawned by this device. Sends the fort_vehicle who was spawned. |
VehicleSpawnedEvent |
VehicleSpawnedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is spawned or respawned by this device. Deprecated, use SpawnedEvent instead. |
VehicleDestroyedEvent |
VehicleDestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. Deprecated, use DestroyedEvent instead. |
DestroyedEvent |
DestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. |
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. |
AssignDriver |
AssignDriver<public>(Agent:agent):void |
Sets agent as the vehicle's driver. |
DestroyVehicle |
DestroyVehicle<public>():void |
Destroys the vehicle if it exists. |
RespawnVehicle |
RespawnVehicle<public>():void |
Spawns a new vehicle. The previous vehicle will be destroyed before a new vehicle spawns. |
vehicle_spawner_device
Base class for various specialized vehicle spawners which allow specific vehicle types to be spawned and configured with specialized options.
Full public surface, resolved verbatim from the live Epic digest (Fortnite.digest.verse).
vehicle_spawner_device<public> := class<abstract><epic_internal>(creative_device_base):
Events (subscribe a handler to react):
| Event | Signature | Description |
|---|---|---|
AgentEntersVehicleEvent |
AgentEntersVehicleEvent<public>:listenable(agent) |
Signaled when an agent enters the vehicle. Sends the agent that entered the vehicle. |
AgentExitsVehicleEvent |
AgentExitsVehicleEvent<public>:listenable(agent) |
Signaled when an agent exits the vehicle. Sends the agent that exited the vehicle. |
SpawnedEvent |
SpawnedEvent<public>:listenable(fort_vehicle) |
Signaled when a vehicle is spawned or respawned by this device. Sends the fort_vehicle who was spawned. |
VehicleSpawnedEvent |
VehicleSpawnedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is spawned or respawned by this device. Deprecated, use SpawnedEvent instead. |
VehicleDestroyedEvent |
VehicleDestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. Deprecated, use DestroyedEvent instead. |
DestroyedEvent |
DestroyedEvent<public>:listenable(tuple()) |
Signaled when a vehicle is destroyed. |
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. |
AssignDriver |
AssignDriver<public>(Agent:agent):void |
Sets agent as the vehicle's driver. |
DestroyVehicle |
DestroyVehicle<public>():void |
Destroys the vehicle if it exists. |
RespawnVehicle |
RespawnVehicle<public>():void |
Spawns a new vehicle. The previous vehicle will be destroyed before a new vehicle spawns. |
Walkthrough
Let's build a race-start podium. When a player steps on a trigger, we respawn a clean Quadcrasher and instantly seat that player as the driver. We also track when they climb out (e.g. they bailed) and clear the vehicle so the lane is ready for the next racer.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Vehicles }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# A race-start podium that spawns a Quadcrasher and seats the player who triggers it.
race_start_device := class(creative_device):
# Drag your Quadcrasher spawner into this slot in the Details panel.
@editable
QuadSpawner : vehicle_spawner_quadcrasher_device = vehicle_spawner_quadcrasher_device{}
# The trigger players step on to claim a ride.
@editable
StartTrigger : trigger_device = trigger_device{}
OnBegin<override>()<suspends>:void =
# Subscribe our handlers to the device events.
StartTrigger.TriggeredEvent.Subscribe(OnPlayerReady)
QuadSpawner.SpawnedEvent.Subscribe(OnVehicleSpawned)
QuadSpawner.AgentEntersVehicleEvent.Subscribe(OnEntered)
QuadSpawner.AgentExitsVehicleEvent.Subscribe(OnExited)
# trigger_device hands us an ?agent — unwrap it before use.
OnPlayerReady(MaybeAgent : ?agent) : void =
if (Driver := MaybeAgent?):
# Spawn a fresh Quadcrasher (destroys any previous one first)...
QuadSpawner.RespawnVehicle()
# ...then seat this player in it.
QuadSpawner.AssignDriver(Driver)
# SpawnedEvent sends the fort_vehicle that was spawned.
OnVehicleSpawned(Vehicle : fort_vehicle) : void =
Print("A Quadcrasher spawned and is ready to drive.")
OnEntered(Agent : agent) : void =
Print("A racer boarded the Quadcrasher.")
OnExited(Agent : agent) : void =
# Player bailed — clear the vehicle so the lane is empty.
QuadSpawner.DestroyVehicle()
Line by line:
race_start_device := class(creative_device):— every placed Verse script is acreative_devicesubclass.- The two
@editablefields are how Verse reaches the placed devices. After you drop this script in the level, you assign your real Quadcrasher spawner and trigger in the Details panel. Without the@editablefield, callingQuadSpawner.RespawnVehicle()would fail with Unknown identifier. OnBegin<override>()<suspends>:void =runs when the game starts. This is where we wire up every event subscription.StartTrigger.TriggeredEvent.Subscribe(OnPlayerReady)— connects the trigger to our method.TriggeredEventis alistenable(?agent), so the handler receives a?agent.if (Driver := MaybeAgent?):unwraps the optional agent. Only inside this block do we have a realagentto work with.QuadSpawner.RespawnVehicle()spawns a new Quadcrasher; if one already existed, it is destroyed first. This guarantees a clean ride each time.QuadSpawner.AssignDriver(Driver)seats the triggering player directly in the driver seat — no walking up to the vehicle required.QuadSpawner.SpawnedEvent.Subscribe(OnVehicleSpawned)—SpawnedEventislistenable(fort_vehicle), soOnVehicleSpawnedtakes afort_vehicleparameter (the actual vehicle that appeared).OnExitedcallsDestroyVehicle()to remove the abandoned Quadcrasher.
Common patterns
Disable the spawner once a player is driving
Use Disable to prevent a fresh vehicle being created until the round resets, then Enable when it's time again.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
single_use_quad_device := class(creative_device):
@editable
QuadSpawner : vehicle_spawner_quadcrasher_device = vehicle_spawner_quadcrasher_device{}
OnBegin<override>()<suspends>:void =
# Lock it until a vehicle exists.
QuadSpawner.AgentEntersVehicleEvent.Subscribe(OnEntered)
QuadSpawner.AgentExitsVehicleEvent.Subscribe(OnExited)
OnEntered(Agent : agent) : void =
# Someone claimed it — no more spawns this round.
QuadSpawner.Disable()
Print("Quadcrasher claimed, spawner disabled.")
OnExited(Agent : agent) : void =
# Free again — let it produce another.
QuadSpawner.Enable()
Print("Quadcrasher free, spawner re-enabled.")
React to a destroyed vehicle and respawn it
DestroyedEvent fires when the Quadcrasher is wrecked. Here we automatically respawn a replacement after it blows up.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
auto_respawn_quad_device := class(creative_device):
@editable
QuadSpawner : vehicle_spawner_quadcrasher_device = vehicle_spawner_quadcrasher_device{}
OnBegin<override>()<suspends>:void =
QuadSpawner.DestroyedEvent.Subscribe(OnVehicleDestroyed)
# DestroyedEvent is listenable(tuple()) — handler takes no useful payload.
OnVehicleDestroyed() : void =
Print("Quadcrasher destroyed — spawning a replacement.")
# Wait a beat, then bring a fresh one back.
spawn { RespawnAfterDelay() }
RespawnAfterDelay()<suspends> : void =
Sleep(3.0)
QuadSpawner.RespawnVehicle()
A button that spawns a ride for whoever pressed it
Combine a button with RespawnVehicle + AssignDriver for an on-demand garage.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
quad_garage_device := class(creative_device):
@editable
QuadSpawner : vehicle_spawner_quadcrasher_device = vehicle_spawner_quadcrasher_device{}
@editable
GarageButton : button_device = button_device{}
OnBegin<override>()<suspends>:void =
GarageButton.InteractedWithEvent.Subscribe(OnPressed)
# button_device sends a plain agent (not an option).
OnPressed(Agent : agent) : void =
QuadSpawner.RespawnVehicle()
QuadSpawner.AssignDriver(Agent)
Gotchas
- You must declare the spawner as an
@editablefield. A barevehicle_spawner_quadcrasher_device{}literal is not the placed device. Drop your Verse script in the level and bind the real spawner in the Details panel, or none of the methods affect anything in-world. SpawnedEventvsVehicleSpawnedEvent.VehicleSpawnedEventandVehicleDestroyedEventare deprecated. UseSpawnedEvent(gives you thefort_vehicle) andDestroyedEvent. Don't write new code against the deprecated tuple events.- Event payload shapes differ.
AgentEntersVehicleEvent/AgentExitsVehicleEventgive a plainagent.SpawnedEventgives afort_vehicle. The deprecated andDestroyedevents arelistenable(tuple()), so their handlers take no parameters. Match your handler signature to the event or it won't compile. ?agentvsagent. Atrigger_device.TriggeredEventhands you a?agent— you must unwrap withif (A := MaybeAgent?):. But the vehicle spawner'sAgentEntersVehicleEventhands you a non-optionalagentdirectly. Don't add an unnecessary?unwrap to the vehicle events.RespawnVehicledestroys the old vehicle first. If a player is sitting in the current Quadcrasher and you callRespawnVehicle, their ride disappears under them. UseDestroyVehicledeliberately andRespawnVehicleonly when you want a clean slate.AssignDriverneeds a vehicle to exist. CallRespawnVehicle()first (or make sure one is spawned) beforeAssignDriver, otherwise there's no seat to put the player in.using { /Fortnite.com/Vehicles }is required to name thefort_vehicletype in yourSpawnedEventhandler. Forgetting it gives Unknown identifier: fort_vehicle.