Advanced Race Creation Guide:Feats: Difference between revisions

From Wiki for The Only Sheet
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 7: Line 7:
On the Feats sheet, we click the link "Click HERE to add Custom Feats!"
On the Feats sheet, we click the link "Click HERE to add Custom Feats!"


Entries on the Feat table are very much like the Race abilities we set up on the Race page, with a few extra columns:
As we mentioned before, entries on the Feat table are also Abilities, very much like the Race abilities we set up on the Race page, with a few extra columns:


;Name: The feat name
;Name: The feat name
Line 13: Line 13:
;Type: General, Combat, Item Creation, Metamagic, Racial, and so forth. I put Racial for these.
;Type: General, Combat, Item Creation, Metamagic, Racial, and so forth. I put Racial for these.
;Prereq & Prereq Details: These are somewhat complicated, so each will be discussed separately.
;Prereq & Prereq Details: These are somewhat complicated, so each will be discussed separately.
;Description: This is the description that shows next to the feat name when you select it on the BACK sheet.  There's not a lot of room in that column so these tend to be rather short.
;Description: This is the description that shows next to the feat name when you select it on the BACK sheet.  There's not a lot of room in that column so make this short. You don't need to include many details, since the user already knows about the feat *from* the rules.


Now the columns are the same as any other Ability:
Now the columns are the same as any other Ability:
;Conditional Effect and Abilities: This text will show in INFO under a heading for Feats
;Conditional Effect and Abilities: This text is what we fill in whenever a Feat gives a conditional bonus.  This section can be long enough to describe the complete conditions of the bonus.  So, for an example made up feat called "Underwater Fighter", the conditional text might be something like: "+2 to reflex saves to avoid being grappled and +1 to AC when underwater (Underwater Fighter)")
;Permanent Effect?: If blank or "No", the feat has no effect until selected on the LapTop sheet. Forgetting to put Yes in this field is THE MOST COMMON MISTAKE in working with abilities of any kind on TOS+. :)
;Permanent Effect?: If blank or "No", the feat has no effect until selected on the LapTop sheet. Forgetting to put Yes in this field is THE MOST COMMON MISTAKE in working with abilities or items of any kind on TOS+. :)
;Advice: This text is shown next to the ability name when it is selected on the LapTop sheet.
;Advice: This text is shown next to the ability name when it is selected on the LapTop sheet.
;Specific Focus: it looks as if this is used by other feats to allow a choice on Customize to pick the ability for a bonus... we won't be using it.
;Specific Focus: it looks as if this is used by other feats to allow a choice on Customize to pick the ability for a bonus... we won't be using it.
Line 26: Line 26:
This column is used to indicate whether the character has met the pre-requisites for the feat.  There are a number of supported values:
This column is used to indicate whether the character has met the pre-requisites for the feat.  There are a number of supported values:
* n/a: the feat is not selected
* n/a: the feat is not selected
* o/r: the requirements have been overruled (and the feat is allowed)
* o/r: the requirements have been overridden (and the feat is allowed)
* No: the prereqs were NOT met
* No: the prereqs were NOT met
* OK: prereqs are good
* OK: prereqs are good

Latest revision as of 03:18, 6 February 2013

Advanced Race Creation Guide:Feats

Intro to feats

Now that we have the Race done, let's do some race specific feats!

On the Feats sheet, we click the link "Click HERE to add Custom Feats!"

As we mentioned before, entries on the Feat table are also Abilities, very much like the Race abilities we set up on the Race page, with a few extra columns:

Name
The feat name
Source
the book or other source of the feat. I put "ARG" for all these feats.
Type
General, Combat, Item Creation, Metamagic, Racial, and so forth. I put Racial for these.
Prereq & Prereq Details
These are somewhat complicated, so each will be discussed separately.
Description
This is the description that shows next to the feat name when you select it on the BACK sheet. There's not a lot of room in that column so make this short. You don't need to include many details, since the user already knows about the feat *from* the rules.

Now the columns are the same as any other Ability:

Conditional Effect and Abilities
This text is what we fill in whenever a Feat gives a conditional bonus. This section can be long enough to describe the complete conditions of the bonus. So, for an example made up feat called "Underwater Fighter", the conditional text might be something like: "+2 to reflex saves to avoid being grappled and +1 to AC when underwater (Underwater Fighter)")
Permanent Effect?
If blank or "No", the feat has no effect until selected on the LapTop sheet. Forgetting to put Yes in this field is THE MOST COMMON MISTAKE in working with abilities or items of any kind on TOS+. :)
Advice
This text is shown next to the ability name when it is selected on the LapTop sheet.
Specific Focus
it looks as if this is used by other feats to allow a choice on Customize to pick the ability for a bonus... we won't be using it.
Effects
This is the same thing we've seen before. up to 6 effect Names, with selectable types to support stacking rules when the Modifiers are added together.

Prereq Column

This column is used to indicate whether the character has met the pre-requisites for the feat. There are a number of supported values:

  • n/a: the feat is not selected
  • o/r: the requirements have been overridden (and the feat is allowed)
  • No: the prereqs were NOT met
  • OK: prereqs are good

This leads to the formulas for Prereq? having a certain structure. Here's an example, for Improved Channel force, which has several prerequisites:

=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
             COUNTIF(tSel_Feats,"Channel Force")=0,
             PEP_ChannelEnergyLevel<7),
          "No","OK")))

There is a lot going on here, but I'll explain it section by section.

IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",

The expression OFFSET($A$1,ROW()-1,COLUMN()-4) reads the feat name, on the same row. COUNTIF(tSel_Feats,"Improved Channel Force") will return the number of times "Improved Channel Force" is selected in the FEATS section on the BACK worksheet. So this says, if the feat is not listed in the FEATS section of the BACK worksheet, return "n/a"

IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",

If the call to ParseEffect("Improved Channel Force Prereqs Met") returns non-0 (because of an effect somewhere), then return "o/r". What this means is, some other Effect has flagged this feat as specifically selectable without the normal prereqs being required.

 IF(OR(tSel_Race<>tSel_Race_Name,
       COUNTIF(tSel_Feats,"Channel Force")=0,
       PEP_ChannelEnergyLevel<7),
    "No","OK")

This section uses the OR() function. OR() takes up to 255 arguments, and returns true if ANY of the arguments are true. In this case, we're checking if any of three conditions are true:

  • Selected Race is not Aasimar (ARG)
  • "Channel Force" is not a selected feat
  • Channel Energy level is too low.
    • By the way, the variable PEP_ChannelEnergyLevel is the stashed result of a call to ParseEffect("Channel Energy Level")

There is a similar AND() function available, for cases where more than one condition has to be true for the expression as a whole to be true.

Prereq Reason Column

Setting the prereq column is nice and all, but it doesn't do anything interesting unless there is also text in the Prereq Reason column. In order for Feats to register an X if the prereqs aren't met, you have to fill in the Prerequisite Details column. IF the column shows text, then the prerequisite line on the FEATS section on the BACK worksheet will show an X instead of a checkmark, and the text from the Prereq Details will appear in the INFO section, showing the reason.

Here is the formula from Reason column for the same feat we just discussed:

=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(PEP_ChannelEnergyLevel=0,"Improved Channel Force: Must have the Channel Energy class feature!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Channel Force")=0,"Improved Channel Force: Must have Channel Force!"&CR,"")&
    IF(PEP_ChannelEnergyLevel<7,"Improved Channel Force: requires Channel Energy of at least 4d6 (Currently "&
                                 TRUNC((IF(b_MultiClassChannel,lvl_Custom2,PEP_ChannelEnergyLevel)+1)/2)&"d6)!"&CR),
       "")

The test in this formula is, does the Prereq column on the same row have "No" ? If so, concatenate (with the & character) the strings returned by each prereq test:

  • The first message shows if the character doesn't have Channel Energy at all:
IF(PEP_ChannelEnergyLevel=0,"Improved Channel Force: Must have the Channel Energy class feature!"&CR,"")&
  • The next shows if the feat "Channel Force" isn't also a selected selected feat:
IF(COUNTIF(tSel_Feats,"Channel Force")=0,"Improved Channel Force: Must have Channel Force!"&CR,"")&
  • And the third one shows if the character does not have enough Channel Energy dice to qualify:
IF(PEP_ChannelEnergyLevel<7,"Improved Channel Force: requires Channel Energy of at least 4d6 (Currently "&
                             TRUNC((IF(b_MultiClassChannel,lvl_Custom2,PEP_ChannelEnergyLevel)+1)/2)&"d6)!"&CR),"")

Note: This snippet for the number of dice I snagged from the class definition for Cleric (P), because I couldn't find an existing value in the sheet that represented channel DICE: TRUNC((IF(b_MultiClassChannel,lvl_Custom2,PEP_ChannelEnergyLevel)+1)/2)

Perm? Column

The Perm? or Permanent effect column is so easy to overlook, but very powerful. If it's set to Yes, then any effects for this ability will be active, immediately. But if it's set to "No" or left blank, then the effects are only active when the ability name is entered into the Active Effects section of the LapTop sheet.

LapTop Advice Column

The text here is shown in the advice window of the Active Effects section on the LapTop sheet when the Feat is selected. This can also be used with feats that have Perm set to Yes, but since their effects are already applied, this is only to have the "LapTop Advice" text shown. And example is the "Concentration Check" effect... it's always active, but its description text just the character's Concentration check... which is useful, during play!

The Feats

Channel Force

Prerequisites
Aasimar, channel energy 2d6
Rule
When you channel energy to deal damage, you may choose to affect only a single target within 30 feet. In addition to dealing damage, if that single target fails its saving throw, you may pull or push the target up to 5 feet for every 2d6 points of channel energy damage you are capable of dealing
Channel Force
Column Value
Name Channel Force
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,PEP_ChannelEnergyLevel<3),
          "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(PEP_ChannelEnergyLevel=0,"Channel Force requires the Channel Energy class feature"&CR,"")&
    IF(PEP_ChannelEnergyLevel<3,"Channel Force requires Channel Energy of at least 2d6 (Currently "
                                 &TRUNC((IF(b_MultiClassChannel,lvl_Custom2,PEP_ChannelEnergyLevel)+1)/2)&"d6)!"&CR,"")
   ,"")
Description
="Channel energy damage also pushes/pulls a single target up to "&
 TRUNC(TRUNC((IF(b_MultiClassChannel,lvl_Custom2,PEP_ChannelEnergyLevel)+1)/2)/2)*5&"'"
Perm Yes

And that's all we need to do! This feat doesn't have any change any existing calculated stats, so we don't need to add any effects. We have added the Rule, to the game, by showing the description, and showing when the feat has been picked correctly.

Note
The distance in the Description above is calculated dynamically from the player's level.

Improved Channel Force

Prerequisites
Channel Force, Aasimar, channel energy 4d6
Rule
When using Channel Force, you can affect all creatures in a 60-foot line or a 30-foot cone-shaped burst. You must choose to either push or pull all creatures within the affected area that fail their saves.
Improved Channel Force
Column Value
Name Improved Channel Force
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",
        IF(OR(tSel_Race<>tSel_Race_Name,
              COUNTIF(tSel_Feats,"Channel Force")=0,
              PEP_ChannelEnergyLevel<7),
           "No","OK")))	 
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(PEP_ChannelEnergyLevel=0,"Improved Channel Force: Must have the Channel Energy class feature!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Channel Force")=0,"Improved Channel Force: Must have Channel Force!"&CR,"")&
    IF(PEP_ChannelEnergyLevel<7,"Improved Channel Force: requires Channel Energy of at least 4d6 (Currently "&
                                 TRUNC((IF(b_MultiClassChannel,lvl_Custom2,PEP_ChannelEnergyLevel)+1)/2)&"d6)!"&CR)
   ,"")
Description Channel Force all creatures in a 60' line or 30' cone
Perm Yes

Greater Channel Force

Prerequisites
Channel Force, Improved Channel Force, channel energy 6d6
Rule
When using Improved Channel Force, you can affect all creatures in a 30-foot-radius burst
Greater Channel Force
Column Value
Name Greater Channel Force
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
             COUNTIF(tSel_Feats,"Channel Force")=0,
             COUNTIF(tSel_Feats,"Improved Channel Force")=0,
             PEP_ChannelEnergyLevel<11),
          "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(PEP_ChannelEnergyLevel=0,"Greater Channel Force: Must have the Channel Energy class feature!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Channel Force")=0,"Greater Channel Force: Must have Channel Force!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Improved Channel Force")=0,"Greater Channel Force: Must have Improved Channel Force!"&CR,"")&
     IF(PEP_ChannelEnergyLevel<11,"Greater Channel Force: requires Channel Energy of at least 6d6 (Currently "&
                                   TRUNC((IF(b_MultiClassChannel,lvl_Custom2,PEP_ChannelEnergyLevel)+1)/2)&"d6)!"&CR,""),
    "")
Description Channel Force all creatures in a 30' radius
Perm Yes

Next we'll get into some feats that actually have effects.

Angelic Blood

Prerequisites
Con 13
Rule
You gain a +2 bonus on saving throws against effects with the evil descriptor and on Constitution checks to stabilize when you are reduced to negative hit points (but not dead). Furthermore, each time you take bleed or blood drain damage, each undead creature or creature with the evil subtype that is currently adjacent to you also takes 1 point of damage.
Angelic Blood
Column Value
Name Angelic Blood
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",
    IF(OR(tSel_Race<>tSel_Race_Name,i_CON<13),
       "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Angelic Blood: "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(i_CON<13,"Angelic Blood: Constitution must be 13 or more!"&CR,""),
    "")
Description '+2 to saves vs. evil, and cause dmg to adj. evil/undead if drained or bleeding
Conditional Effect '+2 to saves vs. evil effects and on Constitution checks to stabilize when you are reduced to negative hit points (but not dead) (Angelic Blood)
Perm Yes
Column Effect Name Effect Type Effect Modifier
Effect 1 All Conditional Saves Unnamed 2
Effect #1
Notice that we didn't worry about the fact there's not an exact match in known effects (like, where's the "All Conditional Saves vs. Evil" effect)? This conditional will cause a "+2*" to appear next to all saving throws. When you click on those cells on the FRONT worksheet, the tooltip will show:
+2  Unnamed  Angelic Blood
and the text from the Conditional Effect field will be shown in the INFO block. We make sure the Conditional text includes the indicator at the end, (Angelic Blood)
+2 to saves vs. evil effects and on Constitution checks to stabilize when you are reduced to negative hit points (but not dead) (Angelic Blood)
so that it's easy to tell which effect is giving the bonus.
side note: I wanted to have it be [Angelic Blood], with brackets, but the sheet turns those back into () parenthesis when loading the character. <sigh>

Angelic Flesh

Prerequisites
Angelic Blood
Rule
You take a –2 penalty on Disguise and Stealth checks but gain one of the following benefits, depending on the metallic affinity of your flesh (choose one)

This feat presented a challenge, because it has four different variants that offer four different sets of bonuses (and Effects). I thought about being clever with formulas and dropdown lists to make it selectable, and then I realized it was a lot simpler just to make one full feat for each variant. :)

Angelic Flesh (Brazen)

Prerequisite
Angelic Blood
Rule
You gain fire resistance 5 and a +2 bonus on saves against fire effects
Angelic Flesh (Brazen)
Column Value
Name Angelic Flesh (Brazen)
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect("Angelic Flesh (Brazen) Prereqs Met")>0,"o/r",
    IF(OR(tSel_Race<>tSel_Race_Name,
          COUNTIF(tSel_Feats,"Angelic Blood")=0,
          COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1),
       "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Angelic Flesh (Brazen): "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Blood")=0,"Angelic Flesh (Brazen): Must have Angelic Blood!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1,"Angelic Flesh (Brazen): Only one type of Angelic Flesh allowed!"&CR,""),"")
Description You gain fire resistance 5 and a +2 bonus on saves against fire effects
Conditional Effect +2 to saves vs. fire effects (Angelic Flesh)
Perm Yes
Column Effect Name Effect Type Effect Modifier
Effect 1 Disguise-p Unnamed -2
Effect 2 Stealth-p Unnamed -2
Effect 3 Resistance to Fire (Ex) Max Value 5
Effect 4 All Conditional Saves Unnamed 2

Angelic Flesh (Golden)

Prerequisites
Angelic Blood
Rule
You gain a +2 bonus on saves against blindness, dazzling, patterns, and effects with the light descriptor. When you cast spells or use spell-like abilities that are from the illusion (pattern) subschool or have the light descriptor, you do so at +1 caster level
Angelic Flesh (Golden)
Column Value
Name Angelic Flesh (Golden)
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect("Angelic Flesh (Golden) Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
          COUNTIF(tSel_Feats,"Angelic Blood")=0,
          COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1),
          "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Angelic Flesh (Golden): "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Blood")=0,"Angelic Flesh (Golden): Must have Angelic Blood!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1,"Angelic Flesh (Golden): Only one type of Angelic Flesh allowed!"&CR,""),"")	
Description +2 to saves vs. blindness, dazzling, patterns, and light
Conditional Effect +2 to saves vs. blindness, dazzling, patterns, and light (Angelic Flesh)
Perm Yes
Column Effect Name Effect Type Effect Modifier
Effect 1 Disguise-p Unnamed -2
Effect 2 Stealth-p Unnamed -2
Effect 3 All Conditional Saves Unnamed 2
Effect 4 Pattern Caster Level (Spell Effects) Unnamed 1
Effect 5 Light Caster Level (Spell Effects) Unnamed 1

Angelic Flesh (Silver)

Prerequisites
Angelic Blood
Rule
You gain a +2 bonus on saves against paralysis, petrification, and poison, and your unarmed strikes or natural weapons count as silver for the purpose of overcoming damage reduction
Angelic Flesh (Silver)
Column Value
Name Angelic Flesh (Silver)
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect("Angelic Flesh (Steel) Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
             COUNTIF(tSel_Feats,"Angelic Blood")=0,
             COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1),
          "No","OK")))	
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Angelic Flesh (Silver): "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Blood")=0,"Angelic Flesh (Silver): Must have Angelic Blood!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1,"Angelic Flesh (Silver): Only one type of Angelic Flesh allowed!"&CR,""),
    "")
Description '+2 to saves vs. paralysis, petrification, and poison. Unarmed/natural weapons are silver vs. DR
Conditional Effect '+2 to saves vs. paralysis, petrification, and poison (Angelic Flesh)
Perm Yes
Column Effect Name Effect Type Effect Modifier
Effect 1 Disguise-p Unnamed -2
Effect 2 Stealth-p Unnamed -2
Effect 3 All Conditional Saves Unnamed 2

Angelic Flesh (Steel)

Prerequisites
Angelic Blood
Rule
You gain a +1 natural armor bonus to AC, and your unarmed strikes or natural weapons count as cold iron for the purpose of overcoming damage reduction
Angelic Flesh (Steel)
Column Value
Name Angelic Flesh (Steel)
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect("Angelic Flesh (Steel) Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
             COUNTIF(tSel_Feats,"Angelic Blood")=0,
             COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1),
          "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Angelic Flesh (Steel): "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Blood")=0,"Angelic Flesh (Steel): Must have Angelic Blood!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Flesh (*)")>1,"Angelic Flesh (Steel): Only one type of Angelic Flesh allowed!"&CR,""),"")
Description '+1 natural armor bonus to AC. Unarmed/natural weapons are cold iron vs. DR
Perm Yes
Column Effect Name Effect Type Effect Modifier
Effect 1 Disguise-p Unnamed -2
Effect 2 Stealth-p Unnamed -2
Effect 3 Armor Class Natural Armor 1

Angel Wings

Prerequisites
Angelic Blood, 10th level
Rule
You gain a pair of gleaming feathered wings that grant a fly speed of 30 feet (average maneuverability) if wearing light armor or unencumbered, or 20 feet (poor maneuverability) with a medium or heavy load or medium or heavy armor. Fly is a class skill for you.
Angel Wings
Column Value
Name Angel Wings
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",
    IF(OR(tSel_Race<>tSel_Race_Name,
          COUNTIF(tSel_Feats,"Angelic Blood")=0,
          i_CharacterLevel<10),
       "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Angel Wings: "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Blood")=0,"Angel Wings: Must have Angelic Blood!"&CR,"")&
    IF(i_CharacterLevel<10,"Angel Wings: Character level must be 10 or higher!"&CR,""),
    "")
Description You have wings and can fly
Perm Yes
Column Effect Name Effect Type Effect Modifier
Effect 1 Fly Speed Unnamed
=IF(OR(b_MediumLoad,b_HeavyLoad,b_MediumArmor,b_HeavyArmor),20,30)	
Effect 2 All Class Skill Class Skill Fly-p

The formula for fly speed is basically translating the english from the rules directly into Excel: "with a medium or heavy load or medium or heavy armor" becomes OR(b_MediumLoad,b_HeavyLoad,b_MediumArmor,b_HeavyArmor)

Metallic Wings

