Note: LucasForums Archive Project
The content here was reconstructed by scraping the Wayback Machine in an effort to restore some of what was lost when LF went down. The LucasForums Archive Project claims no ownership over the content or assets that were archived on archive.org.

This project is meant for research purposes only.

Endar Spire without Tutorials

Page: 1 of 1
 Elite Duck
07-23-2011, 8:34 AM
#1
(Advertisement in 3...2...1...)
Hello Friends,

Do you get tired of the same old "Press Enter to open door" rambling of Trask? In this highly anticipated mod (of the last 12 seconds) you will finally be able to play through the Endar Spire without Tutorials!

Here's an example of the action:

BEFORE:
Trask: "This door is locked down but I have the code to open it. Press TAB to switch me to the party leader, then press the USE key on the door"

AFTER:
Trask: "This door is locked down but I have the code to open it"

Coming soon to:
KotORFiles
Taris Upper City Emporium
MEGAUPLOAD

Only $0.00!
(Annoying background music fades out.....)
 Karstedt
07-23-2011, 6:13 PM
#2
Good idea. Can you get rid of the melee weapons check when opening the cockpit door too? That is, where it makes you equip a melee weapon before continuing. I was actually going to do that little tweak myself, but it would fit perfectly with what you are doing.

EDIT: I went ahead and picked the script, just to avoid being a non-contributing demander. The script is k_pend_door06. And you should be able to simply comment out or remove the elseif block regarding the weapon check as I have done here in the bolded section.


#include "k_inc_end"
void main()
{
// SetLocked(OBJECT_SELF,FALSE);
AurPostString("Trask: " + IntToString(GetTraskState()),5,7,5.0);
if(GetTraskState() < TRASK_COMBAT_WARNING)
{
SetTraskState(TRASK_COMBAT_WARNING);
TalkTrask();
}
// Commented out to remove weapons check
//else if(GetTraskState() == TRASK_COMBAT_WARNING &&
// GN_GetWeaponType(GetFirstPC()) == 2)
//{
// SetTraskState(TRASK_COMBAT_WARNING2);
// TalkTrask();
//}
else
{
SetLocked(OBJECT_SELF,FALSE);
ActionOpenDoor(OBJECT_SELF);
}
DestroyObject(GetCarth());
}


EDIT: Simply changing the script didn't seem to do anything for me. So there may be more to it than I know about. It looks like k_pend_door20 is the actual script, but there is no source to modify. I don't know how well decompiling actually works with these scripts. But if it works, it should be easy to remove the check.
 Karstedt
07-24-2011, 12:15 AM
#3
Well, this decompiled edited k_pend_door20 seems to work. I completely removed "sub6" (the weapon check routine) since commenting out the necessary sections was impractical. Instead, it just lets Trask warn you about the bridge and equipping melee weapons, then you can can move on without any additional interruption regardless of weapons.


