319 lines
10 KiB
Lua
319 lines
10 KiB
Lua
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Empire_ActI_M04_LAND.lua#1 $
|
||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
--
|
||
-- (C) Petroglyph Games, Inc.
|
||
--
|
||
--
|
||
-- ***** ** * *
|
||
-- * ** * * *
|
||
-- * * * * *
|
||
-- * * * * * * * *
|
||
-- * * *** ****** * ** **** *** * * * ***** * ***
|
||
-- * ** * * * ** * ** ** * * * * ** ** ** *
|
||
-- *** ***** * * * * * * * * ** * * * *
|
||
-- * * * * * * * * * * * * * * *
|
||
-- * * * * * * * * * * ** * * * *
|
||
-- * ** * * ** * ** * * ** * * * *
|
||
-- ** **** ** * **** ***** * ** *** * *
|
||
-- * * *
|
||
-- * * *
|
||
-- * * *
|
||
-- * * * *
|
||
-- **** * *
|
||
--
|
||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
-- C O N F I D E N T I A L S O U R C E C O D E -- D O N O T D I S T R I B U T E
|
||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
--
|
||
-- $File: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Empire_ActI_M04_LAND.lua $
|
||
--
|
||
-- Original Author: Steve_Copeland
|
||
--
|
||
-- $Author: Brian_Hayes $
|
||
--
|
||
-- $Change: 637819 $
|
||
--
|
||
-- $DateTime: 2017/03/22 10:16:16 $
|
||
--
|
||
-- $Revision: #1 $
|
||
--
|
||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
require("PGStoryMode")
|
||
|
||
--
|
||
-- Definitions -- This function is called once when the script is first created.
|
||
--
|
||
function Definitions()
|
||
|
||
StoryModeEvents =
|
||
{
|
||
Empire_M04_Land_Begin = State_Empire_M04_Land_Begin
|
||
}
|
||
|
||
reinforcement_list1 = {
|
||
"Geonosian_Resistors"
|
||
}
|
||
|
||
|
||
|
||
-- For memory pool cleanup hints
|
||
rebel_player = nil
|
||
flag_spire_1_dead = false
|
||
flag_spire_2_dead = false
|
||
flag_spire_3_dead = false
|
||
flag_spire_4_dead = false
|
||
flag_spire_5_dead = false
|
||
flag_spire_6_dead = false
|
||
|
||
flag_initialized = false
|
||
|
||
counter_spires_killed = 0
|
||
timer_geonosian_spawn = 60
|
||
|
||
fog_id = nil
|
||
|
||
end
|
||
|
||
function State_Empire_M04_Land_Begin(message)
|
||
if message == OnEnter then
|
||
rebel_player = Find_Player("Rebel")
|
||
ewok_player = Find_Player("Rebel")
|
||
|
||
structure_list = Find_All_Objects_Of_Type("GEONOSIAN_SPAWN_HOUSE")
|
||
|
||
fog_id = FogOfWar.Reveal_All(rebel_player)
|
||
|
||
--spawn some geonosians around the spires
|
||
geonosian_spawner_table = Find_All_Objects_With_Hint("solo-spawner")
|
||
|
||
for i,unit in pairs(geonosian_spawner_table) do
|
||
SpawnList(reinforcement_list1, unit, ewok_player, true, true)
|
||
end
|
||
|
||
|
||
|
||
--MessageBox("about to create intro cine!!!")
|
||
Create_Thread("Intro_Cinematic")
|
||
end
|
||
end
|
||
|
||
|
||
function Geonosian_Spawn_Loop()
|
||
--MessageBox("Geonosian_Spawn_Loop hit!!!")
|
||
max_spawn_times = 50
|
||
current_spawn_times = 0
|
||
max_geonosians_allowed = 50
|
||
repeat
|
||
current_spawn_times = current_spawn_times + 1
|
||
|
||
-- Spawn some guys at the first structure that hasn't been destroyed (if any)
|
||
building_still_standing = false
|
||
|
||
for i, building in pairs(structure_list) do
|
||
if building.Get_Hull() then
|
||
building_still_standing = true
|
||
|
||
current_geonosian_count = 0
|
||
geonosian_list = Find_All_Objects_Of_Type("GEONOSIAN")
|
||
|
||
current_geonosian_count =table.getn(geonosian_list)
|
||
|
||
for i, unit in pairs(geonosian_list) do
|
||
current_geonosian_count = current_geonosian_count + 1
|
||
end
|
||
|
||
--DebugMessage("%s<>Found %i Geonosian objects...spires killed is %i", tostring(Script), current_geonosian_count, counter_spires_killed)
|
||
|
||
|
||
if current_geonosian_count >= max_geonosians_allowed then
|
||
--MessageBox("more than 100 geonosians...not spawning!!!")
|
||
break
|
||
end
|
||
|
||
|
||
--MessageBox("spawning some dudes")
|
||
geonosian_list = SpawnList(reinforcement_list1, building, ewok_player, true, true)
|
||
break
|
||
|
||
end
|
||
end
|
||
|
||
if counter_spires_killed == 1 then
|
||
timer_geonosian_spawn = 45
|
||
end
|
||
|
||
if counter_spires_killed == 2 then
|
||
timer_geonosian_spawn = 30
|
||
end
|
||
|
||
if counter_spires_killed == 3 then
|
||
timer_geonosian_spawn = 15
|
||
end
|
||
|
||
if counter_spires_killed == 4 then
|
||
timer_geonosian_spawn = 7
|
||
end
|
||
|
||
if counter_spires_killed >= 5 then
|
||
timer_geonosian_spawn = 3
|
||
end
|
||
|
||
Sleep(timer_geonosian_spawn)
|
||
until current_spawn_times > max_spawn_times or not building_still_standing
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
function Intro_Cinematic()
|
||
|
||
--MessageBox("intro cine function hit!!!")
|
||
-- Lock out controls for intro cinematic and reveal FOW
|
||
Suspend_AI(1)
|
||
Lock_Controls(1)
|
||
Letter_Box_In(0)
|
||
|
||
-- now find the cinematic spire and pan around it
|
||
spire = Find_Hint("GEONOSIAN_SPAWN_HOUSE", "spire4")
|
||
if not spire then
|
||
--MessageBox("intro cine Can't find spire!!!")
|
||
return
|
||
end
|
||
|
||
|
||
Start_Cinematic_Camera()
|
||
Fade_Screen_In(.5)
|
||
|
||
-- this pans around the geonosian spire...also shows the rebel base
|
||
|
||
base_loc = Find_Hint("GENERIC_MARKER_LAND", "rebelbase1")
|
||
entry_loc = Find_Hint("GENERIC_MARKER_LAND", "entry")
|
||
|
||
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||
Set_Cinematic_Camera_Key(spire, 400, 6, 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(spire, 0, 0, 0, 0, 0, 0, 0)
|
||
-- Transition_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||
Transition_Cinematic_Camera_Key(spire, 10, 1200, 12, -60, 1, 0, 0, 0)
|
||
|
||
Sleep(5)
|
||
|
||
-- This cinematic pans around the Rebel Base.
|
||
|
||
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||
Set_Cinematic_Camera_Key(base_loc, 400, 6, 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(base_loc, 0, 0, 0, 0, 0, 0, 0)
|
||
-- Transition_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||
Transition_Cinematic_Camera_Key(base_loc, 6, 800, 30, 120, 1, 0, 0, 0)
|
||
|
||
Sleep(6)
|
||
|
||
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||
Set_Cinematic_Camera_Key(base_loc, 800, 30, 120, 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(base_loc, 0, 0, 0, 0, 0, 0, 0)
|
||
-- Transition_Cinematic_Target_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
||
Transition_Cinematic_Target_Key(entry_loc, 1, 0, 0, 0, 1, 0, 0, 0)
|
||
|
||
Sleep(0.5)
|
||
|
||
Transition_To_Tactical_Camera(5)
|
||
|
||
Sleep(5)
|
||
|
||
--Fade_Screen_Out(.5)
|
||
Transition_To_Tactical_Camera(2)
|
||
--Sleep(2)
|
||
End_Cinematic_Camera()
|
||
--Fade_Screen_In(.5)
|
||
Letter_Box_Out(.5)
|
||
Lock_Controls(0)
|
||
Suspend_AI(0)
|
||
|
||
spire_1 = Find_Hint("GEONOSIAN_SPAWN_HOUSE", "spire1")
|
||
spire_2 = Find_Hint("GEONOSIAN_SPAWN_HOUSE", "spire2")
|
||
spire_3 = Find_Hint("GEONOSIAN_SPAWN_HOUSE", "spire3")
|
||
spire_4 = Find_Hint("GEONOSIAN_SPAWN_HOUSE", "spire4")
|
||
spire_5 = Find_Hint("GEONOSIAN_SPAWN_HOUSE", "spire5")
|
||
spire_6 = Find_Hint("GEONOSIAN_SPAWN_HOUSE", "spire6")
|
||
|
||
if TestValid(spire_1) then
|
||
Add_Radar_Blip(spire_1, "blip_spire1")
|
||
end
|
||
|
||
if TestValid(spire_2) then
|
||
Add_Radar_Blip(spire_2, "blip_spire2")
|
||
end
|
||
|
||
if TestValid(spire_3) then
|
||
Add_Radar_Blip(spire_3, "blip_spire3")
|
||
end
|
||
|
||
if TestValid(spire_4) then
|
||
Add_Radar_Blip(spire_4, "blip_spire4")
|
||
end
|
||
|
||
if TestValid(spire_5) then
|
||
Add_Radar_Blip(spire_5, "blip_spire5")
|
||
end
|
||
|
||
if TestValid(spire_6) then
|
||
Add_Radar_Blip(spire_6, "blip_spire6")
|
||
end
|
||
flag_initialized = true
|
||
Geonosian_Spawn_Loop()
|
||
|
||
|
||
end
|
||
|
||
|
||
|
||
|
||
|
||
-- Here is an opportunity for updates outside of an event
|
||
function Story_Mode_Service()
|
||
|
||
if not flag_initialized then
|
||
return
|
||
end
|
||
|
||
if not TestValid(spire_1) and not flag_spire_1_dead then
|
||
flag_spire_1_dead = true
|
||
counter_spires_killed = counter_spires_killed + 1
|
||
end
|
||
|
||
if not TestValid(spire_2) and not flag_spire_2_dead then
|
||
flag_spire_2_dead = true
|
||
counter_spires_killed = counter_spires_killed + 1
|
||
end
|
||
|
||
if not TestValid(spire_3) and not flag_spire_3_dead then
|
||
flag_spire_3_dead = true
|
||
counter_spires_killed = counter_spires_killed + 1
|
||
end
|
||
|
||
if not TestValid(spire_4) and not flag_spire_4_dead then
|
||
flag_spire_4_dead = true
|
||
counter_spires_killed = counter_spires_killed + 1
|
||
end
|
||
|
||
if not TestValid(spire_5) and not flag_spire_5_dead then
|
||
flag_spire_5_dead = true
|
||
counter_spires_killed = counter_spires_killed + 1
|
||
end
|
||
|
||
if not TestValid(spire_6) and not flag_spire_6_dead then
|
||
flag_spire_6_dead = true
|
||
counter_spires_killed = counter_spires_killed + 1
|
||
end
|
||
|
||
end
|