3579 lines
109 KiB
Lua
3579 lines
109 KiB
Lua
-- $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 |