Scout Spire: DestroyEvent is not working correctly

Summary

I tried to use new Scout Spire device, so I created a subscription for DestroyEvent in Verse and then I called it to do some functions that I have already working with newly added Spire Spike device. But for Scout Spire they are not working, even a simple “Print” is ignored.

I tried to do it as a solo editable or as an array, it was the same.

So I wanted to use a Channel device as an intermediate, but it was not working. Then I tried to use a Direct Event Binding for it, but it was not working. I tried also a Direct Event Binding to a Timer device (to simply start it when the Scout Spire is destroyed), but again without luck.

Then I added an Item Spawner device and set it to spawn an item via Direct Event Binding when Scout Spire device is destroyed and this scenario is working every time.

I also tried to Start the Timer device via Direct Event Binding based on “Scout Spire/On Activate” and it is also working normally. So there is some issue with the DestroyEvent / On Destroyed for a Scout Spire device.

Please select what you are reporting on:

Unreal Editor for Fortnite

What Type of Bug are you experiencing?

Devices

Steps to Reproduce

Add a Scout Spire device
Create a subscription for it: ScoutSpire.DestroyEvent.Subscribe(X1)
Try to do a simple “Print” when X1 is called
OR
Use Direct Event Binding to “On Destroyed” Event to Start a Timer device
Use Direct Event Binding to “On Destroyed” Event to Transmit a Channel device to execute some other functions

Expected Result

Verse code based on a subscription for a DestroyEvent is working
Connected devices like Timer and Channel via Direct Event Binding for “On Destroyed” are working

Observed Result

Verse code based on a subscription for a DestroyEvent is ignored
Connected devices like Timer and Channel via Direct Event Binding for “On Destroyed” are ignored

Platform(s)

UEFN v37.00, Windows 11

Hi @locutus are you still getting this? We’re having a hard time reproducing this here with your steps. Could we get some more info?

Thank you!

Hi Flak,

Yes, it is still the same after Update v37.10. So I just tried it also in a different map that I have only for testing purposes and it is happening there too. I did additional testing also with a Trigger device and I have more info when using Direct Binding:

Timer device (Applies to Player): Start / Scout Spire / On Destroyed
= Fail, Timer doesn’t start

Trigger device: Trigger / Scout Spire / On Destroyed
Timer Device (Applies to Player): Start / Trigger / On Triggered
= Fail, Timer doesn’t start, but VFX of activating a Trigger is played

Timer device (Applies to Everyone): Start / Scout Spire / On Destroyed
= OK, Timer starts everytime I destroy the Scout Spire

Trigger device: Trigger / Scout Spire / On Destroyed
Timer Device (Applies to Everyone): Start / Trigger / On Triggered
= OK, Timer starts everytime I destroy the Scout Spire (and VFX of activating a Trigger is played)

So the issue is in situations when the Event should include the “agent”, because otherwise it is working when there is no “agent” like with the Item Spawner. Or when I set up the Timer to be for All and not only for the specific Player. But in Verse I haven’t been able to create any function that would be running based on “ScoutSpire.DestroyEvent.Subscribe(X1)”.

And in Fortnite.digest.verse is nothing extra for this event, so I don’t know what is the problem:

# Triggers when the Spire is destroyed from damage or events 
#  \* Includes the \`agent\` that destroyed it, if any.
DestroyEvent<override>:listenable(?agent) = external {}

Because even a simple Print or spawning an item from Item Spawner is not doing anything:

A)
@editable ScoutSpire1 : scout_spire_device = scout_spire_device{}

ScoutSpire1.DestroyEvent.Subscribe(X1)

X1(InPlayer : ?agent) : void =
if (Agent := InPlayer?):
Print(“Scout Spire was Destroyed”, ?Duration := 5.0)

= Fail, message doesn’t appear.

B)
@editable ScoutSpire1 : scout_spire_device = scout_spire_device{}
@editable ItemSpawnerSS1 : item_spawner_device = item_spawner_device{}
@editable TriggerSS1 : trigger_device = trigger_device{}

ScoutSpire1.DestroyEvent.Subscribe(X1)
TriggerSS1.TriggeredEvent.Subscribe(X2)

X1(InPlayer : ?agent) : void =
if (Agent := InPlayer?):
TriggerSS1.Trigger(Agent)

X2(InPlayer : ?agent) : void =
if (Agent := InPlayer?):
ItemSpawnerSS1.SpawnItem()
Print(“Scout Spire was Destroyed”, ?Duration := 5.0)

= Fail, item doesn’t spawn, message doesn’t appear.

But when I do subscription to ActivateEvent, it is working normally (even for the Timer when it is set to “Applies To: Player” in the device settings):

C)
@editable ScoutSpire1 : scout_spire_device = scout_spire_device{}
@editable ItemSpawnerSS1 : item_spawner_device = item_spawner_device{}
@editable TimerSS1 : timer_device = timer_device{}

ScoutSpire1.ActivateEvent.Subscribe(A1)

A1(InPlayer : ?agent) : void =
if (Agent := InPlayer?):
ItemSpawnerSS1.SpawnItem()
TimerSS1.Start(Agent)
Print(“Scout Spire was Activated”, ?Duration := 5.0)

= OK, item does spawn, timer does start, message does appear.

Thank you so much!

FORT-956437’s status has changed to ‘Ready for QA’. A member of the QA department is investigating the issue.