• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Custom Ability / Secondary Custom Ability table issue

RavenX

Well-known member
So I believe I have sorted out the issue about keeping the custom abilities added to a specific agent based tab, but now I have a problem with my Primary and Secondary Table... if I add an ability to the Primary Table it shows up on the Secondary ability table, and it should not. Ideas on how to fix this?
 
Here is what I've set up for my tables.

Code:
  <!-- clCustom portal
         presents the user with a dynamic table that allows the selection of 
         psionic disciplines to add to their character.
  -->
  <portal
    id="clCustom"
    style="tblInvis">
    <table_dynamic
      component="CustomAbil"
      showtemplate="SimpleItem"
      choosetemplate="SimpleItem"
      useagentadd="yes"
      useagentcandidate="yes"
      agentlist="CustTaken"
      agentautotag="CustTaken"
      useagentlinkage="yes"
      candidatefield="cCstSpExpr">
      <list></list>
      <candidate inheritlist="yes"></candidate>
      <headertitle><![CDATA[
        @text = agent.field[cSpecSing].text
        ]]></headertitle>
      <additem><![CDATA[
        @text = "Add " & agent.field[cSpecName].text
        ]]></additem>
      </table_dynamic>
    </portal>

  <!-- clCustom2 portal
         presents the user with a dynamic table that allows the selection of 
         psionic disciplines to add to their character.
  -->
  <portal
    id="clCustom2"
    style="tblInvis">
    <table_dynamic
      component="CustomAbil"
      showtemplate="SimpleItem"
      choosetemplate="SimpleItem"
      useagentadd="yes"
      useagentcandidate="yes"
      agentlist="CustTaken"
      agentautotag="CustTaken"
      useagentlinkage="yes"
      candidatefield="cCstS2Expr">
      <list></list>
      <candidate inheritlist="yes"></candidate>
      <headertitle><![CDATA[
        @text = agent.field[cSpec2ndSi].text 
        ]]></headertitle>
      <additem><![CDATA[
        @text = "Add " & agent.field[cSpec2ndNm].text
        ]]></additem>
      </table_dynamic>
    </portal>

  <!-- clCustom portal
         presents the user with a dynamic table that allows the selection of 
         psionic disciplines to add to their character.
  -->
  <portal
    id="clCustom3"
    style="tblInvis">
    <table_dynamic
      component="CustomAbil"
      showtemplate="SimpleItem"
      choosetemplate="SimpleItem"
      useagentadd="yes"
      useagentcandidate="yes"
      agentlist="CustTaken"
      agentautotag="CustTaken"
      useagentlinkage="yes"
      candidatefield="cCstS3Expr">
      <list></list>
      <candidate inheritlist="yes"></candidate>
      <headertitle><![CDATA[
        @text = agent.field[cSpec3rdSi].text 
        ]]></headertitle>
      <additem><![CDATA[
        @text = "Add " & agent.field[cSpec3rdNm].text
        ]]></additem>
      </table_dynamic>
    </portal>

  <!-- clCustom4 portal
         presents the user with a dynamic table that allows the selection of 
         psionic disciplines to add to their character.
  -->
  <portal
    id="clCustom4"
    style="tblInvis">
    <table_dynamic
      component="CustomAbil"
      showtemplate="SimpleItem"
      choosetemplate="SimpleItem"
      useagentadd="yes"
      useagentcandidate="yes"
      agentlist="CustTaken"
      agentautotag="CustTaken"
      useagentlinkage="yes"
      candidatefield="cCstS4Expr">
      <list></list>
      <candidate inheritlist="yes"></candidate>
      <headertitle><![CDATA[
        @text = agent.field[cSpec4thSi].text 
        ]]></headertitle>
      <additem><![CDATA[
        @text = "Add " & agent.field[cSpec4thNm].text
        ]]></additem>
      </table_dynamic>
    </portal>

  <!-- clCustom5 portal
         presents the user with a dynamic table that allows the selection of 
         psionic disciplines to add to their character.
  -->
  <portal
    id="clCustom5"
    style="tblInvis">
    <table_dynamic
      component="CustomAbil"
      showtemplate="SimpleItem"
      choosetemplate="SimpleItem"
      useagentadd="yes"
      useagentcandidate="yes"
      agentlist="CustTaken"
      agentautotag="CustTaken"
      useagentlinkage="yes"
      candidatefield="cCstS5Expr">
      <list></list>
      <candidate inheritlist="yes"></candidate>
      <headertitle><![CDATA[
        @text = agent.field[cSpec5thSi].text 
        ]]></headertitle>
      <additem><![CDATA[
        @text = "Add " & agent.field[cSpec5thNm].text
        ]]></additem>
      </table_dynamic>
    </portal>
 
The list expression is where you solve that. You may also need an autotag on those tables.

I've been looking at Pathfinder more, and I just noticed a field[cCstSpList] up there... I am guessing this is the list tag expression I need?
 
The list expression tells a table what picks it should display, by giving it a tag expression that describes what can and cannot be present.

Talk me through what that list expression needs for this table. How will the list expression for the primary table differ from the expression on the secondary table?

Building tag expressions is an absolutely required skill for building a game system in Hero Lab, so I want to walk you through the process of figuring this out, so you'll have a better toolbox for the next issue.
 
We'd need a tag that identifies the class that added it, and one that identifies the Primary table as the one to show it,

CustTaken.cMage & AbilGroup.Primary1
 
Correct. You've already added the agentlist="CustTaken", so part 1 of your expression is already in place in this table.

Now, how are you going to insure that everything in this table has the AbilGroup.Primary1 tag? Is the tag going to be present before you add the thing to the table, or do you want to add it with an autotag?

Then, once that tag is present, you'll need a list expression that restricts you to only those picks that have that tag.
 
The tag is added to the Custom Ability through a tagpick chooser in the Editor, so it would already be present.
 
Right now, this is all over my head, but it will likely be very useful to me soon.

Thank you both for "thinking out loud" on this forum.
 
Right now, this is all over my head, but it will likely be very useful to me soon.

Thank you both for "thinking out loud" on this forum.

You're welcome. I don't consider it thinking out loud honestly. When I need help with something I just ask. I've always asked my teachers a lot of questions, my physics professors knew when I was studying because of the number of questions I had in class ready to go when class started. It's just part of the learning process for me.
 
I had been struggling with creating a game system for a while - I was using the Savage World example, but just couldn't make the jump to a d20 based system, it was just too different I guess.

But I just recently bought the AuthKit.

The addition of the 4E source files really opened up my eyes to how HL processes data.

I really wish the d20 ruleset was available - but I understand why it isn't - since the system I'm trying to input is based loosely upon d20. So I'm mostly flying blind on modifying the 4E rules to fit what I need.

I just don't want to design myself into a proverbial corner by doing something wrong in the beginning, only to realize it after it's too late.
 
I spend a lot of time just tinkering with Hero Lab's coding under the hood. For me, testing how something works and playing around with the code is a learning process for me. Much of what I've learned in 2e's coding will enable me to go further in Deathwatch and even simplify a few things when I go back to it (Agent linkages are a blessing, but having learned how forms work without gizmos is a major help as well). I toy around with the code a lot just to figure things out. I ask for help when I run into an issue I can't figure out. That's when I start barraging Mathias for help. (Sometimes it's literally an orbital bombardment of questions, and I appreciate the assistance and teaching he gives me.)
 
Back
Top