Initial commit
This commit is contained in:
132
DATA/SCRIPTS/AI/LANDMODE/BURNUNITSLAND.LUA
Normal file
132
DATA/SCRIPTS/AI/LANDMODE/BURNUNITSLAND.LUA
Normal file
@@ -0,0 +1,132 @@
|
||||
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/AI/LandMode/BurnUnitsLand.lua#1 $
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
--
|
||||
-- (C) Petroglyph Games, Inc.
|
||||
--
|
||||
--
|
||||
-- ***** ** * *
|
||||
-- * ** * * *
|
||||
-- * * * * *
|
||||
-- * * * * * * * *
|
||||
-- * * *** ****** * ** **** *** * * * ***** * ***
|
||||
-- * ** * * * ** * ** ** * * * * ** ** ** *
|
||||
-- *** ***** * * * * * * * * ** * * * *
|
||||
-- * * * * * * * * * * * * * * *
|
||||
-- * * * * * * * * * * ** * * * *
|
||||
-- * ** * * ** * ** * * ** * * * *
|
||||
-- ** **** ** * **** ***** * ** *** * *
|
||||
-- * * *
|
||||
-- * * *
|
||||
-- * * *
|
||||
-- * * * *
|
||||
-- **** * *
|
||||
--
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
-- 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: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/AI/LandMode/BurnUnitsLand.lua $
|
||||
--
|
||||
-- Original Author: Steve_Copeland
|
||||
--
|
||||
-- $Author: Brian_Hayes $
|
||||
--
|
||||
-- $Change: 637819 $
|
||||
--
|
||||
-- $DateTime: 2017/03/22 10:16:16 $
|
||||
--
|
||||
-- $Revision: #1 $
|
||||
--
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
require("pgevents")
|
||||
|
||||
function Definitions()
|
||||
|
||||
AllowEngagedUnits = true
|
||||
IgnoreTarget = true
|
||||
Category = "Burn_Units_Land"
|
||||
TaskForce = {
|
||||
{
|
||||
"MainForce"
|
||||
, "TaskForceRequired"
|
||||
, "DenySpecialWeaponAttach"
|
||||
}
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
function MainForce_Thread()
|
||||
|
||||
-- Cheat to wrap the game up if this is a firesale
|
||||
if (EvaluatePerception("Should_Firesale_Land", PlayerObject) > 0) then
|
||||
reveal_ai = FogOfWar.Reveal_All(PlayerObject)
|
||||
MainForce.Set_As_Goal_System_Removable(false)
|
||||
|
||||
-- We're now also revealing FOW here for the human player (was previously handled by a hard-coded system)
|
||||
-- Make sure that there isn't a scripted scenario underway that doesn't want automatic FOW reveals
|
||||
if Is_Multiplayer_Mode() == false and ((EvaluatePerception("Is_Skirmish_Mode", PlayerObject) == 1) or
|
||||
(GlobalValue.Get("Allow_AI_Controlled_Fog_Reveal") == 1)) then
|
||||
reveal_human = FogOfWar.Reveal_All(Find_Player("local"))
|
||||
end
|
||||
end
|
||||
|
||||
-- Do this at least once (it may just be an attempt to burn off extra units, rather than a firesale)
|
||||
repeat
|
||||
-- Cancel all goals
|
||||
Purge_Goals(PlayerObject)
|
||||
|
||||
--Eject garrisons from structures so they can be burned along with everything else.
|
||||
garrison_table = Find_All_Objects_Of_Type("CanContainGarrison", PlayerObject)
|
||||
if garrison_table then
|
||||
for i,unit in pairs(garrison_table) do
|
||||
if not unit.Is_Category("Vehicle") then
|
||||
unit.Eject_Garrison()
|
||||
end
|
||||
end
|
||||
Sleep(1)
|
||||
end
|
||||
|
||||
Sleep(1)
|
||||
|
||||
-- Use all idle units, mapwide
|
||||
MainForce.Collect_All_Free_Units()
|
||||
|
||||
-- form up any spread out infantry
|
||||
MainForce.Activate_Ability("SPREAD_OUT", false)
|
||||
|
||||
Set_Land_AI_Targeting_Priorities(MainForce)
|
||||
|
||||
-- Have each unit attack its nearest enemy structure until success or death
|
||||
nearest_enemy = Find_Nearest(MainForce, "InBase", PlayerObject, false)
|
||||
if not TestValid(nearest_enemy) then
|
||||
nearest_enemy = Find_Nearest(MainForce, PlayerObject, false)
|
||||
end
|
||||
|
||||
while TestValid(nearest_enemy) do
|
||||
MainForce.Collect_All_Free_Units()
|
||||
BlockOnCommand(MainForce.Attack_Move(nearest_enemy), 20)
|
||||
end
|
||||
|
||||
-- Only let this happen every so often
|
||||
Sleep(5)
|
||||
MainForce.Set_Plan_Result(true)
|
||||
|
||||
-- If this is a firesale condition, continue to burn off units
|
||||
-- This must be done within the same plan because we don't want to destroy the
|
||||
-- reveal objects turning FOW back on (which would result in the FOW being toggled repeatedly).
|
||||
until (EvaluatePerception("Should_Firesale_Land", PlayerObject) == 0)
|
||||
|
||||
MainForce.Release_Forces(1.0)
|
||||
|
||||
Sleep(30)
|
||||
end
|
||||
|
||||
-- Override default event to prevent plan from ending under firesale conditions
|
||||
-- We want the fog of war reveal for the player to persist.
|
||||
function MainForce_No_Units_Remaining()
|
||||
end
|
||||
|
||||
function MainForce_Unit_Damaged(tf, unit, attacker, deliberate)
|
||||
--Override self preservation behavior - the whole purpose of this plan is to kill or be killed
|
||||
end
|
||||
Reference in New Issue
Block a user