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

High Priority Change way shared XP works

Just upload the files you've got and I'll put it on my To-Do list to see about reverting just Levelling to that point.
The version in which I played "Hornblower" to completion was 8th December. As I don't know which files you want, I've put the entire installer on the FTP site, along with the ones before and after it - 19th November and 22nd December.
Index of /potc/Grey Roger/old_installs

The big rewrite of "Leveling.c" seems to have started with the 8th December update. The one in the 19th November install does not have the comment at the start about being completely rewritten and Winmerge shows it to be massively different to the one in the 8th December install. So one or other of those ought to provide a better revert point than going all the way back to Beta 3.3!

Incidentally, I'm quite the hoarder. I've downloaded most of the installers and zip updates and never got round to deleting them, apart from a few which were disastrously bugged and were soon replaced by a newer, usable version. Which means if you give me a date, I can probably look through my archive and find the most recent install up to that date.
 
The version in which I played "Hornblower" to completion was 8th December. As I don't know which files you want, I've put the entire installer on the FTP site, along with the ones before and after it - 19th November and 22nd December.
Index of /potc/Grey Roger/old_installs
Thanks! That might help. :doff

The big rewrite of "Leveling.c" seems to have started with the 8th December update. The one in the 19th November install does not have the comment at the start about being completely rewritten and Winmerge shows it to be massively different to the one in the 8th December install. So one or other of those ought to provide a better revert point than going all the way back to Beta 3.3!
:cheers

Incidentally, I'm quite the hoarder. I've downloaded most of the installers and zip updates and never got round to deleting them, apart from a few which were disastrously bugged and were soon replaced by a newer, usable version. Which means if you give me a date, I can probably look through my archive and find the most recent install up to that date.
Keep a hold of those files! While I do keep a whole bunch of stuff, I have to admit I don't keep everything because that ends up being a bit too much. :facepalm
 
@pedrwyth: Have you had the chance to look at this yet?

Short answer is no.

I started by looking at the files you suggested but couldn't make anything from just looking at the differences so I tried looking at the whole levelling file but it is rather intertwined and complex by now even with extended commentary. My next thought was to try and look at what the old replaced functions did before they were grouped and made to use the same function to try and untangle the intended functionality because use of the split of player, officer and party XP seemed non intuitive and mixed. However at that point other things intervened and I haven't had a chance to look at it for 10 days now.

I will give it another try this coming week but am not holding my breath for light to dawn quickly.

EDIT Looking at this from the other end (init_officertypes.c) in Feb 18 version @Levis already has ALL Officers (except civilian,shopkeeper,sailor and capmerchant) contributing fencing (ie have fencing as one of their importance skills and indeed show a fencing green tick) so if the gaining of contributed skills regardless of shared perk or not is working correctly should already be gaining some fencing skill without the shared XP perk. Next question is - does it work as intended and if so how much do they gain?
 
Last edited:
@Levis needs to know exactly what should be done with the system still.
From what I understand:
- Have fencing XP always shared within your shore party, even without Shared XP
- Possibly have shared XP for your entire shore party even without the ability (@Grey Roger's request; I myself prefer the simpler solution of reducing that ability's level requirements)
- Check the initialization of any and all captains at sea; I noticed that pre-existing quest ones only go through Leveling AFTER BOARDING. That means they could still be rank 1 with low skills during the sea battles
- Possibly give officers more XP in their individual roles than the player would get. This to avoid the player bypassing his officers in level and skills
- Possibly change the code giving Sailing skill because apparently it is a bit overkill (or at least clean up that particular section of code)

He may have time to look into it tomorrow, so is anyone knows any other changes that are needed, SAY SO NOW!
Especially @pedrwyth, @HellSailor, @Hylie Pistof, @ANSEL and @Grey Roger.

I myself have been making some changes this weekend to the random Fantom generation code, especially relating to those functions that generate groups of them.
 
Good thing if @Levis is able to look at it - much better!

I note I was wrong in thinking the importance attribute controlled where your officer got XP - it actually seems to be a 1 for 50% or 2 for 100% in the OfficerTypes.(type).skills."nameofskill" attribute which also feeds into whether you get any XP without the shared XP perk. (Yeah slowly getting my head round it after looking at the xp log for a few fights). Although I did think that was the meaning of the green tick -so I'll have to look at that again now.

Looking at the logs I generated too I only saw XP being added without shared XP to those officers who contribute skills via that 1/2 attribute so I think it works as intended (and from other comments take it that shared XP perk does as intended too).

