Thank you very much. I have another question. I’m working on another Verse code, and I’m really struggling with it. It’s again about Health and Shield, but this time with a fixed value, meaning that when triggered, all players get the same health and shield. The problem is that when a player is eliminated and respawns, their health resets to 200 HP. Would it be possible for you to help me adjust my code so that the player retains the health they had selected before elimination, instead of it resetting
@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:
@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:
@editable
MaxHealth: float = 100.0
@editable
MaxShield: float = 100.0
@editable
StartingHealth: float = 100.0
@editable
StartingShield: float = 100.0