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

Feature Request Shared XP Discussion

Officers MUST always get the XP for their contributing skills, regardless of whether they're in the Shore Party or not!
That is currently the case and I want that to remain as-is.

From the above, I see the following suggested changes by @Grey Roger and @Tingyun:
1. Reduce Fencing skill sharing to 30% (currently 50%) within the shore party when Shared XP is not active
2. Increase the XP multiplier for Cannons
3. Limit the effect of Shared XP to the Shore Party only (OPTIONAL: Do share Fencing XP with passengers on the ship, for risk-free training purposes)
4. Disable the Shared XP perk on Iron Man Mode (plus extra InternalSettings.h toggle to do this earlier)

Did I miss anything? Would these changes be considered good ones?
Are they ALL necessary? Or would #3 save us the trouble of needing #4?
 
That could work. I would actually play with shared xp under Levis's proposed system. :)

EDIT: but I think passangers on ship not in shore party shouldn't get fencing xp. Some people are noncombatents, I'd rather they didn't all become supermen in combat. Only those who risk their lives and practice in combat should share in fencing xp.
nobody contributes melee skills so nobody would get fight XP on the ship
 
Officers MUST always get the XP for their contributing skills, regardless of whether they're in the Shore Party or not!
That is currently the case and I want that to remain as-is.

From the above, I see the following suggested changes by @Grey Roger and @Tingyun:
1. Reduce Fencing skill sharing to 30% (currently 50%) within the shore party when Shared XP is not active
2. Increase the XP multiplier for Cannons
3. Limit the effect of Shared XP to the Shore Party only (OPTIONAL: Do share Fencing XP with passengers on the ship, for risk-free training purposes)
4. Disable the Shared XP perk on Iron Man Mode (plus extra InternalSettings.h toggle to do this earlier)

Did I miss anything? Would these changes be considered good ones?
Are they ALL necessary? Or would #3 save us the trouble of needing #4?
I'd also say reduce the XP gained for contributing skills to only be maximum 100% instead of 200% what it can be now
 
I'd also say reduce the XP gained for contributing skills to only be maximum 100% instead of 200% what it can be now
The reason for it being 200% is very, VERY important. This is what ensures officer XP gain is faster than the player!
If it is the same as the player, then there is a very real risk that player skill gain will be so fast you might as well not bother with officers.
So officers getting 200% with the player getting "only" 100% is something I strongly recommend keeping. :wp
 
@Pieter Boelen

I agree with everything on your list except for lowering fencing xp to 30% without the perk. I think keep it the same 50% regardless of whether the player decides to play with shared xp--no reason to punish a player in thst basic mechanic of they decide not to take the perk. It should be about having the ability to make a limited number of generalists from your shore party to later be used as captains, NOT about your ability to train the fighting team you'd need anyway.

EDIT: and I'd not want the optional sharing fencing xp with passengers. Some people are noncombatents, they shouldnt get fencing xp by doing nothing st all and never risking their lives. I shouldnt be able to train up fighters by fighting solo.
 
Is the Quartermaster gaining Repair equally fast or faster than the Carpenter?
I don't think that should be the case? o_O
case "Accuracy": expMult = 1.25; break;
case "Cannons": expMult = 0.4 ; break;
case "Repair": expMult = 50 ; break;
50 for "Repair"? No wonder it's going up so fast!

I'm not sure now whether the quartermaster was going up faster than the carpenter. As I said, what struck me was that he was going up faster in Repair than the gunner was going up in Cannons. Not surprising if the factor for "Repair" is 50!

@Grey Roger: Would you think it makes sense to have Shared XP affect only the shore party?
Or would you prefer to have it affect all passengers on the ship instead, as is currently the case?
Unless you want micromanagement as players rotate officers in and out of the shore party to get them trained up, I suggest it remains as it is. Barring the even more gratuitous micromanagement I did under "Tales of a Sea Hawk", officers are still not going to all become superclones as they'll still be getting more XP from their assigned roles.
 
The reason for it being 200% is very, VERY important. This is what ensures officer XP gain is faster than the player!
If it is the same as the player, then there is a very real risk that player skill gain will be so fast you might as well not bother with officers.
So officers getting 200% with the player getting "only" 100% is something I strongly recommend keeping. :wp
200% is quite much, maybe tone it down a bit. If I read the comments frmo @Tingyun it seems he also thinks it's going to fast.
maybe just give them a base 25% bonus and give them 50% if they contribute 1 and 100% if they contribute 2 so that would result in 75 and 125 percent respectivly.
If a character would only contribute half he would go a bit slower then the main character which does sound logical. If he contributes fully he goes a bit faster.
 