// Globals
int intGLOB_1 = 0;
int intGLOB_2 = 1;
int intGLOB_3 = 2;
int intGLOB_4 = 3;
int intGLOB_5 = 4;
int intGLOB_6 = 5;
int intGLOB_7 = 6;
int intGLOB_8 = 7;
int intGLOB_9 = 8;
int intGLOB_10 = 9;
int intGLOB_11 = 10;
int intGLOB_12 = 11;
int intGLOB_13 = 12;
int intGLOB_14 = 13;
int intGLOB_15 = 14;
int intGLOB_16 = 15;
int intGLOB_17 = 16;
int intGLOB_18 = 17;
int intGLOB_19 = 18;
int intGLOB_20 = 19;
int intGLOB_21 = 1100;
int intGLOB_22 = (-6);
int intGLOB_23 = (-5);
int intGLOB_24 = (-4);
int intGLOB_25 = (-2);
int intGLOB_26 = (-1);
int intGLOB_27 = 0;
int intGLOB_28 = 1;
int intGLOB_29 = 2;
int intGLOB_30 = 3;
int intGLOB_31 = 4;
int intGLOB_32 = 5;
int intGLOB_33 = 6;
int intGLOB_34 = 3;
int intGLOB_35 = 4;
int intGLOB_36 = 5;
int intGLOB_37 = 6;
int intGLOB_38 = 7;
int intGLOB_39 = 1;
int intGLOB_40 = 2;
int intGLOB_41 = 3;
int intGLOB_42 = 4;
int intGLOB_43 = 5;
int intGLOB_44 = 6;
int intGLOB_45 = 7;
int intGLOB_46 = 8;
int intGLOB_47 = 9;
int intGLOB_48 = 10;
int intGLOB_49 = 11;
int intGLOB_50 = 12;
int intGLOB_51 = 13;
int intGLOB_52 = 14;
int intGLOB_53 = 15;
int intGLOB_54 = 16;
int intGLOB_55 = 17;
int intGLOB_56 = 18;
int intGLOB_57 = 19;
int intGLOB_58 = 20;
int intGLOB_59 = 21;
int intGLOB_60 = 22;
int intGLOB_61 = 23;
int intGLOB_62 = 24;
int intGLOB_63 = 25;
int intGLOB_64 = 26;
int intGLOB_65 = 27;
int intGLOB_66 = 28;
int intGLOB_67 = 29;
int intGLOB_68 = 30;
int intGLOB_69 = 59;
int intGLOB_70 = 0;
int intGLOB_71 = 1;
int intGLOB_72 = 2;
int intGLOB_73 = 29;
int intGLOB_74 = 30;
int intGLOB_75 = 34;
int intGLOB_76 = 35;
int intGLOB_77 = 36;
int intGLOB_78 = 37;
int intGLOB_79 = 38;
int intGLOB_80 = 39;
int intGLOB_81 = 41;
int intGLOB_82 = 42;
int intGLOB_83 = 46;
int intGLOB_84 = 47;
int intGLOB_85 = 15;
int intGLOB_86 = 10;
int intGLOB_87 = 5;
int intGLOB_88 = 2;
int intGLOB_89;
int intGLOB_90;
int intGLOB_91;
object objectGLOB_1;
int intGLOB_92;
int intGLOB_93;
int intGLOB_94;
int intGLOB_95;
int intGLOB_96;
int intGLOB_97;
int intGLOB_98 = 1;
int intGLOB_99 = 2;
int intGLOB_100 = 3;
int intGLOB_101 = 20;
int intGLOB_102 = 21;
int intGLOB_103 = 22;
int intGLOB_104 = 23;
int intGLOB_105 = 24;
int intGLOB_106 = 25;
int intGLOB_107 = 26;
int intGLOB_108 = 27;
int intGLOB_109 = 28;
int intGLOB_110 = 31;
int intGLOB_111 = 32;
int intGLOB_112 = 33;
int intGLOB_113 = 40;
int intGLOB_114 = 43;
int intGLOB_115 = 44;
int intGLOB_116 = 45;
int intGLOB_117 = 48;
int intGLOB_118 = 49;
int intGLOB_119 = 50;
int intGLOB_120 = 51;
int intGLOB_121 = 52;
int intGLOB_122 = 53;
int intGLOB_123 = 54;
int intGLOB_124 = 55;
int intGLOB_125 = 56;
int intGLOB_126 = 57;
int intGLOB_127 = 58;
int intGLOB_128 = 60;
int intGLOB_129 = 61;
int intGLOB_130 = 62;
int intGLOB_131 = 63;
int intGLOB_132 = 64;
int intGLOB_133 = 65;
int intGLOB_134 = 66;
int intGLOB_135 = 67;
int intGLOB_136 = 68;
int intGLOB_137 = 69;
int intGLOB_138 = 70;
int intGLOB_139 = 71;
int intGLOB_140 = 72;
int intGLOB_141 = 1;
int intGLOB_142 = 2;
int intGLOB_143 = 3;
int intGLOB_144 = 4;
string stringGLOB_1 = "end_trask";
string stringGLOB_2 = "endwp_tarsk01";
string stringGLOB_3 = "Carth";
string stringGLOB_4 = "g_w_blstrrfl001";
string stringGLOB_5 = "g_i_adrnaline003";
string stringGLOB_6 = "";
string stringGLOB_7 = "g_w_blstrpstl001";
string stringGLOB_8 = "g_i_adrnaline002";
string stringGLOB_9 = "g_i_implant101";
string stringGLOB_10 = "g_w_blstrpstl001";
string stringGLOB_11 = "g_i_secspike01";
string stringGLOB_12 = "g_i_progspike01";
int intGLOB_145 = 3;
int intGLOB_146 = 4;
int intGLOB_147 = 2;
int intGLOB_148 = (-1);
int intGLOB_149 = 0;
int intGLOB_150 = 1;
int intGLOB_151 = 2;
int intGLOB_152 = 3;
int intGLOB_153 = 4;
int intGLOB_154 = 5;
int intGLOB_155 = 6;
int intGLOB_156 = 7;
int intGLOB_157 = 8;
int intGLOB_158 = 9;
int intGLOB_159 = 10;
int intGLOB_160 = 11;
int intGLOB_161 = 12;
int intGLOB_162 = 13;
int intGLOB_163 = 14;
int intGLOB_164 = 15;
int intGLOB_165 = 16;
int intGLOB_166 = 17;
int intGLOB_167 = 18;
int intGLOB_168 = 19;
int intGLOB_169 = 20;
int intGLOB_170 = 21;
int intGLOB_171 = 22;
int intGLOB_172 = 28;
int intGLOB_173 = 29;
int intGLOB_174 = 30;
int intGLOB_175 = 31;
string stringGLOB_13 = "end_locker01";
string stringGLOB_14 = "g_i_belt010";

