What I did to change my Knowledge references, such as in the Scholar edge, was "skKnow" becomes "skKn?".
This way every skill that starts with skKn is a type of knowledge skill. I made it this way so that I could specify Knowledges that are used in a given setting, with no need to retype the same things over and over again (like Arcana, Battle, Medicine, Law, etc.). The way that I see it, if an edge is allowed in a setting, and it requires a specific knowledge, you might as well have that knowledge programmed in before hand. It saves everyone else effort later on, which is the entire point of having a program do it all for you.
Furthermore, there is a need to identify Scientific knowledge skills, which are explicitly referenced in two edges: Gadgeteer and Mr Fix It. As written Hero Lab cannot do this. But an easy fix was to make a slightly different wildcard, which uses the same ID naming convention. as shown here:
Two Scientific Knowledge skills at d6 required.
Specific ID Naming is not a new convention. Until recently it was the standard manner to show that a character had an Arcane Background. My predefined science skills all have the ID that starts with "skKnSc".
You might want to have a predefined Knowledge skill. The only thing that you might need to modify is the Scholar edge and anything that references that Programming knowledge. That said, it is likely that would only be in the same data set anyway so it could just reference the "new" specific Knowledge: Programming skill.
Copy the Scholar edge. For the new version, here are some things to change:
I don't think that I had changed the Eval Scripts, but if I did they are as follows
Eval 1 (it uses Traits)
Eval 2 (it uses Render)
Eval Rules is unchanged
The Pre-Reqs coding is changed to this
The Menu 1 Tag Expression is
The Menu 2 Tag Expression is (the same as 1)
Anyway, I think just creating the different specializations as "real" skills might be better. I would have to re-read the Interface Zero stuff to be sure, though. It has been a while.
Code:
foreach pick in hero where "thingid.skKn?"
This way every skill that starts with skKn is a type of knowledge skill. I made it this way so that I could specify Knowledges that are used in a given setting, with no need to retype the same things over and over again (like Arcana, Battle, Medicine, Law, etc.). The way that I see it, if an edge is allowed in a setting, and it requires a specific knowledge, you might as well have that knowledge programmed in before hand. It saves everyone else effort later on, which is the entire point of having a program do it all for you.
Furthermore, there is a need to identify Scientific knowledge skills, which are explicitly referenced in two edges: Gadgeteer and Mr Fix It. As written Hero Lab cannot do this. But an easy fix was to make a slightly different wildcard, which uses the same ID naming convention. as shown here:
Two Scientific Knowledge skills at d6 required.
Code:
~go through all knowledge skills and check for d6
~Note: We cannot tell if a skill is scientific or not - that's up to the player. The prebuilt knowledges know however
var total as number
foreach pick in hero where "thingid.skKnSc?"
if (eachpick.field[trtFinal].value >= 3) then
total += 1
endif
nexteach
~if we have at least two, we're valid
validif (total >= 2)
if (@ispick <> 0) then
altpick.linkvalid = 0
endif
Specific ID Naming is not a new convention. Until recently it was the standard manner to show that a character had an Arcane Background. My predefined science skills all have the ID that starts with "skKnSc".
You might want to have a predefined Knowledge skill. The only thing that you might need to modify is the Scholar edge and anything that references that Programming knowledge. That said, it is likely that would only be in the same data set anyway so it could just reference the "new" specific Knowledge: Programming skill.
Copy the Scholar edge. For the new version, here are some things to change:
I don't think that I had changed the Eval Scripts, but if I did they are as follows
Eval 1 (it uses Traits)
Code:
~apply the +2 modifier to each selected skill
if (field[usrChosen1].ischosen <> 0) then
perform field[usrChosen1].chosen.field[trtRoll].modify[+,2,"Scholar"]
endif
if (field[usrChosen2].ischosen <> 0) then
perform field[usrChosen2].chosen.field[trtRoll].modify[+,2,"Scholar"]
endif
Eval 2 (it uses Render)
Code:
~determine the text to append to the name
var choices as string
if (field[usrChosen1].ischosen <> 0) then
if (field[usrChosen1].chosen.field[domDomain].text <> 0) then
choices = field[usrChosen1].chosen.field[domDomain].text
else
choices = field[usrChosen1].chosen.field[shortname].text
endif
else
choices = "-Choose-"
endif
if (field[usrChosen2].ischosen <> 0) then
if (field[usrChosen2].chosen.field[domDomain].text <> 0) then
choices &= ", " & field[usrChosen2].chosen.field[domDomain].text
else
choices &= ", " & field[usrChosen2].chosen.field[shortname].text
endif
else
choices = "-Choose-"
endif
~add the selection to both the livename and shortname (if present) fields
field[livename].text = field[thingname].text & ": " & choices
if (tagis[component.shortname] <> 0) then
field[shortname].text &= " (" & choices & ")"
endif
Eval Rules is unchanged
The Pre-Reqs coding is changed to this
Code:
var total as number
~if this is a thing, make sure at least two skills exist with a d8 rating
if (@ispick = 0) then
~go through all Knowledge skills and tally those with a d8+ rating
foreach pick in hero where "thingid.skKn?"
if (eachpick.field[trtFinal].value >= 4) then
total += 1
endif
nexteach
~this is a pick, so make sure our chosen skills have a d8+ rating
else
if (altpick.field[usrChosen1].ischosen <> 0) then
if (altpick.field[usrChosen1].chosen.field[trtFinal].value >= 4) then
total += 1
endif
endif
if (altpick.field[usrChosen2].ischosen <> 0) then
if (altpick.field[usrChosen2].chosen.field[trtFinal].value >= 4) then
total += 1
endif
endif
endif
~if we have at least two valid skills, we're valid
validif (total >= 2)
~if we got here, we're invalid
if (@ispick <> 0) then
altpick.linkvalid = 0
endif
The Menu 1 Tag Expression is
Code:
thingid.skKn? & fieldval:trtFinal >= 4
The Menu 2 Tag Expression is (the same as 1)
Code:
thingid.skKn? & fieldval:trtFinal >= 4
Anyway, I think just creating the different specializations as "real" skills might be better. I would have to re-read the Interface Zero stuff to be sure, though. It has been a while.