count("SKILLSIT") doesn't include situational skills with penalties

Description

I'm tracing some disappearing skills that I though I had fixed in OS-397, but it seems the problem is actually lying in the code. The call count("SKILLSIT","NONDEFAULT") does not seem to actually include the situations, and after some exploring, I find that count("SKILLSIT") doesn't either.

I've traced this to SkillDisplay.getSkillListInOutputOrder() which is called from JepCountSkillSit.count() via base class JepCountType().processCount. Form there we go down to pc.getDisplay().getPartialSkillList(), and that result does not include the situation skills. CharacterDisplay.getPartialSkillList() retrieves the list from the SkillFacet, where I've lost the trail...

The result is that the count does not include the situation skills, but the are returned when iterating over the skills. and so the list is truncated in the end with one skill missing for each situation skill listed earlier.

Environment

None

Activity

Show:
James Dempsey
January 15, 2015, 2:36 AM

UMD is trained only and thus only appears when a rank is added to the skill. Is that the issue? Otherwise could you outline what is wrong with the attached character please?

Stefan Radermacher
January 15, 2015, 3:29 AM
Edited

James, UMD just comes into play because it is the last skill in the list if trained. However, it seems, not all situational skill cause this.I just tried to create a list of steps to reproduce this problem, and while it doesn't behave as it should, it didn't behave as I expected either. Here it is:

1) Start PCGen, load Pathfinder Core Rulebook only.
2) Create a new character, human rogue level 1, ability scores don't matter.
3) Check the Skills tab. There is one situational skill Perception (Trapfinding), but the list is complete, with Swim being the last in the list. (I had expected it to vanish.)
4) Now go to the Inventory tab and buy and equip a breastplate (ignore that it's listed in red).
5) Go back to the Skills tab. Unfortunately the list in the right hand panel isn't auto-refreshing, so add 1 rank to any skill and remove it again to force a refresh. Note that with the addition of Acrobatics (Jump)—mandated by the reduced speed due to medium armor—we now have two situational skills. And note also that the Swim skill is now gone.
6) Add 1 rank to Use Magic Device. The Swim skill reappears, but UMD is not listed

If you start out with a dwarf rogue who has four situational skills right from the start, Acrobatics (jump), Appraise (Precious Metals), Perception (Trapfinding), and Perception (Stoneworks), you'll find that the Swim skill is not listed, but it's the only one. Adding 1 rank in UMD brings Swim back here, too, while UMD remains unlisted.

So in effect, it seems the count() returns one less than needed, if there are any situational skills.

Note that in I changed the skill loops to run to count() instead of to count()–1 on most sheets as it had seemed to me that was responsible for missing skills.

James Dempsey
January 15, 2015, 6:31 AM

This is caused by CODE-2766. In that issue I fixed the skillsit token but not the count. So any time there was a situational penalty the count would be short.

Mark Means
January 15, 2015, 4:27 PM

Cool beans! I will definitely be downloading the snapshot tomorrow.

Stefan Radermacher
January 15, 2015, 5:02 PM
Edited

What an insidious bug. Thanks for fixing it, James! I will reopen and undo the loop changes I made.

Fixed

Assignee

James Dempsey

Reporter

Stefan Radermacher

Labels

None

Theme

None

Epic/Theme

None

Pending User Input

None

Components

Fix versions

Affects versions

Priority

Major
Configure