// Prototypes
object sub11();
void sub10(string stringParam1, int intParam2, int intParam3);
void sub9();
void sub8(int intParam1);
void sub7(string stringParam1);
int sub5();
void sub4(object objectParam1, location locationParam2);
void sub3();
void sub2(object objectParam1, object objectParam2, object objectParam3);
object sub1();

object sub11() {
return GetObjectByTag("Carth", 0);
}

void sub10(string stringParam1, int intParam2, int intParam3) {
location location1 = GetLocation(GetNearestObjectByTag(stringParam1, OBJECT_SELF, 1));
effect efVisual = EffectVisualEffect(3003, 0);
effect effect3 = EffectVisualEffect(6002, 0);
ApplyEffectAtLocation(0, efVisual, location1, 0.0);
if (intParam2) {
ApplyEffectToObject(0, effect3, GetFirstPC(), 0.0);
}
if (intParam3) {
PlayRumblePattern(14);
}
}

void sub9() {
object object1 = sub1();
if ((GetPartyMemberByIndex(0) == object1)) {
SetPartyLeader(0xFFFFFFFF);
}
NoClicksFor(0.5);
DelayCommand(0.1, SignalEvent(object1, EventUserDefined(50)));
}

void sub8(int intParam1) {
SetGlobalNumber("END_TRASK_DLG", intParam1);
}

void sub7(string stringParam1) {
if ((!ShipBuild())) {
PrintString(stringParam1);
}
}

int sub5() {
return GetGlobalNumber("END_TRASK_DLG");
}

void sub4(object objectParam1, location locationParam2) {
if ((!GetIsObjectValid(objectParam1))) {
return;
}
if ((GetCurrentHitPoints(objectParam1) < 1)) {
ApplyEffectToObject(0, EffectResurrection(), objectParam1, 0.0);
ApplyEffectToObject(0, EffectHeal(1), objectParam1, 0.0);
}
SetCommandable(1, objectParam1);
AssignCommand(objectParam1, ClearAllActions());
AssignCommand(objectParam1, ActionJumpToLocation(locationParam2));
}

void sub3() {
int int1 = 0;
object oNPC = GetPartyMemberByIndex(int1);
while (GetIsObjectValid(oNPC)) {
if ((GetCurrentHitPoints(oNPC) < 1)) {
ApplyEffectToObject(0, EffectResurrection(), oNPC, 0.0);
ApplyEffectToObject(0, EffectHeal(1), oNPC, 0.0);
}
(int1++);
oNPC = GetPartyMemberByIndex(int1);
}
}

void sub2(object objectParam1, object objectParam2, object objectParam3) {
object oNPC = GetPartyMemberByIndex(0);
object object3 = GetPartyMemberByIndex(1);
object object5 = GetPartyMemberByIndex(2);
sub3();
if (GetIsObjectValid(oNPC)) {
sub4(oNPC, GetLocation(objectParam1));
AssignCommand(oNPC, SetFacing(GetFacing(objectParam1)));
}
if (GetIsObjectValid(object3)) {
sub4(object3, GetLocation(objectParam2));
DelayCommand(0.3, AssignCommand(object3, SetFacing(GetFacing(objectParam2))));
}
if (GetIsObjectValid(object5)) {
sub4(object5, GetLocation(objectParam3));
DelayCommand(0.3, AssignCommand(object5, SetFacing(GetFacing(objectParam3))));
}
}

