Initial commit
This commit is contained in:
816
DATA/SCRIPTS/STORY/STORY_REBEL_ACTIII_M08_SPACE.LUA
Normal file
816
DATA/SCRIPTS/STORY/STORY_REBEL_ACTIII_M08_SPACE.LUA
Normal file
@@ -0,0 +1,816 @@
|
||||
-- $Id: //depot/Projects/StarWars/Run/Data/Scripts/Story/Story_Rebel_ActIII_M08_SPACE.lua#19 $
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
--
|
||||
-- (C) Petroglyph Games, Inc.
|
||||
--
|
||||
--
|
||||
-- ***** ** * *
|
||||
-- * ** * * *
|
||||
-- * * * * *
|
||||
-- * * * * * * * *
|
||||
-- * * *** ****** * ** **** *** * * * ***** * ***
|
||||
-- * ** * * * ** * ** ** * * * * ** ** ** *
|
||||
-- *** ***** * * * * * * * * ** * * * *
|
||||
-- * * * * * * * * * * * * * * *
|
||||
-- * * * * * * * * * * ** * * * *
|
||||
-- * ** * * ** * ** * * ** * * * *
|
||||
-- ** **** ** * **** ***** * ** *** * *
|
||||
-- * * *
|
||||
-- * * *
|
||||
-- * * *
|
||||
-- * * * *
|
||||
-- **** * *
|
||||
--
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
-- C O N F I D E N T I A L S O U R C E C O D E -- D O N O T D I S T R I B U T E
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
--
|
||||
-- $File: //depot/Projects/StarWars/Run/Data/Scripts/Story/Story_Rebel_ActIII_M08_SPACE.lua $
|
||||
--
|
||||
-- Original Author: Eric_Yiskis
|
||||
--
|
||||
-- $Author: Joseph_Gernert $
|
||||
--
|
||||
-- $Change: 36026 $
|
||||
--
|
||||
-- $DateTime: 2006/01/05 17:48:43 $
|
||||
--
|
||||
-- $Revision: #19 $
|
||||
--
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
require("PGStoryMode")
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Definitions -- This function is called once when the script is first created.
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Definitions()
|
||||
|
||||
DebugMessage("%s -- In Definitions", tostring(Script))
|
||||
|
||||
StoryModeEvents =
|
||||
{
|
||||
Rebel_A3_M08_Begin = State_Rebel_A3_M08_Begin
|
||||
,Rebel_A3_M08_Cargo_Found_Text_02 = State_Rebel_A3_M08_Cargo_Found_Text_02
|
||||
,FALCON_SPOTTED1_Reset_Alarm_Message = State_FALCON_SPOTTED1_Reset_Alarm_Message
|
||||
,FALCON_SPOTTED2_Reset_Alarm_Message = State_FALCON_SPOTTED2_Reset_Alarm_Message
|
||||
,FALCON_SPOTTED3_Reset_Alarm_Message = State_FALCON_SPOTTED3_Reset_Alarm_Message
|
||||
,FALCON_SPOTTED4_Reset_Alarm_Message = State_FALCON_SPOTTED4_Reset_Alarm_Message
|
||||
}
|
||||
|
||||
interceptor_units_1 = {
|
||||
"TIE_BOMBER_SQUADRON"
|
||||
,"TIE_BOMBER_SQUADRON"
|
||||
,"TIE_SCOUT_SQUADRON"
|
||||
,"STAR_DESTROYER_TRACTOR_FIGHTERS"
|
||||
}
|
||||
|
||||
interceptor_units_2 = {
|
||||
"TARTAN_PATROL_CRUISER"
|
||||
,"TARTAN_PATROL_CRUISER"
|
||||
,"TARTAN_PATROL_CRUISER"
|
||||
-- THESE ARE CRASHING THE GAME CURRENTLY
|
||||
-- ,"BROADSIDE_CLASS_CRUISER"
|
||||
-- ,"BROADSIDE_CLASS_CRUISER"
|
||||
}
|
||||
|
||||
visit_list = {
|
||||
"Victory_Destroyer_No_Fighters"
|
||||
}
|
||||
|
||||
patrol_marker_names = {
|
||||
"patrol1"
|
||||
,"patrol2"
|
||||
,"patrol3"
|
||||
,"patrol4"
|
||||
,"patrol5"
|
||||
,"patrol6"
|
||||
,"patrol7"
|
||||
,"patrol8"
|
||||
,"patrol9"
|
||||
,"patrol10"
|
||||
,"patrol11"
|
||||
,"patrol12"
|
||||
}
|
||||
|
||||
starbase_marker = nil
|
||||
|
||||
patrol_marker_count = 12
|
||||
patrol_markers = {}
|
||||
|
||||
cargo_range = 150
|
||||
scanning_range = 600
|
||||
cargo_scanned = 0
|
||||
cargo_being_scanned = nil
|
||||
|
||||
spotted_range = 500 -- This should be slighly greater than the longest sight range by a patroller
|
||||
falcon_spottings = 0
|
||||
|
||||
alarm_units = {}
|
||||
alarm_was_activated = false
|
||||
|
||||
time_to_first_visit = 20
|
||||
min_time_between_visits = 60
|
||||
variance_between_visits = 30
|
||||
|
||||
duration_of_fighter_assist = 30
|
||||
|
||||
traffic_count = 0
|
||||
|
||||
num_scanned_to_bring_fett = 5
|
||||
counter_enough_scanned = 10
|
||||
|
||||
flag_okay_to_give_alarm_message = true
|
||||
|
||||
fog_id = nil
|
||||
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- State_Rebel_A3_M08_Begin -- Get the mission started
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function State_Rebel_A3_M08_Begin(message)
|
||||
if message == OnEnter then
|
||||
|
||||
-- Prevent the AI from performing an automatic fog of war reveal for this tactical scenario.
|
||||
-- MessageBox("disallowing ai controlled fog reveal")
|
||||
GlobalValue.Set("Allow_AI_Controlled_Fog_Reveal", 0)
|
||||
|
||||
--MessageBox("OnEnter State_Rebel_A3_M08_Begin")
|
||||
|
||||
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
-- Get Players
|
||||
|
||||
starbase_marker = Find_Hint("GENERIC_MARKER_SPACE", "starbase")
|
||||
empire = Find_Player("Empire")
|
||||
rebel = Find_Player("Rebel")
|
||||
|
||||
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
-- Find all the patrol markers (waypoints)
|
||||
|
||||
for i,name in pairs(patrol_marker_names) do
|
||||
marker = Find_Hint("GENERIC_MARKER_SPACE", name)
|
||||
if not marker then
|
||||
--MessageBox("Missing patrol marker %s",name)
|
||||
end
|
||||
table.insert(patrol_markers,marker)
|
||||
end
|
||||
--MessageBox("Done finding patrol markers")
|
||||
|
||||
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
-- Set up proximity calls to keep patrol moving along
|
||||
|
||||
prox_range = 300
|
||||
for i,marker in pairs(patrol_markers) do
|
||||
Register_Prox(marker, Prox_Patrol, prox_range, empire)
|
||||
end
|
||||
--MessageBox("Setup marker proximity calls")
|
||||
|
||||
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
-- Set up proximity calls on cargo
|
||||
|
||||
cargo_list = Find_All_Objects_Of_Type("ORBITAL_RESOURCE_CONTAINER")
|
||||
for i,unit in pairs(cargo_list) do
|
||||
Register_Prox(unit, Prox_Cargo, cargo_range, rebel)
|
||||
unit.Make_Invulnerable(true)
|
||||
end
|
||||
--MessageBox("Set up proximity on resource containers")
|
||||
|
||||
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
-- Find the Falcon
|
||||
falcon = Find_First_Object("MILLENNIUM_FALCON")
|
||||
if not falcon then
|
||||
--MessageBox("Couldn't find Millennium Falcon")
|
||||
return
|
||||
end
|
||||
|
||||
Register_Prox(falcon, Prox_Falcon, spotted_range, empire)
|
||||
|
||||
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
-- Periodically send in a Star Destroyer that is refuelling at the starbase
|
||||
|
||||
interceptor1 = Find_Hint("GENERIC_MARKER_SPACE", "interceptor1")
|
||||
interceptor2 = Find_Hint("GENERIC_MARKER_SPACE", "interceptor2")
|
||||
|
||||
Register_Timer(Star_Destroyer_Visit,time_to_first_visit)
|
||||
|
||||
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
fett_spawn = Find_Hint("GENERIC_MARKER_SPACE", "fett-spawn")
|
||||
if not fett_spawn then
|
||||
--MessageBox("failed to find fett-spawn")
|
||||
end
|
||||
|
||||
--DELME
|
||||
--Register_Timer(Bring_Fett, 10)
|
||||
|
||||
-- this is a comment
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- adding radar blips here
|
||||
-----------------------------------------------------------------------------------------------
|
||||
--Add_Radar_Blip(alarm1, "blip_alarm1")
|
||||
cargo_01 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-01")
|
||||
cargo_02 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-02")
|
||||
cargo_03 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-03")
|
||||
cargo_04 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-04")
|
||||
cargo_05 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-05")
|
||||
cargo_06 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-06")
|
||||
cargo_07 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-07")
|
||||
cargo_08 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-08")
|
||||
cargo_09 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-09")
|
||||
cargo_10 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-10")
|
||||
cargo_11 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-11")
|
||||
cargo_12 = Find_Hint ("ORBITAL_RESOURCE_CONTAINER", "cargo-12")
|
||||
|
||||
if TestValid(cargo_01) then
|
||||
Add_Radar_Blip(cargo_01, "blip_cargo_01")
|
||||
end
|
||||
|
||||
if TestValid(cargo_02) then
|
||||
Add_Radar_Blip(cargo_02, "blip_cargo_02")
|
||||
end
|
||||
|
||||
if TestValid(cargo_03) then
|
||||
Add_Radar_Blip(cargo_03, "blip_cargo_03")
|
||||
end
|
||||
|
||||
if TestValid(cargo_04) then
|
||||
Add_Radar_Blip(cargo_04, "blip_cargo_04")
|
||||
end
|
||||
|
||||
if TestValid(cargo_05) then
|
||||
Add_Radar_Blip(cargo_05, "blip_cargo_05")
|
||||
end
|
||||
|
||||
if TestValid(cargo_06) then
|
||||
Add_Radar_Blip(cargo_06, "blip_cargo_06")
|
||||
end
|
||||
|
||||
if TestValid(cargo_07) then
|
||||
Add_Radar_Blip(cargo_07, "blip_cargo_07")
|
||||
end
|
||||
|
||||
if TestValid(cargo_08) then
|
||||
Add_Radar_Blip(cargo_08, "blip_cargo_08")
|
||||
end
|
||||
|
||||
if TestValid(cargo_09) then
|
||||
Add_Radar_Blip(cargo_09, "blip_cargo_09")
|
||||
end
|
||||
|
||||
if TestValid(cargo_10) then
|
||||
Add_Radar_Blip(cargo_10, "blip_cargo_10")
|
||||
end
|
||||
|
||||
if TestValid(cargo_11) then
|
||||
Add_Radar_Blip(cargo_11, "blip_cargo_11")
|
||||
end
|
||||
|
||||
if TestValid(cargo_12) then
|
||||
Add_Radar_Blip(cargo_12, "blip_cargo_12")
|
||||
end
|
||||
|
||||
fog_id = FogOfWar.Reveal_All(rebel)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Star Destroyer Visit functions
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Star_Destroyer_Visit()
|
||||
if alarm_was_activated then
|
||||
return
|
||||
end
|
||||
|
||||
ReinforceList(visit_list,interceptor2,empire,false,true, true, Star_Destroyer_Arrived)
|
||||
|
||||
-- Setup next visit; Han should only be able to slip past if he waits for a big gap
|
||||
Register_Timer(Star_Destroyer_Visit, min_time_between_visits + GameRandom(1, variance_between_visits))
|
||||
end
|
||||
|
||||
function Star_Destroyer_Arrived(unit_list)
|
||||
Create_Thread("Star_Destroyer_Sequence", unit_list[1])
|
||||
Register_Prox(unit_list[1], Prox_Visitor, spotted_range, rebel)
|
||||
end
|
||||
|
||||
function Star_Destroyer_Sequence(star_destroyer)
|
||||
|
||||
if TestValid(star_destroyer) then
|
||||
BlockOnCommand(star_destroyer.Move_To(starbase_marker))
|
||||
end
|
||||
|
||||
-- Every so N star_destroyers to pass through, there's an X% chance that
|
||||
-- fighters on patrol come to assist or guard; giving han a window of easier cargo examining
|
||||
traffic_count = traffic_count + 1
|
||||
if (traffic_count == 2) then
|
||||
traffic_count = 0
|
||||
--if (GameRandom(0,1) < 0.5) then
|
||||
--MessageBox("Calling in the fighters")
|
||||
List_Guard(Find_All_Objects_Of_Type("TIE_FIGHTER_SQUADRON"), star_destroyer)
|
||||
Sleep(duration_of_fighter_assist)
|
||||
--MessageBox("Placing fighters back on patrol")
|
||||
List_Random_Patrol(Find_All_Objects_Of_Type("TIE_FIGHTER_SQUADRON"))
|
||||
--end
|
||||
else
|
||||
|
||||
-- Pause for a refuel at the station or something
|
||||
Sleep(5)
|
||||
end
|
||||
|
||||
if TestValid(star_destroyer) then
|
||||
BlockOnCommand(star_destroyer.Move_To(interceptor1))
|
||||
end
|
||||
|
||||
if TestValid(star_destroyer) then
|
||||
star_destroyer.Hyperspace_Away()
|
||||
end
|
||||
end
|
||||
|
||||
function List_Guard(list, obj)
|
||||
for k, unit in pairs(list) do
|
||||
if TestValid(unit) and not alarm_units[unit] then
|
||||
unit.Guard_Target(obj)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function List_Random_Patrol(list)
|
||||
for k, unit in pairs(list) do
|
||||
if TestValid(unit) then
|
||||
unit.Move_To(patrol_markers[GameRandom(1, table.getn(patrol_markers))])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Prox_Visitor(prox_obj, trigger_obj)
|
||||
prox_obj.Cancel_Event_Object_In_Range(Prox_Visitor)
|
||||
prox_obj.Attack_Move(falcon)
|
||||
alarm_unit = prox_obj
|
||||
|
||||
if flag_okay_to_give_alarm_message then
|
||||
flag_okay_to_give_alarm_message = false
|
||||
Alarm_Activated()
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Alarm_Activated - Tie fighters lasted long enough to sound alarm
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Alarm_Activated()
|
||||
|
||||
if alarm_was_activated then
|
||||
return
|
||||
end
|
||||
|
||||
--MessageBox("alarm activated")
|
||||
|
||||
-- Bring in units to intercept Millennium Falcon
|
||||
Story_Event("ALARM_ACTIVATED")
|
||||
alarm_was_activated = true
|
||||
ReinforceList(interceptor_units_1,falcon,empire,false,true, true, List_Attack_Han)
|
||||
ReinforceList(interceptor_units_2,interceptor2,empire,false,true, true, List_Attack_Han)
|
||||
|
||||
end
|
||||
|
||||
function List_Attack_Han(unit_list)
|
||||
for i,unit in pairs(unit_list) do
|
||||
unit.Attack_Move(falcon)
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Prox_Falcon - Called when an Empire spots the Millennium Falcon
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Prox_Falcon(prox_obj, trigger_obj)
|
||||
|
||||
trigger_type = trigger_obj.Get_Type().Get_Name()
|
||||
|
||||
if trigger_type == "TIE_FIGHTER" then
|
||||
unit = trigger_obj.Get_Parent_Object()
|
||||
elseif trigger_type == "TARTAN_PATROL_CRUISER" then
|
||||
unit = trigger_obj
|
||||
elseif trigger_type == "SLAVE_I" then
|
||||
|
||||
-- boba fett just wants the kill himself; no reporting to the Empire
|
||||
if not fett_found_han then
|
||||
Create_Thread("Fett_Attack_Han", trigger_obj)
|
||||
end
|
||||
return
|
||||
|
||||
else
|
||||
DebugMessage("]]]] Falcon spotted by %s",trigger_type)
|
||||
return
|
||||
end
|
||||
|
||||
--Don't trigger on the same unit...
|
||||
if alarm_units[unit] then
|
||||
return
|
||||
end
|
||||
alarm_units[unit] = 1
|
||||
|
||||
--MessageBox("Falcon spotted by tie fighter squadron")
|
||||
falcon_spottings = falcon_spottings + 1
|
||||
if falcon_spottings == 1 and flag_okay_to_give_alarm_message then
|
||||
flag_okay_to_give_alarm_message = false
|
||||
Story_Event("FALCON_SPOTTED1")
|
||||
end
|
||||
if falcon_spottings == 2 and flag_okay_to_give_alarm_message then
|
||||
flag_okay_to_give_alarm_message = false
|
||||
Story_Event("FALCON_SPOTTED2")
|
||||
end
|
||||
if falcon_spottings == 3 and flag_okay_to_give_alarm_message then
|
||||
flag_okay_to_give_alarm_message = false
|
||||
Story_Event("FALCON_SPOTTED3")
|
||||
end
|
||||
if falcon_spottings == 4 and flag_okay_to_give_alarm_message then
|
||||
flag_okay_to_give_alarm_message = false
|
||||
Story_Event("FALCON_SPOTTED4")
|
||||
|
||||
-- The unit just reports without bothering to attack first
|
||||
DebugMessage("reporting han without attacking")
|
||||
unit.Move_To(starbase_marker)
|
||||
Register_Timer(Alarm_Activated, 10)
|
||||
else
|
||||
|
||||
-- The first three times, Han has a chance to take out the unit before it reports
|
||||
Create_Thread("Discover_Then_Report", unit)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
--jdg adding a timer between the bevy of spotted events above
|
||||
function State_FALCON_SPOTTED1_Reset_Alarm_Message(message)
|
||||
if message == OnEnter then
|
||||
flag_okay_to_give_alarm_message = true
|
||||
end
|
||||
end
|
||||
|
||||
function State_FALCON_SPOTTED2_Reset_Alarm_Message(message)
|
||||
if message == OnEnter then
|
||||
flag_okay_to_give_alarm_message = true
|
||||
end
|
||||
end
|
||||
|
||||
function State_FALCON_SPOTTED3_Reset_Alarm_Message(message)
|
||||
if message == OnEnter then
|
||||
flag_okay_to_give_alarm_message = true
|
||||
end
|
||||
end
|
||||
|
||||
function State_FALCON_SPOTTED4_Reset_Alarm_Message(message)
|
||||
if message == OnEnter then
|
||||
flag_okay_to_give_alarm_message = true
|
||||
end
|
||||
end
|
||||
|
||||
function Fett_Attack_Han(unit)
|
||||
|
||||
-- Safety check to prevent an extra thread on this...somehow a few were slipping in.
|
||||
if fett_found_han == true then
|
||||
return
|
||||
end
|
||||
|
||||
fett_found_han = true
|
||||
--MessageBox("attacking han with fett")
|
||||
Story_Event("BOBA_ATTACK")
|
||||
if TestValid(unit) and TestValid(falcon) then
|
||||
BlockOnCommand(unit.Attack_Target(falcon), 20)
|
||||
end
|
||||
|
||||
fett_found_han = false
|
||||
end
|
||||
|
||||
function Discover_Then_Report(unit)
|
||||
|
||||
DebugMessage("discovering han")
|
||||
-- Attack the falcon for a while
|
||||
BlockOnCommand(unit.Attack_Target(falcon), 30)
|
||||
--unit.Attack_Target(falcon)
|
||||
--Sleep(30)
|
||||
|
||||
-- Allow the player to still have a chance to cancel the alarm
|
||||
if TestValid(unit) then
|
||||
DebugMessage("reporting han")
|
||||
BlockOnCommand(unit.Move_To(starbase_marker))
|
||||
end
|
||||
|
||||
-- If the unit still survived, then the falcon is reported.
|
||||
if TestValid(unit) and TestValid(falcon) then
|
||||
unit.Attack_Target(falcon)
|
||||
Alarm_Activated()
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Prox_Patrol - Called when ships reach a patrol point
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Prox_Patrol(prox_obj, trigger_obj)
|
||||
|
||||
-- Send only patrols to the next waypoint
|
||||
trigger_type = trigger_obj.Get_Type().Get_Name()
|
||||
--DebugMessage("]]]] Patrol trigger picked up type %s",trigger_type)
|
||||
-- If this is a fighter, we want to issue the order to the parent instead of the trigger_obj
|
||||
if trigger_type == "TIE_FIGHTER" then
|
||||
unit = trigger_obj.Get_Parent_Object()
|
||||
elseif trigger_type == "TARTAN_PATROL_CRUISER" then
|
||||
unit = trigger_obj
|
||||
elseif trigger_type == "TIE_BOMBER" then
|
||||
unit = trigger_obj.Get_Parent_Object()
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
-- Ignore objects that have already been sent on to the next patrol
|
||||
if unit.Has_Active_Orders() then
|
||||
--MessageBox("unit has active orders")
|
||||
return
|
||||
end
|
||||
|
||||
--Units dealing with the alarm don't patrol
|
||||
if alarm_units[unit] then
|
||||
return
|
||||
end
|
||||
|
||||
-- Send to the next marker
|
||||
for i,marker in pairs(patrol_markers) do
|
||||
if prox_obj == marker then
|
||||
if i == patrol_marker_count then
|
||||
next_point = 1
|
||||
else
|
||||
next_point = i+1
|
||||
end
|
||||
unit.Move_To(patrol_markers[next_point])
|
||||
DebugMessage("]]]] Sending patrol ships from %d to patrol point %d",i,next_point)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Prox_Cargo
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Prox_Cargo(prox_obj, trigger_obj)
|
||||
|
||||
-- Stop checking for this one
|
||||
prox_obj.Cancel_Event_Object_In_Range(Prox_Cargo)
|
||||
|
||||
Game_Message("TEXT_STORY_REBEL_ACT03_MISSION_EIGHT_11")
|
||||
|
||||
--differentiate up the boring scan dialog here
|
||||
if (cargo_scanned == 0) or (cargo_scanned == 4) or (cargo_scanned == 8) then
|
||||
Story_Event("BEGIN_CARGO_SCAN")
|
||||
elseif (cargo_scanned == 1) or (cargo_scanned == 5) or (cargo_scanned == 9) then
|
||||
Story_Event("BEGIN_CARGO_SCAN2")
|
||||
elseif (cargo_scanned == 2) or (cargo_scanned == 6) or (cargo_scanned == 10) then
|
||||
Story_Event("BEGIN_CARGO_SCAN3")
|
||||
elseif (cargo_scanned == 3) or (cargo_scanned == 7) or (cargo_scanned == 11) then
|
||||
Story_Event("BEGIN_CARGO_SCAN4")
|
||||
end
|
||||
|
||||
--Story_Event("BEGIN_CARGO_SCAN")
|
||||
scan_seconds = 5
|
||||
cargo_being_scanned = prox_obj
|
||||
Register_Timer(Scanning_Timer,scan_seconds,prox_obj )
|
||||
|
||||
--add an arrow to cargo being scanned
|
||||
cargo_being_scanned.Highlight(true)
|
||||
|
||||
falcon.Stop()
|
||||
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Scanning_Timer() - Marks cargo as scanned if the Falcon hangs out for x seconds
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Scanning_Timer(timer_obj)
|
||||
|
||||
if cargo_being_scanned.Get_Distance(falcon) <= scanning_range then
|
||||
Game_Message("TEXT_STORY_REBEL_ACT03_MISSION_EIGHT_12")
|
||||
--MessageBox("Story_Event(CARGO_SCAN_DONE)")
|
||||
Story_Event("CARGO_SCAN_DONE")
|
||||
--MessageBox("CARGO_SCAN_DONE")
|
||||
cargo_scanned = cargo_scanned + 1
|
||||
|
||||
--turn off appropriate radar blip here
|
||||
|
||||
if TestValid(cargo_01) and cargo_being_scanned == cargo_01 then
|
||||
Remove_Radar_Blip("blip_cargo_01")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
--MessageBox("cargo one scanned...removing blip?")
|
||||
end
|
||||
|
||||
if TestValid(cargo_02) and cargo_being_scanned == cargo_02 then
|
||||
Remove_Radar_Blip("blip_cargo_02")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_03) and cargo_being_scanned == cargo_03 then
|
||||
Remove_Radar_Blip("blip_cargo_03")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_04) and cargo_being_scanned == cargo_04 then
|
||||
Remove_Radar_Blip("blip_cargo_04")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_05) and cargo_being_scanned == cargo_05 then
|
||||
Remove_Radar_Blip("blip_cargo_05")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_06) and cargo_being_scanned == cargo_06 then
|
||||
Remove_Radar_Blip("blip_cargo_06")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_07) and cargo_being_scanned == cargo_07 then
|
||||
Remove_Radar_Blip("blip_cargo_07")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_08) and cargo_being_scanned == cargo_08 then
|
||||
Remove_Radar_Blip("blip_cargo_08")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_09) and cargo_being_scanned == cargo_09 then
|
||||
Remove_Radar_Blip("blip_cargo_09")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_10) and cargo_being_scanned == cargo_10 then
|
||||
Remove_Radar_Blip("blip_cargo_10")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_11) and cargo_being_scanned == cargo_11 then
|
||||
Remove_Radar_Blip("blip_cargo_11")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if TestValid(cargo_12) and cargo_being_scanned == cargo_12 then
|
||||
Remove_Radar_Blip("blip_cargo_12")
|
||||
cargo_being_scanned.Highlight(false)
|
||||
end
|
||||
|
||||
if cargo_scanned == num_scanned_to_bring_fett then
|
||||
DebugMessage("Timer for fett initiated")
|
||||
Register_Timer(Bring_Fett, 10)
|
||||
elseif cargo_scanned >= counter_enough_scanned then
|
||||
Story_Event("CARGO_SCANNED")
|
||||
end
|
||||
else
|
||||
Game_Message("TEXT_STORY_REBEL_ACT03_MISSION_EIGHT_13")
|
||||
Story_Event("CARGO_SCAN_ABORTED")
|
||||
Register_Prox(cargo_being_scanned, Prox_Cargo, cargo_range, rebel)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- Fett arrives after a short delay
|
||||
function Bring_Fett()
|
||||
DebugMessage("Reinforcing with Fett")
|
||||
if TestValid(falcon) then
|
||||
ReinforceList({"Boba_Fett_Team"}, fett_spawn, empire, false, true, true, Fett_Arrives)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- Fett gives his intro then begins his search
|
||||
function Fett_Arrives(unit_list)
|
||||
fett = unit_list[1]
|
||||
--MessageBox("Fett intro dialog here")
|
||||
Story_Event("BOBA_DIALOG")
|
||||
fett.Move_To(interceptor1)
|
||||
Register_Timer(Timer_Fett_Search, 10)
|
||||
end
|
||||
|
||||
function Timer_Fett_Search()
|
||||
Create_Thread("Fett_Search")
|
||||
end
|
||||
|
||||
function Fett_Search()
|
||||
|
||||
-- Fett patrols between the container second nearest to the falcon
|
||||
-- If he finds han, script elsewhere will cause him to attack.
|
||||
-- Resume patrolling if han is lost in the fog of war.
|
||||
while TestValid(falcon) do
|
||||
if not fett_found_han then
|
||||
if not TestValid(fett) then break end
|
||||
nearest_barrel = Find_Nearest(falcon, "ORBITAL_RESOURCE_CONTAINER")
|
||||
BlockOnCommand(fett.Attack_Move(nearest_barrel.Get_Position()), 20)
|
||||
end
|
||||
Sleep(3)
|
||||
if not fett_found_han then
|
||||
if not TestValid(fett) then break end
|
||||
nearest_barrel = Find_Nearest(falcon, "ORBITAL_RESOURCE_CONTAINER")
|
||||
second_nearest_barrel = Find_Nearest(nearest_barrel, "ORBITAL_RESOURCE_CONTAINER")
|
||||
BlockOnCommand(fett.Attack_Move(second_nearest_barrel.Get_Position()), 20)
|
||||
end
|
||||
Sleep(3)
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- Story_Mode_Service() - gets serviced each frame
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- Here is an opportunity for updates outside of an event
|
||||
--function Story_Mode_Service()
|
||||
--end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- dme Mission over, triggering end cinematic.
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function State_Rebel_A3_M08_Cargo_Found_Text_02(message)
|
||||
if message == OnEnter then
|
||||
Create_Thread("Ending_Cinematic")
|
||||
end
|
||||
end
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
-- dme Ending Cinematic stuff
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
function Ending_Cinematic()
|
||||
|
||||
--Story_Event("END_DIALOG")
|
||||
Fade_Screen_Out(.5)
|
||||
Suspend_AI(1)
|
||||
Lock_Controls(1)
|
||||
Letter_Box_In(0)
|
||||
|
||||
-- Ensure Millennium Falcon is still present for this cinematic
|
||||
|
||||
falcon = Find_First_Object("Millennium_Falcon")
|
||||
if not falcon then
|
||||
MessageBox("Couldn't find Millennium Falcon")
|
||||
return
|
||||
end
|
||||
|
||||
falcon.Make_Invulnerable(true)
|
||||
|
||||
Story_Event("DISABLE_FALCON_KILLED")
|
||||
|
||||
--Set up all waypoints for cinematic
|
||||
|
||||
falcon_start = Find_Hint("GENERIC_MARKER_SPACE", "falconstart")
|
||||
falcon_move1 = Find_Hint("GENERIC_MARKER_SPACE", "falconpos1")
|
||||
falcon_move2 = Find_Hint("GENERIC_MARKER_SPACE", "falconpos2")
|
||||
falcon_move3 = Find_Hint("GENERIC_MARKER_SPACE", "falconpos3")
|
||||
falcon_move4 = Find_Hint("GENERIC_MARKER_SPACE", "falconpos4")
|
||||
camera_start = Find_Hint("GENERIC_MARKER_SPACE", "camerastart")
|
||||
|
||||
--Move Falcon to the start loc
|
||||
|
||||
falcon.Teleport_And_Face(falcon_start)
|
||||
falcon.Move_To(falcon_move2)
|
||||
Start_Cinematic_Camera()
|
||||
Sleep(1)
|
||||
|
||||
Story_Event("VICTORY_TRIGGER")
|
||||
|
||||
Fade_Screen_In(2)
|
||||
|
||||
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||||
Set_Cinematic_Camera_Key(falcon, 250, 10, 30, 1, 0, 0, 0)
|
||||
|
||||
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||||
Set_Cinematic_Target_Key(falcon, 0, 0, 0, 0, falcon, 0, 0)
|
||||
|
||||
-- Transition_Cinematic_Camera_Key(target_pos, time, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||||
--Transition_Cinematic_Target_Key(falcon_move4, 5, 0, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
Sleep(2)
|
||||
--falcon.Move_To(falcon_move2)
|
||||
--Sleep(1)
|
||||
--falcon.Move_To(falcon_move3)
|
||||
--Sleep(1)
|
||||
|
||||
Transition_Cinematic_Camera_Key(camera_start, 4, 200, 45, 0, 1, 0, 1, 0)
|
||||
|
||||
falcon.Move_To(falcon_move4)
|
||||
Sleep(4)
|
||||
falcon.Hyperspace_Away()
|
||||
falcon.Make_Invulnerable(false)
|
||||
end
|
||||
Reference in New Issue
Block a user