Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Authoring Kit
Register FAQ Community Today's Posts Search

Notices

Reply
 
Thread Tools Display Modes
TCArknight
Senior Member
 
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321

Old July 30th, 2009, 04:54 AM
Howdy!

I am attempting to implement the CODA game rules from Decipher's Star Trek and Lord of the Rings games. I've made a little progress, but have a couple of questions on how to proceed..

I'm starting with the Star Trek rules, and these questions have come up:

1) How do I make an attribute (Psionics) hidden unless the character has an ability that allows it (Psionic Talent which allows the Attribute and starts at a score of 4 )?

2) How do I add fields to skills? I need to add a field that indicates whether a skill is useable untrained or Trained only, as well as one for making a skill fit one of four categories (Academic, Physical, Social or Psionic)

3) How do I hide Psionic skills unless the Psionic Attribute is visible?

4) In the CODA system, a skill can be:
a) The skill itself where the ranks are applied only for that skill. i.e. Empathy 3
b) A Specialty of a base skill and a character can have several specialties for a skill. i.e. System Operation (Helm)(Sensors) 4
c) One of a Group of skills, each individual and separate (But subskills of the same base). i.e. Science (Chemistry 4, Physics 2)

5) How do I calculate and display a modifier score for an attribute? i.e. Score of 1 is a -3 modfier, 4 is a 0 modifier or 10 is a +2 modifier
a) I'm thinking a script that pulls the final value of the attribute and assigns the modifier based on that score..?

I'm trying to get the basic information down for now... more in-depth creation questions wll be coming I'm sure.

Thanks!
Thomas
TCArknight is offline   #1 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,213

Old July 30th, 2009, 10:06 AM
Quote:
Originally Posted by TCArknight View Post
1) How do I make an attribute (Psionics) hidden unless the character has an ability that allows it (Psionic Talent which allows the Attribute and starts at a score of 4 )?
Your psionics attribute will be auto-added with all the other attributes. On the tables that display attributes (on the basics tab, the summary, the dashboard, and the character sheet), you'll put in a live expression of:
Code:
<live>!Hide.Attribute</live>
Because of that, any attribute that has the Hide.Attribute tag will not be displayed in the attributes list.

Your talent will assign a hero tag (Hero.Psionic for example) once it's added, and a script on the Psionic attribute will assign itself Hide.Attribute unless the hero is psionic. Looking for a hero tag instead of the talent allows supplement X to add a different version of the psionic talent that works differently, but still uses the same psionics attribute.

Read through the Savage Worlds walkthrough sections on arcane backgrounds. It sounds like psionics act much like them.

Quote:
Originally Posted by TCArknight View Post
2) How do I add fields to skills? I need to add a field that indicates whether a skill is useable untrained or Trained only, as well as one for making a skill fit one of four categories (Academic, Physical, Social or Psionic)
In traits.str is where fields are defined, but what you're describing are best done with tags. You'll create a tag (like SkillUse.Trained) to mark if a skill can only be used once trained (no tag means it can be used untrained).

This page of the Savage Worlds walkthrough includes creating categories for the various edges (defining categories for your skills will work the same way):
http://hlkitwiki.wolflair.com/index....upport_(Savage)

Quote:
Originally Posted by TCArknight View Post
3) How do I hide Psionic skills unless the Psionic Attribute is visible?
This page of the Savage Worlds walkthrough covers that:
http://hlkitwiki.wolflair.com/index....rounds_(Savage)

Quote:
Originally Posted by TCArknight View Post
4) In the CODA system, a skill can be:
a) The skill itself where the ranks are applied only for that skill. i.e. Empathy 3
b) A Specialty of a base skill and a character can have several specialties for a skill. i.e. System Operation (Helm)(Sensors) 4
c) One of a Group of skills, each individual and separate (But subskills of the same base). i.e. Science (Chemistry 4, Physics 2)
I'm afraid I'll need more detail on how skills work before I can work out how they should be defined in HL.

