2020 lines
61 KiB
Lua
2020 lines
61 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_A1_M01_Begin = State_RA01M01_Begin
|
||
,Rebel_A01_IntroCine_Dialog_Line_01_Remove_Text = State_IntroCine_Dialog_Line_01_Remove_Text
|
||
,Rebel_A01_IntroCine_Dialog_Line_02_Remove_Text = State_IntroCine_Dialog_Line_02_Remove_Text
|
||
,Rebel_A01_IntroCine_Dialog_Line_03_Remove_Text = State_IntroCine_Dialog_Line_03_Remove_Text
|
||
,Rebel_A01_IntroCine_Dialog_Line_04_Remove_Text = State_IntroCine_Dialog_Line_04_Remove_Text
|
||
,Rebel_A01_IntroCine_Dialog_Line_05_Remove_Text = State_IntroCine_Dialog_Line_05_Remove_Text
|
||
,Rebel_A01_IntroCine_Dialog_Line_06_Remove_Text = State_IntroCine_Dialog_Line_06_Remove_Text
|
||
,Rebel_A1_M01_Intro_Speech_00_Remove_Text = State_Rebel_A1_M01_Intro_Speech_00_Remove_Text
|
||
,Rebel_A1_M01_Intro_Speech_01_Remove_Text = State_Rebel_A1_M01_Intro_Speech_01_Remove_Text
|
||
,Rebel_A1_M01_Intro_Speech_02_Remove_Text = State_Rebel_A1_M01_Intro_Speech_02_Remove_Text
|
||
,Rebel_A1_M01_Intro_Speech_03_Remove_Text = State_Rebel_A1_M01_Intro_Speech_03_Remove_Text
|
||
,Rebel_A1_M01_Intro_Speech_04_Remove_Text = State_Rebel_A1_M01_Intro_Speech_04_Remove_Text
|
||
,Rebel_A01_M02_LUA_MISSION_END = State_Rebel_A01_M02_LUA_MISSION_END
|
||
|
||
,Rebel_A1_M01_Check_Destroyed_Flag_01 = State_RA01M01_Reinforce_00
|
||
,Rebel_A1_M01_Check_Destroyed_Flag_11 = State_RA01M01_Reinforce_01
|
||
,Rebel_A1_M01_Third_Speech_01 = State_Rebel_A1_M01_Third_Speech_01
|
||
|
||
|
||
,Rebel_A1_M01_Give_Task_00 = State_M01_Give_Task_00
|
||
,Rebel_A1_M01_First_Speech_00_Remove_Text = State_First_Speech_00_Remove_Text
|
||
,Rebel_A1_M01_Give_Weaken_Enemy_Hint = State_Give_Weaken_Enemy_Hint
|
||
--,Rebel_A1_M01_RESET_Runaway_Hint = State_M01_RESET_Runaway_Hint
|
||
|
||
--new cinematic callbacks here
|
||
,Rebel_A1_M01_Third_Speech_00 = State_Rebel_A1_M01_Third_Speech_00
|
||
,Rebel_A1_M01_Third_Speech_00_Remove_Text = State_Rebel_A1_M01_Third_Speech_00_Remove_Text
|
||
|
||
}
|
||
|
||
empire_list_0 = {
|
||
"TIE_Scout_Squadron"
|
||
,"TIE_Scout_Squadron"
|
||
,"TIE_Scout_Squadron"
|
||
}
|
||
|
||
empire_list_1 = {
|
||
"TIE_Scout_Squadron"
|
||
,"Tartan_Patrol_Cruiser_Easy"
|
||
,"TIE_Scout_Squadron"
|
||
|
||
}
|
||
|
||
empire_list_2 = {
|
||
"TIE_Scout_Squadron"
|
||
,"TIE_Scout_Squadron"
|
||
,"TIE_Scout_Squadron"
|
||
}
|
||
|
||
Sundered_Heart_Clone = {
|
||
"Sundered_Heart_Cinematic_Clone"
|
||
}
|
||
|
||
PrimarySkydomeList =
|
||
{
|
||
"Stars_Lua_Cinematic"
|
||
}
|
||
|
||
IntroAnimationList =
|
||
{
|
||
"MOV_Rebel_Cinematic_Intro"
|
||
}
|
||
|
||
SD_list = {
|
||
"Star_Destroyer"
|
||
}
|
||
|
||
tie_list = {
|
||
"Tie_Fighter_Squadron"
|
||
|
||
}
|
||
|
||
tie_list_2 = {
|
||
"Tie_Fighter_Squadron"
|
||
,"Tie_Fighter_Squadron"
|
||
}
|
||
|
||
station_reaction_list2 = {
|
||
"Tartan_Patrol_Cruiser_Easy"
|
||
}
|
||
|
||
start_tartan_list = {
|
||
"Tartan_Patrol_Cruiser_Easy"
|
||
}
|
||
|
||
station_reaction_list3 = {
|
||
"Tartan_Patrol_Cruiser_Easy"
|
||
,"Tie_Fighter_Squadron"
|
||
}
|
||
|
||
station_reaction_list4 = {
|
||
"Tartan_Patrol_Cruiser_Easy"
|
||
,"Tie_Fighter_Squadron"
|
||
,"TIE_Scout_Squadron"
|
||
}
|
||
|
||
station_reaction_list5 = {
|
||
"Tartan_Patrol_Cruiser_Easy"
|
||
,"Tartan_Patrol_Cruiser_Easy"
|
||
,"Tie_Fighter_Squadron"
|
||
}
|
||
|
||
station_reaction_list6 = {
|
||
"Tartan_Patrol_Cruiser_Easy"
|
||
,"Tie_Fighter_Squadron"
|
||
,"TIE_Scout_Squadron"
|
||
}
|
||
|
||
antilles_weaken_enemy_effect = {
|
||
"Antilles_Weaken_Enemy_Effect"
|
||
|
||
}
|
||
|
||
marker_list = {}
|
||
empire_player = nil
|
||
empire_units = nil
|
||
antilles_enter = nil
|
||
corvette_1 = nil
|
||
corvette_2 = nil
|
||
corvette_3 = nil
|
||
corvette_4 = nil
|
||
reveal_01 = nil
|
||
reveal_02 = nil
|
||
reveal_03 = nil
|
||
reveal_04 = nil
|
||
reveal_05 = nil
|
||
reveal_06 = nil
|
||
|
||
dock_sensor_dist = 1400 -- jdg was 1400, 400
|
||
pod_sensor_dist = 800 -- jdg was 800, 200
|
||
docks_attacked = 0
|
||
alarm_time = 5 --was 35
|
||
default_repeat_time = 30 -- was 55
|
||
repeat_time_min = 30 -- minimum time for repeat reinforcements jdg was 30
|
||
repeat_time_decrement = 5
|
||
repeat_time = default_repeat_time
|
||
repeat_active = false
|
||
maximum_repeats = 2 -- maximum times a reinforcement force will attack per dock attacked jdg was 6
|
||
|
||
intro_cinematic_skipped = false
|
||
end_cinematic_skipped = false
|
||
mission_initialized = false;
|
||
mission_over = false;
|
||
current_cinematic_thread_id = nil
|
||
|
||
flag_initialized = false
|
||
|
||
--flag_start_tartans_destroyed = false
|
||
flag_run_away_hint_given = false
|
||
flag_cine_fuel_destroyed = false
|
||
flag_cine_ok_to_exit = false
|
||
|
||
sensor1_responded = false
|
||
sensor2_responded = false
|
||
sensor3_responded = false
|
||
sensor4_responded = false
|
||
sensor5_responded = false
|
||
sensor6_responded = false
|
||
sensor7_responded = false
|
||
|
||
counter_run_away_hint = 0
|
||
counter_shipyards_destroyed = 0
|
||
|
||
flag_shipyard_01_destroyed = false
|
||
flag_shipyard_02_destroyed = false
|
||
flag_shipyard_03_destroyed = false
|
||
flag_shipyard_04_destroyed = false
|
||
flag_shipyard_05_destroyed = false
|
||
flag_shipyard_06_destroyed = false
|
||
flag_mission_over = false
|
||
flag_shipyard01_destroyer01_destroyed = false
|
||
flag_shipyard01_destroyer02_destroyed = false
|
||
flag_shipyard02_destroyer01_destroyed = false
|
||
flag_shipyard03_destroyer01_destroyed = false
|
||
flag_shipyard04_destroyer01_destroyed = false
|
||
|
||
flag_second_distress_call_made = false
|
||
|
||
tartan_prox_range = 150
|
||
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Initial cinematic setup & play
|
||
-- *****************************************************************************************************
|
||
|
||
function State_RA01M01_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)
|
||
|
||
empire = Find_Player("Empire")
|
||
rebel = Find_Player("Rebel")
|
||
|
||
Stop_All_Music()
|
||
-- lockout player control & AI
|
||
Suspend_AI(1)
|
||
Lock_Controls(1)
|
||
--MessageBox("Beginning script")
|
||
|
||
-- Find all the reinforcement markers
|
||
victory_enter = Find_Hint("GENERIC_MARKER_SPACE", "victoryenter")
|
||
victory_evasive = Find_Hint("GENERIC_MARKER_SPACE", "victoryevasive")
|
||
marker_list[0] = Find_Hint("GENERIC_MARKER_SPACE", "EMPIRE_REINFORCE_0")
|
||
|
||
if not TestValid(marker_list[0]) then
|
||
MessageBox("Couldn't find marker_list[0]")
|
||
end
|
||
|
||
|
||
marker_list[1] = Find_Hint("GENERIC_MARKER_SPACE", "EMPIRE_REINFORCE_1")
|
||
marker_list[2] = Find_Hint("GENERIC_MARKER_SPACE", "EMPIRE_REINFORCE_2")
|
||
marker_list[3] = Find_Hint("GENERIC_MARKER_SPACE", "EMPIRE_REINFORCE_3")
|
||
marker_list[4] = Find_Hint("GENERIC_MARKER_SPACE", "EMPIRE-REINFORCE-4")
|
||
|
||
|
||
antilles_enter = Find_Hint("GENERIC_MARKER_SPACE", "antillesenter")
|
||
antilles_leave = Find_Hint("GENERIC_MARKER_SPACE", "antillesleave")
|
||
corvette_1 = Find_Hint("CORELLIAN_CORVETTE", "corvette1")
|
||
corvette_2 = Find_Hint("CORELLIAN_CORVETTE", "corvette2")
|
||
corvette_3 = Find_Hint("CORELLIAN_CORVETTE", "corvette3")
|
||
corvette_4 = Find_Hint("CORELLIAN_CORVETTE", "corvette4")
|
||
|
||
-- Find captain antilles
|
||
antilles = Find_First_Object("Sundered_heart")
|
||
if not TestValid(antilles) then
|
||
--MessageBox("Couldn't find sundered heart")
|
||
end
|
||
|
||
start_tartan01 = Find_Hint("Tartan_Patrol_Cruiser_Easy", "start-tartan01")
|
||
start_tartan02 = Find_Hint("Tartan_Patrol_Cruiser_Easy", "start-tartan02")
|
||
|
||
start_tartan01_pos = start_tartan01.Get_Position()
|
||
start_tartan02_pos = start_tartan02.Get_Position()
|
||
start_tartan01.Despawn()
|
||
start_tartan02.Despawn()
|
||
|
||
corvette_1.Prevent_Opportunity_Fire(true)
|
||
corvette_2.Prevent_Opportunity_Fire(true)
|
||
corvette_3.Prevent_Opportunity_Fire(true)
|
||
corvette_4.Prevent_Opportunity_Fire(true)
|
||
antilles.Prevent_Opportunity_Fire(true)
|
||
|
||
rebel_player = Find_Player("Rebel")
|
||
|
||
|
||
|
||
pod1 = Find_Hint("ORBITAL_CONSTRUCTION_POD", "cp1")
|
||
pod2 = Find_Hint("ORBITAL_CONSTRUCTION_POD", "cp2")
|
||
--pod3 = Find_Hint("ORBITAL_CONSTRUCTION_POD", "cp3")
|
||
|
||
station_point = Find_Hint("GENERIC_MARKER_SPACE", "rnfstation")
|
||
|
||
hide_me_table = Find_All_Objects_With_Hint("hide-me")
|
||
for i,hide_me in pairs(hide_me_table) do
|
||
hide_me.Hide(true)
|
||
end
|
||
|
||
|
||
rebel_player = Find_Player("Rebel")
|
||
neutral = Find_Player("Neutral")
|
||
|
||
--JDG - these are the objects for the ending cine...getting initial positions then deleting
|
||
--will then respawn for ending cinematic
|
||
cine_platform_01 = Find_Hint("ORBITAL_CONSTRUCTION_POD","cine-platform-01")
|
||
cine_platform_02 = Find_Hint("ORBITAL_CONSTRUCTION_POD","cine-platform-02")
|
||
cine_platform_03 = Find_Hint("ORBITAL_CONSTRUCTION_POD","cine-platform-03")
|
||
cine_alarm_01 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","cine-alarm-01")
|
||
cine_alarm_02 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","cine-alarm-02")
|
||
cine_alarm_03 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","cine-alarm-03")
|
||
|
||
cine_fuel_1_1 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-1-1")
|
||
cine_fuel_1_2 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-1-2")
|
||
cine_fuel_1_3 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-1-3")
|
||
cine_fuel_1_4 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-1-4")
|
||
cine_fuel_1_5 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-1-5")
|
||
cine_fuel_1_6 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-1-6")
|
||
|
||
cine_fuel_2_1 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-2-1")
|
||
cine_fuel_2_2 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-2-2")
|
||
cine_fuel_2_3 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-2-3")
|
||
cine_fuel_2_4 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-2-4")
|
||
cine_fuel_2_5 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-2-5")
|
||
cine_fuel_2_6 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-2-6")
|
||
|
||
cine_fuel_3_1 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-3-1")
|
||
cine_fuel_3_2 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-3-2")
|
||
cine_fuel_3_3 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-3-3")
|
||
cine_fuel_3_4 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-3-4")
|
||
cine_fuel_3_5 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-3-5")
|
||
cine_fuel_3_6 = Find_Hint("ORBITAL_RESOURCE_CONTAINER_HIDE","cine-fuel-3-6")
|
||
|
||
cine_platform_01.Hide(true)
|
||
cine_platform_02.Hide(true)
|
||
cine_platform_03.Hide(true)
|
||
cine_alarm_01.Hide(true)
|
||
cine_alarm_02.Hide(true)
|
||
cine_alarm_03.Hide(true)
|
||
|
||
cine_fuel_1_1.Hide(true)
|
||
cine_fuel_1_2.Hide(true)
|
||
cine_fuel_1_3.Hide(true)
|
||
cine_fuel_1_4.Hide(true)
|
||
cine_fuel_1_5.Hide(true)
|
||
cine_fuel_1_6.Hide(true)
|
||
|
||
cine_fuel_2_1.Hide(true)
|
||
cine_fuel_2_2.Hide(true)
|
||
cine_fuel_2_3.Hide(true)
|
||
cine_fuel_2_4.Hide(true)
|
||
cine_fuel_2_5.Hide(true)
|
||
cine_fuel_2_6.Hide(true)
|
||
|
||
cine_fuel_3_1.Hide(true)
|
||
cine_fuel_3_2.Hide(true)
|
||
cine_fuel_3_3.Hide(true)
|
||
cine_fuel_3_4.Hide(true)
|
||
cine_fuel_3_5.Hide(true)
|
||
cine_fuel_3_6.Hide(true)
|
||
|
||
--jdg making cargo containers NOT targets of opportunity
|
||
cargo_table = Find_All_Objects_Of_Type("ORBITAL_RESOURCE_CONTAINER")
|
||
destroyer_table = Find_All_Objects_Of_Type("DRYDOCK_STAR_DESTROYER_CONSTRUCTION")
|
||
|
||
for i,cargo in pairs(cargo_table) do
|
||
cargo.Prevent_Opportunity_Fire(true)
|
||
end
|
||
|
||
for i,destroyer in pairs(destroyer_table) do
|
||
destroyer.Prevent_Opportunity_Fire(true)
|
||
end
|
||
|
||
alarm_01 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","alarm1")
|
||
alarm_02 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","alarm2")
|
||
alarm_03 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","alarm3")
|
||
alarm_04 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","alarm4")
|
||
--alarm_05 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","alarm5") removed from map...jdg
|
||
alarm_06 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","alarm6")
|
||
alarm_07 = Find_Hint("ORBITAL_SENSOR_POD_SMALL","alarm7")
|
||
|
||
--defining the six shipyards here
|
||
shipyard_01 = Find_Hint("EMPIRE_DOCK_DESTROYABLE","shipyard-01")
|
||
shipyard_02 = Find_Hint("EMPIRE_DOCK_DESTROYABLE","shipyard-02")
|
||
shipyard_03 = Find_Hint("EMPIRE_DOCK_DESTROYABLE","shipyard-03")
|
||
shipyard_04 = Find_Hint("EMPIRE_DOCK_DESTROYABLE","shipyard-04")
|
||
shipyard_05 = Find_Hint("ORBITAL_CONSTRUCTION_POD","cp1")
|
||
shipyard_06 = Find_Hint("ORBITAL_CONSTRUCTION_POD","cp2")
|
||
|
||
--preventing opportunity fire from the shipyards
|
||
shipyard_01.Prevent_Opportunity_Fire(true)
|
||
shipyard_02.Prevent_Opportunity_Fire(true)
|
||
shipyard_03.Prevent_Opportunity_Fire(true)
|
||
shipyard_04.Prevent_Opportunity_Fire(true)
|
||
shipyard_05.Prevent_Opportunity_Fire(true)
|
||
shipyard_06.Prevent_Opportunity_Fire(true)
|
||
|
||
shipyard01_destroyer01 = Find_Hint("DRYDOCK_STAR_DESTROYER_CONSTRUCTION","shipyard01-destroyer01")
|
||
shipyard01_destroyer02 = Find_Hint("DRYDOCK_STAR_DESTROYER_CONSTRUCTION","shipyard01-destroyer02")
|
||
shipyard02_destroyer01 = Find_Hint("DRYDOCK_STAR_DESTROYER_CONSTRUCTION","shipyard02-destroyer01")
|
||
shipyard03_destroyer01 = Find_Hint("DRYDOCK_STAR_DESTROYER_CONSTRUCTION","shipyard03-destroyer01")
|
||
shipyard04_destroyer01 = Find_Hint("DRYDOCK_STAR_DESTROYER_CONSTRUCTION","shipyard04-destroyer01")
|
||
|
||
--jdg setting alarms to idle here
|
||
alarm_table = Find_All_Objects_Of_Type("ORBITAL_SENSOR_POD_SMALL")
|
||
for i,alarm in pairs(alarm_table) do
|
||
alarm.Play_Animation("Idle",true)
|
||
end
|
||
|
||
-- Hide the models initially
|
||
antilles.Hide(true)
|
||
corvette_1.Hide(true)
|
||
corvette_2.Hide(true)
|
||
corvette_3.Hide(true)
|
||
corvette_4.Hide(true)
|
||
|
||
-- Don't let the ships move while we are doing the cinematic opening
|
||
antilles.Suspend_Locomotor(true)
|
||
corvette_1.Suspend_Locomotor(true)
|
||
corvette_2.Suspend_Locomotor(true)
|
||
corvette_3.Suspend_Locomotor(true)
|
||
corvette_4.Suspend_Locomotor(true)
|
||
|
||
-- Hide the real antilles
|
||
antilles_end_position = Find_Hint("GENERIC_MARKER_SPACE", "antillesendposition")
|
||
|
||
if not TestValid(antilles_end_position) then
|
||
--MessageBox("Invalid antilles end marker")
|
||
end
|
||
|
||
-- Get the camera away from the rebel ships at the beginning to prevent hearing their engines
|
||
Point_Camera_At(antilles_end_position)
|
||
|
||
-- **** Opening Cinematic in alternate space skydome, fudging the Fresia system in Kuat ****
|
||
-- Find the marker for the intro cinematic and promote it to the space layer
|
||
intro_camera_marker = Find_Hint("GENERIC_MARKER_SPACE", "introcameramarker")
|
||
-- Promote the markers position to the layer we are doing the space cinematics in
|
||
Promote_To_Space_Cinematic_Layer(intro_camera_marker)
|
||
|
||
-- Find the marker for the skydome and promote it to the space layer
|
||
space_cinematic_center = Find_Hint("GENERIC_MARKER_SPACE", "spacecinematiccenter")
|
||
-- Promote the markers position to the layer we are doing the space cinematics in
|
||
Promote_To_Space_Cinematic_Layer(space_cinematic_center)
|
||
|
||
-- Find the marker for the skydome and promote it to the space layer
|
||
space_cinematic_model = Find_Hint("GENERIC_MARKER_SPACE", "spacecinematicmodel")
|
||
-- Promote the markers position to the layer we are doing the space cinematics in
|
||
Promote_To_Space_Cinematic_Layer(space_cinematic_model)
|
||
|
||
-- Create the space skydome at this position
|
||
|
||
rebel_owner = Find_Player("Rebel")
|
||
neutral_player = Find_Player("Neutral")
|
||
primary_space_skydome_list = SpawnList(PrimarySkydomeList, space_cinematic_center, neutral_player, false, false)
|
||
cinematic_skydome = primary_space_skydome_list[1]
|
||
|
||
cinematic_skydome.Teleport(space_cinematic_center)
|
||
cinematic_skydome.Face_Immediate(space_cinematic_model)
|
||
|
||
Intro_Animation_List = SpawnList(IntroAnimationList, space_cinematic_model, neutral_player, false, false)
|
||
Intro_Animation = Intro_Animation_List[1]
|
||
Intro_Animation.Hide(true)
|
||
|
||
Set_Cinematic_Environment(true)
|
||
Letter_Box_In(0)
|
||
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Intro_Cinematic")
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
--jdg this is a feedback from the lua hint message...reveal and flag sensors here
|
||
function State_M01_Give_Task_00(message)
|
||
if message == OnEnter then
|
||
--want to continue the cinematic through the task and hint message here
|
||
|
||
reveal_01 = FogOfWar.Reveal(rebel_player,shipyard_01.Get_Position(),1000,1000)
|
||
reveal_02 = FogOfWar.Reveal(rebel_player,shipyard_02.Get_Position(),1000,1000)
|
||
reveal_03 = FogOfWar.Reveal(rebel_player,shipyard_03.Get_Position(),1000,1000)
|
||
reveal_04 = FogOfWar.Reveal(rebel_player,shipyard_04.Get_Position(),1000,1000)
|
||
reveal_05 = FogOfWar.Reveal(rebel_player,shipyard_05.Get_Position(),500,500)
|
||
reveal_06 = FogOfWar.Reveal(rebel_player,shipyard_06.Get_Position(),500,500)
|
||
|
||
shipyard_01.Highlight(true, 30)
|
||
Add_Radar_Blip(shipyard_01, "somename")
|
||
|
||
shipyard_02.Highlight(true, 30)
|
||
Add_Radar_Blip(shipyard_02, "somename")
|
||
|
||
shipyard_03.Highlight(true, 30)
|
||
Add_Radar_Blip(shipyard_03, "somename")
|
||
|
||
shipyard_04.Highlight(true, 30)
|
||
Add_Radar_Blip(shipyard_04, "somename")
|
||
|
||
shipyard_05.Highlight(true, 70)
|
||
Add_Radar_Blip(shipyard_05, "somename")
|
||
|
||
shipyard_06.Highlight(true, 70)
|
||
Add_Radar_Blip(shipyard_06, "somename")
|
||
|
||
|
||
|
||
end
|
||
end
|
||
|
||
function State_Give_Weaken_Enemy_Hint(message)
|
||
if message == OnEnter then
|
||
--select antilles and flash his weaken enemy power
|
||
|
||
if TestValid(antilles) then
|
||
rebel_player.Select_Object(antilles)
|
||
else
|
||
MessageBox("cannot find antilles to flash his weaken enemy")
|
||
end
|
||
end
|
||
end
|
||
|
||
--feedback from lua first distress message...put alarms into alarm state here.
|
||
function State_First_Speech_00_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--MessageBox("sensors should now be in alarm state -- function hit!!")
|
||
corvette_1.Prevent_Opportunity_Fire(false)
|
||
corvette_2.Prevent_Opportunity_Fire(false)
|
||
corvette_3.Prevent_Opportunity_Fire(false)
|
||
corvette_4.Prevent_Opportunity_Fire(false)
|
||
antilles.Prevent_Opportunity_Fire(false)
|
||
|
||
alarm_table = Find_All_Objects_Of_Type("ORBITAL_SENSOR_POD_SMALL")
|
||
for i,alarm in pairs(alarm_table) do
|
||
--MessageBox("sensors should now be in alarm state")
|
||
alarm.Play_Animation("Alarm",true)
|
||
alarm.Play_SFX_Event("Structure_Orbital_LRS_Fast_Loop")
|
||
end
|
||
|
||
|
||
end
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
-- jdg Opening Cinematic stuff
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
function Intro_Cinematic()
|
||
|
||
mission_initialized = true
|
||
|
||
Start_Cinematic_Camera(false)
|
||
Allow_Localized_SFX(false)
|
||
Set_Cinematic_Camera_Key(intro_camera_marker, 100, -50, 0, 1, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(intro_camera_marker, 0, 0, -20, 0, 0, 0, 0)
|
||
|
||
Fade_Screen_In(1)
|
||
BlockOnCommand(Play_Bink_Movie("Star_Wars_Intro"))
|
||
|
||
-- MessageBox("Bink Movie done")
|
||
Play_Music("Cinematic_Rebel_Intro_Music_Event_1")
|
||
|
||
-- MessageBox("Starting Bink Movie!!!")
|
||
BlockOnCommand(Play_Bink_Movie("Star_Wars_Intro_Rebel"))
|
||
|
||
-- elie stuff here
|
||
|
||
Intro_Animation.Teleport(space_cinematic_model)
|
||
Intro_Animation.Face_Immediate(space_cinematic_center)
|
||
Intro_Animation.Play_Animation("Cinematic", true, 0)
|
||
Intro_Animation.Hide(false)
|
||
|
||
-- Transition the camera down
|
||
Transition_Cinematic_Camera_Key(intro_camera_marker, 4, 100, -15, 0, 1, 0, 0, 0)
|
||
|
||
Sleep(7)
|
||
|
||
Set_Cinematic_Camera_Key(space_cinematic_model, -30, -160, -350, 0, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(space_cinematic_model, -5, -260, -355, 0, 0, 0, 0)
|
||
|
||
Sleep(.5)
|
||
|
||
Cinematic_Zoom(15,0.75)
|
||
|
||
current_cinematic_thread_id = nil
|
||
|
||
Story_Event("CUE_INTROCINE_DIALOG_REBELPILOT_01")
|
||
-- this will start the dialog chain
|
||
end
|
||
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
-- jdg Opening Cinematic dialog done call backs
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
function State_IntroCine_Dialog_Line_01_Remove_Text(message)
|
||
if message == OnEnter then
|
||
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_Dialog_01_Done")
|
||
end
|
||
end
|
||
end
|
||
|
||
function Cinematic_Dialog_01_Done()
|
||
|
||
--Sleep(1)
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("CUE_INTROCINE_DIALOG_ANTILLES_01")
|
||
--Antilles: It<49>s not their fault. The nationalization wasn<73>t announced. The Emperor likes his surprises.
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
function State_IntroCine_Dialog_Line_02_Remove_Text(message)
|
||
if message == OnEnter then
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_Dialog_02_Done")
|
||
end
|
||
end
|
||
end
|
||
|
||
function Cinematic_Dialog_02_Done()
|
||
|
||
--Sleep(1)
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("CUE_INTROCINE_DIALOG_REBELPILOT_02")
|
||
--Rebel Pilot: So what now?
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
function State_IntroCine_Dialog_Line_03_Remove_Text(message)
|
||
if message == OnEnter then
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_Dialog_03_Done")
|
||
end
|
||
end
|
||
end
|
||
|
||
function Cinematic_Dialog_03_Done()
|
||
|
||
Set_Cinematic_Camera_Key(space_cinematic_model, -30, -340, -385, 0, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(space_cinematic_model, 0, 0, -320, 0, 0, 0, 0)
|
||
|
||
Transition_Cinematic_Camera_Key(space_cinematic_model, 15, -20, -500, -370, 0, 0, 0, 0)
|
||
-- Cinematic_Zoom(15,1.1)
|
||
|
||
Sleep(1)
|
||
Story_Event("CUE_INTROCINE_DIALOG_ANTILLES_02")
|
||
--Antilles: If the Tyranny is here, then it<69>s not at its normal station<6F>and the Tyranny is normally stationed at
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
function State_IntroCine_Dialog_Line_04_Remove_Text(message)
|
||
if message == OnEnter then
|
||
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_Dialog_04_Done")
|
||
end
|
||
|
||
end
|
||
end
|
||
|
||
function Cinematic_Dialog_04_Done()
|
||
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("CUE_INTROCINE_DIALOG_REBELPILOT_03")
|
||
|
||
end
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
function State_IntroCine_Dialog_Line_05_Remove_Text(message)
|
||
if message == OnEnter then
|
||
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_Dialog_05_Done")
|
||
end
|
||
|
||
end
|
||
end
|
||
|
||
function Cinematic_Dialog_05_Done()
|
||
|
||
--Sleep(1)
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("CUE_INTROCINE_DIALOG_ANTILLES_03")
|
||
--Antilles: If the Tyranny is here, then it<69>s not at its normal station<6F>and the Tyranny is normally stationed at<61>
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
function State_IntroCine_Dialog_Line_06_Remove_Text(message)
|
||
if message == OnEnter then
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Second_Intro_Cinematic")
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
function Second_Intro_Cinematic()
|
||
|
||
-- jim Richmond stuff here
|
||
|
||
Fade_Screen_Out(1)
|
||
Sleep(1)
|
||
Point_Camera_At(antilles_enter)
|
||
Allow_Localized_SFX(true)
|
||
-- Stop_All_Music()
|
||
|
||
if TestValid(cinematic_skydome) then
|
||
cinematic_skydome.Despawn()
|
||
end
|
||
|
||
if TestValid(Intro_Animation) then
|
||
Intro_Animation.Despawn()
|
||
end
|
||
|
||
Set_Cinematic_Environment(false)
|
||
-- **** End of the opening cinematic, we are now in Kuat space ****
|
||
|
||
Set_Cinematic_Target_Key(antilles_enter, 25, 0, -15, 0, 0, 0, 0)
|
||
Set_Cinematic_Camera_Key(antilles_enter, 300, 10, 212, 1, 0, 0, 0)
|
||
|
||
Fade_Screen_In(1)
|
||
Sleep(1)
|
||
|
||
corvette_1.Cinematic_Hyperspace_In(10)
|
||
corvette_2.Cinematic_Hyperspace_In(20)
|
||
antilles.Cinematic_Hyperspace_In(35)
|
||
corvette_3.Cinematic_Hyperspace_In(48)
|
||
corvette_4.Cinematic_Hyperspace_In(59)
|
||
Sleep(1.5)
|
||
Transition_Cinematic_Target_Key(antilles, 3, 0, 0, 0, 0, antilles, 0, 0)
|
||
Sleep(2)
|
||
Transition_Cinematic_Camera_Key(antilles_enter, 30, 200, 15, 60, 1, 0, 0, 0)
|
||
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("RA1M1_INTRO_DIALOGUE_GO")
|
||
|
||
end
|
||
-----------------------------------------------------------------------------------------------------------------------
|
||
|
||
function State_Rebel_A1_M01_Intro_Speech_00_Remove_Text(message)
|
||
|
||
if message == OnEnter then
|
||
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_End_Antilles_Speech_1")
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
function Cinematic_End_Antilles_Speech_1()
|
||
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("RA1M1_THREEPIO_DIALOGUE_GO")
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
function Cinematic_End_Threepio_Speech_1()
|
||
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("RA1M1_ANTILLES_DIALOGUE_2_GO")
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
function State_Rebel_A1_M01_Intro_Speech_01_Remove_Text(message)
|
||
|
||
if message == OnEnter then
|
||
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_End_Threepio_Speech_1")
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
function Cinematic_End_Threepio_Speech_1()
|
||
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("RA1M1_ANTILLES_DIALOGUE_2_GO")
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
function State_Rebel_A1_M01_Intro_Speech_02_Remove_Text(message)
|
||
|
||
if message == OnEnter then
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_End_Antilles_Speech_2")
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
function Cinematic_End_Antilles_Speech_2()
|
||
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("RA1M1_R2_DIALOGUE_1_GO")
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
|
||
function State_Rebel_A1_M01_Intro_Speech_03_Remove_Text(message)
|
||
|
||
if message == OnEnter then
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Cinematic_End_R2_Speech")
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
function Cinematic_End_R2_Speech()
|
||
|
||
current_cinematic_thread_id = nil
|
||
Story_Event("RA1M1_ANTILLES_DIALOGUE_3_GO")
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
function State_Rebel_A1_M01_Intro_Speech_04_Remove_Text(message)
|
||
|
||
if message == OnEnter then
|
||
if not intro_cinematic_skipped then
|
||
current_cinematic_thread_id = Create_Thread("Intro_Cinematic_End")
|
||
end
|
||
end
|
||
|
||
end
|
||
|
||
function Intro_Cinematic_End()
|
||
|
||
intro_cinematic_skipped = true
|
||
-- Stop_All_Music()
|
||
Resume_Mode_Based_Music()
|
||
Point_Camera_At(antilles)
|
||
Transition_To_Tactical_Camera(1)
|
||
Letter_Box_Out(1)
|
||
Sleep(1)
|
||
Suspend_AI(0)
|
||
Lock_Controls(0)
|
||
Allow_Localized_SFX(true)
|
||
End_Cinematic_Camera()
|
||
|
||
Set_Off_Alarm()
|
||
|
||
current_cinematic_thread_id = nil
|
||
|
||
flag_initialized = true
|
||
|
||
hide_me_table = Find_All_Objects_With_Hint("hide-me")
|
||
for i,hide_me in pairs(hide_me_table) do
|
||
hide_me.Hide(false)
|
||
end
|
||
|
||
start_tartan01 = SpawnList(start_tartan_list, start_tartan01_pos, empire, false, true)
|
||
start_tartan02 = SpawnList(start_tartan_list, start_tartan02_pos, empire, false, true)
|
||
|
||
for i,unit in pairs(start_tartan01) do
|
||
unit.Prevent_AI_Usage(true)
|
||
unit.Guard_Target(unit.Get_Position())
|
||
unit.Move_To(start_tartan01_pos)
|
||
Register_Prox(unit, Start_Tartan_Prox_Event, tartan_prox_range, rebel)
|
||
end
|
||
|
||
for i,unit in pairs(start_tartan02) do
|
||
unit.Prevent_AI_Usage(true)
|
||
unit.Guard_Target(unit.Get_Position())
|
||
unit.Move_To(start_tartan02_pos)
|
||
Register_Prox(unit, Start_Tartan_Prox_Event, tartan_prox_range, rebel)
|
||
end
|
||
|
||
|
||
Story_Event("MISSION_START")
|
||
|
||
|
||
end
|
||
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
function Start_Tartan_Prox_Event(prox_obj, trigger_obj)
|
||
--MessageBox("Start_Tartan_Prox_Event")
|
||
|
||
if (trigger_obj == corvette_1) or (trigger_obj == corvette_2) or (trigger_obj == corvette_3) or (trigger_obj == corvette_4) or (trigger_obj == antilles) then
|
||
if TestValid(prox_obj) then
|
||
prox_obj.Cancel_Event_Object_In_Range(Start_Tartan_Prox_Event)
|
||
end
|
||
|
||
if TestValid(start_tartan01) then
|
||
--MessageBox("Start_Tartan_Prox_Event")
|
||
for i,unit in pairs(start_tartan01) do
|
||
unit.Prevent_AI_Usage(false)
|
||
unit.Attack_Move(trigger_obj)
|
||
end
|
||
end
|
||
|
||
if TestValid(start_tartan02) then
|
||
for i,unit in pairs(start_tartan02) do
|
||
unit.Prevent_AI_Usage(false)
|
||
unit.Attack_Move(trigger_obj)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function Find_Nearest_Marker()
|
||
best_distance = 99999
|
||
best_marker = marker_list[0]
|
||
|
||
if TestValid(antilles) then
|
||
for j, marker in pairs(marker_list) do
|
||
distance = marker.Get_Distance(antilles)
|
||
if distance < best_distance then
|
||
best_marker = marker
|
||
best_distance = distance
|
||
end
|
||
end
|
||
end
|
||
|
||
return best_marker
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Reinforcement groups for each time the player causes a distress call
|
||
-- *****************************************************************************************************
|
||
|
||
function State_RA01M01_Reinforce_00(message)
|
||
if message == OnEnter then
|
||
|
||
entry_marker = Find_Nearest_Marker()
|
||
if not TestValid(entry_marker) then
|
||
--MessageBox("couldn't find marker")
|
||
return
|
||
end
|
||
|
||
ReinforceList(empire_list_0, entry_marker, empire, false, true, false, Find_And_Attack)
|
||
|
||
end
|
||
|
||
end
|
||
|
||
function State_RA01M01_Reinforce_01(message)
|
||
if message == OnEnter then
|
||
|
||
entry_marker = Find_Nearest_Marker()
|
||
if not TestValid(entry_marker) then
|
||
--MessageBox("couldn't find marker")
|
||
return
|
||
end
|
||
|
||
ReinforceList(empire_list_1, entry_marker, empire, false, true, false, Find_And_Attack)
|
||
|
||
end
|
||
|
||
end
|
||
|
||
function State_Rebel_A1_M01_Third_Speech_01(message)
|
||
if message == OnEnter then
|
||
|
||
|
||
entry_marker = Find_Nearest_Marker()
|
||
if not TestValid(entry_marker) then
|
||
MessageBox("couldn't find marker")
|
||
return
|
||
end
|
||
|
||
ReinforceList(empire_list_2, entry_marker, empire, false, true, false, Find_And_Attack)
|
||
|
||
end
|
||
end
|
||
|
||
|
||
function Find_And_Attack(attack_list)
|
||
|
||
-- find the closest rebel unit and have the newly reinforced units attack it!
|
||
|
||
closest_target = Find_Nearest(entry_marker, rebel, true)
|
||
-- MessageBox("%s is closest",tostring(closest_target))
|
||
List_Attack(attack_list, closest_target)
|
||
|
||
end
|
||
|
||
|
||
|
||
-- *****************************************************************************************************
|
||
-- Alarm set off function when control is returned to the player (set up everything)
|
||
-- *****************************************************************************************************
|
||
|
||
function Set_Off_Alarm()
|
||
|
||
empire = Find_Player("Empire")
|
||
rebel = Find_Player("Rebel")
|
||
FogOfWar.Reveal_All(empire)
|
||
|
||
-- spawn tie groups to defend the docks
|
||
dock1_def_list = SpawnList(tie_list_2, marker_list[0], empire, false, true)
|
||
List_Guard(dock1_def_list, shipyard_01)
|
||
|
||
dock2_def_list = SpawnList(tie_list_2, marker_list[1], empire, false, true)
|
||
List_Guard(dock2_def_list, shipyard_02)
|
||
|
||
dock3_def_list = SpawnList(tie_list_2, marker_list[2], empire, false, true)
|
||
List_Guard(dock3_def_list, shipyard_03)
|
||
|
||
dock4_def_list = SpawnList(tie_list_2, marker_list[3], empire, false, true)
|
||
List_Guard(dock4_def_list, shipyard_04)
|
||
|
||
dock5_def_list = SpawnList(tie_list_2, marker_list[3], empire, false, true)
|
||
List_Guard(dock5_def_list, shipyard_05)
|
||
|
||
dock6_def_list = SpawnList(tie_list_2, marker_list[3], empire, false, true)
|
||
List_Guard(dock6_def_list, shipyard_06)
|
||
|
||
|
||
-- set prox on sensors & posd to have ties attack when approached
|
||
Register_Prox(shipyard_01, Enemy_Near_Dock, dock_sensor_dist, rebel)
|
||
Register_Prox(shipyard_02, Enemy_Near_Dock, dock_sensor_dist, rebel)
|
||
Register_Prox(shipyard_03, Enemy_Near_Dock, dock_sensor_dist, rebel)
|
||
Register_Prox(shipyard_04, Enemy_Near_Dock, dock_sensor_dist, rebel)
|
||
Register_Prox(shipyard_05, Enemy_Near_Dock, pod_sensor_dist, rebel)
|
||
Register_Prox(shipyard_06, Enemy_Near_Dock, pod_sensor_dist, rebel)
|
||
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Dock proximity function to have Ties attack intruders and up the ante of constant reinforcements
|
||
-- *****************************************************************************************************
|
||
|
||
function Enemy_Near_Dock(prox_obj, trigger_obj)
|
||
|
||
prox_obj.Cancel_Event_Object_In_Range(Enemy_Near_Dock)
|
||
|
||
--MessageBox("Ties to attack!")
|
||
|
||
if prox_obj == shipyard_01 and not sensor1_responded then
|
||
sensor1_responded = true
|
||
List_Attack(dock1_def_list, trigger_obj)
|
||
Register_Timer(Timer_Alarm1, alarm_time)
|
||
elseif prox_obj == shipyard_02 and not sensor2_responded then
|
||
sensor2_responded = true
|
||
List_Attack(dock2_def_list, trigger_obj)
|
||
Register_Timer(Timer_Alarm2, alarm_time)
|
||
elseif prox_obj == shipyard_03 and not sensor3_responded then
|
||
sensor3_responded = true
|
||
List_Attack(dock3_def_list, trigger_obj)
|
||
Register_Timer(Timer_Alarm3, alarm_time)
|
||
elseif prox_obj == shipyard_04 and not sensor4_responded then
|
||
sensor4_responded = true
|
||
List_Attack(dock4_def_list, trigger_obj)
|
||
Register_Timer(Timer_Alarm4, alarm_time)
|
||
elseif prox_obj == shipyard_05 and not sensor5_responded then
|
||
sensor5_responded = true
|
||
List_Attack(dock5_def_list, trigger_obj)
|
||
Register_Timer(Timer_Alarm5, alarm_time)
|
||
elseif prox_obj == shipyard_06 and not sensor6_responded then
|
||
sensor6_responded = true
|
||
List_Attack(dock6_def_list, trigger_obj)
|
||
Register_Timer(Timer_Alarm6, alarm_time)
|
||
else
|
||
-- MessageBox("Prox fired, but from what?")
|
||
end
|
||
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Guard and Attack functions for listed groups
|
||
-- *****************************************************************************************************
|
||
|
||
-- Have the units in a list guard the location of an object (continue to guard after the obj dies).
|
||
function List_Guard(list, obj)
|
||
for k, unit in pairs(list) do
|
||
if TestValid(unit) and TestValid(obj) then
|
||
unit.Guard_Target(obj.Get_Position())
|
||
end
|
||
end
|
||
end
|
||
|
||
-- Have units attack an object.
|
||
function List_Attack(list, object)
|
||
--MessageBox("attacking")
|
||
for k, unit in pairs(list) do
|
||
if TestValid(object) and TestValid(unit) then
|
||
unit.Attack_Move(object)
|
||
end
|
||
end
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Alarm timers for each space dock
|
||
-- *****************************************************************************************************
|
||
|
||
function Timer_Alarm1()
|
||
|
||
Cancel_Timer(Timer_Repeat)
|
||
docks_attacked = docks_attacked + 1
|
||
repeat_time = default_repeat_time
|
||
times_repeated = 0
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
function Timer_Alarm2()
|
||
|
||
Cancel_Timer(Timer_Repeat)
|
||
docks_attacked = docks_attacked + 1
|
||
repeat_time = default_repeat_time
|
||
times_repeated = 0
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
function Timer_Alarm3()
|
||
|
||
Cancel_Timer(Timer_Repeat)
|
||
docks_attacked = docks_attacked + 1
|
||
repeat_time = default_repeat_time
|
||
times_repeated = 0
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
function Timer_Alarm4()
|
||
|
||
Cancel_Timer(Timer_Repeat)
|
||
docks_attacked = docks_attacked + 1
|
||
repeat_time = default_repeat_time
|
||
times_repeated = 0
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
function Timer_Alarm5()
|
||
|
||
Cancel_Timer(Timer_Repeat)
|
||
docks_attacked = docks_attacked + 1
|
||
repeat_time = default_repeat_time
|
||
times_repeated = 0
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
function Timer_Alarm6()
|
||
|
||
Cancel_Timer(Timer_Repeat)
|
||
docks_attacked = docks_attacked + 1
|
||
repeat_time = default_repeat_time
|
||
times_repeated = 0
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
function Timer_Alarm7()
|
||
|
||
Cancel_Timer(Timer_Repeat)
|
||
docks_attacked = docks_attacked + 1
|
||
repeat_time = default_repeat_time
|
||
times_repeated = 0
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
function Timer_Repeat()
|
||
|
||
Process_DA(docks_attacked)
|
||
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Reduce reinforcement repeat time
|
||
-- *****************************************************************************************************
|
||
|
||
function repeat_process()
|
||
|
||
times_repeated = times_repeated + 1
|
||
|
||
if times_repeated < maximum_repeats then
|
||
if repeat_time > repeat_time_min then
|
||
repeat_time = repeat_time - repeat_time_decrement
|
||
end
|
||
Register_Timer(Timer_Repeat, repeat_time)
|
||
end
|
||
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Process dock attack function to increase threat level over time
|
||
-- *****************************************************************************************************
|
||
|
||
function Process_DA(quan_attacked)
|
||
|
||
if not station_point then
|
||
MessageBox("rnfstation not found -- aborting")
|
||
return
|
||
end
|
||
|
||
if not entry_marker then
|
||
entry_marker = Find_Nearest_Marker()
|
||
end
|
||
|
||
if quan_attacked == 1 then
|
||
|
||
-- 3 tie groups
|
||
--MessageBox("first attack processed")
|
||
|
||
tie_group1 = SpawnList(tie_list_2, station_point, empire, false, true)
|
||
Sleep(1)
|
||
Find_And_Attack(tie_group1)
|
||
repeat_process()
|
||
|
||
elseif quan_attacked == 2 then
|
||
|
||
-- 3 tie groups, 3 easy tartans
|
||
--MessageBox("second attack processed")
|
||
|
||
tie_group2 = SpawnList(tie_list_2, station_point, empire, false, true)
|
||
Sleep(1)
|
||
Find_And_Attack(tie_group2)
|
||
ReinforceList(station_reaction_list2, station_point, empire, false, true, false, Find_And_Attack)
|
||
repeat_process()
|
||
|
||
elseif quan_attacked == 3 then
|
||
|
||
-- 3 tie groups, 2 tartans, 2 victory SD!
|
||
-- MessageBox("third attack processed")
|
||
|
||
tie_group3 = SpawnList(tie_list_2, station_point, empire, false, true)
|
||
Sleep(1)
|
||
Find_And_Attack(tie_group3)
|
||
closest_point = Find_Nearest_Marker()
|
||
ReinforceList(station_reaction_list3, closest_point, empire, false, true, false, Find_And_Attack)
|
||
repeat_process()
|
||
|
||
elseif quan_attacked == 4 then
|
||
|
||
tie_group3 = SpawnList(tie_list_2, station_point, empire, false, true)
|
||
Sleep(1)
|
||
Find_And_Attack(tie_group3)
|
||
closest_point = Find_Nearest_Marker()
|
||
ReinforceList(station_reaction_list4, closest_point, empire, false, true, true, Find_And_Attack)
|
||
|
||
-- MessageBox("final attack processed")
|
||
|
||
elseif quan_attacked == 5 then
|
||
|
||
tie_group3 = SpawnList(tie_list_2, station_point, empire, false, true)
|
||
Sleep(1)
|
||
Find_And_Attack(tie_group3)
|
||
closest_point = Find_Nearest_Marker()
|
||
ReinforceList(station_reaction_list5, closest_point, empire, false, true, false, Find_And_Attack)
|
||
|
||
elseif quan_attacked == 6 then
|
||
|
||
tie_group3 = SpawnList(tie_list_2, station_point, empire, false, true)
|
||
Sleep(1)
|
||
Find_And_Attack(tie_group3)
|
||
closest_point = Find_Nearest_Marker()
|
||
ReinforceList(station_reaction_list6, closest_point, empire, false, true, false, Find_And_Attack)
|
||
|
||
|
||
|
||
else
|
||
--MessageBox("Error in quan: %d",quan_attacked)
|
||
end
|
||
|
||
end
|
||
|
||
-- *****************************************************************************************************
|
||
-- Cinematic end functions
|
||
-- *****************************************************************************************************
|
||
--jdg this is the new ending cinematic
|
||
--Imperial Officer: Kuat shipyard to all Imperial units!
|
||
--We are under siege by significant Rebel forces!
|
||
--All ships in the area, respond! Emergency code zero!
|
||
|
||
function State_Rebel_A1_M01_Third_Speech_00(message)
|
||
if message == OnEnter then
|
||
space_station = Find_Hint("EMPIRE_STAR_BASE_3","space-station")
|
||
if not space_station then
|
||
MessageBox("cannot find space_station")
|
||
return
|
||
end
|
||
|
||
--setting up cinematic stuff
|
||
Fade_Screen_Out(1)
|
||
Sleep(2)
|
||
Suspend_AI(1)
|
||
Lock_Controls(1)
|
||
Start_Cinematic_Camera()
|
||
Letter_Box_In(0)
|
||
|
||
--remove all the remaining mission objects
|
||
mission_containers_list = Find_All_Objects_Of_Type("ORBITAL_RESOURCE_CONTAINER")
|
||
mission_satellites_list = Find_All_Objects_Of_Type("DEFENSE_SATELLITE_LASER_SMALL")
|
||
mission_docks_list = Find_All_Objects_Of_Type("EMPIRE_DOCK")
|
||
mission_drydock_bombers_list = Find_All_Objects_Of_Type("DRYDOCK_TIE_BOMBER")
|
||
mission_drydock_fighters_list = Find_All_Objects_Of_Type("DRYDOCK_TIE_FIGHTER")
|
||
mission_drydock_destroyers_list = Find_All_Objects_Of_Type("DRYDOCK_STAR_DESTROYER_CONSTRUCTION")
|
||
mission_drydock_shuttles_list = Find_All_Objects_Of_Type("DRYDOCK_TYDERIUM_SHUTTLE")
|
||
mission_active_scouts_list = Find_All_Objects_Of_Type("TIE_Scout_Squadron")
|
||
mission_active_fighters_list = Find_All_Objects_Of_Type("Tie_Fighter_Squadron")
|
||
mission_active_tartans_list = Find_All_Objects_Of_Type("Tartan_Patrol_Cruiser_Easy")
|
||
|
||
for i,containers in pairs(mission_containers_list) do
|
||
containers.Despawn()
|
||
end
|
||
|
||
for i,docks in pairs(mission_docks_list) do
|
||
docks.Despawn()
|
||
end
|
||
|
||
for i,satellites in pairs(mission_satellites_list) do
|
||
satellites.Despawn()
|
||
end
|
||
|
||
for i,bombers in pairs(mission_drydock_bombers_list) do
|
||
bombers.Despawn()
|
||
end
|
||
|
||
for i,fighters in pairs(mission_drydock_fighters_list) do
|
||
fighters.Despawn()
|
||
end
|
||
|
||
for i,destroyers in pairs(mission_drydock_destroyers_list) do
|
||
destroyers.Despawn()
|
||
end
|
||
|
||
for i,shuttles in pairs(mission_drydock_shuttles_list) do
|
||
shuttles.Despawn()
|
||
end
|
||
|
||
for i,active_scouts in pairs(mission_active_scouts_list) do
|
||
active_scouts.Despawn()
|
||
end
|
||
|
||
for i,active_fighters in pairs(mission_active_fighters_list) do
|
||
active_fighters.Despawn()
|
||
end
|
||
|
||
for i,active_tartans in pairs(mission_active_tartans_list) do
|
||
active_tartans.Despawn()
|
||
end
|
||
|
||
--now check for specific-named items for clean up
|
||
if TestValid(alarm_01) then
|
||
alarm_01.Despawn()
|
||
end
|
||
|
||
if TestValid(alarm_02) then
|
||
alarm_02.Despawn()
|
||
end
|
||
|
||
if TestValid(alarm_03) then
|
||
alarm_03.Despawn()
|
||
end
|
||
|
||
if TestValid(alarm_04) then
|
||
alarm_04.Despawn()
|
||
end
|
||
|
||
--if TestValid(alarm_05) then
|
||
-- alarm_05.Despawn()
|
||
--end
|
||
|
||
if TestValid(alarm_06) then
|
||
alarm_06.Despawn()
|
||
end
|
||
|
||
if TestValid(alarm_07) then
|
||
alarm_07.Despawn()
|
||
end
|
||
|
||
if TestValid(pod1) then
|
||
pod1.Despawn()
|
||
end
|
||
|
||
if TestValid(pod2) then
|
||
pod2.Despawn()
|
||
end
|
||
|
||
--if TestValid(pod3) then
|
||
-- pod3.Despawn()
|
||
--end
|
||
|
||
|
||
cine_platform_01.Hide(false)
|
||
cine_platform_02.Hide(false)
|
||
cine_platform_03.Hide(false)
|
||
cine_alarm_01.Hide(false)
|
||
cine_alarm_02.Hide(false)
|
||
cine_alarm_03.Hide(false)
|
||
|
||
cine_fuel_1_1.Hide(false)
|
||
cine_fuel_1_2.Hide(false)
|
||
cine_fuel_1_3.Hide(false)
|
||
cine_fuel_1_4.Hide(false)
|
||
cine_fuel_1_5.Hide(false)
|
||
cine_fuel_1_6.Hide(false)
|
||
|
||
cine_fuel_2_1.Hide(false)
|
||
cine_fuel_2_2.Hide(false)
|
||
cine_fuel_2_3.Hide(false)
|
||
cine_fuel_2_4.Hide(false)
|
||
cine_fuel_2_5.Hide(false)
|
||
cine_fuel_2_6.Hide(false)
|
||
|
||
cine_fuel_3_1.Hide(false)
|
||
cine_fuel_3_2.Hide(false)
|
||
cine_fuel_3_3.Hide(false)
|
||
cine_fuel_3_4.Hide(false)
|
||
cine_fuel_3_5.Hide(false)
|
||
cine_fuel_3_6.Hide(false)
|
||
|
||
--rebel_comm_array.Change_Owner(empire_player)
|
||
|
||
empire_player = Find_Player("Empire")
|
||
cine_platform_01.Change_Owner(empire_player)
|
||
cine_platform_02.Change_Owner(empire_player)
|
||
cine_alarm_01.Change_Owner(empire_player)
|
||
cine_alarm_02.Change_Owner(empire_player)
|
||
|
||
cine_fuel_1_1.Change_Owner(empire_player)
|
||
cine_fuel_1_2.Change_Owner(empire_player)
|
||
cine_fuel_1_3.Change_Owner(empire_player)
|
||
cine_fuel_1_4.Change_Owner(empire_player)
|
||
cine_fuel_1_5.Change_Owner(empire_player)
|
||
cine_fuel_1_6.Change_Owner(empire_player)
|
||
|
||
cine_fuel_2_1.Change_Owner(empire_player)
|
||
cine_fuel_2_2.Change_Owner(empire_player)
|
||
cine_fuel_2_3.Change_Owner(empire_player)
|
||
cine_fuel_2_4.Change_Owner(empire_player)
|
||
cine_fuel_2_5.Change_Owner(empire_player)
|
||
cine_fuel_2_6.Change_Owner(empire_player)
|
||
|
||
-- finding Antilles and Corvettes
|
||
end_cine_antilles_start = Find_Hint("GENERIC_MARKER_SPACE","end-cine-antilles-start")
|
||
end_cine_corvette1_start = Find_Hint("GENERIC_MARKER_SPACE","end-cine-corvette1-start")
|
||
end_cine_corvette2_start = Find_Hint("GENERIC_MARKER_SPACE","end-cine-corvette2-start")
|
||
end_cine_corvette3_start = Find_Hint("GENERIC_MARKER_SPACE","end-cine-corvette3-start")
|
||
end_cine_corvette4_start = Find_Hint("GENERIC_MARKER_SPACE","end-cine-corvette4-start")
|
||
|
||
if TestValid(antilles) then
|
||
antilles.Teleport_And_Face(end_cine_antilles_start)
|
||
antilles.Make_Invulnerable(true)
|
||
end
|
||
|
||
if TestValid(corvette_1) then
|
||
corvette_1.Teleport_And_Face(end_cine_corvette1_start)
|
||
corvette_1.Make_Invulnerable(true)
|
||
end
|
||
|
||
if TestValid(corvette_2) then
|
||
corvette_2.Teleport_And_Face(end_cine_corvette2_start)
|
||
corvette_2.Make_Invulnerable(true)
|
||
end
|
||
|
||
if TestValid(corvette_3) then
|
||
corvette_3.Teleport_And_Face(end_cine_corvette3_start)
|
||
corvette_3.Make_Invulnerable(true)
|
||
end
|
||
|
||
if TestValid(corvette_4) then
|
||
corvette_4.Teleport_And_Face(end_cine_corvette4_start)
|
||
corvette_4.Make_Invulnerable(true)
|
||
end
|
||
|
||
Fade_Screen_In(1)
|
||
|
||
|
||
--MessageBox("show the starbase here and pan around")
|
||
Set_Cinematic_Camera_Key(space_station, 2500, -10, 0, 1, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(space_station, 0, 0, 0, 0, 0, 0, 0)
|
||
Transition_Cinematic_Camera_Key(space_station, 8, 2500, -12, 15, 1, 0, 0, 0)
|
||
|
||
Sleep(6)
|
||
|
||
end
|
||
end
|
||
|
||
function State_Rebel_A1_M01_Third_Speech_00_Remove_Text(message)
|
||
if message == OnEnter then
|
||
Create_Thread("Antilles_Move_Thread")
|
||
end
|
||
end
|
||
|
||
function Antilles_Move_Thread()
|
||
|
||
--this cues at end of "Imperial Officer: Kuat shipyard to all Imperial units! We are under siege by significant Rebel forces!
|
||
--All ships in the area, respond! Emergency code zero!"
|
||
|
||
--MessageBox("end imp officer line")
|
||
|
||
tyrrany_enter = Find_Hint("GENERIC_MARKER_SPACE","tyrrany-enter")
|
||
|
||
if not tyrrany_enter then
|
||
MessageBox("did not create the tyrrany_enter")
|
||
end
|
||
|
||
Set_Cinematic_Camera_Key(tyrrany_enter, 1200, -35, 130, 1, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(tyrrany_enter, 0, 0, -480, 0, 0, 0, 0)
|
||
|
||
-- Tyranny enters
|
||
empire_player = Find_Player("Empire")
|
||
Tyranny_List = SpawnList(SD_list, tyrrany_enter, empire_player, false, true)
|
||
Tyranny = Tyranny_List[1]
|
||
Tyranny.Set_Garrison_Spawn(false)
|
||
Tyranny.Hide(true)
|
||
Tyranny.Suspend_Locomotor(true)
|
||
Tyranny.Cinematic_Hyperspace_In(60)
|
||
Tyranny.Move_To(end_cine_antilles_start)
|
||
Tyranny.Set_Single_Ability_Autofire("TRACTOR_BEAM", false)
|
||
Tyranny.Set_Cannot_Be_Killed(true)
|
||
|
||
|
||
Sleep(1)
|
||
|
||
--MessageBox("start this is tyranny line")
|
||
Story_Event("M01_ENDCINE_TYRRANY_LINE_01_GO")
|
||
-- Imperial Captain: This is the Tyranny. Responding to code zero....
|
||
|
||
Sleep(1)
|
||
|
||
-- Move Antilles and Corvettes
|
||
|
||
exit_spot = Find_Hint("GENERIC_MARKER_SPACE","antilles-exit")
|
||
|
||
antilles.Attack_Move(Tyranny)
|
||
antilles.Override_Max_Speed(7)
|
||
|
||
if TestValid(corvette_1) then
|
||
corvette_1.Attack_Move(Tyranny)
|
||
corvette_1.Override_Max_Speed(7)
|
||
end
|
||
|
||
if TestValid(corvette_2) then
|
||
corvette_2.Attack_Move(Tyranny)
|
||
corvette_2.Override_Max_Speed(7)
|
||
end
|
||
|
||
if TestValid(corvette_3) then
|
||
corvette_3.Attack_Move(Tyranny)
|
||
corvette_3.Override_Max_Speed(7)
|
||
end
|
||
|
||
if TestValid(corvette_4) then
|
||
corvette_4.Attack_Move(Tyranny)
|
||
corvette_4.Override_Max_Speed(7)
|
||
end
|
||
|
||
Sleep(1)
|
||
|
||
|
||
--MessageBox("shot01")
|
||
|
||
--Set_Cinematic_Camera_Key(end_cine_antilles_start, 0, 0, -55, 0, 0, 0, 0)
|
||
--Set_Cinematic_Target_Key(Tyranny, 0, 0, 0, 0, Tyranny, 0, 0)
|
||
|
||
Tyranny.Override_Max_Speed(4)
|
||
Tyranny.Move_To(cine_fuel_2_4)
|
||
|
||
Sleep(2)
|
||
|
||
--MessageBox("shot02")
|
||
|
||
Set_Cinematic_Camera_Key(antilles, 300, -5, 180, 1, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(antilles, 0, 0, 0, 0, antilles, 0, 0)
|
||
|
||
Sleep(6)
|
||
|
||
--MessageBox("shot03")
|
||
Set_Cinematic_Camera_Key(Tyranny, 250, -30, 150, 1, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(antilles, 0, 0, 0, 0, 0, 0, 0)
|
||
|
||
Sleep(3)
|
||
|
||
|
||
--MessageBox("shot04")
|
||
|
||
Set_Cinematic_Camera_Key(antilles, 500, 20, 90, 1, 0, 0, 0)
|
||
Set_Cinematic_Target_Key(Tyranny, 0, 0, 0, 0, 0, 0, 0)
|
||
Cinematic_Zoom(5, .9)
|
||
|
||
Sleep(2)
|
||
|
||
antilles.Attack_Move(cine_fuel_2_4)
|
||
|
||
Sleep(1)
|
||
|
||
if TestValid(cine_fuel_2_4) then
|
||
cine_fuel_2_4.Take_Damage(10000)
|
||
end
|
||
|
||
flag_cine_ok_to_exit = true
|
||
--MessageBox("Ok to exit flag set to true!!!")
|
||
|
||
end
|
||
|
||
|
||
-- Escape for the intro
|
||
|
||
function Story_Handle_Esc()
|
||
|
||
if mission_initialized == true then
|
||
|
||
if intro_cinematic_skipped == false then
|
||
|
||
intro_cinematic_skipped = true
|
||
-- MessageBox("Escape Key Pressed!!!")
|
||
Fade_Screen_Out(0)
|
||
Stop_All_Music()
|
||
Stop_All_Speech()
|
||
Remove_All_Text()
|
||
|
||
if current_cinematic_thread_id ~= nil then
|
||
Thread.Kill(current_cinematic_thread_id)
|
||
end
|
||
|
||
Stop_Bink_Movie()
|
||
|
||
if TestValid(cinematic_skydome) then
|
||
cinematic_skydome.Despawn()
|
||
end
|
||
|
||
if TestValid(Intro_Animation) then
|
||
Intro_Animation.Despawn()
|
||
end
|
||
|
||
antilles.Cancel_Hyperspace()
|
||
corvette_1.Cancel_Hyperspace()
|
||
corvette_2.Cancel_Hyperspace()
|
||
corvette_3.Cancel_Hyperspace()
|
||
corvette_4.Cancel_Hyperspace()
|
||
|
||
-- Don't let the ships move while we are doing the cinematic opening
|
||
antilles.Suspend_Locomotor(false)
|
||
corvette_1.Suspend_Locomotor(false)
|
||
corvette_2.Suspend_Locomotor(false)
|
||
corvette_3.Suspend_Locomotor(false)
|
||
corvette_4.Suspend_Locomotor(false)
|
||
|
||
-- Hide the models initially
|
||
antilles.Hide(false)
|
||
corvette_1.Hide(false)
|
||
corvette_2.Hide(false)
|
||
corvette_3.Hide(false)
|
||
corvette_4.Hide(false)
|
||
|
||
Resume_Mode_Based_Music()
|
||
|
||
Letter_Box_Out(0)
|
||
Point_Camera_At(antilles)
|
||
Lock_Controls(0)
|
||
Suspend_AI(0)
|
||
Allow_Localized_SFX(true)
|
||
Set_Cinematic_Environment(false)
|
||
End_Cinematic_Camera()
|
||
|
||
Fade_Screen_In_After_Esc()
|
||
-- MLL: Creating a thread, causes a problem if the game is saved.
|
||
--Create_Thread("Fade_Screen_In_After_Esc")
|
||
|
||
end
|
||
|
||
end
|
||
|
||
end
|
||
|
||
|
||
function Fade_Screen_In_After_Esc()
|
||
|
||
Fade_Screen_In(1)
|
||
-- MLL: Don't sleep since this is no longer a thread.
|
||
--Sleep(1)
|
||
Set_Off_Alarm()
|
||
flag_initialized = true
|
||
|
||
hide_me_table = Find_All_Objects_With_Hint("hide-me")
|
||
for i,hide_me in pairs(hide_me_table) do
|
||
hide_me.Hide(false)
|
||
end
|
||
|
||
start_tartan01 = SpawnList(start_tartan_list, start_tartan01_pos, empire, false, true)
|
||
start_tartan02 = SpawnList(start_tartan_list, start_tartan02_pos, empire, false, true)
|
||
|
||
for i,unit in pairs(start_tartan01) do
|
||
unit.Prevent_AI_Usage(true)
|
||
unit.Guard_Target(unit.Get_Position())
|
||
unit.Move_To(start_tartan01_pos)
|
||
Register_Prox(unit, Start_Tartan_Prox_Event, tartan_prox_range, rebel)
|
||
end
|
||
|
||
for i,unit in pairs(start_tartan02) do
|
||
unit.Prevent_AI_Usage(true)
|
||
unit.Guard_Target(unit.Get_Position())
|
||
unit.Move_To(start_tartan02_pos)
|
||
Register_Prox(unit, Start_Tartan_Prox_Event, tartan_prox_range, rebel)
|
||
end
|
||
|
||
Story_Event("MISSION_START")
|
||
end
|
||
|
||
function end_cinematic_call()
|
||
Sleep(3)
|
||
Fade_Screen_Out(1)
|
||
Sleep(1)
|
||
--MessageBox("calling end cinematic function")
|
||
End_Cinematic_Camera()
|
||
end
|
||
|
||
-- Here is an opportunity for updates outside of an event
|
||
function Story_Mode_Service()
|
||
|
||
if not flag_initialized then
|
||
return
|
||
end
|
||
|
||
if flag_cine_ok_to_exit and not flag_cine_fuel_destroyed then
|
||
flag_cine_fuel_destroyed = true
|
||
|
||
Tyranny.Take_Damage(100000, "HP_Star_Destroyer_Weapon_FL")
|
||
|
||
Sleep(.3)
|
||
Tyranny.Take_Damage(100000, "HP_Star_Destroyer_Weapon_FR")
|
||
Sleep(.2)
|
||
Tyranny.Take_Damage(100000, "HP_Star_Destroyer_Tractor_Beam")
|
||
|
||
|
||
antilles.Attack_Move(exit_spot)
|
||
Sleep(.25)
|
||
|
||
if TestValid(corvette_1) then
|
||
corvette_1.Attack_Move(exit_spot)
|
||
Sleep(.25)
|
||
end
|
||
|
||
if TestValid(corvette_2) then
|
||
corvette_2.Attack_Move(exit_spot)
|
||
Sleep(.1)
|
||
end
|
||
|
||
if TestValid(corvette_3) then
|
||
corvette_3.Attack_Move(exit_spot)
|
||
|
||
end
|
||
|
||
if TestValid(corvette_4) then
|
||
corvette_4.Attack_Move(exit_spot)
|
||
Sleep(.2)
|
||
end
|
||
|
||
Story_Event("LUA_MISSION_END")
|
||
|
||
if TestValid(corvette_1) then
|
||
--MessageBox("corvette 1 hyperspace away here")
|
||
corvette_1.Hyperspace_Away()
|
||
Sleep(0.25)
|
||
end
|
||
|
||
if TestValid(corvette_2) then
|
||
corvette_2.Hyperspace_Away()
|
||
Sleep(0.15)
|
||
end
|
||
|
||
if TestValid(corvette_3) then
|
||
corvette_3.Hyperspace_Away()
|
||
Sleep(0.25)
|
||
end
|
||
|
||
if TestValid(corvette_4) then
|
||
corvette_4.Hyperspace_Away()
|
||
--Sleep(0.5)
|
||
end
|
||
|
||
antilles.Hyperspace_Away()
|
||
|
||
Sleep(2)
|
||
Create_Thread("end_cinematic_call")
|
||
-- This is the end of final cini . ELIE
|
||
end
|
||
|
||
--JDG check when various shipyards are destroyed
|
||
if not TestValid(shipyard_01) and not flag_shipyard_01_destroyed then
|
||
flag_shipyard_01_destroyed = true
|
||
reveal_01.Undo_Reveal()
|
||
--MessageBox("flag_shipyard_01_destroyed = true")
|
||
counter_shipyards_destroyed = counter_shipyards_destroyed + 1
|
||
end
|
||
|
||
if not TestValid(shipyard_02) and not flag_shipyard_02_destroyed then
|
||
flag_shipyard_02_destroyed = true
|
||
reveal_02.Undo_Reveal()
|
||
--MessageBox("flag_shipyard_02_destroyed = true")
|
||
counter_shipyards_destroyed = counter_shipyards_destroyed + 1
|
||
end
|
||
|
||
if not TestValid(shipyard_03) and not flag_shipyard_03_destroyed then
|
||
flag_shipyard_03_destroyed = true
|
||
reveal_03.Undo_Reveal()
|
||
--MessageBox("flag_shipyard_03_destroyed = true")
|
||
counter_shipyards_destroyed = counter_shipyards_destroyed + 1
|
||
end
|
||
|
||
if not TestValid(shipyard_04) and not flag_shipyard_04_destroyed then
|
||
flag_shipyard_04_destroyed = true
|
||
reveal_04.Undo_Reveal()
|
||
--MessageBox("flag_shipyard_04_destroyed = true")
|
||
counter_shipyards_destroyed = counter_shipyards_destroyed + 1
|
||
end
|
||
|
||
if not TestValid(shipyard_05) and not flag_shipyard_05_destroyed then
|
||
flag_shipyard_05_destroyed = true
|
||
reveal_05.Undo_Reveal()
|
||
--MessageBox("flag_shipyard_05_destroyed = true")
|
||
counter_shipyards_destroyed = counter_shipyards_destroyed + 1
|
||
end
|
||
|
||
if not TestValid(shipyard_06) and not flag_shipyard_06_destroyed then
|
||
flag_shipyard_06_destroyed = true
|
||
reveal_06.Undo_Reveal()
|
||
--MessageBox("flag_shipyard_06_destroyed = true")
|
||
counter_shipyards_destroyed = counter_shipyards_destroyed + 1
|
||
end
|
||
|
||
if counter_shipyards_destroyed == 3 and not flag_second_distress_call_made then
|
||
flag_second_distress_call_made = true
|
||
Story_Event("M01_CUE_SECOND_DISTRESS_CALL")
|
||
end
|
||
|
||
--JDG check for new win condition
|
||
if flag_shipyard_01_destroyed and
|
||
flag_shipyard_02_destroyed and
|
||
flag_shipyard_03_destroyed and
|
||
flag_shipyard_04_destroyed and
|
||
flag_shipyard_05_destroyed and
|
||
flag_shipyard_06_destroyed and
|
||
not flag_mission_over then
|
||
|
||
flag_mission_over = true
|
||
Story_Event("M01_CUE_ENDING_CINE_GO")
|
||
--MessageBox("M01_CUE_ENDING_CINE_GO")
|
||
end
|
||
|
||
if not flag_run_away_hint_given then
|
||
if TestValid(corvette_1) and (corvette_1.Get_Shield() < .5) then
|
||
flag_run_away_hint_given = true
|
||
rebel_player.Select_Object(corvette_1)
|
||
Story_Event("M01_RUNAWAY_HINT_GO")
|
||
end
|
||
|
||
if TestValid(corvette_2) and (corvette_2.Get_Shield() < .5) then
|
||
flag_run_away_hint_given = true
|
||
rebel_player.Select_Object(corvette_2)
|
||
Story_Event("M01_RUNAWAY_HINT_GO")
|
||
end
|
||
|
||
if TestValid(corvette_3) and (corvette_3.Get_Shield() < .5) then
|
||
flag_run_away_hint_given = true
|
||
rebel_player.Select_Object(corvette_3)
|
||
Story_Event("M01_RUNAWAY_HINT_GO")
|
||
end
|
||
|
||
if TestValid(corvette_4) and (corvette_4.Get_Shield() < .5) then
|
||
flag_run_away_hint_given = true
|
||
rebel_player.Select_Object(corvette_4)
|
||
Story_Event("M01_RUNAWAY_HINT_GO")
|
||
end
|
||
|
||
if TestValid(antilles) and (antilles.Get_Shield() < .5) then
|
||
flag_run_away_hint_given = true
|
||
rebel_player.Select_Object(antilles)
|
||
Story_Event("M01_RUNAWAY_HINT_GO")
|
||
end
|
||
|
||
end
|
||
|
||
--jdg forcing docks destruction when destroyers are killed
|
||
if not TestValid(shipyard01_destroyer01)and
|
||
not TestValid(shipyard01_destroyer02)and
|
||
not flag_shipyard01_destroyer01_destroyed and
|
||
not flag_shipyard01_destroyer02_destroyed and
|
||
not flag_shipyard_01_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard_01)
|
||
--MessageBox("killing shipyard 1")
|
||
--shipyard_01.Take_Damage(10000)
|
||
flag_shipyard01_destroyer01_destroyed = true
|
||
flag_shipyard01_destroyer02_destroyed = true
|
||
flag_shipyard_01_destroyed = true
|
||
end
|
||
|
||
if not TestValid(shipyard02_destroyer01)and
|
||
not flag_shipyard02_destroyer01_destroyed and
|
||
not flag_shipyard_02_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard_02)
|
||
--MessageBox("killing shipyard 2")
|
||
--shipyard_02.Take_Damage(10000)
|
||
flag_shipyard02_destroyer01_destroyed = true
|
||
flag_shipyard_02_destroyed = true
|
||
end
|
||
|
||
if not TestValid(shipyard03_destroyer01)and
|
||
not flag_shipyard03_destroyer01_destroyed and
|
||
not flag_shipyard_03_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard_03)
|
||
--MessageBox("killing shipyard 3")
|
||
--shipyard_03.Take_Damage(10000)
|
||
flag_shipyard03_destroyer01_destroyed = true
|
||
flag_shipyard_03_destroyed = true
|
||
end
|
||
|
||
if not TestValid(shipyard04_destroyer01)and
|
||
not flag_shipyard04_destroyer01_destroyed and
|
||
not flag_shipyard_04_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard_04)
|
||
--MessageBox("killing shipyard 4")
|
||
--shipyard_04.Take_Damage(10000)
|
||
flag_shipyard04_destroyer01_destroyed = true
|
||
flag_shipyard_04_destroyed = true
|
||
end
|
||
|
||
--jdg forcing destroyer destruction if/when docks are killed
|
||
if TestValid(shipyard01_destroyer01)and
|
||
flag_shipyard_01_destroyed and
|
||
not flag_shipyard01_destroyer01_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard01_destroyer01)
|
||
--MessageBox("killing destroyer 1-1")
|
||
--shipyard01_destroyer01.Take_Damage(10000)
|
||
flag_shipyard01_destroyer01_destroyed = true
|
||
|
||
end
|
||
|
||
if TestValid(shipyard01_destroyer02)and
|
||
flag_shipyard_01_destroyed and
|
||
not flag_shipyard01_destroyer02_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard01_destroyer02)
|
||
--MessageBox("killing destroyer 1-2")
|
||
--shipyard01_destroyer02.Take_Damage(10000)
|
||
flag_shipyard01_destroyer02_destroyed = true
|
||
|
||
end
|
||
|
||
if TestValid(shipyard02_destroyer01)and
|
||
not flag_shipyard02_destroyer01_destroyed and
|
||
flag_shipyard_02_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard02_destroyer01)
|
||
--MessageBox("killing destroyer 2-1")
|
||
--shipyard02_destroyer01.Take_Damage(10000)
|
||
flag_shipyard02_destroyer01_destroyed = true
|
||
end
|
||
|
||
if TestValid(shipyard03_destroyer01)and
|
||
not flag_shipyard03_destroyer01_destroyed and
|
||
flag_shipyard_03_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard03_destroyer01)
|
||
--MessageBox("killing destroyer 3-1")
|
||
--shipyard03_destroyer01.Take_Damage(10000)
|
||
flag_shipyard03_destroyer01_destroyed = true
|
||
end
|
||
|
||
if TestValid(shipyard04_destroyer01)and
|
||
not flag_shipyard04_destroyer01_destroyed and
|
||
flag_shipyard_04_destroyed then
|
||
|
||
Create_Thread("Kill_Me_On_Delay", shipyard04_destroyer01)
|
||
--MessageBox("killing destroyer 4-1")
|
||
--shipyard04_destroyer01.Take_Damage(10000)
|
||
flag_shipyard04_destroyer01_destroyed = true
|
||
end
|
||
|
||
|
||
end
|
||
|
||
function Kill_Me_On_Delay(obj)
|
||
Sleep(.5)
|
||
obj.Take_Damage(10000)
|
||
end
|
||
|
||
|