Jump to content

Home

Problem with adding planets to galaxy-map


Vegard Aune

Recommended Posts

I have tried to make a minor mod that would add M4-78 and Malachor to the KotOR 2 galaxy map. I saw tha tutourial and downloaded the script and all that, but there is one problem: The map is gone! I mean, I can still select it and travel to planets, but the interface is completely black, so I can't tell where I'm going. Does anyone know how to fix this?

Link to comment
Share on other sites

I don't see why the galaxy map GUI would appear to be black. I haven't read stoffe's new tutorial, I figured the business out on my own (Which is surprising considering we are talking about the master of mistakes here...) so I didn't see any need. The only thing I can think of is that you have a corrupted galaxymap_p.gui in your override.

 

As to not appearing at all. You should have a call at the bottom of your a_galaxymap script for:

 

ShowGalaxyMap(nPlanet);

 

Edit: Oh, and make sure your galaxy map placeable triggers a_galaxymap :) - that could be the reason why it isn't showing.

Link to comment
Share on other sites

I don't see why the galaxy map GUI would appear to be black. I haven't read stoffe's new tutorial, I figured the business out on my own (Which is surprising considering we are talking about the master of mistakes here...) so I didn't see any need. The only thing I can think of is that you have a corrupted galaxymap_p.gui in your override.

 

As to not appearing at all. You should have a call at the bottom of your a_galaxymap script for:

 

ShowGalaxyMap(nPlanet);

 

Edit: Oh, and make sure your galaxy map placeable triggers a_galaxymap :) - that could be the reason why it isn't showing.

Actually, I only did a small change to the galaxy map script. All the other stuff was not necessary, as M4-78 and Malachor already had locations on the map, you just couldn't reach them. So the .gui explaination can't be the reason. Oh, and I wanted them (At least M4-78) to be available all the time.

Link to comment
Share on other sites

if you use the original a_galaxymap script decompiled you have these lines at the bottom

SetPlanetAvailable(9, 0);

SetPlanetSelectable(9, 0);

SetPlanetAvailable(4, 0);

SetPlanetSelectable(4, 0);

SetPlanetAvailable(2, 0);

SetPlanetSelectable(2, 0);

planet 4 is m4-78 just change the 0's to 1's makes it selectable right after peragus or delete the lines makes them selectable after telos. planet 9 should be malachor v.

Link to comment
Share on other sites

if you use the original a_galaxymap script decompiled you have these lines at the bottom

SetPlanetAvailable(9, 0);

SetPlanetSelectable(9, 0);

SetPlanetAvailable(4, 0);

SetPlanetSelectable(4, 0);

SetPlanetAvailable(2, 0);

SetPlanetSelectable(2, 0);

planet 4 is m4-78 just change the 0's to 1's makes it selectable right after peragus or delete the lines makes them selectable after telos. planet 9 should be malachor v.

 

Malachor is actually planet number 5. The constants listed in NWScript are in alphabetical and not chronological order. Telos is 9.

Link to comment
Share on other sites

Actually, it turned out that the problem WAS a corrupted .gui-file. I had extracted it while trying to follow the tutourial, it was corrupted, and I didn't remove it afterwards. But there is another problem: Although I've set all the planets to true in the script, Malachor doesn't show up on the map. What should I do to fix that?

Link to comment
Share on other sites

I got a little ahead of myself earlier as I had never tried to get to malachor.But if you use the original a_galaxy map file just modify this section.

SetPlanetAvailable(9, 0);

SetPlanetSelectable(9, 0);

SetPlanetAvailable(4, 0);

SetPlanetSelectable(4, 0);

SetPlanetAvailable(2, 0);

SetPlanetSelectable(2, 0);

to this

SetPlanetAvailable(9, 0);

SetPlanetSelectable(9, 0);

SetPlanetAvailable(4, 1);

SetPlanetSelectable(4, 1);

SetPlanetAvailable(5, 1);

SetPlanetSelectable(5, 1);

SetPlanetAvailable(2, 0);

SetPlanetSelectable(2, 0);

malachor is planet 5 note:if you exit the ebonhawk at malachor there is no way to re-enter.

Link to comment
Share on other sites

Edit: DSTONEY642000's way is fine as a hack to allow constant access, by the way. I didn't mean to seem as though I was correcting you, DSTONEY642000, because your method is fine. Just to clear that up...

 

Here is what your a_galaxymap.nss original should look like. I have commented it for ease of use. Ignore the little novel at the top... I have a habit of telling the life history of my scripts in the headers.

 

// a_galaxymap.nss
/*
  Kindly decompiled/recreated by stoffe -mkb-,
  found thanks to the handy search function on LucasForums
  Runs when the galaxy map placeable is selected.
  Sets which planets are visitable and which are not.
*/
// Created By: Obsidian Entertainment
// Decompiled By: stoffe
// Commented By: Pavlos

