Initial commit

This commit is contained in:
2026-02-28 14:00:45 -06:00
commit 16d3170787
1134 changed files with 589134 additions and 0 deletions

View File

@@ -0,0 +1,853 @@
--/////////////////////////////////////////////////////////////////////////////////////////////////
--
-- (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_M01_Begin = State_Tutorial_M01_Begin,
Tutorial_M01_Give_Clearance_For_Imperial_Attack = State_Tutorial_M01_Construct_Done,
Tutorial_M01_Construct_01 = State_Tutorial_M01_Construct_01,
Tutorial_M01_Intro_07 = State_Tutorial_M01_Intro_07,
Tutorial_M01_Task_Two_04d = State_Highlight_On_Comm_Jammer,
Tutorial_M01_Task_Four_02a = State_Highlight_On_Turrets,
Tutorial_M01_Construct_Highlight_Off = State_Highlight_Off_AITurret,
Tutorial_M01_Intro_02 = State_First_Intro_Dialog_Done,
Tutorial_M01_Intro_04 = State_Second_Intro_Dialog_Done,
Tutorial_M01_Task_Five_02 = State_Remove_Base_Walls,
Tutorial_M01_Give_Hint_62 = State_Land_Troops_at_First_RP,
Tutorial_M01_Patrol_SpreadOut_Hint = State_Tutorial_M01_Patrol_SpreadOut_Hint
}
rebel_squad = {
"REBEL_MINI_INFANTRY_SQUAD"
}
rebel_base_squad = {
"REBEL_MINI_INFANTRY_SQUAD"
,"REBEL_TANK_BUSTER_SQUAD"
}
imperial_squad = {
"IMPERIAL_MEDIUM_STORMTROOPER_SQUAD"
}
spawn_range = 150
unit_list = {}
base_list = {}
imperial_assault_in_progress = false
init_done = false
comm_jammer_deleted = false
skipped_building = false
-- Keep track of how many reinforce points have been captured
rps_captured = 0
rp1_captured = false
rp2_captured = false
wookie_speed = 1
flag_wookie_clearing_breached = false
flag_wookie_clearing2_breached = false
flag_okay_SkipBuild_Mission = true
flag_given_HIGHLIGHT_OFF_03 = false
flag_rebel_wall_is_down = false
end
-----------------------------------------------------------------------------------------------------------------------
-- Function for Event: Tutorial_M01_Begin
-----------------------------------------------------------------------------------------------------------------------
function State_Tutorial_M01_Begin(message)
if message == OnEnter then
--MessageBox("]]]] LUA: State_Tutorial_M01_Begin")
-- Get Empire & Rebel Owners
rebel_player = Find_Player("Rebel")
empire_player = Find_Player("Empire")
neutral_player = Find_Player("Neutral")
-- Get the Markers
squad1_marker = Find_Hint("GENERIC_MARKER_LAND", "squad1")
rebel_base_marker = Find_Hint("GENERIC_MARKER_LAND", "rebelbase")
rebel_base_marker2 = Find_Hint("GENERIC_MARKER_LAND", "basespawn")
unit_list = Find_All_Objects_With_Hint("reinforce1");
reinforce_point1 = unit_list[1]
unit_list = Find_All_Objects_With_Hint("reinforce2");
reinforce_point2 = unit_list[1]
--skip_build_list = Find_All_Objects_With_Hint("skip-mission")
--skip_build_marker = skip_build_list[1]
skip_build_marker = Find_Hint("REINFORCEMENT_POINT_PLUS5_CAP","reinforce1")
-- Get the rebel base
base_list = Find_All_Objects_Of_Type("R_GROUND_BARRACKS")
rebel_base = base_list[1]
--rebel_base.Change_Owner(neutral_player)
base_list = Find_All_Objects_Of_Type("COMMUNICATIONS_ARRAY_R")
rebel_comm_array = base_list[1]
--rebel_comm_array.Change_Owner(neutral_player)
turret_01 = Find_Hint("REBEL_BUILD_PAD_BACTA","turret01")
turret_02 = Find_Hint("REBEL_BUILD_PAD_AITURRET","turret02")
reinforcement_point01 = Find_Hint("REINFORCEMENT_POINT_PLUS5_CAP","reinforce1")
if not reinforcement_point01 then
MessageBox("missing reinforcement_point01!!")
end
-- Set up first proximity triggers
Register_Prox(squad1_marker, Spawn_Squad_1, spawn_range, rebel_player)
Register_Prox(rebel_base_marker, Prox_Base, 200, rebel_player)
Register_Prox(skip_build_marker, Prox_SkipBuildMission, 150, rebel_player)
prox_reinforce01 = Find_Hint("GENERIC_MARKER_LAND","prox-reinforce01")
--Register_Prox(prox_reinforce01, Prox_Reinforcement_Hint, 150, rebel_player)
-- Trigger first marker
--Story_Event("HIGHLIGHT_ZONE_ONE")
init_done = true
--markers and stuff for cinematic
player_squad_list = Find_All_Objects_With_Hint("playersquad")
player_squad = player_squad_list[1]
wookiie_clearing_wookiie_01 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok1")
wookiie_clearing_wookiie_02 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok2")
wookiie_clearing_wookiie_03 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok3")
wookiie_clearing_wookiie_04 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok4")
wookiie_clearing_wookiie_05 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok5")
wookiie_clearing_wookiie_06 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok6")
wookiie_clearing_wookiie_07 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok7")
wookiie_clearing_wookiie_08 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok8")
wookiie_clearing_wookiie_09 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing-wok9")
wookiie_clearing02_wookiie_01 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing2-wok1")
wookiie_clearing02_wookiie_02 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing2-wok2")
wookiie_clearing02_wookiie_03 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing2-wok3")
wookiie_clearing02_wookiie_04 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing2-wok4")
wookiie_clearing02_wookiie_05 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wokclearing2-wok5")
wookiie_clearing_proxflag = Find_Hint("GENERIC_MARKER_LAND","wokclearing-proxflag")
wookiie_tree03= Find_Hint("GENERIC_MARKER_LAND","woktree-03")
wookiie_clearing2_proxflag = Find_Hint("GENERIC_MARKER_LAND","wokclearing2-proxflag")
wookiie_tree04= Find_Hint("GENERIC_MARKER_LAND","woktree-04")
mauler_01 = Find_Hint("TIE_CRAWLER","mauler01")
mauler_02 = Find_Hint("TIE_CRAWLER","mauler02")
mauler_01_goto = Find_Hint("GENERIC_MARKER_LAND","mauler01-goto")
mauler_02_goto = Find_Hint("GENERIC_MARKER_LAND","mauler02-goto")
if not (mauler_01 or mauler_02) then
MessageBox("cannot find maulers")
end
if not (mauler_01_goto or mauler_02_goto) then
MessageBox("cannot find maulers goto spots")
end
rebel_base_enemy_prox = Find_Hint("GENERIC_MARKER_LAND","prox-imperials-nearby")
Register_Prox(wookiie_tree03, Enter_Wookie_Tree, 10, neutral_player)
Register_Prox(wookiie_tree04, Enter_Wookie_Tree, 10, neutral_player)
Register_Prox(wookiie_clearing_proxflag, Clearing_Wookies_Retreat, 50, rebel_player)
Register_Prox(wookiie_clearing2_proxflag, Clearing2_Wookies_Retreat, 50, rebel_player)
--Register_Prox(rebel_base_enemy_prox, Empire_Attacking, 100, empire_player)
Create_Thread("Intro_Cinematic")
end
end
-----------------------------------------------------------------------------------------------------------------------
-- JDG OPENING CINEMATIC STUFF HERE
-----------------------------------------------------------------------------------------------------------------------
function Intro_Cinematic()
-- intro cine function
cine_start = Find_Hint("GENERIC_MARKER_LAND","empire-landing-cine")
Point_Camera_At(cine_start)
Start_Cinematic_Camera()
Resume_Mode_Based_Music()
walker_01 = Find_Hint("AT_ST_WALKER","walker01")
walker_02 = Find_Hint("AT_ST_WALKER","walker02")
walker_01_goto = Find_Hint("GENERIC_MARKER_LAND","walker01-goto")
walker_02_face = Find_Hint("GENERIC_MARKER_LAND","walker02-face")
walker_01.Move_To(walker_01_goto)
Sleep(1)
Fade_Screen_In(1)
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
Set_Cinematic_Camera_Key(cine_start, 500, 20, 350, 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(cine_start, 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(cine_start, 8, 400, 30, 350, 1, 0, 0, 0)
--imperial_squad
ReinforceList(imperial_squad, cine_start.Get_Position(), empire_player, false, true)
Story_Event("CUE_FIRST_INTRO_DIALOG")
--Hint: Imperial forces have detected the Rebel presence here on the surface of Kashyyyk.
--You will need to gather your troops and defend the Alliance base on this planet.
Sleep(1.5)
walker_02.Turn_To_Face(walker_02_face)
Sleep(2)
cine_start.Play_SFX_Event("Unit_Shuttle_Landing_3")
Sleep(2)
walker_02.Turn_To_Face(walker_01)
end
function State_First_Intro_Dialog_Done(message)
if message == OnEnter then
Sleep(2)
Fade_Screen_Out(1)
Create_Thread("Cine_Patrol_PatrolAway")
Sleep(1)
Story_Event("CUE_SECOND_INTRO_DIALOG")
Fade_Screen_In(1)
Set_Cinematic_Camera_Key(player_squad, 250, 12, 30, 1, player_squad, 1, 0)
-- Set_Cinematic_Target_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
Set_Cinematic_Target_Key(player_squad, 0, 0, 0, 0, player_squad, 1, 0)
Create_Thread("Cine_Wookies_Run_Away")
end
end
function State_Second_Intro_Dialog_Done(message)
if message == OnEnter then
Point_Camera_At(player_squad)
End_Cinematic_Camera()
Letter_Box_Out(.5)
Lock_Controls(0)
Suspend_AI(0)
end
end
function Cine_Patrol_PatrolAway()
patrol_goto1 = Find_Hint("GENERIC_MARKER_LAND","patrol-goto1")
patrol_goto2 = Find_Hint("GENERIC_MARKER_LAND","patrol-goto2")
--patrol_goto3 = Find_Hint("GENERIC_MARKER_LAND","patrol-goto3")
patrol_finalface = Find_Hint("GENERIC_MARKER_LAND","patrol-finalfacespot")
--player_squad.Move_To(patrol_goto1)
--player_squad.Move_To(patrol_goto2)
--player_squad.Move_To(patrol_goto3)
Formation_Move(player_squad, patrol_goto1)
Formation_Move(player_squad, patrol_goto2)
--Formation_Move(player_squad, patrol_goto3)
player_squad.Turn_To_Face(patrol_finalface)
end
function Cine_Wookies_Run_Away()
--MessageBox("Cine_Wookies_Run_Away hit!!")
wookie_01 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wok1")
wookie_02 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wok2")
wookie_03 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wok3")
wookie_04 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wok4")
wookie_05 = Find_Hint("WOOKIE_WARRIOR_UNARMED_SOLO","wok5")
wookie_01.Override_Max_Speed(wookie_speed)
wookie_02.Override_Max_Speed(wookie_speed)
wookie_03.Override_Max_Speed(wookie_speed)
wookie_04.Override_Max_Speed(wookie_speed)
wookie_05.Override_Max_Speed(wookie_speed)
wookie_tree_01 = Find_Hint("GENERIC_MARKER_LAND","woktree-01")
wookie_tree_02 = Find_Hint("GENERIC_MARKER_LAND","woktree-02")
Register_Prox(wookie_tree_01, Enter_Wookie_Tree, 10, neutral_player)
Register_Prox(wookie_tree_02, Enter_Wookie_Tree, 10, neutral_player)
Sleep(3)
wookie_01.Move_To(wookie_tree_01)
Sleep(.25)
wookie_02.Move_To(wookie_tree_01)
Sleep(.25)
wookie_03.Move_To(wookie_tree_01)
Sleep(1)
wookie_04.Move_To(wookie_tree_02)
Sleep(.25)
wookie_05.Move_To(wookie_tree_02)
end
function Enter_Wookie_Tree(prox_obj, trigger_obj)
if trigger_obj.Get_Type().Get_Name() == "WOOKIE_WARRIOR_UNARMED_SOLO" then
--MessageBox("deleting wookie?")
trigger_obj.Despawn()
end
end
function Clearing_Wookies_Retreat(prox_obj, trigger_obj)
if not flag_wookie_clearing_breached then
flag_wookie_clearing_breached = true
--MessageBox("Wookie clearing prox breached!!")
Create_Thread("Clearing_Wookies_Run_Away")
end
end
function Clearing_Wookies_Run_Away()
--MessageBox("Cine_Wookies_Run_Away hit!!")
wookiie_clearing_wookiie_01.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_02.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_03.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_04.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_05.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_06.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_07.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_08.Override_Max_Speed(wookie_speed)
wookiie_clearing_wookiie_09.Override_Max_Speed(wookie_speed)
--Sleep(1)
wookiie_clearing_wookiie_01.Move_To(wookiie_tree03)
Sleep(.05)
wookiie_clearing_wookiie_02.Move_To(wookiie_tree03)
Sleep(.25)
wookiie_clearing_wookiie_03.Move_To(wookiie_tree03)
Sleep(.05)
wookiie_clearing_wookiie_04.Move_To(wookiie_tree03)
Sleep(.25)
wookiie_clearing_wookiie_05.Move_To(wookiie_tree03)
Sleep(.05)
wookiie_clearing_wookiie_06.Move_To(wookiie_tree03)
Sleep(.05)
wookiie_clearing_wookiie_07.Move_To(wookiie_tree03)
Sleep(.25)
wookiie_clearing_wookiie_08.Move_To(wookiie_tree03)
Sleep(.05)
wookiie_clearing_wookiie_09.Move_To(wookiie_tree03)
Sleep(.25)
end
function Clearing2_Wookies_Retreat(prox_obj, trigger_obj)
if not flag_wookie_clearing2_breached then
flag_wookie_clearing2_breached = true
--MessageBox("Wookie clearing2 prox breached!!")
Create_Thread("Clearing2_Wookies_Run_Away")
end
end
function Clearing2_Wookies_Run_Away()
--MessageBox("Clearing2_Wookies_Retreat hit!!")
wookiie_clearing02_wookiie_01.Override_Max_Speed(wookie_speed)
wookiie_clearing02_wookiie_02.Override_Max_Speed(wookie_speed)
wookiie_clearing02_wookiie_03.Override_Max_Speed(wookie_speed)
wookiie_clearing02_wookiie_04.Override_Max_Speed(wookie_speed)
wookiie_clearing02_wookiie_05.Override_Max_Speed(wookie_speed)
--Sleep(1)
wookiie_clearing02_wookiie_01.Move_To(wookiie_tree04)
Sleep(.05)
wookiie_clearing02_wookiie_02.Move_To(wookiie_tree04)
Sleep(.25)
wookiie_clearing02_wookiie_03.Move_To(wookiie_tree04)
Sleep(.05)
wookiie_clearing02_wookiie_04.Move_To(wookiie_tree04)
Sleep(.25)
wookiie_clearing02_wookiie_05.Move_To(wookiie_tree04)
end
-----------------------------------------------------------------------------------------------------------------------
--jdg misc highlighting events (small arrows)
function State_Highlight_On_Comm_Jammer(message)
if message == OnEnter then
comm_jammer = Find_Hint("GENERIC_MARKER_LAND","comm-jammer")
if TestValid(comm_jammer) then
Add_Radar_Blip(comm_jammer, "comm_jammer_blip")
comm_jammer.Highlight_Small(true, -50)
end
end
end
function State_Highlight_On_Turrets(message)
if message == OnEnter then
turret_01_flag = Find_Hint("GENERIC_MARKER_LAND","bactatank")
if TestValid(turret_01_flag) then -- bacta tank
Add_Radar_Blip(turret_01_flag, "turret_01_blip")
turret_01_flag.Highlight_Small(true, -100)
end
turret_02_flag = Find_Hint("GENERIC_MARKER_LAND","ai-turret")
if TestValid(turret_02_flag) then -- anti-infantry turret
Add_Radar_Blip(turret_02_flag, "turret_02_blip")
turret_02_flag.Highlight_Small(true, -100)
end
end
end
function State_Highlight_Off_AITurret(message)
if message == OnEnter then
-- anti-infantry turret
--MessageBox("remove flag from ai turret")
Remove_Radar_Blip("turret_02_blip")
turret_02_flag.Highlight_Small(false)
end
end
------------------------------------------------------------------------------------------------------------
--jdg this destroys the walls at the rebel base that prevent getting too far ahead
function State_Remove_Base_Walls(message)
if message == OnEnter then
Create_Thread("Mauler01_Attack_Wall")
Create_Thread("Mauler02_Attack_Wall")
--make all rebels invulnerable for a few seconds
player_unit_list = Find_All_Objects_Of_Type(rebel_player)
for i, player_unit in pairs(player_unit_list) do
if TestValid(player_unit) then
--MessageBox("player_unit.Make_Invulnerable(true)")
player_unit.Make_Invulnerable(true)
end
end
end
end
function Mauler01_Attack_Wall()
mauler_01.Prevent_All_Fire(true)
mauler_01.Prevent_Opportunity_Fire(true)
--Formation_Move(mauler_01, mauler_01_goto)
--BlockOnCommand(mauler_01.Move_To(mauler_01_goto))
mauler_01.Move_To(mauler_01_goto)
Sleep(3)
mauler_01.Stop()
mauler_01.Activate_Ability("SELF_DESTRUCT", true)
end
function Mauler02_Attack_Wall()
mauler_02.Prevent_All_Fire(true)
mauler_02.Prevent_Opportunity_Fire(true)
--Formation_Move(mauler_02, mauler_02_goto)
--BlockOnCommand(mauler_02.Move_To(mauler_02_goto))
mauler_02.Move_To(mauler_02_goto)
Sleep(3)
mauler_02.Stop()
mauler_02.Activate_Ability("SELF_DESTRUCT", true)
end
function State_Tutorial_M01_Patrol_SpreadOut_Hint(message)
if message == OnEnter then
unit_list = Find_All_Objects_Of_Type("SQUAD_REBEL_TROOPER")
if table.getn(unit_list) == 0 then
MessageBox("Couldn't find the Rebel Troopers!")
else
for i,unit in pairs(unit_list) do
rebel_player.Select_Object(unit)
end
end
end
end
------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
function Spawn_Squad_1(prox_obj, trigger_obj)
-- Ignore transports which aparently have a HUGE bound
if trigger_obj.Get_Type().Get_Name() == "GALLOFREE_TRANSPORT_LANDING" then
return
end
-- Turn off the prox trigger otherwise we are going to have a whole lot 'o rebels running around
prox_obj.Cancel_Event_Object_In_Range(Spawn_Squad_1)
-- Spawn the first squad, and let the story script know
--MessageBox("]]]] Spawning Squad 1: triggering object = %s",trigger_obj.Get_Type().Get_Name())
unit_list = SpawnList(rebel_squad, squad1_marker, rebel_player, false, true)
Story_Event("SQUAD_ONE")
-- Set up next step
Story_Event("HIGHLIGHT_ZONE_TWO")
comm_jammer_list = Find_All_Objects_Of_Type("COMM_JAMMER")
if table.getn(comm_jammer_list) == 0 then
MessageBox("Couldn't find the Comm_Jammer object! Aborting.")
return
end
comm_jammer_obj = comm_jammer_list[1]
Register_Death_Event(comm_jammer_obj,Comm_Jammer_Destroyed)
Register_Prox(comm_jammer_obj, Prox_Jammer, 150, rebel_player)
end
-----------------------------------------------------------------------------------------------------------------------
function Comm_Jammer_Destroyed()
Story_Event("HIGHLIGHT_ZONE_THREE")
Remove_Radar_Blip("comm_jammer_blip")
comm_jammer.Highlight_Small(false)
if not comm_jammer_deleted then
Story_Event("JAMMER_VICTORY")
end
end
-----------------------------------------------------------------------------------------------------------------------
function Prox_SkipBuildMission(prox_obj, trigger_obj)
if flag_okay_SkipBuild_Mission == true then
prox_obj.Cancel_Event_Object_In_Range(Prox_SkipBuildMission)
Story_Event("HIGHLIGHT_ZONE_FOUR")
Story_Event("HINT_OVERRIDE")
skipped_building = true
end
end
-----------------------------------------------------------------------------------------------------------------------
function Prox_Base(prox_obj, trigger_obj)
if TestValid(trigger_obj) and trigger_obj.Get_Type() == Find_Object_Type("SQUAD_REBEL_TROOPER") then
-- turn off the trigger
prox_obj.Cancel_Event_Object_In_Range(Prox_Base)
comm_jammer_deleted = true
if TestValid(comm_jammer_obj) then
comm_jammer_obj.Take_Damage(10000)
end
turret_01.Change_Owner(rebel_player)
turret_02.Change_Owner(rebel_player)
rebel_comm_array.Change_Owner(rebel_player)
rebel_base.Change_Owner(rebel_player)
rebel_base.Set_Garrison_Spawn(true)
unit_list = SpawnList(rebel_base_squad, rebel_base_marker, rebel_player, false, true)
unit_list = SpawnList(rebel_base_squad, rebel_base_marker2, rebel_player, false, true)
--if not flag_given_HIGHLIGHT_OFF_03 then
--flag_given_HIGHLIGHT_OFF_03 = true
Story_Event("HIGHLIGHT_OFF_03")
--end
end
end
-----------------------------------------------------------------------------------------------------------------------
function Prox_Jammer(prox_obj, trigger_obj)
prox_obj.Cancel_Event_Object_In_Range(Prox_Jammer)
Story_Event("JAMMER_SPOTTED")
end
-----------------------------------------------------------------------------------------------------------------------
function State_Tutorial_M01_Construct_Done(message)
if message == OnEnter then
if not skipped_building then
--MessageBox("State_Tutorial_M01_Construct_Done HIT!!")
time_until_assault = 1
Register_Timer(Start_Imperial_Assault,time_until_assault)
end
end
end
-----------------------------------------------------------------------------------------------------------------------
function Start_Imperial_Assault()
--jdg causing a crash....commenting out for now
--skip_build_marker.Cancel_Event_Object_In_Range(Prox_SkipBuildMission)
flag_okay_SkipBuild_Mission = false
-- Send the imperials to the base
unit_list = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
for i,unit in pairs(unit_list) do
unit.Attack_Move(rebel_base)
end
--MessageBox("Starting assault")
Sleep(3)
Story_Event("IMPERIAL_ASSAULT")
Story_Event("HINT_OVERRIDE")
--Register_Timer(Send_Scouts,40) -- The imperial light scouts are next in line, but they are fast!
Register_Timer(Send_ATSTs,15)
imperial_assault_in_progress = true
end
function Send_ATSTs()
--MessageBox("Sending AT-ST's")
unit_list = Find_All_Objects_Of_Type("AT_ST_WALKER")
for i,unit in pairs(unit_list) do
unit.Attack_Move(rebel_base)
end
Story_Event("HINT_OVERRIDE")
Story_Event("ATST_ASSAULT")
end
--function Send_Scouts()
--MessageBox("Sending Scouts")
--unit_list = Find_All_Objects_Of_Type("SCOUT_TROOPER")
--for i,unit in pairs(unit_list) do
--unit.Attack_Move(rebel_base)
--end
--Story_Event("HINT_OVERRIDE")
--Story_Event("SCOUT_ASSAULT")
--end
function Player_Back_To_Vulnerable()
Sleep(1)
--remove rebels invulnerable status
player_unit_list = Find_All_Objects_Of_Type(rebel_player)
for i, player_unit in pairs(player_unit_list) do
if TestValid(player_unit) then
--MessageBox("Player_Back_To_Vulnerable")
player_unit.Make_Invulnerable(false)
end
end
end
-----------------------------------------------------------------------------------------------------------------------
-- Story_Mode_Service() - Processes each frame.
-----------------------------------------------------------------------------------------------------------------------
function Story_Mode_Service()
if not init_done then
return
end
-- If all the infantry are killed, rebels lose
unit_list = Find_All_Objects_Of_Type("REBEL_TROOPER_TEAM")
plex_list = Find_All_Objects_Of_Type("PLEX_SOLDIER_TEAM")
if (table.getn(unit_list) == 0) and (table.getn(plex_list) == 0) then
Story_Event("REBELS_LOSE")
end
if not flag_rebel_wall_is_down and not
(TestValid(mauler_01) or TestValid(mauler_02))then
flag_rebel_wall_is_down = true
wall_list = Find_All_Objects_With_Hint("tempwall")
for i,wall in pairs(wall_list) do
if TestValid(wall) then
--MessageBox("walls invulnerable == false")
wall.Make_Invulnerable(false)
--wall.Despawn()
wall.Take_Damage(10000)
end
end
Create_Thread("Player_Back_To_Vulnerable")
end
if imperial_assault_in_progress then
unit_list = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
if table.getn(unit_list) > 0 then
--DebugMessage("]]]] still stormtroopers alive")
return
end
unit_list = Find_All_Objects_Of_Type("AT_ST_WALKER")
if table.getn(unit_list) > 0 then
--DebugMessage("]]]] still AT-ST's alive")
return
end
unit_list = Find_All_Objects_Of_Type("SCOUT_TROOPER")
if table.getn(unit_list) > 0 then
--DebugMessage("]]]] still scouts alive")
return
end
--MessageBox("Imperial Assault was repelled")
imperial_assault_in_progress = false
Story_Event("HINT_OVERRIDE")
Story_Event("HIGHLIGHT_ZONE_FOUR")
--Register_Prox(reinforce_point1, Spawn_Troopers_01, 200, rebel_player)
Register_Prox(reinforce_point2, Spawn_Troopers_02, 200, rebel_player)
end
if not rp1_captured and reinforce_point1.Get_Owner() == rebel_player then
Story_Event("HINT_OVERRIDE")
Story_Event("STOP_HIGHLIGHT_RP1")
rp1_captured = true
rps_captured = rps_captured + 1
if rps_captured == 1 then
Story_Event("FIRST_REINFORCE_CAPTURED")
else
Story_Event("MISSION_COMPLETE")
end
end
if not rp2_captured and reinforce_point2.Get_Owner() == rebel_player then
Story_Event("HINT_OVERRIDE")
Story_Event("STOP_HIGHLIGHT_RP2")
rp2_captured = true
rps_captured = rps_captured + 1
if rps_captured == 1 then
Story_Event("FIRST_REINFORCE_CAPTURED")
else
Story_Event("MISSION_COMPLETE")
end
end
end
-----------------------------------------------------------------------------------------------------------------------
function Spawn_Troopers_01 (prox_obj, trigger_obj)
--MessageBox("TROOP_TRANSPORT_1")
--Story_Event("TROOP_TRANSPORT_1")
prox_obj.Cancel_Event_Object_In_Range(Spawn_Troopers_01)
end
function State_Land_Troops_at_First_RP(message)
if message == OnEnter then
ReinforceList(imperial_squad, reinforce_point1.Get_Position(), empire_player, false, true)
end
end
function Spawn_Troopers_02 (prox_obj, trigger_obj)
--MessageBox("TROOP_TRANSPORT_2")
Story_Event("TROOP_TRANSPORT_2")
prox_obj.Cancel_Event_Object_In_Range(Spawn_Troopers_02)
ReinforceList(imperial_squad, reinforce_point2.Get_Position(), empire_player, false, true)
end
function State_Tutorial_M01_Construct_01(message)
if message == OnEnter then
Story_Event("HINT_OVERRIDE")
--MessageBox("remove flag from bacta tank")
Remove_Radar_Blip("turret_01_blip")
turret_01_flag.Highlight_Small(false)
end
end
-----------------------------------------------------------------------------------------------------------------------
function State_Tutorial_M01_Intro_07(message)
if message == OnEnter then
--SQUAD_REBEL_TROOPER
unit_list = Find_All_Objects_Of_Type("SQUAD_REBEL_TROOPER")
if table.getn(unit_list) == 0 then
MessageBox("Couldn't find the Rebel Troopers!")
else
for i,unit in pairs(unit_list) do
rebel_player.Select_Object(unit)
end
end
end
end
-----------------------------------------------------------------------------------------------------------------------