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

suggestions...

zorglub

Privateer
Storm Modder
I've recently met again some guys I knew who had being playing this game. They had stopped 'because of all thoses tiresome bugs'. I found some of their ideas interesting, so I've decided to post them here :

1) enconters at sea

Currently there are two types of ships for non-pirates Nations : merchant or navy ships. They were suggesting to have three types for each nations, which to say : merchant, military, or corsair.
They would of course have different kind of ships, but different boarding fighters' model as well : the soldiers model would only be for military ships, the corsairs would have pirates-like fighters, and all of them would have nation-related sailors models that would have to be created. I personaly think the boarding models thing is maybe to much work to do for now, but in the future, why not?... Pirates would be only of two types : merchants (very small ships with contraband goods) and corsairs.

2) you as an officer

They told me they would enjoy playing a character who isn't necessary the captain of the ship, like an officer. On sea mode you would control the ship the same way as now, but your status, the other officers dialogs, the things you have to do at land would be different.
In fact for what I've understand it seems that even if they like to have a main character that is a kind of yourself ingame, they would prefer the game to be less egocentric, like if there were really a team onboard - especially if you're playing a pirate ship, in which the captain is elected. That's a bit like what Pieter (and I too!) is expecting from the officers one day, to be more important and to have more scenes of daily life onboard the ship.

3) crew money/your money

A thing they didn't like was that you don't care about your own money (what you earn at the end of the month or when you divide the booty), as you cannot do anything with it ingame. Even when you play cards that's not with your money (the crew should mutiny if you loose all of it!). This money isn't concret, you cannot see it in your inventory, nobody can rob it form you, etc. I recall I had talked about some aspects of that before. For the rest of that post, I'll use the expression 'crew' money' for the money you use every time and 'your money' for the one you personnaly own.
- if you are a merchant and you own your ship : only one type of money, and it's yours. You pay your crew by monthly salary.
- if you are a captain working for a trading/ship owners' company : 'crew money' = the company's money, as the ship. You pay the crew and officers with it, as a monthly salary, you get pay yourself when you've done your job (or at the same time than the rest of the crew?) We can imagine something similar if you're a navy captain.
- if you are a corsair : 'crew money' = the booty + what is necessary for repairing your ship, buying food etc. You have to divide it in a port of the Nation you serve (who gets 1/3, 1/4 or 1/5 of it), between you who gets the biggest part and all the officers and crew on a hierarchical way. (the biggest part for the captain, then the first mate, etc, to the crew mate.)
- if you are a pirate : same way but you can divide it whenever you want and anywhere, but you wouldn't get a huge part - let's say just a double part. Normally wounded crewmen should get more, but that's difficult to code ingame...



So what do you say?
 
Interesting thoughts for sure. <img src="style_emoticons/<#EMO_DIR#>/yes.gif" style="vertical-align:middle" emoid=":yes" border="0" alt="yes.gif" />

1) So the corsairs would be more like privateers? I think it would be awesome to have nation-specific non-soldier boarder models. But more important for me would be to have captain-like captain models. How frequently do you capture a ship to see a captain who doesn't look like a captain AT ALL? Let me rephrase that: How frequently DOES the captain look like a captain? Not very often at all. I find that very bothersome and stupid.

2) It would be nice, but REALLY complicated. Rather than the player BEING the officers, I think the player's officers should get a MUCH larger role in the game. But you already know that. Also in the <a href="http://www.piratesahoy.com/forum/index.php?showtopic=11099" target="_blank">BuildSettings</a> thread I suggested to add preset player profiles, some of which would be British Royal Navy officers. These navy officers would start the game already having a Letter of Marque. So that way you could play the game as Midshipman in the navy and work your way up. That would be somewhat similar to the player being the officer, only you DO get to captain your own ship straight from the start. But even midshipmen occasionally got to captain a prizeship. See the Hornblower novels and films.

3) There already is two types of money: "crew money" and "personal wealth". However, "crew money" is used for EVERYTHING and "personal wealth" for nothing. The wealth is only used to calculate how well-known you are as a pirate and you can donate it to the crew to do something with it. So the question would be: What things should be done from personal wealth and what from crew money? And how should you gain personal wealth and how should you gain crew money?
 
YOUR money can NOT get stolen. The crew's money can get stolen. Not your personal wealth.
 
that was what i was talking about. you can just think a bit more about such things, you know. <img src="style_emoticons/<#EMO_DIR#>/icon_wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="icon_wink.gif" />
 
