Verse Error

I found this free code online and it seems to be working for solos but it doesn’t work for teams even though it has a “useteam” function and team damage doesn’t track. By the way i know nothing about verse just hoping someone can be helpful and maybe re write it for me.

using { /Fortnite.com/Characters }
using { /Fortnite.com/Devices }
using { /Fortnite.com/Game }
using { /Fortnite.com/Teams }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

UTILS

TextToMessage(Text : string):message=“{Text}”

(MessageDevice : hud_message_device).SetText(Text : string):void=
MessageDevice.SetText(TextToMessage(Text))

UEFN snippets, by BrendannnD Sep 07, 2023 •Last Updated: Sep 07, 2023 #######################################################
(Map:[keytype]valuetype where keytype:subtype(comparable), valuetype:type).RemoveKey(ElementToRemove:keytype):[keytype]valuetype=
var NewMap:[keytype]valuetype = map{}
for (Key → Value : Map, Key <> ElementToRemove):
set NewMap = ConcatenateMaps(NewMap, map{Key => Value})
return NewMap

Surge Trigger Class

surge_start_trigger:= class:

@editable
Trigger:trigger_device = trigger_device{}

@editable
DamageThreshold:float = 150.0

@editable
PlayersAboveToActivate:int = 30

var Backref:VD_StormSurge = VD_StormSurge{}

Init(B:VD_StormSurge):void =
    set Backref = B
    Trigger.TriggeredEvent.Subscribe(OnTriggered)

OnTriggered(MaybePlayer:?agent):void =
    Backref.StartSurge(DamageThreshold,PlayersAboveToActivate)

Storm Surge Main Logic

VD_StormSurge := class(creative_device):

@editable
UseTeams:logic = false

@editable
StormSurgeDamageTickTimer:float = 5.0

@editable
StormSurgeDamageAmount:float = 10.0

@editable
StormSurgeStartTriggers:[]surge_start_trigger = array{}

@editable
StormSurgeGlobalEndTrigger:trigger_device = trigger_device{}

@editable
StormSurgeVFX:trigger_device = trigger_device{}

@editable
StormSurgeStarts_HMD:hud_message_device = hud_message_device {}

@editable
StormSurgeActive_HMD:hud_message_device = hud_message_device {}

@editable
StormSurgeAbove_HMD:hud_message_device = hud_message_device {}

@editable
StormSurgeBelow_HMD:hud_message_device = hud_message_device {}

@editable
GuardSpawners:[]guard_spawner_device = array{}

var PlayerDamageListeners:[player][]cancelable = map{}
var PlayersDamageDealt:[player]float = map{}
var TeamDamageDealt:[team]float = map{}
var CurrentThreshold:float = 0.0
var PlayerThreshold:int = 0
var MaybeTeamCollection:?fort_team_collection = false

OnBegin<override>()<suspends>:void=
    #populate teams
    if(UseTeams?):
        set MaybeTeamCollection = option{GetPlayspace().GetTeamCollection()}
        ZeroOutTeamDamage()
    #init players on game start
    for (InPlayer : GetPlayspace().GetPlayers()):
        OnPlayerAdded(InPlayer)
    #connect surge ends trigger
    StormSurgeGlobalEndTrigger.TriggeredEvent.Subscribe(EndSurge)
    #connect damaged guards
    for(GS:GuardSpawners):
        GS.SpawnedEvent.Subscribe(OnGuardSpawned)
    # Subscribe to new players joining the game
    GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
    GetPlayspace().PlayerRemovedEvent().Subscribe(OnPlayerRemoved)
    # Connect Surge Triggers
    for(T:StormSurgeStartTriggers):
        T.Init(Self)
    #process the storm surge loop
    loop:
        if:
            CurrentThreshold > 0.0
        then:
            ProcessStormSurge()

        #check if the player threshold is above or below
        Total := CountPlayersAlive()
        if(Total <= PlayerThreshold):
            EndSurge(false)

        Sleep(StormSurgeDamageTickTimer)

CountPlayersAlive():int =
    var Total:int = 0
    for(InPlayer : GetPlayspace().GetPlayers()):
        if(InPlayer.IsActive[]):
            set Total += 1
    Total

ProcessStormSurge()<suspends>:void =
    for(P->D:PlayersDamageDealt, F := P.GetFortCharacter[]):
        if(D < CurrentThreshold):
            F.Damage(StormSurgeDamageAmount)
            if(P.IsActive[]): #sleep and players loop, needs to check for the player if active
                StormSurgeVFX.Trigger(P)
                Sleep(0.1)

OnPlayerAdded(InPlayer:player):void =
    if:
        set PlayerDamageListeners[InPlayer] = array{}
        F := InPlayer.GetFortCharacter[]
    then:            
        L_HealthDamaged := F.DamagedEvent().Subscribe(OnDamagedEvent)
        L_ShieldDamaged := F.DamagedShieldEvent().Subscribe(OnDamagedEvent)
        #save for later
        if:
            set PlayerDamageListeners[InPlayer] += array{L_HealthDamaged}
            set PlayerDamageListeners[InPlayer] += array{L_ShieldDamaged}
    #add to map
    if:
        set PlayersDamageDealt[InPlayer] = 0.0

