A Creative Device forged on Verse Island
Cold Front — The Wilderness Survival Tracker
forged by BizaNator ✓ compiles
◈ Forged at Professor AweShucks' Tinker Lab
III
✓
Compiles
Cold Front — The Wilderness Survival Tracker
Combines the Capture Area Device · Combines the Campfire Device
4 devices
professor-aweshucks says“Alright, tinkerer - here's your Wilderness Survival rig! Step into the capture zone and the HUD tells you you're in the wild; if the campfire isn't lit, the cold catches up every ten seconds with an exposure warning, and every full minute out there earns you a 'you survived!' shoutout. Light the campfire to shut off the exposure warnings and feel safe again, but don't get too comfortable - every 45 seconds a boulder rumbles a warning before it's released to chase anyone still caught in the open, and you'll get the all-clear once it crashes to a stop. Step out of the zone anytime to catch your breath, then dive back in to keep your survival streak going!”
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
# Professor AweShucks' Wilderness Survival Tracker
# Turns a capture area into a "cold wilderness" zone: staying out in it too long
# without a lit campfire triggers escalating exposure warnings, while a rigged
# boulder periodically threatens anyone still caught out in the open.
# Keep the fire lit to stay safe, and watch the HUD for warnings!
wilderness_survival_device := class(creative_device):
# The wilderness zone players must survive in
@editable
DangerZone:capture_area_device = capture_area_device{}
# The campfire that shelters players from exposure when lit
@editable
SafetyCampfire:campfire_device = campfire_device{}
# A rigged boulder that periodically threatens anyone caught in the open
@editable
ThreatBoulder:physics_boulder_device = physics_boulder_device{}
# HUD messages that report survival status to players
@editable
StatusHUD:hud_message_device = hud_message_device{}
# --- Runtime state ---
var PlayersInDanger:int = 0
var IsCampfireLit:logic = false
var SecondsSinceWarning:int = 0
var SecondsSurvived:int = 0
var SecondsSinceMinute:int = 0
var MinutesSurvived:int = 0
# --- HUD text builders (HUD text must be type `message`) ---
EnteredLine<localizes>():message = "You've entered the wilderness. Find the campfire before the cold gets you!"
ExitedLine<localizes>():message = "You're back to safety. The wild can wait."
SafeLine<localizes>():message = "The fire is roaring - you're safe and warm."
FireOutLine<localizes>():message = "The campfire has gone out! Cold is creeping back in..."
ExposureLine<localizes>(Seconds:int):message = "COLD EXPOSURE! {Seconds}s in the wild with no fire. Get warm!"
SurvivedLine<localizes>(Minutes:int):message = "You've survived {Minutes} minute(s) in the wilderness!"
BoulderWarnLine<localizes>():message = "RUMBLING... a boulder is about to break loose. RUN!"
BoulderReleaseLine<localizes>():message = "BOULDER INCOMING!"
BoulderClearedLine<localizes>():message = "The boulder crashed to a stop. The path is clear again... for now."
OnBegin<override>()<suspends>:void=
# Turn on the danger zone and the campfire so events start firing
DangerZone.Enable()
SafetyCampfire.Enable()
# Track who's out in the wild
DangerZone.AgentEntersEvent.Subscribe(OnEnterWild)
DangerZone.AgentExitsEvent.Subscribe(OnExitWild)
# Track the campfire's lit state - this is what keeps exposure at bay
SafetyCampfire.LitEvent.Subscribe(OnFireLit)
SafetyCampfire.ExtinguishedEvent.Subscribe(OnFireOut)
# A cleared boulder is good news - let players know the path is safe again
ThreatBoulder.RollingBoulderDestroyedEvent.Subscribe(OnBoulderCleared)
# Two parallel loops: one ticks the survival clock, one runs the boulder hazard
spawn{SurvivalClockLoop()}
spawn{BoulderHazardLoop()}
# Called whenever a player steps into the wilderness zone
OnEnterWild(Agent:agent):void=
set PlayersInDanger += 1
StatusHUD.Show(Agent, EnteredLine())
# Called whenever a player leaves the wilderness zone
OnExitWild(Agent:agent):void=
if (PlayersInDanger > 0):
set PlayersInDanger -= 1
StatusHUD.Show(Agent, ExitedLine())
# The campfire being lit removes the exposure threat for everyone nearby
OnFireLit(Agent:agent):void=
set IsCampfireLit = true
set SecondsSinceWarning = 0
StatusHUD.Show(Agent, SafeLine())
# If the fire goes out, exposure danger returns
OnFireOut(Agent:agent):void=
set IsCampfireLit = false
StatusHUD.Show(Agent, FireOutLine())
# A rolling boulder crashing to a stop means the threat has passed - for now
OnBoulderCleared():void=
for (Agent : DangerZone.GetAgentsInVolume()):
StatusHUD.Show(Agent, BoulderClearedLine())
# Ticks once per second. Tracks total time survived and warns about cold
# exposure if players are stuck in the wild with no lit campfire.
SurvivalClockLoop()<suspends>:void=
loop:
Sleep(1.0)
set SecondsSurvived += 1
set SecondsSinceWarning += 1
set SecondsSinceMinute += 1
# Only worry about exposure if someone is actually out there and the fire is cold
if (PlayersInDanger > 0 and not IsCampfireLit?):
if (SecondsSinceWarning >= 10):
set SecondsSinceWarning = 0
for (Agent : DangerZone.GetAgentsInVolume()):
StatusHUD.Show(Agent, ExposureLine(SecondsSurvived))
# Every full minute, celebrate the players still standing out there
if (SecondsSinceMinute >= 60):
set SecondsSinceMinute = 0
set MinutesSurvived += 1
if (PlayersInDanger > 0):
for (Agent : DangerZone.GetAgentsInVolume()):
StatusHUD.Show(Agent, SurvivedLine(MinutesSurvived))
# Every 45 seconds, warn players a boulder is about to break loose, then release it
BoulderHazardLoop()<suspends>:void=
loop:
Sleep(45.0)
if (PlayersInDanger > 0):
for (Agent : DangerZone.GetAgentsInVolume()):
StatusHUD.Show(Agent, BoulderWarnLine())
Sleep(3.0)
ThreatBoulder.ReleaseRollingBoulder()
for (Agent : DangerZone.GetAgentsInVolume()):
StatusHUD.Show(Agent, BoulderReleaseLine())
🌴 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.