@Grey Roger the 50 is also because I believe in the previous system repair was getting a hard coded bonus too because you don't get much XP for repair. This function tries to equalize the XP gain for most skills. it's also an easy way to tweak things. Say a new mechanic is introduced to gain repair XP easyer, then this value can be toned down to equalize it a bit.
Would you say dividing it by 2 would help? So you would need twice as much time to get to level 10 in repair.
 
Why would a player micromanage to make their surgeon a master at sailing?

Presuming they want 3 good captains, they have three shore party slots to train them up in. Unless the player is just trying to gets 10s for the sake of 10s.;)

Ok, signing off for now, got to get ready: just want to one last time express that I do not think shared xp perk should affect fencing in ANY WAY. Training up fighters should work equally well with or without the perk, and people shouldn't have their carpenter becoming a master swordsman sitting on a boat never taking risk. People should specifically pick and train up their fighting group.
 
I agree with everything on your list except for lowering fencing xp to 30% without the perk. I think keep it the same 50% regardless of whether the player decides to play with shared xp--no reason to punish a player in thst basic mechanic of they decide not to take the perk. It should be about having the ability to make a limited number of generalists from your shore party to later be used as captains, NOT about your ability to train the fighting team you'd need anyway.
It was @Grey Roger who suggested a reduction to 30%.

I'd not want the optional sharing fencing xp with passengers. Some people are noncombatents, they shouldnt get fencing xp by doing nothing st all and never risking their lives. I shouldnt be able to train up fighters by fighting solo.
I'm inclined to agree.

50 for "Repair"? No wonder it's going up so fast!
The factors depend on how often in general gameplay there is an "increase XP" event for that skill.
Cannons, for example, happens very often, for each successful cannon hit I think. Repair does not. Only once per day and in the Shipyard or so?
So a large difference in multiplication factor is necessary to get them both in line.
That is difficult though, since you can only know for sure from long playtesting. So thanks for your feedback there! :cheers

I'm not sure now whether the quartermaster was going up faster than the carpenter. As I said, what struck me was that he was going up faster in Repair than the gunner was going up in Cannons.
Shame. That would've been interesting to know for sure. If the system works as intended, the Carpenter should still get it faster than the Quartermaster.

Unless you want micromanagement as players rotate officers in and out of the shore party to get them trained up, I suggest it remains as it is. Barring the even more gratuitous micromanagement I did under "Tales of a Sea Hawk", officers are still not going to all become superclones as they'll still be getting more XP from their assigned roles.
So.... A toggle then. As-is for @Grey Roger and different for @Tingyun.
Then the question is: Different in what way? I think it can be either #3 OR #4:
3. Limit the effect of Shared XP to the Shore Party only (OPTIONAL: Do share Fencing XP with passengers on the ship, for risk-free training purposes)
4. Disable the Shared XP perk on Iron Man Mode (plus extra InternalSettings.h toggle to do this earlier)

200% is quite much, maybe tone it down a bit. If I read the comments frmo @Tingyun it seems he also thinks it's going to fast.
maybe just give them a base 25% bonus and give them 50% if they contribute 1 and 100% if they contribute 2 so that would result in 75 and 125 percent respectivly.
If a character would only contribute half he would go a bit slower then the main character which does sound logical. If he contributes fully he goes a bit faster.
If half contribution is lower than the player, then half contribution is pointless, because the player will probably get the same skills equally fast.
At the moment half contribution is equal to the player. Maybe it should even be a bit more. Definitely not less.

There are two reasons for it being 200%: It needs to be NOTABLY more than the player. This 100% difference is what gives specified officers their functional use.
Smaller difference means that officers become less useful. Maybe the gap could be a bit smaller while maintaining the intention. But by how much? I honestly haven't a clue.

The other reason is that I needed a number greater than 100% and 200% was easy to code. So why not use it if there is no way to figure out a better number anyway? ;)

@Tingyun found the general skill progression a bit on the fast side and wanted to tone that down.
That is not because the 100-vs-200% though, since that controls the relative differences in skill gain between player and officers.
I don't remember seeing him comment on specifically that. :no
 
Why would a player micromanage to make their surgeon a master at sailing?
From what I understand, because @Grey Roger wants to make his officers samey-samey Hero Supermen... :confused:

Presuming they want 3 good captains, they have three shore party slots to train them up in.
I think the main reason I didn't share within only the Shore Party before is because the shore party generally serves as "extra muscle" in shore fights.
After all, shore party = risk. But maybe that isn't such a bad thing?

