• 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

Custom text and Selection boxes....

ShadowChemosh

Well-known member
I could use some help from LawfulG or ShadowChemosh.

I've got a couple gating issues that are preventing me from integrating my changes:

1) I can't seem to find the timing to modify a Special (in the special tab) and have the change print on the character sheet? (This is blocking me adding the Druid changes to the PHB 3.5 Wild Shape in D20 data set.)
Hmm have you tried the RENDER phase as I remember I had an issue similar and only by going to the RENDER phase did it finally work.

2) How do you set a default value to a class special in the class tab that has an option to choose? It defaults to "-No Selection-". I need to make an if that "field[usrChosen1].ischosen = 0" then I need to choose for the user. I don't know how. The selection is based on a User. tag?
I know some feats like Weapon Focus can do this, or at least in Pathfinder, but when I tried it for Improved Natural Attack I could not get it to work. So this maybe only possible with special settings in the structural files.

3) Should we be directing bug reports to the WolfLair bug report thread? Or to a specific thread for community stuff?
We have a thread that is specifically made for bug reports it is sticked to the top of this forum.
 
Last edited:
1) Here is an example feat demo:

Code:
  <thing id="fmessyes" name="Make a mess" description="test, you can delete" compset="Feat">
    <tag group="Helper" tag="ShowSpec"/>
    <eval phase="GlobalTest" priority="12000" index="2"><![CDATA[
field[livename].text = "Testing Global Tags/12000"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="PreLevel" index="3"><![CDATA[
field[livename].text = "Pre-Levels/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="UserPreLv" index="4"><![CDATA[
field[livename].text = "Pre-Levels Users/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="Level" index="5"><![CDATA[
field[livename].text = "Levels/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="PostLevel" index="6"><![CDATA[
field[livename].text = "Post-Levels/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="UserPostLv" index="7"><![CDATA[
field[livename].text = "Post-Levels Users/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="UserPreAt" index="8"><![CDATA[
field[livename].text = "Pre-Att Users/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="PreAttr" index="9"><![CDATA[
field[livename].text = "Pre-Att/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="Attr" index="10"><![CDATA[
field[livename].text = "Attributes/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="PostAttr" index="11"><![CDATA[
field[livename].text = "Post-Att/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="UserPostAt" index="12"><![CDATA[
field[livename].text = "Post-Att Users/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="UserFinal" index="13"><![CDATA[
field[livename].text = "Final Phase Users/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="Final" index="14"><![CDATA[
field[livename].text = "Final Phase/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="Validation" index="15"><![CDATA[
field[livename].text = "Validation/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="Render" index="16"><![CDATA[
field[livename].text = "Render/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    <eval phase="First"><![CDATA[
field[livename].text = "First/100"

field[xSumm].text = field[livename].text

field[CustDesc].text = field[xSumm].text]]></eval>
    </thing>

It modified the feat tab "livename" at Pre-Levels/100 and modifies the Specials tab and printout "livename" at Render/100

It doesn't modify the description on the Feat tab or printout, but does on the Specials tab at Render/100.
 
2) I know some feats like Weapon Focus can do this, or at least in Pathfinder, but when I tried it for Improved Natural Attack I could not get it to work. So this maybe only possible with special settings in the structural files.

I opened Pathfinder and added INArmor, INAttack, and Weapon Focus.
INAttack and WF both show "-No Selection-" so they don't do what I need.

Let me try to phase it again.
I need to make an object that has a "-No Selection-" setting, but instead of being a herolab.exe "-No Selection-" it is actually another object. I need code to detect the herolab.exe "-No Selection-" (which is usrChosen1 set to 0) and if set to 0 then set it to the object instead.

The reason for this, is with my new Druid Wild Shape, if you have not made a selection you lose access to things you lose (in D20) when Wild Shaping (such as Darkvision, etc.) This is confusing to people who are not aware of why they don't have Darkvision when they should.
 
Will this work? (this example uses Cleric as the default class selection)

Code:
if (field[usrChosen1].ischosen = 0) then
  perform hero.childfound[cHelpClr].setfocus
else
  perform field[usrChosen1].chosen.setfocus
  endif
 
doneif (state.isfocus = 0)
 
~now do things with the class you've set the focus to.

Personally, I don't normally bother with that - HL will be reporting an error message until the user fills something into the menu, displaying that menu in red, and there's no way to go back to "-No Selection-" once you've selected something, so ischosen = 0 is a very temporary state.
 
I opened Pathfinder and added INArmor, INAttack, and Weapon Focus.
INAttack and WF both show "-No Selection-" so they don't do what I need.
Just in example if you pull up the Worg from Pathfinder it pre-sets the Skill Focus feat to Perception. In the xml you find that the feat has the tag Target.skPercep. That's the only thing I have seen that allows for pre-selection of a drop down box. Don't even know for sure it will work with a script setting it....

Will look at the rest of what you have in a bit later.
 
there's no way to go back to "-No Selection-" once you've selected something

That is exactly what I'm trying to avoid:
The user being set to "-No Selection-"

Because it is invalid and messes everything else up.

Specifically, I have a Class Special (cDrdWild1) that I replace.
In this Class Special, I have these settings:
Select From ... -None-
Custom Expression User.WSF?
Restrict First List To.. All Things

I have Templates all with User.WSFblah unique assignments.
I have a bootstrap for all templates in this Class Special.
A worker object looks to see what is chosen and if "-No Selection-" is chosen, it malfunctions. I have a template for "No Form" that is needed to be applied. So I need to force a choice and prevent the user from leaving a new druid in "-No Selection-" mode.

If that isn't set to "No Form" the worker object disables Darkvision and anything else gone while wild shaped.

I guess I could work around this by adding the script code from the "No Form" Special to all the 5 scripts working on the Wild Shape Worker Object?
But that is duplicating a bunch of lines of code in 5 different scripts to bail out if not set.

What I need is some way in the script to detect when not set (I have this) and then force a selection (like the Worg does with a tag) but in a script?
 
I tried:
if (field[usrChosen1].ischosen = 0) then
perform hero.childfound[xNoForm].setfocus
endif

It still says "-No Selection-"
 
OK, you want no selection as a way to turn off the ability.

It sounds like you've already got a "no selection" special made, and you're getting errors once its selected, because it's not a template.

In that case, you'll need to make sure you've selected something, and make sure that what you've selected is a template, before you start looking up fields that will only exist on a template:

Code:
if (field[usrChosen1].ischosen <> 0) then
  if (field[usrChosen1].chosen.tagis[component.BaseTempl] <> 0) then
    ~apply all your effects
    endif
  endif
 
OK, you want no selection as a way to turn off the ability.

It sounds like you've already got a "no selection" special made, and you're getting errors once its selected, because it's not a template.

No, sadly the opposite.

My "no selection" Special is working fine, it is just if the user leaves the Class Special screen with the .exe "-No Selection-" and my special not selected, he gets strange behaviour he may not understand and it may not be very obvious that the red ! pointing to the class special screen is the fix.

I can code the no selection fix you just post, but to do so I need to add that if along with the several lines of "turn off this stuff" to 5 Eval Scripts on an object. That is about 30 lines duplicated. It is not the preferred method of solving this problem. I'm sorry I'm having trouble describing it. Let me walk it through again:

1) New Portfolio
2) Add 5 Druid levels
3) Leave the Druid panel "i" (Special Abilities) panel showing Wild Shape at "-No Selection-" instead of setting something.
4) Set race to something with Darkvision
5) Notice Darkvision special is disabled and ponder why?

