Lone Wolf Development Forums  

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

Notices

Reply
 
Thread Tools Display Modes
DarokinB
Member
 
Join Date: Dec 2009
Posts: 33

Old January 8th, 2013, 06:30 AM
Hey all, Its been a while since I posted here. I am trying to add some missing items to HL. I've already added quite a few things: Half fey template, Gray Guard, and about 20 items from the MiC.

One of the ones I am struggling with is the Song of the Heart Feat and the Vest of Legends. Both improve the Bard's Inspire Courage ability. I went through the documentation (which is a little confusing to say the least, I can't seem to find a data structure explanation, similar to MSDN).

After digging a little into the list of class abilities, it seems like each of the Inspire Courage bonuses are unique abilities (i.e. Inspire Courage +1 is one ability, Inspire Courage +2 is another, etc). This suggests the system does not calculate the bonus in any way. Is that correct? If that is true, that suggests I will be unable to modify said bonus without modifying the bard class. Is that also true?

Thanks for the help and good gaming!
DarokinB is offline   #1 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old January 8th, 2013, 06:48 AM
You should be able to do something similar to what the Monk's Belt does. Typically when there are multiple abilities for something like this, there is one base ability that the others add on to. For instance, using the Monk's Belt as an example, you'll notice that it increases the effective level of the character for the purpose of Improved Armor Class as such:

Code:
hero.child[cMnkAC].field[xExtraLev].value = hero.child[cMnkAC].field[xExtraLev].value + 5
When you look at the Monk's special abilities, you'll see that there are 4 other "Improved Armor Class" specials. These trigger when the monk reaches a certain level. By increasing the ExtraLev field as above you effectively trigger these specials to activate. The trick is to figure out which ability is the base one. One way to do that is to look for the one that doesn't have "Upgrade - hide from list" checked.

Hope this helps.

PS. Would you be interested in sharing your work with the community? I've been working on the community files, and can always use some extra hands.
Sendric is offline   #2 Reply With Quote
DarokinB
Member
 
Join Date: Dec 2009
Posts: 33

Old January 8th, 2013, 06:59 AM
Yes, and for the vest of legends, that is perfect. It also improves their level, thanks!

But for the Song of the Heart, it does not increase their level (and so the item and feat would stack), it simply increases the bonuses granted by the Bardic music. For the moment, I fixed this by Bootstrapping a special off the feat, which is named Bardic Music, Improved. Then on the specials list, it shows directly below the Bardic Music ability, to act as a reminder to add 1 to everything. Not every elegant, I would prefer that it improved the bonus automatically, but it will do for now.

And I would love to help. I took a break from using HL for a while to develop my own program for character management. It works fine (Developed in MS Access) its just slow and I am tired of coding it. HL works fine once you create the content. Right now the content I created is stored in one file, so I assume I would need to break it apart. Feel free to email me (my email address is my user name at aol dot com) and let me know what is left to be done, what you can use help with, etc.
DarokinB is offline   #3 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old January 8th, 2013, 09:15 AM
When I create a bard, I don't see anywhere that even tells you what the bonus is (except in the Bard tab under "specials". Shouldn't these be showing up in the specials tab?
Sendric is offline   #4 Reply With Quote
DarokinB
Member
 
Join Date: Dec 2009
Posts: 33

Old January 8th, 2013, 09:39 AM
Correct, and it does. The problem is that when the bard has accrued enough levels to improve it, the bonus doesn't calculate. Instead, the system grants a new ability, Inspire Courage +2, which overrides the +1 in the specials tab. The problem with this method is that it is unclear if there is a way to grant a +1 bonus to the ability.

Although I think I may have a solution. If the item checks for Inspire Courage +1 and then grants Inspire Courage +2 (etc) than it may work. I am going to test it and see how it works. Seems like a long way of approaching it though.

Last edited by DarokinB; January 8th, 2013 at 09:41 AM. Reason: Typos
DarokinB is offline   #5 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old January 8th, 2013, 10:23 AM
Weird. I add 10 levels of Bard, and the only thing in my specials tab is Bardic Knowdlege.

Anyway, another option is you can change the name of abilities. As an example:

Code:
hero.childfound[xLore].field[xBrdMInsC].text = "Bardic Music: Inspire Courage +2"
This changes the name of the special to whatever you want it to be. You can also use variables, like this:

