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

Planned Feature Balancing and Repurposing Reputation Gain

I don't know where to find the values. From "RESOURCE\INI\TEXTS\ENGLISH\common.ini", the ratings are:
Neutral
Bloke / Rascal
Matey / Swindler
Dashing / Bloody Terror
Hero / Horror of the High Seas

16 escort quests is a lot. That certainly ought to count for something! On the other hand, the reputation reward for side quests can be a lot higher - rescuing Lucas da Saldanha gets you +20!

Fame may not be necessary, at least for stores. If he recognises you then he knows who you are, so "Hero" status kicks in. If he doesn't recognise you then "Hero" status doesn't matter provided you have an appropriate flag up.

What I'd really like is for fame to depend on other things besides money. Would it be possible to have fame increase for different reasons based on character type? Merchants, for example, should be more famous the richer they are, as now. Corsairs, on the other hand, should be more famous the more ships they've sunk or boarded. I know the game keeps a record of how many ships you've boarded and how many sunk because they show up in the bottom right of one of the F2 screens - Ship's Log, I think. (So does the number of people you've killed.)
 
I don't know where to find the values. From "RESOURCE\INI\TEXTS\ENGLISH\common.ini", the ratings are:
Pretty sure it is a scale of 100. It is somewhere in a .h file in the main game folder.

On the other hand, the reputation reward for side quests can be a lot higher - rescuing Lucas da Saldanha gets you +20!
YIKES! That sounds like overkill.
You get well-paid for that one as well.

Fame may not be necessary, at least for stores. If he recognises you then he knows who you are, so "Hero" status kicks in. If he doesn't recognise you then "Hero" status doesn't matter provided you have an appropriate flag up.
True. And the flag detection chance DOES take into account fame.

What I'd really like is for fame to depend on other things besides money. Would it be possible to have fame increase for different reasons based on character type? Merchants, for example, should be more famous the richer they are, as now. Corsairs, on the other hand, should be more famous the more ships they've sunk or boarded. I know the game keeps a record of how many ships you've boarded and how many sunk because they show up in the bottom right of one of the F2 screens - Ship's Log, I think. (So does the number of people you've killed.)
Fame isn't just linked to money.
I'd have to look into the function, but it takes into account your personal wealth, your score with different nations, whether you're married or not and your crew share ratio (for players who use Divide the Plunder).
 
Suggestion:
Routine stuff, e.g. warning someone that they've dropped their purse / distracting them and stealing the purse, gets you automatic + / -1 reputation, to Matey / Swindler. Matey is enough to get you entry to reputation-restricted side quests, so Swindler ought to be enough to get the option to successfully threaten someone where a quest permits it.
Less routine stuff, e.g. bodyguard, promotion / hitting someone who hasn't drawn a blade, being caught while using a thief's knife gets you an automatic + / -2 reputation, perhaps limited to Dashing / Bloody Terror. Since you can attack someone any time you like whereas bodyguard takes time and promotions only happen infrequently, this grants your wish that it's easier to get your reputation down than to get it up.
Minor quests e.g. escort which are completed honestly get you +2 or +3; completing the same quests by double-crossing gets you -2 or -3. No limit - this is one way to go the final step to Hero / Horror of the High Seas.
Major quests e.g. most side quests get you +4 or +5 if completed honestly, -4 or -5 if completed by double-crossing. This definitely can go the whole way to Hero / Horror of the High Seas.

(Note: "Bloody Terror" is the second worst reputation, the opposite of "Dashing". The ultimate evil is "Horror of the High Seas". ;))
This is the full size of the reputation table:
Code:
#define REPUTATION_MIN  1
#define REPUTATION_MAX  89
#define REPUTATION_TABLE_SIZE  9
// KK -->
#define REPUTATION_HORROR  5
#define REPUTATION_BASTARD  15
#define REPUTATION_SWINDLER  25
#define REPUTATION_RASCAL  35
#define REPUTATION_NEUTRAL  45
#define REPUTATION_PLAIN  55
#define REPUTATION_GOOD  65
#define REPUTATION_VERYGOOD  75
#define REPUTATION_HERO  85
// <-- KK
Which goes with these actual ingame names:
Code:
  ReputationTable[REPUTATIONT_HORROR]  = "Horror of the High Seas";
  ReputationTable[REPUTATIONT_BASTARD]  = "Bloody Terror";
  ReputationTable[REPUTATIONT_SWINDLER] = "Swindler";
  ReputationTable[REPUTATIONT_RASCAL]  = "Rascal";
  ReputationTable[REPUTATIONT_NEUTRAL]  = "Neutral";
  ReputationTable[REPUTATIONT_PLAIN]  = "Bloke";
  ReputationTable[REPUTATIONT_GOOD]  = "Matey";
  ReputationTable[REPUTATIONT_VERYGOOD] = "Dashing";
  ReputationTable[REPUTATIONT_HERO]  = "Hero";

This is the function that should be used for adding/decreasing reputation:
Code:
int ChangeCharacterReputation(ref chref, int incr) // TIH changed BACK to int ! got rid of float problems Aug29'06
{
   bool isDonation = false;
   if (IsMainCharacter(chref)) LogIt(TranslateString("","CHANGE REP FOR PLAYER:") + " " + intRet(incr==9999,1,incr) + stringRet(DOUBLE_REP_INCR," x2","")); // NK find rep bug
   int prevVal = GetCharacterReputation(&chref); // NK 04-09-06

   // LDH 25Sep06 simplify rep code for donations
   if (incr == 9999) {
     incr = 1;   // for donations, see quests_reaction.c
     isDonation = true;
   } else {
     if (DOUBLE_REP_INCR) incr *= 2;
   }

   int newVal = iclamp(REPUTATION_MIN, REPUTATION_MAX, prevVal + incr);
   chref.reputation = newVal;

   // LDH 19Sep06 - change officers' reputation as well
   if(!isDonation && sti(chref.index) == GetMainCharacterIndex())
   {
     int incrOfficer = incr;
     if (iabs(incr) != 1) incrOfficer /= 2;   // officers get half the increase unless incr is just 1
     for (int i = 1; i < 4; i++)
     {
       int idx = GetOfficersIndex(GetMainCharacter(), i);
       if (idx > 0)
       {
         ref chOfficer = &Characters[idx];
         chOfficer.reputation = iclamp(REPUTATION_MIN, REPUTATION_MAX, GetCharacterReputation(chOfficer)+incrOfficer);
         trace("Change of rep for " + chOfficer.name + " " + incrOfficer + " (" + chOfficer.reputation + ")");
       }
     }
   }

   if( sti(chref.index) != GetMainCharacterIndex() ) return newVal;

   string prevName = GetReputationName(prevVal);
   string newName = GetReputationName(newVal);
   if(prevName!=newName)
   {
     string outString = XI_ConvertString("Your reputation")+" ";
     if(incr>0)   {outString+=XI_ConvertString("increase");}
     else   {outString+=XI_ConvertString("decrease");}
     outString += " "+XI_ConvertString("to")+" "+XI_ConvertString("i" + newName);
     LogIt(outString);
   }
   return newVal;
}
My thinking is to edit that function so that any change of:
"+/-1" only works between Rascal and Bloke
"+/-2" only works between Swindler and Matey
"+/-3" only works between Bloody Terror and Dashing
Only changes greater than that would be able to work all the way.

This would mean we don't need massive changes in many files.
Once the system is working though, we may have to change the numbers you get for certain actions.

The scale is only from 1-89 which is relatively limited.
That is why we may want to consider decreasing the the numbers given in several spots of the game.
But we'll see about that once these limits are actually in place.
 
Talking to locals is a great way to get your pocket picked, and ever since someone decided to "balance" reputation, you can't pick their pockets to get your stuff back and then give money to beggars or tell people they've dropped their purses to get your reputation back.
I'm answering here, since that should of course be dealt with in a different way.
Perhaps just add an attribute to any character that picks your pocket so that whatever you do afterwards (except perhaps killing) does not give rep loss.
 
Now that I'm thinking of tying reputation loss to acts of piracy at sea, I wonder what you guys think of a "Pirate Hero" character.
If that is done based on the "size of the act", then it'll be mighty hard to maintain a good reputation by playing as a pirate!

Technically I can't think of any realistic reason why a pirate should be considered a "nice guy", but of course there are plenty movies and books that DO have that.
Since that also adds more variety to the game, I reckon we should see about keeping that. But how to do that in such a way that there is some sort of logic to it?
 
I can think of one "nice guy" pirate right away, and we have him as a playable character already - Laurens de Graaf. According to that article, after one battle he put the wounded enemy captain ashore along with his own surgeon and a servant. Later he allegedly fought a duel with one of his officers over treatment of hostages and division of plunder.

As far as reputation and alignment are concerned, pirates should be no different from anyone else. Officers may have good or bad alignment, good or bad reputation, and so can you depending on how you conduct your piracy.
 
All true. That means that my "act of piracy results in reputation loss" suggestion probably isn't a very good one.
Perhaps do that ONLY if you didn't officially join the pirates and aren't a member of the Brotherhood?
Or perhaps do just keep it as being two completely separate things that we can or can not use depending on the situation.
 
I'd agree with keeping reputation separate from acts of piracy. What acts of piracy will do is reduce your relations with the nation you attacked, its allies, and to a lesser extent everyone else as well. A major act of piracy, e.g. attacking a ship while flying a friendly flag, could cause a reputation loss, though - it's highly dishonourable. A decent pirate ought to raise his pirate flag and then start shooting!

Beware of having an automatic reputation loss if you choose to cut down the enemy crew like dogs. If you board the Animist ships in "Strange Things Going On", or if you already have a maximum number of passengers, and if the Animist captain then surrenders, you won't have a choice - the only dialog option is to cut them down. (Maybe fix the "Strange Things Going On" quest so that Animist captains can't surrender.)
 
