Formula Parser Conversion - Data
Contents
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:
- ATTACKS.1, ATTACKS.2, ATTACKS.3, ATTACKS.4, etc.
- MODIFY:ATTACKS.1|SOLVE|value()+TOHIT.Total
- MODIFY:ATTACKS.2|SOLVE|value()+TOHIT.Total-5|PREVARGTEQ:ATTACKS,2
- MODIFY:ATTACKS.3|SOLVE|value()+TOHIT.Total-10|PREVARGTEQ:ATTACKS,3
- MODIFY:ATTACKS.4|SOLVE|value()+TOHIT.Total-15|PREVARGTEQ:ATTACKS,4
Now, that handles standard attacks.
For Flurry of Blows:
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
- Wield Category Steps
- 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'
- "ATTACKS", Global is defined as "COMBAT.ATTACKS", local for weapons is "ATTACKS"
- "BASEAB",
- Set as 'MODIFY:BASEAB|SOLVE|thisclass("APPLIEDAS=NONEPIC")'
- "BASEAB",
- "DAMAGE.Weapon or TYPE",
- "DAMAGEMULT - special values",
- "DAMAGESIZE",
- "DAMAGE-SHORTRANGE",
- "EPICAB",
- Set as 'MODIFY:BASEAB|SOLVE|thisclass("APPLIEDAS=EPIC")'
- "EPICAB",
- "INITIATIVE",
- Set as 'MODIFY:INITIATIVE|ADD|x'
- "INITIATIVE",
- "REACH",
- Global is "REACH.Race", Local is REACH for individual weapons
- Set as 'MODIFY:REACH.Race|ADD|x'
- "REACH",
- "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:
- TERMS are not allowed
- Some magical back up parser would kick in if JEP failed
- JEP and FORMULA parser will not interact at all
- The vars and replacement tokens are Data Scope and Driven by Data Decisions
- 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.