Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
I have two main things in 3.5 that I wish to modify, but for the life of me I can't find where the original things are. So, I'm asking the community for some help. Here goes.
I want to modify the attack bonuses from attributes so that they are one-half what they currently are. For example, an 18 Strength normally gives a +4 to your attack, but in my homebrew it only supplies +2 (half as much). My rule is thus, all bonuses to attack values are halved, rounded down, but at least providing a +1 if you have a bonus (so that 12-13 range still gives +1). Notice this has no effect on penalties, only the bonuses. So I need to 1) code a conditional into the attack bonus calculations, and 2) adjust those bonuses appropriately. Any help for where (or if) I can do that would be appreciated. Secondly, I have a modified skills so that base classes have class skills, cross-class skills, and general skills. The class skills and cross-class skills work normally, but my general skills are bought like class skills, but are limited to the max ranks of a cross-class skill. Any clues how I can implement that would be appreciated. I know I can define general skills in the base classes, just not sure how to implement them code wise (again, I seem to have trouble finding where exactly the system code does its thing). I'm familiar with XML, but not fluent (I only just learned the basics this past fall). I am a programmer, so any help won't be too far over my head. Lay it on me. Thanks. |
#1 |
Senior Member
Volunteer Data File Contributor
Join Date: Mar 2007
Posts: 1,245
|
For #1 you could either recreate each of the classes with a special to do this, or and I just thought of this so I don't know that it will work, make a single adjustment for the in play tab.
For this adjustment, if it is clicked, its script: A - detects the hero.child[aSTR].field[aModBonus].value B - If negative, do nothing, done C - If positive, subtract that value from the hero.child[Attack].field[tAtkMelee].value D - Halve and round down the aModBonus value, minimum 1 E - Add that number back into the tAtkMelee field For general skills, it sounds like you want to do something similar to the Jack of All Trades gnome racial special I made. Look at this forum post http://forums.wolflair.com/showpost....6&postcount=52 . Obviously not the exact same thing, the relevant parts are giving 1 rank for cross class skills and enforcing an error if more than CC ranks are applied. |
#2 |
Senior Member
Volunteer Data File Contributor
Join Date: Mar 2007
Posts: 1,245
|
Something to keep in mind is phase and priority is paramount. #1 should either be late in the Attributes phase or more likely, early in the Post Attributes phase.
For the linked forum post Colen set the limit as "if we have more than 5 ranks", but you'll have to define what the current CC max rank is in the script and set that value in place of the 5. |
#3 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
Quote:
If I do redo the classes, is it possible to remove the old classes or overwrite them? Or does it matter, since mine will have the same names with different unique ids? |
|
#4 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
Just thought of another complication. Well, not a complication, something I'd like to do that I can do manually if necessary. Armors are house ruled in my game based on a percentage of the character's Dexterity. *grumble grumble*
I've been delving into the d20 XML files, and I can see places where I can make simple changes. However, the calculated changes are nowhere to be found there, so I'm wondering where that's being done at. If it's internal, then I can't do anything about that, but being that Hero Lab is highly modifiable, as it shows with its Savage World example of a whole new game system, I don't see why it should be internal. Something in the d20 files has to be scripting the calculation, I just can't find it. I would like to do what Savage World is doing, as there is a specific example of calculating the attack values, but where that is located in the d20 files is a mystery. |
#5 |
Senior Member
Volunteer Data File Contributor
Join Date: Mar 2007
Posts: 1,245
|
Sorry, I misspoke. While I said In Play, I meant the Adjustment Tab. You can add a new Condition in the editor that when checked would do the things I listed.
If you are doing all classes anyway then you can just put the script into a Unique Special bootstrapped to each class. Yes, you can have your new classes replace the old ones. Look to the right side of the editor and you can see the "Replaces Thing ID" field. Enter the replaced things unique ID there to have your new one supercede the old. Answer your other questions later. Late for a meeting. |
#6 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
Ok, I shall try that. Not too keen on the character class adjustment, but if worst comes to worst, I'll try that as well. My script comes out something like:
if (hero.child[aSTR].field[aModBonus].value > 0) then hero.child[Attack].field[tAtkMelee].value -= hero.child[aSTR].field[aModBonus].value var temp_mod as number temp_mod = round (hero.child[aSTR].field[aModBonus].value / 2, 0, -1) temp_mod = maximum (temp_mod, 1) hero.child[Attack].field[tAtkMelee].value += temp_mod endif With another script to cover Dexterity and Ranged attacks. I set it Post Attribute, but I haven't yet tested it. Again, I feel that there should be an easier way to do this right inside the XML code. Last edited by Kendall-DM; January 14th, 2011 at 09:33 PM. |
#7 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
Bah, seems in order to change what I want in the d20 files, I would have to do a whole recreation. I certainly don't want to do that. But without the skeleton files, which according to the documentation is where you set up all the internal calculations, I can't seem to change the things I want (I'm actually editing the XML files directly and compiling them). Unfortunately, some things are defined in ways I can't access (such as tAtk and tAttack), as they are not present in any of the XML files as a calculated field (which is what it is). *grumble*
|
#8 |
Senior Member
Volunteer Data File Contributor
Join Date: Mar 2007
Posts: 1,245
|
You can do a lot through the editor if you know how to work it, but I don't know if you can do enough for what you want. I have no experience working directly with the XML code, so I can't help you there.
|
#9 |
Spy
Join Date: Jan 2011
Location: Van Nuys, California
Posts: 1,220
|
I'm making progress on my changes. Found out there is a HeroLab file that actually does some things behind the scenes for different game systems, which is annoying, since it is already a compiled file and I can't delve into its contents. One thing that bugs me though, I changed some things in the XML file, but I can't see any of those changes unless I load that particular file into the Editor and test it. For example, I went directly into the Fighter XML file and changed its 2 skill points to 4 skill points. But when I load the d20 file into HeroLab and create a Fighter, no changes are present, and I have to go into the Editor and load the Fighter and test it. I'm not editing anything at all in the Editor, but I still have to compile it with the Editor, even if I change the actual XML files to new skill point values and load up HeroLab. Seems that when I choose the d20 file, it should be recognizing the changes I made, but it doesn't. Perplexes me.
|
#10 |
|
|