From 45bfea363ba9a1ecb61fee1ac28fadbcbf015bb4 Mon Sep 17 00:00:00 2001 From: AllenCohn Date: Tue, 8 Oct 2024 00:20:59 -0700 Subject: [PATCH] PF1 Improve Implementation of Ability Damage and Penalty (#7196) * First draft update of code for ability damage and penalty; matches game rules as written more closely. * Cleaned up a little formatting. * Formatted a comment. --- .../core_rulebook/cr_abilities.lst | 58 +++++++++++++++++-- .../core_rulebook/cr_templates.lst | 44 +++++++------- 2 files changed, 75 insertions(+), 27 deletions(-) diff --git a/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_abilities.lst b/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_abilities.lst index 7b2977d5a59..19fe5d10413 100644 --- a/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_abilities.lst +++ b/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_abilities.lst @@ -905,9 +905,55 @@ Summon Nature's Ally I KEY:Spell ~ Summon Nature's Ally I CATEGORY:Internal T ### Ability Damage -#CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageSTR|0 DEFINE:AbilityDamagePenaltySTR|0 BONUS:VAR|AbilityDamagePenaltySTR|floor(AbilityDamageSTR/2) -#CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageDEX|0 DEFINE:AbilityDamagePenaltyDEX|0 BONUS:VAR|AbilityDamagePenaltyDEX|floor(AbilityDamageDEX/2) -#CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageCON|0 DEFINE:AbilityDamagePenaltyCON|0 BONUS:VAR|AbilityDamagePenaltyCON|floor(AbilityDamageCON/2) -#CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageINT|0 DEFINE:AbilityDamagePenaltyINT|0 BONUS:VAR|AbilityDamagePenaltyINT|floor(AbilityDamageINT/2) -#CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageWIS|0 DEFINE:AbilityDamagePenaltyWIS|0 BONUS:VAR|AbilityDamagePenaltyWIS|floor(AbilityDamageWIS/2) -#CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageCHA|0 DEFINE:AbilityDamagePenaltyCHA|0 BONUS:VAR|AbilityDamagePenaltyCHA|floor(AbilityDamageCHA/2) +#Create global variables to keep running tallies of damage to each ability +CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageSTR|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageDEX|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageCON|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageINT|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageWIS|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityDamageCHA|0 + +### Ability Penalties +#Create global variables to keep running tallies of penalties to each ability +CATEGORY=Internal|Default.MOD DEFINE:AbilityPenaltySTR|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityPenaltyDEX|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityPenaltyCON|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityPenaltyINT|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityPenaltyWIS|0 +CATEGORY=Internal|Default.MOD DEFINE:AbilityPenaltyCHA|0 + +###Modifiers Due To Ability Damage and Penalites +#Is "floor" necessary? Doesn't PCGen automatically round down? +#It is not clear from the rules whether there should be two modifiers...one for damage and one for penalty. For example, +#suppose a character has 1 point each of STR damage and penalty. Should there be no effect (since both are below 2) or a +#modifier of 1 because they add to two? I think the latter is more in keeping with the spirit of the rules. +#Penalties have a simple sounding rule that's actually very complicated: at all times score > damage + penalty. +#The code includes a kluge that does not actually reduce a penalty if necessary. But instead limits the impact of an +#excessively large penalty. +#Finally, no check has been included for the error case in which a damage or penalty is negative...which they should never be. +CATEGORY=Internal|Default.MOD DEFINE:AbilityModifierSTR|0 BONUS:VAR|AbilityModifierSTR|floor((AbilityDamageSTR+max(0,min(AbilityPenaltySTR,(STRSCORE-AbilityDamageSTR-1))))/2) +CATEGORY=Internal|Default.MOD DEFINE:AbilityModifierDEX|0 BONUS:VAR|AbilityModifierDEX|floor((AbilityDamageDEX+max(0,min(AbilityPenaltyDEX,(STRSCORE-AbilityDamageDEX-1))))/2) +CATEGORY=Internal|Default.MOD DEFINE:AbilityModifierCON|0 BONUS:VAR|AbilityModifierCON|floor((AbilityDamageCON+max(0,min(AbilityPenaltyCON,(STRSCORE-AbilityDamageCON-1))))/2) +CATEGORY=Internal|Default.MOD DEFINE:AbilityModifierINT|0 BONUS:VAR|AbilityModifierINT|floor((AbilityDamageINT+max(0,min(AbilityPenaltyINT,(STRSCORE-AbilityDamageINT-1))))/2) +CATEGORY=Internal|Default.MOD DEFINE:AbilityModifierWIS|0 BONUS:VAR|AbilityModifierWIS|floor((AbilityDamageWIS+max(0,min(AbilityPenaltyWIS,(STRSCORE-AbilityDamageWIS-1))))/2) +CATEGORY=Internal|Default.MOD DEFINE:AbilityModifierCHA|0 BONUS:VAR|AbilityModifierCHA|floor((AbilityDamageCHA+max(0,min(AbilityPenaltyCHA,(STRSCORE-AbilityDamageCHA-1))))/2) + +###Effects of Ability Modifers +CATEGORY=Internal|Default.MOD BONUS:COMBAT|TOHIT.Melee,DAMAGE.Melee|-AbilityModifierSTR|TYPE=AbilityDamage BONUS:SKILL|TYPE.Strength|-AbilityModifierSTR|TYPE=AbilityDamage BONUS:VAR|CMB|-AbilityModifierSTR|TYPE=AbilityDamage|PRESIZEGTEQ:S BONUS:VAR|CMD|-AbilityModifierSTR|TYPE=AbilityDamage +CATEGORY=Internal|Default.MOD BONUS:SAVE|Reflex|-AbilityModifierDEX|TYPE=AbilityDamage BONUS:SKILL|TYPE.Dexterity|-AbilityModifierDEX|TYPE=AbilityDamage BONUS:COMBAT|TOHIT.Ranged|-AbilityModifierDEX|TYPE=AbilityDamage BONUS:COMBAT|INITIATIVE|-AbilityModifierDEX|TYPE=AbilityDamage BONUS:COMBAT|AC|-AbilityModifierDEX|TYPE=AbilityDamage BONUS:VAR|CMB|-AbilityModifierDEX|TYPE=AbilityDamage|PRESIZELTEQ:T BONUS:VAR|CMD|-AbilityModifierDEX|TYPE=AbilityDamage +CATEGORY=Internal|Default.MOD BONUS:SAVE|Fortitude|-AbilityModifierCON|TYPE=AbilityDamage BONUS:HP|CURRENTMAX|-AbilityModifierCON*TL|TYPE=AbilityDamage + +#The way that the next lines implement the effects of INT, WIS, and CHA damage/penalty on DCs of relevant spells is brittle. It won't automatically +#apply the modifiers if new classes are added, such as homebrew. +#Perhaps in the future new code features will be added to allow a more general solution, such as changing SPELLSTAT so that BONUS:DC|SPELLSTAT.INT|-AbilityModifierINT works +CATEGORY=Internal|Default.MOD BONUS:SKILL|TYPE.Intelligence|-AbilityModifierINT|TYPE=AbilityDamage.AbilityPenalty BONUS:DC|CLASS.Rogue,CLASS.Arcanist,CLASS.Investigator,CLASS.Alchemist,CLASS.Witch,CLASS.Wizard,CLASS.Occultist,CLASS.Psychic,CLASS.Psychic Detective,CLASS.VWarlock,CLASS.VCabalist,CLASS.Magus|-AbilityModifierINT +CATEGORY=Internal|Default.MOD BONUS:SAVE|Will|-AbilityModifierWIS|TYPE=AbilityDamage BONUS:SKILL|TYPE.Wisdom|-AbilityModifierWIS|TYPE=AbilityDamage.AbilityPenalty BONUS:DC|CLASS.Daughter of Urgathoa,CLASS.Hunter,CLASS.Shaman,CLASS.Warpriest,CLASS.Inquisitor,CLASS.Cleric,CLASS.Druid,CLASS.Ranger,CLASS.Adept,CLASS.Spiritualist|-AbilityModifierWIS +CATEGORY=Internal|Default.MOD BONUS:SKILL|TYPE.Charisma|-AbilityModifierCHA|TYPE=AbilityDamage.AbilityPenalty BONUS:DC|CLASS.Red Mantis Assassin,CLASS.Bloodrager,CLASS.Skald,CLASS.Oracle,CLASS.Summoner,CLASS.Antipaladin,CLASS.Couatl Outsider,CLASS.Guardian Naga,CLASS.Spirit Naga,CLASS.Sorcerer/Cleric (Arcane),CLASS.Bard,CLASS.Paladin,CLASS.Sorcerer,CLASS.Medium,CLASS.Mesmerist|-AbilityModifierCHA + +#Make text show up on output if there is any ability damage or penalty. +CATEGORY=Internal|Default.MOD ABILITY:Condition|AUTOMATIC|Ability Damaged Output Text|PREMULT:1,[PREVARGT:AbilityDamageSTR,0],[PREVARGT:AbilityDamageDEX,0],[PREVARGT:AbilityDamageCON,0],[PREVARGT:AbilityDamageINT,0],[PREVARGT:AbilityDamageWIS,0],[PREVARGT:AbilityDamageCHA,0] +CATEGORY=Internal|Default.MOD ABILITY:Condition|AUTOMATIC|Ability Penalized Output Text|PREMULT:1,[PREVARGT:AbilityPenaltySTR,0],[PREVARGT:AbilityPenaltyDEX,0],[PREVARGT:AbilityPenaltyCON,0],[PREVARGT:AbilityPenaltyINT,0],[PREVARGT:AbilityPenaltyWIS,0],[PREVARGT:AbilityPenaltyCHA,0] + +#Output text abilities +Ability Damaged KEY:Ability Damaged Output Text CATEGORY:Condition TYPE:Condition.Afflictions DESC:You have accumulated points of ability damage: %1 STR, %2 DEX, %3 CON, %4 INT, %5 WIS, %6 CHA|AbilityDamageSTR|AbilityDamageDEX|AbilityDamageCON|AbilityDamageINT|AbilityDamageWIS|AbilityDamageCHA +Ability Penalized KEY:Ability Penalized Output Text CATEGORY:Condition TYPE:Condition.Afflictions DESC:You have accumulated points of ability Penalty: %1 STR, %2 DEX, %3 CON, %4 INT, %5 WIS, %6 CHA|AbilityPenaltySTR|AbilityPenaltyDEX|AbilityPenaltyCON|AbilityPenaltyINT|AbilityPenaltyWIS|AbilityPenaltyCHA diff --git a/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_templates.lst b/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_templates.lst index c6b097efa02..883b0093965 100644 --- a/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_templates.lst +++ b/data/pathfinder/paizo/roleplaying_game/core_rulebook/cr_templates.lst @@ -179,29 +179,31 @@ Heroic Level 20 VISIBLE:NO ###BLOCK: Conditional ###Block: Ability Damage -# Template Name Visible Source Page Define Temporary effect description Temporary Bonus TEMPVALUE -#Ability Damaged (Strength) VISIBLE:NO SOURCEPAGE:p.555 DEFINE:AbilityDamageSTR|0 DEFINE:AbilityDamagePenaltySTR|0 TEMPDESC:You have taken STR damage TEMPBONUS:ANYPC|COMBAT|TOHIT.Melee,DAMAGE.Melee|-AbilityDamagePenaltySTR|TYPE=AbilityDamage TEMPBONUS:ANYPC|SKILL|TYPE.Strength|-AbilityDamagePenaltySTR|TYPE=AbilityDamage TEMPBONUS:ANYPC|VAR|AbilityDamageSTR|%CHOICE TEMPBONUS:ANYPC|VAR|AbilityDamagePenaltySTR|AbilityDamageSTR/2 TEMPBONUS:ANYPC|VAR|CMB|AbilityDamagePenaltyStrength|TYPE=AbilityDamage|PRESIZEGTEQ:S TEMPBONUS:ANYPC|VAR|CMD|-AbilityDamagePenaltyStrength|TYPE=AbilityDamage TEMPVALUE:MIN=1|MAX=20|TITLE=Strength Damage -#Ability Damaged (Dexterity) VISIBLE:NO SOURCEPAGE:p.555 DEFINE:AbilityDamageDEX|0 DEFINE:AbilityDamagePenaltyDEX|0 TEMPDESC:You have taken DEX damage TEMPBONUS:ANYPC|COMBAT|TOHIT.Ranged|-AbilityDamagePenaltyDEX|TYPE=AbilityDamage TEMPBONUS:ANYPC|SKILL|TYPE.Dexterity|-AbilityDamagePenaltyDEX|TYPE=AbilityDamage TEMPBONUS:ANYPC|VAR|AbilityDamageDEX|%CHOICE TEMPBONUS:ANYPC|VAR|AbilityDamagePenaltyDEX|AbilityDamageDEX/2 TEMPVALUE:MIN=1|MAX=20|TITLE=Dexterity Damage -#Ability Damaged (Constitution) VISIBLE:NO SOURCEPAGE:p.555 DEFINE:AbilityDamageCON|0 DEFINE:AbilityDamagePenaltyCON|0 TEMPDESC:You have taken CON damage TEMPBONUS:ANYPC|VAR|AbilityDamageCON|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Constitution Damage -#Ability Damaged (Intelligence) VISIBLE:NO SOURCEPAGE:p.555 DEFINE:AbilityDamageINT|0 DEFINE:AbilityDamagePenaltyINT|0 TEMPDESC:You have taken INT damage TEMPBONUS:ANYPC|SKILL|TYPE.Intelligence|-AbilityDamagePenaltyINT|TYPE=AbilityDamage TEMPBONUS:ANYPC|VAR|AbilityDamageINT|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Intelligence Damage -#Ability Damaged (Wisdom) VISIBLE:NO SOURCEPAGE:p.555 DEFINE:AbilityDamageWIS|0 DEFINE:AbilityDamagePenaltyWIS|0 TEMPDESC:You have taken WIS damage TEMPBONUS:ANYPC|SKILL|TYPE.Wisdom|-AbilityDamagePenaltyWIS|TYPE=AbilityDamage TEMPBONUS:ANYPC|VAR|AbilityDamageWIS|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Wisdom Damage -#Ability Damaged (Charisma) VISIBLE:NO SOURCEPAGE:p.555 DEFINE:AbilityDamageCHA|0 DEFINE:AbilityDamagePenaltyCHA|0 TEMPDESC:You have taken CHA damage TEMPBONUS:ANYPC|SKILL|TYPE.Charisma|-AbilityDamagePenaltyCHA|TYPE=AbilityDamage TEMPBONUS:ANYPC|VAR|AbilityDamageCHA|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Charisma Damage -Ability Damaged (Strength) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Strength ability score points TEMPBONUS:ANYPC|STAT|STR|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Strength Damaged -Ability Damaged (Dexterity) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Dexterity ability score points TEMPBONUS:ANYPC|STAT|DEX|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Dexterity Damaged -Ability Damaged (Constitution) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Constitution ability score points TEMPBONUS:ANYPC|STAT|CON|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Constitution Damaged -Ability Damaged (Intelligence) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Intelligence ability score points TEMPBONUS:ANYPC|STAT|INT|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Intelligence Damaged -Ability Damaged (Wisdom) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Wisdom ability score points TEMPBONUS:ANYPC|STAT|WIS|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Wisdom Damaged -Ability Damaged (Charisma) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Charisma ability score points TEMPBONUS:ANYPC|STAT|CHA|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Charisma Damaged - +#Allow arbitrary ability damage and penalties to be applied via the Temporary Bonus tab +# Template Name Visible TEMPVALUE Temporary effect description +Ability Damaged (Strength) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityDamageSTR|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Strength Damage TEMPDESC:Choose number of damage points to add +Ability Damaged (Constitution) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityDamageCON|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Constitution Damage TEMPDESC:Choose number of damage points to add +Ability Damaged (Dexterity) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityDamageDEX|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Dexterity Damage TEMPDESC:Choose number of damage points to add +Ability Damaged (Intelligence) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityDamageINT|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Intelligence Damage TEMPDESC:Choose number of damage points to add +Ability Damaged (Wisdom) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityDamageWIS|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Wisdom Damage TEMPDESC:Choose number of damage points to add +Ability Damaged (Charisma) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityDamageCHA|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Charisma Damage TEMPDESC:Choose number of damage points to add + +###Block: Ability Penalty +Ability Penalized (Strength) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityPenaltySTR|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Strength Penalty TEMPDESC:Choose number of penalty points to add +Ability Penalized (Constitution) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityPenaltyCON|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Constitution Penalty TEMPDESC:Choose number of penalty points to add +Ability Penalized (Dexterity) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityPenaltyDEX|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Dexterity Penalty TEMPDESC:Choose number of penalty points to add +Ability Penalized (Intelligence) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityPenaltyINT|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Intelligence Penalty TEMPDESC:Choose number of penalty points to add +Ability Penalized (Wisdom) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityPenaltyWIS|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Wisdom Penalty TEMPDESC:Choose number of penalty points to add +Ability Penalized (Charisma) VISIBLE:NO TEMPBONUS:ANYPC|VAR|AbilityPenaltyCHA|%CHOICE TEMPVALUE:MIN=1|MAX=20|TITLE=Charisma Penalty TEMPDESC:Choose number of penalty points to add ###Block: Ability Drain -# Template Name Visible Source Page Temporary effect description Temporary Bonus TEMPVALUE -Ability Drained (Strength) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Strength ability score points TEMPBONUS:ANYPC|STAT|STR|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Strength Drain -Ability Drained (Dexterity) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Dexterity ability score points TEMPBONUS:ANYPC|STAT|DEX|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Dexterity Drain -Ability Drained (Constitution) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Constitution ability score points TEMPBONUS:ANYPC|STAT|CON|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Constitution Drain -Ability Drained (Intelligence) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Intelligence ability score points TEMPBONUS:ANYPC|STAT|INT|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Intelligence Drain -Ability Drained (Wisdom) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Wisdom ability score points TEMPBONUS:ANYPC|STAT|WIS|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Wisdom Drain -Ability Drained (Charisma) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:You have temporarily lost 1 or more Charisma ability score points TEMPBONUS:ANYPC|STAT|CHA|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Charisma Drain +# Template Name Visible Source Page Temporary effect description Temporary Bonus TEMPVALUE +Ability Drained (Strength) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:Choose number of ability points to drain TEMPBONUS:ANYPC|STAT|STR|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Strength Drain +Ability Drained (Dexterity) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:Choose number of ability points to drain TEMPBONUS:ANYPC|STAT|DEX|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Dexterity Drain +Ability Drained (Constitution) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:Choose number of ability points to drain TEMPBONUS:ANYPC|STAT|CON|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Constitution Drain +Ability Drained (Intelligence) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:Choose number of ability points to drain TEMPBONUS:ANYPC|STAT|INT|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Intelligence Drain +Ability Drained (Wisdom) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:Choose number of ability points to drain TEMPBONUS:ANYPC|STAT|WIS|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Wisdom Drain +Ability Drained (Charisma) VISIBLE:NO SOURCEPAGE:p.555 TEMPDESC:Choose number of ability points to drain TEMPBONUS:ANYPC|STAT|CHA|-1*(%CHOICE) TEMPVALUE:MIN=1|MAX=20|TITLE=Charisma Drain ###Block: Negative Levels # Template Name Visible Source Page Temporary effect description Temporary Bonus TEMPVALUE