It's confusing when you refer to "crew money" as "your money". After all: YOUR money is your personal wealth and that can't be stolen. But you can't do anything with it either. Until you donate it to the crew, that is.
 
that's true, but i usually consider the crew's money as my money cos i'm the only one who uses it.
 
I understand. That is true. But if we are discussing the differentiating between the two, it's better to use the right terms to prevent confusion. So it's "personal wealth" and "crew money". It is also referred to as "wealth" and "money" in the code of the game. <img src="style_emoticons/<#EMO_DIR#>/yes.gif" style="vertical-align:middle" emoid=":yes" border="0" alt="yes.gif" />
 
just for the record, wasn't your personal wealth used to improve your weapons? that doesn't seem to be working anymore. it's just substracted from the crew's money.
 
There's a setting for that in BuildSettings.h that is OFF by default. So by default fixing weapons is done from the crew's money, but when turned on it is indeed done from your personal wealth. <img src="style_emoticons/<#EMO_DIR#>/yes.gif" style="vertical-align:middle" emoid=":yes" border="0" alt="yes.gif" />
 
I agree about all the stuff what have mentioned here. <img src="style_emoticons/<#EMO_DIR#>/yes.gif" style="vertical-align:middle" emoid=":yes" border="0" alt="yes.gif" />

Captains SHOULD indeed look like captains there were VERY few times when i have boarded a enemy ship and seen a REAL captain ...most of the time well ...i once boarded a warship what was surrendered and guess what? that ship was captained by a fisherman. <img src="style_emoticons/<#EMO_DIR#>/24.gif" style="vertical-align:middle" emoid=":rofl" border="0" alt="24.gif" />
 
That is EXACTLY what I'm talking about. It is caused by this function in PROGRAM\SEA_AI\AIFantom.c:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// ADDED BY MAXIMUS ==>
void Fantom_SetRandomModel(ref rFantom, string sFantomType)
{
    string    sEnManModels, sFrManModels, sSpManModels, sHoManModels, sPoManModels, sPiManModels, sModel;
        switch (sFantomType)
        {
            case "war":
                sEnManModels = "Offic_eng,Soldier_eng,Soldier_eng2,Soldier_eng3,Soldier_eng4,Soldier_eng5,Soldier_eng6";
                sFrManModels = "Offic_fra,Soldier_fra,Soldier_fra2,Soldier_fra3,Soldier_fra4,Soldier_fra5,Soldier_fra6";
                sSpManModels = "Offic_spa,Soldier_spa,Soldier_spa2,Soldier_spa3,Soldier_spa4,Soldier_spa5,Soldier_spa6";
                sHoManModels = "Offic_hol,Soldier_hol,Soldier_hol2,Soldier_hol3,Soldier_hol4,Soldier_hol5,Soldier_hol6";
                sPoManModels = "Offic_por,Soldier_por,Soldier_por2,Soldier_por3,Soldier_por4,Soldier_por5,Soldier_por6";
                sPiManModels = "50evl2in,50FatJack,50M5,corsair1_1,corsair1_2,corsair1_4,wurmwoode,pirat1,pirat2,pirat3,pirat4,pirat5,pirat6,pirat7,pirat8,pirat10,pirat11,pirat11_A1,pirat11_A2,pirat11_A3,pirat13,sailor1,sailor2,sailor3,sailor4,sailor5,sailor6";
            break;
            case "trade":
                sEnManModels = "pirat1,pirat2,pirat3,pirat4,pirat5,pirat6,pirat7,pirat8,pirat10,pirat11,pirat11_A1,pirat11_A2,pirat11_A3,pirat13,sailor1,sailor2,sailor3,sailor4,sailor5,sailor6";
                sFrManModels = sEnManModels+","+"fisherman,man5_1";
                sSpManModels = sEnManModels+","+"man1_1,man1_2,pirtt7";
                sHoManModels = sEnManModels+","+"fisherman1,man2,man6_1";
                sPoManModels = sEnManModels+","+"man4,man5";
                sPiManModels = "50evl2in,50FatJack,50M5,corsair1_1,corsair1_2,corsair1_4,wurmwoode,pirat1,pirat2,pirat3,pirat4,pirat5,pirat6,pirat7,pirat8,pirat10,pirat11,pirat11_A1,pirat11_A2,pirat11_A3,pirat13,sailor1,sailor2,sailor3,sailor4,sailor5,sailor6";
            break;
            case "pirate":
                sEnManModels = "pirat1,pirat2,pirat3,pirat4,pirat5,pirat6,pirat7,pirat8,pirat10,pirat11,pirat11_A1,pirat11_A2,pirat11_A3,pirat13,sailor1,sailor2,sailor3,sailor4,sailor5,sailor6";
                sFrManModels = sEnManModels+","+"armdelfra";
                sSpManModels = sEnManModels+","+"capitan";
                sHoManModels = sEnManModels+","+"bocman1";
                sPoManModels = sEnManModels+","+"Aubrey";
                sPiManModels = "50evl2in,50FatJack,50M5,corsair1_1,corsair1_2,corsair1_4,wurmwoode,pirat1,pirat2,pirat3,pirat4,pirat5,pirat6,pirat7,pirat8,pirat10,pirat11,pirat11_A1,pirat11_A2,pirat11_A3,pirat13,sailor1,sailor2,sailor3,sailor4,sailor5,sailor6";
            break;
        }

        switch (rFantom.nation)
        {
                            case "0":    sModel = GetRandSubString(sEnManModels); break;
                            case "1":    sModel = GetRandSubString(sFrManModels); break;
                            case "2":    sModel = GetRandSubString(sSpManModels); break;
                            case "3":    sModel = GetRandSubString(sPiManModels); break;
                            case "4":    sModel = GetRandSubString(sHoManModels); break;
                            case "5":    sModel = GetRandSubString(sPoManModels); break;
        }
    
    SetModel(&rFantom, sModel, "man", "man", 1.8, true);
}
// ADDED BY MAXIMUS <==<!--c2--></div><!--ec2-->So I would suggest us doing some work on this. I am getting REALLY fed up with it. <img src="style_emoticons/<#EMO_DIR#>/boom.gif" style="vertical-align:middle" emoid=":boom" border="0" alt="boom.gif" />

