Files
SoaFE/DATA/SCRIPTS/STORY/STORY_REBEL_ACTIII_M09_LAND.LUA
2026-02-28 14:00:45 -06:00

277 lines
8.8 KiB
Lua

--/////////////////////////////////////////////////////////////////////////////////////////////////
--
-- (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:
--
-- $Author: Brian_Hayes $
--
-- $Change:
--
-- $DateTime:
--
-- $Revision:
--
--/////////////////////////////////////////////////////////////////////////////////////////////////
require("PGStoryMode")
-----------------------------------------------------------------------------------------------------------------------
-- Definitions -- This function is called once when the script is first created.
-----------------------------------------------------------------------------------------------------------------------
function Definitions()
DebugMessage("%s -- In Definitions", tostring(Script))
StoryModeEvents =
{
Rebel_A3_M09_Begin = State_Rebel_A3_M09_Begin
}
at_at_list = {}
power_generator = nil
han_made_it = false
chewie_made_it = false
spawn1 = {
"Imperial_Stormtrooper_Squad"
}
spawn2 = {
"Imperial_Anti_Infantry_Brigade"
}
spawn3 = {
"Imperial_Armor_Group"
}
spawn4 = {
"Imperial_Stormtrooper_Squad",
}
start_service = false
end
-----------------------------------------------------------------------------------------------------------------------
-- Generator Destroyed
-----------------------------------------------------------------------------------------------------------------------
function GeneratorDestroyed()
Story_Event("GENERATOR_DESTROYED")
-- Release the ATAT's
for i,unit in pairs(at_at_list) do
unit.Attack_Move(han)
end
-- Set up trigger for when Han and Chewie get to the cargo area
cargo_area = Find_Hint("GENERIC_MARKER_LAND", "cargoarea")
cargo_range = 100
Register_Prox(cargo_area, Prox_Cargo, cargo_range, rebel)
-- Hack! wipe out turbo-lasers when generator blows
turbo_lasers = Find_All_Objects_Of_Type("E_GROUND_TURBOLASER_TOWER")
for i,unit in pairs(turbo_lasers) do
unit.Take_Damage(10000)
end
end
-----------------------------------------------------------------------------------------------------------------------
-- Spawn_Ambush_Squad - Spawns a squad of units and sends them to attack Han and Chewie
-----------------------------------------------------------------------------------------------------------------------
function Spawn_Ambush_Squad(spawn_marker_name,spawn_type_list)
spawn_marker = Find_Hint("GENERIC_MARKER_LAND", spawn_marker_name)
if not spawn_marker then
--MessageBox("Couldn't find spawn marker %s",spawn_marker_name)
end
new_units = SpawnList(spawn_type_list,spawn_marker,empire,false,true)
for i,unit in pairs(new_units) do
unit.Attack_Move(han)
end
end
-----------------------------------------------------------------------------------------------------------------------
-- Prox_Cargo
-----------------------------------------------------------------------------------------------------------------------
function Prox_Cargo(prox_obj, trigger_obj)
prox_obj.Cancel_Event_Object_In_Range(Prox_Cargo)
-- Ambush!
Spawn_Ambush_Squad("spawn1",spawn1)
Spawn_Ambush_Squad("spawn2",spawn2)
Spawn_Ambush_Squad("spawn3",spawn3)
Spawn_Ambush_Squad("spawn4",spawn4)
Story_Event("REACHED_CARGO")
falcon_marker = Find_Hint("GENERIC_MARKER_LAND", "falcon")
if not falcon_marker then
--MessageBox("Couldn't find the falcon marker")
end
falcon_range = 100
Register_Prox(falcon_marker, Prox_Falcon, falcon_range, rebel)
--MessageBox("Registered Prox_Falcon")
end
-----------------------------------------------------------------------------------------------------------------------
-- Prox_Falcon
-----------------------------------------------------------------------------------------------------------------------
function Prox_Falcon(prox_obj, trigger_obj)
--MessageBox("Prox_Falcon triggered")
if trigger_obj == han then
--MessageBox("Han Made It")
han_made_it = true
end
if trigger_obj == chewie then
--MessageBox("Chewie Made It")
chewie_made_it = true
end
if han_made_it and chewie_made_it then
--MessageBox("Han and Chewie made it")
Story_Event("REACHED_FALCON") -- victory!
end
end
-----------------------------------------------------------------------------------------------------------------------
-- Tell_Units_To_Guard
-----------------------------------------------------------------------------------------------------------------------
function Tell_Units_To_Guard(unit_list)
for i, unit in pairs(unit_list) do
if unit.Get_Hint() ~= "disabled" then
unit.Guard_Target(unit.Get_Position())
end
end
end
-----------------------------------------------------------------------------------------------------------------------
-- Function for Event:
-----------------------------------------------------------------------------------------------------------------------
function State_Rebel_A3_M09_Begin(message)
if message == OnEnter then
-- Prevent the AI from performing an automatic fog of war reveal for this tactical scenario.
-- MessageBox("disallowing ai controlled fog reveal")
GlobalValue.Set("Allow_AI_Controlled_Fog_Reveal", 0)
DebugMessage("]]]] LUA: State_Rebel_M06_Begin")
-- Get handles to Han and Chewie
han_list = Find_All_Objects_Of_Type("HAN_SOLO")
han = han_list[1]
chewie_list = Find_All_Objects_Of_Type("CHEWBACCA")
chewie = chewie_list[1]
-- For debugging purposes! TAKE OUT --
--han.Make_Invulnerable(true)
--chewie.Make_Invulnerable(true)
-- For debugging purposes! TAKE OUT --
-- Get Players
spawn1_marker = Find_Hint("GENERIC_MARKER_LAND", "spawn1")
empire = Find_Player("Empire")
rebel = Find_Player("Rebel")
-- Find the At-At's that we are going to activate
at_at_list = Find_All_Objects_Of_Type("AT_AT_WALKER_REB09")
-- Find the power_generator
power_generator_list = Find_All_Objects_Of_Type("POWER_GENERATOR_E")
power_generator = power_generator_list[1]
if not power_generator then
--MessageBox("Couldn't Find Empire Power Generator!")
return
end
-- Release some units when the generator goes down
Register_Death_Event(power_generator,GeneratorDestroyed)
-- Find all disabled objects
disabled_list = Find_All_Objects_With_Hint("disabled")
for i,unit in pairs(disabled_list) do
--DebugMessage("]]]] disabling unit %s",unit.Get_Type().Get_Name())
unit.Prevent_Opportunity_Fire(true)
end
-- Set most of the units to guard
--MessageBox("Set to defend mode")
guard_list = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
Tell_Units_To_Guard(guard_list)
guard_list = Find_All_Objects_Of_Type("AT_ST_WALKER")
Tell_Units_To_Guard(guard_list)
guard_list = Find_All_Objects_Of_Type("TIE_CRAWLER")
Tell_Units_To_Guard(guard_list)
--MessageBox("Done setting defend mode")
-- Tell the service func that things have been initialized
start_service = true
end
end
-----------------------------------------------------------------------------------------------------------------------
function Story_Mode_Service()
if start_service then
if not TestValid(han) or not TestValid(chewie) then
Story_Event("HAN_OR_CHEWIE_KILLED")
end
end
end
-----------------------------------------------------------------------------------------------------------------------