4118 lines
141 KiB
Lua
4118 lines
141 KiB
Lua
-- $Id: //depot/Projects/StarWars_Steam/FOC/Run/Data/Scripts/Story/Story_Underworld_ActIII_M11_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_ActIII_M11_LAND.lua $
|
|
--
|
|
-- Original Author: Jeff_Stewart
|
|
--
|
|
-- $Author: Brian_Hayes $
|
|
--
|
|
-- $Change: 637819 $
|
|
--
|
|
-- $DateTime: 2017/03/22 10:16:16 $
|
|
--
|
|
-- $Revision: #1 $
|
|
--
|
|
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
require("JGS_FunctionLib") -- added library of commonly used functions
|
|
require("PGSpawnUnits")
|
|
require("PGStoryMode")
|
|
|
|
function Definitions()
|
|
--MessageBox("Defined")
|
|
StoryModeEvents =
|
|
{
|
|
Underworld_A03M11_Begin = State_Underworld_A03M11_Begin,
|
|
Mission_Chatter_00_Done = State_Mission_Chatter_00_Done,
|
|
Mission_Chatter_01_Done = State_Mission_Chatter_01_Done,
|
|
Mission_Chatter_02_Done = State_Mission_Chatter_02_Done,
|
|
Mission_Chatter_03_Done = State_Mission_Chatter_03_Done,
|
|
Mission_Chatter_04_Done = State_Mission_Chatter_04_Done,
|
|
Mission_Chatter_05_Done = State_Mission_Chatter_05_Done,
|
|
Mission_Chatter_06_Done = State_Mission_Chatter_06_Done,
|
|
Mission_Chatter_07_Done = State_Mission_Chatter_07_Done,
|
|
Mission_Chatter_08_Done = State_Mission_Chatter_08_Done,
|
|
Mission_Chatter_09_Done = State_Mission_Chatter_09_Done,
|
|
Mission_Chatter_10_Done = State_Mission_Chatter_10_Done,
|
|
Mission_Chatter_11_Done = State_Mission_Chatter_11_Done,
|
|
Mission_Chatter_12_Done = State_Mission_Chatter_12_Done,
|
|
Mission_Chatter_13_Done = State_Mission_Chatter_13_Done,
|
|
Mission_Chatter_14_Done = State_Mission_Chatter_14_Done,
|
|
Mission_Chatter_15_Done = State_Mission_Chatter_15_Done,
|
|
Mission_Chatter_16_Done = State_Mission_Chatter_16_Done,
|
|
Mission_Chatter_17_Done = State_Mission_Chatter_17_Done,
|
|
Mission_Chatter_18_Done = State_Mission_Chatter_18_Done,
|
|
Mission_Chatter_19_Done = State_Mission_Chatter_19_Done,
|
|
Mission_Chatter_20_Done = State_Mission_Chatter_20_Done,
|
|
Mission_Chatter_21_Done = State_Mission_Chatter_21_Done,
|
|
Mission_Chatter_22_Done = State_Mission_Chatter_22_Done,
|
|
Mission_Chatter_23_Done = State_Mission_Chatter_23_Done,
|
|
Mission_Chatter_24_Done = State_Mission_Chatter_24_Done,
|
|
Mission_Chatter_25_Done = State_Mission_Chatter_25_Done,
|
|
Mission_Chatter_26_Done = State_Mission_Chatter_26_Done,
|
|
Mission_Chatter_27_Done = State_Mission_Chatter_27_Done,
|
|
Mission_Chatter_28_Done = State_Mission_Chatter_28_Done,
|
|
Mission_Chatter_29_Done = State_Mission_Chatter_29_Done,
|
|
Mission_Chatter_30_Done = State_Mission_Chatter_30_Done,
|
|
Mission_Chatter_31_Done = State_Mission_Chatter_31_Done,
|
|
Mission_Chatter_32_Done = State_Mission_Chatter_32_Done,
|
|
Mission_Chatter_33_Done = State_Mission_Chatter_33_Done,
|
|
Mission_Chatter_34_Done = State_Mission_Chatter_34_Done,
|
|
Mission_Chatter_35_Done = State_Mission_Chatter_35_Done,
|
|
Mission_Chatter_36_Done = State_Mission_Chatter_36_Done,
|
|
Mission_Chatter_37_Done = State_Mission_Chatter_37_Done,
|
|
Mission_Chatter_38_Done = State_Mission_Chatter_38_Done,
|
|
Mission_Chatter_39_Done = State_Mission_Chatter_39_Done,
|
|
Mission_Chatter_40_Done = State_Mission_Chatter_40_Done,
|
|
Mission_Chatter_41_Done = State_Mission_Chatter_41_Done,
|
|
Mission_Chatter_42_Done = State_Mission_Chatter_42_Done,
|
|
Mission_Chatter_43_Done = State_Mission_Chatter_43_Done,
|
|
Mission_Chatter_44_Done = State_Mission_Chatter_44_Done,
|
|
Mission_Chatter_45_Done = State_Mission_Chatter_45_Done,
|
|
Mission_Chatter_46_Done = State_Mission_Chatter_46_Done,
|
|
Mission_Chatter_47_Done = State_Mission_Chatter_47_Done,
|
|
Mission_Chatter_48_Done = State_Mission_Chatter_48_Done,
|
|
Mission_Chatter_49_Done = State_Mission_Chatter_49_Done,
|
|
Mission_Chatter_50_Done = State_Mission_Chatter_50_Done,
|
|
Mission_Chatter_51_Done = State_Mission_Chatter_51_Done,
|
|
Mission_Chatter_52_Done = State_Mission_Chatter_52_Done,
|
|
Mission_Chatter_53_Done = State_Mission_Chatter_53_Done,
|
|
Mission_Chatter_54_Done = State_Mission_Chatter_54_Done,
|
|
Mission_Chatter_55_Done = State_Mission_Chatter_55_Done
|
|
}
|
|
end
|
|
|
|
|
|
function State_Underworld_A03M11_Begin(message)
|
|
if message == OnEnter then
|
|
|
|
Fade_Screen_Out(0)
|
|
|
|
State_Mission_00_Done = false
|
|
State_Mission_01_Done = false
|
|
State_Mission_02_Done = false
|
|
State_Mission_03_Done = false
|
|
State_Mission_04_Done = false
|
|
State_Mission_05_Done = false
|
|
State_Mission_06_Done = false
|
|
State_Mission_07_Done = false
|
|
State_Mission_08_Done = false
|
|
State_Mission_09_Done = false
|
|
State_Mission_10_Done = false
|
|
State_Mission_11_Done = false
|
|
State_Mission_12_Done = false
|
|
State_Mission_13_Done = false
|
|
State_Mission_14_Done = false
|
|
State_Mission_15_Done = false
|
|
State_Mission_16_Done = false
|
|
State_Mission_17_Done = false
|
|
State_Mission_18_Done = false
|
|
State_Mission_19_Done = false
|
|
State_Mission_20_Done = false
|
|
State_Mission_21_Done = false
|
|
State_Mission_22_Done = false
|
|
State_Mission_23_Done = false
|
|
State_Mission_24_Done = false
|
|
State_Mission_25_Done = false
|
|
State_Mission_26_Done = false
|
|
State_Mission_27_Done = false
|
|
State_Mission_28_Done = false
|
|
State_Mission_29_Done = false
|
|
State_Mission_30_Done = false
|
|
State_Mission_31_Done = false
|
|
State_Mission_32_Done = false
|
|
State_Mission_33_Done = false
|
|
State_Mission_34_Done = false
|
|
State_Mission_35_Done = false
|
|
State_Mission_36_Done = false
|
|
State_Mission_37_Done = false
|
|
State_Mission_38_Done = false
|
|
State_Mission_39_Done = false
|
|
State_Mission_40_Done = false
|
|
State_Mission_41_Done = false
|
|
State_Mission_42_Done = false
|
|
State_Mission_43_Done = false
|
|
State_Mission_44_Done = false
|
|
State_Mission_45_Done = false
|
|
State_Mission_46_Done = false
|
|
State_Mission_47_Done = false
|
|
State_Mission_48_Done = false
|
|
State_Mission_49_Done = false
|
|
State_Mission_50_Done = false
|
|
State_Mission_51_Done = false
|
|
State_Mission_52_Done = false
|
|
State_Mission_53_Done = false
|
|
State_Mission_54_Done = false
|
|
State_Mission_55_Done = false
|
|
|
|
neutral_player = Find_Player("Neutral")
|
|
empire_player = Find_Player("Empire")
|
|
underworld_player = Find_Player("Underworld")
|
|
hostile_player = Find_Player("Hostile")
|
|
|
|
Setup_Cinematic_Definitions()
|
|
|
|
-- name and register prox and death values for operating doors in mission
|
|
endcinebox = Find_Hint("UM05_BLACK_COVER_GIANT", "endcinecover") --
|
|
endcinebox1 = Find_Hint("UM05_BLACK_COVER_GIANT", "endcinebox1") --
|
|
int_sky=Find_First_Object("GIRDER_SKY_INTERIOR")
|
|
ext_sky=Find_Hint("PROP_CORUSCANT_SKYDOME","extskydome")
|
|
thesithartifact = Find_First_Object("UM05_CINE_HOLOCRON")
|
|
|
|
thebunker = Find_Hint("GARRISON_BUNKER_CAPTURABLE", "bunker") --
|
|
doora = Find_Hint("UM05_MOVING_DOOR", "doora") --
|
|
doorbspawn = Find_Hint("STORY_TRIGGER_ZONE", "doorbspawn")
|
|
doorc1 = Find_Hint("UM05_MOVING_DOOR", "doorc1") --
|
|
doorc2 = Find_Hint("UM05_MOVING_DOOR", "doorc2") --
|
|
doord = Find_Hint("UM05_MOVING_DOOR", "doord")
|
|
doore = Find_Hint("UM05_MOVING_DOOR", "doore") --
|
|
doore2spawn = Find_Hint("STORY_TRIGGER_ZONE", "doore2spawn")
|
|
doorfspawn = Find_Hint("STORY_TRIGGER_ZONE", "doorfspawn")
|
|
doorg = Find_Hint("UM05_MOVING_DOOR", "doorg")
|
|
doorh = Find_Hint("UM05_MOVING_DOOR", "doorh") --
|
|
doori = Find_Hint("UM05_MOVING_DOOR", "doori")
|
|
doorj = Find_Hint("UM05_MOVING_DOOR", "doorj") --
|
|
doorjspawn = Find_Hint("STORY_TRIGGER_ZONE", "doorjspawn")
|
|
doork = Find_Hint("UM05_MOVING_DOOR", "doork") --
|
|
vaulta = Find_Hint("UM05_MOVING_DOOR", "vaultdoora") --
|
|
vaultb = Find_Hint("UM05_MOVING_DOOR", "vaultdoorb") --
|
|
adeptonedoor = Find_Hint("UM05_MOVING_DOOR", "adeptonedoor") --
|
|
vaultcover = Find_Hint("UM05_BLACK_COVER", "openedvault") --
|
|
|
|
consoleb = Find_Hint("UMP_INTERFACE_NODE", "consoleb")
|
|
consoled = Find_Hint("UMP_INTERFACE_NODE", "consoled")
|
|
consolee = Find_Hint("UMP_INTERFACE_NODE", "consolee") --
|
|
consoleg = Find_Hint("UMP_INTERFACE_NODE", "consoleg")
|
|
consolei = Find_Hint("UMP_INTERFACE_NODE", "consolei")
|
|
consolej = Find_Hint("UMP_INTERFACE_NODE", "consolej") --
|
|
consolek = Find_Hint("UMP_INTERFACE_NODE", "consolek") --
|
|
consolevault = Find_Hint("UMP_INTERFACE_NODE", "consolevault") --
|
|
consolesecret = Find_Hint("UMP_INTERFACE_NODE", "secretsithconsole") --
|
|
|
|
Register_Death_Event(consolesecret, Open_SithDoor)
|
|
Register_Death_Event(consolevault, PartFive_OpenVault)
|
|
Register_Death_Event(consolek, Open_Door_k)
|
|
Register_Death_Event(consolej, Open_Door_j)
|
|
Register_Death_Event(consolee, Open_Door_e)
|
|
|
|
camstart_one = Find_Hint("STORY_TRIGGER_ZONE", "partone-camerastart")
|
|
camstart_two = Find_Hint("STORY_TRIGGER_ZONE", "parttwo-camerastart")
|
|
camstart_three = Find_Hint("STORY_TRIGGER_ZONE", "partthree-camerastart")
|
|
camstart_four = Find_Hint("STORY_TRIGGER_ZONE", "partfour-camerastart")
|
|
camstart_five = Find_Hint("STORY_TRIGGER_ZONE", "partfive-camerastart")
|
|
camstart_six = Find_Hint("STORY_TRIGGER_ZONE", "partsix-camerastart")
|
|
|
|
-- name and register death events for required heroes
|
|
tyber_zann = Find_Nearest(doora,"TYBER_ZANN")
|
|
Register_Death_Event(tyber_zann, Tyber_Destroyed)
|
|
tyber_zann.Prevent_AI_Usage(true)
|
|
urai_fen = Find_Nearest(doora,"URAI_FEN")
|
|
Register_Death_Event(urai_fen, Urai_Destroyed)
|
|
urai_fen.Prevent_AI_Usage(true)
|
|
silri = Find_Nearest(doora,"SILRI")
|
|
Register_Death_Event(silri, Silri_Destroyed)
|
|
silri.Prevent_AI_Usage(true)
|
|
|
|
hallguard1 = Find_Hint("IMP_GUARD_TEAM", "hallguard1")
|
|
hallguard2 = Find_Hint("IMP_GUARD_TEAM", "hallguard2")
|
|
hallguard3 = Find_Hint("IMP_GUARD_TEAM", "hallguard3")
|
|
hallguard4 = Find_Hint("IMP_GUARD_TEAM", "hallguard4")
|
|
hallguard5 = Find_Hint("IMP_GUARD_TEAM", "hallguard5")
|
|
hallguard6 = Find_Hint("IMP_GUARD_TEAM", "hallguard6")
|
|
hallguard7 = Find_Hint("IMP_GUARD_TEAM", "hallguard7")
|
|
hallguard8 = Find_Hint("IMP_GUARD_TEAM", "hallguard8")
|
|
hallguard9 = Find_Hint("IMP_GUARD_TEAM", "hallguard9")
|
|
hallguard10 = Find_Hint("IMP_GUARD_TEAM", "hallguard10")
|
|
hallguard11 = Find_Hint("IMP_GUARD_TEAM", "hallguard11")
|
|
hallguard12 = Find_Hint("IMP_GUARD_TEAM", "hallguard12")
|
|
hallguard13 = Find_Hint("IMP_GUARD_TEAM", "hallguard13")
|
|
hallguard14 = Find_Hint("IMP_GUARD_TEAM", "hallguard14")
|
|
hallguard15 = Find_Hint("IMP_GUARD_TEAM", "hallguard15")
|
|
hallguard16 = Find_Hint("IMP_GUARD_TEAM", "hallguard16")
|
|
|
|
range = 200
|
|
Register_Prox(hallguard3, Prox_HallGuard_3, range, underworld_player)
|
|
Register_Prox(hallguard4, Prox_HallGuard_4, range, underworld_player)
|
|
Register_Prox(hallguard5, Prox_HallGuard_5, range, underworld_player)
|
|
Register_Prox(hallguard6, Prox_HallGuard_6, range, underworld_player)
|
|
Register_Prox(hallguard7, Prox_HallGuard_7, range, underworld_player)
|
|
Register_Prox(hallguard8, Prox_HallGuard_8, range, underworld_player)
|
|
Register_Prox(hallguard9, Prox_HallGuard_9, range, underworld_player)
|
|
Register_Prox(hallguard10, Prox_HallGuard_10, range, underworld_player)
|
|
Register_Prox(hallguard11, Prox_HallGuard_11, range, underworld_player)
|
|
Register_Prox(hallguard12, Prox_HallGuard_12, range, underworld_player)
|
|
Register_Prox(hallguard13, Prox_HallGuard_13, range, underworld_player)
|
|
Register_Prox(hallguard14, Prox_HallGuard_14, range, underworld_player)
|
|
Register_Prox(hallguard15, Prox_HallGuard_15, range, underworld_player)
|
|
Register_Prox(hallguard16, Prox_HallGuard_16, range, underworld_player)
|
|
|
|
-- Register prox events for battle chatter and game events
|
|
bactatank = Find_Nearest(doork, "EMPIRE_BUILDABLE_BACTA_TANK")
|
|
Register_Death_Event(bactatank, PartOne_BactaGone)
|
|
monitors_guards1 = Find_All_Objects_With_Hint("monitorsguards1")
|
|
monitorguardsa = Find_Hint("STORMTROOPER_TEAM", "monitorguardsa")
|
|
monitorguardsb = Find_Hint("STORMTROOPER_TEAM", "monitorguardsb")
|
|
monitorguardsc = Find_Hint("STORMTROOPER_TEAM", "monitorguardsc")
|
|
adeptonespawna = Find_Hint("STORY_TRIGGER_ZONE", "adeptonespawna")
|
|
adeptonespawnb = Find_Hint("STORY_TRIGGER_ZONE", "adeptonespawnb")
|
|
adeptonespawnc = Find_Hint("STORY_TRIGGER_ZONE", "adeptonespawnc")
|
|
adepttwospawn = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawn")
|
|
adeptfourspawn = Find_Hint("STORY_TRIGGER_ZONE", "adeptfourspawn")
|
|
Register_Prox(adeptonespawna, Prox_IntroAdeptOne, 200, underworld_player)
|
|
|
|
extraguys = Find_Hint("STORY_TRIGGER_ZONE", "extraguys")
|
|
monitorsa = Find_Hint("EXPLODING_CONTAINER", "monitorsa")
|
|
monitorsb1 = Find_Hint("DROID_INTERFACE_STATION", "monitorsb1")
|
|
monitorsb2 = Find_Hint("DROID_INTERFACE_STATION", "monitorsb2")
|
|
monitorsb3 = Find_Hint("UMP_INTERFACE_NODE", "monitorsb3")
|
|
monitorsb4 = Find_Hint("UMP_INTERFACE_NODE", "monitorsb4")
|
|
monitorsb5 = Find_Hint("DROID_INTERFACE_STATION", "monitorsb5")
|
|
monitorsb6 = Find_Hint("DROID_INTERFACE_STATION", "monitorsb6")
|
|
monitorsb7 = Find_Hint("DROID_INTERFACE_STATION", "monitorsb7")
|
|
monitorsb8 = Find_Hint("DROID_INTERFACE_STATION", "monitorsb8")
|
|
Register_Death_Event(monitorsa, PartOne_MonitorsDead)
|
|
|
|
highlightsithroom = Find_Hint("STORY_TRIGGER_ZONE", "highlightsithroom")
|
|
sithwall = Find_Hint("UM05_MOVING_DOOR", "secretsithdoor") --
|
|
|
|
holocron = Find_Hint("STORY_TRIGGER_ZONE", "sithholocron") --
|
|
Register_Prox(holocron, Prox_SithHolocron, 75, underworld_player)
|
|
|
|
nodea = Find_Hint("UM05_POWER_NODE", "powernodea")
|
|
Register_Death_Event(nodea, PartThree_Node_A)
|
|
nodeb = Find_Hint("UM05_POWER_NODE", "powernodeb")
|
|
Register_Death_Event(nodeb, PartThree_Node_B)
|
|
nodec = Find_Hint("UM05_POWER_NODE", "powernodec")
|
|
Register_Death_Event(nodec, PartThree_Node_C)
|
|
noded = Find_Hint("UM05_POWER_NODE", "powernoded")
|
|
Register_Death_Event(noded, PartThree_Node_D)
|
|
uraimeet = Find_Hint("STORY_TRIGGER_ZONE", "uraimeet")
|
|
meetspot = Find_Hint("STORY_TRIGGER_ZONE", "tyberuraimeet") --
|
|
adepttwospawna = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawna") --
|
|
adepttwospawnb = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawnb") --
|
|
adepttwospawnc = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawnc") --
|
|
adepttwospawnd = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawnd") --
|
|
adepttwospawne = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawne") --
|
|
adepttwospawnf = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawnf") --
|
|
adepttwospawng = Find_Hint("STORY_TRIGGER_ZONE", "adepttwospawng") --
|
|
blowreactor = Find_Hint("STORY_TRIGGER_ZONE", "blowreactor")
|
|
|
|
cuddlesstartfour = Find_Hint("STORY_TRIGGER_ZONE", "cuddlesstartfour")
|
|
silristartfour = Find_Hint("STORY_TRIGGER_ZONE", "silristartfour")
|
|
|
|
noticetroopers = Find_Hint("STORY_TRIGGER_ZONE", "noticetroopers") --
|
|
activatetroopers = Find_Hint("STORY_TRIGGER_ZONE", "activatetroopers") --
|
|
partfivetyber = Find_Hint("STORY_TRIGGER_ZONE", "partfive-tyber") --
|
|
partfivesilri = Find_Hint("STORY_TRIGGER_ZONE", "partfive-silri") --
|
|
partfivecuddles = Find_Hint("STORY_TRIGGER_ZONE", "partfive-cuddles") --
|
|
partfivemdus = Find_Hint("STORY_TRIGGER_ZONE", "partfive-mdus") --
|
|
partfiveextras = Find_Hint("STORY_TRIGGER_ZONE", "partfive-extras") --
|
|
|
|
dt1 = Find_Hint("UM05_PROP_DTP_I", "dt1") --
|
|
dt2 = Find_Hint("UM05_PROP_DTP_II", "dt2") --
|
|
dt3 = Find_Hint("UM05_PROP_DTP_III", "dt3") --
|
|
dt4 = Find_Hint("UM05_PROP_DTP_I", "dt4") --
|
|
dt5 = Find_Hint("UM05_PROP_DTP_II", "dt5") --
|
|
dt6 = Find_Hint("UM05_PROP_DTP_III", "dt6") --
|
|
dt7 = Find_Hint("UM05_PROP_DTP_I", "dt7") --
|
|
dt8 = Find_Hint("UM05_PROP_DTP_II", "dt8") --
|
|
dt9 = Find_Hint("UM05_PROP_DTP_III", "dt9") --
|
|
|
|
guardspawna = Find_Hint("STORY_TRIGGER_ZONE", "guardsa") --
|
|
guardspawnb = Find_Hint("STORY_TRIGGER_ZONE", "guardsb") --
|
|
mduspawn = Find_Hint("STORY_TRIGGER_ZONE", "mduspawn") --
|
|
mdua = Find_Hint("STORY_TRIGGER_ZONE", "mdu1") --
|
|
mdub = Find_Hint("STORY_TRIGGER_ZONE", "mdu2") --
|
|
mduc = Find_Hint("STORY_TRIGGER_ZONE", "mdu3") --
|
|
getmdu = Find_Hint("STORY_TRIGGER_ZONE", "getmdus") --
|
|
Register_Prox(getmdu, Prox_GetMDUs, 75, underworld_player)
|
|
movegroup = Find_Hint("STORY_TRIGGER_ZONE", "partfive-movegroup") --
|
|
Register_Prox(movegroup, Prox_MoveGroup, 75, underworld_player)
|
|
partfoursilri = Find_Hint("STORY_TRIGGER_ZONE", "partfive-silrispawn")
|
|
partfourcuddles = Find_Hint("STORY_TRIGGER_ZONE", "partfive-cuddlesspawn")
|
|
partfourmeet = Find_Hint("STORY_TRIGGER_ZONE", "partfivemeet")
|
|
redguard1 = Find_Hint("IMP_GUARD_TEAM", "redguard1")
|
|
redguard2 = Find_Hint("IMP_GUARD_TEAM", "redguard2")
|
|
adeptthreespawn = Find_Hint("STORY_TRIGGER_ZONE", "adeptthreespawn")
|
|
|
|
partvaultcamerastart = Find_Hint("STORY_TRIGGER_ZONE", "partvault-camerastart")
|
|
urai_door = Find_Hint("STORY_TRIGGER_ZONE", "uraiworkdoor")
|
|
spawnlefta = Find_Hint("STORY_TRIGGER_ZONE", "spawntroopsa")
|
|
movetroopsa1 = Find_Hint("STORY_TRIGGER_ZONE", "movetroopsa1")
|
|
movetroopsa2 = Find_Hint("STORY_TRIGGER_ZONE", "movetroopsa2")
|
|
movetroopsa3 = Find_Hint("STORY_TRIGGER_ZONE", "movetroopsa3")
|
|
spawnrightb = Find_Hint("STORY_TRIGGER_ZONE", "spawntroopsb")
|
|
movetroopsb = Find_Hint("STORY_TRIGGER_ZONE", "movetroopsb")
|
|
spawnrightc = Find_Hint("STORY_TRIGGER_ZONE", "spawntroopsc")
|
|
movetroopsc = Find_Hint("STORY_TRIGGER_ZONE", "movetroopsc")
|
|
landinga = Find_Hint("STORY_TRIGGER_ZONE", "landinga")
|
|
landingb = Find_Hint("STORY_TRIGGER_ZONE", "landingb")
|
|
landingc = Find_Hint("STORY_TRIGGER_ZONE", "landingc")
|
|
landingd = Find_Hint("STORY_TRIGGER_ZONE", "landingd")
|
|
landinge = Find_Hint("STORY_TRIGGER_ZONE", "landinge")
|
|
|
|
urai_comp = Find_Hint("STORY_TRIGGER_ZONE", "uraiworkcomputer")
|
|
invault = Find_Hint("STORY_TRIGGER_ZONE", "insidevault")
|
|
Register_Prox(invault, Prox_InsideVault, 75, underworld_player)
|
|
vault = Find_Hint("STORY_TRIGGER_ZONE", "reachedvault")
|
|
--Register_Prox(vault, Prox_ReachedVault, 20, underworld_player)
|
|
|
|
partsix_mdus = Find_Hint("STORY_TRIGGER_ZONE", "partsix-mdus")
|
|
partsix_tyber = Find_Hint("STORY_TRIGGER_ZONE", "partsix-tyber")
|
|
partsix_urai = Find_Hint("STORY_TRIGGER_ZONE", "partsix-urai")
|
|
partsix_other = Find_Hint("STORY_TRIGGER_ZONE", "partsix-other")
|
|
introadeptfour = Find_Hint("STORY_TRIGGER_ZONE", "introadeptfour")
|
|
|
|
exitdoor = Find_Hint("STORY_TRIGGER_ZONE", "reachedexit") --
|
|
Register_Prox(exitdoor, Prox_ReachedExit, 75, underworld_player)
|
|
breakwall = Find_Hint("STORY_TRIGGER_ZONE", "breakwall") --
|
|
juggernaut = Find_Hint("HAV_JUGGERNAUT", "juggernaut") --
|
|
juggernaut.Set_Selectable(false)
|
|
|
|
stopspawns = Find_Hint("STORY_TRIGGER_ZONE", "partsix-stopspawns")
|
|
Register_Prox(stopspawns, Prox_StopSpawns, 100, underworld_player)
|
|
|
|
missiles1 = Find_Hint("STORY_TRIGGER_ZONE", "missiles1")
|
|
missiles2 = Find_Hint("STORY_TRIGGER_ZONE", "missiles2")
|
|
missiles3 = Find_Hint("STORY_TRIGGER_ZONE", "missiles3")
|
|
missiles4 = Find_Hint("STORY_TRIGGER_ZONE", "missiles4")
|
|
missiles5 = Find_Hint("STORY_TRIGGER_ZONE", "missiles5")
|
|
missiles6 = Find_Hint("STORY_TRIGGER_ZONE", "missiles6")
|
|
missiles7 = Find_Hint("STORY_TRIGGER_ZONE", "missiles7")
|
|
missiles8 = Find_Hint("STORY_TRIGGER_ZONE", "missiles8")
|
|
|
|
mt3 = Create_Generic_Object("UNDERWORLD_TORPEDO_TURRET", missiles3.Get_Position(), neutral_player)
|
|
mt4 = Create_Generic_Object("UNDERWORLD_TORPEDO_TURRET", missiles4.Get_Position(), neutral_player)
|
|
mt5 = Create_Generic_Object("UNDERWORLD_TORPEDO_TURRET", missiles5.Get_Position(), neutral_player)
|
|
mt6 = Create_Generic_Object("UNDERWORLD_TORPEDO_TURRET", missiles6.Get_Position(), neutral_player)
|
|
|
|
-- setup end cinematic flags and camera positions
|
|
|
|
|
|
-- set up some global mission state flags
|
|
|
|
MissionPartOneStarted = false
|
|
MissionPartOneDone = false
|
|
VictoryCondition_BackdoorOpen = false
|
|
VictoryCondition_MonitorControls = false
|
|
VictoryCondition_AdeptsSpawned = false
|
|
VictoryCondition_AdeptOneDead = false
|
|
VictoryCondition_BactaGone = false
|
|
|
|
MissionPartTwoStarted = false
|
|
MissionPartTwoDone = false
|
|
VictoryCondition_HolocronFound = false
|
|
|
|
MissionPartThreeStarted = false
|
|
MissionPartThreeDone = false
|
|
VictoryCondition_Blown_A = false
|
|
VictoryCondition_Blown_B = false
|
|
VictoryCondition_Blown_C = false
|
|
VictoryCondition_Blown_D = false
|
|
VictoryCondition_GeneratorDead = false
|
|
VictoryCondition_AdeptTwoDead = false
|
|
VictoryCondition_EndTwo = false
|
|
VictoryCondition_MeetTyber = false
|
|
VictoryCondition_AdeptTwoSpawned = false
|
|
|
|
MissionPartFourStarted = false
|
|
MissionPartFourDone = false
|
|
VictoryCondition_ReachedDoorE2 = false
|
|
VictoryCondition_DarkTroopersSpawned = false
|
|
VictoryCondition_DarkTroopersDead = false
|
|
VictoryCondition_EndedFour = false
|
|
VictoryCondition_AdeptThreeSpawned = false
|
|
VictoryCondition_AdeptThreeDead = false
|
|
|
|
MissionPartFiveStarted = false
|
|
MissionPartFiveDone = false
|
|
VictoryCondition_GuardsSpawned = false
|
|
VictoryCondition_GuardsDead = false
|
|
VictoryCondition_GotAccessCodes = false
|
|
VictoryCondition_SeenVault = false
|
|
|
|
MissionPartSixStarted = false
|
|
MissionPartSixDone = false
|
|
VictoryCondition_AdeptFourDead = false
|
|
VictoryCondition_UraiBreakWall = false
|
|
VictoryCondition_InJuggernaut = false
|
|
VictoryCondition_StopSpawns = false
|
|
VictoryCondition_ReachedExit = false
|
|
|
|
DefeatCondition_TyberDead = false
|
|
DefeatCondition_UraiDead = false
|
|
DefeatCondition_SilriDead = false
|
|
|
|
VictoryStarted = false
|
|
DefeatStarted = false
|
|
|
|
current_cine_id = nil
|
|
CINE_Intro_Active = false
|
|
CINE_Active_Adept_One = false
|
|
CINE_Active_Intro_Silri = false
|
|
CINE_Active_Urai_Nodes = false
|
|
CINE_Active_Silri_Troopers = false
|
|
CINE_Active_Grouped_Up = false
|
|
CINE_Active_Outside_Vault = false
|
|
CINE_Active_Final_Adept = false
|
|
|
|
underworld_player.Disable_Bombing_Run(false)
|
|
underworld_player.Disable_Orbital_Bombardment(true)
|
|
underworld_player.Remove_Orbital_Bombardment(true)
|
|
|
|
current_cine_id = Create_Thread("CINE_Start_Mission")
|
|
--current_cine_id = Create_Thread("CINE_Adept_One")
|
|
--current_cine_id = Create_Thread("CINE_Intro_Silri")
|
|
--current_cine_id = Create_Thread("CINE_Urai_Nodes")
|
|
--current_cine_id = Create_Thread("CINE_Silri_Troopers")
|
|
--current_cine_id = Create_Thread("CINE_Grouped_Up")
|
|
--current_cine_id = Create_Thread("CINE_Outside_Vault_Setup")
|
|
--current_cine_id = Create_Thread("CINE_Final_Adept")
|
|
|
|
Create_Thread("Main")
|
|
elseif message == OnUpdate then
|
|
--Do Nothing
|
|
elseif message == OnExit then
|
|
--Do Nothing
|
|
end
|
|
end
|
|
|
|
function Main()
|
|
while true do
|
|
if MissionPartOneStarted and not MissionPartOneDone then
|
|
if VictoryCondition_MonitorControls and VictoryCondition_AdeptOneDead then
|
|
if TestValid(consolej) then
|
|
if consolej.Get_Owner() ~= hostile_player then
|
|
consolej.Change_Owner(hostile_player)
|
|
consolej.Highlight(true)
|
|
Add_Radar_Blip(consolej, "consolej")
|
|
end
|
|
end
|
|
if not TestValid(doorj) then
|
|
MissionPartOneDone = true
|
|
MissionPartTwoStart = true
|
|
Story_Event("UM11_MONITORSDISABLED")
|
|
current_cine_id = Create_Thread("CINE_Intro_Silri")
|
|
end
|
|
end
|
|
if VictoryCondition_AdeptsSpawned then
|
|
if not VictoryCondition_AdeptOneDead then
|
|
if not TestValid(adeptonea) and
|
|
not TestValid(adeptoneb) and
|
|
not TestValid(adeptonec) then
|
|
VictoryCondition_AdeptOneDead = true
|
|
Open_AdeptOneDoor()
|
|
Story_Event("UM11_OBJECTIVE_02_DONE")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if MissionPartTwoStarted then
|
|
if not MissionPartTwoDone then
|
|
if VictoryCondition_HolocronFound then
|
|
MissionPartTwoDone = true
|
|
MissionPartThreeStart = true
|
|
Story_Event("UM11_FOUNDHOLOCRON")
|
|
Create_Thread("MissionObjective_PartThree")
|
|
end
|
|
end
|
|
end
|
|
if MissionPartThreeStarted then
|
|
if not MissionPartThreeDone then
|
|
if VictoryCondition_Blown_A and
|
|
VictoryCondition_Blown_B and
|
|
VictoryCondition_Blown_C and
|
|
VictoryCondition_Blown_D then
|
|
if not VictoryCondition_GeneratorDead then
|
|
VictoryCondition_GeneratorDead = true
|
|
turrets = Find_All_Objects_Of_Type("EMPIRE_ANTI_INFANTRY_TURRET")
|
|
for k, unit in pairs(turrets) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == empire_player then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
end
|
|
Story_Event("UM11_OBJECTIVE_04_DONE")
|
|
end
|
|
end
|
|
if VictoryCondition_AdeptTwoSpawned then
|
|
if not VictoryCondition_AdeptTwoDead then
|
|
if not TestValid(adepttwoa) and
|
|
not TestValid(adepttwob) and
|
|
not TestValid(adepttwoc) and
|
|
not TestValid(adepttwod) and
|
|
not TestValid(adepttwoe) and
|
|
not TestValid(adepttwof) and
|
|
not TestValid(adepttwog) and
|
|
--not TestValid(adepttwoh) and
|
|
--not TestValid(adepttwoi) and
|
|
--not TestValid(adepttwoj) and
|
|
--not TestValid(adepttwok) and
|
|
--not TestValid(adepttwol) and
|
|
--not TestValid(adepttwom) and
|
|
not TestValid(adepttwon) then
|
|
Story_Event("UM11_OBJECTIVE_05_DONE")
|
|
VictoryCondition_AdeptTwoDead = true
|
|
end
|
|
end
|
|
end
|
|
if VictoryCondition_GeneratorDead and VictoryCondition_AdeptTwoDead then
|
|
if not VictoryCondition_EndTwo then
|
|
VictoryCondition_EndTwo = true
|
|
Create_Thread("PartThree_UraiDone")
|
|
end
|
|
end
|
|
if VictoryCondition_MeetTyber then
|
|
MissionPartThreeDone = true
|
|
MissionPartFourStart = true
|
|
current_cine_id = Create_Thread("CINE_Silri_Troopers")
|
|
end
|
|
end
|
|
end
|
|
if MissionPartFourStarted then
|
|
if not MissionPartFourDone then
|
|
if VictoryCondition_DarkTroopersSpawned then
|
|
if not TestValid(dt1a) and
|
|
not TestValid(dt2a) and
|
|
not TestValid(dt3a) and
|
|
not TestValid(dt4a) and
|
|
not TestValid(dt5a) and
|
|
not TestValid(dt6a) and
|
|
not TestValid(dt7a) and
|
|
not TestValid(dt8a) and
|
|
not TestValid(dt9a) then
|
|
if not VictoryCondition_DarkTroopersDead then
|
|
Story_Event("UM11_OBJECTIVE_06A_DONE")
|
|
VictoryCondition_DarkTroopersDead = true
|
|
Create_Thread("PartFive_SetupGroup")
|
|
end
|
|
end
|
|
end
|
|
if VictoryCondition_DarkTroopersDead and VictoryCondition_EndedFour then
|
|
MissionPartFourDone = true
|
|
MissionPartFiveStarted = true
|
|
Create_Thread("MissionObjective_PartFive")
|
|
end
|
|
end
|
|
end
|
|
if MissionPartFiveStarted then
|
|
if not MissionPartFiveDone then
|
|
if VictoryCondition_AdeptThreeSpawned then
|
|
if not VictoryCondition_AdeptThreeDead then
|
|
if not TestValid(adeptthreea) and
|
|
not TestValid(adeptthreeb) and
|
|
not TestValid(adeptthreec) then
|
|
Story_Event("UM11_OBJECTIVE_07_DONE")
|
|
VictoryCondition_AdeptThreeDead = true
|
|
end
|
|
end
|
|
end
|
|
if VictoryCondition_GuardsSpawned then
|
|
if not TestValid(troopsa) and
|
|
not TestValid(troopsb) and
|
|
not TestValid(troopsc) and
|
|
not TestValid(troopsd) and
|
|
not TestValid(troopse) then
|
|
if not VictoryCondition_GuardsDead then
|
|
VictoryCondition_GuardsDead = true
|
|
Create_Thread("Open_Door_h")
|
|
urai_comp.Highlight(true)
|
|
Add_Radar_Blip(urai_comp, "urai_comp")
|
|
consolevault.Change_Owner(hostile_player)
|
|
Story_Event("CHATTER_51")
|
|
end
|
|
end
|
|
end
|
|
if VictoryCondition_AdeptThreeDead and
|
|
VictoryCondition_GuardsSpawned and
|
|
VictoryCondition_GuardsDead and
|
|
VictoryCondition_GotAccessCodes and
|
|
VictoryCondition_SeenVault then
|
|
MissionPartFiveDone = true
|
|
MissionPartSixStart = true
|
|
Create_Thread("MissionObjective_PartSix")
|
|
end
|
|
end
|
|
end
|
|
if MissionPartSixStarted then
|
|
if not MissionPartSixDone then
|
|
if VictoryCondition_AdeptFourDead then
|
|
if not VictoryCondition_UraiBreakWall then
|
|
VictoryCondition_UraiBreakWall = true
|
|
Create_Thread("PartSix_OpenExit")
|
|
end
|
|
end
|
|
if VictoryCondition_AdeptFourDead and VictoryCondition_UraiBreakWall and VictoryCondition_ReachedExit then
|
|
MissionPartSixDone = true
|
|
end
|
|
end
|
|
end
|
|
if MissionPartOneDone and
|
|
MissionPartTwoDone and
|
|
MissionPartThreeDone and
|
|
MissionPartFourDone and
|
|
MissionPartFiveDone and
|
|
MissionPartSixDone then
|
|
if VictoryCondition_MonitorControls and
|
|
VictoryCondition_AdeptOneDead and
|
|
VictoryCondition_HolocronFound and
|
|
VictoryCondition_GeneratorDead and
|
|
VictoryCondition_AdeptTwoDead and
|
|
VictoryCondition_DarkTroopersDead and
|
|
VictoryCondition_GuardsDead and
|
|
VictoryCondition_GotAccessCodes and
|
|
VictoryCondition_AdeptFourDead and
|
|
VictoryCondition_UraiBreakWall and
|
|
VictoryCondition_ReachedExit then
|
|
if not VictoryStarted then
|
|
Story_Event("UM11_OBJECTIVE_01_DONE")
|
|
VictoryStarted = true
|
|
Create_Thread("EndMissionVictory")
|
|
end
|
|
end
|
|
end
|
|
if DefeatCondition_TyberDead or DefeatCondition_UraiDead or DefeatCondition_SilriDead then
|
|
if not DefeatStarted then
|
|
DefeatStarted = true
|
|
Create_Thread("EndMissionDefeat")
|
|
end
|
|
end
|
|
Sleep(.5)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
function Setup_Cinematic_Definitions()
|
|
cambalconypos = Find_Hint("STORY_TRIGGER_ZONE", "cambalconypos")
|
|
cambalconylook = Find_Hint("STORY_TRIGGER_ZONE", "cambalconylook")
|
|
camcitypos = Find_Hint("STORY_TRIGGER_ZONE", "camcitypos")
|
|
camcitylook = Find_Hint("STORY_TRIGGER_ZONE", "camcitylook")
|
|
camwindowpos = Find_Hint("STORY_TRIGGER_ZONE", "camwindowpos")
|
|
cambalcsilri = Find_Hint("STORY_TRIGGER_ZONE", "cambalcsilri")
|
|
cambalctyber = Find_Hint("STORY_TRIGGER_ZONE", "cambalctyber")
|
|
cambalcurai = Find_Hint("STORY_TRIGGER_ZONE", "cambalcurai")
|
|
camentrancepos = Find_Hint("STORY_TRIGGER_ZONE", "camentrancepos")
|
|
camentrancelook = Find_Hint("STORY_TRIGGER_ZONE", "camentrancelook")
|
|
|
|
cinbtyberstart = Find_Hint("STORY_TRIGGER_ZONE", "cinbtyberstart")
|
|
cinbtybergoto = Find_Hint("STORY_TRIGGER_ZONE", "cinbtybergoto")
|
|
cinbirds1 = Find_Hint("BIRD_LIGHT_COLOR", "birds1")
|
|
cinbirds2 = Find_Hint("BIRD_LIGHT_COLOR", "birds2")
|
|
cinbirds3 = Find_Hint("BIRD_LIGHT_COLOR", "birds3")
|
|
cinbirds4 = Find_Hint("BIRD_LIGHT_COLOR", "birds4")
|
|
|
|
cinbarguys1 = Find_Hint("URBAN_CIVILIAN_A", "cinbarguys1")
|
|
cinbarguys2 = Find_Hint("URBAN_CIVILIAN_A", "cinbarguys2")
|
|
cinbarguys3 = Find_Hint("URBAN_CIVILIAN_B", "cinbarguys3")
|
|
cinbarguys4 = Find_Hint("URBAN_CIVILIAN_C", "cinbarguys4")
|
|
cinbarguys5 = Find_Hint("TWILEK_FEMALE", "cinbarguys5")
|
|
cinbarguys6 = Find_Hint("TWILEK_FEMALE", "cinbarguys6")
|
|
cinbarguys7 = Find_Hint("SWAMP_CIVILIAN_B", "cinbarguys7")
|
|
cinbarguys8 = Find_Hint("MON_CALAMARI_CIVILIAN", "cinbarguys8")
|
|
|
|
balconytyber = Find_Hint("STORY_TRIGGER_ZONE", "balconytyber")
|
|
balconysilri = Find_Hint("STORY_TRIGGER_ZONE", "balconysilri")
|
|
balconyurai = Find_Hint("STORY_TRIGGER_ZONE", "balconyurai")
|
|
|
|
cambalconypan = Find_Hint("STORY_TRIGGER_ZONE", "cambalconypan")
|
|
camintropos = Find_Hint("STORY_TRIGGER_ZONE", "camintropos")
|
|
camintrolook = Find_Hint("STORY_TRIGGER_ZONE", "camintrolook")
|
|
camintrofloorpos = Find_Hint("STORY_TRIGGER_ZONE", "camintrofloorpos")
|
|
camintrofloorpan = Find_Hint("STORY_TRIGGER_ZONE", "camintrofloorpan")
|
|
camintrofloorlook = Find_Hint("STORY_TRIGGER_ZONE", "camintrofloorlook")
|
|
|
|
introtyber = Find_Hint("STORY_TRIGGER_ZONE", "introtyber")
|
|
introguard = Find_Hint("STORY_TRIGGER_ZONE", "introguard")
|
|
|
|
camadeptonepos = Find_Hint("STORY_TRIGGER_ZONE", "camadeptonepos")
|
|
camadeptonelook = Find_Hint("STORY_TRIGGER_ZONE", "camadeptonelook")
|
|
camonepos = Find_Hint("STORY_TRIGGER_ZONE", "camonepos")
|
|
camonelook = Find_Hint("STORY_TRIGGER_ZONE", "camonelook")
|
|
camonepospan = Find_Hint("STORY_TRIGGER_ZONE", "camonepospan")
|
|
camonelookpan = Find_Hint("STORY_TRIGGER_ZONE", "camonelookpan")
|
|
|
|
cineadeptonespawns = Find_Hint("STORY_TRIGGER_ZONE", "cineadeptonespawns")
|
|
cineadeptonemouse = Find_Hint("STORY_TRIGGER_ZONE", "cineadeptonemouse")
|
|
cineadeptonetyber = Find_Hint("STORY_TRIGGER_ZONE", "cineadeptonetyber")
|
|
cinemousegoto1 = Find_Hint("STORY_TRIGGER_ZONE", "cinemousegoto1")
|
|
cinemousegoto2 = Find_Hint("STORY_TRIGGER_ZONE", "cinemousegoto2")
|
|
cinemousegoto3 = Find_Hint("STORY_TRIGGER_ZONE", "cinemousegoto3")
|
|
|
|
camintrosilripos = Find_Hint("STORY_TRIGGER_ZONE", "camintrosilripos")
|
|
camintrosilrilook = Find_Hint("STORY_TRIGGER_ZONE", "camintrosilrilook")
|
|
camsilriadeptpos = Find_Hint("STORY_TRIGGER_ZONE", "camsilriadeptpos")
|
|
camsilriadeptlook = Find_Hint("STORY_TRIGGER_ZONE", "camsilriadeptlook")
|
|
camtwirlsilristart = Find_Hint("STORY_TRIGGER_ZONE", "camtwirlsilristart")
|
|
camtwirlsilriend = Find_Hint("STORY_TRIGGER_ZONE", "camtwirlsilriend")
|
|
camfightpos = Find_Hint("STORY_TRIGGER_ZONE", "camfightpos")
|
|
camfightlook = Find_Hint("STORY_TRIGGER_ZONE", "camfightlook")
|
|
camadeptdiepos = Find_Hint("STORY_TRIGGER_ZONE", "camadeptdiepos")
|
|
|
|
cinesilri = Find_Hint("STORY_TRIGGER_ZONE", "cinesilri")
|
|
cinesilriadept = Find_Hint("STORY_TRIGGER_ZONE", "cinesilriadept")
|
|
cinesilriadeptmoveto = Find_Hint("STORY_TRIGGER_ZONE", "cinesilriadeptmoveto")
|
|
cinerancorsummon = Find_Hint("STORY_TRIGGER_ZONE", "cinerancorsummon")
|
|
|
|
camholeposstart = Find_Hint("STORY_TRIGGER_ZONE", "camholeposstart")
|
|
camholelookstart = Find_Hint("STORY_TRIGGER_ZONE", "camholelookstart")
|
|
camholeposend = Find_Hint("STORY_TRIGGER_ZONE", "camholeposend")
|
|
camholelookend = Find_Hint("STORY_TRIGGER_ZONE", "camholelookend")
|
|
camuraifaceoffpos = Find_Hint("STORY_TRIGGER_ZONE", "camuraifaceoffpos")
|
|
camuraifaceofflook = Find_Hint("STORY_TRIGGER_ZONE", "camuraifaceofflook")
|
|
camholopos = Find_Hint("STORY_TRIGGER_ZONE", "camholopos")
|
|
camhololook = Find_Hint("STORY_TRIGGER_ZONE", "camhololook")
|
|
camocronpos = Find_Hint("STORY_TRIGGER_ZONE", "camocronpos")
|
|
camocronlook = Find_Hint("STORY_TRIGGER_ZONE", "camocronlook")
|
|
|
|
sithholofx = Find_Hint("STORY_TRIGGER_ZONE", "sithholofx")
|
|
cuddlesholospawn = Find_Hint("STORY_TRIGGER_ZONE", "cuddlesholospawn")
|
|
silriholospawn = Find_Hint("STORY_TRIGGER_ZONE", "silriholospawn")
|
|
cineadepttwospawn = Find_Hint("STORY_TRIGGER_ZONE", "cineadepttwospawn")
|
|
cineadepttwomoveto = Find_Hint("STORY_TRIGGER_ZONE", "cineadepttwomoveto")
|
|
|
|
camsilrileavepos = Find_Hint("STORY_TRIGGER_ZONE", "camsilrileavepos")
|
|
camsilrileavelook = Find_Hint("STORY_TRIGGER_ZONE", "camsilrileavelook")
|
|
camsilrileavepos = Find_Hint("STORY_TRIGGER_ZONE", "camsilrileavepos")
|
|
camsilrileavelook = Find_Hint("STORY_TRIGGER_ZONE", "camsilrileavelook")
|
|
|
|
camdddpos = Find_Hint("STORY_TRIGGER_ZONE", "camdddpos")
|
|
camdddlook = Find_Hint("STORY_TRIGGER_ZONE", "camdddlook")
|
|
camfindsilripos = Find_Hint("STORY_TRIGGER_ZONE", "camfindsilripos")
|
|
camfindsilrilook = Find_Hint("STORY_TRIGGER_ZONE", "camfindsilrilook")
|
|
cammeetsilripos = Find_Hint("STORY_TRIGGER_ZONE", "cammeetsilripos")
|
|
cammeetsilrilook = Find_Hint("STORY_TRIGGER_ZONE", "cammeetsilrilook")
|
|
|
|
silridddspawn = Find_Hint("STORY_TRIGGER_ZONE", "silridddspawn")
|
|
cuddlesdddspawn = Find_Hint("STORY_TRIGGER_ZONE", "cuddlesdddspawn")
|
|
trooperdddspawn = Find_Hint("STORY_TRIGGER_ZONE", "trooperdddspawn")
|
|
cineddduraispawn = Find_Hint("STORY_TRIGGER_ZONE", "cineddduraispawn")
|
|
cinedddtyberspawn = Find_Hint("STORY_TRIGGER_ZONE", "cinedddtyberspawn")
|
|
uraidddgoto = Find_Hint("STORY_TRIGGER_ZONE", "uraidddgoto")
|
|
tyberdddgoto = Find_Hint("STORY_TRIGGER_ZONE", "tyberdddgoto")
|
|
|
|
camuraiworkpos = Find_Hint("STORY_TRIGGER_ZONE", "camuraiworkpos")
|
|
camuraiworklook = Find_Hint("STORY_TRIGGER_ZONE", "camuraiworklook")
|
|
camdoorclosepos = Find_Hint("STORY_TRIGGER_ZONE", "camdoorclosepos")
|
|
camdoorcloselook = Find_Hint("STORY_TRIGGER_ZONE", "camdoorcloselook")
|
|
camoutvtyberpos = Find_Hint("STORY_TRIGGER_ZONE", "camoutvtyberpos")
|
|
camoutvtyberlook = Find_Hint("STORY_TRIGGER_ZONE", "camoutvtyberlook")
|
|
|
|
fivesilrirunto = Find_Hint("STORY_TRIGGER_ZONE", "fivesilrirunto")
|
|
fivetyberrunto = Find_Hint("STORY_TRIGGER_ZONE", "fivetyberrunto")
|
|
fivecuddlesrunto = Find_Hint("STORY_TRIGGER_ZONE", "fivecuddlesrunto")
|
|
fivemdusrunto = Find_Hint("STORY_TRIGGER_ZONE", "fivemdusrunto")
|
|
fiveextrasrunto = Find_Hint("STORY_TRIGGER_ZONE", "fiveextrasrunto")
|
|
fiveuraispawn = Find_Hint("STORY_TRIGGER_ZONE", "fiveuraispawn")
|
|
|
|
camlastpos = Find_Hint("STORY_TRIGGER_ZONE", "camlastpos")
|
|
camlastlook = Find_Hint("STORY_TRIGGER_ZONE", "camlastlook")
|
|
camlastpan = Find_Hint("STORY_TRIGGER_ZONE", "camlastpan")
|
|
camstraightdown1 = Find_Hint("STORY_TRIGGER_ZONE", "camstraightdown1")
|
|
camstraightdown2 = Find_Hint("STORY_TRIGGER_ZONE", "camstraightdown2")
|
|
camstraightdown3 = Find_Hint("STORY_TRIGGER_ZONE", "camstraightdown3")
|
|
camstraightdown4 = Find_Hint("STORY_TRIGGER_ZONE", "camstraightdown4")
|
|
camsilrityberpos = Find_Hint("STORY_TRIGGER_ZONE", "camsilrityberpos")
|
|
camsilrityberlook = Find_Hint("STORY_TRIGGER_ZONE", "camsilrityberlook")
|
|
|
|
lasttyberspawn = Find_Hint("STORY_TRIGGER_ZONE", "lasttyberspawn")
|
|
lasttybergoto = Find_Hint("STORY_TRIGGER_ZONE", "lasttybergoto")
|
|
lastsilrispawn = Find_Hint("STORY_TRIGGER_ZONE", "lastsilrispawn")
|
|
lastsilrigoto = Find_Hint("STORY_TRIGGER_ZONE", "lastsilrigoto")
|
|
lasturaispawn = Find_Hint("STORY_TRIGGER_ZONE", "lasturaispawn")
|
|
lasturaigoto = Find_Hint("STORY_TRIGGER_ZONE", "lasturaigoto")
|
|
lastcuddlesspawn = Find_Hint("STORY_TRIGGER_ZONE", "lastcuddlesspawn")
|
|
lastcuddlesgoto = Find_Hint("STORY_TRIGGER_ZONE", "lastcuddlesgoto")
|
|
lastadeptspawn = Find_Hint("STORY_TRIGGER_ZONE", "lastadeptspawn")
|
|
lasttele1 = Find_Hint("STORY_TRIGGER_ZONE", "lasttele1")
|
|
lasttele2 = Find_Hint("STORY_TRIGGER_ZONE", "lasttele2")
|
|
lasttele3 = Find_Hint("STORY_TRIGGER_ZONE", "lasttele3")
|
|
lasttele4 = Find_Hint("STORY_TRIGGER_ZONE", "lasttele4")
|
|
|
|
finaltyberspot = Find_Hint("STORY_TRIGGER_ZONE", "finaltyberspot")
|
|
finalsilrispot = Find_Hint("STORY_TRIGGER_ZONE", "finalsilrispot")
|
|
finaluraispot = Find_Hint("STORY_TRIGGER_ZONE", "finaluraispot")
|
|
finalcuddlesspot = Find_Hint("STORY_TRIGGER_ZONE", "finalcuddlesspot")
|
|
finalextrasspot = Find_Hint("STORY_TRIGGER_ZONE", "finalextrasspot")
|
|
finalmdusspot = Find_Hint("STORY_TRIGGER_ZONE", "finalmdusspot")
|
|
|
|
endcinecampos = Find_Hint("STORY_TRIGGER_ZONE", "endcinecampos")
|
|
endcinecamlook = Find_Hint("STORY_TRIGGER_ZONE", "endcinecamlook")
|
|
|
|
endcinejugger = Find_Hint("HAV_JUGGERNAUT", "endcinejugger")
|
|
endcinejuggergoto = Find_Hint("STORY_TRIGGER_ZONE", "endcinejuggergoto")
|
|
end
|
|
|
|
-- delay a short time and then start the game
|
|
function CINE_Start_Mission()
|
|
Cancel_Fast_Forward()
|
|
CINE_Intro_Active = true
|
|
|
|
Fade_Screen_Out(0)
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
Play_Music("Structure_Cantina_Music_Event")
|
|
|
|
endcinebox.Hide(true)
|
|
endcinebox1.Hide(true)
|
|
int_sky.Hide(true)
|
|
ext_sky.Hide(false)
|
|
|
|
tyber_zann.Hide(true)
|
|
tyber_zann.Prevent_All_Fire(true)
|
|
|
|
cin_tyber = Create_Generic_Object("TYBER_ZANN", introtyber.Get_Position(), underworld_player)
|
|
cin_tyber.Suspend_Locomotor(true)
|
|
cin_tyber.Prevent_All_Fire(true)
|
|
cin_tyber.Face_Immediate(introguard)
|
|
cin_guard = Create_Generic_Object("GENERIC_FIELD_COMMANDER_EMPIRE", introguard.Get_Position(), empire_player)
|
|
cin_tyber.Suspend_Locomotor(true)
|
|
cin_guard.Prevent_All_Fire(true)
|
|
cin_guard.Face_Immediate(introtyber)
|
|
|
|
cin_btyber = Create_Generic_Object("TYBER_ZANN", balconytyber.Get_Position(), neutral_player)
|
|
cin_btyber.Teleport_And_Face(balconytyber)
|
|
cin_bsilri = Create_Generic_Object("SILRI", balconysilri.Get_Position(), neutral_player)
|
|
cin_bsilri.Teleport_And_Face(balconysilri)
|
|
cin_burai = Create_Generic_Object("URAI_FEN", balconyurai.Get_Position(), neutral_player)
|
|
cin_burai.Teleport_And_Face(balconyurai)
|
|
|
|
cinbarguys1.Suspend_Locomotor(true)
|
|
cinbarguys2.Suspend_Locomotor(true)
|
|
cinbarguys3.Suspend_Locomotor(true)
|
|
cinbarguys4.Suspend_Locomotor(true)
|
|
cinbarguys5.Suspend_Locomotor(true)
|
|
cinbarguys6.Suspend_Locomotor(true)
|
|
cinbarguys7.Suspend_Locomotor(true)
|
|
cinbarguys8.Suspend_Locomotor(true)
|
|
Sleep(1.5)
|
|
|
|
Fade_Screen_In(1)
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(camcitypos, 0, 0, 75, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camcitylook, 0, 0, 75, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camwindowpos, 10, -5, -5, 205, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(cin_bsilri, 10, 0, 0, 0, 0, 0, 0, 0)
|
|
Sleep(10)
|
|
|
|
cin_btyber.Play_Animation("cinematic", true, 2)
|
|
cin_burai.Play_Animation("idle", true, 0)
|
|
cin_bsilri.Play_Animation("idle", true, 0)
|
|
Story_Event("CHATTER_41")
|
|
while not State_Mission_41_Done do Sleep(.5) end
|
|
|
|
Set_Cinematic_Camera_Key(cambalconypos, 0, 0, 50, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cambalconylook, 0, 0, 0, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(cambalconypan, 4, 0, 0, 50, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("cinematic", true, 2)
|
|
cin_burai.Play_Animation("idle", true, 0)
|
|
cin_bsilri.Play_Animation("idle", true, 0)
|
|
Story_Event("CHATTER_42")
|
|
while not State_Mission_42_Done do Sleep(.5) end
|
|
|
|
-- camera focus urai
|
|
Set_Cinematic_Camera_Key(cin_btyber, 40, 45, 45, 1, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_burai, 0, 0, 5, 0, 0, 0, 0)
|
|
--Transition_Cinematic_Camera_Key(cambalcurai, 3, 0, 0, 37, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("idle", true, 0)
|
|
cin_burai.Play_Animation("cinematic", true, 0)
|
|
cin_bsilri.Play_Animation("idle", true, 0)
|
|
Story_Event("CHATTER_43")
|
|
while not State_Mission_43_Done do Sleep(.5) end
|
|
|
|
-- camera focus tyber
|
|
Set_Cinematic_Camera_Key(cambalctyber, 0, 0, 30, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_btyber, 0, 0, 7, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(cambalctyber, 3, 0, 0, 32, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("cinematic", true, 2)
|
|
cin_burai.Play_Animation("idle", true, 0)
|
|
cin_bsilri.Play_Animation("idle", true, 0)
|
|
Story_Event("CHATTER_44")
|
|
while not State_Mission_44_Done do Sleep(.5) end
|
|
|
|
-- camera focus silri
|
|
cin_bsilri.Turn_To_Face(cin_btyber)
|
|
Set_Cinematic_Camera_Key(cambalcsilri, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_bsilri, 0, 0, 5, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(cambalcsilri, 3, 0, 0, 37, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("idle", true, 0)
|
|
cin_burai.Play_Animation("idle", true, 0)
|
|
cin_bsilri.Play_Animation("cinematic", true, 0)
|
|
Story_Event("CHATTER_45")
|
|
while not State_Mission_45_Done do Sleep(.5) end
|
|
|
|
-- camera focus tyber
|
|
Set_Cinematic_Camera_Key(cambalctyber, 0, 0, 30, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_btyber, 0, 0, 7, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(cambalctyber, 3, 0, 0, 32, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("cinematic", true, 2)
|
|
cin_burai.Play_Animation("idle", true, 0)
|
|
cin_bsilri.Play_Animation("idle", true, 0)
|
|
Story_Event("CHATTER_46")
|
|
while not State_Mission_46_Done do Sleep(.5) end
|
|
|
|
-- camera focus silri
|
|
cin_bsilri.Turn_To_Face(cin_btyber)
|
|
Set_Cinematic_Camera_Key(cambalcsilri, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_bsilri, 0, 0, 5, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(cambalcsilri, 3, 0, 0, 37, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("idle", true, 0)
|
|
cin_burai.Play_Animation("idle", true, 0)
|
|
cin_bsilri.Play_Animation("cinematic", true, 0)
|
|
Story_Event("CHATTER_47")
|
|
while not State_Mission_47_Done do Sleep(.5) end
|
|
|
|
cin_bsilri.Suspend_Locomotor(false)
|
|
cin_bsilri.Move_To(cambalconypos)
|
|
|
|
Sleep(2)
|
|
|
|
-- camera focus urai
|
|
--Set_Cinematic_Camera_Key(cambalcurai, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Camera_Key(cin_btyber, 40, 45, 45, 1, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_burai, 0, 0, 5, 0, 0, 0, 0)
|
|
--Transition_Cinematic_Camera_Key(cambalcurai, 3, 0, 0, 37, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("idle", true, 0)
|
|
cin_burai.Play_Animation("cinematic", true, 0)
|
|
cin_bsilri.Play_Animation("idle", true, 0)
|
|
Story_Event("CHATTER_48")
|
|
while not State_Mission_48_Done do Sleep(.5) end
|
|
|
|
-- camera focus tyber
|
|
Set_Cinematic_Camera_Key(cambalctyber, 0, 0, 30, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_btyber, 0, 0, 7, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(cambalctyber, 3, 0, 0, 32, 0, 0, 0, 0)
|
|
cin_btyber.Play_Animation("cinematic", true, 2)
|
|
cin_burai.Play_Animation("idle", true, 0)
|
|
cin_bsilri.Play_Animation("idle", true, 0)
|
|
Story_Event("CHATTER_49")
|
|
while not State_Mission_49_Done do Sleep(.5) end
|
|
|
|
Fade_Screen_Out(2)
|
|
Sleep(2)
|
|
Stop_All_Music()
|
|
Resume_Mode_Based_Music()
|
|
|
|
int_sky.Hide(false)
|
|
ext_sky.Hide(true)
|
|
|
|
cin_btyber.Teleport_And_Face(cinbtyberstart)
|
|
cin_btyber.Override_Max_Speed(.7)
|
|
cin_btyber.Move_To(cinbtybergoto)
|
|
|
|
Set_Cinematic_Camera_Key(camentrancepos, 0, 0, 100, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camentrancelook, 0, 0, 0, 0, 0, 0, 0)
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
Transition_Cinematic_Camera_Key(camentrancepos, 3, 0, 0, 110, 0, 0, 0, 0)
|
|
Sleep(3)
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Fade_Screen_In(1)
|
|
Set_Cinematic_Camera_Key(camintrofloorpos, 0, 0, 2, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camintrofloorlook, 0, 0, 8, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camintrofloorpan, 5, 0, 0, 14, 0, 0, 0, 0)
|
|
Sleep(2)
|
|
Story_Event("CHATTER_12")
|
|
while not State_Mission_12_Done do Sleep(.5) end
|
|
|
|
Set_Cinematic_Camera_Key(camintropos, 0, 0, 16, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camintrolook, 0, 0, 5, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(cin_tyber, 5, 0, 0, 10, 0, 0, 0, 0)
|
|
Sleep(1)
|
|
|
|
cin_tyber.Prevent_All_Fire(false)
|
|
cin_tyber.Attack_Target(cin_guard)
|
|
Sleep(1)
|
|
cin_guard.Take_Damage(9999)
|
|
|
|
Sleep(1)
|
|
Story_Event("CHATTER_13")
|
|
|
|
while not State_Mission_13_Done do Sleep(.5) end
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Create_Thread("Intro_Cine_Cleanup")
|
|
end
|
|
|
|
function Intro_Cine_Cleanup()
|
|
CINE_Intro_Active = false
|
|
current_cine_id = nil
|
|
|
|
tyber_zann.Prevent_All_Fire(false)
|
|
tyber_zann.Hide(false)
|
|
|
|
ext_sky.Hide(true)
|
|
int_sky.Hide(false)
|
|
endcinebox.Hide(false)
|
|
endcinebox1.Hide(false)
|
|
|
|
if TestValid(cin_tyber) then cin_tyber.Despawn() end
|
|
if TestValid(cin_guard) then cin_guard.Despawn() end
|
|
if TestValid(cin_btyber) then cin_btyber.Despawn() end
|
|
if TestValid(cin_bsilri) then cin_bsilri.Despawn() end
|
|
if TestValid(cin_burai) then cin_burai.Despawn() end
|
|
|
|
if TestValid(cinbarguys1) then cinbarguys1.Despawn() end
|
|
if TestValid(cinbarguys2) then cinbarguys2.Despawn() end
|
|
if TestValid(cinbarguys3) then cinbarguys3.Despawn() end
|
|
if TestValid(cinbarguys4) then cinbarguys4.Despawn() end
|
|
if TestValid(cinbarguys5) then cinbarguys5.Despawn() end
|
|
if TestValid(cinbarguys6) then cinbarguys6.Despawn() end
|
|
if TestValid(cinbarguys7) then cinbarguys7.Despawn() end
|
|
if TestValid(cinbarguys8) then cinbarguys8.Despawn() end
|
|
|
|
if TestValid(cinbirds1) then cinbirds1.Despawn() end
|
|
if TestValid(cinbirds2) then cinbirds2.Despawn() end
|
|
if TestValid(cinbirds3) then cinbirds3.Despawn() end
|
|
if TestValid(cinbirds4) then cinbirds4.Despawn() end
|
|
|
|
Stop_All_Music()
|
|
Resume_Mode_Based_Music()
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(0)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
Fade_Screen_In(1)
|
|
|
|
Create_Thread("MissionObjective_PartOne")
|
|
--juggernaut.Despawn()
|
|
--Create_Thread("EndMissionVictory")
|
|
end
|
|
|
|
function Story_Handle_Esc()
|
|
if CINE_Intro_Active then
|
|
CINE_Intro_Active = false
|
|
Thread.Kill(current_cine_id)
|
|
Create_Thread("Intro_Cine_Cleanup")
|
|
end
|
|
-- if CINE_Active_Adept_One then
|
|
-- CINE_Active_Adept_One = false
|
|
-- Thread.Kill(current_cine_id)
|
|
-- Create_Thread("CINE_Adept_One_Cleanup")
|
|
-- end
|
|
-- if CINE_Active_Intro_Silri then
|
|
-- CINE_Active_Intro_Silri = false
|
|
-- Thread.Kill(current_cine_id)
|
|
-- Create_Thread("CINE_Intro_Silri_Cleanup")
|
|
-- end
|
|
-- if CINE_Active_Urai_Nodes then
|
|
-- CINE_Active_Urai_Nodes = false
|
|
-- Thread.Kill(current_cine_id)
|
|
-- Create_Thread("CINE_Urai_Nodes_Cleanup")
|
|
-- end
|
|
-- if CINE_Active_Silri_Troopers then
|
|
-- CINE_Active_Silri_Troopers = false
|
|
-- Thread.Kill(current_cine_id)
|
|
-- Create_Thread("CINE_Silri_Troopers_Cleanup")
|
|
-- end
|
|
-- if CINE_Active_Grouped_Up then
|
|
-- CINE_Active_Grouped_Up = false
|
|
-- Thread.Kill(current_cine_id)
|
|
-- Create_Thread("CINE_Grouped_Up_Cleanup")
|
|
-- end
|
|
-- if CINE_Active_Outside_Vault then
|
|
-- CINE_Active_Outside_Vault = false
|
|
-- Thread.Kill(current_cine_id)
|
|
-- Create_Thread("CINE_Outside_Vault_Cleanup")
|
|
-- end
|
|
-- if CINE_Active_Final_Adept then
|
|
-- CINE_Active_Final_Adept = false
|
|
-- Thread.Kill(current_cine_id)
|
|
-- Create_Thread("CINE_Final_Adept_Cleanup")
|
|
-- end
|
|
end
|
|
|
|
-- all functions for opening/closing doors
|
|
function Open_Vault()
|
|
vaulta.Play_Animation("Cinematic",false,1)
|
|
vaultb.Play_Animation("Cinematic",false,1)
|
|
Register_Timer(Remove_Vault,2)
|
|
Story_Event("CHATTER_51")
|
|
end
|
|
function Remove_Vault()
|
|
vaulta.Despawn()
|
|
vaultb.Despawn()
|
|
end
|
|
|
|
function Open_Door_i()
|
|
Register_Timer(Remove_Door_i,2)
|
|
doori.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_Door_i()
|
|
doori.Highlight(false)
|
|
Remove_Radar_Blip("doori")
|
|
doori.Despawn()
|
|
end
|
|
|
|
function Open_Door_k()
|
|
Register_Timer(Remove_Door_k,2)
|
|
doork.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_Door_k()
|
|
doork.Despawn()
|
|
VictoryCondition_BackdoorOpen = true
|
|
Create_Thread("Hunt_Underworld", monitors_guards1 )
|
|
end
|
|
|
|
function Open_Door_j()
|
|
consolej.Highlight(false)
|
|
Remove_Radar_Blip("consolej")
|
|
|
|
Register_Timer(Remove_Door_j,2)
|
|
doorj.Play_Animation("Cinematic",false,1)
|
|
Fade_Screen_Out(2)
|
|
end
|
|
function Remove_Door_j()
|
|
doorj.Despawn()
|
|
end
|
|
|
|
function Open_Door_c()
|
|
Register_Timer(Remove_Door_c,2)
|
|
doorc1.Play_Animation("Cinematic",false,1)
|
|
doorc2.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_Door_c()
|
|
doorc1.Despawn()
|
|
doorc2.Despawn()
|
|
end
|
|
|
|
function Open_Door_e()
|
|
Register_Timer(Remove_Door_e,2)
|
|
doore.Play_Animation("Cinematic",false,1)
|
|
|
|
consolee.Highlight(false)
|
|
Remove_Radar_Blip("consolee")
|
|
highlightsithroom.Highlight(true)
|
|
Add_Radar_Blip(highlightsithroom, "highlightsithroom")
|
|
end
|
|
function Remove_Door_e()
|
|
doore.Despawn()
|
|
end
|
|
|
|
function Open_Door_f()
|
|
Register_Timer(Remove_Door_f,2)
|
|
doorf.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_Door_f()
|
|
doorf.Despawn()
|
|
end
|
|
|
|
function Open_Door_h()
|
|
Register_Timer(Remove_Door_h,2)
|
|
doorh.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_Door_h()
|
|
doorh.Despawn()
|
|
end
|
|
|
|
function Open_Door_a()
|
|
Register_Timer(Remove_Door_a,2)
|
|
doora.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_Door_a()
|
|
doora.Despawn()
|
|
end
|
|
|
|
function Open_Panel()
|
|
Register_Timer(Remove_Panel,2)
|
|
panel.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_Panel()
|
|
panel.Despawn()
|
|
end
|
|
|
|
function Open_AdeptOneDoor()
|
|
Register_Timer(Remove_AdeptOneDoor, 2)
|
|
adeptonedoor.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_AdeptOneDoor()
|
|
adeptonedoor.Despawn()
|
|
Create_Thread("Hunt_Underworld", {monitorguardsc})
|
|
end
|
|
|
|
function Open_SithDoor()
|
|
-- when wall is destroyed, remove black covers
|
|
highlightsithroom.Highlight(false)
|
|
Remove_Radar_Blip("highlightsithroom")
|
|
holocron.Highlight(true)
|
|
Add_Radar_Blip(holocron, "holocron")
|
|
Register_Timer(Remove_SithDoor,2)
|
|
sithwall.Play_Animation("Cinematic",false,1)
|
|
end
|
|
function Remove_SithDoor()
|
|
sithwall.Despawn()
|
|
end
|
|
|
|
--mission objective and flow handlers
|
|
function MissionObjective_PartOne()
|
|
doorh.Play_Animation("Cinematic",false,2)
|
|
adeptonedoor.Play_Animation("Cinematic",false,0)
|
|
sithwall.Play_Animation("Cinematic",false,0)
|
|
doork.Play_Animation("Cinematic",false,0)
|
|
doori.Play_Animation("Cinematic",false,0)
|
|
doorj.Play_Animation("Cinematic",false,0)
|
|
doorc1.Play_Animation("Cinematic",false,0)
|
|
doorc2.Play_Animation("Cinematic",false,0)
|
|
doore.Play_Animation("Cinematic",false,0)
|
|
doora.Play_Animation("Cinematic",false,0)
|
|
vaulta.Play_Animation("Cinematic",false,0)
|
|
vaultb.Play_Animation("Cinematic",false,0)
|
|
|
|
silri.Set_In_Limbo(true)
|
|
silri.Hide(true)
|
|
silri.Set_Selectable(false)
|
|
silri.Make_Invulnerable(true)
|
|
|
|
urai_fen.Set_In_Limbo(true)
|
|
urai_fen.Hide(true)
|
|
urai_fen.Set_Selectable(false)
|
|
urai_fen.Make_Invulnerable(true)
|
|
|
|
juggernaut.Change_Owner(neutral_player)
|
|
juggernaut.Make_Invulnerable(true)
|
|
|
|
Fade_Screen_In(1)
|
|
Point_Camera_At(tyber_zann)
|
|
underworld_player.Select_Object(tyber_zann)
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
MissionPartOneStarted = true
|
|
Story_Event("UM11_INTROCINE_DONE")
|
|
Story_Event("UM11_OBJECTIVE_01")
|
|
Create_Thread("PartOne_GuardSpawn")
|
|
|
|
monitorsa.Highlight(true)
|
|
Add_Radar_Blip(monitorsa, "monitorsa")
|
|
|
|
Register_Timer(Hint_BribeDoor, 8)
|
|
Story_Event("UM11_HINT_09")
|
|
Story_Event("SET_CREDITS")
|
|
end
|
|
|
|
function Hint_BribeDoor()
|
|
if not VictoryCondition_BackdoorOpen then
|
|
Story_Event("UM11_HINT_00")
|
|
Register_Timer(Hint_BribeDoor, 15)
|
|
end
|
|
end
|
|
|
|
-- if tyber kills the guards behind the fence, spawn some more
|
|
-- stop spawning when tyber has breached the door
|
|
function PartOne_GuardSpawn()
|
|
guardspawn = Find_Hint("STORY_TRIGGER_ZONE", "bribedguardsspawn")
|
|
guardmove = Find_Hint("STORY_TRIGGER_ZONE", "bribedguardsmoveto")
|
|
bribableguards = Spawn_Unit(Find_Object_Type("IMPERIAL_MINI_STORMTROOPER_SQUAD"), guardspawn.Get_Position(), empire_player)
|
|
for k, unit in pairs(bribableguards) do
|
|
if TestValid(unit) then
|
|
unit.Prevent_AI_Usage(true)
|
|
unit.Move_To(guardmove)
|
|
end
|
|
end
|
|
while TestValid(doork) do
|
|
members = 0
|
|
for k, unit in pairs(bribableguards) do
|
|
if TestValid(unit) then
|
|
members = members + 1
|
|
end
|
|
end
|
|
if members == 0 then
|
|
bribableguards = Spawn_Unit(Find_Object_Type("IMPERIAL_MINI_STORMTROOPER_SQUAD"), guardspawn.Get_Position(), empire_player)
|
|
for k, unit in pairs(bribableguards) do
|
|
if TestValid(unit) then
|
|
unit.Prevent_AI_Usage(true)
|
|
unit.Move_To(guardmove)
|
|
end
|
|
end
|
|
end
|
|
Sleep(2)
|
|
end
|
|
end
|
|
|
|
function PartOne_BactaGone()
|
|
--do something
|
|
--MessageBox("Yay!")
|
|
VictoryCondition_BactaGone = true
|
|
moreguards = Spawn_Unit(Find_Object_Type("IMPERIAL_MEDIUM_STORMTROOPER_SQUAD"), guardspawn.Get_Position(), empire_player)
|
|
--enable this later wtf did it break?
|
|
--Create_Thread("Hunt_Underworld", moreguards)
|
|
end
|
|
|
|
function PartOne_MonitorsDead()
|
|
--monitorsb.Despawn()
|
|
VictoryCondition_MonitorControls = true
|
|
monitorsa.Highlight(false)
|
|
Remove_Radar_Blip("monitorsa")
|
|
Story_Event("UM11_OBJECTIVE_01_DONE")
|
|
Story_Event("CHATTER_16")
|
|
Create_Thread("Destroy_Monitors")
|
|
end
|
|
|
|
function Destroy_Monitors()
|
|
monitorsb1.Take_Damage(9999)
|
|
Sleep(.25)
|
|
monitorsb2.Take_Damage(9999)
|
|
Sleep(.15)
|
|
monitorsb3.Take_Damage(9999)
|
|
Sleep(.15)
|
|
monitorsb4.Take_Damage(9999)
|
|
Sleep(.25)
|
|
monitorsb5.Take_Damage(9999)
|
|
Sleep(.15)
|
|
monitorsb6.Take_Damage(9999)
|
|
Sleep(.15)
|
|
monitorsb7.Take_Damage(9999)
|
|
Sleep(.25)
|
|
monitorsb8.Take_Damage(9999)
|
|
end
|
|
|
|
function Prox_IntroAdeptOne(self_obj, trigger_obj)
|
|
if VictoryCondition_BackdoorOpen then
|
|
if trigger_obj.Get_Owner() == underworld_player then
|
|
current_cine_id = Create_Thread("CINE_Adept_One")
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_IntroAdeptOne)
|
|
end
|
|
end
|
|
end
|
|
|
|
function CINE_Adept_One()
|
|
Cancel_Fast_Forward()
|
|
CINE_Active_Adept_One = true
|
|
Fade_Screen_Out(0)
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
tyber_zann.Prevent_All_Fire(true)
|
|
tyber_zann.Hide(true)
|
|
|
|
cin_tyber2 = Create_Generic_Object("TYBER_ZANN", cineadeptonetyber.Get_Position(), neutral_player)
|
|
cin_tyber2.Face_Immediate(adeptonespawnb)
|
|
|
|
adeptonedoor.Play_Animation("Cinematic", false, 2)
|
|
cin_mouse1 = Create_Generic_Object("UMP_CINE_MOUSEDROID", cineadeptonemouse.Get_Position(), neutral_player)
|
|
cin_mouse2 = Create_Generic_Object("UMP_CINE_MOUSEDROID", cineadeptonemouse.Get_Position(), neutral_player)
|
|
cin_mouse3 = Create_Generic_Object("UMP_CINE_MOUSEDROID", cineadeptonemouse.Get_Position(), neutral_player)
|
|
cin_mouse1.Move_To(cinemousegoto1)
|
|
cin_mouse2.Move_To(cinemousegoto2)
|
|
cin_mouse3.Move_To(cinemousegoto3)
|
|
|
|
cin_adepts1 = Create_Generic_Object("UM05_ADEPTONECINE", adeptonespawna.Get_Position(), neutral_player)
|
|
cin_adepts2 = Create_Generic_Object("UM05_ADEPTONECINE", adeptonespawnb.Get_Position(), neutral_player)
|
|
cin_adepts3 = Create_Generic_Object("UM05_ADEPTONECINE", adeptonespawnc.Get_Position(), neutral_player)
|
|
cin_adepts1.Face_Immediate(cin_tyber2)
|
|
cin_adepts2.Face_Immediate(cin_tyber2)
|
|
cin_adepts3.Face_Immediate(cin_tyber2)
|
|
|
|
Sleep(1)
|
|
Fade_Screen_In(1)
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
|
|
Set_Cinematic_Camera_Key(camadeptonepos, 0, 0, 20, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camadeptonelook, 0, 0, -10, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camadeptonepos, 5, 0, 0, 16, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(camadeptonelook, 5, 0, 0, -13, 0, 0, 0, 0)
|
|
Story_Event("CHATTER_14")
|
|
|
|
while not State_Mission_14_Done do Sleep(.5) end
|
|
|
|
adeptonedoor.Play_Animation("Cinematic",false,3)
|
|
Set_Cinematic_Camera_Key(camonepos, 0, 0, 16, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camonelook, 0, 0, 0, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camonepospan, 5, 0, 0, 20, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(camonelookpan, 5, 0, 0, 0, 0, 0, 0, 0)
|
|
cin_tyber2.Play_Animation("cinematic", true, 2)
|
|
Story_Event("CHATTER_15")
|
|
|
|
while not State_Mission_15_Done do Sleep(.5) end
|
|
|
|
cin_adepts1.Change_Owner(empire_player)
|
|
cin_adepts2.Change_Owner(empire_player)
|
|
cin_adepts3.Change_Owner(empire_player)
|
|
cin_adepts1.Suspend_Locomotor(true)
|
|
cin_adepts2.Suspend_Locomotor(true)
|
|
cin_adepts3.Suspend_Locomotor(true)
|
|
cin_tyber2.Change_Owner(underworld_player)
|
|
|
|
cin_adepts2.Attack_Target(cin_tyber2)
|
|
Sleep(.5)
|
|
cin_adepts1.Attack_Target(cin_tyber2)
|
|
Sleep(.25)
|
|
cin_adepts3.Attack_Target(cin_tyber2)
|
|
Sleep(1)
|
|
|
|
cin_tyber2.Change_Owner(neutral_player)
|
|
Sleep(1)
|
|
|
|
Create_Thread("CINE_Adept_One_Cleanup")
|
|
end
|
|
|
|
function CINE_Adept_One_Cleanup()
|
|
CINE_Active_Adept_One = false
|
|
current_cine_id = nil
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
adeptonea = Create_Generic_Object("UM05_ADEPTONE", adeptonespawna.Get_Position(), empire_player)
|
|
adeptonea.Override_Max_Speed(.75)
|
|
adeptoneb = Create_Generic_Object("UM05_ADEPTONE", adeptonespawnb.Get_Position(), empire_player)
|
|
adeptoneb.Override_Max_Speed(.65)
|
|
adeptonec = Create_Generic_Object("UM05_ADEPTONE", adeptonespawnc.Get_Position(), empire_player)
|
|
adeptonec.Override_Max_Speed(.7)
|
|
VictoryCondition_AdeptsSpawned = true
|
|
|
|
tyber_zann.Prevent_All_Fire(false)
|
|
tyber_zann.Hide(false)
|
|
|
|
if TestValid(cin_tyber2) then cin_tyber2.Despawn() end
|
|
if TestValid(cin_mouse1) then cin_mouse1.Despawn() end
|
|
if TestValid(cin_mouse2) then cin_mouse2.Despawn() end
|
|
if TestValid(cin_mouse3) then cin_mouse3.Despawn() end
|
|
if TestValid(cin_adepts1) then cin_adepts1.Despawn() end
|
|
if TestValid(cin_adepts2) then cin_adepts2.Despawn() end
|
|
if TestValid(cin_adepts3) then cin_adepts3.Despawn() end
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(.5)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
Fade_Screen_In(1)
|
|
Point_Camera_At(tyber_zann)
|
|
underworld_player.Select_Object(tyber_zann)
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
|
|
|
|
Register_Timer(Hint_AdeptOne1, 15)
|
|
adeptonedoor.Play_Animation("Cinematic",false,0)
|
|
Story_Event("UM11_OBJECTIVE_02")
|
|
end
|
|
|
|
function Hint_AdeptOne1()
|
|
if not VictoryCondition_AdeptOneDead then
|
|
Story_Event("UM11_HINT_01")
|
|
Register_Timer(Hint_AdeptOne2, 10)
|
|
end
|
|
end
|
|
|
|
function Hint_AdeptOne2()
|
|
if not VictoryCondition_AdeptOneDead then
|
|
Story_Event("UM11_HINT_08")
|
|
Register_Timer(Hint_AdeptOne1, 10)
|
|
end
|
|
end
|
|
|
|
function Kill_Off_Stormies()
|
|
thebunker.Take_Damage(9999)
|
|
Sleep(1)
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("SQUAD_STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
end
|
|
|
|
function MissionObjective_PartTwo()
|
|
MissionPartTwoStarted = true
|
|
Create_Thread("Kill_Off_Stormies")
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
--if unit.Get_Owner() == underworld_player then
|
|
-- Used to move them, now we don't because moving teams ends up with funky (fonky) results
|
|
unit.Take_Damage(9999)
|
|
--end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("SQUAD_STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
--if unit.Get_Owner() == underworld_player then
|
|
-- Used to move them, now we don't because moving teams ends up with funky (fonky) results
|
|
unit.Take_Damage(9999)
|
|
--end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Set_In_Limbo(true)
|
|
unit.Set_Selectable(false)
|
|
end
|
|
end
|
|
end
|
|
silri.Set_In_Limbo(false)
|
|
silri.Hide(false)
|
|
silri.Set_Selectable(true)
|
|
silri.Make_Invulnerable(false)
|
|
tyber_zann.Set_In_Limbo(true)
|
|
tyber_zann.Hide(true)
|
|
tyber_zann.Set_Selectable(false)
|
|
tyber_zann.Make_Invulnerable(true)
|
|
|
|
Fade_Screen_In(1)
|
|
Point_Camera_At(silri)
|
|
underworld_player.Select_Object(silri)
|
|
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
else
|
|
silri.Activate_Ability("SUMMON", silri)
|
|
end
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
Story_Event("UM11_OBJECTIVE_03")
|
|
|
|
consolee.Highlight(true)
|
|
Add_Radar_Blip(consolee, "consolee")
|
|
Register_Timer(Hint_SilriHurt, 10)
|
|
Story_Event("UM11_HINT_10")
|
|
end
|
|
|
|
|
|
function CINE_Intro_Silri()
|
|
Cancel_Fast_Forward()
|
|
CINE_Active_Intro_Silri = true
|
|
|
|
silri.Hide(true)
|
|
silri.Prevent_All_Fire(true)
|
|
|
|
--Fade_Screen_Out(1)
|
|
--Sleep(1)
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
cin_silri = Create_Generic_Object("SILRI", cinesilri.Get_Position(), neutral_player)
|
|
cin_sadept = Create_Generic_Object("UM05_ADEPTTWOCINE", cinesilriadept.Get_Position(), neutral_player)
|
|
cin_rancor = Create_Generic_Object("UM05_CUDDLES_THE_RANCOR", cinerancorsummon.Get_Position(), neutral_player)
|
|
cin_silri.Prevent_AI_Usage(true)
|
|
|
|
cin_sadept.Override_Max_Speed(.25)
|
|
cin_sadept.Move_To(cinesilriadeptmoveto)
|
|
|
|
cin_silri.Teleport_And_Face(cinesilri)
|
|
cin_rancor.Turn_To_Face(cin_sadept)
|
|
Fade_Screen_In(1)
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(camtwirlsilristart, 0, 0, 18, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_silri, 0, 0, 14, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camtwirlsilriend, 12, 0, 0, 18, 0, 0, 0, 0)
|
|
Story_Event("CHATTER_05")
|
|
cin_silri.Play_Animation("cinematic", false, 0)
|
|
Sleep(1)
|
|
cin_sadept.Face_Immediate(cin_silri)
|
|
|
|
while not State_Mission_05_Done do Sleep(.5) end
|
|
|
|
cin_sadept.Suspend_Locomotor(true)
|
|
cin_silri.Play_Animation("idle", false, 2)
|
|
|
|
Set_Cinematic_Camera_Key(camintrosilripos, 0, 0, 12, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camintrosilrilook, 0, 0, -14, 0, 0, 0, 0)
|
|
Sleep(.25)
|
|
cin_silri.Turn_To_Face(cin_sadept)
|
|
cin_silri.Play_Animation("idle", false, 0)
|
|
Story_Event("CHATTER_06")
|
|
|
|
while not State_Mission_06_Done do Sleep(.5) end
|
|
|
|
cin_silri.Suspend_Locomotor(true)
|
|
cin_rancor.Suspend_Locomotor(true)
|
|
Set_Cinematic_Camera_Key(camsilriadeptpos, 0, 0, 17, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camsilriadeptlook, 0, 0, -15, 0, 0, 0, 0)
|
|
cin_silri.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_07")
|
|
|
|
while not State_Mission_07_Done do Sleep(.5) end
|
|
|
|
cin_sadept.Override_Max_Speed(1)
|
|
Set_Cinematic_Camera_Key(camintrosilripos, 0, 0, 11, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camintrosilrilook, 0, 0, -12, 0, 0, 0, 0)
|
|
cin_sadept.Change_Owner(empire_player)
|
|
cin_silri.Change_Owner(underworld_player)
|
|
cin_sadept.Attack_Target(cin_silri)
|
|
cin_silri.Play_Animation("idle", false, 0)
|
|
Story_Event("CHATTER_08")
|
|
|
|
while not State_Mission_08_Done do Sleep(.5) end
|
|
|
|
Transition_Cinematic_Camera_Key(cin_sadept, 2, 0, 0, 18, 0, cin_sadept, 0, 0)
|
|
Transition_Cinematic_Target_Key(cin_silri, 2, 0, 0, 6, 0, cin_silri, 0, 0)
|
|
cin_rancor.Play_Animation("idle", false, 1)
|
|
cin_sadept.Suspend_Locomotor(false)
|
|
cin_sadept.Attack_Target(cin_silri)
|
|
cin_silri.Turn_To_Face(cin_sadept)
|
|
Sleep(1.5)
|
|
|
|
cin_silri.Play_Animation("attack", false, 0)
|
|
Set_Cinematic_Camera_Key(camfightpos, 0, 0, 20, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camfightlook, 0, 0, 0, 0, 0, 0, 0)
|
|
Sleep(1.5)
|
|
cin_sadept.Take_Damage(9999)
|
|
Sleep(.5)
|
|
cin_silri.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_02")
|
|
|
|
Set_Cinematic_Camera_Key(camadeptdiepos, 0, 0, 18, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cin_silri, 0, 0, 8, 0, 0, 0, 0)
|
|
|
|
while not State_Mission_02_Done do Sleep(.5) end
|
|
|
|
Story_Event("CHATTER_03")
|
|
|
|
while not State_Mission_03_Done do Sleep(.5) end
|
|
cin_silri.Play_Animation("idle", false, 0)
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Create_Thread("CINE_Intro_Silri_Cleanup")
|
|
end
|
|
|
|
function CINE_Intro_Silri_Cleanup()
|
|
CINE_Active_Intro_Silri = false
|
|
current_cine_id = nil
|
|
|
|
silri.Prevent_All_Fire(false)
|
|
silri.Hide(false)
|
|
|
|
if TestValid(cin_sadept) then cin_sadept.Despawn() end
|
|
if TestValid(cin_silri) then cin_silri.Despawn() end
|
|
if TestValid(cin_rancor) then cin_rancor.Despawn() end
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(0)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
Fade_Screen_In(1)
|
|
|
|
Create_Thread("MissionObjective_PartTwo")
|
|
Register_Prox(noticetroopers, Prox_NoticeTroopers, 150, underworld_player)
|
|
end
|
|
|
|
function Prox_NoticeTroopers(self_obj, trigger_obj)
|
|
if trigger_obj == silri then
|
|
Story_Event("CHATTER_01")
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_NoticeTroopers)
|
|
end
|
|
end
|
|
|
|
function Hint_SilriHurt()
|
|
Story_Event("UM11_HINT_02")
|
|
end
|
|
|
|
function Prox_SithHolocron(self_obj, trigger_obj)
|
|
-- when silri gets the holocron...
|
|
if trigger_obj == silri then
|
|
holocron.Highlight(false)
|
|
Remove_Radar_Blip("holocron")
|
|
Register_Timer(PartTwo_HolocronFound, 2)
|
|
Fade_Screen_Out(2)
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_SithHolocron)
|
|
Story_Event("UM11_OBJECTIVE_03_DONE")
|
|
end
|
|
end
|
|
|
|
function PartTwo_HolocronFound()
|
|
VictoryCondition_HolocronFound = true
|
|
end
|
|
|
|
function MissionObjective_PartThree()
|
|
MissionPartThreeStarted = true
|
|
silri.Set_In_Limbo(true)
|
|
silri.Hide(true)
|
|
silri.Set_Selectable(false)
|
|
silri.Make_Invulnerable(true)
|
|
urai_fen.Set_In_Limbo(false)
|
|
urai_fen.Hide(false)
|
|
urai_fen.Set_Selectable(true)
|
|
urai_fen.Make_Invulnerable(false)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Set_In_Limbo(true)
|
|
cuddles.Hide(true)
|
|
cuddles.Make_Invulnerable(true)
|
|
cuddles.Set_Selectable(false)
|
|
end
|
|
current_cine_id = Create_Thread("CINE_Urai_Nodes")
|
|
end
|
|
|
|
function CINE_Urai_Nodes()
|
|
Cancel_Fast_Forward()
|
|
CINE_Active_Urai_Nodes = true
|
|
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
-- Silri gets her holocron --
|
|
|
|
silri.Hide(true)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Hide(true)
|
|
end
|
|
|
|
cin_silri = Create_Generic_Object("SILRI", silriholospawn.Get_Position(), neutral_player)
|
|
cin_cuddles = Create_Generic_Object("CUDDLES_THE_RANCOR", cuddlesholospawn.Get_Position(), neutral_player)
|
|
cin_silri.Face_Immediate(holocron)
|
|
cin_cuddles.Face_Immediate(holocron)
|
|
cin_silri.Suspend_Locomotor(true)
|
|
cin_fx = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", sithholofx.Get_Position(), neutral_player)
|
|
--cin_fx.Attach_Particle_Effect("BLAST_CHARGING_EFFECT")
|
|
silri.Prevent_AI_Usage(true)
|
|
cin_silri.Prevent_AI_Usage(true)
|
|
cin_silri.Prevent_All_Fire(true)
|
|
|
|
|
|
Sleep(1)
|
|
Fade_Screen_In(1)
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(camholopos, 0, 0, 60, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camhololook, 0, 0, 10, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camocronpos, 5, 0, 0, 35, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(camocronlook, 5, 0, 0, -5, 0, 0, 0, 0)
|
|
|
|
cin_silri.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_04")
|
|
|
|
while not State_Mission_04_Done do Sleep(.5) end
|
|
|
|
Story_Event("CHATTER_00")
|
|
|
|
while not State_Mission_00_Done do Sleep(.5) end
|
|
cin_silri.Play_Animation("idle", false, 0)
|
|
|
|
Fade_Screen_Out(2)
|
|
Sleep(2)
|
|
|
|
-- introduce urai fen --
|
|
|
|
Fade_Screen_In(2)
|
|
|
|
Set_Cinematic_Camera_Key(camholeposend, 0, 0, 20, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camholelookend, 0, 0, 6, 0, 0, 0, 0)
|
|
cin_uadept = Create_Generic_Object("UM05_ADEPTTWOCINE", cineadepttwospawn.Get_Position(), neutral_player)
|
|
cin_uadept.Override_Max_Speed(.5)
|
|
cin_uadept.Move_To(cineadepttwomoveto)
|
|
Transition_Cinematic_Camera_Key(camuraifaceoffpos, 5, 0, 0, 20, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(camuraifaceofflook, 5, 0, 0, -10, 0, 0, 0, 0)
|
|
Sleep(2.5)
|
|
|
|
urai_fen.Turn_To_Face(cin_uadept)
|
|
Sleep(2)
|
|
cin_uadept.Turn_To_Face(urai_fen)
|
|
urai_fen.Suspend_Locomotor(true)
|
|
Sleep(1)
|
|
cin_uadept.Suspend_Locomotor(true)
|
|
cin_uadept.Change_Owner(empire_player)
|
|
urai_fen.Change_Owner(underworld_player)
|
|
cin_uadept.Attack_Target(urai_fen)
|
|
|
|
urai_fen.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_17")
|
|
|
|
while not State_Mission_17_Done do Sleep(.5) end
|
|
urai_fen.Play_Animation("idle", false, 0)
|
|
Sleep(1)
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
|
|
Create_Thread("CINE_Urai_Nodes_Cleanup")
|
|
end
|
|
|
|
function CINE_Urai_Nodes_Cleanup()
|
|
CINE_Active_Urai_Nodes = false
|
|
current_cine_id = nil
|
|
|
|
thesithartifact.Despawn()
|
|
|
|
Fade_Screen_In(1)
|
|
|
|
Point_Camera_At(urai_fen)
|
|
underworld_player.Select_Object(urai_fen)
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(.5)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
urai_fen.Suspend_Locomotor(false)
|
|
|
|
if TestValid(cin_uadept) then cin_uadept.Despawn() end
|
|
if TestValid(cin_silri) then cin_silri.Despawn() end
|
|
if TestValid(cin_cuddles) then cin_cuddles.Despawn() end
|
|
if TestValid(cin_fx) then cin_fx.Despawn() end
|
|
|
|
Create_Thread("PartThree_IntroAdeptTwo")
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
Story_Event("UM11_OBJECTIVE_04")
|
|
|
|
nodea.Highlight(true)
|
|
Add_Radar_Blip(nodea, "nodea")
|
|
nodeb.Highlight(true)
|
|
Add_Radar_Blip(nodeb, "nodeb")
|
|
nodec.Highlight(true)
|
|
Add_Radar_Blip(nodec, "nodec")
|
|
noded.Highlight(true)
|
|
Add_Radar_Blip(noded, "noded")
|
|
|
|
Register_Timer(Hint_UraiHeal, 8)
|
|
Story_Event("UM11_HINT_11")
|
|
end
|
|
|
|
function Hint_UraiHeal()
|
|
if not VictoryCondition_AdeptTwoDead then
|
|
Story_Event("UM11_HINT_03")
|
|
Register_Timer(Hint_UraiHeal, 15)
|
|
end
|
|
end
|
|
|
|
function PartThree_Node_A()
|
|
Create_Thread("PartThree_Blow_A")
|
|
VictoryCondition_Blown_A = true
|
|
nodea.Highlight(false)
|
|
Remove_Radar_Blip("nodea")
|
|
Create_Thread("PartThree_KilledNode")
|
|
end
|
|
function PartThree_Node_B()
|
|
Create_Thread("PartThree_Blow_B")
|
|
VictoryCondition_Blown_B = true
|
|
nodeb.Highlight(false)
|
|
Remove_Radar_Blip("nodeb")
|
|
Create_Thread("PartThree_KilledNode")
|
|
end
|
|
function PartThree_Node_C()
|
|
Create_Thread("PartThree_Blow_C")
|
|
VictoryCondition_Blown_C = true
|
|
nodec.Highlight(false)
|
|
Remove_Radar_Blip("nodec")
|
|
Create_Thread("PartThree_KilledNode")
|
|
end
|
|
function PartThree_Node_D()
|
|
Create_Thread("PartThree_Blow_D")
|
|
VictoryCondition_Blown_D = true
|
|
noded.Highlight(false)
|
|
Remove_Radar_Blip("noded")
|
|
Create_Thread("PartThree_KilledNode")
|
|
end
|
|
|
|
function PartThree_KilledNode()
|
|
Story_Event("CHATTER_18")
|
|
end
|
|
|
|
|
|
function PartThree_Blow_A()
|
|
blowa = Find_Hint("STORY_TRIGGER_ZONE", "blowa-a")
|
|
blowb = Find_Hint("STORY_TRIGGER_ZONE", "blowa-b")
|
|
blowc = Find_Hint("STORY_TRIGGER_ZONE", "blowa-c")
|
|
blowd = Find_Hint("STORY_TRIGGER_ZONE", "blowa-d")
|
|
blowe = Find_Hint("STORY_TRIGGER_ZONE", "blowa-e")
|
|
blowf = Find_Hint("STORY_TRIGGER_ZONE", "blowa-f")
|
|
blowg = Find_Hint("STORY_TRIGGER_ZONE", "blowa-g")
|
|
blowh = Find_Hint("STORY_TRIGGER_ZONE", "blowa-h")
|
|
blowreactor = Find_Hint("STORY_TRIGGER_ZONE", "blowreactor")
|
|
explode = "THERMAL_DETONATOR_EXPLOSION"
|
|
effect = "STUNNED_PARTICLE_EFFECT"
|
|
ablowa = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowa.Get_Position(), neutral_player)
|
|
ablowb = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowb.Get_Position(), neutral_player)
|
|
ablowc = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowc.Get_Position(), neutral_player)
|
|
ablowd = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowd.Get_Position(), neutral_player)
|
|
ablowe = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowe.Get_Position(), neutral_player)
|
|
ablowf = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowf.Get_Position(), neutral_player)
|
|
ablowg = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowg.Get_Position(), neutral_player)
|
|
ablowh = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowh.Get_Position(), neutral_player)
|
|
ablowr = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowreactor.Get_Position(), neutral_player)
|
|
Sleep(.05)
|
|
ablowa.Attach_Particle_Effect(effect)
|
|
ablowa.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowb.Attach_Particle_Effect(effect)
|
|
ablowb.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowc.Attach_Particle_Effect(effect)
|
|
ablowc.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowd.Attach_Particle_Effect(effect)
|
|
ablowd.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowe.Attach_Particle_Effect(effect)
|
|
ablowe.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowf.Attach_Particle_Effect(effect)
|
|
ablowf.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowg.Attach_Particle_Effect(effect)
|
|
ablowg.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowh.Attach_Particle_Effect(effect)
|
|
ablowh.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
ablowr.Attach_Particle_Effect(explode)
|
|
--MessageBox("Ok")
|
|
end
|
|
|
|
function PartThree_Blow_B()
|
|
--do nothing
|
|
blowa = Find_Hint("STORY_TRIGGER_ZONE", "blowb-a")
|
|
blowb = Find_Hint("STORY_TRIGGER_ZONE", "blowb-b")
|
|
blowc = Find_Hint("STORY_TRIGGER_ZONE", "blowb-c")
|
|
blowd = Find_Hint("STORY_TRIGGER_ZONE", "blowb-d")
|
|
blowe = Find_Hint("STORY_TRIGGER_ZONE", "blowb-e")
|
|
blowf = Find_Hint("STORY_TRIGGER_ZONE", "blowb-f")
|
|
blowg = Find_Hint("STORY_TRIGGER_ZONE", "blowb-g")
|
|
blowh = Find_Hint("STORY_TRIGGER_ZONE", "blowb-h")
|
|
blowi = Find_Hint("STORY_TRIGGER_ZONE", "blowb-i")
|
|
blowj = Find_Hint("STORY_TRIGGER_ZONE", "blowb-j")
|
|
blowreactor = Find_Hint("STORY_TRIGGER_ZONE", "blowreactor")
|
|
explode = "THERMAL_DETONATOR_EXPLOSION"
|
|
effect = "STUNNED_PARTICLE_EFFECT"
|
|
bblowa = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowa.Get_Position(), neutral_player)
|
|
bblowb = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowb.Get_Position(), neutral_player)
|
|
bblowc = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowc.Get_Position(), neutral_player)
|
|
bblowd = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowd.Get_Position(), neutral_player)
|
|
bblowe = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowe.Get_Position(), neutral_player)
|
|
bblowf = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowf.Get_Position(), neutral_player)
|
|
bblowg = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowg.Get_Position(), neutral_player)
|
|
bblowh = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowh.Get_Position(), neutral_player)
|
|
bblowi = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowi.Get_Position(), neutral_player)
|
|
bblowj = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowj.Get_Position(), neutral_player)
|
|
bblowr = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowreactor.Get_Position(), neutral_player)
|
|
Sleep(.05)
|
|
bblowa.Attach_Particle_Effect(effect)
|
|
bblowa.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowb.Attach_Particle_Effect(effect)
|
|
bblowb.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowc.Attach_Particle_Effect(effect)
|
|
bblowc.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowd.Attach_Particle_Effect(effect)
|
|
bblowd.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowe.Attach_Particle_Effect(effect)
|
|
bblowe.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowf.Attach_Particle_Effect(effect)
|
|
bblowf.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowg.Attach_Particle_Effect(effect)
|
|
bblowg.Attach_Particle_Effect(explode)
|
|
Sleep(.15)
|
|
bblowh.Attach_Particle_Effect(effect)
|
|
bblowh.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowi.Attach_Particle_Effect(effect)
|
|
bblowi.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowj.Attach_Particle_Effect(effect)
|
|
bblowj.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
bblowr.Attach_Particle_Effect(explode)
|
|
--MessageBox("Ok")
|
|
end
|
|
|
|
function PartThree_Blow_C()
|
|
--do nothing
|
|
blowa = Find_Hint("STORY_TRIGGER_ZONE", "blowc-a")
|
|
blowb = Find_Hint("STORY_TRIGGER_ZONE", "blowc-b")
|
|
blowc = Find_Hint("STORY_TRIGGER_ZONE", "blowc-c")
|
|
blowd = Find_Hint("STORY_TRIGGER_ZONE", "blowc-d")
|
|
blowe = Find_Hint("STORY_TRIGGER_ZONE", "blowc-e")
|
|
blowf = Find_Hint("STORY_TRIGGER_ZONE", "blowc-f")
|
|
blowg = Find_Hint("STORY_TRIGGER_ZONE", "blowc-g")
|
|
blowh = Find_Hint("STORY_TRIGGER_ZONE", "blowc-h")
|
|
blowi = Find_Hint("STORY_TRIGGER_ZONE", "blowc-i")
|
|
blowj = Find_Hint("STORY_TRIGGER_ZONE", "blowc-j")
|
|
blowk = Find_Hint("STORY_TRIGGER_ZONE", "blowc-k")
|
|
blowl = Find_Hint("STORY_TRIGGER_ZONE", "blowc-l")
|
|
blowm = Find_Hint("STORY_TRIGGER_ZONE", "blowc-m")
|
|
blown = Find_Hint("STORY_TRIGGER_ZONE", "blowc-n")
|
|
explode = "THERMAL_DETONATOR_EXPLOSION"
|
|
effect = "STUNNED_PARTICLE_EFFECT"
|
|
cblowa = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowa.Get_Position(), neutral_player)
|
|
cblowb = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowb.Get_Position(), neutral_player)
|
|
cblowc = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowc.Get_Position(), neutral_player)
|
|
cblowd = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowd.Get_Position(), neutral_player)
|
|
cblowe = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowe.Get_Position(), neutral_player)
|
|
cblowf = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowf.Get_Position(), neutral_player)
|
|
cblowg = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowg.Get_Position(), neutral_player)
|
|
cblowh = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowh.Get_Position(), neutral_player)
|
|
cblowi = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowi.Get_Position(), neutral_player)
|
|
cblowj = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowj.Get_Position(), neutral_player)
|
|
cblowk = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowk.Get_Position(), neutral_player)
|
|
cblowl = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowl.Get_Position(), neutral_player)
|
|
cblowm = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowm.Get_Position(), neutral_player)
|
|
cblown = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blown.Get_Position(), neutral_player)
|
|
cblowr = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowreactor.Get_Position(), neutral_player)
|
|
Sleep(.05)
|
|
cblowa.Attach_Particle_Effect(effect)
|
|
cblowa.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowb.Attach_Particle_Effect(effect)
|
|
cblowb.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowc.Attach_Particle_Effect(effect)
|
|
cblowc.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowd.Attach_Particle_Effect(effect)
|
|
cblowd.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowe.Attach_Particle_Effect(effect)
|
|
cblowe.Attach_Particle_Effect(explode)
|
|
Sleep(.15)
|
|
cblowf.Attach_Particle_Effect(effect)
|
|
cblowf.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowg.Attach_Particle_Effect(effect)
|
|
cblowg.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowh.Attach_Particle_Effect(effect)
|
|
cblowh.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowi.Attach_Particle_Effect(effect)
|
|
cblowi.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowj.Attach_Particle_Effect(effect)
|
|
cblowj.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowk.Attach_Particle_Effect(effect)
|
|
cblowk.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowl.Attach_Particle_Effect(effect)
|
|
cblowl.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowm.Attach_Particle_Effect(effect)
|
|
cblowm.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblown.Attach_Particle_Effect(effect)
|
|
cblown.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
cblowr.Attach_Particle_Effect(explode)
|
|
--MessageBox("Ok")
|
|
end
|
|
|
|
function PartThree_Blow_D()
|
|
--do nothing
|
|
blowa = Find_Hint("STORY_TRIGGER_ZONE", "blowd-a")
|
|
blowb = Find_Hint("STORY_TRIGGER_ZONE", "blowd-b")
|
|
blowc = Find_Hint("STORY_TRIGGER_ZONE", "blowd-c")
|
|
blowd = Find_Hint("STORY_TRIGGER_ZONE", "blowd-d")
|
|
blowe = Find_Hint("STORY_TRIGGER_ZONE", "blowd-e")
|
|
blowf = Find_Hint("STORY_TRIGGER_ZONE", "blowd-f")
|
|
blowg = Find_Hint("STORY_TRIGGER_ZONE", "blowd-g")
|
|
blowh = Find_Hint("STORY_TRIGGER_ZONE", "blowd-h")
|
|
blowi = Find_Hint("STORY_TRIGGER_ZONE", "blowd-i")
|
|
blowj = Find_Hint("STORY_TRIGGER_ZONE", "blowd-j")
|
|
blowk = Find_Hint("STORY_TRIGGER_ZONE", "blowd-k")
|
|
blowl = Find_Hint("STORY_TRIGGER_ZONE", "blowd-l")
|
|
blowm = Find_Hint("STORY_TRIGGER_ZONE", "blowd-m")
|
|
blown = Find_Hint("STORY_TRIGGER_ZONE", "blowd-n")
|
|
blowo = Find_Hint("STORY_TRIGGER_ZONE", "blowd-o")
|
|
blowreactor = Find_Hint("STORY_TRIGGER_ZONE", "blowreactor")
|
|
explode = "THERMAL_DETONATOR_EXPLOSION"
|
|
effect = "STUNNED_PARTICLE_EFFECT"
|
|
dblowa = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowa.Get_Position(), neutral_player)
|
|
dblowb = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowb.Get_Position(), neutral_player)
|
|
dblowc = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowc.Get_Position(), neutral_player)
|
|
dblowd = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowd.Get_Position(), neutral_player)
|
|
dblowe = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowe.Get_Position(), neutral_player)
|
|
dblowf = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowf.Get_Position(), neutral_player)
|
|
dblowg = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowg.Get_Position(), neutral_player)
|
|
dblowh = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowh.Get_Position(), neutral_player)
|
|
dblowi = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowi.Get_Position(), neutral_player)
|
|
dblowj = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowj.Get_Position(), neutral_player)
|
|
dblowk = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowk.Get_Position(), neutral_player)
|
|
dblowl = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowl.Get_Position(), neutral_player)
|
|
dblowm = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowm.Get_Position(), neutral_player)
|
|
dblown = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blown.Get_Position(), neutral_player)
|
|
dblowo = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowo.Get_Position(), neutral_player)
|
|
dblowr = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", blowreactor.Get_Position(), neutral_player)
|
|
Sleep(.05)
|
|
dblowa.Attach_Particle_Effect(effect)
|
|
dblowa.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowb.Attach_Particle_Effect(effect)
|
|
dblowb.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowc.Attach_Particle_Effect(effect)
|
|
dblowc.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowd.Attach_Particle_Effect(effect)
|
|
dblowd.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowe.Attach_Particle_Effect(effect)
|
|
dblowe.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowf.Attach_Particle_Effect(effect)
|
|
dblowf.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowg.Attach_Particle_Effect(effect)
|
|
dblowg.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowh.Attach_Particle_Effect(effect)
|
|
dblowh.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowi.Attach_Particle_Effect(effect)
|
|
dblowi.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowj.Attach_Particle_Effect(effect)
|
|
dblowj.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowk.Attach_Particle_Effect(effect)
|
|
dblowk.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowl.Attach_Particle_Effect(effect)
|
|
dblowl.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowm.Attach_Particle_Effect(effect)
|
|
dblowm.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblown.Attach_Particle_Effect(effect)
|
|
dblown.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowo.Attach_Particle_Effect(effect)
|
|
dblowo.Attach_Particle_Effect(explode)
|
|
Sleep(.05)
|
|
dblowr.Attach_Particle_Effect(explode)
|
|
--MessageBox("Ok")
|
|
end
|
|
|
|
function PartThree_IntroAdeptTwo()
|
|
-- this adept is easiest killed by timing the reactor hits to trap him in the explosions
|
|
adepttwoa = Create_Generic_Object("UM05_ADEPTTWO", adepttwospawna.Get_Position(), empire_player)
|
|
adepttwoa.Override_Max_Speed(.8)
|
|
adepttwob = Create_Generic_Object("UM05_ADEPTTWO", adepttwospawnb.Get_Position(), empire_player)
|
|
adepttwob.Override_Max_Speed(.7)
|
|
adepttwoc = Create_Generic_Object("UM05_ADEPTTWO", adepttwospawnc.Get_Position(), empire_player)
|
|
adepttwoc.Override_Max_Speed(.6)
|
|
adepttwod = Create_Generic_Object("UM05_ADEPTTWO", adepttwospawnd.Get_Position(), empire_player)
|
|
adepttwod.Override_Max_Speed(.8)
|
|
adepttwoe = Create_Generic_Object("UM05_ADEPTTWO", adepttwospawne.Get_Position(), empire_player)
|
|
adepttwoe.Override_Max_Speed(.7)
|
|
adepttwof = Create_Generic_Object("UM05_ADEPTTWO", adepttwospawnf.Get_Position(), empire_player)
|
|
adepttwof.Override_Max_Speed(.6)
|
|
adepttwog = Create_Generic_Object("UM05_ADEPTTWO", adepttwospawng.Get_Position(), empire_player)
|
|
adepttwog.Override_Max_Speed(.8)
|
|
--adepttwoh = Create_Generic_Object("UM05_ADEPTTHREE", adepttwospawna.Get_Position(), empire_player)
|
|
--adepttwoh.Override_Max_Speed(1)
|
|
--adepttwoi = Create_Generic_Object("UM05_ADEPTTHREE", adepttwospawnb.Get_Position(), empire_player)
|
|
--adepttwoi.Override_Max_Speed(.9)
|
|
--adepttwoj = Create_Generic_Object("UM05_ADEPTTHREE", adepttwospawnc.Get_Position(), empire_player)
|
|
--adepttwoj.Override_Max_Speed(.7)
|
|
--adepttwok = Create_Generic_Object("UM05_ADEPTTHREE", adepttwospawnd.Get_Position(), empire_player)
|
|
--adepttwok.Override_Max_Speed(1)
|
|
--adepttwol = Create_Generic_Object("UM05_ADEPTTHREE", adepttwospawne.Get_Position(), empire_player)
|
|
--adepttwol.Override_Max_Speed(.75)
|
|
--adepttwom = Create_Generic_Object("UM05_ADEPTTHREE", adepttwospawnf.Get_Position(), empire_player)
|
|
--adepttwom.Override_Max_Speed(.8)
|
|
adepttwon = Create_Generic_Object("UM05_ADEPTTHREE", adepttwospawng.Get_Position(), empire_player)
|
|
adepttwon.Override_Max_Speed(.7)
|
|
VictoryCondition_AdeptTwoSpawned = true
|
|
Story_Event("UM11_OBJECTIVE_05")
|
|
end
|
|
|
|
function PartThree_UraiDone()
|
|
-- urai emerges from the maintenance hatch and meets up with Tyber
|
|
Story_Event("CHATTER_19")
|
|
Sleep(2)
|
|
Fade_Screen_Out(2)
|
|
Sleep(2)
|
|
VictoryCondition_MeetTyber = true
|
|
end
|
|
|
|
function CINE_Silri_Troopers()
|
|
Cancel_Fast_Forward()
|
|
CINE_Active_Silri_Troopers = true
|
|
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
silri.Hide(true)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Hide(true)
|
|
end
|
|
if TestValid(sithwall) then
|
|
sithwall.Despawn()
|
|
end
|
|
|
|
cin_silri = Create_Generic_Object("SILRI", silriholospawn.Get_Position(), neutral_player)
|
|
cin_cuddles = Create_Generic_Object("CUDDLES_THE_RANCOR", cuddlesholospawn.Get_Position(), neutral_player)
|
|
cin_silri.Face_Immediate(holocron)
|
|
cin_cuddles.Face_Immediate(holocron)
|
|
silri.Prevent_AI_Usage(true)
|
|
cin_silri.Prevent_AI_Usage(true)
|
|
cin_silri.Prevent_All_Fire(true)
|
|
Sleep(1)
|
|
|
|
Fade_Screen_In(1)
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(camocronpos, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camocronlook, 0, 0, -5, 0, 0, 0, 0)
|
|
Sleep(.5)
|
|
cin_silri.Turn_To_Face(cin_cuddles)
|
|
cin_silri.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_29")
|
|
Sleep(.5)
|
|
cin_cuddles.Turn_To_Face(cin_silri)
|
|
|
|
while not State_Mission_29_Done do Sleep(.5) end
|
|
|
|
Story_Event("CHATTER_40")
|
|
|
|
cin_silri.Move_To(camsilrileavepos)
|
|
cin_cuddles.Move_To(camsilrileavepos)
|
|
Set_Cinematic_Camera_Key(camsilrileavepos, 0, 0, 30, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camsilrileavelook, 0, 0, -15, 0, 0, 0, 0)
|
|
|
|
while not State_Mission_40_Done do Sleep(.5) end
|
|
|
|
Fade_Screen_Out(2)
|
|
Sleep(2)
|
|
Create_Thread("CINE_Silri_Troopers_Cleanup")
|
|
end
|
|
|
|
function CINE_Silri_Troopers_Cleanup()
|
|
CINE_Active_Silri_Troopers = false
|
|
current_cine_id = nil
|
|
|
|
if TestValid(cin_silri) then cin_silri.Despawn() end
|
|
if TestValid(cin_cuddles) then cin_cuddles.Despawn() end
|
|
|
|
silri.Teleport_And_Face(silristartfour)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Teleport_And_Face(cuddlesstartfour)
|
|
end
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(.5)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
Create_Thread("MissionObjective_PartFour")
|
|
end
|
|
|
|
function MissionObjective_PartFour()
|
|
if VictoryCondition_MeetTyber then
|
|
ablowa.Despawn()
|
|
ablowb.Despawn()
|
|
ablowc.Despawn()
|
|
ablowd.Despawn()
|
|
ablowe.Despawn()
|
|
ablowf.Despawn()
|
|
ablowg.Despawn()
|
|
ablowh.Despawn()
|
|
ablowr.Despawn()
|
|
|
|
bblowa.Despawn()
|
|
bblowb.Despawn()
|
|
bblowc.Despawn()
|
|
bblowd.Despawn()
|
|
bblowe.Despawn()
|
|
bblowf.Despawn()
|
|
bblowg.Despawn()
|
|
bblowh.Despawn()
|
|
bblowr.Despawn()
|
|
|
|
cblowa.Despawn()
|
|
cblowb.Despawn()
|
|
cblowc.Despawn()
|
|
cblowd.Despawn()
|
|
cblowe.Despawn()
|
|
cblowf.Despawn()
|
|
cblowg.Despawn()
|
|
cblowh.Despawn()
|
|
cblowi.Despawn()
|
|
cblowj.Despawn()
|
|
cblowk.Despawn()
|
|
cblowl.Despawn()
|
|
cblowm.Despawn()
|
|
cblown.Despawn()
|
|
cblowr.Despawn()
|
|
|
|
dblowa.Despawn()
|
|
dblowb.Despawn()
|
|
dblowc.Despawn()
|
|
dblowd.Despawn()
|
|
dblowe.Despawn()
|
|
dblowf.Despawn()
|
|
dblowg.Despawn()
|
|
dblowh.Despawn()
|
|
dblowi.Despawn()
|
|
dblowj.Despawn()
|
|
dblowk.Despawn()
|
|
dblowl.Despawn()
|
|
dblowm.Despawn()
|
|
dblown.Despawn()
|
|
dblowo.Despawn()
|
|
dblowr.Despawn()
|
|
end
|
|
|
|
doore2 = Create_Generic_Object("UM05_MOVING_DOOR", doore2spawn.Get_Position(), neutral_player)
|
|
doore2.Play_Animation("Cinematic",false,3)
|
|
doore2.Teleport_And_Face(doore2spawn)
|
|
|
|
MissionPartFourStarted = true
|
|
silri.Set_In_Limbo(false)
|
|
silri.Hide(false)
|
|
silri.Set_Selectable(true)
|
|
silri.Make_Invulnerable(false)
|
|
urai_fen.Set_In_Limbo(true)
|
|
urai_fen.Hide(true)
|
|
urai_fen.Set_Selectable(false)
|
|
urai_fen.Make_Invulnerable(true)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Set_In_Limbo(false)
|
|
cuddles.Hide(false)
|
|
cuddles.Make_Invulnerable(false)
|
|
cuddles.Set_Selectable(true)
|
|
end
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
else
|
|
silri.Activate_Ability("SUMMON", silri)
|
|
end
|
|
|
|
Fade_Screen_In(1)
|
|
Point_Camera_At(silri)
|
|
underworld_player.Select_Object(silri)
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
Story_Event("UM11_OBJECTIVE_06")
|
|
Register_Prox(activatetroopers, Prox_ActivateTroopers, 75, underworld_player)
|
|
Story_Event("UM11_HINT_10")
|
|
|
|
Sleep(1)
|
|
doore2.Despawn()
|
|
doore2 = Create_Generic_Object("UM02_KILLABLE_DOOR", doore2spawn.Get_Position(), underworld_player)
|
|
doore2.Teleport_And_Face(doore2spawn)
|
|
doore2.Teleport_And_Face(doore2spawn)
|
|
doore2.Set_Selectable(false)
|
|
doore2.Make_Invulnerable(true)
|
|
|
|
doore2.Highlight(true)
|
|
Add_Radar_Blip(doore2, "doore2")
|
|
|
|
end
|
|
|
|
function Prox_ActivateTroopers(self_obj, trigger_obj)
|
|
if trigger_obj == silri then
|
|
Create_Thread("PartFour_ReleaseTroopers")
|
|
Register_Timer(Hint_SilriCuddles, 1)
|
|
Story_Event("CHATTER_50")
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_ActivateTroopers)
|
|
Story_Event("UM11_OBJECTIVE_06A")
|
|
end
|
|
end
|
|
|
|
function Hint_SilriCuddles()
|
|
if not VictoryCondition_DarkTroopersDead then
|
|
Story_Event("UM11_HINT_04")
|
|
Register_Timer(Hint_SilriCuddles, 15)
|
|
end
|
|
end
|
|
|
|
|
|
function PartFour_ReleaseTroopers()
|
|
dt1.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(6)
|
|
dt1a = Create_Generic_Object("DARK_TROOPER_PHASEI", dt1.Get_Position(), empire_player)
|
|
dt1.Despawn()
|
|
dt1a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt1a.Attack_Move(silri) end
|
|
dt2.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(6)
|
|
dt2a = Create_Generic_Object("DARK_TROOPER_PHASEII", dt2.Get_Position(), empire_player)
|
|
dt2.Despawn()
|
|
dt2a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt2a.Attack_Move(silri) end
|
|
dt3.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(6)
|
|
dt3a = Create_Generic_Object("DARK_TROOPER_PHASEIII", dt3.Get_Position(), empire_player)
|
|
dt3.Despawn()
|
|
dt3a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt3a.Attack_Move(silri) end
|
|
dt4.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(5)
|
|
dt4a = Create_Generic_Object("DARK_TROOPER_PHASEI", dt4.Get_Position(), empire_player)
|
|
dt4.Despawn()
|
|
dt4a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt4a.Attack_Move(silri) end
|
|
dt5.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(5)
|
|
dt5a = Create_Generic_Object("DARK_TROOPER_PHASEII", dt5.Get_Position(), empire_player)
|
|
dt5.Despawn()
|
|
dt5a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt5a.Attack_Move(silri) end
|
|
dt6.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(4)
|
|
dt6a = Create_Generic_Object("DARK_TROOPER_PHASEIII", dt6.Get_Position(), empire_player)
|
|
dt6.Despawn()
|
|
dt6a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt6a.Attack_Move(silri) end
|
|
dt7.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(4)
|
|
dt7a = Create_Generic_Object("DARK_TROOPER_PHASEI", dt7.Get_Position(), empire_player)
|
|
dt7.Despawn()
|
|
dt7a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt7a.Attack_Move(silri) end
|
|
dt8.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(4)
|
|
dt8a = Create_Generic_Object("DARK_TROOPER_PHASEII", dt8.Get_Position(), empire_player)
|
|
dt8.Despawn()
|
|
dt8a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt8a.Attack_Move(silri) end
|
|
dt9.Attach_Particle_Effect("STUNNED_PARTICLE_EFFECT")
|
|
Sleep(3)
|
|
dt9a = Create_Generic_Object("DARK_TROOPER_PHASEIII", dt9.Get_Position(), empire_player)
|
|
dt9.Despawn()
|
|
dt9a.Prevent_AI_Usage(true)
|
|
if TestValid(silri) then dt9a.Attack_Move(silri) end
|
|
VictoryCondition_DarkTroopersSpawned = true
|
|
end
|
|
|
|
function PartFive_SetupGroup()
|
|
doore2.Highlight(false)
|
|
Remove_Radar_Blip("doore2")
|
|
current_cine_id = Create_Thread("CINE_Grouped_Up")
|
|
end
|
|
|
|
function CINE_Grouped_Up()
|
|
Cancel_Fast_Forward()
|
|
CINE_Active_Grouped_Up = true
|
|
|
|
if TestValid(dt1) then dt1.Despawn() end
|
|
if TestValid(dt2) then dt2.Despawn() end
|
|
if TestValid(dt3) then dt3.Despawn() end
|
|
if TestValid(dt4) then dt4.Despawn() end
|
|
if TestValid(dt5) then dt5.Despawn() end
|
|
if TestValid(dt6) then dt6.Despawn() end
|
|
if TestValid(dt7) then dt7.Despawn() end
|
|
if TestValid(dt8) then dt8.Despawn() end
|
|
if TestValid(dt9) then dt9.Despawn() end
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
silri.Hide(true)
|
|
silri.Prevent_AI_Usage(true)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Hide(true)
|
|
end
|
|
|
|
cin_urai = Create_Generic_Object("URAI_FEN", cineddduraispawn.Get_Position(), neutral_player)
|
|
cin_tyber = Create_Generic_Object("TYBER_ZANN", cinedddtyberspawn.Get_Position(), neutral_player)
|
|
cin_urai.Face_Immediate(silridddspawn)
|
|
cin_tyber.Face_Immediate(silridddspawn)
|
|
|
|
cin_silri = Create_Generic_Object("SILRI", silridddspawn.Get_Position(), neutral_player)
|
|
cin_cuddles = Create_Generic_Object("CUDDLES_THE_RANCOR", cuddlesdddspawn.Get_Position(), neutral_player)
|
|
cin_trooper = Create_Generic_Object("DARK_TROOPER_PHASEIII", trooperdddspawn.Get_Position(), neutral_player)
|
|
cin_silri.Prevent_AI_Usage(true)
|
|
cin_silri.Prevent_All_Fire(true)
|
|
cin_silri.Face_Immediate(trooperdddspawn)
|
|
cin_cuddles.Face_Immediate(trooperdddspawn)
|
|
cin_silri.Suspend_Locomotor(true)
|
|
Sleep(1)
|
|
cin_trooper.Take_Damage(9999)
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(camdddpos, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camdddlook, 0, 0, -5, 0, 0, 0, 0)
|
|
Fade_Screen_In(1)
|
|
Sleep(3.5)
|
|
cin_silri.Suspend_Locomotor(false)
|
|
cin_silri.Turn_To_Face(cin_cuddles)
|
|
Sleep(.5)
|
|
cin_silri.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_11")
|
|
cin_cuddles.Turn_To_Face(cin_silri)
|
|
Sleep(1)
|
|
cin_silri.Suspend_Locomotor(true)
|
|
Sleep(1)
|
|
doora.Play_Animation("Cinematic", false, 1)
|
|
Sleep(1)
|
|
|
|
Set_Cinematic_Camera_Key(camfindsilripos, 0, 0, 22, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camfindsilrilook, 0, 0, -22, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camfindsilripos, 3, 0, 0, 26, 0, 0, 0, 0)
|
|
Sleep(1)
|
|
cin_silri.Play_Animation("idle", false, 0)
|
|
cin_silri.Suspend_Locomotor(false)
|
|
cin_silri.Turn_To_Face(cin_tyber)
|
|
Sleep(1)
|
|
cin_silri.Suspend_Locomotor(true)
|
|
cin_cuddles.Turn_To_Face(cin_tyber)
|
|
doora.Despawn()
|
|
|
|
while not State_Mission_11_Done do Sleep(.5) end
|
|
|
|
Set_Cinematic_Camera_Key(camdddpos, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camdddlook, 0, 0, -10, 0, 0, 0, 0)
|
|
cin_urai.Override_Max_Speed(.75)
|
|
cin_tyber.Override_Max_Speed(.75)
|
|
cin_urai.Move_To(uraidddgoto)
|
|
cin_tyber.Move_To(tyberdddgoto)
|
|
Story_Event("CHATTER_30")
|
|
|
|
while not State_Mission_30_Done do Sleep(.5) end
|
|
|
|
Set_Cinematic_Camera_Key(cammeetsilripos, 0, 0, 30, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(cammeetsilrilook, 0, 0, -0, 0, 0, 0, 0)
|
|
cin_silri.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_31")
|
|
|
|
while not State_Mission_31_Done do Sleep(.5) end
|
|
cin_silri.Play_Animation("idle", false, 0)
|
|
|
|
Set_Cinematic_Camera_Key(camfindsilripos, 0, 0, 26, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camfindsilrilook, 0, 0, -22, 0, 0, 0, 0)
|
|
Sleep(1)
|
|
cin_urai.Play_Animation("cinematic", false, 0)
|
|
Story_Event("CHATTER_32")
|
|
Sleep(1)
|
|
|
|
cin_urai.Override_Max_Speed(1)
|
|
cin_tyber.Override_Max_Speed(1)
|
|
cin_silri.Suspend_Locomotor(false)
|
|
cin_silri.Move_To(partfourmeet)
|
|
cin_cuddles.Move_To(partfourmeet)
|
|
cin_tyber.Move_To(partfourmeet)
|
|
cin_urai.Move_To(partfourmeet)
|
|
|
|
while not State_Mission_32_Done do Sleep(.5) end
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Create_Thread("CINE_Grouped_Up_Cleanup")
|
|
end
|
|
|
|
function CINE_Grouped_Up_Cleanup()
|
|
CINE_Active_Grouped_Up = false
|
|
current_cine_id = nil
|
|
|
|
if TestValid(cin_urai) then cin_urai.Despawn() end
|
|
if TestValid(cin_tyber) then cin_tyber.Despawn() end
|
|
if TestValid(cin_silri) then cin_silri.Despawn() end
|
|
if TestValid(cin_cuddles) then cin_cuddles.Despawn() end
|
|
if TestValid(cin_trooper) then cin_trooper.Despawn() end
|
|
if TestValid(doora) then doora.Despawn() end
|
|
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
else
|
|
silri.Activate_Ability("SUMMON", silri)
|
|
end
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(.5)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
Create_Thread("PartFour_StartFive")
|
|
end
|
|
|
|
function PartFour_StartFive()
|
|
if not VictoryCondition_ReachedDoorE2 then
|
|
if TestValid(doore2) then
|
|
doore2.Highlight(false)
|
|
Remove_Radar_Blip("doore2")
|
|
end
|
|
VictoryCondition_ReachedDoorE2 = true
|
|
end
|
|
MissionPartFourStarted = true
|
|
VictoryCondition_DarkTroopersDead = true
|
|
VictoryCondition_EndedFour = true
|
|
end
|
|
|
|
function Kill_Off_Extras()
|
|
extras = Find_All_Objects_With_Hint("hallguard3")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard4")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard5")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard6")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard7")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard8")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard9")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard10")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard11")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard12")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
extras = Find_All_Objects_With_Hint("hallguard13")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
unit.Take_Damage(9999)
|
|
end
|
|
end
|
|
end
|
|
|
|
function MissionObjective_PartFive()
|
|
silri.Set_In_Limbo(false)
|
|
silri.Hide(false)
|
|
silri.Make_Invulnerable(false)
|
|
silri.Set_Selectable(true)
|
|
silri.Teleport_And_Face(partfoursilri)
|
|
silri.Move_To(partfourmeet)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Set_In_Limbo(false)
|
|
cuddles.Teleport_And_Face(partfourcuddles)
|
|
cuddles.Move_To(partfourmeet)
|
|
cuddles.Hide(false)
|
|
cuddles.Set_Selectable(true)
|
|
cuddles.Make_Invulnerable(false)
|
|
end
|
|
Create_Thread("Kill_Off_Extras")
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Set_In_Limbo(false)
|
|
unit.Teleport_And_Face(extraguys)
|
|
unit.Set_Selectable(true)
|
|
unit.Hide(false)
|
|
unit.Make_Invulnerable(false)
|
|
end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("SQUAD_STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Set_In_Limbo(false)
|
|
unit.Teleport_And_Face(extraguys)
|
|
unit.Set_Selectable(true)
|
|
unit.Hide(false)
|
|
unit.Make_Invulnerable(false)
|
|
end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Teleport_And_Face(extraguys)
|
|
unit.Set_Selectable(true)
|
|
unit.Make_Invulnerable(false)
|
|
end
|
|
end
|
|
end
|
|
urai_fen.Set_In_Limbo(false)
|
|
urai_fen.Hide(false)
|
|
urai_fen.Set_Selectable(true)
|
|
urai_fen.Make_Invulnerable(false)
|
|
urai_fen.Teleport_And_Face(uraimeet)
|
|
urai_fen.Move_To(partfourmeet)
|
|
tyber_zann.Set_In_Limbo(false)
|
|
tyber_zann.Hide(false)
|
|
tyber_zann.Set_Selectable(true)
|
|
tyber_zann.Make_Invulnerable(false)
|
|
tyber_zann.Teleport_And_Face(meetspot)
|
|
tyber_zann.Move_To(partfourmeet)
|
|
|
|
doorj = Create_Generic_Object("UM05_MOVING_DOOR", doorjspawn.Get_Position(), neutral_player)
|
|
doorj.Teleport_And_Face(doorjspawn)
|
|
doorj.Play_Animation("Cinematic",false,3)
|
|
|
|
Fade_Screen_In(1)
|
|
--Point_Camera_At(camstart_five)
|
|
mdu_one = Create_Generic_Object("UNDERWORLD_MOBILE_DEFENSE_UNIT", mdua.Get_Position(), empire_player)
|
|
mdu_one.Prevent_Opportunity_Fire(true)
|
|
mdu_one.Suspend_Locomotor(true)
|
|
mdu_two = Create_Generic_Object("UNDERWORLD_MOBILE_DEFENSE_UNIT", mdub.Get_Position(), empire_player)
|
|
mdu_two.Prevent_Opportunity_Fire(true)
|
|
mdu_two.Suspend_Locomotor(true)
|
|
mdu_three = Create_Generic_Object("UNDERWORLD_MOBILE_DEFENSE_UNIT", mduc.Get_Position(), empire_player)
|
|
mdu_three.Prevent_Opportunity_Fire(true)
|
|
mdu_three.Suspend_Locomotor(true)
|
|
|
|
Point_Camera_At(tyber_zann)
|
|
underworld_player.Select_Object(tyber_zann)
|
|
underworld_player.Select_Object(urai_fen)
|
|
underworld_player.Select_Object(silri)
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
range = 200
|
|
Register_Prox(hallguard1, Prox_HallGuard_1, range, underworld_player)
|
|
Register_Prox(hallguard2, Prox_HallGuard_2, range, underworld_player)
|
|
|
|
movegroup.Highlight(true)
|
|
Add_Radar_Blip(movegroup, "movegroup")
|
|
Story_Event("UM11_OBJECTIVE_08")
|
|
Create_Thread("PartFive_SpawnAdepts")
|
|
Create_Thread("Hunt_Underworld", { redguard1 })
|
|
Create_Thread("Hunt_Underworld", { redguard2 })
|
|
end
|
|
|
|
function PartFive_SpawnAdepts()
|
|
adeptthreea = Create_Generic_Object("UM05_ADEPTTHREE", adeptthreespawn.Get_Position(), empire_player)
|
|
adeptthreea.Override_Max_Speed(1)
|
|
Register_Prox(adeptthreea, Prox_AdeptsTaunts, 100, underworld_player)
|
|
adeptthreeb = Create_Generic_Object("UM05_ADEPTTHREE", adeptthreespawn.Get_Position(), empire_player)
|
|
adeptthreeb.Override_Max_Speed(.8)
|
|
adeptthreec = Create_Generic_Object("UM05_ADEPTTHREE", adeptthreespawn.Get_Position(), empire_player)
|
|
adeptthreec.Override_Max_Speed(.6)
|
|
VictoryCondition_AdeptThreeSpawned = true
|
|
Story_Event("UM11_OBJECTIVE_07")
|
|
end
|
|
|
|
function Prox_AdeptsTaunts(self_obj, trigger_obj)
|
|
if trigger_obj == silri then
|
|
if TestValid(adeptthreea) or TestValid(adeptthreeb) or TestValid(adeptthreec) then
|
|
Story_Event("CHATTER_09")
|
|
end
|
|
while not State_Mission_09_Done do Sleep(.5) end
|
|
if TestValid(silri) then
|
|
Story_Event("CHATTER_10")
|
|
end
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_AdeptsTaunts)
|
|
end
|
|
end
|
|
|
|
|
|
function Prox_GetMDUs(self_obj, trigger_obj)
|
|
if trigger_obj == tyber_zann then
|
|
mdu_one.Change_Owner(underworld_player)
|
|
mdu_one.Suspend_Locomotor(false)
|
|
mdu_one.Move_To(partsix_mdus)
|
|
mdu_two.Change_Owner(underworld_player)
|
|
mdu_two.Suspend_Locomotor(false)
|
|
mdu_two.Move_To(partsix_mdus)
|
|
mdu_three.Change_Owner(underworld_player)
|
|
mdu_three.Suspend_Locomotor(false)
|
|
mdu_three.Move_To(partsix_mdus)
|
|
mdu_one.Highlight(true)
|
|
Add_Radar_Blip(mdu_one, "mdu_one")
|
|
mdu_two.Highlight(true)
|
|
Add_Radar_Blip(mdu_two, "mdu_two")
|
|
mdu_three.Highlight(true)
|
|
Add_Radar_Blip(mdu_three, "mdu_three")
|
|
Register_Timer(PartFive_ShowMDUs, 9)
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_GetMDUs)
|
|
Story_Event("CHATTER_20")
|
|
end
|
|
end
|
|
|
|
function PartFive_ShowMDUs()
|
|
mdu_one.Highlight(false)
|
|
Remove_Radar_Blip("mdu_one")
|
|
mdu_two.Highlight(false)
|
|
Remove_Radar_Blip("mdu_two")
|
|
mdu_three.Highlight(false)
|
|
Remove_Radar_Blip("mdu_three")
|
|
end
|
|
|
|
function Prox_MoveGroup(self_obj, trigger_obj)
|
|
if trigger_obj.Get_Owner() == underworld_player then
|
|
movegroup.Highlight(false)
|
|
Remove_Radar_Blip("movegroup")
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_MoveGroup)
|
|
Create_Thread("CINE_Outside_Vault_Setup")
|
|
end
|
|
end
|
|
|
|
function CINE_Outside_Vault_Setup()
|
|
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Letter_Box_In(0)
|
|
|
|
doorf = Create_Generic_Object("UM05_MOVING_DOOR", doorfspawn.Get_Position(), neutral_player)
|
|
doorf.Teleport_And_Face(doorfspawn)
|
|
|
|
--urai_fen.Set_Selectable(false)
|
|
urai_fen.Teleport_And_Face(fiveuraispawn)
|
|
urai_fen.Move_To(urai_door)
|
|
tyber_zann.Teleport_And_Face(partfivetyber)
|
|
tyber_zann.Move_To(fivetyberrunto)
|
|
silri.Teleport_And_Face(partfivesilri)
|
|
silri.Move_To(fivesilrirunto)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Teleport_And_Face(partfivecuddles)
|
|
cuddles.Move_To(fivecuddlesrunto)
|
|
end
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Teleport_And_Face(partfiveextras)
|
|
unit.Move_To(fiveextrasrunto)
|
|
end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("SQUAD_STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Teleport_And_Face(partfiveextras)
|
|
end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Teleport_And_Face(partfiveextras)
|
|
end
|
|
end
|
|
end
|
|
mdus = Find_All_Objects_Of_Type("UNDERWORLD_MOBILE_DEFENSE_UNIT")
|
|
for k, unit in pairs(mdus) do
|
|
if TestValid(unit) then
|
|
--JSY: don't move MDUs that have been built on. The teleport and face separates them from the built object
|
|
--and then the Move_To crashes the script
|
|
if not TestValid(unit.Get_Build_Pad_Contents()) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Activate_Ability("DEPLOY", false)
|
|
unit.Teleport_And_Face(partfivemdus)
|
|
unit.Move_To(fivemdusrunto)
|
|
end
|
|
else
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Take_Damage(9999)
|
|
if TestValid(unit) then
|
|
unit.Despawn()
|
|
end
|
|
newunit=Create_Generic_Object("UNDERWORLD_MOBILE_DEFENSE_UNIT",partfivemdus.Get_Position(),underworld_player)
|
|
newunit.Move_To(fivemdusrunto)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
current_cine_id = Create_Thread("CINE_Outside_Vault")
|
|
end
|
|
|
|
function CINE_Outside_Vault()
|
|
Cancel_Fast_Forward()
|
|
CINE_Active_Outside_Vault = true
|
|
|
|
Start_Cinematic_Camera()
|
|
doorf.Play_Animation("Cinematic",false,2)
|
|
doorh.Play_Animation("Cinematic",false,2)
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(camdoorclosepos, 0, 0, 40, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camdoorcloselook, 0, 0, 10, 0, 0, 0, 0)
|
|
Fade_Screen_In(1)
|
|
Sleep(1.5)
|
|
doorh.Play_Animation("Cinematic",false,3)
|
|
Sleep(.5)
|
|
doorf.Play_Animation("Cinematic",false,3)
|
|
Sleep(.5)
|
|
|
|
Set_Cinematic_Camera_Key(camuraiworkpos, 0, 0, 30, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camuraiworklook, 0, 0, -10, 0, 0, 0, 0)
|
|
tyber_zann.Play_Animation("cinematic", true, 2)
|
|
Story_Event("CHATTER_21")
|
|
|
|
while not State_Mission_21_Done do Sleep(.5) end
|
|
tyber_zann.Play_Animation("idle", true, 0)
|
|
|
|
urai_fen.Turn_To_Face(doorh)
|
|
urai_fen.Play_Animation("cinematic", true, 0)
|
|
Story_Event("CHATTER_22")
|
|
|
|
while not State_Mission_22_Done do Sleep(.5) end
|
|
urai_fen.Play_Animation("idle", true, 0)
|
|
|
|
Set_Cinematic_Camera_Key(camoutvtyberpos, 0, 0, 20, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camoutvtyberlook, 0, 0, 0, 0, 0, 0, 0)
|
|
tyber_zann.Play_Animation("cinematic", true, 2)
|
|
Story_Event("CHATTER_26")
|
|
|
|
while not State_Mission_26_Done do Sleep(.5) end
|
|
tyber_zann.Play_Animation("idle", true, 0)
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
Create_Thread("CINE_Outside_Vault_Cleanup")
|
|
end
|
|
|
|
function CINE_Outside_Vault_Cleanup()
|
|
CINE_Active_Outside_Vault = false
|
|
current_cine_id = nil
|
|
|
|
doorf.Despawn()
|
|
doorf = Create_Generic_Object("UM02_KILLABLE_DOOR", doorfspawn.Get_Position(), underworld_player)
|
|
doorf.Teleport_And_Face(doorfspawn)
|
|
doorf.Teleport_And_Face(doorfspawn)
|
|
doorf.Set_Selectable(false)
|
|
doorf.Make_Invulnerable(true)
|
|
|
|
Fade_Screen_In(1)
|
|
Point_Camera_At(tyber_zann)
|
|
underworld_player.Select_Object(tyber_zann)
|
|
underworld_player.Select_Object(urai_fen)
|
|
underworld_player.Select_Object(silri)
|
|
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
else
|
|
silri.Activate_Ability("SUMMON", silri)
|
|
end
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(.5)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
Create_Thread("PartFive_SpringTrap")
|
|
Register_Timer(Hint_UseMDUs, 1)
|
|
end
|
|
|
|
function Hint_UseMDUs()
|
|
if not VictoryCondition_GuardsDead then
|
|
Story_Event("UM11_HINT_05")
|
|
Register_Timer(Hint_UseMDUs, 20)
|
|
end
|
|
end
|
|
|
|
function PartFive_SpringTrap()
|
|
Sleep(3)
|
|
troopsa = Create_Generic_Object("DARK_TROOPER_PHASEIII", spawnlefta.Get_Position(), empire_player)
|
|
troopsa.Prevent_AI_Usage(true)
|
|
troopsa.Move_To(movetroopsa1)
|
|
Sleep(2)
|
|
troopsb = Create_Generic_Object("DARK_TROOPER_PHASEIII", spawnrightb.Get_Position(), empire_player)
|
|
troopsb.Prevent_AI_Usage(true)
|
|
troopsb.Move_To(movetroopsb)
|
|
Sleep(2)
|
|
troopsd = Create_Generic_Object("DARK_TROOPER_PHASEIII", spawnlefta.Get_Position(), empire_player)
|
|
troopsd.Prevent_AI_Usage(true)
|
|
troopsd.Move_To(movetroopsa2)
|
|
Sleep(2)
|
|
troopsc = Create_Generic_Object("DARK_TROOPER_PHASEIII", spawnrightc.Get_Position(), empire_player)
|
|
troopsc.Prevent_AI_Usage(true)
|
|
troopsc.Move_To(movetroopsc)
|
|
Sleep(2)
|
|
troopse = Create_Generic_Object("DARK_TROOPER_PHASEIII", spawnlefta.Get_Position(), empire_player)
|
|
troopse.Prevent_AI_Usage(true)
|
|
troopse.Move_To(movetroopsa3)
|
|
VictoryCondition_GuardsSpawned = true
|
|
Create_Thread("PartFive_TroopsAttack")
|
|
end
|
|
|
|
|
|
function PartFive_TroopsAttack()
|
|
Sleep(3)
|
|
if TestValid(troopsa) then
|
|
if troopsa.Is_Ability_Ready("JET_PACK") then
|
|
troopsa.Activate_Ability("JET_PACK", landinga)
|
|
end
|
|
end
|
|
Sleep(3)
|
|
if TestValid(troopsb) then
|
|
if troopsb.Is_Ability_Ready("JET_PACK") then
|
|
troopsb.Activate_Ability("JET_PACK", landingb)
|
|
end
|
|
end
|
|
Sleep(3)
|
|
if TestValid(troopsc) then
|
|
if troopsc.Is_Ability_Ready("JET_PACK") then
|
|
troopsc.Activate_Ability("JET_PACK", landingc)
|
|
end
|
|
end
|
|
Sleep(3)
|
|
if TestValid(troopsd) then
|
|
if troopsd.Is_Ability_Ready("JET_PACK") then
|
|
troopsd.Activate_Ability("JET_PACK", landingd)
|
|
end
|
|
end
|
|
Sleep(3)
|
|
if TestValid(troopse) then
|
|
if troopse.Is_Ability_Ready("JET_PACK") then
|
|
troopse.Activate_Ability("JET_PACK", landinge)
|
|
end
|
|
end
|
|
Sleep(1)
|
|
Create_Thread("PartFive_TroopsUseMissiles")
|
|
end
|
|
|
|
function PartFive_TroopsUseMissiles()
|
|
while not VictoryCondition_GuardsDead do
|
|
if TestValid(troopsa) then
|
|
if not troopsa.Is_Ability_Active("JET_PACK") then
|
|
if troopsa.Is_Ability_Ready("DEPLOY") then
|
|
troopsa.Activate_Ability("DEPLOY", true)
|
|
end
|
|
end
|
|
end
|
|
if TestValid(troopsb) then
|
|
if not troopsb.Is_Ability_Active("JET_PACK") then
|
|
if troopsb.Is_Ability_Ready("DEPLOY") then
|
|
troopsb.Activate_Ability("DEPLOY", true)
|
|
end
|
|
end
|
|
end
|
|
if TestValid(troopsc) then
|
|
if not troopsc.Is_Ability_Active("JET_PACK") then
|
|
if troopsc.Is_Ability_Ready("DEPLOY") then
|
|
troopsc.Activate_Ability("DEPLOY", true)
|
|
end
|
|
end
|
|
end
|
|
if TestValid(troopsd) then
|
|
if not troopsd.Is_Ability_Active("JET_PACK") then
|
|
if troopsd.Is_Ability_Ready("DEPLOY") then
|
|
troopsd.Activate_Ability("DEPLOY", true)
|
|
end
|
|
end
|
|
end
|
|
if TestValid(troopse) then
|
|
if not troopse.Is_Ability_Active("JET_PACK") then
|
|
if troopse.Is_Ability_Ready("DEPLOY") then
|
|
troopse.Activate_Ability("DEPLOY", true)
|
|
end
|
|
end
|
|
end
|
|
Sleep(2)
|
|
end
|
|
end
|
|
|
|
function PartFive_OpenVault()
|
|
urai_comp.Highlight(false)
|
|
Remove_Radar_Blip("urai_comp")
|
|
invault.Highlight(true)
|
|
Add_Radar_Blip(invault, "invault")
|
|
VictoryCondition_GotAccessCodes = true
|
|
Create_Thread("Open_Vault")
|
|
end
|
|
|
|
function Prox_InsideVault(self_obj, trigger_obj)
|
|
if trigger_obj.Get_Owner() == underworld_player then
|
|
Story_Event("UM11_OBJECTIVE_08_DONE")
|
|
Open_Door_f()
|
|
Open_Door_h()
|
|
invault.Highlight(false)
|
|
Remove_Radar_Blip("invault")
|
|
VictoryCondition_SeenVault = true
|
|
Create_Thread("PartFive_InVault")
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_InsideVault)
|
|
end
|
|
end
|
|
|
|
function PartFive_InVault()
|
|
Story_Event("CHATTER_27")
|
|
while not State_Mission_27_Done do Sleep(.5) end
|
|
|
|
Story_Event("CHATTER_28")
|
|
while not State_Mission_28_Done do Sleep(.5) end
|
|
|
|
Create_Thread("PartSix_StartAdeptFour")
|
|
end
|
|
|
|
function MissionObjective_PartSix()
|
|
MissionPartSixStarted = true
|
|
doora.Play_Animation("Cinematic",false,3)
|
|
Story_Event("UM11_OBJECTIVE_09")
|
|
doori.Highlight(true)
|
|
Add_Radar_Blip(doori, "doori")
|
|
end
|
|
|
|
function PartSix_StartAdeptFour()
|
|
doorb = Create_Generic_Object("UM05_MOVING_DOOR", doorbspawn.Get_Position(), neutral_player)
|
|
doorb.Teleport_And_Face(doorbspawn)
|
|
doorb.Play_Animation("Cinematic",false,3)
|
|
current_cine_id = Create_Thread("CINE_Final_Adept")
|
|
end
|
|
|
|
function CINE_Final_Adept()
|
|
Cancel_Fast_Forward()
|
|
CINE_Active_Final_Adept = true
|
|
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
|
|
doorf.Despawn()
|
|
|
|
urai_fen.Teleport_And_Face(finaluraispot)
|
|
urai_fen.Prevent_All_Fire(true)
|
|
urai_fen.Hide(true)
|
|
tyber_zann.Teleport_And_Face(finaltyberspot)
|
|
tyber_zann.Prevent_All_Fire(true)
|
|
tyber_zann.Hide(true)
|
|
silri.Teleport_And_Face(finalsilrispot)
|
|
silri.Prevent_All_Fire(true)
|
|
silri.Prevent_AI_Usage(true)
|
|
silri.Suspend_Locomotor(true)
|
|
silri.Hide(true)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Teleport_And_Face(finalcuddlesspot)
|
|
cuddles.Prevent_All_Fire(true)
|
|
cuddles.Hide(true)
|
|
end
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Teleport_And_Face(finalextrasspot)
|
|
unit.Prevent_All_Fire(true)
|
|
unit.Hide(true)
|
|
end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("SQUAD_STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Teleport_And_Face(finalextrasspot)
|
|
unit.Prevent_All_Fire(true)
|
|
unit.Hide(true)
|
|
end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER_TEAM")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Teleport_And_Face(finalextrasspot)
|
|
end
|
|
end
|
|
end
|
|
mdus = Find_All_Objects_Of_Type("UNDERWORLD_MOBILE_DEFENSE_UNIT")
|
|
for k, unit in pairs(mdus) do
|
|
if TestValid(unit) then
|
|
--JSY: don't move MDUs that have been built on. The teleport and face separates them from the built object
|
|
--and then the Move_To crashes the script
|
|
if not TestValid(unit.Get_Build_Pad_Contents()) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Activate_Ability("DEPLOY", false)
|
|
unit.Teleport_And_Face(finalmdusspot)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
cin_tele = Create_Generic_Object("UM05_ADEPTFOURCINE", lastadeptspawn.Get_Position(), neutral_player)
|
|
cin_tyber = Create_Generic_Object("TYBER_ZANN", lasttyberspawn.Get_Position(), neutral_player)
|
|
cin_silri = Create_Generic_Object("SILRI", lastsilrispawn.Get_Position(), neutral_player)
|
|
cin_urai = Create_Generic_Object("URAI_FEN", lasturaispawn.Get_Position(), neutral_player)
|
|
cin_cuddles = Create_Generic_Object("UM05_CUDDLES_THE_RANCOR", lastcuddlesspawn.Get_Position(), neutral_player)
|
|
cin_tyber.Move_To(lasttybergoto)
|
|
cin_silri.Move_To(lastsilrigoto)
|
|
cin_urai.Move_To(lasturaigoto)
|
|
cin_cuddles.Move_To(lastcuddlesgoto)
|
|
cin_tele.Turn_To_Face(cin_tyber)
|
|
cin_silri.Prevent_AI_Usage(true)
|
|
cin_silri.Prevent_All_Fire(true)
|
|
|
|
Sleep(.5)
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(camlastpos, 0, 0, 50, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camlastlook, 0, 0, -5, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camlastpan, 5, 0, 0, 55, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(camlastlook, 5, 0, 0, -10, 0, 0, 0, 0)
|
|
Fade_Screen_In(1)
|
|
Sleep(3)
|
|
cin_tyber.Turn_To_Face(cin_tele)
|
|
cin_urai.Turn_To_Face(cin_tele)
|
|
cin_silri.Turn_To_Face(cin_tele)
|
|
cin_cuddles.Turn_To_Face(cin_tele)
|
|
Sleep(3)
|
|
|
|
Story_Event("CHATTER_33")
|
|
Set_Cinematic_Camera_Key(camstraightdown2, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camstraightdown4, 0, 0, 0, 0, 0, 0, 0)
|
|
|
|
while not State_Mission_33_Done do Sleep(.5) end
|
|
|
|
cin_tyber.Play_Animation("cinematic", true, 2)
|
|
Story_Event("CHATTER_34")
|
|
Set_Cinematic_Camera_Key(camlastpan, 0, 0, 55, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camlastlook, 0, 0, -10, 0, 0, 0, 0)
|
|
|
|
while not State_Mission_34_Done do Sleep(.5) end
|
|
cin_tyber.Play_Animation("idle", true, 0)
|
|
|
|
Story_Event("CHATTER_35")
|
|
Set_Cinematic_Camera_Key(camstraightdown2, 0, 0, 35, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camstraightdown4, 0, 0, 0, 0, 0, 0, 0)
|
|
|
|
while not State_Mission_35_Done do Sleep(.5) end
|
|
|
|
Set_Cinematic_Camera_Key(camstraightdown1, 0, 0, 175, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camstraightdown3, 0, 0, 0, 0, 0, 0, 0)
|
|
Transition_Cinematic_Camera_Key(camstraightdown2, 11, 0, 0, 40, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(camstraightdown4, 11, 0, 0, 0, 0, 0, 0, 0)
|
|
Sleep(2)
|
|
cin_fx1 = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", lasttele1.Get_Position(), neutral_player)
|
|
cin_fx1.Attach_Particle_Effect("BOTHAN_STUN_GAS")
|
|
Sleep(.15)
|
|
cin_tele.Teleport_And_Face(lasttele1)
|
|
cin_silri.Turn_To_Face(lasttele1)
|
|
cin_urai.Turn_To_Face(lasttele1)
|
|
Sleep(.5)
|
|
cin_tyber.Turn_To_Face(lasttele1)
|
|
Sleep(.5)
|
|
cin_fx2 = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", lasttele2.Get_Position(), neutral_player)
|
|
cin_fx2.Attach_Particle_Effect("BOTHAN_STUN_GAS")
|
|
cin_urai.Turn_To_Face(lasttele2)
|
|
Sleep(.15)
|
|
cin_silri.Turn_To_Face(lasttele2)
|
|
cin_tele.Teleport_And_Face(lasttele2)
|
|
Sleep(.5)
|
|
cin_tyber.Turn_To_Face(lasttele2)
|
|
Sleep(.5)
|
|
cin_fx3 = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", lasttele3.Get_Position(), neutral_player)
|
|
cin_fx3.Attach_Particle_Effect("BOTHAN_STUN_GAS")
|
|
Sleep(.15)
|
|
cin_urai.Turn_To_Face(lasttele3)
|
|
cin_tele.Teleport_And_Face(lasttele3)
|
|
Sleep(.5)
|
|
cin_tyber.Turn_To_Face(lasttele3)
|
|
cin_silri.Turn_To_Face(lasttele3)
|
|
Sleep(.5)
|
|
cin_fx4 = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", lasttele4.Get_Position(), neutral_player)
|
|
cin_fx4.Attach_Particle_Effect("BOTHAN_STUN_GAS")
|
|
Sleep(.15)
|
|
cin_tele.Teleport_And_Face(lasttele4)
|
|
cin_tyber.Turn_To_Face(cin_tele)
|
|
Sleep(.5)
|
|
cin_fx5 = Create_Generic_Object("INVISIBLE_REVEAL_OBJECT", lastadeptspawn.Get_Position(), neutral_player)
|
|
cin_fx5.Attach_Particle_Effect("BOTHAN_STUN_GAS")
|
|
Sleep(.15)
|
|
cin_urai.Turn_To_Face(cin_tele)
|
|
cin_tele.Teleport_And_Face(lastadeptspawn)
|
|
Sleep(.25)
|
|
cin_silri.Turn_To_Face(cin_tele)
|
|
cin_tyber.Turn_To_Face(cin_tele)
|
|
cin_cuddles.Turn_To_Face(cin_tele)
|
|
Sleep(4)
|
|
cin_tele.Suspend_Locomotor(true)
|
|
cin_tyber.Suspend_Locomotor(true)
|
|
cin_tyber.Prevent_All_Fire(true)
|
|
cin_tele.Change_Owner(empire_player)
|
|
cin_tyber.Change_Owner(underworld_player)
|
|
cin_tele.Attack_Target(cin_tyber)
|
|
Sleep(1)
|
|
cin_tyber.Change_Owner(neutral_player)
|
|
cin_tele.Change_Owner(neutral_player)
|
|
cin_silri.Play_Animation("cinematic", true, 0)
|
|
Story_Event("CHATTER_36")
|
|
|
|
while not State_Mission_36_Done do Sleep(.5) end
|
|
cin_silri.Play_Animation("idle", true, 0)
|
|
|
|
Set_Cinematic_Camera_Key(camsilrityberpos, 0, 0, 25, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(camsilrityberlook, 0, 0, 0, 0, 0, 0, 0)
|
|
cin_tyber.Play_Animation("cinematic", true, 2)
|
|
Story_Event("CHATTER_37")
|
|
cin_silri.Turn_To_Face(cin_tyber)
|
|
Sleep(2)
|
|
cin_tyber.Suspend_Locomotor(false)
|
|
cin_tyber.Turn_To_Face(cin_silri)
|
|
|
|
while not State_Mission_37_Done do Sleep(.5) end
|
|
cin_tyber.Play_Animation("idle", true, 0)
|
|
|
|
Create_Thread("CINE_Final_Adept_Cleanup")
|
|
end
|
|
|
|
function CINE_Final_Adept_Cleanup()
|
|
CINE_Active_Final_Adept = false
|
|
current_cine_id = nil
|
|
|
|
urai_fen.Prevent_All_Fire(false)
|
|
urai_fen.Hide(false)
|
|
tyber_zann.Prevent_All_Fire(false)
|
|
tyber_zann.Hide(false)
|
|
silri.Prevent_All_Fire(false)
|
|
silri.Hide(false)
|
|
silri.Suspend_Locomotor(false)
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
cuddles.Prevent_All_Fire(false)
|
|
cuddles.Hide(false)
|
|
end
|
|
extras = Find_All_Objects_Of_Type("STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Prevent_All_Fire(false)
|
|
unit.Hide(false)
|
|
end
|
|
end
|
|
end
|
|
extras = Find_All_Objects_Of_Type("SQUAD_STORMTROOPER")
|
|
for k, unit in pairs(extras) do
|
|
if TestValid(unit) then
|
|
if unit.Get_Owner() == underworld_player then
|
|
unit.Prevent_All_Fire(false)
|
|
unit.Hide(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
if TestValid(cin_tyber) then cin_tyber.Despawn() end
|
|
if TestValid(cin_urai) then cin_urai.Despawn() end
|
|
if TestValid(cin_silri) then cin_silri.Despawn() end
|
|
if TestValid(cin_cuddles) then cin_cuddles.Despawn() end
|
|
if TestValid(cin_tele) then cin_tele.Despawn() end
|
|
if TestValid(cin_fx1) then cin_fx1.Despawn() end
|
|
if TestValid(cin_fx2) then cin_fx2.Despawn() end
|
|
if TestValid(cin_fx3) then cin_fx3.Despawn() end
|
|
if TestValid(cin_fx4) then cin_fx4.Despawn() end
|
|
if TestValid(cin_fx5) then cin_fx5.Despawn() end
|
|
|
|
cuddles = Find_Nearest(silri, "CUDDLES_THE_RANCOR")
|
|
if TestValid(cuddles) then
|
|
else
|
|
silri.Activate_Ability("SUMMON", silri)
|
|
end
|
|
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(.5)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
|
|
Fade_Screen_In(1)
|
|
Point_Camera_At(tyber_zann)
|
|
underworld_player.Select_Object(tyber_zann)
|
|
underworld_player.Select_Object(urai_fen)
|
|
underworld_player.Select_Object(silri)
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(1)
|
|
|
|
Create_Thread("PartSix_IntroAdeptFour")
|
|
end
|
|
|
|
|
|
function PartSix_IntroAdeptFour()
|
|
-- this adept is easiest killed by
|
|
adeptfour = Create_Generic_Object("UM05_ADEPTFOUR", adeptfourspawn.Get_Position(), empire_player)
|
|
Register_Death_Event(adeptfour, PartSix_AdeptFourDead)
|
|
Find_And_Attack({adeptfour})
|
|
--adeptfour.Highlight(true)
|
|
Add_Radar_Blip(adeptfour, "adeptfour")
|
|
Create_Thread("PartSix_ReplenishMDUs")
|
|
Story_Event("UM11_OBJECTIVE_10")
|
|
Register_Timer(Hint_AdeptFour, 1)
|
|
Story_Event("CHATTER_52")
|
|
end
|
|
|
|
function Hint_AdeptFour()
|
|
if not VictoryCondition_AdeptFourDead then
|
|
Story_Event("UM11_HINT_06")
|
|
Register_Timer(Hint_AdeptFour, 20)
|
|
end
|
|
end
|
|
|
|
function PartSix_AdeptFourDead()
|
|
adeptfour.Highlight(false)
|
|
Remove_Radar_Blip("adeptfour")
|
|
VictoryCondition_AdeptFourDead = true
|
|
Story_Event("UM11_OBJECTIVE_10_DONE")
|
|
end
|
|
|
|
function PartSix_ReplenishMDUs()
|
|
while not VictoryCondition_AdeptFourDead do
|
|
sixmdus = Find_All_Objects_Of_Type("UNDERWORLD_MOBILE_DEFENSE_UNIT")
|
|
if table.getn(sixmdus) < 3 then
|
|
newmdu = Create_Generic_Object("UNDERWORLD_MOBILE_DEFENSE_UNIT", mduspawn.Get_Position(), underworld_player)
|
|
newmdu.Move_To(tyber_zann)
|
|
newmdu.Prevent_Opportunity_Fire(true)
|
|
end
|
|
Sleep(2)
|
|
end
|
|
end
|
|
|
|
function PartSix_OpenExit()
|
|
-- when wall is destroyed, remove black covers
|
|
juggernaut.Change_Owner(underworld_player)
|
|
juggernaut.Set_Selectable(true)
|
|
juggernaut.Enable_Behavior(24, true)
|
|
juggernaut.Make_Invulnerable(false)
|
|
juggernaut.Highlight(true)
|
|
Add_Radar_Blip(juggernaut, "juggernaut")
|
|
Create_Thread("Open_Door_i")
|
|
Create_Thread("Open_Door_c")
|
|
Create_Thread("PartSix_IsInJuggernaut")
|
|
Create_Thread("PartSix_SpawnTroops")
|
|
mt3.Change_Owner(empire_player)
|
|
mt4.Change_Owner(empire_player)
|
|
mt5.Change_Owner(empire_player)
|
|
mt6.Change_Owner(empire_player)
|
|
Story_Event("CHATTER_53")
|
|
end
|
|
|
|
function Prox_StopSpawns(self_obj, trigger_obj)
|
|
if trigger_obj.Get_Owner() == underworld_player then
|
|
VictoryCondition_StopSpawns = true
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_StopSpawns)
|
|
end
|
|
end
|
|
|
|
function PartSix_SpawnTroops()
|
|
while not VictoryCondition_StopSpawns do
|
|
-- spawn advancing troops to get mashed by juggernaut
|
|
Sleep(6)
|
|
evenmoreguys = Spawn_Unit(Find_Object_Type("IMPERIAL_MINI_STORMTROOPER_SQUAD"), exitdoor.Get_Position(), empire_player)
|
|
Create_Thread("Hunt_Underworld", evenmoreguys)
|
|
end
|
|
end
|
|
|
|
function PartSix_IsInJuggernaut()
|
|
while not VictoryCondition_InJuggernaut do
|
|
list = juggernaut.Get_Garrisoned_Units()
|
|
if table.getn(list) > 0 then
|
|
VictoryCondition_InJuggernaut = true
|
|
juggernaut.Highlight(false)
|
|
Remove_Radar_Blip("juggernaut")
|
|
exitdoor.Highlight(true)
|
|
Add_Radar_Blip(exitdoor, "exitdoor")
|
|
Register_Timer(Hint_Juggernaut, 5)
|
|
juggernaut.Override_Max_Speed(1.1)
|
|
Story_Event("CHATTER_54")
|
|
end
|
|
Sleep(2)
|
|
end
|
|
end
|
|
|
|
function Hint_Juggernaut()
|
|
if not VictoryCondition_ReachedExit then
|
|
Story_Event("UM11_HINT_07")
|
|
Register_Timer(Hint_Juggernaut, 20)
|
|
Story_Event("CHATTER_55")
|
|
end
|
|
end
|
|
|
|
function Prox_ReachedExit(self_obj, trigger_obj)
|
|
if trigger_obj.Get_Owner() == underworld_player then
|
|
exitdoor.Highlight(false)
|
|
Remove_Radar_Blip("exitdoor")
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_ReachedExit)
|
|
VictoryCondition_ReachedExit = true
|
|
Story_Event("UM11_OBJECTIVE_09_DONE")
|
|
Story_Event("UM11_OBJECTIVE_06_DONE")
|
|
end
|
|
end
|
|
|
|
function Tyber_Destroyed()
|
|
DefeatCondition_TyberDead = true
|
|
Story_Event("UM11_TYBERDEAD")
|
|
end
|
|
|
|
function Urai_Destroyed()
|
|
DefeatCondition_UraiDead = true
|
|
Story_Event("UM11_URAIDEAD")
|
|
end
|
|
|
|
function Silri_Destroyed()
|
|
DefeatCondition_SilriDead = true
|
|
Story_Event("UM11_SILRIDEAD")
|
|
end
|
|
|
|
function Find_And_Attack(attack_list)
|
|
Create_Thread("Hunt_Underworld",attack_list)
|
|
end
|
|
|
|
function Prox_HallGuard_1(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_1)
|
|
end
|
|
function Prox_HallGuard_2(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_2)
|
|
end
|
|
function Prox_HallGuard_3(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_3)
|
|
end
|
|
function Prox_HallGuard_4(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_4)
|
|
end
|
|
function Prox_HallGuard_5(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_5)
|
|
end
|
|
function Prox_HallGuard_6(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_6)
|
|
end
|
|
function Prox_HallGuard_7(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_7)
|
|
end
|
|
function Prox_HallGuard_8(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_8)
|
|
end
|
|
function Prox_HallGuard_9(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_9)
|
|
end
|
|
function Prox_HallGuard_10(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_10)
|
|
end
|
|
function Prox_HallGuard_11(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_11)
|
|
end
|
|
function Prox_HallGuard_12(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_12)
|
|
end
|
|
function Prox_HallGuard_13(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_13)
|
|
end
|
|
function Prox_HallGuard_14(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_14)
|
|
end
|
|
function Prox_HallGuard_15(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_15)
|
|
end
|
|
function Prox_HallGuard_16(self_obj, trigger_obj)
|
|
Create_Thread("Hunt_Underworld", { self_obj })
|
|
self_obj.Cancel_Event_Object_In_Range(Prox_HallGuard_16)
|
|
end
|
|
|
|
|
|
-- delay a short time and then show game has been won VICTORY
|
|
function EndMissionVictory()
|
|
Cancel_Fast_Forward()
|
|
|
|
|
|
units = Find_All_Objects_Of_Type(underworld_player)
|
|
for k, unit in pairs(units) do
|
|
if TestValid(unit) then
|
|
unit.Make_Invulnerable(true)
|
|
end
|
|
end
|
|
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Fade_Screen_Out(1)
|
|
Sleep(1)
|
|
|
|
ext_sky.Hide(false)
|
|
int_sky.Hide(true)
|
|
endcinebox.Hide(true)
|
|
endcinebox1.Hide(true)
|
|
|
|
Letter_Box_In(0)
|
|
Start_Cinematic_Camera()
|
|
|
|
if TestValid(juggernaut) then
|
|
endcinejugger.Override_Max_Speed(1.5)
|
|
endcinejugger.Move_To(endcinejuggergoto)
|
|
else
|
|
endcintyber=Create_Generic_Object("TYBER_ZANN", Find_Hint("STORY_TRIGGER_ZONE","endcinetyber").Get_Position(), underworld_player);
|
|
endcinurai=Create_Generic_Object("URAI_FEN", Find_Hint("STORY_TRIGGER_ZONE","endcineurai").Get_Position(), underworld_player);
|
|
endcinsilri=Create_Generic_Object("SILRI", Find_Hint("STORY_TRIGGER_ZONE","endcinesilri").Get_Position(), underworld_player);
|
|
endcincuddles=Create_Generic_Object("UM05_CUDDLES_THE_RANCOR", Find_Hint("STORY_TRIGGER_ZONE","endcinecuddles").Get_Position(), underworld_player);
|
|
endcintyber.Prevent_AI_Usage(true)
|
|
endcintyber.Prevent_All_Fire(true)
|
|
endcintyber.Make_Invulnerable(true)
|
|
endcinsilri.Prevent_AI_Usage(true)
|
|
endcinsilri.Prevent_All_Fire(true)
|
|
endcinsilri.Make_Invulnerable(true)
|
|
endcinurai.Prevent_AI_Usage(true)
|
|
endcinurai.Prevent_All_Fire(true)
|
|
endcinurai.Make_Invulnerable(true)
|
|
endcincuddles.Prevent_AI_Usage(true)
|
|
endcincuddles.Prevent_All_Fire(true)
|
|
endcincuddles.Make_Invulnerable(true)
|
|
|
|
endcinejugger.Despawn()
|
|
|
|
endcintyber.Override_Max_Speed(1.42)
|
|
endcintyber.Move_To(endcinejuggergoto)
|
|
endcinsilri.Override_Max_Speed(1.41)
|
|
endcinsilri.Move_To(endcinejuggergoto)
|
|
endcinurai.Override_Max_Speed(1.41)
|
|
endcinurai.Move_To(endcinejuggergoto)
|
|
endcincuddles.Override_Max_Speed(1.35)
|
|
endcincuddles.Move_To(endcinejuggergoto)
|
|
|
|
Sleep(.5)
|
|
end
|
|
|
|
chase_list = Find_All_Objects_With_Hint("endchase")
|
|
for k, unit in pairs(chase_list) do
|
|
if TestValid(unit) then
|
|
unit.Override_Max_Speed(1.5)
|
|
unit.Change_Owner(empire_player)
|
|
unit.Attack_Move(endcinejuggergoto)
|
|
end
|
|
end
|
|
|
|
-- Set_Cinematic_Camera_Key(target_pos, xoffset_dist, yoffset_pitch, zoffset_yaw, angles?, attach_object, use_object_rotation, cinematic_animation)
|
|
Set_Cinematic_Camera_Key(endcinecampos, 0, 0, 50, 0, 0, 0, 0)
|
|
Set_Cinematic_Target_Key(endcinecamlook, 0, 0, 0, 0, 0, 0, 0)
|
|
|
|
Transition_Cinematic_Camera_Key(endcinecampos, 10, 0, 0, 75, 0, 0, 0, 0)
|
|
Transition_Cinematic_Target_Key(endcinecamlook, 10, 0, 0, -15, 0, 0, 0, 0)
|
|
--Sleep(1)
|
|
|
|
Fade_Screen_In(1)
|
|
Sleep(3)
|
|
|
|
Story_Event("UM11_ENDMISSION_VICTORY")
|
|
|
|
Sleep(3)
|
|
Fade_Screen_Out(2)
|
|
Sleep(2)
|
|
End_Cinematic_Camera()
|
|
Letter_Box_Out(0)
|
|
Lock_Controls(0)
|
|
Suspend_AI(0)
|
|
underworld_player.Remove_Orbital_Bombardment(false)
|
|
|
|
|
|
end
|
|
|
|
-- delay a short time and then show game has been lost DEFEAT
|
|
function EndMissionDefeat()
|
|
Suspend_AI(1)
|
|
Lock_Controls(1)
|
|
Letter_Box_In(0)
|
|
Story_Event("UM11_ENDMISSION_DEFEAT")
|
|
underworld_player.Remove_Orbital_Bombardment(false)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function State_Mission_Chatter_00_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_00_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_01_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_01_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_02_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_02_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_03_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_03_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_04_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_04_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_05_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_05_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_06_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_06_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_07_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_07_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_08_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_08_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_09_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_09_Done = true
|
|
end
|
|
end
|
|
|
|
function State_Mission_Chatter_10_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_10_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_11_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_11_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_12_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_12_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_13_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_13_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_14_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_14_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_15_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_15_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_16_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_16_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_17_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_17_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_18_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_18_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_19_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_19_Done = true
|
|
end
|
|
end
|
|
|
|
function State_Mission_Chatter_20_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_20_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_21_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_21_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_22_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_22_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_23_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_23_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_24_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_24_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_25_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_25_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_26_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_26_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_27_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_27_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_28_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_28_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_29_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_29_Done = true
|
|
end
|
|
end
|
|
|
|
function State_Mission_Chatter_30_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_30_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_31_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_31_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_32_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_32_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_33_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_33_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_34_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_34_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_35_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_35_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_36_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_36_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_37_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_37_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_38_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_38_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_39_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_39_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_40_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_40_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_41_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_41_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_42_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_42_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_43_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_43_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_44_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_44_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_45_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_45_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_46_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_46_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_47_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_47_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_48_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_48_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_49_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_49_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_50_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_50_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_51_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_51_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_52_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_52_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_53_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_53_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_54_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_54_Done = true
|
|
end
|
|
end
|
|
function State_Mission_Chatter_55_Done(message)
|
|
if message == OnEnter then
|
|
State_Mission_55_Done = true
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|