• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Need Help Why can't I buy certain ships?

Cursed Rascal

Landlubber
Screenshots: Imgur: The most awesome images on the Internet

For some reason, some ships in the shipyard are grayed out and I can't click on them.

My character has a Letter of Marque with Britain and is rank 2 (should allow me to buy up to 5th rate ships)

But for some reason, I can't buy even 6th rate ships (for example, 6th rate frigate). It won't even let me click on them.

Also, sometimes there are armed merchants that are even larger and higher tier (tier 4) than the ships I want to buy, and those ones I CAN click on and buy.

I have enough money, and I have enough rank to buy the ships. The only thing I can think of is that my leadership and sailing are too low to sail the ships. After that screenshot I went and got a tattoo to increase sailing, and I bought 2 more items to boost leadership. That didn't help either.

Is 5 leadership (boosted with items to 8) and 4 sailing (boosted with items to 8) too low?
 
Which modpack version are you running?
Normally there should be an explanatory note, but one such note was missing in an earlier version.
Should be Ok though in the latest one you can find through the link in my signature.
 
I am using the latest version of the modpack, including the updated exe dated january 7 2017.

I think I figured it out. I ranked up some more and some of the ships I couldn't click on before sare clickable now.

So it seems to me there are 2 problems: Like you said there is no explanatory note that says why you can't buy it, and also the "national ranks" wiki page is incorrect, at least for british privateers
 
I am using the latest version of the modpack, including the updated exe dated january 7 2017.
You might have to install this for the explanatory note to show up:
Extra Fix Archive: Download by @Grey Roger (Updated: 6 March 2017)
Compatibility: New Game strongly recommended! (Required for Extra Fix Archive)

the "national ranks" wiki page is incorrect, at least for british privateers
That's strange; if I recall, it matched completely with the code. :confused:
 
Have you also installed the update zip?
http://piratesahoy.bowengames.com/potc/Grey Roger/post_jan7_fixes.zip
The fix for the missing explanatory note is in there.

The only discrepancy I can see between ranks shown in the wiki page and ranks shown in "PROGRAM\NATIONS\nations_init.c", which is where they are defined in the game, is that the wiki shows rank 2 as "Junior Lieutenant" whereas the game shows it as "Acting Lieutenant". I've now changed the wiki to match the game. Please let me know if you spot any other discrepancies.
 
Ah! Somehow I missed the extra fix archive when I was installing. I'm pretty invested in my current game, I'll reinstall everything fresh when I get bored of this one. Also, is there a changelog for the extra fix archive?

I should have worded it better: the wiki page isn't incorrect, but rather ships are not unlocking at the proper ranks. The wiki page says this:

  • Rank 1 requires 2.7557 points
  • Rank 2 requires 9.8821 points - Lowest Rank for 5th Rate Ships
  • Rank 3 requires 22.918 points
  • Rank 4 requires 42.957 points - Lowest Rank for 4th Rate Ships
  • Rank 5 requires 70.943 points

So I should be able to buy a "6th rate frigate" at either rank 1 or rank 0. But for some reason, I wasn't able to click on and buy it until I was promoted to rank 3. So unless this was fixed in the extra fix archive, I'd would guess that ships aren't unlocking at the correct ranks


Edit: Might as well put this here instead of making a new thread:

I noticed there is sometimes an event where an npc in the tavern will offer to buy your contraband right there and then (Not the normal smuggler). The dialogue for this npc is, no offence, horrible. Whoever wrote it didn't speak english too well. Someone should rewrite it. Maybe I'll do it myself if I have time this week :)
 
Last edited:
I noticed there is sometimes an event where an npc in the tavern will offer to buy your contraband right there and then (Not the normal smuggler). The dialogue for this npc is, no offence, horrible. Whoever wrote it didn't speak english too well. Someone should rewrite it. Maybe I'll do it myself if I have time this week :)
Ah, you're taking crewmembers ashore with you then!
That's a cool mod that triggers a whole bunch of extra encounters.
But indeed their dialogs were pretty bad.
A few have been taken care of by people like yourself, but definitely not all.
If you can make it better, we'd really appreciate it! :woot
 
