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.