So, you're lucky, the proficiency helper tags are applied in a hierarchy, so you can just loop through all the skills and assign the Helper.ProfHalf tag to them. Any skill that you pick to be proficient or apply expertise in apply further tags later that overwrite and assign the correct proficiency level (it always picks the highest).
The script has some timing requirements:
1. It has to run post-levels 10000
2. It has to run before Calc skProfBon
To handle the level requirement you'll need to add a expr-req that runs the #totallevelcount[] macro.
So the script will look like this:
Code:
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
foreach pick in hero from BaseSkill
perform eachpick.assign[Helper.ProfHalf]
nexteach
If you look at the feat in a text editor is should look similar to this, I've bolded the timing and expression for 4th level check. I also bolded the id, so if you copy this, make sure you change the XXX to your custom ID.
<thing id="
fXXXJackTrad" name="Jack-of-all-Trades" description="You gain half-proficiency for all skills that you are not already proficient or an expert at." compset="Feat" uniqueness="useronce">
<tag group="Helper" tag="ShowSpec" name="Show Spec" abbrev="Show Spec"/>
<eval phase="
PostLevel" priority="
10000"><![CDATA[~ comment
doneif (tagis[Helper.ShowSpec] = 0)
doneif (tagis[Helper.Disable] <> 0)
foreach pick in hero from BaseSkill
perform eachpick.assign[Helper.ProfHalf]
nexteach]]>
<before name="Calc skProfBon"/>
</eval>
<exprreq message="Must be 4th level or above!"><![CDATA[#totallevelcount[] >= 4]]></exprreq>
</thing>