From 544e40ecab9e563d4ca33ad5affc99d96ed9fd74 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 8 Jan 2017 20:04:41 +0000 Subject: [PATCH 01/19] Fix CliffBackImpassibilityLayer trait name. --- .../Traits/World/CliffBackImpassabilityLayer.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs b/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs index 62cd1d3505..d7ac69f046 100644 --- a/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs @@ -21,14 +21,14 @@ namespace OpenRA.Mods.Common.Traits { public readonly string TerrainType = "Impassable"; - public object Create(ActorInitializer init) { return new CliffBackBlockingLayer(this); } + public object Create(ActorInitializer init) { return new CliffBackImpassabilityLayer(this); } } - class CliffBackBlockingLayer : IWorldLoaded + class CliffBackImpassabilityLayer : IWorldLoaded { readonly CliffBackImpassabilityLayerInfo info; - public CliffBackBlockingLayer(CliffBackImpassabilityLayerInfo info) + public CliffBackImpassabilityLayer(CliffBackImpassabilityLayerInfo info) { this.info = info; } From 7249ca7f88f59c03eb7f226687f84ff768df7606 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 13 Jan 2017 19:05:29 +0000 Subject: [PATCH 02/19] Add cell height display to map editor. --- .../Widgets/Logic/Editor/MapEditorLogic.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs index 7d92126cf7..501fffe9f5 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Editor/MapEditorLogic.cs @@ -86,7 +86,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic var coordinateLabel = widget.GetOrNull("COORDINATE_LABEL"); if (coordinateLabel != null) - coordinateLabel.GetText = () => worldRenderer.Viewport.ViewToWorld(Viewport.LastMousePos).ToString(); + { + coordinateLabel.GetText = () => + { + var cell = worldRenderer.Viewport.ViewToWorld(Viewport.LastMousePos); + var map = worldRenderer.World.Map; + var height = map.Height.Contains(cell) ? map.Height[cell] : 0; + return "{0},{1}".F(cell, height); + }; + } var cashLabel = widget.GetOrNull("CASH_LABEL"); if (cashLabel != null) From ba9927d34ee795d0a10986638bf9bb4a7d527083 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 10 Jan 2017 22:18:45 +0000 Subject: [PATCH 03/19] Add Condition support to WithDeathAnimation / DeathSounds. --- .../Traits/Render/WithDeathAnimation.cs | 11 +++++------ OpenRA.Mods.Common/Traits/Sound/DeathSounds.cs | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/Render/WithDeathAnimation.cs b/OpenRA.Mods.Common/Traits/Render/WithDeathAnimation.cs index 7de3a51334..b5588cbdf5 100644 --- a/OpenRA.Mods.Common/Traits/Render/WithDeathAnimation.cs +++ b/OpenRA.Mods.Common/Traits/Render/WithDeathAnimation.cs @@ -18,7 +18,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Render { [Desc("This actor has a death animation.")] - public class WithDeathAnimationInfo : ITraitInfo, Requires + public class WithDeathAnimationInfo : ConditionalTraitInfo, Requires { [Desc("Sequence prefix to play when this actor is killed by a warhead.")] [SequenceReference(null, true)] public readonly string DeathSequence = "die"; @@ -58,25 +58,24 @@ namespace OpenRA.Mods.Common.Traits.Render : new Dictionary(); } - public object Create(ActorInitializer init) { return new WithDeathAnimation(init.Self, this); } + public override object Create(ActorInitializer init) { return new WithDeathAnimation(init.Self, this); } } - public class WithDeathAnimation : INotifyKilled, INotifyCrushed + public class WithDeathAnimation : ConditionalTrait, INotifyKilled, INotifyCrushed { - public readonly WithDeathAnimationInfo Info; readonly RenderSprites rs; bool crushed; public WithDeathAnimation(Actor self, WithDeathAnimationInfo info) + : base(info) { - Info = info; rs = self.Trait(); } public void Killed(Actor self, AttackInfo e) { // Actors with Crushable trait will spawn CrushedSequence. - if (crushed) + if (crushed || IsTraitDisabled) return; var palette = Info.DeathSequencePalette; diff --git a/OpenRA.Mods.Common/Traits/Sound/DeathSounds.cs b/OpenRA.Mods.Common/Traits/Sound/DeathSounds.cs index 7938a53ba9..ece9345009 100644 --- a/OpenRA.Mods.Common/Traits/Sound/DeathSounds.cs +++ b/OpenRA.Mods.Common/Traits/Sound/DeathSounds.cs @@ -16,7 +16,7 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Sound { [Desc("Sounds to play when killed.")] - public class DeathSoundsInfo : ITraitInfo + public class DeathSoundsInfo : ConditionalTraitInfo { [Desc("Death notification voice.")] [VoiceReference] public readonly string Voice = "Die"; @@ -28,19 +28,21 @@ namespace OpenRA.Mods.Common.Traits.Sound "If empty, this will be used as the default sound for all death types.")] public readonly HashSet DeathTypes = new HashSet(); - public object Create(ActorInitializer init) { return new DeathSounds(this); } + public override object Create(ActorInitializer init) { return new DeathSounds(this); } } - public class DeathSounds : INotifyKilled + public class DeathSounds : ConditionalTrait, INotifyKilled { - readonly DeathSoundsInfo info; - - public DeathSounds(DeathSoundsInfo info) { this.info = info; } + public DeathSounds(DeathSoundsInfo info) + : base(info) { } public void Killed(Actor self, AttackInfo e) { - if (info.DeathTypes.Count == 0 || e.Damage.DamageTypes.Overlaps(info.DeathTypes)) - self.PlayVoiceLocal(info.Voice, info.VolumeMultiplier); + if (IsTraitDisabled) + return; + + if (Info.DeathTypes.Count == 0 || e.Damage.DamageTypes.Overlaps(Info.DeathTypes)) + self.PlayVoiceLocal(Info.Voice, Info.VolumeMultiplier); } } } From 171e558c0a2f238faae0ce0d1a97a37a042a0f1c Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 13 Jan 2017 19:18:09 +0000 Subject: [PATCH 04/19] Remove damaged bridge artwork from random tile selection. --- mods/ts/tilesets/snow.yaml | 24 ++++++++++++------------ mods/ts/tilesets/temperate.yaml | 24 ++++++++++++------------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/mods/ts/tilesets/snow.yaml b/mods/ts/tilesets/snow.yaml index 037a5629ba..bae5ff7e89 100644 --- a/mods/ts/tilesets/snow.yaml +++ b/mods/ts/tilesets/snow.yaml @@ -7580,7 +7580,7 @@ Templates: Template@296: Category: Bridges Id: 296 - Images: ovrps01.sno, ovrps01a.sno + Images: ovrps01.sno Size: 3, 5 Tiles: 0: Cliff @@ -7669,7 +7669,7 @@ Templates: Template@297: Category: Bridges Id: 297 - Images: ovrps02.sno, ovrps02a.sno + Images: ovrps02.sno Size: 3, 5 Tiles: 0: Cliff @@ -7758,7 +7758,7 @@ Templates: Template@298: Category: Bridges Id: 298 - Images: ovrps03.sno, ovrps03a.sno + Images: ovrps03.sno Size: 2, 5 Tiles: 0: Cliff @@ -7822,7 +7822,7 @@ Templates: Template@299: Category: Bridges Id: 299 - Images: ovrps04.sno, ovrps04a.sno + Images: ovrps04.sno Size: 5, 3 Tiles: 0: Cliff @@ -7911,7 +7911,7 @@ Templates: Template@300: Category: Bridges Id: 300 - Images: ovrps05.sno, ovrps05a.sno + Images: ovrps05.sno Size: 5, 3 Tiles: 0: Cliff @@ -8000,7 +8000,7 @@ Templates: Template@301: Category: Bridges Id: 301 - Images: ovrps06.sno, ovrps06a.sno + Images: ovrps06.sno Size: 5, 2 Tiles: 0: Cliff @@ -14328,7 +14328,7 @@ Templates: Template@695: Category: TrainBridges Id: 695 - Images: tovrps01.sno, tovrps01a.sno + Images: tovrps01.sno Size: 3, 5 Tiles: 0: Cliff @@ -14417,7 +14417,7 @@ Templates: Template@696: Category: TrainBridges Id: 696 - Images: tovrps02.sno, tovrps02a.sno + Images: tovrps02.sno Size: 3, 5 Tiles: 0: Cliff @@ -14506,7 +14506,7 @@ Templates: Template@697: Category: TrainBridges Id: 697 - Images: tovrps03.sno, tovrps03a.sno + Images: tovrps03.sno Size: 2, 5 Tiles: 0: Cliff @@ -14570,7 +14570,7 @@ Templates: Template@698: Category: TrainBridges Id: 698 - Images: tovrps04.sno, tovrps04a.sno + Images: tovrps04.sno Size: 5, 3 Tiles: 0: Cliff @@ -14659,7 +14659,7 @@ Templates: Template@699: Category: TrainBridges Id: 699 - Images: tovrps05.sno, tovrps05a.sno + Images: tovrps05.sno Size: 5, 3 Tiles: 0: Cliff @@ -14748,7 +14748,7 @@ Templates: Template@700: Category: TrainBridges Id: 700 - Images: tovrps06.sno, tovrps06a.sno + Images: tovrps06.sno Size: 5, 2 Tiles: 0: Cliff diff --git a/mods/ts/tilesets/temperate.yaml b/mods/ts/tilesets/temperate.yaml index d836b59f5f..87450befd7 100644 --- a/mods/ts/tilesets/temperate.yaml +++ b/mods/ts/tilesets/temperate.yaml @@ -7580,7 +7580,7 @@ Templates: Template@296: Category: Bridges Id: 296 - Images: ovrps01.tem, ovrps01a.tem + Images: ovrps01.tem Size: 3, 5 Tiles: 0: Cliff @@ -7669,7 +7669,7 @@ Templates: Template@297: Category: Bridges Id: 297 - Images: ovrps02.tem, ovrps02a.tem + Images: ovrps02.tem Size: 3, 5 Tiles: 0: Cliff @@ -7758,7 +7758,7 @@ Templates: Template@298: Category: Bridges Id: 298 - Images: ovrps03.tem, ovrps03a.tem + Images: ovrps03.tem Size: 2, 5 Tiles: 0: Cliff @@ -7822,7 +7822,7 @@ Templates: Template@299: Category: Bridges Id: 299 - Images: ovrps04.tem, ovrps04a.tem + Images: ovrps04.tem Size: 5, 3 Tiles: 0: Cliff @@ -7911,7 +7911,7 @@ Templates: Template@300: Category: Bridges Id: 300 - Images: ovrps05.tem, ovrps05a.tem + Images: ovrps05.tem Size: 5, 3 Tiles: 0: Cliff @@ -8000,7 +8000,7 @@ Templates: Template@301: Category: Bridges Id: 301 - Images: ovrps06.tem, ovrps06a.tem + Images: ovrps06.tem Size: 5, 2 Tiles: 0: Cliff @@ -13365,7 +13365,7 @@ Templates: Template@566: Category: TrainBridges Id: 566 - Images: tovrps01.tem, tovrps01a.tem + Images: tovrps01.tem Size: 3, 5 Tiles: 0: Cliff @@ -13454,7 +13454,7 @@ Templates: Template@567: Category: TrainBridges Id: 567 - Images: tovrps02.tem, tovrps02a.tem + Images: tovrps02.tem Size: 3, 5 Tiles: 0: Cliff @@ -13543,7 +13543,7 @@ Templates: Template@568: Category: TrainBridges Id: 568 - Images: tovrps03.tem, tovrps03a.tem + Images: tovrps03.tem Size: 2, 5 Tiles: 0: Cliff @@ -13607,7 +13607,7 @@ Templates: Template@569: Category: TrainBridges Id: 569 - Images: tovrps04.tem, tovrps04a.tem + Images: tovrps04.tem Size: 5, 3 Tiles: 0: Cliff @@ -13696,7 +13696,7 @@ Templates: Template@570: Category: TrainBridges Id: 570 - Images: tovrps05.tem, tovrps05a.tem + Images: tovrps05.tem Size: 5, 3 Tiles: 0: Cliff @@ -13785,7 +13785,7 @@ Templates: Template@571: Category: TrainBridges Id: 571 - Images: tovrps06.tem, tovrps06a.tem + Images: tovrps06.tem Size: 5, 2 Tiles: 0: Cliff From a518f07e250e08936126d38219e9ec1215391584 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 14 Jan 2017 14:53:18 +0000 Subject: [PATCH 05/19] Remove CPos.Max/Min. --- OpenRA.Game/CPos.cs | 3 --- OpenRA.Mods.RA/Traits/Minelayer.cs | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/OpenRA.Game/CPos.cs b/OpenRA.Game/CPos.cs index 914f9a7e49..cfd2cbe47d 100644 --- a/OpenRA.Game/CPos.cs +++ b/OpenRA.Game/CPos.cs @@ -33,9 +33,6 @@ namespace OpenRA public static bool operator ==(CPos me, CPos other) { return me.X == other.X && me.Y == other.Y; } public static bool operator !=(CPos me, CPos other) { return !(me == other); } - public static CPos Max(CPos a, CPos b) { return new CPos(Math.Max(a.X, b.X), Math.Max(a.Y, b.Y)); } - public static CPos Min(CPos a, CPos b) { return new CPos(Math.Min(a.X, b.X), Math.Min(a.Y, b.Y)); } - public override int GetHashCode() { return X.GetHashCode() ^ Y.GetHashCode(); } public bool Equals(CPos other) { return X == other.X && Y == other.Y; } diff --git a/OpenRA.Mods.RA/Traits/Minelayer.cs b/OpenRA.Mods.RA/Traits/Minelayer.cs index 4aa7388f12..3e6b449727 100644 --- a/OpenRA.Mods.RA/Traits/Minelayer.cs +++ b/OpenRA.Mods.RA/Traits/Minelayer.cs @@ -100,8 +100,8 @@ namespace OpenRA.Mods.RA.Traits static IEnumerable GetMinefieldCells(CPos start, CPos end, WDist depth) { - var mins = CPos.Min(start, end); - var maxs = CPos.Max(start, end); + var mins = new CPos(Math.Min(start.X, end.X), Math.Min(start.Y, end.Y)); + var maxs = new CPos(Math.Max(start.X, end.X), Math.Max(start.Y, end.Y)); /* TODO: proper endcaps, if anyone cares (which won't happen unless depth is large) */ From 695a572dc3c2d37f72a25e244a00163ec59967ee Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 14 Jan 2017 14:27:34 +0000 Subject: [PATCH 06/19] Move ActorMap to mod code. --- OpenRA.Game/OpenRA.Game.csproj | 1 - OpenRA.Game/Traits/TraitsInterfaces.cs | 24 +++++++++++++++++++ OpenRA.Game/World.cs | 5 ++-- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 1 + .../Traits/World/ActorMap.cs | 7 +++--- 5 files changed, 30 insertions(+), 8 deletions(-) rename {OpenRA.Game => OpenRA.Mods.Common}/Traits/World/ActorMap.cs (99%) diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj index bd055fffd3..96b0fe5cf7 100644 --- a/OpenRA.Game/OpenRA.Game.csproj +++ b/OpenRA.Game/OpenRA.Game.csproj @@ -194,7 +194,6 @@ - diff --git a/OpenRA.Game/Traits/TraitsInterfaces.cs b/OpenRA.Game/Traits/TraitsInterfaces.cs index c8d2feb031..2d59e8808c 100644 --- a/OpenRA.Game/Traits/TraitsInterfaces.cs +++ b/OpenRA.Game/Traits/TraitsInterfaces.cs @@ -232,6 +232,30 @@ namespace OpenRA.Traits } } + public enum SubCell { Invalid = int.MinValue, Any = int.MinValue / 2, FullCell = 0, First = 1 } + public interface IActorMap + { + IEnumerable GetActorsAt(CPos a); + IEnumerable GetActorsAt(CPos a, SubCell sub); + bool HasFreeSubCell(CPos cell, bool checkTransient = true); + SubCell FreeSubCell(CPos cell, SubCell preferredSubCell = SubCell.Any, bool checkTransient = true); + SubCell FreeSubCell(CPos cell, SubCell preferredSubCell, Func checkIfBlocker); + bool AnyActorsAt(CPos a); + bool AnyActorsAt(CPos a, SubCell sub, bool checkTransient = true); + bool AnyActorsAt(CPos a, SubCell sub, Func withCondition); + void AddInfluence(Actor self, IOccupySpace ios); + void RemoveInfluence(Actor self, IOccupySpace ios); + int AddCellTrigger(CPos[] cells, Action onEntry, Action onExit); + void RemoveCellTrigger(int id); + int AddProximityTrigger(WPos pos, WDist range, WDist vRange, Action onEntry, Action onExit); + void RemoveProximityTrigger(int id); + void UpdateProximityTrigger(int id, WPos newPos, WDist newRange, WDist newVRange); + void AddPosition(Actor a, IOccupySpace ios); + void RemovePosition(Actor a, IOccupySpace ios); + void UpdatePosition(Actor a, IOccupySpace ios); + IEnumerable ActorsInBox(WPos a, WPos b); + } + public interface IRenderModifier { IEnumerable ModifyRender(Actor self, WorldRenderer wr, IEnumerable r); } public interface ILoadsPalettes { void LoadPalettes(WorldRenderer wr); } public interface ILoadsPlayerPalettes { void LoadPlayerPalettes(WorldRenderer wr, string playerName, HSLColor playerColor, bool replaceExisting); } diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index 646cb6adcc..a6311b4c10 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -14,7 +14,6 @@ using System.Collections.Generic; using System.Linq; using OpenRA.Effects; using OpenRA.FileFormats; -using OpenRA.GameRules; using OpenRA.Graphics; using OpenRA.Network; using OpenRA.Orders; @@ -107,7 +106,7 @@ namespace OpenRA public readonly Map Map; - public readonly ActorMap ActorMap; + public readonly IActorMap ActorMap; public readonly ScreenMap ScreenMap; public readonly WorldType Type; @@ -159,7 +158,7 @@ namespace OpenRA var worldActorType = type == WorldType.Editor ? "EditorWorld" : "World"; WorldActor = CreateActor(worldActorType, new TypeDictionary()); - ActorMap = WorldActor.Trait(); + ActorMap = WorldActor.Trait(); ScreenMap = WorldActor.Trait(); // Add players diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 770fd27890..e8d165d4c7 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -793,6 +793,7 @@ + diff --git a/OpenRA.Game/Traits/World/ActorMap.cs b/OpenRA.Mods.Common/Traits/World/ActorMap.cs similarity index 99% rename from OpenRA.Game/Traits/World/ActorMap.cs rename to OpenRA.Mods.Common/Traits/World/ActorMap.cs index abeb03d136..5a942a480d 100644 --- a/OpenRA.Game/Traits/World/ActorMap.cs +++ b/OpenRA.Mods.Common/Traits/World/ActorMap.cs @@ -14,11 +14,10 @@ using System.Collections; using System.Collections.Generic; using System.Drawing; using System.Linq; +using OpenRA.Traits; -namespace OpenRA.Traits +namespace OpenRA.Mods.Common.Traits { - public enum SubCell { Invalid = int.MinValue, Any = int.MinValue / 2, FullCell = 0, First = 1 } - public class ActorMapInfo : ITraitInfo { [Desc("Size of partition bins (cells)")] @@ -27,7 +26,7 @@ namespace OpenRA.Traits public object Create(ActorInitializer init) { return new ActorMap(init.World, this); } } - public class ActorMap : ITick + public class ActorMap : IActorMap, ITick { class InfluenceNode { From 2bd5a392d12a630b96b6dbd3731758dd08251464 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 4 Jan 2017 18:10:46 +0000 Subject: [PATCH 07/19] Add plumbing for custom movement layers. --- OpenRA.Game/CPos.cs | 19 ++++---- OpenRA.Mods.Common/Activities/Attack.cs | 4 +- OpenRA.Mods.Common/Activities/Move/Move.cs | 25 +++++++---- .../Activities/Move/MoveAdjacentTo.cs | 16 +++---- .../Activities/Move/MoveWithinRange.cs | 6 ++- .../Pathfinder/CellInfoLayerPool.cs | 19 +++++--- OpenRA.Mods.Common/Pathfinder/PathGraph.cs | 44 +++++++++++++++--- OpenRA.Mods.Common/Traits/Mobile.cs | 38 +++++++++++++--- OpenRA.Mods.Common/Traits/World/ActorMap.cs | 45 +++++++++++++++---- .../Traits/World/DomainIndex.cs | 24 ++++++++++ OpenRA.Mods.Common/TraitsInterfaces.cs | 14 ++++++ OpenRA.Mods.Common/Util.cs | 9 +++- 12 files changed, 207 insertions(+), 56 deletions(-) diff --git a/OpenRA.Game/CPos.cs b/OpenRA.Game/CPos.cs index cfd2cbe47d..7dcef3c928 100644 --- a/OpenRA.Game/CPos.cs +++ b/OpenRA.Game/CPos.cs @@ -19,23 +19,25 @@ namespace OpenRA public struct CPos : IScriptBindable, ILuaAdditionBinding, ILuaSubtractionBinding, ILuaEqualityBinding, ILuaTableBinding, IEquatable { public readonly int X, Y; + public readonly byte Layer; - public CPos(int x, int y) { X = x; Y = y; } - public static readonly CPos Zero = new CPos(0, 0); + public CPos(int x, int y) { X = x; Y = y; Layer = 0; } + public CPos(int x, int y, byte layer) { X = x; Y = y; Layer = layer; } + public static readonly CPos Zero = new CPos(0, 0, 0); public static explicit operator CPos(int2 a) { return new CPos(a.X, a.Y); } - public static CPos operator +(CVec a, CPos b) { return new CPos(a.X + b.X, a.Y + b.Y); } - public static CPos operator +(CPos a, CVec b) { return new CPos(a.X + b.X, a.Y + b.Y); } - public static CPos operator -(CPos a, CVec b) { return new CPos(a.X - b.X, a.Y - b.Y); } + public static CPos operator +(CVec a, CPos b) { return new CPos(a.X + b.X, a.Y + b.Y, b.Layer); } + public static CPos operator +(CPos a, CVec b) { return new CPos(a.X + b.X, a.Y + b.Y, a.Layer); } + public static CPos operator -(CPos a, CVec b) { return new CPos(a.X - b.X, a.Y - b.Y, a.Layer); } public static CVec operator -(CPos a, CPos b) { return new CVec(a.X - b.X, a.Y - b.Y); } - public static bool operator ==(CPos me, CPos other) { return me.X == other.X && me.Y == other.Y; } + public static bool operator ==(CPos me, CPos other) { return me.X == other.X && me.Y == other.Y && me.Layer == other.Layer; } public static bool operator !=(CPos me, CPos other) { return !(me == other); } - public override int GetHashCode() { return X.GetHashCode() ^ Y.GetHashCode(); } + public override int GetHashCode() { return X.GetHashCode() ^ Y.GetHashCode() ^ Layer.GetHashCode(); } - public bool Equals(CPos other) { return X == other.X && Y == other.Y; } + public bool Equals(CPos other) { return X == other.X && Y == other.Y && Layer == other.Layer; } public override bool Equals(object obj) { return obj is CPos && Equals((CPos)obj); } public override string ToString() { return X + "," + Y; } @@ -117,6 +119,7 @@ namespace OpenRA { case "X": return X; case "Y": return Y; + case "Layer": return Layer; default: throw new LuaException("CPos does not define a member '{0}'".F(key)); } } diff --git a/OpenRA.Mods.Common/Activities/Attack.cs b/OpenRA.Mods.Common/Activities/Attack.cs index 09c4109161..8b450dda13 100644 --- a/OpenRA.Mods.Common/Activities/Attack.cs +++ b/OpenRA.Mods.Common/Activities/Attack.cs @@ -100,7 +100,9 @@ namespace OpenRA.Mods.Common.Activities minRange = armaments.Max(a => a.Weapon.MinRange); maxRange = armaments.Min(a => a.MaxRange()); - if (!Target.IsInRange(self.CenterPosition, maxRange) || Target.IsInRange(self.CenterPosition, minRange)) + var mobile = move as Mobile; + if (!Target.IsInRange(self.CenterPosition, maxRange) || Target.IsInRange(self.CenterPosition, minRange) + || (mobile != null && !mobile.CanInteractWithGroundLayer(self))) { // Try to move within range, drop the target otherwise if (move == null) diff --git a/OpenRA.Mods.Common/Activities/Move/Move.cs b/OpenRA.Mods.Common/Activities/Move/Move.cs index d17bcf9dac..a1360d76d8 100644 --- a/OpenRA.Mods.Common/Activities/Move/Move.cs +++ b/OpenRA.Mods.Common/Activities/Move/Move.cs @@ -184,10 +184,15 @@ namespace OpenRA.Mods.Common.Activities else { mobile.SetLocation(mobile.FromCell, mobile.FromSubCell, nextCell.Value.First, nextCell.Value.Second); - var from = self.World.Map.CenterOfSubCell(mobile.FromCell, mobile.FromSubCell); + + var map = self.World.Map; + var from = (mobile.FromCell.Layer == 0 ? map.CenterOfCell(mobile.FromCell) : + self.World.GetCustomMovementLayers()[mobile.FromCell.Layer].CenterOfCell(mobile.FromCell)) + + map.Grid.OffsetOfSubCell(mobile.FromSubCell); + var to = Util.BetweenCells(self.World, mobile.FromCell, mobile.ToCell) + - (self.World.Map.Grid.OffsetOfSubCell(mobile.FromSubCell) + - self.World.Map.Grid.OffsetOfSubCell(mobile.ToSubCell)) / 2; + (map.Grid.OffsetOfSubCell(mobile.FromSubCell) + map.Grid.OffsetOfSubCell(mobile.ToSubCell)) / 2; + var move = new MoveFirstHalf( this, from, @@ -415,21 +420,22 @@ namespace OpenRA.Mods.Common.Activities protected override MovePart OnComplete(Actor self, Mobile mobile, Move parent) { - var fromSubcellOffset = self.World.Map.Grid.OffsetOfSubCell(mobile.FromSubCell); - var toSubcellOffset = self.World.Map.Grid.OffsetOfSubCell(mobile.ToSubCell); + var map = self.World.Map; + var fromSubcellOffset = map.Grid.OffsetOfSubCell(mobile.FromSubCell); + var toSubcellOffset = map.Grid.OffsetOfSubCell(mobile.ToSubCell); var nextCell = parent.PopPath(self); if (nextCell != null) { if (IsTurn(mobile, nextCell.Value.First)) { - var nextSubcellOffset = self.World.Map.Grid.OffsetOfSubCell(nextCell.Value.Second); + var nextSubcellOffset = map.Grid.OffsetOfSubCell(nextCell.Value.Second); var ret = new MoveFirstHalf( Move, Util.BetweenCells(self.World, mobile.FromCell, mobile.ToCell) + (fromSubcellOffset + toSubcellOffset) / 2, Util.BetweenCells(self.World, mobile.ToCell, nextCell.Value.First) + (toSubcellOffset + nextSubcellOffset) / 2, mobile.Facing, - Util.GetNearestFacing(mobile.Facing, self.World.Map.FacingBetween(mobile.ToCell, nextCell.Value.First, mobile.Facing)), + Util.GetNearestFacing(mobile.Facing, map.FacingBetween(mobile.ToCell, nextCell.Value.First, mobile.Facing)), moveFraction - MoveFractionTotal); mobile.FinishedMoving(self); @@ -440,10 +446,13 @@ namespace OpenRA.Mods.Common.Activities parent.path.Add(nextCell.Value.First); } + var toPos = mobile.ToCell.Layer == 0 ? map.CenterOfCell(mobile.ToCell) : + self.World.GetCustomMovementLayers()[mobile.ToCell.Layer].CenterOfCell(mobile.ToCell); + var ret2 = new MoveSecondHalf( Move, Util.BetweenCells(self.World, mobile.FromCell, mobile.ToCell) + (fromSubcellOffset + toSubcellOffset) / 2, - self.World.Map.CenterOfCell(mobile.ToCell) + toSubcellOffset, + toPos + toSubcellOffset, mobile.Facing, mobile.Facing, moveFraction - MoveFractionTotal); diff --git a/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs b/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs index 658c43ae13..c4d05401a1 100644 --- a/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs +++ b/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs @@ -23,7 +23,7 @@ namespace OpenRA.Mods.Common.Activities { static readonly List NoPath = new List(); - readonly Mobile mobile; + protected readonly Mobile Mobile; readonly IPathFinder pathFinder; readonly DomainIndex domainIndex; readonly uint movementClass; @@ -53,10 +53,10 @@ namespace OpenRA.Mods.Common.Activities { Target = target; - mobile = self.Trait(); + Mobile = self.Trait(); pathFinder = self.World.WorldActor.Trait(); domainIndex = self.World.WorldActor.Trait(); - movementClass = (uint)mobile.Info.GetMovementClass(self.World.Map.Rules.TileSet); + movementClass = (uint)Mobile.Info.GetMovementClass(self.World.Map.Rules.TileSet); if (target.IsValidFor(self)) targetPosition = self.World.Map.CellContaining(target.CenterPosition); @@ -91,7 +91,7 @@ namespace OpenRA.Mods.Common.Activities inner.Cancel(self); self.SetTargetLine(Target.FromCell(self.World, targetPosition), Color.Green); - return ActivityUtils.RunActivity(self, new AttackMoveActivity(self, mobile.MoveTo(targetPosition, 0))); + return ActivityUtils.RunActivity(self, new AttackMoveActivity(self, Mobile.MoveTo(targetPosition, 0))); } // Inner move order has completed. @@ -103,7 +103,7 @@ namespace OpenRA.Mods.Common.Activities return NextActivity; // Target has moved, and MoveAdjacentTo is still valid. - inner = mobile.MoveTo(() => CalculatePathToTarget(self)); + inner = Mobile.MoveTo(() => CalculatePathToTarget(self)); repath = false; } @@ -142,14 +142,14 @@ namespace OpenRA.Mods.Common.Activities var loc = self.Location; foreach (var cell in targetCells) - if (domainIndex.IsPassable(loc, cell, movementClass) && mobile.CanEnterCell(cell)) + if (domainIndex.IsPassable(loc, cell, movementClass) && Mobile.CanEnterCell(cell)) searchCells.Add(cell); if (!searchCells.Any()) return NoPath; - using (var fromSrc = PathSearch.FromPoints(self.World, mobile.Info, self, searchCells, loc, true)) - using (var fromDest = PathSearch.FromPoint(self.World, mobile.Info, self, loc, targetPosition, true).Reverse()) + using (var fromSrc = PathSearch.FromPoints(self.World, Mobile.Info, self, searchCells, loc, true)) + using (var fromDest = PathSearch.FromPoint(self.World, Mobile.Info, self, loc, targetPosition, true).Reverse()) return pathFinder.FindBidiPath(fromSrc, fromDest); } diff --git a/OpenRA.Mods.Common/Activities/Move/MoveWithinRange.cs b/OpenRA.Mods.Common/Activities/Move/MoveWithinRange.cs index 2642425392..0f68d0aa1b 100644 --- a/OpenRA.Mods.Common/Activities/Move/MoveWithinRange.cs +++ b/OpenRA.Mods.Common/Activities/Move/MoveWithinRange.cs @@ -11,6 +11,7 @@ using System.Collections.Generic; using System.Linq; +using OpenRA.Mods.Common.Traits; using OpenRA.Traits; namespace OpenRA.Mods.Common.Activities @@ -31,12 +32,13 @@ namespace OpenRA.Mods.Common.Activities { // We are now in range. Don't move any further! // HACK: This works around the pathfinder not returning the shortest path - return AtCorrectRange(self.CenterPosition); + return AtCorrectRange(self.CenterPosition) && Mobile.CanInteractWithGroundLayer(self); } protected override bool ShouldRepath(Actor self, CPos oldTargetPosition) { - return targetPosition != oldTargetPosition && !AtCorrectRange(self.CenterPosition); + return targetPosition != oldTargetPosition && (!AtCorrectRange(self.CenterPosition) + || !Mobile.CanInteractWithGroundLayer(self)); } protected override IEnumerable CandidateMovementCells(Actor self) diff --git a/OpenRA.Mods.Common/Pathfinder/CellInfoLayerPool.cs b/OpenRA.Mods.Common/Pathfinder/CellInfoLayerPool.cs index 949e7a6541..34174b6845 100644 --- a/OpenRA.Mods.Common/Pathfinder/CellInfoLayerPool.cs +++ b/OpenRA.Mods.Common/Pathfinder/CellInfoLayerPool.cs @@ -57,21 +57,28 @@ namespace OpenRA.Mods.Common.Pathfinder public class PooledCellInfoLayer : IDisposable { - public CellLayer Layer { get; private set; } CellInfoLayerPool layerPool; + List> layers = new List>(); public PooledCellInfoLayer(CellInfoLayerPool layerPool) { this.layerPool = layerPool; - Layer = layerPool.GetLayer(); + } + + public CellLayer GetLayer() + { + var layer = layerPool.GetLayer(); + layers.Add(layer); + return layer; } public void Dispose() { - if (Layer == null) - return; - layerPool.ReturnLayer(Layer); - Layer = null; + if (layerPool != null) + foreach (var layer in layers) + layerPool.ReturnLayer(layer); + + layers = null; layerPool = null; } } diff --git a/OpenRA.Mods.Common/Pathfinder/PathGraph.cs b/OpenRA.Mods.Common/Pathfinder/PathGraph.cs index 2950aeb075..05bd4eda0b 100644 --- a/OpenRA.Mods.Common/Pathfinder/PathGraph.cs +++ b/OpenRA.Mods.Common/Pathfinder/PathGraph.cs @@ -11,7 +11,10 @@ using System; using System.Collections.Generic; +using System.Linq; using OpenRA.Mods.Common.Traits; +using OpenRA.Primitives; +using OpenRA.Traits; namespace OpenRA.Mods.Common.Pathfinder { @@ -84,12 +87,21 @@ namespace OpenRA.Mods.Common.Pathfinder readonly MobileInfo mobileInfo; readonly MobileInfo.WorldMovementInfo worldMovementInfo; readonly CellInfoLayerPool.PooledCellInfoLayer pooledLayer; - CellLayer cellInfo; + CellLayer groundInfo; + + readonly Dictionary>> customLayerInfo = + new Dictionary>>(); public PathGraph(CellInfoLayerPool layerPool, MobileInfo mobileInfo, Actor actor, World world, bool checkForBlocked) { pooledLayer = layerPool.Get(); - cellInfo = pooledLayer.Layer; + groundInfo = pooledLayer.GetLayer(); + var layers = world.GetCustomMovementLayers().Values + .Where(cml => cml.EnabledForActor(actor.Info, mobileInfo)); + + foreach (var cml in layers) + customLayerInfo[cml.Index] = Pair.New(cml, pooledLayer.GetLayer()); + World = world; this.mobileInfo = mobileInfo; worldMovementInfo = mobileInfo.GetWorldMovementInfo(world); @@ -117,7 +129,8 @@ namespace OpenRA.Mods.Common.Pathfinder public List GetConnections(CPos position) { - var previousPos = cellInfo[position].PreviousPos; + var info = position.Layer == 0 ? groundInfo : customLayerInfo[position.Layer].Second; + var previousPos = info[position].PreviousPos; var dx = position.X - previousPos.X; var dy = position.Y - previousPos.Y; @@ -133,6 +146,24 @@ namespace OpenRA.Mods.Common.Pathfinder validNeighbors.Add(new GraphConnection(neighbor, movementCost)); } + if (position.Layer == 0) + { + foreach (var cli in customLayerInfo.Values) + { + var layerPosition = new CPos(position.X, position.Y, cli.First.Index); + var entryCost = cli.First.EntryMovementCost(Actor.Info, mobileInfo, layerPosition); + if (entryCost != Constants.InvalidNode) + validNeighbors.Add(new GraphConnection(layerPosition, entryCost)); + } + } + else + { + var layerPosition = new CPos(position.X, position.Y, 0); + var exitCost = customLayerInfo[position.Layer].First.ExitMovementCost(Actor.Info, mobileInfo, layerPosition); + if (exitCost != Constants.InvalidNode) + validNeighbors.Add(new GraphConnection(layerPosition, exitCost)); + } + return validNeighbors; } @@ -179,14 +210,15 @@ namespace OpenRA.Mods.Common.Pathfinder public CellInfo this[CPos pos] { - get { return cellInfo[pos]; } - set { cellInfo[pos] = value; } + get { return (pos.Layer == 0 ? groundInfo : customLayerInfo[pos.Layer].Second)[pos]; } + set { (pos.Layer == 0 ? groundInfo : customLayerInfo[pos.Layer].Second)[pos] = value; } } public void Dispose() { + groundInfo = null; + customLayerInfo.Clear(); pooledLayer.Dispose(); - cellInfo = null; } } } diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index 04c6b9f081..4f2393b6e4 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -151,15 +151,17 @@ namespace OpenRA.Mods.Common.Traits public int MovementCostForCell(World world, CPos cell) { - return MovementCostForCell(world.Map, TilesetTerrainInfo[world.Map.Rules.TileSet], cell); + return MovementCostForCell(world, TilesetTerrainInfo[world.Map.Rules.TileSet], cell); } - int MovementCostForCell(Map map, TerrainInfo[] terrainInfos, CPos cell) + int MovementCostForCell(World world, TerrainInfo[] terrainInfos, CPos cell) { - if (!map.Contains(cell)) + if (!world.Map.Contains(cell)) return int.MaxValue; - var index = map.GetTerrainIndex(cell); + var index = cell.Layer == 0 ? world.Map.GetTerrainIndex(cell) : + world.GetCustomMovementLayers()[cell.Layer].GetTerrainIndex(cell); + if (index == byte.MaxValue) return int.MaxValue; @@ -279,7 +281,7 @@ namespace OpenRA.Mods.Common.Traits public int MovementCostToEnterCell(WorldMovementInfo worldMovementInfo, Actor self, CPos cell, Actor ignoreActor = null, CellConditions check = CellConditions.All) { - var cost = MovementCostForCell(worldMovementInfo.World.Map, worldMovementInfo.TerrainInfos, cell); + var cost = MovementCostForCell(worldMovementInfo.World, worldMovementInfo.TerrainInfos, cell); if (cost == int.MaxValue || !CanMoveFreelyInto(worldMovementInfo.World, self, cell, ignoreActor, check)) return int.MaxValue; return cost; @@ -413,7 +415,12 @@ namespace OpenRA.Mods.Common.Traits { subCell = GetValidSubCell(subCell); SetLocation(cell, subCell, cell, subCell); - SetVisualPosition(self, self.World.Map.CenterOfSubCell(cell, subCell)); + + var position = cell.Layer == 0 ? self.World.Map.CenterOfCell(cell) : + self.World.GetCustomMovementLayers()[cell.Layer].CenterOfCell(cell); + + var subcellOffset = self.World.Map.Grid.OffsetOfSubCell(subCell); + SetVisualPosition(self, position + subcellOffset); FinishedMoving(self); } @@ -626,7 +633,9 @@ namespace OpenRA.Mods.Common.Traits public int MovementSpeedForCell(Actor self, CPos cell) { - var index = self.World.Map.GetTerrainIndex(cell); + var index = cell.Layer == 0 ? self.World.Map.GetTerrainIndex(cell) : + self.World.GetCustomMovementLayers()[cell.Layer].GetTerrainIndex(cell); + if (index == byte.MaxValue) return 0; @@ -716,6 +725,21 @@ namespace OpenRA.Mods.Common.Traits } } + public bool CanInteractWithGroundLayer(Actor self) + { + // TODO: Think about extending this to support arbitrary layer-layer checks + // in a way that is compatible with the other IMove types. + // This would then allow us to e.g. have units attack other units inside tunnels. + if (ToCell.Layer == 0) + return true; + + ICustomMovementLayer layer; + if (self.World.GetCustomMovementLayers().TryGetValue(ToCell.Layer, out layer)) + return layer.InteractsWithDefaultLayer; + + return true; + } + void IActorPreviewInitModifier.ModifyActorPreviewInit(Actor self, TypeDictionary inits) { if (!inits.Contains() && !inits.Contains()) diff --git a/OpenRA.Mods.Common/Traits/World/ActorMap.cs b/OpenRA.Mods.Common/Traits/World/ActorMap.cs index 5a942a480d..d3ffcf87e7 100644 --- a/OpenRA.Mods.Common/Traits/World/ActorMap.cs +++ b/OpenRA.Mods.Common/Traits/World/ActorMap.cs @@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Traits public object Create(ActorInitializer init) { return new ActorMap(init.World, this); } } - public class ActorMap : IActorMap, ITick + public class ActorMap : IActorMap, ITick, INotifyCreated { class InfluenceNode { @@ -165,6 +165,8 @@ namespace OpenRA.Mods.Common.Traits int nextTriggerId; readonly CellLayer influence; + readonly Dictionary> customInfluence = new Dictionary>(); + public readonly Dictionary CustomMovementLayers = new Dictionary(); readonly Bin[] bins; readonly int rows, cols; @@ -192,6 +194,15 @@ namespace OpenRA.Mods.Common.Traits actorShouldBeRemoved = removeActorPosition.Contains; } + void INotifyCreated.Created(Actor self) + { + foreach (var cml in self.TraitsImplementing()) + { + CustomMovementLayers[cml.Index] = cml; + customInfluence.Add(cml.Index, new CellLayer(self.World.Map)); + } + } + sealed class ActorsAtEnumerator : IEnumerator { InfluenceNode node; @@ -228,7 +239,9 @@ namespace OpenRA.Mods.Common.Traits var uv = a.ToMPos(map); if (!influence.Contains(uv)) return Enumerable.Empty(); - return new ActorsAtEnumerable(influence[uv]); + + var layer = a.Layer == 0 ? influence : customInfluence[a.Layer]; + return new ActorsAtEnumerable(layer[uv]); } public IEnumerable GetActorsAt(CPos a, SubCell sub) @@ -237,7 +250,8 @@ namespace OpenRA.Mods.Common.Traits if (!influence.Contains(uv)) yield break; - for (var i = influence[uv]; i != null; i = i.Next) + var layer = a.Layer == 0 ? influence : customInfluence[a.Layer]; + for (var i = layer[uv]; i != null; i = i.Next) if (!i.Actor.Disposed && (i.SubCell == sub || i.SubCell == SubCell.FullCell)) yield return i.Actor; } @@ -283,7 +297,8 @@ namespace OpenRA.Mods.Common.Traits if (!influence.Contains(uv)) return false; - return influence[uv] != null; + var layer = a.Layer == 0 ? influence : customInfluence[a.Layer]; + return layer[uv] != null; } // NOTE: can not check aircraft @@ -294,7 +309,8 @@ namespace OpenRA.Mods.Common.Traits return false; var always = sub == SubCell.FullCell || sub == SubCell.Any; - for (var i = influence[uv]; i != null; i = i.Next) + var layer = a.Layer == 0 ? influence : customInfluence[a.Layer]; + for (var i = layer[uv]; i != null; i = i.Next) { if (always || i.SubCell == sub || i.SubCell == SubCell.FullCell) { @@ -318,7 +334,8 @@ namespace OpenRA.Mods.Common.Traits return false; var always = sub == SubCell.FullCell || sub == SubCell.Any; - for (var i = influence[uv]; i != null; i = i.Next) + var layer = a.Layer == 0 ? influence : customInfluence[a.Layer]; + for (var i = layer[uv]; i != null; i = i.Next) if ((always || i.SubCell == sub || i.SubCell == SubCell.FullCell) && !i.Actor.Disposed && withCondition(i.Actor)) return true; @@ -333,7 +350,8 @@ namespace OpenRA.Mods.Common.Traits if (!influence.Contains(uv)) continue; - influence[uv] = new InfluenceNode { Next = influence[uv], SubCell = c.Second, Actor = self }; + var layer = c.First.Layer == 0 ? influence : customInfluence[c.First.Layer]; + layer[uv] = new InfluenceNode { Next = layer[uv], SubCell = c.Second, Actor = self }; List triggers; if (cellTriggerInfluence.TryGetValue(c.First, out triggers)) @@ -350,9 +368,10 @@ namespace OpenRA.Mods.Common.Traits if (!influence.Contains(uv)) continue; - var temp = influence[uv]; + var layer = c.First.Layer == 0 ? influence : customInfluence[c.First.Layer]; + var temp = layer[uv]; RemoveInfluenceInner(ref temp, self); - influence[uv] = temp; + layer[uv] = temp; List triggers; if (cellTriggerInfluence.TryGetValue(c.First, out triggers)) @@ -567,4 +586,12 @@ namespace OpenRA.Mods.Common.Traits } } } + + public static class ActorMapWorldExts + { + public static Dictionary GetCustomMovementLayers(this World world) + { + return ((ActorMap)world.ActorMap).CustomMovementLayers; + } + } } diff --git a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs index cf23ef6a28..73201f3b42 100644 --- a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs +++ b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs @@ -39,6 +39,11 @@ namespace OpenRA.Mods.Common.Traits public bool IsPassable(CPos p1, CPos p2, uint movementClass) { + // HACK: Work around units in other movement layers from being blocked + // when the point in the main layer is not pathable + if (p1.Layer != 0 || p2.Layer != 0) + return true; + return domainIndexes[movementClass].IsPassable(p1, p2); } @@ -49,6 +54,12 @@ namespace OpenRA.Mods.Common.Traits foreach (var index in domainIndexes) index.Value.UpdateCells(world, dirty); } + + public void AddFixedConnection(IEnumerable cells) + { + foreach (var index in domainIndexes) + index.Value.AddFixedConnection(cells); + } } class MovementClassDomainIndex @@ -119,6 +130,19 @@ namespace OpenRA.Mods.Common.Traits CreateConnection(c1, c2); } + public void AddFixedConnection(IEnumerable cells) + { + // HACK: this is a temporary workaround to add a permanent connection between the domains of the listed cells. + // This is sufficient for fixed point-to-point tunnels, but not for dynamically updating custom layers + // such as destroyable elevated bridges. + // To support those the domain index will need to learn about custom movement layers, but that then requires + // a complete refactor of the domain code to deal with MobileInfo or better a shared pathfinder class type. + var cellDomains = cells.Select(c => domains[c]).ToHashSet(); + foreach (var c1 in cellDomains) + foreach (var c2 in cellDomains.Where(c => c != c1)) + CreateConnection(c1, c2); + } + bool HasConnection(int d1, int d2) { // Search our connections graph for a possible route diff --git a/OpenRA.Mods.Common/TraitsInterfaces.cs b/OpenRA.Mods.Common/TraitsInterfaces.cs index 67fea93cc4..168598488b 100644 --- a/OpenRA.Mods.Common/TraitsInterfaces.cs +++ b/OpenRA.Mods.Common/TraitsInterfaces.cs @@ -233,4 +233,18 @@ namespace OpenRA.Mods.Common.Traits [RequireExplicitImplementation] public interface IGainsExperienceModifier { int GetGainsExperienceModifier(); } + + [RequireExplicitImplementation] + public interface ICustomMovementLayer + { + byte Index { get; } + bool InteractsWithDefaultLayer { get; } + + bool EnabledForActor(ActorInfo a, MobileInfo mi); + int EntryMovementCost(ActorInfo a, MobileInfo mi, CPos cell); + int ExitMovementCost(ActorInfo a, MobileInfo mi, CPos cell); + + byte GetTerrainIndex(CPos cell); + WPos CenterOfCell(CPos cell); + } } diff --git a/OpenRA.Mods.Common/Util.cs b/OpenRA.Mods.Common/Util.cs index ddbcb8a478..cbd10b5b0a 100644 --- a/OpenRA.Mods.Common/Util.cs +++ b/OpenRA.Mods.Common/Util.cs @@ -12,6 +12,7 @@ using System; using System.Collections.Generic; using System.Linq; +using OpenRA.Mods.Common.Traits; using OpenRA.Support; using OpenRA.Traits; @@ -85,7 +86,13 @@ namespace OpenRA.Mods.Common public static WPos BetweenCells(World w, CPos from, CPos to) { - return WPos.Lerp(w.Map.CenterOfCell(from), w.Map.CenterOfCell(to), 1, 2); + var fromPos = from.Layer == 0 ? w.Map.CenterOfCell(from) : + w.GetCustomMovementLayers()[from.Layer].CenterOfCell(from); + + var toPos = to.Layer == 0 ? w.Map.CenterOfCell(to) : + w.GetCustomMovementLayers()[to.Layer].CenterOfCell(to); + + return WPos.Lerp(fromPos, toPos, 1, 2); } public static IEnumerable Shuffle(this IEnumerable ts, MersenneTwister random) From 38ea7dbc5ae1aeb7b0fab2aed3bbc38cfb481bca Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 8 Jan 2017 21:23:24 +0000 Subject: [PATCH 08/19] Fix units climbing tunnel faces. --- OpenRA.Mods.Common/Pathfinder/PathGraph.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Pathfinder/PathGraph.cs b/OpenRA.Mods.Common/Pathfinder/PathGraph.cs index 05bd4eda0b..e8225088d9 100644 --- a/OpenRA.Mods.Common/Pathfinder/PathGraph.cs +++ b/OpenRA.Mods.Common/Pathfinder/PathGraph.cs @@ -87,6 +87,7 @@ namespace OpenRA.Mods.Common.Pathfinder readonly MobileInfo mobileInfo; readonly MobileInfo.WorldMovementInfo worldMovementInfo; readonly CellInfoLayerPool.PooledCellInfoLayer pooledLayer; + readonly bool checkTerrainHeight; CellLayer groundInfo; readonly Dictionary>> customLayerInfo = @@ -108,6 +109,7 @@ namespace OpenRA.Mods.Common.Pathfinder Actor = actor; LaneBias = 1; checkConditions = checkForBlocked ? CellConditions.TransientActors : CellConditions.None; + checkTerrainHeight = world.Map.Grid.MaximumTerrainHeight > 0; } // Sets of neighbors for each incoming direction. These exclude the neighbors which are guaranteed @@ -192,7 +194,15 @@ namespace OpenRA.Mods.Common.Pathfinder cellCost += customCost; } - // directional bonuses for smoother flow! + // Prevent units from jumping over height discontinuities + if (checkTerrainHeight && neighborCPos.Layer == 0) + { + var from = neighborCPos - direction; + if (Math.Abs(World.Map.Height[neighborCPos] - World.Map.Height[from]) > 1) + return Constants.InvalidNode; + } + + // Directional bonuses for smoother flow! if (LaneBias != 0) { var ux = neighborCPos.X + (InReverse ? 1 : 0) & 1; From 41213ad2d1fc78f3f8ca0074f0a8efa16662290a Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 4 Jan 2017 20:03:27 +0000 Subject: [PATCH 09/19] Implement tunnels. --- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 2 + OpenRA.Mods.Common/Traits/Mobile.cs | 26 ++++- .../World/CliffBackImpassabilityLayer.cs | 10 ++ .../Traits/World/TerrainTunnel.cs | 62 ++++++++++++ .../Traits/World/TerrainTunnelLayer.cs | 94 +++++++++++++++++++ mods/ts/rules/defaults.yaml | 3 + mods/ts/rules/gdi-vehicles.yaml | 2 + mods/ts/sequences/misc.yaml | 4 +- 8 files changed, 200 insertions(+), 3 deletions(-) create mode 100644 OpenRA.Mods.Common/Traits/World/TerrainTunnel.cs create mode 100644 OpenRA.Mods.Common/Traits/World/TerrainTunnelLayer.cs diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index e8d165d4c7..07c8901d4d 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -794,6 +794,8 @@ + + diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index 4f2393b6e4..e139614632 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -38,6 +38,11 @@ namespace OpenRA.Mods.Common.Traits } } + public static class CustomMovementLayerType + { + public const byte Tunnel = 1; + } + [Desc("Unit is able to move.")] public class MobileInfo : ConditionalTraitInfo, IMoveInfo, IPositionableInfo, IOccupySpaceInfo, IFacingInfo, UsesInit, UsesInit, UsesInit @@ -73,6 +78,10 @@ namespace OpenRA.Mods.Common.Traits [VoiceReference] public readonly string Voice = "Action"; + [GrantedConditionReference] + [Desc("The condition to grant to self while inside a tunnel.")] + public readonly string TunnelCondition = null; + public override object Create(ActorInitializer init) { return new Mobile(init, this); } static object LoadSpeeds(MiniYaml y) @@ -319,8 +328,8 @@ namespace OpenRA.Mods.Common.Traits bool IOccupySpaceInfo.SharesCell { get { return SharesCell; } } } - public class Mobile : ConditionalTrait, IIssueOrder, IResolveOrder, IOrderVoice, IPositionable, IMove, IFacing, ISync, - IDeathActorInitModifier, INotifyAddedToWorld, INotifyRemovedFromWorld, INotifyBlockingMove, IActorPreviewInitModifier + public class Mobile : ConditionalTrait, INotifyCreated, IIssueOrder, IResolveOrder, IOrderVoice, IPositionable, IMove, + IFacing, ISync, IDeathActorInitModifier, INotifyAddedToWorld, INotifyRemovedFromWorld, INotifyBlockingMove, IActorPreviewInitModifier { const int AverageTicksBeforePathing = 5; const int SpreadTicksBeforePathing = 5; @@ -334,6 +343,8 @@ namespace OpenRA.Mods.Common.Traits int facing; CPos fromCell, toCell; public SubCell FromSubCell, ToSubCell; + int tunnelToken = ConditionManager.InvalidConditionToken; + ConditionManager conditionManager; [Sync] public int Facing { @@ -361,6 +372,12 @@ namespace OpenRA.Mods.Common.Traits FromSubCell = fromSub; ToSubCell = toSub; AddInfluence(); + + if (toCell.Layer == CustomMovementLayerType.Tunnel && conditionManager != null && + !string.IsNullOrEmpty(Info.TunnelCondition) && tunnelToken == ConditionManager.InvalidConditionToken) + tunnelToken = conditionManager.GrantCondition(self, Info.TunnelCondition); + else if (toCell.Layer != CustomMovementLayerType.Tunnel && tunnelToken != ConditionManager.InvalidConditionToken) + tunnelToken = conditionManager.RevokeCondition(self, tunnelToken); } public Mobile(ActorInitializer init, MobileInfo info) @@ -388,6 +405,11 @@ namespace OpenRA.Mods.Common.Traits SetVisualPosition(self, init.Get()); } + void INotifyCreated.Created(Actor self) + { + conditionManager = self.TraitOrDefault(); + } + // Returns a valid sub-cell public SubCell GetValidSubCell(SubCell preferred = SubCell.Any) { diff --git a/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs b/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs index d7ac69f046..88efcfcf85 100644 --- a/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs +++ b/OpenRA.Mods.Common/Traits/World/CliffBackImpassabilityLayer.cs @@ -9,6 +9,7 @@ */ #endregion +using System.Collections.Generic; using System.Linq; using OpenRA.Graphics; using OpenRA.Traits; @@ -36,8 +37,17 @@ namespace OpenRA.Mods.Common.Traits public void WorldLoaded(World w, WorldRenderer wr) { var tileType = w.Map.Rules.TileSet.GetTerrainIndex(info.TerrainType); + + // Units are allowed behind cliffs *only* if they are part of a tunnel portal + var tunnelPortals = w.WorldActor.Info.TraitInfos() + .SelectMany(mti => mti.PortalCells()) + .ToHashSet(); + foreach (var uv in w.Map.AllCells.MapCoords) { + if (tunnelPortals.Contains(uv.ToCPos(w.Map))) + continue; + // All the map cells that visually overlap the current cell var testCells = w.Map.ProjectedCellsCovering(uv) .SelectMany(puv => w.Map.Unproject(puv)); diff --git a/OpenRA.Mods.Common/Traits/World/TerrainTunnel.cs b/OpenRA.Mods.Common/Traits/World/TerrainTunnel.cs new file mode 100644 index 0000000000..14f7d14b58 --- /dev/null +++ b/OpenRA.Mods.Common/Traits/World/TerrainTunnel.cs @@ -0,0 +1,62 @@ +#region Copyright & License Information +/* + * Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using System.Collections.Generic; +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Traits +{ + public class TerrainTunnelInfo : TraitInfo, Requires, ILobbyCustomRulesIgnore + { + [FieldLoader.Require] + [Desc("Location of the tunnel")] + public readonly CPos Location = CPos.Zero; + + [FieldLoader.Require] + [Desc("Height of the tunnel floor in map height steps.")] + public readonly byte Height = 0; + + [FieldLoader.Require] + [Desc("Size of the tunnel footprint")] + public readonly CVec Dimensions = CVec.Zero; + + [FieldLoader.Require] + [Desc("Tunnel footprint.", "_ is passable, x is blocked, and o are tunnel portals.")] + public readonly string Footprint = string.Empty; + + [FieldLoader.Require] + [Desc("Terrain type of the tunnel floor.")] + public readonly string TerrainType = null; + + public IEnumerable TunnelCells() + { + return CellsMatching('_').Concat(CellsMatching('o')); + } + + public IEnumerable PortalCells() + { + return CellsMatching('o'); + } + + IEnumerable CellsMatching(char c) + { + var index = 0; + var footprint = Footprint.Where(x => !char.IsWhiteSpace(x)).ToArray(); + for (var y = 0; y < Dimensions.Y; y++) + for (var x = 0; x < Dimensions.X; x++) + if (footprint[index++] == c) + yield return Location + new CVec(x, y); + } + } + + public class TerrainTunnel { } +} diff --git a/OpenRA.Mods.Common/Traits/World/TerrainTunnelLayer.cs b/OpenRA.Mods.Common/Traits/World/TerrainTunnelLayer.cs new file mode 100644 index 0000000000..6355c4b60c --- /dev/null +++ b/OpenRA.Mods.Common/Traits/World/TerrainTunnelLayer.cs @@ -0,0 +1,94 @@ +#region Copyright & License Information +/* + * Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using System.Collections.Generic; +using OpenRA.Graphics; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Traits +{ + public class TerrainTunnelLayerInfo : ITraitInfo, Requires, ILobbyCustomRulesIgnore + { + [Desc("Terrain type used by cells outside any tunnel footprint.")] + public readonly string ImpassableTerrainType = "Impassable"; + + public object Create(ActorInitializer init) { return new TerrainTunnelLayer(init.Self, this); } + } + + public class TerrainTunnelLayer : ICustomMovementLayer, IWorldLoaded + { + readonly Map map; + readonly CellLayer cellCenters; + readonly CellLayer terrainIndices; + readonly HashSet portals = new HashSet(); + bool enabled; + + public TerrainTunnelLayer(Actor self, TerrainTunnelLayerInfo info) + { + map = self.World.Map; + cellCenters = new CellLayer(map); + terrainIndices = new CellLayer(map); + terrainIndices.Clear(map.Rules.TileSet.GetTerrainIndex(info.ImpassableTerrainType)); + } + + public void WorldLoaded(World world, WorldRenderer wr) + { + var domainIndex = world.WorldActor.Trait(); + foreach (var tti in world.WorldActor.Info.TraitInfos()) + { + enabled = true; + + var terrain = map.Rules.TileSet.GetTerrainIndex(tti.TerrainType); + foreach (var c in tti.TunnelCells()) + { + var uv = c.ToMPos(map); + terrainIndices[uv] = terrain; + + var pos = map.CenterOfCell(c); + cellCenters[uv] = pos - new WVec(0, 0, pos.Z - 512 * tti.Height); + } + + var portal = tti.PortalCells(); + domainIndex.AddFixedConnection(portal); + foreach (var c in portal) + { + // Need to explicitly set both default and tunnel layers, otherwise the .Contains check will fail + portals.Add(new CPos(c.X, c.Y, 0)); + portals.Add(new CPos(c.X, c.Y, CustomMovementLayerType.Tunnel)); + } + } + } + + bool ICustomMovementLayer.EnabledForActor(ActorInfo a, MobileInfo mi) { return enabled; } + byte ICustomMovementLayer.Index { get { return CustomMovementLayerType.Tunnel; } } + bool ICustomMovementLayer.InteractsWithDefaultLayer { get { return false; } } + + WPos ICustomMovementLayer.CenterOfCell(CPos cell) + { + return cellCenters[cell]; + } + + int ICustomMovementLayer.EntryMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return portals.Contains(cell) ? 0 : int.MaxValue; + } + + int ICustomMovementLayer.ExitMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return portals.Contains(cell) ? 0 : int.MaxValue; + } + + byte ICustomMovementLayer.GetTerrainIndex(CPos cell) + { + return terrainIndices[cell]; + } + } +} diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index 19235db5f9..de69cb9412 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -306,6 +306,7 @@ Voiced: VoiceSet: Infantry Targetable: + RequiresCondition: !inside-tunnel TargetTypes: Ground, Infantry QuantizeFacingsFromSequence: Sequence: stand @@ -479,6 +480,7 @@ Voiced: VoiceSet: Vehicle Targetable: + RequiresCondition: !inside-tunnel TargetTypes: Ground, Vehicle, Repair Repairable: RepairBuildings: gadept @@ -521,6 +523,7 @@ RequiresCondition: criticalspeed Modifier: 60 Carryable: + RequiresCondition: !inside-tunnel RevealOnFire: ^Tank: diff --git a/mods/ts/rules/gdi-vehicles.yaml b/mods/ts/rules/gdi-vehicles.yaml index fac276e08c..7f18ad89b1 100644 --- a/mods/ts/rules/gdi-vehicles.yaml +++ b/mods/ts/rules/gdi-vehicles.yaml @@ -41,6 +41,7 @@ APC: Sequence: water RequiresCondition: inwater LeavesTrails: + RequiresCondition: !inside-tunnel Image: wake Palette: effect TerrainTypes: Water @@ -92,6 +93,7 @@ HVR: WithVoxelTurret: Hovers: LeavesTrails: + RequiresCondition: !inside-tunnel Image: wake Palette: effect TerrainTypes: Water diff --git a/mods/ts/sequences/misc.yaml b/mods/ts/sequences/misc.yaml index 5bd7905ab1..12c20edd12 100644 --- a/mods/ts/sequences/misc.yaml +++ b/mods/ts/sequences/misc.yaml @@ -616,7 +616,9 @@ tracks16: Offset: 0, -13, 42 ZRamp: 1 UseTilesetExtension: true - ShadowStart: 1 + # Disabled to avoid glitches until shadow rendering is fixed + # Appears to be unused in the original game too + # ShadowStart: 1 tuntop01: Inherits: ^tuntop From bb5f25e0dcb6b6922c4421e9b219ae39cd1f612b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 8 Jan 2017 21:48:50 +0000 Subject: [PATCH 10/19] Disable actor sight while inside tunnels. --- mods/ts/rules/civilian-vehicles.yaml | 7 +++++++ mods/ts/rules/defaults.yaml | 5 +++++ mods/ts/rules/gdi-vehicles.yaml | 6 ++++++ mods/ts/rules/nod-vehicles.yaml | 9 +++++++++ mods/ts/rules/shared-vehicles.yaml | 3 +++ 5 files changed, 30 insertions(+) diff --git a/mods/ts/rules/civilian-vehicles.yaml b/mods/ts/rules/civilian-vehicles.yaml index d2e66cec8b..caedcef616 100644 --- a/mods/ts/rules/civilian-vehicles.yaml +++ b/mods/ts/rules/civilian-vehicles.yaml @@ -17,6 +17,7 @@ RevealsShroud: Range: 6c0 MaxHeightDelta: 3 + RequiresCondition: !inside-tunnel Turreted: TurnSpeed: 3 Armament@PRIMARY: @@ -50,6 +51,7 @@ Mobile: Speed: 56 RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 @@ -73,6 +75,7 @@ ICBM: Speed: 85 TurnSpeed: 5 RevealsShroud: + RequiresCondition: !inside-tunnel Range: 7c0 MaxHeightDelta: 3 Transforms: @@ -98,6 +101,7 @@ BUS: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Cargo: @@ -123,6 +127,7 @@ PICK: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Cargo: @@ -148,6 +153,7 @@ CAR: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Cargo: @@ -173,6 +179,7 @@ WINI: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Cargo: diff --git a/mods/ts/rules/defaults.yaml b/mods/ts/rules/defaults.yaml index de69cb9412..4fa94512f7 100644 --- a/mods/ts/rules/defaults.yaml +++ b/mods/ts/rules/defaults.yaml @@ -279,6 +279,7 @@ Valued: Cost: 10 RevealsShroud: + RequiresCondition: !inside-tunnel Range: 2c0 MaxHeightDelta: 3 Mobile: @@ -298,6 +299,7 @@ BlueTiberium: 90 PathingCost: 90 Veins: 50 + TunnelCondition: inside-tunnel WithTextControlGroupDecoration: SelectionDecorations: Palette: pips @@ -472,6 +474,7 @@ TurnSpeed: 5 Voice: Move RequiresCondition: !empdisable + TunnelCondition: inside-tunnel Selectable: Bounds: 40,24 WithTextControlGroupDecoration: @@ -773,6 +776,7 @@ Voice: Move Speed: 113 RequiresCondition: !empdisable + TunnelCondition: inside-tunnel Cargo: Types: Infantry UnloadVoice: Unload @@ -783,6 +787,7 @@ RevealsShroud: Range: 5c0 MaxHeightDelta: 3 + RequiresCondition: !inside-tunnel Selectable: Bounds: 40,24 WithTextControlGroupDecoration: diff --git a/mods/ts/rules/gdi-vehicles.yaml b/mods/ts/rules/gdi-vehicles.yaml index 7f18ad89b1..f0faa099dc 100644 --- a/mods/ts/rules/gdi-vehicles.yaml +++ b/mods/ts/rules/gdi-vehicles.yaml @@ -21,6 +21,7 @@ APC: Armor: Type: Heavy RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Turreted: @@ -79,6 +80,7 @@ HVR: Armor: Type: Wood RevealsShroud: + RequiresCondition: !inside-tunnel Range: 7c0 MaxHeightDelta: 3 Armament: @@ -123,6 +125,7 @@ SMECH: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 6c0 MaxHeightDelta: 3 AttackFrontal: @@ -166,6 +169,7 @@ MMCH: Armor: Type: Heavy RevealsShroud: + RequiresCondition: !inside-tunnel Range: 8c0 MaxHeightDelta: 3 BodyOrientation: @@ -218,6 +222,7 @@ HMEC: Armor: Type: Heavy RevealsShroud: + RequiresCondition: !inside-tunnel Range: 8c0 MaxHeightDelta: 3 AttackFrontal: @@ -261,6 +266,7 @@ SONIC: Armor: Type: Heavy RevealsShroud: + RequiresCondition: !inside-tunnel Range: 7c0 MaxHeightDelta: 3 Armament: diff --git a/mods/ts/rules/nod-vehicles.yaml b/mods/ts/rules/nod-vehicles.yaml index 8dbe602b35..04b8f6c39e 100644 --- a/mods/ts/rules/nod-vehicles.yaml +++ b/mods/ts/rules/nod-vehicles.yaml @@ -19,6 +19,7 @@ BGGY: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 6c0 MaxHeightDelta: 3 Armament: @@ -54,6 +55,7 @@ BIKE: Armor: Type: Wood RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Armament@PRIMARY: @@ -107,6 +109,7 @@ TTNK: MuzzleSequence: muzzle WithMuzzleOverlay: RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 RenderSprites: @@ -188,6 +191,7 @@ ART2: Speed: 71 TurnSpeed: 2 RevealsShroud: + RequiresCondition: !inside-tunnel Range: 9c0 MaxHeightDelta: 3 RenderVoxels: @@ -217,6 +221,7 @@ REPAIR: Speed: 85 TurnSpeed: 5 RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Armament: @@ -262,6 +267,7 @@ WEED: Armor: Type: Heavy RevealsShroud: + RequiresCondition: !inside-tunnel Range: 4c0 MaxHeightDelta: 3 -WithVoxelBody: @@ -290,6 +296,7 @@ SAPC: Armor: Type: Heavy RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Cargo: @@ -322,6 +329,7 @@ SUBTANK: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Armament: @@ -352,6 +360,7 @@ STNK: Armor: Type: Light RevealsShroud: + RequiresCondition: !inside-tunnel Range: 5c0 MaxHeightDelta: 3 Cloak: diff --git a/mods/ts/rules/shared-vehicles.yaml b/mods/ts/rules/shared-vehicles.yaml index 5b1f1d7026..281dd80f39 100644 --- a/mods/ts/rules/shared-vehicles.yaml +++ b/mods/ts/rules/shared-vehicles.yaml @@ -19,6 +19,7 @@ MCV: Mobile: Speed: 85 RevealsShroud: + RequiresCondition: !inside-tunnel Range: 4c0 MaxHeightDelta: 3 MustBeDestroyed: @@ -84,6 +85,7 @@ HARV: Armor: Type: Heavy RevealsShroud: + RequiresCondition: !inside-tunnel Range: 4c0 MaxHeightDelta: 3 -WithVoxelBody: @@ -129,6 +131,7 @@ LPST: TurnSpeed: 5 RequiresCondition: !empdisable && undeployed RevealsShroud: + RequiresCondition: !inside-tunnel Range: 7c0 MaxHeightDelta: 3 GrantCondition@PREVIEWWORKAROUND: From 572c1cb89f88786e06ad87950d64e77e7525fa5a Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 8 Jan 2017 20:10:54 +0000 Subject: [PATCH 11/19] Implement subterranean units. --- OpenRA.Mods.Common/AI/HackyAI.cs | 2 +- .../Activities/FindResources.cs | 2 +- .../Activities/Move/MoveAdjacentTo.cs | 2 +- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 1 + OpenRA.Mods.Common/Traits/Mobile.cs | 72 ++++++++++++ .../Traits/ProductionFromMapEdge.cs | 2 +- .../Traits/World/DomainIndex.cs | 6 +- OpenRA.Mods.Common/Traits/World/PathFinder.cs | 4 +- .../Traits/World/SubterraneanActorLayer.cs | 103 ++++++++++++++++++ mods/ts/rules/nod-vehicles.yaml | 30 ++++- mods/ts/rules/world.yaml | 1 + mods/ts/sequences/misc.yaml | 6 + mods/ts/tilesets/snow.yaml | 3 + mods/ts/tilesets/temperate.yaml | 3 + 14 files changed, 228 insertions(+), 9 deletions(-) create mode 100644 OpenRA.Mods.Common/Traits/World/SubterraneanActorLayer.cs diff --git a/OpenRA.Mods.Common/AI/HackyAI.cs b/OpenRA.Mods.Common/AI/HackyAI.cs index 1b4b22288e..ab485fec0d 100644 --- a/OpenRA.Mods.Common/AI/HackyAI.cs +++ b/OpenRA.Mods.Common/AI/HackyAI.cs @@ -771,7 +771,7 @@ namespace OpenRA.Mods.Common.AI var path = pathfinder.FindPath( PathSearch.Search(World, mobileInfo, harvester, true, - loc => domainIndex.IsPassable(harvester.Location, loc, passable) && harvester.CanHarvestAt(loc, resLayer, harvInfo, territory)) + loc => domainIndex.IsPassable(harvester.Location, loc, mobileInfo, passable) && harvester.CanHarvestAt(loc, resLayer, harvInfo, territory)) .WithCustomCost(loc => World.FindActorsInCircle(World.Map.CenterOfCell(loc), Info.HarvesterEnemyAvoidanceRadius) .Where(u => !u.IsDead && harvester.Owner.Stances[u.Owner] == Stance.Enemy) .Sum(u => Math.Max(WDist.Zero.Length, Info.HarvesterEnemyAvoidanceRadius.Length - (World.Map.CenterOfCell(loc) - u.CenterPosition).Length))) diff --git a/OpenRA.Mods.Common/Activities/FindResources.cs b/OpenRA.Mods.Common/Activities/FindResources.cs index 443dc167be..cec2512fdf 100644 --- a/OpenRA.Mods.Common/Activities/FindResources.cs +++ b/OpenRA.Mods.Common/Activities/FindResources.cs @@ -127,7 +127,7 @@ namespace OpenRA.Mods.Common.Activities var passable = (uint)mobileInfo.GetMovementClass(self.World.Map.Rules.TileSet); List path; using (var search = PathSearch.Search(self.World, mobileInfo, self, true, - loc => domainIndex.IsPassable(self.Location, loc, passable) && self.CanHarvestAt(loc, resLayer, harvInfo, territory)) + loc => domainIndex.IsPassable(self.Location, loc, mobileInfo, passable) && self.CanHarvestAt(loc, resLayer, harvInfo, territory)) .WithCustomCost(loc => { if ((avoidCell.HasValue && loc == avoidCell.Value) || diff --git a/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs b/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs index c4d05401a1..e2c9a81215 100644 --- a/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs +++ b/OpenRA.Mods.Common/Activities/Move/MoveAdjacentTo.cs @@ -142,7 +142,7 @@ namespace OpenRA.Mods.Common.Activities var loc = self.Location; foreach (var cell in targetCells) - if (domainIndex.IsPassable(loc, cell, movementClass) && Mobile.CanEnterCell(cell)) + if (domainIndex.IsPassable(loc, cell, Mobile.Info, movementClass) && Mobile.CanEnterCell(cell)) searchCells.Add(cell); if (!searchCells.Any()) diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 07c8901d4d..4978ff8c3c 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -796,6 +796,7 @@ + diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index e139614632..3e719cf2e9 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -15,6 +15,7 @@ using System.Drawing; using System.Linq; using OpenRA.Activities; using OpenRA.Mods.Common.Activities; +using OpenRA.Mods.Common.Effects; using OpenRA.Primitives; using OpenRA.Traits; @@ -41,6 +42,7 @@ namespace OpenRA.Mods.Common.Traits public static class CustomMovementLayerType { public const byte Tunnel = 1; + public const byte Subterranean = 2; } [Desc("Unit is able to move.")] @@ -82,6 +84,37 @@ namespace OpenRA.Mods.Common.Traits [Desc("The condition to grant to self while inside a tunnel.")] public readonly string TunnelCondition = null; + [Desc("Can this unit move underground?")] + public readonly bool Subterranean = false; + + [GrantedConditionReference] + [Desc("The condition to grant to self while underground.")] + public readonly string SubterraneanCondition = null; + + [Desc("Pathfinding cost for submerging or reemerging.")] + public readonly int SubterraneanTransitionCost = 0; + + [Desc("The terrain types that this actor can transition on. Leave empty to allow any.")] + public readonly HashSet SubterraneanTransitionTerrainTypes = new HashSet(); + + [Desc("Can this actor transition on slopes?")] + public readonly bool SubterraneanTransitionOnRamps = false; + + [Desc("Depth at which the subterranian condition is applied.")] + public readonly WDist SubterraneanTransitionDepth = new WDist(-1024); + + [Desc("Dig animation image to play when transitioning.")] + public readonly string SubterraneanTransitionImage = null; + + [SequenceReference("SubterraneanTransitionImage")] + [Desc("Dig animation image to play when transitioning.")] + public readonly string SubterraneanTransitionSequence = null; + + [PaletteReference] + public readonly string SubterraneanTransitionPalette = "effect"; + + public readonly string SubterraneanTransitionSound = null; + public override object Create(ActorInitializer init) { return new Mobile(init, this); } static object LoadSpeeds(MiniYaml y) @@ -344,6 +377,7 @@ namespace OpenRA.Mods.Common.Traits CPos fromCell, toCell; public SubCell FromSubCell, ToSubCell; int tunnelToken = ConditionManager.InvalidConditionToken; + int subterraneanToken = ConditionManager.InvalidConditionToken; ConditionManager conditionManager; [Sync] public int Facing @@ -373,11 +407,23 @@ namespace OpenRA.Mods.Common.Traits ToSubCell = toSub; AddInfluence(); + // Tunnel condition is added/removed when starting the transition between layers if (toCell.Layer == CustomMovementLayerType.Tunnel && conditionManager != null && !string.IsNullOrEmpty(Info.TunnelCondition) && tunnelToken == ConditionManager.InvalidConditionToken) tunnelToken = conditionManager.GrantCondition(self, Info.TunnelCondition); else if (toCell.Layer != CustomMovementLayerType.Tunnel && tunnelToken != ConditionManager.InvalidConditionToken) tunnelToken = conditionManager.RevokeCondition(self, tunnelToken); + + // Play submerging animation as soon as it starts to submerge (before applying the condition) + if (toCell.Layer == CustomMovementLayerType.Subterranean && fromCell.Layer != CustomMovementLayerType.Subterranean) + { + if (!string.IsNullOrEmpty(Info.SubterraneanTransitionSequence)) + self.World.AddFrameEndTask(w => w.Add(new SpriteEffect(self.World.Map.CenterOfCell(fromCell), self.World, Info.SubterraneanTransitionImage, + Info.SubterraneanTransitionSequence, Info.SubterraneanTransitionPalette))); + + if (!string.IsNullOrEmpty(Info.SubterraneanTransitionSound)) + Game.Sound.Play(SoundType.World, Info.SubterraneanTransitionSound); + } } public Mobile(ActorInitializer init, MobileInfo info) @@ -460,6 +506,32 @@ namespace OpenRA.Mods.Common.Traits { CenterPosition = pos; self.World.UpdateMaps(self, this); + + // HACK: The submerging conditions must be applied part way through a move, and this is the only method that gets called + // at the right times to detect this + if (toCell.Layer == CustomMovementLayerType.Subterranean) + { + var depth = self.World.Map.DistanceAboveTerrain(self.CenterPosition); + if (subterraneanToken == ConditionManager.InvalidConditionToken && depth < Info.SubterraneanTransitionDepth && conditionManager != null + && !string.IsNullOrEmpty(Info.SubterraneanCondition)) + subterraneanToken = conditionManager.GrantCondition(self, Info.SubterraneanCondition); + } + else if (subterraneanToken != ConditionManager.InvalidConditionToken) + { + var depth = self.World.Map.DistanceAboveTerrain(self.CenterPosition); + if (depth > Info.SubterraneanTransitionDepth) + { + subterraneanToken = conditionManager.RevokeCondition(self, subterraneanToken); + + // HACK: the submerging animation and sound won't play if a condition isn't defined + if (!string.IsNullOrEmpty(Info.SubterraneanTransitionSound)) + Game.Sound.Play(SoundType.World, Info.SubterraneanTransitionSound); + + if (!string.IsNullOrEmpty(Info.SubterraneanTransitionSequence)) + self.World.AddFrameEndTask(w => w.Add(new SpriteEffect(self.World.Map.CenterOfCell(fromCell), self.World, Info.SubterraneanTransitionImage, + Info.SubterraneanTransitionSequence, Info.SubterraneanTransitionPalette))); + } + } } public void AddedToWorld(Actor self) diff --git a/OpenRA.Mods.Common/Traits/ProductionFromMapEdge.cs b/OpenRA.Mods.Common/Traits/ProductionFromMapEdge.cs index 09472f1116..e485f7e47b 100644 --- a/OpenRA.Mods.Common/Traits/ProductionFromMapEdge.cs +++ b/OpenRA.Mods.Common/Traits/ProductionFromMapEdge.cs @@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Traits if (mobileInfo != null) location = self.World.Map.ChooseClosestMatchingEdgeCell(self.Location, - c => mobileInfo.CanEnterCell(self.World, null, c) && domainIndex.IsPassable(c, destination, passable)); + c => mobileInfo.CanEnterCell(self.World, null, c) && domainIndex.IsPassable(c, destination, mobileInfo, passable)); } // No suitable spawn location could be found, so production has failed. diff --git a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs index 73201f3b42..9646e555d9 100644 --- a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs +++ b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs @@ -37,13 +37,17 @@ namespace OpenRA.Mods.Common.Traits domainIndexes[mc] = new MovementClassDomainIndex(world, mc); } - public bool IsPassable(CPos p1, CPos p2, uint movementClass) + public bool IsPassable(CPos p1, CPos p2, MobileInfo mi, uint movementClass) { // HACK: Work around units in other movement layers from being blocked // when the point in the main layer is not pathable if (p1.Layer != 0 || p2.Layer != 0) return true; + // HACK: Workaround until we can generalize movement classes + if (mi.Subterranean) + return true; + return domainIndexes[movementClass].IsPassable(p1, p2); } diff --git a/OpenRA.Mods.Common/Traits/World/PathFinder.cs b/OpenRA.Mods.Common/Traits/World/PathFinder.cs index 6ed4d28d96..d6906ff34c 100644 --- a/OpenRA.Mods.Common/Traits/World/PathFinder.cs +++ b/OpenRA.Mods.Common/Traits/World/PathFinder.cs @@ -69,7 +69,7 @@ namespace OpenRA.Mods.Common.Traits if (domainIndex != null) { var passable = mi.GetMovementClass(world.Map.Rules.TileSet); - if (!domainIndex.IsPassable(source, target, (uint)passable)) + if (!domainIndex.IsPassable(source, target, mi, (uint)passable)) return EmptyPath; } @@ -103,7 +103,7 @@ namespace OpenRA.Mods.Common.Traits if (domainIndex != null) { var passable = mi.GetMovementClass(world.Map.Rules.TileSet); - tilesInRange = new List(tilesInRange.Where(t => domainIndex.IsPassable(source, t, (uint)passable))); + tilesInRange = new List(tilesInRange.Where(t => domainIndex.IsPassable(source, t, mi, (uint)passable))); if (!tilesInRange.Any()) return EmptyPath; } diff --git a/OpenRA.Mods.Common/Traits/World/SubterraneanActorLayer.cs b/OpenRA.Mods.Common/Traits/World/SubterraneanActorLayer.cs new file mode 100644 index 0000000000..93d87115fc --- /dev/null +++ b/OpenRA.Mods.Common/Traits/World/SubterraneanActorLayer.cs @@ -0,0 +1,103 @@ +#region Copyright & License Information +/* + * Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Traits +{ + public class SubterraneanActorLayerInfo : ITraitInfo + { + [Desc("Terrain type of the underground layer.")] + public readonly string TerrainType = "Subterranean"; + + [Desc("Height offset relative to the smoothed terrain for movement.")] + public readonly WDist HeightOffset = -new WDist(2048); + + [Desc("Cell radius for smoothing adjacent cell heights.")] + public readonly int SmoothingRadius = 2; + + public object Create(ActorInitializer init) { return new SubterraneanActorLayer(init.Self, this); } + } + + public class SubterraneanActorLayer : ICustomMovementLayer + { + readonly Map map; + + readonly byte terrainIndex; + readonly CellLayer height; + + public SubterraneanActorLayer(Actor self, SubterraneanActorLayerInfo info) + { + map = self.World.Map; + terrainIndex = self.World.Map.Rules.TileSet.GetTerrainIndex(info.TerrainType); + height = new CellLayer(map); + foreach (var c in map.AllCells) + { + var neighbourCount = 0; + var neighbourHeight = 0; + for (var dy = -info.SmoothingRadius; dy <= info.SmoothingRadius; dy++) + { + for (var dx = -info.SmoothingRadius; dx <= info.SmoothingRadius; dx++) + { + var neighbour = c + new CVec(dx, dy); + if (!map.AllCells.Contains(neighbour)) + continue; + + neighbourCount++; + neighbourHeight += map.Height[neighbour]; + } + } + + height[c] = info.HeightOffset.Length + neighbourHeight * 512 / neighbourCount; + } + } + + bool ICustomMovementLayer.EnabledForActor(ActorInfo a, MobileInfo mi) { return mi.Subterranean; } + byte ICustomMovementLayer.Index { get { return CustomMovementLayerType.Subterranean; } } + bool ICustomMovementLayer.InteractsWithDefaultLayer { get { return false; } } + + WPos ICustomMovementLayer.CenterOfCell(CPos cell) + { + var pos = map.CenterOfCell(cell); + return pos + new WVec(0, 0, height[cell] - pos.Z); + } + + bool ValidTransitionCell(CPos cell, MobileInfo mi) + { + var terrainType = map.GetTerrainInfo(cell).Type; + if (!mi.SubterraneanTransitionTerrainTypes.Contains(terrainType) && mi.SubterraneanTransitionTerrainTypes.Any()) + return false; + + if (mi.SubterraneanTransitionOnRamps) + return true; + + var tile = map.Tiles[cell]; + var ti = map.Rules.TileSet.GetTileInfo(tile); + return ti == null || ti.RampType == 0; + } + + int ICustomMovementLayer.EntryMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return ValidTransitionCell(cell, mi) ? mi.SubterraneanTransitionCost : int.MaxValue; + } + + int ICustomMovementLayer.ExitMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return ValidTransitionCell(cell, mi) ? mi.SubterraneanTransitionCost : int.MaxValue; + } + + byte ICustomMovementLayer.GetTerrainIndex(CPos cell) + { + return terrainIndex; + } + } +} diff --git a/mods/ts/rules/nod-vehicles.yaml b/mods/ts/rules/nod-vehicles.yaml index 04b8f6c39e..cf38e7380d 100644 --- a/mods/ts/rules/nod-vehicles.yaml +++ b/mods/ts/rules/nod-vehicles.yaml @@ -291,12 +291,21 @@ SAPC: TurnSpeed: 5 Speed: 71 RequiresCondition: !empdisable && !loading + Subterranean: true + SubterraneanCondition: submerged + SubterraneanTransitionTerrainTypes: Clear, Rough + SubterraneanTransitionCost: 120 + SubterraneanTransitionSound: subdril1.aud + SubterraneanTransitionImage: dig + SubterraneanTransitionSequence: idle + TerrainSpeeds: + Subterranean: 120 Health: HP: 175 Armor: Type: Heavy RevealsShroud: - RequiresCondition: !inside-tunnel + RequiresCondition: !inside-tunnel && !submerged Range: 5c0 MaxHeightDelta: 3 Cargo: @@ -306,6 +315,10 @@ SAPC: UnloadVoice: Unload LoadingCondition: loading EjectOnDeath: true + WithVoxelBody: + RequiresCondition: !submerged + Targetable: + RequiresCondition: !inside-tunnel && !submerged SUBTANK: Inherits: ^Tank @@ -324,12 +337,21 @@ SUBTANK: TurnSpeed: 6 Speed: 71 Crushes: wall, crate, infantry + Subterranean: true + SubterraneanCondition: submerged + SubterraneanTransitionTerrainTypes: Clear, Rough + SubterraneanTransitionCost: 120 + SubterraneanTransitionSound: subdril1.aud + SubterraneanTransitionImage: dig + SubterraneanTransitionSequence: idle + TerrainSpeeds: + Subterranean: 120 Health: HP: 300 Armor: Type: Light RevealsShroud: - RequiresCondition: !inside-tunnel + RequiresCondition: !inside-tunnel && !submerged Range: 5c0 MaxHeightDelta: 3 Armament: @@ -337,6 +359,10 @@ SUBTANK: AttackFrontal: Voice: Attack AutoTarget: + WithVoxelBody: + RequiresCondition: !submerged + Targetable: + RequiresCondition: !inside-tunnel && !submerged STNK: Inherits: ^Tank diff --git a/mods/ts/rules/world.yaml b/mods/ts/rules/world.yaml index f17fcb7957..be84eba81e 100644 --- a/mods/ts/rules/world.yaml +++ b/mods/ts/rules/world.yaml @@ -60,6 +60,7 @@ TerrainGeometryOverlay: ExitsDebugOverlayManager: CliffBackImpassabilityLayer: + SubterraneanActorLayer: World: Inherits: ^BaseWorld diff --git a/mods/ts/sequences/misc.yaml b/mods/ts/sequences/misc.yaml index 12c20edd12..e47cc334ba 100644 --- a/mods/ts/sequences/misc.yaml +++ b/mods/ts/sequences/misc.yaml @@ -631,3 +631,9 @@ tuntop03: tuntop04: Inherits: ^tuntop + +dig: + idle: + Length: * + ZOffset: 511 + Offset: 0, 0, 24 \ No newline at end of file diff --git a/mods/ts/tilesets/snow.yaml b/mods/ts/tilesets/snow.yaml index bae5ff7e89..0b1abe0d92 100644 --- a/mods/ts/tilesets/snow.yaml +++ b/mods/ts/tilesets/snow.yaml @@ -72,6 +72,9 @@ Terrain: Type: Rock TargetTypes: Ground Color: 44443C + TerrainType@Subterranean: + Type: Subterranean + Color: C7C9FA # Automatically generated. DO NOT EDIT! Templates: diff --git a/mods/ts/tilesets/temperate.yaml b/mods/ts/tilesets/temperate.yaml index 87450befd7..bb92bce8df 100644 --- a/mods/ts/tilesets/temperate.yaml +++ b/mods/ts/tilesets/temperate.yaml @@ -72,6 +72,9 @@ Terrain: Type: Rock TargetTypes: Ground Color: 44443C + TerrainType@Subterranean: + Type: Subterranean + Color: 745537 # Automatically generated. DO NOT EDIT! Templates: From 5c77c0dc2810c9b4722616d62f4fc7898b288e26 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 10 Jan 2017 18:54:01 +0000 Subject: [PATCH 12/19] Implement jumpjets. --- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 1 + OpenRA.Mods.Common/Traits/Mobile.cs | 29 +++++ .../Traits/World/DomainIndex.cs | 2 +- .../Traits/World/JumpjetActorLayer.cs | 103 ++++++++++++++++++ mods/ts/rules/gdi-infantry.yaml | 66 +++++++++++ mods/ts/rules/world.yaml | 1 + mods/ts/sequences/infantry.yaml | 13 +++ mods/ts/tilesets/snow.yaml | 3 + mods/ts/tilesets/temperate.yaml | 3 + 9 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 OpenRA.Mods.Common/Traits/World/JumpjetActorLayer.cs diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 4978ff8c3c..3dbfd11e0b 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -797,6 +797,7 @@ + diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index 3e719cf2e9..4692bd7067 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -43,6 +43,7 @@ namespace OpenRA.Mods.Common.Traits { public const byte Tunnel = 1; public const byte Subterranean = 2; + public const byte Jumpjet = 3; } [Desc("Unit is able to move.")] @@ -115,6 +116,22 @@ namespace OpenRA.Mods.Common.Traits public readonly string SubterraneanTransitionSound = null; + [Desc("Can this unit fly over obsticals?")] + public readonly bool Jumpjet = false; + + [GrantedConditionReference] + [Desc("The condition to grant to self while flying.")] + public readonly string JumpjetCondition = null; + + [Desc("Pathfinding cost for taking off or landing.")] + public readonly int JumpjetTransitionCost = 0; + + [Desc("The terrain types that this actor can transition on. Leave empty to allow any.")] + public readonly HashSet JumpjetTransitionTerrainTypes = new HashSet(); + + [Desc("Can this actor transition on slopes?")] + public readonly bool JumpjetTransitionOnRamps = true; + public override object Create(ActorInitializer init) { return new Mobile(init, this); } static object LoadSpeeds(MiniYaml y) @@ -378,6 +395,7 @@ namespace OpenRA.Mods.Common.Traits public SubCell FromSubCell, ToSubCell; int tunnelToken = ConditionManager.InvalidConditionToken; int subterraneanToken = ConditionManager.InvalidConditionToken; + int jumpjetToken = ConditionManager.InvalidConditionToken; ConditionManager conditionManager; [Sync] public int Facing @@ -424,6 +442,12 @@ namespace OpenRA.Mods.Common.Traits if (!string.IsNullOrEmpty(Info.SubterraneanTransitionSound)) Game.Sound.Play(SoundType.World, Info.SubterraneanTransitionSound); } + + // Grant the jumpjet condition as soon as the actor starts leaving the ground layer + // The condition is revoked from FinishedMoving + if (toCell.Layer == CustomMovementLayerType.Jumpjet && conditionManager != null && + !string.IsNullOrEmpty(Info.JumpjetCondition) && jumpjetToken == ConditionManager.InvalidConditionToken) + jumpjetToken = conditionManager.GrantCondition(self, Info.JumpjetCondition); } public Mobile(ActorInitializer init, MobileInfo info) @@ -699,6 +723,11 @@ namespace OpenRA.Mods.Common.Traits public void FinishedMoving(Actor self) { + // Need to check both fromCell and toCell because FinishedMoving is called multiple times during the move + // and that condition guarantees that this only runs when the unit has finished landing. + if (fromCell.Layer != CustomMovementLayerType.Jumpjet && toCell.Layer != CustomMovementLayerType.Jumpjet && jumpjetToken != ConditionManager.InvalidConditionToken) + jumpjetToken = conditionManager.RevokeCondition(self, jumpjetToken); + // Only make actor crush if it is on the ground if (!self.IsAtGroundLevel()) return; diff --git a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs index 9646e555d9..edac9623b2 100644 --- a/OpenRA.Mods.Common/Traits/World/DomainIndex.cs +++ b/OpenRA.Mods.Common/Traits/World/DomainIndex.cs @@ -45,7 +45,7 @@ namespace OpenRA.Mods.Common.Traits return true; // HACK: Workaround until we can generalize movement classes - if (mi.Subterranean) + if (mi.Subterranean || mi.Jumpjet) return true; return domainIndexes[movementClass].IsPassable(p1, p2); diff --git a/OpenRA.Mods.Common/Traits/World/JumpjetActorLayer.cs b/OpenRA.Mods.Common/Traits/World/JumpjetActorLayer.cs new file mode 100644 index 0000000000..ccfc0e5268 --- /dev/null +++ b/OpenRA.Mods.Common/Traits/World/JumpjetActorLayer.cs @@ -0,0 +1,103 @@ +#region Copyright & License Information +/* + * Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Traits +{ + public class JumpjetActorLayerInfo : ITraitInfo + { + [Desc("Terrain type of the airborne layer.")] + public readonly string TerrainType = "Jumpjet"; + + [Desc("Height offset relative to the smoothed terrain for movement.")] + public readonly WDist HeightOffset = new WDist(2304); + + [Desc("Cell radius for smoothing adjacent cell heights.")] + public readonly int SmoothingRadius = 2; + + public object Create(ActorInitializer init) { return new JumpjetActorLayer(init.Self, this); } + } + + public class JumpjetActorLayer : ICustomMovementLayer + { + readonly Map map; + + readonly byte terrainIndex; + readonly CellLayer height; + + public JumpjetActorLayer(Actor self, JumpjetActorLayerInfo info) + { + map = self.World.Map; + terrainIndex = self.World.Map.Rules.TileSet.GetTerrainIndex(info.TerrainType); + height = new CellLayer(map); + foreach (var c in map.AllCells) + { + var neighbourCount = 0; + var neighbourHeight = 0; + for (var dy = -info.SmoothingRadius; dy <= info.SmoothingRadius; dy++) + { + for (var dx = -info.SmoothingRadius; dx <= info.SmoothingRadius; dx++) + { + var neighbour = c + new CVec(dx, dy); + if (!map.AllCells.Contains(neighbour)) + continue; + + neighbourCount++; + neighbourHeight += map.Height[neighbour]; + } + } + + height[c] = info.HeightOffset.Length + neighbourHeight * 512 / neighbourCount; + } + } + + bool ICustomMovementLayer.EnabledForActor(ActorInfo a, MobileInfo mi) { return mi.Jumpjet; } + byte ICustomMovementLayer.Index { get { return CustomMovementLayerType.Jumpjet; } } + bool ICustomMovementLayer.InteractsWithDefaultLayer { get { return true; } } + + WPos ICustomMovementLayer.CenterOfCell(CPos cell) + { + var pos = map.CenterOfCell(cell); + return pos + new WVec(0, 0, height[cell] - pos.Z); + } + + bool ValidTransitionCell(CPos cell, MobileInfo mi) + { + var terrainType = map.GetTerrainInfo(cell).Type; + if (!mi.JumpjetTransitionTerrainTypes.Contains(terrainType) && mi.JumpjetTransitionTerrainTypes.Any()) + return false; + + if (mi.JumpjetTransitionOnRamps) + return true; + + var tile = map.Tiles[cell]; + var ti = map.Rules.TileSet.GetTileInfo(tile); + return ti == null || ti.RampType == 0; + } + + int ICustomMovementLayer.EntryMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return ValidTransitionCell(cell, mi) ? mi.JumpjetTransitionCost : int.MaxValue; + } + + int ICustomMovementLayer.ExitMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return ValidTransitionCell(cell, mi) ? mi.JumpjetTransitionCost : int.MaxValue; + } + + byte ICustomMovementLayer.GetTerrainIndex(CPos cell) + { + return terrainIndex; + } + } +} diff --git a/mods/ts/rules/gdi-infantry.yaml b/mods/ts/rules/gdi-infantry.yaml index 0c3eb63c06..3dd0867c7c 100644 --- a/mods/ts/rules/gdi-infantry.yaml +++ b/mods/ts/rules/gdi-infantry.yaml @@ -77,6 +77,11 @@ JUMPJET: VoiceSet: JumpJet Mobile: Speed: 56 + Jumpjet: True + JumpjetTransitionCost: 100 + JumpjetCondition: airborne + TerrainSpeeds: + Jumpjet: 110 Health: HP: 120 Armor: @@ -91,10 +96,71 @@ JUMPJET: AttackFrontal: Voice: Attack WithInfantryBody: + RequiresCondition: !airborne DefaultAttackSequence: attack + WithInfantryBody@flying: + RequiresCondition: airborne + DefaultAttackSequence: flying-attack + StandSequences: flying + MoveSequence: flying -TakeCover: + Hovers: + RequiresCondition: airborne ProducibleWithLevel: Prerequisites: barracks.upgraded + Targetable: + RequiresCondition: !airborne && !inside-tunnel + Targetable@AIRBORNE: + TargetTypes: Air + RequiresCondition: airborne + SpawnActorOnDeath@airborne: + Actor: JUMPJET.Husk + RequiresCondition: airborne + DeathSounds@airborne: + RequiresCondition: airborne + WithDeathAnimation@normal: + RequiresCondition: !airborne + WithDeathAnimation@explosion: + RequiresCondition: !airborne + WithDeathAnimation@energy: + RequiresCondition: !airborne + WithDeathAnimation: + RequiresCondition: !airborne + DeathSounds@NORMAL: + RequiresCondition: !airborne + DeathSounds@EXPLOSION: + RequiresCondition: !airborne + DeathSounds@BURNED: + RequiresCondition: !airborne + DeathSounds@ZAPPED: + RequiresCondition: !airborne + SpawnActorOnDeath: + RequiresCondition: !airborne + SpawnActorOnDeath@FLAMEGUY: + RequiresCondition: !airborne + +JUMPJET.Husk: + RenderSprites: + BodyOrientation: + QuantizedFacings: 1 + Aircraft: + HiddenUnderFog: + Type: GroundPosition + AutoTargetIgnore: + ScriptTriggers: + Tooltip: + Name: Jumpjet Infantry + FallsToEarth: + Velocity: 86 + Explosion: + Aircraft: + Speed: 186 + CanHover: True + RenderSprites: + Image: jumpjet + AutoSelectionSize: + WithSpriteBody: + Sequence: die-falling GHOST: Inherits: ^Soldier diff --git a/mods/ts/rules/world.yaml b/mods/ts/rules/world.yaml index be84eba81e..59aaba54f1 100644 --- a/mods/ts/rules/world.yaml +++ b/mods/ts/rules/world.yaml @@ -61,6 +61,7 @@ ExitsDebugOverlayManager: CliffBackImpassabilityLayer: SubterraneanActorLayer: + JumpjetActorLayer: World: Inherits: ^BaseWorld diff --git a/mods/ts/sequences/infantry.yaml b/mods/ts/sequences/infantry.yaml index ae5f6e5197..f33237d841 100644 --- a/mods/ts/sequences/infantry.yaml +++ b/mods/ts/sequences/infantry.yaml @@ -359,10 +359,18 @@ jumpjet: prone-stand: Facings: 8 ShadowStart: 451 + flying: + Facings: 8 + Length: 6 + Start: 292 + ShadowStart: 743 die-twirling: # TODO: animation for falling from sky starts at 436 Start: 445 Length: 6 ShadowStart: 896 + die-falling: + Start: 436 + Length: 9 die-flying: # TODO: animation for falling from sky starts at 436 Start: 445 Length: 6 @@ -379,6 +387,11 @@ jumpjet: Length: 6 Facings: 8 ShadowStart: 615 + flying-attack: + Start: 388 + Facings: 8 + Length: 6 + ShadowStart: 839 prone-attack: Start: 212 Length: 6 diff --git a/mods/ts/tilesets/snow.yaml b/mods/ts/tilesets/snow.yaml index 0b1abe0d92..7810b74277 100644 --- a/mods/ts/tilesets/snow.yaml +++ b/mods/ts/tilesets/snow.yaml @@ -75,6 +75,9 @@ Terrain: TerrainType@Subterranean: Type: Subterranean Color: C7C9FA + TerrainType@Jumpjet: + Type: Jumpjet + Color: C7C9FA # Automatically generated. DO NOT EDIT! Templates: diff --git a/mods/ts/tilesets/temperate.yaml b/mods/ts/tilesets/temperate.yaml index bb92bce8df..0a667dfb10 100644 --- a/mods/ts/tilesets/temperate.yaml +++ b/mods/ts/tilesets/temperate.yaml @@ -75,6 +75,9 @@ Terrain: TerrainType@Subterranean: Type: Subterranean Color: 745537 + TerrainType@Jumpjet: + Type: Jumpjet + Color: 745537 # Automatically generated. DO NOT EDIT! Templates: From 4f41b6e9ce4d5786880a81673d25ceabde2d7a8b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 11 Jan 2017 22:08:22 +0000 Subject: [PATCH 13/19] Implement elevated bridge placeholders. --- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 2 + OpenRA.Mods.Common/Traits/Mobile.cs | 1 + .../Traits/World/ElevatedBridgeLayer.cs | 95 +++++++++++++++++++ .../Traits/World/ElevatedBridgePlaceholder.cs | 75 +++++++++++++++ .../UtilityCommands/ImportTSMapCommand.cs | 4 - mods/ts/rules/bridges.yaml | 31 ++++++ mods/ts/sequences/bridges.yaml | 33 +++++++ 7 files changed, 237 insertions(+), 4 deletions(-) create mode 100644 OpenRA.Mods.Common/Traits/World/ElevatedBridgeLayer.cs create mode 100644 OpenRA.Mods.Common/Traits/World/ElevatedBridgePlaceholder.cs diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index 3dbfd11e0b..89b91993f0 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -798,6 +798,8 @@ + + diff --git a/OpenRA.Mods.Common/Traits/Mobile.cs b/OpenRA.Mods.Common/Traits/Mobile.cs index 4692bd7067..c9b0022e6c 100644 --- a/OpenRA.Mods.Common/Traits/Mobile.cs +++ b/OpenRA.Mods.Common/Traits/Mobile.cs @@ -44,6 +44,7 @@ namespace OpenRA.Mods.Common.Traits public const byte Tunnel = 1; public const byte Subterranean = 2; public const byte Jumpjet = 3; + public const byte ElevatedBridge = 4; } [Desc("Unit is able to move.")] diff --git a/OpenRA.Mods.Common/Traits/World/ElevatedBridgeLayer.cs b/OpenRA.Mods.Common/Traits/World/ElevatedBridgeLayer.cs new file mode 100644 index 0000000000..1683a36bce --- /dev/null +++ b/OpenRA.Mods.Common/Traits/World/ElevatedBridgeLayer.cs @@ -0,0 +1,95 @@ +#region Copyright & License Information +/* + * Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using System.Collections.Generic; +using OpenRA.Graphics; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Traits +{ + public class ElevatedBridgeLayerInfo : ITraitInfo, Requires, ILobbyCustomRulesIgnore + { + [Desc("Terrain type used by cells outside any elevated bridge footprint.")] + public readonly string ImpassableTerrainType = "Impassable"; + + public object Create(ActorInitializer init) { return new ElevatedBridgeLayer(init.Self, this); } + } + + // For now this is mostly copies TerrainTunnelLayer. This will change once bridge destruction is implemented + public class ElevatedBridgeLayer : ICustomMovementLayer, IWorldLoaded + { + readonly Map map; + readonly CellLayer cellCenters; + readonly CellLayer terrainIndices; + readonly HashSet ends = new HashSet(); + bool enabled; + + public ElevatedBridgeLayer(Actor self, ElevatedBridgeLayerInfo info) + { + map = self.World.Map; + cellCenters = new CellLayer(map); + terrainIndices = new CellLayer(map); + terrainIndices.Clear(map.Rules.TileSet.GetTerrainIndex(info.ImpassableTerrainType)); + } + + public void WorldLoaded(World world, WorldRenderer wr) + { + var domainIndex = world.WorldActor.Trait(); + foreach (var tti in world.WorldActor.Info.TraitInfos()) + { + enabled = true; + + var terrain = map.Rules.TileSet.GetTerrainIndex(tti.TerrainType); + foreach (var c in tti.BridgeCells()) + { + var uv = c.ToMPos(map); + terrainIndices[uv] = terrain; + + var pos = map.CenterOfCell(c); + cellCenters[uv] = pos - new WVec(0, 0, pos.Z - 512 * tti.Height); + } + + var end = tti.EndCells(); + domainIndex.AddFixedConnection(end); + foreach (var c in end) + { + // Need to explicitly set both default and tunnel layers, otherwise the .Contains check will fail + ends.Add(new CPos(c.X, c.Y, 0)); + ends.Add(new CPos(c.X, c.Y, CustomMovementLayerType.ElevatedBridge)); + } + } + } + + bool ICustomMovementLayer.EnabledForActor(ActorInfo a, MobileInfo mi) { return enabled; } + byte ICustomMovementLayer.Index { get { return CustomMovementLayerType.ElevatedBridge; } } + bool ICustomMovementLayer.InteractsWithDefaultLayer { get { return true; } } + + WPos ICustomMovementLayer.CenterOfCell(CPos cell) + { + return cellCenters[cell]; + } + + int ICustomMovementLayer.EntryMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return ends.Contains(cell) ? 0 : int.MaxValue; + } + + int ICustomMovementLayer.ExitMovementCost(ActorInfo a, MobileInfo mi, CPos cell) + { + return ends.Contains(cell) ? 0 : int.MaxValue; + } + + byte ICustomMovementLayer.GetTerrainIndex(CPos cell) + { + return terrainIndices[cell]; + } + } +} diff --git a/OpenRA.Mods.Common/Traits/World/ElevatedBridgePlaceholder.cs b/OpenRA.Mods.Common/Traits/World/ElevatedBridgePlaceholder.cs new file mode 100644 index 0000000000..21cd19895f --- /dev/null +++ b/OpenRA.Mods.Common/Traits/World/ElevatedBridgePlaceholder.cs @@ -0,0 +1,75 @@ +#region Copyright & License Information +/* + * Copyright 2007-2017 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using System.Collections.Generic; +using System.Linq; +using OpenRA.Traits; + +namespace OpenRA.Mods.Common.Traits +{ + public enum ElevatedBridgePlaceholderOrientation { X, Y } + + [Desc("Placeholder to make static elevated bridges work.", + "Define individual trait instances for each elevated bridge footprint in the map.")] + public class ElevatedBridgePlaceholderInfo : TraitInfo, Requires, ILobbyCustomRulesIgnore + { + [FieldLoader.Require] + [Desc("Location of the bridge")] + public readonly CPos Location = CPos.Zero; + + [FieldLoader.Require] + [Desc("Orientation of the bridge.")] + public readonly ElevatedBridgePlaceholderOrientation Orientation; + + [FieldLoader.Require] + [Desc("Length of the bridge")] + public readonly int Length = 0; + + [FieldLoader.Require] + [Desc("Height of the bridge in map height steps.")] + public readonly byte Height = 0; + + [Desc("Terrain type of the bridge.")] + public readonly string TerrainType = "Road"; + + public IEnumerable BridgeCells() + { + var dimensions = Orientation == ElevatedBridgePlaceholderOrientation.X ? + new CVec(Length + 1, 3) : new CVec(3, Length + 1); + + for (var y = 0; y < dimensions.Y; y++) + for (var x = 0; x < dimensions.X; x++) + yield return Location + new CVec(x, y); + } + + public IEnumerable EndCells() + { + if (Orientation == ElevatedBridgePlaceholderOrientation.X) + { + for (var y = 0; y < 3; y++) + { + yield return Location + new CVec(0, y); + yield return Location + new CVec(Length, y); + } + } + else + { + for (var x = 0; x < 3; x++) + { + yield return Location + new CVec(x, 0); + yield return Location + new CVec(x, Length); + } + } + } + } + + public class ElevatedBridgePlaceholder { } +} diff --git a/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs b/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs index 1e1be0b113..11f4c98afc 100644 --- a/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs +++ b/OpenRA.Mods.TS/UtilityCommands/ImportTSMapCommand.cs @@ -31,10 +31,8 @@ namespace OpenRA.Mods.TS.UtilityCommands { { 0x01, "gasand" }, { 0x03, "gawall" }, - /* { 0x18, "bridge1" }, { 0x19, "bridge2" }, - */ { 0x1A, "nawall" }, { 0x27, "tracks01" }, { 0x28, "tracks02" }, @@ -56,10 +54,8 @@ namespace OpenRA.Mods.TS.UtilityCommands { 0x38, "tracktunnel02" }, { 0x39, "tracktunnel03" }, { 0x3A, "tracktunnel04" }, - /* { 0x3B, "railbrdg1" }, { 0x3C, "railbrdg2" }, - */ { 0x3D, "crat01" }, { 0x3E, "crat02" }, { 0x3F, "crat03" }, diff --git a/mods/ts/rules/bridges.yaml b/mods/ts/rules/bridges.yaml index 4eb711f46a..091fe027a1 100644 --- a/mods/ts/rules/bridges.yaml +++ b/mods/ts/rules/bridges.yaml @@ -152,3 +152,34 @@ LOBRDG_R_SW: NeighbourOffsets: 1,-1 EditorOnlyTooltip: Name: Bridge Ramp + +^ElevatedBridgePlaceholder: + AlwaysVisible: + RenderSprites: + Palette: terraindecoration + WithSpriteBody: + AutoSelectionSize: + AppearsOnRadar: + RadarColorFromTerrain: + Terrain: Bridge + BodyOrientation: + UseClassicPerspectiveFudge: false + QuantizedFacings: 1 + Tooltip: + Name: Bridge + Immobile: + OccupiesSpace: false + CustomSelectionSize: + CustomBounds: 96, 144 + +BRIDGE1: + Inherits: ^ElevatedBridgePlaceholder + +BRIDGE2: + Inherits: ^ElevatedBridgePlaceholder + +RAILBRDG1: + Inherits: ^ElevatedBridgePlaceholder + +RAILBRDG2: + Inherits: ^ElevatedBridgePlaceholder diff --git a/mods/ts/sequences/bridges.yaml b/mods/ts/sequences/bridges.yaml index 76102f50f5..ecfb189457 100644 --- a/mods/ts/sequences/bridges.yaml +++ b/mods/ts/sequences/bridges.yaml @@ -62,3 +62,36 @@ lobrdg_r_sw: idle: lobrdg25 damaged-idle: lobrdg26 +bridge1: + idle: bridge + # Disabled to avoid glitches until shadow rendering is fixed + # ShadowStart: 18 + UseTilesetExtension: true + ZRamp: 1 + Offset: 0, -13, 3.5 + +bridge2: + idle: bridge + Start: 9 + # Disabled to avoid glitches until shadow rendering is fixed + # ShadowStart: 27 + UseTilesetExtension: true + ZRamp: 1 + Offset: 0, -25, 3.5 + +railbrdg1: + idle: railbrdg + # Disabled to avoid glitches until shadow rendering is fixed + # ShadowStart: 18 + UseTilesetExtension: true + ZRamp: 1 + Offset: 0, -13, 3.5 + +railbrdg2: + idle: railbrdg + Start: 9 + # Disabled to avoid glitches until shadow rendering is fixed + # ShadowStart: 27 + UseTilesetExtension: true + ZRamp: 1 + Offset: 0, -25, 3.5 From d79b2c0869e9c62068e85641faf96a661cb5b63b Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 8 Jan 2017 20:14:57 +0000 Subject: [PATCH 14/19] Hook up tunnels on Hot Springs. --- mods/ts/maps/springs/map.yaml | 91 +++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 21 deletions(-) diff --git a/mods/ts/maps/springs/map.yaml b/mods/ts/maps/springs/map.yaml index 6a79ba16a8..92314e49ec 100644 --- a/mods/ts/maps/springs/map.yaml +++ b/mods/ts/maps/springs/map.yaml @@ -14,7 +14,7 @@ Bounds: 2,8,77,126 Visibility: Lobby -Categories: Conquest, Original TS Map +Categories: Conquest, Original FS Map, Playable Players: PlayerReference@Neutral: @@ -816,44 +816,93 @@ Actors: Actor222: tuntop03 Owner: Neutral Location: 109,4 - Actor223: tuntop02 - Owner: Neutral - Location: 106,-16 Actor224: tuntop04 Owner: Neutral Location: 87,28 Actor225: tuntop03 Owner: Neutral Location: 73,34 - Actor226: tuntop02 - Owner: Neutral - Location: 86,13 Actor227: tuntop01 Owner: Neutral Location: 60,34 Actor228: tuntop04 Owner: Neutral Location: 42,13 - Actor229: tuntop02 - Owner: Neutral - Location: 40,-2 - Actor230: tuntop01 - Owner: Neutral - Location: 51,-6 - Actor231: tuntop02 - Owner: Neutral - Location: 72,-28 - Actor232: tuntop01 - Owner: Neutral - Location: 77,-38 Actor233: tuntop03 Owner: Neutral Location: 93,-37 - Actor234: tuntop01 + Actor237: tuntop02 Owner: Neutral - Location: 95,3 + Location: 107,-16 + Actor238: tuntop01 + Owner: Neutral + Location: 77,-37 + Actor239: tuntop01 + Owner: Neutral + Location: 95,4 + Actor240: tuntop02 + Owner: Neutral + Location: 73,-28 + Actor234: tuntop02 + Owner: Neutral + Location: 42,-2 + Actor236: tuntop01 + Owner: Neutral + Location: 51,-5 + Actor235: tuntop02 + Owner: Neutral + Location: 88,13 Rules: World: GlobalLightingPaletteEffect: Ambient: 0.62 + TerrainTunnelLayer: + TerrainTunnel@a: + Location: 60, 35 + Dimensions: 14, 3 + Footprint: o____________o o____________o o____________o + Height: 2 + TerrainType: Clear + TerrainTunnel@b: + Location: 43, -2 + Dimensions: 3, 16 + Footprint: ooo ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ooo + Height: 2 + TerrainType: Clear + TerrainTunnel@c: + Location: 88, 13 + Dimensions: 4, 16 + Footprint: xooo x___ x___ x___ x___ x___ x___ x___ x___ x___ x___ x___ x___ x___ x___ ooox + Height: 2 + TerrainType: Clear + TerrainTunnel@d: + Location: 51, -4 + Dimensions: 18, 3 + Footprint: o________________o o________________o o________________o + Height: 2 + TerrainType: Clear + TerrainTunnel@e: + Location: 95, 5 + Dimensions: 15, 3 + Footprint: o_____________o o_____________o o_____________o + Height: 2 + TerrainType: Clear + TerrainTunnel@f: + Location: 74, -28 + Dimensions: 3, 17 + Footprint: ooo ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ooo + Height: 2 + TerrainType: Clear + TerrainTunnel@g: + Location: 108, -16 + Dimensions: 3, 10 + Footprint: ooo ___ ___ ___ ___ ___ ___ ___ ___ ooo + Height: 2 + TerrainType: Clear + TerrainTunnel@h: + Location: 77, -36 + Dimensions: 17, 3 + Footprint: o_______________o o_______________o o_______________o + Height: 2 + TerrainType: Clear \ No newline at end of file From 6f9a32ec3fdb44e01d8b17ca1aa2a017c4f0ebab Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 13 Jan 2017 19:06:33 +0000 Subject: [PATCH 15/19] Hook up bridges on Tread Lightly. --- mods/ts/maps/tread_l/map.bin | Bin 237617 -> 237617 bytes mods/ts/maps/tread_l/map.png | Bin 118970 -> 52166 bytes mods/ts/maps/tread_l/map.yaml | 679 ++++++++++++++++++++++++++++++---- 3 files changed, 603 insertions(+), 76 deletions(-) diff --git a/mods/ts/maps/tread_l/map.bin b/mods/ts/maps/tread_l/map.bin index 636a4d039f6518ef1a702ed4bf7a0509596d0452..20d4180e23eae1f681daf1cd230f4acacd0412a0 100644 GIT binary patch delta 351 zcmdmZfN$dgz73P?*^L<)j2T&tH_x;`!!%iT4$tO7r&CNoQD$RC7URuMt|`3idW>v( zj2wEK*9IMC;?iSe(qm-NV`SCaTornl2`I^+$H=I+*(G9;BV6U%nW!pv%|WPaZkfNm zWj^Chx2gA;RHiR@#K<>2{~6GEt$${;T9_W0+Fo-81~5{S<|eeXL))#)2vGs;XC zd&AfO)CLykoj&g-qu}%fNlYBu@4aE{5(DYjG+mpSiF>*#3zH#GUF7r)ml-`l;({P? zzUe<$fGnUG>+}QH7}=(8;AS$IK7o;`8Ofdtwm|(KUNV}3)YX9`_@@UbF=>LhHq%eJ oGFgFG4%08ZXB3});4jd41wkgx=>euptnCIIOxq1Om>FjP0Ey^x(*OVf delta 371 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 literal 118970 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⪼9K_g|s` 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 f@! Date: Fri, 13 Jan 2017 19:42:09 +0000 Subject: [PATCH 16/19] Hook up tunnels and elevated bridges in "A River Runs Near It". --- mods/ts/maps/arivruns/map.png | Bin 99295 -> 48032 bytes mods/ts/maps/arivruns/map.yaml | 71 +++++++++++++++++++++++---------- 2 files changed, 51 insertions(+), 20 deletions(-) diff --git a/mods/ts/maps/arivruns/map.png b/mods/ts/maps/arivruns/map.png index 6672192624b5549fef9f296a5224066a534db980..9be56f5aef800a1868b7a33c07201984090fcb1b 100644 GIT binary patch literal 48032 zcmV*MKx4m&P)00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBV707*naRCt`sy;paf*R>^zhxRyQbRUOfTe2+4q7p@j5g<{>g~~Z0 zCjtZ*z?`W-krI_DD_Ge+ZJ$22Pj^4um-~9heY?Nl{-)J?e^ql=)%6uaQ`);l$&=e)il6 z`NfM9^79wQ{i)alQ2@Cyq%uGcK#u zX~`w`{=WaC$AP{2qFU;>3>`hB{vQh%K=9h>qTD>0lC|oTESD#|3;gUtLekU6`~KW+ zNBkb1Ga#ItO-Q4h`oV4t11o@FvoS4Ov(rC1AmDt@ElkN=;pjhn;%Z~Hu_%kRth^YT zlc$fA<;g=?*?*!aPaKHLFJ7LOpYA&$KYKnF0K(5-9Fr$s%}8uIFSD~XS(>k^-mIPOd9Ia#SC0seM z@oLss1LFZ0SYWW@Zw}>UI9`#3MoCW27sJ5Z+UP0<1QXMHcb|Xgg^v*%F>kay+Ryj2 z3;+ap9u*J{4!$B|BVj<`&*K35U5Gs5dsfVQ^2w1O91udlb}}P##c7ER4VnwOcc$a< z<3o~9O*&Tv;{{`)uT~~Qz@!1|UXO{X5t+@68NYeL9M1^@S|c(&G4c-wgfsIgnQhc% zaC%LiJeV>IenNg>7X81xJSD##Ob713uU<*YGsk9)t1xB$PRPF)%iv#Lnlg_G**~0+ zv2;VuET-kkO7xBHKikL_xMoT7h;`#E1GoeX1W^H@XcptaS6@;8kI!qCLcf5(--F;H z#=XAK_+Fd`uGeD0EDm$-6S1R`n>zB?zf(?+%Atb?+;axH<;qlWe>nE?Lr=81{J5mz zqq5Z)H^($AwMt&Hsp)?hAZ#y{dKVk$H z6f7Y8)cpNlpE)AGK9DxAWn|xQSq{c>vTCe?`G$V{+D7-EWsJJ6G|RxwufQ?@0PHMh z%-?bEg67v@N+J4<2~$lUGK+aw7Ry7jJv-%gFdwjRtU_Dh_#Vxa-m8&=iMUSq{q=>s z6f)C6q}iI!y9R<*wEEOyUh28=(D`G;jqev&A9p-*=zyfAW3o~@DvPCKy9b2zj9gr9 z->1vwJWiHlk&k13wkA`BHA$3KrBW`-^Fw)gaxmc*Ig$ME#s^U1^pB=G6dC^xghoV*IFNrrSY^wd#mu)6YwM@&&174!Q$*Z8IfT zmZlvr;5k0Wu?jrL`v4TTPbTG^vuU?5eL!$)EiP}IjLV&qGxC~wymvMwADz$0#}{+* zp&8#fla_m@^@YVg7ff~>=jp|a6tZzCrbYvBESU*ZH^5L%9uERgzU!(*s~PB4s?!Eo zoa&dyKEDRcaFbB)f;`(0630taG6 z`Q4Gc435v5T|ORK=)t&u#>EKWI{e%K#4lc&HdaJlVu_+Ri=d@>e`o;MEg)cBy>Tif zuWu&Zy1~YQb%WPC*UiAAcHXFf0L#GoR^zdu5Fof6Y;{IHyx7hryta{$_jWQN7X>GR zh5ovE{_alJ?a(;khnEX-b;S<^7$2NY$_Hl?a^Eca&n{);%WDPs=0-vO{mqK}`L&Y# z>z$H(yrY}k9NdJ-j^kOcO-sEHm&IzrjK*SUBxJst_PP*Sw3>ln-CT>4)ixmg*fE1j zZZe3C%odMIqcAA5`B&wfxhH)C!dlAQ%cN}9#tfiM$b5cODseq6jS)dYSOQNUtI3lG zb1oQ&h0Z(zWEJ2#Ja;rDV>1OQS4whvDewK=sQj7Tj&GgL$eUZ~#|8pkXP;jy%4gTw zK~c;Tyv~NefEFW&ia>2ZFq0r2HuXSI0f0O>n~}H8F3cuA7Crz1?|bijR^B#$-#?uS z7Jh!_xVd;a_r9pdf5#x=o0|!_cWTCrGxCvH^dIgRP`FZ%hZnMD%m-lb_qS^Dr`u)u z)Bw%Bt)$mdU{jr49G?qet%3B!kx;angNJ7qld@EraIpda(~lK1$R^FAEl#OCgMI;F zvo;Y}H*=Zc07SPN*2>a}{b6I0zXGSDBIV_b_OlBs+t^~dxH;kE^KNb*_ z%ss6bcjxL_whQRa%}>ddllfqmKQkX45N@m`0#|3PJSy9BahVx8Ae&X4uK^+vf`sf6 zAQ%W>V1PhY;e}&Kd1Y)?3Z;r{^hhJ}XwNxi?vKWw+3onomT^nZX64HpW%=krE?5uu zwo{QU1E0l!jT(TUSquOQ7c*cN!A7htv80-xGQM1gFJGH9i?SVD;SooMnY>5LPdbtV%cEVvopIeBV zoqgO)*ik8@{J|1lz(6GAWox-t&CL!kME3c$m<0m>EDZ#&kfqR$kKgYD4E{drCVXHl zgU^i%@$va|uz21))xL4OW8*x^*$G)Kk4NTbu&aa-u0g++!1K?)*Ykn@ziG@vYa)Ji zHD@M@Zuv})4@)W4zHS%Haao>0DKR8h%!IRM{>l23x}*63VP`2NbNQG|9)Cp|=6mh6 zvhIT0m}(hWu4f#Ph|`3K4RDMA0PwqmQ*v}XCr6X(5=)e2v2Fltso=eS2- zW#-9!v$KC{7TNDF<>ZSiIr)Qme09BKp6BJW>s9&iLOyUkZJf$(G@qE)ZSdNDhqlmt z55BLwZrT9Qbg?;R5V8#L1(knXN2AR(i&;WoRJfXh6Q8XYIcKJ@9oRdO&DpZV>m^vXdu~+5FYRZ`S)7}ZI0mAi@ zSvkFslIasKOMd#OteE*`CvZJ|Jh)!hjY+$@P?r~D4YSDOp)?_YfolyI0IVA_m8r_| zTv1LNpw|ErV^r!f`}+1e{_Xy({LlOKVAubv+4b%Cr`KxozaPxY-`=X3*Q!C_`rUIn z07nG?A0Y6?%Rzg%;GOGl!0v2JS!95~4h5jV>#!u?Qs9S?mj&N|O&IttQPY|l5NOqN z2y($Pi8>-Wu2~N6o16Ic^}Kv>IU8gq*k!t~m;^3lbD+}R8VOSu^9+@hr;k4iN;ENAB9k#{fvf_7Z9*^wrxY5ZUiu)DmTGn>G) zluIS4R!Z{xa8aIkHPb~Uw!pvu0Rj;Nz{%N^Y|OQ@RvI9H=fS~TYx#X(?)_U^31cB< zLcadHJ9&9{sr`7z?8NV#Ny^9OJ>T4{m`7Q@Fc!i4J7(UT)zjD5_@V-W57=Bf-z@q! zjrGDCQz)CDl?iK{W_}$2feFodSzfRJj9$^qUKhx>u=mQBi|T4TIG2;}Z{`En;nPcP z-&5m$0}x2^sye=bhio|};~OJ>0>WMtzJE<(S6 zuvkr+>o*wy!|9Isa@PD-rcjb659Wi#kJtd$8Zdzf0KgU)t}`zn)P#WN0hjTuZ3~vA zAej8c<&4<`Qu0T0z1Y{+#(#aSDqmjLudlZ8^$P@iK3b3;8xv|3!?Ib(smjg z$DK`^g38FJSBmC5!clg+=xu=#zizERn<~|!+q(q>JXoLvya5g(GJ&XRosO#Civu+%o=<`G*aRytk8c!9k?S*fQV?teIMTB3z@uE<$qZg!$}b z5LM16V!{8X$Bs#S?5IqQ9+5(F)I1-O)YNe)n4QV@e!OpZ=#Wgrj)gwY@8|FHEi8Mz zzPOqXQc54}MBpQMVgrvmQGD;i^=Bad{#MBVTQNw7z26b-hU6J)67aeuQrQI;6$rK$ z(sFJ&>*XOZuK-L#t~Fo+5es_lWs1nF>%ALAR@rNrmIyHySXhz^Li%f^Dq z$;FL|oI6={^O5IaRLg6}nDC}-;=7R%Gp$WMkQ2#)K+AnIKTVjzEcy&8~W z?rpc<2OR_cy?!l&lZ}L2S#JmL00{2*NuUHwL*@}Mfru@gou#B~RL9KU6LQ6zb5uY; zI()amX?EpooWL>-zrIm67FVXD?7U<^p=2z?$zaa$Jk+TDK0sj004_P!6EkF);1;S{ z5t0}p@k&_)`nVg%CyM@U?5RBkjBN%zw_=1+&iVI-B zXRAIDs@6Kw7?oS*HU54}rm@Eb6RMmTmiYLP8Uw*-2}w9AzSU$qrXLIt}c3y56E9U%WLr$;Nn)hNg5xSmC?Z@bI zVR-|_!q>|1JDI$JWxxtSoNj`vpdk?!JeyjY55qu!YPeelH7~5@q?U~Z2!C-kZ;(CV zf*&wxFfz6B+J>1R^G$lJb#rWxXsI$21ePwF@4@@dEhd9_h)s=cH6}wv9WZGD2skg) z@oN*p-f&Aq`M0}u`R3N%3w>y@5vB~^-bk72lazWn6;PiG>2YI@#zKH(que%5@cOBA zuz>LTm)Dx9Q#^-`fo5|0fB;lw>waz2+P*x#$0tzYijVB;#xf{XXQf_kUtdm>S;3i7 zDkkZ%L37_z?l@1G$GkZf{Qhzy*Wx(rO_{P5TYC3GS?+GmgaF~{R#ontt*O8YYCl{F zp9`z;Z?NusY5W0ALlEgECKmAzv*`>|iw_JY5|_)GUT9hd_Hz{j=vfQ6t>1lc zE+4pr)~B_#7+6Tx%`Wxua#6m&T`|`_<#Y_{W_~2b4h4)v%ZtEH13iUMjG#qTUMY?Dc-NogktW_qYmN0Ho zZrB|U7KAOAUMRK!X`wh_Hl5tA%apa98tVe{o&n+ZnW|jc)PVpGc4^)3W=146HLL=H z+Zf0-eN-BMpqGXqr<;%#!v}Gq>|4Rqf@Q#I4hDikYCJ$anEH0X+J$CIeXVc5WEQ2J zoM48rP5{b+v5+q=#m&u*1+LBcC9?~f$!iHP$oMa;$*`GfG@dN9Fq%Xv0O6l#O7?mnY2ik;=Hursl8U8U2VHo98}bT zhghI*?$iP>fG_Er=nN1TxpoBi6M%2;rS)OiHNgAc+RhmFAt(2ZTXti;ork_;7WL`* zCdJxv53m!n&R#x+I2_KR^9B#)?~K@Oo@)NbKa@1tYu`!01tqG0fB?GQDZM| zV^Mx=msbE)Qla|w^>?+(bE{@G5Tes@^ zT6+N@sHp7(t{M>&#(=@)&5GBT)OHHEba>9O8CV2%B3ic$_XF><6YLFJ!hJd&RN=YL zt)-05p9)+q3!0Ez!+i|}M->Z?j~5KXrw*6osYChh*g!|jz$a0*UY#)a_IMC1JKcl- zfaAmUMp_h~$NklS07YA1V%qFXJrjq~JM+_WVKE*GYPMaS=EC6DS&dp7!Nf#x)&Uw3^RQD} zi__AgcTQGhz8nux{5eRg-BL_Uyjjg|1unT%t` zan&7bA;P3)%K*`7O&|j&$UCxDl!4<7QCbxRC3Z2`mjobjx|Dq~x5FC%vAO#9&*!=< z11$J=4Y=51m4}x~K@5gn2HrV#YdW%Jfcwe8Lc|a-*7K8rYjk_VxNVzZSB71Ib_16t z5Udz0&YI@@IaqkG#4sjC4+c9Z7=|c1a)Kl+K0&_{Wvr2@T`$Z-C>gODwKg&nQxgKh zPMuGV1@7(T^{kvf*+D#7>*gQq_I@K)hUY9BpvCHX0fFUwglZEof!e-lb4SK=_&VI! z1Nlsi$JuPzF7{r3;+g=G1jkTz>HB27Ghxo2&^Twy<7;%+iMmKUI!4^>u7_Dmp6(*VURlx z06;7Fn@x<#d?jJ5#^C^9|M}^|^3!JyyP_l3C5S3f23`ug1lsk&Jm^=+h?$t3LO?bi z1B=pGXi7{6Blri_TC*EOzd+Cigr;Sy@gy`wFa`q4`RLhE$tj=Efv~TG_pzPJ|JKK;Mci~m^&ijhH_9-^U2yVgS1)T*&w4}|7H^n3$W8==w%_W-a)?; zgm)^N5we*9xCY#T>b0{qd2Od5SJurUUr(t-F(zy|OKUb6WSXpHab_vwOlXL_0ss*F zJ#SnMdu+?6F3W+@x;*vLu>8yb0@oa95@k$XW?o8EQycRON=BN}6_3osWJNG80_s%^ z)Hy!9m=B8Gu)+2V1Q>C>qw*wr0f8lf4QSeX+5y4WVL=Z}G)5?9h#?rmd240@vW20! z2y7x^;qm){;81Wv&=VbzYWZe552hE0PC#BQ7J|{5e4lnyr*Web>{yrpT2PUr@=+%^ z?^F+Via~1F0?#{V!a=?>OIf+Rnhs(mHt?#&L|8iy*V$?qZWzm8xt21EaXeTg_MT}X zul8DxCCYO8+B@>U|F8dBYOB}esBr^+{o=U%^x31X=71T7_`FujfUHGS;KT#>(-#ZE zx?m=zR=dMQIJmsp!o&s}^|(10?i1CG3Iz851Dz%`n-qK?T%XO=c${9u_rS*lk3q{@ zGl2*eh6V(j_tmP>@L<9Z0O8Wfk`yx&=9ptaP!ZV;P@A<_h})solk&M)+*VonZbx+* z`__2f7gXG>WdIa;ZofBq4F4i-F z1qG2;2LvsKp;aq-X<|dZ{Nw+W|L6bx|73CVnv5i7oy(vx4AtVMR@S0lAmIDS=M4*i zV-U>5C8_!cNOSl@9Y#=*gGzTW);0oH@sg_$Lo@H*1IH}3yI zzWeWg4Y>@=FmyZ?1rU(6*sW#2u^?vDqE826U6>y%amUv;DiGMJ-2%I%Q41rDAc5O#@@JSP& z#d&HLB#($4pb8N!(2zBFVlX9xiL)V>;fZ|*W#9fIj$sJ?3+|5w2*_ICdiZK4*fP*u z1+MbbgkD0XzXAl@O3=BO2E0GMsHYjDsx|iu1RS&;K#(VD7h%+AbDo-e|8W~@E+#?V zIuwLbm{n2BP_>wXR@(qTXiK&=(??8g))q`#5hoe=e;=ODb=4$rzL{$h;4=LA^-91~ z_~c5(07S`kbczZD2o@r103bk+i_>3jq7d*h$6ZsGb~_uLk7X^|3`V#Lv0JK)U55Gf zi*kH)TC!#boJ}2bK)@S~1_*pzIK9XVjTwV{KQ)a?PA`UHKA_e|eBA=)LjxZ7&t!t@ z#{ZA1*1Ve-L2z6hF{&V&0OAe@_3#1Q5WCw1=J54$U|KMRnS1|n-jgZGS`bPrAMO_b zwwH@?cC9RhnG=$nJg)XYgyn$r5#+%^ZT2k~{GPR%tX}>H=kvj$fQ!WWW(S+uJOBV7 z07*naRMt26$XFA$$m#F*YJtS|-|y7}X>D|L@>&EGEbIh=l@7@@b;3~nyaotbwt zP<(_cM3yQ8(-1DhyAQvXzyI~G0r(bYhC>?-ckh0b%g|Yi-~&=vuv|+6AYhG3o*$Zv z5DFU7>qy4~XsoD=jW_Z4p_-D_n)eC_LNO|5$|^xUT$p>Ov-17za$6KB}x z*W}na2!%W@E*yM2xGWj~a8~5pa!%G~)4`6sxmb{?@nMObIO=vX03dFx%civC!8yCZ zmWn2?{@v|rAeM^fnlK2vF4n)dDWQn;(bU~mQ$_`X&UA4X&p<0iK~T!F53hGlASlbUZkQ&Q&KHyc0Xrxb z4ooWc?KF!(>qxX(i<@Ie8;fTwATco$5;vB2AjpFwyTN<|?FQI$e0Zs;BiKatM+<}a zMx-IXx?YgaE{BOU767b8fM6ka#Nt?iZ}gSLYW4EC-nM$vK0?Jut+XM^ler3U%eI(b zNQEfB00b;(?s}~O0#m%595}^*wC>^DE`YBS%g3_?fce4#Ja`|=0{rn#rKg}_MlOYnO}hHh6M-vSf4fDVUXVz z%-HHgc2#g=9iX-3!I^h}znN~99#m7=-a^6jM}J`#rir~L9qu5`S@f;o;i|t)M74A)~XQUlOv|X z<=!B$xrwg;LP!CLVnFyj$F`Va&*#bWga6Mw1LmtZSE^;fX=!Ny6-(Fg?{UngUm)n} zwb*r{RE*N;8rYx|i)pecg&PM%)4IQ6Au}Lg;Y8&daMqx+3J+jl9~<>1H=B0~+*l5t zYPmY0~lg-Z*95m2hy$S_FT2Bdl4-W4|r~yF@-| zt()u3^Tk-L&&$wcK?YAG16P10%s?#SDn#d#*D|tDONZLnbM>JQ5ZHx542aJc^9%O_ z8;aH|ljjHjpB1^Z>kP|4OG|6gbvS=!_C^H)wp2pB7BOOH2N1wD(8M&^lmZtW_2JB5 zd;#9WxMpqgDf`J}brBAi>8k$Sx!}1Sb(i7MX;92Bt!h^T1k4XsjgC6PRq&;yHR(ExIPS!MhES0Wai(QD< zy3kO|1rTV}X&eLtLke7UzMu>UTvq9VGc8Mkqxc#i*kYANVOo}IDOs&291vh)fjGiQ zi09hG!|`~Iy3PK4Y!6N@kpv|=*u=)?pzA0Y5~a+V46t8-(rK+3Gt9Nuf@=T-ZHIOfom>T^7vUl>v4|IxM)YAmPoK%iCOsby+L3Dv zNgp5pSolVSswou!U5pBDgmEJT$?Hpv18Qw-dEo1g<%0153B7;JPN0 zi@*z-`*bkThpQ+#xab3fb}Xqo%hU$C?(gB_!0WN&hh^f#p^o$IE)r`8Z+kO9wUN`( zY(Zkgak6VLH8m;Oj9w+_lR$Hp0gHNK;b_DlF!{8qDGn+!5NLql(n|^xktZY;=5j3= zEY_ggr`SEmt^ zkE^B_!8IV@AR<1Goq(B$+Jxlv5C;vJa_r-orEPkH=lC3306t*htOG0-2EJYzdp4%R_mSJFL#LqAMd*wbfbqwC0(P-D28Hv| z0O9!Xkc=8vfB^wnCU)JprUSo+ni!3N$kmG)z-l8~cueer1*N$Ln(OV;LWJDDvkaJO z>^pGZ2p?SofKL5{PQ+tH8P4zHeOzwJ)MpNEvI34Kk;MRjLppImt8ycfN}Wpv@}ZT zKx~$kvH%3^TC$79zsp5e3`ptZl#GtXLV&K0kSxw)+Q=DH1-retv3Y8a&C<Rb?Fb8u#Wp!OJKv~Cp;VH6 z!%a8A7AYMVtI6Qhl2q%nAt2PE_HKux`{8zKay6V~O1u*W1kN(>{Ka#meVtY%#eRBO z0-ZqW3m#&lV+)Vpr&$E7X$f&#Y?N$aVZLFVbyA}T-n~!>Y7ZXtNLxi+@Gx2VIe>sg zO0n>{sD#y%c|!9}jI08?5bYb>1dOOaz^(&JqA?#qtFC0rfSF>vvoM1aH%MC`Y#KwR zoz;=KgA@l9HGvL|pTHIvQ@eTGoJ-3>HP@6gvtTe%2;v6iLMD*K*V@(N^W3L`0a?oq zX}l8vf|hnHRnGVR^e_HCGk4L1~9Nx zvVp*GIwGX&-})j%e>L$?Hcd6kE$;}}VZcNLMVP6{?4u)gz`?wzfWR&UyAGUgEc6?3?KKeBIv=IUuTzuwh=7}KUPg{Kuesd@%FAn(^ z9J_*@4Ny7(8R>2A%fP%7T;Hg~Bn==ia_r|(E?1}J#XJwJ6P8bZXQvo2S+`f~X1*oV z7=dfV(-ODEb>oc$>#{Re)2ZAPSOzIGf%$^C9&s%ngQJif&DFXjvk%8rh3y5{{Tviw z_=r9q-2sAjeScn5!wHFh1ILN}$ zTuo(JyP&?EnteoEK(uhPwvv;djKL808m zyps^nJSHIYn^oXZQ%|<;p0)JeK9>(FhAsWyt^)u8S5>+qu~yY6EL2V>^6xuWp~J!% zcvNu*M&8*tip)VAAJfmb5b?gKK|2Nn{(rwfz_9~14LQik)s?>Vq6T}6C4-cX9W8&B8Uh8I6Rt`1H+TXRmjV5Twi#sdX4+Qd;%@% zA9Z|OK+v)ZzT;w7n*VS6MXVZk%&w`0a$NEm0|8e>6i2<{^+RCdjswkOKETNVyn z)`6%O1UKFnMUFaZ3y~XH_=0vm3n8jyz?J};uFQWx@P*Z!ed$FW0eJXc_Mw?D#h+(> z2vcHx7D2zd``8G$Xa>PP2EwJ;vc%GhE@rTAs2~&5I%Sqsuel5!fWSf59~%&~*pDxk z;sXK%3p0uFphsvrWnXKTd27Ne+I?&@aGM(n=DBNI(BZNU?B;^(765#Jpe-OSB8uuV za5KuNmH=MY_z&D7PSZ&AS_bsJ?d#i{FvXukEeZG`oY&SwI59$zO4Hrv^VfIg|YI+A;Chw|dTQ2Ls<6aPLWCj$!j-7-TrnZ3i!UGU|Dz`A*ee&6yMc@m`5@y)J zV0vjxMD6-$oqD2xCk&gyXAn`Sl|PDaY1;*LT7nxP1)v8u3UwPfaOHtGd%H#2*?EIQGLaHt+9xfPgJTwiH=e3>%bYIq~tS z9hDvz5YVn2ra6y|f;9t2-E&`YPiP^L0E)&;WKmX@bB_uHH@C}jdMOuj4PY5))s>p7 zz;fRBUY4n60ORYxu>!64pEiOw07WXT$`sdEOCxfykI$Pe0}ziE8YMY7Uksfm0|UDV zKFh#&{eLJxK!ME zBIiz4gNZXec1+@9M~&}(M3Pe{0>zek`ncp1G1qaa-y6s3#k@1)dtf?o6{7|OA>oXz zg4{k+HJ>Y)b1O+T*J2`)WuU1iYXHYVK~1LKDen;R2x`?_OTxu9+Vx}J09yhalX+#3+njs zp`Zkr=P&*b{RIxnvW21cTGTE`$R|OXM_D+tMPms}9&!EZvG6obzwd%0ip#D7f`!g9 zArm-s;tCM(``_HD1?O~rvmvL~YN3U|J1BSe)lAiJF-~updi>wj@snD0zY`tObl?qW z3yvA2d_0JCAkD=LP^7z90u6+tRbv&{)FY?MIBmw30UwvoLiM>?zWI;&5fu=$bR!e? z`UL_l-EGBL4jnw862UM}VL@*~bjh2!(hIsF&a$J1N| z1Pfs)z;x2S2aGSR*I~OcOi3y(VRM->12$U_Tv9N=h@}BSE}M{wRXI{z25sSZFEF(O@7Gn(x;Ddf z<-P_yYVFY-CA)QA*6O*mSqm)$7T92+m8gKgGWBdSKQN2m0v9*3@r_uRnlv2)0y9Z9 zQyj4lCMp34;WEHgfZ`DdN6Djp z5I9j;oHy0{Ffd@J2O&(e3@}gGg24B5Ue^IT;WQ0CjLS<4QmK?fE&~<}cd)_2iF$#V zxfj({V68+hV}|L9>c;SmYhD;`kM4k=6=UEF$iYOeB4nYJsDOZpk7zGj1hzkdHRqzr zse@7+l~}|K(ti0Q3?y!cCdDJxHPF6~(~6pl0G}AO7_d-$RgwJyL39hDx68+_K_X#Z zEBCNSot$}h)h?%rvD5SX;bJ84HrRsTbnO6&Vl+VwECkJE2wMi-a^JoS%gnu~mO)gl zM7*v60?wD)qw{(2M1oY*xy7W}(Psh@jpe~>LMs|Y84D)_IIZJi*?M2C0!CyDKq=OU zMSC@Ji#r@YECduQY3W4`sF|q4K!B_cvMKBv`}7j}1p*%+XfB@?BjEMMK&naJVW;Qo z#Wfrp?02!T9zodwTdkz^vg3uoE&~98do4!2(47A3mnh=XN^}>l^|}TKI6t@y97Evq zf>hM@LPj=>8MxfY1y+b=p=d-H<{R*JXW4q~eLO~OBZTy)w$UAmFSH<}Y?k zt*!bG4G8S=X)yw}$bB8QV0m(^fUh?!2zI^L1>05>D$s5(q$2N*4vL5m^qiTExk z(tjFJNt-CB72qN!P3T0k5U#9cWM{45EE_F`fD7$*qQyjDome4_>l?Y?=AWC7JBoB6 zIV#g*dhG^j34@i*=a2B*?{ENH;VGN`?K=>t)hH- zA!WcYFCUwo>ol!z25MG1UEBd% zKhH%-3TxeFuy=AVA zRgA7>V*!v}T+Pdsm4r*9`Xte`VA+G6V$fZ=+4(xXXN_#$*vbR~8eiTh2c@$1dRe)& zcX#sUT$^2)Z0F~<&BVB8%+e2c(t(v=8-sp(t12H~tp~?;=cElvws&gQV?fLUQGBEq zUx`)Z`Qcn!=;UBVULL8)v5A6lW5R%-nZ9fpuv#~E%*S;ReDBldKjsSu3lSp#K(Psr z>jz7QV;yYqq4t7Je*_)5Plm5ZYJj`+wuvy!3&Wec)U(>noa>c`sn zL%RqXAh;Nt5-h~^VB!zXi}frVu(Z|-EIwG$ygpfI$oG0Dp)BATpzJjyl|(*jsBBUJ z1Y9V*U%QZ4u$pDSa_H&=P=ru8hJZ99EC*0D^U1Nm?7F<3mGdXd?#94n;4a6GSYnXa zPE_lr*k&9{rAfKInh3SwMsyp@JncLXBe30-@11E&RB4TDEcngYScQ@;fF>cBo% zK?4Gq;(P5PxD8F2|5}WoeLcE+mul+FeB3Oc0}GS;Z16(YUS~qt083@D&!<@kK0xpR z0UlVeT%*vhg}~yaTA4Fk1eo#|@qhN^xyv!qnh09i_n%p4ntj&%gK5UiJ-J03k6LRx zS0+r2Z1Txi(4DuDp9t#SIa|P%fKUCp-;o=9v^zsR8W5J|YI1C5UY@P5tZ)5M1Pcpb5h zHWs#gv|yyhD79l?8Q{jTNyVea?v`#!!A+~wHm4{Q`< zYd±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 hwX!LmECt`fs@kN75yyO zcszWGtxNa0e(4^sZ{0V(jqc*9Ly{H7Ww-5M38RH5$B#=b#bB!E#*KX^#*sxs4Vfh& z%JC=)gOUfWUPH{}Dm^C?mb2LSG%p%_f^lR7Kv9w}Z1vx-5Y)lQa-6w4b>{5%2cscL z8aD!XdTp=r%~}P- zbt{T;sHc4F%8lyz&-yGZBIv1K`q<64>RSXM6;YaFOF^%9hlAr6syF|mN7wnulMBloUQ05{iMmOC!PX-b~w{HrhiIfGAsnf^CEKli2V z9^GQ8{Ude;DQ#cl*lqmalp`OdIi9U5zCn)S@{)}$Glpr0RCMTC6Ob0UE;t^?toK|- zan2;x_>RF7O8!Ka=VZD-=nSMHFC@0q2nvK!I1v>dh%r@V4?sWB$};ho>&@!l2(Col2NqpS40w;N7MKYTKo zBTAJQz$;fDaP{&NF0I_*@!ky{?cLywSN5t4pl#)xjF0f`3?UMH%ffR`lb}u}Mua1b z(PU+|QD-h54o@k|_1JiHj_ofoot#>%#nA*k^HOX(CS=A{#f;x#wsDuc^IOew>QJ9P zOj1dd6=XR?IaPS<*&EbWg0`o~X1<+DnSYBjz0iI?jwc8N%67@pkV~sQ)_NY7+vx`m z>HQ!D;cOw;J{h8O!To1pV+tZOLp&;tgpMXDLKuw&LSf5-<&MMl;e?aWkg%i$MJgLp zIcYhKg=CRPQ2d?$?3WA2^NqPkYCh<*QBJNk-~91!F8m<3w*ECsfnsC5i%t{%{wM$B z{fc1Y*!uf#E&P4p{bM?9k6*aCjFJ*hE<~04bi|zHfzMQh==PWJQ8vHySA07`Vii9LzL1rO0 zF3dYVNh!F#7BERPyT?r}%cH~CkOiZNX=X7>?^Kw<<<7b(f>QF}ASAF%44{;Pv-iFF z#ZSEa)>#T~srI|PdWYZog*`t1+791%=Sp=^9}ZsRQy<#@xfX(#xBg`%^R0s&yC*5j z9gk7bZtx9~cmja!wh8=zmsV1iJ&mvOQ?()mu5G3VzUS~{f6S$xHET_C(yXB6s)|W@ zJdSvAqmQEmotX?)P*fO$XG zMAV2W|Ko3ezM9^Ysk--fuCv^`-QXp7PD0Do=pv&XNR&{Omt}cAT?>xJ30IcAM*MhP z>{9o-Y`c=g>dghYSh66OZbM{LTCdeRgtndYEM2ZJp6N_ET3V?U8lvQMi|0EgCA#ZL zZ29~fXKw^YQ%!DlIEow!oia%@U0+cYf^i}#goPzc>swEu&I@=rJ;ewdk@AzBj5JL- zI(i0xQZ|+wu+(x{?OMFJ5;xqn&!%<%WedS1$qAE$Y0|5}^+kWDl!+ynCYmS%iqnEw z2bov837+FOvQsSyajL7#PNfut+n1!tan{nw&3sm!KWHG?qB=-*DICR z-}&=j{;7(=ga2l}7`$-h56H8O*IwM%2pFHI5 z-VT8WU0-o$Z`$Y#G7TAq1lByy0Xs(rJU)Ipqr952!o}qdNseenB8p;kmQWN0%YmF-;2=qel7gt{nuSJL6gmSWSsoF_IpeI&&ZNVW6T$ve zoxb1P*?xBYxQm~9P{!s1!d=IO-YD7KhpiXR@d z*bY0Kqz)&k%U}uzN5|ZIa>U&uhb$cvg+r8O_TL*T9v9bES?X9^?L*sBth(mL|Ni4C zNgOd5o$z4V{ke1oEk|)Qb_lGT%`;e#ZJF;xYlD5YT*Y$BGWPPdzq_|PMoGyFYc{z~ zd3wB4bq15f{D0qui%T8?bDkWj@jbh7J*dxp^44367)hPLt(b?GR_}6u=M;?k$%9Q^ zynGia-+!F4NTgB64qm_U&q%e!aGEd<&V%tp%jHCP~cAJdLtSZ|_<#(7n@+z_t;} z!?tZ+>?hUUthDkf$B$B;IwzfVOnUJ6x2o^u-u5*f@0C1(ugpya%FdwVB}BP}W2ap1 zUEor8y<%`)==X?YU0H~ob_PCiY%c7Q_|?t_A5cdao^P_9p&gnR26bz(l9^eKA1z5E<+yH;(rv%X(cs41_f{_qfBjd!&aEpC z*jT&A@i^vE&qfyof#)(DnzpdzdbrA|3c}^(K4F;f254jZY@<@Cd~RYRq@xf-C9VMgFct}Oc;<|a$9-DxwPM93oLWa@D1V&}9FJSWKI zhj(_6woA)*Dv!ODuEW8kSdimjX7u%OV;WC^f;>x3-IlWy+g9h^z{5!dmOmG^o6d|? zEVl>JWfZ1FsS)B#Mu#LB6vB|7k|d@OW;>XrAv%kZ%A(u$tFhs-uj$B;mQ&!#dG7vy zh=LF$#tgXY+a$ThcT`2it}`s9vQe^Nl4zo|XfSdOMcEm=dgEVnI2iMht1SlMh?P#SL79AdVvI{7 zZ46p}_*65VObEka#SBB5;1eMvNfI_%PEYA`Rh0FXNlHm6*3!AL%&u!H?u|Ro?FdYv zIpOMBKwcCKrn=H>wA(E_qN-vK;}N&-{pTO(d-^M%`f@{y0ERE{_}NYFY+vJJw{{IU zl%zP0%{bP$jz^Xm3$TNc=42A{@fX)P8Yd`AK|CgK1+L7ww&GUWjYWmvY>>-ROIF0F zD1)wVco=P0(RKxnJD(j{A2;ek;(E@^h8;jqx-BPhL^wSm$xQrPQ9vAr6vAdaJ|Y|+ z7y?jXlAF!nXp(qL5>H6u30WF7@-^}-p|sbBf@nHG=P3e#kk*{t{s$Qw{=5ruY7`lOsO z5YOBDpDhSykNQ^O)_a>D$mpXg1lN8al*0>GFK{r7NQ)_fQRs~7e>ORF1N=LtzXX~fE#f}qLbX_W|-#uJmf2?!)wr%-5P z51!{pWs%oJRD~#5>b4qo`+djUV5L}Xnil6q^8LIELd$_?6F8bAECmYJk$^DnT&d=0 zs_D40>5VvJX7*YREzja7+lKL(rE#OvD_^JXXW%;m%XaAdCSa&6+*N1rJY$Bv-~BHa zUaVjI)E`xQ^GEv={@?=`eGESRW!`)?GO9lz*dI&@ypTA{xZLf`dA7x=W|TUtw{s?$ zhh@!DaGbzgI22ejf=HH34IW@Sb4<4i^s24+bxffy)+#ZSMK?&jBWO9YdOk-L6h*O6 zvr&R{Lc4QR>sPKm;MT@HUb*@Jr?)eQA>4g>ofocdH;6+IcW-d}$rdkOx`SmYgmTEW zCQM8Wcoa{ul;FMXF$lq0*EzL@Q<`a#H-cpDjamx}LEoCr-4MONqOhE5B`a5)Fws>S z_1-wg_gpUaPh;mF?H-|=P99RS|GW!AB3yKy zlcpKRqbXNbTh$i9wj_JwS)M}QX?P<_A+T)|3nvQA4<4M*YPb35)nM**>R4Q%oa#C+ z7euAh^E(4D(}4Hu3`%j+XLoM!TccOsSH^q$r5!fEzX}L$UGx}6V+ujF$0=JVZ=sc7*%_p{Za9J+OmwwSsLy<4>#ed7EE)qouQPb_^)FTOVBd4uSZ$Lf z34i~Se|&Bs0Qjqa@C#&GfKGUFoYV61#vZ5M(v*f8_27>%HNh%LI6^85%W}=QN|_Z# z2;*~@a|%k`-X5{k59Z{vi`Xqq#f-6&dE*pdphKbmCtt_6kWXqd9v zav8=6$6m2`#aaGLhw7E{gcX%A=3rEYm=ratNk`l z4n{1mu3dDv`it2QNM&LN+bFO=Fbz{`kpXEv^Y_D3$ zPDT^jGmT1_M&0cM#F-#a87&9)ho>Q=4N+67s@V82HKe4n!vnBvzZyddAx!*v&}F49 z8_7=&A?tmYPJf-gm(h0#qlKL{y}7% zaSDUkmBg4|f8#4mqlB(+NIw7Lr<#S}xBuW5u%&SevSqov#VcjCvb3`C3dGa!?0krE&1^?MUtcph6C~> z!g73&0^2g@)t3=V-2l8b++x73rI=8AeDA5G>m+>i!j$)hJvO=-tztwjeV$HSY{%n@ zd&nSlImtX+OR?o2K+!zk2NT`6&JHHp#54?9?F3As zj84Cgl~1eSkVUV*vE*`m+1g_%2W7kT zd^tx5@|j{Qfn_Oroq#1fqGhKQKcI}K4`fK&&geQBwiJ!Pn6l*`Cq*SzOLE8xc^cVQ z2rjO)Q9{%9ti~3rPS|-~lv`Vj**ltWVYy{QT7J{h@IsK!O%X~1lchkhvE*P|l1|_n zDgDd~GVm-WVa7Wv8vlpOHViRY}UQ=f?r+dYcuw#(qg$0%vmlR=YMgR}@8| ziDx?hax1jf4-kds$^|1zI~+~O;xR|#l$Ik+BGwtcLD_oNZP3pqR5`Z8lIybKC5`c8 zm_i{OT6WI*l25z0M%zia)-UD=LG>Fx%hN^*_cSe#WE8cZO{mN1`KuQ!pwju5;I#t! zE&Ft@UBKZmVsqJVXgn4bgnE>l_SSLrsA9M#X^N7n@-%ckpDc-S9f=g?xlTe|$&>*$ zR$92W;_?1WELA|uGXlD^IUsc}#OGO`6J?Ntlyb322-`IXOccX!C2efL)yzc0sI z4`<`9-}&sHfaNlXB)Rgqw|&ec0pB}i7C!IBS5hLRLg#0E+-GmxQJm(<&*s=7pU?`t zM#4{#8-F@ujIL3$)aF9xXq}sBL!lUjd1KmeZ`?s6X{i}=u_kVjQg9re5x>m9rjnxE zawJ_}@oboyBGPjk!7-K;6$sbzEH?V5cHoPm!;VHV#}mQ35C0kfuYKrib9>Sjwd}@tDrKz&dlQ?LUW<=i z7|&6I>x7`AsYa4vD|oa&VXfb;I@d*yCFU`TPs4v5rO}u;fO;oTdV$)?{4P#XgtBog zMXvR8rwogt+=REpmA)j-T6Jr zx4;l%5Q=Fkh>{G~wQ)UyQ;qZhWE@dvS|# zB7g!<%`+R{*&g9}-mF77^-U;SutnaCi!P+{@#0dzj~)(K?!U)m`U=nXH`&{}MD71A#%Ool0tkD(~gi>$6I~Z1|cVHKcbEgV}z2JqoDx0GQmn(Z|)@n%@Mg<4M zDOZ^3ykVG<=9)N3@%^9?{(CglGa^scFw5N?B(yve*Cu8o%ruEj1bb~Pdsfr) zyePLscG&3Z%E2g4LPUD1rAc!$fs#@%oER0SYfC)GqU%YHM=?oyYQFlFix2qb<|E#D zX@^@sxmamY982=;hwq+imtGd`B+ZHSsr6ZdXHd#*>xJQmHy(5GdlxFpth2|R?Jcfd zenc3>XswA8&3HV*v7V0!NGa&IJ-WV4mtS)jxN})hl3JPsTaN!7LyHG%yCPb-dY#ojwk7-(PXD=nz0iD1m(u%zyOj1a4 zNrpw+O6Qo3QIc`7Yti*BMv0m0u5_Gg&R+LstXrxr`d;4MnQ}6T84UkZ!0?ah89%g#Ho-#O>*H*RdXRAud3S9P#G>F_xrpKfmoDz0EOLzJ89H%zu4(Fd1wqmZpC3QPq?*EW1ADD?5R8tUey6@I4O|SFQN@dOJX&p(%qyjhuQt9o%;*x{(7AhF7x+fGGm? z=umM1<~U$5-QD)|aPr0|H{tKW6;sP}ZM{DlEyB?#l_&&o&@*N_^%h~hlmEjHzl+_j zkD?MAF3IQFr59X-IZn&)#PST9A6T;>)OOx`y|A_CZayBqxQ@&Fj{y)cMlhP?@Eiu_ zdhqCWkS-2f>_iNKXLiY48CM!E)P{LuS}Dwyw%t+Cj&)y;V9WD4D4~|f62`+80mW<{ z0z+h>4ys}Xp&7>W(sJR;vV@e}t|bpoMp)#vRy%dl(`u|h|n z6z$f3y~R%g3Z*oJkhay`?YKx{zZE}!eaA-gTL%j3x#gN)EYMp=Ip1#)iwLD)T4J{s;>oK8uI>0OBO65wh%lSru$OqClwy%pTRVg1K~RsF zwM#N575=~f;IaLgzrFexA3VN_tTY%%Yn$-Pzwqw;+H0^Gg;sxEyZ zzWo4CM_<90uRq$_xqXqx!*`$JTTc!kHN`>S8~`A+H3KuxN0t@v80^RpI<=O53kqHq z_J*i$r1gZTK}6ws41{vzrN)dqh+N$=zg_Pf0^{0}001BWNkl05FM$!&QfIPnzIXk;M-3?V_*I6h!w^uS5v66UzB+-6ycDm5Wrt9iEIn)Qz2d%8;z05o8n9w0 z*9$E87^nq8y19mIqVl`l)t15dDCkz|^`oPyHL8e%f5hq3jAZ+J|5MA{^5;$N`R9N3 zYb~m<(gZ?j9PAqYKq*#K)%B47M~3>@p#;a1vgHx_x{={c)MdbIr+k-UnpUqp2>#%Y zzX>i0Zd~5Q>8!;6{RcnZ`g8x)hu_{ti7&k z1n@KyqH4pAC!;YaV<=T+eHJR|e{ObWSNg8au=J?{rG{6rx7;2O01pmLh|SreK;W-DF$0$&a<%=rW@l253|yM$ zv{E2i;nKi^CMKq?;u3^1^nDGd^LFXa_4B&J(Khg~z8*fkcZjciehH&_j&~2jbFY&+ z$Y(v{k^RcouHR2OW<8^n#>uS2txJ9T_3^C0&5K=>f+DL-K0+m7TdA7|5Ap7`X9%Jg zmlMEc1kXkWOxx>v=mutQI?Z@XpS^w|c}!!JN+?b2x~OTTwcheI*FZJVNh!U-Jd0h0 z#3>QF8Xy#b=YcQ>gHXX^0=qFV%3WvzIF1YExFEz>a|KKAQESyAFbPpYiV9Lx7JL+% zKoGx$C2YH}o2~Btpkqy1>yu`$7vZBvBTRCI_b&A|BIo{HMui$&6uh#|ONk#KEf)Y> zcx>_4lLcaC9DcSU*0w_YxmG zx?*!kF8w6Nr*}`cUJw7pU;J7N#AM%i|K|NVG3Q|5!ErtF1~?KP)k_eEpyLr7Pb)~! z+D`;Z6GVZrUAo*Q2wZ|fC?rvU%Y7HI&!9jsUT}=(?O$}1DF~^+m9`>~z@hIjL|wJ;iA@!n^yIK&grNN(D7H$npkA zvjVQe&{;hg~ak_8f|FmSGTeP*pC9O5xVkeH={+3|U zPG=Q%5+9}12wjFk5S-3(+}Q6x@Cp@ITa9lBAN3#^iut&6 zA%e#=F7|vx9!0O?K`G;Ilymu3BjU$*U*hIZ_Ha1i_>+J3(bk{&!w5q8PV^487QchQ`^f z*Z>J@|AT%ffD{6L5N@EvO%KGqUTC)pLQ0#NsHyW>B2QC&c)AeSPn?YluJ4sbHr*H@ z<|4)*)EI`QbC{M4QV|r{*amFWk8Q>(jswd_Sii8jb}^n87$$*nR;C)AI6x%`o*hr@ z%r{;NjEV{7*#ewY;G7_I9eA#fNioKqor9k%!6&UGA}>ZS=-^WC0{TI0XZOvB zFA2pts--hjxK!0qqL(+=GLw=i^pen?upOUb!3jobg?ULU%t}j zp-51GngEvO%wOMlH8yZG6F8Yq-W7=|3zcEZ;CpL27d9P~ZQ zL#RhLAthXgq9{2o3_=`_Q{1@FMJWhgO)?avi6v`ZXWOz7YeG?-PjOyBYZe3{C0t@s zx;lZ28@nb>F7g>7k0L8LN^Ud>Z~J*a`tmCzf6>FOk1ylJSC3nNcH@7zZzB#Lyu68D zSO)9Z+=PB?Duk2@MJ4fk%q?Y;Qi9J9Q=~lcRrfLU6i69w4otuh(`f_HY!{Hp<+ zEd*w3nRwLk>}*!gWKC4FDPOJ$EHx|*3{E;eUz2aKoG*fmVx|n1dJ0ZiYtZ*_-@y%yf@RM7wPjYG|`1lS*;`jbBKb}*ofRaFB?%*B|HW=OWsVgpsiDvGbE5wn(<8v zB!P>R8?MVVdnS>_cVNRDeV5^K-$6HE;7a3YTw;>8Tf0h8Xl+_^2HzK}Dcwl;Ejm0G(q+$65jw$?JV2C(HC9KFt zR243C2)dqxj}l!U7={E%Kyh)my}s5?y!1S95xIa*4OUTuu}y3s%L{xq>EbMBc(u^2 zlw?8(95=wFo<=W_D9Z{N*XV^#s~|Ud2=z9l31W}uh2@11WrAX!pQiAA7mQNu_LrCn zbGK$A))e|~ym$F?gBkqVx9;8-3OJbyJUvPA&OzKF zjy!yoA?F%V;9)e&@wKZl7^DS{>M+NfyT*7yY2b8LVwSfn;R+)F0%q1wzC)0>n=Z8L z1e0b4r01;GLH&?{I_wJ>lQcV&8pK<7iEUyIO6iuWZoJ?K!w^+v%r=#hki3BF$EIjV z39St)ZkzR56HJVK2A`o7tDbZs3_3otqOE33BEO|}oM#;4j9@>BtUda+f>0NNC*uhS zHA0uj^O5mlughLdVEL#lAz#-t$xbr#=!*1e2Xo^LeZ#Yz~r!_Z0 z<9eO_;5bLd~HUB1v(xu zOgx-T=EzHKG6>&*Ni;jRosQc&cwS9Q^g;)5!0cL%Xo-(srtNG*Sz?%Yh zdlO84@lWl4{U3Y}pTD?)PoH163|IDz_paZsTkM@1O!vJyU!eI=@lLCco+c38=0*)XETg<0zC-pj!#73rRg$u*DK{#o<7{5&+ zXzi=l+pi%EA z+u_5TqO%&)(jfTJlLfi~#hrr=AO(CPK%uQSVI?FMxd5YPlscXY@U^t*`rjRRB{GDl zxPp}JErW*=DL2VTcRsm-2k&n04C*!G{ttJdi324{oXmmCgAOkK#Dn_R{|)*-_})hN z@qhH|9~#V{?hK6lR)GtF*fX}vyS)%EMkO?1`0}Og8F0hIM?Ye47{k$|L{SMlbJbk^ z*I@+bF|WQTy8O0stvGm9 zAn+N+xq=_~=(!xZAU0p%v%>{Ehas&rxH85l?i$1LbuPUZ`o^{_ErFdl-s-V^`{4#t(PzLc7q5+P-yd}F=xAow z*G;=_k13pG#1x6i7(xi7d4(W~@c;hZ3n)U3rUWY&WI~9|Q7H3SYuhs}DWrDb5&=Re z7FmIlIma~RI9pU31f`9G2LK3#Lt(WrHC6t}NoI&u7XlMaZ*ox}xY4kFKZ>TQU409+V$TCIO`P1a;85~9Hf zP)cl#Z|}vfeJ%un?_eW}t{VU|86(dNa4DfB$LB{W-nqJqvzcsoBEoVZKq!P1sLDla z+d~LL${i$~7?GUvI?_8 z;dEAFo)+jwF1R%Bh3`^~GifQxgb-XCZgwc!whYaJK*IqNha+@={lsahjKBQo# zs5D=AKlag$T%>u0amtZv*HThzw7hPq`jHtQ&cg`)U7p`m2-dNI=E+oWjb3PI(yqfG zh1j@o>k*k+;EUWsD(XL)>}iF7mQMmSvczF24ER zb^PT|UZ5)G@Pj@mb0Ou@*p|6al0(X>9jv2??bJ?ZC7zBYj^`Af7b4}%I5<&2Qy&=z zcvWtIjqAA>HAA+N0JMVA8vR}Z5Qa|V0d9ojQHohwU?(x3*C6qcmmHPQ5RDO`A31Os zfy1Z`Lg8EjINxLyeh-&B+bQoF#1aO3v4<=(*W2|yzr|NMdih@hFyLX+=p-v8*t@r{ z-mg*n(`kx%T40uz*0OA}DDd7v+o>ptLr^Gam=mBPo;@j=GjZ%2hT!p}wC=duZs>KH zt9D~7xUu>kXA0e5JGSs(78zRSIfbC!UUVXV>&e7)1>d8PN+Zn$P8KE(eHfZx3y&D$ zlcw%Q?D&3E!Xc`~PneWGq^2N*nG04FNQ(-c$Zd@Z>+Z~}f&gR{u;5tE;Hy@>C{1`w zT^MR`b>*>Wtlt(H!HcoM03-p28*zzmw+SVPv7cPN4BY=&7@;oIN(06+M2f-m0~ z;7@<_!eTSf0IxDDCX=GVFJ9Le`V~&g&;p6g`~~ZtO&m-zfvn_sd^E*T>f^;kp%QE-KB&?XE$T6B=6DR`NKF#>nXXi#@1 zjA%rTG$)d0ZuIe@LM1gKmm&;YJUgrG2b~oXvqB^18neQfe-Las_%!(miCbDe0wus= zZon?bi_T4nZWe^vd{h%-)2#`C)D*EJF)I|}C`2U`LYJZ_D-1$v3toM44>}$erM4J= zLrhFv)8dOlS^IM?6ofK>pCU{3ou(jKA@U7V@4{}fVg9-8nG%Z5@>JzQqY}z`Sc9GY(Y7hOE^To5o~Opz{6hKXCbXL z9L=#mOmH?Y0BB57Ve=N0(&&Z^lLDYHipUyMSeGroO+nD2XmxrS*R}(rlwc|&bbDQl zCsP}_Hi$a-`%nLw?F{O?i^yll3IX=ruU@@>G|BDya6C)#!Sw_?9S8eK8{~)s7sJ>= z&W!=Xp?`}xW;y?A_2m{vo1D-IW6$Yj0Pqp zSTA$)h~wezV3XHi2}~iw(M(#WB%vu>hhUy@L>@)QCn)$*n{hG5XD{ctb6}o(od7~` zEQ+=obCOl4syT}63@+n{J#XdmOPO_S?gTC*FK{s`wu+gW>&7H7EWBr@DefF}mLQ{% zJ9DW}a)EB-x3mHCQrV!7oy5g3b}@_@6ljYtGRh3Ep%S%thOYMLOO1r@0KHC#XD4&q zzB1UV3E1`w0t{joP!e34Q;v8`^G#wLtHcst@LYzh;2=%_-=$C>*hzfM=L?+93M~A4 zn9k?moUam;lyR$~%)#BE!0-OfZ{jz;_g%O|;GI3khL7&}6c0Y{Sz@fHEmNi*GDfj_fcAD z%nE^nE(4buN$A+M;}^jYX45GaoZ>=1Y+*}v2R0P}7^8Up;@EVmshuG5&co@(mb*DbIp#I4=c z8y@*Ch?iiI75MsZ}phSjg z!Oj&kHMI+|M_VA{*(|qq<@K6x-6^RV^iiKgwKdov(Dv)vGcfiYq@{wE5(j%-Z1b~N zmkGZKy9s>CdSzB`G^7!)49n})Jx}w zo3Yt4oSaQj6eX_4c>_!}ROSnDiN_<^CL}F81f>)J1*s&YD8XFMZX?cS8Iq)9z{a#d zAvBJs6$-BKYFb*5F$ozo=(#G|z#-`PtB~4EPz+-SzC%oBK!9FkK+rgFTe0hJDhRVh z0ZNqNy3h`Gyd1NfTNmd{unjNLoCDvv-L-#T9qCtV6Kb%RUB7zyJ|iYZ{2MpBtrv2h zA<4-?uI#WIKJ2|tXo)~gCf7Pv@X0Z^==R38fC!Y8L{bhu9-_TmjxjRSEGX|$c_aUn>he=E)1fOuACGlYL#RC=Td111vrdC!)yxXg=`zqIHY9$J8JLR1(nIIiqR4-yQ=3x;0D!#vF`$hhu-DU`N1q?UXmq_&a@vs|HQ zU39uU* zbH;T;l684$Q`fB}w}ukiu!6t*WCUK8xU=78gxU1l%EWcgbA{c+#UdBjOIqT$wzP* zL8U_!`2tEQD9K+dW~!Nf3Jfn!7r1lK!Gps&lEATh=DHvdS%FK9k_#lEhl;O6Uy(;! zozUf-(2QMJ>G9V`fb+n?`uDAaP?{>o=Fe#uB)r&YCO_Apn23?cj#Fzo^Tt+RLKIr&3 z9;LX_1Agnh0AIiA;G<(xPz)8oS!zp`j#iRGipqZd^d!ggiNd4f6o+$$QEFVV*FnbS zRwykMUQP=5-l{`uhSc^$g0oC6$z}#Ka9swib!${$)EKjB7_hadr0wi>Vh7akY+Uao zFcEV~NpNNE*|+r~t$7ntaInh~bi_Cf< z`25sRkiT-R-GS8WE#IL4D5Pcx10Pt>47F@K zD;16=8E)>k*Nz?EbO%Dy4MNhJl56^2iK*&a*XEkUBBcb;`BpJgGX!&UR9Gc9)oIT; z*N8j{PzJ^r_6IQ-QJCcdjF|9}qe+H4m-<$QYqu+n5#V(ve)IR;X1~4ubA?dY>&I}Y z#&}+~Ktw6H1cXJS|!VDorfmWL6@HeOnOfklJ}(q2sOA$6RV)=|&xRE6Oqe?DYaffdfj6 zOLE4k^=?$6f_CF`F@(4AB5f9e7SG_@U%7R^d7=9bHBn(iA}b}%wiJT%PLgdmUj6eQ z9hwB5yB9-rBL{i88A#In|0B=LlET|r@d#WOgc)!#prr*B-&7FRsm*oa%1UW&_$5}* zTsuaLgHkNB1~s0Z6&u*cwj6-knrz**Im_nu3(?iG2Z|Dl2w0#I{3;}gMmFBN$dm#e*F%?*RQ(x>H+YL z>mGjmQel>B+`fJhL}r*T9q+U@l5NKc43|L(Oe+su$_)dRWw?I$JRW7bQZM!gt74FVgiw;4;__g#G3> zZ{Dw4(ga;^m~mZp=1rJW7}ALsj7Vj$wxNJH7=?*1pJjYcti7 zOL&afQDG14xo0f*riqofIrI;_W7E!6*3SHib?8xj8iBDe4;W@zV3o*I@ zg-ciOSF<3*fdki}cr|XX8|#kIb6}mChQ7eG&@BvMHk~396xaH68SRCY*Mo?_Pv&h({4i!3p_o|ak1xZ z4F*|c6^5aQaBbZv$_yX`N=xMF7;rkMBtb8B;JTh+3O3w)6=Bd);>xa((e`5>p#xJ0 zmelWI5}*=>?n)_zPc@__mO;2}G}t!k)XqmuLzU*&U;re*NrgpLY%K_kn3Kk!6F|jf z>wOM|#GG@Uz3RMPwqBS`d?0`Es^5tKw-U z5ITATL#R*iW~5%}?V>DAa`I$R83UoU>#!~eu4|m9o7;tUlpisxOriivTNpyKL#VI! zCMexx(6*D6C<5QXJmX-$`oZ=4>n^nCbpY!Gp>49-+83YF_WBSozWPO}a5gJjy6##P zcl)4=2ZvMWaBpKYa9tOd6WMa2@m#M}5TueIat3()w=M|l^5NS1@o19a&OsMk0k0tY-<-j&w}w3d^VyT)<--oW?kaas*VG zVA$pRVbgn+(FQm~@&Fd3b)B8m@iA{db!tq!V~p6csM@F5sZM zZ-Y$^y1N)e-L2ohIyl%cX|4Z05Q1SRfRMUnb=Ra=KRwN?Q&CY?crfwXRAXV};f%R( z+yEC7j&4NJ>m?|P0+l4T761108~DMcNBD=EPw_j`_rQq8AAM&PO8e=(m-ywQ+m?d8 zt_H1{dV^5na3XD?7F7mNhBBW+qaGbr{t0I}fwP7ogkfk6Q|iydRXH50F2h@L z{Z)hW^=LpT!HWq8=Nw7o+Z+1X$sD`A&=!dEwhYaJ(DV+iuj6KC>@iaq*qvKf?}x!M zK=T}RT=Rs#cd3JrDg2Ay`&)c^?rU7nxi*z5XR3xel*xDZgp0cnTCDgi*i8nkqZp|W(SYHWKyPoaOu(3(V-UcYy(GkyFN-Tu@fsC&S?uglu`iD zMlP)ssN>n!HkUCTXK zbWhEWv5q6iIL_TNtT3|`_S778n`=d_B-s0RZ``jl<(g4j>stUVDtzfmY{7=}yx1On z=@9omz5p&HzJ5Jgf{_IM#0R4W9j$fUl+xC0ds0PPM+0BY0WHx>LU8TEXS&rH?Du1I zIxzwi&_v_e*{d&95L(%e%e;m`$9NRhl-atXHq~l-NzHr{IGGC!V)xv%;ikB0QF%}> z0wx89+j|rPuf&euJV{p{U{n2hI?Hj;F-*Jk2`s|I~dvAKK3&5Mc-w8a7^L(>2 z0I-u7Pls7%z~!b`>}XN|T4I_O_-q^)W+AkZfol%H;5VYm;RPKCo&M?;e}XSPykR=6OZ}~3sY>Y;gE6S^a!#Q^p_H(lfQGWKi#e_> zRHH=!*NdzPtK=1iy}0$hmoOuEl9)nPTd`@ammSCE0qi>juVx%t1CkhOxF$}^og5%` zYxlYlS@L4*cCUE=axTHX^OYO-pPw$U-`O4tT5kbv?)exd9{#&8{mE-1yz18M_owe5 z2_1}PWs7-sJmpr-*$b$l5-W)*`ddeXE1k+#NFq66ziplN!JPvnoe)G;a2W?^ zcz%dkPT)rg2y+pT($0$Y=Q7D8916J9qy;m^kaB{6O6>KG%kQ=Qjx7Y|ZF?vscrl#; zaB(!(7W94FLeYFqD>KgQ#_hEThIDUg$^o;ZdixEr>h&;3Bt_g5>OIVSt0ZsJUvPAFTej+tlmu(?aQkKqKqqaIi!$sHC`keQ6~z^s@~UR(s%p1B8J%KA7X2D|@a-g!;fVTO%J7 zYO6cB(V8f`PCk#i{JI11)m*}Ln86I{wZ*IuR=++cJ(OjI$b~rpJ%&G6+{M4y-E76S zJ^t{+?=Df&RST3B0%@g@a*eCC$Kq@J2v%x7L%6A1CYJ)C$52)!BFA(cFVE(!^w}ne z_cjHgNkqEXcOl?d-a#n{B1gd`3eQGm%Lcqw4>nuP8bfHd)>;D@>Edr*_?XV8$kQn( zbJ6SeupbtSNB4kOv|la ziyk9Z{YZ&M;1URFWXjuArNeG)M}Z$do?vg7SW7fYDNa-4Ehsog&Ivx7_8?`s1Pn`D z-yxRxLz!#!1oe!*Zd8&LB?u+BvX|KH!TO_4kSYX$@3D;(X^$%SRN4`*S=h5mLIa2# zg-cz9=TqZmWmcY^d2NJ%IzAZlaCP9EYr;yYS%)%WuCHyfXUB1{$OU$~J_47Z5~BE4;T6YLWf``y_Tx<(r#zNFJhK!+}trX=Dy1iING%7jDl&=y1}3g z_kacaEiHm|G-`Mrp3aPeb-mW(Wr=_BJ0G5VDE;v2WBkV19Z03%d+ikIi?Kv6_AqXY zc=h|WlX!3)07RgwGzNjd@xooRw$t|ONop8|+k6pf4^X?V9ThCF0PxAK*Nz zFwKlP%4n9s3nGXr$CERGYx{}a@9u^ih4LX;h=TjzB8ThxnB@c<{)VkOrEPzRW)$7q zbOO!iPfsM6EO5DY<<&swGsJucQK~V`i;??h4=s8#vIUE=8nTuh_aWr=u9m48$5kfI8JTT3dudA|_YGqlX7Y8e9 zc-7wS1df8%Cc@nh{Kg0oqpB(tmBe1c;8BHZLk|olyRlAq@*SgfNCJvN5-VH(qP!dS zOJBWlUoGDp<3VRK;Uuq6Y6c}G=4pw^qQw9F-M=`u0&go2S3kOhtQ3g7Hc0hg79mSh zD4szR3eWRf#w5eUw>HzYH=$ArmzOiLkQy&11+MHF%ICwQc`JRk8?Mm&b;jJ=Y8h%G z(lirBfwmOa)YRnA1wt2)a1eC5HYlV}4zyAzCBwIFCoOZ>Q=R~t;PD73s|sZ?N0Ck7 z1l@CO)t{ZFh?aQ;gNEbK7byfy--zb-DIxGZ$8h{hg?Yve*^B^EnNG}DpsffoS(ZUM z9Ta5+r45K1cy7yYqSuL#1jhaOY;MF<&FH<5DT}cTLyps`Yr(jq(8L%rPw#Dq)OQptT+G>h~!LLu5q(!W2B} zU?(VXIA3)LS}UN@xr{Q6OS?w(SSbfV5MZ8WcBI*c?Tj)7hng|5IYK0^#9rdSb(xi) z*PnmW$D;PeTvYA66Q#bGV-oxJ``7NTuN&%F)FBc=!4f9ENR-!q{%7B{TL38y)s|9% z$7zB*O`&B8-!~T5y@=s*Y~CQ35fEbZ@3j$z^(I`tkxh%I$T4)wtmHU48RPw{$+-le zw=D?kM5Iarr*m$p$zkAQH!_;_o{x>7kiEpgPS;fUv@kq{Tl>aY=*Pza#YNAV4N~;xVj&w~?QB8;$WeSe2FrK$V zN^5HP_1ysbiBa9na*6SxYDMqe-eC|L$V*`{mcFyV^XZDv17i00N(o3QP!%%(fKmdk z*8ycNIL|Sj=Lq5fE_5lR0v2fsscDOl^oxggHiAxMmE-^V^IyWlmpAb8^bVdL-^SkX zGb8~6wA#QBngt;*Bz8i9lgvX+jA~k}X|3@5titn&!n4y1kw;r2&3eRNJwm**G}5_q zxxN0Z4}^PH+Z_dUJUlv@S+#A=>|ECbeUXB|Zr!+YzvySh#LrxMzogW z$d)$iWKr5t2OzlI1sF9(pe`dw3(;EVy-1edzJsIjJ?!^BZea*NdNe^H zTu7SQIQh$cjnjO^H{c?N!@QPEnmInkxd#S*uBBQ{Ftdg_YwOSY&zl`Zo%Eqn+xgG`w_l=)j>ZZ*o!4zOqM_*g<;7p z%}ymZc@^Kf#!(a{vZ93G6@+GR8O5+0+Vyzg0`KexHX({qf`9elZ{V}%*YWu9=Ek*q zGJO{}_CLde!zm615e|kS;*c$A;u_Pm#KU>V+OpRpPTjfGGHFAk5}4#G4Y!;XU&qw=*JZClI z+JK7Xp0&vcjC|Gt6Km|Cjx`Tm@697agLrhX+p(dV0W)5PE>UoO-)aZyc=a0fFQi$8 z*6OilR9nG~1CdcM0m2i!Lu`N!~sM%PT~SuE4-WnQQSj7OI*9qZ*>Osdi>epS<8!1 zDQ&#~&wCt?@8Q;^$F|e-9g4G=1eXM#&xb8Le5oWTrG^hu%s{AFKT5F@KTR`^Ubow_ zRC_ha@#1ujd8x6;E4*3@csZK#4a>DAKOpC;K%Vu3s8*>qE$!YU=3^h+yLw+}f~$ko zg|l7|nifu;=i=${1Y9wE=fy32^V!W7X!HJ~>(;2G;0iB_?#B8Mj*neu0il4blvor3 z^W2=i1O!}Z^gBMfkz+6fN{}u+^q{qMm8H}$wdR$!vfXK+;4li#1zwCR>~;eyvf1r) z;km92EBzuEg5xl&%dhkHl-3yK#+9~CqKcR5z>ce01>;$xf)D)?U0RPan z3yH%?iL^9cm}iRuap=SMJpB0CPpq0#DHns#LFk*+AtgY*9Q6u8TH?1XFL9|)@auPd zeEq6}AHP)4dPxgj-e{wFfi7EMG|zD`j4inAsvN_P)AAx5FU*bgZ~yW4-q_t9kMH8f zh0j;Kk;KD1=NN_pC%M5c1TXCCfL374vtS~ip?Cohg0H`K6{GPO{ca3G0Yw84C%|#$ zgXj{aa$5l}ik)w{)+ETC%?e!Gjc}T79z^wZxSkkx-u2FY`&+l}k219}OV$53Vhb2MevaN}(XLap2X=FOx97JhPEw&dka%}A3O>bV{`_Yt~AJ?Bt@z-34a zvC+{q8G--Lrz`Q2kOfp_ZnV7)g@X#6fVGH7^Q=I{B?RZji?G{+>j(Js$qC-O@dDp? z=Q$4c9^>iJ`5nU1=q|eP&n$1G&bYk3L-6>dG&eS{0Ada;Mh#uwCTmd!KkA?=1;(ks z(=&k=6OES>i6>_jMzahjMbHX(d2kB6m^yfRS{Tc7_sN-8OsZIc@B=EBA zVzF32$r744@I0?o2x_mlCW>7@D{X=&rpqMfI;n>c0wHxPsisM7ZebKzX|1nno9NZa zX0U`Wx@Fj=%fHz7EoE6$75eeg@N>D2(^|Kz(?XZxm=ExL5n?=@Vlkh9G8eAv;m*Yn z2Z=)H0(y7w#kLCznjVn80D?9tpTzrlvhu60jgRk8BKQ}DY zYJS5o=!m>ngQs4(aR=mZp#dA8&y$PH_?NhVNK%9^*H zCzqaQB|4oLLQ3>}<46rcQIsYZWSDs9#fBeJJD1goVNJ)b_3NFzd+YN3AN=%p@$&Qz zUYy*0za%(Tcakc6Q7zK#qqZ5U=k*uh;fMLKX zwdou0yUa#TO%@e~iEER3C?yyq9!jq8aw-wKz(L=);9@s0mQTaPLspb6>#O?j&nvlc zQoZe#p{dL7bz=)AmV#hEF~#c1X^D9u;cVe2I1WRlOt>i5F1ksA`C<+LxOvb8G;qP+ zUI=D%#~NkK76m$?F@h<$!cO92x5HWmwtgS^(x_&g3jXt829y%?Vh`7M0z98ocs{O> zRvLN1F-Ux94TNFT(u@ovcCJNSB{hUl7{m^`u?Ip3dhs$hLukz5=n7uc6U|RzTf?<-;y8SJ*UpO_f~aNn)~OXx~uzE z-Fwdaz3=lr3!#wGO?ZL1xYrKBATrcGNfInC)F;JBW3I(YN&Miw*Usz= z4%)Y{I{Wd&b(E)`9}Xm%)(~^<5VKx{rAmU8ro!H^oUK7mI&JiP6BMgO0?Ig)me5Lq zTjkTpIHUA3=VIe{_cuXpB)|NPFhH(~wn z-@!Yp5ApoYjm(aF5GHV_2ImaivW%l@&Ys)m3`a?2q9dr3OSrv2i-egG1I}|e`hfwQ zPJET^Wu1{HoYEQ!6cyLX$S^ji*lEW&93;3{Hw?DaMAETX<`groCOm!P&NnlC+_htd zA=rSH0#%P=>mIG zoYRc=k%F7)36U?bl+vt4Obc$F3Z8ZXCD#IH)PSNE!)(Jt)n#awIGQDnvTJ7`E~Nym zilHk9iQy-Fygh(xQCw)1aCf^4$F?AnQ_aXAh$iIS<0G0-0Am!KQq0wDlx#D48I6KD zVD9bq(LLNmrCNr=8D=X$$+0nvjEnM9*XPmh4bcr*hT4aLkGTq)kO}8qi~r`sZ=6{O zvQc5mx-l&XgGf!)cDPK#({1bxNMSvCdCo$~a}fwu03q|(gI1<90ANOsGvv~JKSFi1 zrc68e_Ao|2lyDicSooeV5GO{vP^*>-Td@4d!2Yvut2^VU>iXY5tq(t5S;PBRHt^2s zLwsrbiV<*7J}Ly3$yXfNbGK!+ur)|Kg5_#5F>;s-kz*JLBtm8S{PF0iyb8{^&}g&= z$!G?aX0&lA9Gk*orb9`6=(jrw9E-xD!2R7W`Z1fZDw}3z`nYSyytki;Y9rYj9twge zP73^lNZHs9D%j{%5eyIE4||}LV`*U)vo!~cy#I!%WRZ-Q(blqU2g|EdtLrv$$>9BT$#3<0m*A*~s5qX+enu zLTViLLR=sD2Am8G~?WE0F; zKa$w(3iLyTP=zjBi~s;207*naRGfN!Hp>k6_k+U7!1f1!uh1Ff3&Hp!EeLTUMuor> zgd~p8)sr&hv?Cw@9LFkj2DZgA=cBZR%|}nAAYmArSTRN?!KRwWu|L!WANtfoZoex` zcnG+O{UX$;?mSXBsnQEGKPo(KL6}Be&YP>|gIii2K+=G*|a z5=X-U{`o6^mT5hvJwLmB6VM9fl8biV$82+?eW=)IjV@9@lo$j_!EDnWbxfXPqvCQb zHa!pkek?JJ1QKP;HU>e0ULbJXi_rHYP|83F0q5rP;*8*Ekf1Y&CkQclW@uUnZ(Kah zF*qJ7R6SN0(e}GXSt1ot4)(f3>~1oW_UZ4sL$NDHsv=itFli!KXpz-#r z=zQsoa|^<^dQWBvN;U)beP`;{;95O0R$Po`3b*`)>sYMN!luzv4nqbKrY-+8u<39J zC?POgHU-4BDTaYSFI3rFHI6+AaOG|C(nw?LGGGIuavEqc`b&P#uZyVvgH!R-yK zKe>aeA1|FtUCyTt3kB?T4cgoE%-r_CpUrXi5G4}--P3=L@6F!F_h#?o zFBjMG)Pogt1EXSP)P(LP64*UHn-GMJDP>!(L0v;Zn2A_2LLv#nHd;MuaC`&VDtp}MP3_{G$G&94IrI~x! zKe=)4`~RJnzBl1)bv7Tv!v|X%SZX!E2?bYuytK;j%reF27bL!T$;MB&5)gXo-#{p! zq=1GtCNVgTl~3820I)jaqV7ugelU^WkRKU1QJASP*p8En3N(R1)2Pc6ox!iZ{8y;| zu!;Lm>=xdL-+Jd8sQ<8u@APkGUV9>ralhwH-5Ol0M*uh8iiuRP7=_f@06mOhdB)99 z&h#V?g~Fwloh8ap0))8>I}bJyXgE}XQ<7m2WtXGfk24opj{`O@#+=&>n5{Y3?*!-u z8kQxpwc~gp7=Nrkxr2?*?_llr2A1Djm?{V5oMjZ|&7&bM%^3UdVL}Qy3ULy{E!ClA zgl4sjKX`pok3atS(aHvv-n)=_Fs7|xy3IL@S}ZkC@fNply)vWj|$A^V-z}rZ@=^gv^JdjXVzBm&F<~2Fuc9=0AFw4 zE_m(T@0HHP2tXJTVVqutkWfnFs25|V>R_SHp<&!+^CvlDW)-(O>!IYD3wM0mAQT|M zQ1>V(W2m~L`G^u&Bl#^MW~)#uS#T(@-A&+epj9%M!p3m~N-0D#xpqA3#u$H`RS@zN zW(lL4sCX6_C6G#Et}OB4mf0S};Q)ZyB0Txv8a}!D>AA1@n{T~5;lcPQPCBIot(u2= zi6a?B$(@YEL;wAAZ#>e%E-eUyP#{SXaL!P1IY3MdT{_~O_!54s3nsT|eEHR-2I^(o zkkCf%+2gLvd2`i#uuDo*N->@B4zF2K*dMU0)n?p9Dk+{8gfecBqP51#te34DR~FXs z<=dMR48>Ht0GJLT&zNinC}=_!8*Y|Bm0}|cjT)3@1+cMRvQg38Q|;32di4HNPQG985>oG_N8*8l>-Yq!PHiT#y%Iwoy*5*+tKlwBL1!wh8^hL@0+-!f{z#@&(mYMx=)D095K z)HcVd0LSgYgrzx_jee0>vtt9J{ns*Okxw7eKwZ2_evEXU2Q zPZ=1uK|n`^&cSGY0An_W!iI%#s-a3+5XN~i>1goqq@4xhq$AqYZNlIA+FP0b{J7a9 zr@%(fI+IywbAnj2QLdhGnXT7KARt>qxpnOkxco21;le0H}hvhN$j z8i}Il`!PJrj0TLFe;Y)yAiwQL`ZVk^C(e1WH$XpBc>c;~?+DVzSs22!f^g7_!I%+S zU9J1*2?q%&!*d;6s0b|9G+dkE_rChZBVYHOOPhGT^W+2*loEwbhyoS-V$0+La7qzG zF%CL83U{RNufFx>)YmxAxyp|vJey6Z4{ILF7>=sO@zMYU5yW;YL>fjN(ml4C;=I%A(c#UJOnI?jL0LE!iD)(!LVkw z?%~PRb$qmO`OMGbpnVgsKDCEdiDI^1LapTBs2^t|=u&+FRi})KRl@)E+K;mLHv_3h z1@g+gjm%fL_q4HIc=Y~%@L08TX;d)*Km5(^CnmSq*zjd@Tp-$9-g8a#m+ z{MxH;WxDzN1(E&&4+hn9nT035GQR+^AeEsO+nmCs#ToN(XaEkWi9!9P%F>1N)aXJB zDowyi-8J#kp)kRyHIJiFwzHG!lqq+bK+_tz0DrLAgH#%qmu9hjG$>GbKZ{=j@OT9w z6*;v^hDdUMXh6h+lWqnc&bl%F=__wM)@z!AJe>)e2!%+P*>bkR&?s|60@yhjqCJRD z3qh>$C*OJd%-497bJbbu!<6BedR3+c*y5%uNwJ%%XTuLB`5)uY)3AkU(QYZIw@{Ao z$~9^<3|lI@@d1ER4mKJU(pI}2QHY#D3S^AB$05OS)b-Kn`#2d2EVVwye)~26;EOl^ z7)x_&*gd+Iy*D3iT*kuU9t5$mzHE^=w5rBMSOmuvkopT zkV`d%uibQUttIdm9}jaW(IPWaF)CLZj2jbK%XUC`8OJ^*){SR9+nl29`x7G?YcyWH zlmE~^T3^A9rTc{&B=s`Po0m>w7N$lGOAQB6l0d*lk|cciszAX=g1@InDLRA`RP z_Gxg=xSRCj7KF1#hH-+~vnw1w*%A|mDS1?$F&lv@fpIG%@`xlxxmJVH6bcOGN*ViY z9~YV*;-vp1c8_lq3IPCoNInF4{TALRBpci4j;UP&9%r+|6I_jfb^3d-4uw4&PBH>u4;+TvhKWa78*y^-{ zC|iJI8xO>bO+!6anjlFe0GxSJQA*I2B}nGt!FC(N81P&Rnp${v)%%4C0RY^+b|0VH zy#2_6Q0!D-boxD$Ll`G9nq>=01HZg|5kI-K{^%QXc^xl2T%KTpY9Vlav62ykPKE+) zUuEjk{A|xT$CtJ);oU2b#teYbS~F*mGDryezCg{<@Ei`U6{-#eMX>;1E6^tu~MqhbZh$5P2$G zqU8Y#HIA6LP?}7opbwiU@j3$WU7`@Ptf-cXM3SNuT z#4$CGWqbprkx`D*3k)!sjb?{_x@DMlQk_KBM8)p;F`m0zo_O8QIwEB6*JmsU6-$Cp z3zRc#>~#Q`Z2~6>|Ke+ZHgN+^`?-GWop0doZXcHx>p8v$LDd0fDjbYb91RkDwBsX+ z6O>&$D+u|5`}=2L2GbrtTG_x;Ypdu-62nMkC%hj^2q7OSHp(XirK6ycn;UE;wPoj& zpi*|TP}H-Ms`9fgp)BKD%+y>^N;67ug$!^QI;Uz!5rPs5LI5G-M-q7|e3Vq2+cq3` zZ(@D-3Z7hjSO_*@l;ETnz~&6DW8n|K{Z_`{%}2j|_sy?miBPEzNLmn#rbb|~Y2nZ> zfieq#hGmyC>;N!;FbF{}(C7sMy+B~OZpd$!W*l+{Q!9<7D|mvb4n!2Q;t)fK&`|J%*Fiw7sSRb#&ZmJUMP)0 zSghDzSeYyYkJA~Pbz^?kg0MX-!50*7e>#L)ZlLOtGq(xTX7}HC>(xxH7z#t_7I8eH z!NO4pAmT0dI`4gwb<3BagTpa5G= z8Nex#XKL<2PTXWUHsp_lPuW8vl+@ZLA7Mz|M==(WH{b7){&9v7a||2}W*Dr&xkg3XEBJaaADeoiMaLL)B~cQ zS%JC8D9zN3>B!*665AaCw^SZ^CNhLVXBC@SHf%Z>H~*;4;JkhOZ@%^NV~Lwih7ung zS1^sirnKe_Y}Yflh@7Zka+R zlCVIm$`h@2`W)96O{#aRUMg&rQXpv<8gb;8>Q7u`h zj%=hS)p{j7w{{U%DJ7f$aHuSd2J1&=9Yq)eheD!(L}=JV=5EZ>f;))Gxhcl^-!Ff{ zPm@8%!jOE%`5)t-V;(g29D@a=uED7r@bb)QF2-4D*J&(#iF;6l7cw#PX0;0q2Pd6A zF0>r%bTI;>rWY!z| zeH`^dc=b7yT^EB;8WUKV6o^$)C7^_YTP_%P@!X2Bs$Xch*gP6eWT!^hsOTv-9jJC77){nJ9-+0;w4`+h*0qh;cufZ5sQl6JJ9MGg_2vW|D%T!59UB zM!n*q-}f<$1peU@fBx8o0GJGndC+qa_&!7uLP%s_<-gfjLHl?EQc)-wfmtQY)XNB? z7)zB1Z~g5z9_#h~!B4*hm6%|gn#Uofz;0JyuO}cig=>+F=OH!0Ors1H`DYrK_>uvH zV|)MDY-p6pvRs|3O#S}doufu8G9MqXZVySnHKX zc?=d9cMwMdKx+`nKq<$Cs>FeacREDN735M?wp&kNGL!mfM}U@Hd0gki`O0x zl+M=n`$L3+;IFrh*>APJh<^6~LdGzWw%V)}8H17$jIcxDOIIkU2yk_wTzLPwk+JSy zXqAy90_|af^#dO_7Cr2A69{1lT8vTDY(1Hqa5MyVk9trt`GpDrAtVbBDcKC`dtDrL z1I*RkQ;VjtNUr>I>fBTJ7#y2U7@#z(#{42>)S0nC7s4qSV~C>=ZmEnLvkZg~%+;r> z^}2%yi6ZFu0$gga)d+(xE4hqYy$xG+8N*A<=qwh z8Q%A4-BM%-P^#WKrKqv7a9Q8uTBm#lq z)m!$@R|uHnK`VuRAkZE}SemN?+We4GDU@Ba4>y!l3X7bYhiZ|a8%WGl9n@XJSR5|| zN+XMV&;R+o-QmOx=hznJJ&_q_INUJ1@@l=lpCCvS`auGvf&bx!zj&-dkpCd36@=N6 znbm~Unbp~TJAmRXL_rU6>_a30Y}jf^Aj6Nt#ok;D-{uP#3uP?cNam zP~nqy6_!&*681qUFZcuiMlPI+f=>DgR_3eIWzc~xn3oEXWFti?>rM~0vqE9>kNkl$ zUw3hDFTi|7;b=%kF>cO;`Km}lyl~M+#i3Yk77Ni##lqnr!9v|F&LOM8#o+ z*?)gvI0$JAsz)ao=Y~`yM%X|qN=nsppYC)4?x0z(PRwvYtPm?>|J4hMYQ1T{$7fkH zo|h?^bu7%tvs0@xiz@U7eG`;9(yKqNSm__V_Zk)(4%BFCFbtByjda*gU~z`BXBT)L zvop;?47eW&lq(eoslY4;vo#k7-2l(5Rwlwg`+kIOpwJrxIP4jNki&kG8HE%+|B<&P zU^FFx01}}v2n4!*f>=J<7Qf;eh2QFI37f|ODz1h3RyjN2(vaO)I=DRRWFu)lVQ8^o zIh7P2t)We1C|V zTNJ^ZhYh4*sA<4M#bem%$}Ea3b(TqE%=4WV(bH$$&sq>3rw~v|aNnOV zSe*&&7~g*-K$(qttqwm3(X#vJik1G+2j4=)W$JG9DzxkSlKY!;{>>ppp-qBTT>|a4|a61#>tnXaHt&0yJ!4V0W6%NaG!MzGj zx<0lK2NQV&z-hik$zcd00Y6pV~xJ3|j52>@j%^B@$KUCP8igs{R%oNgTmVPKkHZdZkCdW~tQFaZ8xZh0>Nnp9#qP%b+?so!o2R?#WVXK{>A0%0eI}8&%y*iyokeaoQuUkHAK}gp_ z(?)}7&wIn7)mb70v{s`;Ac|(a4A-W(I!nXN) zC3ud7w?00CNCI%nftCWzietn}gCN@~^a7wtJJ|1rs8`F_JQ|`^brFOKEQ=YhPlYU1 zz3Op%uy%+@GBiAvVFp=2`0C4F(NW|B8gLy4*A_j)aSzQYTyl-17*e9@(ySBsaHEaS zU73YSV)R3Wwf#OmchTI4w$1UA2OT_feI6o?3`j&cNiX~7R; zv^;YGf4I?wrWS}c7u56DjPb}}?BclNqgE}!vpK?Gh+ZHtTjqFp(8DvU)6wriOo~6B z>mfK zsiILafZRoQ0BD7OJVt=}Z-4d;xE6&b)P&9WMXV%!|C9z?%dATiAyFRL-v7~CU(arM zN`Sxk>G>w0kNbVk-})2yk%VhAI2OTdd zXsEy_MJNr^v0U~LMgkAE4iG02U%GDm4?;nZ2oqDjw%^BdH|CHeCYUGxxvwAi=!FtL z-mypOKY$Vr5Dh6}G+GzY?;e0VF6u5vXD~z}HJ-V70eidK*ls6~NeFIxARt(oZvqh5 zIOu_ZKxs81GF3pJadS>%p+<1r?xIn$@W;RQUUr~RO0d%-==c(cM~9FK;C2bOZe7Rs zezJpDC=d`(!l5Cvtw(;VFk4cnkPa@+RRI|xlnjdv7a%5N5GB`v zV-Xw=PdkHViGkH>)jKkYP%gQsH)k>D8CFwX1S5q29l0PI5NYJsKMHK{EI^GSw;J^d zq>w0=Tts7uF2f)|#j`SJ8EQFblo%``;f;t&A8z&_mBL)Jf>S^~&CA;v7Br3-aAx=&X*On*sEO@C zzF^*40Soq1iBEQ*r=2*L$}IMe2U%7lv;rX% z1PagGUIh_D{OVH_w-y+VhY~giF3eQX9z>X{dj+0>XS0#N2q2|~Qz{|SHX0tu7@>p^ zthOwW7oYorzR++{Z`4ueMtvBMD5r_0ITvID{9j zioqCxlo}O}Ln%OMjr#`?q*7RDmaugkVQcRQt$GEN7@4cq3jM(Bu=}CF(_<%n3Qneb zWN0zk=di zJ3Wn|tfLb<*xcSl6#Jl72_V|6NGL(8TEfz71vB&*i!}y^jqU484(6*IiPRXz8iyUf z@b_t`sYMMHyB%nhI51Olz$nGPe(S5}p6ri${GG48g(NW>7e*-}sR6?AXFvQ3fK%%F z-D3jC2-jy#0Z#cJlmOMT5z^%OAdlh~T$^*yC|kw}E0XwdZzMxz40}gClpKzkx|g{~ z$BKec3YSSRMzGT{kLvYTL1(&Vnl*sw{4QHY_C%2 z6pS62hE%f9DWoU1N&--Bk1`81E;d+!w-5`BAd0bk`39CRUBibTeS+=nZ5$^heDT&Y z{_kRlpMm(6NciWp9*in_~j+#7;%2fy;gDt2}cz=(dl{`jq5&i?-H_ElV6 z-6>!}3w0Y7Bj^s3so9v>ND#|R4xI--7aJ~qy52#Bb9p{oh?vW&%OaEKsE@Zt;4;O)B|eExD1Z~Sy8TW=CVpoEET z(@KootNm;%^4{7ZF1K_>K~62r(k#rn$Fp3}L@M(P1|=opL;^~o;#ry8oIU%@Gj~?Y z!>q#QMKFCoJkzKo5B~KdodtymO|jIp@aaw;*K_vFecx~w(nOc-V;@hfHnDx!!>y$% zHuihC(qbsvz(UQQK#9{ZO{svY$3{Svf(D?7g%3Bon5)`QT7y~+?(KB3P&I)p70-fa z5!jANJ}NPhZ9B&8q96Bprsm<3?EwzDA-4JsB2_{x8A3&|+jp^lJjByae-U5&{1x>3 zefTkhN(M-x5Hrm>2rFT+D$sC%8Qa__@9(Ni%Rs1!{)z;!*Y*n_sAbtmgo02SOdC3~ zA`JVT2s2d&k<_@cw1yXMZ6Q|g;-q(L>dl_E{>R$uf*nIg%Lz z8Ye@AtuDcCmto^LMmLZ+N$ObJ8{qE4UGxVr4hCf;A^>N0Hi}SYGBGWuVwjRR)hax9 zQ4}c1C7U9W6vNoqphu%(T(7!WTmjJ%3N%|AOA#Z875b3^d*Sx{oz!_nNQFcJNgRU` zJkqG7U=Kdp>)u>8Yn^h*E!Z<(U20?>)On1<^n@PIp?4hf0nb-aU>>FgtRHC%Ly20g zd>TU?O4MDJIJ?^dp5q zglrb<1qleHAWC4aW&_;8emj6`Q4E6^{YYW1WzFcef_92;03|*gUv~dz;I+wYpKjf?74tAk;9~n5p#~2!#TLF9@`h0A;Wk#cbU} zBq;pYBw@u8h=hg`Ms#+u3NQl1>J$UWe;)ZnA*IYJ(;jV)I>V8uOKTkYI_p68I{|K8 zI0cVeRU1NTT&PN{ABmhgFoBXWKsZD+Fe8ALAk+ruhDoYqoOKEY^wVIL3n9YMyQMQN z1OYPFV})(G6IxR0+wAFMXp6)%*N3te~!4ji&vjnMx6~%;{(Vz!tJF}#xJP2 z7Boz7{A8_%=dR5lNs51-&UUdRa4njx71M3Sg_$xS zCFIC9eXhb#@i>lqMXr0g9T>(6ARJA{v{YN|1X3wnnROtPhURVoL$ECiC2mYCK1(6^ zVB3e10&P))mI*exd_)dO;CdB=K`)Est~D;;zx+?WiQCs!@W1|_{}0yh{R}OukBSYf z%$xmis$~eH2%ZJ3%vP{ETSDD6C+f~9r{JJ3A(aB93{Vn_4O0mE!w75peOy_rp*M^G zXi!2?FL4C1z)m~DV#CD`-hX{+VR-$;zbIfXDJF2%_ zkV-9*|3LKSQK zeOz5AW2c+o(u@m6DZ0Kn+zF+Ht>6S<@b#B&+_|^Y!5{nwZ)a+_JeT^l-+vAcr+D*c zujBsKDxSH%lV$y-6*DZzU_`4- z!HJrPp*|T3)T-r-8EI1!XFXf7rpjK^wc#L$vEK=?ePk|pnPtXq(HV$HxtO#HF!d2|wdmB<|T*=w9w_FJyRY)meGm{-y zbuCD69JEhESkqas=5aJCHb5BKgAiJqXm~9pmS@Y@IvT>ZC}N>eE_rY)iXXiHjj0_# zYJU62Z~ZbJY+uHM?bUM&0RXJ+UcvLX_YfDG|qUmY!|U27z6^1 ziVXz{iyQOU<3W^ZOG=Ifq76O0Ub0YjC?X+^^p;H$$EKNorq_o}B`Pk#K{vv3%Y~8> ziwz4MUrlrxspC+E`MB7m8K$t`SJ>~y1wVkJfyCuGj^(;W(}{5$d8aKtAt20Tfih-~ zz(8)O#UeDTLuOByw`wSOUJG$N#HzCgAp{POy9mPwE9GD!wm!9`-|vNR9UDq2SPTeb z1#VfH@lc$cZUy}W6MPi%5C7il`u(jz0fqh_UosTR@4opO{4mZ^YE$(1&)+{l$!2)* zMhp2pZzN5N!a0W@##ovuAxQ*wPy7*@U!PjJ$9W5!0zsJI{D zW>7`1+l5P$k)I=nWpm89vTy>VKW};xrX8K@IsoB#uyb;5C-93t#v}M%`~Byz*l_XB zUi(4e&(C6L_7V#_oft$$u!sbq91I3!_hW$@s|#k1^&_;Z4rVG0Ng@!$3bV}$R%;4} zz1T$FO9@U5i7=EV+AbC&ckIz9IevYn`}gHmaoaH7A>7~h3ny^;b-CnX&@=1mNEok% zNNBj6V3-iRcThE;pH`3}g4Pn8dvLu5hQmWJ$_pKWQrc{pV1Q%GDMKrTU%FYw{>~PH z$jH*?=H^hY)^WMiJ9is1zD=-+KsPkrAm%#p;D<3P4lSrc*^}3o@1%C#7NhvzUjEDM zgS45#|MK$p(fQIFXuSO@?rvYjm6e@LbQH^x)!7I;NPXGUxN;H4;8bTPahl{}GlfdY z!N=QuEX>xSr9jCu=>Pm^U%l5e;9l8fr=5q(%!i&RocJ0RXRsN`Dqi1Dz=%dKFhQ?r z=qS|^tuiSTf|)X%x=r|GtA}2s(e^dMFu?nJ482g}C@f)j;9|c|aU3ul3{C?rlopVw zg_h+Ovj0NCFjpnGQtiXBIUekE5JfSbxi(wSS}3K_uw(eNfjBlfg8d-IFku;}n2LD% zkwm>>L_Et)E3;(}qXd)y?LmY~GtQa5|9}|{t}SolbIYG*#y01D|5=6L*T4S?+JgxH z@2?me@HBbr{u8_S(aHwCynkbY|B;_r^HgVUJE&Gl1#OAL&3^o#FAxchi&cG^)@&Kf zDGiA=UI~*TsPXGF1;0DP1eN@jD|a1GZckte(?V8fDptW+>98B&(hR}+VT8Opb7oL7 zh6xx;vl0Mg&y-pCum97Ru)4B{qmwRzAV#z1o$H{LQjybb!ofhnA{z4z7oYA9U~|(c zR$PuSicL2;rV3@h{Pd+e^@@$Xc8EXvTjm2zomYP6#Ww%|m;dqU1#oX`b%JP;Z_&m_ zhrC8%ab!F(UH~eVQ7z6?XyJyfSgNo#IvU7qYmxqadLyI-VHk)}q??HZCnFkl7%4nF zj$w0#OQU^wT5!^B!unnpns6LPWk3rEdlsH0F^JUZD3JJoHda)Go`z#GmKtxKX8#Q% zfZHCPUA0i*2{sRUXt)$luGRtQLLo?>n|1^r9^ynn%1Othic7&PyAZ2wQ8NxzT#hIa z7=$J(Vwe!D&V7o{U)h=f0UvB%#^;tlop}B83PV~5e*4{TWus)?vF9KB^jpwU;Gex_ zFsHml+c-#EaVY8zFkiD!=0h-Dgbg=Tg=Y@uY-XK7Q4sa0IXB-$dDCKb7I^uW;&udOR zfA2>h!H)KEapelMHpygXIcTM7#dMoc_Ds<2LaUrzCmI+9%P`D0%Wy4*vdgmr#bN;a zr7v8*qo|F4{@Pzgp#9gV*soC2=vKq%m_FU;C#r2!?9tN^%F7H0fr z#fHTx)(_(el>fYB7^Uf-{@iW)k`!KNZGV73Qf#*q zxLo4XBZfh!(evX%Wmh7}W<0IUx=d>cDU+fll}ezM1h*W-nnK9{etg<;o_9et9D)8h z7HVm@X~m@o62MOs^yq`OZR0_i2$|W@r=Q2o<@Ibmc$N$Hcwv|p$~(;w>AP=!4Y45j zpI$l*kNumKb-Z$X6O3p?agwc-^9<4S^~Sw0$FYDxjBGp5^Am)zfFBw8c`P;jSYZ$v zkZ@cCRWETQLV&;!#S$qY^E}FE9IEsPRlIfsF(~i5sGj z=Wu+u*~Nv1i$>KkynC1=q%ewcG?*j;O#_Dt7Yrw;*UH8vxZ*-6V7ncmA4<4PLrR(b zzY7g#;&n3bxtLbkB@NJkFnHxw0rI2 zcq*o#Vvrab^L*XKy`2tbs#YOMs!}OICNci-2VZ@xLa=@!vD1k$TP{Y7efy<1@THxr z_|fvDQAghEFJB;1J^xQGJ;XOUw+kIjdV@XcBp$?MD%D!a>D1;EU!m=rjZ!ZVh!bHz zYu}7t(a0ZzIbMM}Ut(ec1TWhZ<+0AjPm0M^!&pxQqh!=)C&FS483?&p1uj%2n${5W zUVs^Ah^4B)N<)Cl4i>x!t1}d3o8ro>{n*z-+A${DMA@gKVj5rr5Y#I!VnHC|5FKBF zaSM)R=;K;xkiYw#m$hqA{O(t$8+zmmLH_aWul#VT=qO{DjX;|eq~Y9*0KVilot(sEIr4SPZfD%BcB1o8uwelUvhZ}8N zU93)}Fbf4pO)83?4? z()TN+VAm@y$__`PY!$walLVA9EVfEu^YgQJmKzp+Y3DM&dVCu%Ze7L;50^9fZhl0_ zKc*2)^1Akv5f;P>RgWQz6hdu5B{6J%Gs}TIwJKw;)oi6_6>wlGX6mKrA;|mY3WGC8q zE1nvjth78tQC#@@L97eROg~B{@*>g$Lu;THY8>=Jtjtv)6tLG#GUn{P-9D}@Rtn&3 zy<+43ZXXvLR@RdHiAhC{6N%X}%{tcfy4N5$848qLj*AUD`+3u^CqYOHt+Ity*~p9Y zqf;Jy{VW}09$V5{VXnfm5u)yK%+wq_JQ(2eg*s#sgI&F}bSIq|@^;#P^w!tWc>C3< zg&=)w?q9+4H#Vp0+L_})CNUaiibUwF5LgVx{>n3I$c^I=LJ`c>>@!D%@z(XMf^dqe z8?(@qicGaY)h(*$cDo`24;vM8S`b39GvI|$AdTZ<+yS%+zf8X_SW=0w@b4J23VY=w z32@l);VTbPn4r?3A7iFb1|w!QMhSkQkzv~Cu+S=guIcxEv}e5Y9Gim^iBh?Qx@X~H z!^&Dqi(80C9R7v6J+&bG##^sW9UaoG!hh(0uJC;SiQO{`$4@Rj#MO_Mrnch!NTXSC z5eu1pJzfCfI09vCl;K%4_DI1<*ELGnvS%X{CMi6{v{L45ew3+s9EzIFLI!@O-2ak| zeqso5WzTHK=4wtx4Y$XB{?Fp4k@9Uyo>TaF$~OJE4v4Me0IPFVY@dXfsX8dTCV1w! z7iI;Pz54vkJ7t#@ywXze=uiLl@15Bhq>sCsm#{qZiDC0O46#(G)hbX)j7FIiMuW5v za7Hi;1ory|&A+dzD7hRJmrn&LKiFvF zs2ku&E#yvmL*y`WQ<=$0&DW>qnNmbXq*C~Ir@E5KiT%6h6)Yp?IV`L#36Zu6MbYrp>-zPx)C?_b@_{_Wb6yLfT? zYC(qUx-Jr7wktvr%-0R|-LvUPW^XnG06{Oy@Z{))qEHYBWd(v7g94;L$4@dtl)Rbh z`hkztxhmR&xX`hrYrHTP2!+CY&Ca$a>CC=$G?@7L)3s*4bC?D~rs`aqnN%o`>#URh ztOX(cc~j>oA*I<;Nq|ren=?pdn6BhE|D%^RrKgllnG`Ra)EMKeM+!zA1q6ebVyUXL zS*+r5^pavBsJI*&z$ZI_p@v?rqT+FUx*tu&3ho}tf(`We%vJHMf*f@mvzV)L2&KU( zflwN*W!6a_?f6)1xEKruNHoVzRELfS*d9~>LJ)`jf_zkKof&8nLXCGJ(NM}5T9hht z03nEiPJxId#3)uZlG>Q2x5hjL-EOOg4;_D9Hu~&!1B!Wt;6HajAuQ6 zu$!Rfnk`O$lz!bTF>ubN&f2M5TP7iV!STY?>SJLDzvv?+GPMJRnyoQcwF=nKxZQqA ziB4_Y$7kbl8ShMm7BH&x_f82ooEf8()%hxqIF!k&D>-~(YXCxVGL%ybLE6e*U#e%b z(|#wwg{B4Q5E=sI5S8V1PK>Y9Qfjir2-c2H z!RmtOZWNNLl*VB%#B99+$D(j;RtO-IV&968Y*S8^@y#z);2oSdN09 zf4|j;O&JTFjS_w&k!X&eu63}~bS4N=pJnZMVYX5jJ<{z+3K6g`KYQcOv{v#_d*|`> zR7@NwDbXKB=no?_t4`*y62}rY1A0M%D3%z8BGaz}q~L};-pbxuZBG0GCCA2l+aID6 zcQNo|EVUZogcjnxJARBo=)?1>89yPh8ey&Ch6_pWSYH~z1G|CKD2_=!)K@%|a< z&%gftSJ3?H8N7CUJ^MN9E``!2%}Ij8qQK%z1&nAgRU~57%T_iTjgLxs0^31<@&L*+ zXKki)J{Ue$a^PVY3#=>@3r@P$O+m*rbJTTs7E|v~Lz9jZiDZ=6U^7GB%CLhGM8IDD!s;ES#Ul&Bc&9Ld<`W5_kcpV4 zF#`v&IiY)@G4CYM1+`+nl`Y#8H&+^&Rw19K&H84W62rkd& z*zUJc;V$YfDex554g-X-z*bwKR`GDJQ!=ObNNbjwUZzPq8aOljQY%#m;7Cm=@&!dI zQ2-b7TL!HXNF_lj#mbC>x+~!ar}o$Xz6wH`d6_rEq?CecfyJ2$V#PqT#7-xKW3xh5 zglx={N#)i{=0Af|LtANZrer_Ju}0nsE1`Mk<~be&p}*2a|DyZux@v(mXwpDPG47)m&XHxGq8n z7y%ds&aSyd9-0ell_E6qmemDqWw*4JE4)J~6cjD0J&LeW5^QoCT*$H+E%GQ%Cn*A# zA`0AFdW^gNAI$rpbsGnUAWebXc2v3#YR8tdNs3Q)Ln|QoL1^vF09FQq*CPQ}COCQ+ zLJI323@-kTMJ2ClH>UL0&hp}%RpdaM4R}ue}I#V1gW4n z*aHLz2JK>D4M#D~Z#ej(>+sdc0U>lb%Z_=Vi(wU}aH!cHU^W{SIsn51k5Jq5P6%O< zj(S?ICKt2x#_DgE!v5VN<)HYiJ%;NrJb$*g(f!|)RLp2(3B^3Os3tt>`Dy?F0?kQ8 zK~xYz(DoFf(6{>i-(M!6kjOH=mZa6Bn^c?OkKb$-5MKWLl_i|fU9I;C1naP_`&M_? z-gUkv>-3z5IuFr0tX^Mr-Bj=6`-{~At!;&B0g6dm|N6~w-fRC^IThk^?N>HyO?1{kpGKfs{f!{hFtbme`# zw}(Ifo?xCkhyq?(aA`e3Dj42P8X(kxlERV_ODUj~fLy%VyM9#kB#7KjA+q?E5XtOK z0Bn7N5Shg(nB*gK0^}k?&J*-I0UTrqU0@P(?6vAsg>82P(?$4tmLlglBnXrOxLT$R zX-;r{6=S-{(RU&b^CVkI(waRZo8mgoK!3jf3bbkt<|>1%Jo&( zO%?0h%eU1b=iyiwQLfi!xi`LOWw!Yg%iyU%w9jIOXWJL-hR3 ztlZw7j}STm=6Qn93D9pht>f2ohT-WoUVPEF&ij2h#=DanoaH?**M|_?k`fD%LhuA( zw7Yi42Vl+J7b3O4OKz1DmCT_a;d)Uq^;YKA?<&cy^Y>dR_9G4qcog^<7`j*+KRTuuw}@9@E9#w4#t0!$=$)Tvh%-imxtgvj$sG>?yG zMM>!KpvZ9v$q{pj({X|v40$-fj?Zz!eIu7A)*Au=1#|qBJ3gg_<(!hd5F*JGgwV38 zP|U1bl8Z`-TJn$(0wH*zYNQN=H~=K38H4ME=(j0urZI$~;A(#7b9opANXgwhg6YP) z-;EGDK)7JLK?|Glz;jCSPM@cnZ!}4J*K^v&v+`pg`0sIBlKCIZZPPO|g6q%#0000< KMNUMnLSTaAv#N>! diff --git a/mods/ts/maps/arivruns/map.yaml b/mods/ts/maps/arivruns/map.yaml index 60a7200aff..d0f4443bf8 100644 --- a/mods/ts/maps/arivruns/map.yaml +++ b/mods/ts/maps/arivruns/map.yaml @@ -119,26 +119,6 @@ Actors: Owner: Neutral Health: 100 Facing: 96 - Actor12: cabhut - Location: 174,2 - Owner: Neutral - Health: 100 - Facing: 96 - Actor13: cabhut - Location: 183,6 - Owner: Neutral - Health: 100 - Facing: 96 - Actor14: cabhut - Location: 239,2 - Owner: Neutral - Health: 100 - Facing: 96 - Actor15: cabhut - Location: 229,-2 - Owner: Neutral - Health: 100 - Facing: 96 Actor16: tibtre01 Location: 133,-102 Owner: Neutral @@ -1582,8 +1562,59 @@ Actors: Actor623: tuntop02 Owner: Neutral Location: 115,-15 + Actor494: bridge1 + Owner: Neutral + Location: 232,0 + Actor495: bridge1 + Owner: Neutral + Location: 233,0 + Actor496: bridge1 + Owner: Neutral + Location: 234,0 + Actor497: bridge1 + Owner: Neutral + Location: 235,0 + Actor500: bridge1 + Owner: Neutral + Location: 236,0 + Actor501: bridge1 + Owner: Neutral + Location: 177,4 + Actor502: bridge1 + Owner: Neutral + Location: 178,4 + Actor503: bridge1 + Owner: Neutral + Location: 179,4 + Actor505: bridge1 + Owner: Neutral + Location: 180,4 Rules: World: GlobalLightingPaletteEffect: Ambient: 0.72 + ElevatedBridgeLayer: + TerrainTunnelLayer: + ElevatedBridgePlaceholder@a: + Location: 176, 3 + Height: 6 + Orientation: X + Length: 5 + ElevatedBridgePlaceholder@b: + Location: 231, -1 + Height: 6 + Orientation: X + Length: 6 + TerrainTunnel@a: + Location: 117, -15 + Dimensions: 3, 25 + Footprint: ooo ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ooo + Height: 2 + TerrainType: Clear + TerrainTunnel@b: + Location: 146, -19 + Dimensions: 3, 25 + Footprint: ooo ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ooo + Height: 2 + TerrainType: Clear \ No newline at end of file From 38bd88e87420cfdbded6fc50b2bfb5571c9b4e20 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Fri, 13 Jan 2017 20:03:53 +0000 Subject: [PATCH 17/19] Hook up elevated bridges in Drawbridges. --- mods/ts/maps/drawbrid/map.yaml | 322 ++++++++++++++++++++++++++------- 1 file changed, 261 insertions(+), 61 deletions(-) diff --git a/mods/ts/maps/drawbrid/map.yaml b/mods/ts/maps/drawbrid/map.yaml index af5dbcf95e..16765ede6f 100644 --- a/mods/ts/maps/drawbrid/map.yaml +++ b/mods/ts/maps/drawbrid/map.yaml @@ -14,7 +14,7 @@ Bounds: 2,4,141,226 Visibility: Lobby -Categories: Conquest +Categories: Conquest, Playable, Original FS Map Players: PlayerReference@Neutral: @@ -69,56 +69,6 @@ Players: Enemies: Creeps Actors: - Actor0: cabhut - Location: 126,-52 - Owner: Neutral - Health: 100 - Facing: 96 - Actor1: cabhut - Location: 109,-56 - Owner: Neutral - Health: 100 - Facing: 96 - Actor2: cabhut - Location: 155,-83 - Owner: Neutral - Health: 100 - Facing: 96 - Actor3: cabhut - Location: 159,-106 - Owner: Neutral - Health: 100 - Facing: 96 - Actor4: cabhut - Location: 101,75 - Owner: Neutral - Health: 100 - Facing: 96 - Actor5: cabhut - Location: 115,79 - Owner: Neutral - Health: 100 - Facing: 96 - Actor6: cabhut - Location: 154,32 - Owner: Neutral - Health: 100 - Facing: 96 - Actor7: cabhut - Location: 158,18 - Owner: Neutral - Health: 100 - Facing: 96 - Actor8: cabhut - Location: 221,-41 - Owner: Neutral - Health: 100 - Facing: 96 - Actor9: cabhut - Location: 225,-55 - Owner: Neutral - Health: 100 - Facing: 96 Actor10: city15 Location: 58,43 Owner: Neutral @@ -214,16 +164,6 @@ Actors: Owner: Neutral Health: 50 Facing: 96 - Actor29: cabhut - Location: 53,29 - Owner: Neutral - Health: 100 - Facing: 96 - Actor30: cabhut - Location: 49,5 - Owner: Neutral - Health: 100 - Facing: 96 Actor31: car Location: 94,42 Owner: Neutral @@ -837,8 +777,268 @@ Actors: Actor233: waypoint Location: 105,21 Owner: Neutral + Actor234: bridge2 + Owner: Neutral + Location: 51,8 + Actor235: bridge2 + Owner: Neutral + Location: 51,9 + Actor236: bridge2 + Owner: Neutral + Location: 51,10 + Actor237: bridge2 + Owner: Neutral + Location: 51,11 + Actor238: bridge2 + Owner: Neutral + Location: 51,12 + Actor240: bridge2 + Owner: Neutral + Location: 51,13 + Actor239: bridge2 + Owner: Neutral + Location: 51,26 + Actor241: bridge2 + Owner: Neutral + Location: 51,25 + Actor242: bridge2 + Owner: Neutral + Location: 51,24 + Actor243: bridge2 + Owner: Neutral + Location: 51,23 + Actor244: bridge2 + Owner: Neutral + Location: 51,22 + Actor245: bridge2 + Owner: Neutral + Location: 51,21 + Actor246: bridge2 + Owner: Neutral + Location: 51,20 + Actor247: bridge2 + Owner: Neutral + Location: 51,19 + Actor248: bridge2 + Owner: Neutral + Location: 51,18 + Actor249: bridge2 + Owner: Neutral + Location: 51,17 + Actor250: bridge2 + Owner: Neutral + Location: 51,16 + Actor252: bridge2 + Owner: Neutral + Location: 51,15 + Actor253: bridge2 + Owner: Neutral + Location: 51,14 + Actor251: bridge1 + Owner: Neutral + Location: 104,77 + Actor254: bridge1 + Owner: Neutral + Location: 105,77 + Actor255: bridge1 + Owner: Neutral + Location: 106,77 + Actor256: bridge1 + Owner: Neutral + Location: 107,77 + Actor257: bridge1 + Owner: Neutral + Location: 108,77 + Actor258: bridge1 + Owner: Neutral + Location: 109,77 + Actor259: bridge1 + Owner: Neutral + Location: 110,77 + Actor261: bridge1 + Owner: Neutral + Location: 111,77 + Actor262: bridge1 + Owner: Neutral + Location: 112,77 + Actor263: bridge2 + Owner: Neutral + Location: 156,21 + Actor264: bridge2 + Owner: Neutral + Location: 156,22 + Actor265: bridge2 + Owner: Neutral + Location: 156,23 + Actor266: bridge2 + Owner: Neutral + Location: 156,24 + Actor267: bridge2 + Owner: Neutral + Location: 156,25 + Actor268: bridge2 + Owner: Neutral + Location: 156,26 + Actor269: bridge2 + Owner: Neutral + Location: 156,27 + Actor270: bridge2 + Owner: Neutral + Location: 156,28 + Actor271: bridge2 + Owner: Neutral + Location: 156,29 + Actor272: bridge1 + Owner: Neutral + Location: 112,-54 + Actor273: bridge1 + Owner: Neutral + Location: 113,-54 + Actor274: bridge1 + Owner: Neutral + Location: 114,-54 + Actor275: bridge1 + Owner: Neutral + Location: 115,-54 + Actor276: bridge1 + Owner: Neutral + Location: 116,-54 + Actor277: bridge1 + Owner: Neutral + Location: 117,-54 + Actor279: bridge1 + Owner: Neutral + Location: 123,-54 + Actor280: bridge1 + Owner: Neutral + Location: 122,-54 + Actor281: bridge1 + Owner: Neutral + Location: 121,-54 + Actor283: bridge1 + Owner: Neutral + Location: 120,-54 + Actor282: bridge1 + Owner: Neutral + Location: 119,-54 + Actor284: bridge1 + Owner: Neutral + Location: 118,-54 + Actor278: bridge2 + Owner: Neutral + Location: 157,-103 + Actor285: bridge2 + Owner: Neutral + Location: 157,-102 + Actor287: bridge2 + Owner: Neutral + Location: 157,-101 + Actor286: bridge2 + Owner: Neutral + Location: 157,-100 + Actor289: bridge2 + Owner: Neutral + Location: 157,-99 + Actor288: bridge2 + Owner: Neutral + Location: 157,-98 + Actor290: bridge2 + Owner: Neutral + Location: 157,-97 + Actor291: bridge2 + Owner: Neutral + Location: 157,-96 + Actor292: bridge2 + Owner: Neutral + Location: 157,-95 + Actor293: bridge2 + Owner: Neutral + Location: 157,-94 + Actor294: bridge2 + Owner: Neutral + Location: 157,-93 + Actor295: bridge2 + Owner: Neutral + Location: 157,-92 + Actor296: bridge2 + Owner: Neutral + Location: 157,-91 + Actor297: bridge2 + Owner: Neutral + Location: 157,-90 + Actor298: bridge2 + Owner: Neutral + Location: 157,-89 + Actor299: bridge2 + Owner: Neutral + Location: 157,-88 + Actor300: bridge2 + Owner: Neutral + Location: 157,-87 + Actor301: bridge2 + Owner: Neutral + Location: 157,-86 + Actor302: bridge2 + Owner: Neutral + Location: 223,-52 + Actor303: bridge2 + Owner: Neutral + Location: 223,-51 + Actor304: bridge2 + Owner: Neutral + Location: 223,-50 + Actor305: bridge2 + Owner: Neutral + Location: 223,-49 + Actor306: bridge2 + Owner: Neutral + Location: 223,-48 + Actor307: bridge2 + Owner: Neutral + Location: 223,-47 + Actor309: bridge2 + Owner: Neutral + Location: 223,-46 + Actor308: bridge2 + Owner: Neutral + Location: 223,-45 + Actor310: bridge2 + Owner: Neutral + Location: 223,-44 Rules: World: GlobalLightingPaletteEffect: Ambient: 0.93 + TerrainTunnelLayer: + ElevatedBridgeLayer: + ElevatedBridgePlaceholder@a: + Location: 50, 7 + Height: 6 + Orientation: Y + Length: 20 + ElevatedBridgePlaceholder@b: + Location: 103, 76 + Height: 6 + Orientation: X + Length: 10 + ElevatedBridgePlaceholder@c: + Location: 111, -55 + Height: 6 + Orientation: X + Length: 13 + ElevatedBridgePlaceholder@d: + Location: 155, 20 + Height: 6 + Orientation: Y + Length: 10 + ElevatedBridgePlaceholder@e: + Location: 156, -104 + Height: 6 + Orientation: Y + Length: 19 + ElevatedBridgePlaceholder@f: + Location: 222, -53 + Height: 6 + Orientation: Y + Length: 10 \ No newline at end of file From 85630501e19e6bba54a6c95d415fecc3876fb069 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 14 Jan 2017 17:55:34 +0000 Subject: [PATCH 18/19] Work around lint test limitations. --- OpenRA.Mods.Common/Lint/CheckDeathTypes.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs b/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs index 0fd3f11385..15b5d9a6cd 100644 --- a/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs +++ b/OpenRA.Mods.Common/Lint/CheckDeathTypes.cs @@ -30,8 +30,9 @@ namespace OpenRA.Mods.Common.Lint var deathAnimationDeathtypes = animations.SelectMany(x => x.DeathTypes.Select(y => y.Key)).ToList(); var spawnActorDeathtypes = actorInfo.Value.TraitInfos().Where(s => !string.IsNullOrEmpty(s.DeathType)).Select(a => a.DeathType); + var spawnActorOnAnyDeathType = actorInfo.Value.TraitInfos().Any(s => s.DeathType == null); var deathTypes = deathAnimationDeathtypes.Concat(spawnActorDeathtypes).Distinct(); - if (!deathTypes.Any()) + if (!deathTypes.Any() || spawnActorOnAnyDeathType) continue; var targetable = actorInfo.Value.TraitInfos().SelectMany(x => x.GetTargetTypes()).ToList(); From 22fad046a05d3032e7ca6655f6116266becc9534 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 14 Jan 2017 23:51:19 +0000 Subject: [PATCH 19/19] Fix units warping to 0,0 when doing a 180 degree turn. --- OpenRA.Mods.Common/Activities/Move/Move.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.Common/Activities/Move/Move.cs b/OpenRA.Mods.Common/Activities/Move/Move.cs index a1360d76d8..e7418d6e83 100644 --- a/OpenRA.Mods.Common/Activities/Move/Move.cs +++ b/OpenRA.Mods.Common/Activities/Move/Move.cs @@ -297,6 +297,7 @@ namespace OpenRA.Mods.Common.Activities protected readonly Move Move; protected readonly WPos From, To; protected readonly int FromFacing, ToFacing; + protected readonly bool EnableArc; protected readonly WPos ArcCenter; protected readonly int ArcFromLength; protected readonly WAngle ArcFromAngle; @@ -333,6 +334,7 @@ namespace OpenRA.Mods.Common.Activities ArcFromAngle = (ArcCenter - from).Yaw; ArcToLength = (ArcCenter - to).HorizontalLength; ArcToAngle = (ArcCenter - to).Yaw; + EnableArc = true; } } @@ -378,7 +380,7 @@ namespace OpenRA.Mods.Common.Activities if (MoveFractionTotal != 0) { WPos pos; - if (FromFacing != ToFacing) + if (EnableArc) { var angle = WAngle.Lerp(ArcFromAngle, ArcToAngle, moveFraction, MoveFractionTotal); var length = int2.Lerp(ArcFromLength, ArcToLength, moveFraction, MoveFractionTotal);