View Single Post
dungeonguru
Senior Member
 
Join Date: May 2016
Posts: 608

Old September 8th, 2017, 06:33 AM
TLDR: It is *much* easier to create custom monsters for the one-off commoners you'll come across - especially because proficiencies and saves are easy 1-click adds to a custom monster. ALSO, there are plenty of NPC examples in the Community files and there are some Templates to add a non-human race or create templates of your own to apply to these NPCs.

LONG VERSION:

So, I played with this a lot, and it is possible to do but I feel the need to point out some misconceptions about creating a commoner class that the author of the dmsguild article forgot:

1. Tool proficiencies can be earned through training (pg. 187 of Player's). For a commoner it could be assumed that they spent 250 days as an apprentice at some point in their life, so granting them a tool proficiency at given levels isn't as beneficial as giving them a feat. There is no reason that a DM can't allow NPCs to learn how to use weapons during a 250 day course to become a Guard or Militia man, which then leads to giving your Commoner guard stats and any earlier training in tools he gets from the training mechanism.

2. Buffing commoners with levels was a result that lead to 4th edition - each "minion" now has a mechanism to buff up to scale with PC power levels. But I'll deny 4th edition existed, same as there is no Highlander 2 movie, though.

Anyway, the class feature for the commoner would have to have 2 scripts and a array based menu that reads (Skill, Tool, Save, ...)

The important one is the one that runs at Final/99999 that builds the dropdown menu and the code will go like this:

Code:
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)

var listed as string

~ build the usrCandid based on selection from usertext dropdown.
if (field[usrIndex].value = 0) then
~ Skill is displayed on left.
  listed = "(component.BaseSkill & !Helper.Proficient)"
elseif (field[usrIndex].value = 1) then
~ Save is displayed on left.
  listed = "(component.BaseSave & !Hide.Save & !Helper.Proficient)"
elseif (field[usrIndex].value = 2) then
~ Armor proficiency is displayed on left
~ do nothing, increase armor from none to light to medium in script #2
elseif (field[usrIndex].value = 3) then
~ Weapon proficiency is displayed on left
listed = "component.BaseWep & (wProfReq.Martial|wProfReq.Simple)"
endif

field[usrCandid1].text = listed
The second script will need to run at Post-Levels/10000 and it will have to
do the same above, except where it builds the "listed" string, you'll want to pull the tags from the 2nd dropdown box.

with something like:
Code:
...
if (field[usrIndex].value = 2) then
~ we have Saves listed on the array dropdown, grab what ability is listed on 2nd dropdown
perform field[usrChosen1]chosen.pulltags[ProfSave.?]
perform hero.pushtags[ProfSave.?]
elseif ...
dungeonguru is offline   #8 Reply With Quote