Untitled

 avatar
unknown
plain_text
a year ago
2.7 kB
13
Indexable
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }

health_boost_shop := class(creative_device):
    @editable
    LowHealthButton : conditional_button_device = conditional_button_device{}
    @editable
    MediumHealthButton : conditional_button_device = conditional_button_device{}
    @editable
    HighHealthButton : conditional_button_device = conditional_button_device{}

    @editable
    LowHealthBoost : float = 25.0
    @editable
    MediumHealthBoost : float = 50.0
    @editable
    HighHealthBoost : float = 100.0

    # Track current health tier for each agent (0=none, 1=low, 2=med, 3=high)
    var AgentHealthTier : [agent]int = map{}

    OnBegin<override>()<suspends>:void=
        LowHealthButton.ActivatedEvent.Subscribe(OnLowHealthPurchased)
        MediumHealthButton.ActivatedEvent.Subscribe(OnMediumHealthPurchased)
        HighHealthButton.ActivatedEvent.Subscribe(OnHighHealthPurchased)
        GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerSpawned)

    OnLowHealthPurchased(Agent : agent) : void =
        if (CanUpgradeToTier[Agent, 1]):
            ApplyHealthBoost(Agent, LowHealthBoost, 1)

    OnMediumHealthPurchased(Agent : agent) : void =
        if (CanUpgradeToTier[Agent, 2]):
            ApplyHealthBoost(Agent, MediumHealthBoost, 2)

    OnHighHealthPurchased(Agent : agent) : void =
        if (CanUpgradeToTier[Agent, 3]):
            ApplyHealthBoost(Agent, HighHealthBoost, 3)

    # Only allow upgrade if new tier is higher than current
    CanUpgradeToTier(Agent : agent, NewTier : int)<decides><transacts> : void =
        if (CurrentTier := AgentHealthTier[Agent]):
            NewTier > CurrentTier
        else:
            true

    ApplyHealthBoost(Agent : agent, BoostAmount : float, Tier : int) : void =
        if (Character := Agent.GetFortCharacter[]):
            Character.SetMaxHealth(BoostAmount)
            Character.SetHealth(BoostAmount)
            if (set AgentHealthTier[Agent] = Tier) {}
            Print("Health boost applied: {BoostAmount}, Tier: {Tier}")

    OnPlayerSpawned(Player : player) : void =
        if (set AgentHealthTier[Player] = 0) {}
        if (Character := Player.GetFortCharacter[]):
            Character.EliminatedEvent().Subscribe(OnPlayerEliminated)

    OnPlayerEliminated(Result : elimination_result) : void =
        Print ("Player Elim confirmed")
        if (Character := Result.EliminatedCharacter, Agent := Character.GetAgent[]):
            if (set AgentHealthTier[Agent] = 0) {}
Editor is loading...
Leave a Comment