Possibly we could try to use the GetRandomModelForTypeNation(int iscombat, string type, int nat) function here in combination with the AssignModelType() lines from initModels.c. Anybody willing to try anything with this?
 
I rewrote this section of the code:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// ADDED BY MAXIMUS ==>
void Fantom_SetRandomModel(ref rFantom, string sFantomType)
{
    switch (sFantomType)
    {
        case "war":
            switch(rand(1))
            {
                case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Land_Officers", "man", rFantom.nation); break;
                case 1: sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "man", rFantom.nation); break;
            }
            SetModel(&rFantom, sModel, "man", "man", 1.8, true);
        break;
        case "trade":
                switch(rand(3))
                {
                    case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Mates", "man", rFantom.nation); break;
                    case 1: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_FIRSTMATE, "man", rFantom.nation); break;
                    case 2: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_NAVIGATOR, "man", rFantom.nation); break;
                    case 3: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_QMASTER, "man", rFantom.nation); break;
                }
            SetModel(&rFantom, sModel, "man", "man", 1.8, true);
        break;
        case "pirate":
            if(rand(10)==0)
            {
                switch(rand(3))
                {
                    case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "man", rFantom.nation); break;
                    case 1: sModel = GetRandomModelForTypeExSubCheck(true, "Mates", "man", rFantom.nation); break;
                    case 2: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_FIRSTMATE, "man", rFantom.nation); break;
                    case 3: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_NAVIGATOR, "man", rFantom.nation); break;
                }
                SetModel(&rFantom, sModel, "man", "man", 1.8, true);
            }else{
                sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "woman", rFantom.nation);
                SetModel(&rFantom, sModel, "woman", "woman", 1.75, true);
            }
        break;
    }
}
// ADDED BY MAXIMUS <==<!--c2--></div><!--ec2-->Could anybody try this out in his game and see what happens? Hopefully we can eliminate the bad captain model choices once and for all. I think we should also do some modifying to initModels.c: Assign "Captains" to all those characters who could be captain of a war ship, assign "Mates" to all those characters who could be captain of a merchant ship. Then the pirates get to use just about all models available to them for pirates. And there should also be a small possibility for female pirates. <img src="style_emoticons/<#EMO_DIR#>/icon_mrgreen1.gif" style="vertical-align:middle" emoid=":cheeky" border="0" alt="icon_mrgreen1.gif" />
 
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->            if(rand(10)==0)
            {
                switch(rand(3))
                {
                    case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "man", rFantom.nation); break;
                    case 1: sModel = GetRandomModelForTypeExSubCheck(true, "Mates", "man", rFantom.nation); break;
                    case 2: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_FIRSTMATE, "man", rFantom.nation); break;
                    case 3: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_NAVIGATOR, "man", rFantom.nation); break;
                }
                SetModel(&rFantom, sModel, "man", "man", 1.8, true);
            }else{
                sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "woman", rFantom.nation);
                SetModel(&rFantom, sModel, "woman", "woman", 1.75, true);
            }<!--c2--></div><!--ec2-->But in this code you'd encounter woman captains most often (because random number generated from 10 choices rarely would be exactly 0) - so, nearly all encountered pirates will be ladies - but, I don't have nothing against it, if only we have many piratesses in game.

