Hey i ran into a problem where i am useing a overshield and sprint verse code. and i use it in a map where there is two players but when i interact with eg the overshield trigger the player that interact with it have the same hp and shield before the interact, but player 2 have it reset to 100 health and 100 shield, can you help me so its not reseting for player 2 and will be the same as the player who interact with the triggers
my verse code
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
EachP := class():
Player: player
var CurrentMaxShield : float
var CurrentMaxHealth : float
SprintAndOvershield := class(creative_device):
@editable OverShield : trigger_device = trigger_device{}
@editable Sprint : trigger_device = trigger_device{}
var SprintEnabled : logic = false
var OvershieldEnabled : logic = false
@editable NoSprintNoOvershield : class_and_team_selector_device = class_and_team_selector_device{}
@editable NoSprintOvershield : class_and_team_selector_device = class_and_team_selector_device{}
@editable SprintNoOvershield : class_and_team_selector_device = class_and_team_selector_device{}
@editable SprintOvershield : class_and_team_selector_device = class_and_team_selector_device{}
@editable PlayerSpawner : []player_spawner_device = array{}
var PlayerMap : [player]EachP = map{}
OnBegin<override>()<suspends>:void =
for(Spawner:PlayerSpawner):
Spawner.SpawnedEvent.Subscribe(OnPlayerSpawned)
OverShield.TriggeredEvent.Subscribe(ToggleOvershield)
Sprint.TriggeredEvent.Subscribe(ToggleSprint)
NoSprintNoOvershield.ClassSwitchedEvent.Subscribe(ChangeHealthAndShield)
NoSprintOvershield.ClassSwitchedEvent.Subscribe(ChangeHealthAndShield)
SprintNoOvershield.ClassSwitchedEvent.Subscribe(ChangeHealthAndShield)
SprintOvershield.ClassSwitchedEvent.Subscribe(ChangeHealthAndShield)
GetPlayspace().PlayerRemovedEvent().Subscribe(OnPlayerLeft)
ChangeHealthAndShield(Agent:agent):void=
if(Player := player[Agent], ExistingPlayer := PlayerMap[Player], FC := Agent.GetFortCharacter[]):
FC.SetMaxShield(ExistingPlayer.CurrentMaxShield)
FC.SetMaxHealth(ExistingPlayer.CurrentMaxHealth)
ToggleOvershield(Agent : ?agent):void =
if(NewAgent := Agent?):
if(Player := player[NewAgent], PlayerExisting := PlayerMap[Player]):
if(FC := NewAgent.GetFortCharacter[]):
CurrentMaxShield := FC.GetMaxShield()
CurrentMaxHealth := FC.GetMaxHealth()
set PlayerExisting.CurrentMaxShield = CurrentMaxShield
set PlayerExisting.CurrentMaxHealth = CurrentMaxHealth
if (OvershieldEnabled?):
set OvershieldEnabled = false
else:
set OvershieldEnabled = true
SwitchPlayers()
ToggleSprint(Agent : ?agent):void =
if(NewAgent := Agent?):
if(Player := player[NewAgent], PlayerExisting := PlayerMap[Player]):
if(FC := NewAgent.GetFortCharacter[]):
CurrentMaxShield := FC.GetMaxShield()
CurrentMaxHealth := FC.GetMaxHealth()
set PlayerExisting.CurrentMaxShield = CurrentMaxShield
set PlayerExisting.CurrentMaxHealth = CurrentMaxHealth
if (SprintEnabled?):
set SprintEnabled = false
else:
set SprintEnabled = true
SwitchPlayers()
SwitchPlayers():void =
for (Player : GetPlayspace().GetPlayers(), FC := Player.GetFortCharacter[], Agent := FC.GetAgent[]):
if (SprintEnabled? and OvershieldEnabled?):
SprintOvershield.ChangeClass(Agent)
else if (not SprintEnabled? and OvershieldEnabled?):
NoSprintOvershield.ChangeClass(Agent)
else if (SprintEnabled? and not OvershieldEnabled?):
SprintNoOvershield.ChangeClass(Agent)
else if (not SprintEnabled? and not OvershieldEnabled?):
NoSprintNoOvershield.ChangeClass(Agent)
OnPlayerSpawned(Agent:agent):void =
if:
Player := player[Agent]
not EachP[Player]
FC := Agent.GetFortCharacter[]
then:
if(set PlayerMap[Player] = EachP{Player := Player, CurrentMaxShield:= FC.GetMaxShield(), CurrentMaxHealth := FC.GetMaxHealth()}):
OnPlayerLeft(Agent:agent):void=
if(Player := player[Agent]):
RemoveKeyFromMap(PlayerMap, Player)
RemoveKeyFromMap(OgMap:[player]EachP, Player:player):[player]EachP=
var NewMap:[player]EachP = map{}
for (Key -> Value : OgMap, Key <> Player):
set NewMap = ConcatenateMaps(NewMap, map{Key => Value})
return NewMap
Thanks