object sub1() {
return GetObjectByTag(stringGLOB_1, 0);
}

void main() {
if (GetGlobalBoolean("END_BRIDGE_SEALED")) {
ActionStartConversation(GetFirstPC(), "end_bridgeseal", 0, 0, 1, "", "", "", "", "", "");
}
else {
if ((GetGlobalNumber("END_ROOM8_DEAD") >= 2)) {
if ((GetDistanceBetween(sub1(), GetFirstPC()) > 10.0)) {
SetGlobalFadeOut(0.0, 0.0, 0.0, 0.0, 0.0);
DelayCommand(0.5, SetGlobalFadeIn(0.0, 0.5, 0.0, 0.0, 0.0));
sub2(GetObjectByTag("wp_end_room7_1", 0), GetObjectByTag("wp_end_room7_1", 0), OBJECT_INVALID);
}
if (((sub5() < intGLOB_165))) {
sub8(intGLOB_165);
sub9();
}
else {
object oEnd_bridgesith1 = CreateObject(1, "end_bridgesith1", GetLocation(GetObjectByTag("wp_end_bridgesith1", 0)), 0);
object oEnd_bridgesith2 = CreateObject(1, "end_bridgesith2", GetLocation(GetObjectByTag("wp_end_bridgesith2", 0)), 0);
DelayCommand(8.0, SignalEvent(oEnd_bridgesith1, EventUserDefined(20)));
DelayCommand(12.0, SignalEvent(oEnd_bridgesith2, EventUserDefined(20)));
DelayCommand(8.0, SignalEvent(GetObjectByTag("end_bridgerep1", 0), EventUserDefined(20)));
DelayCommand(12.0, SignalEvent(GetObjectByTag("end_bridgerep2", 0), EventUserDefined(20)));
DelayCommand(8.0, sub10("wp_end_bridgeexp1", 0, 0));
DelayCommand(12.0, sub10("wp_end_bridgeexp2", 0, 0));
SetLocked(OBJECT_SELF, 0);
ActionOpenDoor(OBJECT_SELF);
sub8(intGLOB_175);
}
}
}
DestroyObject(sub11(), 0.0, 0, 0.0);
}
 Zerimar Nyliram
07-24-2011, 1:55 AM
#4
No offense, guys, but you can skip those tutorials with your dialogue choices. While I appreciate what you're trying to do, I don't really see the need for it.
 Qui-Gon Glenn
07-24-2011, 3:49 AM
#5
This project is actually underway to a certain extent by jonathan7 with a little help from myself. It may have stalled, but we had something going along these lines.

Nevertheless, we told no one AFAIK, so glad to see someone else thought it was a good idea and is choosing to make it happen.

Whether "needed" or not is a strange question to put before a mod... no one really "needs" any mod (with the possible exception on TSLRCM). For those that it annoys and that are experienced in playing the game, it is a nice little touch :thumbsup:
 Elite Duck
07-24-2011, 11:56 AM
#6
Well, if jonathan7 is working on this already, it may be a good idea to combine our mods. I'll have to speak to him about this...

@Karstedt
Awesome! I was planning on doing this but I really appreciate the help. Saves me time ;)
Is it possible for you to give me that script as a file so i can just stick it in override and see how it works.

I've already nailed down the first conversation and the second one. Does anyone want the option to participate in the Jedi fight before the bridge?
 Elite Duck
07-24-2011, 6:31 PM
#7
I've finished the beta version of the mod. All I need now is a couple of testers to run through the whole thing whist on purpose trying to bring the tutorials out to make sure I haven't forgotten anything.

Essentially all I've done is removed every single bit of tutorial related dialoge without slicing up audio files. For example Trask will still say "A copy of the message has been stored on your log book" But the option to say "How do I access it?" has been removed.

As for the weapons check on the door, all I did was remove the script completely, so instead you just pass through the door. I encountered a glitch that keeps the door locked at the first and possibly second attempts of opening it, but 3rd time always works.
 Darth InSidious
07-24-2011, 8:45 PM
#8
As for the weapons check on the door, all I did was remove the script completely, so instead you just pass through the door. I encountered a glitch that keeps the door locked at the first and possibly second attempts of opening it, but 3rd time always works.
Did you try replacing the script with another - with the same filename - which unlocks the door?
 Elite Duck
