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
          endifSpecific 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"]
        endifEval 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 & ")"
        endifEval 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
          endifThe Menu 1 Tag Expression is
		Code:
	
	thingid.skKn? & fieldval:trtFinal >= 4The Menu 2 Tag Expression is (the same as 1)
		Code:
	
	thingid.skKn? & fieldval:trtFinal >= 4Anyway, 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.
 
	