So as far as I know the other main thought is just adding a partial fencing contribution to all IF in the shore party (I wonder if another lesser level than 50% could be brought in without screwing the use of 0,1,2 integers etc in the code by upping the denominator too). This could possibly also assist with the concept of the officers getting more XP than the main character in their larger importance field(s) to keep them ahead and thus useful.
 
Also a very important reminder: The fencing training system with Malcom and the sailor of the ship's deck don't make almost any progress, making this fairly inefficient, except for obtaining the locked skill. This should really need an improvement as maybe, if you start with level 1 of Fencing, you would like to progress to at least a respectable level 3 or 4, without spending too much time.

In the archive Levelling.c I also made for me some changes to improve the mechanics of gaining progress of the abilities, specially at Fencing, improving it from 1 to 2.

This for me is the most important feature to improve overall. Some patches ago, the system worked perfectly. Now I don't remember very well which was the last one.
 
The fencing training system with Malcom and the sailor of the ship's deck don't make almost any progress, making this fairly inefficient, except for obtaining the locked skill. This should really need an improvement as maybe, if you start with level 1 of Fencing, you would like to progress to at least a respectable level 3 or 4, without spending too much time.
Technically that part isn't actually meant as an "XP farm"; it is meant to teach you how to do it.
I've been doing some testing on Assassin a few days back and was definitely gaining plenty fencing experience.
Of course I was doing rather a lot of fencing at the time.... :ninja
 
Training with Malcolm should, I would say, get you to level 2, possibly after the initial harmless round plus a couple of rounds of full combat. After that, depending on which storyline you're playing, there's probably a dungeon nearby if you want to put your newly acquired skill to the test. :duel: (Having said that, dungeons seem easier but less rewarding, both in XP and in gold looted from corpses, than they used to be.)
 
@Grey Roger: In the PROGRAM\Characters\officers.c add the line marked "PB" here:
Code:
int GetOfficerSkillFactor(ref Officer, string SkillName)
{
   if (SkillName == SKILL_FENCING)   return 2; // PB: Fencing is a personal skill...

   int skillFactor;
   string officType = Officer.quest.officerType;
   if(CheckAttribute(OfficerTypes, officType))
   {
     if(!CheckAttribute(OfficerTypes,officType+".skills"))
     {
       trace("ERROR: missing skills for "+officType+" for Character "+GetMySimpleName(Officer));
       DumpAttributes(Officer);
       Officer.quest.officerType = GetRandomEnemyType();
       officType = Officer.quest.officerType;
     }
     skillFactor = sti(OfficerTypes.(officType).skills.(SkillName)); // KK
   }
   else
   {
     trace("ERROR: missing skillfactor for type "+officType+" and skill "+SkillName);
     DumpAttributes(Officer);
     skillFactor = 2;
   }
   // factor: can be 0, 1, 2:
   // 0: no contribution
   // 1: half contribution
   // 2: full contribution
   
   return skillFactor;
}
That should make fencing XP always shared and ensures characters always get Fencing XP regardless of their skill contributions.
Hopefully that helps.

This is all that I can readily think of doing myself. So until @Levis drops by and makes some better improvements
or until very clear specifications are written of what is needed, nothing more will be done on this.
 
I would make the value 1 not 2 so (if I read the code correctly) they only get 50% contribution until shared experience is active. I would also prefer if it only applied to members of your party and not those left behind but I haven't quite got my head round the looped calls in levelling so it will have to do for now.
 
I was indeed thinking about making it only 50%.
Not entirely sure what effect that would have on gaining individual skills on fencing.

What if a character's officer type ISN'T set to contribute fencing?
I was afraid they might not even get their own XP then, but I don't know for sure if that is the case.

I agree that it would be best if this were limited to the shore party only.
But I didn't bother spending the time to figure that one out.
This was really the quickest of quick fixes. Anything else would require a bit more thought and testing.

Would you see the chance to set the number both to 1 and 2 and observe the differences with the Leveling debug toggles enabled?
I definitely like your suggestions, but I'd want to make sure there aren't unwanted side effects....
 
I might be able to do a check later this afternoon if that fits in with your compilation schedule.

I think that this bit in levelling
Code:
If ..... ||CheckAttribute(&Characters[cn],"getallxp")) skillmult = 1;
is meant to ensure a character always gets their own skill XP at 100%- I guess its function will show up with testing the 1 & 2 cases with debug toggles.
 