Ah! Somehow I missed the extra fix archive when I was installing. I'm pretty invested in my current game, I'll reinstall everything fresh when I get bored of this one. Also, is there a changelog for the extra fix archive?
Sort of. I'll need to remember to include it with the next zip update, but for now, you can see it in the file attached to this post:
Build 14 Beta 4.1 WIP [Last Update: 7 January 2017]

I should have worded it better: the wiki page isn't incorrect, but rather ships are not unlocking at the proper ranks. The wiki page says this:

  • Rank 1 requires 2.7557 points
  • Rank 2 requires 9.8821 points - Lowest Rank for 5th Rate Ships
  • Rank 3 requires 22.918 points
  • Rank 4 requires 42.957 points - Lowest Rank for 4th Rate Ships
  • Rank 5 requires 70.943 points

So I should be able to buy a "6th rate frigate" at either rank 1 or rank 0. But for some reason, I wasn't able to click on and buy it until I was promoted to rank 3. So unless this was fixed in the extra fix archive, I'd would guess that ships aren't unlocking at the correct ranks
Someone else will need to correct that as I am not familiar with the code which locks and unlocks ships - I'm not even sure where to find it!
 
Update: I think I've found the relevant code in "shipyard.c". It seems to be a block which starts:
Code:
               if(GetLocalShipAttrib(arCurShip, ShipsTypes[st],"Type.War") == true && GetLocalShipAttrib(arCurShip, ShipsTypes[st],"Type.Trade") == false && GetCurrentLocationNation() != PERSONAL_NATION)
               {
                   switch(sti(GetLocalShipAttrib(arCurShip, ShipsTypes[st],"Class")))
                   {
The switch on ship class then picks one of several blocks depending on the ship class. There's also some confusion here because it refers to "rate", whereas it should probably be referring to "class" or "tier". A 6th rate frigate is tier 5 because of its crew size. So for a ship like that, I reckon this is the block involved:
Code:
                       case 5:
                           if(RANK_FOR_FIFTH_RATE == 0 && !HaveLetterOfMarque(GetCurrentLocationNation()))
                           {GameInterface.scrollitems.(attributeName).navyship = true;}

                           if(RANK_FOR_FIFTH_RATE > 0 && GetRank(GetMainCharacter(), GetCurrentLocationNation()) <= RANK_FOR_FIFTH_RATE)
                           {GameInterface.scrollitems.(attributeName).navyship = true;}
                           break;
Variables such as 'RANK_FOR_FIFTH_RATE' are set in "InternalSettings.h". By default, that one is set to 2. If it's 0 then the above program block only checks if you have a Letter of Marque, otherwise it checks if your rank is less than or equal to 'RANK_FOR_FIFTH_RATE', and if so, the ship is marked as unbuyable. If I'm right, that is why you can't buy a tier 5 warship, e.g. a 6th rate frigate or a sloop of war, until you're rank 3.
 
Someone else will need to correct that as I am not familiar with the code which locks and unlocks ships - I'm not even sure where to find it!
The toggles for it are in InternalSettings.h, which should allow you to trace where they're used.
If I recall, it is only PROGRAM\INTERFACE\shipyard.c
 
@Cursed Rascal. Also there is the simple way in Options: seadogs2_0000.jpg
 
Do you want me to try replacing all the '<=' with '<' in that section of code in the next post 7th January update collection?
That depends.... Does it make logical sense to do so? :cheeky

You could quickly test the effect, because there is a Cheatmode option for "instant promotion".
 
That depends.... Does it make logical sense to do so? :cheeky
If I've found the right code, and if you want ships available one rank earlier, yes. Alternatively we could keep it as it is and edit the Wiki to show the real ranks needed to buy various size ships.

The screenshot posted by @ANSEL shows a setting in the "Options" menu which supposedly disables buying of anything larger than a frigate. Is that the same setting which in fact requires you to have a certain rank to be allowed to buy a ship, and which seems to allow buying anything up to tier 1 if your rank is high enough? Or is there another setting which, regardless of rank, means you can never buy a battleship?
 
If I've found the right code, and if you want ships available one rank earlier, yes.
If I recall, the code does what I wanted it to at the time. But it was a long time ago and I can't be sure.
I don't really care if it does what I want anyway, because I don't play. As long as it does what YOU guys want.

The screenshot posted by @ANSEL shows a setting in the "Options" menu which supposedly disables buying of anything larger than a frigate. Is that the same setting which in fact requires you to have a certain rank to be allowed to buy a ship, and which seems to allow buying anything up to tier 1 if your rank is high enough? Or is there another setting which, regardless of rank, means you can never buy a battleship?
That is indeed the "main toggle" on the entire "Limit Ship Purchase Based on Navy Rank" and can be found somewhere in PROGRAM\BuildSettings.h .
The actual ranks where certain ship tiers become available can be defined in PROGRAM\InternalSettings.h .
Most important, I reckon, is for the names of those lines to match with what they actually do.
And then for the Wiki to be in line with the default settings, I suppose.
 
OK, I'll change it, since both the wiki and the comments in "Shipyard.c" imply that you should be able to buy the ship at that rank, rather than you need to be above that rank to buy it. (Personally I'm not bothered either way. Buying ships is something which other people do. :wp)

Testing may take a while because even if you're a Marquess, you won't be able to buy a frigate if there does not happen to be one for sale in the shipyard... (Maybe start a FreePlay game as a corsair with a 6th rate frigate, sell the ship, cheat my way to Acting Lieutenant with lots of money, then see if the shipyard will let me buy it back.)
 
OK, I'll change it, since both the wiki and the comments in "Shipyard.c" imply that you should be able to buy the ship at that rank, rather than you need to be above that rank to buy it. (Personally I'm not bothered either way. Buying ships is something which other people do. :wp)
Please confirm with with the names of the InternalSettings.h variables as well.
It probably helps if the code does what the names of the variables suggest it does. :cheeky

