Member
Join Date: Dec 2009
Posts: 33
|
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! |
#1 |
Senior Member
Join Date: Jul 2010
Posts: 3,147
|
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 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. |
#2 |
Member
Join Date: Dec 2009
Posts: 33
|
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. |
#3 |
Senior Member
Join Date: Jul 2010
Posts: 3,147
|
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?
|
#4 |
Member
Join Date: Dec 2009
Posts: 33
|
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 |
#5 |
Senior Member
Join Date: Jul 2010
Posts: 3,147
|
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" 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 & "" |
#6 |
Member
Join Date: Dec 2009
Posts: 33
|
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 "Syntax error in 'eval' script for Thing 'fSongHeart' (EvalScript '#1') on Line 3 -> Invalid use of a reserved word in a script |
#7 |
Senior Member
Join Date: Oct 2011
Posts: 6,793
|
You need to close your parenthesis for the 2nd, 3rd, and 4th conditional statements.
|
#8 |
Member
Join Date: Dec 2009
Posts: 33
|
Ugh. Typos suck. But sadly it's not the problem. I fixed it and made no difference.
|
#9 |
Senior Member
Join Date: Jul 2010
Posts: 3,147
|
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 Last edited by Sendric; January 9th, 2013 at 06:07 AM. |
#10 |
|
|