I might be able to do a check later this afternoon if that fits in with your compilation schedule.
Just so you know, this is currently my schedule:
- Tonight: (Hopefully) finish compiling the "b14_beta4_final.cab" file
- Tomorrow: Final finishing on this
- Saturday: Uploading the CAB file
- Next week: Testing
- Weekend after: Public release

So the deadline for stuff going in the CAB file is on Thursday.
But even after that, I can add small code updated in the Installer EXE next week as well.

In other words: Don't consider yourself excessively pressured. :doff

I think that this bit in levelling
Code:
If ..... ||CheckAttribute(&Characters[cn],"getallxp")) skillmult = 1;
is meant to ensure a character always gets their own skill XP at 100%
It must definitely be related to that section. :yes

The main things I'm curious about:
- Does the character who gains the XP always get 100%, regardless of officer type?
- What happens when AddXP ends up calling itself as part of that loop at the end
- What do the "groupxp" and "getallxp" do and do they work the way they're mean to?

It should be possible to create a check on whether a character is in the shore party or not.
Don't know it by the top of my head, but determining the condition itself should be quite doable.
The main query is where and how that should be implemented....
 
Assuming "shore party" means the three officers who walk around with you, the condition you want is 'IsOfficer', defined in "CharacterUtilite.c". There's also 'IsCompanion' to check if the character is in command of one of your three companion ships.
 
Assuming "shore party" means the three officers who walk around with you, the condition you want is 'IsOfficer', defined in "CharacterUtilite.c".
Yep, that's exactly it! :onya

And to be clear here, how do you ideally reckon it should work? I can think of several options:
1. Officers gain ONLY their own XP without SharedXP
2. Officers gain ONLY their own XP without SharedXP, with the exception of Fencing; that is always 100% shared (current situation)
3. Officers gain ONLY their own XP without SharedXP, with the exception of Fencing; that is always 50% shared
4. Officers gain ONLY their own XP without SharedXP, with the exception of Fencing; that is always 50% shared for officers in your shore party
5. Officers in your shore party always gain 50% even without SharedXP

@pedrwyth was proposing #4 I think, which to me sounds like a better solution than the current situation.
Is that what you want as well, or are you actually after #5? (Or an unlisted #6 that I don't quite understand yet...?)
 
Option 6 is to put levelling entirely back the way it was before the big rewrite, probably 19th November. As well as sorting out shared XP, this could perhaps solve other issues caused by the new system, e.g. Sabine Matton being level -2.

From what I recall, the old system either gave officers not in your shore party nothing at all, or gave them a smaller share than the shore party. It didn't bother about whether a skill was relevant to an officer's post, which meant the shore party got their fair share of XP handed out by quests and storylines as well. Since character level is related to total of skills, that meant they'd advance at a reasonable rate, earn levels, which meant ability points, which meant you could assign them perks. Whereas now, if they don't get XP except when relevant to their posts, they advance more slowly through overall levels, don't get perks, and get left behind more quickly. It was always the case that you advanced more rapidly than your officers so eventually you could do everything better than them, but it's even more the case now. The other difference is that officers got a small share if you didn't have "Shared XP" and a larger share if you did.

But if you're determined to keep the new system then option 6 would be to translate XP from non post-related skills into XP for post-related skills, so that, for example, if a quest hands you 1000 points in "Leadership", your gunner who can't get "Leadership" gets his share of that 1000 points split among "Cannons" and "Accuracy" instead. That could give your officers some chance of keeping up.

Fencing, at least, should certainly only be shared with your shore party. They're the ones who are actually there in battle gaining combat experience. So if we have to keep the new system then I'd probably say 2a, which is fencing 100% shared for officers in your shore party.

And if all other shared XP is to require the "Shared XP" perk then the level 10 restriction has to go. That way the system is only as bad as the stock game, not worse - at least then you can take the perk as soon as you have 2 spare ability points and don't need to wait until your level 10 skills and perks, backed up by any skill items you've picked up by then, make all your officers redundant.
 
Option 6 is to put levelling entirely back the way it was before the big rewrite, probably 19th November.
That would be a job that can easily take MONTHS to do.
19th November was NOT before the big rewrite; that was started already in the Summer.

Unless you can revert only the "AddXP" function within Levelling.c itself.
Maybe that works, maybe it doesn't. I really don't know and I am not going to find out.
If you think it may be worthwhile, that would be up to you to try.

