• 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

Duplicate skills showing up in debug selection

risner

Well-known member
I'm creating a skill that is similar to Pathfinder's Craft skills. I've intentionally used many of the same Helper and identity tags as Pathfinder. Everything visually works (viewing skills, adding skills) but looping on pick in hero show duplicate records.

Code:
      foreach pick in hero from Skill where "Helper.ExtraSkill"
       debug "Extra: " & eachpick.idstring
       nexteach
This shows:
Extra: skJobacco
Extra: skJobacco
Extra: skJobacco
Extra: skJobatt
Extra: skJobatt
Extra: skJobsmu
Extra: skJobsmu

Why?

Sample skill:
Code:
  <thing
    id="skJobacc"
    name="Job (accountant)"
    compset="Skill"
    isunique="yes"
    uniqueness="useronce"
    description="Description goes here">
    <tag group="DashTacCon" tag="NonCombat"/>
    <tag group="Helper" tag="TrainOnly"/>
    <tag group="Helper" tag="ExtraSkill"/>
    <link linkage="skillabil" thing="attrCha"/>
    </thing>

Compset and Component:
Code:
  <component
    id="Skill"
    name="Skill"
    autocompset="no">
    <linkage linkage="skillabil" optional="no"/>
    <identity group="Skill"/>
    <identity group="SkillAdded"/>
    <eval index="1" phase="Setup" priority="5000"><![CDATA[
      if (tagis[Helper.ExtraSkill] <> 0) then
        if (isuser = 0) then
          if (tagis[thing.useronce] <> 0) then
            perform forward[SkillAdded.?]
            endif
          endif
      else
        perform delete[SkillAdded.?]
        endif
      if (container.ishero <> 0) then
        perform linkage[skillabil].pullidentity[SkillAbil]
        endif
</componet>
  <compset
    id="Skill">
    <compref component="Skill"/>
    <compref component="Derived"/>
    <compref component="Trait"/>
    </compset>

portal code:
Code:
  <portal
    id="baSkills"
    style="tblInvis">
    <table_dynamic
      component="Skill"
      showtemplate="baSklPick"
      showsortset="explicit"
      choosetemplate="SkillThing"
      scrollable="yes">
      <list>thing.user_added | !Helper.ExtraSkill</list>
      <candidate>SkillAdded.?</candidate>
      <headertitle><![CDATA[
        @text = "Skills"
        ]]></headertitle>
      <additem><![CDATA[
        @text = "Add a Skill"
        ]]></additem>
      </table_dynamic>
    </portal>
  <template
    id="baSklPick"
    name="Skill Pick"
    compset="Skill">
...
    </template>
  <template
    id="SkillThing"
    name="Skill Thing"
    compset="Skill"
    marginhorz="3"
    marginvert="5">
...
    </template>
 

Attachments

  • Jobs.png
    Jobs.png
    206 KB · Views: 3
  • Job2.png
    Job2.png
    333.2 KB · Views: 1
  • Job3.jpg
    Job3.jpg
    296.6 KB · Views: 1
Adding:
Code:
  <compset
    id="Skill"
    forceunique="yes">

products the error Comonent set requires designation of thing as unique.

It doesn't appear to happen in Pathfinder, so I'm wondering what I'm doing differently.
 
Hmm. I threw a huge debug:
20x Extra: skJobacco|Shadow 0|Displace 0|Bootstrapped|Pick|Anon|Creation
19x Extra: skJobacco|Shadow 0|Displace 0|User|Pick|Anon|Creation
19x Extra: skJobatt|Shadow 0|Displace 0|Bootstrapped|Pick|Anon|Creation
19x Extra: skJobsmug|Shadow 0|Displace 0|Bootstrapped|Pick|Anon|Creation

It seems they are only different by bootstrap vs user picked.

Code added:
Code:
      var s as string
      foreach pick in hero from Skill where "Helper.ExtraSkill"
       s = "Extra: " & eachpick.idstring & "|Shadow " & eachpick.shadowed
       s &= "|Displace " & eachpick.displaced
       if (eachpick.isuser <> 0) then
         s &= "|User"
       else
         s &= "|Bootstrapped"
         endif
       if (eachpick.ispick <> 0) then
         s &= "|Pick"
       else
         s &= "|Thing"
         endif
       if (eachpick.isgizmo <> 0) then
         s &= "|Giz"
         endif
       if (eachpick.autonomous <> 0) then
         s &= "|Anon"
         endif
       if (eachpick.creation <> 0) then
         s &= "|Creation"
         endif
       if (eachpick.isminion <> 0) then
         s &= "|Minion"
         endif
       if (eachpick.ismaster <> 0) then
         s &= "|Master"
         endif
       debug s
 
Ultimately the problem was fixed by updating bootstrap to exclude auto bootstrapping the job types not always on characters.
 
Back
Top