• 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

Authoring Example help

That is correct. Advancement and character creation are treated mostly the same, at least in regards to the cost for skill advancement. There are broad skills and specialty skills and each of them is tied to one of the six ability scores. A player has to buy the broad skill at a one time cost before they can buy the specialty skills. A specialty skill costs some base for rank one and then each subsequent rank costs previous cost + 1.

For example, Ranged Weapons, Modern, the broad skill, costs six points and once they have that, they can the purchase the specialty skills under it, which are Pistol, Rifle and SMG for four points (each) for rank one, five points for rank two, six points for rank three, etc.

Alternity has a concept of levels but it's just a way to accrue skill points and then spend them once you have more than a few. (I think the idea was to be able to advance a couple of skills and see more progression, similar to a level in DND/PF, rather than only one skill increasing.) So, by the base rules, you have to accrue so many points before you can spend them. No matter when you buy rank two in Pistol, creation or advancement, it costs five points, whether skill or xp.

Alternity also has Perks and Flaws. In a way, these can be thought of as Feats. You either have them or don't. At creation, you can't have more than three of either. Perks cost skill points and Flaws give points. In advancement, you are limited to the Perks you can buy and their cost is different. To buy off a Flaw, it costs twice the points the Flaw gave. (I assumed I could do an advancement field value for the cost of Perks, setting it to zero if it's not allowed. If needed I could do the cost to buy off the Flaw.)

Now for the base rules, I should be tracking points gained from sessions separately from starting points. I was thinking to use the XP mechanic for this purpose. Again, there are "levels" and I could then compare the XP gained to a chart (not sure if it reduces to a formula yet) to give the "level" of the character. But I could also use XP as the points to buy broad skills or ranks since it's one to one, XP to skill points.

The screen attachment shows my skill page. Skills colored blue were either bootstrapped as free or added as an advancement. The advancement screen works. Under Vehicle Operation, I added the new specialty skill Land Vehicle via advancements and I added two ranks to it and it's showing up just fine, all the way to the character sheet. I get the error I listed before about the linkage pick not located for the current context. Again, I think that's because as a gizmo (is that correct) it's not linked to anything?

Furthermore on the skill screen, the skills are showing up properly. Specialty skills have an incrementer but broad skills do not. And I can increase skills here in advancement mode by the incrementer. If I do so on skills that were added with skill points, it costs skill points and then shows they are over in skill points. If I increase a skill added via advancement, they don't cost skill points. All of that is as expected at the moment.

This then brings up how advancements should be done. Should I have them do everything via the advances tab? There are rules that no skill can go up more than one rank per "level". So, increasing a skill one rank at a time, and then having a journal for it, is not bad at all. But it would seem to do that cleanly, I should then remove the incrementers if they go into advancement mode on the skill screen. And then I also need the linking to occur on gizmos to ability scores or I get errors.

The other option would be to let them just use the incrementers and not advancements.

In either case, though, I need to know they are in advancement mode to know to pull the cost from xp, and show what xp they have spent or not, instead of the starting skill points.

(There is more to it than this and while I'm not an expert at Hero Lab, I have an idea of what to do. I usually just need a starting point. For example, if they don't use up all starting skill points (such as they have two skill points left and nothing costs that), then when they go to advancement, I would need to add unused skill points to xp. Although I would have to track it differently with regards to level but it would act the same way. Not sure at this moment how to do it but that is how it would work.)

The other question I had, then, was whether I should track advancements on trtUser, which is where I'm putting skill points now, or if I should use something different, such as trtBonus? I could see where that would help me to track costs? Or will that just make the formulas complicated with no added help to me?

Hmm. Okay, I just noticed something. Having open the Pick Fields debug screen, the advancement is adding to trtBonus and trtUser but the incrementer only adds to trtUser? Is that correct default behavior? Does it only take the max of trtUser or trtBonus? Or does it add trtBonus into trtUser and then just use trtUser?

So, hopefully this was clear and concise enough. That's what I'm trying to do with advancements at least with regards to skills and perks and flaws. What are your thoughts on this?

Thanks for the help!

edg
 

Attachments

  • AltSkillPageHL.JPG
    AltSkillPageHL.JPG
    157.3 KB · Views: 8
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.
 
The advancement mechanisms in the skeleton files are what you want to use for this advancement system - just rename XP to skill points, and do keep it separate from the pool of skill points used during character creation.

Give me more detail about the linkage error you're encountering - that's a bug we'll have to fix.

What you'll do for the incrementers is to disable them during advancement mode, not hide them, but the first priority is to get the mechanics working - user interface can come later.

Leave your advancements as increases to trtBonus, not trtUser. Stick with the way the skeleton files handled it.

(the exception is if your game system wants to check things like "land vehicle operation 3+ required", and you want to test rating during creation + rating from advancements, without adding any rating bonuses that came from race/profession/perks/etc. - then, you'll need to create a pair of new fields - tell me if this is something you need to set up).
 
Several things.

I do need to know the total. There are rank benefits that happen at certain total ranks and I would like to list those in some way. But wouldn't I just be able to look at trtUser for that, based on timing?

Further, I can't think of any ways to get a rank increase from the items you listed (race/profession/perk). Those give a step bonus to a situation die that's rolled but not to the rank of the skill. (It's a bigger bonus this way than just one rank.) So, I don't know if that matters or not but I thought I would mention it.

Okay on renaming xp to earned skill points and using that setup. Works for me.

How do I disable the incrementers? I also want to be able to enable or disable skill tables based on a check box. At the moment, I can't see how to do it but I know it must be there.

As to the error, I was following the Advancement Support page (http://hlkitwiki.wolflair.com/index.php5/Advancement_Support_(Savage)) and that's when I started getting these. When I use Advancements to give a hero (actor?) a new skill they didn't have, this error happens. Again, I assume it's because it's trying to do the linkage but it doesn't exist since the advancement is now a gizmo? Or am I way off on that?

Code:
Linkage pick 'attribute' not located for current context
Location: 'eval' script for Component 'Skill' (Eval Script '#3') near line 3
- - -
Linkage pick 'attribute' not located for current context
Location: 'eval' script for Component 'Skill' (Eval Script '#3') near line 3

This is line 3:  perform linkage[attribute].pullidentity[Attribute]

Thanks! I hope the release went well!

edg
 
Was there ever an answer on the error I'm still getting? Was that something that needed to be fixed at a level I can't do in the authoring kit?

Also, how do I publish my stuff so it appears on the update list? I've looked at some FAQs but can't find. I will keep looking as well.

Thanks!

edg
 
I apologize for not getting back to you. I didn't have enough time to answer you when you originally asked it, and forgot to leave myself a to-do list item to come back to this later.

This is the code from Savage Worlds that tries to get the identity tag of the linked attribute - note that they make sure that it's not an advancement before trying to access the linkage.
Code:
<!-- Pull the identity tag of the linked attribute into the skill -->
<eval index="3" phase="Setup" priority="5000"><![CDATA[
  ~only access the linkage if the skill is directly on the hero; if not, we assume
  ~it is within an advancement gizmo and no linkage will exist there; we also don't
  ~need the linked attribute tag on advancement skills, so it's a non-issue
  if (container.ishero <> 0) then
    perform linkage[attribute].pullidentity[Attribute]
    endif
  ]]></eval>
 
Don't worry about how you'll disable the incrementers or publish at this point - I recommend that achieving a functional character creation system be your goal at this point.
 
Don't worry about how you'll disable the incrementers or publish at this point - I recommend that achieving a functional character creation system be your goal at this point.

I agree and that is now my goal. And the other fix worked as well.

How do I go about getting it on the update list?

Thanks!

edg
 
Is there an easy way to switch between Imperial and Metric measurements? I'm looking at height and weight on the personal tab and I want them in Metric as the base but also want the user to be able to pick, if they can.

Thanks!

edg
 
The best way I can think of is to always store the numbers in one measuring system or the other. Then, create a procedure that takes in that number, and either spits out "X ft." or "Y m", depending on a variable that you sent into that procedure to flag which you wanted.

Then, every field that you want to display in either meters or feet can use that same procedure in its finalize script.
 
How do I check for a tag on an item to freeze a portal?

So, in my data, I have a tab for psionics. If, on a previous area, they set a value of none, meaning no psionics, how do I then freeze the psionic portal?

I know the specific line to do so is portal[myname].freeze = 1 to freeze it. But what is my condition?

if (this.thing[mythingid] = 1) then ?

Hopefully this makes sense. I'm trying to freeze a portal based off of a previously selected item from a chooser_table.

Thanks!

edg
 
Sounds like you might want to create an identity tag group on the component for this type of thing. Then, have a script on that component forward those identity tags to the hero, and then you can test for this tag on the hero.

Code:
if (hero.tagis[XXXX.YYYY] <> 0) then

You'll also have those tags available for when you're writing prereqs.

For example, Pathfinder added several macros to make testing for some of that sort of tags easier:

#hasfeat[XXXXX] is a macro for:

hero.tagis[HasFeat.XXXXX]
 
Darn. I found a big design flaw and am trying to correct it. I had attributes as traits and am having to redefine them everywhere. That means that I had to redefine it in traits.str including things such as trtUser -> ablUser and trtFinal -> ablFinal. I also updated my macros to get the correct field if going for an attribute.

The error I'm getting, though, is this:

Code:
Attempt to access field 'trtFinal' that does not exist for thing 'attrStr'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrStr'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrStr'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrStr'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrDex'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrDex'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrDex'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrCon'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrCon'
- - -
Attempt to access field 'trtFinal' that does not exist for thing 'attrCon'

I think I have them all and have searched on "attrStr" or the others and can't find where I'm doing it wrong.

Any ideas where to search? What else can I look for? If you need code, let me know.

Thanks! (And, as usual, thanks for the all your help with this!)

edg

btw, the tag stuff worked and was awesome! I can't say Thanks enough! Thanks!
 
Okay, playing with it more, maybe it's due to out_custom.dat? (I think the xotraits procedure might be doing it. I must need an xoattributes script?)

Possibly also in out_statblock.dat, the sbtraits procedures. Again, do I need a sbattributes procedure?

Is there an easy to to create a new system, set up attributes separately as I need them, and then copy that code over to mine?

Thanks!

edg
 
Last edited:
What's wrong with having attributes as traits? I'd highly recommend keeping them in that component, and finding another solution to whatever's making you think about this change.
 
I probably should have backed up and explained the situation.

I have ability scores (STR, DEX, CON, etc) and I have secondary abilities (Number of actions per round, run speed, walk speed, etc.) and the secondary abilities rely on the primaries.

Here was my problem.

I had it working to enter ability scores and HL calculated the secondary ones. Then I moved to advancements and that's where I got into problems. It's probably just a timing issue but even then, no matter what I tried, I couldn't get it to work.

Part of the problem might be that I can't figure out what "phase" is being used to set the ability scores on the screen.

In the end, I have three competing calculations: Calc trtFinal, numActions, and the advancement.

calc trtFinal goes at "Traits" "3000". numActions goes at "Traits" "5000". The advancement goes at "Traits" "8000".

Ah, here's the code:

trtFinal:
Code:
<field
      id="trtFinal"
      name="Final Value"
      type="derived">
      <!-- Calculate the final value from the three distinct pieces -->
      <calculate phase="Traits" priority="3000" name="Calc trtFinal"><![CDATA[
        ~Note! If you change this calculation, you may need to change the similar
        ~       calculation in the "Derived" component.
        @value = field[trtUser].value + field[trtBonus].value + field[trtInPlay].value
        ]]></calculate>
      </field>

NumActions:
Code:
<thing
    id="trNumAct"
    name="Number of Actions"
    compset="Trait"
    isunique="yes"
    description="Description goes here">
    <fieldval field="trtAbbrev" value="NAct"/>
    <tag group="explicit" tag="1"/>

    <!-- Assign an appropriate tag based on how the trait should be classified -->
    <tag group="User" tag="Combat"/>
    
    <!-- Calculate the trait as appropriate -->
    <eval value="1" phase="Traits" priority="5000">
      <before name="Derived trtFinal"/>
      <before name="Calc trtFinal"/>
	  <![CDATA[
      ~calculate the trait value here, putting the value in the "final" field  why???????
	  var numact as number
	  numact = (#ability[attrCon] + #ability[attrWil])/ 8
	  debug "con : " & #ability[attrCon]
      field[trtBonus].value += round(numact ,0,-1)
      ]]></eval>
    </thing>

Advancement:
Code:
<!-- Define any script needed to apply changes to other traits -->
    <eval value="1" phase="Traits" priority="8000"><![CDATA[
	  ~if we haven't been activated, just get out (only needed for user-activated abilities)
	  ~doneif (field[abilActive].value = 0)
	  
      ~apply whatever adjustment(s) are needed here
	  if (container.ishero <> 0) then
		#trait[trNumAct] += 1
	  endif
      ]]></eval>

Basically, if I increased Final, NumActions would fail but the Advancment would work. I couldn't find a "sweet spot" that allowed all of them to work. I tried as many variations of the timing as I could. At one point, I had them all going at the same timing but after final. None of them worked.

Therefore, after all of that, I thought that maybe ability scores needed to be their own separate component from traits. I would be happy to be proven wrong!

Thanks!

edg
 
Back
Top