Difference between revisions of "Formula Parser Conversion - Data"
LegacyKing (talk | contribs) |
LegacyKing (talk | contribs) |
||
| Line 2: | Line 2: | ||
===Proposed Changes=== | ===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! | * NOTE: All syntax here is in planning stages, nothing is FINALIZED! | ||
* NOTATION: | * NOTATION: | ||
* X = Numerical Value appropriate for variable | * X = Numerical Value appropriate for variable | ||
* N = Name as appropriate | * 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 ==== | ==== Standard Tokens ==== | ||
| Line 15: | Line 41: | ||
* Defined as "LEGS" | * Defined as "LEGS" | ||
* Set by MODIFY:LEGS|SET|x | * 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) | MOVE:x,y,x,y (x = being valid movement modes such as Walk, Fly, Burrow, Climb, Swim; y = value) | ||
| Line 32: | Line 63: | ||
* Defined as "SR" | * Defined as "SR" | ||
* Set by MODIFY:SR|SOLVE|x | * 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 === | === Stats & Checks === | ||
| + | * FORMULATERM:STR | ||
| + | * FORMULATERM:DEX | ||
| + | * FORMULATERM:CON | ||
| + | * FORMULATERM:INT | ||
| + | * FORMULATERM:WIS | ||
| + | * FORMULATERM:CHA | ||
| + | |||
SAVE will be a special case involving FORMULATERM:x | SAVE will be a special case involving FORMULATERM:x | ||
| Line 296: | Line 520: | ||
** SR | ** SR | ||
* Defined as 'ACCHECK', 'CR', 'MAXDEX', 'SPELLFAILURE', 'SR' | * Defined as 'ACCHECK', 'CR', 'MAXDEX', 'SPELLFAILURE', 'SR' | ||
| − | * Modified by ' | + | * Modified by 'MODIFY:n|ADD|x' |
* BONUS:MODSKILLPOINTS (Stats & Checks) | * BONUS:MODSKILLPOINTS (Stats & Checks) | ||
| Line 306: | Line 530: | ||
* Modified by 'MODIFYOTHER:||x' | * Modified by 'MODIFYOTHER:||x' | ||
| − | + | BONUS:MOVEADD|TYPE & BONUS:MOVEMULT|TYPE | |
* Valid normal values are any defined movement - Walk, Fly, Swim, Climb, Burrow | * Valid normal values are any defined movement - Walk, Fly, Swim, Climb, Burrow | ||
* Defined as 'MOVE.n' | * Defined as 'MOVE.n' | ||
* Modified by 'MODIFY:MOVE|ADD|x' | * Modified by 'MODIFY:MOVE|ADD|x' | ||
| − | |||
| − | |||
| − | |||
| − | |||
* Modified by 'MODIFY:MOVE|MULTIPLY|x' | * Modified by 'MODIFY:MOVE|MULTIPLY|x' | ||
| Line 452: | Line 672: | ||
* POOL.n > Used for ABILITYCATEGORY on the POOL: token "POOL:POOL.n" to easily designate Pools we can alter. | * 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 | * 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 === | === DEPRECATION === | ||
| Line 458: | Line 678: | ||
** DEFINE:x | ** DEFINE:x | ||
** BONUS:VAR | ** BONUS:VAR | ||
| − | * All Bonus Tags are planned on being replaced by the Formula Parser system and any base tag that they affect is a potential candidate for Formula Parser replacement, such as: | + | * 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 | * HANDS | ||
* LEGS | * LEGS | ||
| Line 468: | Line 688: | ||
* SPELLFAILURE, | * SPELLFAILURE, | ||
* SR | * SR | ||
| + | * DR (BONUS:DR is an odd duck) | ||
| + | |||
=== Homebrew Conversion Start === | === Homebrew Conversion Start === | ||
| Line 493: | Line 715: | ||
|} | |} | ||
| + | |||
| + | |||
| + | == 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. | ||
Revision as of 14:14, 7 December 2014
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.