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

Limiting ships to certain nations

Yea of course. ARGH! <img src="style_emoticons/<#EMO_DIR#>/urgh.gif" style="vertical-align:middle" emoid=":urgh" border="0" alt="urgh.gif" />
 
<!--quoteo(post=219741:date=Nov 1 2007, 11:03 AM:name=Pieter Boelen)--><div class='quotetop'>QUOTE(Pieter Boelen @ Nov 1 2007, 11:03 AM) [snapback]219741[/snapback]</div><div class='quotemain'><!--quotec-->Personally I can't see Spain or Portugal using any frigates and corvettes. I always associate Spain with galleons and Portugal with Caravels.<!--QuoteEnd--></div><!--QuoteEEnd-->
<!--quoteo(post=219814:date=Nov 1 2007, 06:16 PM:name=Pieter Boelen)--><div class='quotetop'>QUOTE(Pieter Boelen @ Nov 1 2007, 06:16 PM) [snapback]219814[/snapback]</div><div class='quotemain'><!--quotec-->Personally when I think of Portuguese ships, I think of Caravels. Perhaps you could tell me which ships would be more realistic for the Portuguese to use?<!--QuoteEnd--></div><!--QuoteEEnd-->

Come on ! How can you wrote that?!? You must be kidding! Yeah in the XV-XVI Portugueses explored the African coast with Caravels, and Galions were used a lot by Spain for sailing to America in the XVI, so that's why we think at those when we hear about Spain of Portugal... But hell in the following centuries they built other ships like any other european countries ! Come on, do you really expect the Spanish ships that fighted at Trafalgar on French side to be tiny caravels, or fat galleons ?!?
 
No, I don't really expect that. My opinion is based on anything but historical realism. It's just what I *think* of when I think about Spanish or Portuguese ships. I, however, KNOW my opinion is incorrect. I just don't know what WOULD be historically accurate, due to my lack of knowledge on the case. Therefore I could use some help from you and Bartolomeu to establish what ships the Spanish and Portuguese SHOULD use.

So has anybody done any experimenting with this yet? We can talk all we want about what nations should use which ships, but we first need to figure out the way to acchieve it in the game. That being said: So what ships SHOULD each nation use? I do think it'd be fun if Galleons and Caravels would be limited to Spain and Portugugal, but of course the normal ships like Battleships, Schooners, etc. should still also be available to those nations.

Basically I think that generic ships should be used by all nations, but each nation should have a couple of nation-specific ships:
England: Black and yellow navy ships
France: Red and black navy ships
Spain: Galleons, Treasure Galleons, War Galleons, etc.
Portugal: Caravels, Light Caravels, etc
Holland: Spiegelretourschip and Fleut
Pirate: Privateer and Xebec
Generic: Schooners, Luggers, Battleships, Sloops, etc.

Does anyone think pirates should not use any overly big ships by default? Pirates using Battleships and Manowars? Seems odd to me. Corvettes and Frigates they could perhaps use, but not anything larger than that.

Please note: This is not meant to reflect 100% historically accuracy. For me distinguishing between the different countries is more important than historical realism. That being said, history could give a major clue on how to best assign ship types. But even if fleuts would be used by all nations in real life, I would still suggest limiting them to the Dutch only, simply for the sake of differentiating between the countries. Added plus is that you can sometimes guess the nation of a ship based on the ship type. This could be good fun in combination with the DirectSail mod.
 
While we're on the subject on ships: I was thinking of Lineships vs original game Black Pearl. Does anyone think that the original game's Black Pearl should simply be made into a Lineship? We have no purpose for the old Pearl anymore as cursed ship, do we? And while we're at it, I would also rename "theBlackPearl" to "BlackPearl".
 
Agreed about your last two posts. <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt="smile.gif" />

(the "special version" is on the ftp)
 
<b>Attention</b>

I have got a new nation specific ship for you: My I present to you, gentlemen: The Dutch Frigate:
<img src="http://i93.photobucket.com/albums/l68/Thomas_the_Terror/DutchFrigateingame.jpg" border="0" class="linked-image" />
It is not released yet.

I thank Petros for making his nice Fleut4_50. A big part of this frigate has parts of his ship in it. Without that it wouldn't be that dutch-alike <img src="style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />.
 
VERY nice! Can't wait to try her out in my game. <img src="style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
 
I put in this in my game:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->        if (sti(rShip.nation) != iNation) { continue; } // PB
        if (sti(rShip.napoleonic) == true && !NAPOLEONIC_ERA) { continue; } // PB<!--c2--></div><!--ec2-->
