Initial commit

This commit is contained in:
2026-02-28 14:00:45 -06:00
commit 16d3170787
1134 changed files with 589134 additions and 0 deletions

View File

@@ -0,0 +1,416 @@
-- $Id: //depot/Projects/StarWars/Run/Data/Scripts/Story/Story_Rebel_ActIII_M07A_SPACE.lua#9 $
--/////////////////////////////////////////////////////////////////////////////////////////////////
--
-- (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/Run/Data/Scripts/Story/Story_Rebel_ActIII_M07A_SPACE.lua $
--
-- Original Author: Eric_Yiskis
--
-- $Author: Joseph_Gernert $
--
-- $Change: 30437 $
--
-- $DateTime: 2005/10/28 11:13:55 $
--
-- $Revision: #9 $
--
--/////////////////////////////////////////////////////////////////////////////////////////////////
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_M07A_Begin = State_Rebel_A3_M07A_Begin
,Rebel_A3_M07A_Intro_HANSOLO_DIALOG_Remove_Text = State_Intro_HANSOLO_DIALOG_Remove_Text
}
player_notified = false
init_done = false
tractor_beam_timer_active = false
falcon_near_death = 0.3
unit_list = {}
end_cine_falcon = {
"MOV_Millenium_Falcon" }
flag_falcon_captured = false
flag_player_won = false
flag_engines_offline = false
end
------------------------------------------------------------------------------------------------------------------------
-- State_Rebel_A3_M07A_Begin -- Get the mission started
------------------------------------------------------------------------------------------------------------------------
function State_Rebel_A3_M07A_Begin(message)
if message == OnEnter then
--MessageBox("OnEnter State_Rebel_A3_M07A_Begin")
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- Get Players
empire = Find_Player("Empire")
rebel = Find_Player("Rebel")
bothan = Find_Player("Bothan") --SoaFE: Need to force the falcon as bothan faction
player = rebel
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
unit_list = Find_All_Objects_Of_Type("STAR_DESTROYER_TRACTOR_FIGHTERS")
star_destroyer = unit_list[1]
unit_list = Find_All_Objects_Of_Type("MILLENIUM_FALCON_BACKWARDS")
falcon = unit_list[1]
falcon.Change_Owner(bothan) --SoaFE: Need to force the falcon as bothan faction
starbase = Find_Hint("EMPIRE_STAR_BASE_4", "starbase")
destroyer_2 = Find_Hint("STAR_DESTROYER", "guard1")
destroyer_3 = Find_Hint("STAR_DESTROYER", "guard2")
if not starbase then
MessageBox("Couldn't Find starbase!")
end
--jdg removing target-of-opportunity from falcon
falcon.Prevent_Opportunity_Fire(true)
starbase.Prevent_Opportunity_Fire(true)
destroyer_2.Prevent_Opportunity_Fire(true)
destroyer_3.Prevent_Opportunity_Fire(true)
destroyer_2.Guard_Target(destroyer_2.Get_Position())
destroyer_3.Guard_Target(destroyer_3.Get_Position())
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- If falcon is destroyed, mission is over!
Register_Death_Event(falcon,Falcon_Death)
Register_Death_Event(star_destroyer,Star_Destroyer_Death)
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- Have the Star Destroyer tractor-beam the falcon
capture_range = 200
star_destroyer.Activate_Ability("TRACTOR_BEAM",falcon)
--star_destroyer.Move_To(star_destroyer.Get_Position())
--Register_Prox(star_destroyer,Prox_Star_Destroyer,capture_range,rebel)
--jdg smoke-and-mirrors here...make destroyer and falcon move toward starbase
destroyer_goto = Find_Hint("GENERIC_MARKER_SPACE", "destroyer-goto")
falcon_goto = Find_Hint("GENERIC_MARKER_SPACE", "falcon-goto")
if not destroyer_goto then
MessageBox("Couldn't Find destroyer_goto!")
end
if not falcon_goto then
MessageBox("Couldn't Find falcon_goto!")
end
star_destroyer.Prevent_AI_Usage(true)
--falcon.Prevent_AI_Usage(true)
star_destroyer.Move_To(destroyer_goto)
falcon.Move_To(falcon_goto)
falcon.Set_Selectable(false)
Create_Thread("Thread_Falcon_Orders", falcon)
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-- We have to give the star destroyer time to activate the tractor beam.
-- We also don't want the star destroyer to be moving while we hyperspace in...
Register_Timer(Start_Service,10) --SoaFE: Increase to debug; vanilla = 10
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create_Thread("Intro_Cinematic")
end
end
function Thread_Falcon_Orders( unit_list )
Formation_Move(unit_list, falcon_goto)
if not flag_player_won and not flag_engines_offline then
flag_falcon_captured = true
unit_list.Despawn()
Story_Event("FALCON_CAPTURED")
end
end
function Intro_Cinematic()
--MessageBox("intro_cinematic function hit")
-- Fade_Screen_Out(0)
Suspend_AI(1)
Lock_Controls(1)
Letter_Box_In(0)
Start_Cinematic_Camera()
Set_Cinematic_Camera_Key(star_destroyer, 1200, 3, 145, 1, 0, 0, 0)
Set_Cinematic_Target_Key(star_destroyer, 0, 0, 0, 0, 0, 0, 0)
Fade_Screen_In(1)
Sleep(1)
Story_Event("M7A_INTRO_OFFICER_DIALOG_GO")
--Imperial Officer: Smuggler scum! We've got you now!
--Prepare to be boarded!
Sleep(2)
Resume_Hyperspace_In()
Transition_Cinematic_Camera_Key(falcon, 6.0, 375, 15, 310, 1, 0, 0, 0)
Transition_Cinematic_Target_Key(falcon, 2.5, 0, 0, 0, 0, 0, 0, 0)
Sleep(2)
Story_Event("M7A_INTRO_HANSOLO_DIALOG_GO")
end
function State_Intro_HANSOLO_DIALOG_Remove_Text(message)
if message == OnEnter then
closest_unit = Find_Nearest(falcon, player, true)
Story_Event("M7A_INTRO_TASK_TEXT_GO")
Sleep(3)
Point_Camera_At(closest_unit)
Transition_To_Tactical_Camera(2)
Letter_Box_Out(2)
Sleep(2)
End_Cinematic_Camera()
Suspend_AI(0)
Lock_Controls(0)
Add_Radar_Blip(star_destroyer, "blip_star_destroyer")
star_destroyer.Highlight(true)
end
end
------------------------------------------------------------------------------------------------------------------------
-- Start_Service()
------------------------------------------------------------------------------------------------------------------------
function Start_Service()
if TestValid(star_destroyer) then
--star_destroyer.Move_To(falcon.Get_Position())
end
init_done = true
end
------------------------------------------------------------------------------------------------------------------------
-- Prox_Star_Destroyer()
------------------------------------------------------------------------------------------------------------------------
--function Prox_Star_Destroyer(prox_obj, trigger_obj)
-- if trigger_obj == falcon then
-- Story_Event("FALCON_CAPTURED")
-- star_destroyer.Cancel_Event_Object_In_Range(Prox_Star_Destroyer)
-- star_destroyer.Move_To(star_destroyer.Get_Position())
-- end
--end
------------------------------------------------------------------------------------------------------------------------
-- Falcon_Death()
------------------------------------------------------------------------------------------------------------------------
function Falcon_Death()
if not flag_falcon_captured and not flag_player_won then
Story_Event("FALCON_DESTROYED")
end
end
------------------------------------------------------------------------------------------------------------------------
-- Star_Destroyer_Death()
------------------------------------------------------------------------------------------------------------------------
function Star_Destroyer_Death()
--Story_Event("FALCON_FREE_OF_TRACTOR")
flag_player_won = true
Create_Thread("Ending_Cinematic")
falcon.Make_Invulnerable(true)
end
function Ending_Cinematic()
--flag_player_won = true
--MessageBox("intro_cinematic function hit")
Fade_Screen_Out(1)
Suspend_AI(1)
Lock_Controls(1)
Letter_Box_In(0)
--despawn backwards falcon and replace with MOV version one MILLENNIUM_FALCON
falcon_pos = falcon.Get_Position()
cine_falcon = SpawnList(end_cine_falcon, falcon_pos, player, false, true)
if not cine_falcon then
MessageBox("Couldn't Find cine_falcon!")
end
cine_falcon_face = Find_Hint("GENERIC_MARKER_SPACE","cine-falcon-face")
falcon_escape_spot = Find_Hint("GENERIC_MARKER_SPACE","falcon-escape-spot")
if not cine_falcon_face then
MessageBox("Couldn't Find cine_falcon_face!")
end
for i,unit in pairs(cine_falcon) do
unit.Face_Immediate(cine_falcon_face)
unit.Move_To(falcon_escape_spot)
end
falcon.Despawn()
redundant_falcon = Find_First_Object("MOV_Millenium_Falcon")
if not redundant_falcon then
MessageBox("Couldn't Find redundant_falcon!")
end
--hiding/despawning the defense satellites if needed
laser_satellites_list = Find_All_Objects_Of_Type("DEFENSE_SATELLITE_LASER")
missile_satellites_list = Find_All_Objects_Of_Type("DEFENSE_SATELLITE_MISSILE")
for i,laser_satellites in pairs(laser_satellites_list) do
if TestValid(laser_satellites) then
laser_satellites.Despawn()
end
end
for i,missile_satellites in pairs(missile_satellites_list) do
if TestValid(missile_satellites) then
missile_satellites.Despawn()
end
end
Start_Cinematic_Camera()
Sleep(2)
Set_Cinematic_Camera_Key(redundant_falcon, 200, 3, 145, 1, 0, 0, 0)
Set_Cinematic_Target_Key(redundant_falcon, 0, 0, 0, 0, redundant_falcon, 0, 0)
Fade_Screen_In(1)
Sleep(1)
Story_Event("FALCON_FREE_OF_TRACTOR")
Sleep(4)
redundant_falcon.Hyperspace_Away()
Sleep(1)
Story_Event("PLAYER_WINS")
end
------------------------------------------------------------------------------------------------------------------------
-- Tractor_Beam_Timer()
------------------------------------------------------------------------------------------------------------------------
function Tractor_Beam_Timer()
-- Reset checking code
tractor_beam_timer_active = false
-- The Star Destroyer was not able to re-establish the tractor beam
if TestValid(falcon) and not falcon.Is_Under_Effects_Of_Ability("TRACTOR_BEAM") then
--star_destroyer.Cancel_Event_Object_In_Range(Prox_Star_Destroyer)
--Story_Event("FALCON_FREE_OF_TRACTOR")
flag_player_won = true
Create_Thread("Ending_Cinematic")
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(falcon) and TestValid(star_destroyer) then
if not falcon.Is_Under_Effects_Of_Ability("TRACTOR_BEAM") and not flag_player_won then
flag_player_won = true
Create_Thread("Ending_Cinematic")
end
end
if TestValid(falcon) and TestValid(star_destroyer) then
if not tractor_beam_timer_active and not falcon.Is_Under_Effects_Of_Ability("TRACTOR_BEAM") and not flag_player_won then
star_destroyer.Activate_Ability("TRACTOR_BEAM",falcon)
tractor_beam_timer_active = true
Register_Timer(Tractor_Beam_Timer,3)
end
end
--check if falcon has been attacked...make it NOT a target-of-opp
if TestValid(falcon) and falcon.Get_Shield() < 0.9 then
falcon.Prevent_Opportunity_Fire(true)
starbase.Prevent_Opportunity_Fire(true)
end
if TestValid(star_destroyer) and not star_destroyer.Are_Engines_Online() and not flag_engines_offline then
if TestValid(falcon) then
flag_engines_offline = true
--MessageBox("star destroyers engines gone...falcon stops moving")
--falcon.Move_To(falcon.Get_Position())
--star_destroyer.Move_To(star_destroyer.Get_Position())
falcon.Stop()
star_destroyer.Stop()
end
end
-- Tell the player when the falcon will soon be destroyed
if not player_notified then
if TestValid(falcon) and falcon.Get_Hull() < falcon_near_death then
Story_Event("FALCON_NEAR_DEATH")
player_notified = true
end
end
end
------------------------------------------------------------------------------------------------------------------------