• 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

Fate Skills tab and how to do

ShadowWalker

Well-known member
So I'm working on Interface Zero 2.0 which uses the Fate Core rules.
It addes gear, cyberware, vehicles and drones as well as psionics to the mix.
I'm slowly figuring out how Hero Labs works and making headway in making this work.
I would like to make this work similar to the way the Fate Core works for consistency and I was wondering how the skill tab was done?

Complicated question I know. I'm thinking it uses multiple fixed tables.

If it is fixed tables then questions are:

How is text being displayed in the table when it's empty?

How does the drag and drop work? I've seen no documentation for it in the authoring kits wiki.

How does the filtering work on the individual tables? Each one would I suspect filter for a particular tag but how are those tags added and removed? I'm suspecting there is a script event taking place on the drop event?
 
I apologize, but this is not something I will have the time to put together until after Gen Con, and after I've gotten caught up with various things that are falling behind in the lead up to Gen Con.
 
Here's one of the skill tables for Fate.
Code:
  <portal
    id="sklSkill8"
    style="tblOuter">
    <table_dynamic
      component="Skill"
      showtemplate="abSklPick"
      choosetemplate="SimpleItem"
      scrollable="no"
      alwaysupdate="yes"
      empty="To move a skill to this level of the pyramid, click on the name of the skill, then drag and drop it within the blue rectangle for this level.">
      <list><![CDATA[
        component.Skill & !Hide.Skill & fieldval:sklRoll = 8 & fieldval:sklUnused = 0 & !Helper.SkillSumm
        ]]></list>
      <candidate><![CDATA[
        FALSE
        ]]></candidate>
      <additem maxitemcount="0"><![CDATA[
        var skillvalue as number
        skillvalue = 8
        call SklAddLbl
        ]]></additem>
      <dragstart><![CDATA[
        call SklDragSta
        ]]></dragstart>
      <dragdrop><![CDATA[
        var skillvalue as number
        skillvalue = 8
        call SklDragDrp
        ]]></dragdrop>
      </table_dynamic>
    </portal>
Here's the drag-and-drop procedures for Fate that are used by that table
Code:
  <!-- Generates the label text for the "drag window" used when dragging a
      skill from one table to another - the default text is the skill name
  -->
  <procedure id="SklDragSta" scripttype="dragstart"><![CDATA[
    ~you have to delete all advancements for a skill before modifying it this
    ~way
    if (field[trtUser].delta <> 0) then
      @reject = "Once Advancements have been added to a skill, you can no longer change it on the Skills tab."
      done
      endif

    ~you can't drag and drop skills to re-order them once the skill pyramid has
    ~been raised by advancements. The technical reason for this is because
    ~the SklTblVis procedure has the resource for its skill rank passed into
    ~it, and doesn't know how to get the resource for the rank above (if the
    ~pyramid base has been increased by one, for example).
    ~what the amount of skills needed + 1 is to show the table
    if (herofield[acPyraAdv].value <> 0) then
      @reject = "Once the Skill Pyramid has been raised by an advancement, you can no longer reorder skills by drag and drop."
      done
      endif

    ~append the rank to the skill name if it has one, so the user is reminded
    ~of where the skill is coming from when dragging it around
    doneif (field[sklUnused].value <> 0)
    @text &= " - " & field[trtUser].text
    ]]></procedure>


  <!-- Modify a skill appropriately when the user drops it into a new table so
      it appears in that table in future
  -->
  <procedure id="SklDragDrp" scripttype="dragdrop"><![CDATA[
    var skillvalue as number
    var skillhide as number

    ~if this is the "skill isn't present" table for companions, this field is
    ~set
    field[sklUnused].value = skillhide

    ~otherwise the skill rank is updated appropriately to make the skill show
    ~up in the new table - make sure we adjust appropriately for the current
    ~base of the skill pyramid, in case it's been increased
    field[trtUser].value = skillvalue
    ]]></procedure>
So, what's happening is that the trtUser of the skill is used to store its value, which is the table it's been placed on. The drag procedures set the trtUser of any skill added to that table to the correct value, and then the candidate field keeps only those skills with the values that say they belong on that table showing there.
 
Back
Top