• 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!

Included in Build Naval/Privateer Promotion Steps

I just put that in my game version; looking good!
Then we'd just need to check that Aubrey gets his right ships too and add this "Robert Fulton" character. :woot
Here's another thought:
Don't make Fulton a naval officer at all. If the entire point is to make it easier to get the steam frigate, especially if you're going to give it to him right away, then define a new free play character type, "Inventor". Use one of the model variants of Clement Aurentius. Give him low sailing and leadership skills so that, as a civilian who is testing his new design for the first time, he is barely capable of steering it.

As for Aubrey, let me have a full list of his ship names and types, and I'll add them.
 
Here's another thought:
Don't make Fulton a naval officer at all. If the entire point is to make it easier to get the steam frigate, especially if you're going to give it to him right away, then define a new free play character type, "Inventor". Use one of the model variants of Clement Aurentius. Give him low sailing and leadership skills so that, as a civilian who is testing his new design for the first time, he is barely capable of steering it.
Possible. Could be fun. I wasn't sure if we should give the ship to him straight away or not.
With a Naval Officer, we have the system in place to give the ship some time later as well.

As for Aubrey, let me have a full list of his ship names and types, and I'll add them.
This is the page I used for that before: http://www.ctbasses.com/misc/BruceTrinque/aubrey4.html
 
Possible. Could be fun. I wasn't sure if we should give the ship to him straight away or not.
With a Naval Officer, we have the system in place to give the ship some time later as well.
Why not do both? Define the Inventor character type who jump starts straight to a steam frigate but has poor sailing and leadership, so he can't use it very well at first; and also define our own fictitious naval officer who gets an exception at rank 6 to guarantee him a steam frigate, otherwise he uses regular American promotion ships. Just so long as regular officers don't get steam frigates more often and they don't show up more often as non-player ships.

Looking through that, Aubrey seems to have had numerous short term commands but then generally returning to the Surprise, which is only a Unite class frigate so would short-change him at higher ranks. I suggest:
Start at rank 3 (Lieutenant) with HMS Sophie (HMS_Sophie), then the following promotion list:
4 / Senior Lieutenant: HMS Polychrest (RN_Volage, preferably a variant with carronades)
5 / Commander: HMS Surprise (RN_Surprise)
6 / Post Captain: HMS Leopard (RN_Warship)
7 / Commodore: companion HMS Diane (RN_Essex)
8 / Rear Admiral: HMS Bellona (HMS_Bellona)
9 / Vice Admiral: companion HMS Pomone (RN_Essex or RN_BattleFrigate)
10 / Admiral: companion HMS Suffolk (RN_Superbe)

As far as I can tell from the list, Aubrey never got anything bigger than a 3rd rate, so he has to do what Dutch and Portuguese officers do anyway, which is get an extra companion ship.
 
Why not do both? Define the Inventor character type who jump starts straight to a steam frigate but has poor sailing and leadership, so he can't use it very well at first; and also define our own fictitious naval officer who gets an exception at rank 6 to guarantee him a steam frigate, otherwise he uses regular American promotion ships. Just so long as regular officers don't get steam frigates more often and they don't show up more often as non-player ships.
Sounds OK to me! We'd get two extra characters instead of one, which could clutter up the starting choices.
But two isn't that many anyway, so no problems there!

Looking through that, Aubrey seems to have had numerous short term commands but then generally returning to the Surprise, which is only a Unite class frigate so would short-change him at higher ranks. I suggest:
Start at rank 3 (Lieutenant) with HMS Sophie (HMS_Sophie), then the following promotion list:
4 / Senior Lieutenant: HMS Polychrest (RN_Volage, preferably a variant with carronades)
5 / Commander: HMS Surprise (RN_Surprise)
6 / Post Captain: HMS Leopard (RN_Warship)
7 / Commodore: companion HMS Diane (RN_Essex)
8 / Rear Admiral: HMS Bellona (HMS_Bellona)
9 / Vice Admiral: companion HMS Pomone (RN_Essex or RN_BattleFrigate)
10 / Admiral: companion HMS Suffolk (RN_Superbe)

As far as I can tell from the list, Aubrey never got anything bigger than a 3rd rate, so he has to do what Dutch and Portuguese officers do anyway, which is get an extra companion ship.
Sounds good to me! Though RN_Warship is quite an ugly model, so if you can find an alternative for that one, that might be welcome.
 
