101 lines
3.4 KiB
Lua
101 lines
3.4 KiB
Lua
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
-- (c) Galyana's Ultimate Empire at War Modifications
|
|
--
|
|
-- ****** *** *** ************ *** ***
|
|
-- * * * * * * * *
|
|
-- * * * * * * *
|
|
-- * * * * * * *
|
|
-- * * * * * **** * * *
|
|
-- * * * ****** * * * *
|
|
-- * **** * * * * * * * *** *
|
|
-- * * * * * * * * * *
|
|
-- * * * * * * * * * *
|
|
-- * * * * * * * ** * * *
|
|
-- ****** ****** ************ **** ** *******
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
-- C O N F I D E N T I A L S O U R C E C O D E -- D O N O T D I S T R I B U T E
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
--
|
|
-- File: GUEaW/Data/Scripts/AI/SpaceMode/BuildRefinerySpace.LUA
|
|
--
|
|
-- Original Editor: Giovanni Galyana
|
|
--
|
|
-- Final Edit By: Giovanni Galyana
|
|
--
|
|
-- Date: 2 October, 2022
|
|
--
|
|
-- Revisions: 2
|
|
--
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
require("pgevents")
|
|
|
|
|
|
function Definitions()
|
|
|
|
Category = "Build_Refinery_Space"
|
|
IgnoreTarget = true
|
|
TaskForce = {
|
|
{
|
|
"MainForce"
|
|
,"UC_Empire_Mineral_Extractor | UC_Rebel_Mineral_Extractor_Armored | UC_Hutt_Mineral_Extractor | UC_Underworld_Mineral_Extractor | UC_Pirate_Mineral_Extractor = 1"
|
|
}
|
|
}
|
|
-- RequiredCategories = {"Structure"}
|
|
AllowFreeStoreUnits = false
|
|
good_pad = nil
|
|
pad = nil
|
|
refinery = nil
|
|
|
|
end
|
|
|
|
function MainForce_Thread()
|
|
|
|
-- Make sure we use a build pad that's not too near to the enemy base
|
|
nearby_pad_list = MainForce.Get_Reserved_Build_Pads()
|
|
for i, pad in pairs(nearby_pad_list) do
|
|
if EvaluatePerception("Distance_To_Nearest_Enemy_Starbase", PlayerObject, pad) > 2000 then
|
|
good_pad = pad
|
|
break
|
|
end
|
|
end
|
|
|
|
if good_pad then
|
|
|
|
faction_name = PlayerObject.Get_Faction_Name()
|
|
if faction_name == "EMPIRE" then
|
|
MainForce.Build("UC_Empire_Mineral_Extractor", good_pad)
|
|
elseif faction_name == "REBEL" then
|
|
MainForce.Build("UC_Rebel_Mineral_Extractor_Armored", good_pad)
|
|
elseif faction_name == "PIRATES" then
|
|
MainForce.Build("UC_Pirate_Mineral_Extractor", good_pad)
|
|
elseif faction_name == "HUTTS" then
|
|
MainForce.Build("UC_Hutt_Mineral_Extractor", good_pad)
|
|
elseif faction_name == "UNDERWORLD" then
|
|
MainForce.Build("UC_Underworld_Mineral_Extractor", good_pad)
|
|
else
|
|
MessageBox("unexpected faction name: %s", faction_name)
|
|
end
|
|
|
|
-- Make sure we track the results
|
|
MainForce.Set_As_Goal_System_Removable(false)
|
|
|
|
-- If it survives X seconds, consider it a successful plan
|
|
Sleep(30)
|
|
if TestValid(good_pad) then
|
|
refinery = good_pad.Get_Build_Pad_Contents()
|
|
if TestValid(refinery) then
|
|
MainForce.Set_Plan_Result(true)
|
|
end
|
|
end
|
|
else
|
|
-- This plan/target sucks. Pause for a moment, then release the allocated cash.
|
|
Sleep(5)
|
|
end
|
|
|
|
ScriptExit()
|
|
end
|
|
|
|
|
|
|