-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Rebel_ActIII_M07_SPACE.lua#1 $ --///////////////////////////////////////////////////////////////////////////////////////////////// -- -- (C) Petroglyph Games, Inc. -- -- -- ***** ** * * -- * ** * * * -- * * * * * -- * * * * * * * * -- * * *** ****** * ** **** *** * * * ***** * *** -- * ** * * * ** * ** ** * * * * ** ** ** * -- *** ***** * * * * * * * * ** * * * * -- * * * * * * * * * * * * * * * -- * * * * * * * * * * ** * * * * -- * ** * * ** * ** * * ** * * * * -- ** **** ** * **** ***** * ** *** * * -- * * * -- * * * -- * * * -- * * * * -- **** * * -- --///////////////////////////////////////////////////////////////////////////////////////////////// -- C O N F I D E N T I A L S O U R C E C O D E -- D O N O T D I S T R I B U T E --///////////////////////////////////////////////////////////////////////////////////////////////// -- -- $File: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Rebel_ActIII_M07_SPACE.lua $ -- -- Original Author: Eric_Yiskis -- -- $Author: Brian_Hayes $ -- -- $Change: 637819 $ -- -- $DateTime: 2017/03/22 10:16:16 $ -- -- $Revision: #1 $ -- --///////////////////////////////////////////////////////////////////////////////////////////////// require("PGStoryMode") ------------------------------------------------------------------------------------------------------------------------ -- Definitions -- This function is called once when the script is first created. ------------------------------------------------------------------------------------------------------------------------ function Definitions() DebugMessage("%s -- In Definitions", tostring(Script)) StoryModeEvents = { Rebel_A3_M07_Begin = State_Rebel_A3_M07_Begin, Rebel_ActIII_Mission_Seven_Intro_Cinematic_00a = State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_00a, Rebel_ActIII_Mission_Seven_Intro_Cinematic_01a = State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_01a, Rebel_ActIII_Mission_Seven_Intro_Cinematic_02a = State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_02a, Rebel_ActIII_Mission_Seven_Intro_Cinematic_03a = State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_03a, Rebel_ActIII_Mission_Seven_Intro_Cinematic_04a = State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_04a, Rebel_ActIII_Mission_Seven_Intro_Cinematic_05a = State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_05a, Rebel_ActIII_Mission_Seven_Intro_Cinematic_06a = State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_06a, Rebel_A3_M07_Victory_Trigger = State_Rebel_A3_M07_Victory_Trigger } -- These patrol markers form a ring around the level patrol_marker_names = { "waypoint1", "waypoint2", "waypoint3", "waypoint4", "waypoint5", "waypoint6", "waypoint7", "waypoint8" } patrol_marker_count = 8 patrol_markers = {} interdictor_marker_names = { "waypoint2", "waypoint4", "waypoint6", "waypoint8" } -- Note: this list is parallel with the marker_names, it matches a marker with an index into the waypoints interdictor_destination_index = { 3, 5, 7, 1 } pirate_spawn_list = { "Pirate_Frigate_Captain" } pirate_under_attack = false init_done = false pirate_fleeing = false pirate_disabled = false pirate_captured = false interdictor_list = {} pirate_flee_range = 600 capture_range = 250 hull_considered_disabled = 0.5 -- when the pirate drops below this fraction hull, it's considered disabled. player_informed = false flag_interdictors_flagged = false end ------------------------------------------------------------------------------------------------------------------------ -- State_Rebel_A3_M07_Begin -- Get the mission started ------------------------------------------------------------------------------------------------------------------------ function State_Rebel_A3_M07_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) Suspend_AI(1) --MessageBox("OnEnter State_Rebel_A3_M07_Begin") -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Get Players empire = Find_Player("Empire") rebel = Find_Player("Rebel") pirates = Find_Player("Pirates") neutral = Find_Player("Neutral") -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Find Antilles as he has to be on the mission antilles = Find_First_Object("SUNDERED_HEART") if not TestValid(antilles) then --MessageBox("Missing Captain Antilles") end -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Find the marker where the rebel ships will enter attacker_entry_pos = Find_Hint("GENERIC_MARKER_SPACE", "cinematichyperspacepos") if not TestValid(attacker_entry_pos) then --MessageBox("Missing Attacker Entry Position") end -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Find the Imperial hyperspace in point empire_entry_pos = Find_Hint("GENERIC_MARKER_SPACE", "emphyperspacein") if not TestValid(empire_entry_pos) then --MessageBox("Missing Empire Entry Position") end -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Find the Imperial Fleet so we can Hyperspace them in star_destroyer = Find_Hint("STAR_DESTROYER") if not TestValid(star_destroyer) then --MessageBox("Missing Imperial Star Destroyer") end star_destroyer.Hide(true) star_destroyer.Suspend_Locomotor(true) tartan_cruiser_1 = Find_Hint("Tartan_Patrol_Cruiser", "emptartan1") if not TestValid(tartan_cruiser_1) then --MessageBox("Missing Tartan Cruiser 1") end tartan_cruiser_1.Hide(true) tartan_cruiser_1.Suspend_Locomotor(true) tartan_cruiser_2 = Find_Hint("Tartan_Patrol_Cruiser", "emptartan2") if not TestValid(tartan_cruiser_2) then --MessageBox("Missing Tartan Cruiser 2") end tartan_cruiser_2.Hide(true) tartan_cruiser_2.Suspend_Locomotor(true) --tartan_cruiser_3 = Find_Hint("Tartan_Patrol_Cruiser", "emptartan3") --if not TestValid(tartan_cruiser_3) then --MessageBox("Missing Tartan Cruiser 3") --end --tartan_cruiser_3.Hide(true) --tartan_cruiser_3.Suspend_Locomotor(true) victory_destroyer_1 = Find_Hint("VICTORY_DESTROYER", "empvictory1") if not TestValid(victory_destroyer_1) then --MessageBox("Missing Victory Destroyer 1") end victory_destroyer_1.Hide(true) victory_destroyer_1.Suspend_Locomotor(true) victory_destroyer_2 = Find_Hint("VICTORY_DESTROYER", "empvictory2") if not TestValid(victory_destroyer_2) then --MessageBox("Missing Victory Destroyer 2") end victory_destroyer_2.Hide(true) victory_destroyer_2.Suspend_Locomotor(true) interdictor_1 = Find_Hint("INTERDICTOR_CRUISER", "empinterdictor1") if not TestValid(interdictor_1) then --MessageBox("Missing Interdictor 1") end interdictor_1.Hide(true) interdictor_1.Suspend_Locomotor(true) interdictor_2 = Find_Hint("INTERDICTOR_CRUISER", "empinterdictor2") if not TestValid(interdictor_2) then --MessageBox("Missing Interdictor 2") end interdictor_2.Hide(true) interdictor_2.Suspend_Locomotor(true) interdictor_3 = Find_Hint("INTERDICTOR_CRUISER", "empinterdictor3") if not TestValid(interdictor_3) then --MessageBox("Missing Interdictor 3") end interdictor_3.Hide(true) interdictor_3.Suspend_Locomotor(true) interdictor_4 = Find_Hint("INTERDICTOR_CRUISER", "empinterdictor4") if not TestValid(interdictor_4) then --MessageBox("Missing Interdictor 4") end interdictor_4.Hide(true) interdictor_4.Suspend_Locomotor(true) -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Find all the patrol markers (waypoints) for i,name in pairs(patrol_marker_names) do marker = Find_Hint("GENERIC_MARKER_SPACE", name) if not marker then --MessageBox("Missing patrol marker %s",name) end table.insert(patrol_markers,marker) end --MessageBox("Done finding patrol markers") pirate_path_01 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-1") pirate_path_02 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-2") pirate_path_03 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-3") pirate_path_04 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-4") pirate_path_05 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-5") pirate_path_06 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-6") pirate_path_07 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-7") pirate_path_08 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-8") pirate_path_09 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-9") pirate_path_10 = Find_Hint("GENERIC_MARKER_SPACE", "pirate-patrol-10") prox_range = 200 Register_Prox(pirate_path_01, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_02, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_03, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_04, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_05, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_06, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_07, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_08, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_09, Prox_Waypoint, prox_range, pirates) Register_Prox(pirate_path_10, Prox_Waypoint, prox_range, pirates) -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- Find the interdictors -- for i,name in pairs(interdictor_marker_names) do -- marker = Find_Hint("GENERIC_MARKER_SPACE", name) -- interdictor = Find_Nearest(marker, "INTERDICTOR_CRUISER") -- if not interdictor or not marker then -- MessageBox("Missing something finding interdictor near %s",name) -- else --MessageBox("Sending interdictor at %s to waypoint %d",name,interdictor_destination_index[i]) -- Since we already know the interdictors and we are hyperspacing them in with the fleet -- just set the table for now and we will let them patrol after the intro cinematic is finished interdictor_list[interdictor_1] = interdictor_destination_index[1] interdictor_list[interdictor_2] = interdictor_destination_index[2] interdictor_list[interdictor_3] = interdictor_destination_index[3] interdictor_list[interdictor_4] = interdictor_destination_index[4] --Create_Thread("Loop_Waypoints", interdictor) -- end -- end --MessageBox("Done finding interdictors") -- Spawn the pirate pirate_marker = Find_Hint("GENERIC_MARKER_SPACE", "pirate") pirate_move_to_marker = Find_Hint("GENERIC_MARKER_SPACE", "piratemoveto") pirate_move_to_empire_marker = Find_Hint("GENERIC_MARKER_SPACE", "piratemovetoemp") new_units = SpawnList(pirate_spawn_list, pirate_marker, pirates, false, true) pirate_ship = new_units[1] --pirate_ship = Find_Hint ("PIRATE_FRIGATE_CAPTAIN","pirate-ship") if not pirate_ship then MessageBox("Couldn't create pirate ship ... aborting!") return end pirate_ship.Face_Immediate(pirate_move_to_marker) pirate_ship.Set_Cannot_Be_Killed(true) pirate_ship.Prevent_Opportunity_Fire(true) pirate_ship.Prevent_AI_Usage(true) pirate_ship.Make_Invulnerable(true) pirate_ship.Move_To(pirate_move_to_marker) interdictor_already_attacked = false init_done = true -- Do the cinematic intro Cinematic_Intro_Thread_ID = Create_Thread("Cinematic_Intro") end end -- **********************************************-- -- ****Mission is over, trigger end cinematic****-- -- **********************************************-- function State_Rebel_A3_M07_Victory_Trigger(message) if message == OnEnter then Create_Thread("Ending_Cinematic") end end ------------------------------------------------------------------------------------------------------------------------ -- ******************************************** CINEMATIC SEQUENCES **************************************************** ------------------------------------------------------------------------------------------------------------------------ -- This cinematic establishes the rebel forces and establishes the presence of Antilles befoe the dialog begins function Cinematic_Intro() -- Set up the start tactical camera position Point_Camera_At(attacker_entry_pos) -- Suspend relevent systems while cinematic plays Suspend_AI(1) Lock_Controls(1) -- Set up cinematic stroy mode Start_Cinematic_Camera() Letter_Box_In(0) -- Set intial camera and target positions -- As we do not know where in the feet formation Anitlles will be, base the camera and target positions off of his ship -- The entry marker has a z angle that is opposite of 45 degrees on this map if TestValid(antilles) then Set_Cinematic_Camera_Key(antilles, 10800, -.2, 47, 1, 0, 0, 0) Set_Cinematic_Target_Key(antilles, 10100, 0, 45, 1, 1, 0, 0) end -- Fade the scene in and wait for the scene to be fully visisble before proceeding Fade_Screen_In(2) Sleep(2) -- Tell the ships we put on hold in XML to come in Resume_Hyperspace_In() -- Wait on the current shot a bit Sleep(3.5) -- Start hyperspacing in the imperial fleet if TestValid(star_destroyer) then --star_destroyer.Cinematic_Hyperspace_In(220) star_destroyer.Cinematic_Hyperspace_In(160) end if TestValid(tartan_cruiser_1) then --tartan_cruiser_1.Cinematic_Hyperspace_In(232) tartan_cruiser_1.Cinematic_Hyperspace_In(172) end if TestValid(tartan_cruiser_2) then --tartan_cruiser_2.Cinematic_Hyperspace_In(245) tartan_cruiser_2.Cinematic_Hyperspace_In(185) end --if TestValid(tartan_cruiser_3) then --tartan_cruiser_3.Cinematic_Hyperspace_In(263) --tartan_cruiser_3.Cinematic_Hyperspace_In(203) --end if TestValid(victory_destroyer_1) then --victory_destroyer_1.Cinematic_Hyperspace_In(238) victory_destroyer_1.Cinematic_Hyperspace_In(178) end if TestValid(victory_destroyer_2) then --victory_destroyer_2.Cinematic_Hyperspace_In(258) victory_destroyer_2.Cinematic_Hyperspace_In(198) end if TestValid(interdictor_1) then --interdictor_1.Cinematic_Hyperspace_In(252) interdictor_1.Cinematic_Hyperspace_In(192) --interdictor_1.Stop() interdictor_1.Suspend_Locomotor(true) end if TestValid(interdictor_2) then --interdictor_2.Cinematic_Hyperspace_In(270) interdictor_2.Cinematic_Hyperspace_In(210) --interdictor_2.Stop() interdictor_2.Suspend_Locomotor(true) end if TestValid(interdictor_3) then --interdictor_3.Cinematic_Hyperspace_In(240) interdictor_3.Cinematic_Hyperspace_In(180) --interdictor_3.Stop() interdictor_3.Suspend_Locomotor(true) end if TestValid(interdictor_4) then --interdictor_4.Cinematic_Hyperspace_In(226) interdictor_4.Cinematic_Hyperspace_In(166) --interdictor_4.Stop() interdictor_4.Suspend_Locomotor(true) end -- Switch to a different shot if TestValid(antilles) then Set_Cinematic_Camera_Key(antilles, 255, -15, 160, 1, antilles, 1, 0) Set_Cinematic_Target_Key(empire_entry_pos, 0, 0, 0, 0, 0, 0, 0) end -- Antilles dialogue is okay to start Story_Event("RA3M7_ANTILLES_DIALOGUE_1_GO") end -- ------------------------------------------------------------------------------------------------------------------------ -- This cinematic establishes the Imperial forces on the map prior to Antilles "Looks like I spoke too soon" function Cinematic_Imperial_Establishing() Sleep(2) Cinematic_Zoom(2, .02) Story_Event("RA3M7_ANTILLES_DIALOGUE_2_GO") Sleep(5) end -- ------------------------------------------------------------------------------------------------------------------------ -- This cinematic establishes the Imperial forces on the map prior to Antilles "Looks like I spoke too soon" function Cinematic_Imperial_Dialogue_1() -- We need a shot of the star destroyer here Sleep(1.5) Set_Cinematic_Camera_Key(star_destroyer, 400, -15, 170, 1, star_destroyer, 1, 0) Set_Cinematic_Target_Key(antilles, 0, 0, 0, 0, 0, 0, 0) Cinematic_Zoom(10, .99) pirate_ship.Move_To(pirate_move_to_empire_marker) Sleep(1) Story_Event("RA3M7_IMPERIAL_DIALOGUE_1_GO") end -- ------------------------------------------------------------------------------------------------------------------------ -- This cinematic establishes the pirate moving toward the Imperial forces function Cinematic_Pirate_To_Empire() Sleep(1) Set_Cinematic_Camera_Key(star_destroyer, -200, 50, 35, 0, pirate_ship, 0, 0) Set_Cinematic_Target_Key(star_destroyer, 0, 0, 0, 0, 0, 0, 0) Story_Event("RA3M7_ANTILLES_DIALOGUE_3_GO") end -- ------------------------------------------------------------------------------------------------------------------------ -- This cinematic holds the existing shot while the empire threatens the pirate function Cinematic_Empire_Threatens_Pirate() Sleep(1) Set_Cinematic_Camera_Key(star_destroyer, 400, -15, 170, 1, star_destroyer, 1, 0) Set_Cinematic_Target_Key(pirate_ship, 0, 0, 0, 0, pirate_ship, 0, 0) Story_Event("RA3M7_IMPERIAL_DIALOGUE_2_GO") Sleep(4) Set_Cinematic_Camera_Key(star_destroyer, -200, 50, 35, 0, pirate_ship, 0, 0) Set_Cinematic_Target_Key(star_destroyer, 0, 0, 0, 0, 0, 0, 0) end -- ------------------------------------------------------------------------------------------------------------------------ -- This cinematic shows the pirate fleeing after being threatened by the empire function Cinematic_Pirate_Retreats() Set_Cinematic_Camera_Key(star_destroyer, 400, 10, 170, 1, star_destroyer, 1, 0) Set_Cinematic_Target_Key(pirate_ship, 0, 0, 0, 0, pirate_ship, 0, 0) --Create_Thread("Thread_Pirate_Escape_Patrol") --pirate_ship.Move_To(pirate_move_to_marker) pirate_ship.Move_To(pirate_path_01) Sleep(6) Story_Event("RA3M7_IMPERIAL_DIALOGUE_3_GO") Sleep(.5) end -- ------------------------------------------------------------------------------------------------------------------------ -- The race is on to destroy the pirate function Cinematic_Attack_Pirate() pirate_ship.Prevent_Opportunity_Fire(false) star_destroyer.Attack_Move(pirate_ship) victory_destroyer_1.Attack_Move(pirate_ship) victory_destroyer_2.Attack_Move(pirate_ship) tartan_cruiser_1.Attack_Move(pirate_ship) tartan_cruiser_2.Attack_Move(pirate_ship) --tartan_cruiser_3.Attack_Move(pirate_ship) Sleep(6) Set_Cinematic_Camera_Key(antilles, 550, 15, 180, 1, antilles, 1, 0) Set_Cinematic_Target_Key(antilles, 200, 0, 0, 0, antilles, 1, 0) Cinematic_Zoom(10, .9) Story_Event("RA3M7_ANTILLES_DIALOGUE_4_GO") end -- ------------------------------------------------------------------------------------------------------------------------ -- End the intro cinematic function Cinematic_Intro_End() Sleep(1) Point_Camera_At(antilles) Transition_To_Tactical_Camera(1) Letter_Box_Out(1) Sleep(1) for interdictor, index in pairs(interdictor_list) do --Register_Attacked_Event(interdictor, Interdictor_Attacked_Callback) --preventing auto-fire on interdictors and making interdictors actually interdict interdictor.Prevent_AI_Usage(true) interdictor.Prevent_Opportunity_Fire(true) interdictor.Activate_Ability("INTERDICT", true) end pirate_ship.Override_Max_Speed(3) pirate_ship.Set_Cannot_Be_Killed(true) pirate_ship.Make_Invulnerable(false) --Register_Attacked_Event(pirate_ship, Pirate_Attacked_Callback) --Register_Prox(pirate_ship, Pirate_Prox, pirate_flee_range, rebel) End_Cinematic_Camera() Suspend_AI(0) Lock_Controls(0) end ------------------------------------------------------------------------------------------------------------------------ -- Interdictor_Attacked_Callback - respond to falling under attack or cooling off from being attacked ------------------------------------------------------------------------------------------------------------------------ function Interdictor_Attacked_Callback(fell_under_attack, most_deadly_enemy) -- We only care about the first time an interdictor is attacked if not interdictor_already_attacked and fell_under_attack and most_deadly_enemy == pirate_ship then interdictor_already_attacked = true Story_Event("interdictor_attacked") end if interdictor_already_attacked then Cancel_Attacked_Event(fell_under_attack) end end ------------------------------------------------------------------------------------------------------------------------ -- Disable_Pirate ------------------------------------------------------------------------------------------------------------------------ function Disable_Pirate() --MessageBox("Pirate Disabled!") pirate_disabled = true Cancel_Attacked_Event(pirate_ship) pirate_ship.Move_To(pirate_ship.Get_Position()) pirate_ship.Lock_Current_Orders() pirate_ship.Make_Invulnerable(true) pirate_ship.Prevent_Opportunity_Fire(true) Story_Event("PIRATE_DISABLED") Register_Prox(pirate_ship,Prox_Rebel_Capture,capture_range,rebel) end ------------------------------------------------------------------------------------------------------------------------ -- Despawn_Pirate() ------------------------------------------------------------------------------------------------------------------------ function Despawn_Pirate() pirate_ship.Cancel_Event_Object_In_Range(Prox_Rebel_Capture) --pirate_ship.Cancel_Event_Object_In_Range(Prox_Empire_Capture) --pirate_ship.Despawn() --making the pirate "killable" again pirate_ship.Make_Invulnerable(false) pirate_ship.Set_Cannot_Be_Killed(false) pirate_ship = nil end ------------------------------------------------------------------------------------------------------------------------ -- Prox_Rebel_Capture - One of the rebels captured the pirate ------------------------------------------------------------------------------------------------------------------------ function Prox_Rebel_Capture(prox_obj, trigger_obj) if not pirate_disabled then return end if trigger_obj.Is_Category("Fighter") or trigger_obj.Is_Category("Bomber") then return end --MessageBox("Rebels captured the pirate") Despawn_Pirate() Story_Event("REBELS_CAPTURED_PIRATE") pirate_captured = true if one_left == true then Story_Event("REBELS_CAPTURED_PIRATE_SI") -- Still interdictors else Story_Event("REBELS_CAPTURED_PIRATE_NI") -- No interdictors end end ------------------------------------------------------------------------------------------------------------------------ -- Story_Mode_Service() - gets serviced each frame ------------------------------------------------------------------------------------------------------------------------ -- Here is an opportunity for updates outside of an event function Story_Mode_Service() if not init_done then return end if TestValid(pirate_ship) and not pirate_disabled then -- If the pirate ship takes too much damage, then disable it. if pirate_ship.Get_Hull() < hull_considered_disabled then Disable_Pirate() end end -- if interdictor receives hull damage, let the AI take over one_left = false remainder = 0 for unit,i in pairs(interdictor_list) do if TestValid(unit) then one_left = true remainder = remainder + 1 else --MessageBox("Interdictor destroyed, if they all go, the pirate will get away.") interdictor_list[unit] = nil end end if not one_left then if not pirate_disabled then --MessageBox("YOU LOSE: All of the interdictors are gone and we haven't disabled the pirate, so he's fleeing.") pirate_ship.Hyperspace_Away() Story_Event("PIRATE_ESCAPED") ScriptExit() else Story_Event("INTERDICTORS_DESTROYED") end elseif not player_informed and remainder == 1 then -- Tell the player that there's only one left player_informed = true if pirate_captured then Story_Event("one_left_captured") else Story_Event("one_left_not_captured") end end end -- Cinematic triggers -- Antilles first speaks "Looks like we beat the imperial fleet..." or similar function State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_00a(message) if message == OnEnter then Cinematic_Imperial_Establishing_Thread_ID = Create_Thread("Cinematic_Imperial_Establishing") end end function State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_01a(message) if message == OnEnter then Cinematic_Imperial_Dialogue_1_Thread_ID = Create_Thread("Cinematic_Imperial_Dialogue_1") end end function State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_02a(message) if message == OnEnter then Cinematic_Pirate_To_Empire_Thread_ID = Create_Thread("Cinematic_Pirate_To_Empire") end end function State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_03a(message) if message == OnEnter then Cinematic_Empire_Threatens_Pirate_Thread_ID = Create_Thread("Cinematic_Empire_Threatens_Pirate") end end function State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_04a(message) if message == OnEnter then Cinematic_Pirate_Retreats_Thread_ID = Create_Thread("Cinematic_Pirate_Retreats") end end function State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_05a(message) if message == OnEnter then Cinematic_Attack_Pirate_Thread_ID = Create_Thread("Cinematic_Attack_Pirate") end end function State_Rebel_ActIII_Mission_Seven_Intro_Cinematic_06a(message) if message == OnEnter then Cinematic_Intro_End_Thread_ID = Create_Thread("Cinematic_Intro_End") end end -- prox events to keep pirate on the move function Prox_Waypoint(prox_obj, trigger_obj) if trigger_obj == pirate_ship and not pirate_disabled then --MessageBox("Prox_Waypoint hit") if prox_obj == pirate_path_01 then --MessageBox("pirate to pirate_path_02") trigger_obj.Move_To(pirate_path_02) end if prox_obj == pirate_path_02 then --MessageBox("pirate to pirate_path_03") trigger_obj.Move_To(pirate_path_03) if not flag_interdictors_flagged then flag_interdictors_flagged = true for interdictor, index in pairs(interdictor_list) do Register_Attacked_Event(interdictor, Interdictor_Attacked_Callback) interdictor.Prevent_Opportunity_Fire(false) end end end if prox_obj == pirate_path_03 then trigger_obj.Move_To(pirate_path_04) end if prox_obj == pirate_path_04 then trigger_obj.Move_To(pirate_path_05) end if prox_obj == pirate_path_05 then trigger_obj.Move_To(pirate_path_06) end if prox_obj == pirate_path_06 then pirate_ship.Override_Max_Speed(1) trigger_obj.Move_To(pirate_path_07) end if prox_obj == pirate_path_07 then pirate_ship.Override_Max_Speed(2) trigger_obj.Move_To(pirate_path_08) end if prox_obj == pirate_path_08 then trigger_obj.Move_To(pirate_path_09) end if prox_obj == pirate_path_09 then trigger_obj.Move_To(pirate_path_10) end if prox_obj == pirate_path_10 then trigger_obj.Move_To(pirate_path_01) end end end ------------------------------------------------------------------------------------------------------------------------ -- dme Ending Cinematic stuff ------------------------------------------------------------------------------------------------------------------------ function Ending_Cinematic() Story_Event("DISABLE_ANTILLES_KILLED") Fade_Screen_Out(.5) Suspend_AI(1) Lock_Controls(1) Letter_Box_In(0) -- Ensure Antilles is still present for this cinematic sundered_heart = Find_First_Object("SUNDERED_HEART") if not sundered_heart then return end warp_loc = Find_Hint("GENERIC_MARKER_SPACE", "warploc") Start_Cinematic_Camera() Fade_Screen_In(2) -- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation) Set_Cinematic_Camera_Key(warp_loc, 1000, -10, -90, 1, 0, 1, 0) -- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation) Set_Cinematic_Target_Key(warp_loc, -50, 0, 0, 0, 0, 0, 0) -- Transition_Cinematic_Camera_Key(target_pos, time, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation) Transition_Cinematic_Camera_Key(warp_loc, 5, 200, 2.5, -37.5, 1, 0, 1, 0) Transition_Cinematic_Camera_Key(warp_loc, 5, 200, 17, 15, 1, 0, 1, 0) rebel = Find_Player("Rebel") Start_Cinematic_Space_Retreat(rebel.Get_ID(), 8) Sleep(4) End_Cinematic_Camera() Story_Event("MISSION_07_VICTORY") end