Fix:
6) Go into Druid tab -> "i" Special Abilities -> Wild Shape -> select "No Form" which is a special that cleans up any problems that could result.
 
Why does it need to be in 5 different scripts?

If your first script assigns some tag or changes a variable like Value (if you're not using it for anything else), can you turn the on/off test on the later scripts into one line?

doneif (field[Value].value = 1)
 
Why does it need to be in 5 different scripts?

Maybe it doesn't and I'm just confused.

The special selects between things (Templates and one Special) that do different things but all have that User.WSF? tag.

The scripts on the Special perform what is needed to be done to disable everything that came from Wild Shape (including the worker object.) If the special hasn't been chosen yet, then it isn't active (it is unbootstrapped) and only the worker is active.

If I'm going to dual state check, then I need to add the code from the Special to the worker object to shutdown itself and all other objects by foreach-ing over BaseSpec.
 
Ok, I have an acceptable solution to the not chosen problem.
Post an error via an Eval Rule if nothing is chosen.
 
Risner said:
1) I can't seem to find the timing to modify a Special (in the special tab) and have the change print on the character sheet? (This is blocking me adding the Druid changes to the PHB 3.5 Wild Shape in D20 data set.)
Hmm have you tried the RENDER phase as I remember I had an issue similar and only by going to the RENDER phase did it finally work.

So this is the only issue.
The new HL (exe) will have a better character sheet output, maybe I just wait for that to be released?

The code I have for the community dataset (that I'd hoped to put into v1.3) is going to have to wait. There are two issues related to this that block it:

a) Without a way to modify the CustDesc/xSumm text of a Druid for output to the character sheet, you can't play via a printed (PDF or paper) character.

b) I started to consolidate similar abilities like Death Attack into one special, and used updated CustDesc/xSumm to hand edit the text for the thing using it. These changes are not printed, the printout takes the original text.
 
Since the scripts that generate text for display are very spread out, and haven't been properly consolidated, you'll need to specify exactly where the problems are, because the handling of the same thing could vary from place to place.

As a heads up, I'd rather do the consolidations, then make sure I've caught everything, rather than catching all the current issues, then consolidating, so I'm sorry about this.
 
Since the scripts that generate text for display are very spread out, and haven't been properly consolidated, you'll need to specify exactly where the problems are, because the handling of the same thing could vary from place to place.

As a heads up, I'd rather do the consolidations, then make sure I've caught everything, rather than catching all the current issues, then consolidating, so I'm sorry about this.

I think you are talking about two things in this post:
* The 12 "Racial Skill Bonuses" Specials when v1.2 Community Set installed
* The generated text for display

I'm not aware of any dups in the d20 base data, but there may be some. Most of the things that dup are in the community set, for instance the v1.2 set has the following with 3 or more dups:
3 Fog Cloud
3 Runestaff - {i}Fireball{/i}
3 Runestaff - {i}Shatter{/i}
3 Suggestion
4 Alternate Form
4 Control Weather
4 Natural Spellcasting
10 Spell Like Abilities
12 Racial Skill Bonuses

The display seems to ignore changes made to text when displaying on the printout. For example a 20th level Druid printed character says
Wild Shape (5/day) (Su)
You may turn into an Animal once per day.
All the live changes to xSumm and/or CustDesc are not printed, it simply takes the value in the data set files.
 
Back
Top