Let's see what it does. I'll try to check all ships, add stern flags to most of them (from the Russian mods), fix their ships_init.c entries, set their <i>.nation</i> attribute and also add the <i>.napoleonic</i> attribute to the ships that should have it. Since we have about 200 ships currently, that is going to be quite a job. <img src="style_emoticons/<#EMO_DIR#>/piratesing.gif" style="vertical-align:middle" emoid=":shock" border="0" alt="piratesing.gif" />

<!--quoteo(post=219691:date=Oct 31 2007, 10:18 PM:name=Pieter Boelen)--><div class='quotetop'>QUOTE(Pieter Boelen @ Oct 31 2007, 10:18 PM) [snapback]219691[/snapback]</div><div class='quotemain'><!--quotec-->I also see the following code in there:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->        if(CheckAttribute(rShip,"skipnat"+iNation)) //so you can skip nations too
        {
            string tmp = "skipnat" + iNation;
            if(sti(rShip.(tmp))) { continue; }
        }<!--c2--></div><!--ec2-->Could it be that this code was meant for the exact same purpose I propose above? If so, we could use that instead. But how would it work? Add a <i>refShip.skipnatENGLAND = true;</i> to a ship's ships_init.c entry for example? That looks like an oddish line of code and I wonder if that would actually work. <img src="style_emoticons/<#EMO_DIR#>/wacko.gif" style="vertical-align:middle" emoid=":wacko:" border="0" alt="wacko.gif" /><!--QuoteEnd--></div><!--QuoteEEnd-->Can anybody make heads or tails of this? I don't understand this code and don't know how to use this. <img src="style_emoticons/<#EMO_DIR#>/wacko.gif" style="vertical-align:middle" emoid=":wacko:" border="0" alt="wacko.gif" />
 
<!--quoteo(post=220015:date=Nov 3 2007, 09:28 AM:name=Pieter Boelen)--><div class='quotetop'>QUOTE(Pieter Boelen @ Nov 3 2007, 09:28 AM) [snapback]220015[/snapback]</div><div class='quotemain'><!--quotec-->Basically I think that generic ships should be used by all nations, but each nation should have a couple of nation-specific ships:
England: Black and yellow navy ships
France: Red and black navy ships
Spain: Galleons, Treasure Galleons, War Galleons, etc.
Portugal: Caravels, Light Caravels, etc
Holland: Spiegelretourschip and Fleut
Pirate: Privateer and Xebec
Generic: Schooners, Luggers, Battleships, Sloops, etc.

Does anyone think pirates should not use any overly big ships by default? Pirates using Battleships and Manowars? Seems odd to me. Corvettes and Frigates they could perhaps use, but not anything larger than that.<!--QuoteEnd--></div><!--QuoteEEnd--> I'd vote yes for all that, and I perfectly agree concerning big pirates ships.
<!--quoteo--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--quotec-->I do think it'd be fun if Galleons and Caravels would be limited to Spain and Portugal, but of course the normal ships like Battleships, Schooners, etc. should still also be available to those nations.<!--QuoteEnd--></div><!--QuoteEEnd-->On the long term, I'd prefer as you can guess a toogle like the one your talking about for 'Napoleonic' ships, but for XVI century ships. But I perfectly understand your point of view. However, don't withdrow Frigates to them please!

<!--quoteo--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--quotec-->Please note: This is not meant to reflect 100% historically accuracy. For me distinguishing between the different countries is more important than historical realism. That being said, history could give a major clue on how to best assign ship types. But even if fleuts would be used by all nations in real life, I would still suggest limiting them to the Dutch only, simply for the sake of differentiating between the countries. Added plus is that you can sometimes guess the nation of a ship based on the ship type. This could be good fun in combination with the DirectSail mod.<!--QuoteEnd--></div><!--QuoteEEnd-->
What? Only Dutch fleuts? No, please! What could be done on the contrary is to assign to each nation some ships that would be more frequently used then others. Which means : Dutchs would use Fleuts very often, much more than other nations - what do you say of this?
 
I don't intend to withdraw frigates. Don't worry. That'd be silly. As for only Dutch fleuts: It was just a thought. I think Fleuts are a Dutch design by origin. Though I might be wrong. Like usual, when it comes to historical accuracy. In any case: I want more special Dutch ships in the game. Preferrably ones with green sterns like the Spiegelretourschip and Petros' Dutch Fleut.
 
