• 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

Additional Psionic Support: Mind Stones

Quintain

Well-known member
Hero lab currently has some custom functioning in order to implement Pages of Spell knowledge. Psionics currently has a similar item called Mind Stones and Mind Stones, Greater.

Can this be implemented in HL -- or can anyone point to how to create this as a custom item?
 
Depending on how different said items are from what exists already, you might be able to re-use of the gizmo's and forms that Page of Spell Knowledge does.

Alternately, you'd need to design your own form and gizmo, but that is beyond the scope of the editor. You'd need to look into the authoring kit to figure out how to set up a form and arrange the various UI elements.

Either way, you'd have to be working in the raw XML.
 
Code:
  <thing
    id="sCustPagKn"
    name="- Add custom Page of spell knowledge -"
    compset="MagicItem"
    description="This page is covered in densely-worded arcane or divine magical runes. It contains the knowledge of a single arcane or divine spell (chosen by the creator when the item is crafted). If the bearer is a spontaneous spellcaster and has that spell on her class spell list, she may use her spell slots to cast that spell as if it were one of her spells known. A {i}page of spell knowledge{/i} is priced based on the spell's cleric or sorcerer/wizard spell level, unless the spell doesn't appear on either of those spell lists, in which case it is based on the highest spell level as it appears on any other spell list. For example, a spell that is on the 4th-level inquisitor list and the 2nd-level paladin list is priced as a 4th-level spell."
    buytemplate="BuyGeneral"
    xactspecial="2"> <!-- Barebones purchase, showing just coin fields -->
    <usesource source="UltEquip"/>
    <tag group="Helper" tag="CustomItem"/>
    <tag group="Helper" tag="CustSpCont"/>
    <tag group="gType" tag="Wonder"/>
    <tag group="SpecialTab" tag="GRWondrous"/>
    <tag group="Helper" tag="EquipMag"/>
    <eval value="1" phase="Render" priority="105100">
      <after name="Gen Custom Spell Name"/>
      <after name="Default livename Modify"/><![CDATA[
      ~ Now that all spells have been accounted for, wrap us in parentheses and
      ~ add the item's name
      field[sbName].text = "page of spell knowledge ({i}" & lowercase(field[livename].text) & "{/i})"
      field[livename].text = "Page of spell knowledge ({i}" & lowercase(field[livename].text) & "{/i})"
      ]]></eval>
    <eval index="2" phase="Final" priority="10000"><![CDATA[
      ~our list of spells does not include wordspells or the custom wordspell helper
      gizmo.child[CustPage].field[abItemExpr].text = "!component.BaseWord & !Helper.CustomItem & !Helper.Helper & !Helper.Obsolete & !sLevel.0"
      ]]></eval>
    <eval index="3" phase="First" priority="2000">
      <before name="Fake a Spell's linkage[table]"/><![CDATA[
      ~if we're not equipped, hide all the spells added to our gizmo
      if (field[gIsEquip].value = 0) then
        foreach pick in gizmo from BaseSpell
          perform eachpick.assign[Hide.Spell]
          nexteach
      else

        ~search through all the spontaneous caster classes on our hero
        foreach pick in hero from Class where "CasterType.SpontKnow"

          perform eachpick.pulltags[SpellType.?]

          ~using that class' list of spells available, search through all the
          ~spells in our gizmo
          foreach pick in gizmo from BaseSpell where eachpick.tagids[sClass.?,"|"]

            ~assign each one of them to that class
            perform eachpick.pushtags[SpellType.?]
            nexteach

          perform delete[SpellType.?]
          nexteach
        endif
      ]]></eval>
    <eval index="4" phase="Final" priority="10000"><![CDATA[
      ~during play, this doesn't need to be on the Special tab, but we do want
      ~it displayed in the gear description appendix, so we add tags that will
      ~make it show up in that list if we're outputting this item, but *not* in
      ~the general special abilities list at the end of the statblock
      if (state.isoutput <> 0) then
        perform assign[Helper.ShowSpec]
        perform assign[Hide.Statblock]
        endif
      ]]></eval>
    <evalrule index="1" phase="Validation" priority="5000" message="A Page of Spell Knowledge must be created with exactly one spell."><![CDATA[
      validif (tagcount[Helper.CustHasSpl] = 1)
      ]]></evalrule>
    <child entity="CustPage">
      </child>
    </thing>
 
