[Bug] Self-Damage does not work in a UEFN project

6 months later, I just ended up using a Verse script to do it for me… not sure if it’s perfect but I got it to work in most cases.

using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
using { /Verse.org/Simulation/Tags }

#Make a custom tag for my prop manipulators
prop_manip_tag := class(tag){}

self_damage_device := class(creative_device):
    
    #Get my array of Spawners belonging to the Hunters.
    @editable
    HunterSpawners : []player_spawner_device = array{}
    #Get my array of Spawners belonging to the Props.
    @editable
    PropSpawners : []player_spawner_device = array{}
    #Get a teleporter device used to switch teams on the first round.
    @editable
    Round1TeamSwitch : teleporter_device = teleporter_device{}

    #Is this Player a Hunter? Should this be in a custom player script?
    var IsHunter : logic = false

    OnBegin<override>()<suspends>:void=
        #For every Hunter Spawner, subscribe to (OnHunterSpawn)
        for(HunterSpawner : HunterSpawners):
            HunterSpawner.SpawnedEvent.Subscribe(OnHunterSpawn)

        #For every Hunter Spawner, subscribe to (OnPropSpawn)
        for(PropSpawner : PropSpawners):
            PropSpawner.SpawnedEvent.Subscribe(OnPropSpawn)
        
        #If a prop decides to switch teams using the teleporter, make them a Hunter.
        Round1TeamSwitch.TeleportedEvent.Subscribe(OnHunterSpawn)

    OnHunterSpawn(Agent : agent) : void=
        set IsHunter = true
        Print("IsHunter = true")
        #Get all objects tagged with prop_manip_tag
        TaggedList := GetCreativeObjectsWithTag(prop_manip_tag{})
        for (TaggedActor : TaggedList):
            if(PropManip := prop_manipulator_device[TaggedActor]):
                #Prop manipulator can check if a prop has been damaged, so subscribe to that.
                PropManip.DamagedEvent.Subscribe(OnPropDamage)

    OnPropSpawn(Agent : agent) : void=
        Print("IsHunter = false")
        set IsHunter = false

    OnPropDamage(Agent : agent) : void =
        if (Player := Agent.GetFortCharacter[]):
            if(IsHunter = true):
                #An Agent has a FortCharacter attached, where the Damage method can be called! Adjust as needed.
                Player.Damage(0.5)

If anyone has tips or feedback please let me know.