My original code causes quite an abundance of error messages, so hereby the fixed code:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->        if (CheckAttribute(rShip,"nation") && sti(rShip.nation) != iNation) { continue; } // PB
        if (CheckAttribute(rShip,"napoleonic") && !NAPOLEONIC_ERA) { continue; } // PB<!--c2--></div><!--ec2-->
I added the flags from the Russian mod to all the ships I could. So in my game now all the big ships have got stern flags, including the Manowars, Battleships, Frigates, Corvettes, Galleons, Pinnaces and Lineships. Additionally the Manowar2, Xebec3 and the Lineships now have alternate rigging. Also I renamed all "BlackPearl" versions into "Lineship" and all "Fearless" versions into "Warship". I then renamed "theBlackPearl" into "BlackPearl". Now I need to clean up ships_init.c and add the <i>.nation</i> and <i>.napoleonic</i> attributes.
 
one side-effect of this that you might have missed is that you can now recognise of which nation the ships are from a far bigger distance. which is a good thing, in fact.
 
I am very much aware of that. And I really like that. Especially combined with the DirectSail mod. That being said, there will still be generic ships and these won't be that easily recognisable. Until you can see the flag or your spyglass just tells you. But I added flags to many ships as well, so you'll see the flag earlier. I like the idea of the player being smarter than his digital spyglass. Once you get some experience with it, you can see what kind of ship is ahead of you before the computer tells you. <img src="style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
 
i can determine a barque from a yacht when standing in greenford port. how's that? i can also see which ammo the enemy is using, while fighting in a storm, cannonballs flying past my nose, only visible fore a split second. and distinguishing balls from bombs isn't exactly very easy to do when fighting a ship battle in a storm! apart from that, it's absolute madness.
 
LOL. That's impressive. <img src="style_emoticons/<#EMO_DIR#>/doff.gif" style="vertical-align:middle" emoid=":doff" border="0" alt="doff.gif" />
 
This is one hell of a good idea, Pieter, and nice to see it worked in the first attempt <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt="smile.gif" />

From the Bartolemou o portugese´s short tempered reply, I can see a lot of emotions involved in this <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt="smile.gif" /> Perhaps setting a "commission" of people from the respective nations involved in order to solve out what ships are specific for what nation would be an idea? Also, this could be the THE opportunity to sort out all the different ships from different eras? <img src="style_emoticons/<#EMO_DIR#>/smile.gif" style="vertical-align:middle" emoid=":)" border="0" alt="smile.gif" />
 
I don't know yet if it works. So far I have not observed it working in my game. But then there aren't many ships that have the .nation attribute set yet, so naturally it won't be obvious even if it does work.

As far as different eras are concerned: I prefer to keep things simple at the moment. So I'd just distinguish between Napoleonic ships and non-Napoleonic ships. If the Napoleonic Era is ON, ALL ships, including the Napoleonic ones, will be used. If the Napoleonic Era is OFF, the Napoleonic ships are not encountered at sea, but can still be bought from the shipyards if the player chooses to do so. This can also be prevented, but I didn't bother yet so far because the on-sea encounters have my priority at the moment.

I agree that it would be a good idea for people of the various nationalities to decide the proper ship assignment. This would really help me because I don't have much historical knowledge at all. That being said, I don't think we should strive to be 100% historically accurate in this respect. Gameplay should come first and therefore I find it the most important to actually obviously differentiate between the various nations. I expect that in the real world, all the nations used all types of ships, but really that would not improve the gameplay at all. I think it's much more interesting gameplay-wise if certain ships are only used by certain nations. In real life you might even encounter a French red-and-black ship that is used by the British because it's been captured. I don't think we need to simulate that in our game either.

Basically we must keep in mind the difference between historical realism and interesting gameplay. Wherever historical contributes to the gameplay, we should opt for the historical realism. But if historical realism decreases the gameplay value, we should ignore the histrorical realism and go with what works best in the game. Also we should try and acchieve this all in the simplest possible way with the least possible effort.
 
It is not very often that the british use the same colours as the Nation which ship they captured. If I am correct they mostly repainted her in the nation's colour scheme, and changed the name.
 
They probably did, but in theory it could happen. Especially if the ship has only recently been captured and is on her way back to Britain.
 
