# Abilities by Skill Ranks

Rule Description: Abilities can be bought by taking ranks in the appropriate skill.

PCGen Version: 5.12.1

Gamemode/Dataset: 35e/RSRD

File(s) Covered: statsandchecks.lst, abilitycategory.lst, abilities.lst, skills.lst

Tags used (Stats and Checks File):

DEFINE

Tags used (Ability Category File):

ABILITYCATEGORY, CATEGORY, PLURAL, EDITABLE, EDITPOOL, FRACTIONALPOOL, POOL, VISIBLE

Tags used (Skill File):

TYPE, VISIBILE, BONUS:ABILITYPOOL

Tags used (Ability File):

CATEGORY, TYPE, VISIBLE, PREABILITY, PRESKILL, PREVARLT, DESC, BONUS:VAR

Tags used (Class File):

BONUS:ADD

In this section we will discuss only those LST tags specific to this implementation, and how they are used to implement the subject rule. For more general information on the associated tags, please visit the LST File Tag Index section of the PCGen Documentation.

## Implementation Discussion

Implementing "Abilities by Skill Ranks" requires modifications to one Gamemode file and four Data files. The gamemode file we need to modify is the statsandchecks.lst file where we will be modifying the Intelligence stat. The data files include the abilitycategory.lst file where we will be adding a new category of abilities called the "AbilitybySkills", the skill.lst file where we will be creating a new skill called the "Skills to Abilities", the ability.lst file where we will be creating three new abilities, one to initialize the "Abilities by Skill Rank" mechanism for the character, one to be purchased by skill ranks and one to increase the maximum number of abilities that can be bought, and the class.lst file where we will demonstrate how abilities are granted through the "Abilities by Skill Ranks" mechanism at level-up. For the purposes of this implementation, we will call these abilities Initialize Abilities by Skill, Generic Skill Bought Ability, and Increasing Skill Bought Ability Max.

The mechanics of this rule, as implemented on this page, work this way:

- When the character is loaded, the AbilitybySkillMax variable is initialized and set to half of the characters total level.
- Each rank taken in the skill named "Skills to Abilities" adds one point to the ability pool for the "AbilitybySkill" category of abilities.
- "AbilitybySkill" abilities become available under the "AbilitybySkill" sub-tab on the feats tab.
- The first such ability the character takes defines and initializes the AbilitybySkillCount variable.
- Subsequent AbilitybySkill abilities taken by the character increases the value of the variable, AbilitybySkillCount, by one.
- Once AbilitybySkillCount equals or exceeds AbilitybySkillMax, AbilitybySkill abilities become unavailable until the character goes up a level, thereby increasing the AbilitybySkillMax variable.

We will discuss, below, each of the LST entries required, and the tags that make them work, to implement "Abilities by Skill Rank". For assistance in understanding how to read this page you may review the Rules Style Guide.

### Statsandchecks.lst File

Note: The statsandchecks.lst file is a gamemode file and as such is not referenced in the *.pcc file. It can be found in the pcgen/system/gamemodes/35e directory.

The statsandchecks.lst file entry required in this implementation consists of the modification of an existing entry. The following tag is added to the line defining the intelligence stat:

> Tag Used: `DEFINE:AbilitybySkillMax|TL/2`

> What it Does: This tag is used to define the variable AbilitybySkillMax to have a value of half the character's total level.

You will find the modified Intellegence Stat below.

### AbilityCategory.lst File

The specific abilitycategory.lst file entry required to implement "Abilities by Skill Ranks" consists of the definition of a single ability category called "AbilitybySkill". The tags used to do this are explained below:

> Tag Used: `ABILITYCATEGORY:AbilitybySkill`

> What it Does: This creates a new ability category called "AbilitybySkill". This is what will show in the PCGen user interface, under the FEATs tab.

> Tag Used: `CATEGORY:AbilitybySkill`

> What it Does: This sets the new category's parent category as the same as the new category.