OnPlayerRemoved(InPlayer:player):void =
    #stop listening
    if:
        All_L := PlayerDamageListeners[InPlayer]
    then:
        for(L:All_L):
            L.Cancel()
    #remove from maps (listeners and surge damage dealt)
    set PlayerDamageListeners = PlayerDamageListeners.RemoveKey(InPlayer)
    set PlayersDamageDealt = PlayersDamageDealt.RemoveKey(InPlayer)

StartSurge(Threshold:float, PlayersAboveToActivate:int):void =
    Total := CountPlayersAlive()
    set PlayerThreshold = Total
    if:
        #above the player threshold
        Total > PlayersAboveToActivate
    then: 
        set CurrentThreshold = Threshold
        #clear out team damage
        ZeroOutTeamDamage()
        #clear all players damage
        for(P->D:PlayersDamageDealt):
            if:
                set PlayersDamageDealt[P] = 0.0
            then:
                IncreaseDamageCounter(P,0.0)
        #show UI
        StormSurgeStarts_HMD.Show()
        StormSurgeActive_HMD.Show()

ZeroOutTeamDamage():void =
    if(TeamCollection:=MaybeTeamCollection?):
        for(T:TeamCollection.GetTeams(),TeamDamageDealt[T] = 0):
            #zero out the team damage

EndSurge(MaybePlayer:?agent):void =
    set CurrentThreshold = 0.0
    set PlayerThreshold = 0
    #clear the UI layers is connected on the HUD devices via the clear layer event from StormSurgeGlobalEndTrigger

OnDamagedEvent(DamRes:damage_result):void =
    Print("Damaged event registered")
    # look for damage receiving player
    if:
        DamagedCharacter:fort_character = fort_character[DamRes.Target]
        DamagedAgent:agent = DamagedCharacter.GetAgent[]
        DamAmount:float = DamRes.Amount
    then:
        Print("Damaged event Resolved")
        # look for damage dealing player
        if:
            DamagingInstigator := DamRes.Instigator?
            DamagingAgent := DamagingInstigator.GetInstigatorAgent[]
            DamagingGameFortChar := DamagingAgent.GetFortCharacter[]
            DamagedAgent <> DamagingAgent
        then:
            #if the damaging entity was a player, add the threshold
            if:
                P := player[DamagingAgent]
            then:
                if(UseTeams?):
                    IncreaseTeamDamageCounter(P,DamAmount)
                else:
                    IncreaseDamageCounter(P,DamAmount)

OnGuardSpawned(GuardAgent:agent):void =
    if:
        F := GuardAgent.GetFortCharacter[]
    then:
        F.DamagedEvent().Subscribe(OnDamagedEvent)
        # TODO remove the listeners

IncreaseDamageCounter(InPlayer:player, Amount:float):void =
    if:
        set PlayersDamageDealt[InPlayer] += Amount
        CurDam := PlayersDamageDealt[InPlayer]
    then:
        Diff := Abs(CurrentThreshold - CurDam)
        #update the UI
        if:
            CurDam >= CurrentThreshold
            DiffInt := Round[Diff]
        then:
            StormSurgeAbove_HMD.SetText("ABOVE {DiffInt}")
            StormSurgeAbove_HMD.Show(InPlayer)
        else if:
            DiffInt := Round[Diff]
        then:
            StormSurgeBelow_HMD.SetText("BELOW {DiffInt}")
            StormSurgeBelow_HMD.Show(InPlayer)

IncreaseTeamDamageCounter(InTeamPlayer:player, Amount:float):void =
    if:
        TeamCollection:=MaybeTeamCollection?
        MyTeam := TeamCollection.GetTeam[InTeamPlayer]
        set TeamDamageDealt[MyTeam] += Amount
        TeamTotal := TeamDamageDealt[MyTeam]
    then:
        #update all team members
        for(A:TeamCollection.GetAgents[MyTeam], InPlayer:=player[A]):
            if:
                set PlayersDamageDealt[InPlayer] = TeamTotal
                CurDam := PlayersDamageDealt[InPlayer]
            then:
                Diff := Abs(CurrentThreshold - CurDam)
                #update the UI
                if:
                    CurDam >= CurrentThreshold
                    DiffInt := Round[Diff]
                then:
                    StormSurgeAbove_HMD.SetText("ABOVE {DiffInt}")
                    StormSurgeAbove_HMD.Show(InPlayer)
                else if:
                    DiffInt := Round[Diff]
                then:
                    StormSurgeBelow_HMD.SetText("BELOW {DiffInt}")
                    StormSurgeBelow_HMD.Show(InPlayer)