using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
health_settings_device := class(creative_device):
@editable
HealthSettings: []health_setting = array{}
@editable
EliminationManager: elimination_manager_device = elimination_manager_device{}
@editable
ResetHealthOnElim: logic = true
var CurrentSettingsPerPlayer: [player]health_setting = map{}
OnBegin<override>()<suspends>:void=
Sleep(0.0)
DeviceSetup()
DeviceSetup(): void =
EliminationManager.EliminationEvent.Subscribe(SetHealthAndShield)
for (HealthSetting : HealthSettings):
HealthSetting.Init(Self)
GetAllPlayers(): []player =
AllPlayers := GetPlayspace().GetPlayers()
return AllPlayers
SetHealthAndShield(MaybeAgent: ?agent): void =
if:
Agent := MaybeAgent?
Player := player[Agent]
HealthSetting := CurrentSettingsPerPlayer[Player]
FortCharacter := Agent.GetFortCharacter[]
then:
FortCharacter.SetHealth(HealthSetting.Properties.MaxHealth)
FortCharacter.SetShield(HealthSetting.Properties.MaxShield)
health_setting := class<concrete>:
@editable
Trigger: trigger_device = trigger_device{}
@editable
AffectsAllPlayers: logic = true
@editable
Properties: health_setting_properties = health_setting_properties{}
var VerseDevice: health_settings_device = health_settings_device{}
Init(MainDevice: health_settings_device): void =
set VerseDevice = MainDevice
Trigger.TriggeredEvent.Subscribe(TriggerTriggered)
TriggerTriggered(MaybeAgent: ?agent): void =
if (Agent := MaybeAgent?):
AllPlayers := VerseDevice.GetAllPlayers()
if (AffectsAllPlayers?):
for (Player : AllPlayers, FortCharacter := Player.GetFortCharacter[]):
FortCharacter.AdjustHealthAndShield()
if {set VerseDevice.CurrentSettingsPerPlayer[Player] = Self}
else:
if (Player := player[Agent], FortCharacter := Agent.GetFortCharacter[]):
FortCharacter.AdjustHealthAndShield()
if {set VerseDevice.CurrentSettingsPerPlayer[Player] = Self}
(FortCharacter: fort_character).AdjustHealthAndShield(): void =
FortCharacter.SetMaxHealth(Properties.MaxHealth)
FortCharacter.SetMaxShield(Properties.MaxShield)
FortCharacter.SetHealth(Properties.StartingHealth)
FortCharacter.SetShield(Properties.StartingShield)
health_setting_properties := struct<concrete>:
@editable
MaxHealth: float = 100.0
@editable
MaxShield: float = 100.0
@editable
StartingHealth: float = 100.0
@editable
StartingShield: float = 100.0