Ok, fantastic. Something to work from:

1) The description changes (naturally).
2) The Eval for wordspells or the custom wordspell helper is not needed at all. -- Deleted
3) The Eval for Equiping/Hiding Spells needs to change to powers -- I don't believe the extended spontaneous caster search is required. -- Modified

Ok, here is what I have:

Code:
  <thing
    id="sCustMndSt"
    name="- Add custom Mind Stone -"
    compset="MagicItem"
    description="This opaque crystal faintly pulses with an internal light.  It contains the knowledge of a single psionic power (chosen by the creator when the item is crafted). If the bearer is a manifester and has that power on her class power list, she may use her power points to manifest that power as if it were one of her powers known. A mind stone is priced based on the power’s psion/wilder, tactician, or vitalist level, unless the power doesn’t appear on either of those power lists, in which case it is based on the highest power level as it appears on any other power list. For example, a power that is on the 4th-level cryptic list and the 2nd-level psychic warrior list is priced as a 4th-level power.
A character can only benefit from a number of mind stones equal to half his powers known from his manifesting ability. Extra powers known from feats like Expanded Knowledge or from effects like psychic chirurgery do not increase this limit.  
A character must first attune to a mind stone before he can benefit from it. Attuning takes 24 hours of the mind stone being in the character’s possession. A mind stone can only be attuned to one creature at any time."
    buytemplate="BuyGeneral"
    xactspecial="2"> <!-- Barebones purchase, showing just coin fields -->
    <usesource source="UltEquip"/>
    <tag group="Helper" tag="CustomItem"/>
    <tag group="Helper" tag="CustSpCont"/>
    <tag group="gType" tag="Wonder"/>
    <tag group="SpecialTab" tag="GRWondrous"/>
    <tag group="Helper" tag="EquipMag"/>
    <eval value="1" phase="Render" priority="105100">
      <after name="Gen Custom Power Name"/>
      <after name="Default livename Modify"/><![CDATA[
      ~ Now that all spells have been accounted for, wrap us in parentheses and
      ~ add the item's name
      field[sbName].text = "Mind Stone ({i}" & lowercase(field[livename].text) & "{/i})"
      field[livename].text = "Mind Stone ({i}" & lowercase(field[livename].text) & "{/i})"
      ]]></eval>
    <eval index="2" phase="First" priority="2000">
      <before name="Fake a Power's linkage[table]"/><![CDATA[
      ~if we're not equipped, hide all the spells added to our gizmo
      if (field[gIsEquip].value = 0) then
        foreach pick in gizmo from BasePower
          perform eachpick.assign[Hide.Power]
          nexteach
      endif
      ]]></eval>
    <eval index="4" phase="Final" priority="10000"><![CDATA[
      ~during play, this doesn't need to be on the Special tab, but we do want
      ~it displayed in the gear description appendix, so we add tags that will
      ~make it show up in that list if we're outputting this item, but *not* in
      ~the general special abilities list at the end of the statblock
      if (state.isoutput <> 0) then
        perform assign[Helper.ShowSpec]
        perform assign[Hide.Statblock]
        endif
      ]]></eval>
    <evalrule index="1" phase="Validation" priority="5000" message="A Page of Spell Knowledge must be created with exactly one spell."><![CDATA[
      validif (tagcount[Helper.CustHasPwr] = 1)
      ]]></evalrule>
    <child entity="CustPage">
      </child>
    </thing>
 
So, behavior-wise, it doesn't look like this item adds the spell to the spells known list for the character, it just adds to the Specials Summary Window. Am I interpreting this correctly?
 
Back
Top