Merge pull request #8527 from pchote/split-vis-origins
Introduce new options for shroud visibility and revealing.
This commit is contained in:
@@ -183,21 +183,6 @@ namespace OpenRA.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Actor vis will be split into separate cases for
|
|
||||||
// "cells that I reveal from" and "cells that reveal me"
|
|
||||||
public static IEnumerable<CPos> GetVisOrigins(Actor a)
|
|
||||||
{
|
|
||||||
var ios = a.OccupiesSpace;
|
|
||||||
if (ios != null)
|
|
||||||
{
|
|
||||||
var cells = ios.OccupiedCells();
|
|
||||||
if (cells.Any())
|
|
||||||
return cells.Select(c => c.First);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new[] { a.World.Map.CellContaining(a.CenterPosition) };
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Explore(World world, IEnumerable<CPos> cells)
|
public void Explore(World world, IEnumerable<CPos> cells)
|
||||||
{
|
{
|
||||||
var changed = new HashSet<CPos>();
|
var changed = new HashSet<CPos>();
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.GameRules;
|
using OpenRA.GameRules;
|
||||||
|
using OpenRA.Mods.Common.Traits;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Lint
|
namespace OpenRA.Mods.Common.Lint
|
||||||
@@ -30,6 +31,18 @@ namespace OpenRA.Mods.Common.Lint
|
|||||||
emitError("Actor type `{0}` does not define a default visibility type!".F(actorInfo.Key));
|
emitError("Actor type `{0}` does not define a default visibility type!".F(actorInfo.Key));
|
||||||
else if (count > 1)
|
else if (count > 1)
|
||||||
emitError("Actor type `{0}` defines multiple default visibility types!".F(actorInfo.Key));
|
emitError("Actor type `{0}` defines multiple default visibility types!".F(actorInfo.Key));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var vis = actorInfo.Value.Traits.GetOrDefault<HiddenUnderShroudInfo>();
|
||||||
|
if (vis != null && vis.Type == VisibilityType.Footprint)
|
||||||
|
{
|
||||||
|
var ios = actorInfo.Value.Traits.GetOrDefault<IOccupySpaceInfo>();
|
||||||
|
if (ios == null)
|
||||||
|
emitError("Actor type `{0}` defines VisibilityType.Footprint in `{1}` but has no IOccupySpace traits!".F(actorInfo.Key, vis.GetType()));
|
||||||
|
else if (!ios.OccupiedCells(actorInfo.Value, CPos.Zero).Any())
|
||||||
|
emitError("Actor type `{0}` defines VisibilityType.Footprint in `{1}` but does not have any footprint cells!".F(actorInfo.Key, vis.GetType()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
42
OpenRA.Mods.Common/Lint/CheckRevealFootprint.cs
Normal file
42
OpenRA.Mods.Common/Lint/CheckRevealFootprint.cs
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2015 The OpenRA Developers (see AUTHORS)
|
||||||
|
* This file is part of OpenRA, which is free software. It is made
|
||||||
|
* available to you under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation. For more information,
|
||||||
|
* see COPYING.
|
||||||
|
*/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using OpenRA.GameRules;
|
||||||
|
using OpenRA.Mods.Common.Traits;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.Lint
|
||||||
|
{
|
||||||
|
class CheckRevealFootprint : ILintPass
|
||||||
|
{
|
||||||
|
public void Run(Action<string> emitError, Action<string> emitWarning, Map map)
|
||||||
|
{
|
||||||
|
foreach (var actorInfo in map.Rules.Actors)
|
||||||
|
{
|
||||||
|
if (actorInfo.Key.StartsWith("^"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var ios = actorInfo.Value.Traits.GetOrDefault<IOccupySpaceInfo>();
|
||||||
|
foreach (var rsi in actorInfo.Value.Traits.WithInterface<RevealsShroudInfo>())
|
||||||
|
{
|
||||||
|
if (rsi.Type == VisibilityType.CenterPosition)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (ios == null)
|
||||||
|
emitError("Actor type `{0}` defines VisibilityType.Footprint in `{1}` but has no IOccupySpace traits!".F(actorInfo.Key, rsi.GetType()));
|
||||||
|
else if (!ios.OccupiedCells(actorInfo.Value, CPos.Zero).Any())
|
||||||
|
emitError("Actor type `{0}` defines VisibilityType.Footprint in `{1}` but does not have any footprint cells!".F(actorInfo.Key, rsi.GetType()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -688,6 +688,7 @@
|
|||||||
<Compile Include="Traits\Modifiers\AlwaysVisible.cs" />
|
<Compile Include="Traits\Modifiers\AlwaysVisible.cs" />
|
||||||
<Compile Include="Traits\CreatesShroud.cs" />
|
<Compile Include="Traits\CreatesShroud.cs" />
|
||||||
<Compile Include="Traits\RevealsShroud.cs" />
|
<Compile Include="Traits\RevealsShroud.cs" />
|
||||||
|
<Compile Include="Lint\CheckRevealFootprint.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -28,10 +28,11 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
protected override bool IsVisibleInner(Actor self, Player byPlayer)
|
protected override bool IsVisibleInner(Actor self, Player byPlayer)
|
||||||
{
|
{
|
||||||
if (!VisibilityFootprint(self).Any(byPlayer.Shroud.IsVisible))
|
if (Info.Type == VisibilityType.Footprint)
|
||||||
return false;
|
return self.OccupiesSpace.OccupiedCells()
|
||||||
|
.Any(o => byPlayer.Shroud.IsVisible(o.First));
|
||||||
|
|
||||||
return base.IsVisibleInner(self, byPlayer);
|
return byPlayer.Shroud.IsVisible(self.CenterPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,32 +15,37 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
|
public enum VisibilityType { Footprint, CenterPosition }
|
||||||
|
|
||||||
[Desc("The actor stays invisible under the shroud.")]
|
[Desc("The actor stays invisible under the shroud.")]
|
||||||
public class HiddenUnderShroudInfo : ITraitInfo, IDefaultVisibilityInfo
|
public class HiddenUnderShroudInfo : ITraitInfo, IDefaultVisibilityInfo
|
||||||
{
|
{
|
||||||
[Desc("Players with these stances can always see the actor.")]
|
[Desc("Players with these stances can always see the actor.")]
|
||||||
public readonly Stance AlwaysVisibleStances = Stance.Ally;
|
public readonly Stance AlwaysVisibleStances = Stance.Ally;
|
||||||
|
|
||||||
|
[Desc("Possible values are CenterPosition (reveal when the center is visible) and ",
|
||||||
|
"Footprint (reveal when any footprint cell is visible).")]
|
||||||
|
public readonly VisibilityType Type = VisibilityType.Footprint;
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new HiddenUnderShroud(this); }
|
public virtual object Create(ActorInitializer init) { return new HiddenUnderShroud(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class HiddenUnderShroud : IDefaultVisibility, IRenderModifier
|
public class HiddenUnderShroud : IDefaultVisibility, IRenderModifier
|
||||||
{
|
{
|
||||||
readonly HiddenUnderShroudInfo info;
|
protected readonly HiddenUnderShroudInfo Info;
|
||||||
|
|
||||||
public HiddenUnderShroud(HiddenUnderShroudInfo info)
|
public HiddenUnderShroud(HiddenUnderShroudInfo info)
|
||||||
{
|
{
|
||||||
this.info = info;
|
Info = info;
|
||||||
}
|
|
||||||
|
|
||||||
protected IEnumerable<CPos> VisibilityFootprint(Actor self)
|
|
||||||
{
|
|
||||||
return Shroud.GetVisOrigins(self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual bool IsVisibleInner(Actor self, Player byPlayer)
|
protected virtual bool IsVisibleInner(Actor self, Player byPlayer)
|
||||||
{
|
{
|
||||||
return VisibilityFootprint(self).Any(byPlayer.Shroud.IsExplored);
|
if (Info.Type == VisibilityType.Footprint)
|
||||||
|
return self.OccupiesSpace.OccupiedCells()
|
||||||
|
.Any(o => byPlayer.Shroud.IsExplored(o.First));
|
||||||
|
|
||||||
|
return byPlayer.Shroud.IsExplored(self.CenterPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsVisible(Actor self, Player byPlayer)
|
public bool IsVisible(Actor self, Player byPlayer)
|
||||||
@@ -49,7 +54,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
var stance = self.Owner.Stances[byPlayer];
|
var stance = self.Owner.Stances[byPlayer];
|
||||||
return info.AlwaysVisibleStances.HasFlag(stance) || IsVisibleInner(self, byPlayer);
|
return Info.AlwaysVisibleStances.HasFlag(stance) || IsVisibleInner(self, byPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
|
public IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r)
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
public readonly WRange Range = WRange.Zero;
|
public readonly WRange Range = WRange.Zero;
|
||||||
|
|
||||||
|
[Desc("Possible values are CenterPosition (measure range from the center) and ",
|
||||||
|
"Footprint (measure range from the footprint)")]
|
||||||
|
public readonly VisibilityType Type = VisibilityType.Footprint;
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new RevealsShroud(init.Self, this); }
|
public virtual object Create(ActorInitializer init) { return new RevealsShroud(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,9 +55,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (range == WRange.Zero)
|
if (range == WRange.Zero)
|
||||||
return NoCells;
|
return NoCells;
|
||||||
|
|
||||||
return Shroud.GetVisOrigins(self)
|
if (info.Type == VisibilityType.Footprint)
|
||||||
.SelectMany(c => Shroud.CellsInRange(map, c, range))
|
return self.OccupiesSpace.OccupiedCells()
|
||||||
|
.SelectMany(kv => Shroud.CellsInRange(map, kv.First, range))
|
||||||
.Distinct().ToArray();
|
.Distinct().ToArray();
|
||||||
|
|
||||||
|
return Shroud.CellsInRange(map, self.CenterPosition, range)
|
||||||
|
.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Tick(Actor self)
|
public void Tick(Actor self)
|
||||||
|
|||||||
@@ -1206,6 +1206,21 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// VisibilityType was introduced
|
||||||
|
if (engineVersion < 20150704)
|
||||||
|
{
|
||||||
|
if (depth == 0 && node.Value.Nodes.Exists(n => n.Key == "Helicopter" || n.Key == "Plane" || n.Key == "Immobile"))
|
||||||
|
{
|
||||||
|
var visibility = node.Value.Nodes.FirstOrDefault(n => n.Key == "HiddenUnderShroud" || n.Key == "HiddenUnderFog");
|
||||||
|
if (visibility != null)
|
||||||
|
visibility.Value.Nodes.Add(new MiniYamlNode("Type", "CenterPosition"));
|
||||||
|
|
||||||
|
var reveals = node.Value.Nodes.FirstOrDefault(n => n.Key == "RevealsShroud");
|
||||||
|
if (reveals != null)
|
||||||
|
reveals.Value.Nodes.Add(new MiniYamlNode("Type", "CenterPosition"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ TRAN:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
WithRotor@PRIMARY:
|
WithRotor@PRIMARY:
|
||||||
Offset: -597,0,171
|
Offset: -597,0,171
|
||||||
Sequence: rotor2
|
Sequence: rotor2
|
||||||
@@ -61,6 +62,7 @@ HELI:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: HeliAGGun
|
Weapon: HeliAGGun
|
||||||
LocalOffset: 128,-213,-85, 128,213,-85
|
LocalOffset: 128,-213,-85, 128,213,-85
|
||||||
@@ -111,6 +113,7 @@ ORCA:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: OrcaAGMissiles
|
Weapon: OrcaAGMissiles
|
||||||
LocalOffset: 427,-171,-213, 427,171,-213
|
LocalOffset: 427,-171,-213, 427,171,-213
|
||||||
@@ -155,6 +158,7 @@ C17:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
AlwaysVisibleStances: None
|
AlwaysVisibleStances: None
|
||||||
|
Type: CenterPosition
|
||||||
Cargo:
|
Cargo:
|
||||||
MaxWeight: 10
|
MaxWeight: 10
|
||||||
PipCount: 10
|
PipCount: 10
|
||||||
@@ -216,6 +220,7 @@ TRAN.Husk:
|
|||||||
Speed: 140
|
Speed: 140
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
|
Type: CenterPosition
|
||||||
WithRotor@PRIMARY:
|
WithRotor@PRIMARY:
|
||||||
Offset: -597,0,171
|
Offset: -597,0,171
|
||||||
WithRotor@SECONDARY:
|
WithRotor@SECONDARY:
|
||||||
@@ -232,6 +237,7 @@ HELI.Husk:
|
|||||||
Speed: 186
|
Speed: 186
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
WithRotor:
|
WithRotor:
|
||||||
Offset: 0,0,85
|
Offset: 0,0,85
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
@@ -246,6 +252,7 @@ ORCA.Husk:
|
|||||||
Speed: 186
|
Speed: 186
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: orca
|
Image: orca
|
||||||
|
|
||||||
|
|||||||
@@ -367,7 +367,7 @@ BRIDGE4:
|
|||||||
SpawnOffset: 3,2
|
SpawnOffset: 3,2
|
||||||
|
|
||||||
BRIDGEHUT:
|
BRIDGEHUT:
|
||||||
HiddenUnderShroud:
|
AlwaysVisible:
|
||||||
Building:
|
Building:
|
||||||
Footprint: __ __
|
Footprint: __ __
|
||||||
Dimensions: 2,2
|
Dimensions: 2,2
|
||||||
|
|||||||
@@ -107,6 +107,7 @@
|
|||||||
RearmBuildings:
|
RearmBuildings:
|
||||||
LandWhenIdle: false
|
LandWhenIdle: false
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
ActorLostNotification:
|
ActorLostNotification:
|
||||||
Explodes:
|
Explodes:
|
||||||
Weapon: HeliExplode
|
Weapon: HeliExplode
|
||||||
@@ -354,6 +355,7 @@
|
|||||||
AppearsOnRadar:
|
AppearsOnRadar:
|
||||||
UseLocation: yes
|
UseLocation: yes
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
ActorLostNotification:
|
ActorLostNotification:
|
||||||
AttackMove:
|
AttackMove:
|
||||||
WithShadow:
|
WithShadow:
|
||||||
@@ -592,6 +594,7 @@
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
WithFacingSpriteBody:
|
WithFacingSpriteBody:
|
||||||
@@ -631,7 +634,7 @@
|
|||||||
GenericName: Destroyed Helicopter
|
GenericName: Destroyed Helicopter
|
||||||
|
|
||||||
^Bridge:
|
^Bridge:
|
||||||
HiddenUnderShroud:
|
AlwaysVisible:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Bridge
|
Name: Bridge
|
||||||
TargetableBuilding:
|
TargetableBuilding:
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ CAMERA:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|
||||||
CAMERA.small:
|
CAMERA.small:
|
||||||
@@ -70,6 +71,7 @@ CAMERA.small:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
Type: CenterPosition
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|
||||||
FLARE:
|
FLARE:
|
||||||
@@ -77,11 +79,13 @@ FLARE:
|
|||||||
OccupiesSpace: false
|
OccupiesSpace: false
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 3c0
|
Range: 3c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: smokland
|
Image: smokland
|
||||||
WithSpriteBody:
|
WithSpriteBody:
|
||||||
StartSequence: open
|
StartSequence: open
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Flare
|
Name: Flare
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ carryall.infantry:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 12c0
|
Range: 12c0
|
||||||
|
Type: CenterPosition
|
||||||
Plane:
|
Plane:
|
||||||
ROT: 4
|
ROT: 4
|
||||||
Speed: 280
|
Speed: 280
|
||||||
@@ -101,6 +102,7 @@ orni:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: ChainGun
|
Weapon: ChainGun
|
||||||
LocalOffset: 85,-213,-85
|
LocalOffset: 85,-213,-85
|
||||||
|
|||||||
@@ -93,6 +93,7 @@
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Wreck
|
Name: Wreck
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
@@ -211,6 +212,7 @@
|
|||||||
AppearsOnRadar:
|
AppearsOnRadar:
|
||||||
UseLocation: yes
|
UseLocation: yes
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
AlwaysVisibleStances: None
|
AlwaysVisibleStances: None
|
||||||
ActorLostNotification:
|
ActorLostNotification:
|
||||||
AttackMove:
|
AttackMove:
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ camera:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
|
Type: CenterPosition
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|
||||||
wormspawner:
|
wormspawner:
|
||||||
|
|||||||
@@ -1406,6 +1406,7 @@ Rules:
|
|||||||
Image: E7
|
Image: E7
|
||||||
PRISON:
|
PRISON:
|
||||||
HiddenUnderShroud:
|
HiddenUnderShroud:
|
||||||
|
Type: CenterPosition
|
||||||
Immobile:
|
Immobile:
|
||||||
OccupiesSpace: false
|
OccupiesSpace: false
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|||||||
@@ -1302,6 +1302,7 @@ Rules:
|
|||||||
Image: E7
|
Image: E7
|
||||||
PRISON:
|
PRISON:
|
||||||
HiddenUnderShroud:
|
HiddenUnderShroud:
|
||||||
|
Type: CenterPosition
|
||||||
Immobile:
|
Immobile:
|
||||||
OccupiesSpace: false
|
OccupiesSpace: false
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ MIG:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 12c0
|
Range: 12c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Maverick
|
Weapon: Maverick
|
||||||
LocalOffset: 0,-640,0, 0,640,0
|
LocalOffset: 0,-640,0, 0,640,0
|
||||||
@@ -140,6 +141,7 @@ YAK:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: ChainGun.Yak
|
Weapon: ChainGun.Yak
|
||||||
LocalOffset: 256,-213,0
|
LocalOffset: 256,-213,0
|
||||||
@@ -195,6 +197,7 @@ TRAN:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 12c0
|
Range: 12c0
|
||||||
|
Type: CenterPosition
|
||||||
Helicopter:
|
Helicopter:
|
||||||
CruiseAltitude: 1024
|
CruiseAltitude: 1024
|
||||||
RearmBuildings: hpad
|
RearmBuildings: hpad
|
||||||
@@ -234,6 +237,7 @@ HELI:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 12c0
|
Range: 12c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: HellfireAA
|
Weapon: HellfireAA
|
||||||
LocalOffset: 0,-213,-85
|
LocalOffset: 0,-213,-85
|
||||||
@@ -280,6 +284,7 @@ HIND:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: ChainGun
|
Weapon: ChainGun
|
||||||
LocalOffset: 85,-213,-85
|
LocalOffset: 85,-213,-85
|
||||||
|
|||||||
@@ -484,7 +484,7 @@ SBRIDGE4:
|
|||||||
SpawnOffset: 2,1
|
SpawnOffset: 2,1
|
||||||
|
|
||||||
BRIDGEHUT:
|
BRIDGEHUT:
|
||||||
HiddenUnderShroud:
|
AlwaysVisible:
|
||||||
Building:
|
Building:
|
||||||
Footprint: __ __
|
Footprint: __ __
|
||||||
Dimensions: 2,2
|
Dimensions: 2,2
|
||||||
@@ -495,7 +495,7 @@ BRIDGEHUT:
|
|||||||
TargetTypes: BridgeHut, C4
|
TargetTypes: BridgeHut, C4
|
||||||
|
|
||||||
BRIDGEHUT.small:
|
BRIDGEHUT.small:
|
||||||
HiddenUnderShroud:
|
AlwaysVisible:
|
||||||
Building:
|
Building:
|
||||||
Footprint: _
|
Footprint: _
|
||||||
Dimensions: 1,1
|
Dimensions: 1,1
|
||||||
|
|||||||
@@ -305,6 +305,7 @@
|
|||||||
TargetTypes: Air
|
TargetTypes: Air
|
||||||
GroundedTargetTypes: Ground, Repair
|
GroundedTargetTypes: Ground, Repair
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
AttackMove:
|
AttackMove:
|
||||||
Guard:
|
Guard:
|
||||||
Guardable:
|
Guardable:
|
||||||
@@ -519,6 +520,7 @@
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
AutoTargetIgnore:
|
AutoTargetIgnore:
|
||||||
ScriptTriggers:
|
ScriptTriggers:
|
||||||
@@ -565,7 +567,7 @@
|
|||||||
FallsToEarth:
|
FallsToEarth:
|
||||||
|
|
||||||
^Bridge:
|
^Bridge:
|
||||||
HiddenUnderShroud:
|
AlwaysVisible:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Bridge
|
Name: Bridge
|
||||||
TargetableBuilding:
|
TargetableBuilding:
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ TRAN.Husk:
|
|||||||
Offset: 597,0,213
|
Offset: 597,0,213
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 12c0
|
Range: 12c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: tran
|
Image: tran
|
||||||
|
|
||||||
@@ -146,6 +147,7 @@ MIG.Husk:
|
|||||||
MinDamage: Undamaged
|
MinDamage: Undamaged
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 12c0
|
Range: 12c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: mig
|
Image: mig
|
||||||
|
|
||||||
@@ -164,6 +166,7 @@ YAK.Husk:
|
|||||||
MinDamage: Undamaged
|
MinDamage: Undamaged
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: yak
|
Image: yak
|
||||||
|
|
||||||
@@ -181,6 +184,7 @@ HELI.Husk:
|
|||||||
MinDamage: Undamaged
|
MinDamage: Undamaged
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 12c0
|
Range: 12c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: heli
|
Image: heli
|
||||||
|
|
||||||
@@ -197,6 +201,7 @@ HIND.Husk:
|
|||||||
MinDamage: Undamaged
|
MinDamage: Undamaged
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: hind
|
Image: hind
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
MINP:
|
MINP:
|
||||||
HiddenUnderShroud:
|
HiddenUnderShroud:
|
||||||
|
Type: CenterPosition
|
||||||
Mine:
|
Mine:
|
||||||
CrushClasses: mine
|
CrushClasses: mine
|
||||||
DetonateClasses: mine
|
DetonateClasses: mine
|
||||||
@@ -29,6 +30,7 @@ MINP:
|
|||||||
|
|
||||||
MINV:
|
MINV:
|
||||||
HiddenUnderShroud:
|
HiddenUnderShroud:
|
||||||
|
Type: CenterPosition
|
||||||
Mine:
|
Mine:
|
||||||
CrushClasses: mine
|
CrushClasses: mine
|
||||||
DetonateClasses: mine
|
DetonateClasses: mine
|
||||||
@@ -173,6 +175,7 @@ CAMERA:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: Camera
|
Types: Camera
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
@@ -189,6 +192,7 @@ camera.paradrop:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
Type: CenterPosition
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: Camera
|
Types: Camera
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
@@ -201,6 +205,7 @@ SONAR:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: Sonar
|
Types: Sonar
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
@@ -213,11 +218,13 @@ FLARE:
|
|||||||
OccupiesSpace: false
|
OccupiesSpace: false
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 3c0
|
Range: 3c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: smokland
|
Image: smokland
|
||||||
WithSpriteBody:
|
WithSpriteBody:
|
||||||
StartSequence: open
|
StartSequence: open
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Flare
|
Name: Flare
|
||||||
ShowOwnerRow: false
|
ShowOwnerRow: false
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ DPOD:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
Type: CenterPosition
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 1
|
MaxWeight: 1
|
||||||
@@ -50,6 +51,7 @@ DSHP:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 3c0
|
Range: 3c0
|
||||||
|
Type: CenterPosition
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
@@ -80,6 +82,7 @@ ORCA:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Hellfire
|
Weapon: Hellfire
|
||||||
AttackHeli:
|
AttackHeli:
|
||||||
@@ -118,6 +121,7 @@ ORCAB:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 2c0
|
Range: 2c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Bomb
|
Weapon: Bomb
|
||||||
AttackPlane:
|
AttackPlane:
|
||||||
@@ -152,6 +156,7 @@ ORCATRAN:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 2c0
|
Range: 2c0
|
||||||
|
Type: CenterPosition
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
@@ -182,6 +187,7 @@ TRNSPORT:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 2c0
|
Range: 2c0
|
||||||
|
Type: CenterPosition
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Hovers:
|
Hovers:
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -212,6 +218,7 @@ SCRIN:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 2c0
|
Range: 2c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Proton
|
Weapon: Proton
|
||||||
AttackPlane:
|
AttackPlane:
|
||||||
@@ -249,6 +256,7 @@ APACHE:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 2c0
|
Range: 2c0
|
||||||
|
Type: CenterPosition
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: HarpyClaw
|
Weapon: HarpyClaw
|
||||||
AttackHeli:
|
AttackHeli:
|
||||||
|
|||||||
@@ -420,6 +420,7 @@
|
|||||||
Voiced:
|
Voiced:
|
||||||
VoiceSet: Heli
|
VoiceSet: Heli
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
|
Type: CenterPosition
|
||||||
AttackMove:
|
AttackMove:
|
||||||
Voice: Move
|
Voice: Move
|
||||||
ActorLostNotification:
|
ActorLostNotification:
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ CAMERA:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
Type: CenterPosition
|
||||||
ProximityCaptor:
|
ProximityCaptor:
|
||||||
Types: Camera
|
Types: Camera
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|||||||
Reference in New Issue
Block a user