07-24-2011, 8:54 PM
#9
Did you try replacing the script with another - with the same filename - which unlocks the door?

No, as I said, I just cut things out. It's a pretty basic job really. More of a fix than a mod.
I've never made a script before. If I put the one below my main post into notepad, then what?
 Capibara
07-25-2011, 1:28 AM
#10
I think this is a very good idea. But, imo, you shouldn't be shy about it; if you're removing the tutorial dialogs from the pc you should also go all the way and remove it from Trask, voiced lines included. Also, if it were somehow possible to make the various 'cutscene' fights throughout the ship skippable or go faster, that would be nice.
 Elite Duck
07-25-2011, 12:19 PM
#11
I think this is a very good idea. But, imo, you shouldn't be shy about it; if you're removing the tutorial dialogs from the pc you should also go all the way and remove it from Trask, voiced lines included. Also, if it were somehow possible to make the various 'cutscene' fights throughout the ship skippable or go faster, that would be nice.

I've removed it from Trask as well. But I wanted to make a balance of realism and at least some dialogue. As for the cutscene fights, I'm sure I could just remove them and let you join in with the battle completely, but I'd rather do all this after I've got some suggestions from testers. It's quite delicate because if I remove too much the section becomes rushed and boring, but if I don't remove or change enough then it's still too much like a tutorial. As I said, It's got to be balanced.

The beta can be downloaded here --> http://www.megaupload.com/?d=LOCPM988)
If you've got 5-10 mins to quickly play through the whole Endar Spire and give me some feedback, please download. I want to make my first official mod really good and not a poorly/quickly done job (because it is at the moment).

Thanks,
~ED
 Capibara
07-29-2011, 1:09 AM
#12
Ok, sorry for the delay, tested it (2 runs), here's my observations:

Leftover tutorial-ish stuff:

- Trask's 'there's a map blabla... dialog after carth's first cutscene

- Door dialog 2; 'but switch me to the party leader so i can use my skills to open it'

- Medpack dialog; floating text shows for a second, voiced dialog sounds for a second

- Carth's 'repair droid or reprogram the computer' cutscene speech

- Forced level up tutorial trask voiced lines

Glitch-y stuff:

- Trask has no 'selected' sound (not sure if normal)

- Had to click 3 times to open the door to the bridge when equipped with a ranged weapon

- Was unable to use the security panel comp. at the end.

- Droid doesn't automatically move towards the door after being repaired, only after being 'talk to', it then walks up to the door but it's unable to open it.

- Not being able to either use the comp. panel nor the repair droid way was unable to get out of the Endar (game stopped).

Neither leftover nor a glitch (but not good either):

- Forced level up funny text dialog (4th wall/'immersion' - breaking)

Suggestion:

- Would be nice to get the option (besides the computer panel and repair droid ways) to just open the door and face the sith squad on direct combat at the end.
 Elite Duck
07-30-2011, 4:10 PM
#13
Hey Capibara, thanks for the input! Let me just go over these and expain...

- Trask's 'there's a map blabla... dialog after carth's first cutscene

- Door dialog 2; 'but switch me to the party leader so i can use my skills to open it'

- Medpack dialog; floating text shows for a second, voiced dialog sounds for a second

- Carth's 'repair droid or reprogram the computer' cutscene speech

- Forced level up tutorial trask voiced lines

1) I left that in because I wasn't sure if it was a tutorial or not. I'll get rid of it now.

2) Same as above. Removing....

3) I noticed this, except it a blink-you-missed-it kind of thing so I left it. I deleted the file so was surprised that it showed up at all. There must be a backup or something somewhere.

4) I forgot that LOL! I'll remove that and also make the door unlocked

5) Huh, I thought I deleted that. Alright, I'll fix that

Glitch-y stuff:

- Trask has no 'selected' sound (not sure if normal)

- Had to click 3 times to open the door to the bridge when equipped with a ranged weapon

- Was unable to use the security panel comp. at the end.

- Droid doesn't automatically move towards the door after being repaired, only after being 'talk to', it then walks up to the door but it's unable to open it.

- Not being able to either use the comp. panel nor the repair droid way was unable to get out of the Endar (game stopped).

1) I think that he probably doesn't have one because he's in the game for barely 5 mins.

2) I mentioned this earlier in the thread. It's there because I simply removed the script + dialogue from Trask that stops you going through the door with a gun. Earlier in the thread someone made a script but I don't know how to make them into source files.

