Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
1. Is there a way to tell in which class you are spending your skill points in?
2. When you replace thing id for a race (say Dwarf for example), then I modify the languages, why does it still default to the original Dwarf languages for validity? |
#1 |
Senior Member
Volunteer Data File Contributor
Join Date: Feb 2009
Location: Virginia
Posts: 364
|
Quote:
Nigel Fogg, aka The Wayfarer |
|
#2 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
I meant from a coding standpoint. Anyways, nevermind on #1, for what I want to do I'm sure I'm not approaching it in the right way. Every solution I've tried so far wants to apply all changes throughout the hero, and I think that is because there is no locked state for the skills, thus making it a problem (things get retroactively applied to skills, it's kind of annoying). If there was a way to know where I spent the skill points (purely in the code) then it would work. I don't think there is a way to tell on a level by level basis. I can do it by class, but so far, I haven't been able to get the one class to cooperate with another class when it comes to how many ranks are being spent. Every class wants to inherit the changes I make in one class. It's frustrating, but I'm sure there is a way.
|
#3 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
Here's another question, regarding making things valid. If I want to make a skill appear red (invalid) is there a way to do that from outside of the skill? I mean, I want to set, say kListen from valid to invalid so that Listen shows up red in the skill list, but with code that is outside of the skill (say in Class).
like panelvalid does, so to speak, but only for the individual skill? |
#4 |
Senior Member
Volunteer Data File Contributor
Join Date: Jun 2010
Posts: 623
|
I answered this from another thread. Search my posts. kValue0 is for the first class.
I assume you have looked at a sheet with a valid and invalid skill and compared the two to see what is different between the two? Last edited by risner; February 25th, 2011 at 01:00 PM. |
#5 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
The method you described won't work, unfortunately. In order to modify kValueX, I have to know by how much, and since there is no tracking in HL on skills spent on each class at each level, there is no way to do this without problems. Believe me, I tried, but I can't tell if you are decrementing or incrementing a skill (to say, add an additional 1 to make the ranks work out) and there is also the option to add a number by double-clicking and entering a number. Remember, the script will run each time the skill is activated (whether by decrement, increment, or entry method). So, how do I tell it what to do. The other option was just to double the actual points spent, but again, no tracking, and I can't double the kValueX, because that becomes exponential. Unless you can see a way to get past this mechanic, and I haven't been able find one, then it just doesn't work. I spent all yesterday evening trying before I gave up on that method. I now have a method that works, and it works fine, I just need to know if I can make the validity testing work. I have looked at the fields and tags, and nothing pops up on it for validity that I can tell.
Last edited by Kendall-DM; February 25th, 2011 at 01:27 PM. |
#6 |
Senior Member
Volunteer Data File Contributor
Join Date: Jun 2010
Posts: 623
|
Maybe I'm still having trouble understanding what you need to happen.
To be clear: kValue0 is a single value. For example: I create a 5th level druid, I put exactly 2 ranks in Concentration and no other skills. Looking on Concentration, I see kValue0 is 2. I don't have any information about when that was taken, I just know it had to have been taken by the Druid. What you asked to do was change from 2 rank spent in Druid class to obtain a cross class skill to 1 rank spent. To do so you need to obtain how many ranks were spent in the class in the skill in question. Then one time, and one time only do one of the following: 1) Determine how many more ranks you need to bump it up 2) Add that many more points spent and let the normal math solve this. I guess you need to know what level this was done? Since the ability only functions on certain levels? If so, then you can't do it without a tracker and manually inputting in the tracker how many times it needs to do it's job. |
#7 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
Ok, technically you can do this. You would have to code each class to replace all its ranks with a new calclulated ranks based on the totals in each class in each relevant skill. So Wizard with kValueX in Speak Languages, for example, would have its ranks modified. I want there to be some warning too, that the ranks are not exceeding the max ranks of a cross-class skill while still costing that of a class skill. You could make it work, no doubt, but its alot of coding. Coding for every class, that needs to check every class index, find the one you want, modify the ranks, replace the ranks, add all the ranks in each class back together, and arrive at the final ranks of the skill. To me, that is over-thinking the problem, and I tried it. It was causing problems, because there are too many inter-dependent structures in the skill system of HL. It was just easier to do the following, I just made eval rules for each base class to determine that classes general skills and that way, it would not apply across the hero. It was the most reasonable way I could conceive that did not require a ton of coding to get the result I wanted. As of now, it gives a validity message when you exceed your max ranks, but it doesn't turn the skill red or the panel red (I can turn the skill panel red, I just can't do it for the individual skill inside the class' eval rules, at least not that I can find). Of course, for this to work, I have to designate that Speak Languages is a class skill for the Wizard, just to get the costing right.
@valid = 1 doneif (#levelcount[Bard] >= 1) ~class skill for Bards. var genRanks as number genRanks = (#totallevelcount[] + 3) / 2 ~max ranks for general skill. if (#skillranks[kSpeakLang] > genRanks) then @message = "Skill " & hero.child[kSpeakLang].field[name].text & " has too many ranks for a general skill." @valid = 0 ~need validity test of Speak Language. ~hero.panelvalid[skills] = 0 ;;panel validity, plus reset if used. endif Now the opposite problem occurs in this model, and I am aware of it. I will still get this warning if I'm in a prestige class and that class has Speak Language as a class skill. I will still be warned I have exceeded my max ranks when as a class skills, my max ranks is actually higher. I can't predict what other classes will need the skill and be excluded from the test, ala Bard above, which has Speak Language as a class skill. But since these are my files, I could just code them as I make any prestige classes to exclude the relevant one with that class skills (thankfully I've ruled in my house rules that only base classes get general skills). Last edited by Kendall-DM; February 26th, 2011 at 08:57 AM. |
#8 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
If anyone knows how I can do a validity test on a skill from within another Editor tab eval rule (not the skill itself), I'm all ears. If it can't be done at all, that would be good to know as well.
|
#9 |
Senior Member
Lone Wolf Staff
Join Date: May 2005
Posts: 13,217
|
Whether a pick is valid or not can only be determined by that pick.
|
#10 |
|
|