• 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

What am I missing here?

I'm getting the following Syntax error but can't seem to figure out what it's actually referring to. I've look through the wiki and the forums but haven't been able to find anything that has helped so now I'm asking if anyone can tell me what I'm missing.

Syntax error in 'position' script for Template 'skPick' on line 28
-> Invalid use of a reserved word in script

I have tried many different changes to the script but still just get that error. Below is the script, I believe, they are referring to.

<position><![CDATA[
~set up our height based on our tallest portal
height = portal[info].height

~if this is a "sizing" calculation, we're done
doneif (issizing <> 0)

~position our tallest portal at the top
portal[info].top = 0

~center the other portals vertically
perform portal[tname].centervert
perform portal[domain].centervert
perform portal[lbldomain].centervert
perform portal[value].centervert
perform portal[delete].centervert

~position the delete portal on the far right
perform portal[delete].alignedge[right,0]

~position the info portal to the left of the delete button
perform portal[info].alignrel[rtol,delete,-8]

~position the incrementer on the left
portal[value].left = 0

~position the name next to the incrementer
perform portal[tname].alignrel [ltor,value,10]

~if we don't need a domain, hide it and let the name use all available space
if (tagis[User.NeedDomain] = 0) then
portal[lbldomain].visible = 0
portal[domain].visible = 0
portal[tname].width = minimum(portal[tname].width,portal[info].left - portal[tname].left - 10)

~otherwise, position the domain portals next to the name
else
perform portal [lbldomain].alignrel [ltor,tname,20]
perform portal [domain].alignrel [ltor,lbldomain,5]

endif

~if the ability is auto-added, change its font to indicate that fact
if (candelete = 0) then
perform portal[tname].setstyle[lblAuto]
endif
]]></position>
 
line 29 is this one:

perform portal[tname].alignrel [ltor,value,10]

Typo - you've got a space between alignrel and the [

About 10 lines down from that, I see more lines with spaces between the command and the parameters for that command that are in square brackets, so get those, too.
 
Oh.. Yep you are right about that. Amazing how something so simple can be overlooked, lol. Thank you for pointing that out!

Now I have another question because I'm not quite sure how this needs/can be formatted to get the result I want. Basically, I need to make tiered skills that have a max level of 3 for basic, and a min level of 4 to be advanced (also requires proper training so characters can't really get the advanced version unless they "spend the time" to train). The difference, mechanically, is that a basic skill adds the bonus from one attribute while the advanced adds the bonus from two. Since only certain skills are tiered I am trying to add it to the skills themselves. Below is an option I was trying but not sure if this will work or not because I don't quite understand the format or actual use of this particular item. Any suggestions would be appreciated.