3) Is that the one that you blow the transponder up with? I'll fix it

4) Don't know why that's happening, I'll take a look

5) This could probably be something to do with me taking the Tutorials out of the computer/droid "talk" sequences. I'll also sort the door out so you can go through it at any time.

Neither leftover nor a glitch (but not good either):

- Forced level up funny text dialog (4th wall/'immersion' - breaking)

Suggestion:

- Would be nice to get the option (besides the computer panel and repair droid ways) to just open the door and face the sith squad on direct combat at the end.

1) OMG I put that in as a test and forgot to remove it :lol: That's not good...

2) It will be done
 Qui-Gon Glenn
07-31-2011, 4:27 PM
#14
Search for source files (.nss) for K1 in scripts.bif via KotOR Tool.

It may be helpful to identify the module designation, this can be done with the 'whereami' cheat.

From there, look at any scripts that have to do with "door" especially "trask" + "door".

For example, look at "k_pend_door01.nss":
#include "k_inc_end"
void main()
{
if(GetPartyMemberByIndex(0) == GetTrask())
{
SetLocked(OBJECT_SELF,FALSE);
ActionOpenDoor(OBJECT_SELF);
SetGlobalNumber("END_TRASK_DLG",8);
ActionStartConversation(GetFirstPC(),"end_trask01",FALSE,CONVERSATION_TYPE_CINEMATIC,TRUE);
}
else
{
ActionStartConversation(GetFirstPC());
}
}

I knew to look there because of the end standing for endar spire, and door in k_pend_door01
 Canaan Sadow
07-31-2011, 5:03 PM
#15
Doesn't Trask have part of those lines in his VOs? o.O So even if you removed it from the dialogue, I think he'd still say it. It's been a while so I'm not sure if he does or not...
 Elite Duck
07-31-2011, 5:05 PM
#16
Okay, so I just need to cut the script off so it can't launch, right? Also, could I replace some of the doors in the Endar Spire with basic doors so that they just open without any messing with scripts at all?
 Qui-Gon Glenn
07-31-2011, 5:14 PM
#17
You need to study the script. There is a lot going on there, and it is pointing you to look at the dialog "end_trask01" which surely contains several conditional scripts that need to be removed or altered. Since the PC may not have any security skill whatsoever at this point, it is better to simply unlock the door.

Inside the script, you can see that a door is locked, and that unless Trask is selected as the party leader, it will default to the Trask dialog telling you to switch to Trask. If you do have Trask selected as the party leader, it advances the global number called END_TRASK_DLG to 8, which will in turn pass a conditional script check in the dialog that will then move things along.

Nothing is ever as simple (well, most of the time) as simple snipping bits out. You have to follow the logic trail, make sure that you don't break anything, and tie up your loose ends.

The probable solution here is that this script will be deleted... but only after you have followed the trail and cleaned up the referential dependencies.
 Elite Duck
07-31-2011, 5:19 PM
#18
Gotcha, I'll get that done soon. Thanks for the help!
 Qui-Gon Glenn
08-02-2011, 5:19 PM
#19
Doesn't Trask have part of those lines in his VOs? o.O So even if you removed it from the dialogue, I think he'd still say it. It's been a while so I'm not sure if he does or not...If the dialog line is cut properly, meaning the entire content of the node including scripts and vo_resrefs, it should be fine.
 Capibara
08-03-2011, 4:31 AM
#20
thanks for the input!

No problem, like i said, i find this to be a very good idea. I'd be happy to test future versions as well. :)
 Elite Duck
08-04-2011, 12:10 PM
#21
Hey Guys, so I have some new glitches

The bane of my life, end_door_8.utd FINALLY opened up with guns wielded without any glitches except the sith who are meant to be fighting the republic soldiers aren't there and to make matters worse, as I run up to the bridge the explosion goes off and they die (So could be worse considering that you don't even fight the sith that are meant to be there). Unfortunately I see our resident annoying little prick Carth Onasi standing there! If you speak to him he says "Bastila's escape pod is already gone...." and the rest of that line.

My other glitch that I can't seem to fix is the Assault Droid in the starboard section. He can be activated but if you attempt to activate his shields or send him on his way then you get ejected for the interface.

If anyone knows how to solve this then please help me out. It's almost done!!!
Page: 1 of 1