LST Editor Verification
Introduction
This is a test run on the current (5.16.2) LST editors to identify what paths are safe and the bugs that need to be fixed.
Environment: Windows XP, Java 1.6, PCGen 5.16.2, Pathfinder RPF Gamemode (data release 6)
Conclusion
As shipped in 5.16.2, all editors apart from the source editor are able to function well enough for their intended audience of creating simple LST items by light users. Most do have some minor issues which will be addressed in 5.16.3. The source editor is the exception and is not currently usable. Again this will be rectified n 5.16.3
As a result the request for a warning dialog on the LST editors will be cancelled and it is recommended that people be assisted with the use of the LST editors rather than discouraging their use.
5.16.2
Results of the test run against PCGen v5.16.2
Class Editor
Create a copy of a spellcasting class. Ensure skills, spells, HD, saves are all picked up and that abilities can be assigned
- Click Spells, select Bard and click Copy
- Base:
- Class Name, Display Name: Editor Test – Class
- ABB: Etc
- Starting Skill Points : 7
- Types: Base, PC
- Abilities: Spell List: 1|Bard
- Levels: Checks – Good reflex, Fort, Avg Will
- Skills: Remove Stealth, add Fly
- Advanced: ADD: ABILITY|2|FEAT|NORMAL|Alertness
Verify:
- Add tag was not displayed in advanced tab so added it again.
- Errors in console: CODE-139
LSTERROR pcgen.rules.context.LoadContext EXCHANGELEVEL may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'EXCHANGELEVEL' '' for pcgen.core.PCClass Editor Test – Class LSTERROR pcgen.rules.context.LoadContext EXCLASS may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'EXCLASS' '' for pcgen.core.PCClass Editor Test – Class LSTERROR pcgen.rules.context.LoadContext Illegal Token 'AUTO:WEAPONPROF' '' for pcgen.core.PCClass Editor Test – Class LSTERROR pcgen.rules.context.LoadContext LANGBONUS may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'LANGBONUS' '' for pcgen.core.PCClass Editor Test - Class
- Created character of the class.
- ADD chooser fired 3 times, once with a choice of alertness, twice as no choices. Feat was added. CODE-138
- Spells, skills all fine
Deity Editor
Create a new deity with associated alignment, domains and favored weapons.
- Click on deity, click on new
- Base:
- Name: Ptolemy
- Holy Item: Almanac
- Align: NG
- Weapon: Sword (Short)
- Source: p109
- Domains: Earth, Knowledge, Sun, Travel
Verify: All as input, no debug output
Created a cleric of Ptolemy, could be selected as expected and domains appeared correctly.
Domain Editor
Create a new domain truth and assign spells to each level
- Click on Domain, click on new
- Base: Domain Name: Truth; Source: p15; Product Identity: yes
- Spells: In order: Detect Chaos, Discern Lies, Zone of Truth, Tongues, Touch of Fatigue, Tiny Hut, Touch of Idiocy, Transformation, Time Stop
- Save
Verify: Spells lost CODE-140
Feat Editor
Copy the Improved Initiative feat to a new Greater Improved Initiative feat that requires the Improved Initiative feat and change the bonus to be +6 to init.
- Click on Feat, select Improved Initiative and click Copy
- Base: Feat Name: Greater Improved Initiative, Type: Combat
- Advanced: BONUS:COMBAT|INITIATIVE|6 and PREFEAT:1,Improved Initiative
Verify:
- All as input,
- Debug output as follows: CODE-141
LSTERROR pcgen.rules.context.LoadContext Illegal Token 'AUTO:WEAPONPROF' '' for pcgen.core.Ability Greater Improved Initiative
Created a fighter, gave them feat Improved Initiative and fighter feat Greater Improved Init. Bonuses as expected (+10)
Language Editor
Create a new language Klingon with both a spoken and written form.
- Click on Language, click New
- Case: Language: Klingon; Types: Spoken, Written, Source: p17
- Save
Verify: All as input, no debug output Not available as a bonus language for an Elven fighter. Available as a Linguistics skill choice.
Race Editor
Create a new race Klingon by copying Dwarf. Race gets a bonus +1 to melee damage as well as bonuses to STR and CHA but penalty to WIS
- Click on Race, select Dwarf and click Copy
- Base: Race Name: Klingon; Display Name: Klingon
- Templates: Remove Dwarf
- Advanced: BONUS:STAT|WIS|-2 ; BONUS:STAT|CON,CHA|2 ; BONUS:COMBAT|DAMAGE.Melee|1
Verify:
- All as input,
- Debug output as follows: CODE-142
LSTERROR pcgen.rules.context.LoadContext HITDICEADVANCEMENT may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'HITDICEADVANCEMENT' '' for pcgen.core.Race Klingon SEVERE plugin.lsttokens.race.MonsterclassToken Number of levels in MONSTERCLASS must be greater than zero: (None):0 LSTERROR pcgen.rules.context.LoadContext Illegal Token 'MONSTERCLASS' '(None):0' for pcgen.core.Race Klingon LSTERROR pcgen.rules.context.LoadContext FAVCLASS may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'FAVCLASS' '' for pcgen.core.Race Klingon LSTERROR pcgen.rules.context.LoadContext LANGAUTO may not have empty argument LSTERROR pcgen.rules.context.LoadContext Failed in parsing subtoken: LANGAUTO of LSTERROR pcgen.rules.context.LoadContext Illegal CHOOSE subtoken 'LANGAUTO' '' for Klingon LSTERROR pcgen.rules.context.LoadContext Illegal Token 'CHOOSE' 'LANGAUTO|' for pcgen.core.Race Klingon LSTERROR pcgen.rules.context.LoadContext Illegal Token 'AUTO:WEAPONPROF' '' for pcgen.core.Race Klingon LSTERROR pcgen.rules.context.LoadContext LANGBONUS may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'LANGBONUS' '' for pcgen.core.Race Klingon SEVERE pcgen.rules.context.LoadContext !!XTRASKILLPTSPERLVL must be an integer > 0
Created character with race Klingon, bonuses to stats and damage as expected.
Skill Editor
Copy the Swim skill to create a Dig skill, making it a class skill for fighters and rangers. Gain a +2 synergy bonus if you have 5 ranks of acrobatics
- Click on Skill, select Swim and click Copy
- Base: Skill Name: Dig
- Synergy: Acrobatics=5=2
- Advanced: Remove all
Verify:
- Synergy entry is converted to a bonus on the advanced tab
- Debug output: CODE-143
LSTERROR pcgen.rules.context.LoadContext Illegal Token 'AUTO:WEAPONPROF' '' for pcgen.core.Skill Dig
Skill is shown as a class skill for a fighter but cross-class for an adept
Spell Editor
Copy the Cure Light Wounds spell and rename to Light Cure. Remove domain links
- Click on Spell, select Cure Light Wounds and click Copy
- Base: Spell Name: Light Cure ; Description: Change to be 2d4+…
- Classes: Cleric=1
- Domains Glory=1
- Save
Verify:
- Classes lost on save, domains retained. CODE-118
- Classes and domains lost on copy CODE-137
- Debug output: CODE-144
SEVERE pcgen.rules.context.LoadContext !!COST requires a positive Integer
Spell added to cleric who chose glory domain.
Template
Create a new template Bonus Traits which gives 2 extra trait choices.
- Select Template and click New
- Base: Template Name: Bonus Traits
- Advanced: BONUS:ABILITYPOOL|TRAITS|2
- Click Save
Verify:
- All as input
- Debug output as follows: CODE-145
LSTERROR pcgen.rules.context.LoadContext FAVOREDCLASS may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'FAVOREDCLASS' '' for pcgen.core.PCTemplate Bonus Traits LSTERROR pcgen.rules.context.LoadContext LANGAUTO may not have empty argument LSTERROR pcgen.rules.context.LoadContext Failed in parsing subtoken: LANGAUTO of LSTERROR pcgen.rules.context.LoadContext Illegal CHOOSE subtoken 'LANGAUTO' '' for Bonus Traits LSTERROR pcgen.rules.context.LoadContext Illegal Token 'CHOOSE' 'LANGAUTO|' for pcgen.core.PCTemplate Bonus Traits LSTERROR pcgen.rules.context.LoadContext FEAT may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'FEAT' '' for pcgen.core.PCTemplate Bonus Traits LSTERROR pcgen.rules.context.LoadContext LANGBONUS may not have empty argument LSTERROR pcgen.rules.context.LoadContext Illegal Token 'LANGBONUS' '' for pcgen.core.PCTemplate Bonus Traits LSTERROR pcgen.rules.context.LoadContext Illegal Token 'AUTO:WEAPONPROF' '' for pcgen.core.PCTemplate Bonus Traits
Added to character and they received the bonus.
Source Editor
Create a new 35e source that loads both the 35 players set and the pcgen OGL set
- Click on Source, click New
- Base:
- Campaign Name: 35e PCGen Player
- Info text: Player’s sources plus the PCGen OGL
- Game mode: 35e
- Pub name short and long: PCGen
- Rank 1
- Book type: Campaign Setting
- Location of File: DataTest.pcc
- File Types: Failed to add PCC file with exception: CODE-147
SEVERE pcgen.gui.PCGen_Frame1$WaitCursorEventQueue Uncaught error - ignoring java.lang.NullPointerException at pcgen.gui.editor.SourceFilesPanel$1.actionPerformed(Unknown Source) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at pcgen.gui.PCGen_Frame1$WaitCursorEventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.Dialog$1.run(Unknown Source) at java.awt.Dialog$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at pcgen.gui.LstEditorMain.editIt(Unknown Source) at pcgen.gui.LstEditorMain.btnNewActionPerformed(Unknown Source) at pcgen.gui.LstEditorMain.access$500(Unknown Source) at pcgen.gui.LstEditorMain$5.actionPerformed(Unknown Source) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at pcgen.gui.PCGen_Frame1$WaitCursorEventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
- Save
LST error on save: CODE-146
SEVERE pcgen.core.Globals Could not find campaign: 35e PCGen Player