Why not do both? Define the Inventor character type who jump starts straight to a steam frigate but has poor sailing and leadership, so he can't use it very well at first; and also define our own fictitious naval officer who gets an exception at rank 6 to guarantee him a steam frigate, otherwise he uses regular American promotion ships. Just so long as regular officers don't get steam frigates more often and they don't show up more often as non-player ships.
How's this for starters?
upload_2015-5-25_13-33-27.png

We can just re-purpose the "Engineer" player type. ;)
 
Sounds good to me! Though RN_Warship is quite an ugly model, so if you can find an alternative for that one, that might be welcome.
It's not as sleek as a frigate, but that's the point - Aubrey didn't get a frigate at that time, he got a ship of the line, and according to the quote in the list, Leopard was indeed not a pretty ship.

Maybe have him keep the Surprise at rank 6, get the Bellona ahead of schedule at rank 7 (Commodore, which is the rank at which he really got Bellona), then get the Pomone as companion at rank 8 and the Surprise again as companion at rank 9. The list does show Aubrey having short term command of several ships in 1813, then returning several times to Surprise.
 
Programming question - is this structure legal?
Code:
if (GetMySimpleName(PChar) == "Horatio Hornblower")
{
       GiveShip2Character(PChar, "HMS_Bellona", "Sutherland", -1, ENGLAND, true, false); // Bellona class 3rd Rate
}
else if (GetMySimpleName(PChar) == "Jack Aubrey")
{
        GiveShip2Character(PChar, "HMS_Bellona", "Bellona", -1, ENGLAND, true, false); // Bellona class 3rd Rate
}
else
{
[other stuff]
}

Or can I do something like:
Code:
switch (GetMySimpleName(PChar))
case "Horatio Hornblower":
    GiveShip2Character(PChar, "HMS_Bellona", "Sutherland", -1, ENGLAND, true, false); // Bellona class 3rd Rate
break;

case "Jack Aubrey":
    GiveShip2Character(PChar, "HMS_Bellona", "Bellona", -1, ENGLAND, true, false); // Bellona class 3rd Rate
break;
[other stuff]
So that if the character name matches one of the cases then it will give him the relevant ship, otherwise it drops through to [other stuff], which is the period-dependent switch and cases for regular officers.
 
Programming question - is this structure legal?
Code:
if (GetMySimpleName(PChar) == "Horatio Hornblower")
{
       GiveShip2Character(PChar, "HMS_Bellona", "Sutherland", -1, ENGLAND, true, false); // Bellona class 3rd Rate
}
else if (GetMySimpleName(PChar) == "Jack Aubrey")
{
        GiveShip2Character(PChar, "HMS_Bellona", "Bellona", -1, ENGLAND, true, false); // Bellona class 3rd Rate
}
else
{
[other stuff]
}
You don't even need the extra else there. This would work:
Code:
if (GetMySimpleName(PChar) == "Horatio Hornblower")
{
       GiveShip2Character(PChar, "HMS_Bellona", "Sutherland", -1, ENGLAND, true, false); // Bellona class 3rd Rate
}
if (GetMySimpleName(PChar) == "Jack Aubrey")
{
        GiveShip2Character(PChar, "HMS_Bellona", "Bellona", -1, ENGLAND, true, false); // Bellona class 3rd Rate
}
else
{
[other stuff]
}
If you do want the else, you probably need the brackets to match:
Code:
if (GetMySimpleName(PChar) == "Horatio Hornblower")
{
       GiveShip2Character(PChar, "HMS_Bellona", "Sutherland", -1, ENGLAND, true, false); // Bellona class 3rd Rate
}
else
{
        if (GetMySimpleName(PChar) == "Jack Aubrey")
        {
                GiveShip2Character(PChar, "HMS_Bellona", "Bellona", -1, ENGLAND, true, false); // Bellona class 3rd Rate
        }
        else
        {
        [other stuff]
        }
}
The second one with the else is probably safer because it avoids the [other stuff] from being executed for Hornblower.
That is why so far I have put the character-specific stuff after the generic so that anything generic is overwritten later.
Admittedly not the nicest solution, because some times you actually get TWO ships right after each other.
The player wouldn't notice as the second ship overwrites the first, but that is still more code being executed than necessary.

