Lone Wolf Development Forums  

Go Back   Lone Wolf Development Forums > Hero Lab Forums > HL - d20 System

Notices

Reply
 
Thread Tools Display Modes
Dastir
Member
 
Join Date: Sep 2008
Posts: 48

Old October 12th, 2009, 11:57 AM
I would like to implement the Able Learner feat from Races of Destiny. This feat makes any skill, whether cross class or not, cost only 1 skill point per rank. However, the maximum rank for cross class skills remains unchanged.

Is this possible?

If so, how?

If it is not, then at the very minimum, I would like to make it so every single skill is considered a class skill for the character, and I will worry about whether or not the max ranks are correct manually. What is the easiest way to go about this besides assigning the ClassSkill.skillid tag to the hero for every single skill in the game. It feels like a foreach loop to me, but I have no idea what pick to use for the basis of the loop.

Thanks in advance...
Dastir is offline   #1 Reply With Quote
Lawful_g
Senior Member
Volunteer Data File Contributor
 
Join Date: Mar 2007
Posts: 1,245

Old October 12th, 2009, 12:27 PM
I had a similar question a couple years ago, and got this response from Colen:

Lawful_g wrote:
>
>
> Wow, thanks, that is just about exactly what I was trying to do. Now a
> second question, about a related ability. The other subrace of this
> people gain an ability called "Jack of all trades, which makes all
> skills class skills for all classes, but limits the maximum ranks taken
> in any skill as though they were cross class (level + 3 then divided by
> 2). Is there a way to script such a cap on skill ranks taken?


Ah, I like the hard ones

So there are two things that need to be done here:

1) Make all skills class skills

2) Enforce a maximum rank limit on each skill

We'll tackle 1) first, since we obey the laws of numbers on these forums.


Each skill has a tag that indicates to the hero that it's a class skill.
So we need to iterate through all skills, and tell them to forward their
tags to the hero.

------
~ Loop through all skills
var result as number
foreach pick in hero where "component.BaseSkill"

~ Tell each skill to forward its class skill tag to the hero
result = each.forward[ClassSkill.?]
nexteach
------

Do this during the First phase and voila, each skill is now a class skill.


Now we need to enforce a maximum rank limit on each skill. To do this,
we'll add an "eval rule" to the ability. We can't directly set the
maximum rank of the skills themselves, but we can cause an error if any
of them go too high.

Add an eval rule with the message "Skill rank too high", any time during
the Validation phase. The rule should loop through all the skills,
making sure that each of them abides by some sort of limit. If it finds
one that has more ranks than the limit, it sets the error message
appropriately and ends.

-------
~ Loop through all skills
var result as number
foreach pick in hero where "component.BaseSkill"

~ If this skill has more than 5 ranks, that's a problem
if (each.field[kUserRanks].value > 5) then

~ Change the error message to refer to this skill
@message = "Skill " & each.field[name].text & " has too many ranks!"

~ We've found an invalid skill, so we don't need to go on.
done
endif

nexteach
-------


Those should do the trick for you.




You'll need to modify the script a bit so that it only enforces the cap on skills that are cross class skills and calculates the cap appropriately though.
Lawful_g is offline   #2 Reply With Quote
Dastir
Member
 
Join Date: Sep 2008
Posts: 48

Old October 14th, 2009, 04:29 AM
I forgot to say thank you...how rude of me.

Thanks!
Dastir is offline   #3 Reply With Quote
Dastir
Member
 
Join Date: Sep 2008
Posts: 48

Old October 16th, 2009, 07:55 AM
Actually figured out how to make it work exactly the way it should.

Once I discovered the House Rule "No Cross-Class Skill Penalty", which does exactly the same thing, it was a simple matter of breaking out the debug windows to see what was being added to the character.

The solution is one line of code:

perform hero.assign[Settings.HouNoXMult]

Dastir is offline   #4 Reply With Quote
Reply

Thread Tools
Display Modes

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 07:34 PM.


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