Does an individual skill only belong in one of those three categories? Ex: the empathy skill has no specialties/grouping?

If you have specialties for a skill, are they all at the same level? Or is the grouping of skills you describe essentially two different specialties of Science, each at different levels?

It may help to think in terms of existing examples. In the Cortex files, skills and specialties are separate, with the specialties always sorting themselves under the skill (and then some scripts to make a gun figure out whether it should be using the pistols specialty or the guns skill, or whether the character is unskilled). In WoD, specialties tend to be more along the lines of modifications of existing skills, that don't change their parent as much, so they're displayed in their own table. In d20, there are many perform skills, but since the maximum matters to a bard, a separate component searches through all the perform skills to find the maximum value among them.

Quote:
Originally Posted by TCArknight View Post
5) How do I calculate and display a modifier score for an attribute? i.e. Score of 1 is a -3 modfier, 4 is a 0 modifier or 10 is a +2 modifier
a) I'm thinking a script that pulls the final value of the attribute and assigns the modifier based on that score..?
Bingo. The thing to watch out for here is timing. You'll put this script slightly after the script that calculates trtFinal, then derive the modifier from trtFinal.

Last edited by Mathias; July 30th, 2009 at 10:08 AM.
Mathias is online now   #2 Reply With Quote
TCArknight
Senior Member
 
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321

Old July 30th, 2009, 01:10 PM
Quote:
Originally Posted by mgehl View Post
Your psionics attribute will be auto-added with all the other attributes. On the tables that display attributes (on the basics tab, the summary, the dashboard, and the character sheet), you'll put in a live expression of:
Code:
<live>!Hide.Attribute</live>
Because of that, any attribute that has the Hide.Attribute tag will not be displayed in the attributes list.

Your talent will assign a hero tag (Hero.Psionic for example) once it's added, and a script on the Psionic attribute will assign itself Hide.Attribute unless the hero is psionic. Looking for a hero tag instead of the talent allows supplement X to add a different version of the psionic talent that works differently, but still uses the same psionics attribute.

Read through the Savage Worlds walkthrough sections on arcane backgrounds. It sounds like psionics act much like them.
This is what I've got on the Attribute portal and the assign on the Attribute:
Code:
  <portal
    id="baAttrib"
    style="tblInvis">
    <table_fixed
      component="Attribute"
      showtemplate="baAttrPick"
      showsortset="explicit"
      scrollable="no">
      <headertitle><![CDATA[
        @text = "Attributes"
        ]]></headertitle>
     </table_fixed>
    <live>!Hide.Attribute</live>
    </portal>

  <thing
    id="attrPsi"
    name="Psionics"
    compset="Attribute"
    isunique="yes"
    description="Description goes here">
    <fieldval field="trtAbbrev" value="Psi"/>
    <tag group="explicit" tag="7"/>
    <eval index="1" phase="Setup" priority="100"><![CDATA[
        perform assign[Hide.Attribute]
        ]]></eval>
    </thing>
except the Psionics attribute still shows up.

Quote:
Originally Posted by mgehl View Post
In traits.str is where fields are defined, but what you're describing are best done with tags. You'll create a tag (like SkillUse.Trained) to mark if a skill can only be used once trained (no tag means it can be used untrained).

This page of the Savage Worlds walkthrough includes creating categories for the various edges (defining categories for your skills will work the same way):
http://hlkitwiki.wolflair.com/index....upport_(Savage)
Ok, I added this to tags.1st:
Code:
<!-- Skill Type group -->
  <group
    id="SkillType">
    <value id="Academic"/>
    <value id="Physical"/>
    <value id="Social"/>
    <value id="Psionic"/>
    </group>
and I add this to the Skill:
Code:
<tag group="SkillType" tag="Academic" />
and get a message about 'Encountered unknown element tag 'tag' ' And that happens even if I add the <tag group="DashTacCon" tag="NonCombat"/> mentioned in the skeleton files. Am I missing something in the Skills trait?

