Merge pull request #8527 from pchote/split-vis-origins

Introduce new options for shroud visibility and revealing.
This commit is contained in:
Pavel Penev
2015-07-04 23:00:42 +03:00
25 changed files with 155 additions and 35 deletions

View File

@@ -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>();

View File

@@ -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()));
}
}
} }
} }
} }

View 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()));
}
}
}
}
}

View File

@@ -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>

View File

@@ -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);
} }
} }
} }

View File

@@ -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)

View File

@@ -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()
.Distinct().ToArray(); .SelectMany(kv => Shroud.CellsInRange(map, kv.First, range))
.Distinct().ToArray();
return Shroud.CellsInRange(map, self.CenterPosition, range)
.ToArray();
} }
public void Tick(Actor self) public void Tick(Actor self)

View File

@@ -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);
} }
} }

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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

View File

@@ -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:

View File

@@ -142,6 +142,7 @@ camera:
HP: 1000 HP: 1000
RevealsShroud: RevealsShroud:
Range: 8c0 Range: 8c0
Type: CenterPosition
BodyOrientation: BodyOrientation:
wormspawner: wormspawner:

View File

@@ -1406,6 +1406,7 @@ Rules:
Image: E7 Image: E7
PRISON: PRISON:
HiddenUnderShroud: HiddenUnderShroud:
Type: CenterPosition
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
BodyOrientation: BodyOrientation:

View File

@@ -1302,6 +1302,7 @@ Rules:
Image: E7 Image: E7
PRISON: PRISON:
HiddenUnderShroud: HiddenUnderShroud:
Type: CenterPosition
Immobile: Immobile:
OccupiesSpace: false OccupiesSpace: false
BodyOrientation: BodyOrientation:

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -420,6 +420,7 @@
Voiced: Voiced:
VoiceSet: Heli VoiceSet: Heli
HiddenUnderFog: HiddenUnderFog:
Type: CenterPosition
AttackMove: AttackMove:
Voice: Move Voice: Move
ActorLostNotification: ActorLostNotification:

View File

@@ -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: