Feats

Discussion of and general support for d20 D&D, including 3.0E and 3.5E and derivatives.

Moderators: dorpond, Azhrei

User avatar
Divine_Referee
Kobold
Posts: 14
Joined: Tue Jul 14, 2009 5:40 pm
Contact:

Re: Feats

Post by Divine_Referee »

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]) :idea: I guess this is where the GM's Overide comes in.

Picture of the day, available at my online stash...
Image
--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

User avatar
Divine_Referee
Kobold
Posts: 14
Joined: Tue Jul 14, 2009 5:40 pm
Contact:

Re: Feats

Post by Divine_Referee »

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). :shock:
--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

User avatar
jay
RPTools Team
Posts: 1767
Joined: Tue Feb 07, 2006 1:07 am
Location: Austin, Tx

Re: Feats

Post by jay »

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)
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:

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>
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 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: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]) :idea: I guess this is where the GM's Overide comes in.
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:

Code: Select all

<prerequisiteMet>gte(casterLevel.current, 12)</prerequisiteMet>

User avatar
jay
RPTools Team
Posts: 1767
Joined: Tue Feb 07, 2006 1:07 am
Location: Austin, Tx

Re: Feats

Post by jay »

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). :shock:
There will always be a user entered value that the GM or player can set to add odd things like this.

User avatar
jay
RPTools Team
Posts: 1767
Joined: Tue Feb 07, 2006 1:07 am
Location: Austin, Tx

Re: Feats

Post by jay »

jay wrote:
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]) :idea: I guess this is where the GM's Overide comes in.
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:

Code: Select all

<prerequisiteMet>gte(casterLevel.current, 12)</prerequisiteMet>
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.

User avatar
Divine_Referee
Kobold
Posts: 14
Joined: Tue Jul 14, 2009 5:40 pm
Contact:

Re: Feats

Post by Divine_Referee »

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...
Image
--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

LordShard
Cave Troll
Posts: 55
Joined: Sun Feb 18, 2007 7:52 am

Re: Feats

Post by LordShard »

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. Image

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>
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.

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
Capture.JPG (18.26 KiB) Viewed 4648 times

User avatar
jay
RPTools Team
Posts: 1767
Joined: Tue Feb 07, 2006 1:07 am
Location: Austin, Tx

Re: Feats

Post by jay »

You're name & type closing tags are bad:

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>
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>

LordShard
Cave Troll
Posts: 55
Joined: Sun Feb 18, 2007 7:52 am

Re: Feats

Post by LordShard »

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.

LordShard
Cave Troll
Posts: 55
Joined: Sun Feb 18, 2007 7:52 am

Re: Feats

Post by LordShard »

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.

User avatar
jay
RPTools Team
Posts: 1767
Joined: Tue Feb 07, 2006 1:07 am
Location: Austin, Tx

Re: Feats

Post by jay »

You can test for other feats by using this:

Code: Select all

inList(root.characterFeats, 'Armor Proficiency Heavy', 'name')
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.

LordShard
Cave Troll
Posts: 55
Joined: Sun Feb 18, 2007 7:52 am

Re: Feats

Post by LordShard »

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.

User avatar
jay
RPTools Team
Posts: 1767
Joined: Tue Feb 07, 2006 1:07 am
Location: Austin, Tx

Re: Feats

Post by jay »

That is the only way to do it until Classes are added.

shiner770
Kobold
Posts: 9
Joined: Fri Jun 04, 2010 12:53 pm

Re: Feats

Post by shiner770 »

Back to the feats thing are the feats from the magazine put in there as well. I f it isnt pm me I have a pdf file of all 2278 feats including the magazine 1s

Trollsfire
Kobold
Posts: 2
Joined: Thu Jan 19, 2012 8:25 pm

Re: Feats

Post by Trollsfire »

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.
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?

Post Reply

Return to “Support: d20 D&D”