Skip to content

Instantly share code, notes, and snippets.

@sclark39
Created August 11, 2023 13:53
Show Gist options
  • Save sclark39/1c4191a382f90ea6b90a41eff4ceded2 to your computer and use it in GitHub Desktop.
Save sclark39/1c4191a382f90ea6b90a41eff4ceded2 to your computer and use it in GitHub Desktop.
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
item_roller_device := class(creative_device):
@editable RollTime:float = 5.0
@editable PickupTimeout:float = 5.0
@editable RollCycleDelay:float = 0.1
@editable TriggerRoll:trigger_device = trigger_device{}
@editable ItemSpawner:item_spawner_device = item_spawner_device{}
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
TriggerRoll.TriggeredEvent.Subscribe(StartRoll)
StartRoll(MaybeAgent: ?agent):void =
if:
Agent := MaybeAgent?
then:
spawn:
Roll(Agent)
Roll(Agent: agent)<suspends>: void =
ItemSpawner.Enable()
Print("Enabled Item Spawner")
# Do Roll
race:
block:
Sleep(RollTime) # yields
loop:
Sleep(RollCycleDelay) # yields
ItemSpawner.CycleToNextItem()
Print("Box roll stopped. Awaiting next action... ")
# Wait for Pickup
race:
block:
ItemSpawner.ItemPickedUpEvent.Await() # yields
Print("Item Picked Up")
block:
Sleep(PickupTimeout) # yields
ItemSpawner.Disable()
Print("Disabled Item Spawner")
Roll2(Agent: agent)<suspends>: void =
ItemSpawner.Enable()
Print("Enabled Item Spawner")
race:
block:
# Watch for Pickup
ItemSpawner.ItemPickedUpEvent.Await() # yields
Print("Item Picked Up")
block:
# Do Roll
race:
block:
Sleep(RollTime) # yields
loop:
Sleep(RollCycleDelay) # yields
ItemSpawner.CycleToNextItem()
Print("Box roll stopped. Awaiting next action... ")
Sleep(PickupTimeout) # yields
ItemSpawner.Disable()
Print("Disabled Item Spawner")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment