View Single Post
Mathias
Senior Member
Lone Wolf Staff
 
Join Date: May 2005
Posts: 12,558

Old March 8th, 2009, 08:57 AM
The first step is to figure out how HL prevents you from multiclassing back into monk. So, add a level of monk, and look for any tags that seem appropriate. Go to the develop menu, make sure "enable data file debugging" is checked at the top, then go to "floating info windows" "show selection tags", then find Monk in that list. You'll find that for classes in d20, there is one class helper, which will always start with "cHelp", and one class level per level. Everything but the HD and skill points is on the class helper, so you want to look at its tags.

Now, look through that list until you've found the tag that prevents multiclassing, which is Helper.NoMultiAdv. So, what we'll need to do is delete Helper.NoMultiAdv

Here's the simple delete statement:
Code:
perform hero.childfound[cHelpMnk].delete[Helper.NoMultiAdv]
Run that early on (UserFirst, 100 should be fine), and monks can now multiclass freely.

Now, for your feat, you'll have set "Select From" to "Classes", so, in yuor script, you'll want to start by going to any other feat that has a selector, and borrow some code.

From spell focus:

Code:
 
~ If we're disabled, do nothing
if (tagis[Helper.FtDisable] <> 0) then
done
endif
call fTargetFoc
if (state.isfocus = 0) then
done
endif
what that does is that it calls the procedure fTargetFoc, which sets the focus equal to the thing that the user has selected. Then, if nothing has been selected, the done statement exits the script.

Now to check what classes we have:

Code:
 
var class as string
class = "Classes." & focus.idstring
 
if (hero.tagcountstr[class] + #levelcount[cMonk] = #totallevelcount[] - tagcount[Classes.Template] - tagcount [Classes.Race]) then
  perform hero.childfound[cHelpMnk].delete[Helper.NoMultiAdv]
  endif
What's happening in all that complexity:
First, since we don't know what class was taken, we'll get it's id, and create the right sort of string to search with. "Classes.cFighter" might be a string that was placed into our class variable. Next, add the levels in that class to our monk levels, and see if they're equal to our total level (minus any template or racial levels we might have) - if they're equal, we can't have taken a third class, and we're okay to multiclass.

Oh boy. I just thought my logic through further. It is legal to have a third class, if it was taken before monk was, or if the feat was taken twice. At this point, figuring out how to allow those would take hours. Just go back to the top of this post, get the one line delete statement. All this feat will do is allow monks to multiclass freely. That's close enough.
Mathias is offline   #2 Reply With Quote