Quote:
Originally Posted by mgehl View Post
I'm afraid I'll need more detail on how skills work before I can work out how they should be defined in HL.

Does an individual skill only belong in one of those three categories? Ex: the empathy skill has no specialties/grouping?

If you have specialties for a skill, are they all at the same level? Or is the grouping of skills you describe essentially two different specialties of Science, each at different levels?

It may help to think in terms of existing examples. In the Cortex files, skills and specialties are separate, with the specialties always sorting themselves under the skill (and then some scripts to make a gun figure out whether it should be using the pistols specialty or the guns skill, or whether the character is unskilled). In WoD, specialties tend to be more along the lines of modifications of existing skills, that don't change their parent as much, so they're displayed in their own table. In d20, there are many perform skills, but since the maximum matters to a bard, a separate component searches through all the perform skills to find the maximum value among them.
a) Yes, a skill can only belong in one of the three groupings.
b) A specialty of a skill is narrower use of the overall skill, so adds a +2 to the total roll for use of that specialty. It doesn't affect ranks themselves except for costing less to purchase and advance.
c) It would be as if you had the two skills: Science - Chemistry 4 and Science - Physics 2. Each subskill is treated as a seperate skill for costs, etc. However, when creating a character, one of the added skills might be something like Science (Any) 2 which means "choose a skill from the science skill group at rank 2".

Quote:
Originally Posted by mgehl View Post
Bingo. The thing to watch out for here is timing. You'll put this script slightly after the script that calculates trtFinal, then derive the modifier from trtFinal.

Last edited by TCArknight; July 30th, 2009 at 01:37 PM. Reason: added psionics code
TCArknight is offline   #3 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,213

Old July 30th, 2009, 01:37 PM
Quote:
Originally Posted by TCArknight View Post
and get a message about 'Encountered unknown element tag 'tag'
That error means you have the elements of the thing out of order.

http://hlkitwiki.wolflair.com/index...._Element_(Data)

Scroll down that page until you get to the list of elements (they're all links, so it's easy to see whn you've gotten to that section of the list). The order they're listed in there has to be followed. I'm guessing you put your new <tag/> line as the first or last line in the skill.


Quote:
Originally Posted by TCArknight View Post
a) Yes, a skill can only belong in one of the three groupings.
b) A specialty of a skill is narrower use of the overall skill, so adds a +2 to the total roll for use of that specialty. It doesn't affect ranks themselves except for costing less to purchase and advance.
c) It would be as if you had the two skills: Science - Chemistry 4 and Science - Physics 2. Each subskill is treated as a seperate skill for costs, etc. However, when creating a character, one of the added skills might be something like Science (Any) 2 which means "choose a skill from the science skill group at rank 2".
Could you have both System Operation 4 and System Operation (Helm) 5 (total roll 7, because of the +2 for a specialty)?

