Initial commit
This commit is contained in:
655
DATA/SCRIPTS/STORY/STORY_EMPIRE_ACTII_M05_LAND.LUA
Normal file
655
DATA/SCRIPTS/STORY/STORY_EMPIRE_ACTII_M05_LAND.LUA
Normal file
@@ -0,0 +1,655 @@
|
||||
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Empire_ActII_M05_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_ActII_M05_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_A02M05_Cinematic_Start = State_A02M05_Cinematic_Start,
|
||||
Empire_A02M05_Cinematic_End = State_Empire_A02M05_Cinematic_End,
|
||||
Empire_A02M05_Begin = State_Empire_A02M05_Begin,
|
||||
Empire_A02M05_All_Rebel_Destroyed_WIN = State_Empire_A02M05_All_Rebel_Destroyed_WIN,
|
||||
Empire_A02M05_Actual_Win = State_Empire_A02M05_Actual_Win
|
||||
}
|
||||
|
||||
reinforcement_list1 = {
|
||||
"Rebel_Infantry_Squad"
|
||||
,"Rebel_Tank_Buster_Squad"
|
||||
,"Rebel_Light_Tank_Brigade"
|
||||
}
|
||||
|
||||
unarmed_wookie_type_list = {
|
||||
"Kashyyyk_Wookie_War_Party_Unarmed"
|
||||
,"Kashyyyk_Wookie_War_Party_Unarmed"
|
||||
}
|
||||
|
||||
armed_wookie_type_list = {
|
||||
"Kashyyyk_Wookie_War_Party"
|
||||
}
|
||||
|
||||
unarmed_wookie_prisoner_type_list = {
|
||||
"EM6_Captured_Wookies_Party"
|
||||
}
|
||||
|
||||
|
||||
num_reinforcements = 0
|
||||
allowed_reinforcements = 10
|
||||
reinforcement_delay = 90
|
||||
wookie_armed_range = 100
|
||||
enemy_range = 600
|
||||
time_required_to_jailbreak = 30
|
||||
distance_required_to_jailbreak = 200
|
||||
|
||||
prisonprox1 = nil
|
||||
prisonprox3 = nil
|
||||
prisonprox4 = nil
|
||||
prisonprox5 = nil
|
||||
prisonprox6 = nil
|
||||
|
||||
initial_units_spawned = false
|
||||
han_run_away_active = false
|
||||
han_run_away_done = false
|
||||
|
||||
-- For memory pool cleanup hints
|
||||
|
||||
rebel_player = nil
|
||||
unit = nil
|
||||
end
|
||||
|
||||
function State_Empire_A02M05_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)
|
||||
Lock_Controls(1)
|
||||
|
||||
-- Cinematic Hint Marker Definitions
|
||||
|
||||
hanrunaway = Find_Hint("GENERIC_MARKER_LAND", "hanrunaway")
|
||||
runawaycamerastart = Find_Hint("GENERIC_MARKER_LAND", "runawaycamerastart")
|
||||
hanrunawaystart = Find_Hint("GENERIC_MARKER_LAND", "hanrunawaystart")
|
||||
intro_han_start = Find_Hint("GENERIC_MARKER_LAND", "intro-han-start")
|
||||
intro_han_destination = Find_Hint("GENERIC_MARKER_LAND", "intro-han-destination")
|
||||
intro_camera_position_01 = Find_Hint("GENERIC_MARKER_LAND", "intro-camera-position-01")
|
||||
intro_camera_position_02 = Find_Hint("GENERIC_MARKER_LAND", "intro-camera-position-02")
|
||||
intro_camera_position_03 = Find_Hint("GENERIC_MARKER_LAND", "intro-camera-position-03")
|
||||
intro_wookie_spawn = Find_Hint("GENERIC_MARKER_LAND", "intro-wookie-spawn")
|
||||
intro_wookie_destination = Find_Hint("GENERIC_MARKER_LAND", "intro-wookie-destination")
|
||||
|
||||
|
||||
outro_officer_position = Find_Hint("GENERIC_MARKER_LAND", "outro-officer-position")
|
||||
outro_stormtrooper_position = Find_Hint("GENERIC_MARKER_LAND", "outro-stormtrooper-position")
|
||||
outro_camera_position_start = Find_Hint("GENERIC_MARKER_LAND", "outro-camera-position-start")
|
||||
outro_camera_position_end = Find_Hint("GENERIC_MARKER_LAND", "outro-camera-position-end")
|
||||
outro_stormtrooper_move_to_position = Find_Hint("GENERIC_MARKER_LAND", "outro-stormtrooper-move-to-position")
|
||||
outro_guard_01_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-01-start")
|
||||
outro_guard_02_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-02-start")
|
||||
outro_guard_03_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-03-start")
|
||||
outro_guard_04_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-04-start")
|
||||
outro_guard_05_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-05-start")
|
||||
outro_guard_06_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-06-start")
|
||||
outro_guard_07_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-07-start")
|
||||
outro_guard_08_start = Find_Hint("GENERIC_MARKER_LAND", "outro-guard-08-start")
|
||||
outro_wookie_prisoners_01_start = Find_Hint("GENERIC_MARKER_LAND", "outro-wookie-prisoners-01-start")
|
||||
outro_wookie_prisoners_02_start = Find_Hint("GENERIC_MARKER_LAND", "outro-wookie-prisoners-02-start")
|
||||
outro_wookie_prisoners_03_start = Find_Hint("GENERIC_MARKER_LAND", "outro-wookie-prisoners-03-start")
|
||||
outro_wookie_prisoners_04_start = Find_Hint("GENERIC_MARKER_LAND", "outro-wookie-prisoners-04-start")
|
||||
outro_wookie_prisoners_05_start = Find_Hint("GENERIC_MARKER_LAND", "outro-wookie-prisoners-05-start")
|
||||
outro_march_final_position = Find_Hint("GENERIC_MARKER_LAND", "outro-march-final-position")
|
||||
|
||||
|
||||
outro_officer = Find_Object_Type("Generic_Field_Commander_Empire")
|
||||
outro_stormtrooper = Find_Object_Type("Stormtrooper")
|
||||
ref_type = Find_Object_Type("Han_Solo")
|
||||
|
||||
-- Regular Mission Definitions
|
||||
|
||||
han_spawn = Find_Hint("GENERIC_MARKER_LAND", "spawn-han")
|
||||
tree1 = Find_Hint("PATROL_MARKER", "tree1")
|
||||
tree2 = Find_Hint("PATROL_MARKER", "tree2")
|
||||
tree3 = Find_Hint("PATROL_MARKER", "tree3")
|
||||
prison1 = Find_Hint("IMPERIAL_PRISON_KASHYYYK", "1")
|
||||
prison2 = Find_Hint("IMPERIAL_PRISON_KASHYYYK", "2")
|
||||
prison3 = Find_Hint("IMPERIAL_PRISON_KASHYYYK", "3")
|
||||
prison4 = Find_Hint("IMPERIAL_PRISON_KASHYYYK", "4")
|
||||
prison5 = Find_Hint("IMPERIAL_PRISON_KASHYYYK", "5")
|
||||
prison6 = Find_Hint("IMPERIAL_PRISON_KASHYYYK", "6")
|
||||
|
||||
bomb_1 = Find_Hint("PROJ_SPEEDER_BOMB", "bomb1")
|
||||
|
||||
MOV_Prison = Find_Hint("EM6_Prison_Wookies", "destroyedprison")
|
||||
|
||||
if not MOV_Prison then
|
||||
--MessageBox("Can't find destroyed prison marker.")
|
||||
end
|
||||
|
||||
|
||||
player_start = Find_Hint("ATTACKER ENTRY POSITION", "player-start")
|
||||
if not player_start or not han_spawn or not tree1 or not tree2 or not tree3 or not prison1 or not prison2 or not prison3 or not prison4 or not prison5 or not prison6 then
|
||||
--MessageBox("Expected objects not found - aborting")
|
||||
return
|
||||
else
|
||||
rebel_player = Find_Player("Rebel")
|
||||
empire_player = Find_Player("Empire")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function State_A02M05_Cinematic_Start(message)
|
||||
if message == OnEnter then
|
||||
|
||||
new_units = Spawn_Unit(ref_type, intro_han_start, rebel_player)
|
||||
han = new_units[1]
|
||||
han.Mark_Parent_Mode_Object_For_Death()
|
||||
han.Prevent_AI_Usage(true)
|
||||
han.Set_Cannot_Be_Killed(true)
|
||||
-- han.Move_To(intro_han_destination)
|
||||
Point_Camera_At(player_start)
|
||||
Letter_Box_In(0)
|
||||
han.Play_Animation("Cinematic", false,1)
|
||||
bomb_1.Hide(true)
|
||||
Fade_Screen_In(1)
|
||||
|
||||
Start_Cinematic_Camera()
|
||||
Resume_Mode_Based_Music()
|
||||
|
||||
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Transition_Cinematic_Target_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
|
||||
Set_Cinematic_Camera_Key(intro_camera_position_01, 0, 50, 100, 0, 0, 0, 0)
|
||||
Set_Cinematic_Target_Key(intro_han_start, 0, 0, 20, 0, 0, 0, 0)
|
||||
|
||||
Cinematic_Zoom(8,0.95)
|
||||
Sleep (4)
|
||||
bomb_1.Hide(false)
|
||||
Sleep (3.8)
|
||||
han.Move_To(intro_han_destination)
|
||||
|
||||
Transition_Cinematic_Camera_Key(intro_camera_position_01, 5, 0, 35, 60, 0, 0, 0, 0)
|
||||
|
||||
Sleep (3)
|
||||
|
||||
Set_Cinematic_Camera_Key(bomb_1, 100, 40, 280, 1, 0, 0, 0)
|
||||
Set_Cinematic_Target_Key(bomb_1, 0, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
Sleep (.5)
|
||||
Cinematic_Zoom(1,0.4)
|
||||
|
||||
Sleep (1)
|
||||
|
||||
Set_Cinematic_Camera_Key(intro_camera_position_01, 0, 35, 12, 0, 0, 0, 0)
|
||||
Set_Cinematic_Target_Key(intro_han_start, 0, 0, 20, 0, 0, 0, 0)
|
||||
Transition_Cinematic_Camera_Key(intro_camera_position_01, 3, 0, 13, 10, 0, 0, 0, 0)
|
||||
|
||||
Sleep (1)
|
||||
|
||||
explosion = Create_Generic_Object("LARGE_EXPLOSION_LAND", bomb_1.Get_Position(), Find_Player("Neutral"))
|
||||
bomb_1.Despawn()
|
||||
|
||||
Sleep (0.1)
|
||||
prison2.Take_Damage(10000)
|
||||
|
||||
|
||||
Sleep (2)
|
||||
|
||||
han.Teleport(han_spawn)
|
||||
|
||||
|
||||
|
||||
-- Closeup to cinematic Prison ( Elie )
|
||||
|
||||
MOV_Prison.Play_Animation("Cinematic", false)
|
||||
Sleep (.2)
|
||||
|
||||
Set_Cinematic_Camera_Key(MOV_Prison, 250, 8, 165, 1, 0, 0, 0)
|
||||
Set_Cinematic_Target_Key(MOV_Prison, 0, 0, 15, 0, 0, 0, 0)
|
||||
|
||||
Cinematic_Zoom(7.4,0.8)
|
||||
|
||||
Sleep(7.0)
|
||||
Fade_Screen_Out(.5)
|
||||
-- Closeup to cinematic Prison End
|
||||
|
||||
|
||||
wookie_list = SpawnList(unarmed_wookie_type_list, intro_wookie_spawn, rebel_player, false, true)
|
||||
for k, unit in pairs(wookie_list) do
|
||||
unit.Move_To(intro_wookie_destination)
|
||||
end
|
||||
|
||||
Sleep(.5)
|
||||
Fade_Screen_In(1)
|
||||
Set_Cinematic_Camera_Key(intro_han_start, 225, 15, 350, 1, 0, 0, 0)
|
||||
Set_Cinematic_Target_Key(intro_han_start, -50, -50, 0, 0, 0, 0, 0)
|
||||
|
||||
|
||||
MOV_Prison.Despawn()
|
||||
|
||||
Sleep(3)
|
||||
|
||||
Zoom_Camera(1.0, 1)
|
||||
Transition_To_Tactical_Camera(5)
|
||||
|
||||
Sleep(5)
|
||||
|
||||
for k, unit in pairs(wookie_list) do
|
||||
unit.Despawn()
|
||||
end
|
||||
|
||||
|
||||
End_Cinematic_Camera()
|
||||
Letter_Box_Out(.5)
|
||||
Lock_Controls(0)
|
||||
Suspend_AI(0)
|
||||
|
||||
Story_Event("A02M05_INTRO_CINEMATIC_DONE")
|
||||
end
|
||||
end
|
||||
|
||||
function State_Empire_A02M05_Cinematic_End(message)
|
||||
if message == OnEnter then
|
||||
-- Set up proximities for the wookie-arming trees
|
||||
|
||||
Register_Prox(tree1, Tree_Prox, wookie_armed_range, rebel_player)
|
||||
Register_Prox(tree2, Tree_Prox, wookie_armed_range, rebel_player)
|
||||
Register_Prox(tree3, Tree_Prox, wookie_armed_range, rebel_player)
|
||||
|
||||
-- Set up proximities for the imperial prisons to detect empire player
|
||||
|
||||
Register_Prox(prison1, Prison_Prox1, enemy_range, empire_player)
|
||||
Register_Prox(prison3, Prison_Prox3, enemy_range, empire_player)
|
||||
Register_Prox(prison4, Prison_Prox4, enemy_range, empire_player)
|
||||
Register_Prox(prison5, Prison_Prox5, enemy_range, empire_player)
|
||||
Register_Prox(prison6, Prison_Prox6, enemy_range, empire_player)
|
||||
|
||||
-- Set up a recurring timer for Rebel reinforcements to land
|
||||
|
||||
Register_Timer(Timer_Land_Reinforcements, reinforcement_delay)
|
||||
|
||||
initial_units_spawned = true
|
||||
|
||||
Attempt_Prison_Break()
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
function Prison_Prox1()
|
||||
prisonprox1 = 1
|
||||
end
|
||||
|
||||
function Prison_Prox3()
|
||||
prisonprox3 = 1
|
||||
end
|
||||
|
||||
function Prison_Prox4()
|
||||
prisonprox4 = 1
|
||||
end
|
||||
|
||||
function Prison_Prox5()
|
||||
prisonprox5 = 1
|
||||
end
|
||||
|
||||
function Prison_Prox6()
|
||||
prisonprox6 = 1
|
||||
end
|
||||
|
||||
function Release_List_To_AI(list)
|
||||
for j, unit in pairs(list) do
|
||||
unit.Prevent_AI_Usage(false)
|
||||
end
|
||||
end
|
||||
|
||||
function Attempt_Prison_Break()
|
||||
|
||||
-- Move Han to appropriate locations away from Imperial interference if possible.
|
||||
|
||||
if TestValid(han) then
|
||||
if not prisonprox1 and TestValid(prison1) then
|
||||
BlockOnCommand(han.Move_To(prison1))
|
||||
else
|
||||
if not prisonprox3 and TestValid(prison3) then
|
||||
BlockOnCommand(han.Move_To(prison3))
|
||||
else
|
||||
if not prisonprox4 and TestValid(prison4) then
|
||||
BlockOnCommand(han.Move_To(prison4))
|
||||
else
|
||||
if not prisonprox5 and TestValid(prison5)then
|
||||
BlockOnCommand(han.Move_To(prison5))
|
||||
else
|
||||
if not prisonprox6 and TestValid(prison6)then
|
||||
BlockOnCommand(han.Move_To(prison6))
|
||||
else
|
||||
closest_prison = Find_Nearest(han, "IMPERIAL_PRISON_KASHYYYK")
|
||||
if TestValid(closest_prison) then
|
||||
BlockOnCommand(han.Move_To(closest_prison))
|
||||
else
|
||||
han.Prevent_AI_Usage(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Blow up the prison and spawn wookies
|
||||
|
||||
Sleep(time_required_to_jailbreak)
|
||||
|
||||
if TestValid(han) then
|
||||
closest_prison = Find_Nearest(han, "IMPERIAL_PRISON_KASHYYYK")
|
||||
if TestValid(closest_prison) then
|
||||
prison_distance = closest_prison.Get_Distance(han)
|
||||
if prison_distance < distance_required_to_jailbreak then
|
||||
wookie_list = SpawnList(unarmed_wookie_type_list, han.Get_Position(), rebel_player, false, true)
|
||||
closest_treehouse = Find_Nearest(closest_prison, "WOOKIEE_HOUSE")
|
||||
closest_prison.Take_Damage(10000)
|
||||
closest_prison = nil
|
||||
|
||||
if (closest_treehouse) then
|
||||
|
||||
-- Run the Wookies to the treehouse.
|
||||
|
||||
for k, unit in pairs(wookie_list) do
|
||||
unit.Move_To(closest_treehouse)
|
||||
end
|
||||
else
|
||||
|
||||
-- No Wookie trees remain, allow the AI to use the Wookies.
|
||||
|
||||
Release_List_To_AI(wookie_list)
|
||||
end
|
||||
end
|
||||
else
|
||||
han.Prevent_AI_Usage(false)
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
-- On to the next prison
|
||||
|
||||
Attempt_Prison_Break()
|
||||
end
|
||||
end
|
||||
|
||||
function Timer_Land_Reinforcements()
|
||||
num_reinforcements = num_reinforcements + 1
|
||||
ReinforceList(reinforcement_list1, han_spawn, rebel_player, true, true)
|
||||
if num_reinforcements <= allowed_reinforcements then
|
||||
Register_Timer(Timer_Land_Reinforcements, reinforcement_delay)
|
||||
end
|
||||
end
|
||||
|
||||
function Tree_Prox(prox_obj, trigger_obj)
|
||||
if TestValid(trigger_obj) and trigger_obj.Get_Type() == Find_Object_Type("Wookie_Warrior_Unarmed") then
|
||||
wookie_team = trigger_obj.Get_Parent_Object()
|
||||
if TestValid(wookie_team) then
|
||||
|
||||
-- We caught an unarmed wookie. Replace him with an armed wookie and give him to the AI.
|
||||
|
||||
armed_wookie = SpawnList(armed_wookie_type_list, wookie_team, rebel_player, true, true)
|
||||
wookie_team.Despawn()
|
||||
else
|
||||
--MessageBox("invalid parent object")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function State_Empire_A02M05_All_Rebel_Destroyed_WIN(message)
|
||||
if message == OnEnter then
|
||||
|
||||
repeat
|
||||
Sleep(1)
|
||||
until han_run_away_done
|
||||
|
||||
Suspend_AI(1)
|
||||
Lock_Controls(1)
|
||||
Fade_Screen_Out(1)
|
||||
Letter_Box_In(0)
|
||||
|
||||
Do_End_Cinematic_Cleanup()
|
||||
|
||||
-- Spawn all the required cinematic units in the appropriate location and begin their motion
|
||||
|
||||
new_units = Spawn_Unit(outro_officer, outro_officer_position, empire_player)
|
||||
outro_officer_id = new_units[1]
|
||||
outro_officer_id.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_officer_id.Prevent_AI_Usage(true)
|
||||
outro_officer_id.Turn_To_Face(outro_stormtrooper_move_to_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_stormtrooper_position, empire_player)
|
||||
outro_stormtrooper_id00 = new_units[1]
|
||||
outro_stormtrooper_id00.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id00.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id00.Move_To(outro_stormtrooper_move_to_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_01_start, empire_player)
|
||||
outro_stormtrooper_id01 = new_units[1]
|
||||
outro_stormtrooper_id01.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id01.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id01.Move_To(outro_march_final_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_02_start, empire_player)
|
||||
outro_stormtrooper_id02 = new_units[1]
|
||||
outro_stormtrooper_id02.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id02.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id02.Move_To(outro_march_final_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_03_start, empire_player)
|
||||
outro_stormtrooper_id03 = new_units[1]
|
||||
outro_stormtrooper_id03.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id03.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id03.Move_To(outro_march_final_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_04_start, empire_player)
|
||||
outro_stormtrooper_id04 = new_units[1]
|
||||
outro_stormtrooper_id04.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id04.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id04.Move_To(outro_march_final_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_05_start, empire_player)
|
||||
outro_stormtrooper_id05 = new_units[1]
|
||||
outro_stormtrooper_id05.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id05.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id05.Move_To(outro_march_final_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_06_start, empire_player)
|
||||
outro_stormtrooper_id06 = new_units[1]
|
||||
outro_stormtrooper_id06.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id06.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id06.Move_To(outro_march_final_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_07_start, empire_player)
|
||||
outro_stormtrooper_id07 = new_units[1]
|
||||
outro_stormtrooper_id07.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id07.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id07.Move_To(outro_march_final_position)
|
||||
|
||||
new_units = Spawn_Unit(outro_stormtrooper, outro_guard_08_start, empire_player)
|
||||
outro_stormtrooper_id08 = new_units[1]
|
||||
outro_stormtrooper_id08.Mark_Parent_Mode_Object_For_Death()
|
||||
outro_stormtrooper_id08.Prevent_AI_Usage(true)
|
||||
outro_stormtrooper_id08.Move_To(outro_march_final_position)
|
||||
|
||||
wookie_prisoners_01 = SpawnList(unarmed_wookie_prisoner_type_list, outro_wookie_prisoners_01_start, empire_player, true, true)
|
||||
wookie_prisoners_02 = SpawnList(unarmed_wookie_prisoner_type_list, outro_wookie_prisoners_02_start, empire_player, true, true)
|
||||
wookie_prisoners_03 = SpawnList(unarmed_wookie_prisoner_type_list, outro_wookie_prisoners_03_start, empire_player, true, true)
|
||||
wookie_prisoners_04 = SpawnList(unarmed_wookie_prisoner_type_list, outro_wookie_prisoners_04_start, empire_player, true, true)
|
||||
wookie_prisoners_05 = SpawnList(unarmed_wookie_prisoner_type_list, outro_wookie_prisoners_05_start, empire_player, true, true)
|
||||
|
||||
for i,unit in pairs(wookie_prisoners_01) do
|
||||
if TestValid(unit) then
|
||||
unit.Prevent_AI_Usage(true)
|
||||
unit.Move_To(outro_march_final_position)
|
||||
end
|
||||
end
|
||||
|
||||
for i,unit in pairs(wookie_prisoners_02) do
|
||||
if TestValid(unit) then
|
||||
unit.Prevent_AI_Usage(true)
|
||||
unit.Move_To(outro_march_final_position)
|
||||
end
|
||||
end
|
||||
|
||||
for i,unit in pairs(wookie_prisoners_03) do
|
||||
if TestValid(unit) then
|
||||
unit.Prevent_AI_Usage(true)
|
||||
unit.Move_To(outro_march_final_position)
|
||||
end
|
||||
end
|
||||
|
||||
for i,unit in pairs(wookie_prisoners_04) do
|
||||
if TestValid(unit) then
|
||||
unit.Prevent_AI_Usage(true)
|
||||
unit.Move_To(outro_march_final_position)
|
||||
end
|
||||
end
|
||||
|
||||
for i,unit in pairs(wookie_prisoners_05) do
|
||||
if TestValid(unit) then
|
||||
unit.Prevent_AI_Usage(true)
|
||||
unit.Move_To(outro_march_final_position)
|
||||
end
|
||||
end
|
||||
|
||||
Sleep(0.3)
|
||||
Fade_Screen_In(1)
|
||||
Point_Camera_At(outro_officer_position)
|
||||
Start_Cinematic_Camera()
|
||||
|
||||
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Transition_Cinematic_Target_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
|
||||
Set_Cinematic_Camera_Key(outro_camera_position_start, 0, 25, 14, 0, 0, 0, 0)
|
||||
Set_Cinematic_Target_Key(outro_stormtrooper_id00, 0, 0, 0, 1, outro_stormtrooper_id00, 0, 0)
|
||||
|
||||
Sleep(4)
|
||||
|
||||
Story_Event("A02M05_TRIGGER_OUTRO_DIALOG")
|
||||
|
||||
Sleep(1)
|
||||
|
||||
Set_Cinematic_Camera_Key(outro_camera_position_end, 0, 45, 50, 0, 0, 0, 0)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function State_Empire_A02M05_Actual_Win(message)
|
||||
if message == OnEnter then
|
||||
|
||||
Fade_Screen_Out(2)
|
||||
Sleep(2)
|
||||
End_Cinematic_Camera()
|
||||
Letter_Box_Out(0)
|
||||
Lock_Controls(0)
|
||||
Suspend_AI(0)
|
||||
end
|
||||
end
|
||||
|
||||
function Story_Mode_Service()
|
||||
if initial_units_spawned then
|
||||
if not han_run_away_active then
|
||||
if TestValid(han) then
|
||||
if han.Get_Hull() < 0.1 then
|
||||
han_run_away_active = true
|
||||
han.Make_Invulnerable(true)
|
||||
Create_Thread("Han_Run_Away")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Han_Run_Away()
|
||||
if TestValid(han) then
|
||||
Fade_Screen_Out(1)
|
||||
Letter_Box_In(0)
|
||||
Suspend_AI(1)
|
||||
Lock_Controls(1)
|
||||
han.Teleport(hanrunawaystart)
|
||||
|
||||
Story_Event("CUE_HAN_SOLO_ESCAPE_DIALOG")
|
||||
|
||||
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Transition_Cinematic_Camera_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
-- Transition_Cinematic_Target_Key(target_pos, time, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
||||
|
||||
Point_Camera_At(hanrunaway)
|
||||
Start_Cinematic_Camera()
|
||||
Set_Cinematic_Camera_Key(runawaycamerastart, 100, -200, 200, 0, 0, 0, 0)
|
||||
Set_Cinematic_Target_Key(hanrunaway, 0, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
han.Move_To(hanrunaway)
|
||||
Fade_Screen_In(2)
|
||||
|
||||
Transition_Cinematic_Camera_Key(runawaycamerastart, 5, 100, 0, 80, 0, 0, 0, 0)
|
||||
|
||||
Sleep(3)
|
||||
Fade_Screen_Out(2)
|
||||
|
||||
Sleep(3)
|
||||
|
||||
closest_unit = Find_Nearest(hanrunaway, empire_player, true)
|
||||
Point_Camera_At(closest_unit)
|
||||
han.Despawn()
|
||||
Letter_Box_Out(0)
|
||||
Fade_Screen_In(2)
|
||||
Transition_To_Tactical_Camera(1)
|
||||
End_Cinematic_Camera()
|
||||
Suspend_AI(0)
|
||||
Lock_Controls(0)
|
||||
han_run_away_done = true
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user