Difference between revisions of "Formula Parser Conversion - Data"

From PCGen Wiki
Jump to: navigation, search
Line 21: Line 21:
 
* This grants first attack, and then the pattern +1 at 6, +2 at 11, +3 at 16
 
* This grants first attack, and then the pattern +1 at 6, +2 at 11, +3 at 16
 
* Next, since we need fine control over attack bonuses, we set this up:
 
* Next, since we need fine control over attack bonuses, we set this up:
* ATTACKS.1, ATTACKS.2, ATTACKS.3, ATTACKS.4, etc.
+
* TOHIT.Base, TOHIT.2, TOHIT.3, TOHIT.4, TOHIT.5, etc. (Assume all base PCs should have 5 values - this accounts for 4 attacks from high BAB, and +1 for a speed/haste effect
* MODIFY:ATTACKS.1|SOLVE|value()+TOHIT.Total
+
* MODIFYOTHER:TOHIT.Base|SOLVE|value()+TOHIT.Total
* MODIFY:ATTACKS.2|SOLVE|value()+TOHIT.Total-5|PREVARGTEQ:ATTACKS,2
+
* MODIFYOTHER:TOHIT.2|SOLVE|value()+TOHIT.Base|PREVARGTEQ:ATTACKS,2
* MODIFY:ATTACKS.3|SOLVE|value()+TOHIT.Total-10|PREVARGTEQ:ATTACKS,3
+
* MODIFYOTHER:TOHIT.3|SOLVE|value()+TOHIT.Base|PREVARGTEQ:ATTACKS,3
* MODIFY:ATTACKS.4|SOLVE|value()+TOHIT.Total-15|PREVARGTEQ:ATTACKS,4
+
* MODIFYOTHER:TOHIT.4|SOLVE|value()+TOHIT.Base|PREVARGTEQ:ATTACKS,4
 +
 
 +
* MODIFYOTHER:TOHIT.2|SUBTRACT|5|PREVARGTEQ:ATTACKS,2
 +
* MODIFYOTHER:TOHIT.3|SUBTRACT|10|PREVARGTEQ:ATTACKS,3
 +
* MODIFYOTHER:TOHIT.4|SUBTRACT|15|PREVARGTEQ:ATTACKS,4
 +
 
  
 
Now, that handles standard attacks.
 
Now, that handles standard attacks.
  
 
For Flurry of Blows:
 
For Flurry of Blows:
*  
+
* MODIFY:ATTACKS|SOLVE|MonkBAB-1/3 -> This sets us to have more attacks for the Flurry
 +
 
 +
Next we want to set up the Flurry Attack Values
 +
* MODIFY:FlurryAttackTotal|SOLVE|value()+TOHIT.Total-2
 +
* MODIFY:TOHIT.1|SOLVE|value()+FlurryAttackTotal
 +
* MODIFY:TOHIT.2|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,2
 +
* MODIFY:TOHIT.3|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,3
 +
* MODIFY:TOHIT.4|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,4
 +
* MODIFY:TOHIT.5|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,5
 +
* MODIFY:TOHIT.6|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,6
 +
* MODIFY:TOHIT.7|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,7
 +
 
 +
That gives us up to seven attacks, all set at the initial to hit value of attack #1. We can then designate each attack to have a decreased value from the initial value.
 +
* MODIFY:TOHIT.3|SUBTRACT|2
 +
 
 +
Attack value assumed 20, Number of attacks set to 5, display would be +20/+20/+18/+20/+20
 +
 
 +
With this thought process, we need to devise a method that can do such things as Haste or Speed
 +
* Items which typically add an additional attack at the highest value
  
  

Revision as of 07:48, 8 December 2014


Proposed Changes

Based off of examples and discussion ideas from Formula_Parser_Equip_Vars_Proposal and Formula_Parser_Equip_Vars_Demo

  • NOTE: All syntax here is in planning stages, nothing is FINALIZED!
  • NOTATION:
  • X = Numerical Value appropriate for variable
  • N = Name as appropriate

New formula system MUST support PRExxx, the alternative is additional Ability objects with PRExxx tags to trigger the Formula. Performance would definitely take a hit.


Thought for attacks:

  • ATTACKS controls how many attacks are available.
  • We have a local 'ATTACKS' for equipment
  • We have a Global 'ATTACKS.Total'
  • MODIFYOTHER:ATTACKS|SOLVE|ATTACKS.Total
  • In our global file we have: MODIFY:ATTACKS.Total|SOLVE|1+min((BASEAB-1)/5,3)
  • This grants first attack, and then the pattern +1 at 6, +2 at 11, +3 at 16
  • Next, since we need fine control over attack bonuses, we set this up:
  • TOHIT.Base, TOHIT.2, TOHIT.3, TOHIT.4, TOHIT.5, etc. (Assume all base PCs should have 5 values - this accounts for 4 attacks from high BAB, and +1 for a speed/haste effect
  • MODIFYOTHER:TOHIT.Base|SOLVE|value()+TOHIT.Total
  • MODIFYOTHER:TOHIT.2|SOLVE|value()+TOHIT.Base|PREVARGTEQ:ATTACKS,2
  • MODIFYOTHER:TOHIT.3|SOLVE|value()+TOHIT.Base|PREVARGTEQ:ATTACKS,3
  • MODIFYOTHER:TOHIT.4|SOLVE|value()+TOHIT.Base|PREVARGTEQ:ATTACKS,4
  • MODIFYOTHER:TOHIT.2|SUBTRACT|5|PREVARGTEQ:ATTACKS,2
  • MODIFYOTHER:TOHIT.3|SUBTRACT|10|PREVARGTEQ:ATTACKS,3
  • MODIFYOTHER:TOHIT.4|SUBTRACT|15|PREVARGTEQ:ATTACKS,4


Now, that handles standard attacks.

For Flurry of Blows:

  • MODIFY:ATTACKS|SOLVE|MonkBAB-1/3 -> This sets us to have more attacks for the Flurry

Next we want to set up the Flurry Attack Values

  • MODIFY:FlurryAttackTotal|SOLVE|value()+TOHIT.Total-2
  • MODIFY:TOHIT.1|SOLVE|value()+FlurryAttackTotal
  • MODIFY:TOHIT.2|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,2
  • MODIFY:TOHIT.3|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,3
  • MODIFY:TOHIT.4|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,4
  • MODIFY:TOHIT.5|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,5
  • MODIFY:TOHIT.6|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,6
  • MODIFY:TOHIT.7|SOLVE|value()+TOHIT.1|PREVARGTEQ:ATTACKS,7

That gives us up to seven attacks, all set at the initial to hit value of attack #1. We can then designate each attack to have a decreased value from the initial value.

  • MODIFY:TOHIT.3|SUBTRACT|2

Attack value assumed 20, Number of attacks set to 5, display would be +20/+20/+18/+20/+20

With this thought process, we need to devise a method that can do such things as Haste or Speed

  • Items which typically add an additional attack at the highest value


Standard Tokens

HANDS:x

  • Defined as "HANDS"
  • Set by MODIFY:HANDS|SET|x

LEGS:x

  • Defined as "LEGS"
  • Set by MODIFY:LEGS|SET|x

FACE:x

  • Defined as "FACE"
  • Set by MODIFY:FACE|SET|x,x
  • NOTE: This is an AREA not a VAR, hence the syntax expression allowed is "x,x"; oddly enough, I am curious how this value will be altered. NOTE FOR TOM!

MOVE:x,y,x,y (x = being valid movement modes such as Walk, Fly, Burrow, Climb, Swim; y = value)

  • Defined as the movement mode name "WALK", "FLY", etc.
  • Set by MODIFY:MOVE.n|SET|x

CR:x

  • Defined as "CR"
  • Set by MODIFY:CR|SET|x
  • Special Consideration as CR has other system mechanic implications handled in the gamemode.

CL:x (CLASS ONLY Token)

  • Defined as "CL"
  • Set by MODIFY:CL|SOLVE|thisclass()

SR:x (Since this typically comes in two race flavors 5+Level, or 11+Level, we can set this up via ability)

  • Defined as "SR"
  • Set by MODIFY:SR|SOLVE|x

CT: (CASTINGTHRESHOLD)

  • Defined as "CT"
  • Set by MODIFY:CT|ADD|x

Special Considerations

FOLLOWERS:x|y - has BONUS:FOLLOWERS|x|y - conversion will require the "y" be a variable

  • Set as "FOLLOWER.n"

ABILITYCATEGORY - has POOL. This should be set "POOL.n"

HD:x - probably be altered to "HD.n" to allow the bonus replacement

HITDIE:x (Three variations - CLASS alters the HD it's located on - use "HD.n", Race/Template alters all granted HD)

MOVEBASE - this should be used exclusively on race or attached if the base.

  • Set "MOVEBASE.n" with n being a valid movement value

BONUS:KNOWN

mastervar() - this needs to be ported over as this function is crucial; we should also get one back 'companionvar()' if possible.

MAXLEVEL:x -

XTRAFEATS:x - DEPRECATE (Can be replicated by BONUS:ABILITYPOOL|FEAT|x, and MODIFY:POOL.FEAT|ADD|x)

MOVECLONE:x,x,y - DEPRECATE (Can be replicated better by MODIFY:MOVE.n2|SOLVE|max(MOVE.n1*2,30)

NONPP:x

  • Set with "NONPP" - Replace Gamemode tag for that.

STARTSKILLPTS:x - replace with local var?

TEMPBONUS??? - Very special consideration!!!

WT:x (Ties into a JIRA for robot armor)

  • Set with "WT"

WIELD:x - need to evaluate due to this going away:

  • EQSIZEPENALTY:35 Size Penalty
  • BONUS:WEAPON|TOHIT|(PC.SIZE.INT-EQUIP.SIZE.INT)*-2|PREVARGT:PC.SIZE.INT,EQUIP.SIZE.INT|!PRETYPE:2,Melee,Natural|!PRETYPE:1,NoAttackPenalty|TYPE=DifferentEQSizePenalty
  • BONUS:WEAPON|TOHIT|(EQUIP.SIZE.INT-PC.SIZE.INT)*-2|PREVARGT:EQUIP.SIZE.INT,PC.SIZE.INT|!PRETYPE:2,Melee,Natural|!PRETYPE:1,NoAttackPenalty|TYPE=DifferentEQSizePenalty * BONUS:WEAPON|TOHIT|SizeIncrease*2|PREVARGT:PC.SIZE.INT,EQUIP.SIZE.INT|!PRETYPE:2,Melee,Natural|PREVARGTEQ:SizeIncrease,1 * BONUS:WEAPON|TOHIT|SizeDecrease*2|PREVARGT:EQUIP.SIZE.INT,PC.SIZE.INT|!PRETYPE:2,Melee,Natural|PREVARGTEQ:SizeDecrease,1 * BONUS:WEAPON|TOHIT|2|PREVARGT:EQUIP.SIZE.INT,PC.SIZE.INT|!PRETYPE:2,Melee,Natural|PREABILITY:1,CATEGORY=Special Ability,Oversized Weapon
  • BONUS:WEAPON|TOHIT|min(OversizeWeaponToHitBonus,((EQUIP.SIZE.INT-PC.SIZE.INT)*2))|PREVARGT:EQUIP.SIZE.INT,PC.SIZE.INT|!PRETYPE:2,Melee,Natural

And this:

WIELDCATEGORY:Light HANDS:1 FINESSABLE:Yes SIZEDIFF:-1 DAMAGEMULT:1=1,2=1 WIELDCATEGORY:OneHanded HANDS:1 SIZEDIFF:0 DAMAGEMULT:1=1,2=1.5 WIELDCATEGORY:TwoHanded HANDS:2 SIZEDIFF:1 DAMAGEMULT:2=1.5 WIELDCATEGORY:TooSmall HANDS:999 WIELDCATEGORY:TooLarge HANDS:999 WIELDCATEGORY:Unusable HANDS:999 WIELDCATEGORY:None HANDS:0

  • Light weapon vs PC size changes

WIELDCATEGORY:Light PREVARLTEQ:EQUIP.SIZE.INT,PC.SIZE.INT-1 SWITCH:TooSmall WIELDCATEGORY:Light PREVAREQ:EQUIP.SIZE.INT,PC.SIZE.INT+1 SWITCH:OneHanded WIELDCATEGORY:Light PREVAREQ:EQUIP.SIZE.INT,PC.SIZE.INT+2 SWITCH:TwoHanded WIELDCATEGORY:Light PREVARGTEQ:EQUIP.SIZE.INT,PC.SIZE.INT+3 SWITCH:TooLarge

  • OneHanded weapon vs PC size changes

WIELDCATEGORY:OneHanded PREVARLTEQ:EQUIP.SIZE.INT,PC.SIZE.INT-2 SWITCH:TooSmall WIELDCATEGORY:OneHanded PREVAREQ:EQUIP.SIZE.INT,PC.SIZE.INT-1 SWITCH:Light WIELDCATEGORY:OneHanded PREVAREQ:EQUIP.SIZE.INT,PC.SIZE.INT+1 SWITCH:TwoHanded WIELDCATEGORY:OneHanded PREVARGTEQ:EQUIP.SIZE.INT,PC.SIZE.INT+2 SWITCH:TooLarge

  • TwoHanded weapon vs PC size changes

WIELDCATEGORY:TwoHanded PREVARLTEQ:EQUIP.SIZE.INT,PC.SIZE.INT-3 SWITCH:TooSmall WIELDCATEGORY:TwoHanded PREVAREQ:EQUIP.SIZE.INT,PC.SIZE.INT-2 SWITCH:Light WIELDCATEGORY:TwoHanded PREVAREQ:EQUIP.SIZE.INT,PC.SIZE.INT-1 SWITCH:OneHanded WIELDCATEGORY:TwoHanded PREVARGTEQ:EQUIP.SIZE.INT,PC.SIZE.INT+1 SWITCH:TooLarge

  1. Wield Category Steps
  2. This is used when figuring bonuses that allow you to wield Larger or Smaller size weapons

WCSTEPSFORMULA:EQUIP.SIZE.INT-PC.SIZE.INT

WIELDCATEGORY:TooSmall UP:Light|OneHanded|TwoHanded ZERO:Light WIELDCATEGORY:Light UP:OneHanded|TwoHanded WIELDCATEGORY:OneHanded UP:TwoHanded DOWN:Light WIELDCATEGORY:TwoHanded DOWN:OneHanded|Light WIELDCATEGORY:TooLarge DOWN:TwoHanded|OneHanded|Light ZERO:TwoHanded </nowiki>


Variables

These have special value that needs to be handled

  • STR & STRSCORE
  • DEX & DEXSCORE
  • CON & CONSCORE
  • INT & INTSCORE
  • WIS & WISSCORE
  • CHA & CHASCORE

=> All should be rather simple to whip up

  • TL => Global 'MODIFY:TL|SOLVE|???' - need a method to grab all levels.
  • CL => Local 'MODIFY:CL|SOLVE|thisclass()'
  • BASECR => Was set by CR on the race, 'MODIFY:BASECR|SET|x' on race
  • CR => MODIFY:CR|SOLVE|value()+BASECR

CASTERLEVEL - gonna need some thought

BASEHD -

  • MODIFY:BASEHD|SOLVE|CLASS.Monster
  • NOTE: All classes designated as "Monster" need "MODIFY:BASEHD|SOLVE|thisclass()"

RACIALHDSIZE

  • MODIFY:RACIALHDSIZE|SET|x - placed in all Class TYPE "Monster"

WEIGHT.CARRIED

WEIGHT.EQUIPPED

WEIGHT.PC

WEIGHT.TOTAL


SKILLTOTAL=name

  • "MODIFY:SKILLTOTAL.n|SOLVE|SKILLRANK.n+SKILL.n+SKILLSTAT.n
  • Debating how we handle bonuses to skills with types "BONUS:SKILL|n|x|TYPE=Competence"
  • MODIFY:SKILL.n|SOLVE|Competence+Profane+Holy+Morale+Misc

TYPEs

We will set up each "TYPE" assigned as a local variable. We will need to establish "Non-Stacking" rules

Common TYPE's

  • Deflection (AC)
  • Dodge (AC, Stacks)
  • Profane (AC)
  • Holy (AC)
  • NaturalArmor (AC)
  • Enhancement (Armor/Weapon/tool)
  • Morale (Attack/Save)
  • Competence (Skill)

AC Types: (Most systems)

  • Base
  • Touch
  • TouchMisc
  • Flatfooted
  • Ability
  • Size
  • Armor
  • ArmorEnhancement
  • Shield
  • ShieldEnhancement
  • NaturalArmor
  • NaturalArmorEnhancement
  • Dodge
  • Deflection
  • Misc
  • Circumstance
  • Insight
  • Morale
  • Profane
  • Sacred/Holy
  • CMD
  • ClassDefense

Stats & Checks

  • FORMULATERM:STR
  • FORMULATERM:DEX
  • FORMULATERM:CON
  • FORMULATERM:INT
  • FORMULATERM:WIS
  • FORMULATERM:CHA

SAVE will be a special case involving FORMULATERM:x

BONUS:SAVE becomes

  • Defined as "SAVE.n"
  • MODIFY:SAVE.n|SOLVE|value()+STATVAR

Equipment Tokens - using Local Formula System

ACCHECK

  • Becomes three Defined values 'ACCHECK' is the total value; 'ACCHECK.Armor' will be used for Armor; 'ACCHECK.Shield' will be used for Shields
  • Conversion will need to realize if ACCHECK is TYPE "Armor" or "Shield" to convert to proper variable.
  • Set by MODIFY:ACCHECK.n|SET|x
  • Example: MODIFY:ACCHECK.Armor|SET|-6

ALTCRITMULT (See also CRITMULT)

  • Defined as "CritMult"
  • Set by 'PART:2|MODIFY:CritMult|SET|x' with x being the value

ALTCRITRANGE (See also CRITRANGE)

  • Defined as "CritRange"
  • Set by 'PART:2|MODIFY:CritRange|SET|x' with x being the value

ALTDAMAGE (Conversion ?)

COST

  • Needs to be considered. We have a lot of issues factoring costs, so using the new system may be beneficial.

CRITMULT (See also ALTCRITMULT)

  • Defined as "CritMult"
  • Set by 'PART:1|MODIFY:CritMult|SET|x'

CRITRANGE

  • Define as "CritRange"
  • Set by 'PART:1|MODIFY:CritRange|SET|x'


DAMAGE (Conversion ?) Would make sense in some aspects, but make things harder in another. Need to contemplate and deliberate with Code and Arch.

EDR

  • Defined as "EDR"
  • Set by 'MODIFY:EDR|SET|x"

FUMBLERANGE

  • Defined as "FUMBLERANGE"
  • Set by 'MODIFY:FUMBLERANGE|SET|x'
  • May use PART:x|MODIFY:FUMBLERANGE|SET|x if double weapon

MAXDEX

  • Defined as "MAXDEX"
  • Set by 'MODIFY:MAXDEX|SET|x'
  • NOTE: This will be presented to "MODIFY:MAXDEX.TOTAL|SOLVE|thisvalue()+MAXDEX" which will set the global Max Dex to work with the d20 systems.

NUMPAGES (?)

PAGEUSAGE (?)

RANGE

  • Defined as "RANGE"
  • Set by 'MODIFY:RANGE|SET|x'

RATEOFFIRE

  • Defined as "RATEOFFIRE"
  • Set by 'MODIFY:RATEOFFIRE|SET|x'

REACH

  • Defined as "REACH"
  • Set by 'MODIFY:REACH|SET|x'

REACHMULT

  • Defined as "REACH" - REACHMULT becomes part of the Formula system.
  • Set by 'MODIFYOTHER:EQUIPMENT.PART|ALL|REACH|SOLVE|value()*x'

SLOTS (EQMHANDS interfaces with this value)

  • Defined as "SLOTS"
  • Set by 'MODIFY:SLOTS|SET|x'

SPELLFAILURE

  • Defined as "SPELLFAILURE"
  • Set by 'MODIFY:SPELLFAILURE|SET|x'
  • NOTE: This will be presented to "MODIFY:SPELLFAILURE.TOTAL|SOLVE|thisvalue()+SPELLFAILURE" which will set the global SPELLFAILURE to work with the d20 systems and OS.
  • NOTE TO TOM: Need to make sure we can grab multiple values to get correct values - such as SPELLFAILURE from equipped Shield and Armor.

WT

  • Defined as "WT"
  • Set by 'MODIFY:WT|SET|x'

BONUS TAGS PROPOSED

ABILITYPOOL => Simple conversion, we implement the POOL:n tag in all the ABILITYCATEGORIES, then use MODIFY for the POOLNAME. Example: MODIFY:POOL.n|ADD|x then ABILITYCATEGORY:Pool <> POOL:POOL.x

BONUS:ACVALUE - Gamemode tag, skipping for now.

BONUS:CASTERLEVEL - This would become MODIFY:CASTERLEVEL.n|SOLVE|thisclass()+CasterLevelBonus.n

  • x = Class Name, we will continue to use 'CASTERLEVEL' as the first portion in all CAPS.


BONUS:CONCENTRATION - Becomes "MODIFY:CONCENTRATION.n|SOLVE|ConcentrationBase+ConcentrationClassBonus.n

  • x = Class Name, we will use CONCENTRATIONBASE to set the base line level across all classes. (Pathfinder only)

BONUS:DC - becomes MODIFY:DC.n|SOLVE|STATBONUS.x


Master Bonus Tag List

  • BONUS:COMBAT (Global BONUS - this applied to all things)
    • Encompasses:
    • "AC",
      • Set as 'AC.n' - due to multiple types, needs extra consideration


    • "ATTACKS", Global is defined as "COMBAT.ATTACKS", local for weapons is "ATTACKS"
      • Set as 'MODIFY:COMBAT.ATTACKS|ADD|x'
    • "BASEAB",
      • Set as 'MODIFY:BASEAB|SOLVE|thisclass("APPLIEDAS=NONEPIC")'
      • "DAMAGE.Weapon or TYPE",
      • "DAMAGEMULT - special values",
      • "DAMAGESIZE",
      • "DAMAGE-SHORTRANGE",
    • "EPICAB",
      • Set as 'MODIFY:BASEAB|SOLVE|thisclass("APPLIEDAS=EPIC")'
    • "INITIATIVE",
      • Set as 'MODIFY:INITIATIVE|ADD|x'
    • "REACH",
      • Global is "REACH.Race", Local is REACH for individual weapons
      • Set as 'MODIFY:REACH.Race|ADD|x'
      • "RANGEPENALTY",
      • "SECONDARYATTACKS",
      • "SECONDARYDAMAGE",
    • "TOHIT",
      • Set as 'MODIFY:COMBAT.TOHIT|ADD|x'
      • "TOHIT.Weapon Type",
      • "TOHIT-PRIMARY",
      • "TOHIT-SECONDARY",
      • "TOHIT-SHORTRANGE"



  • BONUS:DR (Global BONUS) - Special Consideration, may need to keep DR unless Tom has something in mind for the "DR:cold iron/5"


  • BONUS:DOMAIN|NUMBER (Special Consideration - UI ramifications, along with class ramifications)
  • Defined as
  • Modified by 'MODIFYOTHER:||x'


BONUS:EQM|HANDS (Equipment Modifier)

  • Defined as "SLOTS"
  • 'MODIFYOTHER:SLOTS|Z|x'

These following are all handled with the same tag:

  • BONUS:EQM|WEIGHTADD
  • BONUS:EQM|WEIGHTDIV
  • BONUS:EQM|WEIGHTMULT
  • Defined as "WT"
  • Modified by MODIFYOTHER:WT|Z|X
  • Z = ADD, DIVIDE, or MULTIPLY
  • X = Number

BONUS:EQMARMOR|ACCHECK (Equipment Modifier)

  • Defined as 'ACCHECK.Armor'
  • Modified by 'MODIFYOTHER:ACCHECK.Armor|ADD|x'

BONUS:EQMARMOR|EDR (Equipment Modifier)

  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:EQMARMOR|MAXDEX (Equipment Modifier)
  • Defined as 'MAXDEX'
  • Modified by 'MODIFYOTHER:MAXDEX|ADD|x'
  • BONUS:EQMARMOR|SPELLFAILURE (Equipment Modifier)
  • Defined as 'SPELLFAILURE'
  • Modified by 'MODIFYOTHER:SPELLFAILURE|SUBTRACT|x'
  • BONUS:EQMWEAPON|CRITRANGEADD (Equipment Modifier)
  • Defined as 'CRITRANGE'
  • Modified by 'MODIFYOTHER:CRITRANGE|ADD|x'
  • BONUS:EQMWEAPON|CRITRANGEDOUBLE (Equipment Modifier)
  • Defined as 'CRITRANGE'
  • Modified by 'MODIFYOTHER:CRITRANGE|MULTIPLY|2'
  • BONUS:EQMWEAPON|DAMAGESIZE (Equipment Modifier) ???
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:EQMWEAPON|RANGEADD (Equipment Modifier)
  • Defined as 'RANGE'
  • Modified by 'MODIFYOTHER:RANGE|ADD|x'
  • BONUS:EQMWEAPON|RANGEMULT (Equipment Modifier)
  • Defined as 'RANGE'
  • Modified by 'MODIFYOTHER:RANGE|MULT|x'
  • BONUS:FEAT|POOL (Global BONUS)
  • Defined as 'POOL.Feat'
  • Modified by 'MODIFY:POOL.Feat|ADD|x'
  • BONUS:FOLLOWERS (Global BONUS) - Exception tag, needs consideration?
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:HD (CLASS ONLY TAG - increases HD size)
  • Defined as 'HD.N'
  • Modified by 'MODIFYOTHER:HD.N|ADD|x'
  • BONUS:HP
  • Defined as 'HP.CURRENTMAX' or 'HP.ALTHP'
  • Modified by 'MODIFY:n|ADD|x'
  • BONUS:ITEMCAPACITY (Size Adjustment) - Special tag using TYPE - needs evaluation
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:ITEMCOST - Special tag using TYPE - needs evaluation
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:ITEMCOST|TYPE (Global BONUS) - Special tag using TYPE - needs evaluation
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:ITEMCOST (Size Adjustment) - Special tag using TYPE - needs evaluation
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:ITEMWEIGHT (Size Adjustment) - Special tag using TYPE - needs evaluation
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:LANG (Stats & Checks) (In STATNAME Line)
  • Defined as 'LANGUAGE.INTBASED'
  • Modified by 'OTHER:LANGUAGE.INTBASED|ADD|INT'
  • BONUS:LOADMULT (Size Adjustment) - Gamemode - needs consideration
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:LANGUAGES|NUMBER (Global BONUS)
  • Defined as 'LANGUAGE.TOTAL'
  • Modified by 'MODIFY:LANGUAGE.TOTAL|ADD|x'
  • BONUS:LOCKEDSTAT (Global BONUS) - Special tag / review
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:MISC (Global BONUS)
  • Covers these:
    • ACCHECK,
    • CR,
    • MAXDEX,
    • SPELLFAILURE,
    • SR
  • Defined as 'ACCHECK', 'CR', 'MAXDEX', 'SPELLFAILURE', 'SR'
  • Modified by 'MODIFY:n|ADD|x'
  • BONUS:MODSKILLPOINTS (Stats & Checks)
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:MONSKILLPTS|LOCKNUMBER (Template)
  • Defined as
  • Modified by 'MODIFYOTHER:||x'

BONUS:MOVEADD|TYPE & BONUS:MOVEMULT|TYPE

  • Valid normal values are any defined movement - Walk, Fly, Swim, Climb, Burrow
  • Defined as 'MOVE.n'
  • Modified by 'MODIFY:MOVE|ADD|x'
  • Modified by 'MODIFY:MOVE|MULTIPLY|x'
  • BONUS:PCLEVEL (Global BONUS)
  • Defined as 'PCLEVEL.n'
  • Modified by 'MODIFYOTHER:PCLEVEL.n|ADD|x'
  • BONUS:POSTMOVEADD|TYPE (Global BONUS)
  • Valid normal values are any defined movement - Walk, Fly, Swim, Climb, Burrow
  • Defined as 'MOVE.n'
  • Modified by 'MODIFY:MOVE|ADD|x|PRIORITY=1000'
  • BONUS:POSTRANGEADD (Global BONUS)
  • Defined as 'RANGE'
  • Modified by 'MODIFYOTHER:RANGE|ADD|x|PRIORITY=1000'
  • BONUS:PPCOST (Spell)
  • Defined as 'PPCOST'
  • Modified by 'MODIFYOTHER:PPCOST|ADD|x'
  • BONUS:RANGEADD (Global BONUS)
  • Defined as 'RANGE'
  • Modified by 'MODIFYOTHER:RANGE|ADD|x'
  • BONUS:RANGEMULT (Global BONUS)
  • Defined as 'RANGE'
  • Modified by 'MODIFYOTHER:RANGE|MULTIPLY|x'
  • BONUS:SAVE (Global BONUS) - will this convert?
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:SITUATION (Global BONUS)
  • Defined as 'SITUATION.n'
  • Modified by 'MODIFYOTHER:SITUATION.n|ADD|x'
  • BONUS:SIZEMOD|NUMBER (Global BONUS)
  • Defined as 'SIZEMOD'
  • Modified by 'MODIFY:SIZEMOD|ADD/SUBTRACT|x'
  • BONUS:SKILL (Global BONUS)
  • Defined as 'SKILL.n'
  • Modified by 'MODIFYOTHER:SKILL.n|ADD/SUBTRACT|x'
  • BONUS:SKILLRANK (Global BONUS)
  • Defined as 'SKILLRANK.n'
  • Modified by 'MODIFYOTHER:SKILLRANK.n|ADD|x'
  • BONUS:SKILLPOINTS (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:SKILLPOOL - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:SLOTS (Global BONUS)
  • Defined as 'SLOT.n'
  • Modified by 'MODIFY:SLOT.n|ADD/SUBTRACT|x'
  • BONUS:SPECIALTYSPELLKNOWN (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:SPELLCAST (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:SPELLCASTMULT (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:SPELLKNOWN (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:SPELLKNOWNMULT (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:STAT (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:STAT|BASESPELLKNOWNSTAT (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:STAT|BASESPELLKNOWNSTAT:CLASS (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:STAT|BASESPELLSTAT (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:STAT|BASESPELLSTAT;CLASS (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:UDAM (Global BONUS) - Special considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:VAR (Global BONUS) - DEPRECATED!
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:VISION (Global BONUS)
  • Defined as 'VISION.n'
  • Modified by 'MODIFY:VISION.n|ADD|x'
  • BONUS:WEAPON (Global BONUS) - REVIEW
  • Values
      • 'ATTACKS',
      • 'ATTACKSPROGRESS',
      • 'DAMAGE',
      • 'DAMAGEMULT',
      • 'DAMAGE-SHORTRANGE',
      • 'TOHIT',
      • 'TOHIT-SHORTRANGE',
      • 'WEAPONBAB',
      • 'WIELDCATEGORY'.
  • Defined as 'ATTACKS', 'ATTACKSPROGRESS', 'DAMAGE', 'DAMAGEMULT', 'DAMAGE-SHORTRANGE', 'TOHIT', 'TOHIT-SHORTRANGE', 'WEAPONBAB', 'WIELDCATEGORY'
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:WEAPONPROF (Global BONUS) - Special Considerations
  • Defined as
  • Modified by 'MODIFYOTHER:||x'
  • BONUS:WIELDCATEGORY (Global BONUS) - this needs to consider single item and all items.
  • Defined as 'WIELDCATEGORY'
  • Modified by 'MODIFYOTHER:WIELDCATEGORY|ADD/SUBTRACT|x'

NEW DEFINES

Any Class/Object name with a SPACE in it's name will use an UNDERSCORE '_' to replace the space, as I don't believe that the System can handle SPACES. (Check with Tom)

  • POOL.n > Used for ABILITYCATEGORY on the POOL: token "POOL:POOL.n" to easily designate Pools we can alter.
  • CASTERLEVEL.n = Used for all classes that CAST spells. n = Class Name. Example CASTERLEVEL.Wizard, CASTERLEVEL.Mage_Blade
  • AC.n = Used for designating the AC Type. Example, AC.NATURAL.

DEPRECATION

  • JEP Formula Parser which includes:
    • DEFINE:x
    • BONUS:VAR
  • All Bonus Tags are planned on being replaced by the Formula Parser system in the future and any base tag that they affect is a potential candidate for Formula Parser replacement, such as:
  • HANDS
  • LEGS
  • CR
  • SLOTS
  • CRITMULT
  • ACCHECK,
  • MAXDEX,
  • SPELLFAILURE,
  • SR
  • DR (BONUS:DR is an odd duck)


Homebrew Conversion Start

Here is a basic list of conversion - should be universal.

NOTE: This is still in the planning phase, this is not official yet.

Tag Name Converted to Reviewable? Comments
CRITMULT:x PART:1|MODIFY:CritMult|SET|x No No concerns
CRITRANGE:x PART:1|MODIFY:CritRange|SET|x No No concerns
ALTCRITMULT:x PART:2|MODIFY:CritMult|SET|x No No concerns
ALTCRITRANGE:x PART:2|MODIFY:CritRange|SET|x No No concerns
PLACEHOLDER


Conversion Process Ideas

Keeping homebrews caught up with changes in pcgen is a daunting task. We strive to make it easier for those who maintain their own data to keep up with production cycle changes. This Formula Parser is going to be a tough conversion process, since this will not be an apples to apples process. Many issues hinder a one-to-one or apples-to-apples conversion approach:

  1. TERMS are not allowed
  2. Some magical back up parser would kick in if JEP failed
  3. JEP and FORMULA parser will not interact at all
  4. The vars and replacement tokens are Data Scope and Driven by Data Decisions
  5. TYPE=x is not supported in the new system, making BONUS:VAR|MyVar|5|TYPE=Competence much harder to convert.

A suggestion I made was a PER gamemode system migration file to help with conversions. This would house all the OLDTAGS and give them the "NEWTAG". However, this does not address the TYPE=x issue.

Tom has some ideas, but needs to discuss the ramifications with the development team.