The problem is why Buffarea_2 works and BuffArea_1 doesn't work
Here is my script code.
- Code: Select all
local ScenarioUtils = import('/lua/sim/ScenarioUtilities.lua')
local ScenarioFramework = import('/lua/ScenarioFramework.lua')
function OnPopulate()
ScenarioUtils.InitializeArmies()
end
function OnStart(self)
ForkThread(HealthAdjustor)
end
local BuffAreaName
local location
local px, py, pz
local rect
local entities
local unitsA
local unitsB
local health
local preAdjHealth
local delta
local ArmyBrain
function HealthAdjustor(self)
while true do
for k = 1, 2 do
BuffAreaName = 'BuffArea_' .. k
location = ScenarioUtils.MarkerToPosition(BuffAreaName)
px, py, pz = unpack(location)
rect = Rect(px-11, pz-11, px+11, pz+11)
entities = GetUnitsInRect(rect)
if entities then
unitsA = EntityCategoryFilterDown(categories.MOBILE, entities)
unitsB = EntityCategoryFilterDown(categories.HYDROCARBON + categories.MASSEXTRACTION, entities)
end
end
if unitsB ~= nil then
if table.getn(unitsB) >= 1 then
for _, supplier in unitsB do
ArmyBrain = supplier:GetAIBrain()
end
end
for _, instigator in unitsA do
if VDist3(instigator:GetPosition(), location) <= 8 then
if instigator:GetAIBrain()~= ArmyBrain then
health = instigator:GetHealth()
delta = health*0.05
instigator:AdjustHealth(instigator, -delta)
else
instigator:AdjustHealth(instigator, delta)
end
end
end
end
WaitSeconds(10)
end
end