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

209 lines
6.6 KiB
Lua

--/////////////////////////////////////////////////////////////////////////////////////////////////
--
-- (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:
--
-- $Author: Brian_Hayes $
--
-- $Change:
--
-- $DateTime:
--
-- $Revision:
--
--/////////////////////////////////////////////////////////////////////////////////////////////////
require("PGStoryMode")
-----------------------------------------------------------------------------------------------------------------------
-- Definitions -- This function is called once when the script is first created.
-----------------------------------------------------------------------------------------------------------------------
function Definitions()
DebugMessage("%s -- In Definitions", tostring(Script))
StoryModeEvents =
{
Tutorial_M05_Begin = State_Tutorial_M05_Begin,
Tutorial_M05_Sand_Crawler_Destroyed_04 = State_Tutorial_M05_Sand_Crawler_Destroyed
}
unit_list = {}
at_shield = false
--init_done = false
fog_id = nil
fog_id2 = nil
fog_id3 = nil
end
-----------------------------------------------------------------------------------------------------------------------
-- Function for Event: Tutorial_M05_Begin
-----------------------------------------------------------------------------------------------------------------------
function State_Tutorial_M05_Begin(message)
if message == OnEnter then
--MessageBox("]]] Tutorial M05 Begin")
unit_list = Find_All_Objects_With_Hint("reinforce1")
reinforce_point1 = unit_list[1]
-- Get Empire & Rebel Players
rebel_player = Find_Player("Rebel")
empire_player = Find_Player("Empire")
-- Make all objects with invulnerable hint, invulnerable
unit_list = Find_All_Objects_With_Hint("invulnerable")
for i,unit in pairs(unit_list) do
unit.Make_Invulnerable(true)
end
--init_done = true
Create_Thread("Mission_Thread") -- Created a separate thread so other states could activate!
unit_list = Find_All_Objects_Of_Type("JAWA_SANDCRAWLER")
sand_crawler = unit_list[1]
unit_list = Find_All_Objects_Of_Type("POWER_GENERATOR_R_M1")
power_generator = unit_list[1]
end
end
-----------------------------------------------------------------------------------------------------------------------
function Mission_Thread()
Sleep(4) -- wait for the letterbox to go away
Story_Event("TAKE_REINFORCEMENT_POINT")
while reinforce_point1.Get_Owner() ~= empire_player do
Sleep(2)
end
Story_Event("DEPLOY_SQUADS")
while true do
unit_list = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
DebugMessage("]]]] Stormtrooper teams = %d",table.getn(unit_list))
if table.getn(unit_list) >= 4 then
break
end
Sleep(2)
end
Force_Weather() -- Turn on sandstorms for a while
Sleep(2)
--MessageBox("SQUADS_DEPLOYED")
Story_Event("SQUADS_DEPLOYED")
Sleep(30)
--MessageBox("DESTROY_SAND_CRAWLER")
--Story_Event("DESTROY_SAND_CRAWLER")
if TestValid(sand_crawler) then
fog_id = FogOfWar.Reveal(empire_player,sand_crawler.Get_Position(),200,200)
end
while TestValid(sand_crawler) do
Sleep(2)
end
Sleep(2)
Story_Event("SAND_CRAWLER_DESTROYED")
--MessageBox("SAND_CRAWLER_DESTROYED")
-- wait for empire forces to get within sight of the rebel shield
at_shield_marker = Find_Hint("GENERIC_MARKER_LAND", "at-shield")
at_shield_dist = 200
Register_Prox(at_shield_marker,Prox_Shield,at_shield_dist,empire_player)
while not at_shield do
Sleep(2)
end
--MessageBox("DESTROY_POWER_GENERATOR")
Story_Event("DESTROY_POWER_GENERATOR")
if TestValid(power_generator) then
fog_id2 = FogOfWar.Reveal(empire_player,power_generator.Get_Position(),200,200)
end
while TestValid(power_generator) do
Sleep(2)
end
Sleep(2)
--MessageBox("DESTROY_BASE")
Story_Event("DESTROY_BASE")
end
-----------------------------------------------------------------------------------------------------------------------
function Prox_Shield(prox_obj, trigger_obj)
prox_obj.Cancel_Event_Object_In_Range(Prox_Shield)
at_shield = true
end
-----------------------------------------------------------------------------------------------------------------------
function State_Tutorial_M05_Sand_Crawler_Destroyed(message)
if message == OnEnter then
--MessageBox("Revealing Rebel Base")
unit_list = Find_All_Objects_Of_Type("R_Ground_Base_Shield_Small")
if table.getn(unit_list) == 0 then
MessageBox("Couldn't find shield generator!")
end
shield_generator = unit_list[1]
fog_id3 = FogOfWar.Reveal(empire_player,shield_generator.Get_Position(),380,380)
end
end
-----------------------------------------------------------------------------------------------------------------------
-- Story_Mode_Service() - Processes each frame.
-----------------------------------------------------------------------------------------------------------------------
--function Story_Mode_Service()
-- if not init_done then
-- return
-- end
--end
-----------------------------------------------------------------------------------------------------------------------