A Creative Device forged on Verse Island
Cinder's Boulder Gauntlet
forged by BizaNator ✓ compiles
◈ Forged at Cinder's Molten Forge
III
✓
Compiles
Cinder's Boulder Gauntlet
Combines the Trigger Device · Combines the Vehicle Spawner Boat Device
3 devices
cinder says“Here's your Boulder Gauntlet, forged fresh: step on the trigger and the boulder breaks loose behind you — sprint for the boat before your escape window runs out, and each wave you clear banks more points but gives you less time next round. Watch out, the boulder can smash your boat too, which costs you a life just like getting caught, though I rebuild the boat right away. When you're hurt, run back and light your campfire to mend a lost life, and if the forge ever claims all three of your lives, just step on the trigger again to rekindle your resolve and start the gauntlet fresh.”
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /UnrealEngine.com/Temporary/SpatialMath }
using { /UnrealEngine.com/Temporary/Diagnostics }
# ============================================================
# Cinder's Molten Forge — "The Boulder Gauntlet"
# - Step on the ArmTrigger to start a wave: the boulder is
# released and you must reach the escape boat before time runs out.
# - Each wave you survive banks points and speeds up the next one.
# - The boulder can also smash the boat itself — if that happens
# mid-chase, the wave fails and the boat is rebuilt.
# - The Campfire (mastered device) is your safe haven between runs:
# light it to restore a life you've lost.
# - Lose all your lives and the forge falls quiet — step on the
# trigger again to reforge your resolve and start over.
# ============================================================
molten_forge_gauntlet_device := class(creative_device):
# --- Equipped devices ---------------------------------------------
@editable
ArmTrigger : trigger_device = trigger_device{} # step here to start/retry a wave
@editable
BoatSpawner : vehicle_spawner_boat_device = vehicle_spawner_boat_device{} # escape route
@editable
Boulder : physics_boulder_device = physics_boulder_device{} # the rolling threat
# --- Mastered devices we borrow -------------------------------------
@editable
HUD : hud_message_device = hud_message_device{} # narration + feedback
@editable
Campfire : campfire_device = campfire_device{} # safe haven / life restore
# --- Tunables --------------------------------------------------------
@editable
StartingLives : int = 3
@editable
WaveClearBonus : int = 100
# --- Game state --------------------------------------------------------
# 0 = idle (ready to arm a wave), 1 = wave active (boulder loose), 2 = game over
var GameState : int = 0
var WaveNumber : int = 0
var Score : int = 0
var Lives : int = 3
var Escaped : logic = false
# --- Narration (localized HUD messages) ---------------------------------
WelcomeMsg<localizes>() : message = "Welcome to Cinder's Molten Forge! Step on the trigger to release the boulder — reach the boat before it catches you!"
WelcomeBackMsg<localizes>() : message = "The forge fire is rekindled. Your resolve is renewed — step on the trigger to try again!"
WaveStartMsg<localizes>(WaveNum : int) : message = "Wave {WaveNum} begins! The boulder breaks loose — get to the boat!"
EscapeSuccessMsg<localizes>(WaveNum : int, TotalScore : int) : message = "Escaped Wave {WaveNum}! Score: {TotalScore}"
CaughtMsg<localizes>(LivesLeft : int) : message = "The boulder got you! Lives remaining: {LivesLeft}"
BoatDestroyedMsg<localizes>() : message = "The boulder smashed your escape boat! It's being rebuilt now."
BaseDestroyedMsg<localizes>() : message = "The boulder's perch has crumbled — the forge falls silent."
GameOverMsg<localizes>(FinalScore : int) : message = "The forge claims you. Final Score: {FinalScore}. Step on the trigger to reforge and try again!"
WaveInProgressMsg<localizes>() : message = "A wave is already underway — get to the boat!"
CampfireHealMsg<localizes>(LivesNow : int) : message = "The forge fire restores your resolve! Lives: {LivesNow}"
CampfireFullMsg<localizes>() : message = "The forge fire warms you, but your resolve is already full."
# How long (seconds) the player has to reach the boat, tightening each wave.
EscapeWindowForWave(Wave : int) : float =
if (Wave >= 4):
6.0
else if (Wave = 3):
8.0
else if (Wave = 2):
10.0
else:
12.0
OnBegin<override>()<suspends> : void =
# Enable the two equipped interactive devices.
ArmTrigger.Enable()
BoatSpawner.Enable()
# Wire up all our event handlers.
ArmTrigger.TriggeredEvent.Subscribe(HandleArmTrigger)
BoatSpawner.AgentEntersVehicleEvent.Subscribe(HandleEscape)
BoatSpawner.DestroyedEvent.Subscribe(HandleBoatDestroyed)
Boulder.BaseDestroyedEvent.Subscribe(HandleBaseDestroyed)
Campfire.LitEvent.Subscribe(HandleCampfireLit)
set Lives = StartingLives
HUD.Show(WelcomeMsg())
# Stepping on the trigger arms the next wave, or restarts after a loss.
HandleArmTrigger(MaybeAgent : ?agent) : void =
if (Agent := MaybeAgent?):
if (GameState = 0):
StartWave()
else if (GameState = 2):
set Lives = StartingLives
set Score = 0
set WaveNumber = 0
set GameState = 0
HUD.Show(WelcomeBackMsg())
StartWave()
else:
HUD.Show(WaveInProgressMsg())
# Kicks off a wave: releases the boulder and starts the escape clock.
StartWave() : void =
set GameState = 1
set WaveNumber += 1
set Escaped = false
HUD.Show(WaveStartMsg(WaveNumber))
Boulder.ReleaseRollingBoulder()
spawn{ WaveCountdown(EscapeWindowForWave(WaveNumber)) }
# Runs concurrently with the wave; if time runs out before escape, you're caught.
WaveCountdown(Window : float)<suspends> : void =
Sleep(Window)
if (GameState = 1, Escaped = false):
FailWave()
# Called when the escape window expires or the boat is destroyed mid-chase.
FailWave() : void =
set GameState = 0
set Lives -= 1
HUD.Show(CaughtMsg(Lives))
Boulder.DestroyRollingBoulder()
if (Lives <= 0):
set GameState = 2
HUD.Show(GameOverMsg(Score))
# Reaching the boat during an active wave banks points and clears the wave.
HandleEscape(Agent : agent) : void =
if (GameState = 1):
set Escaped = true
set GameState = 0
Bonus := WaveNumber * WaveClearBonus
set Score += Bonus
HUD.Show(EscapeSuccessMsg(WaveNumber, Score))
Boulder.DestroyRollingBoulder()
# If the boulder smashes the boat mid-chase, the wave fails and the boat rebuilds.
HandleBoatDestroyed(Ignored : tuple()) : void =
if (GameState = 1):
HUD.Show(BoatDestroyedMsg())
FailWave()
BoatSpawner.RespawnVehicle()
# If the boulder's own perch is destroyed, no more waves can be released.
HandleBaseDestroyed(Ignored : tuple()) : void =
HUD.Show(BaseDestroyedMsg())
ArmTrigger.Disable()
# Lighting the campfire restores a lost life, up to your starting max.
HandleCampfireLit(Agent : agent) : void =
if (Lives < StartingLives):
set Lives += 1
HUD.Show(Agent, CampfireHealMsg(Lives))
else:
HUD.Show(Agent, CampfireFullMsg())
🌴 Forge your own free at verseisland.com — code U37ZN5F, credits for us both
🧭 Join with U37ZN5F — you both earn starter coconuts
🌴 Forged on Verse Island — free UEFN/Verse learning + a keeper’s Combine Lab.