Testing may take a while because even if you're a Marquess, you won't be able to buy a frigate if there does not happen to be one for sale in the shipyard...
True. Probably have to visit a shipyard in a large town (Jamaica?), then make a save BEFORE talking to the shipyard owner.
If he has a big navy ship, check if you can buy it. If you can't, use the Promotion cheat until you can.
If he doesn't have a big navy ship, reload the savegame and try again. His ship collection will be different then.
 
Please confirm with with the names of the InternalSettings.h variables as well.
It probably helps if the code does what the names of the variables suggest it does. :cheeky
From "InternalSettings.h":
Code:
#define RANK_FOR_FIFTH_RATE               2       // Lowest rank: Junior Lieutenant (England)
From "Shipyard.c":
Code:
if(RANK_FOR_FIFTH_RATE > 0 && GetRank(GetMainCharacter(), GetCurrentLocationNation()) <= RANK_FOR_FIFTH_RATE)
 {GameInterface.scrollitems.(attributeName).navyship = true;}
My mistake - the comment is in "InternalSettings.h", not in "Shipyard.c". :D
True. Probably have to visit a shipyard in a large town (Jamaica?), then make a save BEFORE talking to the shipyard owner.
If he has a big navy ship, check if you can buy it. If you can't, use the Promotion cheat until you can.
If he doesn't have a big navy ship, reload the savegame and try again. His ship collection will be different then.
Or just sell and try to re-buy my own ship. It's a lot quicker than having to sail from Speightstown to Port Royale, especially if the game tries to force a storm on me along the way, and also quicker than repeatedly reloading a savegame. ;)
 
Back
Top