diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index cc457ae3ef..9f371fdb52 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -330,7 +330,11 @@ namespace OpenRa.Game unit = new Actor(name, (1 / 24f * producer.CenterLocation).ToInt2(), player); var mobile = unit.traits.Get(); mobile.facing = 128; - mobile.QueueActivity(new Traits.Activities.Move(unit.Location + new int2(0, 3), 1)); + + var rp = producer.traits.GetOrDefault(); + var dest = rp != null ? rp.rallyPoint : (unit.Location + new int2(0, 3)); + + mobile.QueueActivity(new Traits.Activities.Move(dest, 1)); } world.Add( unit ); diff --git a/OpenRa.Game/GameRules/UnitInfo.cs b/OpenRa.Game/GameRules/UnitInfo.cs index 273041bbb9..fa1b1dec72 100755 --- a/OpenRa.Game/GameRules/UnitInfo.cs +++ b/OpenRa.Game/GameRules/UnitInfo.cs @@ -97,6 +97,7 @@ namespace OpenRa.Game.GameRules public readonly bool Repairable = true; public readonly int Storage = 0; public readonly bool Unsellable = false; + public readonly int[] DefaultRallyPoint = { 1, 3 }; public BuildingInfo(string name) : base(name) { } } diff --git a/OpenRa.Game/Traits/RallyPoint.cs b/OpenRa.Game/Traits/RallyPoint.cs index 22c1b0d63a..f8b2ca50f2 100644 --- a/OpenRa.Game/Traits/RallyPoint.cs +++ b/OpenRa.Game/Traits/RallyPoint.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using IjwFramework.Types; using OpenRa.Game.Graphics; +using OpenRa.Game.GameRules; namespace OpenRa.Game.Traits { @@ -14,7 +15,8 @@ namespace OpenRa.Game.Traits public RallyPoint(Actor self) { - rallyPoint = self.Location + new int2(1, 3); //self.unitInfo.RallyPoint; + var bi = (UnitInfo.BuildingInfo)self.unitInfo; + rallyPoint = self.Location + new int2(bi.DefaultRallyPoint[0], bi.DefaultRallyPoint[1]); anim = new Animation("flagfly"); anim.PlayRepeating("idle"); }