DamagedEvent

event
DamagedEvent<public>: listenable(?agent)

Triggers when the turret is damaged. Sends the triggering `agent`. If the activator is a non-agent then `false` is returned.

Module
/Fortnite.com/Devices
Declared in
automated_turret_device
Source
fortnite

Used in

# OnBegin runs when the NPC enters the simulation. Wire up its damaged event.
    OnBegin<override>()<suspends> : void =
        if:
            Agent := GetAgent[]
            Character := Agent.GetFortCharacter[]
        then:
            Character.DamagedEvent().Subscribe(OnDamaged)
            Print("Villager is on patrol duty... nervously.")

    # When hit, run directly away from the instigator and stare them down.
    OnDamaged(Result : damage_result) : void =
        if:
            Agent := GetAgent[]
if (BossCharacter := BossAgent.GetFortCharacter[]):
                # Subscribe to the damage taken event on the fort_character.
                BossCharacter.DamagedEvent().Subscribe(OnTakeDamage)
                # Keep this behavior alive so the subscription stays active.
                loop:
                    Sleep(1.0)

    # STEP 3: HANDLE DAMAGE
    # This function is called by DamagedEvent every time the NPC takes damage.
# We subscribe each character's DamagedEvent after they spawn.
    # This helper is called from OnPlayerSpawned (see updated version below).
    OnPlayerDamaged(SpawnedAgent : agent) : void =
        # Cast to fort_character to access Hide/Show
        if (Character := SpawnedAgent.GetFortCharacter[]):
            # Start flickering on a new async task so this handler returns fast
            spawn { DoFlicker(SpawnedAgent, Character) }
WatchForDamage(Victim : agent, Character : fort_character)<suspends> : void =
        loop:
            # DamagedEvent fires each time this character takes damage
            Character.DamagedEvent().Await()
            # Run the flicker; when it finishes the loop waits for the next hit
            DoFlicker(Victim, Character)
SampleVerse / TntTagGameSAMPLE verse-source
for (Player : GetPlayspace().GetPlayers(), FortCharacter := Player.GetFortCharacter[]):
            FortCharacter.DamagedEvent().Subscribe(OnPlayerDamage)
        spawn { FollowLoop() }
        StartTrigger.TriggeredEvent.Subscribe(OnStartTrigger)
        StopTrigger.TriggeredEvent.Subscribe(OnStopTrigger)
        BillboardTimer.SetText(UIText("Waiting for game to start..."))
        Print("TNT tag device initialized successfully.")
TriadInfiltration / Invisibility verse-source
Logger.Print("Calling StartOrResetFlickering on a Teammate")
                        StartOrResetFlickering(Teammate)
                else:
                    # Just flicker the damaged character.
                    Logger.Print("Calling StartOrResetFlickering on InAgent")
                    StartOrResetFlickering(InAgent)
                FortCharacter.DamagedEvent().Await()

    # Starts a new flicker event if the agent was invisible, otherwise
    # resets the agent's ongoing flickering.
    StartOrResetFlickering(InAgent:agent):void=
        if (not IsFlickering[InAgent], FortCharacter := InAgent.GetFortCharacter[]):
            Logger.Print("Attempting to start NEW FlickerEvent for this character")
UITemplate / Materialblock Gameplay Device verse-source
# Subscribe to guard spawner events
        Spawner.SpawnedEvent.Subscribe(GuardSpawned)
        Spawner.AlertedEvent.Subscribe(GuardAlerted)
        Spawner.TargetLostEvent.Subscribe(GuardLostTarget)
        Spawner.SuspiciousEvent.Subscribe(GuardSuspicious)
        Spawner.UnawareEvent.Subscribe(GuardUnaware)
        Spawner.DamagedEvent.Subscribe(GuardDamaged)
        Spawner.EliminatedEvent.Subscribe(GuardEliminated)
        Spawner.EliminatingEvent.Subscribe(GuardEliminating)

        # Material block used for the enemy health radial
        RadialMaterialBlock := material_block:
            DefaultImage := RadialMeter
SaveSystem / Player Events verse-source
if (UsingPlayerEvents.GetDamagedResults.IsEnabled?):
            PlayerData.Subs.Add(Character.DamagedEvent().Subscribe(OnPlayerDamaged))

        # Subscribe to shield events
        if (UsingPlayerEvents.GetShieldDamagedResults.IsEnabled?):
            PlayerData.Subs.Add(Character.DamagedShieldEvent().Subscribe(OnPlayerShieldDamaged))
        if (UsingPlayerEvents.GetShieldHealedResults.IsEnabled?):
            PlayerData.Subs.Add(Character.HealedShieldEvent().Subscribe(OnPlayerShieldHealed))
JoustingGame / Jousting Actor Controller verse-source
SetupCargoSystem():void =
        CargoManipulator.DamagedEvent.Subscribe(OnCargoDamaged)
        CargoManipulator.DestroyedEvent.Subscribe(OnCargoDestroyed)
        if (EnableDebug?) then Logger.Print("Cargo system setup with {CargoConfig.Length} pieces")

    SpawnCargo():void =
        if (EnableDebug?) then Logger.Print("Spawning cargo")
        ClearCargo()
JoustingGame / Jousting Elephant Controller verse-source
SetupCargoSystem():void =
        # Subscribe to cargo prop manipulator events
        # Subscribe to PropManipulator events
        CargoManipulator.DamagedEvent.Subscribe(OnCargoDamaged)
        CargoManipulator.DestroyedEvent.Subscribe(OnCargoDestroyed)

        if (EnableDebug?) then Logger.Print("Cargo system setup with {CargoConfig.Length} pieces")

    SpawnCargo():void =
        if (EnableDebug?) then Logger.Print("Spawning cargo")