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

3579 lines
109 KiB
Lua
Raw Permalink Blame History

-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Underworld_ActII_M06_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_Underworld_ActII_M06_LAND.lua $
--
-- Original Author: Dan Etter
--
-- $Author: Brian_Hayes $
--
-- $Change: 637819 $
--
-- $DateTime: 2017/03/22 10:16:16 $
--
-- $Revision: #1 $
--
--/////////////////////////////////////////////////////////////////////////////////////////////////
require("PGStoryMode")
require("PGSpawnUnits")
require("PGStateMachine")
--
-- Definitions -- This function is called once when the script is first created.
--
function Definitions()
StoryModeEvents =
{
Underworld_A02M06_Begin = State_Underworld_A02M06_Begin,
UM06_DIALOG_IntroCine_Line07_Remove_Text = State_UM06_DIALOG_IntroCine_Line07_Remove_Text,
Underworld_A02M06_Victory_Trigger = State_Underworld_A02M06_Victory_Trigger,
UM06_OBJECTIVE_ADD_Destroy_Prison01_PowerGenerator = State_OBJECTIVE_ADD_Destroy_Prison01_PowerGenerator,
UM06_DIALOG_NightSister_Greets_Tyber_Remove_Text = State_UM06_DIALOG_NightSister_Greets_Tyber_Remove_Text,
UM06_DIALOG_NightSister_Greets_Tyber_Line2_Remove_Text = State_UM06_DIALOG_NightSister_Greets_Tyber_Line2_Remove_Text,
UM06_DIALOG_NightSister_Greets_Tyber_Line3_Remove_Text = State_UM06_DIALOG_NightSister_Greets_Tyber_Line3_Remove_Text,
UM06_DIALOG_NightSister_Greets_Tyber_Line4_Remove_Text = State_UM06_DIALOG_NightSister_Greets_Tyber_Line4_Remove_Text,
UM06_DIALOG_NightSister_Greets_Tyber_Line5_Remove_Text = State_UM06_DIALOG_NightSister_Greets_Tyber_Line5_Remove_Text,
UM06_DIALOG_NightSister_Greets_Tyber_Line6_Remove_Text = State_UM06_DIALOG_NightSister_Greets_Tyber_Line6_Remove_Text,
UM06_DIALOG_NightSister_Greets_Tyber_Line7_Remove_Text = State_UM06_DIALOG_NightSister_Greets_Tyber_Line7_Remove_Text,
UM06_OBJECTIVE_ADD_Destroy_Singing_Mountains_Nightsister_Prison = State_UM06_OBJECTIVE_ADD_Destroy_Singing_Mountains_Nightsister_Prison,
UM06_OBJECTIVE_ADD_Destroy_Prison02 = State_UM06_OBJECTIVE_ADD_Destroy_Prison02,
UM06_OBJECTIVE_ADD_Destroy_Prison03 = State_UM06_OBJECTIVE_ADD_Destroy_Prison03,
UM06_OBJECTIVE_ADD_Destroy_Governors_Quarters = State_UM06_OBJECTIVE_ADD_Destroy_Governors_Quarters,
UM06_DIALOG_Silri_Meets_Tyber_Line01_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line01_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line02_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line02_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line03_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line03_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line04_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line04_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line05_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line05_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line06_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line06_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line07_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line07_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line08_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line08_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line09_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line09_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line10_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line10_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line11_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line11_Remove_Text,
UM06_DIALOG_Silri_Meets_Tyber_Line12_Remove_Text = State_UM06_DIALOG_Silri_Meets_Tyber_Line12_Remove_Text,
UM06_DIALOG_Finale_Line01_Remove_Text = State_UM06_DIALOG_Finale_Line01_Remove_Text,
UM06_DIALOG_Finale_Line02_Remove_Text = State_UM06_DIALOG_Finale_Line02_Remove_Text,
UM06_DIALOG_Finale_Line03_Remove_Text = State_UM06_DIALOG_Finale_Line03_Remove_Text,
UM06_DIALOG_Finale_Line04_Remove_Text = State_UM06_DIALOG_Finale_Line04_Remove_Text,
UM06_DIALOG_Finale_Line05_Remove_Text = State_UM06_DIALOG_Finale_Line05_Remove_Text,
UM06_DIALOG_Finale_Line06_Remove_Text = State_UM06_DIALOG_Finale_Line06_Remove_Text,
}
empire_prison01_list = {
"DARK_TROOPER_PHASEIII"
,"DARK_TROOPER_PHASEIII"
,"DARK_TROOPER_PHASEIII"
}
empire_prison03_list01 = {
"IMPERIAL_ARTILLERY_CORP"
,"IMPERIAL_HEAVY_SCOUT_SQUAD"
}
empire_prison03_list02 = {
"IMPERIAL_STORMTROOPER_SQUAD"
,"IMPERIAL_STORMTROOPER_SQUAD"
}
possible_prisoners_list = {
"UM06_Prisoner_Geonosian",
"UM06_Prisoner_Rebel_Infantry",
"UM06_Prisoner_Rebel_Tank_Buster",
"UM06_Prisoner_Pirate_Soldier",
"UM06_Prisoner_Pirate_PLEX",
"UM06_Prisoner_Ewok",
"UM06_Prisoner_Gungan",
"UM06_Prisoner_Wookie",
"UM06_Prisoner_Jawa_Scout",
"UM06_Prisoner_Mon_Calamari_Civ",
"UM06_Prisoner_Bothan_Civ",
}
forced_prisoner_list = {
"UM06_Prisoner_Ewok_Handler"
}
prisoner_spawn_list = {}
--jdg cheat flags
flag_skip_intro = false
underworld = Find_Player("Underworld")
empire = Find_Player("Empire")
rebel = Find_Player("Rebel")
neutral = Find_Player("Neutral")
hostile = Find_Player("Hostile")
--landing_transport = Find_Object_Type("MILLENNIUM_FALCON_LANDING")
--spawn_troops = true
--gate_down = false
--jug_prox_gate = false
prison_2_power_down = false
prison_2_power_identified = false
singing_tripped = true
frenzied_tripped = true
misty_tripped = true
governors_quarters_identified = false
victory_triggered = false
group1_rancor_location_list = {}
group2_rancor_location_list = {}
group3_rancor_location_list = {}
group4_rancor_location_list = {}
flag_group1rancors_guarding = true
flag_group2rancors_guarding = true
flag_group3rancors_guarding = true
flag_group4rancors_guarding = true
flag_governor_dead = false
flag_flyguard01_to_ai = false
flag_okay_to_reinforce = true
flag_first_imperial_reinforcement = true
flag_p3_prox_tripped = false
flag_first_river_crossing = true
flag_uplink_01_destroyed = false
flag_uplink_02_destroyed = false
flag_uplink_03_destroyed = false
group01_rancor_reveal_list = {}
guardtower_reveal_list = {}
turbotower_reveal_list = {}
governors_house_reveal = nil
rancors_in_use = {}
sisters_in_use = {}
empire_reinforce_list = {}
const_highlight_timer = 5
pointguard_list = {}
gate_pointguard_list = {}
parked_vehicle_list = {}
group1_rancors = {}
group2_rancors = {}
group3_rancors = {}
group4_rancors = {}
prison01_turrets_list = {}
prison3_turret_list = {}
silris_guards = {}
end
function State_Underworld_A02M06_Begin (message)
if message == OnEnter then
--imperial_shuttle = Create_Cinematic_Transport("Imperial_Landing_Craft_Landing_Cinematic", empire.Get_ID(), Emp_Shuttle_Land_Pos, 180, 1, 0.25, 20, 1)
--rebel_shuttle1 = Create_Cinematic_Transport("Gallofree_Transport_Landing", rebel_player.Get_ID(), transport1_loc, 0, 1, 0.25, 15, 0)
GlobalValue.Set("Allow_AI_Controlled_Fog_Reveal", 0)
empire.Make_Ally(hostile)
rebel_reveal = FogOfWar.Reveal_All(rebel)
empire_reveal = FogOfWar.Reveal_All(empire)
--uw_reveal = FogOfWar.Reveal_All(underworld)
landing_spot = Find_Hint("STORY_TRIGGER_ZONE_00", "landingflag")
camera_loc1 = Find_Hint("STORY_TRIGGER_ZONE_00", "introcine1")
tyber_spawn = Find_Hint("STORY_TRIGGER_ZONE_00", "tyberspawn")
urai_spawn = Find_Hint("STORY_TRIGGER_ZONE_00", "uraispawn")
tyber_goto1 = Find_Hint("STORY_TRIGGER_ZONE_00", "tybergoto1")
urai_goto1 = Find_Hint("STORY_TRIGGER_ZONE_00", "uraigoto1")
sister_goto1 = Find_Hint("STORY_TRIGGER_ZONE_00", "sistergoto")
singing_prison = Find_First_Object("Imperial_Prison_Dathomir_Singing_Mountain")
frenzied_prison = Find_First_Object("Imperial_Prison_Dathomir_Frenzied_River")
misty_prison = Find_First_Object("Imperial_Prison_Dathomir_Misty_Falls")
singing_tripped = false
frenzied_tripped = false
misty_tripped = false
gate_pos_flag = Find_Hint("STORY_TRIGGER_ZONE_00", "gateloc")
gate_goto = Find_Hint("STORY_TRIGGER_ZONE_00", "gategoto")
gate_loc = gate_pos_flag.Get_Position()
gate = Create_Generic_Object ("EMPIRE_GATE_LARGE", gate_loc, empire)
gate.Teleport_And_Face(gate_pos_flag)
gate.Make_Invulnerable(true)
gate.Set_Cannot_Be_Killed(true)
--Create_Thread("Thread_Death_Monitor_Gate")
--put pointguards on guard duty
gate_pointguard_list = Find_All_Objects_With_Hint("gate-pointguard")
for i, gate_pointguard in pairs(gate_pointguard_list) do
if TestValid(gate_pointguard) then
gate_pointguard.Prevent_AI_Usage(true)
--pointguard.Guard_Target(pointguard.Get_Position())
gate_pointguard.Prevent_All_Fire(true)
gate_pointguard.Prevent_Opportunity_Fire(true)
end
end
--disable the trucks and stuff
parked_vehicle_list = Find_All_Objects_With_Hint("parked")
for i,parked_vehicle in pairs(parked_vehicle_list) do
parked_vehicle.Prevent_AI_Usage(true)
parked_vehicle.Prevent_All_Fire(true)
parked_vehicle.Prevent_Opportunity_Fire(true)
end
Create_Thread("Thread_Monitor_Parked_Vehicles_Status")
trooper_spawn = Find_Hint("STORY_TRIGGER_ZONE_00", "trooperspawn")
rancor_spawn_flag = Find_Hint("MARKER_GENERIC_BLUE", "group01-rancor-spawn")
group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for k, rancor1 in pairs(group1_rancors) do
if TestValid(rancor1) then
rancor1.Prevent_Opportunity_Fire(true)
--rancor1.Hide(true)
Register_Prox(rancor1, PROX_RancorGroup1_vs_Tyber_and_Urai, 75, underworld)
--define rancor starting positons here
group1_rancor_location_list[k] = rancor1.Get_Position()
rancor1.Teleport(rancor_spawn_flag)
end
end
group2_rancors = Find_All_Objects_With_Hint("group2-rancor")
for k, rancor2 in pairs(group2_rancors) do
if TestValid(rancor2) then
rancor2.Prevent_Opportunity_Fire(true)
Register_Prox(rancor2, PROX_RancorGroup2_vs_Tyber_and_Urai, 75, underworld)
--define rancor starting positons here
group2_rancor_location_list[k] = rancor2.Get_Position()
end
end
group3_rancors = Find_All_Objects_With_Hint("group3-rancor")
for k, rancor3 in pairs(group3_rancors) do
if TestValid(rancor3) then
rancor3.Prevent_Opportunity_Fire(true)
Register_Prox(rancor3, PROX_RancorGroup3_vs_Tyber_and_Urai, 75, underworld)
--define rancor starting positons here
group3_rancor_location_list[k] = rancor3.Get_Position()
end
end
group4_rancors = Find_All_Objects_With_Hint("group4-rancor")
for k, rancor4 in pairs(group4_rancors) do
if TestValid(rancor4) then
rancor4.Prevent_Opportunity_Fire(true)
Register_Prox(rancor4, PROX_RancorGroup4_vs_Tyber_and_Urai, 75, underworld)
--define rancor starting positons here
group4_rancor_location_list[k] = rancor4.Get_Position()
end
end
--Create_Thread("Thread_Group1Rancors_Start_Guarding")
Create_Thread("Thread_Group2Rancors_Start_Guarding")
Create_Thread("Thread_Group3Rancors_Start_Guarding")
Create_Thread("Thread_Group4Rancors_Start_Guarding")
--guard towers need to reveal stealthed units
guardtower_list = Find_All_Objects_Of_Type("PROP_GUARD_TOWER")
for i, guardtower in pairs(guardtower_list) do
if TestValid(guardtower) then
Register_Prox(guardtower, PROX_Reveal_Stealth, 200, underworld)
end
end
prison_1_power = Find_Hint("POWER_GENERATOR_E", "p1-power")
prison_2_power = Find_Hint("POWER_GENERATOR_E", "prison2power")
prison_3_power = Find_Hint("POWER_GENERATOR_E", "prison3power")
governors_power = Find_Hint("POWER_GENERATOR_E", "governors-power")
prison_2_power_identified = true
governors_quarters = Find_Hint("UM06_GOVERNORS_QUARTERS", "governorquarters")
if TestValid (governors_quarters) then
governors_quarters_identified = true
else
JoeMessage("UM06 Cannot find Governor's Quarters...aborting mission")
ScriptExit()
end
--jdg new definitions
proxflag_guardtower_hint = Find_Hint("MARKER_GENERIC_PURPLE", "proxflag-guardtower-hint")
Register_Prox(proxflag_guardtower_hint, PROX_Give_GuardTower_Hint, 100, underworld)
proxflag_rancor_hint = Find_Hint("MARKER_GENERIC_PURPLE", "proxflag-rancor-hint")
Register_Prox(proxflag_rancor_hint, PROX_Give_Rancor_Hint, 100, underworld)
proxflag_hint_backpath = Find_Hint("MARKER_GENERIC_PURPLE", "proxflag-hint-backpath")
Register_Prox(proxflag_hint_backpath, PROX_Give_Backpath_Hint, 100, underworld)
proxflag_dialog_prison01_frontdoor = Find_Hint("MARKER_GENERIC_PURPLE", "proxflag-dialog-prison01-frontdoor")
Register_Prox(proxflag_dialog_prison01_frontdoor, PROX_Dialog_Prison01_Frontdoor, 250, underworld)
proxflag_dialog_prison02_frontdoor = Find_Hint("MARKER_GENERIC_PURPLE", "proxflag-dialog-prison02-frontdoor")
Register_Prox(proxflag_dialog_prison02_frontdoor, PROX_Dialog_Prison02_Frontdoor, 100, underworld)
proxflag_dialog_governors_house = Find_Hint("MARKER_GENERIC_PURPLE", "proxflag-dialog-governors-house")
Register_Prox(proxflag_dialog_governors_house, PROX_Dialog_Governors_House, 100, underworld)
prison01_academy = Find_Hint("UM06_OFFICERS_QUARTERS", "prison01academy")
prison01_uplinkspawnspot = Find_Hint("MARKER_GENERIC_BLUE", "p1uplink-spawnspot")
prison01_uplink_goto01 = Find_Hint("MARKER_GENERIC_BLUE", "uplinkgoto01")
prison01_uplink_goto02 = Find_Hint("MARKER_GENERIC_BLUE", "uplinkgoto02")
prison01_uplink_goto03 = Find_Hint("MARKER_GENERIC_BLUE", "uplinkgoto03")
if not TestValid(proxflag_dialog_governors_house) then
JoeMessage("not proxflag_dialog_governors_house")
end
proxflag_spawn_at_governors_house = Find_Hint("MARKER_GENERIC_PURPLE", "prox-spawn-guards")
Register_Prox(proxflag_spawn_at_governors_house, PROX_Spawn_at_Governors_House, 100, underworld)
--stuff for prison 01 backpath patrols
--backpath_guard01 = Find_All_Objects_With_Hint("backpath-guard01")
--backpath_guard02 = Find_All_Objects_With_Hint("backpath-guard02")
--backpath_guard03 = Find_All_Objects_With_Hint("backpath-guard03")
--backpath_guard04 = Find_All_Objects_With_Hint("backpath-guard04")
--backpath_spot01 = Find_Hint("MARKER_GENERIC_BLUE", "backpath-spot01")
--backpath_spot02 = Find_Hint("MARKER_GENERIC_BLUE", "backpath-spot02")
--backpath_spot03 = Find_Hint("MARKER_GENERIC_BLUE", "backpath-spot03")
--Create_Thread("Thread_Prison01Guard01_Backpath_Patrols")
--Create_Thread("Thread_Prison01Guard02_Backpath_Patrols")
--Create_Thread("Thread_Prison01Guard03_Backpath_Patrols")
--Create_Thread("Thread_Prison01Guard04_Backpath_Patrols")
--PRISON 01 LZ STUFF
--prison01_transport_lz = Find_Hint("MARKER_GENERIC_YELLOW", "prison01-transport-lz")
transport_lz = Find_Hint("MARKER_GENERIC_YELLOW", "transport-lz")
--prison01_transport_platform = Find_Hint("EMPIRE_LANDING_PLATFORM_2X", "prison01-transport-platform")
transport_spawnflag = Find_Hint("MARKER_GENERIC_YELLOW", "transport-spawnflag")
uplink_station = Find_Hint("UPLINK_STATION", "uplink-station")
uplink_station02 = Find_Hint("UPLINK_STATION", "uplink-station02")
uplink_station03 = Find_Hint("UPLINK_STATION", "uplink-station03")
--prison03 lz stuff
proxflag_player_crossing_river = Find_Hint("MARKER_GENERIC_PURPLE", "proxflag-player-crossing-river")
prison03_lz01 = Find_Hint("MARKER_GENERIC_YELLOW", "landing-empire-shuttle01")
prison03_lz02 = Find_Hint("MARKER_GENERIC_YELLOW", "landing-empire-shuttle01")
Register_Prox(proxflag_player_crossing_river, PROX_Player_Crossing_River, 100, underworld)
--prison02 stuff
-- make prison02 turbo lasers indestructable
prison_2_turbolaser_list = Find_All_Objects_With_Hint("prison2turbolaser")
for i, turbolaser in pairs(prison_2_turbolaser_list) do
if TestValid(turbolaser) then
turbolaser.Make_Invulnerable(true)
end
end
--put pointguards on guard duty
pointguard_list = Find_All_Objects_With_Hint("pointguard")
for i, pointguard in pairs(pointguard_list) do
if TestValid(pointguard) then
pointguard.Prevent_AI_Usage(true)
pointguard.Guard_Target(pointguard.Get_Position())
end
end
--turn silri into a "prop" for now
silri = Find_Hint("SILRI", "silri")
if TestValid(silri) then
silri.Suspend_Locomotor(true)
silri.Prevent_AI_Usage(true)
silri.Prevent_All_Fire(true)
silri.Make_Invulnerable(true)
silri.Set_Cannot_Be_Killed(true)
silri.Prevent_Opportunity_Fire(true)
else
--MessageBox("UMO6 cannot find Silri...aborting mission...tell Joe Gernert immediately")
JoeMessage("UMO6 cannot find Silri...aborting mission...tell Joe Gernert immediately")
ScriptExit()
end
--definitions for mines/powerups
--refueling_pump01 = Find_Hint("REFUELING_PUMP", "mine01")
--Create_Thread("Death_Monitor_Pump01")
mine_list = Find_All_Objects_Of_Type("EMPIRE_GROUND_MINING_FACILITY")
for i, mine in pairs(mine_list) do
if TestValid(mine) then
Create_Thread("Death_Monitor_Mine", mine)
end
end
prison01_turrets_list = Find_All_Objects_With_Hint("p1-turret")
prison3_turret_list = Find_All_Objects_With_Hint("p3-turret")
silris_guards = Find_All_Objects_With_Hint("silri-pointguard")
Create_Thread("Death_Monitor_Prison1_Power")
Create_Thread("Death_Monitor_Prison2_Power")
Create_Thread("Death_Monitor_Prison3_Power")
Create_Thread("Death_Monitor_Governors_Power")
--defining flightpath waypoints here
--flightpath_01 = {}
--flightpath_01[1]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01a")
--flightpath_01[2]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01b")
--flightpath_01[3]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01c")
--flightpath_01[4]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01d")
--flightpath_01[5]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01e")
--flightpath_01[6]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01f")
--flightpath_01[7]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01g")
--flightpath_01[8]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01h")
--flightpath_01[9]= Find_Hint("MARKER_GENERIC_YELLOW", "flightpath-01i")
--for i, waypoint in pairs(flightpath_01) do
-- if TestValid(waypoint) then
-- Register_Prox(waypoint, PROX_Flightpath_01, 100, empire)
-- end
--end
--flyguard01_list = Find_All_Objects_With_Hint("flyguard-01")
--for i, flyguard01 in pairs(flyguard01_list) do
-- if TestValid(flyguard01) then
-- Register_Prox(flyguard01, PROX_Encountered_Heroes, 200, underworld)
-- end
--end
--defining stuff for spawning guys out of prison01 barracks
prison01_barracks = Find_Hint("E_GROUND_BARRACKS", "p01-barracks")
prison01_barracks_spawn = Find_Hint("MARKER_GENERIC_YELLOW", "p01-barracks-spawn")
if flag_skip_intro == false then
current_cinematic_thread = Create_Thread("Intro_Cinematic")
else
--fill in stuff needed even if intro is skipped.
tyber_list = Spawn_Unit(Find_Object_Type("UM06_TYBER_ZANN"), tyber_goto1, underworld)
urai_list = Spawn_Unit(Find_Object_Type("URAI_FEN"), urai_goto1, underworld)
underworld.Give_Money(10000)
tyber = Find_First_Object("UM06_TYBER_ZANN")
urai = urai_list[1]
tyber.Prevent_AI_Usage(true)
urai.Prevent_AI_Usage(true)
tyber.Turn_To_Face(urai_goto1)
urai.Turn_To_Face(tyber_goto1)
Point_Camera_At(tyber)
--Transition_To_Tactical_Camera(2)
--Sleep(2)
Lock_Controls(0)
End_Cinematic_Camera()
Letter_Box_Out(0)
Suspend_AI(0)
Create_Thread("Thread_Group1Rancors_Start_Guarding")
Create_Thread("Death_Monitor_Tyber")
Create_Thread("Death_Monitor_Urai")
Weather_Audio_Pause(false)
Allow_Localized_SFX(true)
Resume_Mode_Based_Music()
Fade_Screen_In(1)
Master_Volume_Restore()
end
end
end
function Death_Monitor_Mine(local_mine)
while TestValid(local_mine) do
Sleep(3)
end
Story_Event("UM06_MINING_FACILITY_DESTROYED_AI_NOTIFICATION")
underworld.Give_Money(5000)
end
function Story_Handle_Esc()
if current_cinematic_thread ~= nil then
Thread.Kill(current_cinematic_thread)
current_cinematic_thread = nil
Create_Thread("End_Camera")
Story_Event("UM06_ESCAPEKEY_PREVENT_INTRO_DIALOG_AI_NOTIFICATION")
end
end
function End_Camera()
Stop_All_Music()
Stop_All_Speech()
Remove_All_Text()
--gotta do some manipulation of starting transport shuttle
if TestValid(openin_cine_transport) then
openin_cine_transport.Despawn()
end
--now spawn in a pre-landed one
-- Create_Cinematic_Transport(object_type_name, player_id, transport_pos, zangle, phase_mode, anim_delta, idle_time, persist,hint)
openin_cine_transport = Create_Cinematic_Transport("UM06_Landing_Shuttle", underworld.Get_ID(), landing_spot, 60, 1, 1, 20, 1)
if not TestValid(tyber) then
tyber_list = Spawn_Unit(Find_Object_Type("UM06_TYBER_ZANN"), tyber_goto1, underworld)
tyber = Find_First_Object("UM06_TYBER_ZANN")
end
if not TestValid(urai) then
urai_list = Spawn_Unit(Find_Object_Type("URAI_FEN"), urai_goto1, underworld)
urai = urai_list[1]
end
--underworld.Give_Money(10000)
tyber.Prevent_AI_Usage(true)
urai.Prevent_AI_Usage(true)
tyber.Teleport_And_Face(tyber_goto1)
urai.Teleport_And_Face(urai_goto1)
tyber.Turn_To_Face(urai_goto1)
urai.Turn_To_Face(tyber_goto1)
Point_Camera_At(tyber)
--Transition_To_Tactical_Camera(2)
--Sleep(2)
Lock_Controls(0)
End_Cinematic_Camera()
Letter_Box_Out(0)
Suspend_AI(0)
Create_Thread("Thread_Group1Rancors_Start_Guarding")
Weather_Audio_Pause(false)
Allow_Localized_SFX(true)
Resume_Mode_Based_Music()
--Fade_Screen_In(1)
--Master_Volume_Restore()
Transition_To_Tactical_Camera(2)
Letter_Box_Out(2)
Sleep(2)
Lock_Controls(0)
End_Cinematic_Camera()
Suspend_AI(0)
--Sleep(5)
Create_Thread("Death_Monitor_Tyber")
Create_Thread("Death_Monitor_Urai")
Story_Event("UM06_Re_Enable_Victory_AI_NOTIFICATION")
end
function PROX_Encountered_Heroes(prox_obj, trigger_obj) --JET_PACK
--trigger_type = trigger_obj.Get_Type().Get_Name()
--if trigger_type == "UM06_TYBER_ZANN" or trigger_type == "URAI_FEN" or trigger_type == "UM06_Night_Sister" or trigger_type == "PRISONER_NIGHT_SISTER" then
if trigger_obj.Get_Owner() == underworld then
--see if they are in stealth
if not trigger_obj.Is_Ability_Active("STEALTH") then
--release him to the ai
for i, flyguard01 in pairs(flyguard01_list) do
if TestValid(flyguard01) then
flyguard01.Cancel_Event_Object_In_Range(PROX_Encountered_Heroes)
--flyguard01.Prevent_AI_Usage(false)
flyguard01.Attack_Move(trigger_obj)
end
end
--MessageBox("Fly guard should now attack heroes")
flag_flyguard01_to_ai = true
--cancel all prox events on waypoints
for i, waypoint in pairs(flightpath_01) do
if TestValid(waypoint) then
waypoint.Cancel_Event_Object_In_Range(PROX_Flightpath_01)
end
end
return
end
end
end
function PROX_Flightpath_01(prox_obj, trigger_obj) --JET_PACK
trigger_type = trigger_obj.Get_Type().Get_Name()
if trigger_type == "DARK_TROOPER_PHASEIII" then
if prox_obj == flightpath_01[1] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[2])
else
trigger_obj.Move_To(flightpath_01[2])
end
return
elseif prox_obj == flightpath_01[2] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[3])
else
trigger_obj.Move_To(flightpath_01[3])
end
return
elseif prox_obj == flightpath_01[3] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[4])
else
trigger_obj.Move_To(flightpath_01[4])
end
return
elseif prox_obj == flightpath_01[4] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[5])
else
trigger_obj.Move_To(flightpath_01[5])
end
return
elseif prox_obj == flightpath_01[5] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[6])
else
trigger_obj.Move_To(flightpath_01[6])
end
return
elseif prox_obj == flightpath_01[6] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[7])
else
trigger_obj.Move_To(flightpath_01[7])
end
return
elseif prox_obj == flightpath_01[7] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[8])
else
trigger_obj.Move_To(flightpath_01[8])
end
return
elseif prox_obj == flightpath_01[8] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[9])
else
trigger_obj.Move_To(flightpath_01[9])
end
return
elseif prox_obj == flightpath_01[9] and not flag_flyguard01_to_ai then
if trigger_obj.Is_Ability_Ready("JET_PACK") then
trigger_obj.Activate_Ability("JET_PACK", flightpath_01[1])
else
trigger_obj.Move_To(flightpath_01[1])
end
return
end
end
end
function Thread_Group1Rancors_Start_Guarding()
while (true) do
if (flag_group1rancors_guarding == true) then
local counter_rancors = 0
--group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
counter_rancors = counter_rancors + 1
if not rancor.Has_Attack_Target() then
rancor.Guard_Target(group1_rancor_location_list[i])
end
end
end
if counter_rancors == 0 then
--MessageBox("All Rancors Dead")
break
end
end
Sleep(15)
end
end
function Thread_Group2Rancors_Start_Guarding()
while (true) do
if (flag_group2rancors_guarding == true) then
local counter_rancors = 0
--group2_rancors = Find_All_Objects_With_Hint("group2-rancor")
for i, rancor in pairs(group2_rancors) do
if TestValid(rancor) then
counter_rancors = counter_rancors + 1
rancor.Guard_Target(group2_rancor_location_list[i])
end
end
if counter_rancors == 0 then
--MessageBox("All Rancors Dead")
break
end
end
Sleep(15)
end
end
function Thread_Group3Rancors_Start_Guarding()
while (true) do
if (flag_group3rancors_guarding == true) then
local counter_rancors = 0
--group3_rancors = Find_All_Objects_With_Hint("group3-rancor")
for i, rancor in pairs(group3_rancors) do
if TestValid(rancor) then
counter_rancors = counter_rancors + 1
rancor.Guard_Target(group3_rancor_location_list[i])
end
end
if counter_rancors == 0 then
--MessageBox("All Rancors Dead")
break
end
end
Sleep(15)
end
end
function Thread_Group4Rancors_Start_Guarding()
while (true) do
if (flag_group4rancors_guarding == true) then
local counter_rancors = 0
--group4_rancors = Find_All_Objects_With_Hint("group4-rancor")
for i, rancor in pairs(group4_rancors) do
if TestValid(rancor) then
counter_rancors = counter_rancors + 1
rancor.Guard_Target(group4_rancor_location_list[i])
end
end
if counter_rancors == 0 then
--MessageBox("All Rancors Dead")
break
end
end
Sleep(15)
end
end
function PROX_RancorGroup1_vs_Tyber_and_Urai(prox_obj, trigger_obj)
local flag_message_given = false
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
--check to see if Tyber and Urai are in stealth
if not trigger_obj.Is_Ability_Active("STEALTH") then
--group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
rancor.Cancel_Event_Object_In_Range(PROX_RancorGroup1_vs_Tyber_and_Urai)
end
end
if flag_message_given == false then
--MessageBox("Rancors have detected NON-STEALTHED unit...attacking")
flag_message_given = true
flag_group1rancors_guarding = false
end
--ALL RANCORS ATTACK
Create_Thread("Thread_Group1Rancors_Attack_Heroes", trigger_obj)
end
end
end
function Thread_Group1Rancors_Attack_Heroes(first_target)
if first_target == tyber then
second_target = urai
else
second_target = tyber
end
while TestValid(first_target) and not first_target.Is_Ability_Active("STEALTH") do
--group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
if TestValid (first_target) then
rancor.Attack_Target(first_target)
end
end
end
Sleep(5)
end
--do a distance check here
local distance_to_second_target = second_target.Get_Distance(first_target)
local max_distance_allowed = 100
if TestValid(first_target) and TestValid(second_target) then
if ( max_distance_allowed > distance_to_second_target) then
while TestValid(second_target) and not second_target.Is_Ability_Active("STEALTH") do
--group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
if TestValid (second_target) then
rancor.Attack_Target(second_target)
end
end
end
Sleep(5)
end
end
else
return --everyone is dead...exit and wait for mission loss events to take over
end
--MessageBox("Rancors returning to initial positions")
flag_group1rancors_guarding = true
--group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
rancor.Guard_Target(group1_rancor_location_list[i])
Register_Prox(rancor, PROX_RancorGroup1_vs_Tyber_and_Urai, 75, underworld)
end
end
end
function PROX_RancorGroup2_vs_Tyber_and_Urai(prox_obj, trigger_obj)
local flag_message_given = false
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
--check to see if Tyber and Urai are in stealth
if not trigger_obj.Is_Ability_Active("STEALTH") then
--group2_rancors = Find_All_Objects_With_Hint("group2-rancor")
for i, rancor in pairs(group2_rancors) do
if TestValid(rancor) then
rancor.Cancel_Event_Object_In_Range(PROX_RancorGroup2_vs_Tyber_and_Urai)
end
end
if flag_message_given == false then
--MessageBox("Rancors have detected NON-STEALTHED unit...attacking")
flag_message_given = true
flag_group2rancors_guarding = false
end
--ALL RANCORS ATTACK
Create_Thread("Thread_Group2Rancors_Attack_Heroes", trigger_obj)
end
end
end
function Thread_Group2Rancors_Attack_Heroes(first_target)
if first_target == tyber then
second_target = urai
else
second_target = tyber
end
while TestValid(first_target) and not first_target.Is_Ability_Active("STEALTH") do
--group2_rancors = Find_All_Objects_With_Hint("group2-rancor")
for i, rancor in pairs(group2_rancors) do
if TestValid(rancor) and TestValid (first_target) then
rancor.Attack_Target(first_target)
--Sleep(0.5)
end
end
Sleep(5)
end
--do a distance check here
if TestValid(first_target) and TestValid(second_target) then
local distance_to_second_target = second_target.Get_Distance(first_target)
local max_distance_allowed = 100
if ( max_distance_allowed > distance_to_second_target) then
while TestValid(second_target) and not second_target.Is_Ability_Active("STEALTH") do
--group2_rancors = Find_All_Objects_With_Hint("group2-rancor")
for i, rancor in pairs(group2_rancors) do
if TestValid(rancor) and TestValid (second_target) then
rancor.Attack_Target(second_target)
--Sleep(0.5)
end
end
Sleep(5)
end
end
else
return --everyone is dead...exit and wait for mission loss events to take over
end
--MessageBox("Rancors returning to initial positions")
flag_group2rancors_guarding = true
--group2_rancors = Find_All_Objects_With_Hint("group2-rancor")
for i, rancor in pairs(group2_rancors) do
if TestValid(rancor) then
rancor.Guard_Target(group2_rancor_location_list[i])
Register_Prox(rancor, PROX_RancorGroup2_vs_Tyber_and_Urai, 75, underworld)
end
end
end
function PROX_RancorGroup3_vs_Tyber_and_Urai(prox_obj, trigger_obj)
local flag_message_given = false
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
--check to see if Tyber and Urai are in stealth
if not trigger_obj.Is_Ability_Active("STEALTH") then
--group3_rancors = Find_All_Objects_With_Hint("group3-rancor")
for i, rancor in pairs(group3_rancors) do
if TestValid(rancor) then
rancor.Cancel_Event_Object_In_Range(PROX_RancorGroup3_vs_Tyber_and_Urai)
end
end
if flag_message_given == false then
--MessageBox("Rancors have detected NON-STEALTHED unit...attacking")
flag_message_given = true
flag_group3rancors_guarding = false
end
--ALL RANCORS ATTACK
Create_Thread("Thread_Group3Rancors_Attack_Heroes", trigger_obj)
end
end
end
function Thread_Group3Rancors_Attack_Heroes(first_target)
if first_target == tyber then
second_target = urai
else
second_target = tyber
end
while TestValid(first_target) and not first_target.Is_Ability_Active("STEALTH") do
--group3_rancors = Find_All_Objects_With_Hint("group3-rancor")
for i, rancor in pairs(group3_rancors) do
if TestValid(rancor) and TestValid (first_target) then
rancor.Attack_Target(first_target)
--Sleep(0.5)
end
end
Sleep(5)
end
--do a distance check here
if TestValid(first_target) and TestValid(second_target) then
local distance_to_second_target = second_target.Get_Distance(first_target)
local max_distance_allowed = 100
if ( max_distance_allowed > distance_to_second_target) then
while TestValid(second_target) and not second_target.Is_Ability_Active("STEALTH") do
--group3_rancors = Find_All_Objects_With_Hint("group3-rancor")
for i, rancor in pairs(group3_rancors) do
if TestValid(rancor) and TestValid (second_target) then
rancor.Attack_Target(second_target)
--Sleep(0.5)
end
end
Sleep(5)
end
end
else
return --everyone is dead...exit and wait for mission loss events to take over
end
--MessageBox("Rancors returning to initial positions")
flag_group3rancors_guarding = true
--group3_rancors = Find_All_Objects_With_Hint("group3-rancor")
for i, rancor in pairs(group3_rancors) do
if TestValid(rancor) then
rancor.Guard_Target(group3_rancor_location_list[i])
Register_Prox(rancor, PROX_RancorGroup3_vs_Tyber_and_Urai, 75, underworld)
end
end
end
function PROX_RancorGroup4_vs_Tyber_and_Urai(prox_obj, trigger_obj)
local flag_message_given = false
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
--check to see if Tyber and Urai are in stealth
if not trigger_obj.Is_Ability_Active("STEALTH") then
--group4_rancors = Find_All_Objects_With_Hint("group4-rancor")
for i, rancor in pairs(group4_rancors) do
if TestValid(rancor) then
rancor.Cancel_Event_Object_In_Range(PROX_RancorGroup4_vs_Tyber_and_Urai)
end
end
if flag_message_given == false then
--MessageBox("Rancors have detected NON-STEALTHED unit...attacking")
flag_message_given = true
flag_group4rancors_guarding = false
end
--ALL RANCORS ATTACK
Create_Thread("Thread_Group4Rancors_Attack_Heroes", trigger_obj)
end
end
end
function Thread_Group4Rancors_Attack_Heroes(first_target)
if first_target == tyber then
second_target = urai
else
second_target = tyber
end
while TestValid(first_target) and not first_target.Is_Ability_Active("STEALTH") do
--group4_rancors = Find_All_Objects_With_Hint("group4-rancor")
for i, rancor in pairs(group4_rancors) do
if TestValid(rancor) and TestValid (first_target) then
rancor.Attack_Target(first_target)
--Sleep(0.5)
end
end
Sleep(5)
end
--do a distance check here
if TestValid(first_target) and TestValid(second_target) then
local distance_to_second_target = second_target.Get_Distance(first_target)
local max_distance_allowed = 100
if ( max_distance_allowed > distance_to_second_target) then
while TestValid(second_target) and not second_target.Is_Ability_Active("STEALTH") do
--group4_rancors = Find_All_Objects_With_Hint("group3-rancor")
for i, rancor in pairs(group4_rancors) do
if TestValid(rancor) and TestValid (second_target) then
rancor.Attack_Target(second_target)
--Sleep(0.5)
end
end
Sleep(5)
end
end
else
return --everyone is dead...exit and wait for mission loss events to take over
end
--MessageBox("Rancors returning to initial positions")
flag_group4rancors_guarding = true
--group4_rancors = Find_All_Objects_With_Hint("group4-rancor")
for i, rancor in pairs(group4_rancors) do
if TestValid(rancor) then
rancor.Guard_Target(group4_rancor_location_list[i])
Register_Prox(rancor, PROX_RancorGroup4_vs_Tyber_and_Urai, 75, underworld)
end
end
end
function PROX_Give_GuardTower_Hint(prox_obj, trigger_obj)
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
prox_obj.Cancel_Event_Object_In_Range(PROX_Give_GuardTower_Hint)
Story_Event("UM06_GIVE_GUARDTOWER_HINT")
--HINT: The guard towers will reveal stealthed units.
guardtower01 = Find_Hint("PROP_GUARD_TOWER", "guardtower01")
if TestValid(guardtower01) then
Create_Thread("Thread_Highlight_Guardtower01", guardtower01)
end
end
end
function Thread_Highlight_Guardtower01(guardtower)
if TestValid(guardtower) then
guardtower.Highlight(true, 50)
end
Sleep(10)
if TestValid(guardtower) then
guardtower.Highlight(false)
end
end
function PROX_Give_Rancor_Hint(prox_obj, trigger_obj)
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
prox_obj.Cancel_Event_Object_In_Range(PROX_Give_Rancor_Hint)
--HINT: Use Tyber and Urai's Personal Cloaking Fields to sneak past the rancors.
Story_Event("UM06_GIVE_RANCOR_HINT")
tyber.Stop()
urai.Stop()
--reveal around the group1 rancors here
--group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
group01_rancor_reveal_list[i] = FogOfWar.Reveal(underworld, rancor, 250,250)
end
end
end
end
function PROX_Give_Backpath_Hint(prox_obj, trigger_obj)
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
prox_obj.Cancel_Event_Object_In_Range(PROX_Give_Backpath_Hint)
--Tyber Zann: Looks like this little path leads right into the back of the prison complex.
if TestValid(singing_prison) then
Story_Event("UM06_GIVE_BACKPATH_HINT")
end
end
end
function PROX_Dialog_Prison01_Frontdoor(prox_obj, trigger_obj)
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
prox_obj.Cancel_Event_Object_In_Range(PROX_Dialog_Prison01_Frontdoor)
if TestValid(prison_1_power) and TestValid(singing_prison) then
--Tyber Zann: Looks like this little path leads right into the back of the prison complex.
Story_Event("UM06_CUEDIALOG_PRISON01_FRONTDOOR")
--flag prison01 towers here
--Sleep(4)
--highlight_prison01_towers()
Create_Thread("Thread_Highlight_Prison01_Towers")
end
end
end
function PROX_Dialog_Prison02_Frontdoor(prox_obj, trigger_obj)
--if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
if trigger_obj.Get_Owner() == underworld then
prox_obj.Cancel_Event_Object_In_Range(PROX_Dialog_Prison02_Frontdoor)
if TestValid(prison_2_power) then
--TEXT_SPEECH_UW_ACT02_M06_42
--Urai Fen: Those guns will eat us alive if we don't disable them first.
Story_Event("UM06_CUEDIALOG_PRISON02_FRONTDOOR")
tyber.Stop()
urai.Stop()
--reveal the turbolaser towers here
--prison_2_turbolaser_list = Find_All_Objects_With_Hint("prison2turbolaser")
for k, turbolaser in pairs(prison_2_turbolaser_list) do
if TestValid(turbolaser) then
turbotower_reveal_list[k] = FogOfWar.Reveal(underworld, turbolaser, 250,250)
end
end
--radarblip the dam here
Add_Radar_Blip(prison_2_power, "prison_2_power_radarblip")
end
end
end
function PROX_Dialog_Governors_House(prox_obj, trigger_obj)
if trigger_obj.Get_Owner() == underworld then
--if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN"
--or trigger_obj.Get_Type().Get_Name() == "SILRI" then
prox_obj.Cancel_Event_Object_In_Range(PROX_Dialog_Governors_House)
--TEXT_SPEECH_UW_ACT02_M06_21
--Silri: That is the Imperial Governor<6F>s stronghold. Once he<68>s dead, the Empire will likely evacuate Dathomir.
--They can<61>t take us by force, and they won<6F>t surprise us again.
Story_Event("UM06_CUEDIALOG_GOVERNORS_HOUSE")
tyber.Stop()
urai.Stop()
silri.Stop()
governors_house_reveal = FogOfWar.Reveal(underworld, governors_quarters, 500,500)
end
end
function PROX_Player_Crossing_River(prox_obj, trigger_obj)
if trigger_obj.Get_Owner() == underworld then
prox_obj.Cancel_Event_Object_In_Range(PROX_Player_Crossing_River)
--land the shuttles at prison 03
--MessageBox("p3 prox tripped...")
Create_Thread("Thread_Player_Crossing_River")
flag_p3_prox_tripped = true
end
end
function Thread_Player_Crossing_River()
while (TestValid(uplink_station) or TestValid(uplink_station02) or TestValid(uplink_station03)) do
--MessageBox("p3 prox tripped...landing shuttles")
if flag_first_river_crossing == true then
flag_first_river_crossing = false
ReinforceList(empire_prison03_list01, prison03_lz01, empire, true, true, true)
ReinforceList(empire_prison03_list02, prison03_lz02, empire, true, true, true)
else
ReinforceList(empire_prison03_list01, prison03_lz01, empire, true, true, false)
ReinforceList(empire_prison03_list02, prison03_lz02, empire, true, true, false)
end
Sleep(90)
end
end
function PROX_Spawn_at_Governors_House(prox_obj, trigger_obj)
--if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN"
--or trigger_obj.Get_Type().Get_Name() == "SILRI" then
if trigger_obj.Get_Owner() == underworld then
prox_obj.Cancel_Event_Object_In_Range(PROX_Spawn_at_Governors_House)
Create_Thread("Thread_Spawn_at_Governors_House")
end
end
function Thread_Spawn_at_Governors_House()
local spawn_times = 0
local spawn_max = 3
while TestValid(governors_quarters) do
governor_spawnspot = Find_Hint("MARKER_GENERIC_BLUE", "finale-governor-spawn")
spawned_guard_list = Spawn_Unit(Find_Object_Type("IMPERIAL_GUARD_COMPANY"), governor_spawnspot, empire)
Create_Thread("Find_And_Attack",spawned_guard_list)
spawn_times = spawn_times + 1
if spawn_times >= spawn_max then
break
end
Sleep(10)
end
end
function PROX_Reveal_Stealth(prox_obj, trigger_obj)
if trigger_obj.Get_Type().Get_Name() == "UM06_TYBER_ZANN" or trigger_obj.Get_Type().Get_Name() == "URAI_FEN" then
if trigger_obj.Is_Ability_Active("STEALTH") then
--turn off stealth
trigger_obj.Activate_Ability("STEALTH", false)
end
end
end
function Thread_Highlight_Prison01_Towers()
prison01_tower_list = Find_All_Objects_With_Hint("p1-tower")
for i, guardtower in pairs(prison01_tower_list) do
if TestValid(guardtower) then
guardtower.Highlight(true, 50)
Add_Radar_Blip(guardtower, "somename_".. i)
--reveal around the group1 rancors here
guardtower_reveal_list[i] = FogOfWar.Reveal(underworld, guardtower, 250,250)
end
end
Sleep(10)
for i, guardtower in pairs(prison01_tower_list) do
if TestValid(guardtower) then
guardtower.Highlight(false)
Remove_Radar_Blip("somename_".. i)
end
end
end
function State_OBJECTIVE_ADD_Destroy_Prison01_PowerGenerator(message)
if message == OnEnter then
if TestValid(prison_1_power) then
prison_1_power.Highlight(true)
Add_Radar_Blip(prison_1_power, "radar_blip_prison_1_power")
--Create_Thread("Death_Monitor_Prison1_Power")
else
--MessageBox("Cannot find Prison_1_power...tell Dan Etter Immediately.")
end
end
end
function State_UM06_OBJECTIVE_ADD_Destroy_Singing_Mountains_Nightsister_Prison(message)
if message == OnEnter then
if TestValid(singing_prison) then
singing_prison.Highlight(true, 50)
Add_Radar_Blip(singing_prison, "radar_blip_singing_prison")
--Create_Thread("Death_Monitor_Prison1_Power")
else
--MessageBox("Cannot find singing_prison...tell Dan Etter Immediately.")
end
end
end
function State_UM06_OBJECTIVE_ADD_Destroy_Prison02(message)
if message == OnEnter then
if TestValid(frenzied_prison) then
frenzied_prison.Highlight(true, 50)
Add_Radar_Blip(frenzied_prison, "radar_blip_frenzied_prison")
else
JoeMessage("Cannot find frenzied_prison...tell Dan Etter Immediately.")
end
end
end
function State_UM06_OBJECTIVE_ADD_Destroy_Prison03(message)
if message == OnEnter then
if TestValid(misty_prison) then
misty_prison.Highlight(true, 50)
Add_Radar_Blip(misty_prison, "radar_blip_misty_prison")
else
JoeMessage("Cannot find misty_prison...tell Dan Etter Immediately.")
end
end
end
function State_UM06_OBJECTIVE_ADD_Destroy_Governors_Quarters(message)
if message == OnEnter then
if TestValid(governors_quarters) then
governors_quarters.Highlight(true, 50)
Add_Radar_Blip(governors_quarters, "radar_blip_gov_quarters")
else
JoeMessage("Cannot find governors_quarters...tell Dan Etter Immediately.")
end
end
end
function State_Underworld_A02M06_Victory_Trigger(message)
if message == OnEnter then
--MessageBox("Governors Quarters destroyed! Trigger Victory!")
end
end
function Story_Mode_Service()
--MessageBox("State Hit!")
if not TestValid(prison_2_power) then
if not prison_2_power_down and prison_2_power_identified then
prison_2_power_down = true
Create_Thread("Prison_2_Power_Down")
--paddlewheel.Play_Animation("Idle",false)
end
end
if not TestValid(singing_prison) and not singing_tripped then
singing_tripped = true
--MessageBox("Singing prison destroyed! Sending Message!")
Story_Event("TRIGGER_MISSION_06_SINGING")
Create_Thread("Thread_Cinematic_Tyber_Meets_Sisters")
gate.Make_Invulnerable(false)
gate.Set_Cannot_Be_Killed(false)
Create_Thread("Thread_Death_Monitor_Gate")
end
if not TestValid(frenzied_prison) and not frenzied_tripped then
frenzied_tripped = true
--MessageBox("Frenzied prison destroyed! Sending Message!")
Story_Event("TRIGGER_MISSION_06_FRENZIED")
Create_Thread("Thread_Spawn_Prison02_Sisters")
Create_Thread("Thread_Cinematic_Tyber_Meets_Silri")
end
if not TestValid(misty_prison) and not misty_tripped then
misty_tripped = true
--MessageBox("Misty prison destroyed! Sending Message!")
Story_Event("TRIGGER_MISSION_06_MISTY")
Create_Thread("Thread_Spawn_Prison03_Sisters")
Create_Thread("Thread_Spawn_Prisoners", 3) --the "2" param tells which prison to spawn at
end
if not TestValid(governors_quarters) and governors_quarters_identified and not victory_triggered then
victory_triggered = true
--MessageBox("Governors Quarters destroyed! Sending Message!")
--Story_Event("TRIGGER_MISSION_06_VICTORY")
Create_Thread("Thread_Cinematic_Finale")
end
end
function Thread_Spawn_Prison02_Sisters()
prison02_sister_spawnspot = Find_Hint("MARKER_GENERIC_BLUE", "prison02-sisterspawn")
prison02_sister01_goto = Find_Hint("MARKER_GENERIC_BLUE", "prison02-sister01goto")
prison02_sister02_goto = Find_Hint("MARKER_GENERIC_BLUE", "prison02-sister02goto")
prison02_sister03_goto = Find_Hint("MARKER_GENERIC_BLUE", "prison02-sister03goto")
p2sister1_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), prison02_sister_spawnspot, underworld)
for i,sister in pairs(p2sister1_list) do
--sister.Prevent_Opportunity_Fire(true)
sister.Move_To(prison02_sister01_goto)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
Sleep(0.5)
p2sister2_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), prison02_sister_spawnspot, underworld)
for i,sister in pairs(p2sister2_list) do
--sister.Prevent_Opportunity_Fire(true)
sister.Move_To(prison02_sister02_goto)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
Sleep(0.5)
p2sister3_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), prison02_sister_spawnspot, underworld)
for i,sister in pairs(p2sister3_list) do
--sister.Prevent_Opportunity_Fire(true)
sister.Move_To(prison02_sister03_goto)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
Sleep(0.5)
end
function Thread_Spawn_Prison03_Sisters()
prison03_sister_spawnspot = Find_Hint("MARKER_GENERIC_BLUE", "prison03-sisterspawn")
prison03_sister01_goto = Find_Hint("MARKER_GENERIC_BLUE", "prison03-sister01goto")
prison03_sister02_goto = Find_Hint("MARKER_GENERIC_BLUE", "prison03-sister02goto")
prison03_sister03_goto = Find_Hint("MARKER_GENERIC_BLUE", "prison03-sister03goto")
p3sister1_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), prison03_sister_spawnspot, underworld)
for i,sister in pairs(p3sister1_list) do
--sister.Prevent_Opportunity_Fire(true)
sister.Move_To(prison03_sister01_goto)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
Sleep(0.5)
p3sister2_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), prison03_sister_spawnspot, underworld)
for i,sister in pairs(p3sister2_list) do
--sister.Prevent_Opportunity_Fire(true)
sister.Move_To(prison03_sister02_goto)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
Sleep(0.5)
p3sister3_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), prison03_sister_spawnspot, underworld)
for i,sister in pairs(p3sister3_list) do
--sister.Prevent_Opportunity_Fire(true)
sister.Move_To(prison03_sister03_goto)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
Sleep(0.5)
Create_Thread("Thread_Highlight_Nightsisters")
end
function Prison_2_Power_Down()
if prison_2_power_down then
prison_2_turret_list = Find_All_Objects_With_Hint("prison2turret")
--prison_2_turbolaser_list = Find_All_Objects_With_Hint("prison2turbolaser")
for k, turret in pairs(prison_2_turret_list) do
if TestValid(turret) then
--MessageBox("Turret faction switched to neutral!")
turret.Change_Owner(neutral)
end
end
for k, turbolaser in pairs(prison_2_turbolaser_list) do
if TestValid(turbolaser) then
--MessageBox("turbolaser faction switched to neutral!")
turbolaser.Change_Owner(neutral)
end
end
end
end
function PROX_Rancor_NightSister(prox_obj, trigger_obj)
if trigger_obj.Get_Type().Get_Name() == "RANCOR_DARK_ALLY" then
if rancors_in_use[trigger_obj] then
return
end
rancors_in_use[trigger_obj] = true
if sisters_in_use[prox_obj] then
prox_obj.Cancel_Event_Object_In_Range(PROX_Rancor_NightSister)
return
end
sisters_in_use[prox_obj] = true
prox_obj.Cancel_Event_Object_In_Range(PROX_Rancor_NightSister)
--MessageBox("Night Sister tripped Rancor prox event.")
prox_obj.Make_Invulnerable(true)
trigger_obj.Make_Invulnerable(true)
--current_sister = prox_obj
local thread_info = {}
thread_info[1] = prox_obj
thread_info[2] = trigger_obj
Create_Thread("Mount_Rancor", thread_info)
end
end
function Mount_Rancor(thread_info)
ThreadValue.Set("rancor", thread_info[2])
ThreadValue.Set("current_sister", thread_info[1])
rancor = ThreadValue.Get("rancor");
current_sister = ThreadValue.Get("current_sister");
--MessageBox("Night Sister moving to rancor.")
if TestValid(rancor) then
--MessageBox("rancor is valid.")
if TestValid(current_sister) then
--MessageBox("Night Sister is valid.")
rancor.Stop()
rancor_loc = rancor.Get_Position()
BlockOnCommand(current_sister.Move_To(rancor_loc))
rancor = ThreadValue.Get("rancor");
current_sister = ThreadValue.Get("current_sister");
current_sister.Despawn()
night_sister = Create_Generic_Object("UM06_Night_Sister",rancor_loc,underworld)
if TestValid(night_sister) then
night_sister.Teleport_And_Face(rancor)
else
JoeMessage("night_sister coming back not valid")
end
rancor.Despawn()
end
end
end
-- ##########################################################################################
-- Cinematic functions
-- ##########################################################################################
function Thread_Cinematic_Finale()
Fade_Screen_Out(.5)
Suspend_AI(1)
Lock_Controls(1)
Start_Cinematic_Camera()
Letter_Box_In(0)
Cancel_Fast_Forward()
Sleep(0.5)
--Entering_Cinematic()
finale_tyber_startspot = Find_Hint("MARKER_GENERIC_BLUE", "finale-tyberspot")
finale_urai_startspot = Find_Hint("MARKER_GENERIC_BLUE", "finale-uraispot")
finale_silri_startspot = Find_Hint("MARKER_GENERIC_BLUE", "finale-silrispot")
finale_cuddles_startspot = Find_Hint("MARKER_GENERIC_BLUE", "finale-cuddlesspot")
governor_spawnspot = Find_Hint("MARKER_GENERIC_BLUE", "finale-governor-spawn")
governor_goto = Find_Hint("MARKER_GENERIC_BLUE", "finale-governor-goto")
tyber.Teleport_And_Face(finale_tyber_startspot)
urai.Teleport_And_Face(finale_urai_startspot)
silri.Teleport_And_Face(finale_silri_startspot)
tyber.In_End_Cinematic(true)
urai.In_End_Cinematic(true)
silri.In_End_Cinematic(true)
--get rid of any remaining imperial guards for a clean cinematic
--pointguard_list = Find_All_Objects_With_Hint("pointguard")
for i, pointguard in pairs(pointguard_list) do
if TestValid(pointguard) then
pointguard.Despawn()
end
end
cuddles = Find_First_Object("Cuddles_The_Rancor")
if not TestValid(cuddles) then
--MessageBox("not registering cuddles")
else
cuddles.Stop()
Sleep(1)
cuddles.Teleport_And_Face(finale_cuddles_startspot)
cuddles.Suspend_Locomotor(true)
cuddles.Prevent_AI_Usage(true)
cuddles.Prevent_All_Fire(true)
cuddles.Make_Invulnerable(true)
cuddles.Prevent_Opportunity_Fire(true)
cuddles.In_End_Cinematic(true)
end
Do_End_Cinematic_Cleanup()
--tyber.Suspend_Locomotor(true)
tyber.Prevent_AI_Usage(true)
tyber.Prevent_All_Fire(true)
tyber.Make_Invulnerable(true)
tyber.Prevent_Opportunity_Fire(true)
--urai.Suspend_Locomotor(true)
urai.Prevent_AI_Usage(true)
urai.Prevent_All_Fire(true)
urai.Make_Invulnerable(true)
urai.Prevent_Opportunity_Fire(true)
silri.Suspend_Locomotor(false)
silri.Prevent_AI_Usage(true)
silri.Prevent_All_Fire(false)
silri.Make_Invulnerable(true)
silri.Prevent_Opportunity_Fire(true)
silri.Change_Owner(underworld)
governor_list = Spawn_Unit(Find_Object_Type("GENERIC_FIELD_COMMANDER_EMPIRE"), governor_spawnspot, empire)
governor = governor_list[1]
governor.Prevent_All_Fire(true)
governor.Make_Invulnerable(true)
governor.Prevent_Opportunity_Fire(true)
Create_Thread("Death_Monitor_Governor", governor)
Create_Thread("Governor_Runs_Out")
silri.Attack_Target(governor)
finale_camera_start = Find_Hint("MARKER_GENERIC_RED", "finale-camera-start")
finale_target_start = Find_Hint("MARKER_GENERIC_RED", "finale-camera-target")
finale_camera_move01 = Find_Hint("MARKER_GENERIC_RED", "finale-camera-move01")
Transition_Cinematic_Camera_Key(finale_camera_start, 0, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(finale_target_start, 0, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Camera_Key(finale_camera_move01, 5, 0, 0, 0, 0, 0, 0, 0)
Sleep(0.5)
Fade_Screen_In(1)
Story_Event("UM06_CUE_FINALE_CONVERSATION")
--TEXT_SPEECH_UW_ACT02_M06_22
--Imperial Governor: Wait, please! You can ransom me!
--I have high-ranking friends! I've a family and they need me.
--I can help you, send a message to powerful people!
end
function Governor_Runs_Out()
if not TestValid(governor) then
JoeMessage("UM06 no governor ... tell Joe G immediately")
else
BlockOnCommand(governor.Move_To(governor_goto))
if TestValid(governor) and TestValid(silri) then
governor.Turn_To_Face(silri)
governor.Make_Invulnerable(false)
governor.Prevent_Opportunity_Fire(false)
end
end
end
function State_UM06_DIALOG_Finale_Line01_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_FINALE_CONVERSATION_LINE2")
--TEXT_SPEECH_UW_ACT02_M06_23
--Silri: You quartered in four bloody pieces sends a better message.
Transition_Cinematic_Target_Key(silri, 1, 0, 0, 0, 0, silri, 0, 0)
end
end
function State_UM06_DIALOG_Finale_Line02_Remove_Text (message)
if message == OnEnter then
if TestValid(governor) then
governor.Turn_To_Face(silri)
end
while (flag_governor_dead == false) do
Sleep(1)
end
Sleep(2)
finale_camera_tyber = Find_Hint("MARKER_GENERIC_RED", "finale-camera-tyber")
Transition_Cinematic_Camera_Key(finale_camera_tyber, 0, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
Story_Event("UM06_CUE_FINALE_CONVERSATION_LINE3")
--TEXT_SPEECH_UW_ACT02_M06_24
--Tyber Zann: There - you have your revenge, you know what you must do now.
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on tyber
end
end
function State_UM06_DIALOG_Finale_Line03_Remove_Text (message)
if message == OnEnter then
Transition_Cinematic_Target_Key(silri, 0, 0, 0, 10, 0, 0, 0, 0)
silri.Turn_To_Face(tyber)
Sleep(1)
Story_Event("UM06_CUE_FINALE_CONVERSATION_LINE4")
--TEXT_SPEECH_UW_ACT02_M06_25
--Silri: I will honor our bargain.
silri.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> silri talk anim
end
end
function State_UM06_DIALOG_Finale_Line04_Remove_Text (message)
if message == OnEnter then
finale_camera_penultimate = Find_Hint("MARKER_GENERIC_RED", "finale-show-tyber-and-urai")
--Transition_Cinematic_Camera_Key(finale_camera_penultimate, 1, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(urai, 0, 0, 0, 10, 0, 0, 0, 0)
finale_camera_final = Find_Hint("MARKER_GENERIC_RED", "finale-camera-final")
finale_target_final = Find_Hint("MARKER_GENERIC_RED", "finale-target-final")
Transition_Cinematic_Target_Key(finale_target_final, 3, 0, 0, 15, 0, 0, 0, 0)
Transition_Cinematic_Camera_Key(finale_camera_final, 3, 0, 0, 0, 0, 0, 0, 0)
urai.Turn_To_Face(tyber)
Story_Event("UM06_CUE_FINALE_CONVERSATION_LINE5")
--TEXT_SPEECH_UW_ACT02_M06_26
--Urai Fen: This is a mistake Tyber.
--She will betray you as soon as she gets what she wants.
urai.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> talk anim on urai
Sleep(0.5)
tyber.Turn_To_Face(urai)
end
end
function State_UM06_DIALOG_Finale_Line05_Remove_Text (message)
if message == OnEnter then
--Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
Story_Event("UM06_CUE_FINALE_CONVERSATION_LINE6")
--TEXT_SPEECH_UW_ACT02_M06_27
--Tyber Zann: We have to chance it - she can access the artifact,
--and I need to know what it contains before I use it to get past the Imperial forces and complete my plans.
--We can deal with her until then. Afterwards, you can kill her.
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on the tyber
end
end
function State_UM06_DIALOG_Finale_Line06_Remove_Text (message)
if message == OnEnter then
Fade_Screen_Out(0.5)
Sleep(1)
Fade_Screen_In(0.5)
End_Cinematic_Camera()
--Lock_Controls(0)
Letter_Box_Out(0)
Sleep(1)
Story_Event("TRIGGER_MISSION_06_VICTORY")
end
end
function Thread_Cinematic_Tyber_Meets_Silri()
Fade_Screen_Out(.5)
Suspend_AI(1)
Lock_Controls(1)
Start_Cinematic_Camera()
Letter_Box_In(0)
Cancel_Fast_Forward()
Entering_Cinematic()
Create_Thread("Thread_Spawn_Prisoners", 2) --the "2" param tells which prison to spawn at
Sleep(0.5)
--delete silri's guards if still present
--silris_guards = Find_All_Objects_With_Hint("silri-pointguard")
for i, pointguard in pairs(silris_guards) do
if TestValid(pointguard) then
pointguard.Despawn()
end
end
silrimidtro_camera_start = Find_Hint("MARKER_GENERIC_RED", "midtro01-showsilri-camerastart")
silrimidtro_target_start = Find_Hint("MARKER_GENERIC_RED", "silrimidtro-cameratarget")
silrimidtro_camera_move01 = Find_Hint("MARKER_GENERIC_RED", "silri-midtro-shot01-cameramove")
silrimidtro_tyber_startspot = Find_Hint("MARKER_GENERIC_BLUE", "silri-midtro-tyberstart")
silrimidtro_urai_startspot = Find_Hint("MARKER_GENERIC_BLUE", "silri-midtro-uraistart")
silrimidtro_tyber_gotospot = Find_Hint("MARKER_GENERIC_BLUE", "silrimidtro-tyberspot")
silrimidtro_urai_gotospot = Find_Hint("MARKER_GENERIC_BLUE", "silrimidtro-uraispot")
tyber.Teleport_And_Face(silrimidtro_tyber_startspot)
urai.Teleport_And_Face(silrimidtro_urai_startspot)
Create_Thread("Tyber_Moves_To_Meet_Silri")
Create_Thread("Urai_Moves_To_Meet_Silri")
--tyber.Suspend_Locomotor(true)
tyber.Prevent_AI_Usage(true)
tyber.Prevent_All_Fire(true)
tyber.Make_Invulnerable(true)
tyber.Prevent_Opportunity_Fire(true)
--urai.Suspend_Locomotor(true)
urai.Prevent_AI_Usage(true)
urai.Prevent_All_Fire(true)
urai.Make_Invulnerable(true)
urai.Prevent_Opportunity_Fire(true)
Transition_Cinematic_Camera_Key(silrimidtro_camera_start, 0, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(silri, 0, 0, 0, 0, 0, 0, 0, 0)
Sleep(0.5)
Fade_Screen_In(1)
silri.Change_Owner(underworld)
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION")
--TEXT_SPEECH_UW_ACT02_M06_07
--Silri: I'm your close friend. It's terrible to see me locked in this cell.
--Open the door for your friend.
Sleep(0.5)
silri.Play_Animation("Cinematic", false, 1) --Cinematic_01 <20> silri doing force-mind-control arm swipe anim
--close up on Silri, pan to show urai and tyber running up
Sleep(1)
Transition_Cinematic_Camera_Key(silrimidtro_camera_move01, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(urai, 0, 0, 0, 0, 0, urai, 0, 0)
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line01_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE2")
--TEXT_SPEECH_UW_ACT02_M06_08
--Tyber Zann: Urai, if she tries that Jedi mind control again, shoot her.
--You must be Silri. You will find both of us far from weak minded, witch.
--Everything has a cost and opening that door has a high one.
silrimidtro_camera_tyber = Find_Hint("MARKER_GENERIC_RED", "silrimidtro-show-tyber")
--close up of Tyber
Transition_Cinematic_Camera_Key(silrimidtro_camera_tyber, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line02_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE3")
--TEXT_SPEECH_UW_ACT02_M06_09
--Silri: When I'm free of this cell you'll be the second one I kill, no matter what the cost.
--No one taunts me and gets away with it!
silri.Play_Animation("Cinematic", true, 0) --Cinematic_00 <20> silri talk anim
--close up of Silri
silrimidtro_camera_silri = Find_Hint("MARKER_GENERIC_RED", "silrimidtro-cameratarget")
Transition_Cinematic_Camera_Key(silrimidtro_camera_silri, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(silri, 0, 0, 0, 10, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line03_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE4")
--TEXT_SPEECH_UW_ACT02_M06_10
--Tyber Zann: Now now, I never said I wouldn't let you out, I said I didn't have a reason to<74>yet.
--Do you know what this is?
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on the tyber
--close up of Tyber
Transition_Cinematic_Camera_Key(silrimidtro_camera_tyber, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
Sleep(2.5)
tyber.Play_Animation("Cinematic", false, 1) --Cinematic_01 <20> tyber presenting the artifact
Sleep(2)
tyber.Play_Animation("idle", false, 1)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line04_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE5")
--TEXT_SPEECH_UW_ACT02_M06_11
--Silri: You hold a Sith creation, and it's very ancient. Where did you get it?
silri.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> silri talk anim
--close up of Silri
Transition_Cinematic_Camera_Key(silrimidtro_camera_move01, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Camera_Key(silrimidtro_camera_move01, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 0, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line05_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE6")
--TEXT_SPEECH_UW_ACT02_M06_12
--Tyber Zann: That doesn't matter. Can you access it?
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on the tyber
--close up of Tyber -- stay at old shot
--Transition_Cinematic_Camera_Key(silrimidtro_camera_tyber, 0, 0, 0, 5, 0, 0, 0, 0)
--Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line06_Remove_Text (message)
if message == OnEnter then
tyber.Play_Animation("idle", false, 1)
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE7")
--TEXT_SPEECH_UW_ACT02_M06_13
--Silri: I could, given time.
--But the cost of that is worth more than just my freedom.
silri.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> silri talk anim
--close up of Silri
Transition_Cinematic_Camera_Key(silrimidtro_camera_silri, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(silri, 0, 0, 0, 10, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line07_Remove_Text (message)
if message == OnEnter then
silri.Play_Animation("idle", false, 1)
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE8")
--TEXT_SPEECH_UW_ACT02_M06_16
--Tyber Zann: What do you want?
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on the tyber
--close up of Tyber
Transition_Cinematic_Camera_Key(silrimidtro_camera_tyber, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line08_Remove_Text (message)
if message == OnEnter then
tyber.Play_Animation("idle", false, 1)
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE9")
--TEXT_SPEECH_UW_ACT02_M06_17
--Silri: I want to be freed of this cell.
--I want to get off this planet to gather the resources I need to open your bauble.
--I also want one other thing.
silri.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> silri talk anim
--over shoulder shot of Silri -- target tyber
Transition_Cinematic_Camera_Key(silrimidtro_camera_move01, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 0, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line09_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE10")
--TEXT_SPEECH_UW_ACT02_M06_18
--Urai Fen: Do not trust her Tyber.
--I see the force crackling through her body and reaching out
--to touch you even as we speak.
--close up of Urai
--silrimidtro_camera_urai = Find_Hint("MARKER_GENERIC_RED", "silrimidtro-show-urai")
Transition_Cinematic_Camera_Key(silrimidtro_camera_tyber, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(urai, 0, 0, 0, 10, 0, 0, 0, 0)
urai.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> talk anim on urai
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line10_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE11")
--TEXT_SPEECH_UW_ACT02_M06_19
--Tyber Zann: Urai, you just continue managing our forces and watching my back -
--I'll do the rest. Your terms are acceptable.
--Know this, witch, if you ever cross me or hinder my plans,
--I'll kill you and this entire world without a thought.
--You'll get no second chances and be allowed no mistakes.
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on the tyber
--stay on same shot
--Transition_Cinematic_Camera_Key(silrimidtro_camera_tyber, 0, 0, 0, 5, 0, 0, 0, 0)
--Transition_Cinematic_Target_Key(tyber, 1, 0, 0, 10, 0, 0, 0, 0)
--tyber.Turn_To_Face(urai)
--Sleep(1)
--tyber.Turn_To_Face(silri)
end
end
function State_UM06_DIALOG_Silri_Meets_Tyber_Line11_Remove_Text (message)
if message == OnEnter then
Story_Event("UM06_CUE_SILRI_INTRO_CONVERSATION_LINE12")
--TEXT_SPEECH_UW_ACT02_M06_20
--Silri: Understood, now release me from this cell!
silri.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> silri talk anim
--target back to silri -- over the shoulder shot
Transition_Cinematic_Camera_Key(silrimidtro_camera_move01, 0, 0, 0, 5, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 0, 0, 0, 0, 0)
end
end
function Tyber_Moves_To_Meet_Silri()
if not TestValid(tyber) then
JoeMessage("Silri Midtro cannot find tyber...aborting mission...tell Joe G immediately!")
ScriptExit()
end
BlockOnCommand(tyber.Move_To(silrimidtro_tyber_gotospot))
BlockOnCommand(tyber.Turn_To_Face(silri))
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on the tyber
end
function Urai_Moves_To_Meet_Silri()
if not TestValid(urai) then
JoeMessage("Silri Midtro cannot find urai...aborting mission...tell Joe G immediately!")
ScriptExit()
end
BlockOnCommand(urai.Move_To(silrimidtro_urai_gotospot))
urai.Turn_To_Face(silri)
end
--this takes us out of the silri-into cinematic
function State_UM06_DIALOG_Silri_Meets_Tyber_Line12_Remove_Text (message)
if message == OnEnter then
Fade_Screen_Out(1)
Sleep(1)
Leaving_Cinematic()
tyber.Suspend_Locomotor(false)
tyber.Prevent_All_Fire(false)
tyber.Make_Invulnerable(false)
tyber.Prevent_Opportunity_Fire(false)
urai.Suspend_Locomotor(false)
urai.Prevent_All_Fire(false)
urai.Make_Invulnerable(false)
urai.Prevent_Opportunity_Fire(false)
silri_teleport_spot = Find_Hint("MARKER_GENERIC_BLUE", "silri-teleport")
silri.Teleport_And_Face(silri_teleport_spot)
silri.Suspend_Locomotor(false)
silri.Prevent_All_Fire(false)
silri.Make_Invulnerable(false)
silri.Set_Cannot_Be_Killed(false)
silri.Prevent_Opportunity_Fire(false)
Create_Thread("Death_Monitor_Silri")
Point_Camera_At(tyber)
Lock_Controls(0)
End_Cinematic_Camera()
Letter_Box_Out(0)
Suspend_AI(0)
Fade_Screen_In(1)
Create_Thread("Thread_Highlight_Nightsisters")
--Create_Thread("Thread_Prison_Transports")
end
end
function Thread_Cinematic_Tyber_Meets_Sisters()
Fade_Screen_Out(.5)
Suspend_AI(1)
Lock_Controls(1)
Start_Cinematic_Camera()
Letter_Box_In(0)
Cancel_Fast_Forward()
Sleep(0.5)
Entering_Cinematic()
tyber_startspot = Find_Hint("MARKER_GENERIC_BLUE", "midtro01-tyber")
urai_startspot = Find_Hint("MARKER_GENERIC_BLUE", "midtro01-urai")
sister_spawnspot = Find_Hint("MARKER_GENERIC_BLUE", "midtro01-sister-spawn")
sister1_gotospot = Find_Hint("MARKER_GENERIC_BLUE", "midtro01-sistergoto")
midtro01_camera_start = Find_Hint("MARKER_GENERIC_RED", "midtro01-camerastart")
midtro01_target_start = Find_Hint("MARKER_GENERIC_RED", "midtro01-cameralook-01")
--set up first shot
tyber.Teleport_And_Face(tyber_startspot)
urai.Teleport_And_Face(urai_startspot)
tyber.Stop()
urai.Stop()
Sleep(1)
tyber.Suspend_Locomotor(true)
tyber.Prevent_AI_Usage(true)
tyber.Prevent_All_Fire(true)
tyber.Make_Invulnerable(true)
tyber.Prevent_Opportunity_Fire(true)
urai.Suspend_Locomotor(true)
urai.Prevent_AI_Usage(true)
urai.Prevent_All_Fire(true)
urai.Make_Invulnerable(true)
urai.Prevent_Opportunity_Fire(true)
--silris_guards = Find_All_Objects_With_Hint("silri-pointguard")
for i, pointguard in pairs(silris_guards) do
if TestValid(pointguard) then
pointguard.Enable_Dynamic_LOD(false)
end
end
--spawn in a bunch of misc prsioners here
Create_Thread("Thread_Spawn_Prisoners", 1) --the "1" param tells which prison to spawn at
--spawn some night sisters
sister1_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), sister_spawnspot, underworld)
Create_Thread("Thread_Spawn_Remaining_Prison01_Sisters")
Transition_Cinematic_Camera_Key(midtro01_camera_start, 0, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(midtro01_target_start, 0, 0, 0, 0, 0, 0, 0, 0)
Sleep(0.5)
Fade_Screen_In(1)
sister01 = sister1_list[1]
sister01.Prevent_AI_Usage(true)
sister01.Prevent_All_Fire(true)
sister01.Make_Invulnerable(true)
sister01.Prevent_Opportunity_Fire(true)
BlockOnCommand(sister01.Move_To(sister1_gotospot))
Sleep(1)
Story_Event("UM06_CUE_NIGHT_SISTER_INTRO_CONVERSATION")
--TEXT_SPEECH_UW_ACT02_M06_38
--Night Sister: Why have you freed us?
end
function Thread_Spawn_Prisoners(prison)
if prison == 1 then
--MessageBox("Thread_Spawn_Prisoners prison == 1")
spawn_flag01 = Find_Hint("MARKER_GENERIC_YELLOW", "prison01-prisoner-spawn01")
spawn_flag02 = Find_Hint("MARKER_GENERIC_YELLOW", "prison01-prisoner-spawn02")
spawn_flag03 = Find_Hint("MARKER_GENERIC_YELLOW", "prison01-prisoner-spawn03")
elseif prison == 2 then
--MessageBox("Thread_Spawn_Prisoners prison == 2")
spawn_flag01 = Find_Hint("MARKER_GENERIC_YELLOW", "prison02-prisoner-spawn01")
spawn_flag02 = Find_Hint("MARKER_GENERIC_YELLOW", "prison02-prisoner-spawn02")
spawn_flag03 = Find_Hint("MARKER_GENERIC_YELLOW", "prison02-prisoner-spawn03")
else
--MessageBox("Thread_Spawn_Prisoners prison == other")
spawn_flag01 = Find_Hint("MARKER_GENERIC_YELLOW", "prison03-prisoner-spawn01")
spawn_flag02 = Find_Hint("MARKER_GENERIC_YELLOW", "prison03-prisoner-spawn02")
spawn_flag03 = Find_Hint("MARKER_GENERIC_YELLOW", "prison03-prisoner-spawn03")
end
ewok_handler01 = Spawn_Unit(Find_Object_Type("UM06_PRISONER_EWOK_HANDLER"), spawn_flag01, underworld)
ewok_handler02 = Spawn_Unit(Find_Object_Type("UM06_PRISONER_EWOK_HANDLER"), spawn_flag02, underworld)
ewok_handler03 = Spawn_Unit(Find_Object_Type("UM06_PRISONER_EWOK_HANDLER"), spawn_flag03, underworld)
prison01_prisoner_gotospot = Find_Hint("MARKER_GENERIC_YELLOW", "prison01-prisoner-goto")
prison02_prisoner_gotospot = Find_Hint("MARKER_GENERIC_YELLOW", "prison02-prisoner-goto")
prison03_prisoner_gotospot = Find_Hint("MARKER_GENERIC_YELLOW", "prison03-prisoner-goto")
if prison == 1 then
--Create_Thread("Thread_Prison01_Prisoners_Emerge", spawned_prisoner)
for i, ewok_handler in pairs(ewok_handler01) do
ewok_handler.Move_To(prison01_prisoner_gotospot)
end
for i, ewok_handler in pairs(ewok_handler02) do
ewok_handler.Move_To(prison01_prisoner_gotospot)
end
for i, ewok_handler in pairs(ewok_handler03) do
ewok_handler.Move_To(prison01_prisoner_gotospot)
end
elseif prison == 2 then
--Create_Thread("Thread_Prison02_Prisoners_Emerge", spawned_prisoner)
for i, ewok_handler in pairs(ewok_handler01) do
ewok_handler.Move_To(prison02_prisoner_gotospot)
end
for i, ewok_handler in pairs(ewok_handler02) do
ewok_handler.Move_To(prison02_prisoner_gotospot)
end
for i, ewok_handler in pairs(ewok_handler03) do
ewok_handler.Move_To(prison02_prisoner_gotospot)
end
else
--Create_Thread("Thread_Prison03_Prisoners_Emerge", spawned_prisoner)
for i, ewok_handler in pairs(ewok_handler01) do
ewok_handler.Move_To(prison03_prisoner_gotospot)
end
for i, ewok_handler in pairs(ewok_handler02)do
ewok_handler.Move_To(prison03_prisoner_gotospot)
end
for i, ewok_handler in pairs(ewok_handler03) do
ewok_handler.Move_To(prison03_prisoner_gotospot)
end
end
--random pick of how many prisoners to spawn
local num_list_total = GameRandom(4,5)
--verify how many prisoner choices you have
local top_end = 0
for i, possible_prisoners in pairs(possible_prisoners_list) do
top_end = top_end + 1
end
if top_end == 0 then
return -- list is empty...abort
end
--random pick of group composition
for i=1,num_list_total do
prisoner = possible_prisoners_list[GameRandom(1,top_end)]
--random pick of spawn location
local roll_spawnflag = GameRandom(1,3)
if roll_spawnflag == 1 then
--prisoner_list = SpawnList(prisoner_spawn_list, spawn_flag01, underworld, false, true)
spawned_prisoner = Spawn_Unit(Find_Object_Type(prisoner), spawn_flag01, underworld)
elseif roll_spawnflag == 2 then
spawned_prisoner = Spawn_Unit(Find_Object_Type(prisoner), spawn_flag02, underworld)
else
spawned_prisoner = Spawn_Unit(Find_Object_Type(prisoner), spawn_flag03, underworld)
end
if prison == 1 then
--Create_Thread("Thread_Prison01_Prisoners_Emerge", spawned_prisoner)
for i, prisoner in pairs(spawned_prisoner) do
prisoner.Move_To(prison01_prisoner_gotospot)
end
elseif prison == 2 then
--Create_Thread("Thread_Prison02_Prisoners_Emerge", spawned_prisoner)
for i, prisoner in pairs(spawned_prisoner) do
prisoner.Move_To(prison02_prisoner_gotospot)
end
else
--Create_Thread("Thread_Prison03_Prisoners_Emerge", spawned_prisoner)
for i, prisoner in pairs(spawned_prisoner) do
prisoner.Move_To(prison03_prisoner_gotospot)
end
end
Sleep(0.25)
end
end
function Thread_Spawn_Remaining_Prison01_Sisters()
sister2_gotospot = Find_Hint("MARKER_GENERIC_BLUE", "sister2-goto")
sister3_gotospot = Find_Hint("MARKER_GENERIC_BLUE", "sister3-goto")
Sleep(1)
sister2_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), sister_spawnspot, underworld)
for i,sister in pairs(sister2_list) do
sister.Prevent_AI_Usage(true)
sister.Prevent_All_Fire(true)
sister.Make_Invulnerable(true)
sister.Prevent_Opportunity_Fire(true)
sister.Move_To(sister2_gotospot)
end
Sleep(1)
sister3_list = Spawn_Unit(Find_Object_Type("PRISONER_NIGHT_SISTER"), sister_spawnspot, underworld)
for i,sister in pairs(sister3_list) do
sister.Prevent_AI_Usage(true)
sister.Prevent_All_Fire(true)
sister.Make_Invulnerable(true)
sister.Prevent_Opportunity_Fire(true)
sister.Move_To(sister3_gotospot)
end
Sleep(0.5)
end
function State_UM06_DIALOG_NightSister_Greets_Tyber_Remove_Text (message)
if message == OnEnter then
--do camera switch here
--MessageBox("close-up of Tyber")
camera_show_tyber = Find_Hint("MARKER_GENERIC_RED", "midtro01-camera-tyber")
Transition_Cinematic_Camera_Key(camera_show_tyber, 0, 5, 0, 0, 1, 0, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
Story_Event("UM06_CUE_NIGHT_SISTER_INTRO_CONVERSATION_LINE2")
--TEXT_SPEECH_UW_ACT02_M06_54
--Tyber Zann: Do you know what this artifact is?
--I can reward you greatly if you can unlock it.
--XXX
tyber.Play_Animation("Cinematic", false, 1) --Cinematic_01 <20> tyber presenting the artifact
Sleep(2.25)
tyber.Play_Animation("idle", false, 1)
end
end
function State_UM06_DIALOG_NightSister_Greets_Tyber_Line2_Remove_Text (message)
if message == OnEnter then
--do camera switch here
--MessageBox("pull out to show both tyber and the night sisters")
midtro01_camera_nightsister= Find_Hint("MARKER_GENERIC_RED", "midtro01-camera-nightsister")
cine_sister = sister1_list[1]
Transition_Cinematic_Camera_Key(midtro01_camera_nightsister, 0, 5, 0, 0, 1, 0, 0, 0)
Transition_Cinematic_Target_Key(sister1_gotospot, 0, 0, 0, 15, 0, sister1_gotospot, 0, 0)
Story_Event("UM06_CUE_NIGHT_SISTER_INTRO_CONVERSATION_LINE3")
--TEXT_SPEECH_UW_ACT02_M06_55
--Nightsister: The object is ancient and its power to resist our intrusion is potent.
--Only the strongest among us could possibly have any success in opening it and revealing the secrets inside.
cine_sister.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> talk anim on the nightsister
end
end
function State_UM06_DIALOG_NightSister_Greets_Tyber_Line3_Remove_Text (message)
if message == OnEnter then
--do camera switch here
--MessageBox("close up of tyber #2")
Transition_Cinematic_Camera_Key(camera_show_tyber, 0, 5, 0, 0, 1, 0, 0, 0)
--Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 5, 0, tyber, 0, 0)
Transition_Cinematic_Target_Key(tyber, 0, 0, 0, 10, 0, 0, 0, 0)
Story_Event("UM06_CUE_NIGHT_SISTER_INTRO_CONVERSATION_LINE4")
--TEXT_SPEECH_UW_ACT02_M06_56
--Tyber Zann: Where is this woman you speak of? I have no time to waste on this world!
tyber.Play_Animation("Cinematic", false, 2) --Cinematic_02 <20> talk anim on the tyber
end
end
function State_UM06_DIALOG_NightSister_Greets_Tyber_Line4_Remove_Text (message)
if message == OnEnter then
--do camera switch here
--MessageBox("show silri in her cage here")
show_silri_camera_start = Find_Hint("MARKER_GENERIC_RED", "midtro01-showsilri-camerastart")
show_silri_camera_move = Find_Hint("MARKER_GENERIC_RED", "midtro01-showsilri-cameramove")
Story_Event("UM06_CUE_NIGHT_SISTER_INTRO_CONVERSATION_LINE5")
--TEXT_SPEECH_UW_ACT02_M06_57
--Nightsister: Silri can be found in the Frenzied River Prison to the north.
--The Imperial Governor placed her in a cage and broadcast her imprisonment planet wide.
--It was supposed to put fear in our hearts, that the same thing could happen to us.
--It didn't work.
--We rebelled and that's when more of us were imprisoned all over the planet.
--The Empire has much to pay for.
Fade_Screen_Out(0.25)
Sleep(.5)
Transition_Cinematic_Camera_Key(show_silri_camera_start, 0, 0, 0, 0, 0, 0, 0, 0)
Transition_Cinematic_Target_Key(silri, 0, 0, 0, 0, 0, 0, 0, 0)
Fade_Screen_In(1)
Transition_Cinematic_Camera_Key(show_silri_camera_move, 10, 0, 0, 0, 0, 0, 0, 0)
end
end
function State_UM06_DIALOG_NightSister_Greets_Tyber_Line5_Remove_Text (message)
if message == OnEnter then
--do camera switch here
--MessageBox("close up of urai")
midtro01_camera_urai= Find_Hint("MARKER_GENERIC_RED", "midtro01-camera-urai")
Transition_Cinematic_Camera_Key(midtro01_camera_urai, 0, 0, 0, 30, 1, 0, 0, 0)
Transition_Cinematic_Target_Key(urai, 0, 0, 0, 5, 1, urai, 0, 0)
Story_Event("UM06_CUE_NIGHT_SISTER_INTRO_CONVERSATION_LINE6")
--TEXT_SPEECH_UW_ACT02_M06_40
--Urai Fen: Help us, and we will free your sisters in every prison on the planet.
urai.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> talk anim on urai
end
end
function State_UM06_DIALOG_NightSister_Greets_Tyber_Line6_Remove_Text (message)
if message == OnEnter then
--do camera switch here
--MessageBox("quick shot of rancor then back to tyber")
Transition_Cinematic_Camera_Key(midtro01_camera_nightsister, 0, 5, 0, 0, 1, 0, 0, 0)
Transition_Cinematic_Target_Key(sister1_gotospot, 0, 0, 0, 15, 0, sister1_gotospot, 0, 0)
Story_Event("UM06_CUE_NIGHT_SISTER_INTRO_CONVERSATION_LINE7")
--TEXT_SPEECH_UW_ACT02_M06_41
--Nightsister: The Empire will pay for wrongfully imprisoning us.
--Bring us to rancor and we will bring the Imperial forces to their knees.
--reveal around the group1 rancors here
Create_Thread("Thread_Highlight_Group1_Rancor")
cine_sister.Play_Animation("Cinematic", false, 0) --Cinematic_00 <20> talk anim on the nightsister
end
end
function Thread_Highlight_Group1_Rancor()
--group1_rancors = Find_All_Objects_With_Hint("group1-rancor")
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
group01_rancor_reveal_list[i] = FogOfWar.Reveal(underworld, rancor, 250,250)
Add_Radar_Blip(rancor, "group1_rancor_blip")
end
end
Sleep(10)
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
Remove_Radar_Blip("group1_rancor_blip")
end
end
end
function State_UM06_DIALOG_NightSister_Greets_Tyber_Line7_Remove_Text (message)
if message == OnEnter then
--leave cinematic here
Leaving_Cinematic()
tyber.Suspend_Locomotor(false)
tyber.Prevent_AI_Usage(false)
tyber.Prevent_All_Fire(false)
tyber.Make_Invulnerable(false)
tyber.Prevent_Opportunity_Fire(false)
urai.Suspend_Locomotor(false)
urai.Prevent_AI_Usage(false)
urai.Prevent_All_Fire(false)
urai.Make_Invulnerable(false)
urai.Prevent_Opportunity_Fire(false)
for i,sister in pairs(sister1_list) do
sister.Prevent_AI_Usage(false)
sister.Prevent_All_Fire(false)
sister.Make_Invulnerable(false)
sister.Prevent_Opportunity_Fire(false)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
for i,sister in pairs(sister2_list) do
sister.Prevent_AI_Usage(false)
sister.Prevent_All_Fire(false)
sister.Make_Invulnerable(false)
sister.Prevent_Opportunity_Fire(false)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
for i,sister in pairs(sister3_list) do
sister.Prevent_AI_Usage(false)
sister.Prevent_All_Fire(false)
sister.Make_Invulnerable(false)
sister.Prevent_Opportunity_Fire(false)
Register_Prox(sister, PROX_Rancor_NightSister, 75, hostile)
end
--put silri's guards on pointguard duty
for i, pointguard in pairs(silris_guards) do
if TestValid(pointguard) then
pointguard.Prevent_AI_Usage(true)
pointguard.Guard_Target(pointguard.Get_Position())
pointguard.Enable_Dynamic_LOD(true)
end
end
Point_Camera_At(tyber)
Lock_Controls(0)
End_Cinematic_Camera()
Letter_Box_Out(0)
Suspend_AI(0)
Fade_Screen_In(1)
-- highlight the nightsisters
Create_Thread("Thread_Highlight_Nightsisters")
if TestValid(prison01_barracks) then
Create_Thread("Thread_Prison01_Barracks_Reacts")
end
Story_Event("UM06_ADD_OBJECTIVE_MOUNT_RANCOR_AI_NOTIFICATION")
Create_Thread("Thread_Monitor_for_Rancor_Riders")
end
end
function Thread_Monitor_for_Rancor_Riders()
while (true) do
rancor_rider = Find_First_Object("UM06_Night_Sister")
if not TestValid(rancor_rider) then
Sleep(3)
else
break
end
Sleep(1)
end
Story_Event("UM06_COMPLETE_OBJECTIVE_MOUNT_RANCOR_AI_NOTIFICATION")
end
function Thread_Prison01_Barracks_Reacts()
local spawn_times = 0
local spawn_max = 5
while TestValid(prison01_barracks) do
spawned_trooper_list = Spawn_Unit(Find_Object_Type("IMPERIAL_MEDIUM_STORMTROOPER_SQUAD"), prison01_barracks_spawn, empire)
Create_Thread("Find_And_Attack",spawned_trooper_list)
spawn_times = spawn_times + 1
if spawn_times >= spawn_max then
break
end
Sleep(10)
end
end
function Thread_Prison_Transports()
while (TestValid(uplink_station) or TestValid(uplink_station02) or TestValid(uplink_station03)) do
--ReinforceList(empire_prison01_list, prison01_transport_lz, empire, false, true, true, Find_And_Attack)
if flag_okay_to_reinforce == true and flag_p3_prox_tripped == false then
Story_Event("UM06_GIVE_UPLINK_HINT")
if flag_first_imperial_reinforcement == true then
Sleep(0.5)
Story_Event("UM06_ADD_OBJECTIVE_DESTROY_THE_UPLINK_STATIONS_AI_NOTIFICATION")
flag_first_imperial_reinforcement = false
end
Create_Thread("Thread_Highlight_Uplink_Stations")
rebel_shuttle1 = Create_Cinematic_Transport("Shuttle_Tyderium_Landing", empire.Get_ID(), transport_lz, -90, 1, 0.25, 10, 0)
Sleep(5)
--spawn in units here
trooper_list1 = Spawn_Unit(Find_Object_Type("DARK_TROOPER_PHASEIII"), transport_spawnflag, empire)
trooper_list2 = Spawn_Unit(Find_Object_Type("DARK_TROOPER_PHASEIII"), transport_spawnflag, empire)
trooper_list3 = Spawn_Unit(Find_Object_Type("DARK_TROOPER_PHASEIII"), transport_spawnflag, empire)
Create_Thread("Find_And_Attack",trooper_list1)
Create_Thread("Find_And_Attack",trooper_list2)
Create_Thread("Find_And_Attack",trooper_list3)
empire_reinforce_list = {}
empire_reinforce_list[1] = trooper_list1[1]
empire_reinforce_list[2] = trooper_list2[1]
empire_reinforce_list[3] = trooper_list3[1]
Create_Thread("Thread_Death_Monitor_Empire_Reinforce",empire_reinforce_list)
flag_okay_to_reinforce = false
end
Sleep(3)
end
end
function Thread_Highlight_Uplink_Stations()
--uplink_station
--uplink_station02
if TestValid(uplink_station) then
Add_Radar_Blip(uplink_station, "uplink_station_radarblip")
end
if TestValid(uplink_station02) then
Add_Radar_Blip(uplink_station02, "uplink_station02_radarblip")
end
if TestValid(uplink_station03) then
Add_Radar_Blip(uplink_station03, "uplink_station03_radarblip")
end
Sleep(10)
if TestValid(uplink_station) then
Remove_Radar_Blip("uplink_station_radarblip")
end
if TestValid(uplink_station02) then
Remove_Radar_Blip("uplink_station02_radarblip")
end
if TestValid(uplink_station03) then
Remove_Radar_Blip("uplink_station03_radarblip")
end
end
function Thread_Death_Monitor_Empire_Reinforce(reinforce_list)
while (true) do
local spawned_troopers_dead = true
for i, unit in pairs(reinforce_list) do
if TestValid(unit) then
spawned_troopers_dead = false
end
end
if spawned_troopers_dead == true then
--JoeMessage("Reinforced empire troops dead...bring in new ones")
Sleep(30)
flag_okay_to_reinforce = true
break
end
Sleep(3)
end
end
function Find_And_Attack(attack_list)
-- find the closest underworld unit and have the newly reinforced units attack it!
closest_target = Find_Nearest(transport_lz, underworld, true)
for i, unit in pairs(attack_list) do
if TestValid(unit) then
--if unit.Is_Ability_Ready("JET_PACK") then
-- unit.Activate_Ability("JET_PACK", closest_target)
--else
unit.Attack_Move(closest_target)
--end
unit.Prevent_AI_Usage(false)
end
end
end
function Thread_Highlight_Nightsisters()
night_sisters_list = Find_All_Objects_Of_Type("PRISONER_NIGHT_SISTER")
for i, night_sister in pairs(night_sisters_list) do
if TestValid(night_sister) then
night_sister.Highlight_Small(true, -50)
end
end
--Sleep(const_highlight_timer)
--for i, night_sister in pairs(night_sisters_list) do
--if TestValid(night_sister) then
--night_sister.Highlight_Small(false)
--end
--end
end
function Intro_Cinematic()
Suspend_AI(1)
Lock_Controls(1)
Start_Cinematic_Camera()
Letter_Box_In(0)
Fade_Screen_In(2)
Cancel_Fast_Forward()
Story_Event("UM06_CUE_INTRO_DIALOG")
-- ***********Opening Shot***************
-- Set_Cinematic_Camera_Key(target_pos, x_dist, y_pitch, z_yaw, euler, pobj, use_object_rotation, cinematic_animation)
Set_Cinematic_Camera_Key(camera_loc1, 450, 35, 220, 1, 1, 1, 0)
--Set_Cinematic_Target_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
Set_Cinematic_Target_Key(landing_spot, 0, 0, 500, 0, 1, 0, 0)
Transition_Cinematic_Camera_Key(camera_loc1, 30, 150, 40, 130, 1, 1, 1, 0)
-- Create_Cinematic_Transport(object_type_name, player_id, transport_pos, zangle, phase_mode, anim_delta, idle_time, persist,hint)
openin_cine_transport = Create_Cinematic_Transport("UM06_Landing_Shuttle", underworld.Get_ID(), landing_spot, 60, 1, 0, 20, 1)
openin_cine_transport.Set_Selectable(false)
Transition_Cinematic_Target_Key(landing_spot, 5, 0, 0, 0, 0, 0, 0, 0)
Sleep(7)
-- ***********Shot of Tyber & Urai moving to cliff***************
tyber_list = Spawn_Unit(Find_Object_Type("UM06_TYBER_ZANN"), tyber_spawn, underworld)
urai_list = Spawn_Unit(Find_Object_Type("URAI_FEN"), urai_spawn, underworld)
tyber = Find_First_Object("UM06_TYBER_ZANN")
urai = urai_list[1]
tyber.Move_To(tyber_goto1.Get_Position())
urai.Move_To(urai_goto1.Get_Position())
Create_Thread("Thread_Intro_Group1Rancors_Emerge")
Sleep(1)
intro_camera_move01 = Find_Hint("MARKER_GENERIC_RED", "intro-camera-move01")
--Set_Cinematic_Camera_Key(tyber, 200, 25, -50, 1, tyber, 0, 0)
Transition_Cinematic_Target_Key(tyber, 6, 25, 0, 0, 0, tyber, 0, 0)
--Transition_Cinematic_Camera_Key(intro_camera_move01, 5, 0, 0, 0, 0, 0, 0, 0)
--Transition_Cinematic_Camera_Key(camera_loc1, 10, 125, 19, 150, 1, 1, 1, 0)
Sleep(6)
tyber.Stop()
urai.Stop()
Sleep(.5)
tyber.Turn_To_Face(urai)
urai.Turn_To_Face(tyber)
Sleep(5)
end
function State_UM06_DIALOG_IntroCine_Line07_Remove_Text (message)
if message == OnEnter then
--end of intro cinematic
current_cinematic_thread = nil
Point_Camera_At(tyber)
Create_Thread("Death_Monitor_Tyber")
Create_Thread("Death_Monitor_Urai")
Transition_To_Tactical_Camera(2)
Sleep(2)
Lock_Controls(0)
End_Cinematic_Camera()
Letter_Box_Out(0)
Suspend_AI(0)
--Fade_Screen_In(1)
Create_Thread("Thread_Group1Rancors_Start_Guarding")
Allow_Localized_SFX(true)
end
end
function Entering_Cinematic()
--fudge to make sure night sisters stay put
empire_units_list = Find_All_Objects_Of_Type(empire)
for i,empire_unit in pairs(empire_units_list) do
empire_unit.Prevent_AI_Usage(true)
empire_unit.Prevent_All_Fire(true)
empire_unit.Make_Invulnerable(true)
empire_unit.Prevent_Opportunity_Fire(true)
--empire_unit.Hide(true)
end
end
function Leaving_Cinematic()
empire_units_list = Find_All_Objects_Of_Type(empire)
for i,empire_unit in pairs(empire_units_list) do
empire_unit.Prevent_All_Fire(false)
empire_unit.Make_Invulnerable(false)
empire_unit.Prevent_Opportunity_Fire(false)
end
--removal_list = {}
--re-disable the trucks and stuff
--parked_vehicle_list = Find_All_Objects_With_Hint("parked")
for i,parked_vehicle in pairs(parked_vehicle_list) do
if TestValid(parked_vehicle) then
parked_vehicle.Prevent_AI_Usage(true)
parked_vehicle.Prevent_All_Fire(true)
parked_vehicle.Prevent_Opportunity_Fire(true)
--else
--table.insert(removal_list, parked_vehicle)
--parked_vehicle_list[parked_vehicle] = nil
end
end
--for i,dead_vehicle in pairs(removal_list) do
-- parked_vehicle_list[dead_vehicle] = nil
--end
--put pointguards back on guard duty
--pointguard_list = Find_All_Objects_With_Hint("pointguard")
for i, pointguard in pairs(pointguard_list) do
if TestValid(pointguard) then
pointguard.Prevent_AI_Usage(true)
pointguard.Guard_Target(pointguard.Get_Position())
end
end
end
function Thread_Intro_Group1Rancors_Emerge()
for i, rancor in pairs(group1_rancors) do
if TestValid(rancor) then
rancor.Move_To(group1_rancor_location_list[i])
end
end
end
--***********************************************************
function Death_Monitor_Tyber()
while TestValid(tyber) do
Sleep(3)
end
Story_Event("UM06_TYBER_KILLED")
end
function Death_Monitor_Urai()
while TestValid(urai) do
Sleep(3)
end
Story_Event("UM06_URAI_KILLED")
end
function Death_Monitor_Silri()
while TestValid(silri) do
Sleep(3)
end
Story_Event("UM06_SILRI_KILLED")
end
function Death_Monitor_Governor(governor)
while TestValid(governor) do
Sleep(1)
end
flag_governor_dead = true
end
function Thread_DeathMonitor_UplinkStation01()
while TestValid(uplink_station) do
Sleep(3)
end
--MessageBox("Thread_DeathMonitor_UplinkStation01")
--flag_uplink_01_destroyed = true
Story_Event("UM06_UPLINKSTATION_DESTOYED")
end
function Thread_DeathMonitor_UplinkStation02()
while TestValid(uplink_station02) do
Sleep(3)
end
--MessageBox("Thread_DeathMonitor_UplinkStation02")
--flag_uplink_02_destroyed = true
Story_Event("UM06_UPLINKSTATION_DESTOYED")
end
function Thread_DeathMonitor_UplinkStation03()
while TestValid(uplink_station03) do
Sleep(3)
end
--MessageBox("Thread_DeathMonitor_UplinkStation03")
--flag_uplink_03_destroyed = true
Story_Event("UM06_UPLINKSTATION_DESTOYED")
end
function Thread_DeathMonitor_UplinkStations()
while TestValid(uplink_station) or TestValid(uplink_station02) or TestValid(uplink_station03) do
Sleep(3)
end
--MessageBox("UM06_COMPLETE_OBJECTIVE_DESTROY_THE_UPLINK_STATIONS_AI_NOTIFICATION")
Story_Event("UM06_COMPLETE_OBJECTIVE_DESTROY_THE_UPLINK_STATIONS_AI_NOTIFICATION")
end
function Thread_Death_Monitor_Gate()
while TestValid(gate) do
Sleep(3)
end
--gate_pointguard_list = Find_All_Objects_With_Hint("gate-pointguard")
for i, gate_pointguard in pairs(gate_pointguard_list) do
if TestValid(gate_pointguard) then
gate_pointguard.Guard_Target(gate_pointguard.Get_Position())
gate_pointguard.Prevent_All_Fire(false)
gate_pointguard.Prevent_Opportunity_Fire(false)
end
end
Create_Thread("Thread_Prison_Transports")
if TestValid(uplink_station) then
--MessageBox("Thread_DeathMonitor_UplinkStation01")
Create_Thread("Thread_DeathMonitor_UplinkStation01")
end
if TestValid(uplink_station02) then
--MessageBox("Thread_DeathMonitor_UplinkStation02")
Create_Thread("Thread_DeathMonitor_UplinkStation02")
end
if TestValid(uplink_station03) then
--MessageBox("Thread_DeathMonitor_UplinkStation03")
Create_Thread("Thread_DeathMonitor_UplinkStation03")
end
Create_Thread("Thread_DeathMonitor_UplinkStations")
end
function Death_Monitor_Prison1_Power()
while TestValid(prison_1_power) do
Sleep(3)
end
Story_Event("UM06_PRISON01_POWER_DESTROYED")
--take prison01 turrets off-line
for k, turret in pairs(prison01_turrets_list) do
if TestValid(turret) then
--MessageBox("Turret faction switched to neutral!")
turret.Change_Owner(neutral)
end
end
--spawn some guys out of the nearby uplink station
if TestValid(prison01_academy) then
guard01_list = Spawn_Unit(Find_Object_Type("IMPERIAL_GUARD_NON_AI"), prison01_uplinkspawnspot, empire)
guard01_list[1].Guard_Target(prison01_uplink_goto01)
Sleep(0.5)
guard02_list = Spawn_Unit(Find_Object_Type("IMPERIAL_GUARD_NON_AI"), prison01_uplinkspawnspot, empire)
guard02_list[1].Guard_Target(prison01_uplink_goto02)
Sleep(0.5)
guard03_list = Spawn_Unit(Find_Object_Type("IMPERIAL_GUARD_NON_AI"), prison01_uplinkspawnspot, empire)
guard03_list[1].Guard_Target(prison01_uplink_goto03)
end
end
function Death_Monitor_Prison2_Power()
while TestValid(prison_2_power) do
Sleep(3)
end
Story_Event("UM06_PRISON02_POWER_DESTROYED")
end
function Death_Monitor_Prison3_Power()
while TestValid(prison_3_power) do
Sleep(3)
end
--turn off p3-turrets
for i, prison3_turret in pairs(prison3_turret_list) do
if TestValid(prison3_turret) then
prison3_turret.Change_Owner(neutral)
end
end
Story_Event("UM06_PRISON03_POWER_DESTROYED")
end
function Death_Monitor_Governors_Power()
while TestValid(governors_power) do
Sleep(3)
end
--turn off p3-turrets
governors_turret_list = Find_All_Objects_With_Hint("gov-turret")
for i, governors_turret in pairs(governors_turret_list) do
if TestValid(governors_turret) then
governors_turret.Change_Owner(neutral)
end
end
Story_Event("UM06_GOVERNOR_POWER_DESTROYED")
end
function Thread_Prison01Guard01_Backpath_Patrols()
--Check ownership before issuing orders (might well have been bribed)
while (true) do
for i, guard01 in pairs(backpath_guard01) do
--if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
--BlockOnCommand(guard01.Move_To(backpath_spot01))
--end
if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
guard01.Attack_Move(backpath_spot01)
end
end
Sleep(15)
for i, guard01 in pairs(backpath_guard01) do
--if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
-- BlockOnCommand(guard01.Move_To(backpath_spot02))
--end
if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
guard01.Attack_Move(backpath_spot02)
end
end
Sleep(15)
for i, guard01 in pairs(backpath_guard01) do
--if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
-- BlockOnCommand(guard01.Move_To(backpath_spot03))
--end
if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
guard01.Attack_Move(backpath_spot03)
end
end
Sleep(15)
for i, guard01 in pairs(backpath_guard01) do
--if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
-- BlockOnCommand(guard01.Move_To(backpath_spot02))
--end
if TestValid(guard01) and not guard01.Get_Owner().Is_Human() then
guard01.Attack_Move(backpath_spot02)
end
end
Sleep(15)
end
end
function Thread_Prison01Guard02_Backpath_Patrols()
--Check ownership before issuing orders (might well have been bribed)
while (true) do
for i, guard02 in pairs(backpath_guard02) do
--if TestValid(guard02) and not guard02.Get_Owner().Is_Human() then
-- BlockOnCommand(guard02.Move_To(backpath_spot03))
--end
if TestValid(guard02) and not guard02.Get_Owner().Is_Human() then
guard02.Attack_Move(backpath_spot03)
end
end
Sleep(15)
for i, guard02 in pairs(backpath_guard02) do
--if TestValid(guard02) and not guard02.Get_Owner().Is_Human() then
-- BlockOnCommand(guard02.Move_To(backpath_spot02))
--end
if TestValid(guard02) and not guard02.Get_Owner().Is_Human() then
guard02.Attack_Move(backpath_spot02)
end
end
Sleep(15)
for i, guard02 in pairs(backpath_guard02) do
--if TestValid(guard02) and not guard02.Get_Owner().Is_Human() then
-- BlockOnCommand(guard02.Move_To(backpath_spot01))
--end
if TestValid(guard02) then
guard02.Attack_Move(backpath_spot01)
end
end
Sleep(15)
for i, guard02 in pairs(backpath_guard02) do
--if TestValid(guard02) and not guard02.Get_Owner().Is_Human() then
-- BlockOnCommand(guard02.Move_To(backpath_spot02))
--end
if TestValid(guard02) and not guard02.Get_Owner().Is_Human() then
guard02.Attack_Move(backpath_spot02)
end
end
Sleep(15)
end
end
function Thread_Prison01Guard03_Backpath_Patrols()
--Check ownership before issuing orders (might well have been bribed)
while (true) do
for i, guard03 in pairs(backpath_guard03) do
--if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
-- BlockOnCommand(guard03.Move_To(backpath_spot01))
--end
if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
guard03.Attack_Move(backpath_spot01)
end
end
Sleep(15)
for i, guard03 in pairs(backpath_guard03) do
--if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
-- BlockOnCommand(guard03.Move_To(backpath_spot02))
--end
if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
guard03.Attack_Move(backpath_spot02)
end
end
Sleep(15)
for i, guard03 in pairs(backpath_guard03) do
--if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
-- BlockOnCommand(guard03.Move_To(backpath_spot03))
--end
if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
guard03.Attack_Move(backpath_spot03)
end
end
Sleep(15)
for i, guard03 in pairs(backpath_guard03) do
--if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
-- BlockOnCommand(guard03.Move_To(backpath_spot02))
--end
if TestValid(guard03) and not guard03.Get_Owner().Is_Human() then
guard03.Attack_Move(backpath_spot02)
end
end
Sleep(15)
end
end
function Thread_Prison01Guard04_Backpath_Patrols()
--Check ownership before issuing orders (might well have been bribed)
while (true) do
for i, guard04 in pairs(backpath_guard04) do
--if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
-- BlockOnCommand(guard04.Move_To(backpath_spot03))
--end
if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
guard04.Attack_Move(backpath_spot03)
end
end
Sleep(15)
for i, guard04 in pairs(backpath_guard04) do
--if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
-- BlockOnCommand(guard04.Move_To(backpath_spot02))
--end
if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
guard04.Attack_Move(backpath_spot02)
end
end
Sleep(15)
for i, guard04 in pairs(backpath_guard04) do
--if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
-- BlockOnCommand(guard04.Move_To(backpath_spot01))
--end
if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
guard04.Attack_Move(backpath_spot01)
end
end
Sleep(15)
for i, guard04 in pairs(backpath_guard04) do
--if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
-- BlockOnCommand(guard04.Move_To(backpath_spot02))
--end
if TestValid(guard04) and not guard04.Get_Owner().Is_Human() then
guard04.Attack_Move(backpath_spot02)
end
end
Sleep(15)
end
end
function Thread_Monitor_Parked_Vehicles_Status()
while (true) do
local bool_parked_cars _exist = false
--parked_vehicle_list = Find_All_Objects_With_Hint("parked")
for i,parked_vehicle in pairs(parked_vehicle_list) do
if TestValid(parked_vehicle) then
bool_parked_cars = true
if parked_vehicle.Get_Owner().Is_Human() then
parked_vehicle.Prevent_All_Fire(false)
parked_vehicle.Prevent_Opportunity_Fire(false)
end
end
end
if bool_parked_cars == false then
return
end
Sleep(5)
end
end
function JoeMessage(...)
--JoeMessage("current current_spawn_times is %d", current_spawn_times)
_CustomScriptMessage("JoeLog.txt", string.format(unpack(arg)))
end