I'd agree with keeping reputation separate from acts of piracy. What acts of piracy will do is reduce your relations with the nation you attacked, its allies, and to a lesser extent everyone else as well. A major act of piracy, e.g. attacking a ship while flying a friendly flag, could cause a reputation loss, though - it's highly dishonourable. A decent pirate ought to raise his pirate flag and then start shooting!
There is already a "valid attack" check in the relevant function. We could apply an automatic reputation loss for any NOT valid attack, which includes the scenario that you describe.
Then get rid of the separate AttackRMRelation function.

Beware of having an automatic reputation loss if you choose to cut down the enemy crew like dogs. If you board the Animist ships in "Strange Things Going On", or if you already have a maximum number of passengers, and if the Animist captain then surrenders, you won't have a choice - the only dialog option is to cut them down. (Maybe fix the "Strange Things Going On" quest so that Animist captains can't surrender.)
Isn't that automatic reputation loss already there?
Preventing those characters from surrendering should be a one-line fix.
If you make a Bug Tracker request for that, I'll do that tonight.
 
I've been having weirdness with one of my officers too, and again it's a former pirate captain. Weirdness 1 is that a couple of skills are marked red, as if they're being penalised by an item or by being assigned to too good a ship, though she's not on a ship. Weirdness 2 is that originally she was reputation "Damsel", then I went and claimed a promotion. This adds 5 to your reputation, and when you gain reputation, officers who are actively with you at the time get a portion of it. So a few of my officers have gone up a grade or two over time. This one dropped straight to "Femme Fatale" when I got the promotion. It wasn't due to any other action, I confirmed that by loading a pre-promotion savegame, checking reputation right before claiming the promotion, then checked it right after claiming the promotion. (She can't do anything naughty in between because officers don't follow you into the town hall.)

