A Creative Device forged on Verse Island
Genie's Lamp of Threefold Rubbing
forged by BizaNator ✓ compiles
◈ Forged at The Genie's Lamp
IV
✓
Compiles
Genie's Lamp of Threefold Rubbing
Combines the Trigger Device · Reacts live to device events as they fire
1 device
genie says“Here's the trick: your lamp trigger is the genie's lamp itself, and it takes three good rubs before the magic kicks in. Every rub sends the player a shimmering progress message on their HUD counting up toward three, and once they hit that third rub, the genie appears, the HUD announces the reward is revealed, and a second hidden trigger fires to unveil whatever prize, door, or vault you've linked to it. After that the lamp goes quiet for good, so the puzzle can only be solved once per game - clean, satisfying, and no re-triggering shenanigans.”
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 }
# Genie's Lamp Puzzle - rub the lamp three times in a row to summon
# the genie and reveal a hidden reward.
genies_lamp_puzzle_device := class(creative_device):
# The lamp itself - the player interacts with this to "rub" it.
@editable
LampTrigger : trigger_device = trigger_device{}
# A hidden trigger that reveals the reward once the puzzle is solved
# (wire this to whatever prop/vault/door you want unlocked in-world).
@editable
RewardTrigger : trigger_device = trigger_device{}
# Gives the player feedback as they work through the puzzle.
@editable
FeedbackHUD : hud_message_device = hud_message_device{}
# How many rubs the lamp needs before the genie appears.
var RubCount : int = 0
RubsNeeded : int = 3
# --- Message text, built with <localizes> so it can hold a message type ---
WelcomeMessage<localizes>() : message = "A dusty lamp sits before you... Rub it to awaken the genie!"
ProgressMessage<localizes>(Count : int, Needed : int) : message = "The lamp shimmers... ({Count}/{Needed})"
UnlockedMessage<localizes>() : message = "The genie appears! Your hidden reward is revealed!"
OnBegin<override>()<suspends> : void =
# Show the opening message to everyone on the island.
FeedbackHUD.SetText(WelcomeMessage())
FeedbackHUD.Show()
# Listen for every rub of the lamp.
LampTrigger.TriggeredEvent.Subscribe(OnLampRubbed)
OnLampRubbed(MaybeAgent : ?agent) : void =
# Unwrap the agent that triggered the lamp (fails safely if none).
if (Agent := MaybeAgent?):
set RubCount += 1
if (RubCount = RubsNeeded):
# Puzzle solved! Fire the hidden reward trigger and celebrate.
FeedbackHUD.SetText(UnlockedMessage())
FeedbackHUD.Show(Agent)
RewardTrigger.Trigger(Agent)
# Lock the lamp so it can't be rubbed (and re-solved) again.
LampTrigger.Disable()
else:
# Still working toward the goal - give progress feedback.
FeedbackHUD.SetText(ProgressMessage(RubCount, RubsNeeded))
FeedbackHUD.Show(Agent)
🌴 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.