Fix NRE when ProvidesPrerequisite is defined on the player actor.

This commit is contained in:
Paul Chote
2017-11-26 16:52:50 +00:00
committed by reaperrr
parent ed67cea852
commit 8fea476a0d

View File

@@ -63,7 +63,13 @@ namespace OpenRA.Mods.Common.Traits
protected override void Created(Actor self)
{
techTree = self.Owner.PlayerActor.Trait<TechTree>();
// Special case handling is required for the Player actor.
// Created is called before Player.PlayerActor is assigned,
// so we must query other player traits from self, knowing that
// it refers to the same actor as self.Owner.PlayerActor
var playerActor = self.Info.Name == "player" ? self : self.Owner.PlayerActor;
techTree = playerActor.Trait<TechTree>();
Update();