Unless the player is just trying to gets 10s for the sake of 10s.;)
Exactly that. :wp
 
@Grey Roger the 50 is also because I believe in the previous system repair was getting a hard coded bonus too because you don't get much XP for repair. This function tries to equalize the XP gain for most skills. it's also an easy way to tweak things. Say a new mechanic is introduced to gain repair XP easyer, then this value can be toned down to equalize it a bit.
Would you say dividing it by 2 would help? So you would need twice as much time to get to level 10 in repair.
Based on that game, I'd say reduce "Repair" and increase "Cannons".

Presuming they want 3 good captains, they have three shore party slots to train them up in. Unless the player is just trying to gets 10s for the sake of 10s.;)

Ok, signing off for now, got to get ready: just want to one last time express that I do not think shared xp perk should affect fencing in ANY WAY. Training up fighters should work equally well with or without the perk, and people shouldn't have their carpenter becoming a master swordsman sitting on a boat never taking risk. People should specifically pick and train up their fighting group.
If you never intend to put the carpenter into the shore party then it doesn't matter what Fencing skill he does or doesn't get. On the other hand, if you're using the shore party as a way to train 3 good captains who will then be put onto companion ships then you're going to need someone else to step in and join you in battles when they're on their ships. Fortunately that carpenter has been paying attention to all your tales of battle and is now ready to join in.

That's more or less how I envision "Shared XP" working. Either you've got all your officers round the captain's table for food and rum and are telling them in great detail about your exploits, or you're running training classes for them. Either way, the perk means you're good enough at passing on your wisdom that they actually pay attention and learn something.
 
@Pieter Boelen at the moment with the current system the main player's XP will always divided by 2 so he will only get 50% of the XP. so then 75% will still boost them.
I think we should remove that 50% for the main player so it becomes more clear what we are talking about. if the player receives 100% of the XP then I agree a half contributing should receive above 100% indeed.
So what about this:
mainplayer get 100%
1 contributing gets 125%
2 contributing gets 175%
It's still a reduction in total, and also a significant reduction compared to the main player.

So with your comments applied it would look something like this I think:
Code:
if(group == XP_GROUP_OFFIC)
    {
        float skillmult, tempmult;
        capt = GetCharacter(FindCaptainIndex(chref));                                                // Get the captain of the ship
        for(i=-1; i < GetPassengersQuantity(capt); i++)                                                // Start at -1 to include captain
        {
            if (i == -1)    cn = sti(capt.index);                                                    // Captain of the group
            else            cn = GetPassenger(capt, i);                                                // Passenger of this character
            if (cn < 0)                                                    continue;                    // Skip invalid characters
            chr = GetCharacter(cn);                                                                    // Reference to the character
            if (CheckAttribute(chr,"prisoned") && sti(chr.prisoned))    continue;                    // Filter prisoned characters
            if(DEBUG_EXPERIENCE>1) Trace("XP LOG: Loop "+i+", Checking Officer "+GetMySimpleName(chr)+" with id "+chr.id);

            // Determine Skill Multiplier for this character
            skillmult = 0.0;
            if (cn == sti(chref.index))                                            skillmult = 1.0;    // The character who gained the XP gets 100%
            if (expName == "")                                                    skillmult = 1.0;    // All characters join in "general XP"
            if (expName == SKILL_FENCING)                                                            // Fencing is a personal skill and should be handled differently
            {
                if (skillmult < 0.5 && bAllies(chref) && IsOfficer(chr))        skillmult = 0.5;    // Character is in the player shore party
            }
            else                                                                                    // For any non-personal skills
            {
                tempmult = 0.75 + (makefloat(GetOfficerSkillFactor(chr, expName))/2.0);                // This means an officer gets between 125 and 75 percent
                if (skillmult < tempmult) skillMult = tempmult;                                        // The officer who gains the XP will ALWAYS get it
            }
            if (i == -1)                                                                            // Special case for the captain, because you cannot focus on all skills at the same time
            {
                if (skillmult < 0.5)                                             skillmult = 0.5;    // Only 50% of all skills if no set higher before
                if (expName == SKILL_LEADERSHIP)                                skillmult = 1.0;    // But a captain MUST know how to lead a crew
                if (expName == SKILL_SAILING)                                    skillmult = 1.0;    // And navigate a ship
            }
            if (skillmult < 0.5 && SharedXP && IsOfficer(chr))                    skillmult = 0.5;    // Sharing XP, so everybody in the shoreparty gets at least 50%
            if(DEBUG_EXPERIENCE>1) Trace("XP LOG: skillmult = "+skillmult);

            // Add Experience
            if (skillmult > 0.0)                                                                    // If any XP is to be added to this character
            {
                if(AddXP(chr, expName, makeint(_exp*skillmult), XP_GROUP_PLAYER)) LevelUp = true;    // Add that XP and see if it resulted in a Level-Up
            }
        }
    }

