Soz party size and experience rewards


#1

I’m currently playing SoZ for the first time and I’ve so far opted to stick to 4-member party. I assumed a smaller party will result in higher-leveled characters, but I’m beginning to doubt it.

Experience rewards come from multiple sources: quest completion, skill use on the overland map, disabling traps, winning random encounters and killing enemies. Killing enemies provides the least experience and I suspect it’s the only source affected negatively by party size. If that is correct not taking cohorts would entail pointlessly gimping yourself.

How does xp relate to party size and is there a meaningful benefit to using a smaller party?


#2

Hello Nirn. I’ve never noticed that a smaller party does anything except maybe bragging about completing the mod. Some of the latter encounters may become a lot harder without at least one companion on the team. I hope this helps you.:grinning:


#3

iirc larger parties get more xp from overland map encounters, to the point you can summon stuff before leaving the encounter map to maximize your xp. Presumably it should be the opposite of that.


#4

can you elaborate on that?


#5

when going into a battle from the OL Map, do summons, do familiars, etc etc

larger party = more XP ea.

oh and XP is granted in the dialog that exits the battle area (so the extra party doesn’t even have to be there during the fight, as long as they’re invoked before the exit-dialog)

/don’t quote me though, i just glanced at the AwardXP function and it looks okay …


#6

That’s what happens, the xp award is given on exit.


#7

‘ga_leave_encounter’ – fired by dialog ‘00_leaveencounter’

  • gets “nEncounterEL” value that was set on the battlearea (when party entered the area)
  • gets “nPartyCR” GetPartyChallengeRating(), average level of the party (ie, totalLevels / partySize)
  • gets “nXP” GetEncounterXP() from the appropriate encounter table (.2da file, cross-references encounter EL w/ party CR)
  • calls AwardEncounterXP() which counts party-members, divides the XP, and awards the reduced XP …

I think the quirk, is that GetPartyChallengeRating() will lower the party’s average level, since Associates (summons, familiars, henchmen, etc) are generally of a lower level than the PC or Companions, such that GetEncounterXP() looks up a higher XP-value in the encounter .2da

which is then split equally among the PC and the Companions but bypasses summons/familiars/etc.

(SoZ OL scripts)


#8

Ah, so it’s the old include lower level party members to increase your XP trick.
Basically if you have 2 level 20s your CR is 40/2 = 20
If you have 2 level 20s and a level 1, your CR is 41/3 = 13


#9

This seems like a possible nwn2fix. I doubt its what they intended.


#10

Character power scales roughly geometrically with level. How about this formulation of relative power divided by total levels:

With two characters: (20x20 + 20x20)/(20 + 20) = 20
With three: (20x20 + 20x20 + 1x1)/(20 + 20 + 1) = 19.5
With levels 20, 10, and 5: (20x20 + 10x10 + 5x5)/(20 + 10 + 5) = 15
With levels 3, 2, and 1: (3x3 + 2x2 + 1x1)/(3 + 2 + 1) = 2.3


#11

I think that’s probably the most logical mathematically.


#12

I think this change to ‘ginc_overland’ would implement the alternative method:

int GetPartyChallengeRating()
{
	object oPartyMember = GetFirstFactionMember(GetFirstPC(), FALSE);
	int nHD;
	int nTotalPartyPower;
	int nTotalPartyLevels;
	float fPartyCR;
	
	while (GetIsObjectValid(oPartyMember))
	{
		nHD = GetTotalLevels(oPartyMember, FALSE);
		nTotalPartyLevels = nTotalPartyLevels + nHD;
		nTotalPartyPower = nTotalPartyPower + (nHD * nHD);
		oPartyMember = GetNextFactionMember(GetFirstPC(), FALSE);
	}
	
	fPartyCR = IntToFloat(nTotalPartyPower) / IntToFloat(nTotalPartyLevels);
	
	return FloatToInt(fPartyCR);
}

Would it make sense to make this a bug fix?


#13

i think it would still have the “summon associates to increase XP” thing. but less noticeable

 
The most straightforward “fix” i could think of is to a) go ahead and calculate the total XP, then b) include Associates when divying up the total XP (but throw their xp away)

An alternative would be to not include associates when calculating party CR. (This would certainly fix the bug, it seems to me.)

i really like the algorithm, Rj, but whether i like it or not, it seems to me that it’s a modification (unfortunately for Nwn2Fixes). but yeah if anyone wants to change their own i recommend it …

 
am hesitant to make any change in nwn2fixes since they at present they all strike me as modifying experience awards away from standard Nwn2 practice,

the more I think about it, the more the bug seems integral to the encounter XP table and the fact that a player can get more XP by making his/her party tougher …