Or, once you take the system operation skill, do you have the option to restrict it to one or more specialties, trading the general effectiveness of the skill for better rolls in those specialties? If so, is there a limit to the number of specialties per skill (if it's a max of 2 or 3, you can put menus on the skills to select the specialties - if it's more, you're going to need a table that allows the user to select them all).

Would it work to handle the third option with requirements? - The character class (or whatever) grants you the skill points you'd need to buy Science (XXX) 2, and has an eval rule that requires that you have at least one science skill at a rating of 2 or more. It's then up to the user to buy the science skill they want, with the program complaining until they do?

If the character's maximum science skill isn't something that's used, I'd suggest you add Science (chemistry) and Science (physics) as separate skills, with the same skill grouping tag. On the other hand, if the skills are listed as Science (Chemistry 4, Physics 2) on a character sheet, you're going to need a parent skill. Parent skills would display themselves on the character sheet, and then find and display all their child skills. Normal skills (like empathy) would just display themselves.
Mathias is online now   #4 Reply With Quote
TCArknight
Senior Member
 
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321

Old August 1st, 2009, 01:12 PM
Ok, I'm not worrying about the skills at the moment, so thought I'd tackle something a bit simpler... or so I thought.

Each character has 4 stats based on the modifiers of one of two attributes (I take the max of the two in a script) These are called Reactions in the game.

What I did, was duplicate everything for Traits and change it to Reaction. The Reactions should show up in the lower right panel on the Basics tab. However, they don't. Seems like no matter what I change in the Pick template, I can't get the Reactions to show up.

I've got a Reaction compset, and a Reaction Component set up, but no luck.

What am I missing?



I've attached the zip of the data files.
StarTrek.zip

Thanks!
Thomas
TCArknight is offline   #5 Reply With Quote
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 13,213

Old August 2nd, 2009, 11:04 AM
In the bootstraps.1st file, there is an enmasse entry that adds all derived traits to every character. Do you have a way to add your reactions to the characters that need them?
Mathias is online now   #6 Reply With Quote
TCArknight
Senior Member
 
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321

Old August 2nd, 2009, 12:05 PM
Not that I've come up with. Reactions are normal Characteristics, as much as the Attributes.

I'm playing around with a couple of other ideas and going back through the walkthrough to see what I missed...
TCArknight is offline   #7 Reply With Quote
TCArknight
Senior Member
 
Join Date: Jan 2007
Location: NW Arkansas
Posts: 1,321

Old August 2nd, 2009, 01:25 PM
Well, I added the enmasse entry for Reactions and they showed up. I guess I missed that in the walkthrough... ::

Couple of things:
1) any ideas why this script isn't working?
Code:
  <scriptmacro
    name="traitmod"
    param1="trait"
    result="hero.child[#trait].field[trtMod].value"/>

    <!-- Attribute modifier -->
    <field
      id="trtMod"
      name="Modifier"
      type="derived">
      </field>

    <!-- Calculate the modifier for the Attribute -->
      <eval index="3" phase="Traits" priority="5000"><![CDATA[
        ~base our test on the adjusted trait value, sans any in-play adjustments
        var trait as number
        trait = field[trtFinal].value
        if (trait <= 1) then
          field[trtMod].value = -3
        elseif (trait = 2) then
          field[trtMod].value = -2
        elseif (trait = 3) then
          field[trtMod].value = -1
        elseif (trait = 4) then
          field[trtMod].value = 0
        elseif (trait = 5) then
          field[trtMod].value = 0
        elseif (trait = 6) then
          field[trtMod].value = 0
        elseif (trait = 7) then
          field[trtMod].value = 0
        elseif (trait = 8) then
          field[trtMod].value = 1
        elseif (trait = 9) then
          field[trtMod].value = 1
        elseif (trait = 10) then
          field[trtMod].value = 2
        elseif (trait = 11) then
          field[trtMod].value = 2
        elseif (trait = 12) then
          field[trtMod].value = 3
        elseif (trait = 13) then
          field[trtMod].value = 3
        elseif (trait = 14) then
          field[trtMod].value = 4
        elseif (trait = 15) then
          field[trtMod].value = 4
        elseif (trait = 16) then
          field[trtMod].value = 5
        elseif (trait = 17) then
          field[trtMod].value = 5
        elseif (trait = 18) then
          field[trtMod].value = 6
        elseif (trait = 19) then
          field[trtMod].value = 6
        elseif (trait = 20) then
          field[trtMod].value = 7
        elseif (trait = 21) then
          field[trtMod].value = 7
        elseif (trait = 22) then
          field[trtMod].value = 8
        elseif (trait = 23) then
          field[trtMod].value = 8
        endif
        ]]></eval>