Or can I do something like:
Code:
switch (GetMySimpleName(PChar))
case "Horatio Hornblower":
    GiveShip2Character(PChar, "HMS_Bellona", "Sutherland", -1, ENGLAND, true, false); // Bellona class 3rd Rate
break;

case "Jack Aubrey":
    GiveShip2Character(PChar, "HMS_Bellona", "Bellona", -1, ENGLAND, true, false); // Bellona class 3rd Rate
break;
[other stuff]
So that if the character name matches one of the cases then it will give him the relevant ship, otherwise it drops through to [other stuff], which is the period-dependent switch and cases for regular officers.
That looks even better! Also allows easily adding more characters in the future without heavily rewriting the code.
In fact, I think I had a switch exactly like that one in the Free Play StartStoryline.c for a while until I figured out we didn't actually need it there.
But it does work. You have to add the brackets though:
Code:
switch (GetMySimpleName(PChar))
{
    case "Horatio Hornblower":
        GiveShip2Character(PChar, "HMS_Bellona", "Sutherland", -1, ENGLAND, true, false); // Bellona class 3rd Rate
    break;

    case "Jack Aubrey":
        GiveShip2Character(PChar, "HMS_Bellona", "Bellona", -1, ENGLAND, true, false); // Bellona class 3rd Rate
    break;
    // default:
    [other stuff]
}
 
That looks even better! Also allows easily adding more characters in the future without heavily rewriting the code.
In fact, I think I had a switch exactly like that one in the Free Play StartStoryline.c for a while until I figured out we didn't actually need it there.
But it does work.
Thanks! Yes, that's exactly why I wanted to replace it with a "switch" section. It was already about to get very messy using "if" to do different things for different commodores, the problem being I can't just add a simple line at the bottom of that rank's promotions because by default they get a companion ship whereas Hornblower and Aubrey are both getting a new single ship. Commodore Nelson, by contrast, gets a frigate as a companion so he fits into the normal structure much more easily. So at Commodore level, any new character who gets a single ship does it via another "case", whereas any new character who gets a companion ship can be added with a simple "if" statement along with Nelson's.
 
@Grey Roger: You mentioned that you want to generate a player ship with specific cannons installed.
You can do that by replacing the -1 in the GiveShip2Character with the cannon type from cannons.h
 
Try this. A couple of ships have been switched round between "Revolutions" and "Napoleonic" after I found out when "Napoleonic" actually starts. And it turns out I don't need to give "RN_Volage" carronades because that's what it gets by default anyway.

At rank 7 I've set up a "switch (GetMySimpleName(PChar))" block because Aubrey and Hornblower both get their own 3rd rate Bellona here while everyone else gets a companion ship. At rank 8 it's the other way round, Aubrey and Hornblower get a companion frigate while everyone else gets their own 3rd rate. At rank 9 there's a "switch (GetMySimpleName(PChar))" block which only has a case for Aubrey, along with the default, but if a future character needs to be added who receives another companion when everyone else gets 1st rate then the mechanism is in place.

(Edit: file deleted, better one available in a later post.)
 
Last edited:
Try this. A couple of ships have been switched round between "Revolutions" and "Napoleonic" after I found out when "Napoleonic" actually starts. And it turns out I don't need to give "RN_Volage" carronades because that's what it gets by default anyway.
Getting better and better!
One thing to point out is that Nelson starts in Revolutions and Aubrey in Napoleonic.
I think that means that Nelson now no longer gains command of HMS Victory. :shock
 
Getting better and better!
One thing to point out is that Nelson starts in Revolutions and Aubrey in Napoleonic.
I think that means that Nelson now no longer gains command of HMS Victory. :shock
Good point. The problem is that the real Nelson's career crossed over the time period so I'd forgotten that in this game he's stuck in his early years. I've now forced him to get both his own HMS Victory and Collingwood's HMS Queen Charlotte. Aubrey already had his own special code for all higher ranks so should not be affected.
 
Last edited:
In case you're interested, in attached file I gave every rank a name-switch like the one you've set up.
So no more character-based if-statements after already getting the generic ship. Not technically necessary, but certainly a "cleaner" solution.
This also makes the character exceptions more uniform and hopefully less confusing.

According to this page, Collingwood commanded HMS Royal Sovereign during the Battle of Trafalgar though. :confused:
http://en.wikipedia.org/wiki/Cuthbert_Collingwood,_1st_Baron_Collingwood#Battle_of_Trafalgar
 

