277 lines
8.8 KiB
Lua
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
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------
|