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

Solved Dry Dock Bermudes Shipyard Quest Bug

Blaze Devlin

Sailor
Storm Modder
Ahoy again!! :ahoy

After a long break of several years, I decided to come back here and post another thread. I was quite busy with playing / moding other pirate games like AC IV: Black Flag. For some months ago I started to play again SD: COAS on Steam. I know, many of you may criticize this game due to its many bugs. But the good thing is, that it can be roughly be optimized and modified. Which is not the case with most of new games, because you certainly don`t have the permission to having access to the source code...

OK. Long story short... Let`s get back to the main theme. Recently I sailed to the island of Bermudes and went to the shipyard at the Pirates Settlement. As many of you surely remember, there is a so called Dry Dock Quest available, where you can upgrade your heroes ship. Well, I made that successfully for the hull, cargo, speed, and turn rate.

But unfortunately, it doesn`t change anything for the crew size!! In my case the F2 menu for my Man O` War flagship shows the following stats: 1150 : 159 / 923 (actually crew size : min. crew size / max. crew size).

So, the problem is, is that the number at the top is highlighted in red, that means that my crew size is a bit overloaded. With other words, it could be possible that my crew is starting a mutiny soon... and I would like to avoid that!!

I`ll show you here a screenshot for better understanding:

Ship Crew Size.jpg


In addition to that, I found also the necessary code in the folder Program/DIALOGS/russian/Shipyard/Pirates_ Shipyard where I guess must be the fault inside:


Code:
case "ship_tunning_MaxCrew":
            s1 = DLG_TEXT_SHY[180] + shipMaxCrew + DLG_TEXT_SHY[181];
            
            s1 = s1 + DLG_TEXT_SHY[182]+ MaxCrewMatherial1 + DLG_TEXT_SHY[183]+ MaxCrewMatherial2+DLG_TEXT_SHY[184];
            s1 = s1 + DLG_TEXT_SHY[185] + MaxCrewWorkPrice + DLG_TEXT_SHY[186];
            dialog.Text = s1;
            Link.l1 = DLG_TEXT_SHY[187];
            Link.l1.go = "ship_tunning_MaxCrew_start";
            Link.l2 = DLG_TEXT_SHY[188];
            Link.l2.go = "ship_tunning_not_now";
        break;
        
        case "ship_tunning_MaxCrew_start":
            amount = MaxCrewWorkPrice;
            if(makeint(Pchar.money) >= makeint(amount / 2 +0.5))
            {
                AddMoneyToCharacter(Pchar, -makeint(amount / 2 +0.5));
                NPChar.Tuning.Money  = makeint(amount - makeint(amount / 2 +0.5));
                NPChar.Tuning.Matherial1 = MaxCrewMatherial1; // GOOD_FRUITS
                NPChar.Tuning.Matherial2 = MaxCrewMatherial2; //  GOOD_CLOTHES
                NPChar.Tuning.ShipType       = Pchar.Ship.Type;
                NPChar.Tuning.ShipName       = RealShips[sti(Pchar.Ship.Type)].BaseName;
            
                NextDiag.TempNode = "ship_tunning_MaxCrew_again";
                dialog.text = DLG_TEXT_SHY[189];
                link.l1 = DLG_TEXT_SHY[190];
                link.l1.go = "Exit";
                
                ReOpenQuestHeader("ShipTuning");
                AddQuestRecord("ShipTuning", "t1");
                AddQuestUserData("ShipTuning", "sText",  DLG_TEXT_SHY[191] + XI_ConvertString(RealShips[sti(Pchar.Ship.Type)].BaseName) +
                DLG_TEXT_SHY[192]+NPChar.Tuning.Matherial1+ DLG_TEXT_SHY[193]+ NPChar.Tuning.Matherial2+DLG_TEXT_SHY[194] + NPChar.Tuning.Money + DLG_TEXT_SHY[195]);
            }
            else
            {
                NextDiag.TempNode = "ship_tunning_not_now";
                dialog.text = DLG_TEXT_SHY[196];
                link.l1 = DLG_TEXT_SHY[197];
                link.l1.go = "Exit";                               
            }
        break;
        
        case "ship_tunning_MaxCrew_again":
            if (sti(NPChar.Tuning.ShipType) == sti(Pchar.Ship.Type) && NPChar.Tuning.ShipName      == RealShips[sti(Pchar.Ship.Type)].BaseName)
            {
                NextDiag.TempNode = "ship_tunning_MaxCrew_again";
                dialog.Text = DLG_TEXT_SHY[198] + sti(NPChar.Tuning.Matherial1) + DLG_TEXT_SHY[199] + sti(NPChar.Tuning.Matherial2) + DLG_TEXT_SHY[200] + sti(NPChar.Tuning.Money) + DLG_TEXT_SHY[201];
                Link.l1 = DLG_TEXT_SHY[202];
                Link.l1.go = "ship_tunning_MaxCrew_again_2";
                Link.l2 = DLG_TEXT_SHY[203];
                Link.l2.go = "Exit";
            }
            else
            {
                DeleteAttribute(NPChar, "Tuning");
                NextDiag.TempNode = "ship_tunning_again";
                dialog.Text = DLG_TEXT_SHY[204];
                Link.l1 = DLG_TEXT_SHY[205];
                Link.l1.go = "Exit";
                
                AddQuestRecord("ShipTuning", "Lose");
                CloseQuestHeader("ShipTuning");
            }
        break;
        
        case "ship_tunning_MaxCrew_again_2":
            checkMatherial(Pchar, NPChar, GOOD_FRUITS, GOOD_CLOTHES);
            
            if(sti(NPChar.Tuning.Matherial2) < 1 && sti(NPChar.Tuning.Matherial1) < 1 && sti(NPChar.Tuning.Money) < 1)
            {
                DeleteAttribute(NPChar, "Tuning");
                NextDiag.TempNode = "ship_tunning_again";
                dialog.text = DLG_TEXT_SHY[206];
                link.l1 = DLG_TEXT_SHY[207];
                link.l1.go = "ship_tunning_MaxCrew_complite";
            }
            else
            {
                NextDiag.TempNode = "ship_tunning_MaxCrew_again";
                dialog.Text = DLG_TEXT_SHY[208] + sti(NPChar.Tuning.Matherial1) + DLG_TEXT_SHY[209] + sti(NPChar.Tuning.Matherial2) + DLG_TEXT_SHY[210] + sti(NPChar.Tuning.Money) + DLG_TEXT_SHY[211];
                link.l1 = DLG_TEXT_SHY[212];
                link.l1.go = "Exit";

                AddQuestRecord("ShipTuning", "t1");
                AddQuestUserData("ShipTuning", "sText",  DLG_TEXT_SHY[213] +  sti(NPChar.Tuning.Matherial1)+ DLG_TEXT_SHY[214]+ sti(NPChar.Tuning.Matherial2)+DLG_TEXT_SHY[215]+ sti(NPChar.Tuning.Money) + DLG_TEXT_SHY[216]);
            }
        break;
        
        case "ship_tunning_MaxCrew_complite":
            AddTimeToCurrent(6, 30);
            shTo = &RealShips[sti(Pchar.Ship.Type)];
            DeleteAttribute(NPChar, "Tuning");
            // èçìåíèì
            shTo.MaxCrew        = sti(shTo.MaxCrew) + makeint(sti(shTo.MaxCrew)/5);
            shTo.Tuning.MaxCrew = true;
            // finish <--
            NextDiag.TempNode = "ship_tunning_again";
            dialog.Text = DLG_TEXT_SHY[217];
            Link.l1 = DLG_TEXT_SHY[218];
            Link.l1.go = "Exit";
            
            AddQuestRecord("ShipTuning", "End");
            CloseQuestHeader("ShipTuning");
        break;


Does anybody of you know the right code for here? Can someone help me out please?

Thanks again guys!! Happy to be here again!!

:dance
:cheers:bow:thumbs1
 
I don't play much CoAS, but I remember being very disappointed that this upgrade only increased the overloaded crew capacity.

In "ship_tunning_MaxCrew_complite" try changing the code to include an update to the "optimal" crew capacity as well:
Code:
shTo.MaxCrew        = sti(shTo.MaxCrew) + makeint(sti(shTo.MaxCrew)/5);
shTo.OptCrew        = sti(shTo.OptCrew) + makeint(sti(shTo.OptCrew)/5);
 
@Hammie: It works fine right now, bug is fixed! Needed to restart quest with a new ship. Now my "ships crew size" was increased from 911 to 1366! THANK YOU VERY MUCH FOR YOUR GREAT HELP!!
 
Last edited:
Back
Top