We can also limit the availability of certain ships from the shipyards. PROGRAM\Ships\Ships.c:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->void FillShipsList(ref NPChar)
{
    DeleteAttribute(NPChar, "shipyard");

    //npchar.shipyard.ship1 = SHIP_TARTANE;
    int NPCNumShips = 0;
    string attr;
    int i, iClass;
    int shipnation = -1;
    int iNation = sti(NPChar.nation);
    ref rShip;
    aref curship; // PRS3

    int iClassMin = 7; //no minimum class
    int iClassMax = 3;

    //now we can do this via townsack.
    string sTownName = "";
    if(CheckAttribute(Locations[FindLoadedLocation()],"townsack"))
    {
        sTownName = Locations[FindLoadedLocation()].townsack;
    }
    else { sTownName = GetTownIDFromGroup(Stores[GetCharacterCurrentStore(GetMainCharacter())].group); }
    if(SHIPYARD_SELL_ALL_CLASSES) iClassMax = 1; // NK 05-03-19 add toggle to class limiting
    else
    {
        if(sTownName != "")
        {
            if(GetTownSize(sTownName) >= (STORE_MINSIZE/2)) iClassMax = 3;
            if(GetTownSize(sTownName) >= STORE_MINSIZE) iClassMax = 2;
        }
    }
    if(iNation == PIRATE) iClassMax = 1;
    for (i=0; i<SHIP_TYPES_QUANTITY; i++)
    {
        shipnation = -1;
        rShip = GetShipByType(i);
        iClass = MakeInt(rShip.Class);
        if (iClass > iClassMin) { continue; }
        if (iClass < iClassMax) { continue; }
        if (sti(rShip.CanBuy) != true) { continue; }
        if(CheckAttribute(rShip,"Nation")) shipnation = sti(rShip.Nation);
        if(shipnation != -1 && shipnation != iNation) { continue; }
        string tmp = "skipnat"+iNation;
        if(CheckAttribute(rShip,tmp)) { if(sti(rShip.(tmp))) continue; } // PRS3
        if(Rand(makeint(retmax(0,SHIPYARD_CHANCE_CLASS-1-iClass)))) { continue; } // NK 05-03-31 change this from 7 to define.
        shipnation = iNation;
        if(frnd() < SHIPYARD_CHANCE_OTHERNATION)
        {
            // loop until find available other nation. Note, to avoid infinite loop checking capped at 50.
            shipnation = rand(MAX_NATIONS - 1);
            tmp = "skipnat"+shipnation;
            for(int n = 0; n < 50; n++)
            {
                if(!CheckAttribute(rShip,tmp)) break;
                if(sti(rShip.(tmp)) == 0) break;
                shipnation = rand(MAX_NATIONS - 1);
                tmp = "skipnat"+shipnation;
            }
        }
        NPCNumShips++;
        attr = "ship"+NPCNumShips;
        NPChar.shipyard.(attr) = i;
        // PRS3 -->
        makearef(curship, NPChar.shipyard.(attr));
        SetRandomStatsToShip(curship, i, shipnation);
        // PRS3 <--
    }<!--c2--></div><!--ec2-->
We see here code similar to the code found in AIFantom.c, so we can add the same lines here:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->    if (CheckAttribute(rShip,"nation") && sti(rShip.nation) != iNation) { continue; } // PB
    if (CheckAttribute(rShip,"napoleonic") && !NAPOLEONIC_ERA) { continue; } // PB<!--c2--></div><!--ec2-->However, I think that in this case we don't need to add the nation check at all, because there is already code for this in this function that makes it so that ships of other nations are very rarely found at shipyards. The chance for this is set in InternalSettings.h. So we can suffice with just the Napoleonic check. Does anyone think that Napoleonic ships should be available for purchase when the NAPOLEONIC_ERA toggle is OFF?

This code also explains why class 1 ships can't be bought from the shipyards:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->    if(SHIPYARD_SELL_ALL_CLASSES) iClassMax = 1; // NK 05-03-19 add toggle to class limiting
    else
    {
        if(sTownName != "")
        {
            if(GetTownSize(sTownName) >= (STORE_MINSIZE/2)) iClassMax = 3;
            if(GetTownSize(sTownName) >= STORE_MINSIZE) iClassMax = 2;
        }
    }
    if(iNation == PIRATE) iClassMax = 1;<!--c2--></div><!--ec2-->Should anything be changed in this respect? There already is a SHIPYARD_SELL_ALL_CLASSES toggle, so perhaps we can just leave this as-is. That being said, why should pirates sell all classes and not the other nations? I would personally expect pirates to sell only the smaller and more agile ships, up to class 2. Pirate Battleships and Manowars? Doesn't that strike you as... odd?
 
Back
Top