this would only give shore party all skills XP if shared XP is enabled.
 
@Grey Roger sounds somewhat reasonable. But would you agree that if sharedXP is enabled officers in your shoreparty should gain the XP in the other skills faster then the ones on your ship?
So say for example if they are in your shoreparty they will receive 100% of the XP for the skills which they don't contribute because they can see you do it. While people on your ship only get 50% of the XP because they have to hear is second hand

that would make the last part like this:
Code:
if (skillmult < 0.5 && SharedXP)
            {
                if (skillmult < 0.5)                                             skillmult = 0.5;    // Officers on your ship will still get some of the XP too if shared XP is enabled
                if (IsOfficer(chr))                                                skillmult = 1.0;    // Sharing XP, so everybody in the shoreparty gets all the XP just as the captain
            }
 
Pieter:

the player can select a different shore party of hunting/combat in the jungle or raiding dungeons, vs going to town to do things and sailing around. The risky combat one, he uses his guys to gain fencing, the town one, he uses his generalists. Random town bandits are no threat.

If you did it the way discussed above, we could have the below 2 toggles:

A) Shared xp enables sharing in shore part regardless of their role defined skills, and does nothing else (and doesn't change fencing xp)

B) Shared xp enables sharing among all officers, shore party or not, including fencing xp.

I think A would make me happy, and B would make Grey Roger happy, and we could both use our preferred toggle.

(Side note: yes, I wanted to slow down general xp rate to suit my own weird tastes, it had nothing to do with shared xp rates. I just didn't like sharing outside the shore party)
 
More precisely, I was seeing if I could make them all Hero Supermen. Answer: no. ;)
Ah, well that DOES sound like an interesting experiment. Also a comforting outcome. :onya

the player can select a different shore party of hunting/combat in the jungle or raiding dungeons, vs going to town to do things and sailing around. The risky combat one, he uses his guys to gain fencing, the town one, he uses his generalists. Random town bandits are no threat.
That's micro-managing. :(

If you did it the way discussed above, we could have the below 2 toggles:

A) Shared xp enables sharing in shore part regardless of their role defined skills, and does nothing else (and doesn't change fencing xp)

B) Shared xp enables sharing among all officers, shore party or not, including fencing xp.

I think A would make me happy, and B would make Grey Roger happy, and we could both use our preferred toggle.
One toggle should suffice, no? ON for some sort of "default behaviour" (whatever we decide that will be) and OFF for the alternate.
 
So I'm going home in a moment. Here is the leveling.c file I have now. I believe it has most changes in it we discussed by now (also changed cannons and repair).
place it in:
PROGRAM\characters

It's probably not a final version but if anyone wants to test it and tell me what the results are that would be nice.

You can quickly test it by calling this from the console:
Code:
AddXP(pchar, SKILL_LEADERSHIP, 1000, XP_GROUP_OFFIC);

change the SKILL_LEADERSHIP to the skill you think is best and the 1000 to the amount of XP you think is best.
You can also try it with an officer.
Code:
ref officer = GetCharacter(GetPassenger(pchar, 1));
AddXP(officer, SKILL_LEADERSHIP, 1000, XP_GROUP_PARTY);
changed the group to party here also, this way it should also work for companions so you can check that too. if you don't like that set it to XP_GROUP_OFFIC again
 

Attachments

  • Leveling.c
    59.3 KB · Views: 174
Will try out later.

Pieter, I don't think of that as micromanagement, rather it is the proper fun kind of management, making tradeoffa based on player needs.

In star trek when Picard selects Worf instead of Riker for a particular mission he expects to be dangerous, that is a fun choice, and part of the fun of exploring new islands (or planets). ;)
 
The problem is sea battles. You have your trainee captains in your party so they can learn the fine arts of sailing, repair, and blowing bits off enemy ships. Now you're coming alongside an enemy ship, you'd better remember to switch to the hired muscle before you board it, or more importantly, before it decides to board you... (This was often an annoyance when I was playing the stock game. I'd have a choice of officers so I could get the advantage of their skill and perks because only your shore party officers contributed them in the stock game. Then I'd get too close to an enemy ship, it boarded me, and the officers got killed because they were total incompetents with a sword. It's also why I'm suspicious of anything which takes shared XP back in the general direction of the stock game.)
 
Back
Top