this could perhaps solve other issues caused by the new system, e.g. Sabine Matton being level -2.
That problem is somewhere else. If I can find a bit of time, I can probably solve that by adding a check on "rank < 1" or so.

From what I recall, the old system either gave officers not in your shore party nothing at all, or gave them a smaller share than the shore party. It didn't bother about whether a skill was relevant to an officer's post, which meant the shore party got their fair share of XP handed out by quests and storylines as well. Since character level is related to total of skills, that meant they'd advance at a reasonable rate, earn levels, which meant ability points, which meant you could assign them perks. Whereas now, if they don't get XP except when relevant to their posts, they advance more slowly through overall levels, don't get perks, and get left behind more quickly. It was always the case that you advanced more rapidly than your officers so eventually you could do everything better than them, but it's even more the case now. The other difference is that officers got a small share if you didn't have "Shared XP" and a larger share if you did.
I've got to admit I don't particularly care what the old system used to do.
What I DO care about is what the system should do.

If there is truly a problem with officers lagging behind on the player that is worse now than it was before,
my preferred solution would be to give officers a BONUS in gaining skills that they do actually contribute.
If a player focuses on all skills at once, I imagine you can't become equally as good at all of them than if you'd focus on just a few.
Which means that by my reckoning, officers should be gaining their skills FASTER than the player.

I also care about making as few changes as possible.
Fixing this properly is specifically NOT my job and I therefore specifically do NOT want to have to do it.
Some quick hacks to make things behave more reasonable perhaps, just to be able to get Beta 4 released, over and done with.
But I have no intention of taking responsibility once again for a mod that isn't mine.

But if you're determined to keep the new system then option 6 would be to translate XP from non post-related skills into XP for post-related skills, so that, for example, if a quest hands you 1000 points in "Leadership", your gunner who can't get "Leadership" gets his share of that 1000 points split among "Cannons" and "Accuracy" instead. That could give your officers some chance of keeping up.
That part just makes no sense to me, sorry.
If you're handing out "Leadership" skills to the player party, why would that magically transform into "Cannons" and "Accuracy"?
It is specifically LEADERSHIP that is gained. Otherwise you might as well go back to "Auto Skill System OFF".

One thing that you may like: As far as I can tell, it IS possible to give skills to "" instead.
From what I gather from the code, that is "general XP" that is distributed based on characters' skill importances.
Which means if it is shared, then the First Mate would get some extra Leadership while the Gunner would get some extra Accuracy.
I think....

Fencing, at least, should certainly only be shared with your shore party. They're the ones who are actually there in battle gaining combat experience. So if we have to keep the new system then I'd probably say 2a, which is fencing 100% shared for officers in your shore party.
100% even for those officers who didn't do the Fencing themselves?
I think this would mean that if you are by yourself, you gain 100% Fencing XP.
If you have a full shore party, EVERY shore party member would get 400% Fencing XP.
That sounds like it would get very excessive very quickly, no?

And if all other shared XP is to require the "Shared XP" perk then the level 10 restriction has to go. That way the system is only as bad as the stock game, not worse - at least then you can take the perk as soon as you have 2 spare ability points and don't need to wait until your level 10 skills and perks, backed up by any skill items you've picked up by then, make all your officers redundant.
I still fail to see how the new concept is worse than things used to be. Different, yes.
But having officers gain experience specifically in their own areas of expertise makes perfect sense.
That is what the Auto Skill System is all about, after all.

"Shared XP" is meant to be a bonus; not a necessity. Which is why I want to have confirmation on the situation when it is NOT in use.
Because that situation should already be OK by itself. If it is not, then there is a different logic issue altogether.

But even after all these months of going back and forth, I do not see the actual problem with the concept itself.
If you truly want characters to "gain general XP whenever XP is gained" and for them to "convert that XP into what suits their role",
then my first suggestion would be to disable the Auto Skill System and REALLY go back to stock game behaviour.


More than anything else though: I am so *%&^$#% sick of the ruddy bloody delays and bugs caused by the Levelling system that I just want to see Beta 4 released.
I personally no longer case about the state of that system. Some people report that it is at least somewhat OK, but we need more feedback.
The feedback so far has been inconclusive and confusing; at least to myself, who hasn't actually been actively involved in this at all.
(Other than having to step in several times because the bugs were completely game-breaking).

