• Please note: In an effort to ensure that all of our users feel welcome on our forums, we’ve updated our forum rules. You can review the updated rules here: http://forums.wolflair.com/showthread.php?t=5528.

    If a fellow Community member is not following the forum rules, please report the post by clicking the Report button (the red yield sign on the left) located on every post. This will notify the moderators directly. If you have any questions about these new rules, please contact support@wolflair.com.

    - The Lone Wolf Development Team

Able Learner feat

I am trying to make the able learner feat, but do not know how. Does anyone have this?

My first guess is to look for an adjustment for "more skill points" (if one exists), copy it into a feat, loop on all skills that are not Speak Language and not currently a class skill, and add bonus skill points for each rank in that skill.

That will allow 2 points to be spent (for 1 skill rank) on each skill without showing red. The user will be trusted to not "spread" these half ranks around. You could also enforce even numbers of ranks to fix this issue if you don't trust them.
 
I don't like their suggestion (make all things class skills) and limit the max ranks.

But the last suggestion is a fine solution:
HouNoXMult

Have the Able Learner enable that house rule setting changes the multiplier to 1.0:
Code:
        if (hero.tagis[Settings.HouNoXMult] <> 0) then
          xmult = 1
        else
          xmult = 0.5
          endif

You may also need to verify it does Speak Language correctly, as that still requires the 0.5 multiplier. So you may want to check that they don't have too many ranks in Speak Language if it isn't a class skill.
 
OK, but how do I do this? Do I open the Editor and then place this in a certain tab?

My suggestion didn't work, as it was significantly more difficult in reversing the change to Speak Language. I don't know how to look on classes to see skill points spent per class and what skills they were. So there was no way to reverse the change from 0.5 to 1.0 in multiplier for Speak Language.

So I implemented it in a different way.

Code:
  <thing id="fAbleLearn" name="Able Learner" description="You have a great aptit
ude for learning.\n\nPrerequisite: Human or doppelganger.\n\nBenefit: All skill
ranks cost 1 skill point for you to purchase, even if the skill is cross-class f
or you. The maximum number of ranks you can purchase in a cross-class skill rema
ins the same.\nThis feat does not affect the skill point cost to learn a languag
e or to gain literacy (for a barbarian or other illiterate character).\n\nSpecia
l: This feat may only be taken at 1st level.\n\nNormal: Cross-class skills cost
2 skill points per rank." compset="Feat" uniqueness="useronce">
    <comment><![CDATA[Race.Human works but Race.Doppleganger doesn't

Doesn't handle 1st level only for picking the feat (it should be greyed out if a
bove 1st level.]]></comment>
    <usesource source="srcRaceDes" parent="p35" name="Races of Destiny"/>
    <tag group="Helper" tag="ShowSpec" name="ShowSpec" abbrev="ShowSpec"/>
    <tag group="fCategory" tag="General" name="General" abbrev="General"/>
    <eval phase="PreLevel" priority="5100"><![CDATA[~ If we're disabled, do noth
ing
if (tagis[Helper.FtDisable] <> 0) then
  done
  endif

~ Look through skills, set our # ranks = # points spent.

foreach pick in hero from BaseSkill where "!thingid.kSpeakLang"
 each.field[kUserRanks].value = each.field[kUserPts].value
nexteach]]></eval>
    <prereq message="">
      <validate><![CDATA[@valid = tagis[Race.Human]

~ This is because evidently Doppleganger doesn't register Race.Dopple?
foreach pick in hero where "component.BaseRace"
     if (pos(each.idstring,"rDoppel") = 0) then
          @valid += 1
     endif
nexteach]]></validate>
      </prereq>
    </thing>

This works with the exception of greying itself out if you are not 1st level.
This will be added to the community data set 1.3, so when that comes out you will need to delete your file as you will get a duplicate on the fAbleLearn object.
 
Risner, you can make a feat only available to 1st level characters by setting it's feat category to "Upbringing", and I think the posters question was a bit more basic than that. I believe he was asking how to create the feat.

To NeoFax:
Open the editor, go to the Feats tab. Hit the New (Blank) button in the Lower Left. Name your feat and give it a unique id in the field directly right of the Name. Under that is a big box where you can type the text for your feat.