Code:
var bonus as number
bonus = hero.childfound[xBrdMInsC].field[hTotal].value
bonus += 1

hero.childfound[xBrdMInsC].field[xName].text = "Bardic Music: Inspire Courage +" & bonus & ""
I can't speak to whether or not that would come up with the appropriate number, but you get the idea. If it works, you would only have to do it once, which should help. You could also use some formula to determine what your bonus is independent of the hTotal field.
Sendric is offline   #6 Reply With Quote
DarokinB
Member
 
Join Date: Dec 2009
Posts: 33

Old January 8th, 2013, 01:18 PM
I appreciate the help, its taking me a bit to remember everything here. So I tried your first idea after frustratingly giving up on bootstrapping (I know there is a solution there, I just can't find any documentation on how the data is structured).

So, here is what I tried:
Code:
If (hero.pickexist[cBrdMInsC] = 1) then
    hero.childfound[xLore].field[cBrdMInsC].text = "Bardic Music: Inspire Courage +2"
endif

If (hero.pickexist[cBrdMInsC2] = 1 then
    hero.childfound[xLore].field[cBrdMInsC2].text = "Bardic Music: Inspire Courage +3"
endif

If (hero.pickexist[cBrdMInsC3] = 1 then
    hero.childfound[xLore].field[cBrdMInsC3].text = "Bardic Music: Inspire Courage +4"
endif

If (hero.pickexist[cBrdMInsC4] = 1 then
    hero.childfound[xLore].field[cBrdMInsC4].text = "Bardic Music: Inspire Courage +5"
endif
I am getting an error however. It says:
"Syntax error in 'eval' script for Thing 'fSongHeart' (EvalScript '#1') on Line 3
-> Invalid use of a reserved word in a script
DarokinB is offline   #7 Reply With Quote
Aaron
Senior Member
 
Join Date: Oct 2011
Posts: 6,793

Old January 8th, 2013, 05:27 PM
You need to close your parenthesis for the 2nd, 3rd, and 4th conditional statements.
Aaron is offline   #8 Reply With Quote
DarokinB
Member
 
Join Date: Dec 2009
Posts: 33

Old January 8th, 2013, 06:12 PM
Ugh. Typos suck. But sadly it's not the problem. I fixed it and made no difference.
DarokinB is offline   #9 Reply With Quote
Sendric
Senior Member
 
Join Date: Jul 2010
Posts: 3,147

Old January 9th, 2013, 05:29 AM
I think the error has to do with the use of "pickexist". Additionally, I think your field is wrong.

EDIT: Ok, I finally figured out why they weren't showing up in my specials tab (no ranks in perform) so I was able to do some fiddling to figure out what might work best. This may not be the most efficient way of doing it, but it does seem to work pretty well. Try this:

Code:
if (hero.childfound[cBrdMInsC4].tagis[Helper.ShowSpec] = 1) then
    hero.childfound[xBrdMInsC].field[xName].text = "Bardic Music: Inspire Courage +5"

elseif (hero.childfound[cBrdMInsC3].tagis[Helper.ShowSpec] = 1) then
    hero.childfound[xBrdMInsC].field[xName].text = "Bardic Music: Inspire Courage +4"

elseif (hero.childfound[cBrdMInsC2].tagis[Helper.ShowSpec] = 1) then
    hero.childfound[xBrdMInsC].field[xName].text = "Bardic Music: Inspire Courage +3"

elseif (hero.childfound[cBrdMInsC].tagis[Helper.ShowSpec] = 1) then
    hero.childfound[xBrdMInsC].field[xName].text = "Bardic Music: Inspire Courage +2"
endif

Second Edit:

This way looks like it might be a more efficient use of code. It also demonstrates the use of the variable:

Code:
Post-levels 10200

if (hero.childfound[cBrdMInsC].tagis[Helper.ShowSpec] = 1) then

  var bonus as number

  bonus = round(hero.child[xBrdMInsC].field[Value].value/5 + 1, 0, 1)

  hero.childfound[xBrdMInsC].field[xName].text = "Bardic Music: Inspire Courage +" & bonus & ""
endif
Note the timing. It has to take place after Post-Levels 10100 (when the value field is determined).

Last edited by Sendric; January 9th, 2013 at 06:07 AM.
Sendric 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 06:58 PM.


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