Prerequisites
Angelic Blood, Angelic Flesh, Angel Wings, 11th level
Rule
You gain two wing attacks. These are secondary natural attacks that deal 1d4 points of slashing damage (or 1d3 if you are Small).
Metallic Wings
Column Value
Name Metallic Wings
Prereq
=IF(COUNTIF(tSel_Feats,"Metallic Wings")=0,"n/a",
    IF(ParseEffect("Metallic Wings Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
             COUNTIF(tSel_Feats,"Angelic Blood")=0,
             COUNTIF(tSel_Feats,"Angelic Flesh (*)")=0,
             COUNTIF(tSel_Feats,"Angel Wings")=0,
             i_CharacterLevel<11),
         "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Metallic Wings: "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Blood")=0,"Metallic Wings: Must have Angelic Blood!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angelic Flesh (*)")=0,"Metallic Wings: Must have Angelic Flesh!"&CR,"")&
    IF(COUNTIF(tSel_Feats,"Angel Wings")=0,"Metallic Wings: Must have Angel Wings!"&CR,"")&
    IF(i_CharacterLevel<11,"Metallic Wings: Character level must be 11 or higher!"&CR,""),
    "")&
    IF(NOT(OR(tSel_Weapon1="2x Metallic Wings",
              tSel_Weapon2="2x Metallic Wings",
              tSel_Weapon3="2x Metallic Wings",
              tSel_Weapon4="2x Metallic Wings",
              tSel_Weapon5="2x Metallic Wings",
              tSel_Weapon6="2x Metallic Wings")),
       "Metallic Wings: "&CRT&ErrStart&"Equip '2x Metallic Wings' as a Natural (secondary) weapon!"&ErrEnd&CR,"")
Description Gain '2x Metallic Wings' weapon as Natural (secondary) attack
Perm Yes


This has a LOT of prerequisites, basically all of the Angelic line, but no actual effects. Also I couldn't figure out how to make the sheet REQUIRE the character equip the natural weapon... and then I realized: I can just show a message!

This feat requires a custom Weapon called '2x Metallic Wings' (on the Gear page) but all I had to do was pick '2x Claws' in the Quick box and change the Damage type to Slashing (instead of Slashing & Piercing). It literally took about 10 seconds. :)

Heavenly Radiance

Prerequisites
Aasimar, daylight spell-like ability, sufficiently high level (see below).
Rule
You gain one additional use per day of daylight. Choose one spell from the table below; by expending a use of daylight, you may use this spell as a spell-like ability. To select a spell, you must meet the minimum character level for its listing in the table. The save DC for this spell is Charisma-based.
Special
You may take this feat multiple times. Each time you select it, you gain an additional use of daylight and may select another spell from the table.
Heavenly Radiance spell-like abilities
Spell-Like Ability Minimum Character Level
Flare burst 1st
Wake of light 3rd
Searing light 5th
Wandering star motes 7th
Sunbeam (one beam only) 9th


After what I experienced figuring out Angelic Flesh and its variants, making 5 variants of Heavenly Radiance (one for each spell) was a no-brainer. But I realized I had a a serious problem: the Racial Trait text said, "1/Day". How could I set it up so that I could show the right value? I mean, really, edit the whole RACE just for one FEAT? :) :) But then with TOS_Admin's help, I found it: ParseEffect(). Yes, the same ParseEffect() that handles all the stacking rules and core calculations in the sheet!

So I set my own Effect for ParseEffect() to pick up, when I asked for it later. My effect is, "Nbr of Daylight Uses". I adjusted the "Aasimar (ARG) race" effect so that, if the regular Spell-Like Ability is selected, its value is 1, otherwise 0.

Then I thought about it some more. Since I was already using ParseEffect, why not use it to track the list of extra spells granted, as well?

="Daylight (Sp): "&ParseEffect("Nbr of Daylight Uses")&"/day, as the spell, CL"&i_CharacterLevel&
  IF(t_CM="",""," <"&REPT(t_CM,ParseEffect("Nbr of Daylight Uses"))&"> ")&
  IF(ParseEffect("Daylight Bonus Spell")=0,"",CRT&"Can alternatively cast: "&ParseEffect("Daylight Bonus Spell"))


So the Effects for each of the various Heavenly Radiance feats becomes (with Searing Light as the example):

Column Effect Name Effect Type Effect Modifier
Effect 1 Nbr of Daylight Uses Unnamed 1
Effect 2 Daylight Bonus Spell String Searing Light


