Seems like if I’ve pirated a ship then the captain is tagged as a “Pirate Captain”. That’s fine, but once they are put into the passenger list they should revert back to whatever officer role they have, or default to something. I don’t know why but some captains’ skills are always green, although my suspicion is that I captured them from a pirate ship as opposed to recruiting them in the tavern. In fact yes, the guy in the second image was definitely a pirate.

This isn’t a problem as long as they are the captain of a ship, but if all of their skills are always green then they are all used if I make them an officer, which is incredibly imbalanced since I could have 3 such officers with their role making no difference whatsoever.

In both images the officers are set as navigators; the first one is how it should look but the second one is all green.

InitCharacterSkills is part of the dreaded Levelling system that has been driving me absolutely *** nuts this past year.
You shouldn't to call it though.

"char.fficertype = "doctor""
^ You have an "o" missing there and there should be a ".quest." in between too.
I'd also recommend using OFFIC_TYPE_DOCTOR instead of "doctor".

So just set char.QUEST.officertype = OFFIC_TYPE_DOCTOR; .
You should not even need to do anything else, because the code should notice the officer type changed and update the needed skills automatically.

So just set char.QUEST.officertype = OFFIC_TYPE_DOCTOR; .
You should not even need to do anything else, because the code should notice the officer type changed and update the needed skills automatically.

Click to expand...

Though looking at it more, you may need to call the RestoreOfficerFromCaptain(ref officer) function too.

That did something... I can now change his role - sometimes, but it’s very random. Still all green, though.

Okay, skillsetup seem to be the one that’s locked to “Pirate Captain”. I’ve been deleting and setting the attributes over and over again but it keeps on reverting back. I think he’s drunk, that’s what the problem is.

I think "skillsetup" is only meant to set the character skill importances for NPCs levelling up.
But I don't know for sure. The Levelling system was never fully fixed and finished by the person who made it.
And I have already spent far too much time on it, trying to get it to behave.

I think, but I can’t be too sure, that the problem is a duplicated passenger. Basically, the original transfer code does not remove an officer as a passenger from a companion, so they just fill up the passenger list. This went unnoticed since forever because nobody was ever looking at companion’s passenger lists, but I’m inquisitive like that. So anyway, this guy who has all-green skills just so happens to also be in command of a berthed ship, which I didn’t realise at first, and it’s quite possibly the ship I stolen borrowed in the first place. After grabbing the guy off the berthed ship, his skills were not all-green. Therefore, I was looking at his twin, and the skills were probably all-green because the chap was genuinely the captain of a ship.

Maybe the real bug here is passengers not being removed from companions?

The regular Is Companion check only checks if the guy is in any of your four companion slots, based on character index if I recall.
Are you saying you've got a copied officer with one of the copies as an actual Captain on a non berthed ship and the second copy as a regular officer???

Pretty much, yes. Except the ship he is captain of is berthed, and the twin is not in a active officer slot, not that it makes any difference either way.

I’m not entirely sure of the circumstances with this guy, but I can tell you this...

When a companion’s officer is removed from his position (as opposed to swapped with a passenger) he is not removed from their passenger list. I guess this was overlooked because it technically wasn’t possible to access their roster. This means that pretty much every player who has had a companion for some time and puts officers on them, will have a passengers list crammed with duplicates. Now bear in mind two twins will have the same index, so if one of them is my passenger and the other is in an officer slot, if I try to swap them then one will disappear.

So yeah, this guy with all-green skills was duplicated at some point. I can’t be sure but I will guess that I actually sold the ship he originally had because he’s now on a berthed heavy pinnace which I think is French. I probably gave him an officer role on a companion at some point because I don’t think captains are duplicated since they are literally swapped with a passenger (if they are removed, the ship sinks). In fact, I don’t think passengers are duplicated at all if it is a direct swap, only if an officer is removed.

What I’m thinking is that my new interface could present problems in respect of these duplicates. It certainly has caused me problems, sometimes I think it throws the passenger slot numbers out of sync especially if twins are both in the passenger list at the same time, which is certainly possible. So what I think would be necessary if the companion passenger lists do become accessible, is for twins to be searched for across all ships and forcibly removed (possibly prioritising them by companion number) - either that or a new game might be required otherwise people could have problems. I’ve started a new game, I think my officers and passengers are all screwed up now because of this so I have to start again to see how the new interface goes from scratch.

Note that my interface fixes this problem by properly removing an officer from the passenger list.