#include "k_inc_hawk"

void main() {

   // We are supposed to check how Kreia is before setting a course for Telos
   if (GetGlobalNumber("003EBO_Atton_Talk") <= 4) {
       object oPC = GetFirstPC();
       AssignCommand(oPC, ClearAllActions());
       AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "galaxy", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE));   
       return;
   }

   // We're stuck on Dxun, oh no!
   else if (GetGlobalNumber("003EBO_RETURN_DEST") == 4) {
       if (GetGlobalNumber("502OND_End_First") == 0) {
           object oPC = GetFirstPC();
           AssignCommand(oPC, ClearAllActions());
           AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "galaxy2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE));          
           return;
       }
   }

   // The Ebon Hawk has been boarded!
   else if (GetGlobalNumber("003_IN_COMBAT") == 1) {
       object oPC = GetFirstPC();
       AssignCommand(oPC, ClearAllActions());
       AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "galaxy", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE));           
       return;
   }

   // Set all the worlds to off
   int nWorld = 0;
   for (nWorld = PLANET_DANTOOINE; nWorld < PLANET_LIVE_01; ++nWorld) {
       SetPlanetAvailable(nWorld, FALSE);
       SetPlanetSelectable(nWorld, FALSE); 
   }

   // Malachor is open on the galaxy map - you have defeated Nihilus
   // I believe you are immediately transfered to 901MAL, after Nihilus
   // That is why you never receive this option in the game
   if (GetGlobalNumber("900MAL_Open") == 1) {
       for (nWorld = PLANET_DANTOOINE; nWorld < PLANET_LIVE_01; nWorld++) {
           int nPlanet = nWorld;
           SetPlanetAvailable(nPlanet, TRUE);

           if (nWorld == PLANET_MALACHOR_V) 
               SetPlanetSelectable(nPlanet, TRUE); 
       }       
   }

   // Standard, after-Telos galaxy map
   else if (GetGlobalNumber("262TEL_Escape_Telos") == 1) {
       for (nWorld = PLANET_DANTOOINE; nWorld < PLANET_LIVE_01; nWorld++) {
           int nPlanet = nWorld;


           // If nWorld is not equal to 5 then set it to available.            
           if (nWorld != PLANET_MALACHOR_V) {
               SetPlanetAvailable(nPlanet, TRUE);

               // If nWorld is not equal to 8 then allow the player to select it
               if (nWorld != PLANET_PERAGUS) 
                   SetPlanetSelectable(nPlanet, TRUE);                 
           }
       }

       // We don't know of Dxun yet... we cannot select it
       if (GetGlobalNumber("401DXN_Visited") == 0) {
           SetPlanetAvailable(PLANET_DXUN, FALSE);
           SetPlanetSelectable(PLANET_DXUN, FALSE);    
       }

       // Civil War strikes at Onderon's heart - we cannot go back
       else {
           SetPlanetSelectable(PLANET_ONDERON, FALSE);
       }       
   }

   // For some strange reason... the Harbinger constant is
   // used for Citadel Station.
   // Which is... confusing.
   // Used for the flight from Peragus to Telos
   else {
       SetPlanetAvailable(PLANET_HARBINGER, TRUE);
       SetPlanetSelectable(PLANET_HARBINGER, TRUE);    
       SetPlanetAvailable(PLANET_PERAGUS, TRUE);
       SetPlanetSelectable(PLANET_PERAGUS, FALSE);                                 
   }

   // We cannot go to the polar region again.
   SetPlanetAvailable(PLANET_TELOS, FALSE);
   SetPlanetSelectable(PLANET_TELOS, FALSE);

   // M4-78 was cut - much simpler just to add this in than edit the rest of the script
   SetPlanetAvailable(PLANET_M4_78, FALSE);
   SetPlanetSelectable(PLANET_M4_78, FALSE); 

   // Standard, no Ebon Hawk on map  
   SetPlanetAvailable(PLANET_EBON_HAWK, FALSE);
   SetPlanetSelectable(PLANET_EBON_HAWK, FALSE);   

   int nPlanet = GetCurrentPlanet();

   // If we are in hyperspace, or in space then the Ebon Hawk is on the map.
   if ((GetGlobalNumber("003EBO_BACKGROUND") == 8) || (GetGlobalNumber("003EBO_BACKGROUND") == 10)) {
       nPlanet = PLANET_EBON_HAWK;
       SetPlanetAvailable(PLANET_EBON_HAWK, TRUE); 
   }

   SetPlanetSelectable(nPlanet, FALSE);
   ShowGalaxyMap(nPlanet);
}

 