The String type joins all the found values together with a comma, so: "Searing Light, Flare Burst, Sunbeam" The only other difference between the 5 feats is the player level their prereqs require.

  • Dynamic Formulas

This is one case where dynamic programming helps a lot! By using OFFSET() like this, I can use the exact same formula for all 5 prereqs, and not have to retype and change all the strings!

I used the empty slot called "Specific Focus", which is not normally used, to hold the level at which the feat becomes available. Then I reference it in the prereq formula with OFFSET($A$1,ROW()-1,COLUMN()+5):

Heavenly Radiance
Column Value
Name
  • Heavenly Radiance (Flare Burst)
  • Heavenly Radiance (Wake of Light)
  • Heavenly Radiance (Searing Light)
  • Heavenly Radiance (Wandering Star Motes)
  • Heavenly Radiance (Sunbeam)
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect("Heavenly Radiance Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
          LEFT(tSel_Race_RacialTrait3,8)<>"Daylight",
          i_CharacterLevel<OFFSET($A$1,ROW()-1,COLUMN()+5)),
          "No","OK")))	
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,OFFSET($A$1,ROW()-1,COLUMN()-5)&": "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(LEFT(tSel_Race_RacialTrait3,8)<>"Daylight",
       OFFSET($A$1,ROW()-1,COLUMN()-5)&": Must have 'Daylight' as a Spell-Like Ability!"&CR,"")&
    IF(i_CharacterLevel<OFFSET($A$1,ROW()-1,COLUMN()+4),
       OFFSET($A$1,ROW()-1,COLUMN()-5)&": Character level must be "&OFFSET($A$1,ROW()-1,COLUMN()+4)&" or higher!"&CR,""),"")
Description
="+1 use of Daylight (Sp)/day.  Can expend one use to cast "&OFFSET($A$1,ROW()-1,COLUMN()+9)
Perm Yes


  • Effects:

These are the effects from 5 different rows. The first column is the "Specific Focus" column.

SF Effect #1 Name Effect #1 Type Effect #1 Modifier Effect #2 Name Effect #2 Type Effect #2 Modifier
1 Nbr of Daylight Uses Unnamed 1 Daylight Bonus Spell String Flare Burst
3 Nbr of Daylight Uses Unnamed 1 Daylight Bonus Spell String Wake of Light
5 Nbr of Daylight Uses Unnamed 1 Daylight Bonus Spell String Searing Light
7 Nbr of Daylight Uses Unnamed 1 Daylight Bonus Spell String Wandering Star Motes
9 Nbr of Daylight Uses Unnamed 1 Daylight Bonus Spell String Sunbeam (one beam only)

Celestial Servant

Prerequisites
Aasimar, druid companion, familiar, or mount
Rule
Your animal companion, familiar, or mount gains the celestial template and becomes a magical beast, though you may still treat it as an animal when using Handle Animal, wild empathy, or any other spells or class abilities that specifically affect animals.
Celestial Servant
Column Value
Name Celestial Servant
Prereq
=IF(COUNTIF(tSel_Feats,OFFSET($A$1,ROW()-1,COLUMN()-4))=0,"n/a",
    IF(ParseEffect(OFFSET($A$1,ROW()-1,COLUMN()-4)&" Prereqs Met")>0,"o/r",
       IF(OR(tSel_Race<>tSel_Race_Name,
             AND(PE_FamiliarLevel=0,
                 PE_AnimalCompanionExLevel=0,
                 tSel_MountRace="")
            ),
          "No","OK")))
Prerequisite Details
=IF(OFFSET($A$1,ROW()-1,COLUMN()-2)="No",
    IF(tSel_Race<>tSel_Race_Name,"Celestial Servant: "&tSel_Race_Name&" Race required!"&CR,"")&
    IF(AND(PE_FamiliarLevel=0,
           PE_AnimalCompanionExLevel=0,
           tSel_MountRace=""),
       "Celestial Servant: Must have an Animal Companion, Mount or Familiar!"&CR,""),"")
Description Animal companion/familiar becomes a magical beast
Perm Yes


This one was actually one of the trickiest prerequisites to implement, because I needed to find a reliable way to detect whether or not the character had the necessary animal companion. However, the above values seem to work on all the classes I could think of testing it on. :)

Next up, Spells, Items, and Gear

BACK to the Advanced Race Creation Guide