From what I understand, now the whole discussion is more about balancing and preferences than it is about badly broken functionality.
Any large reworking of the system means the 1000th delay for Beta 4 and I refuse to let that happen anymore.
This weekend there will be a brand new release. Next week is final internal testing. Weekend after is public release.
And I myself am making only the barest minimum of changes until that is all over and done with.
 
All the above being said, I have begun developing some initial thoughts on this....

For starters, if I understand the concerns correctly, the issues are purely with the rate of experience gain, especially for officers.
Which means that this may require only very localized changes; specifically to this function:
Code:
//This function is always called. it determins who should get the XP etc
bool AddXP(ref chref, string expName, int _exp, string group)
{
   int cn,xp,cidx,i;
   float xpmult;
   bool LevelUp = false;
   //First catch some weird cases which shouldn't happen in the first place. let log if they do happen.
   if(!CheckAttribute(chref,"index")) { return false; if(DEBUG_EXPERIENCE>0) Trace("XP ERROR: Character "+GetMySimpleName(chref)+" has no index");}
   if(sti(chref.index)<0) { return false; if(DEBUG_EXPERIENCE>0){ Trace("XP ERROR: Character "+GetMySimpleName(chref)+" has index smaller than 0");} }
   if(_exp < 0)
   {
     _exp = -(_exp);
     if(DEBUG_EXPERIENCE>0) Trace("XP ERROR: NEGATIVE XP CALL");
   }
   if(_exp == 0)
   {
     if(DEBUG_EXPERIENCE>0) Trace("XP ERROR: ZERO XP CALL");
     return false;
   }
   
   if(DEBUG_EXPERIENCE>0) Trace("XP LOG: Called AddXP for "+GetMySimpleName(chref)+" with skill: "+expName+" and xp: "+_exp+" and group: "+group);
   
   //Add a difficulty multiplier
   float diffmult = 1.0-((GetDifficulty()-1.0) / 6.0); //Let's make it a bit less dependent on difficulty

   //If we are only doing the player we can return here (for performance reasons)
   if(group == XP_GROUP_PLAYER)
   {
     xpmult = GetXPmult(expName);
     xp = makeint(makefloat(_exp)*xpmult);
     if(AddXPtoChar(chref, expName, makeint(diffmult*xp))) LevelUp = true;
     return LevelUp;
   }

   //Check for shared experience
   bool SharedXP = GetOfficersPerkUsing(chref,"SharedExperience");
   if(DEBUG_EXPERIENCE>1) { if(SharedXP) Trace("XP LOG: SharedXP is active"); }
   
   //Now handle the officers
   if(group == XP_GROUP_OFFIC)
   {
     //First see if we are an officer or companion of a group.
     cidx = FindCaptainIndex(chref);
     if(cidx > -1)
     {
       //We want to exclude this character from the next check so let's give an attribute to the captain
       if(DEBUG_EXPERIENCE>1) Trace("XP LOG: Captain found so let's check for captain instead");
       ref captain = &Characters[cidx];
       chref.getallxp = true;
       captain.groupxp = true;
       //We seem to be part of a larger party so let's check for the whole party
       if(AddXP(captain, expName, _exp, XP_GROUP_OFFIC)) LevelUp = true;
       return Levelup;
     }
     else
     {
       int start = 0;
       //Check if we got this XP from the group or ourself
       if(CheckAttribute(chref,"groupxp")) DeleteAttribute(&chref,"groupxp");
       else chref.getallxp = true;
       //If we are the captain then assign xp to the characters and me
       for(i=-1; i < GetPassengersQuantity(chref); i++)
       {
         //We start at -1 where -1 will be the captain himself so he goes trough the same checks as the rest.
         if(i == -1)
         {
           cn = sti(chref.index);
         }
         else
         {
           cn = GetPassenger(chref, i);
         }
         if(cn < 0) continue;
         if(DEBUG_EXPERIENCE>1) Trace("XP LOG: Checking Officer "+i+" with id "+cn);
         //Filter prisoned characters
         if(CheckAttribute(Characters[cn],"prisoned") && sti(Characters[cn].prisoned)) continue;
         //Check if this officer deserves the XP
         if (IsOfficerOf(&Characters[cn],chref) || i==-1)
         {
           //We need to be an officer, passengers don't get any experience at all because they are only "passengers"
           float skillmult = GetOfficerSkillFactor(&Characters[cn], expName) / 2; //this will make 100% skill contribution give 100% XP and 50% skill contribution give 50% XP
           if(SharedXP || expName == "" || CheckAttribute(&Characters[cn],"getallxp")) skillmult = 1; //If SharedXP is active we should always have 100% XP
           if(DEBUG_EXPERIENCE>1) Trace("XP LOG: skillmult = "+skillmult);
           if(skillmult > 0)
           {
             if(AddXP(&Characters[cn], expName, makeint(_exp*skillmult), XP_GROUP_PLAYER)) LevelUp = true;
           }
           DeleteAttribute(&Characters[cn],"getallxp");
         }
       }
     }
   }
   
   //Now handle the companions
   if(group == XP_GROUP_PARTY)
   {
     //Check if there is a leader of the group
     cidx = GetCompanionOf(chref);
     if(cidx > -1)
     {
       //If there is a leader let's call the function for him instead
       if(AddXP(&Characters[cidx], expName, _exp, XP_GROUP_PARTY)) LevelUp = true;
       return LevelUp;
     }
     else
     {
       //If we are the leader then give XP to the characters
       if(DEBUG_EXPERIENCE>1) Trace("XP LOG: Checking companions");
       if(GetCompanionQuantity(chref) > 0)
       {
         for(i=0; i < 4; i++)
         {
           cn = GetCompanionIndex(chref, i);
           if(DEBUG_EXPERIENCE>1) Trace("XP LOG: Checking Companion "+i+" with id "+cn);
           if(cn < 0) continue;
           //Filter prisoned characters
           if(CheckAttribute(Characters[cn],"prisoned") && sti(Characters[cn].prisoned)) continue;
           //Now add the XP to the companion and maybe his officers
           if(AddXP(&Characters[cn], expName, _exp, XP_GROUP_OFFIC)) LevelUp = true;
         }
       }
     }
   }
   //returns true if there is a levelup somewhere
   return LevelUp;
}
Related, there are THREE "XP groups":
Code:
#define XP_GROUP_PLAYER     "player"       //(DO NOT CHANGE) XP will only be given to the player
#define XP_GROUP_OFFIC     "officers"       //(DO NOT CHANGE) XP will be given to player and officers
#define XP_GROUP_PARTY     "party"         //(DO NOT CHANGE) XP will be given to everyone in the party

