From 8fea476a0dd98fdecec8f900d79e816e1ed40aa1 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 26 Nov 2017 16:52:50 +0000 Subject: [PATCH] Fix NRE when ProvidesPrerequisite is defined on the player actor. --- OpenRA.Mods.Common/Traits/Player/ProvidesPrerequisite.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Traits/Player/ProvidesPrerequisite.cs b/OpenRA.Mods.Common/Traits/Player/ProvidesPrerequisite.cs index 5cce4c346d..211362e82e 100644 --- a/OpenRA.Mods.Common/Traits/Player/ProvidesPrerequisite.cs +++ b/OpenRA.Mods.Common/Traits/Player/ProvidesPrerequisite.cs @@ -63,7 +63,13 @@ namespace OpenRA.Mods.Common.Traits protected override void Created(Actor self) { - techTree = self.Owner.PlayerActor.Trait(); + // 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(); Update();