304 lines
9.8 KiB
Lua
304 lines
9.8 KiB
Lua
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/GameObject/Demo_Felucia_Controller.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/GameObject/Demo_Felucia_Controller.lua $
|
|
--
|
|
-- Original Author: Dan Etter
|
|
--
|
|
-- $Author: Brian_Hayes $
|
|
--
|
|
-- $Change: 637819 $
|
|
--
|
|
-- $DateTime: 2017/03/22 10:16:16 $
|
|
--
|
|
-- $Revision: #1 $
|
|
--
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
require("PGStateMachine")
|
|
require("PGStoryMode")
|
|
|
|
|
|
function Definitions()
|
|
|
|
StoryModeEvents =
|
|
{
|
|
Demo_Bombard_Started = State_Demo_Bombard_Started
|
|
}
|
|
|
|
-- Object isn't valid at this point so don't do any operations that
|
|
-- would require it. State_Init is the first chance you have to do
|
|
-- operations on Object
|
|
|
|
DebugMessage("%s -- In Definitions", tostring(Script))
|
|
|
|
Define_State("State_Init", State_Init);
|
|
|
|
empire_player = Find_Player("Empire")
|
|
rebel_player = Find_Player("Rebel")
|
|
underworld_player = Find_Player("Underworld")
|
|
|
|
move_command = true
|
|
cine_triggered = false
|
|
camera_offset = 225
|
|
|
|
invulnerable = true
|
|
|
|
stormtrooper = Find_Object_Type("SQUAD_STORMTROOPER")
|
|
wall_corner = Find_Object_Type("EMPIRE_WALL_CORNER")
|
|
wall_inside_corner = Find_Object_Type("EMPIRE_WALL__INSIDE_CORNER")
|
|
wall = Find_Object_Type("EMPIRE_WALL")
|
|
turbo_tower = Find_Object_Type("E_GROUND_TURBOLASER_TOWER")
|
|
hv_gun = Find_Object_Type("GROUND_EMPIRE_HYPERVELOCITY_GUN")
|
|
command_center = Find_Object_Type("IMPERIAL_COMMAND_CENTER")
|
|
power = Find_Object_Type("POWER_GENERATOR_E")
|
|
research = Find_Object_Type("E_GROUND_RESEARCH_FACILITY")
|
|
bunker = Find_Object_Type("GARRISON_BUNKER_EMPIRE")
|
|
barracks = Find_Object_Type("E_GROUND_BARRACKS")
|
|
facotry = Find_Object_Type("E_GROUND_HEAVY_VEHICLE_FACTORY")
|
|
array = Find_Object_Type("COMMUNICATIONS_ARRAY_E")
|
|
shuttle = Find_Object_Type("LANDED_EMPIRE_SHUTTLE")
|
|
platform = Find_Object_Type("EMPIRE_LANDING_PLATFORM_2X")
|
|
build_pad = Find_Object_Type("SKIRMISH_BUILD_PAD")
|
|
turret = Find_Object_Type("EMPIRE_ANTI_INFANTRY_TURRET")
|
|
reinforcement_point = Find_Object_Type("REINFORCEMENT_POINT_EMPIRE")
|
|
|
|
end
|
|
|
|
|
|
function State_Init(message)
|
|
|
|
if (move_command == true) then
|
|
|
|
empire_reveal = FogOfWar.Reveal_All(empire_player)
|
|
rebel_reveal = FogOfWar.Reveal_All(rebel_player)
|
|
uw_reveal = FogOfWar.Reveal_All(underworld_player)
|
|
|
|
underworld_player.Give_Money(10000)
|
|
|
|
controller = Find_First_Object("FELUCIA_DEMO_CONTROLLER")
|
|
|
|
empire_unit_list = Find_All_Objects_Of_Type(empire_player)
|
|
empire_goto = Find_Hint("STORY_TRIGGER_ZONE_00", "empiregoto")
|
|
|
|
uw_unit_list = Find_All_Objects_Of_Type(underworld_player)
|
|
|
|
--MessageBox("Fleets Defined")
|
|
|
|
move_command = false
|
|
|
|
current_cinematic_thread = Create_Thread("Intro_Cinematic")
|
|
end
|
|
|
|
end
|
|
|
|
function State_Demo_Bombard_Started(message)
|
|
if message == OnEnter then
|
|
Create_Thread("Bombardment_Cinematic")
|
|
end
|
|
end
|
|
|
|
function Move_Units(list)
|
|
for k, unit in pairs(list) do
|
|
if TestValid(unit) then
|
|
if unit.Is_Category("Infantry") or unit.Is_Category("Vehicle") then
|
|
if not
|
|
-- (unit.Get_Type() == wall_corner) and not
|
|
-- (unit.Get_Type() == wall_inside_corner) and not
|
|
-- (unit.Get_Type() == wall) and not
|
|
-- (unit.Get_Type() == turbo_tower) and not
|
|
-- (unit.Get_Type() == hv_gun) and not
|
|
-- (unit.Get_Type() == command_center) and not
|
|
-- (unit.Get_Type() == power) and not
|
|
-- (unit.Get_Type() == research) and not
|
|
-- (unit.Get_Type() == bunker) and not
|
|
-- (unit.Get_Type() == barracks) and not
|
|
-- (unit.Get_Type() == facotry) and not
|
|
-- (unit.Get_Type() == array) and not
|
|
-- (unit.Get_Type() == shuttle) and not
|
|
-- (unit.Get_Type() == platform) and not
|
|
-- (unit.Get_Type() == build_pad) and not
|
|
-- (unit.Get_Type() == turret) and not
|
|
-- (unit.Get_Type() == reinforcement_point) and not
|
|
(unit.Get_Type() == stormtrooper) then
|
|
unit.Move_To(empire_goto.Get_Position())
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function Story_Handle_Esc()
|
|
if current_cinematic_thread ~= nil then
|
|
Thread.Kill(current_cinematic_thread)
|
|
current_cinematic_thread = nil
|
|
Create_Thread("End_Camera")
|
|
end
|
|
end
|
|
|
|
function Make_Invulnerable(list, condition)
|
|
for k, unit in pairs(list) do
|
|
if TestValid(unit) then
|
|
if invulnerable == true then
|
|
unit.Make_Invulnerable(true)
|
|
else
|
|
unit.Make_Invulnerable(false)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- ##########################################################################################
|
|
-- Intro Cinematic functions
|
|
-- ##########################################################################################
|
|
|
|
function Intro_Cinematic()
|
|
invulnerable = true
|
|
Create_Thread("Make_Invulnerable", uw_unit_list, invulnerable)
|
|
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Start_Cinematic_Camera()
|
|
Letter_Box_In(2)
|
|
|
|
--Sleep(1)
|
|
|
|
tyber = Find_First_Object("TYBER_ZANN")
|
|
|
|
Transition_Cinematic_Camera_Key(tyber, 7, 50, 35, 135, 1, 1, 1, 0)
|
|
Transition_Cinematic_Target_Key(tyber, 5, 0, 0, 10, 0, 0, 0, 0)
|
|
Sleep(7)
|
|
|
|
Transition_Cinematic_Camera_Key(tyber, 5, 50, 35, 225, 1, 1, 1, 0)
|
|
|
|
Sleep(4.5)
|
|
|
|
while true do
|
|
camera_offset = camera_offset + 90
|
|
Transition_Cinematic_Camera_Key(tyber, 5, 50, 35, camera_offset, 1, 1, 1, 0)
|
|
|
|
if camera_offset == 315 then
|
|
camera_offset = -45
|
|
end
|
|
|
|
Sleep(4.5)
|
|
end
|
|
|
|
end
|
|
|
|
function End_Camera()
|
|
Transition_To_Tactical_Camera(2)
|
|
Letter_Box_Out(2)
|
|
Sleep(2)
|
|
Lock_Controls(0)
|
|
End_Cinematic_Camera()
|
|
Suspend_AI(0)
|
|
|
|
invulnerable = false
|
|
Create_Thread("Make_Invulnerable", uw_unit_list, invulnerable)
|
|
end
|
|
|
|
-- ##########################################################################################
|
|
-- Orbital Bombardment Cinematic functions
|
|
-- ##########################################################################################
|
|
|
|
function Bombardment_Cinematic()
|
|
Fade_Screen_Out(0)
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Start_Cinematic_Camera()
|
|
Letter_Box_In(0)
|
|
|
|
Allow_Localized_SFX(false)
|
|
Weather_Audio_Pause(true)
|
|
Enable_Fog(false)
|
|
|
|
krayt = Find_Hint("PROP_KRAYT_CINE_UNIT", "firingkrayt")
|
|
interceptor = Find_First_Object("PROP_INTERCEPTOR_CINE_UNIT")
|
|
felucia = Find_First_Object("PROP_FELUCIA_PLANET_CINE_UNIT")
|
|
|
|
krayt.Prevent_AI_Usage(true)
|
|
|
|
interceptor.Play_SFX_Event("Structure_Magnepulse_Charge")
|
|
|
|
--Set_Cinematic_Camera_Key(krayt, 200, 10, -60, 1, 1, 1, 0)
|
|
Set_Cinematic_Camera_Key(krayt, 700, 15, 75, 1, 1, 1, 0)
|
|
Set_Cinematic_Target_Key(felucia, 0, 0, 0, 1, 1, 0, 0)
|
|
|
|
Fade_Screen_In(2)
|
|
--Transition_Cinematic_Camera_Key(krayt, 8, 200, 10, 45, 1, 1, 1, 0)
|
|
Transition_Cinematic_Camera_Key(krayt, 16, 200, 10, 45, 1, 1, 1, 0)
|
|
|
|
Sleep(2.60)
|
|
krayt.Play_SFX_Event("Structure_Magnepulse_Charge")
|
|
Sleep(4.30)
|
|
|
|
krayt.Play_Animation("Cinematic", false, 0)
|
|
Sleep(2.65)
|
|
krayt.Play_SFX_Event("Unit_Ion_Cannon_Fire")
|
|
Sleep(2.75)
|
|
krayt.Play_SFX_Event("Unit_Hyper_Velocity_Fire")
|
|
Sleep(2)
|
|
|
|
Transition_Cinematic_Target_Key(krayt, 8, 0, 0, 0, 0, 0, 0, 0)
|
|
Fade_Screen_Out(1)
|
|
|
|
Create_Thread("Move_Units", empire_unit_list)
|
|
Sleep(1)
|
|
|
|
Allow_Localized_SFX(true)
|
|
Weather_Audio_Pause(false)
|
|
-- Enable_Fog(true)
|
|
|
|
-- -- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
-- Set_Cinematic_Camera_Key(controller, 850, 35, 30, 1, 1, 0, 0)
|
|
-- -- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
|
|
-- Set_Cinematic_Target_Key(controller, 0, -20, 15, 1, 1, 0, 0)
|
|
|
|
Set_Cinematic_Camera_Key(controller, 700, 90, 15, 1, 1, 0, 0)
|
|
Set_Cinematic_Target_Key(controller, 0, 0, 0, 1, 1, 0, 0)
|
|
|
|
Fade_Screen_In(2)
|
|
|
|
-- -- Transition_Cinematic_Camera_Key(target_pos, time, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
-- Transition_Cinematic_Camera_Key(controller, 15, 850, 35, 100, 1, 1, 0, 0)
|
|
Transition_Cinematic_Camera_Key(controller, 7, 835, 47, 90, 1, 1, 0, 0)
|
|
|
|
Sleep(10)
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Lock_Controls(0)
|
|
Sleep(1)
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(0)
|
|
Suspend_AI(0)
|
|
Fade_Screen_In(1)
|
|
|
|
|
|
|
|
end |