Merge pull request #8691 from Mailaender/wrange-renamings
Renamed WRange to WDist in the Lua API and documentation
This commit is contained in:
@@ -247,7 +247,7 @@ namespace OpenRA.Graphics
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Cells can be pushed up from below if they have non-zero height.
|
// Cells can be pushed up from below if they have non-zero height.
|
||||||
// Each height step is equivalent to 512 WRange units, which is
|
// Each height step is equivalent to 512 WDist units, which is
|
||||||
// one MPos step for diamond cells, but only half a MPos step
|
// one MPos step for diamond cells, but only half a MPos step
|
||||||
// for classic cells. Doh!
|
// for classic cells. Doh!
|
||||||
var heightOffset = map.TileShape == TileShape.Diamond ? map.MaximumTerrainHeight : map.MaximumTerrainHeight / 2;
|
var heightOffset = map.TileShape == TileShape.Diamond ? map.MaximumTerrainHeight : map.MaximumTerrainHeight / 2;
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ namespace OpenRA.Traits
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Target ranges are calculated in 2D, so ignore height differences
|
// Target ranges are calculated in 2D, so ignore height differences
|
||||||
return Positions.Any(t => (t - origin).HorizontalLengthSquared <= range.RangeSquared);
|
return Positions.Any(t => (t - origin).HorizontalLengthSquared <= range.LengthSquared);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ namespace OpenRA.Traits
|
|||||||
var oldActors = currentActors;
|
var oldActors = currentActors;
|
||||||
var delta = new WVec(Range, Range, WDist.Zero);
|
var delta = new WVec(Range, Range, WDist.Zero);
|
||||||
currentActors = am.ActorsInBox(Position - delta, Position + delta)
|
currentActors = am.ActorsInBox(Position - delta, Position + delta)
|
||||||
.Where(a => (a.CenterPosition - Position).HorizontalLengthSquared < Range.RangeSquared)
|
.Where(a => (a.CenterPosition - Position).HorizontalLengthSquared < Range.LengthSquared)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
var entered = currentActors.Except(oldActors);
|
var entered = currentActors.Except(oldActors);
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ namespace OpenRA.Traits
|
|||||||
public static IEnumerable<CPos> CellsInRange(Map map, WPos pos, WDist range)
|
public static IEnumerable<CPos> CellsInRange(Map map, WPos pos, WDist range)
|
||||||
{
|
{
|
||||||
var r = (range.Length + 1023) / 1024;
|
var r = (range.Length + 1023) / 1024;
|
||||||
var limit = range.RangeSquared;
|
var limit = range.LengthSquared;
|
||||||
var cell = map.CellContaining(pos);
|
var cell = map.CellContaining(pos);
|
||||||
|
|
||||||
foreach (var c in map.FindTilesInCircle(cell, r, true))
|
foreach (var c in map.FindTilesInCircle(cell, r, true))
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace OpenRA
|
|||||||
public struct WDist : IComparable, IComparable<WDist>, IEquatable<WDist>, IScriptBindable, ILuaAdditionBinding, ILuaSubtractionBinding, ILuaEqualityBinding, ILuaTableBinding
|
public struct WDist : IComparable, IComparable<WDist>, IEquatable<WDist>, IScriptBindable, ILuaAdditionBinding, ILuaSubtractionBinding, ILuaEqualityBinding, ILuaTableBinding
|
||||||
{
|
{
|
||||||
public readonly int Length;
|
public readonly int Length;
|
||||||
public long RangeSquared { get { return (long)Length * (long)Length; } }
|
public long LengthSquared { get { return (long)Length * (long)Length; } }
|
||||||
|
|
||||||
public WDist(int r) { Length = r; }
|
public WDist(int r) { Length = r; }
|
||||||
public static readonly WDist Zero = new WDist(0);
|
public static readonly WDist Zero = new WDist(0);
|
||||||
@@ -110,7 +110,7 @@ namespace OpenRA
|
|||||||
WDist a;
|
WDist a;
|
||||||
WDist b;
|
WDist b;
|
||||||
if (!left.TryGetClrValue<WDist>(out a) || !right.TryGetClrValue<WDist>(out b))
|
if (!left.TryGetClrValue<WDist>(out a) || !right.TryGetClrValue<WDist>(out b))
|
||||||
throw new LuaException("Attempted to call WRange.Add(WRange, WRange) with invalid arguments.");
|
throw new LuaException("Attempted to call WDist.Add(WDist, WDist) with invalid arguments.");
|
||||||
|
|
||||||
return new LuaCustomClrObject(a + b);
|
return new LuaCustomClrObject(a + b);
|
||||||
}
|
}
|
||||||
@@ -120,7 +120,7 @@ namespace OpenRA
|
|||||||
WDist a;
|
WDist a;
|
||||||
WDist b;
|
WDist b;
|
||||||
if (!left.TryGetClrValue<WDist>(out a) || !right.TryGetClrValue<WDist>(out b))
|
if (!left.TryGetClrValue<WDist>(out a) || !right.TryGetClrValue<WDist>(out b))
|
||||||
throw new LuaException("Attempted to call WRange.Subtract(WRange, WRange) with invalid arguments.");
|
throw new LuaException("Attempted to call WDist.Subtract(WDist, WDist) with invalid arguments.");
|
||||||
|
|
||||||
return new LuaCustomClrObject(a - b);
|
return new LuaCustomClrObject(a - b);
|
||||||
}
|
}
|
||||||
@@ -130,7 +130,7 @@ namespace OpenRA
|
|||||||
WDist a;
|
WDist a;
|
||||||
WDist b;
|
WDist b;
|
||||||
if (!left.TryGetClrValue<WDist>(out a) || !right.TryGetClrValue<WDist>(out b))
|
if (!left.TryGetClrValue<WDist>(out a) || !right.TryGetClrValue<WDist>(out b))
|
||||||
throw new LuaException("Attempted to call WRange.Equals(WRange, WRange) with invalid arguments.");
|
throw new LuaException("Attempted to call WDist.Equals(WDist, WDist) with invalid arguments.");
|
||||||
|
|
||||||
return a == b;
|
return a == b;
|
||||||
}
|
}
|
||||||
@@ -141,14 +141,15 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
switch (key.ToString())
|
switch (key.ToString())
|
||||||
{
|
{
|
||||||
case "Range": return Length;
|
case "Length": return Length;
|
||||||
default: throw new LuaException("WPos does not define a member '{0}'".F(key));
|
case "Range": Game.Debug("WRange.Range is deprecated. Use WDist.Length instead"); return Length;
|
||||||
|
default: throw new LuaException("WDist does not define a member '{0}'".F(key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
throw new LuaException("WRange is read-only. Use WRange.New to create a new value");
|
throw new LuaException("WDist is read-only. Use WDist.New to create a new value");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ namespace OpenRA
|
|||||||
// Target ranges are calculated in 2D, so ignore height differences
|
// Target ranges are calculated in 2D, so ignore height differences
|
||||||
var vec = new WVec(r, r, WDist.Zero);
|
var vec = new WVec(r, r, WDist.Zero);
|
||||||
return world.ActorMap.ActorsInBox(origin - vec, origin + vec).Where(
|
return world.ActorMap.ActorsInBox(origin - vec, origin + vec).Where(
|
||||||
a => (a.CenterPosition - origin).HorizontalLengthSquared <= r.RangeSquared);
|
a => (a.CenterPosition - origin).HorizontalLengthSquared <= r.LengthSquared);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
var diff = new WVec(radius, radius, WDist.Zero);
|
var diff = new WVec(radius, radius, WDist.Zero);
|
||||||
var candidates = self.World.ActorMap.ActorsInBox(self.CenterPosition - diff, self.CenterPosition + diff)
|
var candidates = self.World.ActorMap.ActorsInBox(self.CenterPosition - diff, self.CenterPosition + diff)
|
||||||
.Where(primaryFilter).Select(a => new { Actor = a, Ls = (self.CenterPosition - a.CenterPosition).HorizontalLengthSquared })
|
.Where(primaryFilter).Select(a => new { Actor = a, Ls = (self.CenterPosition - a.CenterPosition).HorizontalLengthSquared })
|
||||||
.Where(p => p.Ls <= radius.RangeSquared).OrderBy(p => p.Ls).Select(p => p.Actor);
|
.Where(p => p.Ls <= radius.LengthSquared).OrderBy(p => p.Ls).Select(p => p.Actor);
|
||||||
if (preferenceFilters != null)
|
if (preferenceFilters != null)
|
||||||
foreach (var filter in preferenceFilters)
|
foreach (var filter in preferenceFilters)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ namespace OpenRA.Mods.Common.Activities
|
|||||||
var maxCells = (maxRange.Length + 1023) / 1024;
|
var maxCells = (maxRange.Length + 1023) / 1024;
|
||||||
var minCells = minRange.Length / 1024;
|
var minCells = minRange.Length / 1024;
|
||||||
|
|
||||||
var outerSq = maxRange.RangeSquared;
|
var outerSq = maxRange.LengthSquared;
|
||||||
var innerSq = minRange.RangeSquared;
|
var innerSq = minRange.LengthSquared;
|
||||||
var center = Target.CenterPosition;
|
var center = Target.CenterPosition;
|
||||||
|
|
||||||
return map.FindTilesInAnnulus(targetPosition, minCells + 1, maxCells).Where(c =>
|
return map.FindTilesInAnnulus(targetPosition, minCells + 1, maxCells).Where(c =>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
{
|
{
|
||||||
public class BulletInfo : IProjectileInfo
|
public class BulletInfo : IProjectileInfo
|
||||||
{
|
{
|
||||||
[Desc("Projectile speed in WRange / tick, two values indicate variable velocity.")]
|
[Desc("Projectile speed in WDist / tick, two values indicate variable velocity.")]
|
||||||
public readonly WDist[] Speed = { new WDist(17) };
|
public readonly WDist[] Speed = { new WDist(17) };
|
||||||
[Desc("Maximum offset at the maximum range.")]
|
[Desc("Maximum offset at the maximum range.")]
|
||||||
public readonly WDist Inaccuracy = WDist.Zero;
|
public readonly WDist Inaccuracy = WDist.Zero;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
[SequenceReference("Image")] public readonly string Sequence = "idle";
|
[SequenceReference("Image")] public readonly string Sequence = "idle";
|
||||||
public readonly string Palette = "effect";
|
public readonly string Palette = "effect";
|
||||||
public readonly bool Shadow = false;
|
public readonly bool Shadow = false;
|
||||||
[Desc("Projectile speed in WRange / tick")]
|
[Desc("Projectile speed in WDist / tick")]
|
||||||
public readonly WDist Speed = new WDist(8);
|
public readonly WDist Speed = new WDist(8);
|
||||||
[Desc("Maximum vertical pitch when changing altitude.")]
|
[Desc("Maximum vertical pitch when changing altitude.")]
|
||||||
public readonly WAngle MaximumPitch = WAngle.FromDegrees(30);
|
public readonly WAngle MaximumPitch = WAngle.FromDegrees(30);
|
||||||
@@ -182,7 +182,7 @@ namespace OpenRA.Mods.Common.Effects
|
|||||||
var cell = world.Map.CellContaining(pos);
|
var cell = world.Map.CellContaining(pos);
|
||||||
|
|
||||||
var shouldExplode = (pos.Z < 0) // Hit the ground
|
var shouldExplode = (pos.Z < 0) // Hit the ground
|
||||||
|| (dist.LengthSquared < info.CloseEnough.RangeSquared) // Within range
|
|| (dist.LengthSquared < info.CloseEnough.LengthSquared) // Within range
|
||||||
|| (info.RangeLimit != 0 && ticks > info.RangeLimit) // Ran out of fuel
|
|| (info.RangeLimit != 0 && ticks > info.RangeLimit) // Ran out of fuel
|
||||||
|| (info.Blockable && world.ActorMap.GetUnitsAt(cell).Any(a => a.HasTrait<IBlocksProjectiles>())) // Hit a wall or other blocking obstacle
|
|| (info.Blockable && world.ActorMap.GetUnitsAt(cell).Any(a => a.HasTrait<IBlocksProjectiles>())) // Hit a wall or other blocking obstacle
|
||||||
|| !world.Map.Contains(cell) // This also avoids an IndexOutOfRangeException in GetTerrainInfo below.
|
|| !world.Map.Contains(cell) // This also avoids an IndexOutOfRangeException in GetTerrainInfo below.
|
||||||
|
|||||||
@@ -59,15 +59,27 @@ namespace OpenRA.Mods.Common.Scripting
|
|||||||
public WVec Zero { get { return WVec.Zero; } }
|
public WVec Zero { get { return WVec.Zero; } }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ScriptGlobal("WDist")]
|
||||||
|
public class WDistGlobal : ScriptGlobal
|
||||||
|
{
|
||||||
|
public WDistGlobal(ScriptContext context) : base(context) { }
|
||||||
|
|
||||||
|
[Desc("Create a new WDist.")]
|
||||||
|
public WDist New(int r) { return new WDist(r); }
|
||||||
|
|
||||||
|
[Desc("Create a new WDist by cell distance")]
|
||||||
|
public WDist FromCells(int numCells) { return WDist.FromCells(numCells); }
|
||||||
|
}
|
||||||
|
|
||||||
[ScriptGlobal("WRange")]
|
[ScriptGlobal("WRange")]
|
||||||
public class WRangeGlobal : ScriptGlobal
|
public class WRangeGlobal : ScriptGlobal
|
||||||
{
|
{
|
||||||
public WRangeGlobal(ScriptContext context) : base(context) { }
|
public WRangeGlobal(ScriptContext context) : base(context) { }
|
||||||
|
|
||||||
[Desc("Create a new WRange.")]
|
[Desc("Create a new WRange. DEPRECATED! Will be removed.")]
|
||||||
public WDist New(int r) { return new WDist(r); }
|
public WDist New(int r) { Game.Debug("WRange is deprecated. Use WDist instead."); return new WDist(r); }
|
||||||
|
|
||||||
[Desc("Create a new WRange by cell distance")]
|
[Desc("Create a new WRange by cell distance. DEPRECATED! Will be removed.")]
|
||||||
public WDist FromCells(int numCells) { return WDist.FromCells(numCells); }
|
public WDist FromCells(int numCells) { Game.Debug("WRange is deprecated. Use WDist instead."); return WDist.FromCells(numCells); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
var d = self.CenterPosition - other.CenterPosition;
|
var d = self.CenterPosition - other.CenterPosition;
|
||||||
var distSq = d.HorizontalLengthSquared;
|
var distSq = d.HorizontalLengthSquared;
|
||||||
if (distSq > info.IdealSeparation.RangeSquared)
|
if (distSq > info.IdealSeparation.LengthSquared)
|
||||||
return WVec.Zero;
|
return WVec.Zero;
|
||||||
|
|
||||||
if (distSq < 1)
|
if (distSq < 1)
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (modifiers.HasModifier(TargetModifiers.ForceAttack))
|
if (modifiers.HasModifier(TargetModifiers.ForceAttack))
|
||||||
{
|
{
|
||||||
var targetRange = (self.World.Map.CenterOfCell(location) - self.CenterPosition).HorizontalLengthSquared;
|
var targetRange = (self.World.Map.CenterOfCell(location) - self.CenterPosition).HorizontalLengthSquared;
|
||||||
if (targetRange > ab.GetMaximumRange().RangeSquared)
|
if (targetRange > ab.GetMaximumRange().LengthSquared)
|
||||||
cursor = ab.Info.OutsideRangeCursor;
|
cursor = ab.Info.OutsideRangeCursor;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
var targetCell = self.World.Map.CellContaining(target.CenterPosition);
|
var targetCell = self.World.Map.CellContaining(target.CenterPosition);
|
||||||
if ((self.CenterPosition - target.CenterPosition).LengthSquared < transport.MinimumDistance.RangeSquared)
|
if ((self.CenterPosition - target.CenterPosition).LengthSquared < transport.MinimumDistance.LengthSquared)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
transport.RequestTransport(targetCell, nextActivity);
|
transport.RequestTransport(targetCell, nextActivity);
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Travel time - split equally between ascent and descent")]
|
[Desc("Travel time - split equally between ascent and descent")]
|
||||||
public readonly int FlightDelay = 400;
|
public readonly int FlightDelay = 400;
|
||||||
|
|
||||||
[Desc("Visual ascent velocity in WRange / tick")]
|
[Desc("Visual ascent velocity in WDist / tick")]
|
||||||
public readonly WDist FlightVelocity = new WDist(512);
|
public readonly WDist FlightVelocity = new WDist(512);
|
||||||
|
|
||||||
[Desc("Descend immediately on the target, with half the FlightDelay")]
|
[Desc("Descend immediately on the target, with half the FlightDelay")]
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public void UnitProducedByOther(Actor self, Actor producer, Actor produced)
|
public void UnitProducedByOther(Actor self, Actor producer, Actor produced)
|
||||||
{
|
{
|
||||||
// Work around for actors produced within the region not triggering until the second tick
|
// Work around for actors produced within the region not triggering until the second tick
|
||||||
if ((produced.CenterPosition - self.CenterPosition).HorizontalLengthSquared <= info.Range.RangeSquared)
|
if ((produced.CenterPosition - self.CenterPosition).HorizontalLengthSquared <= info.Range.LengthSquared)
|
||||||
{
|
{
|
||||||
var stance = self.Owner.Stances[produced.Owner];
|
var stance = self.Owner.Stances[produced.Owner];
|
||||||
if (!info.ValidStances.HasFlag(stance))
|
if (!info.ValidStances.HasFlag(stance))
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
// Select only the tiles that are within range from the requested SubCell
|
// Select only the tiles that are within range from the requested SubCell
|
||||||
// This assumes that the SubCell does not change during the path traversal
|
// This assumes that the SubCell does not change during the path traversal
|
||||||
var tilesInRange = world.Map.FindTilesInCircle(targetCell, range.Length / 1024 + 1)
|
var tilesInRange = world.Map.FindTilesInCircle(targetCell, range.Length / 1024 + 1)
|
||||||
.Where(t => (world.Map.CenterOfCell(t) - target).LengthSquared <= range.RangeSquared
|
.Where(t => (world.Map.CenterOfCell(t) - target).LengthSquared <= range.LengthSquared
|
||||||
&& mi.CanEnterCell(self.World as World, self as Actor, t));
|
&& mi.CanEnterCell(self.World as World, self as Actor, t));
|
||||||
|
|
||||||
// See if there is any cell within range that does not involve a cross-domain request
|
// See if there is any cell within range that does not involve a cross-domain request
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ namespace OpenRA.Mods.Common.Warheads
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
// If the impact position is within any actor's health radius, we have a direct hit
|
// If the impact position is within any actor's health radius, we have a direct hit
|
||||||
if ((unit.CenterPosition - pos).LengthSquared <= healthInfo.Radius.RangeSquared)
|
if ((unit.CenterPosition - pos).LengthSquared <= healthInfo.Radius.LengthSquared)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
public void RequestTransport(CPos destination, Activity afterLandActivity)
|
public void RequestTransport(CPos destination, Activity afterLandActivity)
|
||||||
{
|
{
|
||||||
var destPos = self.World.Map.CenterOfCell(destination);
|
var destPos = self.World.Map.CenterOfCell(destination);
|
||||||
if (destination == CPos.Zero || (self.CenterPosition - destPos).LengthSquared < info.MinDistance.RangeSquared)
|
if (destination == CPos.Zero || (self.CenterPosition - destPos).LengthSquared < info.MinDistance.LengthSquared)
|
||||||
{
|
{
|
||||||
WantsTransport = false; // Be sure to cancel any pending transports
|
WantsTransport = false; // Be sure to cancel any pending transports
|
||||||
return;
|
return;
|
||||||
@@ -122,7 +122,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
var destPos = self.World.Map.CenterOfCell(Destination);
|
var destPos = self.World.Map.CenterOfCell(Destination);
|
||||||
if ((self.CenterPosition - destPos).LengthSquared < info.MinDistance.RangeSquared)
|
if ((self.CenterPosition - destPos).LengthSquared < info.MinDistance.LengthSquared)
|
||||||
{
|
{
|
||||||
MovementCancelled(self);
|
MovementCancelled(self);
|
||||||
return false;
|
return false;
|
||||||
@@ -150,7 +150,7 @@ namespace OpenRA.Mods.D2k.Traits
|
|||||||
|
|
||||||
// Last change to change our mind...
|
// Last change to change our mind...
|
||||||
var destPos = self.World.Map.CenterOfCell(Destination);
|
var destPos = self.World.Map.CenterOfCell(Destination);
|
||||||
if ((self.CenterPosition - destPos).LengthSquared < info.MinDistance.RangeSquared)
|
if ((self.CenterPosition - destPos).LengthSquared < info.MinDistance.LengthSquared)
|
||||||
{
|
{
|
||||||
MovementCancelled(self);
|
MovementCancelled(self);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -332,7 +332,7 @@ getAirstrikeTarget = function()
|
|||||||
local list = Nod.GetGroundAttackers()
|
local list = Nod.GetGroundAttackers()
|
||||||
local target = list[DateTime.GameTime % #list + 1].CenterPosition
|
local target = list[DateTime.GameTime % #list + 1].CenterPosition
|
||||||
|
|
||||||
local sams = Map.ActorsInCircle(target, WRange.New(8 * 1024), function(actor)
|
local sams = Map.ActorsInCircle(target, WDist.New(8 * 1024), function(actor)
|
||||||
return actor.Type == "sam" end)
|
return actor.Type == "sam" end)
|
||||||
|
|
||||||
if #sams == 0 then
|
if #sams == 0 then
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ InitTriggers = function()
|
|||||||
USSRTruk.Move(BaseCameraWaypoint.Location)
|
USSRTruk.Move(BaseCameraWaypoint.Location)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
Trigger.OnEnteredProximityTrigger(BaseCameraWaypoint.CenterPosition, WRange.New(7 * 1024), function(a, id)
|
Trigger.OnEnteredProximityTrigger(BaseCameraWaypoint.CenterPosition, WDist.New(7 * 1024), function(a, id)
|
||||||
if a.Type == "truk" and not baseCamera then
|
if a.Type == "truk" and not baseCamera then
|
||||||
Trigger.RemoveProximityTrigger(id)
|
Trigger.RemoveProximityTrigger(id)
|
||||||
baseCamera = Actor.Create("camera", true, { Owner = player, Location = BaseCameraWaypoint.Location })
|
baseCamera = Actor.Create("camera", true, { Owner = player, Location = BaseCameraWaypoint.Location })
|
||||||
|
|||||||
@@ -391,7 +391,7 @@ InitTriggers = function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
local tanksLeft = 0
|
local tanksLeft = 0
|
||||||
Trigger.OnExitedProximityTrigger(ProvingGroundsCameraPoint.CenterPosition, WRange.New(10 * 1024), function(a, id)
|
Trigger.OnExitedProximityTrigger(ProvingGroundsCameraPoint.CenterPosition, WDist.New(10 * 1024), function(a, id)
|
||||||
if a.Type == "5tnk" then
|
if a.Type == "5tnk" then
|
||||||
tanksLeft = tanksLeft + 1
|
tanksLeft = tanksLeft + 1
|
||||||
if tanksLeft == 3 then
|
if tanksLeft == 3 then
|
||||||
|
|||||||
@@ -240,7 +240,7 @@ WorldLoaded = function()
|
|||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
Trigger.OnEnteredProximityTrigger(USSRExpansionPoint.CenterPosition, WRange.New(4 * 1024), function(unit, id)
|
Trigger.OnEnteredProximityTrigger(USSRExpansionPoint.CenterPosition, WDist.New(4 * 1024), function(unit, id)
|
||||||
if unit.Owner == player and Radar.Owner == player then
|
if unit.Owner == player and Radar.Owner == player then
|
||||||
Trigger.RemoveProximityTrigger(id)
|
Trigger.RemoveProximityTrigger(id)
|
||||||
|
|
||||||
|
|||||||
@@ -243,8 +243,8 @@ SetupBridges = function()
|
|||||||
Media.DisplayMessage("Commander! The Soviets destroyed the bridges to disable our reinforcements. Repair them for additional reinforcements.", "Incoming Report")
|
Media.DisplayMessage("Commander! The Soviets destroyed the bridges to disable our reinforcements. Repair them for additional reinforcements.", "Incoming Report")
|
||||||
RepairBridges = allies.AddSecondaryObjective("Repair the two southern bridges.")
|
RepairBridges = allies.AddSecondaryObjective("Repair the two southern bridges.")
|
||||||
|
|
||||||
local bridgeA = Map.ActorsInCircle(BrokenBridge1.CenterPosition, WRange.FromCells(1), function(self) return self.Type == "bridge1" end)
|
local bridgeA = Map.ActorsInCircle(BrokenBridge1.CenterPosition, WDist.FromCells(1), function(self) return self.Type == "bridge1" end)
|
||||||
local bridgeB = Map.ActorsInCircle(BrokenBridge2.CenterPosition, WRange.FromCells(1), function(self) return self.Type == "bridge1" end)
|
local bridgeB = Map.ActorsInCircle(BrokenBridge2.CenterPosition, WDist.FromCells(1), function(self) return self.Type == "bridge1" end)
|
||||||
|
|
||||||
Utils.Do(bridgeA, function(bridge)
|
Utils.Do(bridgeA, function(bridge)
|
||||||
Trigger.OnDamaged(bridge, function()
|
Trigger.OnDamaged(bridge, function()
|
||||||
|
|||||||
Reference in New Issue
Block a user