Merge pull request #12198 from abcdefg30/hijack

Fix soviet units not stopping to hunt after being captured in Exodus
This commit is contained in:
Oliver Brakmann
2016-10-13 20:40:06 +02:00
committed by GitHub
2 changed files with 12 additions and 23 deletions

View File

@@ -72,6 +72,10 @@ MECH:
Buildable:
Prerequisites: ~disabled
HIJACKER:
Buildable:
Prerequisites: ~disabled
SPEN:
Buildable:
Prerequisites: ~disabled

View File

@@ -139,17 +139,18 @@ end
SovietGroupSize = 5
SpawnSovietUnits = function()
local spawnPoint = Utils.Random(SovietEntryPoints)
local rallyPoint = Utils.Random(SovietRallyPoints)
local route = { spawnPoint.Location, rallyPoint.Location }
local units = SovietUnits1
if DateTime.GameTime >= SovietUnits2Ticks[Difficulty] then
units = SovietUnits2
end
local unit = { Utils.Random(units) }
Reinforcements.Reinforce(soviets, unit, route)
local unitType = Utils.Random(units)
local spawnPoint = Utils.Random(SovietEntryPoints)
local rallyPoint = Utils.Random(SovietRallyPoints)
local actor = Actor.Create(unitType, true, { Owner = soviets, Location = spawnPoint.Location })
actor.AttackMove(rallyPoint.Location)
IdleHunt(actor)
local delay = math.max(attackAtFrame - 5, minAttackAtFrame)
Trigger.AfterDelay(delay, SpawnSovietUnits)
@@ -184,24 +185,9 @@ end
IdleHunt = function(unit)
Trigger.OnIdle(unit, unit.Hunt)
end
ManageSovietUnits = function()
Utils.Do(SovietRallyPoints, function(rallyPoint)
local radius = WDist.FromCells(8)
local units = Map.ActorsInCircle(rallyPoint.CenterPosition, radius, function(actor)
return actor.Owner == soviets and actor.HasProperty("Hunt")
Trigger.OnCapture(unit, function()
Trigger.ClearAll(unit)
end)
if #units > SovietGroupSize then
Utils.Do(units, IdleHunt)
end
end)
local scatteredUnits = Utils.Where(soviets.GetGroundAttackers(), function(unit)
return not Map.IsNamedActor(unit) and unit.IsIdle and unit.HasProperty("Hunt")
end)
Utils.Do(scatteredUnits, IdleHunt)
end
AircraftTargets = function()
@@ -294,7 +280,6 @@ end
Tick = function()
if DateTime.GameTime % 100 == 0 then
ManageSovietUnits()
ManageSovietAircraft()
Utils.Do(humans, function(player)