Feats
- Divine_Referee
- Kobold
- Posts: 14
- Joined: Tue Jul 14, 2009 5:40 pm
- Contact:
Re: Feats
Excelent... thank you... now, knowing I'm going to need to know soon enough, how do I handle multiple prerequisites and caster levels?
An example of multiple prerequisites:
Shot on the Run (requires Dodge, Mobility, Point Blank Shot, and a Base Attack Bonus if +4)
Logically, if the PC has Mobility, they must already have Dodge, so checking to be sure they have Dodge is perhaps a bit redundant... but the macro still has to check for Point Blank Shot, and BAB +4
Now, for Caster Level... Forge Ring requires Caster Level 12.
Sure it's a simple matter if we're talking about sorcerers, wizards, and whatnot, but what about multiclassing characters, or even more complex, a Cleric/Wizard with Mystic Theurge (prestige class who's levels stack with existing spellcasting [DMG 192]) I guess this is where the GM's Overide comes in.
Picture of the day, available at my online stash...
An example of multiple prerequisites:
Shot on the Run (requires Dodge, Mobility, Point Blank Shot, and a Base Attack Bonus if +4)
Logically, if the PC has Mobility, they must already have Dodge, so checking to be sure they have Dodge is perhaps a bit redundant... but the macro still has to check for Point Blank Shot, and BAB +4
Now, for Caster Level... Forge Ring requires Caster Level 12.
Sure it's a simple matter if we're talking about sorcerers, wizards, and whatnot, but what about multiclassing characters, or even more complex, a Cleric/Wizard with Mystic Theurge (prestige class who's levels stack with existing spellcasting [DMG 192]) I guess this is where the GM's Overide comes in.
Picture of the day, available at my online stash...
--Omen
the Divine Referee
My Online Stash of D&D (3.0/3.5) and D20 Stuff
http://www.4shared.com/dir/9515291/76b7 ... aring.html
the Divine Referee
My Online Stash of D&D (3.0/3.5) and D20 Stuff
http://www.4shared.com/dir/9515291/76b7 ... aring.html
- Divine_Referee
- Kobold
- Posts: 14
- Joined: Tue Jul 14, 2009 5:40 pm
- Contact:
Re: Feats
another thought... regarding Caster Levels:
What happens if the PC gets really exotic, and plays a race who's racial levels stack with a spellcasting class (for example, a rakshasa's 7 racial levels stack with sorcerer levels).
What happens if the PC gets really exotic, and plays a race who's racial levels stack with a spellcasting class (for example, a rakshasa's 7 racial levels stack with sorcerer levels).
--Omen
the Divine Referee
My Online Stash of D&D (3.0/3.5) and D20 Stuff
http://www.4shared.com/dir/9515291/76b7 ... aring.html
the Divine Referee
My Online Stash of D&D (3.0/3.5) and D20 Stuff
http://www.4shared.com/dir/9515291/76b7 ... aring.html
Re: Feats
There is a function called 'and' that will do this. Just add each test in the function separated by a comma. You could also use the && from the script language but that really upsets the XML parser. Your example looks like this (minus the new lines:Divine_Referee wrote:An example of multiple prerequisites:
Shot on the Run (requires Dodge, Mobility, Point Blank Shot, and a Base Attack Bonus if +4)
Code: Select all
<prerequisiteMet>and(inList(root.feats, "Dodge", "name"),
inList(root.feats, "Mobility", "name"),
inList(root.feats, "Point Blank Shot", "name"),
gte(root.baseAttack, 4))</prerequisiteMet>
I always tried to stay away from these type of assumptions and code all of the prerequisites anyway. You never know what the player may change around and if you assume they have the feat and then they remove it they still get the bonuses.Divine_Referee wrote:Logically, if the PC has Mobility, they must already have Dodge, so checking to be sure they have Dodge is perhaps a bit redundant... but the macro still has to check for Point Blank Shot, and BAB +4
I'll have to add in caster level as a modifiable value. I've not really added any caster support to 3.5. just refer to the value as casterLevel.current for now:Divine_Referee wrote:Now, for Caster Level... Forge Ring requires Caster Level 12.
Sure it's a simple matter if we're talking about sorcerers, wizards, and whatnot, but what about multiclassing characters, or even more complex, a Cleric/Wizard with Mystic Theurge (prestige class who's levels stack with existing spellcasting [DMG 192]) I guess this is where the GM's Overide comes in.
Code: Select all
<prerequisiteMet>gte(casterLevel.current, 12)</prerequisiteMet>
Re: Feats
There will always be a user entered value that the GM or player can set to add odd things like this.Divine_Referee wrote:another thought... regarding Caster Levels:
What happens if the PC gets really exotic, and plays a race who's racial levels stack with a spellcasting class (for example, a rakshasa's 7 racial levels stack with sorcerer levels).
Re: Feats
I thought about this some more and I realized that this won't work. A character in 3.5 can have more than one caster level. I thought about adding them in a list, but then it's difficult to do the test. When you add in the spells themselves it gets complicated quickly. I'll need to think about it for awhile longer so just leave caster level tests out for now.jay wrote:I'll have to add in caster level as a modifiable value. I've not really added any caster support to 3.5. just refer to the value as casterLevel.current for now:Divine_Referee wrote:Now, for Caster Level... Forge Ring requires Caster Level 12.
Sure it's a simple matter if we're talking about sorcerers, wizards, and whatnot, but what about multiclassing characters, or even more complex, a Cleric/Wizard with Mystic Theurge (prestige class who's levels stack with existing spellcasting [DMG 192]) I guess this is where the GM's Overide comes in.Code: Select all
<prerequisiteMet>gte(casterLevel.current, 12)</prerequisiteMet>
- Divine_Referee
- Kobold
- Posts: 14
- Joined: Tue Jul 14, 2009 5:40 pm
- Contact:
Re: Feats
Ok, for now I'll leave a few empty lines in place of the <prerequisiteMet> lines.
Pic of the day available at my online stash...
Pic of the day available at my online stash...
--Omen
the Divine Referee
My Online Stash of D&D (3.0/3.5) and D20 Stuff
http://www.4shared.com/dir/9515291/76b7 ... aring.html
the Divine Referee
My Online Stash of D&D (3.0/3.5) and D20 Stuff
http://www.4shared.com/dir/9515291/76b7 ... aring.html
Re: Feats
Hello. Very long time since I've hung around this here board. About as long since the last time I've played D&D. Anyways, I've got some people I've met who let me into their D&D game psyched up about rptools. I notice however that when I try to add feats I get an error.
I tried just adding a simple feat, Agile and added the entries into the modifier.rpdat like how acrobatic is. Here is what I am looking at. I added the feat, and repackaged it with the rest of the rpgame file.
Now it doesn't complain about anything from the modifiers table but I think that is because it hits the exception with the feats and then stops trying to load anything, therefore not getting to the modifier table.
Here is the modifier table.
I tried just adding a simple feat, Agile and added the entries into the modifier.rpdat like how acrobatic is. Here is what I am looking at. I added the feat, and repackaged it with the rest of the rpgame file.
Code: Select all
<rptools-data>
<property-set>
<type>feat</type>
<name>Feats</name>
<description>Feats and special class features that are applied to characters.</description>
<game>d20 3.5</game>
<source>PHB</source>
<properties>
<property name="name"><description>Unique name for the feat.</description></property>
<property name="type"><description>The type of this feat: General, figher, item creation, etc..</description></property>
<property name="description"><description>Descriptive text for this feat.</description></property>
<property name="benefit"><description>This describes the advantage you gain when you take the feat.</description></property>
<property name="special"><description>Special rules for this feat.</description></property>
<property name="normal"><description>This describes the normal rules that apply to the situation modified by this feat.</description></property>
<property name="modifierSetName"><description>Name of modifier set that provides character updates.</description></property>
<property name="prerequisiteText" display="Prerequisite"><description>Text describing the prerequisites.</description></property>
<property name="prerequisiteMet" type="SCRIPT" display="Available">
<description>Flag indicating that the feat can be selected by the character. The script should return a Boolean value.</description>
<script>true</script>
</property>
<property name="optionRequired" type="SCRIPT" visibility="BY_NO_ONE">
<description>String indicating the type of option value that needs to be selected by the character. The value 'none' means no option is available.</description>
<script>'none'</script>
</property>
<property name="optionValue" slot="modifiable"><description>The option value for this feat if it has one.</description></property>
</properties>
</property-set>
<!-- PHB Feats -->
<feat>
<name>Acrobatic</name>
<type>General</type>
<description>You have excellent body awareness and coordination</description>
<benefit>You get a +2 bonus on all Jump checks and Tumble checks.</benefit>
<modifierSetName>feat.acrobatics</modifierSetName>
</feat>
<feat>
<name>Agile</name
<type>General</type
<description>Null</description>
<benefit>You get a +2 bonus on all Balance checks and Escape Artist checks.</benefit>
<modifierSetName>feat.agile</modifierSetName>
</feat>
<feat>
<name>Exotic Weapon Proficiency</name>
<type>General</type>
<description>Choose a type of exotic weapon, such as a dire flail or shuriken (See table 7-5: Weapons, page 116, for a list of exotic weapons). You understand how to use that type of exotic weapon in combat.</description>
<prerequisiteText>Base attack bonus +1 (Str 13 for bastard sword or dwarven waraxe).</prerequisiteText>
<prerequisiteMet>gte(root.baseAttack, 1)</prerequisiteMet>
<benefit>You make attack rolls with the weapon normally.</benefit>
<normal>A character who uses a weapon with which he or she is not proficient takes a -4 penalty on attack rolls.</normal>
<special>You can gain Exotic Weapon Proficiency multiple times. Each time you take the feat it applies to a new type of exotic weapon. Proficiency with the bastard sword or dwarven waraxe has an additional prerequisite of Str 13. A fighter may select Exotic Weapon Proficiency as on of his fighter bonus feats.</special>
<optionRequired>'exotic weapon'</optionRequired>
</feat>
</rptools-data>
Here is the modifier table.
Code: Select all
<rptools-data>
<property-set>
<type>modifier</type>
<name>SRD Modifiers</name>
<description>A table of modifiers applied to characters.</description>
<game>d20 3.5</game>
<source>SRD</source>
<properties>
<property name="appliedTo" type="STRING"><description>Value that this modifier is applied.</description></property>
<property name="applies" type="SCRIPT">
<description>Flag indicating if the modifier currently applies. The script should return a Boolean value.</description>
<script>true</script>
</property>
<property name="name" type="STRING"><description>Unique identifier for a modifier.</description></property>
<property name="modifierSetName" type="STRING"><description>The name of a set of modifiers.</description></property>
<property name="type" type="STRING"><description>Type of modifier (enhancement, luck, etc.). This value is used by the stacking rules</description></property>
<property name="source" type="STRING"><description>Source of this modifier. This value is used by the stacking rules if there isn't a type.</description></property>
<property name="bonus" type="SCRIPT"><description>The bonus applied by the modifier.</description></property>
<property name="stack" type="BOOLEAN"><description>Optional parameter indicating that this modifier stacks.</description></property>
</properties>
</property-set>
<modifier>
<appliedTo>diplomacy</appliedTo>
<applies>gt(root.bluff.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.0</name>
<source>Bluff</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>disguise</appliedTo>
<applies>gt(root.bluff.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.1</name>
<source>Bluff</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>intimidate</appliedTo>
<applies>gt(root.bluff.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.2</name>
<source>Bluff</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>sleightOfHand</appliedTo>
<applies>gt(root.bluff.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.3</name>
<source>Bluff</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>ride</appliedTo>
<applies>gt(root.handleAnimal.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.4</name>
<source>Handle Animal</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>tumble</appliedTo>
<applies>gt(root.jump.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.5</name>
<source>Jump</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>spellcraft</appliedTo>
<applies>gt(root.knowledgeArcana.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.6</name>
<source>Knowledge (Arcana)</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>gatherInformation</appliedTo>
<applies>gt(root.knowledgeLocal.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.7</name>
<source>Knowledge (Local)</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>diplomacy</appliedTo>
<applies>gt(root.knowledgeNobility.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.8</name>
<source>Knowledge (Nobility)</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>diplomacy</appliedTo>
<applies>gt(root.senseMotive.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.9</name>
<source>Sense Motive</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>knowledgeNature</appliedTo>
<applies>gt(root.survival.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.10</name>
<source>Survival</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>disguise</appliedTo>
<applies>gt(root.bluff.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.11</name>
<source>bluff</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>balance</appliedTo>
<applies>gt(root.tumble.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.12</name>
<source>Tumble</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>jump</appliedTo>
<applies>gt(root.tumble.base, 4)</applies>
<type>synergy</type>
<modifierSetName>synergy</modifierSetName>
<name>synergy.13</name>
<source>Tumble</source>
<bonus>2</bonus>
<stack>true</stack>
</modifier>
<modifier>
<appliedTo>int</appliedTo>
<applies>true</applies>
<type>enhancement</type>
<modifierSetName>fox's cunning</modifierSetName>
<name>fox's cunning</name>
<source>fox's cunning</source>
<bonus>4</bonus>
<stack>false</stack>
</modifier>
<modifier>
<appliedTo>str</appliedTo>
<applies>true</applies>
<type>enhancement</type>
<modifierSetName>bull's strength</modifierSetName>
<name>bull's strength</name>
<source>bull's strength</source>
<bonus>4</bonus>
<stack>false</stack>
</modifier>
<modifier>
<appliedTo>cha</appliedTo>
<applies>true</applies>
<type>enhancement</type>
<modifierSetName>eagle's splendor</modifierSetName>
<name>eagle's splendor</name>
<source>eagle's splendor</source>
<bonus>4</bonus>
<stack>false</stack>
</modifier>
<modifier>
<appliedTo>con</appliedTo>
<applies>true</applies>
<type>enhancement</type>
<modifierSetName>bear's endurance</modifierSetName>
<name>bear's endurance</name>
<source>bear's endurance</source>
<bonus>4</bonus>
<stack>false</stack>
</modifier>
<modifier>
<appliedTo>dex</appliedTo>
<applies>true</applies>
<type>enhancement</type>
<modifierSetName>cat's grace</modifierSetName>
<name>cat's grace</name>
<source>cat's grace</source>
<bonus>4</bonus>
<stack>false</stack>
</modifier>
<modifier>
<appliedTo>wis</appliedTo>
<applies>true</applies>
<type>enhancement</type>
<modifierSetName>owl's wisdom</modifierSetName>
<name>owl's wisdom</name>
<source>owl's wisdom</source>
<bonus>4</bonus>
<stack>false</stack>
</modifier>
<!-- Feat bonuses -->
<modifier>
<name>feat.acrobatics.0</name>
<appliedTo>jump</appliedTo>
<modifierSetName>feat.acrobatics</modifierSetName>
<source>Acrobatics</source>
<bonus>2</bonus>
<stack>false</stack>
</modifier>
<modifier>
<name>feat.acrobatics.1</name>
<appliedTo>tumble</appliedTo>
<modifierSetName>feat.acrobatics</modifierSetName>
<source>Acrobatics</source>
<bonus>2</bonus>
<stack>false</stack>
</modifier>
<modifier>
<name>feat.agile.0</name>
<appliedTo>balance</appliedTo>
<modifierSetName>feat.agile</modifierSetName>
<source>Agile</source>
<bonus>2</bonus>
<stack>false</stack>
</modifier>
<modifier>
<name>feat.agile.1</name>
<appliedTo>escapeArtist</appliedTo>
<modifierSetName>feat.agile</modifierSetName>
<source>Agile</source>
<bonus>2</bonus>
<stack>false</stack>
</modifier>
</rptools-data>
- Attachments
-
- Capture.JPG (18.26 KiB) Viewed 4656 times
Re: Feats
You're name & type closing tags are bad:Both are missing the less than sign to end it. The feat should be:
Code: Select all
<feat>
<name>Agile</name
<type>General</type
<description>Null</description>
<benefit>You get a +2 bonus on all Balance checks and Escape Artist checks.</benefit>
<modifierSetName>feat.agile</modifierSetName>
</feat>
Code: Select all
<feat>
<name>Agile</name>
<type>General</type>
<description>Null</description>
<benefit>You get a +2 bonus on all Balance checks and Escape Artist checks.</benefit>
<modifierSetName>feat.agile</modifierSetName>
</feat>
Re: Feats
New question. I don't see anything like this in the d20 3.5 file to compare against. How do you set booleans like true and false for feat requirements? Armor Proficiency Heavy requires medium and light but feat.armorProficiencyMedium == true doesn't seem to do anything.
Re: Feats
You can test for other feats by using this:
However, the base d20 3.5 doesn't support classes yet so there isn't any way to tell what the base armor proficiency is.
Code: Select all
inList(root.characterFeats, 'Armor Proficiency Heavy', 'name')
Re: Feats
I only need to link what feats connect to what. So as a character even if you don't have classes in there yet it should still be able to select what feats are per your class, for example bard gets light armor, then medium armor show as true for prerequisites met.
-
- Kobold
- Posts: 2
- Joined: Thu Jan 19, 2012 8:25 pm
Re: Feats
I realize this post was late 2009, but what is the current state of feats for D&D 3.5? When I used "d20 3.5 - remote 3", the only two feats available were Acrobatic and Exotic Weapon Proficiency, which were the two proof-of-concept feats. Have others been coded since then? If so, where should I be looking for them?LordShard wrote:Hey thanks. It all works now. When I finish with core I'll share it with everyone.
Also, how would I go about creating specific addons for collections of data. Like addon for Complete Arcane, and whatnot.