I worked on some other bits while trying to wrap my head around this. I'm still getting the "Attempt to retrieve candidate tagexpr from non-existent pick 'SpecHelp'" message even though I added an addpick expression:
Code:
<portal
id="prtSpec"
style="tblNormal">
<table_dynamic
component="Specialty"
showtemplate="tmpSpec"
choosetemplate="tmpSpec"
scrollable="yes"
alwaysupdate="yes"
candidatepick="SpecHelp"
candidatefield="SpecExpr"
addpick="SpecHelp">
<titlebar><![CDATA[
@text = "Add a Specialty"
]]></titlebar>
<headertitle><![CDATA[
@text = "Specialty"
]]></headertitle>
<additem><![CDATA[
@text = "Add Specialty"
]]>
</additem>
</table_dynamic>
</portal>
I'm actually starting to wonder if maybe the expression isn't being set. I know that it's determined inside
SetSpcExpr because the debug statement puts out the right values. And I've verified, through the "Debug Gizmo Pick List" that the helper is present. But how do I get insight as to whether that helper indeed has the expression set?
Possibly relevant, I was trying to add the code to assign a "User.HasSpec" tag to the parent skill, as per the Doctor Who code, but I get an error saying that I'm trying to access a non-existent parent pick for a top-level container on that "assign" bit, which makes me think that I'm still not adding this in the right place.
Code:
<!-- Track the ability on the actor -->
<eval index="1" phase="Setup" priority="5000"><![CDATA[
perform forward[Specialty.?]
perform parent.assign[User.HasSpec]
]]></eval>