From 8da21b8c3fc9ca804556c0d0d1dafb74875d73e9 Mon Sep 17 00:00:00 2001 From: layagyasz Date: Fri, 8 Jun 2018 17:23:08 -0600 Subject: [PATCH] Rework American+British units - Don't highlight fogged tiles in movement ui - Fix air/anti-air attacks - Work on #52 - Fix aircraft point values - Allow setting prefix length in language munging --- .../Match/HumanMatchPlayerController.cs | 9 ++ .../Match/Subcontroller/AircraftController.cs | 2 +- .../Match/Subcontroller/AttackController.cs | 2 +- .../Match/Subcontroller/MovementController.cs | 4 +- .../Match/Subcontroller/OverrunController.cs | 4 +- FileUtils.cs | 10 ++- Model/Orders/Attack/AirAttackOrder.cs | 18 +++- Model/Orders/Attack/AirSingleAttackOrder.cs | 27 +++--- Model/Orders/Attack/AntiAirAttackOrder.cs | 9 +- .../Orders/Attack/AntiAirSingleAttackOrder.cs | 30 ++++--- Model/Orders/FullOrderAutomater.cs | 2 +- Model/Orders/OrderInvalidReason.cs | 1 + Model/ScenarioBuilder/ArmyBuilder.cs | 16 +++- Model/Sight/LazySightFinder.cs | 4 +- Model/Unit/Unit.cs | 4 +- Model/Unit/UnitConfiguration.cs | 7 +- .../Scenarios/BattleForBerlin/Scenario_21.blk | 4 +- .../Scenarios/BattleForBerlin/Scenario_22.blk | 2 +- .../Default/Scenarios/Default/Scenario_00.blk | 6 +- .../Scenarios/PanzerLeader/Scenario_05.blk | 2 +- .../Scenarios/PanzerLeader/Scenario_07.blk | 2 +- .../Scenarios/PanzerLeader/Scenario_08.blk | 2 +- .../Scenarios/PanzerLeader/Scenario_11.blk | 2 +- .../Scenarios/PanzerLeader/Scenario_12.blk | 2 +- .../Scenarios/PanzerLeader/Scenario_13.blk | 4 +- .../Scenarios/PanzerLeader/Scenario_14.blk | 2 +- .../Scenarios/PanzerLeader/Scenario_15.blk | 8 +- .../Scenarios/PanzerLeader/Scenario_16.blk | 2 +- .../Scenarios/PanzerLeader/Scenario_17.blk | 4 +- .../Scenarios/PanzerLeader/Scenario_18.blk | 8 +- .../Scenarios/PanzerLeader/Scenario_19.blk | 6 +- .../Scenarios/PanzerLeader/Scenario_20.blk | 6 +- .../Scenarios/PathsOfRommel/Scenario_47.blk | 2 +- .../UnitConfigurationLinks/American.blk | 36 ++++---- .../UnitConfigurationLinks/British.blk | 79 +++++++---------- .../Default/UnitConfigurations/American.blk | 34 ++++---- .../Default/UnitConfigurations/British.blk | 86 +++++++------------ .../Default/UnitRenderDetails/American.blk | 16 ++-- Modules/Default/UnitRenderDetails/British.blk | 35 +++----- Program.cs | 4 +- View/Landing/LandingScreen.cs | 4 +- View/Match/AttackPane.cs | 23 ++--- View/Unit/UnitView.cs | 3 +- 43 files changed, 273 insertions(+), 260 deletions(-) diff --git a/Controller/Match/HumanMatchPlayerController.cs b/Controller/Match/HumanMatchPlayerController.cs index 0dc4236..6d59842 100644 --- a/Controller/Match/HumanMatchPlayerController.cs +++ b/Controller/Match/HumanMatchPlayerController.cs @@ -243,6 +243,15 @@ public Color GetTileColor(Tile Tile, byte ForTeam) return HIGHLIGHT_COLORS.Last(); } + public bool FilterVisible(Tile Tile) + { + if (!Match.GetScenario().FogOfWar) return true; + + if (Tile.Rules.Concealing || Tile.Rules.LowProfileConcealing) + return _CurrentTurn.Army.SightFinder.HasTileSightLevel(Tile, TileSightLevel.HARD_SPOTTED); + return _CurrentTurn.Army.SightFinder.HasTileSightLevel(Tile, TileSightLevel.SIGHTED); + } + void HighlightEnemyFieldOfSight(byte Team) { if (_HighlightToggles[(int)HighlightToggle.ENEMY_SIGHT_FIELD]) UnHighlight(); diff --git a/Controller/Match/Subcontroller/AircraftController.cs b/Controller/Match/Subcontroller/AircraftController.cs index 2486242..f79ebe8 100644 --- a/Controller/Match/Subcontroller/AircraftController.cs +++ b/Controller/Match/Subcontroller/AircraftController.cs @@ -36,7 +36,7 @@ public override void HandleUnitLeftClick(Unit Unit) AddAttack( Unit.Position, new AirSingleAttackOrder( - _Controller.SelectedUnit, Unit.Position, _Controller.UseSecondaryWeapon())); + _Controller.SelectedUnit, Unit, _Controller.UseSecondaryWeapon())); } } } diff --git a/Controller/Match/Subcontroller/AttackController.cs b/Controller/Match/Subcontroller/AttackController.cs index e188c5a..46598b7 100644 --- a/Controller/Match/Subcontroller/AttackController.cs +++ b/Controller/Match/Subcontroller/AttackController.cs @@ -44,7 +44,7 @@ void HandleClick(Unit Unit, AttackMethod AttackMethod) AddAttack( Unit.Position, new AntiAirSingleAttackOrder( - _Controller.SelectedUnit, Unit.Position, _Controller.UseSecondaryWeapon())); + _Controller.SelectedUnit, Unit, _Controller.UseSecondaryWeapon())); } else { diff --git a/Controller/Match/Subcontroller/MovementController.cs b/Controller/Match/Subcontroller/MovementController.cs index b1447b8..e1279ed 100644 --- a/Controller/Match/Subcontroller/MovementController.cs +++ b/Controller/Match/Subcontroller/MovementController.cs @@ -101,7 +101,9 @@ void SetMovementHighlight(Unit Unit) if (Unit.RemainingMovement > 0) { _Controller.Highlight( - Unit.GetFieldOfMovement(false).Select( + Unit.GetFieldOfMovement(false) + .Where(i => _Controller.FilterVisible(i.Item1)) + .Select( i => new Tuple( i.Item1, HumanMatchPlayerController.HIGHLIGHT_COLORS[ diff --git a/Controller/Match/Subcontroller/OverrunController.cs b/Controller/Match/Subcontroller/OverrunController.cs index 602241a..c930710 100644 --- a/Controller/Match/Subcontroller/OverrunController.cs +++ b/Controller/Match/Subcontroller/OverrunController.cs @@ -44,7 +44,9 @@ public override void HandleUnitLeftClick(Unit Unit) _Controller.SelectUnit(Unit); _Controller.Highlight( - Unit.GetFieldOfMovement(true).Select( + Unit.GetFieldOfMovement(true) + .Where(i => _Controller.FilterVisible(i.Item1)) + .Select( i => new Tuple( i.Item1, HumanMatchPlayerController.HIGHLIGHT_COLORS[ diff --git a/FileUtils.cs b/FileUtils.cs index 478bdaf..86b0cd8 100644 --- a/FileUtils.cs +++ b/FileUtils.cs @@ -66,9 +66,9 @@ public static MarkovGenerator LoadLanguage(string Path) } } - public static MarkovGenerator GenerateLanguage(string ExamplePath) + public static MarkovGenerator GenerateLanguage(uint PrefixLength, string ExamplePath) { - var g = new MarkovGenerator(3); + var g = new MarkovGenerator(PrefixLength); var parentheticals = new Regex("\\(.*\\)"); var capitals = new Regex("[A-Z- ]*"); foreach (var line in File.ReadAllLines(ExamplePath, Encoding.UTF8)) @@ -83,9 +83,11 @@ public static MarkovGenerator GenerateLanguage(string ExamplePath) return g; } - public static void MungeLanguage(string ExamplePath, string OutputPath) + public static void MungeLanguage(uint PrefixLength, string ExamplePath, string OutputPath) { - var g = GenerateLanguage(ExamplePath); + var g = GenerateLanguage(PrefixLength, ExamplePath); + var random = new Random(); + for (int i = 0; i < 20; ++i) Console.WriteLine(new string(g.Generate(random).ToArray())); using (FileStream fileStream = new FileStream(OutputPath, FileMode.Create)) { using (GZipStream compressionStream = new GZipStream(fileStream, CompressionLevel.Optimal)) diff --git a/Model/Orders/Attack/AirAttackOrder.cs b/Model/Orders/Attack/AirAttackOrder.cs index 547d72b..2350733 100644 --- a/Model/Orders/Attack/AirAttackOrder.cs +++ b/Model/Orders/Attack/AirAttackOrder.cs @@ -45,7 +45,23 @@ public override bool MatchesTurnComponent(TurnComponent TurnComponent) public override OrderInvalidReason Validate() { - if (Target != AttackTarget.ALL) return OrderInvalidReason.MUST_ATTACK_ALL; + if (Target != AttackTarget.ALL && (TargetTile.Rules.MustAttackAllUnits + || TargetTile.Units.Any(i => i.Configuration.UnitClass == UnitClass.FORT))) + return OrderInvalidReason.MUST_ATTACK_ALL; + + if (Target == AttackTarget.EACH) + { + foreach (var attacker in _Attackers) + { + var r = attacker.Defender.CanBeAttackedBy(Army, AttackMethod); + if (r != OrderInvalidReason.NONE) return r; + } + if (_OddsCalculations.Count != TargetTile.Units.Count( + i => i.CanBeAttackedBy(Army, AttackMethod) == OrderInvalidReason.NONE)) + return OrderInvalidReason.ILLEGAL_ATTACK_EACH; + if (_OddsCalculations.Any(i => i.Odds > 1 && i.OddsAgainst)) + return OrderInvalidReason.ILLEGAL_ATTACK_EACH; + } return base.Validate(); } diff --git a/Model/Orders/Attack/AirSingleAttackOrder.cs b/Model/Orders/Attack/AirSingleAttackOrder.cs index d584b29..ac937b3 100644 --- a/Model/Orders/Attack/AirSingleAttackOrder.cs +++ b/Model/Orders/Attack/AirSingleAttackOrder.cs @@ -6,21 +6,28 @@ namespace PanzerBlitz { public class AirSingleAttackOrder : SingleAttackOrder { - public override Tile AttackTile { get; protected set; } - - public AirSingleAttackOrder(Unit Attacker, Tile AttackTile, bool UseSecondaryWeapon) - : base(Attacker, null, UseSecondaryWeapon) + public override Tile AttackTile { - this.AttackTile = AttackTile; + get + { + return Defender.Position; + } + protected set + { + throw new NotSupportedException(); + } } + public AirSingleAttackOrder(Unit Attacker, Unit Defender, bool UseSecondaryWeapon) + : base(Attacker, Defender, UseSecondaryWeapon) { } + public AirSingleAttackOrder(SerializationInputStream Stream, List Objects) - : this((Unit)Objects[Stream.ReadInt32()], (Tile)Objects[Stream.ReadInt32()], Stream.ReadBoolean()) { } + : this((Unit)Objects[Stream.ReadInt32()], (Unit)Objects[Stream.ReadInt32()], Stream.ReadBoolean()) { } public override void Serialize(SerializationOutputStream Stream) { Stream.Write(Attacker.Id); - Stream.Write(AttackTile.Id); + Stream.Write(Defender.Id); Stream.Write(UseSecondaryWeapon); } @@ -36,7 +43,7 @@ public override AttackFactorCalculation GetAttack() public override AttackOrder GenerateNewAttackOrder() { - return new AirAttackOrder(Army, AttackTile); + return new AirAttackOrder(Army, Defender.Position); } public override bool MatchesTurnComponent(TurnComponent TurnComponent) @@ -46,8 +53,8 @@ public override bool MatchesTurnComponent(TurnComponent TurnComponent) public override OrderInvalidReason Validate() { - if (AttackTile == null) return OrderInvalidReason.ILLEGAL; - if (Attacker.Position.HexCoordinate.Distance(AttackTile.HexCoordinate) > 1) + if (Defender == null) return OrderInvalidReason.ILLEGAL; + if (Attacker.Position.HexCoordinate.Distance(Defender.Position.HexCoordinate) > 1) return OrderInvalidReason.TARGET_OUT_OF_RANGE; return Attacker.CanAttack(AttackMethod.AIR, TreatStackAsArmored, null, UseSecondaryWeapon); diff --git a/Model/Orders/Attack/AntiAirAttackOrder.cs b/Model/Orders/Attack/AntiAirAttackOrder.cs index 1fe1fde..e3284d3 100644 --- a/Model/Orders/Attack/AntiAirAttackOrder.cs +++ b/Model/Orders/Attack/AntiAirAttackOrder.cs @@ -19,7 +19,7 @@ public override bool ResultPerDefender { get { - return true; + return false; } } @@ -32,7 +32,10 @@ public override CombatResultsTable CombatResultsTable } public AntiAirAttackOrder(Army Army, Tile TargetTile) - : base(Army, TargetTile) { } + : base(Army, TargetTile) + { + SetAttackTarget(AttackTarget.EACH); + } public AntiAirAttackOrder(SerializationInputStream Stream, List Objects) : base(Stream, Objects) @@ -53,7 +56,7 @@ public override bool MatchesTurnComponent(TurnComponent TurnComponent) public override OrderInvalidReason Validate() { - if (Target != AttackTarget.ALL) return OrderInvalidReason.MUST_ATTACK_ALL; + if (Target != AttackTarget.EACH) return OrderInvalidReason.MUST_ATTACK_EACH; return base.Validate(); } diff --git a/Model/Orders/Attack/AntiAirSingleAttackOrder.cs b/Model/Orders/Attack/AntiAirSingleAttackOrder.cs index 3a0d38f..fa9c734 100644 --- a/Model/Orders/Attack/AntiAirSingleAttackOrder.cs +++ b/Model/Orders/Attack/AntiAirSingleAttackOrder.cs @@ -9,27 +9,37 @@ public class AntiAirSingleAttackOrder : SingleAttackOrder { public readonly LineOfSight LineOfSight; - public override Tile AttackTile { get; protected set; } + public override Tile AttackTile + { + get + { + return Defender.Position; + } + protected set + { + throw new NotSupportedException(); + } + } - public AntiAirSingleAttackOrder(Unit Attacker, Tile AttackTile, bool UseSecondaryWeapon) - : base(Attacker, null, UseSecondaryWeapon) + public AntiAirSingleAttackOrder(Unit Attacker, Unit Defender, bool UseSecondaryWeapon) + : base(Attacker, Defender, UseSecondaryWeapon) { - this.AttackTile = AttackTile; - LineOfSight = Attacker.GetLineOfSight(AttackTile); + LineOfSight = Attacker.GetLineOfSight(Defender.Position); } public AntiAirSingleAttackOrder(SerializationInputStream Stream, List Objects) - : this((Unit)Objects[Stream.ReadInt32()], (Tile)Objects[Stream.ReadInt32()], Stream.ReadBoolean()) + : this((Unit)Objects[Stream.ReadInt32()], (Unit)Objects[Stream.ReadInt32()], Stream.ReadBoolean()) { - LineOfSight = new LineOfSight((Tile)Objects[Stream.ReadInt32()], AttackTile); + LineOfSight = new LineOfSight((Tile)Objects[Stream.ReadInt32()], (Tile)Objects[Stream.ReadInt32()]); } public override void Serialize(SerializationOutputStream Stream) { Stream.Write(Attacker.Id); - Stream.Write(AttackTile.Id); + Stream.Write(Defender.Id); Stream.Write(UseSecondaryWeapon); Stream.Write(LineOfSight.Initial.Id); + Stream.Write(LineOfSight.Final.Id); } public override AttackFactorCalculation GetAttack() @@ -44,7 +54,7 @@ public override AttackFactorCalculation GetAttack() public override AttackOrder GenerateNewAttackOrder() { - return new AntiAirAttackOrder(Army, AttackTile); + return new AntiAirAttackOrder(Army, Defender.Position); } public override bool MatchesTurnComponent(TurnComponent TurnComponent) @@ -54,7 +64,7 @@ public override bool MatchesTurnComponent(TurnComponent TurnComponent) public override OrderInvalidReason Validate() { - if (AttackTile == null) return OrderInvalidReason.ILLEGAL; + if (Defender == null) return OrderInvalidReason.ILLEGAL; return Attacker.CanAttack(AttackMethod.ANTI_AIRCRAFT, TreatStackAsArmored, LineOfSight, UseSecondaryWeapon); } diff --git a/Model/Orders/FullOrderAutomater.cs b/Model/Orders/FullOrderAutomater.cs index c7052ee..b7ebaec 100644 --- a/Model/Orders/FullOrderAutomater.cs +++ b/Model/Orders/FullOrderAutomater.cs @@ -56,7 +56,7 @@ public bool AutomateTurn(Match Match, TurnInfo TurnInfo) return !TurnInfo.Army.Units.Any(i => i.CanMove(false, false) == OrderInvalidReason.NONE); case TurnComponent.WAIT: - return false; + return !Match.Scenario.FogOfWar; case TurnComponent.RESET: return true; } diff --git a/Model/Orders/OrderInvalidReason.cs b/Model/Orders/OrderInvalidReason.cs index 4c7236a..617a090 100644 --- a/Model/Orders/OrderInvalidReason.cs +++ b/Model/Orders/OrderInvalidReason.cs @@ -47,6 +47,7 @@ public enum OrderInvalidReason DEPLOYMENT_CONVOY_ORDER, MUST_ATTACK_ALL, + MUST_ATTACK_EACH, ILLEGAL_ATTACK_EACH, ATTACK_NO_LOS, diff --git a/Model/ScenarioBuilder/ArmyBuilder.cs b/Model/ScenarioBuilder/ArmyBuilder.cs index 41b12bf..bd0b18e 100644 --- a/Model/ScenarioBuilder/ArmyBuilder.cs +++ b/Model/ScenarioBuilder/ArmyBuilder.cs @@ -2,6 +2,10 @@ using System.Collections.Generic; using System.Linq; +using Cardamom.Planar; + +using SFML.Window; + namespace PanzerBlitz { public class ArmyBuilder : GameObject @@ -57,6 +61,16 @@ public ArmyConfiguration BuildArmyConfiguration() Objective objective = new HighestScoreObjective( new UnitsMatchedObjective(new UnitHasStatus(UnitStatus.DESTROYED), false, true)); + int x1 = (Parameters.Team % 2) * Parameters.Parameters.MapSize.X / 2; + int x2 = (Parameters.Team % 2 + 1) * Parameters.Parameters.MapSize.X / 2; + var zone = new Polygon( + new Vector2f[] + { + new Vector2f(x1, 0), + new Vector2f(x2, 0), + new Vector2f(x2, Parameters.Parameters.MapSize.Y + 1), + new Vector2f(x1, Parameters.Parameters.MapSize.Y + 1) + }); return new ArmyConfiguration( Id.ToString(), Parameters.Faction, @@ -66,7 +80,7 @@ public ArmyConfiguration BuildArmyConfiguration() new UnitGroup( Parameters.Faction.Name + " Deployment", _Units.Select(i => new UnitCount(i.Item1.UnitConfiguration, i.Item2))), - new EmptyMatcher()) + new TileWithin(zone)) , 1), new VictoryCondition( Enumerable.Repeat(objective, 1), diff --git a/Model/Sight/LazySightFinder.cs b/Model/Sight/LazySightFinder.cs index f2fbd84..b427ddd 100644 --- a/Model/Sight/LazySightFinder.cs +++ b/Model/Sight/LazySightFinder.cs @@ -22,6 +22,7 @@ public Army TrackingArmy _TrackingArmy = value; } } + public UnitTracker UnitTracker { get; } Army _TrackingArmy; @@ -194,6 +195,7 @@ void HandleRemove(object Sender, ValuedEventArgs E) } else { + var unitDeltas = UnitTracker.Remove(this, unit); if (OnSightUpdated != null) { OnSightUpdated( @@ -202,7 +204,7 @@ void HandleRemove(object Sender, ValuedEventArgs E) unit, null, new List>(), - UnitTracker.Remove(this, unit))); + unitDeltas)); } } } diff --git a/Model/Unit/Unit.cs b/Model/Unit/Unit.cs index c62b209..898ead2 100644 --- a/Model/Unit/Unit.cs +++ b/Model/Unit/Unit.cs @@ -120,7 +120,7 @@ public OrderInvalidReason CanBeAttackedBy(Army Army, AttackMethod AttackMethod, && i.CanBeAttackedBy(Army, AttackMethod) == OrderInvalidReason.NONE)) return OrderInvalidReason.NONE; } - if (!IgnoreConcealment && !Army.SightFinder.GetUnitVisibility(this).Visible) + if (!IgnoreConcealment && !Army.SightFinder.IsSighted(this)) return OrderInvalidReason.TARGET_CONCEALED; if (Carrier != null) return OrderInvalidReason.UNIT_NO_ACTION; return OrderInvalidReason.NONE; @@ -631,6 +631,8 @@ public void Halt() public void Reset() { + if (Position == null) return; + Fired = false; Moved = false; MovedMoreThanOneTile = false; diff --git a/Model/Unit/UnitConfiguration.cs b/Model/Unit/UnitConfiguration.cs index 469c137..ebcdfb1 100644 --- a/Model/Unit/UnitConfiguration.cs +++ b/Model/Unit/UnitConfiguration.cs @@ -523,7 +523,6 @@ float GetPointValueInternal(bool HalfPriceTrucks, Weapon Weapon) return Weapon.Attack + .25f * Weapon.Range + Defense + Movement; return Weapon.Attack + 4 + Defense + Movement; case UnitClass.RECONNAISSANCE_VEHICLE: - if (CanSpot) return 5 + Defense + Movement; if (CanAntiAircraft) { if (Weapon.WeaponClass == WeaponClass.INFANTRY) @@ -581,9 +580,9 @@ float GetPointValueInternal(bool HalfPriceTrucks, Weapon Weapon) case UnitClass.OBSERVATION_AIRCRAFT: return 50; case UnitClass.FIGHTER_BOMBER: - if (Weapon.WeaponClass == WeaponClass.INFANTRY) return 0; - if (Weapon.WeaponClass == WeaponClass.ANTI_ARMOR) return 3 * Weapon.Attack; - return Weapon.Attack; + if (Weapon.WeaponClass == WeaponClass.INFANTRY) return 5 + Weapon.Attack / 2; + if (Weapon.WeaponClass == WeaponClass.ANTI_ARMOR) return 5 + 3 * Weapon.Attack; + return 5 + Weapon.Attack; default: return Weapon.Attack + Weapon.Range + Defense + Movement; } diff --git a/Modules/Default/Scenarios/BattleForBerlin/Scenario_21.blk b/Modules/Default/Scenarios/BattleForBerlin/Scenario_21.blk index 775cea9..946aac6 100644 --- a/Modules/Default/Scenarios/BattleForBerlin/Scenario_21.blk +++ b/Modules/Default/Scenarios/BattleForBerlin/Scenario_21.blk @@ -160,7 +160,7 @@ int:count { 8 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.achilles } + !unit-configuration:unit-configuration { unit-configurations.wolverine } int:count { 2 } } unit-count:_ { @@ -176,7 +176,7 @@ int:count { 1 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/BattleForBerlin/Scenario_22.blk b/Modules/Default/Scenarios/BattleForBerlin/Scenario_22.blk index 8cf109c..d1d36e2 100644 --- a/Modules/Default/Scenarios/BattleForBerlin/Scenario_22.blk +++ b/Modules/Default/Scenarios/BattleForBerlin/Scenario_22.blk @@ -150,7 +150,7 @@ int:count { 8 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.cromwell } + !unit-configuration:unit-configuration { unit-configurations.cromwell-iv } int:count { 4 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/Default/Scenario_00.blk b/Modules/Default/Scenarios/Default/Scenario_00.blk index 61c1495..8e5ffd7 100644 --- a/Modules/Default/Scenarios/Default/Scenario_00.blk +++ b/Modules/Default/Scenarios/Default/Scenario_00.blk @@ -62,7 +62,7 @@ unit-count[]:unit-counts { unit-count:_ { !unit-configuration:unit-configuration { unit-configurations.80mm-aa } - int:count { 1 } + int:count { 2 } } } } @@ -126,8 +126,8 @@ string:name { Test A } unit-count[]:unit-counts { unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.minefield } - int:count { 1 } + !unit-configuration:unit-configuration { unit-configurations.a6-m2 } + int:count { 2 } } } } diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_05.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_05.blk index 68fef68..bf1e7b1 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_05.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_05.blk @@ -126,7 +126,7 @@ int:count { 2 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.cromwell } + !unit-configuration:unit-configuration { unit-configurations.cromwell-iv } int:count { 4 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_07.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_07.blk index fbf4dbe..2e27f72 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_07.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_07.blk @@ -60,7 +60,7 @@ scenario:_ { int:count { 1 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_08.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_08.blk index 78bc476..e1f501c 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_08.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_08.blk @@ -87,7 +87,7 @@ scenario:_ { int:count { 1 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 1 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_11.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_11.blk index 3fe0ccb..b48672c 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_11.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_11.blk @@ -135,7 +135,7 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_12.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_12.blk index 5ac9ed5..38b85a8 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_12.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_12.blk @@ -115,7 +115,7 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_13.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_13.blk index 4d5ae4e..f5a6240 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_13.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_13.blk @@ -115,11 +115,11 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_14.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_14.blk index a9e8a6c..f030947 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_14.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_14.blk @@ -60,7 +60,7 @@ int:count { 1 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-10 } + !unit-configuration:unit-configuration { unit-configurations.wolverine } int:count { 2 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_15.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_15.blk index 06c3574..9804373 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_15.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_15.blk @@ -61,15 +61,11 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-10 } - int:count { 1 } - } - unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-10 } + !unit-configuration:unit-configuration { unit-configurations.wolverine } int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_16.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_16.blk index 4ba737c..0666eb6 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_16.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_16.blk @@ -55,7 +55,7 @@ int:count { 2 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 2 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_17.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_17.blk index 570076e..f9362d9 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_17.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_17.blk @@ -127,11 +127,11 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_18.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_18.blk index 1a8c87e..0ad6d53 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_18.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_18.blk @@ -85,11 +85,11 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 3 } } unit-count:_ { @@ -97,11 +97,11 @@ int:count { 2 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-10 } + !unit-configuration:unit-configuration { unit-configurations.wolverine } int:count { 2 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-18 } + !unit-configuration:unit-configuration { unit-configurations.hellcat } int:count { 1 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_19.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_19.blk index a227cb3..f0cdf35 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_19.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_19.blk @@ -115,11 +115,11 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:count { 3 } } unit-count:_ { @@ -131,7 +131,7 @@ int:count { 3 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-18 } + !unit-configuration:unit-configuration { unit-configurations.hellcat } int:count { 1 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PanzerLeader/Scenario_20.blk b/Modules/Default/Scenarios/PanzerLeader/Scenario_20.blk index 378db4b..457ad7b 100644 --- a/Modules/Default/Scenarios/PanzerLeader/Scenario_20.blk +++ b/Modules/Default/Scenarios/PanzerLeader/Scenario_20.blk @@ -66,15 +66,15 @@ int:count { 2 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-10 } + !unit-configuration:unit-configuration { unit-configurations.wolverine } int:count { 2 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-36 } + !unit-configuration:unit-configuration { unit-configurations.pershing } int:count { 1 } } unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.m-24 } + !unit-configuration:unit-configuration { unit-configurations.chaffee } int:count { 1 } } unit-count:_ { diff --git a/Modules/Default/Scenarios/PathsOfRommel/Scenario_47.blk b/Modules/Default/Scenarios/PathsOfRommel/Scenario_47.blk index 06527af..d93095c 100644 --- a/Modules/Default/Scenarios/PathsOfRommel/Scenario_47.blk +++ b/Modules/Default/Scenarios/PathsOfRommel/Scenario_47.blk @@ -37,7 +37,7 @@ string:name { Frankforce } unit-count[]:unit-counts { unit-count:_ { - !unit-configuration:unit-configuration { unit-configurations.a-10 } + !unit-configuration:unit-configuration { unit-configurations.cruiser-ii } int:count { 3 } } unit-count:_ { diff --git a/Modules/Default/UnitConfigurationLinks/American.blk b/Modules/Default/UnitConfigurationLinks/American.blk index 0c8841a..bb1e905 100644 --- a/Modules/Default/UnitConfigurationLinks/American.blk +++ b/Modules/Default/UnitConfigurationLinks/American.blk @@ -178,9 +178,9 @@ unit-configuration-link:m-6-gmc { int:introduce-year { 1942 } } -unit-configuration-link:m-8 { +unit-configuration-link:greyhound { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.m-8 } + !unit-configuration:unit-configuration { unit-configurations.greyhound } int:introduce-year { 1943 } } @@ -215,9 +215,9 @@ unit-configuration-link:m-21 { int:introduce-year { 1944 } } -unit-configuration-link:m-7-priest { +unit-configuration-link:priest { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:introduce-year { 1942 } } @@ -231,7 +231,7 @@ unit-configuration-link:m4-poa-cws-h1 { !faction:faction { factions.american } !unit-configuration:unit-configuration { unit-configurations.m4-poa-cws-h1 } - int:introduce-year { 1942 } + int:introduce-year { 1945 } } unit-configuration-link:m-3a1-satan { !faction:faction { factions.american } @@ -258,21 +258,21 @@ unit-configuration-link:m-4_105 { int:introduce-year { 1944 } } -unit-configuration-link:m-10 { +unit-configuration-link:wolverine { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.m-10 } + !unit-configuration:unit-configuration { unit-configurations.wolverine } int:introduce-year { 1942 } } -unit-configuration-link:m-18 { +unit-configuration-link:hellcat { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.m-18 } + !unit-configuration:unit-configuration { unit-configurations.hellcat } int:introduce-year { 1943 } } -unit-configuration-link:m-36 { +unit-configuration-link:jackson { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.m-36 } + !unit-configuration:unit-configuration { unit-configurations.jackson } int:introduce-year { 1944 } } @@ -294,9 +294,9 @@ unit-configuration-link:m-4_76 { int:introduce-year { 1944 } } -unit-configuration-link:m-24 { +unit-configuration-link:chaffee { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.m-24 } + !unit-configuration:unit-configuration { unit-configurations.chaffee } int:introduce-year { 1944 } } @@ -312,11 +312,11 @@ unit-configuration-link:m-4a3e2_76 { int:introduce-year { 1944 } } -unit-configuration-link:m-26 { +unit-configuration-link:pershing { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.m-26 } + !unit-configuration:unit-configuration { unit-configurations.pershing } - int:introduce-year { 1945 } + int:introduce-year { 1943 } } unit-configuration-link:m-2a4 { !faction:faction { factions.american } @@ -336,9 +336,9 @@ unit-configuration-link:m-4a2_76 { int:introduce-year { 1944 } } -unit-configuration-link:sherman-flail { +unit-configuration-link:sherman-crab { !faction:faction { factions.american } - !unit-configuration:unit-configuration { unit-configurations.sherman-flail } + !unit-configuration:unit-configuration { unit-configurations.sherman-crab } int:introduce-year { 1942 } } diff --git a/Modules/Default/UnitConfigurationLinks/British.blk b/Modules/Default/UnitConfigurationLinks/British.blk index 9bf77be..eec21a6 100644 --- a/Modules/Default/UnitConfigurationLinks/British.blk +++ b/Modules/Default/UnitConfigurationLinks/British.blk @@ -194,15 +194,15 @@ unit-configuration-link:daimler { int:introduce-year { 1941 } } -unit-configuration-link:aec-6pdr { +unit-configuration-link:aec-ii { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.aec-6pdr } + !unit-configuration:unit-configuration { unit-configurations.aec-ii } int:introduce-year { 1942 } } -unit-configuration-link:aec-75mm { +unit-configuration-link:aec-iii { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.aec-75mm } + !unit-configuration:unit-configuration { unit-configurations.aec-iii } int:introduce-year { 1942 } } @@ -262,56 +262,49 @@ unit-configuration-link:mk-vi-b { int:obsolete-year { 1942 } } -unit-configuration-link:matilda { - !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.matilda } - - int:introduce-year { 1938 } - int:obsolete-year { 1940 } -} unit-configuration-link:matilda-ii { !faction:faction { factions.british } !unit-configuration:unit-configuration { unit-configurations.matilda-ii } int:introduce-year { 1939 } } -unit-configuration-link:a-9 { +unit-configuration-link:cruiser-i { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.a-9 } + !unit-configuration:unit-configuration { unit-configurations.cruiser-i } int:obsolete-year { 1941 } } -unit-configuration-link:a-9-cs { +unit-configuration-link:cruiser-i-cs { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.a-9-cs } + !unit-configuration:unit-configuration { unit-configurations.cruiser-i-cs } int:obsolete-year { 1941 } } -unit-configuration-link:a-10 { +unit-configuration-link:cruiser-ii { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.a-10 } + !unit-configuration:unit-configuration { unit-configurations.cruiser-ii } int:introduce-year { 1940 } int:obsolete-year { 1941 } } -unit-configuration-link:a-10-cs { +unit-configuration-link:cruiser-ii-cs { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.a-10-cs } + !unit-configuration:unit-configuration { unit-configurations.cruiser-ii-cs } int:introduce-year { 1940 } int:obsolete-year { 1941 } } -unit-configuration-link:a-11 { +unit-configuration-link:matilda { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.a-11 } + !unit-configuration:unit-configuration { unit-configurations.matilda } int:obsolete-year { 1940 } } -unit-configuration-link:a-13 { +unit-configuration-link:cruiser-iv { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.a-13 } + !unit-configuration:unit-configuration { unit-configurations.cruiser-iv } - int:introduce-year { 1938 } + int:introduce-year { 1940 } int:obsolete-year { 1941 } } unit-configuration-link:archer { @@ -320,7 +313,7 @@ unit-configuration-link:archer { int:introduce-year { 1944 } } -unit-configuration-link:wolverine { +unit-configuration-link:wolverine-british { !faction:faction { factions.british } !unit-configuration:unit-configuration { unit-configurations.wolverine } @@ -338,11 +331,11 @@ unit-configuration-link:cromwell-cs { int:introduce-year { 1944 } } -unit-configuration-link:churchill-cs { +unit-configuration-link:churchill-viii { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.churchill-cs } + !unit-configuration:unit-configuration { unit-configurations.churchill-viii } - int:introduce-year { 1941 } + int:introduce-year { 1944 } } unit-configuration-link:sexton { !faction:faction { factions.british } @@ -357,9 +350,9 @@ unit-configuration-link:bishop { int:introduce-year { 1942 } int:obsolete-year { 1942 } } -unit-configuration-link:m-7-priest-british { +unit-configuration-link:priest-british { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.m-7-priest } + !unit-configuration:unit-configuration { unit-configurations.priest } int:introduce-year { 1942 } int:obsolete-year { 1942 } @@ -388,9 +381,9 @@ unit-configuration-link:firefly { int:introduce-year { 1944 } } -unit-configuration-link:cromwell { +unit-configuration-link:cromwell-iv { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.cromwell } + !unit-configuration:unit-configuration { unit-configurations.cromwell-iv } int:introduce-year { 1944 } } @@ -406,23 +399,17 @@ unit-configuration-link:challenger { int:introduce-year { 1944 } } -unit-configuration-link:centurion { - !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.centurion } - - int:introduce-year { 1946 } -} -unit-configuration-link:churchill-6pdr { +unit-configuration-link:churchill-iii { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.churchill-6pdr } + !unit-configuration:unit-configuration { unit-configurations.churchill-iii } - int:introduce-year { 1943 } + int:introduce-year { 1942 } } -unit-configuration-link:churchill-75 { +unit-configuration-link:churchill-vii { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.churchill-75 } + !unit-configuration:unit-configuration { unit-configurations.churchill-vii } - int:introduce-year { 1943 } + int:introduce-year { 1944 } } unit-configuration-link:churchill-iv { !faction:faction { factions.british } @@ -436,9 +423,9 @@ unit-configuration-link:matilda-cs { int:introduce-year { 1939 } } -unit-configuration-link:crusader-cs { +unit-configuration-link:crusader-ii-cs { !faction:faction { factions.british } - !unit-configuration:unit-configuration { unit-configurations.crusader-cs } + !unit-configuration:unit-configuration { unit-configurations.crusader-ii-cs } int:introduce-year { 1941 } } diff --git a/Modules/Default/UnitConfigurations/American.blk b/Modules/Default/UnitConfigurations/American.blk index c2eb101..1662cb9 100644 --- a/Modules/Default/UnitConfigurations/American.blk +++ b/Modules/Default/UnitConfigurations/American.blk @@ -210,8 +210,8 @@ unit-configuration:m-6-gmc { byte:defense { 1 } byte:movement { 12 } } -unit-configuration:m-8 { - string:name { M-8 } +unit-configuration:greyhound { + string:name { Greyhound } unit-class:unit-class { reconnaissance-vehicle } weapon-class:weapon-class { anti-armor } @@ -253,6 +253,8 @@ unit-configuration:m-16 { byte:range { 4 } byte:defense { 3 } byte:movement { 10 } + + bool:can-anti-aircraft { true } } unit-configuration:m-8-hmc { string:name { M-8 HMC } @@ -276,8 +278,8 @@ unit-configuration:m-21 { byte:defense { 3 } byte:movement { 10 } } -unit-configuration:m-7-priest { - string:name { M-7 Priest } +unit-configuration:priest { + string:name { Priest } unit-class:unit-class { self-propelled-artillery } weapon-class:weapon-class { high-explosive } @@ -346,8 +348,8 @@ unit-configuration:m-4_105 { byte:defense { 9 } byte:movement { 8 } } -unit-configuration:m-10 { - string:name { M-10 } +unit-configuration:wolverine { + string:name { Wolverine } unit-class:unit-class { tank-destroyer } weapon-class:weapon-class { anti-armor } @@ -356,8 +358,8 @@ unit-configuration:m-10 { byte:defense { 6 } byte:movement { 9 } } -unit-configuration:m-18 { - string:name { M-18 } +unit-configuration:hellcat { + string:name { Hellcat } unit-class:unit-class { tank-destroyer } weapon-class:weapon-class { anti-armor } @@ -366,8 +368,8 @@ unit-configuration:m-18 { byte:defense { 4 } byte:movement { 12 } } -unit-configuration:m-36 { - string:name { M-36 } +unit-configuration:jackson { + string:name { Jackson } unit-class:unit-class { tank-destroyer } weapon-class:weapon-class { anti-armor } @@ -406,8 +408,8 @@ unit-configuration:m-4_76 { byte:defense { 10 } byte:movement { 9 } } -unit-configuration:m-24 { - string:name { M-24 } +unit-configuration:chaffee { + string:name { Chaffee } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -436,8 +438,8 @@ unit-configuration:m-4a3e2_76 { byte:defense { 15 } byte:movement { 7 } } -unit-configuration:m-26 { - string:name { M-26 } +unit-configuration:pershing { + string:name { Pershing } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -476,8 +478,8 @@ unit-configuration:m-4a2_76 { byte:defense { 10 } byte:movement { 9 } } -unit-configuration:sherman-flail { - string:name { Sherman Flail } +unit-configuration:sherman-crab { + string:name { Sherman Crab } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } diff --git a/Modules/Default/UnitConfigurations/British.blk b/Modules/Default/UnitConfigurations/British.blk index 5520305..376ac02 100644 --- a/Modules/Default/UnitConfigurations/British.blk +++ b/Modules/Default/UnitConfigurations/British.blk @@ -210,8 +210,8 @@ unit-configuration:daimler { byte:defense { 3 } byte:movement { 16 } } -unit-configuration:aec-6pdr { - string:name { AEC 6pdr } +unit-configuration:aec-ii { + string:name { AEC II } unit-class:unit-class { reconnaissance-vehicle } weapon-class:weapon-class { anti-armor } @@ -220,8 +220,8 @@ unit-configuration:aec-6pdr { byte:defense { 5 } byte:movement { 16 } } -unit-configuration:aec-75mm { - string:name { AEC 75mm } +unit-configuration:aec-iii { + string:name { AEC III } unit-class:unit-class { reconnaissance-vehicle } weapon-class:weapon-class { anti-armor } @@ -334,16 +334,6 @@ unit-configuration:mk-vi-b { byte:defense { 2 } byte:movement { 11 } } -unit-configuration:matilda { - string:name { Matilda } - unit-class:unit-class { tank } - - weapon-class:weapon-class { anti-armor } - byte:attack { 6 } - byte:range { 3 } - byte:defense { 8 } - byte:movement { 5 } -} unit-configuration:matilda-ii { string:name { Matilda II } unit-class:unit-class { tank } @@ -351,11 +341,11 @@ unit-configuration:matilda-ii { weapon-class:weapon-class { anti-armor } byte:attack { 6 } byte:range { 3 } - byte:defense { 10 } + byte:defense { 8 } byte:movement { 5 } } -unit-configuration:a-9 { - string:name { A-9 } +unit-configuration:cruiser-i { + string:name { Cruiser I } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -364,8 +354,8 @@ unit-configuration:a-9 { byte:defense { 2 } byte:movement { 8 } } -unit-configuration:a-9-cs { - string:name { A-9 CS } +unit-configuration:cruiser-i-cs { + string:name { Cruiser I CS } unit-class:unit-class { tank } weapon-class:weapon-class { high-explosive } @@ -374,8 +364,8 @@ unit-configuration:a-9-cs { byte:defense { 2 } byte:movement { 8 } } -unit-configuration:a-10 { - string:name { A-10 } +unit-configuration:cruiser-ii { + string:name { Cruiser II } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -384,8 +374,8 @@ unit-configuration:a-10 { byte:defense { 3 } byte:movement { 5 } } -unit-configuration:a-10-cs { - string:name { A-10 CS } +unit-configuration:cruiser-ii-cs { + string:name { Cruiser II CS } unit-class:unit-class { tank } weapon-class:weapon-class { high-explosive } @@ -394,8 +384,8 @@ unit-configuration:a-10-cs { byte:defense { 3 } byte:movement { 5 } } -unit-configuration:a-11 { - string:name { A-11 } +unit-configuration:matilda { + string:name { Matilda } unit-class:unit-class { tank } weapon-class:weapon-class { infantry } @@ -404,8 +394,8 @@ unit-configuration:a-11 { byte:defense { 6 } byte:movement { 2 } } -unit-configuration:a-13 { - string:name { A-13 } +unit-configuration:cruiser-iv { + string:name { Cruiser IV } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -424,16 +414,6 @@ unit-configuration:archer { byte:defense { 6 } byte:movement { 8 } } -unit-configuration:wolverine { - string:name { Wolverine } - unit-class:unit-class { tank-destroyer } - - weapon-class:weapon-class { anti-armor } - byte:attack { 14 } - byte:range { 10 } - byte:defense { 6 } - byte:movement { 9 } -} unit-configuration:achilles { string:name { Achilles } unit-class:unit-class { tank-destroyer } @@ -454,8 +434,8 @@ unit-configuration:cromwell-cs { byte:defense { 8 } byte:movement { 12 } } -unit-configuration:churchill-cs { - string:name { Churchill CS } +unit-configuration:churchill-viii { + string:name { Churchill VIII } unit-class:unit-class { tank } weapon-class:weapon-class { high-explosive } @@ -524,8 +504,8 @@ unit-configuration:firefly { byte:defense { 9 } byte:movement { 8 } } -unit-configuration:cromwell { - string:name { Cromwell } +unit-configuration:cromwell-iv { + string:name { Cromwell IV } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -554,18 +534,8 @@ unit-configuration:challenger { byte:defense { 6 } byte:movement { 9 } } -unit-configuration:centurion { - string:name { Centurion } - unit-class:unit-class { tank } - - weapon-class:weapon-class { anti-armor } - byte:attack { 14 } - byte:range { 10 } - byte:defense { 12 } - byte:movement { 7 } -} -unit-configuration:churchill-6pdr { - string:name { Churchill 6pdr } +unit-configuration:churchill-iii { + string:name { Churchill III } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -574,8 +544,8 @@ unit-configuration:churchill-6pdr { byte:defense { 10 } byte:movement { 5 } } -unit-configuration:churchill-75 { - string:name { Churchill 75 } +unit-configuration:churchill-vii { + string:name { Churchill VII } unit-class:unit-class { tank } weapon-class:weapon-class { anti-armor } @@ -604,8 +574,8 @@ unit-configuration:matilda-cs { byte:defense { 8 } byte:movement { 5 } } -unit-configuration:crusader-cs { - string:name { Crusader CS } +unit-configuration:crusader-ii-cs { + string:name { Crusader II CS } unit-class:unit-class { tank } weapon-class:weapon-class { high-explosive } @@ -683,6 +653,8 @@ unit-configuration:matilda-baron { byte:range { 3 } byte:defense { 8 } byte:movement { 5 } + + bool:innately-clears-mines { true } } unit-configuration:grant { string:name { Grant } diff --git a/Modules/Default/UnitRenderDetails/American.blk b/Modules/Default/UnitRenderDetails/American.blk index f3ff53a..a7aa303 100644 --- a/Modules/Default/UnitRenderDetails/American.blk +++ b/Modules/Default/UnitRenderDetails/American.blk @@ -62,7 +62,7 @@ unit-render-details:m-20 { unit-render-details:m-6-gmc { string:image-path { m-6-gmc.png } } -unit-render-details:m-8 { +unit-render-details:greyhound { string:image-path { m-8.png } } unit-render-details:m-13-aa { @@ -80,7 +80,7 @@ unit-render-details:m-8-hmc { unit-render-details:m-21 { string:image-path { m-21.png } } -unit-render-details:m-7-priest { +unit-render-details:priest { string:image-path { m-7-priest.png } } unit-render-details:m-12 { @@ -101,13 +101,13 @@ unit-render-details:m-3-lee { unit-render-details:m-4_105 { string:image-path { m-4_105.png } } -unit-render-details:m-10 { +unit-render-details:wolverine { string:image-path { m-10.png } } -unit-render-details:m-18 { +unit-render-details:hellcat { string:image-path { m-18.png } } -unit-render-details:m-36 { +unit-render-details:jackson { string:image-path { m-36.png } } unit-render-details:m-5 { @@ -119,7 +119,7 @@ unit-render-details:m-4_75 { unit-render-details:m-4_76 { string:image-path { m-4_76.png } } -unit-render-details:m-24 { +unit-render-details:chaffee { string:image-path { m-24.png } } unit-render-details:m-4a3e2_75 { @@ -128,7 +128,7 @@ unit-render-details:m-4a3e2_75 { unit-render-details:m-4a3e2_76 { string:image-path { m-4a3e2_76.png } } -unit-render-details:m-26 { +unit-render-details:pershing { string:image-path { m-26.png } } unit-render-details:m-2a4 { @@ -140,7 +140,7 @@ unit-render-details:m-4a2_75 { unit-render-details:m-4a2_76 { string:image-path { m-4a2.png } } -unit-render-details:sherman-flail { +unit-render-details:sherman-crab { string:image-path { sherman-flail.png } } unit-render-details:lvt-1 { diff --git a/Modules/Default/UnitRenderDetails/British.blk b/Modules/Default/UnitRenderDetails/British.blk index 014a658..315b86e 100644 --- a/Modules/Default/UnitRenderDetails/British.blk +++ b/Modules/Default/UnitRenderDetails/British.blk @@ -62,10 +62,10 @@ unit-render-details:humber-sc { unit-render-details:daimler { string:image-path { daimler.png } } -unit-render-details:aec-6pdr { +unit-render-details:aec-ii { string:image-path { aec-6pdr.png } } -unit-render-details:aec-75mm { +unit-render-details:aec-iii { string:image-path { aec-75mm.png } } unit-render-details:recon-hq { @@ -98,43 +98,37 @@ unit-render-details:skink { unit-render-details:mk-vi-b { string:image-path { mk-vi-b.png } } -unit-render-details:matilda { - string:image-path { matilda.png } -} unit-render-details:matilda-ii { string:image-path { matilda.png } } -unit-render-details:a-9 { +unit-render-details:cruiser-i { string:image-path { a-9.png } } -unit-render-details:a-9-cs { +unit-render-details:cruiser-i-cs { string:image-path { a-9-cs.png } } -unit-render-details:a-10 { +unit-render-details:cruiser-ii { string:image-path { a-10.png } } -unit-render-details:a-10-cs { +unit-render-details:cruiser-ii-cs { string:image-path { a-10-cs.png } } -unit-render-details:a-11 { +unit-render-details:matilda { string:image-path { a-11.png } } -unit-render-details:a-13 { +unit-render-details:cruiser-iv { string:image-path { a-13.png } } unit-render-details:archer { string:image-path { archer.png } } -unit-render-details:wolverine { - string:image-path { m-10.png } -} unit-render-details:achilles { string:image-path { achilles.png } } unit-render-details:cromwell-cs { string:image-path { cromwell-cs.png } } -unit-render-details:churchill-cs { +unit-render-details:churchill-viii { string:image-path { churchill-cs.png } } unit-render-details:sexton { @@ -155,7 +149,7 @@ unit-render-details:sherman-uk-a { unit-render-details:firefly { string:image-path { m-4_105.png } } -unit-render-details:cromwell { +unit-render-details:cromwell-iv { string:image-path { cromwell.png } } unit-render-details:comet { @@ -164,13 +158,10 @@ unit-render-details:comet { unit-render-details:challenger { string:image-path { challenger.png } } -unit-render-details:centurion { - string:image-path { centurion.png } -} -unit-render-details:churchill-6pdr { +unit-render-details:churchill-iii { string:image-path { churchill.png } } -unit-render-details:churchill-75 { +unit-render-details:churchill-vii { string:image-path { churchill.png } } unit-render-details:churchill-iv { @@ -179,7 +170,7 @@ unit-render-details:churchill-iv { unit-render-details:matilda-cs { string:image-path { matilda-cs.png } } -unit-render-details:crusader-cs { +unit-render-details:crusader-ii-cs { string:image-path { crusader.png } } unit-render-details:crusader-ii { diff --git a/Program.cs b/Program.cs index d30798a..56ea44b 100644 --- a/Program.cs +++ b/Program.cs @@ -16,9 +16,9 @@ class MainClass public static void Main(string[] args) { - if (args.Length == 3 && args[0] == "lang") + if (args.Length == 4 && args[0] == "lang") { - FileUtils.MungeLanguage(args[1], args[2]); + FileUtils.MungeLanguage(Convert.ToUInt32(args[1]), args[2], args[3]); } if (args.Length == 1 && args[0] == "remap") { diff --git a/View/Landing/LandingScreen.cs b/View/Landing/LandingScreen.cs index 9928e1e..c146872 100644 --- a/View/Landing/LandingScreen.cs +++ b/View/Landing/LandingScreen.cs @@ -34,8 +34,8 @@ public LandingScreen(Vector2f WindowSize) _LandingSelect.Add(EditButton); _LandingSelect.Add(ScenarioBuilderButton); - _LandingSelect.Add(JoinServerButton); - _LandingSelect.Add(StartServerButton); + // _LandingSelect.Add(JoinServerButton); + // _LandingSelect.Add(StartServerButton); _Items.Add(_LandingSelect); } diff --git a/View/Match/AttackPane.cs b/View/Match/AttackPane.cs index 1f87a6d..59c3a03 100644 --- a/View/Match/AttackPane.cs +++ b/View/Match/AttackPane.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using Cardamom.Interface; using Cardamom.Interface.Items; @@ -25,21 +26,15 @@ public AttackPane(AttackOrder Attack) this.Attack = Attack; Attack.OnChanged += UpdateDescription; - _AttackTargetSelect.Add(new SelectionOption("select-option") + foreach (var target in Enum.GetValues(typeof(AttackTarget)).Cast()) { - DisplayedString = AttackTarget.ALL.ToString(), - Value = AttackTarget.ALL - }); - _AttackTargetSelect.Add(new SelectionOption("select-option") - { - DisplayedString = AttackTarget.WEAKEST.ToString(), - Value = AttackTarget.WEAKEST - }); - _AttackTargetSelect.Add(new SelectionOption("select-option") - { - DisplayedString = AttackTarget.EACH.ToString(), - Value = AttackTarget.EACH - }); + _AttackTargetSelect.Add(new SelectionOption("select-option") + { + DisplayedString = ObjectDescriber.Describe(target), + Value = target + }); + } + _AttackTargetSelect.SetValue(i => i.Value == Attack.Target); _AttackTargetSelect.OnChange += HandleAttackTargetChanged; _OrderButton.Position = new Vector2f(0, Size.Y - _OrderButton.Size.Y - 32); _OrderButton.OnClick += (sender, e) => { if (OnExecute != null) OnExecute(this, EventArgs.Empty); }; diff --git a/View/Unit/UnitView.cs b/View/Unit/UnitView.cs index 61cd780..1cb3403 100644 --- a/View/Unit/UnitView.cs +++ b/View/Unit/UnitView.cs @@ -130,7 +130,8 @@ public override void Draw(RenderTarget Target, Transform Transform) { Transform.Translate(Position); - _UnitConfigurationView.Flipped = Unit.Status == UnitStatus.DISRUPTED && Reactive; + _UnitConfigurationView.Flipped = + (Unit.Status == UnitStatus.DAMAGED || Unit.Status == UnitStatus.DISRUPTED) && Reactive; _UnitConfigurationView.Draw(Target, Transform); if (Reactive)