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,729 @@
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Underworld_ActI_M03_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_Underworld_ActI_M03_LAND.lua $
--
-- Original Author: Jeff_Stewart
--
-- $Author: Brian_Hayes $
--
-- $Change: 637819 $
--
-- $DateTime: 2017/03/22 10:16:16 $
--
-- $Revision: #1 $
--
--/////////////////////////////////////////////////////////////////////////////////////////////////
require("JGS_FunctionLib") -- added library of commonly used functions
require("PGSpawnUnits")
require("PGStoryMode")
function Definitions()
StoryModeEvents =
{
Underworld_A01M03_Begin = State_Underworld_A01M03_Begin
}
hutt_defense_team_01 =
{
"Hutt_Soldier_Squad"
}
hutt_defense_team_02 =
{
"Hutt_PLEX_Soldier_Squad"
}
hutt_defense_team_03 =
{
"Hutt_PLEX_Soldier_Squad",
"Hutt_Pod_Walker_Team"
}
hutt_defense_team_04 =
{
"Hutt_Soldier_Squad"
}
hutt_defense_team_05 =
{
"Hutt_Skiff_Team"
}
hutt_assault_team_01 =
{
"Hutt_Swamp_Speeder_Team"
}
hutt_assault_team_02 =
{
"Hutt_Soldier_Squad"
}
hutt_assault_team_03 =
{
"Hutt_Soldier_Squad"
}
end
function State_Underworld_A01M03_Begin(message)
if message == OnEnter then
Initialize_Mission_Variables()
Initialize_Cinematic_Variables()
if TestValid(urai_fen) then
current_cine_id = Create_Thread("CINE_Start_Mission")
end
elseif message == OnUpdate then
if not VictoryStarted and not DefeatStarted then
if not hutts_near_reinforcement and not hutt_midtro_complete then
hutt_midtro_complete = true
cm_uraimove.Cancel_Event_Object_In_Range(Prox_Check_For_Hutts)
Story_Event("MIDTRO_DIALOG_DONE")
end
if DefeatCondition_UraiDead then
DefeatStarted = true
Create_Thread("EndMissionDefeat")
end
local hutt_check = Find_Nearest(ci_urai, hutt_player, true)
if not TestValid(hutt_check) then
VictoryStarted = true
Create_Thread("EndMissionVictory")
end
if midtro_cinematic_done then
hutts_near_reinforcement = false
end
end
end
end
function Initialize_Mission_Variables()
VictoryStarted = false
DefeatStarted = false
DefeatCondition_UraiDead = false
neutral_player = Find_Player("Neutral")
underworld_player = Find_Player("Underworld")
hutt_player = Find_Player("Hutts")
palace = Find_Hint("HUTT_COMMAND_CENTER_PALACE","huttpalace")
hu_infantry1 = Find_Hint("STORY_TRIGGER_ZONE", "hu-infantry1")
hu_infantry2 = Find_Hint("STORY_TRIGGER_ZONE", "hu-infantry2")
hu_infantry3 = Find_Hint("STORY_TRIGGER_ZONE", "hu-infantry3")
hu_guard1 = Find_Hint("STORY_TRIGGER_ZONE", "hu-guard1")
hu_guard2 = Find_Hint("STORY_TRIGGER_ZONE", "hu-guard2")
hu_guard3 = Find_Hint("STORY_TRIGGER_ZONE", "hu-guard3")
hu_point1 = Find_Hint("STORY_TRIGGER_ZONE", "hu-point1")
hu_point2 = Find_Hint("STORY_TRIGGER_ZONE", "hu-point2")
hu_point3 = Find_Hint("STORY_TRIGGER_ZONE", "hu-point3")
hu_point4 = Find_Hint("STORY_TRIGGER_ZONE", "hu-point4")
hu_point5 = Find_Hint("STORY_TRIGGER_ZONE", "hu-point5")
ci_urai = Find_Hint("STORY_TRIGGER_ZONE", "ci-urai")
ci_soldiers1 = Find_Hint("STORY_TRIGGER_ZONE", "ci-soldiers1")
ci_soldiers2 = Find_Hint("STORY_TRIGGER_ZONE", "ci-soldiers2")
ci_rpguys = Find_Hint("STORY_TRIGGER_ZONE", "ci-rpguys")
ci_soldiers1move = Find_Hint("STORY_TRIGGER_ZONE", "ci-soldiers1move")
ci_soldiers2move = Find_Hint("STORY_TRIGGER_ZONE", "ci-soldiers2move")
ci_camera1 = Find_Hint("STORY_TRIGGER_ZONE", "ci-camera1")
ci_uraimove = Find_Hint("STORY_TRIGGER_ZONE", "ci-uraimove")
ci_camera2 = Find_Hint("STORY_TRIGGER_ZONE", "ci-camera2")
ci_mine1 = Find_Hint("STORY_TRIGGER_ZONE", "ci-mine1")
ci_mine2 = Find_Hint("STORY_TRIGGER_ZONE", "ci-mine2")
ci_mine3 = Find_Hint("STORY_TRIGGER_ZONE", "ci-mine3")
ci_mine4 = Find_Hint("STORY_TRIGGER_ZONE", "ci-mine4")
ci_mine5 = Find_Hint("STORY_TRIGGER_ZONE", "ci-mine5")
ci_camera3 = Find_Hint("STORY_TRIGGER_ZONE", "ci-camera3")
ci_bombsound = Find_Hint("STORY_TRIGGER_ZONE", "bombsound")
cm_prox = Find_Hint("STORY_TRIGGER_ZONE", "cm-prox")
cm_uraimove = Find_Hint("STORY_TRIGGER_ZONE", "cm-uraimove")
cm_camera1 = Find_Hint("STORY_TRIGGER_ZONE", "cm-camera1")
cm_hutts1 = Find_Hint("STORY_TRIGGER_ZONE", "cm-hutts1")
cm_hutts2 = Find_Hint("STORY_TRIGGER_ZONE", "cm-hutts2")
cm_hutts3 = Find_Hint("STORY_TRIGGER_ZONE", "cm-hutts3")
cm_hutts4 = Find_Hint("STORY_TRIGGER_ZONE", "cm-hutts4")
cm_hutts5 = Find_Hint("STORY_TRIGGER_ZONE", "cm-hutts5")
cm_camera2 = Find_Hint("STORY_TRIGGER_ZONE", "cm-camera2")
urai_fen = Find_First_Object("URAI_FEN")
urai_soldiers_01_list = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), ci_soldiers1.Get_Position(), underworld_player)
urai_soldiers_01 = urai_soldiers_01_list[1]
urai_soldiers_02_list = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), ci_soldiers2.Get_Position(), underworld_player)
urai_soldiers_02 = urai_soldiers_02_list[1]
local urai_soldiers = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), ci_soldiers1move.Get_Position(), underworld_player)
urai_soldiers = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), ci_camera1.Get_Position(), underworld_player)
urai_soldiers = Spawn_Unit(Find_Object_Type("Underworld_Disruptor_Merc_Squad"), ci_soldiers2move.Get_Position(), underworld_player)
spawn_hutt_speeders = false
midtro_cinematic_done = false
enable_hutt_ai = false
hutts_near_reinforcement = true
hutt_midtro_complete = false
Register_Death_Event(urai_fen, Urai_Fen_Destroyed)
Register_Prox(hu_point4, Prox_Enable_Hutt_AI, 175, underworld_player)
end
function Initialize_Cinematic_Variables()
CINE_Intro_Active = false
kill_prox_active = false
mine1 = nil
mine2 = nil
mine3 = nil
mine4 = nil
mine5 = nil
end
---------------------------------------------------------------------------------
-- COMMON FUNCTIONS
function Prox_Enable_Hutt_AI(prox_obj, trigger_obj)
enable_hutt_ai = false
if TestValid(trigger_obj) then
if trigger_obj.Has_Ability("STEALTH") then
if trigger_obj.Is_Ability_Active("STEALTH") then
trigger_obj.Activate_Ability("STEALTH", false)
enable_hutt_ai = true
end
end
enable_hutt_ai = true
end
if enable_hutt_ai then
prox_obj.Cancel_Event_Object_In_Range(Prox_Enable_Hutt_AI)
hutt_unit_list = Find_All_Objects_Of_Type(hutt_player)
for i,unit in pairs (hutt_unit_list) do
unit.Prevent_AI_Usage(false)
end
end
end
function Urai_Fen_Destroyed()
DefeatCondition_UraiDead = true
end
function Timer_Spawn_Hutt_Defenses()
-- HU_POINT1
local closest_enemy = Find_Nearest(hu_point1, underworld_player, true)
local closest_friend = Find_Nearest(hu_point1, hutt_player, true)
if TestValid(closest_enemy) and TestValid(closest_friend) then
local distance_hu_point1_hutt = hu_point1.Get_Distance(closest_friend)
local distance_hu_point1_under = hu_point1.Get_Distance(closest_enemy)
if distance_hu_point1_hutt > 50 then
if distance_hu_point1_under > 200 then
local hutt_defense_team = SpawnList(hutt_defense_team_01, hu_point1.Get_Position(), hutt_player, false, true)
for i, unit in pairs (hutt_defense_team) do
unit.Guard_Target(hu_point1.Get_Position())
end
end
end
end
-- HU_POINT3
local closest_enemy = Find_Nearest(hu_point3, underworld_player, true)
local closest_friend = Find_Nearest(hu_point3, hutt_player, true)
if TestValid(closest_enemy) and TestValid(closest_friend) then
local distance_hu_point3_hutt = hu_point3.Get_Distance(closest_friend)
local distance_hu_point3_under = hu_point3.Get_Distance(closest_enemy)
if distance_hu_point3_hutt > 50 then
if distance_hu_point3_under > 200 then
local hutt_defense_team = SpawnList(hutt_defense_team_03, hu_point3.Get_Position(), hutt_player, false, true)
for i, unit in pairs (hutt_defense_team) do
unit.Guard_Target(hu_point3.Get_Position())
end
end
end
end
-- HU_POINT4
local closest_enemy = Find_Nearest(hu_point4, underworld_player, true)
local closest_friend = Find_Nearest(hu_point4, hutt_player, true)
if TestValid(closest_enemy) and TestValid(closest_friend) then
local distance_hu_point4_hutt = hu_point4.Get_Distance(closest_friend)
local distance_hu_point4_under = hu_point4.Get_Distance(closest_enemy)
if distance_hu_point4_hutt > 50 then
if distance_hu_point4_under > 200 then
local hutt_defense_team = SpawnList(hutt_defense_team_04, hu_point4.Get_Position(), hutt_player, false, true)
for i, unit in pairs (hutt_defense_team) do
unit.Guard_Target(hu_point4.Get_Position())
end
end
end
end
-- HU_GUARD1
local closest_enemy = Find_Nearest(hu_infantry1, underworld_player, true)
local closest_friend = Find_Nearest(hu_guard1, hutt_player, true)
if TestValid(closest_enemy) and TestValid(closest_friend) then
local distance_hu_guard1_hutt = hu_guard1.Get_Distance(closest_friend)
local distance_hu_guard1_under = hu_infantry1.Get_Distance(closest_enemy)
if distance_hu_guard1_hutt > 50 then
if distance_hu_guard1_under > 200 then
local hutt_defense_team = SpawnList(hutt_defense_team_01, hu_guard1.Get_Position(), hutt_player, false, true)
for i, unit in pairs (hutt_defense_team) do
unit.Guard_Target(hu_guard1.Get_Position())
end
end
end
end
-- HU_GUARD3
local closest_enemy = Find_Nearest(hu_infantry3, underworld_player, true)
local closest_friend = Find_Nearest(hu_guard3, hutt_player, true)
if TestValid(closest_enemy) and TestValid(closest_friend) then
local distance_hu_guard3_hutt = hu_guard3.Get_Distance(closest_friend)
local distance_hu_guard3_under = hu_infantry3.Get_Distance(closest_enemy)
if distance_hu_guard3_hutt > 50 then
if distance_hu_guard3_under > 200 then
local hutt_defense_team = SpawnList(hutt_defense_team_03, hu_guard3.Get_Position(), hutt_player, false, true)
for i, unit in pairs (hutt_defense_team) do
unit.Guard_Target(hu_guard3.Get_Position())
end
end
end
end
end
function Timer_Spawn_Hutt_Assault()
local closest_enemy = Find_Nearest(hu_infantry1, underworld_player, true)
if TestValid(closest_enemy) then
if spawn_hutt_speeders then
local distance_hu_infantry1_under = hu_infantry1.Get_Distance(closest_enemy)
if distance_hu_infantry1_under > 200 then
local hutt_assault_team = SpawnList(hutt_assault_team_01, hu_infantry1.Get_Position(), hutt_player, false, true)
for i, unit in pairs (hutt_assault_team) do
unit.Attack_Move(ci_uraimove.Get_Position())
end
end
end
local distance_hu_infantry2_under = hu_infantry2.Get_Distance(closest_enemy)
if distance_hu_infantry2_under > 200 then
local hutt_assault_team = SpawnList(hutt_assault_team_02, hu_infantry2.Get_Position(), hutt_player, false, true)
for i, unit in pairs (hutt_assault_team) do
unit.Attack_Move(ci_uraimove.Get_Position())
end
end
end
end
function Timer_Spawn_Hutt_Speeders()
spawn_hutt_speeders = true
end
function Prox_Check_For_Hutts(prox_obj, trigger_obj)
hutts_near_reinforcement = true
end
---------------------------------------------------------------------------------
-- MIDTRO CINEMATIC
function Prox_Midtro_Cinematic(prox_obj, trigger_obj)
if trigger_obj == urai_fen then
prox_obj.Cancel_Event_Object_In_Range(Prox_Midtro_Cinematic)
Create_Thread("Midtro_Cinematic")
else
trigger_obj.Take_Damage(10000)
end
end
function Midtro_Cinematic()
if not DefeatStarted then
Cancel_Fast_Forward()
Suspend_AI(1)
Lock_Controls(1)
Fade_Screen_Out(1)
Sleep(1)
Letter_Box_In(0)
Start_Cinematic_Camera()
urai_fen.Teleport_And_Face(cm_prox)
urai_fen.Move_To(cm_uraimove.Get_Position())
urai_fen.Activate_Ability("STEALTH", false)
urai_fen.Prevent_Opportunity_Fire(true)
urai_fen.Make_Invulnerable(true)
urai_fen.Set_Cannot_Be_Killed(true)
Set_Cinematic_Camera_Key(cm_camera1.Get_Position(), 0, 0, 0, 0, 0, 0, 0)
Set_Cinematic_Target_Key(urai_fen, 0, 0, 0, 0, urai_fen, 0, 0)
Fade_Screen_In(2)
Sleep(3)
local hutt_assault_team1 = SpawnList(hutt_assault_team_03, cm_hutts1.Get_Position(), hutt_player, false, true)
for i,unit in pairs (hutt_assault_team1) do
unit.Prevent_Opportunity_Fire(true)
unit.Turn_To_Face(urai_fen)
end
local hutt_assault_team2 = SpawnList(hutt_assault_team_03, cm_hutts2.Get_Position(), hutt_player, false, true)
for i,unit in pairs (hutt_assault_team2) do
unit.Prevent_Opportunity_Fire(true)
unit.Turn_To_Face(urai_fen)
end
Set_Cinematic_Camera_Key(cm_camera2.Get_Position(), 0, 0, 0, 0, 0, 0, 0)
Set_Cinematic_Target_Key(cm_hutts1.Get_Position(), 0, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(cm_hutts2.Get_Position(), 8, 0, 0, 0, 0, 0, 0, 0)
Story_Event("MIDTRO_DIALOG_00")
Sleep(6)
Set_Cinematic_Target_Key(urai_fen, 0, 0, 0, 0, 0, 0, 0, 0)
Story_Event("MIDTRO_DIALOG_01")
Sleep(5)
Transition_To_Tactical_Camera(2)
Letter_Box_Out(1)
Sleep(2)
End_Cinematic_Camera()
Lock_Controls(0)
Suspend_AI(0)
Remove_Radar_Blip("destination")
Register_Prox(cm_uraimove, Prox_Check_For_Hutts, 200, hutt_player)
hutt_unit_list = Find_All_Objects_Of_Type(hutt_player)
for i,unit in pairs (hutt_unit_list) do
unit.Prevent_Opportunity_Fire(false)
end
urai_fen.Prevent_Opportunity_Fire(false)
urai_fen.Make_Invulnerable(false)
urai_fen.Set_Cannot_Be_Killed(false)
midtro_cinematic_done = true
end
end
---------------------------------------------------------------------------------
-- INTRO CINEMATIC
function CINE_Start_Mission()
CINE_Intro_Active = true
Cancel_Fast_Forward()
intro_camera_start = Find_Hint("STORY_TRIGGER_ZONE_00","introcamerastart")
transport_land = Find_Hint("STORY_TRIGGER_ZONE","transportland")
intro_goto = Find_Hint("STORY_TRIGGER_ZONE","introgoto")
intro_spawn = Find_Hint("STORY_TRIGGER_ZONE","introspawn")
Suspend_AI(1)
Lock_Controls(1)
Fade_Screen_Out(0)
Letter_Box_In(0)
Fade_Screen_In(1)
Start_Cinematic_Camera()
transport = Create_Cinematic_Transport("Underworld_Vehicle_Transport_Landing_Saleucami_CIN", underworld_player.Get_ID(), transport_land, 20, 1, .3, 17, 0)
transport.Play_SFX_Event("Unit_Star_Destroyer_Cinematic_Engine_Loop")
Transition_Cinematic_Camera_Key(intro_camera_start, 0, 0, 0, 40, 0, 0, 0, 0)
Set_Cinematic_Target_Key(transport, 0, 0, 0, 0, transport, 0, 1)
--Sleep(2)
Transition_Cinematic_Camera_Key(transport_land, 10, 500, 65, 10, 1, 0, 0, 0)
Sleep(7)
Transition_Cinematic_Target_Key(transport_land, 4, 50, 0, 180, 1, 0, 0, 0)
if TestValid(urai_fen) then
urai_fen.Teleport_And_Face(intro_spawn)
Sleep(1)
urai_fen.Move_To(intro_goto)
end
rp_soldiers0 = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), intro_spawn.Get_Position(), underworld_player)
Sleep(1)
for i,unit in pairs(rp_soldiers0) do
if TestValid(unit) then
--MessageBox("moving units")
unit.Move_To(intro_goto)
end
end
Sleep(1)
rp_soldiers1 = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), intro_spawn.Get_Position(), underworld_player)
Sleep(1)
for i,unit in pairs(rp_soldiers1) do
if TestValid(unit) then
--MessageBox("moving units")
unit.Move_To(intro_goto)
end
end
Allow_Localized_SFX(true)
transport_land.Play_SFX_Event("Saleucami_Attack_Move_00")
Allow_Localized_SFX(false)
Sleep(1)
rp_soldiers2 = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), intro_spawn.Get_Position(), underworld_player)
Sleep(1)
for i,unit in pairs(rp_soldiers2) do
if TestValid(unit) then
--MessageBox("moving units")
unit.Move_To(intro_goto)
end
end
Sleep(1)
rp_soldiers3 = Spawn_Unit(Find_Object_Type("UNDERWORLD_MERC_SQUAD"), intro_spawn.Get_Position(), underworld_player)
Allow_Localized_SFX(true)
transport_land.Play_SFX_Event("Saleucami_Attack_Move_01")
Allow_Localized_SFX(false)
Sleep(8)
for i,unit in pairs(urai_soldiers_01_list) do
if TestValid(unit) then
unit.Attack_Target(palace)
end
end
for i,unit in pairs(urai_soldiers_02_list) do
if TestValid(unit) then
unit.Attack_Target(palace)
end
end
Sleep(2)
Set_Cinematic_Camera_Key(ci_camera1.Get_Position(), 0, 0, 0, 0, 0, 0, 0)
Set_Cinematic_Target_Key(urai_fen, 0, 0, 0, 0, urai_fen, 0, 0)
for i,unit in pairs(rp_soldiers0) do
if TestValid(unit) then
unit.Despawn()
end
end
for i,unit in pairs(rp_soldiers1) do
if TestValid(unit) then
unit.Despawn()
end
end
for i,unit in pairs(rp_soldiers2) do
if TestValid(unit) then
unit.Despawn()
end
end
-- Urai moves up the hill with infantry behind.
urai_fen.Teleport_And_Face(ci_urai)
urai_fen.Move_To(ci_uraimove.Get_Position())
--urai_soldiers_01.Move_To(ci_soldiers1move.Get_Position())
--urai_soldiers_02.Move_To(ci_soldiers2move.Get_Position())
Sleep(1)
Story_Event("INTRO_DIALOG_00")
Sleep(15)
mine1 = Create_Generic_Object("DEMOLITION_BOMB", ci_mine1.Get_Position(), underworld_player)
mine2 = Create_Generic_Object("DEMOLITION_BOMB", ci_mine2.Get_Position(), underworld_player)
mine3 = Create_Generic_Object("DEMOLITION_BOMB", ci_mine3.Get_Position(), underworld_player)
mine4 = Create_Generic_Object("DEMOLITION_BOMB", ci_mine4.Get_Position(), underworld_player)
mine5 = Create_Generic_Object("DEMOLITION_BOMB", ci_mine5.Get_Position(), underworld_player)
Set_Cinematic_Camera_Key(ci_camera2.Get_Position(), 0, 0, 0, 0, 0, 0, 0)
Set_Cinematic_Target_Key(ci_rpguys.Get_Position(), 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Camera_Key(ci_camera2.Get_Position(), 6, 0, 0, 50, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(ci_mine5.Get_Position(), 6, 0, 0, 0, 0, 0, 0, 0)
urai_fen.Teleport_And_Face(ci_uraimove)
Story_Event("INTRO_DIALOG_01")
Sleep(10)
mine1.Take_Damage(10000)
Create_Generic_Object("HUGE_EXPLOSION_LAND", ci_mine1.Get_Position(), underworld_player)
mine1.Despawn()
mine2.Take_Damage(10000)
--Create_Generic_Object("HUGE_EXPLOSION_LAND", ci_mine2.Get_Position(), underworld_player)
mine2.Despawn()
mine3.Take_Damage(10000)
Create_Generic_Object("HUGE_EXPLOSION_LAND", ci_mine3.Get_Position(), underworld_player)
mine3.Despawn()
mine4.Take_Damage(10000)
--Create_Generic_Object("HUGE_EXPLOSION_LAND", ci_mine4.Get_Position(), underworld_player)
mine4.Despawn()
mine5.Take_Damage(10000)
Create_Generic_Object("HUGE_EXPLOSION_LAND", ci_mine5.Get_Position(), underworld_player)
mine5.Despawn()
reinforce_point = Find_All_Objects_With_Hint("entryspot")
reinforce_point[1].Change_Owner(neutral_player)
for i,unit in pairs(rp_soldiers3) do
if TestValid(unit) then
unit.Take_Damage(10000)
end
end
local mine_list = Find_All_Objects_Of_Type("DEMOLITION_BOMB")
for i,unit in pairs (mine_list) do
if TestValid(unit) then
unit.Despawn()
end
end
if TestValid(palace) then
palace.Take_Damage(10000)
end
Create_Thread("M03_Audio_Repeat")
Sleep(3)
Set_Cinematic_Camera_Key(ci_camera3.Get_Position(), 0, 0, 0, 0, 0, 0, 0)
Set_Cinematic_Target_Key(urai_fen.Get_Position(), 0, 0, 10, 0, 0, 0, 0)
kill_prox_active = true
Register_Prox(ci_rpguys, Prox_Kill_Cinematic_Guys, 500, underworld_player)
Register_Timer(Timer_Stop_Killing, 5)
Story_Event("INTRO_DIALOG_02")
Sleep(8)
Create_Thread("IntroCineCleanup")
end
function M03_Audio_Repeat()
ci_camera3.Play_SFX_Event("Unit_Katarn_Building_Bomb_SFX")
Sleep(0.3)
ci_camera3.Play_SFX_Event("Unit_Katarn_Building_Bomb_SFX")
Sleep(0.3)
ci_camera3.Play_SFX_Event("Unit_Katarn_Building_Bomb_SFX")
end
function Story_Handle_Esc()
if CINE_Intro_Active then
CINE_Intro_Active = false
Thread.Kill(current_cine_id)
Create_Thread("IntroCineCleanup")
end
end
function IntroCineCleanup()
current_cine_id = nil
CINE_Intro_Active = false
-- Move all player units to appropriate locations.
urai_fen.Teleport_And_Face(ci_uraimove)
urai_soldiers_01.Move_To(ci_soldiers1move.Get_Position())
urai_soldiers_02.Move_To(ci_soldiers2move.Get_Position())
if not kill_prox_active then
Register_Prox(ci_rpguys, Prox_Kill_Cinematic_Guys, 500, underworld_player)
Register_Timer(Timer_Stop_Killing, 5)
end
Register_Timer(Timer_Spawn_Hutt_Defenses, 5)
Register_Timer(Timer_Spawn_Hutt_Assault, 5)
Register_Timer(Timer_Spawn_Hutt_Speeders, 1)
if TestValid (mine1) then
mine1.Hide(true)
mine1.Despawn()
end
if TestValid (mine2) then
mine2.Hide(true)
mine2.Despawn()
end
if TestValid (mine3) then
mine3.Hide(true)
mine3.Despawn()
end
if TestValid (mine4) then
mine4.Hide(true)
mine4.Despawn()
end
if TestValid (mine5) then
mine5.Hide(true)
mine5.Despawn()
end
local mine_list = Find_All_Objects_Of_Type("DEMOLITION_BOMB")
for i,unit in pairs (mine_list) do
if TestValid(unit) then
unit.Despawn()
end
end
Add_Radar_Blip(cm_uraimove, "destination")
reinforce_point = Find_All_Objects_With_Hint("entryspot")
reinforce_point[1].Change_Owner(neutral_player)
local mine_list = Find_All_Objects_Of_Type("DEMOLITION_BOMB")
for i,unit in pairs (mine_list) do
if TestValid(unit) then
unit.Despawn()
end
end
if TestValid(palace) then
palace.Take_Damage(10000)
end
Stop_All_Music()
Stop_All_Speech()
Remove_All_Text()
Allow_Localized_SFX(true)
Transition_To_Tactical_Camera(2)
Letter_Box_Out(1)
Sleep(2)
End_Cinematic_Camera()
Lock_Controls(0)
Suspend_AI(0)
end
function Prox_Kill_Cinematic_Guys(prox_obj, trigger_obj)
trigger_obj.Take_Damage(10000)
end
function Timer_Stop_Killing()
ci_rpguys.Cancel_Event_Object_In_Range(Prox_Kill_Cinematic_Guys)
Register_Prox(cm_prox, Prox_Midtro_Cinematic, 150, underworld_player)
end
---------------------------------------------------------------------------------
-- VICTORY AND DEFEAT
function EndMissionVictory()
Cancel_Fast_Forward()
Story_Event("UM03_ENDMISSION_VICTORY")
end
function EndMissionDefeat()
Cancel_Fast_Forward()
Story_Event("UM03_ENDMISSION_DEFEAT")
end