Merge pull request #12370 from pchote/heightmap-shroud-reveal
Implement heightmap-visibility blocking
This commit is contained in:
@@ -241,6 +241,7 @@ namespace OpenRA
|
|||||||
bool initializedCellProjection;
|
bool initializedCellProjection;
|
||||||
CellLayer<PPos[]> cellProjection;
|
CellLayer<PPos[]> cellProjection;
|
||||||
CellLayer<List<MPos>> inverseCellProjection;
|
CellLayer<List<MPos>> inverseCellProjection;
|
||||||
|
CellLayer<byte> projectedHeight;
|
||||||
|
|
||||||
public static string ComputeUID(IReadOnlyPackage package)
|
public static string ComputeUID(IReadOnlyPackage package)
|
||||||
{
|
{
|
||||||
@@ -420,6 +421,7 @@ namespace OpenRA
|
|||||||
|
|
||||||
cellProjection = new CellLayer<PPos[]>(this);
|
cellProjection = new CellLayer<PPos[]>(this);
|
||||||
inverseCellProjection = new CellLayer<List<MPos>>(this);
|
inverseCellProjection = new CellLayer<List<MPos>>(this);
|
||||||
|
projectedHeight = new CellLayer<byte>(this);
|
||||||
|
|
||||||
// Initialize collections
|
// Initialize collections
|
||||||
foreach (var cell in AllCells)
|
foreach (var cell in AllCells)
|
||||||
@@ -455,13 +457,54 @@ namespace OpenRA
|
|||||||
|
|
||||||
// Remove old reverse projection
|
// Remove old reverse projection
|
||||||
foreach (var puv in cellProjection[uv])
|
foreach (var puv in cellProjection[uv])
|
||||||
inverseCellProjection[(MPos)puv].Remove(uv);
|
{
|
||||||
|
var temp = (MPos)puv;
|
||||||
|
inverseCellProjection[temp].Remove(uv);
|
||||||
|
projectedHeight[temp] = ProjectedCellHeightInner(puv);
|
||||||
|
}
|
||||||
|
|
||||||
var projected = ProjectCellInner(uv);
|
var projected = ProjectCellInner(uv);
|
||||||
cellProjection[uv] = projected;
|
cellProjection[uv] = projected;
|
||||||
|
|
||||||
foreach (var puv in projected)
|
foreach (var puv in projected)
|
||||||
inverseCellProjection[(MPos)puv].Add(uv);
|
{
|
||||||
|
var temp = (MPos)puv;
|
||||||
|
inverseCellProjection[temp].Add(uv);
|
||||||
|
|
||||||
|
var height = ProjectedCellHeightInner(puv);
|
||||||
|
projectedHeight[temp] = height;
|
||||||
|
|
||||||
|
// Propagate height up cliff faces
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
temp = new MPos(temp.U, temp.V - 1);
|
||||||
|
if (!inverseCellProjection.Contains(temp) || inverseCellProjection[temp].Any())
|
||||||
|
break;
|
||||||
|
|
||||||
|
projectedHeight[temp] = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
byte ProjectedCellHeightInner(PPos puv)
|
||||||
|
{
|
||||||
|
while (inverseCellProjection.Contains((MPos)puv))
|
||||||
|
{
|
||||||
|
var inverse = inverseCellProjection[(MPos)puv];
|
||||||
|
if (inverse.Any())
|
||||||
|
{
|
||||||
|
// The original games treat the top of cliffs the same way as the bottom
|
||||||
|
// This information isn't stored in the map data, so query the offset from the tileset
|
||||||
|
var temp = inverse.MaxBy(uv => uv.V);
|
||||||
|
var terrain = Tiles[temp];
|
||||||
|
return (byte)(Height[temp] - Rules.TileSet.Templates[terrain.Type][terrain.Index].Height);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try the next cell down if this is a cliff face
|
||||||
|
puv = new PPos(puv.U, puv.V + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
PPos[] ProjectCellInner(MPos uv)
|
PPos[] ProjectCellInner(MPos uv)
|
||||||
@@ -786,6 +829,11 @@ namespace OpenRA
|
|||||||
return inverseCellProjection[uv];
|
return inverseCellProjection[uv];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte ProjectedHeight(PPos puv)
|
||||||
|
{
|
||||||
|
return projectedHeight[(MPos)puv];
|
||||||
|
}
|
||||||
|
|
||||||
public int FacingBetween(CPos cell, CPos towards, int fallbackfacing)
|
public int FacingBetween(CPos cell, CPos towards, int fallbackfacing)
|
||||||
{
|
{
|
||||||
var delta = CenterOfCell(towards) - CenterOfCell(cell);
|
var delta = CenterOfCell(towards) - CenterOfCell(cell);
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ namespace OpenRA.Traits
|
|||||||
Hash += 1;
|
Hash += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<PPos> ProjectedCellsInRange(Map map, WPos pos, WDist range)
|
public static IEnumerable<PPos> ProjectedCellsInRange(Map map, WPos pos, WDist range, int maxHeightDelta = -1)
|
||||||
{
|
{
|
||||||
// Account for potential extra half-cell from odd-height terrain
|
// Account for potential extra half-cell from odd-height terrain
|
||||||
var r = (range.Length + 1023 + 512) / 1024;
|
var r = (range.Length + 1023 + 512) / 1024;
|
||||||
@@ -124,15 +124,22 @@ namespace OpenRA.Traits
|
|||||||
// Project actor position into the shroud plane
|
// Project actor position into the shroud plane
|
||||||
var projectedPos = pos - new WVec(0, pos.Z, pos.Z);
|
var projectedPos = pos - new WVec(0, pos.Z, pos.Z);
|
||||||
var projectedCell = map.CellContaining(projectedPos);
|
var projectedCell = map.CellContaining(projectedPos);
|
||||||
|
var projectedHeight = pos.Z / 512;
|
||||||
|
|
||||||
foreach (var c in map.FindTilesInCircle(projectedCell, r, true))
|
foreach (var c in map.FindTilesInCircle(projectedCell, r, true))
|
||||||
|
{
|
||||||
if ((map.CenterOfCell(c) - projectedPos).HorizontalLengthSquared <= limit)
|
if ((map.CenterOfCell(c) - projectedPos).HorizontalLengthSquared <= limit)
|
||||||
yield return (PPos)c.ToMPos(map);
|
{
|
||||||
|
var puv = (PPos)c.ToMPos(map);
|
||||||
|
if (maxHeightDelta < 0 || map.ProjectedHeight(puv) < projectedHeight + maxHeightDelta)
|
||||||
|
yield return puv;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IEnumerable<PPos> ProjectedCellsInRange(Map map, CPos cell, WDist range)
|
public static IEnumerable<PPos> ProjectedCellsInRange(Map map, CPos cell, WDist range, int maxHeightDelta = -1)
|
||||||
{
|
{
|
||||||
return ProjectedCellsInRange(map, map.CenterOfCell(cell), range);
|
return ProjectedCellsInRange(map, map.CenterOfCell(cell), range, maxHeightDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddProjectedVisibility(object key, PPos[] visible)
|
public void AddProjectedVisibility(object key, PPos[] visible)
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
public readonly WDist Range = WDist.Zero;
|
public readonly WDist Range = WDist.Zero;
|
||||||
|
|
||||||
|
[Desc("If >= 0, prevent cells that are this much higher than the actor from being revealed.")]
|
||||||
|
public readonly int MaxHeightDelta = -1;
|
||||||
|
|
||||||
[Desc("Possible values are CenterPosition (measure range from the center) and ",
|
[Desc("Possible values are CenterPosition (measure range from the center) and ",
|
||||||
"Footprint (measure range from the footprint)")]
|
"Footprint (measure range from the footprint)")]
|
||||||
public readonly VisibilityType Type = VisibilityType.Footprint;
|
public readonly VisibilityType Type = VisibilityType.Footprint;
|
||||||
@@ -47,10 +50,10 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
if (Info.Type == VisibilityType.Footprint)
|
if (Info.Type == VisibilityType.Footprint)
|
||||||
return self.OccupiesSpace.OccupiedCells()
|
return self.OccupiesSpace.OccupiedCells()
|
||||||
.SelectMany(kv => Shroud.ProjectedCellsInRange(map, kv.First, range))
|
.SelectMany(kv => Shroud.ProjectedCellsInRange(map, kv.First, range, Info.MaxHeightDelta))
|
||||||
.Distinct().ToArray();
|
.Distinct().ToArray();
|
||||||
|
|
||||||
return Shroud.ProjectedCellsInRange(map, self.CenterPosition, range)
|
return Shroud.ProjectedCellsInRange(map, self.CenterPosition, range, Info.MaxHeightDelta)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1240,6 +1240,7 @@ GASPOT:
|
|||||||
HP: 400
|
HP: 400
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
@@ -1261,6 +1262,7 @@ GALITE:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 2c0
|
Range: 2c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Power:
|
Power:
|
||||||
Amount: 0
|
Amount: 0
|
||||||
# TODO: should use terrain lighting instead, depends on https://github.com/OpenRA/OpenRA/issues/3605
|
# TODO: should use terrain lighting instead, depends on https://github.com/OpenRA/OpenRA/issues/3605
|
||||||
@@ -1298,6 +1300,7 @@ GAICBM:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: icbm
|
IntoActor: icbm
|
||||||
Offset: 1,1
|
Offset: 1,1
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 3
|
TurnSpeed: 3
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
@@ -48,6 +49,7 @@
|
|||||||
Speed: 56
|
Speed: 56
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
|
|
||||||
TRUCKA:
|
TRUCKA:
|
||||||
Inherits: ^TRUCK
|
Inherits: ^TRUCK
|
||||||
@@ -70,6 +72,7 @@ ICBM:
|
|||||||
TurnSpeed: 5
|
TurnSpeed: 5
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 7c0
|
Range: 7c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Transforms:
|
Transforms:
|
||||||
IntoActor: gaicbm
|
IntoActor: gaicbm
|
||||||
Offset: -1,-1
|
Offset: -1,-1
|
||||||
@@ -93,6 +96,7 @@ BUS:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 20
|
MaxWeight: 20
|
||||||
@@ -116,6 +120,7 @@ PICK:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 2
|
MaxWeight: 2
|
||||||
@@ -139,6 +144,7 @@ CAR:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 4
|
MaxWeight: 4
|
||||||
@@ -162,6 +168,7 @@ WINI:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
|
|||||||
@@ -157,6 +157,7 @@
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Tooltip:
|
Tooltip:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Palette: terraindecoration
|
Palette: terraindecoration
|
||||||
@@ -254,6 +255,7 @@
|
|||||||
Cost: 10
|
Cost: 10
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 2c0
|
Range: 2c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Mobile:
|
Mobile:
|
||||||
Voice: Move
|
Voice: Move
|
||||||
Speed: 71
|
Speed: 71
|
||||||
@@ -794,6 +796,7 @@
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 40,24
|
Bounds: 40,24
|
||||||
WithTextControlGroupDecoration:
|
WithTextControlGroupDecoration:
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ GAPOWR:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
WithIdleOverlay@PLUG:
|
WithIdleOverlay@PLUG:
|
||||||
@@ -87,6 +88,7 @@ GAPILE:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
Offset: 2,3
|
Offset: 2,3
|
||||||
Palette: mouse
|
Palette: mouse
|
||||||
@@ -141,6 +143,7 @@ GAWEAP:
|
|||||||
HP: 1000
|
HP: 1000
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Armor:
|
Armor:
|
||||||
Type: Heavy
|
Type: Heavy
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
@@ -199,6 +202,7 @@ GAHPAD:
|
|||||||
HP: 600
|
HP: 600
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Exit@1:
|
Exit@1:
|
||||||
SpawnOffset: 0,-256,0
|
SpawnOffset: 0,-256,0
|
||||||
ExitsDebugOverlay:
|
ExitsDebugOverlay:
|
||||||
@@ -255,6 +259,7 @@ GADEPT:
|
|||||||
HP: 1100
|
HP: 1100
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Reservable:
|
Reservable:
|
||||||
RepairsUnits:
|
RepairsUnits:
|
||||||
PlayerExperience: 15
|
PlayerExperience: 15
|
||||||
@@ -319,6 +324,7 @@ GARADR:
|
|||||||
RenderDetectionCircle:
|
RenderDetectionCircle:
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@DISH:
|
WithIdleOverlay@DISH:
|
||||||
Sequence: idle-dish
|
Sequence: idle-dish
|
||||||
PauseOnLowPower: yes
|
PauseOnLowPower: yes
|
||||||
@@ -354,6 +360,7 @@ GATECH:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
Power:
|
Power:
|
||||||
@@ -396,6 +403,7 @@ GAPLUG:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
IonCannonPower:
|
IonCannonPower:
|
||||||
Cursor: ioncannon
|
Cursor: ioncannon
|
||||||
UpgradeTypes: plug.ioncannon
|
UpgradeTypes: plug.ioncannon
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ APC:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Turreted:
|
Turreted:
|
||||||
TurnSpeed: 10
|
TurnSpeed: 10
|
||||||
Cargo:
|
Cargo:
|
||||||
@@ -76,6 +77,7 @@ HVR:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 7c0
|
Range: 7c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: HoverMissile
|
Weapon: HoverMissile
|
||||||
LocalOffset: 0,171,384, 0,-171,384
|
LocalOffset: 0,171,384, 0,-171,384
|
||||||
@@ -118,6 +120,7 @@ SMECH:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
Voice: Attack
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
@@ -160,6 +163,7 @@ MMCH:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 32
|
QuantizedFacings: 32
|
||||||
UseClassicPerspectiveFudge: False
|
UseClassicPerspectiveFudge: False
|
||||||
@@ -209,6 +213,7 @@ HMEC:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 8c0
|
Range: 8c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
Voice: Attack
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
@@ -249,6 +254,7 @@ SONIC:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 7c0
|
Range: 7c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: SonicZap
|
Weapon: SonicZap
|
||||||
LocalOffset: -50,0,410
|
LocalOffset: -50,0,410
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ NAPOWR:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
Power:
|
Power:
|
||||||
@@ -60,6 +61,7 @@ NAAPWR:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
Power:
|
Power:
|
||||||
@@ -98,6 +100,7 @@ NAHAND:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Exit@1:
|
Exit@1:
|
||||||
SpawnOffset: 384,768,0
|
SpawnOffset: 384,768,0
|
||||||
ExitCell: 3,2
|
ExitCell: 3,2
|
||||||
@@ -152,6 +155,7 @@ NAWEAP:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
RallyPoint:
|
RallyPoint:
|
||||||
Offset: 4,1
|
Offset: 4,1
|
||||||
Palette: mouse
|
Palette: mouse
|
||||||
@@ -204,6 +208,7 @@ NAHPAD:
|
|||||||
HP: 600
|
HP: 600
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Exit@1:
|
Exit@1:
|
||||||
SpawnOffset: 0,-256,0
|
SpawnOffset: 0,-256,0
|
||||||
ExitsDebugOverlay:
|
ExitsDebugOverlay:
|
||||||
@@ -274,6 +279,7 @@ NARADR:
|
|||||||
RenderDetectionCircle:
|
RenderDetectionCircle:
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 10c0
|
Range: 10c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@DISH:
|
WithIdleOverlay@DISH:
|
||||||
Sequence: idle-dish
|
Sequence: idle-dish
|
||||||
PauseOnLowPower: true
|
PauseOnLowPower: true
|
||||||
@@ -309,6 +315,7 @@ NATECH:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
Sequence: idle-lights
|
Sequence: idle-lights
|
||||||
Power:
|
Power:
|
||||||
@@ -341,6 +348,7 @@ NATMPL:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Power:
|
Power:
|
||||||
Amount: -200
|
Amount: -200
|
||||||
WithIdleOverlay@LIGHTS:
|
WithIdleOverlay@LIGHTS:
|
||||||
@@ -377,6 +385,7 @@ NASTLH:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
WithIdleOverlay@pulse:
|
WithIdleOverlay@pulse:
|
||||||
Sequence: pulse
|
Sequence: pulse
|
||||||
PauseOnLowPower: true
|
PauseOnLowPower: true
|
||||||
@@ -422,6 +431,7 @@ NAWAST:
|
|||||||
HP: 400
|
HP: 400
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
TiberianSunRefinery:
|
TiberianSunRefinery:
|
||||||
DockAngle: 160
|
DockAngle: 160
|
||||||
DockOffset: 2,1
|
DockOffset: 2,1
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ BGGY:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: RaiderCannon
|
Weapon: RaiderCannon
|
||||||
LocalOffset: 0,-43,384, 0,43,384
|
LocalOffset: 0,-43,384, 0,43,384
|
||||||
@@ -51,6 +52,7 @@ BIKE:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: BikeMissile
|
Weapon: BikeMissile
|
||||||
UpgradeTypes: eliteweapon
|
UpgradeTypes: eliteweapon
|
||||||
@@ -109,6 +111,7 @@ TTNK:
|
|||||||
WithMuzzleOverlay:
|
WithMuzzleOverlay:
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: ttnk
|
Image: ttnk
|
||||||
DeployToUpgrade:
|
DeployToUpgrade:
|
||||||
@@ -192,6 +195,7 @@ ART2:
|
|||||||
TurnSpeed: 2
|
TurnSpeed: 2
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 9c0
|
Range: 9c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
LightAmbientColor: 0.4, 0.4, 0.4
|
LightAmbientColor: 0.4, 0.4, 0.4
|
||||||
Transforms:
|
Transforms:
|
||||||
@@ -219,6 +223,7 @@ REPAIR:
|
|||||||
TurnSpeed: 5
|
TurnSpeed: 5
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Repair
|
Weapon: Repair
|
||||||
Cursor: repair
|
Cursor: repair
|
||||||
@@ -262,6 +267,7 @@ WEED:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
-WithVoxelBody:
|
-WithVoxelBody:
|
||||||
WithVoxelUnloadBody:
|
WithVoxelUnloadBody:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
@@ -289,6 +295,7 @@ SAPC:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Cargo:
|
Cargo:
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
@@ -318,6 +325,7 @@ SUBTANK:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: FireballLauncher
|
Weapon: FireballLauncher
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
@@ -345,6 +353,7 @@ STNK:
|
|||||||
Type: Light
|
Type: Light
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Cloak:
|
Cloak:
|
||||||
InitialDelay: 90
|
InitialDelay: 90
|
||||||
CloakDelay: 90
|
CloakDelay: 90
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ GACNST:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
Production:
|
Production:
|
||||||
Produces: Building,Defense
|
Produces: Building,Defense
|
||||||
Valued:
|
Valued:
|
||||||
@@ -73,6 +74,7 @@ PROC:
|
|||||||
HP: 900
|
HP: 900
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
TiberianSunRefinery:
|
TiberianSunRefinery:
|
||||||
DockAngle: 160
|
DockAngle: 160
|
||||||
DockOffset: 2,1
|
DockOffset: 2,1
|
||||||
@@ -129,6 +131,7 @@ GASILO:
|
|||||||
Type: Wood
|
Type: Wood
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: gasilo.gdi
|
Image: gasilo.gdi
|
||||||
FactionImages:
|
FactionImages:
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ MCV:
|
|||||||
Speed: 85
|
Speed: 85
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
RequiredForShortGame: true
|
RequiredForShortGame: true
|
||||||
BaseBuilding:
|
BaseBuilding:
|
||||||
@@ -82,6 +83,7 @@ HARV:
|
|||||||
Type: Heavy
|
Type: Heavy
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 4c0
|
Range: 4c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
-WithVoxelBody:
|
-WithVoxelBody:
|
||||||
WithVoxelUnloadBody:
|
WithVoxelUnloadBody:
|
||||||
@@ -129,6 +131,7 @@ LPST:
|
|||||||
TurnSpeed: 5
|
TurnSpeed: 5
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 7c0
|
Range: 7c0
|
||||||
|
MaxHeightDelta: 3
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
Image: lpst.gdi
|
Image: lpst.gdi
|
||||||
FactionImages:
|
FactionImages:
|
||||||
|
|||||||
Reference in New Issue
Block a user