Add more fail conditions to the spice harvesting missions
This commit is contained in:
@@ -99,15 +99,37 @@ WorldLoaded = function()
|
|||||||
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
||||||
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
||||||
|
|
||||||
Trigger.OnRemovedFromWorld(AtreidesConyard, function()
|
local checkResourceCapacity = function()
|
||||||
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" end)
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
Trigger.OnRemovedFromWorld(AtreidesConyard, function()
|
||||||
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
if #refs == 0 then
|
if #refs == 0 then
|
||||||
harkonnen.MarkCompletedObjective(KillAtreides)
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
else
|
else
|
||||||
Trigger.OnAllRemovedFromWorld(refs, function()
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
harkonnen.MarkCompletedObjective(KillAtreides)
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
@@ -99,15 +99,37 @@ WorldLoaded = function()
|
|||||||
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
||||||
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
||||||
|
|
||||||
Trigger.OnRemovedFromWorld(AtreidesConyard, function()
|
local checkResourceCapacity = function()
|
||||||
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" end)
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
Trigger.OnRemovedFromWorld(AtreidesConyard, function()
|
||||||
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
if #refs == 0 then
|
if #refs == 0 then
|
||||||
harkonnen.MarkCompletedObjective(KillAtreides)
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
else
|
else
|
||||||
Trigger.OnAllRemovedFromWorld(refs, function()
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
harkonnen.MarkCompletedObjective(KillAtreides)
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,40 @@ WorldLoaded = function()
|
|||||||
|
|
||||||
Camera.Position = AConyard.CenterPosition
|
Camera.Position = AConyard.CenterPosition
|
||||||
|
|
||||||
|
local checkResourceCapacity = function()
|
||||||
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
ordos.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
Trigger.OnRemovedFromWorld(AConyard, function()
|
||||||
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
|
if #refs == 0 then
|
||||||
|
ordos.MarkCompletedObjective(KillAtreides)
|
||||||
|
else
|
||||||
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
|
ordos.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
Trigger.OnAllKilled(OrdosBase, function()
|
Trigger.OnAllKilled(OrdosBase, function()
|
||||||
Utils.Do(ordos.GetGroundAttackers(), IdleHunt)
|
Utils.Do(ordos.GetGroundAttackers(), IdleHunt)
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -124,6 +124,40 @@ WorldLoaded = function()
|
|||||||
|
|
||||||
Camera.Position = AConyard.CenterPosition
|
Camera.Position = AConyard.CenterPosition
|
||||||
|
|
||||||
|
local checkResourceCapacity = function()
|
||||||
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
ordos.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
Trigger.OnRemovedFromWorld(AConyard, function()
|
||||||
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
|
if #refs == 0 then
|
||||||
|
ordos.MarkCompletedObjective(KillAtreides)
|
||||||
|
else
|
||||||
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
|
ordos.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
Trigger.OnAllKilled(OrdosBase, function()
|
Trigger.OnAllKilled(OrdosBase, function()
|
||||||
Utils.Do(ordos.GetGroundAttackers(), IdleHunt)
|
Utils.Do(ordos.GetGroundAttackers(), IdleHunt)
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -99,8 +99,27 @@ WorldLoaded = function()
|
|||||||
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
||||||
KillAtreides = player.AddSecondaryObjective("Eliminate all Atreides units and reinforcements\nin the area.")
|
KillAtreides = player.AddSecondaryObjective("Eliminate all Atreides units and reinforcements\nin the area.")
|
||||||
|
|
||||||
|
local checkResourceCapacity = function()
|
||||||
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
Trigger.OnRemovedFromWorld(HarkonnenConyard, function()
|
Trigger.OnRemovedFromWorld(HarkonnenConyard, function()
|
||||||
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" end)
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
|
|
||||||
if #refs == 0 then
|
if #refs == 0 then
|
||||||
atreides.MarkCompletedObjective(KillHarkonnen)
|
atreides.MarkCompletedObjective(KillHarkonnen)
|
||||||
@@ -108,6 +127,10 @@ WorldLoaded = function()
|
|||||||
Trigger.OnAllRemovedFromWorld(refs, function()
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
atreides.MarkCompletedObjective(KillHarkonnen)
|
atreides.MarkCompletedObjective(KillHarkonnen)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
@@ -99,8 +99,27 @@ WorldLoaded = function()
|
|||||||
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
||||||
KillAtreides = player.AddSecondaryObjective("Eliminate all Atreides units and reinforcements\nin the area.")
|
KillAtreides = player.AddSecondaryObjective("Eliminate all Atreides units and reinforcements\nin the area.")
|
||||||
|
|
||||||
|
local checkResourceCapacity = function()
|
||||||
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
Trigger.OnRemovedFromWorld(HarkonnenConyard, function()
|
Trigger.OnRemovedFromWorld(HarkonnenConyard, function()
|
||||||
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" end)
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
|
|
||||||
if #refs == 0 then
|
if #refs == 0 then
|
||||||
atreides.MarkCompletedObjective(KillHarkonnen)
|
atreides.MarkCompletedObjective(KillHarkonnen)
|
||||||
@@ -108,6 +127,10 @@ WorldLoaded = function()
|
|||||||
Trigger.OnAllRemovedFromWorld(refs, function()
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
atreides.MarkCompletedObjective(KillHarkonnen)
|
atreides.MarkCompletedObjective(KillHarkonnen)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
@@ -99,8 +99,27 @@ WorldLoaded = function()
|
|||||||
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
||||||
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
||||||
|
|
||||||
|
local checkResourceCapacity = function()
|
||||||
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
Trigger.OnRemovedFromWorld(OrdosConyard, function()
|
Trigger.OnRemovedFromWorld(OrdosConyard, function()
|
||||||
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" end)
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
|
|
||||||
if #refs == 0 then
|
if #refs == 0 then
|
||||||
harkonnen.MarkCompletedObjective(KillOrdos)
|
harkonnen.MarkCompletedObjective(KillOrdos)
|
||||||
@@ -108,6 +127,10 @@ WorldLoaded = function()
|
|||||||
Trigger.OnAllRemovedFromWorld(refs, function()
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
harkonnen.MarkCompletedObjective(KillOrdos)
|
harkonnen.MarkCompletedObjective(KillOrdos)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
@@ -99,8 +99,27 @@ WorldLoaded = function()
|
|||||||
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
GatherSpice = player.AddPrimaryObjective("Harvest " .. tostring(SpiceToHarvest) .. " Solaris worth of Spice.")
|
||||||
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
KillHarkonnen = player.AddSecondaryObjective("Eliminate all Harkonnen units and reinforcements\nin the area.")
|
||||||
|
|
||||||
|
local checkResourceCapacity = function()
|
||||||
|
Trigger.AfterDelay(0, function()
|
||||||
|
if player.ResourceCapacity < SpiceToHarvest then
|
||||||
|
Media.DisplayMessage("We don't have enough silo space to store the required amount of Spice!", "Mentat")
|
||||||
|
Trigger.AfterDelay(DateTime.Seconds(3), function()
|
||||||
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
|
end)
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
Trigger.OnRemovedFromWorld(OrdosConyard, function()
|
Trigger.OnRemovedFromWorld(OrdosConyard, function()
|
||||||
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" end)
|
|
||||||
|
-- Mission already failed, no need to check the other conditions as well
|
||||||
|
if checkResourceCapacity() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local refs = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "refinery" and actor.Owner == player end)
|
||||||
|
|
||||||
if #refs == 0 then
|
if #refs == 0 then
|
||||||
harkonnen.MarkCompletedObjective(KillAtreides)
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
@@ -108,6 +127,10 @@ WorldLoaded = function()
|
|||||||
Trigger.OnAllRemovedFromWorld(refs, function()
|
Trigger.OnAllRemovedFromWorld(refs, function()
|
||||||
harkonnen.MarkCompletedObjective(KillAtreides)
|
harkonnen.MarkCompletedObjective(KillAtreides)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
local silos = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "silo" and actor.Owner == player end)
|
||||||
|
Utils.Do(refs, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
|
Utils.Do(silos, function(actor) Trigger.OnRemovedFromWorld(actor, checkResourceCapacity) end)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user