Files
SoaFE/DATA/SCRIPTS/GAMEOBJECT/DEMO_FELUCIA_CONTROLLER.LUA
2026-02-28 14:00:45 -06:00

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