To make M4-78 selectable after Telos - delete, or comment out:

 

   SetPlanetAvailable(PLANET_M4_78, FALSE);
   SetPlanetSelectable(PLANET_M4_78, FALSE); 

 

As for Malachor: You want to remove, or comment out, the check to see if the planet is Malachor V.

 

           if (nWorld != PLANET_MALACHOR_V) {
               SetPlanetAvailable(nPlanet, TRUE);

 

This should allow you to visit it after Telos - as you did with M4-78.

 

So your script should look something like this:

 

#include "k_inc_hawk"

void main() {

   // We are supposed to check how Kreia is before setting a course for Telos
   if (GetGlobalNumber("003EBO_Atton_Talk") <= 4) {
       object oPC = GetFirstPC();
       AssignCommand(oPC, ClearAllActions());
       AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "galaxy", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE));   
       return;
   }

   // We're stuck on Dxun, oh no!
   else if (GetGlobalNumber("003EBO_RETURN_DEST") == 4) {
       if (GetGlobalNumber("502OND_End_First") == 0) {
           object oPC = GetFirstPC();
           AssignCommand(oPC, ClearAllActions());
           AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "galaxy2", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE));          
           return;
       }
   }

   // The Ebon Hawk has been boarded!
   else if (GetGlobalNumber("003_IN_COMBAT") == 1) {
       object oPC = GetFirstPC();
       AssignCommand(oPC, ClearAllActions());
       AssignCommand(OBJECT_SELF, ActionStartConversation(oPC, "galaxy", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE));           
       return;
   }

   // Set all the worlds to off
   int nWorld = 0;
   for (nWorld = PLANET_DANTOOINE; nWorld < PLANET_LIVE_01; ++nWorld) {
       SetPlanetAvailable(nWorld, FALSE);
       SetPlanetSelectable(nWorld, FALSE); 
   }

   // Malachor is open on the galaxy map - you have defeated Nihilus
   // I believe you are immediately transfered to 901MAL, after Nihilus
   // That is why you never receive this option in the game
   if (GetGlobalNumber("900MAL_Open") == 1) {
       for (nWorld = PLANET_DANTOOINE; nWorld < PLANET_LIVE_01; nWorld++) {
           int nPlanet = nWorld;
           SetPlanetAvailable(nPlanet, TRUE);

           if (nWorld == PLANET_MALACHOR_V) 
               SetPlanetSelectable(nPlanet, TRUE); 
       }       
   }

   // Standard, after-Telos galaxy map
   else if (GetGlobalNumber("262TEL_Escape_Telos") == 1) {
       for (nWorld = PLANET_DANTOOINE; nWorld < PLANET_LIVE_01; nWorld++) {
           int nPlanet = nWorld;

       // If nWorld is not equal to 8 then allow the player to select it
       if (nWorld != PLANET_PERAGUS) 
           SetPlanetSelectable(nPlanet, TRUE);                 
       }

       // We don't know of Dxun yet... we cannot select it
       if (GetGlobalNumber("401DXN_Visited") == 0) {
           SetPlanetAvailable(PLANET_DXUN, FALSE);
           SetPlanetSelectable(PLANET_DXUN, FALSE);    
       }

       // Civil War strikes at Onderon's heart - we cannot go back
       else {
           SetPlanetSelectable(PLANET_ONDERON, FALSE);
       }       
   }

   // For some strange reason... the Harbinger constant is
   // used for Citadel Station.
   // Which is... confusing.
   // Used for the flight from Peragus to Telos
   else {
       SetPlanetAvailable(PLANET_HARBINGER, TRUE);
       SetPlanetSelectable(PLANET_HARBINGER, TRUE);    
       SetPlanetAvailable(PLANET_PERAGUS, TRUE);
       SetPlanetSelectable(PLANET_PERAGUS, FALSE);                                 
   }

   // We cannot go to the polar region again.
   SetPlanetAvailable(PLANET_TELOS, FALSE);
   SetPlanetSelectable(PLANET_TELOS, FALSE);

   // Standard, no Ebon Hawk on map  
   SetPlanetAvailable(PLANET_EBON_HAWK, FALSE);
   SetPlanetSelectable(PLANET_EBON_HAWK, FALSE);   

   int nPlanet = GetCurrentPlanet();

   // If we are in hyperspace, or in space then the Ebon Hawk is on the map.
   if ((GetGlobalNumber("003EBO_BACKGROUND") == 8) || (GetGlobalNumber("003EBO_BACKGROUND") == 10)) {
       nPlanet = PLANET_EBON_HAWK;
       SetPlanetAvailable(PLANET_EBON_HAWK, TRUE); 
   }

   SetPlanetSelectable(nPlanet, FALSE);
   ShowGalaxyMap(nPlanet);
}

 

Compile it, and both worlds should be available for use after Telos - like any other world.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...