pirate_kk
 
Woops. Good point. I had meant to do that the other way around: To have occasional ladies, but usually men. <img src="style_emoticons/<#EMO_DIR#>/mybad.gif" style="vertical-align:middle" emoid=":facepalm" border="0" alt="mybad.gif" />
Corrected code:<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->// ADDED BY MAXIMUS ==>
void Fantom_SetRandomModel(ref rFantom, string sFantomType)
{
    switch (sFantomType)
    {
        case "war":
            switch(rand(1))
            {
                case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Land_Officers", "man", rFantom.nation); break;
                case 1: sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "man", rFantom.nation); break;
            }
            SetModel(&rFantom, sModel, "man", "man", 1.8, true);
        break;
        case "trade":
                switch(rand(3))
                {
                    case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Mates", "man", rFantom.nation); break;
                    case 1: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_FIRSTMATE, "man", rFantom.nation); break;
                    case 2: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_NAVIGATOR, "man", rFantom.nation); break;
                    case 3: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_QMASTER, "man", rFantom.nation); break;
                }
            SetModel(&rFantom, sModel, "man", "man", 1.8, true);
        break;
        case "pirate":
            if(rand(10)==0)
            {
                sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "woman", rFantom.nation);
                SetModel(&rFantom, sModel, "woman", "woman", 1.75, true);
            }else{
                switch(rand(3))
                {
                    case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "man", rFantom.nation); break;
                    case 1: sModel = GetRandomModelForTypeExSubCheck(true, "Mates", "man", rFantom.nation); break;
                    case 2: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_FIRSTMATE, "man", rFantom.nation); break;
                    case 3: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_NAVIGATOR, "man", rFantom.nation); break;
                }
                SetModel(&rFantom, sModel, "man", "man", 1.8, true);
            }
        break;
    }
}
// ADDED BY MAXIMUS <==<!--c2--></div><!--ec2-->
 
Here's working version (previous missed string declaration):
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->void Fantom_SetRandomModel(ref rFantom, string sFantomType)
{
    string sModel;
    switch (sFantomType)
    {
        case "war":
            switch(rand(1))
            {
                case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Land_Officers", "man", rFantom.nation); break;
                case 1: sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "man", rFantom.nation); break;
            }
            SetModel(&rFantom, sModel, "man", "man", 1.8, true);
        break;
        case "trade":
            switch(rand(3))
            {
                case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Mates", "man", rFantom.nation); break;
                case 1: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_FIRSTMATE, "man", rFantom.nation); break;
                case 2: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_NAVIGATOR, "man", rFantom.nation); break;
                case 3: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_QMASTER, "man", rFantom.nation); break;
            }
            SetModel(&rFantom, sModel, "man", "man", 1.8, true);
        break;
        case "pirate":
            if(rand(10)==0)
            {
                sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "woman", rFantom.nation);
                SetModel(&rFantom, sModel, "woman", "woman", 1.75, true);
            }else{
                switch(rand(3))
                {
                    case 0: sModel = GetRandomModelForTypeExSubCheck(true, "Captains", "man", rFantom.nation); break;
                    case 1: sModel = GetRandomModelForTypeExSubCheck(true, "Mates", "man", rFantom.nation); break;
                    case 2: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_FIRSTMATE, "man", rFantom.nation); break;
                    case 3: sModel = GetRandomModelForTypeExSubCheck(true, OFFIC_TYPE_NAVIGATOR, "man", rFantom.nation); break;
                }
                SetModel(&rFantom, sModel, "man", "man", 1.8, true);
            }
        break;
    }
}<!--c2--></div><!--ec2-->
 
Thanks a lot for catching that one. I've been playtesting the code for a slight little bit and at least I found no major anomalies. Except for Piratess having the wrong animation. I'll see if I can fix that one.
 
Back
Top