<thing
      id="reQuick"
      name="Quickness"
      compset="Reaction"
      isunique="yes"
      description="Description goes here">
      <fieldval field="reaAbbrev" value="Qui"/>
      <tag group="explicit" tag="1"/>
      <tag group="DashTacCon" tag="Combat"/>
      <eval index="1" phase="Traits" priority="4000">
        <before name="Derived trtFinal"/>
        <after name="Calc trtFinal"/><![CDATA[
        ~Quickness uses the better of the character's Perception or Agility modifier

        field[reaBonus].value = maximum(#traitmod[attrPer],#traitmod[attrAgi])
        ]]></eval>
      </thing>
The eval script seems to update the trtMod field properly, but the #traitmod always seems to be returning a value of 0.

2) What am I missing to make the Psionics attribute not appear unless have the Psionics talent.
Code:
  <thing
    id="attrPsi"
    name="Psionics"
    compset="Attribute"
    isunique="yes"
    description="Description goes here">
    <fieldval field="trtAbbrev" value="Psi"/>
    <tag group="explicit" tag="7"/>
    <eval index="1" phase="Setup" priority="1000"><![CDATA[
        perform assign[Hide.Attribute]
        ]]></eval>
    </thing>

  <template
    id="baAttrPick"
    name="Attribute Pick"
    compset="Attribute"
    marginhorz="18"
    marginvert="9">

    <live>!Hide.Attribute</live>
    
    <portal
      id="name"
      style="lblXLarge"
      showinvalid="yes">
      <label
        field="name">
        </label>
      </portal>
...
</template>
TCArknight is offline   #8 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old August 5th, 2009, 03:50 AM
Quote:
Originally Posted by TCArknight View Post
1) any ideas why this script isn't working?
Code:
<!-- Calculate the modifier for the Attribute -->
      <eval index="3" phase="Traits" priority="5000">
        ]]></eval>

      <eval index="1" phase="Traits" priority="4000">
        <before name="Derived trtFinal"/>
        <after name="Calc trtFinal"/>
        </eval>
The eval script seems to update the trtMod field properly, but the #traitmod always seems to be returning a value of 0.
Look at your timing. The script that sets the value of the trtMod field occurs at Traits/5000. The script that checks the value occurs at Traits/4000. So you are checking the value before its been set. That's why it's returning zero.
rob is offline   #9 Reply With Quote
rob
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 8,232

Old August 5th, 2009, 03:57 AM
Quote:
Originally Posted by TCArknight View Post
2) What am I missing to make the Psionics attribute not appear unless have the Psionics talent.
Code:
  <thing
    id="attrPsi"
    name="Psionics"
    compset="Attribute"
    isunique="yes"
    description="Description goes here">
    <fieldval field="trtAbbrev" value="Psi"/>
    <tag group="explicit" tag="7"/>
    <eval index="1" phase="Setup" priority="1000"><![CDATA[
        perform assign[Hide.Attribute]
        ]]></eval>
    </thing>

  <template
    id="baAttrPick"
    name="Attribute Pick"
    compset="Attribute"
    marginhorz="18"
    marginvert="9">

    <live>!Hide.Attribute</live>
</template>
You are always assigning the Hide.Attribute tag to the thing, which is why it is never showing up. I think what you should be doing is two-fold. First, assign the Hide.Attribute tag via a "tag" element instead of the Eval script. This will have it never appear under normal circumstances. You can do that by adding:

Code:
        <tag group="Hide" tag="Attribute"/>
Second, use the Eval script to determine whether to make the attribute appear. If it is supposed to appear, then you can delete the tag from the pick. You'd probably base this on the presence of a tag somewhere on the hero. The script would look like:

Code:
    <eval index="1" phase="Setup" priority="1000"><![CDATA[
      if (hero.tagis[Hero.Psionics] <> 0) then
        perform delete[Hide.Attribute]
        endif
        ]]></eval>
Note that I just used a tag I concocted here, so you should use whatever you decide instead. Also, you'll probably need the timing to be much different from Setup/1000, since this is very early and you'll likely want to schedule it after the Psionics tag has been added somewhere.
rob is offline   #10 Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -8. The time now is 05:13 PM.


Powered by vBulletin® - Copyright ©2000 - 2024, vBulletin Solutions, Inc.
wolflair.com copyright ©1998-2016 Lone Wolf Development, Inc. View our Privacy Policy here.