> Tag Used: `PLURAL:AbilitybySkills`

> What it Does: This establishes the pluralform of the ability category name. (Used primarily for Internatinalization.)

> Tag Used: `EDITABLE:YES`

> What it Does: This establishes that that a user can select abilities in this category.

> Tag Used: `EDITPOOL:NO`

> What it Does: The pool for this category of ability cannot be modified by the user.

> Tag Used: `FRACTIONALPOOL:NO`

> What it Does: Restricts the ability pool for this category of ability to whole numbers only.

> Tag Used: `POOL:AbilitybySkillPool`

> What it Does: This establishes the base ability pool for AbilitybySkill equal to the value of the variable AbilitybySkillPool. (See DEFINE tag below.)

> Tag Used: `DEFINE:AbilitybySkillPool|0`

> What it Does: This tag is used to define the variable AbilitybySkillPool and initialize its value to zero.

> Tag Used: `VISIBLE:QUALIFY`

> What it Does: Makes this category of ability visible in the PCGen GUI only when the character puts points into the skill, thereby adding points to the ability pool.

You will find the completed AbilitybySkill Ability Category Definition below.

### Skills.lst File

Only one new entry is required in the skill.lst file. This is the new skill "Skills to Abilities". The purpose of this skill is to add bonus points to the pool of available points for the AbilitybySkill category of abilities, one for each skill rank taken. The tags used to do this are explained below:

> Tag Used: `TYPE:NoStat`

> What it Does: This skill is assigned a type of "NoStat".

> Tag Used: `VISIBLE:DISPLAY`

> What it Does: This skill will only be visible in PCGen's graphical user interface (GUI). It will not appear on the Character sheet.

> Tag Used: `BONUS:ABILITYPOOL|AbilitybySkillPool|SKILL.Skills to Abilities.RANK`

> What it Does: Breaking down the tag we are saying to give a bonus to the ABILITYPOOL of the AbilitybySkill category for each skill rank placed in the skill.

You will find the completed Skills to Abilities below.

### Ability.lst File

The specific entries in the ability.lst file will consist of one entry per line for each of the AbilitybySkill abilities you wish. The first item on each line will be the name of the particular ability being defined. We include below notes on the creation of three abilities called "Generic Skill Bought Ability", "Increasing Skill Bought Ability Max", and "Level Granted Skill Bought Ability".

#### Generic Skill Bought Ability

[Explanation of this ability.] The tags used to do this are explained below:

> Tag Used: `CATEGORY:AbilitybySkill`

> What it Does: This places the "Generic Skill Bought Ability" ability into the AbilitybySkill category. (See abilitycategory.lst above.)

> Tag Used: `TYPE:AbilitybySkill.Movement`

> What it Does: Sets the TYPE for this ability to "AbilitybySkill" and "Movement".

> Tag Used: `VISIBLE:QUALIFY`

> What it Does: Allows the user to see this ability within the PCGen GUI when all prerequisites have been met.

> Tag Used: `!PREABILITY:1,CATEGORY=AbilitybySkill,Generic Skill Bought Ability`

> What it Does: Sets a prerequisite for the "Generic Skill Bought Ability" ability. Specifically, the character must not currently have the "Generic Skill Bought Ability" ability that has been defined as belonging to the AbilitybySkill category. An ability called "Ac Ba" of any other category will not disqualify the character from selecting this ability. (The inclusion of this tag is a temporary workaround as there is currently a bug with the ability object not respecting the default of MULT:NO.)

> Tag Used: `PRESKILL:1,Tumble=12`

> What it Does: Sets a prerequisite for the "Generic Skill Bought Ability" ability. Specifically, the character must have at least 12 ranks in the Tumble skill in order to select this ability.

> Tag Used: `PREVARLT:AbilitybySkillCount,AbilitybySkillMax`