"Player" = Only the character that gained the XP
Officers = Everybody assigned to that ship
Party = Also all other ships in the fleet

Is there anything missing there? Should there be extra groups? For example:
Single Character
Shore Party
Ship Party
Fleet

Though we may not even need extra groups if we go with what I propose below.

For changes to the actual logic, I'd say we should distinguish between gaining "fencing" XP (= personal skill) and any other skills (are shared).

Fencing with SharedXP OFF:
- Character who gained the XP gets 100%
- Other characters in the shore party get 50%
- Characters not in the shore party get 0%

Fencing with SharedXP ON:
- Character who gained the XP gets 100%
- Other characters in the shore party get 100%
- Characters not in the shore party get 50%

This means that officers who are ashore ALWAYS get extra fencing XP, even if they're not personally doing it (because "they're observing it" or something).
They get bonus with Shared XP and so do all other officers, because "after they gained the XP, they teach the others".
Still... nothing beats first-hand experience, so officers left on the ship do get less.

Other skills with SharedXP OFF:
- Character who gained the XP gets 100%
- If officer contributes skill at level "1" ALSO gets 100%
- If officer contributes skill at level "2", gets 200% (!!!)
- Any other characters get 0%

Other skills with SharedXP ON:
- Character who gained the XP gets 100%
- If officer contributes skill at level "1" ALSO gets 100%
- If officer contributes skill at level "2", gets 200%
- Any other characters get 50%

With this, officers ONLY gain skills in their own fields, BUT on their "main" skill they'd gain at TWICE the rate of the player.
This should hopefully serve to make them get better in their fields than the player himself would.
Shared XP means that slowly any other officers would start gaining the experience as well.
Alternative would be going fully 100% for the other officers, but I do believe that sounds excessive.

So that's an initial proposal. Does that sound about right?
And if not, where should it be changed and for what reason?
 
Additional proposal to the above:
- Player character only ever gets 50%, regardless of Shared XP.

Reason being: For Fencing, the XP of the group gets stacked up. So with just the player, player gains 50%.
With one officer, both gain 2x50%. With four characters in the shore party, you get up to 4x50=200% or even more.
In other words: It stacks up rather fast.

Likewise, we WANT officers to be needed.
So having the player ALWAYS gain less XP than the officers means that the officers should get much better than the player in their respective fields much faster.
 
Back
Top