1569 lines
47 KiB
Lua
1569 lines
47 KiB
Lua
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Empire_ActI_M02_LAND.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_Empire_ActI_M02_LAND.lua $
|
|
--
|
|
-- Original Author: Steve_Copeland
|
|
--
|
|
-- $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 =
|
|
{
|
|
Empire_M02_Begin = State_Empire_M02_Begin
|
|
,Empire_A01_M02_01 = State_Empire_A01_M02_01
|
|
,Empire_A01_M02_01a = State_Empire_A01_M02_01a
|
|
,Empire_A01_M02_02 = State_Empire_A01_M02_02
|
|
,Empire_A01_M02_02b = State_Empire_A01_M02_02b
|
|
,Empire_A01_M02_03 = State_Empire_A01_M02_03
|
|
,Empire_A01_M02_03b = State_Empire_A01_M02_03b
|
|
,Empire_A01_M02_04 = State_Empire_A01_M02_04
|
|
,Empire_A01_M02_04b = State_Empire_A01_M02_04b
|
|
,Empire_A01_M02_05 = State_Empire_A01_M02_05
|
|
,Empire_A01_M02_05b = State_Empire_A01_M02_05b
|
|
,Empire_M02_Final_Dialog_00 = State_M02_Final_Setup
|
|
,Empire_M02_Final_Dialog_01_End = State_M02_Final_01_End
|
|
,Empire_M02_Final_Dialog_02 = State_M02_Final_02
|
|
,Empire_M02_Final_Dialog_02_End = State_M02_Final_02_End
|
|
,Empire_M02_Final_Dialog_03 = State_M02_Final_03
|
|
,Empire_M02_Final_Dialog_03_End = State_M02_Final_03_End
|
|
,Empire_M02_Final_Dialog_04 = State_M02_Final_04
|
|
,Empire_M02_Final_Dialog_04_End = State_M02_Final_04_End
|
|
,Empire_M02_Final_Dialog_05 = State_M02_Final_05
|
|
,Empire_M02_Final_Dialog_05_End = State_M02_Final_05_End
|
|
,Empire_M02_Final_Dialog_06 = State_M02_Final_06
|
|
,Empire_M02_Final_Dialog_06_End = State_M02_Final_06_End
|
|
,Empire_M02_Final_Dialog_07 = State_M02_Final_07
|
|
,Empire_M02_Final_Dialog_07_End = State_M02_Final_07_End
|
|
,Empire_M02_Allow_Win = State_M02_Final_End
|
|
,Empire_M02_Cue_Reinforcements_01 = State_M02_Cue_Reinforcements_01
|
|
,Empire_M02_Cue_Reinforcements_02 = State_M02_Cue_Reinforcements_02
|
|
,Empire_M02_Cue_Reinforcements_03 = State_M02_Cue_Reinforcements_03
|
|
,Empire_A01_M02_Misson_Goal_Complete_PowerGenerator = State_M02_Shield_Is_Dead
|
|
,Empire_M02_Vader_Hint_01_ForcePush = State_Vader_Hint_01_ForcePush
|
|
,Empire_M02_Vader_Hint_02_ForceCrush = State_Vader_Hint_02_ForceCrush
|
|
,Empire_M02_Comm_Center_Info_00 = State_Comm_Center_Info_00
|
|
,Empire_M02_Shield_Info_00 = State_Shield_Info_00
|
|
--,Empire_M02_Power_Generator_01 = State_Power_Generator_01
|
|
,EM02_Reset_Battle_Chatter_Timer_Stop = State_EM02_Reset_Battle_Chatter_Timer_Stop
|
|
,EM02_Reset_Battle_Chatter_Timer02_Stop = State_EM02_Reset_Battle_Chatter_Timer02_Stop
|
|
,EM02_Reset_Battle_Chatter_Timer03_Stop = State_EM02_Reset_Battle_Chatter_Timer03_Stop
|
|
,Empire_M02_Build_Pad_Info_00 = State_Empire_M02_Build_Pad_Info_00
|
|
,Empire_M02_Comm_Center_Destroyed_Lua_Notification = State_Empire_M02_Comm_Center_Destroyed_Lua_Notification
|
|
|
|
|
|
|
|
}
|
|
|
|
BikeList =
|
|
{
|
|
"IMPERIAL_LIGHT_SCOUT_SQUAD"
|
|
}
|
|
|
|
PrimarySkydomeList =
|
|
{
|
|
"Stars_Lua_Cinematic"
|
|
}
|
|
|
|
PlanetList =
|
|
{
|
|
"Temperate_Planet_Lua"
|
|
}
|
|
|
|
SpaceLuaShuttleList =
|
|
{
|
|
"Shuttle_Tyderium_Lua_Cinematic"
|
|
}
|
|
|
|
MaulerList =
|
|
{
|
|
"IMPERIAL_ANTI_INFANTRY_BRIGADE"
|
|
}
|
|
|
|
TrooperList =
|
|
{
|
|
"IMPERIAL_STORMTROOPER_SQUAD"
|
|
}
|
|
|
|
Reinforcement01List =
|
|
{
|
|
"IMPERIAL_ANTI_INFANTRY_BRIGADE"
|
|
}
|
|
|
|
Reinforcement02List =
|
|
{
|
|
"IMPERIAL_STORMTROOPER_SQUAD"
|
|
}
|
|
|
|
|
|
reinforced_already = false
|
|
flag_mission_over = false
|
|
current_cinematic_thread = nil
|
|
intro_cinematic_skipped = false
|
|
end_cinematic_skipped = false
|
|
|
|
flag_powerTurret01_dead = false
|
|
--flag_powerTurret02_dead = false
|
|
|
|
flag_delay_fudge = false
|
|
flag_okay_to_battle_chatter = true
|
|
flag_vader_seen = false
|
|
flag_at_st_seen = false
|
|
flag_stormtrooper_seen = false
|
|
|
|
fog_id = nil
|
|
fog_id2 = nil
|
|
fog_id3 = nil
|
|
fog_id4 = nil
|
|
|
|
bikespawn = nil
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- INTRO CINEMATIC FUNCTIONS
|
|
|
|
function State_Empire_M02_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)
|
|
|
|
|
|
Stop_All_Music()
|
|
-- lockout player control & AI
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
|
|
-- Fade_Screen_Out(0)
|
|
|
|
-- grab markers
|
|
|
|
vader = Find_First_Object("DARTH_VADER")
|
|
if not vader then
|
|
--MessageBox("Can't find vader!!!")
|
|
return
|
|
end
|
|
|
|
player = Find_Player("Empire")
|
|
neutral_player = Find_Player("Neutral")
|
|
enemy = Find_Player("Rebel")
|
|
|
|
powerTurret01 = Find_Hint("SKIRMISH_BUILD_PAD_BASIC", "power-turret01")
|
|
--powerTurret02 = Find_Hint("SKIRMISH_BUILD_PAD_BASIC", "power-turret02")
|
|
|
|
if not powerTurret01 then
|
|
--MessageBox("Can't find powerTurret01!!!")
|
|
return
|
|
end
|
|
|
|
--if not powerTurret02 then
|
|
-- MessageBox("Can't find powerTurret02!!!")
|
|
-- return
|
|
--end
|
|
|
|
reinforce_pad = Find_Hint("REINFORCEMENT_POINT_PLUS10_CAP", "reinforcepad")
|
|
--reinforceSpot = Find_Hint("GENERIC_MARKER_LAND", "reinforce01")
|
|
|
|
reinforceSpot_01 = Find_Hint("GENERIC_MARKER_LAND", "reinforce-spot01")
|
|
reinforceSpot_02 = Find_Hint("GENERIC_MARKER_LAND", "reinforce-spot02")
|
|
|
|
bikespawnloc = Find_Hint("GENERIC_MARKER_LAND", "spawnbike")
|
|
sdest = Find_Hint("GENERIC_MARKER_LAND", "scoutdest")
|
|
|
|
vadershuttlepos = Find_Hint("GENERIC_MARKER_LAND", "vadershuttle")
|
|
commandershuttlepos = Find_Hint("GENERIC_MARKER_LAND", "commandershuttle")
|
|
|
|
-- Find the locations needed for the end cinematic
|
|
final_vader_start_loc = Find_Hint("GENERIC_MARKER_LAND", "vaderfinalstart")
|
|
final_vader_end_loc = Find_Hint("GENERIC_MARKER_LAND", "vaderfinalend")
|
|
final_officer_loc = Find_Hint("GENERIC_MARKER_LAND", "dialdest")
|
|
intro_officer_final_loc = Find_Hint("GENERIC_MARKER_LAND", "officerendintro")
|
|
final_trooper1_loc = Find_Hint("GENERIC_MARKER_LAND", "stormtrooper1final")
|
|
final_trooper2_loc = Find_Hint("GENERIC_MARKER_LAND", "stormtrooper2final")
|
|
vader_dest1 = Find_Hint("GENERIC_MARKER_LAND", "vaderend")
|
|
Trooperhide1 = Find_Hint("Stormtrooper_Team", "hidetroopers1")
|
|
Trooperhide2 = Find_Hint("Stormtrooper_Team", "hidetroopers2")
|
|
if not Trooperhide1 then
|
|
--MessageBox("Can't find Trooperhide1!!!")
|
|
return
|
|
end
|
|
-- vaderto = Find_Hint("GENERIC_MARKER_LAND", "cfvaderto")
|
|
|
|
dialogue_cmdr = Find_First_Object("MOV_FIELD_COMMANDER_EMPIRE")
|
|
dialogue_cmdr.Set_Selectable(false)
|
|
|
|
|
|
--Sample use of Find_All_Objects_With_Hint to have all the 'field guards' placed in guard mode in a simple loop
|
|
field_guard_table = Find_All_Objects_With_Hint("fieldguard")
|
|
|
|
for i,unit in pairs(field_guard_table) do
|
|
unit.Guard_Target(unit.Get_Position())
|
|
Register_Prox(unit, Prox_Battle_Chatter, 100, empire)
|
|
end
|
|
|
|
empire = Find_Player("Empire")
|
|
|
|
bikespawn = SpawnList(BikeList, bikespawnloc, empire, false, false)
|
|
|
|
|
|
pad_list = Find_All_Objects_Of_Type("Skirmish_Build_Pad_Basic")
|
|
for i,pad in pairs(pad_list) do
|
|
pad.Lock_Build_Pad_Contents(true)
|
|
end
|
|
|
|
|
|
-- Get the space center marker
|
|
space_cinematic_center = Find_Hint("GENERIC_MARKER_LAND", "spacecinematiccenter")
|
|
|
|
-- Make sure it is valid
|
|
if not TestValid(space_cinematic_center) then
|
|
--MessageBox("Couldn't find hint spacecinematiccenter!!!")
|
|
end
|
|
|
|
-- Promote the markers position to the layer we are doing the space cinematics in
|
|
Promote_To_Space_Cinematic_Layer(space_cinematic_center)
|
|
|
|
-- Get the planet marker
|
|
cinematic_planet_pos = Find_Hint("GENERIC_MARKER_LAND", "cinematicplanetposition")
|
|
|
|
-- Make sure it is valid
|
|
if not TestValid(cinematic_planet_pos) then
|
|
--MessageBox("Couldn't create cinematic_planet_pos !!!")
|
|
end
|
|
|
|
-- Promote the markers position to the layer we are doing the space cinematics in
|
|
Promote_To_Space_Cinematic_Layer(cinematic_planet_pos)
|
|
|
|
|
|
cinematic_lua_shuttle_pos = Find_Hint("GENERIC_MARKER_LAND", "luashuttlestart")
|
|
|
|
-- Make sure it is valid
|
|
if not TestValid(cinematic_lua_shuttle_pos) then
|
|
--MessageBox("Couldn't create cinematic_lua_shuttle_pos !!!")
|
|
end
|
|
|
|
-- Promote the markers position to the layer we are doing the space cinematics in
|
|
Promote_To_Space_Cinematic_Layer(cinematic_lua_shuttle_pos)
|
|
|
|
Set_Cinematic_Environment(true)
|
|
-- *** SET UP THE OPENING CINEMATIC ***
|
|
if not intro_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("Intro_Cinematic_Text_Crawl")
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
-- XML Story event for commander starting to talk
|
|
function State_Empire_A01_M02_01(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("Intro_Cinematic_Commander_Talk_1")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
-- XML Story event for commander stopping his first speech
|
|
function State_Empire_A01_M02_01a(message)
|
|
if message == OnEnter then
|
|
|
|
-- Let Vader Speak
|
|
if not intro_cinematic_skipped then
|
|
Story_Event("M1_VADER_DIALOGUE_1_GO")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
-- XML Story event for vader starting to talk
|
|
function State_Empire_A01_M02_02(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("Intro_Cinematic_Vader_Talk_1")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
-- XML Story event for vader stopping his speech
|
|
function State_Empire_A01_M02_02b(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
Story_Event("M1_OFFICER_DIALOGUE_2_GO")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
|
|
-- XML Story event for commander talking for second time
|
|
function State_Empire_A01_M02_03(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("Intro_Cinematic_Commander_Talk_2")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
-- XML Story event for commander stopping his second speech event
|
|
function State_Empire_A01_M02_03b(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
Story_Event("M1_VADER_DIALOGUE_2_GO")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
-- XML Story event for vader starting his final speech
|
|
function State_Empire_A01_M02_04(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("Intro_Cinematic_Vader_Talk_2")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
|
|
-- XML Story event for vader stopping his final speech
|
|
function State_Empire_A01_M02_04b(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
Story_Event("M1_OFFICER_DIALOGUE_3_GO")
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
-- XML Story event for officer starting his final speech
|
|
function State_Empire_A01_M02_05(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
dialogue_cmdr.Play_Animation("Talk", false)
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
|
|
-- XML Story event for officer stopping his final speech
|
|
function State_Empire_A01_M02_05b(message)
|
|
if message == OnEnter then
|
|
|
|
if not intro_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("Intro_Cinematics_End")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
|
|
function DropReinforcements()
|
|
|
|
--function ReinforceList(type_list, entry_marker, player, allow_ai_usage, delete_after_scenario, ignore_reinforcement_rules, callback)
|
|
ReinforceList(Reinforcement01List, reinforceSpot_01, empire, false, false, true, false)
|
|
-- MessageBox("reinforcements script running")
|
|
Story_Event("M1_REINFORCE_DIALOG_GO")
|
|
|
|
Sleep(3)
|
|
|
|
ReinforceList(Reinforcement02List, reinforceSpot_02, empire, false, false, true, false)
|
|
|
|
end
|
|
|
|
function Prox_Battle_Chatter(prox_obj, trigger_obj)
|
|
if flag_okay_to_battle_chatter then
|
|
|
|
newvader = Find_Object_Type("DARTH_VADER")
|
|
at_st = Find_Object_Type("AT_ST_WALKER")
|
|
stormtrooper = Find_Object_Type("SQUAD_STORMTROOPER")
|
|
|
|
if trigger_obj.Get_Type() == newvader and not flag_vader_seen then
|
|
--MessageBox("Prox_Battle_Chatter vader hit!!")
|
|
flag_okay_to_battle_chatter = false
|
|
flag_vader_seen = true
|
|
Story_Event("M1_RESET_BATTLE_CHATTER")
|
|
Story_Event("M1_BATTLE_CHATTER_REBELS_SEE_VADER")
|
|
elseif trigger_obj.Get_Type() == at_st and not flag_at_st_seen then
|
|
--MessageBox("Prox_Battle_Chatter at_st hit!!")
|
|
flag_okay_to_battle_chatter = false
|
|
flag_at_st_seen = true
|
|
Story_Event("M1_RESET_BATTLE_CHATTER02")
|
|
Story_Event("M1_BATTLE_CHATTER_REBELS_SEE_ATST")
|
|
elseif trigger_obj.Get_Type() == stormtrooper and not flag_stormtrooper_seen then
|
|
--MessageBox("Prox_Battle_Chatter stormtrooper hit!!")
|
|
flag_okay_to_battle_chatter = false
|
|
flag_stormtrooper_seen = true
|
|
Story_Event("M1_RESET_BATTLE_CHATTER03")
|
|
Story_Event("M1_BATTLE_CHATTER_REBELS_SEE_STORMTROOPERS")
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
function State_EM02_Reset_Battle_Chatter_Timer_Stop(message)
|
|
if message == OnEnter then
|
|
flag_okay_to_battle_chatter = true
|
|
--MessageBox("battle chatter timer reset")
|
|
end
|
|
end
|
|
|
|
function State_EM02_Reset_Battle_Chatter_Timer02_Stop(message)
|
|
if message == OnEnter then
|
|
flag_okay_to_battle_chatter = true
|
|
--MessageBox("battle chatter timer reset")
|
|
end
|
|
end
|
|
|
|
function State_EM02_Reset_Battle_Chatter_Timer03_Stop(message)
|
|
if message == OnEnter then
|
|
flag_okay_to_battle_chatter = true
|
|
--MessageBox("battle chatter timer reset")
|
|
end
|
|
end
|
|
|
|
|
|
-- <***************************************************************************************************************>
|
|
-- END CINEMATIC
|
|
-- <***************************************************************************************************************>
|
|
|
|
function State_M02_Final_Setup(message)
|
|
if message == OnEnter then
|
|
flag_mission_over = true
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("Start_End_Cinematic")
|
|
end
|
|
end
|
|
end
|
|
|
|
-- jdg - 8/17 turning base guards back over to AI here
|
|
|
|
function State_M02_Shield_Is_Dead(message)
|
|
if message == OnEnter then
|
|
|
|
if not flag_mission_over then
|
|
|
|
|
|
|
|
base_guard_table = Find_All_Objects_With_Hint("baseguard")
|
|
field_guard_table = Find_All_Objects_With_Hint("fieldguard")
|
|
tank_guard = Find_Hint("T2B_Tank", "tank01")
|
|
|
|
goto_spot = Find_Hint("GENERIC_MARKER_LAND", "reinforce01")
|
|
|
|
fog_id = FogOfWar.Reveal(empire,goto_spot.Get_Position(),20000,20000)
|
|
|
|
for i,unit in pairs(base_guard_table) do
|
|
if TestValid(unit) then
|
|
|
|
--unit.Prevent_AI_Usage(false)
|
|
--unit.Attack_Move(goto_spot)
|
|
unit.Guard_Target(goto_spot.Get_Position())
|
|
end
|
|
end
|
|
|
|
--for i,unit in pairs(field_guard_table) do
|
|
--if TestValid(unit) then
|
|
|
|
--unit.Prevent_AI_Usage(false)
|
|
--unit.Attack_Move(goto_spot)
|
|
--unit.Guard_Target(goto_spot.Get_Position())
|
|
--end
|
|
--end
|
|
|
|
if TestValid(tank_guard) then
|
|
|
|
--tank_guard.Prevent_AI_Usage(false)
|
|
--unit.Attack_Move(goto_spot)
|
|
tank_guard.Guard_Target(goto_spot.Get_Position())
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_01_End(message)
|
|
if message == OnEnter then
|
|
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_1")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_02(message)
|
|
if message == OnEnter then
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_2")
|
|
end
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_02_End(message)
|
|
if message == OnEnter then
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_2_End")
|
|
end
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_03(message)
|
|
if message == OnEnter then
|
|
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_3")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_03_End(message)
|
|
if message == OnEnter then
|
|
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_3_End")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_04(message)
|
|
if message == OnEnter then
|
|
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_4")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_04_End(message)
|
|
if message == OnEnter then
|
|
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_4_End")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_05(message)
|
|
if message == OnEnter then
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_5")
|
|
end
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_05_End(message)
|
|
if message == OnEnter then
|
|
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_5_End")
|
|
end
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_06(message)
|
|
if message == OnEnter then
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_6")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_06_End(message)
|
|
if message == OnEnter then
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_6_End")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_07(message)
|
|
if message == OnEnter then
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_7")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_07_End(message)
|
|
if message == OnEnter then
|
|
if not end_cinematic_skipped then
|
|
current_cinematic_thread = Create_Thread("End_Cinematic_7_End")
|
|
end
|
|
end
|
|
end
|
|
|
|
function State_M02_Final_End(message)
|
|
if message == OnEnter then
|
|
|
|
|
|
vader.Play_Animation("Idle",false)
|
|
finaltrooper2.Play_Animation("Idle", false)
|
|
Sleep(3)
|
|
Fade_Screen_Out(.5)
|
|
Sleep(.5)
|
|
-- End_Cinematic_Camera()
|
|
|
|
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------------------
|
|
--********************************************************
|
|
--Hint messages here (mid mission cines too)
|
|
--**********************************************************
|
|
-------------------------------------------------------------
|
|
|
|
function State_Vader_Hint_01_ForcePush(message)
|
|
if message == OnEnter then
|
|
-- this is the Vader hint about using force push against infantry
|
|
-- reveal area around first group of infantry here
|
|
--MessageBox("vader hint 01 lua callback hit")
|
|
infantrypos = Find_First_Object("STORY_TRIGGER_ZONE_06")
|
|
forcepush_reveal = FogOfWar.Reveal(player, infantrypos, 200, 200)
|
|
|
|
--select vader so we can flash his force push icon thingy
|
|
if TestValid(vader) then
|
|
player.Select_Object(vader)
|
|
--Story_Event("M1_FLASH_VADER_FORCEPUSH_GO")
|
|
else
|
|
--MessageBox("no vader...cannot select him")
|
|
end
|
|
|
|
flag_delay_fudge = true
|
|
|
|
end
|
|
end
|
|
|
|
function State_Vader_Hint_02_ForceCrush(message)
|
|
if message == OnEnter then
|
|
-- this is the Vader hint about using force crush against vehicles
|
|
-- reveal area around first tank here
|
|
--MessageBox("vader hint 02 lua callback hit")
|
|
tankpos = Find_First_Object("STORY_TRIGGER_ZONE_07")
|
|
forcecrush_reveal = FogOfWar.Reveal(player, tankpos, 200, 200)
|
|
forcepush_reveal.Undo_Reveal()
|
|
|
|
if TestValid(vader) then
|
|
player.Select_Object(vader)
|
|
--Story_Event("M1_FLASH_VADER_FORCECRUSH_GO")
|
|
else
|
|
--MessageBox("no vader...cannot select him")
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
function State_Empire_M02_Build_Pad_Info_00(message)
|
|
if message == OnEnter then
|
|
forcecrush_reveal.Undo_Reveal()
|
|
end
|
|
end
|
|
|
|
function State_Comm_Center_Info_00(message)
|
|
if message == OnEnter then
|
|
--MessageBox("player is at the comm center goto mini cinematic")
|
|
commcenter = Find_First_Object("UPLINK_STATION_ABANDONED")
|
|
if not commcenter then
|
|
MessageBox("cinematic Can't find commcenter!!!")
|
|
return
|
|
end
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
|
|
Start_Cinematic_Camera()
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(commcenter, 500, 12, 0, 1, 0, 0, 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(commcenter, 0, 0, 0, 0, 0, 0, 0)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(commcenter, 4, 400, 12, 45, 1, 0, 0, 0)
|
|
comm_reveal = FogOfWar.Reveal(player, commcenter, 400, 400)
|
|
Sleep(4)
|
|
|
|
closest_unit = Find_Nearest(commcenter, player, true)
|
|
Point_Camera_At(closest_unit)
|
|
|
|
Transition_To_Tactical_Camera(1)
|
|
Letter_Box_Out(1)
|
|
Sleep(1)
|
|
End_Cinematic_Camera()
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
|
|
end
|
|
end
|
|
|
|
function State_Empire_M02_Comm_Center_Destroyed_Lua_Notification(message)
|
|
if message == OnEnter then
|
|
if not flag_mission_over then
|
|
comm_reveal.Undo_Reveal()
|
|
end
|
|
end
|
|
end
|
|
|
|
function State_Shield_Info_00(message)
|
|
if message == OnEnter then
|
|
--MessageBox("player is at the SHIELD WALL goto mini cinematic")
|
|
shieldgen = Find_First_Object("R_GROUND_BASE_SHIELD_SMALL")
|
|
if not shieldgen then
|
|
MessageBox("cinematic Can't find shieldgen!!!")
|
|
return
|
|
end
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
|
|
Start_Cinematic_Camera()
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(shieldgen, 1200, 12, 0, 1, 0, 0, 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(shieldgen, 0, 0, 0, 0, 0, 0, 0)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(shieldgen, 2, 1200, 12, 15, 1, 0, 0, 0)
|
|
Sleep(3)
|
|
|
|
powergen = Find_First_Object("POWER_GENERATOR_R")
|
|
if not powergen then
|
|
MessageBox("cinematic Can't find powergen!!!")
|
|
return
|
|
end
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(powergen, 400, 12, 180, 1, 0, 0, 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(powergen, 0, 0, 0, 0, 0, 0, 0)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(powergen, 2, 200, 12, 180, 1, 0, 0, 0)
|
|
fog_id2 = FogOfWar.Reveal(player, powergen, 200, 200)
|
|
Sleep(2)
|
|
|
|
Fade_Screen_Out(0)
|
|
|
|
closest_unit = Find_Nearest(shieldgen, player, true)
|
|
Point_Camera_At(closest_unit)
|
|
|
|
Transition_To_Tactical_Camera(1)
|
|
Letter_Box_Out(1)
|
|
--Sleep(1)
|
|
End_Cinematic_Camera()
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
Fade_Screen_In(1)
|
|
|
|
|
|
end
|
|
end
|
|
|
|
function State_Power_Generator_01(message)
|
|
if message == OnEnter then
|
|
--jdg disabling via xml...I don't like this one...too jarring/not needed
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
|
|
Start_Cinematic_Camera()
|
|
|
|
powergen = Find_First_Object("POWER_GENERATOR_R")
|
|
if not powergen then
|
|
--MessageBox("cinematic Can't find powergen!!!")
|
|
return
|
|
end
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(powergen, 400, 12, 180, 1, 0, 0, 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(powergen, 0, 0, 0, 0, 0, 0, 0)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(powergen, 3, 200, 12, 180, 1, 0, 0, 0)
|
|
|
|
Sleep(3)
|
|
closest_unit = Find_Nearest(powergen, player, true)
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
|
|
Point_Camera_At(closest_unit)
|
|
|
|
Transition_To_Tactical_Camera(1)
|
|
|
|
Letter_Box_Out(1)
|
|
Sleep(1)
|
|
End_Cinematic_Camera()
|
|
Fade_Screen_In(.5)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
-- ****************************************************************************
|
|
-- Intro Cinematics
|
|
-- ****************************************************************************
|
|
|
|
-- ******************** Opening Cinematic **************************
|
|
function Intro_Cinematic_Text_Crawl()
|
|
|
|
-- Hide Vader for now BROKEN!!
|
|
Hide_Object(vader, 1)
|
|
|
|
-- Create the space skydome at this position
|
|
primary_space_skydome_list = SpawnList(PrimarySkydomeList, space_cinematic_center, empire, false, false)
|
|
cinematic_skydome = primary_space_skydome_list[1]
|
|
|
|
if not TestValid(cinematic_skydome) then
|
|
--MessageBox("Couldn't create cinematic Skydome!!!")
|
|
end
|
|
|
|
cinematic_skydome.Teleport(space_cinematic_center)
|
|
|
|
-- Starts the cinematic camera
|
|
Weather_Audio_Pause(true)
|
|
Start_Cinematic_Camera(false)
|
|
Allow_Localized_SFX(false)
|
|
Enable_Fog(false)
|
|
Set_Cinematic_Camera_Key(cinematic_lua_shuttle_pos, 100, -40, 0, 1, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cinematic_lua_shuttle_pos, 0, 0, -27, 0, 0, 0, 0)
|
|
|
|
-- ************** TEXT CRAWL STARTS HERE ****************************
|
|
-- MessageBox("Starting Bink Movie!!!")
|
|
-- uncomment!! jdg
|
|
Fade_Screen_In(1)
|
|
BlockOnCommand(Play_Bink_Movie("Star_Wars_Intro"))
|
|
|
|
-- MessageBox("Bink Movie done")
|
|
Play_Music("Cinematic_Empire_Intro_Music_Event_2")
|
|
|
|
-- MessageBox("Starting Bink Movie!!!")
|
|
-- uncomment!! jdg
|
|
BlockOnCommand(Play_Bink_Movie("Star_Wars_Intro_Short"))
|
|
-- ************** TEXT CRAWL IS DONE HERE ****************************
|
|
|
|
-- Transition the camera down
|
|
Transition_Cinematic_Camera_Key(cinematic_lua_shuttle_pos, 3, 100, -20, 0, 1, 0, 0, 0)
|
|
|
|
-- Create the cinematic animation
|
|
|
|
Lua_Space_Shuttle_List = SpawnList(SpaceLuaShuttleList, cinematic_lua_shuttle_pos, empire, false, false)
|
|
Lua_Space_Shuttle = Lua_Space_Shuttle_List[1]
|
|
|
|
if not TestValid(Lua_Space_Shuttle) then
|
|
--MessageBox("Couldn't create vaders shuttle in space!!!")
|
|
end
|
|
|
|
-- Bring on the shuttle
|
|
Lua_Space_Shuttle.Hide(true)
|
|
Lua_Space_Shuttle.Teleport(cinematic_lua_shuttle_pos)
|
|
Lua_Space_Shuttle.Face_Immediate(space_cinematic_center)
|
|
Lua_Space_Shuttle.Play_Animation("Cinematic", false, 0)
|
|
Lua_Space_Shuttle.Hide(false)
|
|
|
|
Sleep(12)
|
|
|
|
-- Transition camera toward shuttle to see less of Star Destroyer
|
|
Transition_Cinematic_Camera_Key(cinematic_lua_shuttle_pos, 18, 100, -20, 0, 1, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(cinematic_lua_shuttle_pos, 18, 0, 0, -40, 0, 0, 0, 0)
|
|
|
|
Sleep(11)
|
|
|
|
Fade_Screen_Out(2)
|
|
-- Stop_Bink_Movie()
|
|
Sleep(2)
|
|
cinematic_skydome.Despawn()
|
|
Lua_Space_Shuttle.Despawn()
|
|
Set_Cinematic_Environment(false)
|
|
Enable_Fog(true)
|
|
|
|
-- ******************** THIS IS THE START OF THE LAND PART OF THE CINEMATIC ********************************
|
|
-- Fade in the scene
|
|
|
|
-- Create_Cinematic_Transport(object_type_name, player_id, transport_pos, zangle, phase_mode, anim_delta, idle_time, persist,hint)
|
|
-- TRANSPORT_PHASE_LANDING = 1, TRANSPORT_PHASE_UNLOADING = 2, TRANSPORT_PHASE_LEAVING = 3
|
|
vader_tyderium_shuttle = Create_Cinematic_Transport("Shuttle_Tyderium_Landing", neutral_player.Get_ID(), vadershuttlepos, 180, 1,0.25, 20, 1)
|
|
|
|
if not vader_tyderium_shuttle then
|
|
--MessageBox("Couldn't create vaders shuttle!!!")
|
|
return
|
|
end
|
|
|
|
-- Create_Cinematic_Transport(object_type_name, player_id, transport_pos, zangle, phase_mode, anim_delta, idle_time, persist,hint)
|
|
-- TRANSPORT_PHASE_LANDING = 1, TRANSPORT_PHASE_UNLOADING = 2, TRANSPORT_PHASE_LEAVING = 3
|
|
--
|
|
commander_tyderium_shuttle = Create_Cinematic_Transport("Imperial_Landing_Craft_Landing", player.Get_ID(), commandershuttlepos, 170, 1, 1.0, 8.0, 0)
|
|
|
|
if not commander_tyderium_shuttle then
|
|
--MessageBox("Couldn't create commanders shuttle!!!")
|
|
return
|
|
end
|
|
|
|
Hide_Sub_Object(dialogue_cmdr, 1, "gun");
|
|
Hide_Sub_Object(dialogue_cmdr, 1, "gun_shadow");
|
|
dialogue_cmdr.Turn_To_Face(vader)
|
|
dialogue_cmdr.Play_Animation("Attention", true)
|
|
|
|
-- FIRST CAMERA SHOT **** VIEW VADERS SHUTTLE LANDING ****
|
|
|
|
Sleep(.5)
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(vader_tyderium_shuttle, 200, 5, 275, 1, 0, 0, 0)
|
|
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Target_Key(vader_tyderium_shuttle, 0, 0, 0, 0, vader_tyderium_shuttle, 0, 1)
|
|
|
|
Fade_Screen_In(2)
|
|
Weather_Audio_Pause(false)
|
|
Sleep(2)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj,use_object_rotation,cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(vader_tyderium_shuttle, 5, 240, 4, 275, 1, 0, 0, 0)
|
|
Sleep(4)
|
|
|
|
|
|
-- SECOND CAMERA SHOT **** IMPERIAL COMMANDER CLOSE UP LOOKING STRESSED ****
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(dialogue_cmdr, 40, 25, 45, 1, 0, 0, 0)
|
|
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Target_Key(dialogue_cmdr, 0, 4, 1, 0, dialogue_cmdr, 0, 0)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation,cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(dialogue_cmdr, 5.0, 30, 25, 45, 1, 0, 0, 0)
|
|
|
|
|
|
Sleep(.5)
|
|
|
|
for j, unit in pairs(bikespawn) do
|
|
if TestValid(unit) then
|
|
unit.Move_To(sdest)
|
|
end
|
|
end
|
|
|
|
|
|
Sleep(1.0)
|
|
|
|
-- THIRD CAMERA SHOT **** VADER APPROACHES THE COMMANDER ****
|
|
|
|
Hide_Object(vader, 0)
|
|
Hide_Sub_Object(vader, 1, "lightsaber");
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(vader_dest1, 210, 25, 5, 1, 0, 0, 0)
|
|
|
|
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation,cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(vader_dest1, 5.0, 120, 15, 285, 1, 0, 0, 0)
|
|
|
|
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Target_Key(vader, 0, 0, 0, 0, vader, 0, 0);
|
|
|
|
-- Trigger dialogue sequence
|
|
|
|
-- This will conclude
|
|
current_cinematic_thread = nil
|
|
|
|
Story_Event("M1_INTRO_DIALOGUE_GO")
|
|
|
|
end
|
|
|
|
-- ******************** Commander Starts talking Cinematic **************************
|
|
|
|
function Intro_Cinematic_Commander_Talk_1()
|
|
|
|
dialogue_cmdr.Play_Animation("Talk",false)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation,cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(vader_dest1, 10.0, 170, 15, 290, 1, 0, 0, 0)
|
|
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
-- ******************** Vader Starts talking Cinematic **************************
|
|
|
|
function Intro_Cinematic_Vader_Talk_1()
|
|
|
|
vader.Play_Animation("Talk",false)
|
|
dialogue_cmdr.Play_Animation("Attention", true)
|
|
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
|
|
-- ******************** Commander Starts talking again Cinematic **************************
|
|
|
|
function Intro_Cinematic_Commander_Talk_2()
|
|
|
|
dialogue_cmdr.Play_Animation("Talk", false)
|
|
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
|
|
-- ******************** Vader Starts talking Cinematic **************************
|
|
|
|
function Intro_Cinematic_Vader_Talk_2()
|
|
|
|
--Set_Cinematic_Camera_Key(vader_dest1, 150, 20, 310, 1, 0, 0, 0)
|
|
--Set_Cinematic_Target_Key(vader, -6, 5, 2, 0, vader, 0, 0);
|
|
Transition_Cinematic_Camera_Key(vader_dest1, 10.0, 170, 35, 20, 1, 0, 0, 0)
|
|
vader.Play_Animation("Talk_Gesture",false)
|
|
dialogue_cmdr.Play_Animation("Attention", true)
|
|
|
|
current_cinematic_thread = nil
|
|
end
|
|
|
|
function dialogue_cmdr_moves_to_final_trooper2_loc()
|
|
BlockOnCommand(dialogue_cmdr.Move_To(final_trooper2_loc))
|
|
dialogue_cmdr.Face_Immediate(vader_dest1)
|
|
end
|
|
|
|
|
|
function Intro_Cinematics_End()
|
|
|
|
Create_Thread("dialogue_cmdr_moves_to_final_trooper2_loc")
|
|
|
|
|
|
for j, unit in pairs(bikespawn) do
|
|
if TestValid(unit) then
|
|
unit.Despawn()
|
|
end
|
|
end
|
|
|
|
pad_list = Find_All_Objects_Of_Type("Scout_Trooper_No_Bike")
|
|
for i,unit in pairs(pad_list) do
|
|
unit.Despawn()
|
|
end
|
|
|
|
|
|
-- TRANSISTION THE CINEMATIC CAMERA TO THE POSITION OF THE TACTICAL CAMERA
|
|
Stop_All_Music()
|
|
Resume_Mode_Based_Music()
|
|
-- Set up the tactical camera
|
|
Point_Camera_At(vader)
|
|
|
|
Hide_Sub_Object(vader, 0, "lightsaber");
|
|
Hide_Sub_Object(dialogue_cmdr, 0, "gun");
|
|
Hide_Sub_Object(dialogue_cmdr, 0, "gun_shadow");
|
|
|
|
|
|
-- End the cinetic camera mode
|
|
Allow_Localized_SFX(true)
|
|
|
|
Transition_To_Tactical_Camera(1)
|
|
|
|
-- Wait for the cinematic camera to get to the tactical camera
|
|
Letter_Box_Out(1)
|
|
Sleep(1)
|
|
|
|
End_Cinematic_Camera()
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
fog_id3 = FogOfWar.Reveal(player, vadershuttlepos, 200, 200)
|
|
|
|
Story_Event("M1_START_HINT")
|
|
Story_Event("M1_START_MISSION")
|
|
|
|
current_cinematic_thread = nil
|
|
|
|
-- make sure we make note that the intro cinematic is over by recording it is skipped
|
|
intro_cinematic_skipped = true
|
|
|
|
end
|
|
|
|
function Story_Handle_Esc()
|
|
|
|
if flag_mission_over == false 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 ~= nil then
|
|
Thread.Kill(current_cinematic_thread)
|
|
end
|
|
|
|
Stop_Bink_Movie()
|
|
|
|
-- Make sure vader is in his final position
|
|
|
|
vader.Face_Immediate(vader_dest1)
|
|
vader.Teleport(vader_dest1)
|
|
vader.Hide(false)
|
|
Hide_Sub_Object(vader, 0, "lightsaber");
|
|
Point_Camera_At(vader)
|
|
|
|
-- Make sure the commander is in his final position
|
|
Hide_Sub_Object(dialogue_cmdr, 0, "gun");
|
|
Hide_Sub_Object(dialogue_cmdr, 0, "gun_shadow");
|
|
dialogue_cmdr.Teleport(final_trooper2_loc)
|
|
dialogue_cmdr.Face_Immediate(vader_dest1)
|
|
|
|
-- Make sure vaders shutle is in the proper position
|
|
if TestValid(vader_tyderium_shuttle) then
|
|
vader_tyderium_shuttle.Despawn()
|
|
end
|
|
|
|
-- Create_Cinematic_Transport(object_type_name, player_id, transport_pos, zangle, phase_mode, anim_delta, idle_time, persist,hint)
|
|
-- TRANSPORT_PHASE_LANDING = 1, TRANSPORT_PHASE_UNLOADING = 2, TRANSPORT_PHASE_LEAVING = 3
|
|
vader_tyderium_shuttle = Create_Cinematic_Transport("Shuttle_Tyderium_Landing", player.Get_ID(), vadershuttlepos, 180, 1, 1.0, 20, 1)
|
|
|
|
if not vader_tyderium_shuttle then
|
|
--MessageBox("Couldn't create vaders shuttle!!!")
|
|
return
|
|
end
|
|
|
|
-- Make sure the other shuttle is gone
|
|
if TestValid(commander_tyderium_shuttle) then
|
|
commander_tyderium_shuttle.Despawn()
|
|
end
|
|
|
|
End_Cinematic_Camera()
|
|
|
|
Set_Cinematic_Environment(false)
|
|
Enable_Fog(true)
|
|
|
|
Letter_Box_Out(0)
|
|
fog_id4 = FogOfWar.Reveal(player, vadershuttlepos, 200, 200)
|
|
|
|
for j, unit in pairs(bikespawn) do
|
|
if TestValid(unit) then
|
|
unit.Despawn()
|
|
end
|
|
end
|
|
|
|
|
|
pad_list = Find_All_Objects_Of_Type("Scout_Trooper_No_Bike")
|
|
for i,unit in pairs(pad_list) do
|
|
unit.Despawn()
|
|
end
|
|
|
|
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
Allow_Localized_SFX(true)
|
|
Resume_Mode_Based_Music()
|
|
Weather_Audio_Pause(false)
|
|
-- MLL: Creating a thread, causes a problem if the game is saved.
|
|
--Create_Thread("Fade_Screen_In_After_Esc")
|
|
Fade_Screen_In_After_Esc()
|
|
|
|
end
|
|
end
|
|
|
|
if flag_mission_over == true then
|
|
|
|
if end_cinematic_skipped == false then
|
|
|
|
Fade_Screen_Out(0)
|
|
--Stop_All_Music()
|
|
Stop_All_Speech()
|
|
Remove_All_Text()
|
|
Allow_Localized_SFX(false)
|
|
|
|
end_cinematic_skipped = true
|
|
|
|
if current_cinematic_thread ~= nil then
|
|
Thread.Kill(current_cinematic_thread)
|
|
end
|
|
|
|
if TestValid(gen_cmd) then
|
|
gen_cmd.Despawn()
|
|
end
|
|
|
|
|
|
if TestValid(vader) then
|
|
vader.Despawn()
|
|
end
|
|
|
|
if TestValid(dialogue_cmdr) then
|
|
dialogue_cmdr.Mark_Parent_Mode_Object_For_Death()
|
|
dialogue_cmdr.Despawn()
|
|
end
|
|
|
|
if TestValid(gen_cmd) then
|
|
gen_cmd.Mark_Parent_Mode_Object_For_Death()
|
|
gen_cmd.Despawn()
|
|
end
|
|
|
|
|
|
-- spawn a new vader at the right location
|
|
ref_type = Find_Object_Type("Darth_Vader")
|
|
vaderlist = Spawn_Unit(ref_type, final_vader_end_loc, empire)
|
|
vader = vaderlist[1]
|
|
vader.Prevent_AI_Usage(true)
|
|
vader.In_End_Cinematic(true)
|
|
|
|
-- spawn stormtrooper 1
|
|
if not TestValid(finaltrooper1) then
|
|
stref_type = Find_Object_Type("DIALOGUE_STORMTROOPER")
|
|
finaltrooperlist1 = Spawn_Unit(stref_type, final_trooper1_loc, empire)
|
|
finaltrooper1 = finaltrooperlist1[1]
|
|
finaltrooper1.Prevent_AI_Usage(true)
|
|
finaltrooper1.Mark_Parent_Mode_Object_For_Death()
|
|
end
|
|
|
|
finaltrooper1.In_End_Cinematic(true)
|
|
|
|
-- spawn storm trooper 2
|
|
if not TestValid(finaltrooper2) then
|
|
stref2_type = Find_Object_Type("DIALOGUE_STORMTROOPER")
|
|
finaltrooperlist2 = Spawn_Unit(stref2_type, final_trooper2_loc, empire)
|
|
finaltrooper2 = finaltrooperlist2[1]
|
|
finaltrooper2.Prevent_AI_Usage(true)
|
|
finaltrooper2.Mark_Parent_Mode_Object_For_Death()
|
|
end
|
|
|
|
finaltrooper2.In_End_Cinematic(true)
|
|
|
|
-- Disable the other objects for the final cinematic
|
|
Do_End_Cinematic_Cleanup()
|
|
|
|
-- turn characters to face
|
|
vader.Face_Immediate(finaltrooper2)
|
|
finaltrooper1.Face_Immediate(vader)
|
|
finaltrooper2.Face_Immediate(vader)
|
|
|
|
vader.Play_Animation("Idle",false)
|
|
finaltrooper1.Play_Animation("Idle",false)
|
|
finaltrooper2.Play_Animation("Idle",false)
|
|
|
|
Allow_Localized_SFX(true)
|
|
|
|
Create_Thread("Fade_Screen_In_After_Esc_End")
|
|
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)
|
|
Story_Event("M1_START_HINT")
|
|
Story_Event("M1_START_MISSION")
|
|
|
|
end
|
|
|
|
function Fade_Screen_In_After_Esc_End()
|
|
|
|
Set_Cinematic_Target_Key(final_officer_loc, 0, 0, 5, 0, 0, 0, 0)
|
|
Set_Cinematic_Camera_Key(final_officer_loc, 80, 10, 335, 1, 0, 0, 0)
|
|
Fade_Screen_In(.5)
|
|
Sleep(1)
|
|
Story_Event("M1_FINAL_DONE")
|
|
end
|
|
|
|
|
|
-- ****************************************************************************
|
|
-- End Cinematics
|
|
-- ****************************************************************************
|
|
|
|
|
|
function Start_End_Cinematic()
|
|
|
|
flag_mission_over = true
|
|
|
|
-- lockout player control & AI
|
|
Allow_Localized_SFX(false)
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
|
|
-- Start up the cinematic camera for the end scene shot
|
|
Start_Cinematic_Camera()
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Letter_Box_In(0)
|
|
|
|
-- Despawn relevent units
|
|
|
|
if vader then
|
|
vader.Despawn()
|
|
end
|
|
|
|
if dialogue_cmdr then
|
|
dialogue_cmdr.Despawn()
|
|
end
|
|
|
|
|
|
-- Disable the other objects for the final cinematic
|
|
Do_End_Cinematic_Cleanup()
|
|
|
|
-- Spawn the new end cinematic units
|
|
|
|
-- spawn a new vader at the right location
|
|
|
|
ref_type = Find_Object_Type("Darth_Vader")
|
|
vaderlist = Spawn_Unit(ref_type, final_vader_start_loc, empire)
|
|
vader = vaderlist[1]
|
|
vader.In_End_Cinematic(true)
|
|
|
|
-- spawn commander
|
|
gcref_type = Find_Object_Type("MOV_FIELD_COMMANDER_EMPIRE")
|
|
gencmdlist = Spawn_Unit(gcref_type, final_officer_loc, empire)
|
|
gen_cmd = gencmdlist[1]
|
|
gen_cmd.In_End_Cinematic(true)
|
|
|
|
-- spawn stormtrooper 1
|
|
stref_type = Find_Object_Type("DIALOGUE_STORMTROOPER")
|
|
finaltrooperlist1 = Spawn_Unit(stref_type, final_trooper1_loc, empire)
|
|
finaltrooper1 = finaltrooperlist1[1]
|
|
finaltrooper1.In_End_Cinematic(true)
|
|
|
|
-- spawn storm trooper 2
|
|
stref2_type = Find_Object_Type("DIALOGUE_STORMTROOPER")
|
|
finaltrooperlist2 = Spawn_Unit(stref2_type, final_trooper2_loc, empire)
|
|
finaltrooper2 = finaltrooperlist2[1]
|
|
finaltrooper2.In_End_Cinematic(true)
|
|
|
|
-- Vader commands
|
|
Hide_Sub_Object(vader, 1, "lightsaber");
|
|
vader.Prevent_AI_Usage(true)
|
|
|
|
-- commander commands
|
|
|
|
gen_cmd.Prevent_AI_Usage(true)
|
|
gen_cmd.Mark_Parent_Mode_Object_For_Death()
|
|
Hide_Sub_Object(gen_cmd, 1, "gun");
|
|
Hide_Sub_Object(gen_cmd, 1, "gun_shadow");
|
|
gen_cmd.Turn_To_Face(vader)
|
|
gen_cmd.Play_Animation("Attention", true)
|
|
vader.Face_Immediate(gen_cmd)
|
|
|
|
-- stormtrooper 1 commands
|
|
finaltrooper1.Prevent_AI_Usage(true)
|
|
finaltrooper1.Mark_Parent_Mode_Object_For_Death()
|
|
finaltrooper1.Turn_To_Face(vader)
|
|
|
|
-- storm trooper commands
|
|
finaltrooper2.Prevent_AI_Usage(true)
|
|
finaltrooper2.Mark_Parent_Mode_Object_For_Death()
|
|
finaltrooper2.Turn_To_Face(vader)
|
|
|
|
-- FIRST CAMERA SHOT **** VIEW VADERS SHUTTLE LANDING ****
|
|
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(final_officer_loc, 150, 35,45, 1, 0, 0, 0)
|
|
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Target_Key(final_officer_loc, 0, 0, 5, 0, 0, 0, 0)
|
|
-- set up Vader at the comm array (or what's left of it...)
|
|
|
|
Fade_Screen_In(1)
|
|
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation,cinematic_animation)
|
|
Transition_Cinematic_Camera_Key(final_officer_loc, 10.0, 120, 10, 335, 1, 0, 0, 0)
|
|
vader.Move_To(final_vader_end_loc)
|
|
Sleep(3)
|
|
-- fade up & give the OK to start dialogue
|
|
Story_Event("M1_FINAL_GO")
|
|
|
|
current_cinematic_thread = nil
|
|
end
|
|
|
|
|
|
function End_Cinematic_1()
|
|
|
|
vader.Play_Animation("Choke", false)
|
|
Story_Event("M1_FINAL_DIALOG_02_GO")
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_2()
|
|
|
|
Sleep(.5)
|
|
gen_cmd.Play_Animation("Choke_Die", false)
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_2_End()
|
|
|
|
Story_Event("M1_FINAL_DIALOG_03_GO")
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
|
|
function End_Cinematic_3()
|
|
|
|
vader.Play_Animation("Talk", true)
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_3_End()
|
|
|
|
Story_Event("M1_FINAL_DIALOG_04_GO")
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_4()
|
|
|
|
-- vader.Turn_To_Face(finaltrooper2)
|
|
vader.Play_Animation("Talk", true)
|
|
Transition_Cinematic_Camera_Key(final_officer_loc, 10.0, 120, 10, 335, 1, 0, 0, 0)
|
|
current_cinematic_thread = nil
|
|
|
|
|
|
end
|
|
|
|
function End_Cinematic_4_End()
|
|
|
|
vader.Play_Animation("Idle", false)
|
|
Story_Event("M1_FINAL_DIALOG_05_GO")
|
|
current_cinematic_thread = nil
|
|
gen_cmd.Play_Animation("Cinematic", true)
|
|
|
|
end
|
|
|
|
function End_Cinematic_5()
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(finaltrooper2, 25, 40, 290, 1, 0, 0, 0)
|
|
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Target_Key(finaltrooper2, 0, 0, 12, 0, 0, 0, 0)
|
|
|
|
finaltrooper2.Play_Animation("Talk", false)
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_5_End()
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(vader, 60, 20, 0, 1, 0, 0, 0)
|
|
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Target_Key(vader, 0, 0, 13, 0, 0, 0, 0)
|
|
|
|
-- finaltrooper2.Play_Animation("Idle", false)
|
|
finaltrooper2.Play_Animation("Attention", true)
|
|
Story_Event("M1_FINAL_DIALOG_06_GO")
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_6()
|
|
|
|
Transition_Cinematic_Camera_Key(final_officer_loc, 10, 100, 18, 25, 1, 0, 0, 0)
|
|
|
|
vader.Play_Animation("Talk_Gesture", false)
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_6_End()
|
|
|
|
vader.Play_Animation("Idle", false)
|
|
Story_Event("M1_FINAL_DIALOG_07_GO")
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_7()
|
|
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
function End_Cinematic_7_End()
|
|
|
|
Allow_Localized_SFX(true)
|
|
Story_Event("M1_FINAL_DONE")
|
|
current_cinematic_thread = nil
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- This service occurs outside of the scope of events
|
|
function Story_Mode_Service()
|
|
if flag_powerTurret01_dead and reinforce_pad and not reinforced_already and reinforce_pad.Get_Owner() == player then
|
|
reinforced_already = true
|
|
--MessageBox("reinforce pad captured, reinforcements landing?")
|
|
DropReinforcements()
|
|
end
|
|
|
|
if flag_delay_fudge and not flag_powerTurret01_dead and powerTurret01.Get_Owner() ~= enemy then
|
|
--MessageBox("flag_powerTurret01_dead = true")
|
|
flag_powerTurret01_dead = true
|
|
end
|
|
|
|
end
|