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).