diff --git a/OpenRa.Game/Traits/Chronoshiftable.cs b/OpenRa.Game/Traits/Chronoshiftable.cs index bbdbb88048..1427cb39d1 100644 --- a/OpenRa.Game/Traits/Chronoshiftable.cs +++ b/OpenRa.Game/Traits/Chronoshiftable.cs @@ -11,7 +11,7 @@ namespace OpenRa.Game.Traits // Return-to-sender logic int2 chronoshiftOrigin; int chronoshiftReturnTicks = 0; - + public Chronoshiftable(Actor self) { } public void Tick(Actor self) @@ -46,9 +46,14 @@ namespace OpenRa.Game.Traits var movement = self.traits.WithInterface().FirstOrDefault(); if (order.OrderString == "Chronoshift" && movement.CanEnterCell(order.TargetLocation)) { + + // Set up return-to-sender info chronoshiftOrigin = self.Location; chronoshiftReturnTicks = (int)(Rules.General.ChronoDuration * 60 * 25); + // TODO: Kill cargo if Rules.General.ChronoKillCargo says so + + // Set up the teleport Game.controller.CancelInputMode(); self.CancelActivity(); self.QueueActivity(new Activities.Teleport(order.TargetLocation)); @@ -56,6 +61,11 @@ namespace OpenRa.Game.Traits foreach (var a in Game.world.Actors.Where(a => a.traits.Contains())) a.traits.Get().DoChronoshift(); + + // Play chronosphere active anim + var chronosphere = Game.world.Actors.Where(a => a.Owner == order.Subject.Owner && a.traits.Contains()).FirstOrDefault(); + if (chronosphere != null) + chronosphere.traits.Get().PlayCustomAnim(chronosphere, "active"); } } diff --git a/units.ini b/units.ini index 5f54681c07..5b0d90121e 100644 --- a/units.ini +++ b/units.ini @@ -138,7 +138,7 @@ Recoil=3 [LST] Description=Transport WaterBound=yes -Traits=Unit, Mobile, RenderUnit, Chronoshiftable +Traits=Unit, Mobile, RenderUnit LongDesc=General-purpose naval transport.\nCan carry infantry and tanks.\n Unarmed [PT] Description=Gunboat