Ahoy. <img src="style_emoticons/<#EMO_DIR#>/buds.gif" style="vertical-align:middle" emoid="
" border="0" alt="buds.gif" /> I've been trying to understand the Build 13 monthly salary code recently. Most of it is located in PROGRAM/Characters/CharacterUtilite.c. Surprisingly, it appeared to me a bit too complicated, and I though we should maybe brainstorm a while on this subject.
I will start with a few proposals :
- simplify the salary code. I would remove the SALARY_MULTIPLIER thing, because we already have in InternalSettings BASE_CREW_PAY which define how much a sailor earns each month, OFF_PRICE_SCALAR and COMP_PRICE_SCALAR, both scalar for the officers' salary and the compagnons'. To my mind, with the SALARY_MULTIPLIER added to all this the result is quite messy.
- Change the default value of OFF_PRICE_SCALAR, COMP_PRICE_SCALAR and BASE_CREW_PAY. I'm proposing this :
BASE_CREW_PAY = 25 in stead of 12
OFF_PRICE_SCALAR = 1 in stead of 0.5
COMP_PRICE_SCALAR = 1.5 in stead of 0.5
- change the average salary officers are asking when you want to hire them. I think the values are a bit too high right now.
- add an option in the officer dialog to ask your officer about his salary. Of course, normally it is already indicated in the character menu (as a lot of other things you can ask your officer). I'm thinking at something like that : <!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--> case "your_status":
Diag.TempNode = "Hired";
d.text = DLG_TEXT[80];
Link.l1 = DLG_TEXT[81];
Link.l1.go = "exit";
// boal 05.09.03 offecer need to go to abordage -->
Link.l3 = DLG_TEXT[38];
Link.l3.go = "Boal_Abordage";
Link.l4 = DLG_TEXT[39];
Link.l4.go = "Boal_safeAbordage";
Link.l5 = DLG_TEXT[43];
Link.l5.go = "Boal_Stay";
Link.l6 = DLG_TEXT[44];
Link.l6.go = "Boal_Follow";
// boal 05.09.03 offecer need to go to abordage <--
Link.l7 = DLG_TEXT[89];
Link.l7.go = "clothesyou";
if(CheckAttribute(PChar,"articles") && sti(PChar.articles))
{
Link.l2 = DLG_TEXT[90]; // SA
Link.l2.go = "AsYouWish_G"; // SA
}
else
{
Link.l8 = "Could you remember me how much is your monthly salary?";
Link.l8.go = "your_salary";
Link.l2 = DLG_TEXT[179] + sti(NPChar.quest.OfficerPayOwed) + DLG_TEXT[180]; // SA
Link.l2.go = "AsYouWish_G2"; // SA
}
Link.l9 = DLG_TEXT[32]; //fire officer meanly
Link.l9.go = "AsYouWish";
break;
case "your_salary":
d.text = "My salary is of " + sti(NPChar.quest.OfficerPrice)*OFF_PRICE_SCALAR*SALARY_MULTIPLIER*(0.5 + GetDifficulty()*0.5) + " golden coins per month, captain.";
Link.l1 = "Okay, thank you.";
Link.l1.go = "Hired";
break;<!--c2--></div><!--ec2-->
Now, there are two things I don't really know what to think of. All comments are welcomed.
- Currently, depending on the game difficulty, the money you have to pay is multiplied by (0.5 + makefloat(GetDifficulty())*0.5). That's to say + 50% for Journeyman, *2 for adventurer and +150% for swashbuckler. Is this necessary? Is it an improvement to the game?
- The salary of your crewmen & officers is automaticly lowered down by your leardership skills and the iron will ability. What a mean captain you are...

I will start with a few proposals :
- simplify the salary code. I would remove the SALARY_MULTIPLIER thing, because we already have in InternalSettings BASE_CREW_PAY which define how much a sailor earns each month, OFF_PRICE_SCALAR and COMP_PRICE_SCALAR, both scalar for the officers' salary and the compagnons'. To my mind, with the SALARY_MULTIPLIER added to all this the result is quite messy.
- Change the default value of OFF_PRICE_SCALAR, COMP_PRICE_SCALAR and BASE_CREW_PAY. I'm proposing this :
BASE_CREW_PAY = 25 in stead of 12
OFF_PRICE_SCALAR = 1 in stead of 0.5
COMP_PRICE_SCALAR = 1.5 in stead of 0.5
- change the average salary officers are asking when you want to hire them. I think the values are a bit too high right now.
- add an option in the officer dialog to ask your officer about his salary. Of course, normally it is already indicated in the character menu (as a lot of other things you can ask your officer). I'm thinking at something like that : <!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--> case "your_status":
Diag.TempNode = "Hired";
d.text = DLG_TEXT[80];
Link.l1 = DLG_TEXT[81];
Link.l1.go = "exit";
// boal 05.09.03 offecer need to go to abordage -->
Link.l3 = DLG_TEXT[38];
Link.l3.go = "Boal_Abordage";
Link.l4 = DLG_TEXT[39];
Link.l4.go = "Boal_safeAbordage";
Link.l5 = DLG_TEXT[43];
Link.l5.go = "Boal_Stay";
Link.l6 = DLG_TEXT[44];
Link.l6.go = "Boal_Follow";
// boal 05.09.03 offecer need to go to abordage <--
Link.l7 = DLG_TEXT[89];
Link.l7.go = "clothesyou";
if(CheckAttribute(PChar,"articles") && sti(PChar.articles))
{
Link.l2 = DLG_TEXT[90]; // SA
Link.l2.go = "AsYouWish_G"; // SA
}
else
{
Link.l8 = "Could you remember me how much is your monthly salary?";
Link.l8.go = "your_salary";
Link.l2 = DLG_TEXT[179] + sti(NPChar.quest.OfficerPayOwed) + DLG_TEXT[180]; // SA
Link.l2.go = "AsYouWish_G2"; // SA
}
Link.l9 = DLG_TEXT[32]; //fire officer meanly
Link.l9.go = "AsYouWish";
break;
case "your_salary":
d.text = "My salary is of " + sti(NPChar.quest.OfficerPrice)*OFF_PRICE_SCALAR*SALARY_MULTIPLIER*(0.5 + GetDifficulty()*0.5) + " golden coins per month, captain.";
Link.l1 = "Okay, thank you.";
Link.l1.go = "Hired";
break;<!--c2--></div><!--ec2-->
Now, there are two things I don't really know what to think of. All comments are welcomed.
- Currently, depending on the game difficulty, the money you have to pay is multiplied by (0.5 + makefloat(GetDifficulty())*0.5). That's to say + 50% for Journeyman, *2 for adventurer and +150% for swashbuckler. Is this necessary? Is it an improvement to the game?
- The salary of your crewmen & officers is automaticly lowered down by your leardership skills and the iron will ability. What a mean captain you are...