Initial commit

This commit is contained in:
2026-02-28 14:00:45 -06:00
commit 16d3170787
1134 changed files with 589134 additions and 0 deletions

View File

@@ -0,0 +1,194 @@
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/AI/SpaceMode/BombingRun.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/SpaceMode/BombingRun.lua $
--
-- Original Author: Steve_Copeland
--
-- $Author: Brian_Hayes $
--
-- $Change: 637819 $
--
-- $DateTime: 2017/03/22 10:16:16 $
--
-- $Revision: #1 $
--
--/////////////////////////////////////////////////////////////////////////////////////////////////
require("pgevents")
function Definitions()
AllowEngagedUnits = false
IgnoreTarget = true
Category = "Bomb_Unit"
TaskForce = {
{
"BomberForce"
,"Bomber = 3,10"
},
{
"FighterForce"
,"Fighter = 1,4"
}
}
direction_table = {
"back"
,"left"
,"right"
}
convenient_space_field_range = 2000
path_through = "ASTEROID | NEBULA" -- "ASTEROID | NEBULA | ION_FIELD"
time_to_drop_bombs = 2
bombers_reinforced = false
rallied = false
send_fighters = false
end
function BomberForce_Thread()
BlockOnCommand(BomberForce.Produce_Force())
BomberForce.Set_As_Goal_System_Removable(false)
QuickReinforce(PlayerObject, AITarget, BomberForce, FighterForce)
bombers_reinforced = true
-- Do some setup if the bombers arent' already too close
-- Also, don't bother with this setup if the tactical game is well underway
if (BomberForce.Get_Distance(AITarget) > 1000) and (EvaluatePerception("Game_Age", PlayerObject) < 360) then
BomberForce.Set_Targeting_Priorities("Bomber_Hit_And_Run", "Bomber")
send_fighters = true
BomberForce.Activate_Ability("SPOILER_LOCK", true)
-- Try to let the fighters get ahead of the bombers
while not Fighters_Closer_To_Target() and not Fighters_Engaged_Target() do
Obscure(BomberForce, 1000, true, "ASTEROID | NEBULA")
Sleep(1)
end
end
DebugMessage("bomber force target: %s", tostring(AITarget))
BlockOnCommand(BomberForce.Attack_Target(AITarget, BomberForce.Get_Self_Threat_Max()))
ScriptExit()
end
function Fighters_Closer_To_Target()
if BomberForce.Get_Force_Count == 0 or (not TestValid(FighterForce)) or FighterForce.Get_Force_Count == 0 then
return false
elseif FighterForce.Get_Distance(AITarget) < BomberForce.Get_Distance(AITarget) then
return true
end
end
function Fighters_Engaged_Target()
return TestValid(FighterForce) and (FindDeadlyEnemy(FighterForce) == AITarget)
end
-- Handle a hardpoint achieving range on the attack target
function BomberForce_Hardpoint_Target_In_Range(tf, unit, target)
BomberForce.Activate_Ability("SPOILER_LOCK", false)
-- Create a timer for this squadron to flee after it's had a chance to drop the rest of it's bombs
--Register_Timer(Repeat_Attack, time_to_drop_bombs, unit)
end
function Repeat_Attack(unit)
run_target = FindTarget(BomberForce, "Good_Space_Artillery_Area", "Tactical_Location", 0.8, 3000.0)
if run_target then
MessageBox("%s %.3f -- Bomber squad fleeing to %s.", tostring(Script), GetCurrentTime(), tostring(run_target))
GoKite(BomberForce, unit, run_target, false)
Sleep(4)
end
unit.Attack_Target(AITarget)
-- Once one attack is done, we'll let desirability drops end the plan
BomberForce.Set_As_Goal_System_Removable(true)
end
function FighterForce_Thread()
BlockOnCommand(FighterForce.Produce_Force())
QuickReinforce(PlayerObject, AITarget, FighterForce, BomberForce)
SetClassPriorities(FighterForce, "Attack_Move")
Try_Ability(FighterForce, "STEALTH")
if (EvaluatePerception("Game_Age", PlayerObject) < 360) then
while not bombers_reinforced do
reinforce_target = FindTarget(FighterForce, "Space_Area_Is_Hidden", "Tactical_Location", 0.8, 3000.0)
if reinforce_target then
BlockOnCommand(FighterForce.Move_To(reinforce_target), -1, Bombers_Have_Reinforced)
else
Sleep(1)
end
end
-- BlockOnCommand(FighterForce.Move_To(BomberForce, FighterForce.Get_Self_Threat_Max()))
rallied = true
while not send_fighters do
Escort(FighterForce, BomberForce)
end
end
BlockOnCommand(FighterForce.Attack_Target(AITarget))
end
function Bombers_Have_Reinforced()
return bombers_reinforced
end
--function Fighters_Have_Rallied()
-- return rallied
--end
function BomberForce_Original_Target_Destroyed()
DebugMessage("%s-- killed plan because original target destroyed", tostring(Script))
ScriptExit()
end
function FighterForce_Original_Target_Destroyed()
DebugMessage("%s-- killed plan because original target destroyed", tostring(Script))
ScriptExit()
end