2342 lines
70 KiB
Lua
2342 lines
70 KiB
Lua
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Underworld_ActIII_M12_SPACE.lua#1 $
|
||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
--
|
||
-- (C) Petroglyph Games, Inc.
|
||
--
|
||
--
|
||
-- ***** ** * *
|
||
-- * ** * * *
|
||
-- * * * * *
|
||
-- * * * * * * * *
|
||
-- * * *** ****** * ** **** *** * * * ***** * ***
|
||
-- * ** * * * ** * ** ** * * * * ** ** ** *
|
||
-- *** ***** * * * * * * * * ** * * * *
|
||
-- * * * * * * * * * * * * * * *
|
||
-- * * * * * * * * * * ** * * * *
|
||
-- * ** * * ** * ** * * ** * * * *
|
||
-- ** **** ** * **** ***** * ** *** * *
|
||
-- * * *
|
||
-- * * *
|
||
-- * * *
|
||
-- * * * *
|
||
-- **** * *
|
||
--
|
||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
-- C O N F I D E N T I A L S O U R C E C O D E -- D O N O T D I S T R I B U T E
|
||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
--
|
||
-- $File: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Underworld_ActIII_M12_SPACE.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()
|
||
bool_skip_intro = false
|
||
|
||
StoryModeEvents =
|
||
{
|
||
Underworld_A03M12_Begin = State_Underworld_A03M12_Begin,
|
||
--UM12_ADD_OBJECTIVE_Defeat_The_Empire = State_UM12_ADD_OBJECTIVE_Defeat_The_Empire,
|
||
UM12_ADD_OBJECTIVE_Defeat_The_Rebels = State_UM12_ADD_OBJECTIVE_Defeat_The_Rebels,
|
||
UM12_DIALOG_Intro_Dialog_Line_01_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_01_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_02_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_02_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_03_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_03_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_04_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_04_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_05_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_05_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_06_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_06_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_07_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_07_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_08_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_08_Remove_Text,
|
||
UM12_DIALOG_Intro_Dialog_Line_09_Remove_Text = State_UM12_DIALOG_Intro_Dialog_Line_09_Remove_Text,
|
||
UM12_Bring_In_SuperStarDestroyer = State_UM12_Bring_In_SuperStarDestroyer,
|
||
UM12_DIALOG_SuperStarDestroyer_Has_Arrived_Remove_Movie = State_UM12_DIALOG_SuperStarDestroyer_Has_Arrived_Remove_Movie,
|
||
UM12_REMOVE_OBJECTIVE_Help_Rebels = State_UM12_REMOVE_OBJECTIVE_Help_Rebels,
|
||
|
||
}
|
||
|
||
rebel_shiptype_list = {
|
||
--"A_WING_SQUADRON",
|
||
--"B-WING_SQUADRON",
|
||
"REBEL_X-WING_SQUADRON",
|
||
--"Y-WING_SQUADRON",
|
||
"CALAMARI_CRUISER",
|
||
"ALLIANCE_ASSAULT_FRIGATE",
|
||
"CORELLIAN_CORVETTE",
|
||
"CORELLIAN_GUNBOAT",
|
||
"MARAUDER_MISSILE_CRUISER",
|
||
"MC30_FRIGATE",
|
||
"NEBULON_B_FRIGATE"
|
||
}
|
||
|
||
|
||
empire_shiptype_list = {
|
||
|
||
"ACCLAMATOR_ASSAULT_SHIP",
|
||
"BROADSIDE_CLASS_CRUISER",
|
||
"INTERDICTOR_CRUISER",
|
||
"STAR_DESTROYER",
|
||
"TARTAN_PATROL_CRUISER",
|
||
"VICTORY_DESTROYER",
|
||
}
|
||
|
||
acclamator_hardpoint_list = {
|
||
"HP_Acclamator_Weapon_FL",
|
||
"HP_Acclamator_Weapon_FR",
|
||
"HP_Acclamator_Weapon_FC",
|
||
"HP_Acclamator_Weapon_BL",
|
||
"HP_Acclamator_Weapon_BR",
|
||
"HP_Acclamator_Weapon_BC",
|
||
"HP_Acclamator_Fighter_Bay"
|
||
}
|
||
|
||
interdictor_hardpoint_list = {
|
||
"HP_Interdictor_Weapon_01",
|
||
"HP_Interdictor_Weapon_02",
|
||
"HP_Interdictor_Weapon_03",
|
||
"HP_Interdictor_Weapon_04",
|
||
"HP_Interdictor_GravWell_01",
|
||
"HP_Interdictor_Shields_01",
|
||
}
|
||
|
||
stardestroyer_hardpoint_list = {
|
||
"HP_Star_Destroyer_Weapon_FL",
|
||
"HP_Star_Destroyer_Weapon_FR",
|
||
"HP_Star_Destroyer_Weapon_BL",
|
||
"HP_Star_Destroyer_Weapon_BR",
|
||
"HP_Star_Destroyer_Weapon_ML",
|
||
"HP_Star_Destroyer_Weapon_MR",
|
||
"HP_Star_Destroyer_Shield_Generator",
|
||
"HP_Star_Destroyer_Tractor_Beam",
|
||
"HP_Star_Destroyer_Fighter_Bay"
|
||
}
|
||
|
||
victory_hardpoint_list = {
|
||
|
||
"HP_Victory_Weapon_01",
|
||
"HP_Victory_Weapon_02",
|
||
"HP_Victory_Weapon_03",
|
||
"HP_Victory_Shields_01",
|
||
"HP_Victory_Fighter_Bay"
|
||
}
|
||
|
||
empire_super_stardestroyer = {}
|
||
|
||
rebel_reinforce_list = {}
|
||
empire_reinforce_list = {}
|
||
rebel_entryflag_list = {}
|
||
|
||
--defining constants here
|
||
const_max_tie_scout_health = 70
|
||
const_max_broadside_health = 650
|
||
const_max_tartan_health = 500
|
||
const_acclamator_popcap_value = 3
|
||
const_broadside_popcap_value = 2
|
||
const_interdictor_popcap_value = 3
|
||
const_stardestroyer_popcap_value = 4
|
||
const_tartan_popcap_value = 2
|
||
const_victorydestroyer_popcap_value = 3
|
||
const_max_popcap = 20
|
||
esc_pressed = false
|
||
|
||
num_current_popcap = 0
|
||
num_shuttles_destroyed = 2
|
||
|
||
--long list of bools
|
||
bool_sy01_hf01_taken = false
|
||
bool_sy01_hf02_taken = false
|
||
bool_sy01_hf03_taken = false
|
||
bool_sy01_hf04_taken = false
|
||
|
||
bool_sy02_hf01_taken = false
|
||
bool_sy02_hf02_taken = false
|
||
|
||
bool_sy03_hf01_taken = false
|
||
bool_sy03_hf02_taken = false
|
||
|
||
bool_sy04_hf01_taken = false
|
||
|
||
bool_sy05_hf01_taken = false
|
||
|
||
bool_sy01_full = false
|
||
bool_sy02_full = false
|
||
bool_sy03_full = false
|
||
bool_sy04_full = false
|
||
bool_sy05_full = false
|
||
|
||
|
||
|
||
bool_shuttle01_being_expended = false
|
||
bool_shuttle02_being_expended = false
|
||
bool_shuttle03_being_expended = false
|
||
bool_capturing_starbase01 = false
|
||
bool_capturing_starbase02 = false
|
||
bool_capturing_starbase03 = false
|
||
bool_capturing_eclipse = false
|
||
bool_eclipse_captured = false
|
||
bool_first_shot_fired = false
|
||
|
||
bool_starbase01_active = true
|
||
bool_starbase02_active = true
|
||
bool_starbase03_active = true
|
||
|
||
bool_rebels_attacking = true
|
||
bool_rebels_are_friends = true
|
||
|
||
bool_okay_to_reinforce_empire = true
|
||
|
||
shuttles_in_use = {}
|
||
starbase_in_use = {}
|
||
escort_list = {}
|
||
escort_location_list = {}
|
||
|
||
uw_reveal = nil
|
||
|
||
end
|
||
|
||
|
||
|
||
|
||
function State_Underworld_A03M12_Begin(message)
|
||
if message == OnEnter then
|
||
JoeMessage("******************************STARTING NEW MISSION******************************")
|
||
--GlobalValue.Set("Allow_AI_Controlled_Fog_Reveal", 0)
|
||
|
||
--player definitions
|
||
neutral_player = Find_Player("Neutral")
|
||
empire_player = Find_Player("Empire")
|
||
rebel_player = Find_Player("Rebel")
|
||
underworld_player = Find_Player("Underworld")
|
||
|
||
uw_reveal = FogOfWar.Reveal_All(underworld_player)
|
||
|
||
underworld_player.Make_Ally(rebel_player)
|
||
rebel_player.Make_Ally(underworld_player)
|
||
|
||
--making the eclipse not a target of opportunity
|
||
eclipse = Find_First_Object("ECLIPSE_SUPER_STAR_DESTROYER")
|
||
eclipse.Change_Owner(empire_player)
|
||
eclipse.Prevent_Opportunity_Fire(true)
|
||
--eclipse.Highlight(true)
|
||
Add_Radar_Blip(eclipse, "eclipse_blip")
|
||
eclipse.Set_Cannot_Be_Killed(true)
|
||
|
||
|
||
--making the shipyards not targets of opportunity
|
||
shipyard_list = Find_All_Objects_Of_Type("EMPIRE_DOCK_DESTROYABLE")
|
||
for i, shipyard in pairs(shipyard_list) do
|
||
shipyard.Prevent_Opportunity_Fire(true)
|
||
end
|
||
|
||
--defining the 3 empire starbases here
|
||
starbase_01 = Find_Hint("UM12_STAR_BASE", "starbase01")
|
||
starbase_02 = Find_Hint("UM12_STAR_BASE", "starbase02")
|
||
starbase_03 = Find_Hint("UM12_STAR_BASE", "starbase03")
|
||
|
||
--##############################################
|
||
rebel_hero = Find_Hint("MILLENNIUM_FALCON", "rebel-hero")
|
||
--cannot be killed until given the objective
|
||
rebel_hero.Set_Cannot_Be_Killed(true)
|
||
rebel_hero.Make_Invulnerable(true)
|
||
rebel_hero.Prevent_AI_Usage(true)
|
||
rebel_hero.Hide(true)
|
||
rebel_hero.Suspend_Locomotor(true)
|
||
|
||
rebel_hero_location = rebel_hero.Get_Position()
|
||
|
||
--defining han's escorts here
|
||
|
||
escort_list[1] = Find_Hint("NEBULON_B_FRIGATE", "escort01")
|
||
escort_list[2] = Find_Hint("NEBULON_B_FRIGATE", "escort02")
|
||
escort_list[3] = Find_Hint("CALAMARI_CRUISER", "escort03")
|
||
escort_list[4] = Find_Hint("CALAMARI_CRUISER", "escort04")
|
||
|
||
escort_location_list[1] = escort_list[1].Get_Position()
|
||
escort_location_list[2] = escort_list[2].Get_Position()
|
||
escort_location_list[3] = escort_list[3].Get_Position()
|
||
escort_location_list[4] = escort_list[4].Get_Position()
|
||
|
||
for i, escort in pairs(escort_list) do
|
||
escort.Set_Cannot_Be_Killed(true)
|
||
escort.Prevent_AI_Usage(true)
|
||
escort.Hide(true)
|
||
escort.Suspend_Locomotor(true)
|
||
end
|
||
|
||
|
||
--entry flag definitions - empire
|
||
entryflag_empire01 = Find_Hint("MARKER_GENERIC_YELLOW", "entryflag-empire01")
|
||
|
||
--entry flag definitions - rebel
|
||
rebel_entryflag_list[1] = Find_Hint("MARKER_GENERIC_GREEN", "entryflag-rebel-starbase01")
|
||
rebel_entryflag_list[2] = Find_Hint("MARKER_GENERIC_GREEN", "entryflag-rebel-starbase02")
|
||
rebel_entryflag_list[3] = Find_Hint("MARKER_GENERIC_GREEN", "entryflag-rebel-starbase03")
|
||
|
||
--shipyard definitions
|
||
shipyard01 = Find_Hint("EMPIRE_DOCK_DESTROYABLE", "shipyard01")
|
||
shipyard02 = Find_Hint("EMPIRE_DOCK_DESTROYABLE", "shipyard02")
|
||
shipyard03 = Find_Hint("EMPIRE_DOCK_DESTROYABLE", "shipyard03")
|
||
shipyard04 = Find_Hint("EMPIRE_DOCK_DESTROYABLE", "shipyard04")
|
||
shipyard05 = Find_Hint("EMPIRE_DOCK_DESTROYABLE", "shipyard05")
|
||
|
||
if not shipyard01 then
|
||
MessageBox("not shipyard01")
|
||
end
|
||
|
||
if not shipyard02 then
|
||
MessageBox("not shipyard02")
|
||
end
|
||
|
||
--healing "bays" definintions
|
||
sy01_healbay01 = Find_Hint("UM12_MARKER_HEALING", "sy01-healbay01")
|
||
sy01_healbay02 = Find_Hint("UM12_MARKER_HEALING", "sy01-healbay02")
|
||
sy01_healbay03 = Find_Hint("UM12_MARKER_HEALING", "sy01-healbay03")
|
||
sy01_healbay04 = Find_Hint("UM12_MARKER_HEALING", "sy01-healbay04")
|
||
|
||
sy02_healbay01 = Find_Hint("UM12_MARKER_HEALING", "sy02-healbay01")
|
||
sy02_healbay02 = Find_Hint("UM12_MARKER_HEALING", "sy02-healbay02")
|
||
|
||
sy03_healbay01 = Find_Hint("UM12_MARKER_HEALING", "sy03-healbay01")
|
||
sy03_healbay02 = Find_Hint("UM12_MARKER_HEALING", "sy03-healbay02")
|
||
|
||
sy04_healbay01 = Find_Hint("UM12_MARKER_HEALING", "sy04-healbay01")
|
||
|
||
sy05_healbay01 = Find_Hint("UM12_MARKER_HEALING", "sy05-healbay01")
|
||
|
||
|
||
--defining "mission critical" units here
|
||
tyber_start_spot = Find_Hint("MARKER_GENERIC_BLUE", "peacebringer-startspot")
|
||
if not TestValid(tyber_start_spot) then
|
||
MessageBox("no tyber_start_spot")
|
||
end
|
||
tyber = Find_First_Object("THE_PEACEBRINGER")
|
||
if TestValid(tyber) then
|
||
tyber.Teleport_And_Face(tyber_start_spot)
|
||
else
|
||
tyber_spawn = Spawn_From_Reinforcement_Pool(Find_Object_Type("Tyber_Zann_Team"), tyber_start_spot, underworld_player)
|
||
tyber = tyber_spawn
|
||
--tyber = Find_First_Object("THE_PEACEBRINGER")
|
||
|
||
if TestValid (tyber) then
|
||
|
||
|
||
tyber.Teleport_And_Face(tyber_start_spot)
|
||
--tyber.Prevent_Opportunity_Fire(true)
|
||
--tyber.Prevent_All_Fire(true)
|
||
--tyber.Set_Cannot_Be_Killed(true)
|
||
else
|
||
--MessageBox("No Tyber!! Fool")
|
||
Spawn_Unit(Find_Object_Type("THE_PEACEBRINGER"), tyber_start_spot, underworld_player)
|
||
tyber = Find_First_Object("THE_PEACEBRINGER")
|
||
tyber.Teleport_And_Face(tyber_start_spot)
|
||
--tyber.Prevent_Opportunity_Fire(true)
|
||
--tyber.Prevent_All_Fire(true)
|
||
--tyber.Set_Cannot_Be_Killed(true)
|
||
end
|
||
end
|
||
|
||
shuttle01 = Find_Hint("UM12_BOARDING_SHUTTLE", "shuttle01")
|
||
shuttle02 = Find_Hint("UNDERWORLD_PIRATE_IPV", "shuttle02")
|
||
shuttle03 = Find_Hint("UNDERWORLD_PIRATE_IPV", "shuttle03")
|
||
|
||
--setting up prox events on the shuttles to track when they reach the
|
||
--eclipse or a starbase
|
||
Register_Prox(shuttle01, PROX_Boarding_Shuttles, 500, empire_player)
|
||
shuttle01.Highlight(true)
|
||
--Register_Prox(shuttle02, PROX_Boarding_Shuttles, 500, empire_player)
|
||
--Register_Prox(shuttle03, PROX_Boarding_Shuttles, 500, empire_player)
|
||
|
||
|
||
--this is a setup for the opening cinematic
|
||
underworld_ship_list = Find_All_Objects_Of_Type(underworld_player)
|
||
for i, underworld_ship in pairs(underworld_ship_list) do
|
||
underworld_ship.Prevent_Opportunity_Fire(true)
|
||
underworld_ship.Prevent_All_Fire(true)
|
||
underworld_ship.Stop()
|
||
end
|
||
|
||
--put pointguards on guard duty
|
||
pointguard_list = Find_All_Objects_With_Hint("pointguard")
|
||
for i, pointguard in pairs(pointguard_list) do
|
||
if TestValid(pointguard) then
|
||
pointguard.Prevent_AI_Usage(true)
|
||
pointguard.Guard_Target(pointguard.Get_Position())
|
||
end
|
||
end
|
||
|
||
|
||
|
||
if bool_skip_intro == false then
|
||
current_cinematic_thread = Create_Thread("Thread_Opening_Cinematic")
|
||
else
|
||
--fill in needed stuff here
|
||
rebel_hero.Hide(false)
|
||
rebel_hero.Prevent_AI_Usage(false)
|
||
rebel_hero.Prevent_Opportunity_Fire(false)
|
||
rebel_hero.Prevent_All_Fire(false)
|
||
rebel_hero.Suspend_Locomotor(false)
|
||
|
||
for i, escort in pairs(escort_list) do
|
||
escort.Set_Cannot_Be_Killed(false)
|
||
escort.Prevent_AI_Usage(false)
|
||
escort.Suspend_Locomotor(false)
|
||
escort.Hide(false)
|
||
escort.Prevent_AI_Usage(false)
|
||
end
|
||
|
||
Point_Camera_At(tyber)
|
||
--MessageBox("A really cool opening cinematic goes here...you'd be super impressed.")
|
||
|
||
Sleep(1)
|
||
End_Cinematic_Camera()
|
||
Letter_Box_Out(1)
|
||
Lock_Controls(0)
|
||
Suspend_AI(0)
|
||
Fade_Screen_In(1)
|
||
Story_Event("UM12_GIVE_STARTING_OBJECTIVES")
|
||
|
||
uw_reveal = FogOfWar.Reveal_All(underworld_player)
|
||
|
||
Create_Thread("Thread_DeathMonitor_TyberZann")
|
||
Create_Thread("Thread_DeathMonitor_BoardingShuttle01")
|
||
--Create_Thread("Thread_DeathMonitor_BoardingShuttle02")
|
||
--Create_Thread("Thread_DeathMonitor_BoardingShuttle03")
|
||
|
||
starbase_01.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_01, "starbase_01_blip")
|
||
starbase_02.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_02, "starbase_02_blip")
|
||
starbase_03.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_03, "starbase_03_blip")
|
||
|
||
Create_Thread("Thread_DeathMonitor_Starbase01")
|
||
Create_Thread("Thread_DeathMonitor_Starbase02")
|
||
Create_Thread("Thread_DeathMonitor_Starbase03")
|
||
Create_Thread("Thread_DeathMonitor_Starbases")
|
||
|
||
Create_Thread("Thread_DeathMonitor_Shipyard01")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard02")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard03")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard04")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard05")
|
||
|
||
|
||
Create_Thread("Thread_Empire_Units_Arrive")
|
||
Create_Thread("Thread_Rebel_Units_Arrive")
|
||
|
||
Sleep(10)
|
||
|
||
Create_Thread("Thread_Give_Opening_Hint")
|
||
|
||
end
|
||
end
|
||
end
|
||
|
||
function Thread_Opening_Cinematic()
|
||
Fade_Screen_Out(0)
|
||
Suspend_AI(1)
|
||
Lock_Controls(1)
|
||
Letter_Box_In(0)
|
||
Start_Cinematic_Camera()
|
||
Cancel_Fast_Forward()
|
||
Sleep(1)
|
||
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_01")
|
||
|
||
--show the eclipse here
|
||
--Point_Camera_At(eclipse)
|
||
intro_camera_start = Find_Hint("MARKER_GENERIC_RED", "intro-camera-start")
|
||
intro_look_start = Find_Hint("MARKER_GENERIC_RED", "introstart")
|
||
intro_camera_move01 = Find_Hint("MARKER_GENERIC_RED", "intro-camera-move01")
|
||
|
||
if not esc_pressed then
|
||
Transition_Cinematic_Camera_Key(intro_camera_start, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
Transition_Cinematic_Target_Key(intro_look_start, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
|
||
Transition_Cinematic_Camera_Key(intro_camera_move01, 10, 0, 0, 0, 0, 0, 0, 0)
|
||
--Transition_Cinematic_Target_Key(intro_camera_move01, 7, 0, 0, 0, 0, 0, 0, 0)
|
||
end
|
||
|
||
--Sleep(1)
|
||
Fade_Screen_In(1)
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_01_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Tyber Zann: That is the most glorious thing I have ever seen, Urai, once we take control of her we will<6C>"
|
||
--TEXT_SPEECH_UW_ACT03_M12_34
|
||
|
||
--do camera stuff here
|
||
--zoom down length of the eclipse to show her off.
|
||
|
||
|
||
|
||
|
||
--cue'ing the line "Urai Fen: Tyber, we are tracking several in-bound fleets!"
|
||
--TEXT_SPEECH_UW_ACT03_M12_35
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_02")
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_02_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Urai Fen: Tyber, we are tracking several in-bound fleets!"
|
||
--TEXT_SPEECH_UW_ACT03_M12_35
|
||
|
||
--cue'ing the line "Tyber Zann: It's probably the remains of the Imperial fleet attempting to repair and regroup here -"
|
||
--TEXT_SPEECH_UW_ACT03_M12_36
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_03")
|
||
Create_Thread("Thread_Empire_Units_Arrive")
|
||
|
||
--Sleep(2)
|
||
|
||
--show an injured imperial fleet coming in
|
||
intro_camera_cut01 = Find_Hint("MARKER_GENERIC_RED", "intro-camera-cut01")
|
||
intro_look_cut01 = Find_Hint("MARKER_GENERIC_YELLOW", "entryflag-empire01")
|
||
intro_camera_cut01_move01 = Find_Hint("MARKER_GENERIC_RED", "intro-camera-cut01-move01")
|
||
|
||
if not esc_pressed then
|
||
Transition_Cinematic_Camera_Key(intro_look_cut01, 0, 800, 15, 75, 1, 0, 0, 0)
|
||
Transition_Cinematic_Target_Key(intro_look_cut01, 0, 0, 0, -100, 0, 0, 0, 0)
|
||
|
||
Transition_Cinematic_Camera_Key(intro_look_cut01, 10, 800, 20, 100, 1, 0, 0, 0)
|
||
end
|
||
|
||
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_03_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Tyber Zann: It's probably the remains of the Imperial fleet attempting to repair and regroup here -"
|
||
--TEXT_SPEECH_UW_ACT03_M12_36
|
||
|
||
|
||
|
||
|
||
--cue'ing the line "Urai Fen: There are multiple Alliance signatures as well. "
|
||
--TEXT_SPEECH_UW_ACT03_M12_37
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_04")
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_04_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Urai Fen: There are multiple Alliance signatures as well."
|
||
--TEXT_SPEECH_UW_ACT03_M12_37
|
||
|
||
--show the rebel commander hyperspacing in near tyber here
|
||
intro_camera_cut02 = Find_Hint("MARKER_GENERIC_RED", "intro-camera-cut02")
|
||
intro_look_cut02 = Find_Hint("MARKER_GENERIC_RED", "intro-look-cut02")
|
||
intro_camera_cut02_move01 = Find_Hint("MARKER_GENERIC_RED", "intro-camera-cut02-move01")
|
||
|
||
if not esc_pressed then
|
||
Transition_Cinematic_Camera_Key(tyber, 0, 1000, 20, 110, 1, 0, 0, 0)
|
||
Transition_Cinematic_Target_Key(intro_look_cut02, 0, 0, 0, -200, 0, 0, 0, 0)
|
||
|
||
Transition_Cinematic_Camera_Key(tyber, 8, 900, 30, 120, 1, 0, 0, 0)
|
||
end
|
||
|
||
|
||
--current_cinematic_thread = nil
|
||
|
||
--rebel_hero.Prevent_AI_Usage(true)
|
||
rebel_hero.Hide(false)
|
||
rebel_hero.Prevent_Opportunity_Fire(true)
|
||
rebel_hero.Prevent_All_Fire(true)
|
||
--rebel_hero.Suspend_Locomotor(false)
|
||
rebel_hero.Cinematic_Hyperspace_In(1)
|
||
|
||
|
||
|
||
|
||
if TestValid(escort_list[1]) then
|
||
escort_list[1].Hide(false)
|
||
escort_list[1].Prevent_Opportunity_Fire(true)
|
||
escort_list[1].Prevent_All_Fire(true)
|
||
escort_list[1].Cinematic_Hyperspace_In(10)
|
||
end
|
||
|
||
if TestValid(escort_list[2]) then
|
||
escort_list[2].Hide(false)
|
||
escort_list[2].Prevent_Opportunity_Fire(true)
|
||
escort_list[2].Prevent_All_Fire(true)
|
||
escort_list[2].Cinematic_Hyperspace_In(30)
|
||
end
|
||
|
||
if TestValid(escort_list[3]) then
|
||
escort_list[3].Hide(false)
|
||
escort_list[3].Prevent_Opportunity_Fire(true)
|
||
escort_list[3].Prevent_All_Fire(true)
|
||
escort_list[3].Cinematic_Hyperspace_In(50)
|
||
end
|
||
|
||
if TestValid(escort_list[4]) then
|
||
escort_list[4].Hide(false)
|
||
escort_list[4].Prevent_Opportunity_Fire(true)
|
||
escort_list[4].Prevent_All_Fire(true)
|
||
escort_list[4].Cinematic_Hyperspace_In(60)
|
||
end
|
||
|
||
--current_cinematic_thread = 1
|
||
|
||
|
||
--Transition_Cinematic_Camera_Key(intro_camera_cut02_move01, 1, 0, 0, 0, 0, 0, 0, 0)
|
||
--Transition_Cinematic_Target_Key(rebel_hero, 1, 0, 0, 0, 0, 0, 0, 0)
|
||
|
||
--Cinematic_Zoom(2, .02)
|
||
|
||
--cue'ing the line "Rebel Commander: Unidentified ships, what is your purpose in this sector?! "
|
||
--TEXT_SPEECH_UW_ACT03_M12_39
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_05")
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_05_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Rebel Commander: Unidentified ships, what is your purpose in this sector?! "
|
||
--TEXT_SPEECH_UW_ACT03_M12_39
|
||
|
||
intro_camera_cut03 = Find_Hint("MARKER_GENERIC_RED", "intro-camera-cut03")
|
||
|
||
--Transition_Cinematic_Camera_Key(intro_camera_cut03, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
--Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
|
||
--back to tyber here
|
||
|
||
|
||
--cue'ing the line "Tyber Zann: We heard of the Alliance's glorious victory at Endor, and have come to help." "
|
||
--TEXT_SPEECH_UW_ACT03_M12_40
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_06")
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_06_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Tyber Zann: We heard of the Alliance's glorious victory at Endor, and have come to help." "
|
||
--TEXT_SPEECH_UW_ACT03_M12_40
|
||
|
||
--close up on rebel commander here
|
||
--rebel_hero.Stop()
|
||
--rebel_hero.Suspend_Locomotor(true)
|
||
|
||
if not esc_pressed then
|
||
rebel_hero.Move_To(tyber)
|
||
Transition_Cinematic_Target_Key(rebel_hero, 3, 0, 0, 0, 0, rebel_hero, 0, 0)
|
||
Transition_Cinematic_Camera_Key(tyber, 8, 900, 50, 120, 1, 0, 0, 0)
|
||
|
||
for i, escort in pairs(escort_list) do
|
||
escort.Stop()
|
||
end
|
||
end
|
||
|
||
hancloseup_cameramove = Find_Hint("MARKER_GENERIC_RED", "han-closeup-cameramove")
|
||
|
||
--Transition_Cinematic_Camera_Key(rebel_hero, 0, 40, 40, 10, 0, 0, 0, 0)
|
||
--Transition_Cinematic_Target_Key(rebel_hero, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
|
||
--Transition_Cinematic_Camera_Key(hancloseup_cameramove, 5, 40, 40, 10, 0, 0, 0, 0)
|
||
|
||
|
||
--cue'ing the line "Rebel Commander: Help us destroy the Eclipse, and you will be well rewarded by the Alliance. "
|
||
--TEXT_SPEECH_UW_ACT03_M12_41
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_07")
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_07_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Rebel Commander: Help us destroy the Eclipse, and you will be well rewarded by the Alliance. "
|
||
--TEXT_SPEECH_UW_ACT03_M12_41
|
||
|
||
--cue'ing the line "Tyber Zann: Looks like there's a few starbases between us and the Eclipse, focus your attacks there."
|
||
--TEXT_SPEECH_UW_ACT03_M12_42
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_08")
|
||
|
||
--flyover of the Imperial starbases here
|
||
--starbase_01
|
||
if not esc_pressed then
|
||
Transition_Cinematic_Camera_Key(starbase_01, 0, 2500, 1200, 50, 0, 0, 0, 0)
|
||
Transition_Cinematic_Target_Key(starbase_01, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
Sleep(0.5)
|
||
starbase_01.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_01, "starbase_01_blip")
|
||
end
|
||
|
||
Sleep(1)
|
||
|
||
if not esc_pressed then
|
||
Transition_Cinematic_Camera_Key(starbase_02, 2, 2500, 1200, 50, 0, 0, 0, 0)
|
||
Transition_Cinematic_Target_Key(starbase_02, 2, 0, 0, 0, 0, 0, 0, 0)
|
||
Sleep(0.5)
|
||
starbase_02.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_02, "starbase_02_blip")
|
||
end
|
||
|
||
Sleep(2)
|
||
|
||
if not esc_pressed then
|
||
Transition_Cinematic_Camera_Key(starbase_03, 2, 2500, 1200, 50, 0, 0, 0, 0)
|
||
Transition_Cinematic_Target_Key(starbase_03, 2, 0, 0, 0, 0, 0, 0, 0)
|
||
Sleep(0.5)
|
||
starbase_03.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_03, "starbase_03_blip")
|
||
end
|
||
|
||
Sleep(1)
|
||
|
||
|
||
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_08_Remove_Text(message)
|
||
if message == OnEnter then
|
||
--just finished the line "Tyber Zann: Looks like there's a few starbases between us and the Eclipse, focus your attacks there."
|
||
--TEXT_SPEECH_UW_ACT03_M12_42
|
||
|
||
--leave cinematic here
|
||
--Fade_Screen_Out(0)
|
||
Suspend_AI(1)
|
||
--Lock_Controls(1)
|
||
Letter_Box_In(0)
|
||
--Start_Cinematic_Camera()
|
||
--Sleep(1)
|
||
|
||
|
||
--cue'ing the line "Rebel Commander: Agreed."
|
||
--TEXT_SPEECH_UW_ACT03_M12_43
|
||
Story_Event("UM12_CUE_INTRO_DIALOG_LINE_09")
|
||
end
|
||
end
|
||
|
||
function State_UM12_DIALOG_Intro_Dialog_Line_09_Remove_Text(message)
|
||
if message == OnEnter then
|
||
Thread.Kill(current_cinematic_thread)
|
||
current_cinematic_thread = nil
|
||
Create_Thread("End_Camera")
|
||
end
|
||
end
|
||
|
||
|
||
function Story_Handle_Esc()
|
||
if current_cinematic_thread ~= nil then
|
||
esc_pressed = true
|
||
Thread.Kill(current_cinematic_thread)
|
||
current_cinematic_thread = nil
|
||
Create_Thread("End_Camera")
|
||
Story_Event("UM12_ESCAPEKEY_PREVENT_INTRO_DIALOG_AI_NOTIFICATION")
|
||
end
|
||
end
|
||
|
||
function End_Camera()
|
||
Stop_All_Music()
|
||
Stop_All_Speech()
|
||
Remove_All_Text()
|
||
|
||
underworld_ship_list = Find_All_Objects_Of_Type(underworld_player)
|
||
for i, underworld_ship in pairs(underworld_ship_list) do
|
||
underworld_ship.Prevent_Opportunity_Fire(false)
|
||
underworld_ship.Prevent_All_Fire(false)
|
||
underworld_ship.Stop()
|
||
end
|
||
|
||
|
||
|
||
|
||
rebel_hero.Despawn()
|
||
|
||
|
||
new_hero_list= Spawn_Unit(Find_Object_Type("MILLENNIUM_FALCON"), rebel_hero_location, rebel_player)
|
||
rebel_hero = new_hero_list[1]
|
||
rebel_hero.Set_Cannot_Be_Killed(true)
|
||
rebel_hero.Make_Invulnerable(true)
|
||
|
||
for i, escort in pairs(escort_list) do
|
||
escort.Despawn()
|
||
--escort.Prevent_AI_Usage(false)
|
||
--escort.Suspend_Locomotor(false)
|
||
--escort.Hide(false)
|
||
--escort.Teleport(escort_location_list[i])
|
||
--Create_Thread("Thread_Rebel_Reinforcement_Orders", escort)
|
||
|
||
--escort.Cinematic_Hyperspace_In(1)
|
||
end
|
||
|
||
escort_list = {}
|
||
|
||
new_escort_list1= Spawn_Unit(Find_Object_Type("NEBULON_B_FRIGATE"), escort_location_list[1], rebel_player)
|
||
escort_list[1] = new_escort_list1[1]
|
||
|
||
new_escort_list2= Spawn_Unit(Find_Object_Type("NEBULON_B_FRIGATE"), escort_location_list[2], rebel_player)
|
||
escort_list[2] = new_escort_list2[1]
|
||
|
||
new_escort_list3= Spawn_Unit(Find_Object_Type("CALAMARI_CRUISER"), escort_location_list[3], rebel_player)
|
||
escort_list[3] = new_escort_list3[1]
|
||
|
||
new_escort_list4= Spawn_Unit(Find_Object_Type("CALAMARI_CRUISER"), escort_location_list[4], rebel_player)
|
||
escort_list[4] = new_escort_list4[1]
|
||
|
||
for i, escort in pairs(escort_list) do
|
||
Create_Thread("Thread_Rebel_Reinforcement_Orders", escort)
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Point_Camera_At(tyber)
|
||
Transition_To_Tactical_Camera(5)
|
||
Sleep(5)
|
||
Lock_Controls(0)
|
||
End_Cinematic_Camera()
|
||
Letter_Box_Out(0)
|
||
Suspend_AI(0)
|
||
|
||
Weather_Audio_Pause(false)
|
||
Allow_Localized_SFX(true)
|
||
Resume_Mode_Based_Music()
|
||
|
||
|
||
Fade_Screen_In(0)
|
||
Transition_To_Tactical_Camera(2)
|
||
Letter_Box_Out(2)
|
||
Sleep(2)
|
||
Lock_Controls(0)
|
||
End_Cinematic_Camera()
|
||
Suspend_AI(0)
|
||
|
||
Story_Event("UM12_GIVE_STARTING_OBJECTIVES")
|
||
|
||
uw_reveal = FogOfWar.Reveal_All(underworld_player)
|
||
|
||
Create_Thread("Thread_DeathMonitor_TyberZann")
|
||
Create_Thread("Thread_DeathMonitor_BoardingShuttle01")
|
||
--Create_Thread("Thread_DeathMonitor_BoardingShuttle02")
|
||
--Create_Thread("Thread_DeathMonitor_BoardingShuttle03")
|
||
|
||
starbase_01.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_01, "starbase_01_blip")
|
||
starbase_02.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_02, "starbase_02_blip")
|
||
starbase_03.Highlight(true, 250)
|
||
Add_Radar_Blip(starbase_03, "starbase_03_blip")
|
||
|
||
Create_Thread("Thread_DeathMonitor_Starbase01")
|
||
Create_Thread("Thread_DeathMonitor_Starbase02")
|
||
Create_Thread("Thread_DeathMonitor_Starbase03")
|
||
Create_Thread("Thread_DeathMonitor_Starbases")
|
||
|
||
Create_Thread("Thread_DeathMonitor_Shipyard01")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard02")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard03")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard04")
|
||
Create_Thread("Thread_DeathMonitor_Shipyard05")
|
||
|
||
|
||
Create_Thread("Thread_Empire_Units_Arrive")
|
||
Create_Thread("Thread_Rebel_Units_Arrive")
|
||
|
||
Sleep(10)
|
||
|
||
Create_Thread("Thread_Give_Opening_Hint")
|
||
|
||
end
|
||
|
||
function Thread_Give_Opening_Hint()
|
||
local flag_hint_01_valid = true
|
||
local flag_hint_02_valid = true
|
||
local flag_hint_03_valid = true
|
||
|
||
while (true) do
|
||
local hint_timer = 60
|
||
local hint_number = GameRandom.Free_Random(2, 3)
|
||
JoeMessage("current hint_number is %d", hint_number)
|
||
--MessageBox("current hint_number is %d", hint_number)
|
||
if hint_number == 1 then
|
||
--check to see if any starbases are still alive and not under your control
|
||
if bool_starbase01_active == true or bool_starbase01_active == true or bool_starbase01_active == true then
|
||
Story_Event("UM12_GIVE_HINT_01_BOARDING_SHUTTLES")
|
||
else
|
||
hint_timer = 1
|
||
flag_hint_01_valid = false
|
||
end
|
||
|
||
|
||
elseif hint_number == 2 then
|
||
--check to see if there are still shipyards
|
||
shipyard_list = Find_All_Objects_Of_Type("EMPIRE_DOCK_DESTROYABLE")
|
||
local flag_all_shipyards_destroyed = true
|
||
for i, shipyard in pairs(shipyard_list) do
|
||
if TestValid(shipyard) then
|
||
flag_all_shipyards_destroyed = false
|
||
end
|
||
end
|
||
|
||
if flag_all_shipyards_destroyed == false then
|
||
Story_Event("UM12_GIVE_HINT_02_EMPIRE_REPAIRING")
|
||
else
|
||
hint_timer = 1
|
||
flag_hint_02_valid = false
|
||
end
|
||
|
||
|
||
|
||
else
|
||
--check to see if player is still friends with rebels
|
||
if bool_rebels_are_friends == true then
|
||
Story_Event("UM12_GIVE_HINT_03_USE_THE_REBELS")
|
||
else
|
||
hint_timer = 1
|
||
flag_hint_03_valid = false
|
||
end
|
||
end
|
||
|
||
if flag_hint_01_valid == false and flag_hint_02_valid == false and flag_hint_03_valid == false then
|
||
break
|
||
end
|
||
|
||
Sleep(hint_timer)
|
||
end
|
||
end
|
||
|
||
|
||
function State_UM12_ADD_OBJECTIVE_Defeat_The_Rebels(message)
|
||
if message == OnEnter then
|
||
--player has been given objective to destroy the rebel hero...mark him
|
||
--and start monitoring his health
|
||
if TestValid(rebel_hero) then
|
||
rebel_hero.Highlight(true)
|
||
Add_Radar_Blip(rebel_hero, "rebel_hero_blip")
|
||
rebel_hero.Set_Cannot_Be_Killed(false)
|
||
rebel_hero.Make_Invulnerable(false)
|
||
|
||
underworld_player.Make_Enemy(rebel_player)
|
||
rebel_player.Make_Enemy(underworld_player)
|
||
|
||
bool_rebels_are_friends = false
|
||
|
||
Create_Thread("Thread_DeathMonitor_RebelHero")
|
||
else
|
||
MessageBox("Cannot find Rebel hero...aborting. Tell Dan Etter immediately")
|
||
end
|
||
end
|
||
end
|
||
|
||
function State_UM12_REMOVE_OBJECTIVE_Help_Rebels(message)
|
||
if message == OnEnter then
|
||
--see if there are still space stations and that you dont control them
|
||
if bool_starbase01_active == true or bool_starbase01_active == true or bool_starbase01_active == true then
|
||
Story_Event("UM12_CHANGE_SPACE_STATION_OBJECTIVE")
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
function State_UM12_Bring_In_SuperStarDestroyer(message)
|
||
if message == OnEnter then
|
||
--MessageBox("Eclipse weapon goes offline here")
|
||
|
||
--make sure there's no attack target
|
||
while eclipse.Has_Attack_Target() == true do
|
||
Sleep(0.25)
|
||
end
|
||
|
||
if TestValid(eclipse) then
|
||
eclipse.Force_Ability_Recharge("SUPER_LASER", 10000.0) --Put the ability on recharge with a 10000 second timer
|
||
end
|
||
|
||
|
||
|
||
Story_Event("UM12_SUPER_STARDESTROYER_ENTERS_STAGE_LEFT")
|
||
Sleep(3)
|
||
--bring in the super-star destroyer now...make it attack the eclipse
|
||
|
||
stardestroyer_list = {
|
||
"STAR_DESTROYER",
|
||
}
|
||
|
||
|
||
entryflag_eclipse01 = Find_Hint("MARKER_GENERIC_YELLOW", "entryflag-eclipse01")
|
||
entryflag_eclipse02 = Find_Hint("MARKER_GENERIC_YELLOW", "entryflag-eclipse02")
|
||
entryflag_eclipse03 = Find_Hint("MARKER_GENERIC_YELLOW", "entryflag-eclipse03")
|
||
|
||
|
||
|
||
ReinforceList(stardestroyer_list, entryflag_eclipse01, empire_player, false, true, true, Callback_Empire_StarDestroyer01_Arrives)
|
||
ReinforceList(stardestroyer_list, entryflag_eclipse02, empire_player, false, true, true, Callback_Empire_StarDestroyer02_Arrives)
|
||
ReinforceList(stardestroyer_list, entryflag_eclipse03, empire_player, false, true, true, Callback_Empire_StarDestroyer03_Arrives)
|
||
|
||
--turning over all pointguards to AI control
|
||
for i, pointguard in pairs(pointguard_list) do
|
||
if TestValid(pointguard) then
|
||
pointguard.Prevent_AI_Usage(false)
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
end
|
||
end
|
||
|
||
|
||
function State_UM12_DIALOG_SuperStarDestroyer_Has_Arrived_Remove_Movie(message)
|
||
if message == OnEnter then
|
||
empire_super_stardestroyer[1] = "UM12_SUPER_STAR_DESTROYER"
|
||
entryflag_eclipse = Find_Hint("MARKER_GENERIC_YELLOW", "entryflag-eclipse")
|
||
ReinforceList(empire_super_stardestroyer, entryflag_eclipse, empire_player, false, true, true, Callback_Empire_SuperStarDestroyer_Arrives)
|
||
--Create_Thread("Thread_Monitor_Eclipse_FiringStatus")
|
||
|
||
Sleep(225)
|
||
Story_Event("UM12_SUPERLASER_COMES_BACK_ONLINE_AI_NOTIFICATION")
|
||
|
||
if TestValid(eclipse) then
|
||
eclipse.Force_Ability_Recharge("SUPER_LASER", 10.0) --Put the ability back to a 10 second timer
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--*******************************************************************************
|
||
--******jdg below are the scripts and stuff to bring in both empire and rebel units during
|
||
--******the mission. There are also scipts to make the "damaged" empire ships dock
|
||
--******at the shipyards, heal, and then go back out and fight.
|
||
--*******************************************************************************
|
||
function Thread_Rebel_Units_Arrive()
|
||
while(bool_rebels_attacking == true) do
|
||
--random pick of how many units in the incoming force
|
||
local num_list_total = GameRandom(3,5)
|
||
|
||
--random pick of group composition
|
||
for i=1,num_list_total do
|
||
rebel_reinforce_list[i] = rebel_shiptype_list[GameRandom(1,6)]
|
||
end
|
||
|
||
--do a quick querry on how many entry locations are currently allowed
|
||
local top_end = 0
|
||
for i, entryflag in pairs(rebel_entryflag_list) do
|
||
top_end = top_end + 1
|
||
end
|
||
--MessageBox("top_end is %d", top_end)
|
||
--random pick of entry location
|
||
local roll_entryflag = GameRandom(1,top_end)
|
||
|
||
if (bool_rebels_attacking == true) then
|
||
if not TestValid(rebel_entryflag_list[roll_entryflag]) then
|
||
MessageBox("cannot find rebel entry flag")
|
||
else
|
||
ReinforceList(rebel_reinforce_list, rebel_entryflag_list[roll_entryflag], rebel_player, false, true, false, Callback_Rebel_Reinforcements)
|
||
end
|
||
end
|
||
Sleep(30)
|
||
end
|
||
end
|
||
|
||
|
||
function Callback_Rebel_Reinforcements(new_list)
|
||
--MessageBox("Callback_Rebel_Reinforcements HIT!")
|
||
Create_Thread("Thread_Rebel_Reinforcements", new_list)
|
||
end
|
||
|
||
function Thread_Rebel_Reinforcements(reinforce_list)
|
||
--MessageBox("Thread_Rebel_Reinforcements HIT!")
|
||
for i, rebel_ship in pairs(reinforce_list) do
|
||
if TestValid(rebel_ship) then
|
||
Create_Thread("Thread_Rebel_Reinforcement_Orders", rebel_ship)
|
||
end
|
||
end
|
||
end
|
||
|
||
function Thread_Rebel_Reinforcement_Orders(rebel_ship)
|
||
|
||
while TestValid(rebel_ship) do
|
||
--JoeMessage("Thread_Rebel_Reinforcement_Orders HIT!")
|
||
|
||
if (bool_rebels_attacking == false) then
|
||
Sleep(1)
|
||
rebel_ship.Hyperspace_Away()
|
||
return
|
||
end
|
||
|
||
if TestValid(eclipse) and eclipse.Get_Owner().Get_Faction_Name() == "UNDERWORLD" then
|
||
if TestValid(eclipse) and TestValid(rebel_ship) then
|
||
rebel_ship.Attack_Target(eclipse)
|
||
rebel_ship.Prevent_AI_Usage(false)
|
||
--JoeMessage("rebel_ship.Attack_Move(eclipse) HIT!")
|
||
break
|
||
end
|
||
|
||
end
|
||
|
||
local my_nearest_starbase = Find_Nearest(rebel_ship, "UM12_STAR_BASE")
|
||
if TestValid(rebel_ship) and TestValid(my_nearest_starbase) then
|
||
rebel_ship.Attack_Target(my_nearest_starbase)
|
||
--JoeMessage("rebel_ship.Attack_Move(my_nearest_starbase) HIT!")
|
||
elseif TestValid(rebel_ship) then
|
||
rebel_ship.Prevent_AI_Usage(false)
|
||
--JoeMessage("rebel_ship.Prevent_AI_Usage(false) HIT!")
|
||
break
|
||
end
|
||
|
||
|
||
Sleep(20)
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
function Thread_Empire_Units_Arrive()
|
||
while(bool_okay_to_reinforce_empire == true) do
|
||
--pick how many units in the incoming force
|
||
local num_list_total = GameRandom(1,2)
|
||
|
||
for i=1,num_list_total do
|
||
empire_reinforce_list[i] = empire_shiptype_list[GameRandom(1,6)]
|
||
end
|
||
|
||
--local num_this_lists_popcap_value = Get_Popcap_Value(empire_reinforce_list)
|
||
|
||
--while ((num_this_lists_popcap_value + num_current_popcap) >= const_max_popcap) do
|
||
-- Sleep (5)
|
||
--end
|
||
|
||
--if ((num_this_lists_popcap_value + num_current_popcap) < const_max_popcap) then
|
||
ReinforceList(empire_reinforce_list, entryflag_empire01, empire_player, false, true, false, Callback_Empire_Ships_Arrive_Damaged)
|
||
-- num_current_popcap = num_current_popcap + num_this_lists_popcap_value
|
||
JoeMessage("new pop count (after reinforcing) is %d", num_current_popcap)
|
||
--else
|
||
-- MessageBox("current pop cap too high, not reinforcing")
|
||
--end
|
||
Sleep(30)
|
||
end
|
||
end
|
||
|
||
function Get_Popcap_Value(reinforce_list)
|
||
local pop_cap_value = 0
|
||
for i, empire_ship in pairs(reinforce_list) do
|
||
if empire_ship == "ACCLAMATOR_ASSAULT_SHIP" then
|
||
pop_cap_value = pop_cap_value + const_acclamator_popcap_value
|
||
|
||
elseif empire_ship == "BROADSIDE_CLASS_CRUISER" then
|
||
pop_cap_value = pop_cap_value + const_broadside_popcap_value
|
||
|
||
elseif empire_ship == "INTERDICTOR_CRUISER" then
|
||
pop_cap_value = pop_cap_value + const_interdictor_popcap_value
|
||
|
||
elseif empire_ship == "STAR_DESTROYER" then
|
||
pop_cap_value = pop_cap_value + const_stardestroyer_popcap_value
|
||
|
||
elseif empire_ship == "TARTAN_PATROL_CRUISER" then
|
||
pop_cap_value = pop_cap_value + const_tartan_popcap_value
|
||
|
||
elseif empire_ship == "VICTORY_DESTROYER" then
|
||
pop_cap_value = pop_cap_value + const_victorydestroyer_popcap_value
|
||
end
|
||
end
|
||
|
||
JoeMessage("current pop_cap_value of incoming empire list is %d", pop_cap_value)
|
||
return pop_cap_value
|
||
end
|
||
|
||
function Callback_Empire_Ships_Arrive_Damaged(new_list)
|
||
Create_Thread("Thread_Empire_Ships_Arrive_Damaged", new_list)
|
||
end
|
||
|
||
function Thread_Empire_Ships_Arrive_Damaged(new_list)
|
||
|
||
for i, empire_ship in pairs(new_list) do
|
||
if TestValid(empire_ship) then
|
||
empire_ship.Set_Cannot_Be_Killed(true)
|
||
if empire_ship.Get_Type().Get_Name() == "ACCLAMATOR_ASSAULT_SHIP" then
|
||
--pick how many hardpoint to destroy
|
||
local number_of_hps_to_destroy = GameRandom(4,7)
|
||
local number_of_hps_destroyed = 0
|
||
|
||
while (number_of_hps_to_destroy > number_of_hps_destroyed) do
|
||
hp_to_destroy = GameRandom(1,7)
|
||
empire_ship.Take_Damage(100000, acclamator_hardpoint_list[hp_to_destroy])
|
||
number_of_hps_destroyed = number_of_hps_destroyed + 1
|
||
end
|
||
|
||
elseif empire_ship.Get_Type().Get_Name() == "BROADSIDE_CLASS_CRUISER" then
|
||
--no hard points need to do something else
|
||
max_health = const_max_broadside_health
|
||
local damage_weight = GameRandom(12,12)
|
||
local damage_amount = max_health * damage_weight * 0.1
|
||
|
||
empire_ship.Take_Damage(damage_amount)
|
||
|
||
elseif empire_ship.Get_Type().Get_Name() == "INTERDICTOR_CRUISER" then
|
||
--pick how many hardpoint to destroy
|
||
local number_of_hps_to_destroy = GameRandom(3,6)
|
||
local number_of_hps_destroyed = 0
|
||
|
||
while (number_of_hps_to_destroy > number_of_hps_destroyed) do
|
||
hp_to_destroy = GameRandom(1,6)
|
||
empire_ship.Take_Damage(100000, interdictor_hardpoint_list[hp_to_destroy])
|
||
number_of_hps_destroyed = number_of_hps_destroyed + 1
|
||
end
|
||
|
||
elseif empire_ship.Get_Type().Get_Name() == "STAR_DESTROYER" then
|
||
--its a stardestroyer, now blow off a few hardpoints
|
||
--pick how many hardpoint to destroy
|
||
local number_of_hps_to_destroy = GameRandom(5,9)
|
||
local number_of_hps_destroyed = 0
|
||
|
||
while (number_of_hps_to_destroy > number_of_hps_destroyed) do
|
||
hp_to_destroy = GameRandom(1,9)
|
||
empire_ship.Take_Damage(100000, stardestroyer_hardpoint_list[hp_to_destroy])
|
||
number_of_hps_destroyed = number_of_hps_destroyed + 1
|
||
end
|
||
|
||
elseif empire_ship.Get_Type().Get_Name() == "TARTAN_PATROL_CRUISER" then
|
||
--no hard points need to do something else
|
||
max_health = const_max_tartan_health
|
||
local damage_weight = GameRandom(22,22)
|
||
local damage_amount = max_health * damage_weight * 0.1
|
||
|
||
empire_ship.Take_Damage(damage_amount)
|
||
|
||
elseif empire_ship.Get_Type().Get_Name() == "VICTORY_DESTROYER" then
|
||
--pick how many hardpoint to destroy
|
||
local number_of_hps_to_destroy = GameRandom(2,5)
|
||
local number_of_hps_destroyed = 0
|
||
|
||
while (number_of_hps_to_destroy > number_of_hps_destroyed) do
|
||
hp_to_destroy = GameRandom(1,5)
|
||
empire_ship.Take_Damage(100000, victory_hardpoint_list[hp_to_destroy])
|
||
number_of_hps_destroyed = number_of_hps_destroyed + 1
|
||
end
|
||
end
|
||
|
||
Create_Thread("Thread_Empire_Ships_Dock_to_Heal", empire_ship)
|
||
--Create_Thread("Thread_PopCap_Death_Monitor", empire_ship)
|
||
end
|
||
|
||
empire_ship.Set_Cannot_Be_Killed(false)
|
||
end
|
||
|
||
empire_reinforce_list = {}
|
||
end
|
||
|
||
function Thread_PopCap_Death_Monitor(empire_ship)
|
||
local deadship_popcap_value = 0
|
||
if TestValid(empire_ship) then
|
||
if empire_ship.Get_Type().Get_Name() == "ACCLAMATOR_ASSAULT_SHIP" then
|
||
deadship_popcap_value = const_acclamator_popcap_value
|
||
elseif empire_ship.Get_Type().Get_Name() == "BROADSIDE_CLASS_CRUISER" then
|
||
deadship_popcap_value = const_broadside_popcap_value
|
||
elseif empire_ship.Get_Type().Get_Name() == "INTERDICTOR_CRUISER" then
|
||
deadship_popcap_value = const_interdictor_popcap_value
|
||
elseif empire_ship.Get_Type().Get_Name() == "STAR_DESTROYER" then
|
||
deadship_popcap_value = const_stardestroyer_popcap_value
|
||
elseif empire_ship.Get_Type().Get_Name() == "TARTAN_PATROL_CRUISER" then
|
||
deadship_popcap_value = const_tartan_popcap_value
|
||
elseif empire_ship.Get_Type().Get_Name() == "VICTORY_DESTROYER" then
|
||
deadship_popcap_value = const_victorydestroyer_popcap_value
|
||
end
|
||
|
||
empire_ship.Set_Cannot_Be_Killed(false)
|
||
|
||
while TestValid(empire_ship) do
|
||
Sleep(3)
|
||
end
|
||
|
||
num_current_popcap = num_current_popcap - deadship_popcap_value
|
||
JoeMessage("empire ship dead, popcap value is %d", deadship_popcap_value)
|
||
JoeMessage("empire ship dead, current popcap value is %d", num_current_popcap)
|
||
end
|
||
|
||
end
|
||
|
||
function Thread_Empire_Ships_Dock_to_Heal(damaged_ship)
|
||
--Sleep(3)
|
||
if TestValid(damaged_ship) then
|
||
if (damaged_ship.Get_Hull() < 1) then
|
||
local bay_number = Find_First_Open_Bay()
|
||
local shipyard_number = nil
|
||
|
||
if bay_number == sy01_healbay01 or bay_number == sy01_healbay02 or
|
||
bay_number == sy01_healbay03 or bay_number == sy01_healbay04 then
|
||
shipyard_number = shipyard01
|
||
elseif bay_nuber == sy02_healbay01 or bay_number == sy02_healbay02 then
|
||
shipyard_number = shipyard02
|
||
elseif bay_number == sy03_healbay01 or bay_number == sy03_healbay02 then
|
||
shipyard_number = shipyard03
|
||
elseif bay_number == sy04_healbay01 then
|
||
shipyard_number = shipyard04
|
||
elseif bay_number == sy05_healbay01 then
|
||
shipyard_number = shipyard05
|
||
end
|
||
|
||
if (bay_number == nil) then
|
||
--there are no open bays...go fight
|
||
damaged_ship.Prevent_AI_Usage(false)
|
||
|
||
elseif TestValid (damaged_ship) then
|
||
damaged_ship.Move_To(bay_number.Get_Position())
|
||
Register_Prox(bay_number, Prox_FAKE_Heal_Big_Ships, 200, damaged_ship)
|
||
|
||
damaged_ship_info_list = {}
|
||
damaged_ship_info_list[1] = damaged_ship
|
||
damaged_ship_info_list[2] = bay_number
|
||
damaged_ship_info_list[3] = shipyard_number
|
||
|
||
Create_Thread("Thread_Monitor_Healing", damaged_ship_info_list)
|
||
|
||
else
|
||
Heal_Bay_Is_Now_Clear(bay_number)
|
||
end
|
||
end
|
||
|
||
end
|
||
end
|
||
|
||
function Prox_FAKE_Heal_Big_Ships(prox_obj, trigger_obj)
|
||
|
||
if trigger_obj.Get_Type().Get_Name() == "ACCLAMATOR_ASSAULT_SHIP"
|
||
or trigger_obj.Get_Type().Get_Name() == "INTERDICTOR_CRUISER"
|
||
or trigger_obj.Get_Type().Get_Name() == "STAR_DESTROYER"
|
||
or trigger_obj.Get_Type().Get_Name() == "VICTORY_DESTROYER" then
|
||
prox_obj.Cancel_Event_Object_In_Range(Prox_FAKE_Heal_Big_Ships)
|
||
|
||
local thread_info = {}
|
||
thread_info[1] = trigger_obj
|
||
thread_info[2] = prox_obj
|
||
Create_Thread("Thread_FAKE_Heal_Big_Ships", thread_info)
|
||
--MessageBox("Prox_FAKE_Heal_Big_Ships hit")
|
||
end
|
||
end
|
||
|
||
function Thread_FAKE_Heal_Big_Ships (thread_info)
|
||
local big_ship = thread_info[1]
|
||
local my_bay_number = thread_info[2]
|
||
if TestValid(big_ship) then
|
||
big_ship.Stop()
|
||
end
|
||
|
||
Sleep(15)
|
||
|
||
if TestValid(big_ship) then
|
||
--MessageBox("Thread_FAKE_Heal_Big_Ships hit")
|
||
local ship_loc = big_ship.Get_Position()
|
||
local healed_ship = Create_Generic_Object(big_ship.Get_Type().Get_Name(),ship_loc,empire_player)
|
||
healed_ship.Teleport_And_Face(big_ship)
|
||
big_ship.Despawn()
|
||
end
|
||
|
||
Heal_Bay_Is_Now_Clear(my_bay_number)
|
||
end
|
||
|
||
function Find_First_Open_Bay()
|
||
|
||
if TestValid(shipyard01) and (bool_sy01_hf01_taken == false) then
|
||
bool_sy01_hf01_taken = true
|
||
JoeMessage("bool_sy01_hf01_taken = true")
|
||
return sy01_healbay01
|
||
elseif TestValid(shipyard01) and (bool_sy01_hf02_taken == false) then
|
||
bool_sy01_hf02_taken = true
|
||
JoeMessage("bool_sy01_hf02_taken = true")
|
||
return sy01_healbay02
|
||
elseif TestValid(shipyard01) and (bool_sy01_hf03_taken == false) then
|
||
bool_sy01_hf03_taken = true
|
||
JoeMessage("bool_sy01_hf03_taken = true")
|
||
return sy01_healbay03
|
||
elseif TestValid(shipyard01) and (bool_sy01_hf04_taken == false) then
|
||
bool_sy01_hf04_taken = true
|
||
JoeMessage("bool_sy01_hf04_taken = true")
|
||
return sy01_healbay04
|
||
elseif TestValid(shipyard02) and (bool_sy02_hf01_taken == false) then
|
||
bool_sy02_hf01_taken = true
|
||
JoeMessage("bool_sy02_hf01_taken = true")
|
||
return sy02_healbay01
|
||
elseif TestValid(shipyard02) and (bool_sy02_hf02_taken == false) then
|
||
bool_sy02_hf02_taken = true
|
||
JoeMessage("bool_sy02_hf02_taken = true")
|
||
return sy02_healbay02
|
||
elseif TestValid(shipyard03) and (bool_sy03_hf01_taken == false) then
|
||
bool_sy03_hf01_taken = true
|
||
JoeMessage("bool_sy03_hf01_taken = true")
|
||
return sy03_healbay01
|
||
elseif TestValid(shipyard03) and (bool_sy03_hf02_taken == false) then
|
||
bool_sy03_hf02_taken = true
|
||
JoeMessage("bool_sy03_hf02_taken = true")
|
||
return sy03_healbay02
|
||
elseif TestValid(shipyard04) and (bool_sy04_hf01_taken == false) then
|
||
bool_sy04_hf01_taken = true
|
||
JoeMessage("bool_sy04_hf01_taken = true")
|
||
return sy04_healbay01
|
||
elseif TestValid(shipyard05) and (bool_sy05_hf01_taken == false) then
|
||
bool_sy05_hf01_taken = true
|
||
JoeMessage("bool_sy05_hf01_taken = true")
|
||
return sy05_healbay01
|
||
else
|
||
--MessageBox("damaged ship cannot find any open healbays")
|
||
JoeMessage("damaged ship cannot find any open healbays")
|
||
return nil
|
||
end
|
||
|
||
end
|
||
|
||
function Thread_Monitor_Healing(info_list)
|
||
|
||
local damaged_ship = info_list[1]
|
||
local my_bay_number = info_list[2]
|
||
local my_shipyard_number = info_list[3]
|
||
|
||
--damaged_ship.Stop()
|
||
while TestValid(damaged_ship) and (damaged_ship.Get_Hull() < 1) do
|
||
if not TestValid(my_shipyard_number) then
|
||
break
|
||
end
|
||
Sleep(1)
|
||
end
|
||
--ship is healed...releasing to the AI
|
||
if TestValid(damaged_ship) then
|
||
damaged_ship.Prevent_AI_Usage(false)
|
||
end
|
||
|
||
--give clearance for next ship to use your healing bay
|
||
if TestValid(my_shipyard_number) then
|
||
Heal_Bay_Is_Now_Clear(my_bay_number)
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
function Heal_Bay_Is_Now_Clear(heal_bay)
|
||
if (heal_bay == sy01_healbay01) then
|
||
bool_sy01_hf01_taken = false
|
||
--MessageBox("bool_sy01_hf01_taken = false")
|
||
JoeMessage("bool_sy01_hf01_taken = false")
|
||
return
|
||
elseif (heal_bay == sy01_healbay02) then
|
||
bool_sy01_hf02_taken = false
|
||
--MessageBox("bool_sy01_hf02_taken = false")
|
||
JoeMessage("bool_sy01_hf02_taken = false")
|
||
return
|
||
elseif (heal_bay == sy01_healbay03) then
|
||
bool_sy01_hf03_taken = false
|
||
--MessageBox("bool_sy01_hf03_taken = false")
|
||
JoeMessage("bool_sy01_hf03_taken = false")
|
||
return
|
||
elseif (heal_bay == sy01_healbay04) then
|
||
bool_sy01_hf04_taken = false
|
||
--MessageBox("bool_sy01_hf04_taken = false")
|
||
JoeMessage("bool_sy01_hf04_taken = false")
|
||
return
|
||
elseif (heal_bay == sy02_healbay01) then
|
||
bool_sy02_hf01_taken = false
|
||
JoeMessage("bool_sy02_hf01_taken = false")
|
||
return
|
||
elseif (heal_bay == sy02_healbay02) then
|
||
bool_sy02_hf02_taken = false
|
||
JoeMessage("bool_sy02_hf02_taken = false")
|
||
return
|
||
elseif (heal_bay == sy03_healbay01) then
|
||
bool_sy03_hf01_taken = false
|
||
JoeMessage("bool_sy03_hf01_taken = false")
|
||
return
|
||
elseif (heal_bay == sy03_healbay02) then
|
||
bool_sy03_hf02_taken = false
|
||
JoeMessage("bool_sy03_hf02_taken = false")
|
||
return
|
||
elseif (heal_bay == sy04_healbay01) then
|
||
bool_sy04_hf01_taken = false
|
||
JoeMessage("bool_sy04_hf01_taken = false")
|
||
return
|
||
elseif (heal_bay == sy05_healbay01) then
|
||
bool_sy05_hf01_taken = false
|
||
JoeMessage("bool_sy05_hf01_taken = false")
|
||
return
|
||
end
|
||
|
||
end
|
||
|
||
--*******************************************************************************
|
||
--******jdg below are the scripts and prox events used to capture/destroy the starbases
|
||
--******and the Eclipse
|
||
--*******************************************************************************
|
||
function PROX_Boarding_Shuttles(prox_obj, trigger_obj)
|
||
--if shuttles_in_use[prox_obj] then
|
||
-- return
|
||
--end
|
||
|
||
--if starbase_in_use[trigger_obj] then
|
||
-- return
|
||
--end
|
||
|
||
--if trigger_obj.Get_Type().Get_Name() == "EMPIRE_STAR_BASE_5" then
|
||
--starbase_in_use[trigger_obj] = true
|
||
--shuttles_in_use[prox_obj] = true
|
||
|
||
|
||
--if trigger_obj == starbase_01 and bool_capturing_starbase01 == true then
|
||
-- return
|
||
--elseif trigger_obj == starbase_01 then
|
||
-- bool_capturing_starbase01 = true
|
||
-- Create_Thread("Thread_Shuttle_Approaching_Starbase01", prox_obj)
|
||
-- prox_obj.Cancel_Event_Object_In_Range(PROX_Boarding_Shuttles)
|
||
-- return
|
||
--end
|
||
|
||
--if trigger_obj == starbase_02 and bool_capturing_starbase02 == true then
|
||
-- return
|
||
--elseif trigger_obj == starbase_02 then
|
||
-- bool_capturing_starbase02 = true
|
||
-- Create_Thread("Thread_Shuttle_Approaching_Starbase02", prox_obj)
|
||
-- prox_obj.Cancel_Event_Object_In_Range(PROX_Boarding_Shuttles)
|
||
-- return
|
||
--end
|
||
|
||
--if trigger_obj == starbase_03 and bool_capturing_starbase03 == true then
|
||
-- return
|
||
--elseif trigger_obj == starbase_03 then
|
||
-- bool_capturing_starbase03 = true
|
||
-- Create_Thread("Thread_Shuttle_Approaching_Starbase03", prox_obj)
|
||
-- prox_obj.Cancel_Event_Object_In_Range(PROX_Boarding_Shuttles)
|
||
-- return
|
||
--end
|
||
|
||
|
||
if trigger_obj.Get_Type().Get_Name() == "ECLIPSE_SUPER_STAR_DESTROYER" then
|
||
|
||
--shuttles_in_use[prox_obj] = true
|
||
|
||
local thread_info = {}
|
||
thread_info[1] = prox_obj
|
||
thread_info[2] = trigger_obj
|
||
if bool_capturing_eclipse == false then
|
||
bool_capturing_eclipse = true
|
||
Create_Thread("Thread_Shuttle_Approaching_Eclipse", thread_info)
|
||
prox_obj.Cancel_Event_Object_In_Range(PROX_Boarding_Shuttles)
|
||
end
|
||
end
|
||
end
|
||
|
||
function Thread_Shuttle_Approaching_Starbase01(shuttle)
|
||
|
||
if shuttle == shuttle01 then
|
||
bool_shuttle01_being_expended = true
|
||
elseif shuttle == shuttle02 then
|
||
bool_shuttle02_being_expended = true
|
||
elseif shuttle == shuttle03 then
|
||
bool_shuttle03_being_expended = true
|
||
end
|
||
|
||
Story_Event("UM12_SHUTTLE_APPROACHING_STARBASE")
|
||
|
||
--set the shuttle invulnerable and send it at the starbase to fake a boarding
|
||
shuttle.Set_Cannot_Be_Killed(true)
|
||
shuttle.Prevent_AI_Usage(true)
|
||
shuttle.Set_Selectable(false)
|
||
shuttle.Move_To(starbase_01)
|
||
Sleep(8)
|
||
shuttle.Despawn()
|
||
|
||
local random_starbase_event = GameRandom(1,2)
|
||
if random_starbase_event == 1 then
|
||
Sleep(10)
|
||
if TestValid(starbase_01) then
|
||
Story_Event("UM12_SHUTTLE_DESTROYS_STARBASE")
|
||
Sleep(5)
|
||
starbase_01.Take_Damage(100000)
|
||
end
|
||
else
|
||
Sleep(10)
|
||
if TestValid(starbase_01) then
|
||
Story_Event("UM12_SHUTTLE_CAPTURES_STARBASE")
|
||
Sleep(2)
|
||
starbase_01.Change_Owner(underworld_player)
|
||
--remove radar blips here
|
||
starbase_01.Highlight(false)
|
||
Remove_Radar_Blip("starbase_01_blip")
|
||
end
|
||
end
|
||
end
|
||
|
||
function Thread_Shuttle_Approaching_Starbase02(shuttle)
|
||
|
||
if shuttle == shuttle01 then
|
||
bool_shuttle01_being_expended = true
|
||
elseif shuttle == shuttle02 then
|
||
bool_shuttle02_being_expended = true
|
||
elseif shuttle == shuttle03 then
|
||
bool_shuttle03_being_expended = true
|
||
end
|
||
|
||
Story_Event("UM12_SHUTTLE_APPROACHING_STARBASE")
|
||
|
||
--set the shuttle invulnerable and send it at the starbase to fake a boarding
|
||
shuttle.Set_Cannot_Be_Killed(true)
|
||
shuttle.Prevent_AI_Usage(true)
|
||
shuttle.Set_Selectable(false)
|
||
shuttle.Move_To(starbase_02)
|
||
Sleep(8)
|
||
shuttle.Despawn()
|
||
|
||
local random_starbase_event = GameRandom(1,2)
|
||
if random_starbase_event == 1 then
|
||
Sleep(10)
|
||
if TestValid(starbase_02) then
|
||
Story_Event("UM12_SHUTTLE_DESTROYS_STARBASE")
|
||
Sleep(5)
|
||
starbase_02.Take_Damage(100000)
|
||
end
|
||
else
|
||
Sleep(10)
|
||
if TestValid(starbase_02) then
|
||
Story_Event("UM12_SHUTTLE_CAPTURES_STARBASE")
|
||
Sleep(2)
|
||
starbase_02.Change_Owner(underworld_player)
|
||
--remove radar blips here
|
||
starbase_02.Highlight(false)
|
||
Remove_Radar_Blip("starbase_02_blip")
|
||
end
|
||
end
|
||
end
|
||
|
||
function Thread_Shuttle_Approaching_Starbase03(shuttle)
|
||
|
||
if shuttle == shuttle01 then
|
||
bool_shuttle01_being_expended = true
|
||
elseif shuttle == shuttle02 then
|
||
bool_shuttle02_being_expended = true
|
||
elseif shuttle == shuttle03 then
|
||
bool_shuttle03_being_expended = true
|
||
end
|
||
|
||
Story_Event("UM12_SHUTTLE_APPROACHING_STARBASE")
|
||
|
||
--set the shuttle invulnerable and send it at the starbase to fake a boarding
|
||
shuttle.Set_Cannot_Be_Killed(true)
|
||
shuttle.Prevent_AI_Usage(true)
|
||
shuttle.Set_Selectable(false)
|
||
shuttle.Move_To(starbase_03)
|
||
Sleep(8)
|
||
shuttle.Despawn()
|
||
|
||
local random_starbase_event = GameRandom(1,2)
|
||
if random_starbase_event == 1 then
|
||
Sleep(10)
|
||
if TestValid(starbase_03) then
|
||
Story_Event("UM12_SHUTTLE_DESTROYS_STARBASE")
|
||
Sleep(5)
|
||
starbase_03.Take_Damage(100000)
|
||
end
|
||
else
|
||
Sleep(10)
|
||
if TestValid(starbase_03) then
|
||
Story_Event("UM12_SHUTTLE_CAPTURES_STARBASE")
|
||
Sleep(2)
|
||
starbase_03.Change_Owner(underworld_player)
|
||
--remove radar blips here
|
||
starbase_03.Highlight(false)
|
||
Remove_Radar_Blip("starbase_03_blip")
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function Thread_Shuttle_Approaching_Starbase(thread_info)
|
||
ThreadValue.Set("starbase", thread_info[2])
|
||
ThreadValue.Set("shuttle", thread_info[1])
|
||
|
||
starbase = ThreadValue.Get("starbase");
|
||
shuttle = ThreadValue.Get("shuttle");
|
||
|
||
if shuttle == shuttle01 then
|
||
bool_shuttle01_being_expended = true
|
||
elseif shuttle == shuttle02 then
|
||
bool_shuttle02_being_expended = true
|
||
elseif shuttle == shuttle03 then
|
||
bool_shuttle03_being_expended = true
|
||
end
|
||
|
||
Story_Event("UM12_SHUTTLE_APPROACHING_STARBASE")
|
||
|
||
--set the shuttle invulnerable and send it at the starbase to fake a boarding
|
||
shuttle.Set_Cannot_Be_Killed(true)
|
||
shuttle.Prevent_AI_Usage(true)
|
||
shuttle.Set_Selectable(false)
|
||
shuttle.Move_To(starbase)
|
||
Sleep(8)
|
||
shuttle.Despawn()
|
||
|
||
if starbase == starbase_01 then
|
||
local random_starbase_01_event = GameRandom(1,2)
|
||
if random_starbase_01_event == 1 then
|
||
Sleep(10)
|
||
if TestValid(starbase) then
|
||
Story_Event("UM12_SHUTTLE_DESTROYS_STARBASE")
|
||
Sleep(5)
|
||
starbase.Take_Damage(100000)
|
||
end
|
||
else
|
||
Sleep(10)
|
||
if TestValid(starbase) then
|
||
Story_Event("UM12_SHUTTLE_CAPTURES_STARBASE")
|
||
Sleep(2)
|
||
starbase.Change_Owner(underworld_player)
|
||
--remove radar blips here
|
||
starbase_01.Highlight(false)
|
||
Remove_Radar_Blip("starbase_01_blip")
|
||
end
|
||
end
|
||
elseif starbase == starbase_02 then
|
||
local random_starbase_02_event = GameRandom(1,2)
|
||
if random_starbase_02_event == 1 then
|
||
Sleep(10)
|
||
if TestValid(starbase) then
|
||
Story_Event("UM12_SHUTTLE_DESTROYS_STARBASE")
|
||
Sleep(5)
|
||
starbase.Take_Damage(100000)
|
||
end
|
||
else
|
||
Sleep(10)
|
||
if TestValid(starbase) then
|
||
Story_Event("UM12_SHUTTLE_CAPTURES_STARBASE")
|
||
Sleep(2)
|
||
starbase.Change_Owner(underworld_player)
|
||
--remove radar blips here
|
||
starbase_02.Highlight(false)
|
||
Remove_Radar_Blip("starbase_02_blip")
|
||
end
|
||
end
|
||
elseif starbase == starbase_03 then
|
||
local random_starbase_03_event = GameRandom(1,2)
|
||
if random_starbase_03_event == 1 then
|
||
Sleep(10)
|
||
if TestValid(starbase) then
|
||
Story_Event("UM12_SHUTTLE_DESTROYS_STARBASE")
|
||
Sleep(5)
|
||
starbase.Take_Damage(100000)
|
||
end
|
||
else
|
||
Sleep(10)
|
||
if TestValid(starbase) then
|
||
Story_Event("UM12_SHUTTLE_CAPTURES_STARBASE")
|
||
Sleep(2)
|
||
starbase.Change_Owner(underworld_player)
|
||
--remove radar blips here
|
||
starbase_03.Highlight(false)
|
||
Remove_Radar_Blip("starbase_03_blip")
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
function Thread_Shuttle_Approaching_Eclipse(thread_info)
|
||
local shuttle = thread_info[1]
|
||
local eclipse = thread_info[2]
|
||
|
||
|
||
|
||
Story_Event("UM12_SHUTTLE_APPROACHING_THE_ECLIPSE")
|
||
|
||
shuttle.Set_Cannot_Be_Killed(true)
|
||
shuttle.Prevent_AI_Usage(true)
|
||
shuttle.Set_Selectable(false)
|
||
shuttle.Move_To(eclipse)
|
||
Sleep(8)
|
||
shuttle.Despawn()
|
||
|
||
Sleep(15)
|
||
if TestValid(eclipse) then
|
||
Story_Event("UM12_SHUTTLE_CAPTURES_ECLIPSE")
|
||
Sleep(2)
|
||
eclipse.Change_Owner(underworld_player)
|
||
eclipse.Prevent_Opportunity_Fire(false)
|
||
--remove radar blips here
|
||
--eclipse.Highlight(false)
|
||
Remove_Radar_Blip("eclipse_blip")
|
||
bool_eclipse_captured = true
|
||
eclipse.Set_Cannot_Be_Killed(false)
|
||
|
||
Create_Thread("Thread_Monitor_Eclipse_FiringStatus")
|
||
Create_Thread("Thread_DeathMonitor_Eclipse")
|
||
|
||
end
|
||
|
||
Sleep(180)
|
||
|
||
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function Thread_Monitor_Eclipse_FiringStatus()
|
||
if TestValid(eclipse) then
|
||
while not eclipse.Is_Ability_Ready("SUPER_LASER") do
|
||
Sleep(1)
|
||
end
|
||
|
||
|
||
while bool_first_shot_fired == false do
|
||
if eclipse.Has_Attack_Target() == true then
|
||
--MessageBox("Player is firing the Eclipse")
|
||
target = eclipse.Get_Attack_Target()
|
||
--if target == empire_super_stardestroyer[1] then
|
||
--if target.Get_Type().Get_Name() == "UM12_SUPER_STAR_DESTROYER" then
|
||
--if target.Get_Type().Get_Name() == "Executor_Super_Star_Destroyer" then
|
||
Create_Thread("Thread_Midtro_Cinematic_Eclipse_Fires", target)
|
||
bool_first_shot_fired = true
|
||
break
|
||
--else
|
||
--MessageBox("detected fire event ... not registering super star destroyer")
|
||
--end
|
||
end
|
||
|
||
Sleep(1)
|
||
end
|
||
|
||
end
|
||
end
|
||
|
||
function Thread_Midtro_Cinematic_Eclipse_Fires(target)
|
||
if not TestValid(eclipse) or not TestValid(target) then
|
||
MessageBox("UM12 Midtro is missing key objects...aborting...let Joe G know immediately!")
|
||
end
|
||
target.Set_Cannot_Be_Killed(true)
|
||
|
||
Fade_Screen_Out(0)
|
||
Suspend_AI(1)
|
||
Lock_Controls(1)
|
||
Letter_Box_In(0)
|
||
Start_Cinematic_Camera()
|
||
Cancel_Fast_Forward()
|
||
Sleep(0.25)
|
||
|
||
midtro_camera_start = Find_Hint("MARKER_GENERIC_RED", "midtro-camera-start")
|
||
midtro_look_start = Find_Hint("MARKER_GENERIC_RED", "midtro-look-start")
|
||
|
||
midtro_camera_move01 = Find_Hint("MARKER_GENERIC_RED", "midtro-camera-move01")
|
||
|
||
Fade_Screen_In(0.25)
|
||
Transition_Cinematic_Camera_Key(midtro_camera_move01, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
Transition_Cinematic_Target_Key(midtro_look_start, 0, 0, 0, 0, 0, 0, 0, 0)
|
||
|
||
Transition_Cinematic_Camera_Key(target, 10, 2000, 25, -135, 1, target, 0, 0)
|
||
|
||
Sleep(2.5)
|
||
|
||
target.Set_Cannot_Be_Killed(false)
|
||
--Transition_Cinematic_Camera_Key(target, 5, 1300, 1300, 100, 0, target, 0, 0)
|
||
Transition_Cinematic_Target_Key(target, 4, 0, 0, 0, 0, target, 0, 0)
|
||
|
||
|
||
|
||
|
||
Sleep(8)
|
||
End_Cinematic_Camera()
|
||
Letter_Box_Out(1)
|
||
Lock_Controls(0)
|
||
Suspend_AI(0)
|
||
Fade_Screen_In(1)
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function Callback_Empire_SuperStarDestroyer_Arrives(new_list)
|
||
Create_Thread("Thread_Empire_SuperStarDestroyer_Arrives", new_list)
|
||
bool_okay_to_reinforce_empire = false
|
||
end
|
||
|
||
function Thread_Empire_SuperStarDestroyer_Arrives(new_list)
|
||
super_destroyer = new_list[1]
|
||
if not TestValid(super_destroyer) then
|
||
MessagBox("cannot find super star destroyer")
|
||
end
|
||
|
||
if TestValid(eclipse) and TestValid(super_destroyer) then
|
||
|
||
--super_destroyer.Attack_Move(eclipse)
|
||
--super_destroyer.Attack_Target(eclipse)
|
||
--mark the destroyer and start monitoring its status
|
||
super_destroyer.Highlight(true, 100)
|
||
Add_Radar_Blip(super_destroyer, "super_destroyer_blip")
|
||
|
||
Create_Thread("Thread_DeathMonitor_SuperStarDestroyer", super_destroyer)
|
||
|
||
local goto_flag = Find_Hint("MARKER_GENERIC_GREEN", "goto-superstardestroyer")
|
||
BlockOnCommand(super_destroyer.Move_To(goto_flag))
|
||
MessageBox("super_destroyer.Attack_Target(eclipse)")
|
||
super_destroyer.Attack_Target(eclipse)
|
||
|
||
block_table = {}
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
function Callback_Empire_StarDestroyer01_Arrives(new_list)
|
||
local goto_flag = Find_Hint("MARKER_GENERIC_GREEN", "goto-stardestroyer01")
|
||
destroyer = new_list[1]
|
||
|
||
local thread_info = {}
|
||
thread_info[1] = destroyer
|
||
thread_info[2] = goto_flag
|
||
Create_Thread("Thread_Empire_StarDestroyer_Arrives", thread_info)
|
||
end
|
||
|
||
function Callback_Empire_StarDestroyer02_Arrives(new_list)
|
||
local goto_flag = Find_Hint("MARKER_GENERIC_GREEN", "goto-stardestroyer02")
|
||
destroyer = new_list[1]
|
||
|
||
local thread_info = {}
|
||
thread_info[1] = destroyer
|
||
thread_info[2] = goto_flag
|
||
Create_Thread("Thread_Empire_StarDestroyer_Arrives", thread_info)
|
||
end
|
||
|
||
function Callback_Empire_StarDestroyer03_Arrives(new_list)
|
||
local goto_flag = Find_Hint("MARKER_GENERIC_GREEN", "goto-stardestroyer03")
|
||
destroyer = new_list[1]
|
||
|
||
local thread_info = {}
|
||
thread_info[1] = destroyer
|
||
thread_info[2] = goto_flag
|
||
Create_Thread("Thread_Empire_StarDestroyer_Arrives", thread_info)
|
||
end
|
||
|
||
|
||
function Thread_Empire_StarDestroyer_Arrives(thread_info)
|
||
destroyer = thread_info[1]
|
||
goto_flag = thread_info[2]
|
||
|
||
BlockOnCommand(destroyer.Move_To(goto_flag))
|
||
--MessageBox("Destroyer in position...releasing to AI")
|
||
--destroyer.Prevent_AI_Usage(false)
|
||
--destroyer.Guard_Target(goto_flag.Get_Position())
|
||
if TestValid(destroyer) and TestValid(eclipse) then
|
||
destroyer.Attack_Target(eclipse)
|
||
end
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--*******************************************************************************
|
||
--****** Cinematics
|
||
--*******************************************************************************
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--*******************************************************************************
|
||
--******************* DEATH MONITORS **********************************
|
||
--*******************************************************************************
|
||
function Thread_DeathMonitor_TyberZann()
|
||
while TestValid(tyber) do
|
||
Sleep(3)
|
||
end
|
||
|
||
Story_Event("UM12_PLAYER_LOSES_TYBER_KILLED")
|
||
end
|
||
|
||
function Thread_DeathMonitor_BoardingShuttle01()
|
||
while TestValid(shuttle01) do
|
||
Sleep(1)
|
||
end
|
||
|
||
if bool_capturing_eclipse == true then
|
||
return
|
||
end
|
||
|
||
if bool_shuttle01_being_expended == true then
|
||
num_shuttles_destroyed = num_shuttles_destroyed + 1
|
||
if num_shuttles_destroyed == 1 then
|
||
Story_Event("UM12_ONE_SHUTTLE_EXPENDED")
|
||
elseif num_shuttles_destroyed == 2 then
|
||
Story_Event("UM12_TWO_SHUTTLES_EXPENDED")
|
||
else
|
||
Story_Event("UM12_PLAYER_LOSES_ALL_SHUTTLES_EXPENDED")
|
||
end
|
||
|
||
else
|
||
num_shuttles_destroyed = num_shuttles_destroyed + 1
|
||
if num_shuttles_destroyed == 1 then
|
||
Story_Event("UM12_ONE_SHUTTLE_DESTROYED")
|
||
elseif num_shuttles_destroyed == 2 then
|
||
Story_Event("UM12_TWO_SHUTTLES_DESTROYED")
|
||
else
|
||
Story_Event("UM12_PLAYER_LOSES_ALL_SHUTTLES_DESTROYED")
|
||
end
|
||
end
|
||
end
|
||
|
||
function Thread_DeathMonitor_BoardingShuttle02()
|
||
while TestValid(shuttle02) do
|
||
Sleep(1)
|
||
end
|
||
|
||
if bool_capturing_eclipse == true then
|
||
return
|
||
end
|
||
|
||
if bool_shuttle02_being_expended == true then
|
||
num_shuttles_destroyed = num_shuttles_destroyed + 1
|
||
if num_shuttles_destroyed == 1 then
|
||
Story_Event("UM12_ONE_SHUTTLE_EXPENDED")
|
||
elseif num_shuttles_destroyed == 2 then
|
||
Story_Event("UM12_TWO_SHUTTLES_EXPENDED")
|
||
else
|
||
Story_Event("UM12_PLAYER_LOSES_ALL_SHUTTLES_EXPENDED")
|
||
end
|
||
|
||
else
|
||
num_shuttles_destroyed = num_shuttles_destroyed + 1
|
||
if num_shuttles_destroyed == 1 then
|
||
Story_Event("UM12_ONE_SHUTTLE_DESTROYED")
|
||
elseif num_shuttles_destroyed == 2 then
|
||
Story_Event("UM12_TWO_SHUTTLES_DESTROYED")
|
||
else
|
||
Story_Event("UM12_PLAYER_LOSES_ALL_SHUTTLES_DESTROYED")
|
||
end
|
||
end
|
||
end
|
||
|
||
function Thread_DeathMonitor_BoardingShuttle03()
|
||
while TestValid(shuttle03) do
|
||
Sleep(1)
|
||
end
|
||
|
||
if bool_capturing_eclipse == true then
|
||
return
|
||
end
|
||
|
||
if bool_shuttle03_being_expended == true then
|
||
num_shuttles_destroyed = num_shuttles_destroyed + 1
|
||
if num_shuttles_destroyed == 1 then
|
||
Story_Event("UM12_ONE_SHUTTLE_EXPENDED")
|
||
elseif num_shuttles_destroyed == 2 then
|
||
Story_Event("UM12_TWO_SHUTTLES_EXPENDED")
|
||
else
|
||
Story_Event("UM12_PLAYER_LOSES_ALL_SHUTTLES_EXPENDED")
|
||
end
|
||
|
||
else
|
||
num_shuttles_destroyed = num_shuttles_destroyed + 1
|
||
if num_shuttles_destroyed == 1 then
|
||
Story_Event("UM12_ONE_SHUTTLE_DESTROYED")
|
||
elseif num_shuttles_destroyed == 2 then
|
||
Story_Event("UM12_TWO_SHUTTLES_DESTROYED")
|
||
else
|
||
Story_Event("UM12_PLAYER_LOSES_ALL_SHUTTLES_DESTROYED")
|
||
end
|
||
end
|
||
|
||
|
||
end
|
||
|
||
function Thread_DeathMonitor_Starbase01()
|
||
while TestValid(starbase_01) and (starbase_01.Get_Owner() ~= underworld_player) do
|
||
Sleep(3)
|
||
end
|
||
|
||
bool_starbase01_active = false
|
||
--MessageBox("bool_starbase01_active = false")
|
||
end
|
||
|
||
function Thread_DeathMonitor_Starbase02()
|
||
while TestValid(starbase_02) and (starbase_02.Get_Owner() ~= underworld_player) do
|
||
Sleep(3)
|
||
end
|
||
|
||
bool_starbase02_active = false
|
||
--MessageBox("bool_starbase02_active = false")
|
||
end
|
||
|
||
function Thread_DeathMonitor_Starbase03()
|
||
while TestValid(starbase_03) and (starbase_03.Get_Owner() ~= underworld_player) do
|
||
Sleep(3)
|
||
end
|
||
|
||
bool_starbase03_active = false
|
||
--MessageBox("bool_starbase03_active = false")
|
||
end
|
||
|
||
function Thread_DeathMonitor_Starbases()
|
||
while (bool_starbase01_active == true) or (bool_starbase02_active == true) or (bool_starbase03_active == true) do
|
||
Sleep(3)
|
||
end
|
||
|
||
if bool_capturing_eclipse == true then
|
||
Story_Event("UM12_STARBASE_OBJECTIVE_COMPLETE_NO_REBELS")
|
||
else
|
||
Story_Event("UM12_STARBASE_OBJECTIVE_COMPLETE_WITH_REBELS")
|
||
end
|
||
end
|
||
|
||
function Thread_DeathMonitor_Shipyard01()
|
||
while TestValid(shipyard01) do
|
||
Sleep(1)
|
||
end
|
||
|
||
--shipyard is dead...delete correspoding heal flags
|
||
if TestValid(sy01_healbay01) then
|
||
sy01_healbay01.Despawn()
|
||
end
|
||
|
||
if TestValid(sy01_healbay02) then
|
||
sy01_healbay02.Despawn()
|
||
end
|
||
|
||
if TestValid(sy01_healbay03) then
|
||
sy01_healbay03.Despawn()
|
||
end
|
||
|
||
if TestValid(sy01_healbay04) then
|
||
sy01_healbay04.Despawn()
|
||
end
|
||
end
|
||
|
||
function Thread_DeathMonitor_Shipyard02()
|
||
while TestValid(shipyard02) do
|
||
Sleep(1)
|
||
end
|
||
|
||
--shipyard is dead...delete correspoding heal flags
|
||
if TestValid(sy02_healbay01) then
|
||
sy02_healbay01.Despawn()
|
||
end
|
||
|
||
if TestValid(sy02_healbay02) then
|
||
sy02_healbay02.Despawn()
|
||
end
|
||
|
||
end
|
||
|
||
function Thread_DeathMonitor_Shipyard03()
|
||
while TestValid(shipyard03) do
|
||
Sleep(1)
|
||
end
|
||
|
||
--shipyard is dead...delete correspoding heal flags
|
||
if TestValid(sy03_healbay01) then
|
||
sy03_healbay01.Despawn()
|
||
end
|
||
|
||
if TestValid(sy03_healbay02) then
|
||
sy03_healbay02.Despawn()
|
||
end
|
||
|
||
end
|
||
|
||
function Thread_DeathMonitor_Shipyard04()
|
||
while TestValid(shipyard04) do
|
||
Sleep(1)
|
||
end
|
||
|
||
--shipyard is dead...delete correspoding heal flags
|
||
if TestValid(sy04_healbay01) then
|
||
sy04_healbay01.Despawn()
|
||
end
|
||
|
||
end
|
||
|
||
function Thread_DeathMonitor_Shipyard05()
|
||
while TestValid(shipyard05) do
|
||
Sleep(1)
|
||
end
|
||
|
||
--shipyard is dead...delete correspoding heal flags
|
||
if TestValid(sy05_healbay01) then
|
||
sy05_healbay01.Despawn()
|
||
end
|
||
|
||
end
|
||
|
||
|
||
function Thread_DeathMonitor_Shipyards()
|
||
|
||
while(true) do
|
||
local all_shipyards_destroyed = true
|
||
shipyard_list = Find_All_Objects_Of_Type("EMPIRE_DOCK_DESTROYABLE")
|
||
for i, shipyard in pairs(shipyard_list) do
|
||
if TestValid(shipyard) then
|
||
all_shipyards_destroyed = false
|
||
end
|
||
end
|
||
|
||
if all_shipyards_destroyed == true then
|
||
--all shipyards are destroyed...complete the objective
|
||
Story_Event("UM12_SHIPYARD_OBJECTIVE_COMPLETE")
|
||
end
|
||
|
||
Sleep(5)
|
||
end
|
||
end
|
||
|
||
function Thread_DeathMonitor_RebelHero()
|
||
while TestValid(rebel_hero) do
|
||
Sleep(3)
|
||
end
|
||
|
||
|
||
bool_rebels_attacking = false
|
||
--rebel hero destroyed, complete the objective
|
||
Story_Event("UM12_OBJECTIVE_COMPLETE_DESTROY_REBEL_HERO")
|
||
|
||
Sleep(5)
|
||
|
||
|
||
rebel_forces = Find_All_Objects_Of_Type(rebel_player)
|
||
for i, rebel in pairs(rebel_forces) do
|
||
if TestValid(rebel) then
|
||
if rebel.Is_Category("Fighter") or
|
||
rebel.Is_Category("Corvette") or
|
||
rebel.Is_Category("Frigate") or
|
||
rebel.Is_Category("Capital") then
|
||
if rebel.Get_Type().Get_Name() == "DUMMY_BARRAGE_TARGET" then
|
||
--do nothing
|
||
else
|
||
rebel.Hyperspace_Away()
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
|
||
function Thread_DeathMonitor_Eclipse()
|
||
--put health warning here
|
||
|
||
|
||
while TestValid(eclipse) do
|
||
local eclipse_current_health = eclipse.Get_Hull()
|
||
--MessageBox("eclipse_current_health is %d", eclipse_current_health)
|
||
if TestValid(eclipse) and eclipse_current_health < 0.9 then
|
||
MessageBox("current eclipse_current_health is %d", eclipse_current_health)
|
||
Story_Event("UM12_ECLIPSE_BEING_ATTACKED")
|
||
break
|
||
end
|
||
|
||
Sleep(3)
|
||
end
|
||
|
||
while TestValid(eclipse) do
|
||
--MessageBox("Thread_DeathMonitor_Eclipse entering into wait mode.")
|
||
Sleep(3)
|
||
end
|
||
|
||
Story_Event("UM12_PLAYER_LOSES_ECLIPSE_DESTROYED")
|
||
end
|
||
|
||
function Thread_DeathMonitor_SuperStarDestroyer(destroyer)
|
||
while TestValid(destroyer) do
|
||
Sleep(3)
|
||
end
|
||
|
||
--super star destroyer has been killed, clear objective
|
||
Story_Event("UM12_OBJECTIVE_COMPLETE_DESTROY_SUPER_STAR_DESTROYER")
|
||
--MessageBox("Super Star Destroyer dead...Rebels retreat...player wins!")
|
||
end
|
||
|
||
|
||
function JoeMessage(...)
|
||
--JoeMessage("current current_spawn_times is %d", current_spawn_times)
|
||
_CustomScriptMessage("JoeLog.txt", string.format(unpack(arg)))
|
||
end |