Keneth Posted March 9, 2005 Share Posted March 9, 2005 Hrm... where there's a will there's a way? I'm surprised no one has made a binary to source translator yet. Link to comment Share on other sites More sharing options...
RevanA4 Posted March 9, 2005 Share Posted March 9, 2005 Originally posted by Keneth Hrm... where there's a will there's a way? I'm surprised no one has made a binary to source translator yet. dude that is easier said than done a lote easier said than done Link to comment Share on other sites More sharing options...
RevanA4 Posted March 9, 2005 Share Posted March 9, 2005 thanks Xcom I walk once more on the path of the light (you have regained some conection with the force) Link to comment Share on other sites More sharing options...
stoffe Posted March 9, 2005 Share Posted March 9, 2005 Originally posted by Keneth I've got a question for stoffe since he's doing about all the scripting work, I'm using envida's lost khoonda room mod and I'm not sure how this works, here's the code (I'm assuming he won't mind since the source was in the pack) (snip) now this script has the same name as the original one (k_enter_601) but there's just a few lines in and there was some modification to 602 but I don't know how to decompile and check it, is the 602_dan_enter script supposed to be the same as the one you wrote for disciple's cutscene fix and just renamed? Since I don't have the mod in question I have no idea, but it would be fairly easy to check. Just extract the original k_enter_601.ncs from the game and compare it with the 602_dan_enter.ncs script from the mod. If they match it's probably a safe bet they are the same script, and you could just copy&paste those ExecuteScript() function calls into the top of your modified script. Or if you don't have a compare utility at hand it's probably even quicker to just ask the author of that mod, since (s)he should know. Link to comment Share on other sites More sharing options...
Keneth Posted March 9, 2005 Share Posted March 9, 2005 Well I did compare them before and the one in the override is smaller that's why I found it odd but it would seem logical that it was written that way, otherwise the whole script would be lost. If I knew how to turn those bytes into script I could check it myself, but you're right, it'll probably be faster to ask envida anyway in the meanwhile I'll turn that mod off. Link to comment Share on other sites More sharing options...
RevanA4 Posted March 9, 2005 Share Posted March 9, 2005 if you have a c++ compiler of any sort you should be able to compare them in that in case you were wondering Link to comment Share on other sites More sharing options...
stoffe Posted March 10, 2005 Share Posted March 10, 2005 Found another two gender-checking Handmaiden-related Telos Academy cutscenes that where triggered from the galaxy map when jumping between planets, that I missed before. To enable them for an Exile of any gender, replace the gender checks with check if the Handmaiden is in the party instead, like below, and recompile the script: //:: k_sup_galaxymap /* Universal Script that fires when the galaxy map is used. */ #include "k_inc_hawk" //turns off all of the core worlds and live planets. void CUSTOM_TurnOffPlanets(); int CUSTOM_PlanetIDTo2DA(int nPlanetID); int CUSTOM_2DAToPlanetID(int nPlanet2DA); void DoFirst301() { NoClicksFor(1.0); SetGlobalFadeOut(); object oPlayer = GetFirstPC(); object oAtton = GetObjectByTag("atton"); object oMand = GetObjectByTag("mand"); object oKreia = GetObjectByTag("kreia"); object oT3M4 = GetObjectByTag("t3m4"); object oDisc = GetObjectByTag("disciple"); object oMaid = GetObjectByTag("handmaiden"); TurnOffCutsceneMode(oAtton); TurnOffCutsceneMode(oMand); TurnOffCutsceneMode(oKreia); TurnOffCutsceneMode(oT3M4); TurnOffCutsceneMode(oDisc); TurnOffCutsceneMode(oMaid); AssignCommand(oMand, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_mand")))); AssignCommand(oKreia, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_kreia")))); AssignCommand(oT3M4, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_t3m4")))); AssignCommand(oDisc, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_disc")))); AssignCommand(oMaid, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_maid")))); SignalEvent(GetArea(oPlayer), EventUserDefined(1)); AssignCommand(oPlayer, ClearAllActions()); AssignCommand(oPlayer, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_player")))); } void DoFirst701() { NoClicksFor(1.0); SetGlobalFadeOut(); object oPlayer = GetFirstPC(); object oAtton = GetObjectByTag("mand"); object oVisas = GetObjectByTag("visasmarr"); object oKreia = GetObjectByTag("kreia"); TurnOffCutsceneMode(oAtton); TurnOffCutsceneMode(oKreia); TurnOffCutsceneMode(oVisas); AssignCommand(oVisas, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_mand")))); AssignCommand(oKreia, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_kreia")))); SignalEvent(GetArea(oPlayer), EventUserDefined(1)); AssignCommand(oPlayer, ClearAllActions()); AssignCommand(oPlayer, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_301_player")))); } void DoPlanetChange() { if(GetGlobalNumber("401DXN_STARTED") == 1) { SetGlobalNumber("401DXN_STARTED", 2); PlayMovieQueue(); StartNewModule("003EBO", "WP_PC_WALK_MAP"); } else if(GetModuleName() == "001EBO") { // if we are in tutorial, the galaxy map has different functionality SetGlobalNumber ( "001EBO_Movie_End", 1); PlayMovie("permov02");//play tutorial AssignCommand( GetObjectByTag("Galaxymap"),ActionStartConversation(GetFirstPC(),"outro") ); } else if( (GetGlobalNumber("003EBO_BACKGROUND") == 3) && !GetGlobalBoolean("301_FIRST_ENTER") && (GetGlobalNumber("301_INTRO_SCENE") == 0) ) {// first time to nar shadda SetGlobalNumber("003EBO_RETURN_DEST",3); SetGlobalNumber("301_INTRO_SCENE", 1); DoFirst301(); } else if( (GetGlobalNumber("003EBO_BACKGROUND") == 6) && !GetGlobalBoolean("701_FIRST_ENTER") && (GetGlobalNumber("701_INTRO_SCENE") == 0) ) {//first time to koriban SetGlobalNumber("003EBO_RETURN_DEST",6); SetGlobalBoolean("701_FIRST_SCENE", TRUE); SetGlobalNumber("701_INTRO_SCENE", 1); DoFirst701(); //old module load way below: //PlayMovieQueue(); //StartNewModule("003EBO", "WP_from_outside"); } //AWD-OEI 10-23-2004 else if((GetGlobalNumber("003EBO_BACKGROUND") == 1) && (!GetGlobalBoolean("201_FIRST_ENTER")))//201 first time {//first time to Telos, go ahead and jump to 201 PlayMovieQueue(); StartNewModule("201TEL", "WP_from_ebonhawk"); } // 262TEL cutscene triggers (JAB-OEI 10/22/04) // ST: Replaced Gender check with check if the Handmaiden is in the party instead. else if( (GetGlobalNumber("000_Jedi_Found") >= 1) && (GetGlobalNumber("000_Jedi_Found") < 4) && (GetGlobalNumber("000_Atriscs1") == 0) && IsAvailableCreature(NPC_HANDMAIDEN)) { PlayMovieQueue(); SetGlobalNumber("000_Atriscs1",2); StartNewModule("262TEL"); } // ST: Replaced Gender check with check if the Handmaiden is in the party instead. else if( (GetGlobalNumber("000_Jedi_Found") >= 2) && (GetGlobalNumber("000_Jedi_Found") < 4) && (GetGlobalNumber("000_Siscut1") == 0) && IsAvailableCreature(NPC_HANDMAIDEN)) { PlayMovieQueue(); SetGlobalNumber("000_Siscut1",2); StartNewModule("262TEL"); } else { SignalEvent(GetArea(GetFirstPC()), EventUserDefined(1)); PlayMovieQueue(); } } void main() { int nSelected = GetSelectedPlanet(); int nPrevPlanet = GetCurrentPlanet(); if(nSelected == -1) return; // queue up leaving movie switch(GetGlobalNumber("003EBO_BACKGROUND")) { case 0://106PER { // I don't think we have a movie to play here }break; case 1://201TEL { QueueMovie("TelMov02"); QueueMovie("HypMov01"); }break; case 2://262TEL { QueueMovie("TelMov14"); QueueMovie("HypMov01"); }break; case 3://301NAR { QueueMovie("NarMov02"); QueueMovie("HypMov01"); }break; case 4://401DXN { QueueMovie("OndMov04"); QueueMovie("HypMov01"); }break; case 5://601DAN { QueueMovie("DanMov02"); QueueMovie("HypMov01"); }break; case 6://701KOR { QueueMovie("KorMov02"); QueueMovie("HypMov01"); }break; case 7://801DRO { QueueMovie("DroMov04"); QueueMovie("HypMov01"); }break; case 8://space { QueueMovie("HypMov01"); }break; case 9://901MAL { }break; case 10://Hyperspace { }break; } int nPlanet = nSelected; // Do other stuff like play movies, do stuff to Ebon Hawk // we need two movies - the planet that we are leaving, and then the dest planet // after we get those two string, we can then play the two movies in sequence // we are setting two variables on the ebon hawk. One is for the background, and the // other is for the exit module. switch(nPlanet) { case PLANET_PERAGUS: { AurPostString("ERROR: We should not be able to travel back to peragus.",0,10,5.0); }break; case 10://citadel station { SetGlobalNumber("003EBO_RETURN_DEST",1); SetGlobalNumber("003EBO_BACKGROUND",1); // need to check where we are landing QueueMovie("TelMov01"); }break; case PLANET_TELOS://polar region { SetGlobalNumber("003EBO_RETURN_DEST",2); SetGlobalNumber("003EBO_BACKGROUND",2); // need to check where we are landing QueueMovie("TelMov15"); }break; case PLANET_NAR_SHADDAA: { SetGlobalNumber("003EBO_RETURN_DEST",3); SetGlobalNumber("003EBO_BACKGROUND",3); if(GetGlobalBoolean("301_FIRST_ENTER"))//only que this movie if we have been here before QueueMovie("NarMov01"); }break; case PLANET_DXUN: { SetGlobalNumber("003EBO_RETURN_DEST",4); SetGlobalNumber("003EBO_BACKGROUND",4); QueueMovie("OndMov03"); }break; case PLANET_ONDERON: { SetGlobalNumber("003EBO_RETURN_DEST",4); SetGlobalNumber("003EBO_BACKGROUND",4); //first time going to onderon? if( (GetGlobalNumber("401DXN_Visited") == 0) && (GetGlobalNumber("401DXN_STARTED") == 0) ) { SetGlobalNumber("401DXN_STARTED", 1); SetGlobalNumber("003EBO_RETURN_DEST",8); SetGlobalNumber("003EBO_BACKGROUND",8);//set space background QueueMovie("OndScn01"); } else AurPostString("ERROR!!! GALAXY MAP!",5,15,10.0); }break; case PLANET_DANTOOINE: { SetGlobalNumber("003EBO_RETURN_DEST",5); SetGlobalNumber("003EBO_BACKGROUND",5); QueueMovie("DanMov01"); }break; case PLANET_KORRIBAN: { SetGlobalNumber("003EBO_RETURN_DEST",6); SetGlobalNumber("003EBO_BACKGROUND",6); QueueMovie("KorMov01"); }break; case PLANET_M4_78: { SetGlobalNumber("003EBO_RETURN_DEST",7); SetGlobalNumber("003EBO_BACKGROUND",7); QueueMovie("DroMov02"); }break; case PLANET_MALACHOR_V: { SetGlobalNumber("003EBO_RETURN_DEST",9); SetGlobalNumber("003EBO_BACKGROUND",9); QueueMovie("MalMov07"); }break; } //fade out SetBackground(); ExecuteScript("a_holoworld", GetFirstPC()); DoPlanetChange(); } //turns off all of the core worlds and live planets. void CUSTOM_TurnOffPlanets() { SetPlanetSelectable(PLANET_TELOS, FALSE); SetPlanetSelectable(PLANET_NAR_SHADDAA, FALSE); SetPlanetSelectable(PLANET_DXUN, FALSE); SetPlanetSelectable(PLANET_ONDERON, FALSE); SetPlanetSelectable(PLANET_DANTOOINE, FALSE); SetPlanetSelectable(PLANET_KORRIBAN, FALSE); SetPlanetSelectable(PLANET_MALACHOR_V, FALSE); if(GetIsLiveContentAvailable(LIVE_CONTENT_PKG1)) { SetPlanetSelectable(PLANET_M4_78, FALSE); } if(GetIsLiveContentAvailable(LIVE_CONTENT_PKG2)) { SetPlanetSelectable(PLANET_LIVE_01, FALSE); } if(GetIsLiveContentAvailable(LIVE_CONTENT_PKG3)) { SetPlanetSelectable(PLANET_LIVE_02, FALSE); } if(GetIsLiveContentAvailable(LIVE_CONTENT_PKG4)) { SetPlanetSelectable(PLANET_LIVE_03, FALSE); } if(GetIsLiveContentAvailable(LIVE_CONTENT_PKG5)) { SetPlanetSelectable(PLANET_LIVE_04, FALSE); } if(GetIsLiveContentAvailable(LIVE_CONTENT_PKG6)) { SetPlanetSelectable(PLANET_LIVE_05, FALSE); } } Link to comment Share on other sites More sharing options...
Ellderon Posted March 11, 2005 Share Posted March 11, 2005 Moving along...one or two scripts like this and the Handmiaden MOD should be complete! Link to comment Share on other sites More sharing options...
stoffe Posted March 12, 2005 Share Posted March 12, 2005 I've finally managed to re-create source code for the k_003ebo_enter script that produce an exact bytecode match with the original. That took some work since it's rather long. The k_003ebo_enter is used for triggering all of the in-game cutscenes in the standard Ebon Hawk area. I've removed the gender check for the Handmaiden cutscene in the script below, it now only checks if she's present in the party. Do anyone know of any other scripts or sequences involving the Handmaiden that might have gender checks in place? I can't think of any more. If not then I guess this is all done. Here's the script. To compile it you'll need the include files k_inc_hawk, k_inc_glob_party, k_oei_hench_inc, k_inc_debug, k_inc_generic, k_inc_utility, k_inc_gensupport, k_inc_walkways and k_inc_drop. Put them in the same folder as the compiler. They can all be found in scripts.bif. The board won't let me post the whole script in one message. I'll post the rest in a separate post, paste the content of that one below the code in this post: // ST: k_003ebo_enter.nss (k_003_ebo_enter.ncs in 003EBO_s.rim) #include "k_inc_hawk" // --------------------------------------------------------------- // ST: Globals used to identify cutscenes: // --------------------------------------------------------------- int CUTSCENE_NONE = 0; int CUTSCENE_CUT_ATTON_T3_PAZAAK_1 = 1; int CUTSCENE_CUT_ATTON_T3_PAZAAK_2 = 2; int CUTSCENE_CUT_ATTON_T3_ARGUE = 3; int CUTSCENE_CUT_ATTON_MAID_FIGHT = 4; int CUTSCENE_CUT_ATTON_KREIA_OFF = 5; int CUTSCENE_CUT_ATTON_KREIA_GIVE = 6; int CUTSCENE_CUT_ATTON_KREIA_TAKE = 7; int CUTSCENE_CUT_ATTON_BAO_PLAYER = 8; int CUTSCENE_CUT_BAO_CONFRONT_KRE = 10; int CUTSCENE_CUT_BAO_REMOTE_1 = 11; int CUTSCENE_CUT_BAO_REMOTE_2 = 12; int CUTSCENE_CUT_BAO_REMOTE_3 = 13; int CUTSCENE_CUT_BAO_T3 = 14; int CUTSCENE_CUT_BAO_HK47_1 = 15; int CUTSCENE_CUT_BAO_HK47_2 = 16; int CUTSCENE_CUT_BAO_G0T0_1 = 17; int CUTSCENE_CUT_BAO_G0T0_2 = 18; int CUTSCENE_CUT_BAO_MALACHOR = 19; int CUTSCENE_CUT_BAO_VS_MAND_1 = 20; int CUTSCENE_CUT_BAO_VS_MAND_2 = 21; int CUTSCENE_CUT_DISC_PLAYER_MED = 30; int CUTSCENE_CUT_ATTON_DISC_1 = 31; int CUTSCENE_CUT_ATTON_DISC_2 = 32; int CUTSCENE_CUT_ATTON_DISC_3 = 33; int CUTSCENE_CUT_DISC_TELOS = 34; int CUTSCENE_CUT_DISC_WORLD_1 = 35; int CUTSCENE_CUT_DISC_WORLD_2 = 36; int CUTSCENE_CUT_DISC_FORCE = 37; int CUTSCENE_DISC_REVAN = 38; int CUTSCENE_CUT_G0T0_HK47_1 = 40; int CUTSCENE_CUT_G0T0_REMOTE_1 = 41; int CUTSCENE_CUT_G0T0_REMOTE_2 = 42; int CUTSCENE_KREIA_ATTACKS_T3 = 50; int CUTSCENE_CUT_KREIA_MAID_1 = 51; int CUTSCENE_CUT_KREIA_MAID_2 = 52; int CUTSCENE_CUT_KREIA_DISC_1 = 53; int CUTSCENE_CUT_KREIA_DISC_2 = 54; int CUTSCENE_CUT_KREIA_DISC_3 = 55; int CUTSCENE_CUT_MIRA_MAID = 60; int CUTSCENE_CUT_T3_VS_HK47 = 71; int CUTSCENE_CUT_T3_DISC_HOLO = 72; int CUTSCENE_CUT_VISAS_VS_MAID = 80; int CUTSCENE_VISAS_ARRIVES = 81; int CUTSCENE_CUT_MSG_FROM_KELBORN = 90; int CUTSCENE_CUT_FIRST_ATTON = 91; int CUTSCENE_CUT_SECOND_ATTON = 92; int CUTSCENE_CUT_BAODUR_LIGHTSABER = 93; // --------------------------------------------------------------- // ST: Function prototypes: // --------------------------------------------------------------- void RunCutscene(int nScene); void DoCutscenes(); void TriggerCutscenes(); void UpdateSomeNumbers(); void DelayedFadeIn(float fDelay, float fWait, float fLength); int PlanetCount(); int GetIsAvailable(int nNPC); int GetInfluenceDiff(int nNPC1, int nNPC2); int CheckNPCLevel(int nNPC); int CheckNPCSkill(int nNPC, int nType); object GetAndMoveNPCToWaypoint(int nNPC, string sTag); object GetAndMovePUPToWaypoint(int nPUP, string sTag); // --------------------------------------------------------------- // ST: Main function // --------------------------------------------------------------- void main() { object oEnter = GetEnteringObject(); if (oEnter == GetFirstPC()) { SetNPCSelectability(NPC_KREIA, TRUE); SetNPCSelectability(NPC_ATTON, TRUE); SetBackground(); SetHologramWorld(); if (GetLoadFromSaveGame()) { DelayCommand(1.0, RebuildPartyTable()); return; } object oDoor = GetObjectByTag("CargoDoor"); AssignCommand(oDoor, ActionOpenDoor(oDoor)); ClearPlayerParty(); ClearEbonHawk(); SetGlobalBoolean("003_cutscene_mode", TRUE); SetGlobalBoolean("003_PARTY_SPAWN", TRUE); SpawnAllAvailablePartyMembers(); UpdateSomeNumbers(); DelayCommand(1.0, DoCutscenes()); } } // --------------------------------------------------------------- // ST: Increase some globals. Don't know why this is a function. // --------------------------------------------------------------- void UpdateSomeNumbers() { if (GetGlobalNumber("003EBO_G0T0_BAO_2") == 1) { SetGlobalNumber("003EBO_G0T0_BAO_2", 2); } if (GetGlobalNumber("003EBO_ATTDISC_COUNT") == 1) { SetGlobalNumber("003EBO_ATTDISC_COUNT", 2); } } // --------------------------------------------------------------- // ST: Trigger Ebon Hawk cutscenes. Wrapper for Dxun arrival. // --------------------------------------------------------------- void DoCutscenes() { object oPC = GetFirstPC(); if (GetGlobalNumber("401DXN_STARTED") == 2) { SetGlobalNumber("401DXN_STARTED", 3); object oAtton = GetObjectByTag("Atton"); object oKreia = GetObjectByTag("Kreia"); object oMira = GetObjectByTag("Mira"); object oExile = GetFirstPC(); AssignCommand(oAtton, ClearAllActions()); AssignCommand(oKreia, ClearAllActions()); AssignCommand(oMira, ClearAllActions()); AssignCommand(oExile, ClearAllActions()); AssignCommand(oKreia, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_kreia_dxn")))); AssignCommand(oExile, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_dxn")))); if (GetIsObjectValid(oMira)) AssignCommand(oMira, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_mira_dxn")))); DelayCommand(0.2, AssignCommand(oAtton, ActionStartConversation(oExile, "attond", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); return; } else if (GetGlobalNumber("401DXN_STARTED") == 4) { SetGlobalNumber("401DXN_STARTED", 5); object oAtton = GetObjectByTag("Atton"); object oKreia = GetObjectByTag("Kreia"); object oMira = GetObjectByTag("Mira"); object oExile = GetFirstPC(); AssignCommand(oAtton, ClearAllActions()); AssignCommand(oKreia, ClearAllActions()); AssignCommand(oMira, ClearAllActions()); AssignCommand(oExile, ClearAllActions()); AssignCommand(oKreia, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_kreia_dxn")))); AssignCommand(oExile, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_dxn")))); if (GetIsObjectValid(oMira)) AssignCommand(oMira, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_mira_dxn")))); DelayCommand(0.2, AssignCommand(oAtton, ActionStartConversation(oExile, "attond", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); return; } else if (GetGlobalBoolean("003_PARTY_SPAWN") && GetGlobalBoolean("003_cutscene_mode")) { AssignCommand(oPC, ClearAllActions()); if (GetGlobalNumber("003_IN_COMBAT") == 0) { AssignCommand(oPC, TriggerCutscenes()); } } else { AurPostString("ON 003 ENTER: SHOULD NOT BE HITTING THIS! REPORT TO ANTHONYD.", 5, 14, 10.0); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, TriggerCutscenes()); } } // --------------------------------------------------------------- // ST: Determine which cutscene to trigger. // --------------------------------------------------------------- void TriggerCutscenes() { SetGlobalFadeOut(); SetFadeUntilScript(); int nScene; if (!GetGlobalBoolean("CUT_FIRST_ATTON") && (GetIsAvailable(NPC_T3_M4) && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_KREIA)) && (GetGlobalNumber("003EBO_Atton_Talk") == 0)) { AurPostString("CS: 003EBO_Atton_Talk == 0", 5, 15, 5.0); SetGlobalBoolean("CUT_FIRST_ATTON", TRUE); nScene = CUTSCENE_CUT_FIRST_ATTON; } else if (GetIsAvailable(NPC_ATTON) && !GetIsAvailable(NPC_VISAS) && GetGlobalBoolean("003EBO_VISAS_ARRIVES") && (GetGlobalNumber("262TEL_Escape_Telos") == 1) && (PlanetCount() >= 2)) { AurPostString("CS: VISAS ARRIVES", 5, 15, 5.0); SetGlobalBoolean("003EBO_VISAS_ARRIVES", FALSE); SetGlobalBoolean("003EBO_CLEANUP_VISAS", TRUE); SetGlobalNumber("003_IN_COMBAT", 1); nScene = CUTSCENE_VISAS_ARRIVES; } else if (!GetGlobalBoolean("CUT_BAODUR_LIGHTSABER") && GetIsAvailable(NPC_BAO_DUR) && (GetGlobalNumber("262TEL_Escape_Telos") == 1)) { AurPostString("CS: BAODUR LIGHTSABER", 5, 15, 5.0); SetGlobalBoolean("CUT_BAODUR_LIGHTSABER", TRUE); nScene = CUTSCENE_CUT_BAODUR_LIGHTSABER; } else if (!GetGlobalBoolean("CUT_SECOND_ATTON") && GetGlobalBoolean("CUT_FIRST_ATTON") && GetIsAvailable(NPC_T3_M4) && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_KREIA) && (GetGlobalNumber("262TEL_CNPC_Freed") == 0) && ((GetGlobalNumber("003EBO_Atton_Talk") == 1) || (GetGlobalNumber("003EBO_Atton_Talk") == 2))) { AurPostString("CS: 262TEL_CNPC_Freed == 0", 5, 15, 5.0); SetGlobalBoolean("CUT_SECOND_ATTON", TRUE); nScene = CUTSCENE_CUT_SECOND_ATTON; } else if (!GetGlobalBoolean("CUT_MSG_FROM_KELBORN") && GetIsAvailable(NPC_T3_M4) && GetGlobalNumber("502OND_End_First") && ((GetGlobalNumber("403DXN_Return_Trigger") == 3) || (GetGlobalNumber("000_Jedi_Found") > GetGlobalNumber("403DXN_Return_Trigger")))) { AurPostString("CS: MESSAGE FROM KELBORN", 5, 15, 5.0); SetGlobalBoolean("CUT_MSG_FROM_KELBORN", TRUE); nScene = CUTSCENE_CUT_MSG_FROM_KELBORN; } else if (!GetGlobalBoolean("CUT_ATTON_T3_PAZAAK_1") && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_T3_M4) && (GetGlobalNumber("003EBO_ATTON_T3_START") == 1) && (GetGlobalNumber("003EBO_T3_Pazaak") == 0)) { AurPostString("CS: ATTON T3 PAZAAK", 5, 15, 5.0); SetGlobalNumber("003EBO_ATTON_T3_START", 2); SetGlobalBoolean("CUT_ATTON_T3_PAZAAK_1", TRUE); nScene = CUTSCENE_CUT_ATTON_T3_PAZAAK_1; } else if (!GetGlobalBoolean("CUT_ATTON_T3_PAZAAK_2") && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_T3_M4) && (GetGlobalNumber("003EBO_T3_Pazaak") == 1)) { AurPostString("CS: ATTON T3 PAZAAK 2", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_T3_PAZAAK_2", TRUE); nScene = CUTSCENE_CUT_ATTON_T3_PAZAAK_2; } else if (!GetGlobalBoolean("CUT_ATTON_T3_ARGUE") && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_T3_M4) && ((GetInfluence(NPC_T3_M4) >= 75) || (GetInfluence(NPC_T3_M4) <= 25))) { AurPostString("CS: ATTON T3 ARGUE", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_T3_ARGUE", TRUE); SetGlobalNumber("003EBO_T3_Atton", 1); nScene = CUTSCENE_CUT_ATTON_T3_ARGUE; } else if (!GetGlobalBoolean("CUT_ATTON_MAID_FIGHT") && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_HANDMAIDEN) && (GetGlobalNumber("003EBO_Handmaid_Fight") == 1) && (GetGlobalNumber("003EBO_Atton_Hand") == 0)) { AurPostString("CS: ATTON HANDMAIDEN FIGHT", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_MAID_FIGHT", TRUE); nScene = CUTSCENE_CUT_ATTON_MAID_FIGHT; } else if (!GetGlobalBoolean("CUT_VISAS_VS_MAID") && GetIsAvailable(NPC_VISAS) && GetIsAvailable(NPC_HANDMAIDEN) && (GetGlobalNumber("003EBO_Visas_Hand") == 0) && (GetInfluenceDiff(NPC_VISAS, NPC_HANDMAIDEN) >= 15) /*&& GetGlobalBoolean("000_PLAYER_GENDER")*/) { AurPostString("CS: VISAS HANDMAIDEN ARGUE", 5, 15, 5.0); SetGlobalBoolean("CUT_VISAS_VS_MAID", TRUE); nScene = CUTSCENE_CUT_VISAS_VS_MAID; } else if (!GetGlobalBoolean("CUT_MIRA_MAID") && GetIsAvailable(NPC_MIRA) && GetIsAvailable(NPC_HANDMAIDEN) && GetIsAvailable(NPC_VISAS) && (GetGlobalNumber("003EBO_Visas_Hand") == 1) && (GetGlobalNumber("003EBO_Mira_Hand") == 0)) { AurPostString("CS: MIRA HANDMAIDEN TALK", 5, 15, 5.0); SetGlobalBoolean("CUT_MIRA_MAID", TRUE); nScene = CUTSCENE_CUT_MIRA_MAID; } else if (!GetGlobalBoolean("CUT_KREIA_MAID_1") && GetIsAvailable(NPC_VISAS) && GetIsAvailable(NPC_HANDMAIDEN) && GetIsAvailable(NPC_KREIA) && (GetGlobalNumber("003EBO_Visas_Hand") == 1) && (GetInfluenceDiff(NPC_VISAS, NPC_HANDMAIDEN) >= 30)) { AurPostString("CS: KREIA HANDMAIDEN DS 1", 5, 15, 5.0); SetGlobalBoolean("CUT_KREIA_MAID_1", TRUE); nScene = CUTSCENE_CUT_KREIA_MAID_1; } else if (!GetGlobalBoolean("CUT_KREIA_MAID_2") && GetIsAvailable(NPC_VISAS) && GetIsAvailable(NPC_HANDMAIDEN) && GetIsAvailable(NPC_KREIA) && (GetGlobalNumber("003EBO_Visas_Hand") == 2) && (GetInfluenceDiff(NPC_VISAS, NPC_HANDMAIDEN) >= 45)) { AurPostString("CS: KREIA HANDMAIDEN DS 2", 5, 15, 5.0); SetGlobalBoolean("CUT_KREIA_MAID_2", TRUE); nScene = CUTSCENE_CUT_KREIA_MAID_2; } else if (!GetGlobalBoolean("CUT_G0T0_HK47_1") && GetIsAvailable(NPC_G0T0) && GetIsAvailable(NPC_HK_47) && (GetGlobalNumber("003EBO_Goto_HK47") == 0)) { AurPostString("CS: GOTO HK 47 1", 5, 15, 5.0); SetGlobalBoolean("CUT_G0T0_HK47_1", TRUE); nScene = CUTSCENE_CUT_G0T0_HK47_1; } else if (!GetGlobalBoolean("CUT_G0T0_REMOTE_1") && GetIsAvailable(NPC_G0T0) && GetIsAvailable(NPC_BAO_DUR) && (GetGlobalNumber("003EBO_G0t0_Remote") == 0)) { AurPostString("CS: GOTO REMOTE 1", 5, 15, 5.0); SetGlobalBoolean("CUT_G0T0_REMOTE_1", TRUE); nScene = CUTSCENE_CUT_G0T0_REMOTE_1; } else if (!GetGlobalBoolean("CUT_G0T0_REMOTE_2") && GetIsAvailable(NPC_G0T0) && GetIsAvailable(NPC_BAO_DUR) && (GetGlobalNumber("003EBO_G0t0_Remote") == 1) && (GetGlobalNumber("000_Jedi_Found") > 2)) { AurPostString("CS: GOTO REMOTE 2", 5, 15, 5.0); SetGlobalBoolean("CUT_G0T0_REMOTE_2", TRUE); nScene = CUTSCENE_CUT_G0T0_REMOTE_2; } else if (!GetGlobalBoolean("CUT_T3_VS_HK47") && GetIsAvailable(NPC_HK_47) && GetIsAvailable(NPC_T3_M4) && (GetGlobalNumber("003EBO_HK47_T3") == 0)) { AurPostString("CS: T3 HK47 CONFRONTATION", 5, 15, 5.0); SetGlobalBoolean("CUT_T3_VS_HK47", TRUE); nScene = CUTSCENE_CUT_T3_VS_HK47; } else if (!GetGlobalBoolean("CUT_DISC_PLAYER_MED") && GetIsAvailable(NPC_MIRA) && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_DISCIPLE) && (GetGlobalNumber("003EBO_Disciple_Med") == 1) && (GetGlobalNumber("003EBO_Meditate_Event") == 0)) { AurPostString("CS: DISCIPLE PLAYER MEDITATE", 5, 15, 5.0); SetGlobalBoolean("CUT_DISC_PLAYER_MED", TRUE); nScene = CUTSCENE_CUT_DISC_PLAYER_MED; } else if (!GetGlobalBoolean("CUT_ATTON_DISC_1") && GetIsAvailable(NPC_DISCIPLE) && GetIsAvailable(NPC_ATTON) && (GetGlobalNumber("003EBO_Disciple_Atton") == 0) && (GetInfluenceDiff(NPC_DISCIPLE, NPC_ATTON) >= 15)) { AurPostString("CS: DISCIPLE ATTON FIGHT 1", 5, 15, 5.0); SetGlobalNumber("003EBO_ATTDISC_COUNT", 1); SetGlobalBoolean("CUT_ATTON_DISC_1", TRUE); nScene = CUTSCENE_CUT_ATTON_DISC_1; } else if (!GetGlobalBoolean("CUT_ATTON_DISC_2") && GetIsAvailable(NPC_DISCIPLE) && GetIsAvailable(NPC_ATTON) && (GetGlobalNumber("003EBO_Disciple_Atton") == 1) && (GetInfluenceDiff(NPC_DISCIPLE, NPC_ATTON) >= 30) && (GetGlobalNumber("003EBO_ATTDISC_COUNT") == 2)) { AurPostString("CS: DISCIPLE ATTON FIGHT 2", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_DISC_2", TRUE); nScene = CUTSCENE_CUT_ATTON_DISC_2; } else if (!GetGlobalBoolean("CUT_ATTON_DISC_3") && GetIsAvailable(NPC_DISCIPLE) && GetIsAvailable(NPC_ATTON) && (GetGlobalNumber("003EBO_T3_Disciple") == 1) && (GetGlobalNumber("003EBO_Disciple_Atton") < 3)) { AurPostString("CS: DISCIPLE ATTON FIGHT 3", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_DISC_3", TRUE); nScene = CUTSCENE_CUT_ATTON_DISC_3; } else if (!GetGlobalBoolean("CUT_T3_DISC_HOLO") && GetIsAvailable(NPC_T3_M4) && GetIsAvailable(NPC_DISCIPLE) && (GetGlobalNumber("000_Jedi_Found") > 2) && (GetGlobalNumber("003EBO_Disciple_Atton") == 2) && (GetGlobalNumber("003EBO_T3_Disciple") == 0)) { AurPostString("CS: T3 DISCIPLE HOLOGRAM", 5, 15, 5.0); SetGlobalBoolean("CUT_T3_DISC_HOLO", TRUE); nScene = CUTSCENE_CUT_T3_DISC_HOLO; } else if (FALSE && !GetGlobalBoolean("CUT_DISC_TELOS")) { AurPostString("CS: DISCIPLE CONTACTS TELOS", 5, 15, 5.0); SetGlobalBoolean("CUT_DISC_TELOS", TRUE); nScene = CUTSCENE_CUT_DISC_TELOS; } else if (!GetGlobalBoolean("CUT_ATTON_KREIA_OFF") && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_KREIA) && (GetGlobalNumber("003EBO_Atton_End") == 1)) { AurPostString("CS: ATTON TELLS KREIA OFF", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_KREIA_OFF", TRUE); nScene = CUTSCENE_CUT_ATTON_KREIA_OFF; } else if (!GetGlobalBoolean("CUT_ATTON_KREIA_GIVE") && GetIsAvailable(NPC_DISCIPLE) && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_KREIA) && (GetInfluenceDiff(NPC_DISCIPLE, NPC_ATTON) >= 50) && (GetGlobalNumber("003EBO_Disciple_Atton") == 3)) { AurPostString("CS: ATTON GIVES UP PLAYER KREIA", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_KREIA_GIVE", TRUE); nScene = CUTSCENE_CUT_ATTON_KREIA_GIVE; } else if (FALSE && !GetGlobalBoolean("CUT_ATTON_KREIA_TAKE")) { AurPostString("CS: ATTON KREIA TAKE OFF", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_KREIA_TAKE", TRUE); nScene = CUTSCENE_CUT_ATTON_KREIA_TAKE; } else if (!GetGlobalBoolean("CUT_BAO_CONFRONT_KRE") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_KREIA) && (GetGoodEvilValue(GetFirstPC()) < 30) && ((GetInfluence(NPC_BAO_DUR) > 80) || (GetInfluence(NPC_BAO_DUR) < 20))) { AurPostString("CS: BAODUR CONFRONTS KREIA", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_CONFRONT_KRE", TRUE); nScene = CUTSCENE_CUT_BAO_CONFRONT_KRE; } else if (!GetGlobalBoolean("CUT_DISC_WORLD_1") && GetIsAvailable(NPC_DISCIPLE) && GetIsAvailable(NPC_KREIA) && (GetGlobalNumber("003EBO_Disciple_Event") == 0) && (PlanetCount() >= 2)) { AurPostString("CS: DISCIPLE STUDIES WORLDS 1", 5, 15, 5.0); SetGlobalBoolean("CUT_DISC_WORLD_1", TRUE); nScene = CUTSCENE_CUT_DISC_WORLD_1; } else if (!GetGlobalBoolean("CUT_DISC_WORLD_2") && GetIsAvailable(NPC_DISCIPLE) && (GetGlobalNumber("003EBO_Disciple_Event") == 1) && (PlanetCount() >= 4)) { AurPostString("CS: DISCIPLE STUDIES WORLDS 2", 5, 15, 5.0); SetGlobalBoolean("CUT_DISC_WORLD_2", TRUE); nScene = CUTSCENE_CUT_DISC_WORLD_2; } else if (!GetGlobalBoolean("CUT_DISC_FORCE") && GetIsAvailable(NPC_DISCIPLE) && (GetGlobalNumber("003EBO_Disciple_Event") == 2) && (GetGlobalNumber("003EBO_Kreia_Disciple") == 3)) { AurPostString("CS: DISCIPLE PLAYER FORCE RESONANCE", 5, 15, 5.0); SetGlobalBoolean("CUT_DISC_FORCE", TRUE); nScene = CUTSCENE_CUT_DISC_FORCE; } else if (!GetGlobalBoolean("CUT_KREIA_DISC_1") && GetIsAvailable(NPC_KREIA) && GetIsAvailable(NPC_DISCIPLE) && (GetGlobalNumber("003EBO_Kreia_Disciple") == 0)) { AurPostString("CS: KREIA VS DISCIPLE 1", 5, 15, 5.0); SetGlobalBoolean("CUT_KREIA_DISC_1", TRUE); nScene = CUTSCENE_CUT_KREIA_DISC_1; } else if (!GetGlobalBoolean("CUT_KREIA_DISC_2") && GetIsAvailable(NPC_KREIA) && GetIsAvailable(NPC_DISCIPLE) && (GetGlobalNumber("003EBO_Kreia_Disciple") == 1)) { AurPostString("CS: KREIA VS DISCIPLE 2", 5, 15, 5.0); SetGlobalBoolean("CUT_KREIA_DISC_2", TRUE); nScene = CUTSCENE_CUT_KREIA_DISC_2; } else if (!GetGlobalBoolean("CUT_KREIA_DISC_3") && GetIsAvailable(NPC_KREIA) && GetIsAvailable(NPC_DISCIPLE) && (GetGlobalNumber("003EBO_Kreia_Disciple") == 2)) { AurPostString("CS: KREIA VS DISCIPLE 3", 5, 15, 5.0); SetGlobalBoolean("CUT_KREIA_DISC_3", TRUE); nScene = CUTSCENE_CUT_KREIA_DISC_3; } else if (!GetGlobalBoolean("CUT_ATTON_BAO_PLAYER") && GetIsAvailable(NPC_ATTON) && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_T3_M4) && (GetGlobalBoolean("000_PLAYER_GENDER") == FALSE) && (GetInfluence(NPC_ATTON) >= 60)) { AurPostString("CS: ATTON PLAYER BAODUR", 5, 15, 5.0); SetGlobalBoolean("CUT_ATTON_BAO_PLAYER", TRUE); nScene = CUTSCENE_CUT_ATTON_BAO_PLAYER; } else if (!GetGlobalBoolean("CUT_BAO_REMOTE_1") && GetIsAvailable(NPC_BAO_DUR) && (GetIsAvailable(NPC_T3_M4) && GetIsAvailable(NPC_G0T0) && GetIsAvailable(NPC_HK_47))) { AurPostString("CS: BAODUR UPGRADE REMOTE 1", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_REMOTE_1", TRUE); nScene = CUTSCENE_CUT_BAO_REMOTE_1; } else if (!GetGlobalBoolean("CUT_BAO_REMOTE_2") && GetGlobalBoolean("CUT_BAO_REMOTE_1") && GetIsAvailable(NPC_BAO_DUR) && (CheckNPCLevel(NPC_BAO_DUR) > 8)) { AurPostString("CS: BAODUR UPGRADE REMOTE 2", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_REMOTE_2", TRUE); nScene = CUTSCENE_CUT_BAO_REMOTE_2; } else if (!GetGlobalBoolean("CUT_BAO_REMOTE_3") && GetGlobalBoolean("CUT_BAO_REMOTE_2") && GetIsAvailable(NPC_BAO_DUR) && (CheckNPCLevel(NPC_BAO_DUR) > 10)) { AurPostString("CS: BAODUR UPGRADE REMOTE 3", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_REMOTE_3", TRUE); nScene = CUTSCENE_CUT_BAO_REMOTE_3; } else if (!GetGlobalBoolean("CUT_BAO_T3") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_T3_M4) && (GetGlobalNumber("262TEL_Escape_Telos") == 1)) { AurPostString("CS: BAODUR UPGRADE T3", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_T3", TRUE); nScene = CUTSCENE_CUT_BAO_T3; } else if (!GetGlobalBoolean("CUT_BAO_HK47_1") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_HK_47) && (GetGlobalNumber("000_HK47_Joined") == 1)) { AurPostString("CS: BAODUR UPGRADE HK47 1", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_HK47_1", TRUE); SetGlobalNumber("000_BAODUR_CS_LEVEL", CheckNPCLevel(NPC_BAO_DUR)); nScene = CUTSCENE_CUT_BAO_HK47_1; } else if (!GetGlobalBoolean("CUT_BAO_HK47_2") && GetGlobalBoolean("CUT_BAO_HK47_1") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_HK_47) && (CheckNPCLevel(NPC_BAO_DUR) > GetGlobalNumber("000_BAODUR_CS_LEVEL")) && (CheckNPCSkill(NPC_BAO_DUR, SKILL_REPAIR) > 15)) { AurPostString("CS: BAODUR UPGRADE HK47 2", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_HK47_2", TRUE); nScene = CUTSCENE_CUT_BAO_HK47_2; } else if (!GetGlobalBoolean("CUT_BAO_G0T0_1") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_G0T0)) { AurPostString("CS: BAODUR UPGRATE GOTO 1", 5, 15, 5.0); SetGlobalNumber("003EBO_G0T0_BAO_2", 1); SetGlobalBoolean("CUT_BAO_G0T0_1", TRUE); nScene = CUTSCENE_CUT_BAO_G0T0_1; } else if (!GetGlobalBoolean("CUT_BAO_G0T0_2") && GetGlobalBoolean("CUT_BAO_G0T0_1") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_G0T0) && (GetGlobalNumber("003EBO_G0T0_BAO_2") == 2)) { AurPostString("CS: BAODUR UPGRADE GOTO 2", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_G0T0_2", TRUE); nScene = CUTSCENE_CUT_BAO_G0T0_2; } else if (!GetGlobalBoolean("CUT_BAO_MALACHOR") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_CANDEROUS) && (GetInfluence(NPC_BAO_DUR) > 85)) { AurPostString("CS: BAODUR MALACHOR TALK influence = " + IntToString(GetInfluence(NPC_BAO_DUR)), 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_MALACHOR", TRUE); nScene = CUTSCENE_CUT_BAO_MALACHOR; } else if (!GetGlobalBoolean("CUT_BAO_VS_MAND_1") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_CANDEROUS)) { AurPostString("CS: BAODUR VS MANDALORE 1", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_VS_MAND_1", TRUE); nScene = CUTSCENE_CUT_BAO_VS_MAND_1; } else if (!GetGlobalBoolean("CUT_BAO_VS_MAND_2") && GetGlobalBoolean("CUT_BAO_VS_MAND_1") && GetIsAvailable(NPC_BAO_DUR) && GetIsAvailable(NPC_CANDEROUS) && (GetInfluence(NPC_BAO_DUR) > 85) && (GetInfluence(NPC_CANDEROUS) > 75)) { AurPostString("CS: BAODUR VS MANDALORE 2", 5, 15, 5.0); SetGlobalBoolean("CUT_BAO_VS_MAND_2", TRUE); nScene = CUTSCENE_CUT_BAO_VS_MAND_2; } else { AurPostString("CS: NO PENDING CUTSCENE", 5, 15, 5.0); nScene = CUTSCENE_NONE; } RunCutscene(nScene); } ...continues in next post... Link to comment Share on other sites More sharing options...
stoffe Posted March 12, 2005 Share Posted March 12, 2005 Here's the rest of the script from the previous post. Paste in below that code. The board will probably line/wordwrap the code a bit oddly too, might need to be fixed before compiling. // --------------------------------------------------------------- // ST: Setup and run the specified cutscene. // --------------------------------------------------------------- void RunCutscene(int nScene) { object oPC = GetFirstPC(); if (CUTSCENE_NONE == nScene) { AurPostString("CS: SPAWNING PARTY NO_PENDING_CUTSCENE", 5, 17, 5.0); SetGlobalBoolean("003_cutscene_mode", FALSE); ResetEbonHawk(); DelayedFadeIn(0.0, 1.0, 1.0); } else if (nScene == CUTSCENE_CUT_BAODUR_LIGHTSABER) { AurPostString("CS: BAODUR LIGHTSABER", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_4"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToObject(GetObjectByTag("WP_player_cut_7"))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "baosaber", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_FIRST_ATTON) { AurPostString("CS: FIRST ATTON EBO CUT SCENE", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_gspawn_atton"); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_7"); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_6"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_6")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oAtton, ActionStartConversation(oPC, "003Atton", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_SECOND_ATTON) { AurPostString("CS: SECOND ATTON EBO CUT SCENE", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_7"); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_7"); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_6"); SetGlobalNumber("003EBO_BACKGROUND", 10); SetBackground(); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_6")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oAtton, ActionStartConversation(oPC, "003Atton", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_VISAS_ARRIVES) { AurPostString("CS: PLAYING SCENE VISAS_ARRIVES", 5, 17, 5.0); int i = 0; object oNPC; for(i = 0; i < 12; ++i) { oNPC = GetObjectByTag(GetNPCTag(i)); SetMinOneHP(oNPC, TRUE); } SetGlobalBoolean("VISAS_ARRIVES_CONV", TRUE); object oVisas = CreateObject(OBJECT_TYPE_CREATURE, "visascut", GetLocation(GetObjectByTag("wp_visas_sp"))); AssignCommand(oVisas, ClearAllActions()); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oVisas, ActionStartConversation(oPC, "", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_MSG_FROM_KELBORN) { AurPostString("CS: PLAYING SCENE MESSAGE_FROM_KELBORN", 5, 17, 5.0); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_6"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToObject(GetObjectByTag("WP_player_cut_4"))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oT3M4, ActionStartConversation(oPC, "t3kelbrn", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if ((nScene == CUTSCENE_CUT_ATTON_T3_PAZAAK_1) || (nScene == CUTSCENE_CUT_ATTON_T3_PAZAAK_2) || (nScene == CUTSCENE_CUT_ATTON_T3_ARGUE)) { AurPostString("CS: PLAYING SCENE ATTON_T3_PAZAAK_1 or 2 or ARGUE", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_1"); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_2"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_1")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oT3M4, ActionStartConversation(oPC, "Attt3", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_ATTON_MAID_FIGHT) { AurPostString("CS: PLAYING SCENE ATTON_HANDMAIDEN_FIGHT", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_2"); object oMaiden = GetAndMoveNPCToWaypoint(NPC_HANDMAIDEN, "WP_maid_cut_1"); object oInvis = GetObjectByTag("MaidInvis"); AssignCommand(oInvis, ClearAllActions()); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oInvis, ActionStartConversation(oPC, "atthand", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if ((nScene == CUTSCENE_CUT_ATTON_KREIA_OFF) || (nScene == CUTSCENE_CUT_ATTON_KREIA_GIVE) || (nScene == CUTSCENE_CUT_ATTON_KREIA_TAKE)) { AurPostString("CS: PLAYING SCENE ATTON_TELLS/GIVESUP/TAKEOFF", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_5"); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_3"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oAtton, ActionStartConversation(oPC, "Attkreia", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_ATTON_BAO_PLAYER) { AurPostString("CS: PLAYING SCENE ATTON_BAODUR_PLAYER", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_6"); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_2"); object oRemote = GetAndMovePUPToWaypoint(PUP_SENSORBALL, "WP_remote_cut_3"); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_5"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oAtton, ActionStartConversation(oPC, "baoatt_p", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_CONFRONT_KRE) { AurPostString("CS: PLAYING SCENE BAODUR_CONFRONT_KREIA", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_1"); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_3"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "baokreia", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_REMOTE_1) { object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oRemote = GetAndMovePUPToWaypoint(PUP_SENSORBALL, "WP_remote_cut_3"); object oDroid; if (GetIsAvailable(NPC_G0T0)) oDroid = GetAndMoveNPCToWaypoint(NPC_G0T0, "WP_extra_1"); else if (GetIsAvailable(NPC_HK_47)) oDroid = GetAndMoveNPCToWaypoint(NPC_HK_47, "WP_extra_1"); else if (GetIsAvailable(NPC_T3_M4)) oDroid = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_extra_1"); AssignCommand(oPC, ClearAllActions()); object oWP = GetObjectByTag("WP_player_extra"); if (GetIsObjectValid(oWP)) { location lLoc = GetLocation(oWP); AssignCommand(oPC, ActionJumpToLocation(lLoc)); } DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "baorem1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_REMOTE_2) { AurPostString("CS: PLAYING SCENE BAODUR_UPGRADE_REMOTE_2", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oRemote = GetAndMovePUPToWaypoint(PUP_SENSORBALL, "WP_remote_cut_3"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "baorem2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_REMOTE_3) { AurPostString("CS: PLAYING SCENE BAODUR_UPGRADE_REMOTE_3", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oRemote = GetAndMovePUPToWaypoint(PUP_SENSORBALL, "WP_remote_cut_3"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "baorem3", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_T3) { AurPostString("CS: PLAYING SCENE BAODUR_UPGRADE_T3", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_patient_cut"); AssignCommand(oPC, ClearAllActions()); object oWP = GetObjectByTag("WP_player_extra"); if (GetIsObjectValid(oWP)) { location lLoc = GetLocation(oWP); AssignCommand(oPC, ActionJumpToLocation(lLoc)); } DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "bao_t3", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_HK47_1) { AurPostString("CS: PLAYING SCENE BAODUR_UPGRADE_HK47_1", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oHK47 = GetAndMoveNPCToWaypoint(NPC_HK_47, "WP_patient_cut"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "baohk_1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_HK47_2) { AurPostString("CS: PLAYING SCENE BAODUR_UPGRADE_HK47_2", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oHK47 = GetAndMoveNPCToWaypoint(NPC_HK_47, "WP_patient_cut"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "baohk_2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_G0T0_1) { AurPostString("CS: PLAYING SCENE BAODUR_UPGRADE_G0T0_1", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oGoto = GetAndMoveNPCToWaypoint(NPC_G0T0, "WP_patient_cut"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "bao_g0_1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_G0T0_2) { AurPostString("CS: PLAYING SCENE BAODUR_UPGRADE_G0T0_2", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_3"); object oGoto = GetAndMoveNPCToWaypoint(NPC_G0T0, "WP_patient_cut"); object oRemote = GetAndMovePUPToWaypoint(PUP_SENSORBALL, "WP_remote_cut_4"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "bao_g0_2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_MALACHOR) { AurPostString("CS: PLAYING SCENE BAODUR_MALACHOR_TALK", 5, 17, 5.0); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_baodur_cut_4"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_7")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oBao, ActionStartConversation(oPC, "bao_malv", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_VS_MAND_1) { AurPostString("CS: PLAYING SCENE BAODUR_VS_MAND_1", 5, 17, 5.0); object oCand = GetAndMoveNPCToWaypoint(NPC_CANDEROUS, "WP_disc_cut_1"); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_disc_cut_1"); DelayedFadeIn(0.0, 1.0, 1.0); AssignCommand(oPC, ClearAllActions()); DelayCommand(1.0, AssignCommand(oCand, ActionStartConversation(oPC, "mand1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_BAO_VS_MAND_2) { AurPostString("CS: PLAYING SCENE BAODUR_VS_MAND_2", 5, 17, 5.0); object oCand = GetAndMoveNPCToWaypoint(NPC_CANDEROUS, "WP_disc_cut_1"); object oBao = GetAndMoveNPCToWaypoint(NPC_BAO_DUR, "WP_disc_cut_1"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oCand, ActionStartConversation(oPC, "mand2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_DISC_PLAYER_MED) { AurPostString("CS: PLAYING SCENE DISC_PLAYER_MEDITATE", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_3"); object oMira = GetAndMoveNPCToWaypoint(NPC_MIRA, "WP_mira_cut_2"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_1"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_2")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oAtton, ActionStartConversation(oPC, "Disc4", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if ((nScene == CUTSCENE_CUT_ATTON_DISC_1) || (nScene == CUTSCENE_CUT_ATTON_DISC_2)) { AurPostString("CS: PLAYING SCENE DISC_ATTON_FIGHT_1OR2", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_4"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_2"); SetLockOrientationInDialog(oAtton, TRUE); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oAtton, ActionStartConversation(oPC, "003Disci", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_ATTON_DISC_3) { AurPostString("CS: PLAYING SCENE DISC_ATTON_FIGHT_3", 5, 17, 5.0); object oAtton = GetAndMoveNPCToWaypoint(NPC_ATTON, "WP_atton_cut_2"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_4"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oAtton, ActionStartConversation(oPC, "003Disci", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_DISC_TELOS) { AurPostString("CS: DISC_CONTACTS_TELOS doesn't exist", 5, 17, 5.0); } else if (nScene == CUTSCENE_CUT_DISC_WORLD_1) { AurPostString("CS: PLAYING SCENE DISC_STUDY_WORLD_1", 5, 17, 5.0); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_3"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_5"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_3")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oDisc, ActionStartConversation(oPC, "Disc1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_DISC_WORLD_2) { AurPostString("CS: PLAYING SCENE DISC_STUDY_WORLD_2", 5, 17, 5.0); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_5"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_5")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oDisc, ActionStartConversation(oPC, "Disc2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_DISC_FORCE) { AurPostString("CS: PLAYING SCENE DISC_RESONANCE_FORCE", 5, 17, 5.0); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_5"); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetObjectByTag("WP_player_cut_5")))); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oDisc, ActionStartConversation(oPC, "Disc3", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_DISC_REVAN) { AurPostString("CS: DISC_REVAN doesn't exist", 5, 17, 5.0); } else if (nScene == CUTSCENE_CUT_G0T0_HK47_1) { AurPostString("CS: PLAYING SCENE G0T0_HK47_1", 5, 17, 5.0); object oGoto = GetAndMoveNPCToWaypoint(NPC_G0T0, "WP_g0t0_cut_1"); object oHK47 = GetAndMoveNPCToWaypoint(NPC_HK_47, "WP_hk47_cut_1"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oGoto, ActionStartConversation(oPC, "g0t0hk47", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_G0T0_REMOTE_1) { AurPostString("CS: PLAYING SCENE G0T0_REMOTE_1", 5, 17, 5.0); object oGoto = GetAndMoveNPCToWaypoint(NPC_G0T0, "WP_g0t0_cut_2"); object oRemote = GetAndMovePUPToWaypoint(PUP_SENSORBALL, "WP_remote_cut_1"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oGoto, ActionStartConversation(oPC, "G0T0rem1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_G0T0_REMOTE_2) { AurPostString("CS: PLAYING SCENE G0T0_REMOTE_2", 5, 17, 5.0); object oGoto = GetAndMoveNPCToWaypoint(NPC_G0T0, "WP_g0t0_cut_3"); object oRemote = GetAndMovePUPToWaypoint(PUP_SENSORBALL, "WP_remote_cut_2"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oGoto, ActionStartConversation(oPC, "G0T0rem1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_KREIA_ATTACKS_T3) { AurPostString("CS: PLAYING SCENE KREIA_ATTACKS_T3", 5, 17, 5.0); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_1"); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_1"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oKreia, ActionStartConversation(oPC, "kreia", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_KREIA_MAID_1) { AurPostString("CS: PLAYING SCENE KREIA_HANDMAIDEN_DS_1", 5, 17, 5.0); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_2"); object oMaiden = GetAndMoveNPCToWaypoint(NPC_HANDMAIDEN, "WP_maid_cut_4"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oKreia, ActionStartConversation(oPC, "krehand", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_KREIA_MAID_2) { AurPostString("CS: PLAYING SCENE KREIA_HANDMAIDEN_DS_2", 5, 17, 5.0); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_3"); object oMaiden = GetAndMoveNPCToWaypoint(NPC_HANDMAIDEN, "WP_maid_cut_5"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oKreia, ActionStartConversation(oPC, "krehand2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_KREIA_DISC_1) { AurPostString("CS: PLAYING SCENE KREIA_VS_DISC_1", 5, 17, 5.0); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_4"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_6"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oKreia, ActionStartConversation(oPC, "kredisc1", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_KREIA_DISC_2) { AurPostString("CS: PLAYING SCENE KREIA_VS_DISC_2", 5, 17, 5.0); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_3"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_7"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oKreia, ActionStartConversation(oPC, "kredisc2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_KREIA_DISC_3) { AurPostString("CS: PLAYING SCENE KREIA_VS_DISC_3", 5, 17, 5.0); object oKreia = GetAndMoveNPCToWaypoint(NPC_KREIA, "WP_kreia_cut_5"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_5"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oKreia, ActionStartConversation(oPC, "kredisc3", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_MIRA_MAID) { AurPostString("CS: PLAYING SCENE MIRA_HANDMAIDEN_TALK", 5, 17, 5.0); object oMira = GetAndMoveNPCToWaypoint(NPC_MIRA, "WP_mira_cut_1"); object oMaiden = GetAndMoveNPCToWaypoint(NPC_HANDMAIDEN, "WP_maid_cut_3"); object oVisas = GetAndMoveNPCToWaypoint(NPC_VISAS, "WP_visas_cut_1"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oMira, ClearAllActions())); DelayCommand(1.0, AssignCommand(oMira, ActionStartConversation(oPC, "mirvisha", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_T3_VS_HK47) { AurPostString("CS: PLAYING SCENE T3_HK47_CONFRONT", 5, 17, 5.0); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_3"); object oHK47 = GetAndMoveNPCToWaypoint(NPC_HK_47, "WP_hk47_cut_2"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oT3M4, ActionStartConversation(oPC, "hk47t3m4", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_T3_DISC_HOLO) { AurPostString("CS: PLAYING SCENE T3_DISC_HOLO", 5, 17, 5.0); object oT3M4 = GetAndMoveNPCToWaypoint(NPC_T3_M4, "WP_t3m4_cut_4"); object oDisc = GetAndMoveNPCToWaypoint(NPC_DISCIPLE, "WP_disc_cut_3"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oDisc, ActionStartConversation(oPC, "t3disc", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else if (nScene == CUTSCENE_CUT_VISAS_VS_MAID) { AurPostString("CS: PLAYING SCENE VISAS_HANDMAIDEN_ARGUE", 5, 17, 5.0); object oMaiden = GetAndMoveNPCToWaypoint(NPC_HANDMAIDEN, "WP_maid_cut_2"); object oVisas = GetAndMoveNPCToWaypoint(NPC_VISAS, "WP_visas_cut_1"); DelayedFadeIn(0.0, 1.0, 1.0); DelayCommand(1.0, AssignCommand(oMaiden, ActionStartConversation(oPC, "vishand", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE))); } else { AurPostString("CUTSCENE: SHOULD NOT BE HITTING THIS! REPORT TO ANTHONYD.", 5, 17, 10.0); SetGlobalBoolean("003_cutscene_mode", FALSE); ResetEbonHawk(); AssignCommand(oPC, ClearAllActions()); DelayedFadeIn(0.0, 1.0, 1.0); } } // --------------------------------------------------------------- // ST: Utility - Identical to one found in k_align_movie. // Returns the number of visited planets. // --------------------------------------------------------------- int PlanetCount() { int i = 0; if( GetGlobalBoolean("201_First_Enter") ) i++; if( GetGlobalBoolean("301_First_Enter") ) i++; if( GetGlobalBoolean("401_First_Enter") ) i++; if( GetGlobalBoolean("501_First_Enter") ) i++; if( GetGlobalBoolean("601_First_Enter") ) i++; if( GetGlobalBoolean("701_First_Enter") ) i++; return i; } // --------------------------------------------------------------- // ST: Utility - Check if a NPC has joined the party. // --------------------------------------------------------------- int GetIsAvailable(int nNPC) { int bTest = GetNPCSelectability(nNPC); if ((bTest == TRUE) || (bTest == 0)) return TRUE; else return FALSE; } // --------------------------------------------------------------- // ST: Utility - returns difference between two party members // influence with the player. // --------------------------------------------------------------- int GetInfluenceDiff(int nNPC1, int nNPC2) { int nInf1 = GetInfluence(nNPC1); int nInf2 = GetInfluence(nNPC2); return (nInf1 - nInf2); } // --------------------------------------------------------------- // ST: Utility - return character level of specified party member. // --------------------------------------------------------------- int CheckNPCLevel(int nNPC) { object oNPC = GetObjectByTag(GetNPCTag(nNPC)); if (GetIsObjectValid(oNPC)) { int nLevel = GetHitDice(oNPC); return nLevel; } return 0; } // --------------------------------------------------------------- // ST: Utility Returns the points in a skill a party member has. // --------------------------------------------------------------- int CheckNPCSkill(int nNPC, int nType) { object oNPC = GetObjectByTag(GetNPCTag(nNPC)); int nSkill = 0; if (GetIsObjectValid(oNPC)) { nSkill = GetSkillRank(nType, oNPC); } return nSkill; } // --------------------------------------------------------------- // ST: Utility - a completely unnessecary wrapper. Fade from black. // --------------------------------------------------------------- void DelayedFadeIn(float fDelay, float fWait, float fLength) { DelayCommand(fDelay, SetGlobalFadeIn(fWait, fLength)); } // --------------------------------------------------------------- // ST: Utility - move party member to specified waypoint and return // object reference to the party member if successful. // --------------------------------------------------------------- object GetAndMoveNPCToWaypoint(int nNPC, string sTag) { object oNPC = GetObjectByTag(GetNPCTag(nNPC)); object oWP = GetObjectByTag(sTag); if (GetIsObjectValid(oWP)) { AssignCommand(oNPC, ClearAllActions()); AssignCommand(oNPC, ActionJumpToLocation(GetLocation(oWP))); return oNPC; } else { AurPostString("INVALID WAYPOINT FOR CUTSCENE", 15, 20, 10.0); return OBJECT_INVALID; } } // --------------------------------------------------------------- // ST: Utility - move Puppet to specified waypoint and return an // object reference to the puppet if successful. // --------------------------------------------------------------- object GetAndMovePUPToWaypoint(int nPUP, string sTag) { object oPUP = GetObjectByTag(GetPuppetTag(nPUP)); object oWP = GetObjectByTag(sTag); if (GetIsObjectValid(oWP)) { AssignCommand(oPUP, ClearAllActions()); AssignCommand(oPUP, ActionJumpToLocation(GetLocation(oWP))); return oPUP; } else { AurPostString("INVALID WAYPOINT FOR CUTSCENE", 15, 20, 10.0); return OBJECT_INVALID; } } Link to comment Share on other sites More sharing options...
Daiko701 Posted March 12, 2005 Share Posted March 12, 2005 If anyone makes this I would like to apply as a mod tester, I have already completed the game and would like to try out the handmaiden with a fem PC. PM if this is possible. Link to comment Share on other sites More sharing options...
Jennaida Posted March 12, 2005 Share Posted March 12, 2005 That's a whole lotta script. Anyone good with script making a premade mod, so that the rest of us who just install premades, can enjoy this? Link to comment Share on other sites More sharing options...
Daiko701 Posted March 12, 2005 Share Posted March 12, 2005 Originally posted by Jennaida That's a whole lotta script. Anyone good with script making a premade mod, so that the rest of us who just install premades, can enjoy this? hehe Hence my request Link to comment Share on other sites More sharing options...
Keneth Posted March 12, 2005 Share Posted March 12, 2005 ammazing work mate. so uh... this kinda sorta finializes most of the work, appart from minor corrections (which can be done later) it's done I think, I'll try finishing the game today to see how everything works out then I can upload the mod somewhere and give stoffe all the credits seeing as he did all the work. Unless you want to continue the work yourself stoffe? Link to comment Share on other sites More sharing options...
Tupac Amaru Posted March 12, 2005 Share Posted March 12, 2005 Do anyone know of any other scripts or sequences involving the Handmaiden that might have gender checks in place? I can't think of any more. If not then I guess this is all done. I think there is a scene with the Handmaiden in the Jedi enclave that has a gender check. The scripts are 'a_handspawn' and 'a_hand_move' in 650DAN. Link to comment Share on other sites More sharing options...
Ellderon Posted March 12, 2005 Share Posted March 12, 2005 Woohooo! Excellent progress being made... now if someone would gather all those compiled fiels and put them into 1 zip and availabel for download! Link to comment Share on other sites More sharing options...
Xcom Posted March 12, 2005 Share Posted March 12, 2005 Originally posted by stoffe -mkb- I've finally managed to re-create source code for the k_003ebo_enter script that produce an exact bytecode match with the original. That took some work since it's rather long. This is amaz0ring work, stoffe. This script will be usefull for other applications as well. I have a suggestion though (Keneth & stoffe) Since you are aldready busy with this, maybe it's not such a bad idea to include free Mira+Hanharr selection as well which is limited by alignment. You can then make Total Free Character mod or something. Link to comment Share on other sites More sharing options...
Keneth Posted March 12, 2005 Share Posted March 12, 2005 Actually stoffe is the one busy, all I've made so far is a three-liner script and a few minor corrections, so it's totaly up to him since I can't turn byte code into script anyway. Ellderon, I'll put them up once I've tested it fully, shouldn't take too long. Link to comment Share on other sites More sharing options...
BobRichter Posted March 12, 2005 Share Posted March 12, 2005 I'd also like to see this mod in completed form, all packaged up and ready for delivery, as I only play female characters, and I've become curious about Handmaiden. I think it was a poor decision to limit the characters you could have in your party by your character's gender. (I actually like the LS/DS restrictions for Hanharr and Mira though.) Link to comment Share on other sites More sharing options...
stoffe Posted March 12, 2005 Share Posted March 12, 2005 Unless I've missed something important, this seems to work fairly well now as far as I have tested. Still have to make a full playthrough to check that it doesn't cause any new problems elsewhere though. EDIT: I should perhaps also mention that I've only tested this as a lightsider, I have no idea if your interactions with the Handmaiden differs if you are evil. Link to comment Share on other sites More sharing options...
stoffe Posted March 12, 2005 Share Posted March 12, 2005 Originally posted by Xcom This is amaz0ring work, stoffe. This script will be usefull for other applications as well. I have a suggestion though (Keneth & stoffe) Since you are aldready busy with this, maybe it's not such a bad idea to include free Mira+Hanharr selection as well which is limited by alignment. You can then make Total Free Character mod or something. Sure, use it for whatever you like, I could hardly claim any rights to a script that's already in the game at any rate. About Mira & Hanharr... would there really be any point to such a mod since you can already choose in-game who you wish to bring along? With Disciple/Handmaiden you have no such choice, but it's so easy changing your force side alignment when playing to get the one you want of Mira/Hanharr. And Hanharr seems fairly psychotic so I doubt he'd make a good companion for a lightsider anyway Link to comment Share on other sites More sharing options...
stoffe Posted March 12, 2005 Share Posted March 12, 2005 Originally posted by Tupac Amaru I think there is a scene with the Handmaiden in the Jedi enclave that has a gender check. The scripts are 'a_handspawn' and 'a_hand_move' in 650DAN. As far as I can see those control who briefly comes running towards Kreia when she exits the council room in the Enclave. Nothing critical as it doesn't set any variables and the sequence only lasts for a second, but I'll look into removing the checks there too. Link to comment Share on other sites More sharing options...
Tupac Amaru Posted March 12, 2005 Share Posted March 12, 2005 Originally posted by Xcom Since you are aldready busy with this, maybe it's not such a bad idea to include free Mira+Hanharr selection as well which is limited by alignment. You can then make Total Free Character mod or something. That annoyed me, too. As I don't like Wookies that was the first thing I wanted to change. Fortunately, it is much easier than Handmaiden. It can be done by editing 305han2.dlg in 305NAR. In the Entrylist, node 26, delete the script calls 'c_global_eq' in the active fields of its two replies. That way, you will get to choose which npc you want to take independant of your alignment. After that ,the variable '303NAR_HANHARR_SIDE' needs to have the correct value, 0 for Mira and 1 for Hanharr. I solved this by having Reply #24 run the script 'a_global_set("303NAR_HANHARR_SIDE", 0)'. For Hanharr, I let Reply #27 set the variable to 1 instead. Link to comment Share on other sites More sharing options...
Xcom Posted March 12, 2005 Share Posted March 12, 2005 Originally posted by stoffe -mkb- About Mira & Hanharr... would there really be any point to such a mod since you can already choose in-game who you wish to bring along? With Disciple/Handmaiden you have no such choice, but it's so easy changing your force side alignment when playing to get the one you want of Mira/Hanharr. I humbly disagree. Hypothetically, the same can be said about Handmaiden situation as well: just play as male and there is no need for a mod. As for changing alignment, it is not as easy as one might think. For instance, I tend to play LS for the most time, so when at nar-shadaa I am close to light mastery most of the times (if not already). I thought of playing DS for a change, but do not want the furball. Making alignment change mod alone is not what I have in mind. I would think more of a dialog that prompts you in a cryptic way at certain point of whose side you'd like to choose. I was trying to pinpoint where exatly this decision happens. I ended up in 303Nar (Docks). I think it happens when you go to see this Exchange alien and you get intercepted by either Mira or Hanharr. It looks like there is a trigger there that fires a scripts that checks for GoodEvilValue. Not sure though. And Hanharr seems fairly psychotic so I doubt he'd make a good companion for a lightsider anyway Ok, see it as Mira4all mod. edit: @Tupac, thanks for that info. Do you by any chance know what dialog/script actually sets this 303NAR_HANHARR_SIDE variable? Link to comment Share on other sites More sharing options...
Keneth Posted March 12, 2005 Share Posted March 12, 2005 For me when I feel like playing darkside I tend to play neutral to somewhat light untill nar shadaa, do as little quests as possible there until I get to the point where the variable is set then continue playing darkside from there on. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.