diff --git a/OpenRA.Mods.CA/Activities/CruiseMissileFly.cs b/OpenRA.Mods.CA/Activities/CruiseMissileFly.cs index cae68863f2..aa79fd5cf1 100644 --- a/OpenRA.Mods.CA/Activities/CruiseMissileFly.cs +++ b/OpenRA.Mods.CA/Activities/CruiseMissileFly.cs @@ -29,11 +29,12 @@ public class CruiseMissileFly : Activity readonly Target target; WDist maxAltitude; WDist maxTargetMovement; - bool trackingLost; + bool trackTarget; + bool trackingActive; int launchAngleDegrees; double launchAngleRad; - public CruiseMissileFly(Actor self, Target t, CruiseMissile cm, WDist maxAltitude, WDist maxTargetMovement) + public CruiseMissileFly(Actor self, Target t, CruiseMissile cm, WDist maxAltitude, WDist maxTargetMovement, bool trackTarget) { this.cm = cm; launchPos = currentPos = self.CenterPosition; @@ -42,9 +43,10 @@ public CruiseMissileFly(Actor self, Target t, CruiseMissile cm, WDist maxAltitud length = Math.Max((targetPos - launchPos).Length / this.cm.Info.Speed, 1); facing = (targetPos - launchPos).Yaw; cm.Facing = GetEffectiveFacing(); - trackingLost = false; + trackingActive = !trackTarget; this.maxAltitude = maxAltitude; this.maxTargetMovement = maxTargetMovement; + this.trackTarget = trackTarget; launchAngleDegrees = (int)(cm.Info.LaunchAngle.Angle / (1024f / 360f)); launchAngleRad = Math.PI * launchAngleDegrees / 180.0; cm.SetState(CruiseMissileState.Ascending); @@ -82,10 +84,10 @@ public void FlyToward(Actor self, CruiseMissile cm) public override bool Tick(Actor self) { - if (!trackingLost && maxTargetMovement > WDist.Zero && target.Type == TargetType.Actor && (initTargetPos - target.CenterPosition).Length > maxTargetMovement.Length) - trackingLost = true; + if (trackingActive && maxTargetMovement > WDist.Zero && target.Type == TargetType.Actor && (initTargetPos - target.CenterPosition).Length > maxTargetMovement.Length) + trackingActive = false; - if (!trackingLost && ((target.Type == TargetType.Actor && !target.Actor.IsDead) || (target.Type == TargetType.FrozenActor && target.FrozenActor != null))) + if (trackingActive && ((target.Type == TargetType.Actor && !target.Actor.IsDead) || (target.Type == TargetType.FrozenActor && target.FrozenActor != null))) targetPos = target.CenterPosition; var d = targetPos - self.CenterPosition; diff --git a/OpenRA.Mods.CA/Traits/Conditions/GrantTimedConditionOnDeploy.cs b/OpenRA.Mods.CA/Traits/Conditions/GrantTimedConditionOnDeploy.cs index 00b9e33a1f..0d7aba46e2 100644 --- a/OpenRA.Mods.CA/Traits/Conditions/GrantTimedConditionOnDeploy.cs +++ b/OpenRA.Mods.CA/Traits/Conditions/GrantTimedConditionOnDeploy.cs @@ -317,7 +317,7 @@ float ISelectionBar.GetValue() : (float)ticks / Info.DeployedTicks; } - bool ISelectionBar.DisplayWhenEmpty { get { return deployState == TimedDeployState.Ready ? Info.ShowSelectionBarWhenFull : Info.ShowSelectionBarWhenEmpty; } } + bool ISelectionBar.DisplayWhenEmpty { get { return Info.ShowSelectionBar ? (deployState == TimedDeployState.Ready ? Info.ShowSelectionBarWhenFull : Info.ShowSelectionBarWhenEmpty) : false; } } Color ISelectionBar.GetColor() { return deployState == TimedDeployState.Charging ? Info.ChargingColor : Info.DischargingColor; } } diff --git a/OpenRA.Mods.CA/Traits/CruiseMissile.cs b/OpenRA.Mods.CA/Traits/CruiseMissile.cs index 0b71c2ef4d..57264775c2 100644 --- a/OpenRA.Mods.CA/Traits/CruiseMissile.cs +++ b/OpenRA.Mods.CA/Traits/CruiseMissile.cs @@ -27,7 +27,7 @@ public class CruiseMissileInfo : MissileBaseInfo [Desc("Missile will cruise straight at this altitude.")] public readonly WDist MaxAltitude = WDist.Zero; - [Desc("If a mobile target moves further than this beyond its initial location, the missile will lose tracking.")] + [Desc("If a mobile target moves further than this beyond its initial location, the missile will lose tracking. Zero means infinite tracking.")] public readonly WDist MaxTargetMovement = WDist.Zero; [GrantedConditionReference] @@ -38,6 +38,9 @@ public class CruiseMissileInfo : MissileBaseInfo [Desc("The condition to grant when the missile is descending.")] public readonly string DescendingCondition = null; + [Desc("If true, missile will track target.")] + public readonly bool TrackTarget = true; + public override object Create(ActorInitializer init) { return new CruiseMissile(init, this); } } @@ -85,7 +88,7 @@ public override void SetTarget(Target target) protected override Activity GetActivity(Actor self, Target target) { - return new CruiseMissileFly(self, target, this, cruiseMissileInfo.MaxAltitude, cruiseMissileInfo.MaxTargetMovement); + return new CruiseMissileFly(self, target, this, cruiseMissileInfo.MaxAltitude, cruiseMissileInfo.MaxTargetMovement, cruiseMissileInfo.TrackTarget); } } } diff --git a/OpenRA.Mods.CA/Traits/Infiltration/InfiltrateForSupportPowerCA.cs b/OpenRA.Mods.CA/Traits/Infiltration/InfiltrateForSupportPowerCA.cs index 705d0b453d..bfeefc3c6f 100644 --- a/OpenRA.Mods.CA/Traits/Infiltration/InfiltrateForSupportPowerCA.cs +++ b/OpenRA.Mods.CA/Traits/Infiltration/InfiltrateForSupportPowerCA.cs @@ -8,6 +8,7 @@ */ #endregion +using System; using OpenRA.Mods.Common; using OpenRA.Mods.Common.Traits; using OpenRA.Primitives; @@ -15,7 +16,8 @@ namespace OpenRA.Mods.CA.Traits { - [Desc("CA version makes the spawned proxy actor inherit the faction of the infiltrated actor.")] + [Desc("CA version allows the spawned proxy actor to inherit the faction of the infiltrated actor,", + "or to be owned by the target.")] class InfiltrateForSupportPowerCAInfo : TraitInfo { [ActorReference] @@ -33,6 +35,12 @@ class InfiltrateForSupportPowerCAInfo : TraitInfo [Desc("Sound the perpetrator will hear after successful infiltration.")] public readonly string InfiltrationNotification = null; + [Desc("If true, the spawned actor will use the target's faction.")] + public readonly bool UseTargetFaction = false; + + [Desc("If true, the spawned actor will be owned by the target.")] + public readonly bool UseTargetOwner = false; + public override object Create(ActorInitializer init) { return new InfiltrateForSupportPowerCA(this); } } @@ -56,11 +64,17 @@ void INotifyInfiltrated.Infiltrated(Actor self, Actor infiltrator, BitSet w.CreateActor(info.Proxy, new TypeDictionary - { - new OwnerInit(infiltrator.Owner), - new FactionInit(self.Owner.Faction.InternalName) - })); + var td = new TypeDictionary(); + + if (info.UseTargetFaction) + td.Add(new FactionInit(self.Owner.Faction.InternalName)); + + if (info.UseTargetOwner) + td.Add(new OwnerInit(self.Owner)); + else + td.Add(new OwnerInit(infiltrator.Owner)); + + infiltrator.World.AddFrameEndTask(w => w.CreateActor(info.Proxy, td)); } } } diff --git a/OpenRA.Mods.CA/Traits/Infiltration/InfiltrateForTimedCondition.cs b/OpenRA.Mods.CA/Traits/Infiltration/InfiltrateForTimedCondition.cs new file mode 100644 index 0000000000..694e586bd1 --- /dev/null +++ b/OpenRA.Mods.CA/Traits/Infiltration/InfiltrateForTimedCondition.cs @@ -0,0 +1,93 @@ +#region Copyright & License Information +/** + * Copyright (c) The OpenRA Combined Arms Developers (see CREDITS). + * This file is part of OpenRA Combined Arms, 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; +using OpenRA.Mods.Common; +using OpenRA.Mods.Common.Traits; +using OpenRA.Primitives; +using OpenRA.Traits; + +namespace OpenRA.Mods.CA.Traits +{ + [Desc("The actor gains a timed condition when infiltrated.")] + class InfiltrateForTimedConditionInfo : TraitInfo + { + [GrantedConditionReference] + [FieldLoader.Require] + public readonly string Condition = null; + + [Desc("Condition duration. Use zero for infinite duration.")] + public readonly int Duration = 0; + + [Desc("The `TargetTypes` from `Targetable` that are allowed to enter.")] + public readonly BitSet Types = default(BitSet); + + [NotificationReference("Speech")] + [Desc("Sound the victim will hear when technology gets stolen.")] + public readonly string InfiltratedNotification = null; + + [NotificationReference("Speech")] + [Desc("Sound the perpetrator will hear after successful infiltration.")] + public readonly string InfiltrationNotification = null; + + public readonly bool ShowSelectionBar = false; + public readonly Color SelectionBarColor = Color.Red; + + public override object Create(ActorInitializer init) { return new InfiltrateForTimedCondition(this); } + } + + class InfiltrateForTimedCondition : INotifyInfiltrated, ITick, ISelectionBar + { + readonly InfiltrateForTimedConditionInfo info; + int conditionToken = Actor.InvalidConditionToken; + int ticks; + + public InfiltrateForTimedCondition(InfiltrateForTimedConditionInfo info) + { + this.info = info; + } + + void INotifyInfiltrated.Infiltrated(Actor self, Actor infiltrator, BitSet types) + { + if (!info.Types.Overlaps(types)) + return; + + if (info.InfiltratedNotification != null) + Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", info.InfiltratedNotification, self.Owner.Faction.InternalName); + + if (info.InfiltrationNotification != null) + Game.Sound.PlayNotification(self.World.Map.Rules, infiltrator.Owner, "Speech", info.InfiltrationNotification, infiltrator.Owner.Faction.InternalName); + + ticks = info.Duration; + conditionToken = self.GrantCondition(info.Condition); + } + + void ITick.Tick(Actor self) + { + if (conditionToken == Actor.InvalidConditionToken) + return; + + if (--ticks < 0) + conditionToken = self.RevokeCondition(conditionToken); + } + + float ISelectionBar.GetValue() + { + if (!info.ShowSelectionBar || ticks <= 0) + return 0f; + + return (float)ticks / info.Duration; + } + + bool ISelectionBar.DisplayWhenEmpty { get { return false; } } + + Color ISelectionBar.GetColor() { return info.SelectionBarColor; } + } +} diff --git a/OpenRA.Mods.CA/Traits/Modifiers/WithPalettedOverlay.cs b/OpenRA.Mods.CA/Traits/Modifiers/WithPalettedOverlay.cs index cc7b1aed93..1550732c9f 100644 --- a/OpenRA.Mods.CA/Traits/Modifiers/WithPalettedOverlay.cs +++ b/OpenRA.Mods.CA/Traits/Modifiers/WithPalettedOverlay.cs @@ -24,23 +24,31 @@ public class WithPalettedOverlayInfo : ConditionalTraitInfo [Desc("Palette to use when rendering the overlay")] public readonly string Palette = "invuln"; - public override object Create(ActorInitializer init) { return new WithPalettedOverlay(this); } + [Desc("Player relationships that see the overlay.")] + public readonly PlayerRelationship ValidRelationships = PlayerRelationship.Ally | PlayerRelationship.Neutral | PlayerRelationship.Enemy; + + public override object Create(ActorInitializer init) { return new WithPalettedOverlay(init.Self, this); } } - public class WithPalettedOverlay : ConditionalTrait, IRenderModifier + public class WithPalettedOverlay : ConditionalTrait, IRenderModifier, INotifyOwnerChanged { - public WithPalettedOverlay(WithPalettedOverlayInfo info) - : base(info) { } + bool validRelationship; + + public WithPalettedOverlay(Actor self, WithPalettedOverlayInfo info) + : base(info) + { + Update(self); + } IEnumerable IRenderModifier.ModifyRender(Actor self, WorldRenderer wr, IEnumerable r) { if (IsTraitDisabled) return r; - return ModifiedRender(self, wr, r); + return ModifiedRender(wr, r); } - IEnumerable ModifiedRender(Actor self, WorldRenderer wr, IEnumerable r) + IEnumerable ModifiedRender(WorldRenderer wr, IEnumerable r) { if (IsTraitDisabled) yield break; @@ -51,7 +59,7 @@ IEnumerable ModifiedRender(Actor self, WorldRenderer wr, IEnumerabl { yield return a; - if (palette != null && !a.IsDecoration && a is IPalettedRenderable) + if (validRelationship && palette != null && !a.IsDecoration && a is IPalettedRenderable) yield return ((IPalettedRenderable)a).WithPalette(palette) .WithZOffset(a.ZOffset + 1) .AsDecoration(); @@ -62,5 +70,16 @@ IEnumerable IRenderModifier.ModifyScreenBounds(Actor self, WorldRende { return bounds; } + + void INotifyOwnerChanged.OnOwnerChanged(Actor self, Player oldOwner, Player newOwner) + { + Update(self); + } + + void Update(Actor self) + { + var relationship = self.World.RenderPlayer != null ? self.Owner.RelationshipWith(self.World.RenderPlayer) : PlayerRelationship.None; + validRelationship = Info.ValidRelationships.HasRelationship(relationship); + } } } diff --git a/OpenRA.Mods.CA/Traits/ReloadAmmoPoolCA.cs b/OpenRA.Mods.CA/Traits/ReloadAmmoPoolCA.cs index 19150e1627..f093306791 100644 --- a/OpenRA.Mods.CA/Traits/ReloadAmmoPoolCA.cs +++ b/OpenRA.Mods.CA/Traits/ReloadAmmoPoolCA.cs @@ -48,7 +48,7 @@ public class ReloadAmmoPoolCAInfo : PausableConditionalTraitInfo public readonly bool ShowSelectionBar = true; public readonly Color SelectionBarColor = Color.FromArgb(128, 200, 255); - public override object Create(ActorInitializer init) { return new ReloadAmmoPoolCA(this); } + public override object Create(ActorInitializer init) { return new ReloadAmmoPoolCA(init.Self, this); } public override void RulesetLoaded(Ruleset rules, ActorInfo ai) { @@ -63,13 +63,17 @@ public class ReloadAmmoPoolCA : PausableConditionalTrait, { AmmoPool ammoPool; IReloadAmmoModifier[] modifiers; + Actor self; [Sync] int remainingTicks; int remainingDelay; - public ReloadAmmoPoolCA(ReloadAmmoPoolCAInfo info) - : base(info) { } + public ReloadAmmoPoolCA(Actor self, ReloadAmmoPoolCAInfo info) + : base(info) + { + this.self = self; + } protected override void Created(Actor self) { @@ -137,7 +141,7 @@ protected virtual void Reload(Actor self, int reloadDelay, int reloadCount, stri float ISelectionBar.GetValue() { - if (!Info.ShowSelectionBar || remainingDelay > 0) + if (!Info.ShowSelectionBar || remainingDelay > 0 || !self.Owner.IsAlliedWith(self.World.RenderPlayer)) return 0; var maxTicks = Util.ApplyPercentageModifiers(Info.Delay, modifiers.Select(m => m.GetReloadAmmoModifier())); if (remainingTicks == maxTicks) diff --git a/OpenRA.Mods.CA/Warheads/SpawnActorWarhead.cs b/OpenRA.Mods.CA/Warheads/SpawnActorWarhead.cs index c84904cf62..2e33b4d22c 100644 --- a/OpenRA.Mods.CA/Warheads/SpawnActorWarhead.cs +++ b/OpenRA.Mods.CA/Warheads/SpawnActorWarhead.cs @@ -11,6 +11,7 @@ using System.Linq; using OpenRA.GameRules; using OpenRA.Mods.CA.Activities; +using OpenRA.Mods.Common; using OpenRA.Mods.Common.Activities; using OpenRA.Mods.Common.Effects; using OpenRA.Mods.Common.Traits; @@ -63,6 +64,9 @@ public class SpawnActorWarhead : WarheadAS, IRulesetLoaded [Desc("For non-positionable actors only, whether to avoid spawning on top of existing actors.")] public readonly bool AvoidActors = false; + [Desc("For actors with facing, match the facing of the source (if the source also has a facing) .")] + public readonly bool MatchSourceFacing = false; + public readonly bool UsePlayerPalette = false; public void RulesetLoaded(Ruleset rules, WeaponInfo info) @@ -189,6 +193,13 @@ TypeDictionary CreateTypeDictionary(Actor firedBy, CPos targetCell) td.Add(new LocationInit(targetCell)); + if (MatchSourceFacing) + { + var facing = firedBy.TraitOrDefault(); + if (facing != null) + td.Add(new FacingInit(facing.Facing)); + } + return td; } } diff --git a/mods/ca/bits/acho.shp b/mods/ca/bits/acho.shp new file mode 100644 index 0000000000..f879929e89 Binary files /dev/null and b/mods/ca/bits/acho.shp differ diff --git a/mods/ca/bits/achoicon.shp b/mods/ca/bits/achoicon.shp new file mode 100644 index 0000000000..c0a7e1324e Binary files /dev/null and b/mods/ca/bits/achoicon.shp differ diff --git a/mods/ca/bits/audio/beag-fire1.aud b/mods/ca/bits/audio/beag-fire1.aud new file mode 100644 index 0000000000..f638e9b15b Binary files /dev/null and b/mods/ca/bits/audio/beag-fire1.aud differ diff --git a/mods/ca/bits/audio/beag-fire2.aud b/mods/ca/bits/audio/beag-fire2.aud new file mode 100644 index 0000000000..fe7a08816d Binary files /dev/null and b/mods/ca/bits/audio/beag-fire2.aud differ diff --git a/mods/ca/bits/audio/decoydespawn.aud b/mods/ca/bits/audio/decoydespawn.aud new file mode 100644 index 0000000000..0534f5a4f5 Binary files /dev/null and b/mods/ca/bits/audio/decoydespawn.aud differ diff --git a/mods/ca/bits/audio/decoyspawn.aud b/mods/ca/bits/audio/decoyspawn.aud new file mode 100644 index 0000000000..546582f964 Binary files /dev/null and b/mods/ca/bits/audio/decoyspawn.aud differ diff --git a/mods/ca/bits/audio/mantis-fire1.aud b/mods/ca/bits/audio/mantis-fire1.aud new file mode 100644 index 0000000000..4ba3d2970f Binary files /dev/null and b/mods/ca/bits/audio/mantis-fire1.aud differ diff --git a/mods/ca/bits/audio/mantis-fire2.aud b/mods/ca/bits/audio/mantis-fire2.aud new file mode 100644 index 0000000000..8270a8e739 Binary files /dev/null and b/mods/ca/bits/audio/mantis-fire2.aud differ diff --git a/mods/ca/bits/audio/mcor-fire1.aud b/mods/ca/bits/audio/mcor-fire1.aud new file mode 100644 index 0000000000..9bbafb21a2 Binary files /dev/null and b/mods/ca/bits/audio/mcor-fire1.aud differ diff --git a/mods/ca/bits/audio/mcor-fire2.aud b/mods/ca/bits/audio/mcor-fire2.aud new file mode 100644 index 0000000000..040b24096c Binary files /dev/null and b/mods/ca/bits/audio/mcor-fire2.aud differ diff --git a/mods/ca/bits/audio/optics-disable.aud b/mods/ca/bits/audio/optics-disable.aud new file mode 100644 index 0000000000..451d236190 Binary files /dev/null and b/mods/ca/bits/audio/optics-disable.aud differ diff --git a/mods/ca/bits/audio/optics-enable.aud b/mods/ca/bits/audio/optics-enable.aud new file mode 100644 index 0000000000..9e7af4f1d3 Binary files /dev/null and b/mods/ca/bits/audio/optics-enable.aud differ diff --git a/mods/ca/bits/audio/pitbull-fire1.aud b/mods/ca/bits/audio/pitbull-fire1.aud new file mode 100644 index 0000000000..b81e3d8689 Binary files /dev/null and b/mods/ca/bits/audio/pitbull-fire1.aud differ diff --git a/mods/ca/bits/audio/pitbull-fire2.aud b/mods/ca/bits/audio/pitbull-fire2.aud new file mode 100644 index 0000000000..ce731346ab Binary files /dev/null and b/mods/ca/bits/audio/pitbull-fire2.aud differ diff --git a/mods/ca/bits/audio/veilblast.aud b/mods/ca/bits/audio/veilblast.aud new file mode 100644 index 0000000000..d084e6663a Binary files /dev/null and b/mods/ca/bits/audio/veilblast.aud differ diff --git a/mods/ca/bits/audio/vert-bomb1.aud b/mods/ca/bits/audio/vert-bomb1.aud new file mode 100644 index 0000000000..e1ac5d64a1 Binary files /dev/null and b/mods/ca/bits/audio/vert-bomb1.aud differ diff --git a/mods/ca/bits/audio/vert-bombhit1.aud b/mods/ca/bits/audio/vert-bombhit1.aud new file mode 100644 index 0000000000..5068f21b4f Binary files /dev/null and b/mods/ca/bits/audio/vert-bombhit1.aud differ diff --git a/mods/ca/bits/audio/vert-bombhit2.aud b/mods/ca/bits/audio/vert-bombhit2.aud new file mode 100644 index 0000000000..41d68c2363 Binary files /dev/null and b/mods/ca/bits/audio/vert-bombhit2.aud differ diff --git a/mods/ca/bits/audio/viper-fire1.aud b/mods/ca/bits/audio/viper-fire1.aud new file mode 100644 index 0000000000..277db89fd4 Binary files /dev/null and b/mods/ca/bits/audio/viper-fire1.aud differ diff --git a/mods/ca/bits/beag.shp b/mods/ca/bits/beag.shp new file mode 100644 index 0000000000..d443e07534 Binary files /dev/null and b/mods/ca/bits/beag.shp differ diff --git a/mods/ca/bits/beagicon.shp b/mods/ca/bits/beagicon.shp new file mode 100644 index 0000000000..8413e395de Binary files /dev/null and b/mods/ca/bits/beagicon.shp differ diff --git a/mods/ca/bits/cdog.shp b/mods/ca/bits/cdog.shp index 546fc038da..4fb21670d3 100644 Binary files a/mods/ca/bits/cdog.shp and b/mods/ca/bits/cdog.shp differ diff --git a/mods/ca/bits/hacked.shp b/mods/ca/bits/hacked.shp index 74e9340f27..895feac616 100644 Binary files a/mods/ca/bits/hacked.shp and b/mods/ca/bits/hacked.shp differ diff --git a/mods/ca/bits/ifvtur.shp b/mods/ca/bits/ifvtur.shp index 3c6ec36afc..ef9d902729 100644 Binary files a/mods/ca/bits/ifvtur.shp and b/mods/ca/bits/ifvtur.shp differ diff --git a/mods/ca/bits/mant.shp b/mods/ca/bits/mant.shp new file mode 100644 index 0000000000..28792970c6 Binary files /dev/null and b/mods/ca/bits/mant.shp differ diff --git a/mods/ca/bits/manticnh.shp b/mods/ca/bits/manticnh.shp new file mode 100644 index 0000000000..08feb49423 Binary files /dev/null and b/mods/ca/bits/manticnh.shp differ diff --git a/mods/ca/bits/mcor.shp b/mods/ca/bits/mcor.shp new file mode 100644 index 0000000000..67daea69ee Binary files /dev/null and b/mods/ca/bits/mcor.shp differ diff --git a/mods/ca/bits/mcoricnh.shp b/mods/ca/bits/mcoricnh.shp new file mode 100644 index 0000000000..f4f425aebe Binary files /dev/null and b/mods/ca/bits/mcoricnh.shp differ diff --git a/mods/ca/bits/opticsactive.shp b/mods/ca/bits/opticsactive.shp new file mode 100644 index 0000000000..f211cd45d5 Binary files /dev/null and b/mods/ca/bits/opticsactive.shp differ diff --git a/mods/ca/bits/pbul.shp b/mods/ca/bits/pbul.shp new file mode 100644 index 0000000000..7ca2e8486b Binary files /dev/null and b/mods/ca/bits/pbul.shp differ diff --git a/mods/ca/bits/pbulicnh.shp b/mods/ca/bits/pbulicnh.shp new file mode 100644 index 0000000000..3fffa60909 Binary files /dev/null and b/mods/ca/bits/pbulicnh.shp differ diff --git a/mods/ca/bits/pmak.shp b/mods/ca/bits/pmak.shp new file mode 100644 index 0000000000..12ca10764e Binary files /dev/null and b/mods/ca/bits/pmak.shp differ diff --git a/mods/ca/bits/pmakicon.shp b/mods/ca/bits/pmakicon.shp new file mode 100644 index 0000000000..23600522dc Binary files /dev/null and b/mods/ca/bits/pmakicon.shp differ diff --git a/mods/ca/bits/reck.shp b/mods/ca/bits/reck.shp new file mode 100644 index 0000000000..514f0ee16c Binary files /dev/null and b/mods/ca/bits/reck.shp differ diff --git a/mods/ca/bits/reckicon.shp b/mods/ca/bits/reckicon.shp new file mode 100644 index 0000000000..f982f0769e Binary files /dev/null and b/mods/ca/bits/reckicon.shp differ diff --git a/mods/ca/bits/redplasmatorp.shp b/mods/ca/bits/redplasmatorp.shp new file mode 100644 index 0000000000..15bad4a706 Binary files /dev/null and b/mods/ca/bits/redplasmatorp.shp differ diff --git a/mods/ca/bits/shde.shp b/mods/ca/bits/shde.shp new file mode 100644 index 0000000000..1c8e12b3fd Binary files /dev/null and b/mods/ca/bits/shde.shp differ diff --git a/mods/ca/bits/shdeicnh.shp b/mods/ca/bits/shdeicnh.shp new file mode 100644 index 0000000000..4f81109b12 Binary files /dev/null and b/mods/ca/bits/shdeicnh.shp differ diff --git a/mods/ca/bits/upg-advopticsicon.shp b/mods/ca/bits/upg-advopticsicon.shp new file mode 100644 index 0000000000..741d08561e Binary files /dev/null and b/mods/ca/bits/upg-advopticsicon.shp differ diff --git a/mods/ca/bits/upg-decoyicon.shp b/mods/ca/bits/upg-decoyicon.shp new file mode 100644 index 0000000000..39d3b01e81 Binary files /dev/null and b/mods/ca/bits/upg-decoyicon.shp differ diff --git a/mods/ca/bits/veilblast.shp b/mods/ca/bits/veilblast.shp new file mode 100644 index 0000000000..3fe3feab20 Binary files /dev/null and b/mods/ca/bits/veilblast.shp differ diff --git a/mods/ca/bits/vert.shp b/mods/ca/bits/vert.shp new file mode 100644 index 0000000000..fadb3173f0 Binary files /dev/null and b/mods/ca/bits/vert.shp differ diff --git a/mods/ca/bits/verticnh.shp b/mods/ca/bits/verticnh.shp new file mode 100644 index 0000000000..cc4adf3484 Binary files /dev/null and b/mods/ca/bits/verticnh.shp differ diff --git a/mods/ca/bits/vipr.shp b/mods/ca/bits/vipr.shp new file mode 100644 index 0000000000..5e9458a1fa Binary files /dev/null and b/mods/ca/bits/vipr.shp differ diff --git a/mods/ca/bits/vipricnh.shp b/mods/ca/bits/vipricnh.shp new file mode 100644 index 0000000000..5c919ecb2b Binary files /dev/null and b/mods/ca/bits/vipricnh.shp differ diff --git a/mods/ca/maps/Calming_Lakes_CA.oramap b/mods/ca/maps/Calming_Lakes_CA.oramap index 284e74c746..d3ee591106 100644 Binary files a/mods/ca/maps/Calming_Lakes_CA.oramap and b/mods/ca/maps/Calming_Lakes_CA.oramap differ diff --git a/mods/ca/maps/Utter_Darkness_CA.oramap b/mods/ca/maps/Utter_Darkness_CA.oramap index eb30548cd9..c71c0cba1c 100644 Binary files a/mods/ca/maps/Utter_Darkness_CA.oramap and b/mods/ca/maps/Utter_Darkness_CA.oramap differ diff --git a/mods/ca/maps/ca01-crossrip/ca01.lua b/mods/ca/maps/ca01-crossrip/ca01.lua index 3895057792..bfc65d2ec1 100644 --- a/mods/ca/maps/ca01-crossrip/ca01.lua +++ b/mods/ca/maps/ca01-crossrip/ca01.lua @@ -225,6 +225,8 @@ WorldLoaded = function() TeslaCoil3.Destroy() HardOnlyV2.Destroy() HardOnlyKatyusha.Destroy() + else + Ranger1.Destroy() end if Difficulty == "easy" then @@ -239,8 +241,6 @@ WorldLoaded = function() NonEasyHeavyTank3.Destroy() NonEasyHeavyTank4.Destroy() NonEasyMammoth1.Destroy() - else - Ranger1.Destroy() end Trigger.AfterDelay(1, function() @@ -381,8 +381,8 @@ InitUSSR = function() -- Eastern Halo drops Trigger.AfterDelay(HaloDropStart[Difficulty], function() local eastHaloDropEntryPaths = { - { CPos.New(EastHaloDrop.Location.X + 35, EastHaloDrop.Location.Y - 25), EastHaloDrop.Location }, - { CPos.New(EastHaloDrop.Location.X + 35, EastHaloDrop.Location.Y - 25), EastHaloDropAlt.Location }, + { HaloSpawn1.Location, HaloLanding1.Location }, + { HaloSpawn2.Location, HaloLanding2.Location }, } DoHaloDrop(eastHaloDropEntryPaths) end) @@ -390,7 +390,7 @@ InitUSSR = function() -- Western Halo drops (hard only) if Difficulty == "hard" then Trigger.AfterDelay(HaloDropStart[Difficulty] + DateTime.Seconds(40), function() - local westHaloDropEntryPaths = { { CPos.New(WestHaloDrop.Location.X - 35, WestHaloDrop.Location.Y - 25), WestHaloDrop.Location } } + local westHaloDropEntryPaths = { { HaloSpawn3.Location, HaloLanding3.Location } } DoHaloDrop(westHaloDropEntryPaths) end) end diff --git a/mods/ca/maps/ca01-crossrip/map.yaml b/mods/ca/maps/ca01-crossrip/map.yaml index 9f7cdcd0c4..cdbecb2891 100644 --- a/mods/ca/maps/ca01-crossrip/map.yaml +++ b/mods/ca/maps/ca01-crossrip/map.yaml @@ -118,9 +118,6 @@ Actors: Actor43: brik Owner: USSR Location: 64,28 - Actor44: brik - Owner: USSR - Location: 64,27 Actor45: brik Owner: USSR Location: 64,26 @@ -208,9 +205,6 @@ Actors: Actor73: chain Owner: USSR Location: 63,28 - Actor74: chain - Owner: USSR - Location: 63,27 Actor75: chain Owner: USSR Location: 63,26 @@ -1469,7 +1463,7 @@ Actors: Evac3: waypoint Owner: Neutral Location: 52,62 - EastHaloDrop: waypoint + HaloLanding2: waypoint Location: 40,38 Owner: Neutral Actor497: ttra @@ -1480,7 +1474,7 @@ Actors: Owner: USSR Location: 32,6 Facing: 384 - WestHaloDrop: waypoint + HaloLanding3: waypoint Owner: Neutral Location: 5,53 WormholeSpawn5: waypoint @@ -1492,7 +1486,7 @@ Actors: NavalDrop: waypoint Owner: Neutral Location: 4,39 - EastHaloDropAlt: waypoint + HaloLanding1: waypoint Owner: Neutral Location: 58,38 AttackWaypoint4: waypoint @@ -1606,6 +1600,21 @@ Actors: Owner: USSR Location: 45,4 Facing: 384 + Actor74: chain + Owner: USSR + Location: 63,27 + Actor494: brik + Owner: USSR + Location: 64,27 + HaloSpawn2: waypoint + Owner: Neutral + Location: 53,1 + HaloSpawn1: waypoint + Owner: Neutral + Location: 64,20 + HaloSpawn3: waypoint + Owner: Neutral + Location: 1,26 Rules: ca|rules/custom/campaign-rules.yaml, ca|rules/custom/campaign-tooltips.yaml, ca|rules/custom/two-tone-nod.yaml, rules.yaml diff --git a/mods/ca/maps/ca01-crossrip/rules.yaml b/mods/ca/maps/ca01-crossrip/rules.yaml index 7be55eceb6..64cd706800 100644 --- a/mods/ca/maps/ca01-crossrip/rules.yaml +++ b/mods/ca/maps/ca01-crossrip/rules.yaml @@ -195,7 +195,7 @@ WORMHOLE: HALO.paradrop: Health: - HP: 90000 + HP: 75000 LST: Health: diff --git a/mods/ca/maps/ca03-deliverance/ca03.lua b/mods/ca/maps/ca03-deliverance/ca03.lua index b3221c6e7a..447fcc9429 100644 --- a/mods/ca/maps/ca03-deliverance/ca03.lua +++ b/mods/ca/maps/ca03-deliverance/ca03.lua @@ -23,13 +23,13 @@ SovietShorePatrolPath = { ShorePatrol1.Location, ShorePatrol2.Location } SovietHindPatrolPath = { NavalEastAssembly.Location, NavalSouthEastAssembly.Location, NavalSouthAssembly.Location, NavalSouthRally.Location, NavalForwardRally.Location, EastAssembly.Location, CentralPatrol3.Location } HaloDropPaths = { - { HaloDrop1Spawn.Location, HaloDrop1Landing.Location }, - { HaloDrop2Spawn.Location, HaloDrop2Landing.Location }, - { HaloDrop3Spawn.Location, HaloDrop3Landing.Location }, - { HaloDrop4Spawn.Location, HaloDrop4Landing.Location }, - { HaloDrop5Spawn.Location, HaloDrop5Landing.Location }, - { HaloDrop6Spawn.Location, HaloDrop6Landing.Location }, - { HaloDrop7Spawn.Location, HaloDrop7Landing.Location } + { HaloSpawn1.Location, HaloDrop1Mid.Location, HaloDrop1Landing.Location }, + { HaloSpawn1.Location, HaloDrop2Landing.Location }, + { HaloSpawn1.Location, HaloDrop1Mid.Location, HaloDrop3Landing.Location }, + { HaloSpawn1.Location, HaloDrop1Mid.Location, HaloDrop4Landing.Location }, + { HaloSpawn2.Location, HaloDrop5Landing.Location }, + { HaloSpawn2.Location, HaloDrop6Landing.Location }, + { HaloSpawn2.Location, HaloDrop6Landing.Location, HaloDrop7Landing.Location } } LateHaloDropPaths = { @@ -492,9 +492,9 @@ end InitUSSR = function() if Difficulty == "easy" then - RebuildExcludes.USSR = { Types = { "tsla", "ftur" } } + RebuildExcludes.USSR = { Types = { "tsla", "ftur" }, Actors = { NorthSAM1, NorthSAM2 } } elseif Difficulty == "normal" then - RebuildExcludes.USSR = { Types = { "tsla" } } + RebuildExcludes.USSR = { Types = { "tsla" }, Actors = { NorthSAM1, NorthSAM2 } } end AutoRepairAndRebuildBuildings(USSR, 15) diff --git a/mods/ca/maps/ca03-deliverance/map.yaml b/mods/ca/maps/ca03-deliverance/map.yaml index dabdb1cdc8..1964d0511a 100644 --- a/mods/ca/maps/ca03-deliverance/map.yaml +++ b/mods/ca/maps/ca03-deliverance/map.yaml @@ -1266,12 +1266,6 @@ Actors: Actor498: apwr Owner: USSR Location: 97,32 - Actor499: tsla - Owner: USSR - Location: 87,37 - Actor500: tsla - Owner: USSR - Location: 87,26 Actor501: ftur Owner: USSR Location: 85,28 @@ -1591,10 +1585,10 @@ Actors: Actor606: sam Owner: USSR Location: 89,37 - Actor607: sam + NorthSAM2: sam Owner: USSR Location: 32,9 - Actor608: sam + NorthSAM1: sam Owner: USSR Location: 32,4 Actor609: tc01 @@ -1936,22 +1930,10 @@ Actors: Owner: USSR Location: 115,74 Facing: 650 - Actor722: btr.ai - Owner: USSR - Facing: 384 - Location: 95,81 - Actor723: btr.ai - Owner: USSR - Facing: 384 - Location: 86,78 Actor724: btr.ai Owner: USSR Facing: 384 Location: 79,68 - Actor725: 3tnk - Owner: USSR - Facing: 384 - Location: 90,79 Actor726: 3tnk Owner: USSR Facing: 384 @@ -2262,11 +2244,6 @@ Actors: Actor836: t01 Owner: Neutral Location: 5,4 - Actor809: e1 - Owner: USSR - Facing: 384 - SubCell: 3 - Location: 91,79 Actor814: e1 Owner: USSR Facing: 384 @@ -2284,9 +2261,9 @@ Actors: Location: 95,82 Actor837: e1 Owner: USSR - Facing: 384 SubCell: 3 Location: 96,81 + Facing: 384 Actor838: e3 Owner: USSR Facing: 384 @@ -2827,15 +2804,6 @@ Actors: Facing: 384 SubCell: 3 Location: 96,51 - Actor883: apwr - Owner: USSR - Location: 125,14 - Actor890: afld - Owner: USSR - Location: 119,15 - Actor950: powr - Owner: USSR - Location: 123,14 Actor951: afld Owner: USSR Location: 118,26 @@ -3346,15 +3314,9 @@ Actors: NorthEastAttackRally: waypoint Owner: Neutral Location: 40,34 - HaloDrop1Spawn: waypoint - Owner: Neutral - Location: 1,30 HaloDrop1Landing: waypoint Owner: Neutral Location: 5,50 - HaloDrop2Spawn: waypoint - Owner: Neutral - Location: 76,1 HaloDrop2Landing: waypoint Owner: Neutral Location: 44,41 @@ -3492,27 +3454,15 @@ Actors: GDIBaseTopRight: waypoint Owner: Neutral Location: 28,43 - HaloDrop4Spawn: waypoint - Owner: Neutral - Location: 20,1 HaloDrop3Landing: waypoint Owner: Neutral Location: 6,40 - HaloDrop3Spawn: waypoint - Owner: Neutral - Location: 1,16 HaloDrop4Landing: waypoint Owner: Neutral Location: 14,33 - HaloDrop5Spawn: waypoint - Owner: Neutral - Location: 74,1 HaloDrop5Landing: waypoint Owner: Neutral Location: 44,50 - HaloDrop6Spawn: waypoint - Owner: Neutral - Location: 1,63 HaloDrop6Landing: waypoint Owner: Neutral Location: 17,70 @@ -3537,9 +3487,6 @@ Actors: LateHaloDrop3Landing: waypoint Owner: Neutral Location: 73,45 - HaloDrop7Spawn: waypoint - Owner: Neutral - Location: 1,78 HaloDrop7Landing: waypoint Owner: Neutral Location: 5,59 @@ -3762,8 +3709,8 @@ Actors: Actor1090: e1 Owner: USSR SubCell: 3 - Facing: 384 Location: 43,41 + Facing: 384 Actor1091: e1 Owner: USSR SubCell: 1 @@ -3792,6 +3739,26 @@ Actors: Actor1092: tc05 Owner: Neutral Location: 40,77 + HaloSpawn1: waypoint + Owner: Neutral + Location: 75,1 + HaloDrop1Mid: waypoint + Owner: Neutral + Location: 14,13 + HaloSpawn2: waypoint + Owner: Neutral + Location: 128,75 + Actor809: e1 + Owner: USSR + SubCell: 3 + Location: 91,79 + Facing: 384 + Actor1095: powr + Owner: USSR + Location: 126,14 + Actor1099: afld + Owner: USSR + Location: 120,15 Rules: ca|rules/custom/campaign-rules.yaml, ca|rules/custom/campaign-tooltips.yaml, ca|rules/custom/two-tone-nod.yaml, rules.yaml diff --git a/mods/ca/maps/ca04-containment/map.yaml b/mods/ca/maps/ca04-containment/map.yaml index 947a772f3b..c820659c77 100644 --- a/mods/ca/maps/ca04-containment/map.yaml +++ b/mods/ca/maps/ca04-containment/map.yaml @@ -1048,15 +1048,6 @@ Actors: Actor583: fenc Owner: USSR Location: 91,48 - Actor584: sam - Owner: USSR - Location: 92,39 - Actor585: sam - Owner: USSR - Location: 101,39 - Actor586: sam - Owner: USSR - Location: 101,50 Actor587: brik Owner: USSR Location: 64,20 @@ -1535,21 +1526,12 @@ Actors: SouthKennel: kenn Owner: USSR Location: 91,70 - Actor780: sam - Owner: USSR - Location: 105,68 - Actor781: sam - Owner: USSR - Location: 91,78 NorthTesla5: tsla Owner: USSR Location: 65,18 NorthTesla6: tsla Owner: USSR Location: 65,10 - Actor784: sam - Owner: USSR - Location: 67,10 Actor787: ftur Owner: USSR Location: 63,16 @@ -1955,12 +1937,6 @@ Actors: Actor657: fenc Owner: USSR Location: 60,35 - Actor658: sam - Owner: USSR - Location: 67,19 - Actor786: sam - Owner: USSR - Location: 73,7 Actor785: silo Owner: USSR Location: 79,14 diff --git a/mods/ca/maps/ca05-machinations/rules.yaml b/mods/ca/maps/ca05-machinations/rules.yaml index 073d126a3d..35f6df5793 100644 --- a/mods/ca/maps/ca05-machinations/rules.yaml +++ b/mods/ca/maps/ca05-machinations/rules.yaml @@ -61,6 +61,9 @@ BIO: Health: HP: 200000 +TTRK: + -Buildable: + TMPL: Inherits@CAMPAIGNDISABLED: ^Disabled -NukePower@Cluster: diff --git a/mods/ca/maps/ca06-conspiracy/ca06.lua b/mods/ca/maps/ca06-conspiracy/ca06.lua index 67c7a90193..2b2527ea25 100644 --- a/mods/ca/maps/ca06-conspiracy/ca06.lua +++ b/mods/ca/maps/ca06-conspiracy/ca06.lua @@ -6,17 +6,11 @@ GDIDefenders = { GDIDefender1, GDIDefender2, GDIDefender3, GDIDefender4, GDIDefe ChinookDropPaths = { { ChinookDrop1Spawn.Location, ChinookDrop1Landing.Location }, - { ChinookDrop2Spawn.Location, ChinookDrop2Landing.Location }, + { ChinookDrop2Spawn.Location, ChinookDrop2Mid.Location, ChinookDrop2Landing.Location }, { ChinookDrop3Spawn.Location, ChinookDrop3Landing.Location }, { ChinookDrop4Spawn.Location, ChinookDrop4Landing.Location } } -CarryallDropPaths = { - { GDIDropSpawn.Location, GDIDrop1.Location }, - { GDIDropSpawn.Location, GDIDrop2.Location }, - { GDIDropSpawn.Location, GDIDrop3.Location }, -} - GDIReinforcementPath = { GDIReinforceSpawn.Location, GDIReinforceRally.Location } GreeceSouthAttackPaths = { diff --git a/mods/ca/maps/ca06-conspiracy/map.yaml b/mods/ca/maps/ca06-conspiracy/map.yaml index 57938bbb8b..6b49b71c09 100644 --- a/mods/ca/maps/ca06-conspiracy/map.yaml +++ b/mods/ca/maps/ca06-conspiracy/map.yaml @@ -3556,36 +3556,15 @@ Actors: ChinookDrop4Landing: waypoint Owner: Neutral Location: 19,30 - GDIDrop2: waypoint - Owner: Neutral - Location: 19,52 - GDIDrop1: waypoint - Owner: Neutral - Location: 30,50 - GDIDrop3: waypoint - Owner: Neutral - Location: 5,57 GDIReinforceSpawn: waypoint Owner: Neutral Location: 1,23 GDIReinforceRally: waypoint Owner: Neutral Location: 8,23 - GDIDropSpawn: waypoint - Owner: Neutral - Location: 1,48 - ChinookDrop1Spawn: waypoint - Owner: Neutral - Location: 60,96 ChinookDrop3Spawn: waypoint Owner: Neutral Location: 46,1 - ChinookDrop4Spawn: waypoint - Owner: Neutral - Location: 1,17 - ChinookDrop2Spawn: waypoint - Owner: Neutral - Location: 1,85 AlliedPatrol1: waypoint Owner: Neutral Location: 36,82 @@ -3660,8 +3639,8 @@ Actors: Actor1136: n1 Owner: GDI SubCell: 3 - Facing: 1007 Location: 6,54 + Facing: 1007 Actor1137: mtnk Owner: Legion Location: 7,58 @@ -3921,6 +3900,18 @@ Actors: EntranceReveal6: waypoint Owner: Neutral Location: 59,25 + ChinookDrop2Spawn: waypoint + Owner: Neutral + Location: 96,87 + ChinookDrop2Mid: waypoint + Owner: Neutral + Location: 20,92 + ChinookDrop4Spawn: waypoint + Owner: Neutral + Location: 71,1 + ChinookDrop1Spawn: waypoint + Owner: Neutral + Location: 96,72 Rules: ca|rules/custom/campaign-rules.yaml, ca|rules/custom/campaign-tooltips.yaml, ca|rules/custom/two-tone-nod.yaml, rules.yaml diff --git a/mods/ca/maps/ca07-subversion/ca07.lua b/mods/ca/maps/ca07-subversion/ca07.lua index 7172e4ed32..2626fd9935 100644 --- a/mods/ca/maps/ca07-subversion/ca07.lua +++ b/mods/ca/maps/ca07-subversion/ca07.lua @@ -73,7 +73,12 @@ WorldLoaded = function() end) Trigger.OnAllKilled(AlliedKeyBuildings, function() - Nod.MarkCompletedObjective(ObjectiveDestroyAlliedBase) + if not Nod.IsObjectiveCompleted(ObjectiveHackIonControl) then + Nod.MarkCompletedObjective(ObjectiveHackIonControl) + end + if ObjectiveDestroyAlliedBase ~= nil then + Nod.MarkCompletedObjective(ObjectiveDestroyAlliedBase) + end end) Trigger.OnAllKilled({ Hacker1, Hacker2 }, function() diff --git a/mods/ca/maps/ca10-awakening/rules.yaml b/mods/ca/maps/ca10-awakening/rules.yaml index a929707c9a..9bd08316d3 100644 --- a/mods/ca/maps/ca10-awakening/rules.yaml +++ b/mods/ca/maps/ca10-awakening/rules.yaml @@ -124,6 +124,9 @@ BIO: Produces: Cyborg RallyPoint: +TTRK: + -Buildable: + TMPP: UnitConverter: RequiresCondition: awakening-complete diff --git a/mods/ca/maps/ca11-abasement/rules.yaml b/mods/ca/maps/ca11-abasement/rules.yaml index 57a2ffcb50..6ba21939da 100644 --- a/mods/ca/maps/ca11-abasement/rules.yaml +++ b/mods/ca/maps/ca11-abasement/rules.yaml @@ -74,6 +74,15 @@ TPWR: MSHP: Inherits@CAMPAIGNDISABLED: ^Disabled +TMPL: + Inherits@CAMPAIGNDISABLED: ^Disabled + +TMPP: + Inherits@CAMPAIGNDISABLED: ^Disabled + +SGEN: + Inherits@CAMPAIGNDISABLED: ^Disabled + APWR: Buildable: Prerequisites: ~structures.ra, anyradar diff --git a/mods/ca/maps/ca17-encroachment/rules.yaml b/mods/ca/maps/ca17-encroachment/rules.yaml index 2631609fad..9857f84d70 100644 --- a/mods/ca/maps/ca17-encroachment/rules.yaml +++ b/mods/ca/maps/ca17-encroachment/rules.yaml @@ -68,7 +68,7 @@ Player: TPOD: Buildable: - Prerequisites: techcenter, ~vehicles.scrin + Prerequisites: scrt, ~vehicles.scrin ENRV: Buildable: diff --git a/mods/ca/maps/ca20-subjugation/rules.yaml b/mods/ca/maps/ca20-subjugation/rules.yaml index 447720a39b..eb3c0a5367 100644 --- a/mods/ca/maps/ca20-subjugation/rules.yaml +++ b/mods/ca/maps/ca20-subjugation/rules.yaml @@ -200,6 +200,10 @@ BIO: -ProvidesPrerequisite@mortar: -ProvidesPrerequisite@toxintruck: +TTRK: + Buildable: + Prerequisites: bio + DOME: -AirstrikePower@spyplane: diff --git a/mods/ca/maps/ca29-purification/rules.yaml b/mods/ca/maps/ca29-purification/rules.yaml index 75e79fecd4..a66fa70aea 100644 --- a/mods/ca/maps/ca29-purification/rules.yaml +++ b/mods/ca/maps/ca29-purification/rules.yaml @@ -96,6 +96,14 @@ WEAP.TD: -ProvidesPrerequisiteValidatedFaction@mtnk: -ProvidesPrerequisite@apc2: +MTNK: + Buildable: + Prerequisites: ~!bdrone.upgrade, ~vehicles.gdi + +MTNK.Drone: + Buildable: + Prerequisites: ~bdrone.upgrade, ~vehicles.gdi + blacknapalm.upgrade: Buildable: Prerequisites: tmpl diff --git a/mods/ca/maps/ca30-reckoning/rules.yaml b/mods/ca/maps/ca30-reckoning/rules.yaml index 568cef6552..e12e683906 100644 --- a/mods/ca/maps/ca30-reckoning/rules.yaml +++ b/mods/ca/maps/ca30-reckoning/rules.yaml @@ -135,6 +135,14 @@ WEAP.TD: -ProvidesPrerequisiteValidatedFaction@mtnk: -ProvidesPrerequisite@apc2: +MTNK: + Buildable: + Prerequisites: ~!bdrone.upgrade, ~vehicles.gdi + +MTNK.Drone: + Buildable: + Prerequisites: ~bdrone.upgrade, ~vehicles.gdi + blacknapalm.upgrade: Buildable: Prerequisites: tmpl diff --git a/mods/ca/rules/aircraft.yaml b/mods/ca/rules/aircraft.yaml index bcb6134a3e..2488250afe 100644 --- a/mods/ca/rules/aircraft.yaml +++ b/mods/ca/rules/aircraft.yaml @@ -268,9 +268,9 @@ MIG: Bounds: 1536, 1194, 0, 85 DecorationBounds: 1706, 1237, 0, 42 Contrail@1: - Offset: -598,-683,0 + Offset: -598,-683,-20 Contrail@2: - Offset: -598,683,0 + Offset: -598,683,-20 Contrail@AB1: Offset: -400,-50,-20 StartColorUsePlayerColor: false @@ -387,9 +387,9 @@ SUK: Margin: 4, 3 RequiresSelection: true Contrail@1: - Offset: -598,-683,-40 + Offset: -600,-550,-80 Contrail@2: - Offset: -598,683,-40 + Offset: -600,550,-80 Contrail@AB1: Offset: -400,-70,-20 StartColorUsePlayerColor: false @@ -561,9 +561,9 @@ YAK: Rearmable: RearmActors: afld, afld.gdi Contrail@1: - Offset: -98,-683,-10 + Offset: 0,-683,-30 Contrail@2: - Offset: -98,683,-10 + Offset: 0,683,-30 GrantConditionOnDamageState@SmokeTrail: Condition: enable-smoke @@ -1129,7 +1129,7 @@ HIND: BuildAtProductionType: Helicopter BuildPaletteOrder: 20 Prerequisites: afld, ~aircraft.soviet, ~techlevel.medium - Description: Helicopter gunship armed with\n a chaingun and anti-tank rockets. + Description: Durable helicopter gunship armed with\n a chaingun and anti-tank rockets. TooltipExtras: Strengths: • Strong vs Infantry, Heavy Armor, Light Armor Weaknesses: • Weak vs Defenses\n• Cannot attack Aircraft @@ -1470,9 +1470,9 @@ A10: Bounds: 1536, 1194, 0, 85 DecorationBounds: 1706, 1237, 0, 42 Contrail@1: - Offset: -258,-823,0 + Offset: -228,-850,-50 Contrail@2: - Offset: -258,823,0 + Offset: -228,850,-50 SpawnActorOnDeath: Actor: A10.Husk RequiresCondition: airborne && ammo && !empdisable && !being-warped @@ -1673,25 +1673,25 @@ C17: TrailLength: 15 StartColorUsePlayerColor: false StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 Contrail@2: Offset: -85,-384,0 TrailLength: 16 StartColorUsePlayerColor: false StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 Contrail@3: Offset: -85,384,0 TrailLength: 16 StartColorUsePlayerColor: false StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 Contrail@4: Offset: -261,650,0 TrailLength: 15 StartColorUsePlayerColor: false StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 SpawnActorOnDeath: Actor: C17.Husk RequiresCondition: !empdisable @@ -2689,7 +2689,7 @@ OCAR: TrailLength: 15 StartColorUsePlayerColor: false StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 Contrail@2: Offset: -885,-184,0 TrailLength: 16 @@ -2709,7 +2709,7 @@ OCAR: TrailLength: 15 StartColorUsePlayerColor: false StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 GrantConditionOnDamageState@SmokeTrail: Condition: enable-smoke @@ -2894,15 +2894,17 @@ HARR: Margin: 4, 3 RequiresSelection: true Contrail@1: - Offset: -400,-443,0 + Offset: -320,-500,0 StartColorUsePlayerColor: false ZOffset: -512 - StartColor: FFFFFF80 + StartColor: FFFFFF + StartColorAlpha: 140 Contrail@2: - Offset: -400,443,0 + Offset: -320,500,0 StartColorUsePlayerColor: false ZOffset: -512 - StartColor: FFFFFF80 + StartColor: FFFFFF + StartColorAlpha: 140 SpawnActorOnDeath: Actor: HARR.Husk RequiresCondition: airborne && ammo && !empdisable && !being-warped @@ -2989,7 +2991,7 @@ SCRN: Aircraft: CruiseAltitude: 2560 TurnSpeed: 20 - Speed: 225 + Speed: 216 IdleSpeed: 135 IdleTurnSpeed: 15 RepulsionSpeed: 40 @@ -3497,9 +3499,9 @@ AURO: StartColorAlpha: 128 TrailLength: 10 Contrail@1: - Offset: -300,-800,-50 + Offset: -400,-800,-50 Contrail@2: - Offset: -300,800,-50 + Offset: -400,800,-50 SpawnActorOnDeath: Actor: AURO.Husk RequiresCondition: airborne && ammo && !empdisable && !being-warped @@ -3539,3 +3541,715 @@ AURO: -ReloadDelayMultiplier@BOMBARD3: GrantConditionOnDamageState@SmokeTrail: Condition: enable-smoke + +PMAK: + Inherits: ^Helicopter + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Buildable: + Queue: AircraftSQ, AircraftMQ + BuildAtProductionType: Helicopter + BuildPaletteOrder: 111 + Prerequisites: atek, ~aircraft.allies, ~techlevel.high + Description: Heavy bomber with powerful armor penetrating bombs. + TooltipExtras: + Strengths: • Strong vs Heavy Armor, Defenses, Light Armor + Weaknesses: • Weak vs Infantry\n • Cannot attack Aircraft + Valued: + Cost: 2200 + Tooltip: + Name: Peacemaker + GenericName: Aircraft + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 40000 + RevealsShroud: + Range: 12c0 + MinRange: 10c0 + Type: GroundPosition + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 10c0 + Type: GroundPosition + Armament@PRIMARY: + Weapon: PeacemakerBombs + LocalOffset: 0,0,-85 + PauseOnCondition: !ammo + AttackAircraft: + FacingTolerance: 512 + PersistentTargeting: false + OpportunityFire: true + PauseOnCondition: empdisable || being-warped + Aircraft: + CruiseAltitude: 2560 + TurnSpeed: 16 + Speed: 157 + RepulsionSpeed: 40 + MaximumPitch: 56 + CanHover: False + TakeoffSounds: mtoff1.aud, mtoff2.aud + LandingSounds: mland1.aud, mland2.aud + CanSlide: False + AltitudeVelocity: 0c200 + AutoTarget: + InitialStance: HoldFire + InitialStanceAI: AttackAnything + AmmoPool: + Ammo: 5 + ReloadDelay: 36 + AmmoCondition: ammo + WithAmmoPipsDecoration: + Position: BottomLeft + Margin: 4, 3 + RequiresSelection: true + Contrail@1: + Offset: -300,-920,170 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF + StartColorAlpha: 96 + Contrail@2: + Offset: -300,920,170 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF + StartColorAlpha: 96 + Contrail@3: + Offset: -300,-440,0 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF + StartColorAlpha: 72 + Contrail@4: + Offset: -300,440,0 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF + StartColorAlpha: 72 + SpawnActorOnDeath: + Actor: PMAK.Husk + RequiresCondition: airborne && ammo && !empdisable && !being-warped + SpawnActorOnDeath@Empty: + Actor: PMAK.Husk.empty + RequiresCondition: airborne && !ammo && !empdisable && !being-warped + SpawnActorOnDeath@EMP: + Actor: PMAK.Husk.EMP + RequiresCondition: airborne && ammo && empdisable && !being-warped + SpawnActorOnDeath@EmptyEMP: + Actor: PMAK.Husk.empty.EMP + RequiresCondition: airborne && !ammo && empdisable && !being-warped + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RequiresCondition: enable-smoke + Selectable: + DecorationBounds: 2048, 1536 + ProducibleWithLevel: + Prerequisites: aircraft.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: aircraft.upgraded + Rearmable: + RearmActors: hpad, hpad.td, afld, afld.gdi, grav + GrantConditionOnDamageState@SmokeTrail: + Condition: enable-smoke + GpsRadarDot: + Sequence: Plane + RangeMultiplier@BOMBING: + Modifier: 600 + RequiresCondition: bombing-run + GrantConditionOnAttack@BOMBING: + Condition: bombing-run + RevokeDelay: 7 + +BEAG: + Inherits: ^Helicopter + Inherits@AUTOTARGET: ^AutoTargetAllAssaultMove + Buildable: + Queue: AircraftSQ, AircraftMQ + BuildAtProductionType: Helicopter + BuildPaletteOrder: 200 + Prerequisites: anyradar, ~aircraft.beag + Description: Attack aircraft with range and vision reducing missiles. + TooltipExtras: + Strengths: • Strong vs Heavy Armor, Light Armor, Aircraft + Weaknesses: • Weak vs Infantry, Buildings + Attributes: • Reduces range and vision of targets + Valued: + Cost: 1600 + Tooltip: + Name: Black Eagle + GenericName: Aircraft + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 18000 + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + Armament@PRIMARY: + Weapon: BlackEagleMissiles + LocalOffset: 150,0,-85 + PauseOnCondition: !ammo + Armament@SECONDARY: + Weapon: BlackEagleMissilesAA + LocalOffset: 150,0,-85 + PauseOnCondition: !ammo + AttackAircraft: + FacingTolerance: 80 + PersistentTargeting: false + OpportunityFire: true + PauseOnCondition: empdisable || being-warped + Aircraft: + CruiseAltitude: 2560 + TurnSpeed: 16 + Speed: 201 + RepulsionSpeed: 40 + MaximumPitch: 56 + CanHover: False + TakeoffSounds: mtoff1.aud, mtoff2.aud + LandingSounds: mland1.aud, mland2.aud + CanSlide: False + AltitudeVelocity: 0c200 + AutoTarget: + InitialStance: HoldFire + InitialStanceAI: AttackAnything + AmmoPool: + Ammo: 2 + AmmoCondition: ammo + ReloadDelay: 70 + WithAmmoPipsDecoration: + Position: BottomLeft + Margin: 4, 3 + RequiresSelection: true + Contrail@1: + Offset: -50,-650,20 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF80 + StartColorAlpha: 96 + Contrail@2: + Offset: -50,650,20 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF80 + StartColorAlpha: 96 + SpawnActorOnDeath: + Actor: BEAG.Husk + RequiresCondition: airborne && ammo && !empdisable && !being-warped + SpawnActorOnDeath@Empty: + Actor: BEAG.Husk.empty + RequiresCondition: airborne && !ammo && !empdisable && !being-warped + SpawnActorOnDeath@EMP: + Actor: BEAG.Husk.EMP + RequiresCondition: airborne && ammo && empdisable && !being-warped + SpawnActorOnDeath@EmptyEMP: + Actor: BEAG.Husk.empty.EMP + RequiresCondition: airborne && !ammo && empdisable && !being-warped + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RequiresCondition: enable-smoke + Selectable: + DecorationBounds: 1536, 1194 + ProducibleWithLevel: + Prerequisites: aircraft.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: aircraft.upgraded + Rearmable: + RearmActors: hpad, hpad.td, afld, afld.gdi, grav + GrantConditionOnDamageState@SmokeTrail: + Condition: enable-smoke + GpsRadarDot: + Sequence: Plane + +ACHO: + Inherits: ^Helicopter + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Buildable: + Queue: AircraftSQ, AircraftMQ + BuildAtProductionType: Helicopter + BuildPaletteOrder: 201 + Prerequisites: ~aircraft.acho + Description: Durable helicopter gunship armed with\n a chaingun and anti-tank rockets. + TooltipExtras: + Strengths: • Strong vs Infantry, Heavy Armor, Light Armor + Weaknesses: • Weak vs Defenses\n• Cannot attack Aircraft + Valued: + Cost: 1800 + Tooltip: + Name: Assault Chopper + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 38500 + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + Armament@PRIMARY: + Weapon: ChainGun + LocalOffset: 500,0,-250 + MuzzleSequence: muzzle + PauseOnCondition: !ammo + Armament@SECONDARY: + Name: secondary + Weapon: HindRockets + LocalOffset: 85,-213,-185, 85,213,-185 + PauseOnCondition: !ammo2 + RequiresCondition: ammo + Armament@SECONDARYANYTARGET: + Name: secondary + Weapon: HindRockets.AnyTarget + LocalOffset: 85,-213,-185, 85,213,-185 + PauseOnCondition: !ammo2 + RequiresCondition: !ammo + AttackAircraft: + FacingTolerance: 80 + AttackType: Hover + PersistentTargeting: false + OpportunityFire: false + PauseOnCondition: empdisable || being-warped + Aircraft: + TurnSpeed: 16 + Speed: 112 + TakeoffSounds: htoff1.aud + LandingSounds: hland1.aud + AutoTarget: + InitialStance: HoldFire + InitialStanceAI: AttackAnything + WithIdleOverlay@ROTORAIR: + Sequence: rotor + PauseOnCondition: being-warped + RequiresCondition: airborne + Offset: 50,550,192 + WithIdleOverlay@ROTORAIR2: + Sequence: rotor + PauseOnCondition: being-warped + RequiresCondition: airborne + Offset: 50,-550,192 + WithIdleOverlay@ROTORGROUND: + Sequence: slow-rotor + PauseOnCondition: being-warped + RequiresCondition: !airborne + Offset: 50,550,192 + WithIdleOverlay@ROTORGROUND2: + Sequence: slow-rotor + PauseOnCondition: being-warped + RequiresCondition: !airborne + Offset: 50,-550,192 + AmmoPool@PRIMARY: + Name: primary + Ammo: 10 + ReloadDelay: 14 + AmmoCondition: ammo + Armaments: primary + AmmoPool@SECONDARY: + Name: secondary + Ammo: 12 + ReloadDelay: 12 + AmmoCondition: ammo2 + Armaments: secondary + WithAmmoPipsDecoration@PRIMARY: + Position: BottomLeft + Margin: 4, 3 + RequiresSelection: true + AmmoPools: primary + PipCount: 5 + WithAmmoPipsDecoration@SECONDARY: + Position: BottomLeft + Margin: 4, 7 + RequiresSelection: true + AmmoPools: secondary + FullSequence: pip-red + PipCount: 6 + WithMuzzleOverlay: + SpawnActorOnDeath: + Actor: ACHO.Husk + RequiresCondition: ammo && !empdisable && !being-warped + SpawnActorOnDeath@Empty: + Actor: ACHO.Husk.empty + RequiresCondition: !ammo && !empdisable && !being-warped + SpawnActorOnDeath@EMP: + Actor: ACHO.Husk.EMP + RequiresCondition: ammo && empdisable && !being-warped + SpawnActorOnDeath@EmptyEMP: + Actor: ACHO.Husk.empty.EMP + RequiresCondition: !ammo && empdisable && !being-warped + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RequiresCondition: enable-smoke + ProducibleWithLevel: + Prerequisites: aircraft.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: aircraft.upgraded + Selectable: + DecorationBounds: 1621, 1365 + Rearmable: + AmmoPools: primary, secondary + RearmActors: hpad, hpad.td, afld, afld.gdi, grav + GrantConditionOnDamageState@SmokeTrail: + Condition: enable-smoke + +SHDE: + Inherits: ^HelicopterTD + Inherits@AUTOTARGET: ^AutoTargetAllAssaultMove + Buildable: + Queue: AircraftSQ, AircraftMQ + BuildAtProductionType: Helicopter + BuildPaletteOrder: 202 + IconPalette: chrometd + Prerequisites: anyradar, ~aircraft.shde + Description: Fast VTOL ground attack aircraft armed\n with EMP weaponry. + TooltipExtras: + Strengths: • Strong vs Heavy Armor, Light Armor, Defenses + Weaknesses: • Weak vs Infantry, Buildings\n • Cannot attack Aircraft + Valued: + Cost: 1800 + Tooltip: + Name: Shade + GenericName: Aircraft + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 18000 + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + Armament@PRIMARY: + Weapon: ShadeEmp + LocalOffset: 0,0,-85 + PauseOnCondition: !ammo + AttackAircraft: + FacingTolerance: 80 + Voice: Attack + PersistentTargeting: false + OpportunityFire: true + PauseOnCondition: empdisable || being-warped + Aircraft: + CruiseAltitude: 2560 + TurnSpeed: 20 + Speed: 225 + IdleSpeed: 135 + IdleTurnSpeed: 15 + RepulsionSpeed: 40 + MaximumPitch: 56 + CanHover: False + TakeoffSounds: dropup1.aud + LandingSounds: dropdwn1.aud + Voice: Move + CanSlide: False + AltitudeVelocity: 0c200 + AutoTarget: + InitialStance: HoldFire + InitialStanceAI: AttackAnything + AmmoPool: + Ammo: 2 + ReloadDelay: 70 + AmmoCondition: ammo + WithAmmoPipsDecoration: + Position: BottomLeft + Margin: 4, 3 + RequiresSelection: true + Contrail@1: + Offset: -380,-850,-20 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF80 + StartColorAlpha: 96 + Contrail@2: + Offset: -380,850,-20 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF80 + StartColorAlpha: 96 + Contrail@Inner1: + Offset: -300,-128,80 + StartColorUsePlayerColor: false + StartColor: FF0000 + StartColorAlpha: 128 + ZOffset: -512 + Contrail@Inner2: + Offset: -300,128,80 + StartColorUsePlayerColor: false + StartColor: FF0000 + StartColorAlpha: 128 + ZOffset: -512 + SpawnActorOnDeath: + Actor: SHDE.Husk + RequiresCondition: airborne && ammo && !empdisable && !being-warped + SpawnActorOnDeath@Empty: + Actor: SHDE.Husk.empty + RequiresCondition: airborne && !ammo && !empdisable && !being-warped + SpawnActorOnDeath@EMP: + Actor: SHDE.Husk.EMP + RequiresCondition: airborne && ammo && empdisable && !being-warped + SpawnActorOnDeath@EmptyEMP: + Actor: SHDE.Husk.empty.EMP + RequiresCondition: airborne && !ammo && empdisable && !being-warped + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RequiresCondition: enable-smoke + Selectable: + DecorationBounds: 1536, 1194 + Voiced: + VoiceSet: ScrinVoice + ProducibleWithLevel: + Prerequisites: aircraft.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: aircraft.upgraded + Rearmable: + RearmActors: hpad, hpad.td, afld, afld.gdi, grav + ProductionCostMultiplier@markedBonus: + Multiplier: 90 + Prerequisites: player.marked + GrantConditionOnDamageState@SmokeTrail: + Condition: enable-smoke + GpsRadarDot: + Sequence: Plane + +VERT: + Inherits: ^HelicopterTD + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Buildable: + Queue: AircraftSQ, AircraftMQ + BuildAtProductionType: Helicopter + BuildPaletteOrder: 203 + IconPalette: chrometd + Prerequisites: anyradar, ~aircraft.vert + Description: Stealth bomber loaded with a single powerful bomb. + TooltipExtras: + Strengths: • Strong vs Defenses, Heavy Armor, Light Armor, Infantry + Weaknesses: • Cannot attack Aircraft + Valued: + Cost: 2000 + Tooltip: + Name: Vertigo + GenericName: Aircraft + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 20000 + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + Armament@PRIMARY: + Weapon: VertigoBomb + LocalOffset: 2,0,-43 + PauseOnCondition: !ammo + AttackAircraft: + FacingTolerance: 80 + PersistentTargeting: false + OpportunityFire: true + PauseOnCondition: empdisable || being-warped + Aircraft: + CruiseAltitude: 2560 + TurnSpeed: 16 + Speed: 157 + IdleSpeed: 135 + RepulsionSpeed: 40 + CanHover: False + TakeoffSounds: dropup1.aud + LandingSounds: dropdwn1.aud + CanSlide: False + AltitudeVelocity: 0c200 + AutoTarget: + InitialStance: HoldFire + InitialStanceAI: AttackAnything + AmmoPool: + Ammo: 1 + ReloadDelay: 180 + AmmoCondition: ammo + WithAmmoPipsDecoration: + Position: BottomLeft + Margin: 4, 3 + RequiresSelection: true + Contrail@1: + Offset: -100,-850,25 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF80 + StartColorAlpha: 96 + Contrail@2: + Offset: -100,850,25 + StartColorUsePlayerColor: false + ZOffset: -512 + StartColor: FFFFFF80 + StartColorAlpha: 96 + SpawnActorOnDeath: + Actor: VERT.Husk + RequiresCondition: airborne && ammo && !empdisable && !being-warped + SpawnActorOnDeath@Empty: + Actor: VERT.Husk.empty + RequiresCondition: airborne && !ammo && !empdisable && !being-warped + SpawnActorOnDeath@EMP: + Actor: VERT.Husk.EMP + RequiresCondition: airborne && ammo && empdisable && !being-warped + SpawnActorOnDeath@EmptyEMP: + Actor: VERT.Husk.empty.EMP + RequiresCondition: airborne && !ammo && empdisable && !being-warped + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RequiresCondition: enable-smoke + Selectable: + DecorationBounds: 1536, 1536 + ProducibleWithLevel: + Prerequisites: aircraft.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: aircraft.upgraded + Rearmable: + RearmActors: hpad, hpad.td, afld, afld.gdi, grav + GrantConditionOnDamageState@SmokeTrail: + Condition: enable-smoke + GpsRadarDot: + Sequence: Plane + WithColoredSelectionBox@INVIS: + RequiresCondition: invisibility || hidden + ColorSource: Player + WithShadow: + RequiresCondition: !invisibility && !hidden + WithShadow@CLOAKED: + ShadowColor: 00000033 + RequiresCondition: invisibility || hidden + Cloak: + DetectionTypes: AirCloak + InitialDelay: 100 + CloakDelay: 200 + CloakSound: trans1.aud + UncloakSound: appear1md.aud + Palette: cloak + IsPlayerPalette: false + UncloakOn: Attack, Dock, Damage, Heal + CloakedCondition: hidden + RequiresCondition: !cloak-force-disabled && airborne && !being-warped + PauseOnCondition: invisibility + GrantConditionOnDamageState@UNCLOAK: + Condition: cloak-force-disabled + ValidDamageStates: Critical + +MCOR: + Inherits: ^HelicopterTD + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Valued: + Cost: 2000 + Tooltip: + Name: Manticore + UpdatesPlayerStatistics: + AddToArmyValue: true + Buildable: + Queue: AircraftSQ, AircraftMQ + BuildAtProductionType: Helicopter + BuildPaletteOrder: 204 + Prerequisites: anyradar, ~stolentech.grav + IconPalette: chrometd + Description: Long ranged aircraft with dual plasma cannons. + TooltipExtras: + Strengths: • Strong vs Infantry, Light Armor, Aircraft + Weaknesses: • Weak vs Defenses + Aircraft: + CruiseAltitude: 2560 + AltitudeVelocity: 0c100 + TurnSpeed: 16 + TakeoffSounds: dropup1.aud + LandingSounds: dropdwn1.aud + Speed: 100 + Health: + HP: 26000 + RevealsShroud: + Range: 10c0 + MinRange: 8c0 + Type: GroundPosition + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 8c0 + Type: GroundPosition + Armament@PRIMARY: + Weapon: ManticoreBolts + LocalOffset: 550,-420,20, 550,420,20 + MuzzleSequence: muzzle + MuzzlePalette: caneon + WithMuzzleOverlay: + AttackAircraft: + FacingTolerance: 20 + AttackType: Hover + PersistentTargeting: false + OpportunityFire: false + PauseOnCondition: empdisable || being-warped + SpawnActorOnDeath: + Actor: MCOR.Husk + RequiresCondition: airborne && !empdisable && !being-warped + SpawnActorOnDeath@EMP: + Actor: MCOR.Husk.EMP + RequiresCondition: airborne && empdisable && !being-warped + AutoTarget: + InitialStance: HoldFire + InitialStanceAI: AttackAnything + LeavesTrails: + Offsets: -427,0,0 + MovingInterval: 2 + Image: smokey + StationaryInterval: 2 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RequiresCondition: enable-smoke + Selectable: + DecorationBounds: 1792, 1536 + ProducibleWithLevel: + Prerequisites: aircraft.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: aircraft.upgraded + GrantConditionOnDamageState@SmokeTrail: + Condition: enable-smoke diff --git a/mods/ca/rules/custom/composition-tester.yaml b/mods/ca/rules/custom/composition-tester.yaml index f13cc3e850..140e980416 100644 --- a/mods/ca/rules/custom/composition-tester.yaml +++ b/mods/ca/rules/custom/composition-tester.yaml @@ -1062,6 +1062,10 @@ tibcore.upgrade: Buildable: Prerequisites: ~player.nod +decoy.upgrade: + Buildable: + Prerequisites: ~player.nod + blacknapalm.upgrade: Buildable: Prerequisites: ~player.nod @@ -1140,6 +1144,10 @@ cryr.upgrade: Buildable: Prerequisites: ~player.allies +optics.upgrade: + Buildable: + Prerequisites: ~player.allies + pcan.upgrade: Buildable: Prerequisites: ~disabled diff --git a/mods/ca/rules/defaults.yaml b/mods/ca/rules/defaults.yaml index 1d5bc0e61f..b9ca05a1f3 100644 --- a/mods/ca/rules/defaults.yaml +++ b/mods/ca/rules/defaults.yaml @@ -1582,6 +1582,25 @@ Delay: 20 RequiresCondition: hacked && !restoring +^TechLockable: + InfiltrateForTimedCondition@TechLock: + Condition: tech-locked + Duration: 1500 + Types: TechLockInfiltrate + InfiltrationNotification: BuildingInfiltrated + InfiltratedNotification: BaseAttack + ShowSelectionBar: true + WithDecoration@TechLock: + Image: hacked + Sequence: techlocked + RequiresCondition: tech-locked && !hacked + Position: Center + Palette: effect + ValidRelationships: Ally, Neutral, Enemy + Targetable@TechLock: + RequiresCondition: !being-warped + TargetTypes: TechLockInfiltrate + ^GeneticallyMutatable: ExternalCondition@GMUT: Condition: geneticmutation @@ -2597,12 +2616,12 @@ StartColorUsePlayerColor: false ZOffset: -512 StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 Contrail@2: StartColorUsePlayerColor: false ZOffset: -512 StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 GpsRadarDot: Sequence: Plane @@ -2616,6 +2635,7 @@ Inherits@9: ^BotAirProductionBonus Inherits@10: ^Chillable Inherits@11: ^Suppressable + Inherits@12: ^Veilable Inherits@CRATE-CLOAK: ^CrateCloak Inherits@gflash: ^GreenFlash Inherits@rflash: ^RedFlash @@ -3394,12 +3414,12 @@ StartColorUsePlayerColor: false ZOffset: -512 StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 Contrail@2: StartColorUsePlayerColor: false ZOffset: -512 StartColor: FFFFFF80 - StartColorAlpha: 128 + StartColorAlpha: 96 ^PlaneHuskTD: Inherits: ^PlaneHusk diff --git a/mods/ca/rules/husks.yaml b/mods/ca/rules/husks.yaml index 141be3bf1b..dcb837c481 100644 --- a/mods/ca/rules/husks.yaml +++ b/mods/ca/rules/husks.yaml @@ -466,12 +466,12 @@ HIND.Husk: TrailWhileStationary: True Type: CenterPosition RevealsShroud: - Range: 10c0 - MinRange: 8c0 + Range: 11c0 + MinRange: 9c0 Type: GroundPosition RevealGeneratedShroud: false RevealsShroud@GAPGEN: - Range: 8c0 + Range: 9c0 Type: GroundPosition RenderSprites: Image: hind @@ -1727,3 +1727,234 @@ APOC.Husk: Anim: turret RenderSprites: Image: apoc.destroyed + +PMAK.Husk: + Inherits: ^PlaneHusk + Tooltip: + Name: Peacemaker + Aircraft: + TurnSpeed: 7 + Speed: 157 + Contrail@1: + Offset: -300,-920,170 + Contrail@2: + Offset: -300,920,170 + LeavesTrails: + Offsets: -1c43,0,0 + MovingInterval: 2 + Image: smokey + StationaryInterval: 2 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RenderSprites: + Image: pmak + +PMAK.Husk.EMP: + Inherits: PMAK.Husk + Inherits: ^EmpVisualEffect + +PMAK.Husk.Empty: + Inherits: PMAK.Husk + Inherits: ^PlaneHuskEmpty + +PMAK.Husk.Empty.EMP: + Inherits: PMAK.Husk.Empty + Inherits: ^EmpVisualEffect + +BEAG.Husk: + Inherits: ^PlaneHusk + Tooltip: + Name: Black Eagle + Aircraft: + TurnSpeed: 4 + Speed: 201 + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + Contrail@1: + Offset: -400,-483,0 + Contrail@2: + Offset: -400,483,0 + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: false + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + RenderSprites: + Image: beag + +BEAG.Husk.EMP: + Inherits: BEAG.Husk + Inherits: ^EmpVisualEffect + +BEAG.Husk.Empty: + Inherits: BEAG.Husk + Inherits: ^PlaneHuskEmpty + +BEAG.Husk.Empty.EMP: + Inherits: BEAG.Husk.Empty + Inherits: ^EmpVisualEffect + +ACHO.Husk: + Inherits: ^HelicopterHusk + Tooltip: + Name: Assault Chopper + Aircraft: + TurnSpeed: 4 + Speed: 112 + WithIdleOverlay@ROTORAIR: + Sequence: rotor + Offset: 50,550,192 + WithIdleOverlay@ROTORAIR2: + Sequence: rotor + Offset: 50,-550,192 + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: false + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + RenderSprites: + Image: acho + +ACHO.Husk.EMP: + Inherits: HIND.Husk + Inherits: ^EmpVisualEffect + +ACHO.Husk.Empty: + Inherits: ^HelicopterHuskEmpty + Inherits: HIND.Husk + +ACHO.Husk.Empty.EMP: + Inherits: HIND.Husk.Empty + Inherits: ^EmpVisualEffect + +SHDE.Husk: + Inherits: ^PlaneHuskTD + Tooltip: + Name: Shade + Aircraft: + TurnSpeed: 4 + Speed: 225 + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + Contrail@1: + Offset: -380,-850,-20 + Contrail@2: + Offset: -380,850,-20 + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: false + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + RenderSprites: + Image: shde + +SHDE.Husk.EMP: + Inherits: SHDE.Husk + Inherits: ^EmpVisualEffect + +SHDE.Husk.Empty: + Inherits: SHDE.Husk + Inherits: ^PlaneHuskEmpty + +SHDE.Husk.Empty.EMP: + Inherits: SHDE.Husk.Empty + Inherits: ^EmpVisualEffect + +VERT.Husk: + Inherits: ^PlaneHuskTD + Tooltip: + Name: Vertigo + Aircraft: + TurnSpeed: 4 + Speed: 157 + LeavesTrails: + Offsets: -427,0,0 + Image: smokey + MovingInterval: 3 + StationaryInterval: 3 + SpawnAtLastPosition: False + TrailWhileStationary: True + Type: CenterPosition + Contrail@1: + Offset: -380,-850,-20 + Contrail@2: + Offset: -380,850,-20 + RevealsShroud: + Range: 11c0 + MinRange: 9c0 + Type: GroundPosition + RevealGeneratedShroud: false + RevealsShroud@GAPGEN: + Range: 9c0 + Type: GroundPosition + RenderSprites: + Image: vert + +VERT.Husk.EMP: + Inherits: VERT.Husk + Inherits: ^EmpVisualEffect + +VERT.Husk.Empty: + Inherits: VERT.Husk + Inherits: ^PlaneHuskEmpty + +VERT.Husk.Empty.EMP: + Inherits: VERT.Husk.Empty + Inherits: ^EmpVisualEffect + +MCOR.Husk: + Inherits: ^HelicopterHuskTD + Tooltip: + Name: Manticore + GenericName: Destroyed Aircraft + Aircraft: + TurnSpeed: 8 + Speed: 35 + FallsToEarth: + MaximumSpinSpeed: 0 + RevealsShroud: + Range: 10c0 + MinRange: 8c0 + Type: GroundPosition + RevealGeneratedShroud: false + RevealsShroud@GAPGEN: + Range: 8c0 + Type: GroundPosition + RenderSprites: + Image: mcor + FallsToEarth: + Explosion: KirovExplode + +MCOR.Husk.EMP: + Inherits: MCOR.Husk + Inherits@EMP: ^EmpVisualEffect diff --git a/mods/ca/rules/infantry.yaml b/mods/ca/rules/infantry.yaml index 86c82ef637..d62f751389 100644 --- a/mods/ca/rules/infantry.yaml +++ b/mods/ca/rules/infantry.yaml @@ -82,25 +82,6 @@ DOG: -Captures@DRIVER_KILL: -CaptureManager: -CDOG: - Inherits: DOG - Buildable: - Queue: InfantrySQ - BuildAtProductionType: Soldier - BuildPaletteOrder: 50 - Prerequisites: ~stolentech.barr - Description: Melee anti-infantry scout unit. - Valued: - Cost: 400 - Tooltip: - Name: Cyberdog - Health: - HP: 15000 - Voiced: - VoiceSet: CyberdogVoice - Armament: - Weapon: CyberdogJaw - E1: Inherits: ^Soldier Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove @@ -1799,7 +1780,7 @@ RMBO: AddToArmyValue: true Buildable: BuildPaletteOrder: 210 - Prerequisites: ~infantry.td, techcenter, ~techlevel.high + Prerequisites: ~infantry.td, techcenter.td, ~techlevel.high Queue: InfantrySQ, InfantryMQ IconPalette: chrometd BuildLimit: 1 @@ -2142,96 +2123,6 @@ BORI: AutoTargetPriority@DEFAULT: ValidTargets: Infantry, Vehicle, Water, Underwater -^MortarInfantryBase: - Inherits: ^Soldier - Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove - Inherits@BERSERK: ^Berserk - Buildable: - Queue: InfantrySQ, InfantryMQ - BuildAtProductionType: Soldier - TooltipExtras: - Strengths: • Strong vs Infantry, Buildings - Weaknesses: • Weak vs Heavy Armor\n• Cannot attack Aircraft\n• Has difficulty hitting moving targets - Valued: - Cost: 350 - UpdatesPlayerStatistics: - AddToArmyValue: true - Health: - HP: 3500 - Armament@PRIMARY: - Weapon: ChemicalMortar - LocalOffset: 200,0,155 - FireDelay: 15 - Armament@BATF: - Name: batf - Weapon: ChemicalMortar - FireDelay: 15 - AttackFrontal: - PauseOnCondition: being-warped - FacingTolerance: 0 - WithInfantryBody: - DefaultAttackSequence: throw - RequiresCondition: !parachute && !being-warped - WithInfantryBody@PARACHUTE: - StandSequences: parachute - RequiresCondition: parachute - ProducibleWithLevel: - Prerequisites: barracks.upgraded - WithProductionIconOverlay: - Types: Veterancy - Prerequisites: barracks.upgraded - -MORT.Chem: - Inherits: ^MortarInfantryBase - RenderSprites: - Image: mortchem - Buildable: - BuildPaletteOrder: 250 - Prerequisites: ~stolentech.hand - Description: Infantry armed with a Chemical Mortar. - Tooltip: - Name: Chemical Mortar - Explodes: - Weapon: UnitExplodeChemSmall - EmptyWeapon: UnitExplodeChemSmall - Chance: 33 - RequiresCondition: !being-warped - -MORT.Cryo: - Inherits: ^MortarInfantryBase - RenderSprites: - Image: mortcryo - Buildable: - BuildPaletteOrder: 250 - Prerequisites: ~stolentech.tent - Description: Infantry armed with a Cryo Mortar. - TooltipExtras: - Attributes: • Slows enemy movement and increases damage taken - Tooltip: - Name: Cryo Mortar - Armament@PRIMARY: - Weapon: CryoMortar - Armament@BATF: - Weapon: CryoMortar - -MORT.Sonic: - Inherits: ^MortarInfantryBase - RenderSprites: - Image: mortsonic - Buildable: - BuildPaletteOrder: 250 - Prerequisites: ~stolentech.pyle - Description: Infantry armed with a Sonic Mortar. - Tooltip: - Name: Sonic Mortar - TooltipExtras: - Strengths: • Strong vs Defenses, Buildings - Attributes: • Slows enemy movement and rate of fire - Armament@PRIMARY: - Weapon: SonicMortar - Armament@BATF: - Weapon: SonicMortar - SAB: Inherits: ^Soldier Inherits@SELECTION: ^SelectableSupportUnit @@ -2265,7 +2156,7 @@ SAB: Guard: Voice: Move Infiltrates: - Types: SabInfiltrate, PowerInfiltrate + Types: SabInfiltrate, PowerInfiltrate, TechLockInfiltrate Notification: BuildingInfiltrated TextNotification: Building infiltrated. Voiced: @@ -3861,6 +3752,8 @@ SEAL: WithDecoration@COMMANDOSKULL: Sequence: pip-seal -Targetable@HERO: + GrantConditionOnHealingReceived@HEALINGCOOLDOWN: + RequiredHealing: 40000 XO: Inherits: ^VehicleTD-NOUPG @@ -4042,3 +3935,173 @@ ENLI: Count: 1 ShowSelectionBar: true SelectionBarColor: b8afff + +^MortarInfantryBase: + Inherits: ^Soldier + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Inherits@BERSERK: ^Berserk + Buildable: + Queue: InfantrySQ, InfantryMQ + BuildAtProductionType: Soldier + TooltipExtras: + Strengths: • Strong vs Infantry, Buildings + Weaknesses: • Weak vs Heavy Armor\n• Cannot attack Aircraft\n• Has difficulty hitting moving targets + Valued: + Cost: 350 + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 3500 + Armament@PRIMARY: + Weapon: ChemicalMortar + LocalOffset: 200,0,155 + FireDelay: 15 + Armament@BATF: + Name: batf + Weapon: ChemicalMortar + FireDelay: 15 + AttackFrontal: + PauseOnCondition: being-warped + FacingTolerance: 0 + WithInfantryBody: + DefaultAttackSequence: throw + RequiresCondition: !parachute && !being-warped + WithInfantryBody@PARACHUTE: + StandSequences: parachute + RequiresCondition: parachute + ProducibleWithLevel: + Prerequisites: barracks.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: barracks.upgraded + +MORT.Cryo: + Inherits: ^MortarInfantryBase + RenderSprites: + Image: mortcryo + Buildable: + BuildPaletteOrder: 250 + Prerequisites: ~stolentech.tent + Description: Infantry armed with a Cryo Mortar. + TooltipExtras: + Attributes: • Slows enemy movement and increases damage taken + Tooltip: + Name: Cryo Mortar + Armament@PRIMARY: + Weapon: CryoMortar + Armament@BATF: + Weapon: CryoMortar + +CDOG: + Inherits: DOG + Buildable: + Queue: InfantrySQ + BuildAtProductionType: Soldier + BuildPaletteOrder: 251 + Prerequisites: ~stolentech.barr + Description: Melee anti-infantry scout unit. + Valued: + Cost: 400 + Tooltip: + Name: Cyberdog + Health: + HP: 15000 + Voiced: + VoiceSet: CyberdogVoice + Armament: + Weapon: CyberdogJaw + +MORT.Sonic: + Inherits: ^MortarInfantryBase + RenderSprites: + Image: mortsonic + Buildable: + BuildPaletteOrder: 252 + Prerequisites: ~stolentech.pyle + Description: Infantry armed with a Sonic Mortar. + Tooltip: + Name: Sonic Mortar + TooltipExtras: + Strengths: • Strong vs Defenses, Buildings + Attributes: • Slows enemy movement and rate of fire + Armament@PRIMARY: + Weapon: SonicMortar + Armament@BATF: + Weapon: SonicMortar + +MORT.Chem: + Inherits: ^MortarInfantryBase + RenderSprites: + Image: mortchem + Buildable: + BuildPaletteOrder: 253 + Prerequisites: ~stolentech.hand + Description: Infantry armed with a Chemical Mortar. + Tooltip: + Name: Chemical Mortar + Explodes: + Weapon: UnitExplodeChemSmall + EmptyWeapon: UnitExplodeChemSmall + Chance: 33 + RequiresCondition: !being-warped + +CSCR: + Inherits@SCRININFANTRY: ^ScrinInfantry + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Inherits@BERSERK: ^Berserk + Inherits@CYBORGUPG: ^NodCyborgUpgrade + Inherits@SLOWABLE: ^Slowable + Buildable: + Queue: InfantrySQ, InfantryMQ + BuildAtProductionType: Soldier + BuildPaletteOrder: 254 + Prerequisites: ~stolentech.port + IconPalette: chromes + Description: Fast moving anti-personnel infantry. + TooltipExtras: + Strengths: • Strong vs Infantry, Light Armor + Weaknesses: • Weak vs Heavy Armor, Buildings, Defenses\n• Cannot attack Aircraft + Valued: + Cost: 500 + Tooltip: + Name: Cyberscrin + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 13000 + Mobile: + Speed: 77 + Armament@PRIMARY: + Weapon: CyberscrinLaser + LocalOffset: 200,0,350 + MuzzleSequence: muzzle + MuzzlePalette: caneon + Armament@BATF: + Name: batf + Weapon: CyberscrinLaser + WithMuzzleOverlay: + AttackFrontal: + PauseOnCondition: being-warped + FacingTolerance: 0 + ProducibleWithLevel: + Prerequisites: barracks.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: barracks.upgraded + WithInfantryBody: + DefaultAttackSequence: shoot + -TakeCover: + Voiced: + VoiceSet: CyberscrinVoice + Targetable: + TargetTypes: Ground, Infantry, Cyborg + ExternalCondition@ONTIB: + Condition: on-tib + ChangesHealth@THEAL: + Step: 0 + PercentageStep: 1 + Delay: 15 + StartIfBelow: 100 + DamageCooldown: 150 + RequiresCondition: on-tib + DamageTypes: ToxinDeath diff --git a/mods/ca/rules/misc.yaml b/mods/ca/rules/misc.yaml index c98cf45765..58ad9b8a8f 100644 --- a/mods/ca/rules/misc.yaml +++ b/mods/ca/rules/misc.yaml @@ -154,17 +154,17 @@ CRATE: SelectionShares: 3 Units: 4tnk ValidFactions: soviet, russia, ukraine, iraq, yuri - Prerequisites: techlevel.high, techcenter + Prerequisites: techlevel.high, techcenter.any GiveUnitCrateAction@htnk: SelectionShares: 3 Units: htnk ValidFactions: gdi, talon, zocom, eagle, arc - Prerequisites: techlevel.high, techcenter + Prerequisites: techlevel.high, techcenter.any GiveUnitCrateAction@stnk: SelectionShares: 3 Units: stnk.nod ValidFactions: nod, marked, blackh, legion, shadow - Prerequisites: techlevel.high, techcenter + Prerequisites: techlevel.high, techcenter.any GiveUnitCrateAction@squadlight: SelectionShares: 7 Units: e1,e1,e1,e3,e3 @@ -801,82 +801,71 @@ stolentech.hand: Inherits@DUMMY: ^InvisibleDummy ProvidesPrerequisite: -# ra weap - grizzly tank from allies, rhino heavy tank from soviets +# ra weap - reckoner from allies, rhino heavy tank from soviets stolentech.weap: Inherits@DUMMY: ^InvisibleDummy ValidFactions: Factions: england, france, germany, usa, russia, ukraine, iraq, yuri ProvidesPrerequisiteValidatedFaction@STOLENALLIED: Factions: england, france, germany, usa - Prerequisite: vehicles.grizzly + Prerequisite: vehicles.reck ProvidesPrerequisiteValidatedFaction@STOLENSOVIET: Factions: russia, ukraine, iraq, yuri Prerequisite: vehicles.rhino -# td weap - battle tank from gdi/legion, light tank if capturer is legion +# td weap - pitbull from gdi, mantis from legion stolentech.weap.td: Inherits@DUMMY: ^InvisibleDummy - ProvidesPrerequisite@STOLENGDI: - Prerequisite: vehicles.mtnk - ProvidesPrerequisite@STOLENNOD: - Prerequisite: vehicles.ltnk + ValidFactions: + Factions: talon, zocom, eagle, arc, legion + ProvidesPrerequisiteValidatedFaction@STOLENGDI: + Factions: talon, zocom, eagle, arc + Prerequisite: vehicles.pbul + ProvidesPrerequisiteValidatedFaction@STOLENNOD: + Factions: legion + Prerequisite: vehicles.mant -# airs - vehicle veterancy +# airs - mantis stolentech.airs: Inherits@DUMMY: ^InvisibleDummy - ProvidesPrerequisite@VET: - Prerequisite: vehicles.upgraded + ProvidesPrerequisite@STOLENNOD: + Prerequisite: vehicles.mant -# dome - ifv from allies, v2 from soviets -stolentech.dome: +# afld - assault chopper +stolentech.afld: + Inherits@DUMMY: ^InvisibleDummy + ProvidesPrerequisite@STOLENSOVIET: + Prerequisite: aircraft.acho + +# afld.gdi - shade +stolentech.afld.gdi: + Inherits@DUMMY: ^InvisibleDummy + ProvidesPrerequisite@STOLENGDI: + Prerequisite: aircraft.shde + +# hpad - black eagle from allies, assault chopper from soviets +stolentech.hpad: Inherits@DUMMY: ^InvisibleDummy ValidFactions: Factions: england, france, germany, usa, russia, ukraine, iraq, yuri ProvidesPrerequisiteValidatedFaction@STOLENALLIED: Factions: england, france, germany, usa - Prerequisite: vehicles.ifv + Prerequisite: aircraft.beag ProvidesPrerequisiteValidatedFaction@STOLENSOVIET: Factions: russia, ukraine, iraq, yuri - Prerequisite: vehicles.v2 - ProvidesPrerequisiteValidatedFaction@STOLENSOVIET2: - Factions: russia, ukraine, iraq, yuri - Prerequisite: v2.upgrade + Prerequisite: aircraft.acho -# hq - mobile sensor from allies, aircraft veterancy from nod -stolentech.hq: +# hpad.td - shade from gdi, vertigo from nod +stolentech.hpad.td: Inherits@DUMMY: ^InvisibleDummy ValidFactions: Factions: talon, zocom, eagle, arc, blackh, marked, legion, shadow ProvidesPrerequisiteValidatedFaction@STOLENGDI: Factions: talon, zocom, eagle, arc - Prerequisite: vehicles.msar + Prerequisite: aircraft.shde ProvidesPrerequisiteValidatedFaction@STOLENNOD: Factions: blackh, marked, legion, shadow - Prerequisite: aircraft.upgraded - -# atek - mobile gap gen -stolentech.atek: - Inherits@DUMMY: ^InvisibleDummy - ProvidesPrerequisite: - Prerequisite: vehicles.mgg - -# stek - mad tank -stolentech.stek: - Inherits@DUMMY: ^InvisibleDummy - ProvidesPrerequisite: - Prerequisite: vehicles.qtnk - -# gtek - mobile emp -stolentech.gtek: - Inherits@DUMMY: ^InvisibleDummy - ProvidesPrerequisite: - Prerequisite: vehicles.memp - -# tmpl - toxin truck -stolentech.tmpl: - Inherits@DUMMY: ^InvisibleDummy - ProvidesPrerequisite: - Prerequisite: vehicles.ttrk + Prerequisite: aircraft.vert mpspawn: Interactable: diff --git a/mods/ca/rules/palettes.yaml b/mods/ca/rules/palettes.yaml index 6ef318f61c..d49b665758 100644 --- a/mods/ca/rules/palettes.yaml +++ b/mods/ca/rules/palettes.yaml @@ -451,6 +451,12 @@ StartColor: ff28cf66 EndColor: ef3fc864 PulseDuration: 25 + PaletteFromRGBA@decoy: + Name: decoy + R: 255 + G: 255 + B: 255 + A: 40 WeatherPaletteEffect@LIGHTNINGSTORM: Type: LightningStorm Color: 08112E03 diff --git a/mods/ca/rules/scrin.yaml b/mods/ca/rules/scrin.yaml index 959348cb0f..728325d472 100644 --- a/mods/ca/rules/scrin.yaml +++ b/mods/ca/rules/scrin.yaml @@ -618,67 +618,6 @@ SMEDI: ValidTargets: Infantry KeepsDistance: -CSCR: - Inherits@SCRININFANTRY: ^ScrinInfantry - Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove - Inherits@BERSERK: ^Berserk - Inherits@CYBORGUPG: ^NodCyborgUpgrade - Inherits@SLOWABLE: ^Slowable - Buildable: - Queue: InfantrySQ, InfantryMQ - BuildAtProductionType: Soldier - BuildPaletteOrder: 160 - Prerequisites: ~stolentech.port - IconPalette: chromes - Description: Fast moving anti-personnel infantry. - TooltipExtras: - Strengths: • Strong vs Infantry, Light Armor - Weaknesses: • Weak vs Heavy Armor, Buildings, Defenses\n• Cannot attack Aircraft - Valued: - Cost: 500 - Tooltip: - Name: Cyberscrin - UpdatesPlayerStatistics: - AddToArmyValue: true - Health: - HP: 13000 - Mobile: - Speed: 77 - Armament@PRIMARY: - Weapon: CyberscrinLaser - LocalOffset: 200,0,350 - MuzzleSequence: muzzle - MuzzlePalette: caneon - Armament@BATF: - Name: batf - Weapon: CyberscrinLaser - WithMuzzleOverlay: - AttackFrontal: - PauseOnCondition: being-warped - FacingTolerance: 0 - ProducibleWithLevel: - Prerequisites: barracks.upgraded - WithProductionIconOverlay: - Types: Veterancy - Prerequisites: barracks.upgraded - WithInfantryBody: - DefaultAttackSequence: shoot - -TakeCover: - Voiced: - VoiceSet: CyberscrinVoice - Targetable: - TargetTypes: Ground, Infantry, Cyborg - ExternalCondition@ONTIB: - Condition: on-tib - ChangesHealth@THEAL: - Step: 0 - PercentageStep: 1 - Delay: 15 - StartIfBelow: 100 - DamageCooldown: 150 - RequiresCondition: on-tib - DamageTypes: ToxinDeath - GSCR: Inherits: BRUT RenderSprites: @@ -1202,7 +1141,7 @@ INTL: UpdatesPlayerStatistics: AddToArmyValue: true Buildable: - BuildPaletteOrder: 38 + BuildPaletteOrder: 39 Prerequisites: ~vehicles.scrin, ~techlevel.low Queue: VehicleSQ, VehicleMQ Description: Heavily armoured front-line assault vehicle and troop carrier. @@ -1921,7 +1860,7 @@ TPOD: Buildable: Queue: VehicleSQ, VehicleMQ BuildPaletteOrder: 310 - Prerequisites: techcenter, ~vehicles.tpod, ~techlevel.high + Prerequisites: scrt, ~vehicles.tpod, ~techlevel.high Description: Heavy assault walker with beam weapons. IconPalette: chrome TooltipExtras: @@ -2246,7 +2185,7 @@ STMR: Type: CenterPosition RequiresCondition: enable-smoke Selectable: - DecorationBounds: 1536, 1194 + DecorationBounds: 1536, 1280 ProducibleWithLevel: Prerequisites: aircraft.upgraded WithProductionIconOverlay: @@ -2441,12 +2380,12 @@ DEVA: PointA: 0,896 PointB: 0, -256 RevealsShroud: - Range: 8c0 - MinRange: 7c0 + Range: 10c0 + MinRange: 8c0 Type: GroundPosition RevealGeneratedShroud: False RevealsShroud@GAPGEN: - Range: 7c0 + Range: 8c0 Type: GroundPosition Armament@PRIMARY: Weapon: DevastatorDiscs @@ -3797,6 +3736,7 @@ NERV: Inherits@STORMSPIKEPOWER: ^StormSpikePower Inherits@BUZZERSWARMPOWER: ^BuzzerSwarmPower Inherits@IONSURGEPOWER: ^IonSurgePower + Inherits@TECHLOCKABLE: ^TechLockable Buildable: Queue: BuildingSQ, BuildingMQ BuildPaletteOrder: 90 @@ -3815,7 +3755,7 @@ NERV: LocalCenterOffset: 0,-512,0 Targetable@INFILTRATION: RequiresCondition: !being-warped - TargetTypes: SpyInfiltrate, SabInfiltrate + TargetTypes: SpyInfiltrate Health: HP: 110000 Armor: @@ -3843,41 +3783,44 @@ NERV: RequiresCondition: !jammed && !disabled && !being-warped WithBuildingBib: InfiltrateForExploration: - Types: SpyInfiltrate, SabInfiltrate + Types: SpyInfiltrate Power: Amount: -40 -PowerMultiplier@POWERDRAIN: ValidFactions: Factions: reaper, traveler, harbinger, collector + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite@anyradar: Prerequisite: anyradar + RequiresCondition: !tech-locked ProvidesPrerequisite@radarorrepair: Prerequisite: radarorrepair + RequiresCondition: !tech-locked ProvidesPrerequisite@scrinrad: Prerequisite: radar.scrin + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@reaprad: Factions: reaper Prerequisite: radar.reaper + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@travrad: Factions: traveler Prerequisite: radar.traveler + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@harbrad: Factions: harbinger Prerequisite: radar.harbinger + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@desprad: Factions: collector Prerequisite: radar.collector - ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ExternalCondition@JAMMED: Condition: jammed ProvidesPrerequisite@radar-active: Prerequisite: radar-active RequiresCondition: !jammed && !disabled && !being-warped - InfiltrateForSupportPower@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.nerv - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack SCRT: Inherits: ^ScrinBuilding @@ -3887,6 +3830,7 @@ SCRT: Inherits@ICHORSEEDPOWER: ^IchorSeedPower Inherits@FORCESHIELDPOWER: ^ForceShieldPower Inherits@GREATERCOALESCENCEPOWER: ^GreaterCoalescencePower + Inherits@TECHLOCKABLE: ^TechLockable Buildable: Queue: BuildingSQ, BuildingMQ BuildPaletteOrder: 150 @@ -3905,9 +3849,6 @@ SCRT: Bounds: 2048, 2560 Health: HP: 110000 - Targetable@INFILTRATION: - RequiresCondition: !being-warped - TargetTypes: SabInfiltrate Armor: Type: Wood RevealsShroud: @@ -3921,25 +3862,24 @@ SCRT: RevealsShroud@GAPGEN: Range: 5c0 RequiresCondition: !disabled - InfiltrateForSupportPower@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.scrt - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack WithBuildingBib: Power: Amount: -150 ValidFactions: Factions: reaper, traveler, harbinger, collector + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite: - Prerequisite: techcenter + Prerequisite: techcenter.any + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@harbscrt: Factions: harbinger Prerequisite: scrt.harbinger + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@collscrt: Factions: collector Prerequisite: scrt.collector - ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked GRAV: Inherits: ^ScrinBuilding @@ -4033,12 +3973,21 @@ GRAV: AutoTarget: AutoTargetPriority@DEFAULT: ValidRelationships: Ally + InfiltrateForSupportPower@STOLENTECH: + Types: SabInfiltrate + Proxy: stolentech.grav + InfiltrationNotification: BuildingInfiltrated + InfiltratedNotification: BaseAttack + Targetable@INFILTRATION: + RequiresCondition: !being-warped + TargetTypes: SabInfiltrate SIGN: Inherits: ^ScrinBuilding Inherits@POWER_OUTAGE: ^DisableOnLowPowerOrForceDisabled Inherits@SHAPE: ^3x2Shape Inherits@UPG: ^ProducesUpgrades + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 3072, 2048 Building: @@ -4077,11 +4026,13 @@ SIGN: Power: Amount: -150 ProvidesPrerequisite@Name: - RequiresCondition: !being-warped + RequiresCondition: !tech-locked Sellable: RequiresCondition: !build-incomplete && !c4 && !being-warped SpawnActorOnDeath: RequiresCondition: !being-warped + WithDecoration@TechLock: + RequiresCondition: tech-locked -MindControllable: -Targetable@HACKABLE: -MindControllableProgressBar@HACKABLE: @@ -5047,24 +4998,12 @@ stolentech.port: Inherits@DUMMY: ^InvisibleDummy ProvidesPrerequisite: -# warp sphere - vehicle veterancy +# warp sphere - viper stolentech.wsph: Inherits@DUMMY: ^InvisibleDummy ProvidesPrerequisite: - Prerequisite: vehicles.upgraded -# nerve center - aircraft veterancy -stolentech.nerv: +# gravity stabilizer - manticore +stolentech.grav: Inherits@DUMMY: ^InvisibleDummy ProvidesPrerequisite: - Prerequisite: aircraft.upgraded - -# tech center - veterancy for all -stolentech.scrt: - Inherits@DUMMY: ^InvisibleDummy - ProvidesPrerequisite@1: - Prerequisite: barracks.upgraded - ProvidesPrerequisite@2: - Prerequisite: vehicles.upgraded - ProvidesPrerequisite@3: - Prerequisite: aircraft.upgraded diff --git a/mods/ca/rules/structures.yaml b/mods/ca/rules/structures.yaml index 4fbf7ecb34..a0250014dc 100644 --- a/mods/ca/rules/structures.yaml +++ b/mods/ca/rules/structures.yaml @@ -590,6 +590,7 @@ DOME: Inherits@SOVIETRADARPOWERS: ^SovietRadarPowers Inherits@VEILOFWARPOWER: ^VeilOfWarPower Inherits@CLUSTERMINESPOWER: ^ClusterMinesPower + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 2048, 2048 HitShape: @@ -612,7 +613,7 @@ DOME: LocalCenterOffset: 0,-512,0 Targetable@INFILTRATION: RequiresCondition: !being-warped - TargetTypes: SpyInfiltrate, SabInfiltrate + TargetTypes: SpyInfiltrate Health: HP: 110000 Armor: @@ -640,53 +641,58 @@ DOME: Range: 12c0 RequiresCondition: !jammed && !disabled && !being-warped InfiltrateForExploration: - Types: SpyInfiltrate, SabInfiltrate + Types: SpyInfiltrate Power: Amount: -40 -PowerMultiplier@POWERDRAIN: ValidFactions: Factions: england, france, germany, usa, russia, ukraine, iraq, yuri + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite@anyradar: Prerequisite: anyradar + RequiresCondition: !tech-locked ProvidesPrerequisite@radarorrepair: Prerequisite: radarorrepair + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@allrad: Factions: england, france, germany, usa Prerequisite: radar.allies + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@engrad: Factions: england Prerequisite: radar.england + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@frarad: Factions: france Prerequisite: radar.france + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@sovrad: Factions: russia, ukraine, iraq, yuri Prerequisite: radar.soviet + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@rusrad: Factions: russia Prerequisite: radar.russia + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@ukrrad: Factions: ukraine Prerequisite: radar.ukraine + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@irarad: Factions: iraq Prerequisite: radar.iraq + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@yurirad: Factions: yuri Prerequisite: radar.yuri + RequiresCondition: !tech-locked ProvidesPrerequisite@radar-active: Prerequisite: radar-active RequiresCondition: !jammed && !disabled && !being-warped - ProvidesPrerequisite@buildingname: - InfiltrateForSupportPowerCA@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.dome - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack ExternalCondition@JAMMED: Condition: jammed - PBOX: Inherits: ^Defense Inherits@AUTOTARGET: ^AutoTargetGround @@ -973,6 +979,7 @@ ATEK: Inherits@GPSPOWER: ^GpsPower Inherits@FORCESHIELDPOWER: ^ForceShieldPower Inherits@TEMPINCPOWER: ^TemporalIncursionPower + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 2048, 2048 Buildable: @@ -1004,17 +1011,6 @@ ATEK: SupportPowerChargeBar: Power: Amount: -150 - ProvidesPrerequisite@buildingname: - ProvidesPrerequisite: - Prerequisite: techcenter - InfiltrateForSupportPower@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.atek - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack - Targetable@INFILTRATION: - RequiresCondition: !being-warped - TargetTypes: SabInfiltrate GrantConditionOnFogEnabled@FOGENABLED: Condition: fogenabled ExternalCondition@DUMMY: @@ -1037,15 +1033,23 @@ ATEK: RequiresCondition: fogenabled ValidFactions: Factions: england, germany, france, usa + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked + ProvidesPrerequisite: + Prerequisite: techcenter.any + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@germanyatek: Factions: germany Prerequisite: atek.germany + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@franceatek: Factions: france Prerequisite: atek.france + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@usaatek: Factions: usa Prerequisite: atek.usa + RequiresCondition: !tech-locked Production@UPG: Produces: Upgrade, SpySatellite Exit@UPG: @@ -1166,6 +1170,7 @@ WEAP: Proxy: stolentech.weap InfiltrationNotification: BuildingInfiltrated InfiltratedNotification: BaseAttack + UseTargetFaction: true -ActorPreviewPlaceBuildingPreview: SequencePlaceBuildingPreview: Sequence: place @@ -1540,12 +1545,18 @@ HPAD: ProvidesPrerequisite@buildingname: Targetable@INFILTRATION: RequiresCondition: !being-warped - TargetTypes: SpyInfiltrate + TargetTypes: SpyInfiltrate, SabInfiltrate InfiltrateForSupportPower: Types: SpyInfiltrate Proxy: powerproxy.paratroopers.allies InfiltrationNotification: BuildingInfiltrated InfiltratedNotification: BaseAttack + InfiltrateForSupportPowerCA@STOLENTECH: + Types: SabInfiltrate + Proxy: stolentech.hpad + InfiltrationNotification: BuildingInfiltrated + InfiltratedNotification: BaseAttack + UseTargetFaction: true AFLD: Inherits: ^Building @@ -1609,12 +1620,17 @@ AFLD: ProvidesPrerequisite@buildingname: Targetable@INFILTRATION: RequiresCondition: !being-warped - TargetTypes: SpyInfiltrate + TargetTypes: SpyInfiltrate, SabInfiltrate InfiltrateForSupportPower: Proxy: powerproxy.airstrike Types: SpyInfiltrate InfiltrationNotification: BuildingInfiltrated InfiltratedNotification: BaseAttack + InfiltrateForSupportPower@STOLENTECH: + Types: SabInfiltrate + Proxy: stolentech.afld + InfiltrationNotification: BuildingInfiltrated + InfiltratedNotification: BaseAttack WithResupplyAnimation: RequiresCondition: !build-incomplete @@ -1825,6 +1841,7 @@ STEK: Inherits@SHAPE: ^3x2Shape Inherits@UPG: ^ProducesUpgrades Inherits@FORCESHIELDPOWER: ^ForceShieldPower + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 3072, 2048 HitShape: @@ -1856,27 +1873,24 @@ STEK: Power: Amount: -150 ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite: - Prerequisite: techcenter + Prerequisite: techcenter.any + RequiresCondition: !tech-locked ValidFactions: Factions: russia, ukraine, iraq, yuri ProvidesPrerequisiteValidatedFaction@russia: Factions: russia Prerequisite: stek.russia + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@ukraine: Factions: ukraine Prerequisite: stek.ukraine + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@iraq: Factions: iraq Prerequisite: stek.iraq - InfiltrateForSupportPower@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.stek - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack - Targetable@INFILTRATION: - RequiresCondition: !being-warped - TargetTypes: SabInfiltrate + RequiresCondition: !tech-locked BARR: Inherits: ^Building @@ -2376,7 +2390,15 @@ AIRCRAFT.CHINOOK: Buildable: Description: Helipad -TECHCENTER: +TECHCENTER.ANY: + AlwaysVisible: + Interactable: + Tooltip: + Name: Tech Center + Buildable: + Description: Tech Center + +TECHCENTER.TD: AlwaysVisible: Interactable: Tooltip: @@ -3432,6 +3454,7 @@ HQ: Inherits@@INFERNOBOMBPOWER: ^InfernoBombPower Inherits@CASHHACKPOWER: ^CashHackPower Inherits@HACKERCELLPOWER: ^HackerCellPower + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 2048, 2304 HitShape: @@ -3505,48 +3528,55 @@ HQ: -PowerMultiplier@POWERDRAIN: ValidFactions: Factions: talon, zocom, eagle, arc, blackh, marked, legion, shadow + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite@anyradar: Prerequisite: anyradar + RequiresCondition: !tech-locked ProvidesPrerequisite@radarorrepair: Prerequisite: radarorrepair + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@gdirad: Factions: talon, zocom, eagle, arc Prerequisite: radar.gdi + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@talrad: Factions: talon Prerequisite: radar.talon + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@zocrad: Factions: zocom Prerequisite: radar.zocom + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@eagrad: Factions: eagle Prerequisite: radar.eagle + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@arcrad: Factions: arc Prerequisite: radar.arc + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@nodrad: Factions: blackh, marked, legion, shadow Prerequisite: radar.nod + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@bhrad: Factions: blackh Prerequisite: radar.blackh + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@legrad: Factions: legion Prerequisite: radar.legion + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@shadrad: Factions: shadow Prerequisite: radar.shadow - ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite@radar-active: Prerequisite: radar-active RequiresCondition: !jammed && !disabled && !being-warped ExternalCondition@JAMMED: Condition: jammed - InfiltrateForSupportPowerCA@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.hq - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack ProductionCostMultiplier@ARCDISCOUNT: Multiplier: 50 Prerequisites: anyradar, player.arc @@ -3786,7 +3816,7 @@ HPAD.TD: ProvidesPrerequisite@buildingname: Targetable@INFILTRATION: RequiresCondition: !being-warped - TargetTypes: SpyInfiltrate + TargetTypes: SpyInfiltrate, SabInfiltrate WithResupplyAnimation: RequiresCondition: !build-incomplete InfiltrateForSupportPower: @@ -3794,6 +3824,12 @@ HPAD.TD: Proxy: powerproxy.paratroopers.allies InfiltrationNotification: BuildingInfiltrated InfiltratedNotification: BaseAttack + InfiltrateForSupportPowerCA@STOLENTECH: + Types: SabInfiltrate + Proxy: stolentech.hpad.td + InfiltrationNotification: BuildingInfiltrated + InfiltratedNotification: BaseAttack + UseTargetFaction: true PROC.TD: Inherits: ^BuildingTD @@ -3989,7 +4025,7 @@ AFLD.GDI: ProvidesPrerequisite@buildingname: Targetable@INFILTRATION: RequiresCondition: !being-warped - TargetTypes: SpyInfiltrate + TargetTypes: SpyInfiltrate, SabInfiltrate WithResupplyAnimation: RequiresCondition: !build-incomplete InfiltrateForSupportPower: @@ -3997,6 +4033,11 @@ AFLD.GDI: Proxy: powerproxy.airstrike InfiltrationNotification: BuildingInfiltrated InfiltratedNotification: BaseAttack + InfiltrateForSupportPower@STOLENTECH: + Types: SabInfiltrate + Proxy: stolentech.afld.gdi + InfiltrationNotification: BuildingInfiltrated + InfiltratedNotification: BaseAttack SpawnActorOnDeath: Actor: n1 SpawnActorsOnSell: @@ -4009,6 +4050,7 @@ GTEK: Inherits@UPG: ^ProducesUpgrades Inherits@FORCESHIELDPOWER: ^ForceShieldPower Inherits@NANITEREPAIRPOWER: ^NaniteRepairPower + Inherits@TECHLOCKABLE: ^TechLockable Buildable: Queue: BuildingSQ, BuildingMQ BuildPaletteOrder: 150 @@ -4041,31 +4083,35 @@ GTEK: RevealsShroud@GAPGEN: Range: 5c0 RequiresCondition: !disabled - InfiltrateForSupportPower@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.gtek - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack WithBuildingBib: Power: Amount: -150 ValidFactions: Factions: talon, zocom, eagle, arc + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite: - Prerequisite: techcenter + Prerequisite: techcenter.any + RequiresCondition: !tech-locked + ProvidesPrerequisite@tdtek: + Prerequisite: techcenter.td + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@talongtek: Factions: talon Prerequisite: gtek.talon + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@arcgtek: Factions: arc Prerequisite: gtek.arc + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@zocomgtek: Factions: zocom Prerequisite: gtek.zocom + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@eaglegtek: Factions: eagle Prerequisite: gtek.eagle - ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked SupportPowerChargeBar: ProductionCostMultiplier@TALONBONUS: Multiplier: 90 @@ -4079,6 +4125,7 @@ TMPL: Inherits@FRENZYPOWER: ^FrenzyPower Inherits@CLUSTERMISSILEPOWER: ^ClusterMissilePower Inherits@FORCESHIELDPOWER: ^ForceShieldPower + Inherits@TECHLOCKABLE: ^TechLockable HitShape: UseTargetableCellsOffsets: false TargetableOffsets: 0,0,0, 0,-896,0, 0,896,0, 840,0,0, -706,0,0, -706,-768,0, -706,640,0 @@ -4126,28 +4173,32 @@ TMPL: Targetable@INFILTRATION: RequiresCondition: !being-warped TargetTypes: SabInfiltrate - InfiltrateForSupportPower@STOLENTECH: - Types: SabInfiltrate - Proxy: stolentech.tmpl - InfiltrationNotification: BuildingInfiltrated - InfiltratedNotification: BaseAttack ValidFactions: Factions: blackh, marked, legion, shadow ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite: - Prerequisite: techcenter + Prerequisite: techcenter.any + RequiresCondition: !tech-locked + ProvidesPrerequisite@tdtek: + Prerequisite: techcenter.td + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@blackhtmpl: Factions: blackh Prerequisite: tmpl.blackh + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@markedtmpl: Factions: marked Prerequisite: tmpl.marked + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@legiontmpl: Factions: legion Prerequisite: tmpl.legion + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@shadowtmpl: Factions: shadow Prerequisite: tmpl.shadow + RequiresCondition: !tech-locked GrantExternalConditionPowerCA@FSHIELD: ActiveSequence: false-active @@ -4922,6 +4973,7 @@ INDP: Inherits@POWER_OUTAGE: ^DisableOnLowPowerOrForceDisabled Inherits@SHAPE: ^3x2Shape Inherits@UPG: ^ProducesUpgrades + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 3072, 2816, 0, -256 HitShape: @@ -4968,6 +5020,7 @@ INDP: DeathSequence: dead UseDeathTypeSuffix: false ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite@disabled: Prerequisite: indplowpower RequiresCondition: disabled || empdisable || being-warped @@ -4988,6 +5041,8 @@ INDP: GrantCondition@DUMMY: Condition: noupgrade RequiresCondition: noupgrade + WithDecoration@TechLock: + RequiresCondition: tech-locked -MindControllable: -Targetable@HACKABLE: -MindControllableProgressBar@HACKABLE: @@ -4999,6 +5054,7 @@ OREP: Inherits@POWER_OUTAGE: ^DisableOnLowPowerOrForceDisabled Inherits@SHAPE: ^3x2Shape Inherits@UPG: ^ProducesUpgrades + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 3072, 2048 Building: @@ -5029,7 +5085,6 @@ OREP: -CapturableProgressBar: -CapturableProgressBlink: -CaptureManager: - ProvidesPrerequisite@buildingname: Valued: Cost: 2000 Tooltip: @@ -5067,9 +5122,14 @@ OREP: RequiresCondition: noupgrade ValidFactions: Factions: england, germany, france, usa + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisiteValidatedFaction@germanyorep: Factions: germany Prerequisite: orep.germany + RequiresCondition: !tech-locked + WithDecoration@TechLock: + RequiresCondition: tech-locked -MindControllable: -Targetable@HACKABLE: -MindControllableProgressBar@HACKABLE: @@ -5084,6 +5144,7 @@ UPGC: Inherits@FIRESTORMPOWER: ^FirestormPower Inherits@ADVANCEDRADARPOWER: ^AdvancedRadarPower Inherits@NANITESHIELDPOWER: ^NaniteShieldPower + Inherits@TECHLOCKABLE: ^TechLockable Selectable: Bounds: 3072, 2560, 0, 256 Building: @@ -5288,6 +5349,8 @@ UPGC: ProductionCostMultiplier@TALONBONUS: Multiplier: 80 Prerequisites: player.talon + WithDecoration@TechLock: + RequiresCondition: tech-locked -MindControllable: -Targetable@HACKABLE: -MindControllableProgressBar@HACKABLE: @@ -5394,6 +5457,7 @@ TMPP: Inherits@SHAPE: ^3x2Shape Inherits@INF: ^ProducesCyborgs Inherits@UPG: ^ProducesUpgrades + Inherits@TECHLOCKABLE: ^TechLockable RenderSprites: PlayerPalette: playertd Selectable: @@ -5439,15 +5503,18 @@ TMPP: Name: Temple Prime Power: Amount: -150 - ProvidesPrerequisite@Name: - RequiresCondition: !being-warped + ProvidesPrerequisite@buildingname: + RequiresCondition: !tech-locked ProvidesPrerequisite@nod: Prerequisite: infantry.nod + RequiresCondition: !tech-locked ProvidesPrerequisite@marked: Factions: marked Prerequisite: infantry.marked + RequiresCondition: !tech-locked ProvidesPrerequisite@mech: Prerequisite: infantry.mech + RequiresCondition: !tech-locked Sellable: RequiresCondition: !build-incomplete && !c4 && !being-warped SpawnActorOnDeath: @@ -5481,6 +5548,8 @@ TMPP: RequiresCondition: converting PrimaryBuilding: RequiresCondition: !converting && !global-multiqueue + WithDecoration@TechLock: + RequiresCondition: tech-locked -MindControllable: -Targetable@HACKABLE: -MindControllableProgressBar@HACKABLE: diff --git a/mods/ca/rules/upgrades.yaml b/mods/ca/rules/upgrades.yaml index 3afd0ace8d..9db9216f1c 100644 --- a/mods/ca/rules/upgrades.yaml +++ b/mods/ca/rules/upgrades.yaml @@ -51,7 +51,7 @@ optprod2.upgrade: Name: Upgrade: Optimized Production II Buildable: BuildPaletteOrder: 15 - Prerequisites: techcenter, ~techlevel.high, ~global.multiqueuescaled, ~optprod1.upgrade + Prerequisites: techcenter.any, ~techlevel.high, ~global.multiqueuescaled, ~optprod1.upgrade Description: Reduces the cost of additional infantry, vehicle and aircraft production structures. TooltipExtras: Strengths: + Reduced cost of additional infantry production by $500\n+ Reduced cost of additional vehicle production by $700\n+ Reduced cost of additional aircraft production by $150 @@ -66,7 +66,7 @@ flakarmor.upgrade: Name: Upgrade: Advanced Flak Armor Buildable: BuildPaletteOrder: 30 - Prerequisites: techcenter, infantry.any, ~!player.nod, ~!player.scrin, ~techlevel.high + Prerequisites: techcenter.any, infantry.any, ~!player.nod, ~!player.scrin, ~techlevel.high Description: Infantry are equiped with advanced flak armor which\n provides protection against explosives.\n\nUpgrades: Infantry TooltipExtras: Strengths: + 40% reduced damage from explosives\n+ 20% reduced damage from incendiary explosives @@ -552,6 +552,21 @@ tibcore.upgrade: RenderSprites: Image: tibcore.upgrade +decoy.upgrade: + Inherits: ^Upgrade + Tooltip: + Name: Upgrade: Decoy Projectors + Buildable: + BuildPaletteOrder: 30 + Prerequisites: ~player.nod, tmpl, ~techlevel.high + Description: Grant Buggies the ability to project decoys of themselves.\n\nUpgrades: Buggy + TooltipExtras: + Strengths: + Decoy projection ability + Valued: + Cost: 750 + RenderSprites: + Image: decoy.upgrade + blacknapalm.upgrade: Inherits: ^Upgrade Tooltip: @@ -830,6 +845,21 @@ cryr.upgrade: RenderSprites: Image: cryr.upgrade +optics.upgrade: + Inherits: ^Upgrade + Tooltip: + Name: Research: Advanced Optics + Buildable: + BuildPaletteOrder: 30 + Prerequisites: ~player.allies, atek, ~techlevel.high + Description: Equips rangers with advanced optics which temporarily extends their vision\n at the cost of slower movement speed.\n\nUpgrades: Ranger + TooltipExtras: + Strengths: + Rangers can temporarily increase their vision range + Valued: + Cost: 750 + RenderSprites: + Image: optics.upgrade + pcan.upgrade: Inherits: ^Upgrade Tooltip: diff --git a/mods/ca/rules/vehicles.yaml b/mods/ca/rules/vehicles.yaml index c00784570c..befe6c5649 100644 --- a/mods/ca/rules/vehicles.yaml +++ b/mods/ca/rules/vehicles.yaml @@ -247,11 +247,7 @@ KATY: GTNK: Inherits: 2TNK - Buildable: - Queue: VehicleSQ, VehicleMQ - BuildPaletteOrder: 30 - Prerequisites: ~vehicles.grizzly, ~techlevel.low - Description: Grizzly main battle tank. + -Buildable: Valued: Cost: 875 Tooltip: @@ -720,7 +716,7 @@ GTNK.squad: Image: 3tnkay Buildable: Queue: VehicleSQ, VehicleMQ - BuildPaletteOrder: 34 + BuildPaletteOrder: 35 Prerequisites: ~lasher.upgrade, ~atomicengines.upgrade, ~vehicles.3tnk, ~techlevel.low Description: Heavy tank with infantry crushing improvements. TooltipExtras: @@ -783,7 +779,7 @@ GTNK.squad: Inherits@ATOMICAMMO: ^AtomicAmmunition Buildable: Queue: VehicleSQ, VehicleMQ - BuildPaletteOrder: 32 + BuildPaletteOrder: 701 Prerequisites: ~!atomicengines.upgrade, ~vehicles.rhino, ~techlevel.low Description: Soviet designed heavy tank. RenderSprites: @@ -792,18 +788,18 @@ GTNK.squad: Strengths: • Strong vs Heavy Armor, Light Armor Weaknesses: • Weak vs Infantry, Defenses\n• Cannot attack Aircraft Valued: - Cost: 1150 + Cost: 1450 Tooltip: Name: Rhino Heavy Tank GenericName: Tank UpdatesPlayerStatistics: AddToArmyValue: true Health: - HP: 68000 + HP: 74000 Armor: Type: Heavy Mobile: - Speed: 60 + Speed: 52 Voice: Move Passenger: Voice: Move @@ -868,18 +864,12 @@ GTNK.squad: RenderSprites: Image: rhini Buildable: - Queue: VehicleSQ, VehicleMQ - BuildPaletteOrder: 33 + BuildPaletteOrder: 702 Prerequisites: ~atomicengines.upgrade, ~vehicles.rhino, ~techlevel.low TooltipExtras: - Strengths: • Strong vs Heavy Armor, Light Armor - Weaknesses: • Weak vs Infantry, Defenses\n• Cannot attack Aircraft Attributes: • Explodes and leaves radiation on death - Valued: - Cost: 1150 Tooltip: Name: Atomic Rhino Heavy Tank - GenericName: Tank Turreted: Offset: 0,0,20 Selectable: @@ -891,6 +881,7 @@ GTNK.squad: Weapon: UnitExplodeIraqTank EmptyWeapon: UnitExplodeIraqTank RequiresCondition: !being-warped + -UpgradeableTo: -Upgradeable@ATOMIC: 4TNK: @@ -1773,6 +1764,7 @@ JEEP: MinRange: 6c0 Range: 8c0 RevealGeneratedShroud: False + RequiresCondition: !optics-active RevealsShroud@GAPGEN: Range: 6c0 Turreted: @@ -1796,6 +1788,37 @@ JEEP: Range: 6c0 DetectionTypes: Cloak, Thief, AirCloak RequiresCondition: !(empdisable || being-warped) + RevealsShroud@Optics: + MinRange: 6c0 + Range: 12c0 + RevealGeneratedShroud: False + RequiresCondition: optics-active + SpeedMultiplier@Optics: + Modifier: 75 + RequiresCondition: optics-active + GrantTimedConditionOnDeploy@Optics: + DeployedCondition: optics-active + RequiresCondition: optics-upgrade + ShowSelectionBar: true + StartsFullyCharged: true + DeployedTicks: 250 + CooldownTicks: 1000 + ShowSelectionBarWhenFull: false + ChargingColor: 808080 + DischargingColor: ffffff + DeploySound: optics-enable.aud + UndeploySound: optics-disable.aud + GrantConditionOnPrerequisite@Optics: + Condition: optics-upgrade + Prerequisites: optics.upgrade + WithDecoration@Optics: + Image: opticsactive + Sequence: idle + Palette: effect + Position: Top + ValidRelationships: Ally + Margin: 0, 8 + RequiresCondition: optics-active JEEP.TEMP: Inherits: JEEP @@ -2068,7 +2091,7 @@ MGG: Buildable: Queue: VehicleSQ, VehicleMQ BuildPaletteOrder: 380 - Prerequisites: techcenter, ~vehicles.mgg, ~techlevel.high + Prerequisites: atek, ~techlevel.high Description: Regenerates the shroud nearby, obscuring enemy vision.\n Can channel the effect to reduce enemy weapon range and vision. TooltipExtras: Attributes: • Special Ability: Toggle Gap Generator @@ -2524,7 +2547,7 @@ QTNK: Buildable: Queue: VehicleSQ, VehicleMQ BuildPaletteOrder: 390 - Prerequisites: techcenter, ~vehicles.qtnk, ~techlevel.high + Prerequisites: stek, ~vehicles.qtnk, ~techlevel.high Description: Deals seismic damage to nearby vehicles and structures. TooltipExtras: Strengths: • Strong vs Heavy Armor, Light Armor, Defenses, Buildings @@ -2912,6 +2935,102 @@ BGGY: WithProductionIconOverlay: Types: Veterancy Prerequisites: vehicles.upgraded + AmmoPool@Decoy: + Name: decoyspawner + Armaments: decoyspawner + AmmoCondition: ammo + WithAmmoPipsDecoration@Decoy: + Position: BottomLeft + Margin: 4, 3 + RequiresSelection: true + RequiresCondition: decoy-upgrade + ReloadAmmoPoolCA@Decoy: + AmmoPool: decoyspawner + Delay: 1000 + ShowSelectionBar: true + SelectionBarColor: aaaaaa + GrantTimedConditionOnDeploy@Decoy: + DeployedCondition: spawndecoy + RequiresCondition: decoy-upgrade && !(empdisable || being-warped) + ShowSelectionBar: false + StartsFullyCharged: true + DeployedTicks: 1 + CooldownTicks: 1000 + PeriodicExplosion@Decoy: + Weapon: DecoyBuggySpawner + RequiresCondition: spawndecoy && ammo + AmmoPoolName: decoyspawner + GrantConditionOnPrerequisite@Decoy: + Condition: decoy-upgrade + Prerequisites: decoy.upgrade + +BGGY.Decoy: + Inherits: BGGY + RenderSprites: + Image: bggy + DamageMultiplier@DECOY: + Modifier: 0 + Armament: + Weapon: M60mgTD.Decoy + Mobile: + PauseOnCondition: notmobile + -ActorLostNotification: + -Valued: + -Buildable: + -ProducibleWithLevel: + -WithProductionIconOverlay: + -IgnoresDisguise: + -DetectCloaked: + -RevealsShroud: + -RevealsShroud@GAPGEN: + -Repairable: + -Passenger: + -Berserkable@BERSERK: + -RejectsOrders@BERSERK: + -CaptureManager: + -Capturable: + -CaptureNotification: + -Capturable@DRIVER_DEAD: + -GrantConditionIfOwnerIsNeutral: + -ChangesHealth@DRIVER_DEAD: + -TooltipDescription@DRIVER_DEAD: + -Targetable@DRIVERKILL: + -Targetable@DRIVERKILLLOWHP: + -GrantConditionOnDamageState@DRIVERKILLLOWHP: + -Targetable@AICAPTURE: + -AmmoPool@Decoy: + -WithAmmoPipsDecoration@Decoy: + -ReloadAmmoPoolCA@Decoy: + -GrantTimedConditionOnDeploy@Decoy: + -PeriodicExplosion@Decoy: + -GrantConditionOnPrerequisite@Decoy: + GrantTimedCondition@Decoy: + Condition: active + Duration: 250 + GrantTimedCondition@DecoySpawn: + Condition: highlight + Duration: 1 + GrantDelayedCondition@DecoyDespawn: + Condition: highlight + Delay: 249 + KillsSelf: + RequiresCondition: !active + WithTextDecoration@Decoy: + Text: Decoy + ValidRelationships: Ally + Font: TinyBold + Position: Top + Margin: 0, 7 + TimedConditionBar@Decoy: + Condition: active + Color: ffffff + WithPalettedOverlay@Decoy: + Palette: decoy + ValidRelationships: Ally + Explodes: + Weapon: DecoyBuggyDespawn + EmptyWeapon: DecoyBuggyDespawn + -RequiresCondition: APC2: Inherits: ^TankTD @@ -3184,7 +3303,7 @@ LTNK: RenderSprites: Buildable: Queue: VehicleSQ, VehicleMQ - BuildPaletteOrder: 37 + BuildPaletteOrder: 35 IconPalette: chrometd Prerequisites: ~vehicles.ltnk, ~techlevel.low Description: Fast, light tank. @@ -3262,7 +3381,7 @@ MTNK: shadow: mtnk.nod Buildable: Queue: VehicleSQ, VehicleMQ - BuildPaletteOrder: 35 + BuildPaletteOrder: 34 Prerequisites: ~!bdrone.upgrade, ~vehicles.mtnk, ~techlevel.low IconPalette: chrometd Description: Main battle tank. @@ -3372,7 +3491,6 @@ MTNK.Drone: -FactionImages: Buildable: Queue: VehicleSQ, VehicleMQ - BuildPaletteOrder: 36 Prerequisites: ~bdrone.upgrade, ~vehicles.mtnk, ~techlevel.high IconPalette: chrometd Description: Remotely piloted battle tank. @@ -4500,7 +4618,7 @@ IFV: Buildable: Queue: VehicleSQ, VehicleMQ BuildPaletteOrder: 120 - Prerequisites: infantry.any, radarorrepair, ~vehicles.ifv, ~techlevel.medium + Prerequisites: infantry.any, radarorrepair, ~vehicles.allies, ~techlevel.medium Description: Adaptable infantry transport. Tooltip: Name: Infantry Fighting Vehicle @@ -4541,9 +4659,6 @@ IFV: Tooltip@acolturr: Name: Laser IFV RequiresCondition: acolturr - Tooltip@rmbcturr: - Name: Cyborg Elite IFV - RequiresCondition: rmbcturr Tooltip@snipturr: Name: Sniper IFV RequiresCondition: snipturr @@ -4553,6 +4668,33 @@ IFV: Tooltip@testurr: Name: Tesla IFV RequiresCondition: testurr + Tooltip@rmbcturr: + Name: Cyborg Elite IFV + RequiresCondition: rmbcturr + Tooltip@enliturr: + Name: Enlightened IFV + RequiresCondition: enliturr + Tooltip@bhturr: + Name: Black Hand IFV + RequiresCondition: bhturr + Tooltip@mortchemturr: + Name: Chemical Mortar IFV + RequiresCondition: mortchemturr + Tooltip@mortcryoturr: + Name: Cryo Mortar IFV + RequiresCondition: mortcryoturr + Tooltip@mortsonicturr: + Name: Sonic Mortar IFV + RequiresCondition: mortsonicturr + Tooltip@discturr: + Name: Intruder IFV + RequiresCondition: discturr + Tooltip@sharturr: + Name: Ravager IFV + RequiresCondition: sharturr + Tooltip@psyturr: + Name: Psychic IFV + RequiresCondition: psyturr TooltipExtras: Strengths: • Strong vs Aircraft, Heavy Armor Weaknesses: • Weak vs Infantry @@ -4722,11 +4864,20 @@ IFV: Weapon: RadBeamWeapon LocalOffset: 400,0,213 RequiresCondition: desoturr + Armament@ENLI: + Weapon: EnlightenedBeam + MuzzleSequence: muzzle + LocalOffset: 192,100,200, 192,-100,200 + RequiresCondition: enliturr Armament@RMBC: Weapon: CyCannon MuzzleSequence: muzzle - LocalOffset: 560,0,200 + LocalOffset: 192,100,200, 192,-100,200 RequiresCondition: rmbcturr + Armament@BH: + Weapon: BlackHandFlamer + LocalOffset: 150,0,150 + RequiresCondition: bhturr Armament@Heal: Weapon: Heal Cursor: heal @@ -4760,9 +4911,33 @@ IFV: Weapon: IFVLaser LocalOffset: 385,0,300 RequiresCondition: acolturr + Armament@Disc: + Weapon: IntruderDiscs + LocalOffset: 250,0,300 + RequiresCondition: discturr + Armament@Shard: + Weapon: ShardWalkerShards + LocalOffset: 250,0,300 + RequiresCondition: sharturr + Armament@ChemMortar: + Weapon: ChemicalMortar + LocalOffset: 150,0,500 + RequiresCondition: mortchemturr + Armament@CryoMortar: + Weapon: CryoMortar + LocalOffset: 150,0,500 + RequiresCondition: mortcryoturr + Armament@SonicMortar: + Weapon: SonicMortar + LocalOffset: 150,0,500 + RequiresCondition: mortsonicturr Armament@IVAN: Weapon: IvanIFVTargeting RequiresCondition: ivanturr + Armament@MC: + Weapon: PsychicBeamBATF + LocalOffset: 200,0,300 + RequiresCondition: psyturr AttackSoundsCA@REPAIRSOUND: Sounds: repair11.aud RequiresCondition: engturr @@ -4776,6 +4951,11 @@ IFV: Sequence: tesla PauseOnCondition: empdisable || being-warped RequiresCondition: testurr + WithIdleOverlay@PSY: + Sequence: psy + PauseOnCondition: empdisable || being-warped + RequiresCondition: psyturr + Palette: scrin AttackTurreted: PauseOnCondition: empdisable || being-warped RequiresCondition: !spyturr @@ -4800,7 +4980,7 @@ IFV: RequiresCondition: chemturr WithSpriteTurret@las: Sequence: turret7 - RequiresCondition: acolturr || rmbcturr + RequiresCondition: acolturr WithSpriteTurret@des: Sequence: turret8 RequiresCondition: desoturr @@ -4813,6 +4993,24 @@ IFV: WithSpriteTurret@snip: Sequence: turret11 RequiresCondition: snipturr + WithSpriteTurret@enli: + Sequence: turret12 + RequiresCondition: enliturr + WithSpriteTurret@rmbc: + Sequence: turret13 + RequiresCondition: rmbcturr + WithSpriteTurret@bh: + Sequence: turret14 + RequiresCondition: bhturr + WithSpriteTurret@disc: + Sequence: turret15 + RequiresCondition: discturr + WithSpriteTurret@shar: + Sequence: turret16 + RequiresCondition: sharturr + WithSpriteTurret@mort: + Sequence: turret17 + RequiresCondition: mortchemturr || mortcryoturr || mortsonicturr Cargo: Types: Infantry MaxWeight: 1 @@ -4836,7 +5034,9 @@ IFV: n6: engturr mech: engturr cmec: engturr - mort.chem: chemturr + mort.chem: mortchemturr + mort.cryo: mortcryoturr + mort.sonic: mortsonicturr shok: testurr rmbo: commturr bori: commturr @@ -4846,23 +5046,26 @@ IFV: snip: snipturr spy: spyturr thf: spyturr + hack: spyturr medi: medturr acol: acolturr tplr: acolturr - enli: acolturr + cscr: acolturr + enli: enliturr rmbc: rmbcturr s1: gunturr - s2: chemturr + s2: sharturr s3: samturr - s4: acolturr + s4: discturr s6: engturr smedi: medturr - mast: commturr - yuri: commturr + mast: psyturr + yuri: psyturr brst: ivanturr dog: spyturr + cdog: spyturr ivan: ivanturr - bh: flamturr + bh: bhturr shad: spyturr tecn: nochange c1: nochange @@ -4974,7 +5177,7 @@ IFV: GuardsSelection@SPY: RequiresCondition: spyturr && !stance-attackanything WithDecoration@COMMANDOSKULL: - RequiresCondition: commturr + RequiresCondition: commturr || psyturr -Targetable@HERO: WithDecoration@SEALSKULL: RequiresCondition: sealturr @@ -4987,6 +5190,15 @@ IFV: RequiresCondition: engturr || medturr || spyturr DamageTypeDamageMultiplier@A2GPROTECTION: RequiresCondition: !full || samturr + AmbientSoundCA: + SoundFiles: flamer-loop1.aud + InitialSound: flamer-start1.aud + FinalSound: flamer-end1.aud + RequiresCondition: bhturr && attacking + InitialSoundLength: 20 + GrantConditionOnAttackCA: + Condition: attacking + RevokeDelay: 3 IFV.AI: Inherits: ^Tank @@ -5127,6 +5339,69 @@ IFV.AI: ExternalCondition@CRYO: Condition: cryr-upgrade +RECK: + Inherits: IFV + RenderSprites: + Image: reck + Health: + HP: 30000 + Mobile: + Speed: 82 + Buildable: + BuildPaletteOrder: 700 + Prerequisites: infantry.any, radarorrepair, ~vehicles.reck + Tooltip: + Name: Reckoner + RequiresCondition: !full || nochange + Tooltip@gunturr: + Name: MG Reckoner + Tooltip@fragturr: + Name: Grenade Reckoner + Tooltip@samturr: + Name: Missile Reckoner + Tooltip@engturr: + Name: Repair Reckoner + Tooltip@commturr: + Name: Commando Reckoner + Tooltip@chemturr: + Name: Chemical Reckoner + Tooltip@medturr: + Name: Medical Reckoner + Tooltip@ivanturr: + Name: Explosive Reckoner + Tooltip@flamturr: + Name: Flamethrower Reckoner + Tooltip@spyturr: + Name: Spy Reckoner + Tooltip@sealturr: + Name: SEAL Reckoner + Tooltip@acolturr: + Name: Laser Reckoner + Tooltip@snipturr: + Name: Sniper Reckoner + Tooltip@desoturr: + Name: Desolator Reckoner + Tooltip@testurr: + Name: Tesla Reckoner + Tooltip@rmbcturr: + Name: Cyborg Elite Reckoner + Tooltip@enliturr: + Name: Enlightened Reckoner + Tooltip@bhturr: + Name: Black Hand Reckoner + Tooltip@mortchemturr: + Name: Chemical Mortar Reckoner + Tooltip@mortcryoturr: + Name: Cryo Mortar Reckoner + Tooltip@mortsonicturr: + Name: Sonic Mortar Reckoner + Tooltip@discturr: + Name: Intruder Reckoner + Tooltip@sharturr: + Name: Ravager Reckoner + Tooltip@psyturr: + Name: Psychic Reckoner + TITN: Inherits: ^TankTD Inherits@GAINSEXPERIENCE: ^GainsExperience @@ -5383,7 +5658,7 @@ TTRK: PlayerPalette: playertd Buildable: BuildPaletteOrder: 400 - Prerequisites: techcenter, ~vehicles.ttrk, ~techlevel.high + Prerequisites: techcenter.any, ~vehicles.ttrk, ~techlevel.high Description: Truck carrying a Tiberium bomb. TooltipExtras: Weaknesses: • Very weak armor @@ -6359,7 +6634,7 @@ MEMP: Queue: VehicleSQ, VehicleMQ BuildPaletteOrder: 410 IconPalette: chrometd - Prerequisites: techcenter, ~vehicles.memp, ~techlevel.high + Prerequisites: gtek, ~techlevel.high Description: Remotely piloted vehicle, deploys to disable nearby vehicles & structures. TooltipExtras: Strengths: • Strong vs Heavy Armor, Light Armor, Defenses, Buildings @@ -6725,6 +7000,181 @@ CRYO: Types: Veterancy Prerequisites: vehicles.upgraded +PBUL: + Inherits: ^VehicleTD + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Inherits@GAINSEXPERIENCE: ^GainsExperience + Inherits@BERSERK: ^Berserk + RenderSprites: + Buildable: + Queue: VehicleSQ, VehicleMQ + BuildPaletteOrder: 703 + IconPalette: chrometd + Prerequisites: anyradar, ~vehicles.pbul + Description: Fast scout & anti-tank vehicle with EMP rockets. + TooltipExtras: + Strengths: • Strong vs Heavy Armor, Defenses, Light Armor + Weaknesses: • Weak vs Infantry, Buildings\n• Cannot attack Aircraft + Attributes: • Can detect spies and cloaked units. + Valued: + Cost: 750 + Tooltip: + Name: Pitbull + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 17000 + Armor: + Type: Light + Mobile: + TurnSpeed: 40 + Speed: 130 + RevealsShroud: + MinRange: 6c0 + Range: 8c0 + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 6c0 + Turreted: + TurnSpeed: 40 + Offset: -200,0,0 + Armament: + Weapon: EMPRockets + LocalOffset: 0,-100,250, 0,100,250 + AttackTurreted: + PauseOnCondition: empdisable || being-warped + WithSpriteTurret: + Palette: player + IgnoresDisguise: + DetectCloaked: + Range: 6c0 + DetectionTypes: Cloak, Thief, AirCloak + RequiresCondition: !(empdisable || being-warped) + ProducibleWithLevel: + Prerequisites: vehicles.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: vehicles.upgraded + +MANT: + Inherits: ^VehicleTD + Inherits@GAINSEXPERIENCE: ^GainsExperience + Inherits@AUTOTARGET: ^AutoTargetAllAssaultMove + Inherits@BERSERK: ^Berserk + Buildable: + Queue: VehicleSQ, VehicleMQ + BuildPaletteOrder: 704 + Prerequisites: anyradar, ~vehicles.mant + Description: Tracked vehicle armed with anti-aircraft laser cannons. + IconPalette: chrometd + TooltipExtras: + Strengths: • Strong vs Aircraft + Weaknesses: • Cannot attack ground targets + Valued: + Cost: 1000 + Selectable: + DecorationBounds: 1194, 1194 + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 30000 + Armor: + Type: Heavy + Mobile: + Speed: 80 + TurnSpeed: 16 + Tooltip: + Name: Mantis + WithMoveAnimation: + ValidMovementTypes: Horizontal, Vertical, Turn + RevealsShroud: + MinRange: 4c0 + Range: 6c0 + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 4c0 + Armament@PRIMARY: + Weapon: MantisLaser + LocalOffset: 0,-50,400, 0,50,400 + MuzzleSequence: muzzle + MuzzlePalette: caneon + AttackFrontal: + PauseOnCondition: empdisable || being-warped + FacingTolerance: 24 + WithMuzzleOverlay: + ProducibleWithLevel: + Prerequisites: vehicles.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: vehicles.upgraded + +VIPR: + Inherits: ^VehicleTD + Inherits@GAINSEXPERIENCE: ^GainsExperience + Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove + Inherits@BERSERK: ^Berserk + Inherits@HOVERTRAIL: ^HoverTrail + Buildable: + Queue: VehicleSQ, VehicleMQ + BuildPaletteOrder: 705 + Prerequisites: anyradar, ~stolentech.wsph + Description: Medium hover tank. + IconPalette: chrometd + TooltipExtras: + Strengths: • Strong vs Heavy Armor, Light Armor, Defenses + Weaknesses: • Weak vs Buildings, Infantry\n• Cannot attack Aircraft + Valued: + Cost: 1350 + Tooltip: + Name: Viper + Selectable: + DecorationBounds: 1194, 1194 + UpdatesPlayerStatistics: + AddToArmyValue: true + Health: + HP: 24000 + Armor: + Type: Light + Mobile: + TurnSpeed: 512 + Speed: 82 + Locomotor: lighthover + Hovers: + BobDistance: -25 + RequiresCondition: !empdisable && !being-warped && !driver-dead + RevealsShroud: + MinRange: 4c0 + Range: 6c0 + RevealGeneratedShroud: False + RevealsShroud@GAPGEN: + Range: 4c0 + Armament@PRIMARY: + Weapon: ViperLaser + LocalOffset: 750,0,208 + MuzzleSequence: muzzle + MuzzlePalette: caneon + WithMuzzleOverlay: + ProducibleWithLevel: + Prerequisites: vehicles.upgraded + WithProductionIconOverlay: + Types: Veterancy + Prerequisites: vehicles.upgraded + TurretedFloating: + TurnSpeed: 16 + Offset: 0,0,0 + RealignDelay: 100 + AttackTurreted: + PauseOnCondition: empdisable || being-warped + WithSpriteTurret: + GrantConditionOnTerrain@ONWATER: + TerrainTypes: Water + Condition: onwater + KillsSelf@SINK: + RequiresCondition: onwater && (empdisable || driver-dead) + Targetable@ONWATER: + TargetTypes: Water, Ship + RequiresCondition: onwater + APOC: Inherits: ^Tank Inherits@GAINSEXPERIENCE: ^GainsExperience diff --git a/mods/ca/rules/world.yaml b/mods/ca/rules/world.yaml index 54643ec312..d2772fb935 100644 --- a/mods/ca/rules/world.yaml +++ b/mods/ca/rules/world.yaml @@ -318,7 +318,7 @@ Name: ARC InternalName: arc Side: GDI - Description: Advanced Robotics Command: Robotics\n Units:\n • Mini Drone\n • Guardian Drone (replaces Hum-Vee)\n\n Powers:\n • Nanite Repair\n\n Upgrades:\n • Mammoth Drone (replaces Mammoth Tank)\n • Battle Drone (replaces Battle Tank)\n\n Bonuses:\n • Recon Drone (-20% Cooldown)\n • Mobile Sensor Array (20% Discount)\n • Drone Carrier (10% Discount) + Description: Advanced Robotics Command: Robotics\n Units:\n • Mini Drone\n • Guardian Drone (replaces Hum-Vee)\n\n Powers:\n • Nanite Repair\n\n Upgrades:\n • Mammoth Drone (replaces Mammoth Tank)\n • Battle Drone (replaces Battle Tank)\n\n Bonuses:\n • Recon Drone (-20% Cooldown)\n • Mobile Sensor Array (20% Discount)\n • Drone Carrier (10% Discount)\n • Additional Comms. Centers (-50% Discount) Faction@12: Name: Nod InternalName: nod diff --git a/mods/ca/sequences/aircraft.yaml b/mods/ca/sequences/aircraft.yaml index a21493e208..e2af80b462 100644 --- a/mods/ca/sequences/aircraft.yaml +++ b/mods/ca/sequences/aircraft.yaml @@ -509,3 +509,71 @@ auro: UseClassicFacings: True icon: Filename: auroicnh.shp + +pmak: + Inherits: ^VehicleOverlays + idle: + Filename: pmak.shp + Facings: 32 + icon: + Filename: pmakicon.shp + +beag: + Inherits: ^VehicleOverlays + idle: + Filename: beag.shp + Facings: 32 + UseClassicFacings: True + icon: + Filename: beagicon.shp + +acho: + Inherits: ^VehicleOverlays + idle: + Filename: acho.shp + Facings: 32 + UseClassicFacings: True + rotor: + Filename: lrotorlg.shp + Length: 4 + slow-rotor: + Filename: lrotorlg.shp + Start: 4 + Length: 8 + muzzle: + Filename: minigun16.shp + Length: 6 + Facings: 16 + icon: + Filename: achoicon.shp + +shde: + Inherits: ^VehicleOverlays + idle: + Filename: shde.shp + Facings: 32 + UseClassicFacings: True + icon: + Filename: shdeicnh.shp + +vert: + Inherits: ^VehicleOverlays + idle: + Filename: vert.shp + Facings: 32 + UseClassicFacings: True + icon: + Filename: verticnh.shp + +mcor: + Inherits: ^VehicleOverlays + idle: + Filename: mcor.shp + Facings: 32 + UseClassicFacings: True + muzzle: + Frames: 0,1,2,1,2,1,2,3 + Filename: lasermuzzle.shp + Length: * + icon: + Filename: mcoricnh.shp diff --git a/mods/ca/sequences/misc.yaml b/mods/ca/sequences/misc.yaml index e690d4d6c5..a9ab1bb065 100644 --- a/mods/ca/sequences/misc.yaml +++ b/mods/ca/sequences/misc.yaml @@ -86,6 +86,9 @@ explosion: Filename: wpifpif.shp small_explosion: Filename: veh-hit3.shp + small_air_explosion: + Filename: veh-hit2.shp + Scale: 0.5 med_explosion: Filename: veh-hit2.shp flak_explosion_ground: @@ -2874,6 +2877,12 @@ hacked: Start: 4 Length: 2 Tick: 250 + techlocked: + Filename: hacked.shp + ZOffset: 2047 + Start: 6 + Length: 2 + Tick: 500 hacking: hacking: @@ -2934,3 +2943,29 @@ microwavehit: Length: * ZOffset: 2047 BlendMode: Additive + +opticsactive: + idle: + Filename: opticsactive.shp + Tick: 500 + Length: * + +redplasmatorp: + Defaults: + IgnoreWorldTint: true + Alpha: 0.95 + idle: + Filename: redplasmatorp.shp + Length: 5 + Tick: 40 + ZOffset: 2048 + +veilblast: + Defaults: + IgnoreWorldTint: true + Length: * + Tick: 40 + ZOffset: 2047 + Filename: veilblast.shp + Alpha: 0.8 + idle: diff --git a/mods/ca/sequences/upgrades.yaml b/mods/ca/sequences/upgrades.yaml index 789d33c699..055f117821 100644 --- a/mods/ca/sequences/upgrades.yaml +++ b/mods/ca/sequences/upgrades.yaml @@ -126,6 +126,10 @@ tibcore.upgrade: icon: Filename: upg-tibcoreicon.shp +decoy.upgrade: + icon: + Filename: upg-decoyicon.shp + sidewinders.upgrade: icon: Filename: upg-sidewindersicnh.shp @@ -226,6 +230,10 @@ cryr.upgrade: icon: Filename: upg-cryricon.shp +optics.upgrade: + icon: + Filename: upg-advopticsicon.shp + entrench.upgrade: icon: Filename: upg-entrenchicon.shp diff --git a/mods/ca/sequences/vehicles.yaml b/mods/ca/sequences/vehicles.yaml index 890caba7f5..6156af8a4d 100644 --- a/mods/ca/sequences/vehicles.yaml +++ b/mods/ca/sequences/vehicles.yaml @@ -1645,6 +1645,10 @@ ifv: Filename: bttnk.shp Start: 32 Length: 32 + psy: + Filename: ifvtur.shp + Start: 544 + Length: 1 turret: Filename: ifvtur.shp Facings: 32 @@ -1699,6 +1703,38 @@ ifv: Start: 352 Facings: 32 UseClassicFacings: True + turret12: + Filename: ifvtur.shp + Start: 384 + Facings: 32 + UseClassicFacings: True + turret13: + Filename: ifvtur.shp + Start: 416 + Facings: 32 + UseClassicFacings: True + turret14: + Filename: ifvtur.shp + Start: 448 + Facings: 32 + UseClassicFacings: True + turret15: + Filename: seek.shp + Start: 32 + Facings: 32 + UseClassicFacings: True + Offset: 0, 1 + turret16: + Filename: ifvtur.shp + Start: 480 + Facings: 32 + UseClassicFacings: True + Offset: 0, 1 + turret17: + Filename: ifvtur.shp + Start: 512 + Facings: 32 + UseClassicFacings: True open: Filename: ifv.shp Start: 32 @@ -2276,6 +2312,84 @@ apoci: icon: Filename: apociicon.shp + +reck: + Inherits: ifv + idle: + Filename: reck.shp + open: + Filename: reck.shp + Start: 3 + Length: 1 + unload: + Filename: reck.shp + Start: 3 + Length: 1 + icon: + Filename: reckicon.shp + +reck.destroyed: + Inherits: ifv.destroyed + idle: + Filename: reck.shp + +pbul: + Inherits: ^VehicleOverlays + idle: + Filename: pbul.shp + Facings: 32 + UseClassicFacings: True + turret: + Filename: ifvtur.shp + Facings: 32 + UseClassicFacings: True + icon: + Filename: pbulicnh.shp + +mant: + Inherits: ^VehicleOverlays + idle: + Filename: mant.shp + Facings: 32 + Stride: 2 + UseClassicFacings: True + move: + Filename: mant.shp + Facings: 32 + Length: 2 + Tick: 80 + UseClassicFacings: True + muzzle: + Filename: lasermuzzle.shp + Length: * + icon: + Filename: manticnh.shp + +mant.destroyed: + Inherits: ^VehicleOverlays + idle: + Filename: mant.shp + Facings: 32 + UseClassicFacings: True + ZOffset: -512 + +vipr: + Inherits: ^VehicleOverlays + idle: + Filename: vipr.shp + Facings: 1 + Start: 32 + turret: + Filename: vipr.shp + Facings: 32 + UseClassicFacings: True + muzzle: + Filename: lasermuzzle.shp + Frames: 0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1 + Length: * + icon: + Filename: vipricnh.shp + rhin: Inherits: ^VehicleOverlays idle: diff --git a/mods/ca/weapons/ballistics.yaml b/mods/ca/weapons/ballistics.yaml index f6f8d794f4..ca3f4da414 100644 --- a/mods/ca/weapons/ballistics.yaml +++ b/mods/ca/weapons/ballistics.yaml @@ -152,8 +152,9 @@ Inherits: 125mm Report: vrhiatta.aud, vrhiattb.aud, vrhiattc.aud, vrhiattd.aud Burst: 1 + ReloadDelay: 75 Warhead@1Dam: SpreadDamage - Damage: 6250 + Damage: 9250 125mmLasher: Inherits: 125mm @@ -702,6 +703,7 @@ ShadowGliderGrenade: Light: 45 Heavy: 45 Concrete: 40 + DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath Warhead@4EffWater: CreateEffect Explosions: small_splash ImpactSounds: splashm1.aud, splashm2.aud, splashm3.aud @@ -774,7 +776,6 @@ SonicMortar: Light: 60 Heavy: 30 Concrete: 100 - DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath Warhead@concussion: GrantExternalCondition Condition: concussion Duration: 75 @@ -783,6 +784,8 @@ SonicMortar: Explosions: sonicimpact ExplosionPalette: effect ImpactSounds: sonicmortarhit1.aud, sonicmortarhit2.aud + Warhead@4Eff: CreateEffect + Explosions: med_explosion DepthCharge: Inherits: ^Artillery diff --git a/mods/ca/weapons/missiles.yaml b/mods/ca/weapons/missiles.yaml index 41666503fc..a858238181 100644 --- a/mods/ca/weapons/missiles.yaml +++ b/mods/ca/weapons/missiles.yaml @@ -821,6 +821,43 @@ TOW: Concrete: 30 Light: 40 +EMPRockets: + Inherits: ^AntiGroundMissile + Range: 6c0 + Report: pitbull-fire1.aud, pitbull-fire2.aud + ReloadDelay: 60 + -Projectile: + Projectile: Bullet + Inaccuracy: 192 + Image: dragon + Speed: 240 + LaunchAngle: 70 + TrailImage: smokey + Shadow: true + Blockable: false + ContrailLength: 17 + ContrailStartColor: 6c6cd4aa + ContrailStartColorAlpha: 170 + ContrailStartWidth: 0c48 + Warhead@1Dam: SpreadDamage + Damage: 5000 + Versus: + Wood: 40 + Concrete: 30 + Light: 60 + Warhead@Emp: GrantExternalCondition + Range: 0c768 + Duration: 40 + Condition: empdisable + ValidTargets: Ground, Structure, Vehicle + Warhead@4Eff: CreateEffect + Explosions: med_explosion + Warhead@6Eff: CreateEffect + Image: sparks_overlay + Explosions: idle + ExplosionPalette: tseffect-ignore-lighting-alpha75 + ImpactSounds: expnew16.aud + TorpTube: ReloadDelay: 100 Range: 9c0 @@ -1783,7 +1820,7 @@ Rah66AA: ExplosionPalette: caneon Image: tibexplodeair ImpactSounds: firebl3.aud - ValidTargets: Air + ValidTargets: Air, AirSmall Inaccuracy: 682 Rah66AA.BlackHand: @@ -2049,6 +2086,50 @@ Rocket.P51.L: Inherits: Rocket.P51.R FirstBurstTargetOffset: -1024,613,0 +BlackEagleMissiles: + Inherits: Maverick + Report: beag-fire1.aud, beag-fire2.aud + -Burst: + -BurstDelays: + Projectile: MissileCA + Image: MISSILE + Warhead@1Dam: SpreadDamage + Damage: 22000 + Versus: + Concrete: 75 + Warhead@VeiledCondition: GrantExternalCondition + Range: 2c512 + Duration: 175 + Condition: gapveiled + ValidTargets: Infantry, Vehicle, Ship + Warhead@3Eff: CreateEffect + Explosions: idle + Image: veilblast + ExplosionPalette: effect + ImpactSounds: veilblast.aud + ValidTargets: Ground, Air, Ship, Trees + +BlackEagleMissilesAA: + Inherits: MaverickAA + Report: beag-fire1.aud, beag-fire2.aud + -Burst: + -BurstDelays: + Projectile: MissileCA + Image: MISSILE + Warhead@1Dam: SpreadDamage + Damage: 12000 + Warhead@VeiledCondition: GrantExternalCondition + Range: 2c512 + Duration: 175 + Condition: gapveiled + ValidTargets: Air, AirSmall + Warhead@3Eff: CreateEffect + Explosions: idle + Image: veilblast + ExplosionPalette: effect + ImpactSounds: veilblast.aud + ValidTargets: Ground, Air, Ship, Trees + RocketShells: Inherits: JuggernautGun -StartBurstReport: diff --git a/mods/ca/weapons/other.yaml b/mods/ca/weapons/other.yaml index 609eb48e82..7d889eb2c2 100644 --- a/mods/ca/weapons/other.yaml +++ b/mods/ca/weapons/other.yaml @@ -2826,3 +2826,152 @@ MineDefuserCharger: ValidTargets: Mine -Warhead@1Def: -Warhead@3Eff: + +DecoyBuggySpawner: + ReloadDelay: 1 + Projectile: InstantExplode + Report: decoyspawn.aud + Warhead@Spawn: SpawnActor + Actors: bggy.decoy + Range: 2 + ForceGround: false + MatchSourceFacing: true + ValidTargets: Ground, Water, Trees + +DecoyBuggyDespawn: + Report: decoydespawn.aud + Projectile: InstantHit + Warhead@Dummy: Dummy + +MantisLaser: + Inherits: Laser + Burst: 2 + BurstDelays: 5 + ReloadDelay: 10 + ValidTargets: Air, AirSmall + Range: 7c512 + Report: mantis-fire1.aud, mantis-fire2.aud + Projectile: LaserZapCA + Width: 42 + SecondaryBeamWidth: 75 + -HitAnim: + Warhead@1Dam: SpreadDamage + ValidTargets: Air, AirSmall + Damage: 2250 + Warhead@3Eff: CreateEffect + Explosions: small_air_explosion + Inaccuracy: 256 + ValidTargets: Air, AirSmall + +ViperLaser: + Inherits: DevourerLaser + Report: viper-fire1.aud + Projectile: PlasmaBeam + Colors: ff0000E6, cc0000E6 + +ShadeEmp: + Inherits: EnlightenedEmp + ReloadDelay: 100 + Range: 7c0 + Report: enli-empfire.aud + Projectile: Bullet + Inaccuracy: 64 + Blockable: false + Shadow: true + Speed: 384 + LaunchAngle: 0 + Image: enliempproj + Palette: effect + TrailImage: smokey + TrailPalette: scrinplasma + ContrailLength: 17 + ContrailStartColor: 6c6cd4aa + ContrailStartColorAlpha: 170 + ContrailStartWidth: 0c48 + Warhead@1Dam: SpreadDamage + Spread: 341 + Damage: 15000 + ValidTargets: Ground, Water + Versus: + None: 75 + Wood: 50 + Light: 80 + Heavy: 100 + Concrete: 75 + Brick: 5 + DamageTypes: Prone50Percent, TriggerProne, ElectricityDeath, AirToGround + Warhead@1Emp: GrantExternalCondition + Range: 1c256 + Duration: 325 + Condition: empdisable + ValidTargets: Ground, Vehicle, Defense + InvalidTargets: Cyborg + Warhead@2Emp: GrantExternalCondition + Range: 1c256 + Duration: 125 + Condition: empdisable + ValidTargets: Cyborg + Warhead@3Eff_impact: CreateEffect + Explosions: enliemphit1, enliemphit2 + ImpactSounds: enli-emphit.aud + Inaccuracy: 341 + +ManticoreBolts: + Inherits: DevastatorDiscs + Report: mcor-fire1.aud, mcor-fire2.aud + ReloadDelay: 150 + Burst: 4 + Range: 14c0 + Projectile: Bullet + Image: redplasmatorp + Palette: caneon + Inaccuracy: 1c0 + +VertigoBomb: + Inherits: JDAM + Report: vert-bomb1.aud + Warhead@3Eff: CreateEffect + ImpactSounds: vert-bombhit1.aud, vert-bombhit2.aud + +PeacemakerBombs: + ReloadDelay: 6 + Range: 2c0 + Report: chute1.aud + Projectile: GravityBomb + Image: B2BOMB + Velocity: 20, 0, -60 + Acceleration: 0, 0, 0 + Shadow: true + Warhead@1Dam: SpreadDamage + Spread: 1c0 + Damage: 25000 + Versus: + None: 0 + Wood: 30 + Light: 70 + Heavy: 100 + Concrete: 55 + DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath, TankBuster, AirToGround + Warhead@2Dam: SpreadDamage + Spread: 512 + Damage: 25000 + Versus: + None: 25 + Wood: 0 + Light: 0 + Heavy: 0 + Concrete: 0 + Brick: 0 + DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath + Warhead@2Smu: LeaveSmudge + SmudgeType: Crater + InvalidTargets: Vehicle, Structure, Wall, Husk, Trees + Warhead@3Eff: CreateEffect + Explosions: building, building2 + ImpactSounds: kaboom25.aud + ValidTargets: Ground, Ship, Trees + Warhead@4EffWater: CreateEffect + Explosions: small_splash + ImpactSounds: splash9.aud + ValidTargets: Water, Underwater + InvalidTargets: Ship, Structure diff --git a/mods/ca/weapons/smallcaliber.yaml b/mods/ca/weapons/smallcaliber.yaml index c8735a21da..6be4ce8a4a 100644 --- a/mods/ca/weapons/smallcaliber.yaml +++ b/mods/ca/weapons/smallcaliber.yaml @@ -539,6 +539,11 @@ M60mgTD: Inherits: M60mg Report: m60.aud +M60mgTD.Decoy: + Inherits: M60mgTD + Warhead@1Dam: SpreadDamage + Damage: 0 + M60mgXO: Inherits: M60mgTD Range: 6c0