> What it Does: Sets a prerequisite for the "Generic Skill Bought Ability" ability. Specifically, the variable AbilitybySkillCount must be less than the variable AbilitybySkillMax in order for the ability to be selected.

> Tag Used: `DEFINE:AbilitybySkillCount|0`

> What it Does: This tag is used to define the variable AbilitybySkillCount and to initialize it to the value zero.

> Tag Used: `DESC:<appropriate description>`

> What it Does: This is where you type the text you want to appear with your chosen ability. This will be displayed on the character sheet UNLESS the ability is set to NO or DISPLAY. In that case you would skip this tag and may instead use SA: in it's place. That tag is discussed in another lesson.

> Tag Used: `BONUS:VAR|AbilitybySkillCount|1`

> What it Does: This bonus tag increases the value of the variable AbilitybySkillCount by 1.

#### Increasing Skill Bought Ability Max

[Explanation of this ability.] The tags used to do this are explained below:

> Tag Used: ``

> What it Does:

You will find the completed skill purchased abilities below.

### Class.lst File

[Explanation of how this class grants an ability upon level-up. The tags used to do this are explained below:

> Tag Used: `ADD:ABILITY|FEAT|AUTOMATIC|Initialize Abilities by Skill`

> What it Does:

> Tag Used: `ADD:ABILITY|AbilitybySkill|AUTOMATIC|TYPE=AbilitybySkill`

> What it Does:

You will find the modified "" class below.

### Known Issues

None?

### LST File Entry Examples

These LST objects are being presented as examples only and are not part of any official PCGen dataset.

#### Stats and Checks Gamemode File Entry:

> `STATNAME:Intelligence`

> `ABB:INT`

> `STATMOD:floor(SCORE/2)-5`

> `DEFINE:MAXLEVELSTAT=INT|INTSCORE-10`

> `DEFINE:AbilitybySkillMax|0` (This tag is added to the existing entry.)

> `DEFINE:AbilitybySkillCount|0` (This tag is added to the existing entry.)

> `BONUS:VAR|AbilitybySkillMax|TL` (This tag is added to the existing entry.)

> `BONUS:LANG|BONUS|INT`

> `BONUS:MODSKILLPOINTS|NUMBER|INT`

#### AbilityCategory File Entry:

> `ABILITYCATEGORY:AbilitybySkill`

> `CATEGORY:AbilitybySkill`

> `PLURAL:AbilitybySkills`

> `EDITABLE:YES`

> `EDITPOOL:NO`

> `FRACTIONALPOOL:NO`

> `VISIBLE:QUALIFY`

#### Skills File Entry:

> `Skills to Abilities`

> `TYPE:None`

> `VISIBLE:DISPLAY`

> `BONUS:ABILITYPOOL|AbilitybySkill|SKILL.Skills to Abilities.RANK`

#### Ability File Entry:

> `Generic Skill Bought Ability`

> `CATEGORY:AbilitybySkill`

> `TYPE:AbilitybySkill.Movement`

> `VISIBLE:QUALIFY`

> `!PREABILITY:1,CATEGORY=AbilitybySkill,Generic Skill Bought Ability`

> `PRESKILL:1,Tumble=12`

> `PREVARLT:AbilitybySkillCount,AbilitybySkillMax`

> `DEFINE:AbilitybySkillCount|0`

> `DESC:<appropriate description>`

> `BONUS:VAR|AbilitybySkillCount|1`

#### Class File Entry:

> `CLASS:Generic Class`

> `CLASS:Generic Class`

> `CLASS:Generic Class`

> `1` [`ADD:ABILITY|FEAT|AUTOMATIC|Initialize Abilities by Skill`] (Add this tag to an existing class)

> `2`

> `3`

> `4` `ADD:ABILITY|AbilitybySkill|AUTOMATIC|TYPE=AbilitybySkill <tab> BONUS:VAR|AbilitybySkillMax|1` (Add these two tags to an existing class level lines)

> `5`

> `6`