Can’t figure out how to give a player anything after eliminating a custom zombie. I understand that the CustomPlayer.Collect would fail at the the end because the agent here is the custom zombie. Am I misunderstanding that? The code that displays the message from the HUD_Message_Device only displays if set to show all instead of triggering player.
CustomZombie_Manager := class(creative_device):
GameManager : Game_Manager = Game_Manager{}
@editable ZombieSpawners : []creature_spawner_device = array{}
@editable CustomProp1 : creative_prop_asset = DefaultCreativePropAsset
@editable ZombieElimCurrency : float = 5.0
@editable ElimMessage : hud_message_device = hud_message_device{}
@editable ElimTrigger : trigger_device = trigger_device{}
OnBegin<override>()<suspends>:void=
for(Spawner : ZombieSpawners):
Spawner.SpawnedEvent.Subscribe(OnSpawned)
ElimTrigger.TriggeredEvent.Subscribe(OnTriggered)
OnSpawned(ZombieAgent : agent) : void=
if(FC := ZombieAgent.GetFortCharacter[]):
FC.Hide()
if(NewProp := SpawnProp(CustomProp1 , FC.GetTransform().Translation, FC.GetTransform().Rotation)(0)?):
spawn:
TrackZombie(NewProp , ZombieAgent)
TrackZombie(Prop : creative_prop, Agent : agent)<suspends> : void=
if(FC := Agent.GetFortCharacter[]):
race:
block:
FC.EliminatedEvent().Await()
ElimTrigger.Trigger(Agent)
Prop.Dispose()
return
loop:
Sleep(0.0)
ZombiePos := FC.GetTransform().Translation
ZombieRot := FC.GetTransform().Rotation
spawn{Prop.MoveTo(ZombiePos,ZombieRot , 0.1)}
OnTriggered(Agent : ?agent):void=
ElimMessage.Show()
if(Player:= player[Agent?], CustomPlayer := GameManager.PlayersMap[Player]):
CustomPlayer.Collect(ZombieElimCurrency, "Resource2")