From 00c6260ec2a069e82b29213e2f17ebc90756f292 Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Mon, 18 Jul 2016 11:58:56 +0200 Subject: [PATCH 1/2] Extract duplicated code to a SetupHuntTrigger function --- mods/ra/maps/survival01/survival01.lua | 45 +++++++++++--------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/mods/ra/maps/survival01/survival01.lua b/mods/ra/maps/survival01/survival01.lua index b38a661be7..65a64ec63c 100644 --- a/mods/ra/maps/survival01/survival01.lua +++ b/mods/ra/maps/survival01/survival01.lua @@ -69,37 +69,12 @@ IdleTrigger = function(units, dest) Trigger.OnIdle(unit, function() local bool = Utils.All(units, function(unit) return unit.IsIdle end) if bool then - Utils.Do(units, function(unit) - if not unit.IsDead then - Trigger.ClearAll(unit) - Trigger.AfterDelay(0, function() - if not unit.IsDead then - if dest then unit.AttackMove(dest, 3) end - Trigger.OnIdle(unit, unit.Hunt) - Trigger.OnCapture(unit, function() - Trigger.ClearAll(unit) - end) - end - end) - end - end) + SetupHuntTrigger(units) end end) Trigger.OnDamaged(unit, function() - Utils.Do(units, function(unit) - if not unit.IsDead then - Trigger.ClearAll(unit) - Trigger.AfterDelay(0, function() - if not unit.IsDead then - Trigger.OnIdle(unit, unit.Hunt) - Trigger.OnCapture(unit, function() - Trigger.ClearAll(unit) - end) - end - end) - end - end) + SetupHuntTrigger(units) end) Trigger.OnCapture(unit, function() @@ -108,6 +83,22 @@ IdleTrigger = function(units, dest) end) end +SetupHuntTrigger = function(units) + Utils.Do(units, function(unit) + if not unit.IsDead then + Trigger.ClearAll(unit) + Trigger.AfterDelay(0, function() + if not unit.IsDead then + Trigger.OnIdle(unit, unit.Hunt) + Trigger.OnCapture(unit, function() + Trigger.ClearAll(unit) + end) + end + end) + end + end) +end + ticked = TimerTicks Tick = function() if KillObj and soviets.HasNoRequiredUnits() then From 308a1a72b3b6e71bbf37671fd3a35f696913b57c Mon Sep 17 00:00:00 2001 From: abcdefg30 Date: Mon, 18 Jul 2016 18:55:21 +0200 Subject: [PATCH 2/2] Add an IsDead check to prevent crashes in survival01 --- mods/ra/maps/survival01/survival01.lua | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/mods/ra/maps/survival01/survival01.lua b/mods/ra/maps/survival01/survival01.lua index 65a64ec63c..22d3b3e6aa 100644 --- a/mods/ra/maps/survival01/survival01.lua +++ b/mods/ra/maps/survival01/survival01.lua @@ -66,20 +66,22 @@ SovietBuildings = { Barrack1, SubPen, RadarDome, AdvancedPowerPlant1, AdvancedPo IdleTrigger = function(units, dest) Utils.Do(units, function(unit) - Trigger.OnIdle(unit, function() - local bool = Utils.All(units, function(unit) return unit.IsIdle end) - if bool then + if not unit.IsDead then + Trigger.OnIdle(unit, function() + local bool = Utils.All(units, function(unit) return unit.IsIdle end) + if bool then + SetupHuntTrigger(units) + end + end) + + Trigger.OnDamaged(unit, function() SetupHuntTrigger(units) - end - end) + end) - Trigger.OnDamaged(unit, function() - SetupHuntTrigger(units) - end) - - Trigger.OnCapture(unit, function() - Trigger.ClearAll(unit) - end) + Trigger.OnCapture(unit, function() + Trigger.ClearAll(unit) + end) + end end) end