Attachments

  • NK.zip
    27.5 KB · Views: 166
Hmm, you're right - I wonder where I got the idea that he had the HMS Queen Charlotte? :confused:

The idea of making the name switch the standard way of adding characters at all ranks is good. We may eventually need to use it on the other nations if anybody ever bothers to suggest any more non-British naval heroes.

And on that note, everyone:
If you would like another naval hero, please give his name and a full list of his ships, by name and type. I don't mind doing the work to add him but I'm not going to do all the research - if you want your hero added, you can do the homework!
 
Last edited by a moderator:
And on that note, everyone:
If you would like another naval hero, please give his name and a full list of his ships, by name and type. I don't mind doing the work to add him but I'm not going to do all the research - if you want your hero added, you can do the homework!
I agree so much that I took the liberty to make your heading as large as the forum would let me. ;)
 
I've now finally tried out the new system, and I have to say that it is quite ingenious. I have a few points that I think needs attention though:


  • The Nelson start gives you the rank "Commander" (with 22 relation points) and the 6th rate frigate "Blanche" rather than HMS Badger.
Personally I'd much prefer that the Nelson start was modelled closer to how I made it - I didn't choose the date, place, ship, and officers by chance. I can understand and accept that the ranking system has to be off, but as long as he has the correct ship at the correct date with as correct officers as possible, that'd be all good. In general I think you've been pretty faithful to what I made, though, only removing a few of the officers I gave him. All in all I'm pretty OK with how you've made him (or intended to make him). I'm looking forward to trying him out when he works properly.

  • The Aubrey start also gives you the rank "Commander" (also with 22 relation points) and the Unité class frigate "Lively" rather than the HMS Sophie (as you intended).
Again, I don't think what you intended works very well. I can't see why this specific start can't let Jack Aubrey begin with HMS Surprise just like I'd set it up. I searched specifically for an instance where Jack was in the Caribbean with his own command, and it so happened that this was the case in the year I chose (1813) after having sailed the Pacific with the old Surprise. Also here did I research which officers he had on board, though I couldn't confirm that many (and I'm quite fine with adding a few extra to fit with the general structure). I'm sure some players would prefer starting somewhere mid-career rather than from the beginning, and Jack Aubrey is so related (by blood) to HMS Surprise that I think most people would prefer him to start with that. (It's also quite ludicrous to have him sail HMS Sophie in the Caribbean in 1813 when he was well into his captaincy).

  • I could not find any of the standard British officers in the character selection screen when I wanted to make a custom naval officer.
This would be ideal to have within the "officer" and "british" group.

  • Starting a custom naval officer career gives you the same rank and ship as in the Nelson start (Commander of 6th rate frigate "Blanche").
Obviously something is wrong here.


EDIT:
Though now I can't seem to replicate the custom naval officer getting Nelson's stuff. Now every time I try (in various time periods) I get no officers and no ship at all...
 
Last edited:
I've now finally tried out the new system, and I have to say that it is quite ingenious. I have a few points that I think needs attention though:


  • The Nelson start gives you the rank "Commander" (with 22 relation points) and the 6th rate frigate "Blanche" rather than HMS Badger.
...
  • The Aubrey start also gives you the rank "Commander" (also with 22 relation points) and the Unité class frigate "Lively" rather than the HMS Sophie (as you intended).
Both would probably be best to start at rank 3, "Lieutenant", so that they can get the full range of promotion ships. This may not match up with the actual ranks at which they got those ships (neither does Michiel De Ruyter's sequence) but it's the only way to get a full range of ships, not to mention avoiding short-changing those officers by giving them tiddlers at a rank at which regular naval officers get frigates. Even then there aren't enough promotion stages to allow Nelson to get all his ships, which is why you won't get the Boreas. (Besides, that was yet another 6th rate frigate, so arranging for Nelson to get it might be realistic but it would also be boring.)

In any case, those starting ships don't match what I've set up in the promotion sequence. If they were to start earlier and get promoted to rank 5, "Commander", then Nelson ought to receive the Lyme class frigate Albemarle and Aubrey ought to receive the Unité class frigate Surprise, which from what I was reading was the ship he used for most of his career. (Nelson has no business receiving the Blanche at all! He went through several 6th rate frigates, none of them Blanche, before going straight to the 3rd rate ship of the line Agamemnon.)
 
Back
Top