This is under the 22nd May version.
 
Weirdness 2 is that originally she was reputation "Damsel", then I went and claimed a promotion. This adds 5 to your reputation, and when you gain reputation, officers who are actively with you at the time get a portion of it. So a few of my officers have gone up a grade or two over time. This one dropped straight to "Femme Fatale" when I got the promotion.
I do want to edit the "Gain Reputation for Officers" code some time, but at the moment I am completely unfamiliar with how that works.
Can you post that as a separate Bug Tracker entry including the savegame from which you replicated it?
At least then I would have what I need to try and fix it. :doff
 
Last edited:
I do want to edit the "Gain Reputation for Officers" code some time, but at the moment I am completely unfamiliar with how that works.
Can you post that as a separate Bug Tracker entry including the savegame from which you replicated it?
Not if you're going to change the shared reputation. I like that feature. :p It's why I had the "Damsel" assigned when I went to collect the promotion, I was trying to raise her reputation along with mine. Again, other officers are behaving themselves, it's just this reformed pirate who is causing trouble.
 
Last edited by a moderator:
Not if you're going to change the shared reputation. I like that feature. :p
I have zero intention to change it to something worse than it is now.
While I do want to change it to add more functionality to it, I don't know when I'll be able to do so.

First step is to understand how it currently works. Since you mention it doesn't seem to work as intended, we need to know why.

