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

2020 lines
61 KiB
Lua
Raw Blame History

--/////////////////////////////////////////////////////////////////////////////////////////////////
--
-- (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