Now the scripting part. In the upper right there are a bunch of buttons, click on the one that says "Eval Scripts". In the New window set the Phase to PreLevel (it is a drop down menu) and the Priority to 5100. Now in the big main field you will need to copy all the things in risner's code from "if (tagis[Helper.FtDisable] <> 0) then" until the first "nexteach"

Now for the Prereqs. Near the Eval Scripts button there is an Expr Reqs button, click on that and click on the area in the new window where it says "Click to add another expression requirement". The first line is the message that will appear if the user doesn't qualify. The second line is for the Expression. On the second line put:

hero.tagis[Race.Human] <> 0

Don't worry about Dopplegangers for the moment unless you are actually playing one. For some reason a race won't apply its own race tag unless it has been defined in the "Counts As Races" field, which doppleganger has not.

Now save the file and hit the "Test Now" button in the upper left of the editor and the feat should be ready for use. Add it to your character and test it out.
 
feat category to "Upbringing"

Name your feat and give it a unique id in the field directly right of the Name.

defined in the "Counts As Races" field, which doppleganger has not.

I like the code, that was a clever way to handle the problem

Awesome, fixed to be Upbringing. I just didn't remember that category.

NeoFax, try to use the same unique ID so you can just delete the file to get the community one without deleting and re-adding the feat. So use fAbleLearn for unique id.

We should probably fix rDoppel2 to do the counts as race? Since there is a Doppelganger and Greater Doppleganger race? Both count as Doppelgangers? I don't think GD is coded yet, but I didn't search.

If you mean the setting to 1 for 1, I can't take credit. My greps pulled up Guerrilla Warrior (HoB), so the author of that is my inspiration. My original fix (tagging the 1x multiplier house rule) had the unintended side effect of breaking Speak Language (making it also 1x.)

If you mean the Doppelganger search, thanks!
 
HoB feats? That was me then. *shakes head* I can't even remember half of the stuff I have done over the years. I suppose I'm getting old. ;)
 
So... I just tried this implementation as I did not find the feat in the community files yet. It did not work for me.

I created the feat and set the requirements (that worked fine -- only for humans and only at upbringing).

I entered the following in the eval script (Phase: "Pre-Levels (User)" Priority: "5100"):

if (tagis[Helper.FtDisable] <> 0) then
done
endif

~ Look through skills, set our # ranks = # points spent.

foreach pick in hero from BaseSkill where "!thingid.kSpeakLang"
each.field[kUserRanks].value = each.field[kUserPts].value
nexteach

I then added the feat to a character and tried adding cross-class skills. They are still only providing 1/2 rank benefits for each point spent.

I quick HeroLab and restarted it, just in case. Still the same problem.

What did I do wrong?

Thanks.
 
Sorry to resurrect this post.

I wanted to write this feat, but i found difficulties.

I tried to do as posted, and even tried different phases, but even if the kUserRanks field is adjusted correctly, the ranks showed don't change...

Are they hard-coded in or there is another solution?
 
My suggestion would be to copy what Risner posed for code into a blank text file or into an existing user file then save it. One thing I find curious is that it doesn't appear to have made it into the community files (at least not that I can find). That might something we should look into correcting.
 
That's what i did. But... didn't work.

Even if the kUserRanks is correctly updated, that is not reflected in the skills themselves.

I think the total skill value calculation method has changed in a later version (later with respect to Risner), invalidating his solution.

I think there is another field to mess with, or simply KuserRanks is ignored and the skill value is calculated by the program. That would mean trouble..

I have thought adding the (kUserPts - kUserRanks) value to the skill value itself, but i don't know if it will break something else.

Will try this approach if i don't have feedback about it.

Anyway, as i am near completion of the Races of Destiny user data file, will guarantee it will be inserted in my data file.

Back to the work table... :P
 
For now, i have simply made up this solution, but it is not elegant at all...

Code:
var diff as number

if (tagis[Helper.FtDisable] <> 0) then
done
endif

~ Look through skills, set our # ranks = # points spent.

foreach pick in hero from BaseSkill where "!thingid.kSpeakLang"
diff = each.field[kUserPts].value - each.field[kUserRanks].value

~ If the ranks are different from the points spent, we add this difference to the total skill value
if ( diff <> 0) then
   each.field[kModValue].value += diff
endif

nexteach

It works, but it is horrible.
 
Back
Top