<exprreq message="Tiered skill" iserror="no">
<![CDATA[if(#trait[trtUser].value >= 4)then<link linkage="attribute" thing="attrDex"/> endif]]>
</exprreq>

I've also tried taking every space out but still get that "reserved word" error so I know I'm doing something wrong, just not sure what.

Ok, so after a little more searching it seems I am probably way off on how I should be doing this.. I'm going to work on another approach but in the meantime I'll gladly take suggestions.
 
Last edited:
Expr-reqs are validation warnings. I'm not sure what you're trying to accomplish, but it looks as though you're trying to use one to assign a link? (And you're putting an XML element (<link) inside a <![CDATA[ section, which is not allowed).

You've told me that there's something called basic skills, and there's something called advanced skills, but you haven't said what the difference is. You also haven't described what a tiered skill is, and how that differs from normal skills.
 
Skills Explained

Expr-reqs are validation warnings. I'm not sure what you're trying to accomplish, but it looks as though you're trying to use one to assign a link? (And you're putting an XML element (<link) inside a <![CDATA[ section, which is not allowed).

You've told me that there's something called basic skills, and there's something called advanced skills, but you haven't said what the difference is. You also haven't described what a tiered skill is, and how that differs from normal skills.

Yea, I figured out I was doing it wrong shortly after posting that..

Ok, so here's how skills work in this system. Skills have a designated Target Number and Complexity (TN / C) associated with every skill, and the character roles 2d6, plus modifiers, when making skill checks.

As the rulebook puts it "The first half of a Skill’s TN / C Rating, the target number (TN) applies to any effort by the character to use the Skill (so long as the character possesses it to begin with). This TN reflects the use of the Skill at its most elemental level, with no modifiers applied for Skill Level, Linked Attributes or conditions." Simple enough..

Now the Complexity works like this "The second half of the TN / C Rating, a Skill’s Complexity Rating is a two-letter code that reflects how involved the Skill is in terms of physical action or concentration and training. A Skill’s action rating can be Simple (S) or Complex (C), while its training rating can be Basic (B) or Advanced (A). For example, a Skill with a “CB” Complexity Rating is “Complex-Basic”."

Tiered skills basically designate skills that require dedication and/or higher learning to achieve their "Advanced" ratings (I.E. the skill "Arts" is divided between those who paint as a hobby and those who have taken collage classes or apprenticed to become artisans). In game terms, this means that unless a person actually goes to a collage, or trains in some other way, they cannot take the Advanced version of a tiered skill. Mechanically, this means that the max points they can have in that skill is 3. A player that does get the advanced training is required to have the skill at 4 or higher.

Leaving the TN aside because it is a static number, that is already assigned to each skill, I will try to explain how the system uses the Complexity ratings. The easiest way to do this would be to provide a few examples of how the tiered skills are broken out from simple-basic to complex-advanced.

Examples:
Martial Arts [Basic Tier] RFL 7 / SB
Martial Arts [Advanced Tier] RFL + DEX 8 / SA
Computers [Basic Tier] INT 8 / CB
Computers [Advanced Tier] DEX + INT 9 / CA

Even though there are only two skills shown they represent the whole range of possibilities with all skills in the system. As you can see, in the Basic forms the skills are linked to a single attribute, but gain a second attribute in their Advanced forms. So what I need to do is create a way to link a second attribute to some complex skills that are not tiered and a way to differentiate between "Basic" and "Advanced" Tiered skills to reflect the change from one attribute to two. I'm thinking of using an "activation" check box to show when a Tiered skill is Basic (unchecked) or Advanced (checked) so I'm not worried about that part as much as how to get HL to reflect the correct numbers.

Sorry for the long explanation, and thank you for your assistance and patients with an amateur. :)
 
Last edited:
I'm sorry, but I'll have to get back to you later today or over the weekend - we've got a release today, and I still have a bit to do before that release is finished.
 
No worries..

I've got plenty to work on so I have no problem waiting for replies.. I'm just grateful for the assistance. I'm excited how much I've been able to do/figure out on my own. I know I'll have more questions but for now that's the only thing I'm stumped on. Thanks again!
 
Creating a new link is simple - find this in traits.str:


Code:
<!-- Each skill is associated with a specific attribute that must be identified -->
<linkage linkage="attribute" optional="no"/>

And duplicate it:


Code:
<!-- Each skill is associated with a specific attribute that must be identified -->
<linkage linkage="attribute" optional="no"/>
 
 
<!-- Some skills get a second attribute - this is optional, since not all skills use this -->
<linkage linkage="attribute2" optional="yes"/>

Then, find the script that adds the attribute's value to the skill's roll, and modify it to include the new attribute if it's there:

Code:
<calculate phase="Final" priority="5000">
  <after name="Calc trtFinal"/><![CDATA[
  ~only access the linkage if the skill is directly on the hero; if not, it is
  ~likely within an advancement gizmo and no linkage will exist there
  if (container.ishero <> 0) then
    @value = field[trtFinal].value + linkage[attribute].field[trtFinal].value
 
    if (islinkage[attribute2] <> 0) then
      @value += linkage[attribute2].field[trtFinal].value
      endif
    endif
  ]]></calculate>
 
Is a skill defined by the game system as SB/CA/etc., or does the player choose that for each of their skills?
 
Is a skill defined by the game system as SB/CA/etc., or does the player choose that for each of their skills?

First of all, thank you for explaining how to add the second attribute link. Worked like a charm.

The system defines whether the skill in SB/CA/ect... The actual rating doesn't do much more than define the relative difficulty of the skill and whether it is tied to one or two attributes. This is done because the system uses your base attribute score(s) in the event you need to make a skill roll but do not have the skill in question. Thus, a SB skill will result in a single attribute check as the skill in question is relatively simple to preform, and a CA skill will result in a double attribute check as it is a more involved and difficult skill to accomplish.

On another note, I'm moving this month so I won't be able to check back here very often, nor will I be able to work on the module very much. I will have more questions later, since I'm still learning, but for now I'm set. Thanks again for all the help. Have a Merry Christmas, and a Happy New Year.
 
If they're pre-defined, then you'll just store that information as tags - that's easy. That means you get to avoid the hassle of drop-downs to have the user set that information.
 
Well I'm all moved in and ready to get back to work, however, I've been thinking a lot about how to incorporate this system into Hero Lab, and I may have to do this almost completely from scratch.

The reason being is that this system is completely controlled and regulated by XP. Right now I am using the arrows to increase/decrease the attributes and skills/character traits once they're added to the hero, and subtracting the amounts out of the starting XP pool. That part works perfectly and can definitely be used to create 90% of the characters. The parts that aren't covered are the inclusion of affiliations (take the place of race since, in this game, everyone is human) and the use of "life modules" that all dictate a fixed XP cost for choosing them. That alone wouldn't be an issue except that not all the XP used in this way provides enough to equal an increase (i.e. 100 XP = 1 attribute point, but an affiliation adds 50 XP to an attribute so it is not enough, by itself, to increase the attribute point). For Hero Lab I can use something similar to Archtypes to incorporate the life modules, but need a way to track the amounts of XP in each thing so that the attribute/skill/ect... increases and decreases automatically as XP is added and subtracted as affiliations and life modules are picked. Just typing this has given me an idea or two, but I could really use a second opinion on how I can do that without starting from scratch (I won't completely start from scratch as a lot of what I've got is working but I may have to Create a New Game System and gut it so I can build it, fundamentally, from the ground up).

Forgive me if that explanation is confusing.
 
Here's what I'm thinking;

Add a "bonus XP' field to everything that has an xp cost. In the script that calculates the XP cost for a level, after you've calculated the normal XP cost, subtract the bonus XP field's value from that. That way, if I want level 2 in this thing, which would cost me 200, but I've gained 50XP from an affiliation, only 150 is added to the XP used.

Is it possible to get 50xp from an affiliation, and 50xp from something else, which works out to a full level? If so, you'll need another field that's a duplicate of trtBonus - you'll need to find all the places that look up thevalue of trtBonus, and add this field to them, too. Add a script that decides whether there's enough bonux XP to equal a full point of something (and decides how many points it qualifies, in case you get bonus XP from lots of different sources). Then, set this field's value equal to that amount. In the script that calculates the total XP cost for this thing, you'll need to take inco account how much of the bonus XP has been converted into points, instead of applied as a discount to the user-added ranks. For example, lets say you've gotten 150 bonus XP, and each point costs 100XP, which means you have 1 point in the "bonus points from bonus XP" field. The cost script multiplies that field by 100xp/point, and sees that 100XP worth of bonus XP have been used up, leaving only 50 bonus XP to apply as a discount towards the overall cost.
 
That sounds like a good plan, I'll give it a shot.. Gonna find out if I've learned enough yet.

The life modules add and subtract XP from everything they involve when they're chosen. Mostly adding, but there are negative Character Traits that can put XP back into the XP pool, as well as, some "group" sets that refund a partial amount of XP. They can also have Attribute, or Skill minimums when chosen that must be met before your character can be completed (i.e. A Soldier has to have a minimum Body Attribute of 5. ect...).
 
Back
Top