Skill Alloc

Version 1.1


Pathfinder RPG skill point allocator. Factors in specific class and race requirements (such as Gnome obsession trait and Sorcerer bloodlines).

This application assumes you know the Pathfinder RPG rules.

Supported Classes
Main Window
Output Window
User Select Window
Custom Classes

Races Supported

Only races that actually modify skills in some form are present. For now, only a limited number of races are supported (way too many to hardcode in).


Dwarf, Elf, Gnome, Half-Elf, Half-Orc, Halfling, Human, Generic Humanoid, Goblin, Half-Ogre, Hobgoblin, Kobold & Orog.

Creature types are also present in the Race popup menu. These are generic. User defined races may be added in the future.


Supported Classes

Classes with bracketed text have user selectable options. See User Select Window below.

Barbarian, Bard, Cleric (domains), Druid, Fighter. Monk, Paladin, Ranger, Rogue, Sorcerer (Bloodlines), Wizard (Enchantment school).
Adept, Aristocrat, Commoner, Expert (Selectable skills), Warrior.
Arcane Archer, Arcane Trickster, Assassin, Dragon Disciple, Duelist, Eldritch Knight, Loremaster, Mystic Theurge, Pathfinder Chronicler, Shadow Danver.

Arcanist, Bloodrager, Brawler, Hunter, Investigator, Shaman, Skald, Slayer, Swashbuckler, Warpriest.

Alchemist, Cavalier (Orders), Inquisitor, Oracle (Mysteries), Summoner, Witch. Battle Herald, Holy Vindicator, Horizon Walker, Master Chymist, Master Spy, Nature Warden, Rage Prophet, Stalwart Defender.

Kineticist (Focus), Medium, Mesmerist, Occultist, Psychic, Spiritualist.

Ultimate Combat
Gunslinger, Ninja, Samurai (Orders).

Ultimate Magic

User defined classes may be added in the future.


Main Window

Main Window

Primary window will have one of eleven background colours.
The purpose is so all associated windows (such as Feats & see User Select Windows below) can be easily identified.
You can have several characters open and if you select the right race/class combos, you can have up to thirteen associated windows open for one character.

There is currently no way to set or change the colours. The colours are cycled through each time a new character is loaded or created.

Not so obvious
Master Craftsman column grants a bonus if the skills ranks are 5 or higher. Only Craft & Profession skills have the option to select as such.

Skill Focus column represents the Skill Focus feat. Better than listing Skill Focus(skill) for all skills in the Feat window.

Level Stepper
Level of class. Maximum is 40 or class maximum, whichever is lower. Holding the option key will change the level by 5.

Race HD Stepper
HD of race.
Each race has a minimum and maximum and the stepper will restrict that. Holding the option key will change the HD by 5.

Subtypes Button
Sub types List of subtypes that affect skill total.

Swim & Climb
Adds +8 bonus to applicable skill.

Size category. Affects a few skills.

Fly Manueverability Class
Affects Fly skill.

Ability Scores
Minimum is 0, maximum is 255.

Flat Modifier
Absolute value added to total skill points. Useful for favoured class skill allocation.

Reset Button
Zeroes all ranks. Does not affect anything else.

Output Button
Shows Output window. See below. Associates the Output window with this character.

Rank Slider
Changes the ranks for the currently selected skill. Maximum is the total character level/HD.


Output Window

Output Window

Output skill ranks and totals. The windows background colour will match the character window it is associated with. If it has no associated character, its background will be light grey.


User Select Window

Some classes & races require users to select specific abilities, traits or skills. When a specific class or race is selected, an associated window will open and you can make the selection.

If the selection only allows one, then radios buttons will be present otherwise check boxes will be used.



Base skills are hardcoded in and cannot be changed.
Craft, Knowledge, Profession & Perform skills are set and currently cannot be changed.

Custom Skills

Custom Skills Creating

Custom skills will be listed after the standard skills in the character skill list. Deleting a custom skill cannot be undone. New skills will not be recognised until next application relaunch.


Custom Classes

Custom Classes Creating

Left List
List of all custom character classes.

Right List
If checked, it is a class skill. Note: custom skills will be listed if they existed since last application startup.

Presents a sheet where you enter the new class name. Cannot duplicate an existing class. Once the name is set, it cannot be changed (other parts of the application require the name be unchanging). Newly added classes are not picked up by any open character window. A newly created or reloaded character will register that the new class exists and will be added to the class popup menus.

Deletes the selected class. This is not reversible.

Code Update
This is a syntax checker. If the text pane flashes red, it means there is an error of some form. Most common errors are spelling mistakes, incorrect case, missing an 'end' keyword or an integer that is too big. The modified code is not saved.

Updates and saves the custom class.

Centre Text View
Custom code editor for the class. VERY simple language which allows you to modify the total for a specific skill. The language can do basic arithmetic and do simple if..then statements. Below is an example.
A = l / 2
if A > 0 then
B = l + 3
if IsClassSkill then
if IsRace("Human") then

The above will do the following
- if class level is > 1, add 3 to Acrobatics.
- if Knowledge(Arcana) is a class skill & character's race is human, set Knowledge(Arcana) to class level + 3.
- Increase Perform(Sing) by 22.

Custom Code Language Details


What skill you wish to modify the total.
ModifyTotal is case-sensitive. ModifyTotal ≠ modifytotal.
The opening '[' is optional.
The ending ']' is required.

Basic equation
A = l / 2

This one is assign to 'A' the class level divided by 2.
Basic format:
variable = LHS <op>RHS
LHS,RHS = variable or integer or built-in value.

variable is a single, capital letter from A to Z.
integer range is from -32678 to 32676, though large values can be ignored.
built-in constant is a set of character or string constants which represent attributes of the character.
operator is one of + - * / ÷ .

In the case of division, the values are always rounded towards zero.

String ConstantCharacterCharacter Attribute
strsStr score
str.modtStr modifier
dexdDex score
dex.modeDex modifier
concCon score
con.modbCon modifier
intiInt score
int.modjInt modifier
wiswWis score
wis.modxWis modifier
chagCha score
cha.modhCha modifier
skill.nameoSkill name
skill.rankspSkill ranks
hdzTotal HD
classLevellClass level
racerRace name
race.hduRacial HD

The string & character are case-sensitive. Except for classLevel, all are lowercase.


if IsClassSkill then
if IsRace("Human") then

This is equivalent to "if Knowledge:Arcana is a class skill and the character race is human, set the ranks for this skill to what is stored in variable B". B in this case is class level + 3.

Basic format

if condition is true then

Condition is one of the following

Code can be another equation, function or an if…then statement.

Important: Some editors will replace " " with “ & ” pairs. The parser will not recognise “ or ”. You must use " .
The code editor in this application will not automatically change " " to “ ” .
Other editors may do so.
This automatic functionality is called "Smart Quotes".

SetTotal & DeltaTotal are what you use to change the current total.

SetTotal sets the skill’s total modifier to the passed value.
This is not guaranteed to remain set if the character has multiple classes.

DeltaTotal changes the skill’s total modifier by adding or subtracting the passed value.
The values must be an integer, built-in value or a variable.
Very large values can be ignored by the skill total calculation code.

MinOfOne(value) is the same as if value < 1 then value = 1 end .
Just a simple shorthand.

Other details

Any line starting with a '#' is ignored.

Spaces are required between all variables, keywords, integers & functions.