diff --git a/OpenRA.Mods.Cnc/Traits/PoisonedByTiberium.cs b/OpenRA.Mods.Cnc/Traits/PoisonedByTiberium.cs index 8671fbd209..e0e00986cb 100644 --- a/OpenRA.Mods.Cnc/Traits/PoisonedByTiberium.cs +++ b/OpenRA.Mods.Cnc/Traits/PoisonedByTiberium.cs @@ -24,16 +24,20 @@ namespace OpenRA.Mods.Cnc.Traits public WeaponInfo WeaponInfo { get; private set; } - public override object Create(ActorInitializer init) { return new PoisonedByTiberium(this); } + public override object Create(ActorInitializer init) { return new PoisonedByTiberium(init, this); } public void RulesetLoaded(Ruleset rules, ActorInfo ai) { WeaponInfo = rules.Weapons[Weapon.ToLowerInvariant()]; } } class PoisonedByTiberium : UpgradableTrait, ITick, ISync { + readonly ResourceLayer rl; [Sync] int poisonTicks; - public PoisonedByTiberium(PoisonedByTiberiumInfo info) - : base(info) { } + public PoisonedByTiberium(ActorInitializer init, PoisonedByTiberiumInfo info) + : base(info) + { + rl = init.Self.World.WorldActor.Trait(); + } public void Tick(Actor self) { @@ -44,7 +48,6 @@ namespace OpenRA.Mods.Cnc.Traits if (!self.IsInWorld) return; - var rl = self.World.WorldActor.Trait(); var r = rl.GetResource(self.Location); if (r == null || !Info.Resources.Contains(r.Info.Name)) return; diff --git a/OpenRA.Mods.Common/Scripting/Properties/MobileProperties.cs b/OpenRA.Mods.Common/Scripting/Properties/MobileProperties.cs index be72ca8dbf..d4fb9271b1 100644 --- a/OpenRA.Mods.Common/Scripting/Properties/MobileProperties.cs +++ b/OpenRA.Mods.Common/Scripting/Properties/MobileProperties.cs @@ -53,7 +53,7 @@ namespace OpenRA.Mods.Common.Scripting [Desc("Leave the current position in a random direction.")] public void Scatter() { - Self.Trait().Nudge(Self, Self, true); + mobile.Nudge(Self, Self, true); } [ScriptActorPropertyActivity] diff --git a/OpenRA.Mods.Common/Traits/Repairable.cs b/OpenRA.Mods.Common/Traits/Repairable.cs index 403c6cebee..5f6d604644 100644 --- a/OpenRA.Mods.Common/Traits/Repairable.cs +++ b/OpenRA.Mods.Common/Traits/Repairable.cs @@ -20,7 +20,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("This actor can be sent to a structure for repairs.")] - class RepairableInfo : ITraitInfo, Requires + class RepairableInfo : ITraitInfo, Requires, Requires { public readonly HashSet RepairBuildings = new HashSet { "fix" }; @@ -33,12 +33,14 @@ namespace OpenRA.Mods.Common.Traits { readonly RepairableInfo info; readonly Health health; + readonly IMove movement; readonly AmmoPool[] ammoPools; public Repairable(Actor self, RepairableInfo info) { this.info = info; health = self.Trait(); + movement = self.Trait(); ammoPools = self.TraitsImplementing().ToArray(); } @@ -90,7 +92,6 @@ namespace OpenRA.Mods.Common.Traits if (!CanRepairAt(order.TargetActor) || (!CanRepair() && !CanRearm())) return; - var movement = self.Trait(); var target = Target.FromOrder(self.World, order); self.SetTargetLine(target, Color.Green);