Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - Pathfinder Roleplaying Game

Notices

Reply
 
Thread Tools Display Modes
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old January 9th, 2018, 07:55 PM
Really sorry I think you may have to wait for Mathias or Aaron I can't see why its doing what its doing.

Just a stupid question you have nothing the "containerreq" section for the talent do you? Maybe for one last check can you post the full XML for this talent that is causing the issue?

Hero Lab Resources:
Pathfinder - d20pfsrd and Pathfinder Pack Setup
3.5 D&D (d20) - Community Server Setup
5E D&D - Community Server Setup
Hero Lab Help - Hero Lab FAQ, Editor Tutorials and Videos, Editor & Scripting Resources.
Created by the community for the community
- Realm Works kickstarter backer (Alpha Wolf) and Beta tester.
- d20 HL package volunteer editor.
ShadowChemosh is offline   #11 Reply With Quote
TheIronGolem
Senior Member
 
Join Date: Feb 2015
Posts: 676

Old January 9th, 2018, 08:00 PM
Huh, weird. I even tried setting the bootstrap condition to "1=2" to ensure the talent would never go live. Same error.

EDIT: Oops, didn't see this:
Quote:
Originally Posted by ShadowChemosh View Post
Just a stupid question you have nothing the "containerreq" section for the talent do you? Maybe for one last check can you post the full XML for this talent that is causing the issue?
Couldn't hurt! And nope, no containerreq. Come to think of it I'm not sure I've ever even used one of those.
Code:
  <thing id="sopTlCreGD" name="Greater Destroy" description="Increase the amount of damage dealt when you use your destroy ability to 1d6 + your caster level." compset="SoPTalent" summary="You do more damage with your destroy ability" uniqueness="useronce">
    <fieldval field="abValue" value="6"/>
    <fieldval field="abValue2" value="1"/>
    <usesource source="pDDSSoP"/>
    <tag group="SoPSphere" tag="Creat"/>
    <tag group="SoPTlClass" tag="Talent"/>
    <tag group="SoPBanDesc" tag="CreAlter"/>
    <tag group="Helper" tag="SpecUp"/>
    <eval phase="PostLevel" priority="5000"><![CDATA[
      ~ Stop if we're disabled
      doneif (tagis[Helper.SpcDisable] <> 0)

      ~ Find the Destroy ability
      perform hero.childfound[sopTlCreDs].setfocus
      doneif (state.isfocus = 0)

      ~ Replace die size, swap out CL progression tag
      focus.field[abValue2].value = maximum(focus.field[abValue2].value,field[abValue].value)
      perform focus.tagreplace[SoPAbV3Sc.1_2CL,SoPAbV3Sc.1_1CL]

      ~ Update description of Destroy
      #appenddesc[sopTlCreDs, "{b}" & field[thingname].text & ":{/b} Increase the amount of damage dealt when you use your destroy ability to 1d6 + your caster level."]]]></eval>
    </thing>

Last edited by TheIronGolem; January 9th, 2018 at 08:08 PM.
TheIronGolem is offline   #12 Reply With Quote
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old January 9th, 2018, 08:19 PM
Quote:
Originally Posted by TheIronGolem View Post
Huh, weird.
LOL I give you points cause I can not currently see anything wrong. This should not be acting this way.

That talent/Thing looks really normal and you are not doing anything that special in the script. Its nice clean code don't get me wrong. But nothing in it should be causing this.........

Hero Lab Resources:
Pathfinder - d20pfsrd and Pathfinder Pack Setup
3.5 D&D (d20) - Community Server Setup
5E D&D - Community Server Setup
Hero Lab Help - Hero Lab FAQ, Editor Tutorials and Videos, Editor & Scripting Resources.
Created by the community for the community
- Realm Works kickstarter backer (Alpha Wolf) and Beta tester.
- d20 HL package volunteer editor.
ShadowChemosh is offline   #13 Reply With Quote
Aaron
Senior Member
 
Join Date: Oct 2011
Posts: 6,793

Old January 10th, 2018, 07:21 AM
Code:
    <prereq message="This ability (or an equivalent) has already been added to the hero.">
      <match><![CDATA[
        thing.useronce
        ]]></match>
      <validate><![CDATA[
        ~ If this is a pick, we're valid
        validif (@ispick <> 0)

        ~ Otherwise, see if the identity tag for this thing appears in the
        ~ "HasFeat" group on the Hero. If it does, we already have this feat,
        ~ so we don't need another copy
        if (altthing.tagis[component.BaseFeat] <> 0) then
          @valid = !altthing.tagmatch[thingid,IsFeat,current]
        else
        ~if we're not a feat, perform the same check using the HasAbility group
          @valid = !altthing.tagmatch[thingid,Ability,current]
          endif
        ]]></validate>
      </prereq>
That's the code for the pre-req. I would say check you custom abilities you've added, see if any of them have the same Ability tag as the one you want to add there. If so, I assume it would be for the purposes of meeting the same pre-reqs as the other, but if that is the case you should be useing HasAbility tags. Although there is a mismatch between the note and code there... Maybe it switched recently? I will look into it.
Aaron is offline   #14 Reply With Quote
TheIronGolem
Senior Member
 
Join Date: Feb 2015
Posts: 676

Old January 11th, 2018, 09:38 AM
Quote:
Originally Posted by Aaron View Post
That's the code for the pre-req. I would say check you custom abilities you've added, see if any of them have the same Ability tag as the one you want to add there. If so, I assume it would be for the purposes of meeting the same pre-reqs as the other, but if that is the case you should be useing HasAbility tags. Although there is a mismatch between the note and code there... Maybe it switched recently? I will look into it.
Thanks, Aaron. I looked carefully through all my own code and found nothing that would forward Ability.? tags or assign them to the hero/container. But in order to fully rule out any problem with the talent component I decided to do another experiment.

I started by creating a bare-bones component that has no fields, no tags, no scripts, and no other components in its compset. I also made a single Thing with this component (again, no tags/scripts) and boostrapped it from a class ability with an impossible condition (1=2)

Code:
	  <component
    id="SoPTEST"
	name="test"
	autocompset="yes"
	hasshortname="no"
	ispublic="yes">
	</component>
...
<thing id="SoPtest" name="test thingy" compset="SoPTEST"></thing>
After compiling and reloading, I confirmed that the SoPtest pick existed, but wasn't live. There was no Ability.SoPtest tag on the hero. That's not surprising, of course, because there's no other component in the SoPTEST compset. So I added Ability to the compset:

Code:
	  <component
    id="SoPTEST"
	name="test"
	autocompset="no"
	hasshortname="no"
	ispublic="yes">
	</component>

    <compset
    id="SoPTEST">
    <compref component="SoPTEST"/>
    <compref component="Ability"/>
	</compset>
Again, there's nothing happening in the component or in any Thing from that component.

But this time, the hero had the Ability.SoPtest tag. So I'm guessing that the tag is being forwarded/assigned somewhere from the Ability component, but (because this does not happen with feats), this forwarding/assignment must be preventable by means I do not yet know.

I guess I could have a script that loops through talents and deletes Ability tags from the hero if the corresponding pick isn't live, but that feels pretty hacky and prone to false positives.
TheIronGolem is offline   #15 Reply With Quote
TheIronGolem
Senior Member
 
Join Date: Feb 2015
Posts: 676

Old January 12th, 2018, 08:38 AM
Here's something else that confuses me: If I test the bootstrapped talent with "hero.childlives[talentID]", this always returns 1, indicating that the talent is indeed live. This happens even if the bootstrap has an impossible condition, and without regard to whether the test occurs before or after the bootstrap condition is scheduled. The only way childlives will fail is if I remove the bootstrap. And yet the talent doesn't act as if it is live unless the boostrap conditions are met (apart from forwarding its Ability tag).

Unfortunately this means my workaround of "delete the Ability tag if the talent isn't live" isn't going to be viable.
TheIronGolem is offline   #16 Reply With Quote
Colen
Senior Member
Lone Wolf Staff
 
Join Date: Dec 2008
Posts: 4,690

Old January 12th, 2018, 12:09 PM
Quote:
Originally Posted by TheIronGolem View Post
Here's something else that confuses me: If I test the bootstrapped talent with "hero.childlives[talentID]", this always returns 1, indicating that the talent is indeed live. This happens even if the bootstrap has an impossible condition, and without regard to whether the test occurs before or after the bootstrap condition is scheduled. The only way childlives will fail is if I remove the bootstrap. And yet the talent doesn't act as if it is live unless the boostrap conditions are met (apart from forwarding its Ability tag).

Unfortunately this means my workaround of "delete the Ability tag if the talent isn't live" isn't going to be viable.
I just did a simple test with this in the sample game system:

Code:
    <bootstrap thing="abMarksman">
      <containerreq phase="Initialize" priority="1000">FALSE</containerreq>
      </bootstrap>

    <eval index="1" phase="Initialize" priority="500"><![CDATA[
      debug hero.childlives[abMarksman]
      ]]></eval>
    <eval index="2" phase="PreTraits" priority="500"><![CDATA[
      debug hero.childlives[abMarksman]
      ]]></eval>
Script 1 runs before the bootstrap container test, script 2 runs after.

Right after the pick is added, script 1 prints "1", script 2 prints "0" - this happens because the pick is assumed to be live until the live test is actually run. After that, both scripts print "0". So the basics of this functionality seem to be working.

Are you sure there's not another copy of the pick on the hero that is live? If that's happening, it will make childlives return 1.

If that's not causing it, can you package up your data files and put them on Dropbox (or a similar service) so I can download them and see what's causing it? If not, you can email them to me at colen@wolflair.com.

Hope this helps!
Colen is offline   #17 Reply With Quote
TheIronGolem
Senior Member
 
Join Date: Feb 2015
Posts: 676

Old January 12th, 2018, 08:47 PM
Quote:
Originally Posted by Colen View Post
Right after the pick is added, script 1 prints "1", script 2 prints "0" - this happens because the pick is assumed to be live until the live test is actually run. After that, both scripts print "0". So the basics of this functionality seem to be working.
Ah, okay, I didn't realize that. So that's one less thing to confuse me at least.

Quote:
Originally Posted by Colen View Post
Are you sure there's not another copy of the pick on the hero that is live? If that's happening, it will make childlives return 1.
I'm 99% sure there's no other instance of the pick loading anywhere. Its thing ID doesn't turn up in any of the "show selection..." debug menus unless the class archetype I'm developing is present on the hero.

Quote:
Originally Posted by Colen View Post
If that's not causing it, can you package up your data files and put them on Dropbox (or a similar service) so I can download them and see what's causing it? If not, you can email them to me at colen@wolflair.com.
Sent!
TheIronGolem is offline   #18 Reply With Quote
Colen
Senior Member
Lone Wolf Staff
 
Join Date: Dec 2008
Posts: 4,690

Old January 16th, 2018, 08:05 AM
To update everyone awaiting the exciting conclusion of this thread - childlives is working as expected, but TheIronGolem pointed me towards another bug in Hero Lab that we will be fixing soon. TIG has a workaround that will resolve the issue until the bugfix comes out.
Colen is offline   #19 Reply With Quote
ShadowChemosh
Senior Member
Volunteer Data File Contributor
 
Join Date: Jan 2010
Location: Chicago, IL (USA)
Posts: 10,729

Old January 16th, 2018, 08:13 AM
Quote:
Originally Posted by Colen View Post
To update everyone awaiting the exciting conclusion of this thread
I was!

Thanks for the update Colen!

Hero Lab Resources:
Pathfinder - d20pfsrd and Pathfinder Pack Setup
3.5 D&D (d20) - Community Server Setup
5E D&D - Community Server Setup
Hero Lab Help - Hero Lab FAQ, Editor Tutorials and Videos, Editor & Scripting Resources.
Created by the community for the community
- Realm Works kickstarter backer (Alpha Wolf) and Beta tester.
- d20 HL package volunteer editor.
ShadowChemosh is offline   #20 Reply With Quote
Reply

Thread Tools
Display Modes

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 02:49 AM.


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