My eventual wish is to have "good" officers share reputation increases with the player and to have "bad" officers share reputation decreases.
That means basically keeping the existing functionality, but having the existing alignment attribute actually mean something.
Now it is "just there".
 
Last edited:
I have zero intention to change it to something worse than it is now.
Depends on what you mean by "worse".

My eventual wish is to have "good" officers share reputation increases with the player and to have "bad" officers share reputation decreases.
That means basically keeping the existing functionality, but having the existing alignment attribute actually mean something.
Now it is "just there".
Whereas I rather like the idea that you can bring "bad" officers round to your way of thinking by having them active with you when you get reputation increases. This means that eventually a low reputation officer whom you hired will eventually be fit to command a companion ship. The same applies if you're "bad" and want to bring "good" officers round, of course. So from my point of view, you do intend to change it to something worse. ;)
 
Last edited by a moderator:
Depends on what you mean by "worse".
We've been through this before.

At the moment, "loyalty" exists in the game and does basically nothing. That makes it a missed opportunity that should be addressed.

Reputation for officers is virtually meaningless, with the single exception of the "Companion Mutiny" functionality.
This is an extremely limited use of something that could easily have a lot more meaning in the game.
In other words: Also a missed opportunity that should be addressed.

As long as we do not address these two, we leave that part of the game code in an unfinished and non-functional state.
After addressing them, loyalty, alignment and reputation would become an actual gameplay element.
This adds another layer of complexity to the gameplay that also makes logical sense.

Whether anyone likes having that extra gameplay element is of course a matter of personal preference.
"Personal preference" is no valid reason to skip doing it, but if truly necessary a toggle can be added on it.

Whereas I rather like the idea that you can bring "bad" officers round to your way of thinking by having them active with you when you get reputation increases. This means that eventually a low reputation officer whom you hired will eventually be fit to command a companion ship. The same applies if you're "bad" and want to bring "good" officers round, of course. So from my point of view, you do intend to change it to something worse. ;)
I am not proposing to do anything that goes against your idea. It is very possible to find a "low reputation" officer with "good" alignment.
If you then play as a good character, you would still get exactly the behaviour that you describe.

The ONLY exception is if the alignment of that officer does not match with the way you play the game. In that case, that officer would eventually leave you.
That does not do much harm, apart from you having to find another one. If you notice early, you can fire that officer and hire a replacement sooner.

Effectively this means that instead of "reputation" being the direct cause for "Companion Mutiny", instead "alignment" becomes the deciding factor.
And it would affect also officers ashore.

So yes, it would have an impact on gameplay. But if you keep an eye on it and hire those officers who share your alignment (even if their reputation differs), then nothing changes for you.


Can you post that as a separate Bug Tracker entry including the savegame from which you replicated it?
I will repeat my request. You reported something that seems to be wrong and it therefore belongs on the Bug Tracker, along with the details needed to fix it.
That has nothing to do whatsoever with future development as it is purely a bug.
 
It's why I had the "Damsel" assigned when I went to collect the promotion
Now I've got an idea for something even YOU should consider an improvement:
I reckon ALL officers (including those only on the passengers list) and companion captains should be affected by reputation changes.
So then you wouldn't need to bother deliberately taking them ashore with you.
 
There are cases to be made both ways. If it's just the officers who are with you then they get a share because whatever people saw you doing to earn the change, they saw the officers as well. If it's all officers then it's because you're known as, or building up a reputation as, a really great guy / evil swine (delete as applicable), and they're all known to be your associates. But it certainly sounds more attractive than the earlier suggestion. :onya
 
So anyway, please post that save on the Bug Tracker so at least I'll be able to fix that actual bug.

Since I've got plenty enough to do as it is (and getting a headache doing it), good chance I'll keep any changes/improvements to the bare minimum for now.
 
Back
Top