Giter Club home page Giter Club logo

anathema_legacy's Introduction

Build Status

Gradle will set itself up during the first build on any system. It requires an active internet connection to do so.

Set Up

Developing with IntelliJ IDEA

  1. Run gradlew idea to create the IDEA project files.
  2. Import the project into IDEA.
  3. (If necessary,) open the 'Project Structure' Dialog (Ctrl+Alt+Shift+S) and set the Project SDK to a SDK > 6.0.

Developing with Eclipse

  1. Run gradlew eclipse to create the Eclipse project files.
  2. Import all projects into Eclipse.

Developing with NetBeans

  1. Have the Gradle Support plugin installed.
  2. Optional: Configure your global preferences.
  3. Open the project as you would open any other project in NetBeans.

Development

Launching Anathema (IDE)###

Launch net.sf.anathema.AnathemaBootLoader

Launching Anathema (Command Prompt)###

Run gradlew run

Running the unit test suite###

Run gradlew test

Running the integration test suite###

Run gradlew cucumber

Adding a dependency

  1. Add the dependency entry to the module's build.gradle.
  2. Run gradlew eclipseClasspath or gradlew ideaModule respectively.

Adding a new module

IntelliJ IDEA users best run this outside of the IDE, else it might not pick up all changes.

  1. Run gradlew createModule
  2. Regenerate your IDE's workspace as per the "Developing with..." sections above.

Building Anathema

This command builds the distribution artifacts for Linux, OS X and Windows.
For the full process, see the wiki.

  1. Run gradlew clean build
  2. Fetch your artifacts from ./build/Anathema x.x.x

A word from our sponsors

JetBrains helps development with a license for IntelliJ IDEA Ultimate. IntelliJ IDEA logo ej-technologies provides us with a Java profiler for solving hard performance puzzlers.

anathema_legacy's People

Contributors

curttasker avatar dirk-c-walter avatar ericastor avatar fmneto avatar jontukontar avatar kelemen avatar mo0nmokey avatar nolith avatar rlrutherford avatar shadow493 avatar smattox avatar the-smith avatar urskr avatar vestrial avatar whiteveil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

anathema_legacy's Issues

Fix the character sheet for spirits & ghosts

The sheets for spirits & ghosts have some issues:

  • It shows a line for caste, where they have none.
  • It shows an area for Anima, where they have none.
  • Ghost print a line for Caste & Anima, but have neither.

Allow items of any material for any Exalt

Birdi:
The equipment database keeps bringing up errors when I add items to the character, no matter what stats or magical materials I put down. Am I doing something wrong?

@the-smith:
Not sure: I'm seeing a Severe Error that asks if I want to close the program when I attach an item of vitriolic jade to an Infernal, but I'm having no problems attaching a Compound item to said Infernal (though it looks like the Attunement cost still needs some tweaking). However, attaching an item of Compound construction results in an Error that gives a debug trace. Forwarded on to the team.

A new error, that occurs when I try to give a Solar an item of Compound construction:

java.lang.UnsupportedOperationException: Unsupported trait type Cecelyne
       at net.sf.anathema.character.impl.model.traits.CoreTraitConfiguration.getTrait(CoreTraitConfiguration.java:141)
       at net.sf.anathema.character.impl.model.traits.CoreTraitConfiguration.getTrait(CoreTraitConfiguration.java:39)
       at net.sf.anathema.character.impl.model.charm.CharmConfiguration.isLearnable(CharmConfiguration.java:470)
       at net.sf.anathema.character.presenter.charm.CharacterCharmSelectionPresenter.setCharmVisuals(CharacterCharmSelectionPresenter.java:244)
       at net.sf.anathema.character.presenter.charm.CharacterCharmSelectionPresenter.setCharmVisuals(CharacterCharmSelectionPresenter.java:254)
       at net.sf.anathema.character.presenter.charm.CharacterCharmSelectionPresenter.access$800(CharacterCharmSelectionPresenter.java:58)
       at net.sf.anathema.character.presenter.charm.CharacterCharmSelectionPresenter$6.changeOccured(CharacterCharmSelectionPresenter.java:148)
       at net.sf.anathema.lib.control.change.ChangeControl.fireChangedEvent(ChangeControl.java:16)
       at net.sf.anathema.character.impl.model.charm.CharmConfiguration.fireLearnConditionsChanged(CharmConfiguration.java:431)
       at net.sf.anathema.character.impl.model.charm.CharmConfiguration.access$400(CharmConfiguration.java:56)
       at net.sf.anathema.character.impl.model.charm.CharmConfiguration$3.characterChanged(CharmConfiguration.java:390)
       at net.sf.anathema.character.impl.model.context.CharacterListening$1.execute(CharacterListening.java:31)
       at net.sf.anathema.character.impl.model.context.CharacterListening$1.execute(CharacterListening.java:29)
       at net.sf.anathema.lib.control.GenericControl.forAllDo(GenericControl.java:21)
       at net.sf.anathema.character.impl.model.context.CharacterListening.fireCharacterChanged(CharacterListening.java:29)
       at net.sf.anathema.character.impl.model.CharacterStatistics$6.changeOccured(CharacterStatistics.java:109)
       at net.sf.anathema.lib.control.change.ChangeControl.fireChangedEvent(ChangeControl.java:16)
       at net.sf.anathema.character.equipment.impl.character.model.AbstractEquipmentAdditionalModel.initItem(AbstractEquipmentAdditionalModel.java:85)
       at net.sf.anathema.character.equipment.impl.character.model.AbstractEquipmentAdditionalModel.addEquipmentObjectFor(AbstractEquipmentAdditionalModel.java:76)
       at net.sf.anathema.character.equipment.impl.character.model.AbstractEquipmentAdditionalModel.addEquipmentObjectFor(AbstractEquipmentAdditionalModel.java:66)
       at net.sf.anathema.character.equipment.character.EquipmentAdditionalPresenter$4.execute(EquipmentAdditionalPresenter.java:115)
       at net.disy.commons.swing.action.SmartAction.actionPerformed(SmartAction.java:66)

Consolidate removal of Charms when editing a Combo

When editing a combo, the original Charms are shown grayed out to indicate the can't/shouldn't be removed from the Combo.

It is still possible to remove them, though, since the corresponding button is not disabled.

Grant material boni for Adamant

Capybara reports:
Untainted Adamant also seems to do nothing, even for Armor where the soak and mobility bonus are visible (where Piercing and other tags are not, in the case of weapons).

From Lords of Creation, p88:
"Close & Ranged: Give piercing tag. Reduce enemy soak if already piercing.
Armor: Add 3L soak. Reduce Mob.Pen. by 1."

Build windows executable on any system

Right now, the windows executable is only build on a Windows OS.
This is unnecessary, all it takes is for the properly built binaries to be put inside the folder in /Thirdparty and for the system specific connection to be made in build.gradle.

Infernal experience costs for spells are wrong

From Viidian on WW forums:

Hey, I'm generating an Infernal Exalt and its giving me 10/12 XP costs for favoured/non-favoured Charms, instead of the 8/10 xp split. Is there some reason it's charging that rather than the official rate for GSPs?

[EDIT] Hmm, apparently that's because it looks like the XP template for Infernals has accidentally had the Lunar one pasted in, rather than the correct one for Infernals.

You can see this if you look at the data in:

InfernalExperienceCost2nd.template

in:

\plugins\character_infernal.jar\data\template\

This should be a very simple change that we want for 3.0.1.

Allow Infernal Charms to be comboed

RedSypher reports that he can't combo

  • (ED) 1st Ebon Dragon Excellency
  • (Cecyline: Wind) Threat-Monitoring Excitement)
  • (ED: Loom) Bloodless Murk Evasion,

but should be able to.

Our own @the-smith confirms that Infernal Charms currently can't be comboed at all.

He adds:
"The rough basics are that because Infernal charms are not broken up by Trait, they can be combo'd in about any fashion that makes sense: as long as the different parts of the combo can work in a situation, it's legal. Infernal and non-Infernal charms can also be combo'd, as long as the combination makes sense and the most restrictive Charm governs the use of the combo (ie, a Solar Melee charm and an Infernal extra action charm can be combo'd, but it will only affect melee actions while the Infernal extra action charm might well be broader). It's about 2 pages before the Infernal Excellencies, in the Charms section of the Infernals book."

Validate update check behavior

Hi guys,

As of this time our "Check for Updates" feature has a dependency on Sourceforge. It pulls the latest version information for Anathema from SF and compares it with the client version to determine if an update is needed. I do not know what our current intentions are with respect to continued support for the Sourceforge packages, but we should keep this in mind and possibly adjust the behavior if necessary.

FindBugs report

I have executed FindBugs on the sources of Anathema. It reports lots of (possible) errors and these are in most cases real issues and bugs. These errors need to be addressed in the future. However I don't want to fix them until kelemen/lookandfeels_disy is pulled (#17) to avoid the conflicts.

Allow characters to change off of Eclipse again

Capybara! reports:

  • Create a Solar
  • Switch caste to Eclipse
  • Go to Magic=>Charms
  • Select a non-Solar charmset
  • Switch caste to anything else`
java.lang.NullPointerException
    at net.sf.anathema.charmtree.presenter.view.AbstractCharmGroupChangeListener.loadCharmTree(AbstractCharmGroupChangeListener.java:84)
    at net.sf.anathema.charmtree.presenter.view.AbstractCharmGroupChangeListener.valueChanged(AbstractCharmGroupChangeListener.java:45)
    at net.sf.anathema.charmtree.AbstractCascadeSelectionView$1.valueChanged(AbstractCascadeSelectionView.java:72)
    at net.sf.anathema.charmtree.AbstractCascadeSelectionView$1.valueChanged(AbstractCascadeSelectionView.java:70)
    at net.sf.anathema.lib.control.objectvalue.ObjectValueControl.fireValueChangedEvent(ObjectValueControl.java:21)
    at net.sf.anathema.lib.gui.widgets.ChangeableJComboBox.setObjects(ChangeableJComboBox.java:56)
    at net.sf.anathema.charmtree.AbstractCascadeSelectionView.fillCharmGroupBox(AbstractCascadeSelectionView.java:48)
    at net.sf.anathema.character.presenter.charm.CharacterCharmSelectionPresenter.handleTypeSelectionChange(CharacterCharmSelectionPresenter.java:218)
    at net.sf.anathema.character.presenter.charm.CharacterCharmSelectionPresenter$8.valueChanged(CharacterCharmSelectionPresenter.java:207)
    at net.sf.anathema.character.presenter.charm.CharacterCharmSelectionPresenter$8.valueChanged(CharacterCharmSelectionPresenter.java:204)
    at net.sf.anathema.lib.control.objectvalue.ObjectValueControl.fireValueChangedEvent(ObjectValueControl.java:21)
    at net.sf.anathema.lib.gui.widgets.ChangeableJComboBox$1.itemStateChanged(ChangeableJComboBox.java:34)

Change an item statistics' name without errors

@the-smith reports:
"there's problems in the older equipment areas (Close Combat,
Ranged, Armor, Shield). The first problem is that Anathema puts in
the type of item as it's name and resists the users changing that by
popping up a message that says "Please enter a name for this set of
statistics" while you attempt to give it a name (causing your typing
cursor to move to a different spot in the letters you're typing).
This message appears and disappears as you add letters to the name."

I get

java.lang.IllegalStateException: Attempt to mutate in notification
    at javax.swing.text.AbstractDocument.writeLock(Unknown Source)
    at javax.swing.text.AbstractDocument.replace(Unknown Source)
    at javax.swing.text.JTextComponent.setText(Unknown Source)
    at net.sf.anathema.lib.workflow.textualdescription.view.TextView.setText(TextView.java:32)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$2.valueChanged(TextualPresentation.java:16)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$2.valueChanged(TextualPresentation.java:14)
    at net.sf.anathema.lib.control.objectvalue.ObjectValueControl.fireValueChangedEvent(ObjectValueControl.java:21)
    at net.sf.anathema.lib.workflow.textualdescription.model.SimpleTextualDescription.fireChangedEvent(SimpleTextualDescription.java:36)
    at net.sf.anathema.lib.workflow.textualdescription.model.AbstractTextualDescription.setDirty(AbstractTextualDescription.java:15)
    at net.sf.anathema.lib.workflow.textualdescription.model.SimpleTextualDescription.setText(SimpleTextualDescription.java:31)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$1.valueChanged(TextualPresentation.java:10)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$1.valueChanged(TextualPresentation.java:8)
    at net.sf.anathema.lib.workflow.textualdescription.view.TextView$1.updateText(TextView.java:40)
    at net.sf.anathema.lib.gui.event.AbstractDocumentListener.removeUpdate(AbstractDocumentListener.java:13)
    at javax.swing.text.AbstractDocument.fireRemoveUpdate(Unknown Source)
    at javax.swing.text.AbstractDocument.handleRemove(Unknown Source)
    at javax.swing.text.AbstractDocument.remove(Unknown Source)
    at javax.swing.text.AbstractDocument.replace(Unknown Source)
    at javax.swing.text.JTextComponent.setText(Unknown Source)
    at net.sf.anathema.lib.workflow.textualdescription.view.TextView.setText(TextView.java:32)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$2.valueChanged(TextualPresentation.java:16)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$2.valueChanged(TextualPresentation.java:14)
    at net.sf.anathema.lib.control.objectvalue.ObjectValueControl.fireValueChangedEvent(ObjectValueControl.java:21)
    at net.sf.anathema.lib.workflow.textualdescription.model.SimpleTextualDescription.fireChangedEvent(SimpleTextualDescription.java:36)
    at net.sf.anathema.lib.workflow.textualdescription.model.AbstractTextualDescription.setDirty(AbstractTextualDescription.java:15)
    at net.sf.anathema.lib.workflow.textualdescription.model.SimpleTextualDescription.setText(SimpleTextualDescription.java:31)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$1.valueChanged(TextualPresentation.java:10)
    at net.sf.anathema.lib.workflow.textualdescription.TextualPresentation$1.valueChanged(TextualPresentation.java:8)
    at net.sf.anathema.lib.workflow.textualdescription.view.TextView$1.updateText(TextView.java:40)
    at net.sf.anathema.lib.gui.event.AbstractDocumentListener.insertUpdate(AbstractDocumentListener.java:9)
    at javax.swing.text.AbstractDocument.fireInsertUpdate(Unknown Source)
    at javax.swing.text.AbstractDocument.handleInsertString(Unknown Source)
    at javax.swing.text.AbstractDocument.insertString(Unknown Source)
    at javax.swing.text.PlainDocument.insertString(Unknown Source)
    at javax.swing.text.AbstractDocument.replace(Unknown Source)
    at javax.swing.text.JTextComponent.replaceSelection(Unknown Source)
    at javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction.actionPerformed(Unknown Source)
    at javax.swing.SwingUtilities.notifyAction(Unknown Source)
    at javax.swing.JComponent.processKeyBinding(Unknown Source)
    at javax.swing.JComponent.processKeyBindings(Unknown Source)
    at javax.swing.JComponent.processKeyEvent(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.KeyboardFocusManager.redispatchEvent(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
    at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(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.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.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.WaitDispatchSupport$2.run(Unknown Source)
    at java.awt.WaitDispatchSupport$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(Unknown Source)
    at java.awt.Dialog.show(Unknown Source)
    at net.disy.commons.swing.dialog.core.SwingDialog.show(SwingDialog.java:101)
    at net.disy.commons.swing.dialog.wizard.WizardDialog.show(WizardDialog.java:250)
    at net.sf.anathema.character.equipment.impl.item.model.EquipmentStatsCreationFactory.runDialog(EquipmentStatsCreationFactory.java:88)
    at net.sf.anathema.character.equipment.impl.item.model.EquipmentStatsCreationFactory.createNewStats(EquipmentStatsCreationFactory.java:65)
    at net.sf.anathema.character.equipment.item.AddNewStatsAction.execute(AddNewStatsAction.java:55)
    at net.disy.commons.swing.action.SmartAction.actionPerformed(SmartAction.java:66)
    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.AWTEventMulticaster.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.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$000(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.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)

com.eteks.parser.IntegerInterpreter bug?

While fixing the code due the the disy commons update, I have came across a warning in com.eteks.parser.IntegerInterpreter in line number 138 (near Syntax.OPERATOR_MODULO). I'm not sure what it should do but it doesn't seems to be good.

I just hope it is not used in Anathema :)

Editing Combos does not work

Changelog reports "Added an option to upgrade combos for 1 XP, per errata."

There is a button for this, however:

  • Created Solar (Revised)
  • Learned some Charms
  • Created Combo
  • Switched To XP
  • Edited Combo
  • Added a Charm
    => Button Disabled

ClassCastException when creating new character

When trying to create a 2nd edition Solar an exception was thrown. I have used the toolbar to create a new character. I think to trigger this bug you have to be really fast (or have your computer work on something expensive) but I cannot confirm if being fast is required. However, the second time (I was not yet able to reproduce the bug a third time) I triggered this bug I quickly clicked the new character on the toolbar right after starting anathema then clicked finished within milliseconds. Also in this second try the new character dialog showed an empty list yet I was able to click finish and create a new solar page.

The exception was this (on kelemen/lookandfeels_disy branch):

java.lang.ClassCastException: net.infonode.gui.draggable.DraggableComponentBox$3 cannot be cast to net.infonode.gui.ScrollableBox
at net.infonode.gui.draggable.DraggableComponentBox$9.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.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 net.disy.commons.swing.dialog.progress.InternalProgressDialog.show(InternalProgressDialog.java:96)
at net.disy.commons.swing.dialog.progress.ProgressMonitorExecutor.run(ProgressMonitorExecutor.java:84)
at net.disy.commons.swing.dialog.progress.ProgressMonitorDialog.run(ProgressMonitorDialog.java:50)
at net.sf.anathema.framework.presenter.action.ItemCreationOperator.operate(ItemCreationOperator.java:38)
at net.sf.anathema.framework.presenter.action.ItemTypeNewAction.execute(ItemTypeNewAction.java:69)
at net.disy.commons.swing.action.SmartAction.actionPerformed(SmartAction.java:66)
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.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.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.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.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)

Throw no exception in the 'Combos' view when no Charms are learned

  • Create new Character
  • Go to Magic -> Combos
  • Mouse over the empty "Available Charms" panel:
[ERROR] java.lang.ArrayIndexOutOfBoundsException: -1
    at java.util.Vector.elementAt(Vector.java:430)
    at javax.swing.DefaultListModel.getElementAt(DefaultListModel.java:70)
    at net.sf.anathema.character.generic.framework.magic.view.MagicLearnView$1.getToolTipText(MagicLearnView.java:38)
    at javax.swing.ToolTipManager$insideTimerAction.actionPerformed(ToolTipManager.java:662)
    at javax.swing.Timer.fireActionPerformed(Timer.java:291)
    at javax.swing.Timer$DoPostEvent.run(Timer.java:221)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:646)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:607)
    at java.awt.EventQueue$1.run(EventQueue.java:605)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:616)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Allow non-Latin-1 characters in character names

@kelemen reports in Issue #1:
The bug manifest itself only if you use such characters in the name of the
character.

I have tested this bug and it is present in Anathema 2.0.1 (official).
However in the original version it can be triggered when non latin1 (the
chracters you have tried were latin1 characters) character is used as name
for the character. If the encoding is changed to utf-8 the bug will trigger
if non ascii7 character is used in the name.

This is the exception @UrsKR reproduced with the character name "さくら":
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at net.sf.anathema.character.generic.framework.resources.CharacterUI.getSmallTypeIcon(CharacterUI.java:43)
at net.sf.anathema.character.impl.module.CharacterTypeUi.getIcon(CharacterTypeUi.java:41)
at net.disy.commons.swing.ui.ObjectUiListCellRenderer.getListCellRendererComponent(ObjectUiListCellRenderer.java:32)
at javax.swing.plaf.basic.BasicListUI.updateLayoutState(BasicListUI.java:1361)
at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(BasicListUI.java:1311)
at javax.swing.plaf.basic.BasicListUI.getPreferredSize(BasicListUI.java:578)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
at javax.swing.JList.getPreferredScrollableViewportSize(JList.java:2449)
at javax.swing.ViewportLayout.preferredLayoutSize(ViewportLayout.java:92)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at javax.swing.ScrollPaneLayout.preferredLayoutSize(ScrollPaneLayout.java:492)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at net.disy.commons.swing.layout.grid.GridCell.(GridCell.java:33)
at net.disy.commons.swing.layout.grid.GridBuilder.add(GridBuilder.java:44)
at net.disy.commons.swing.layout.grid.GridDialogLayout.createGrid(GridDialogLayout.java:350)
at net.disy.commons.swing.layout.grid.GridDialogLayout.getLayoutSize(GridDialogLayout.java:333)
at net.disy.commons.swing.layout.grid.GridDialogLayout.preferredLayoutSize(GridDialogLayout.java:323)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at java.awt.GridLayout.preferredLayoutSize(GridLayout.java:341)
at java.awt.Container.preferredSize(Container.java:1788)
at java.awt.Container.getPreferredSize(Container.java:1773)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1662)
at net.disy.commons.swing.dialog.core.AbstractDialog.updateSize(AbstractDialog.java:145)
at net.disy.commons.swing.dialog.core.AbstractDialog.setMessage(AbstractDialog.java:167)
at net.disy.commons.swing.dialog.wizard.WizardDialog.updateMessage(WizardDialog.java:253)
at net.disy.commons.swing.dialog.wizard.WizardDialog.showPage(WizardDialog.java:218)
at net.disy.commons.swing.dialog.wizard.WizardDialog.getConfiguredDialog(WizardDialog.java:276)
at net.sf.anathema.framework.presenter.action.AbstractItemAction.showDialog(AbstractItemAction.java:30)
at net.sf.anathema.framework.presenter.action.ItemTypeLoadAction.execute(ItemTypeLoadAction.java:70)
at net.disy.commons.swing.action.SmartAction.actionPerformed(SmartAction.java:107)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Print craft dots only once on the sheet

In v3.0.0, the sheet prints the craft section twice.

  • Create Solar
  • Print the sheet
  • Print the sheet again

=> The craft-section appears twice on the second printout, bleeding over the box the second time.

Automatic removal of Charms fails

Changelog reports: "Implemented removal of charms when character's statistics are adjusted to be below the prerequisites."
Sean Mattox on the list confirms that this was working.

However, it does not seem to happen:
I was testing the feature in general, to see if it required polish:

  • Created Solar (Revised)
  • Set Archery 5
  • Learned 3 Excellencies, Essence Arrow Attack and Phantom Arrow Technique (<= Requires Archery: 3)
  • Set Archery 2
    => Phantom Arrow Technique is grayed out, but not deselected and appears on the sheet.

Allow Elemental Bolt Attack to be comboed with Loyal Weapon

Xelloss33:
Elemental Bolt Attack should be combo-able with loyal weapon and other Thrown Charms. It's not.

@the-smith:
Hmmm. It's here but only in part: you CAN combo Elemental Bolt Attack with First Thrown Excellency, but not with Loyal Weapon. Have to dig at this a bit, we made changes to make this work but it's not working entirely, apparently.

@JMobius:
The support for it was there, but I wasn't entirely certain which charms it applied to. We can trivially add Loyal Weapon to the list (and whatever else anyone cares to mention) for something like a 3.0.1 release.

Gradelize remaining projects

Anathema_Acceptance_Tests and some of the Development_* are not yet on Gradle.
To make future changes easier, we should remedy that.

Use disk background and icons on the mac

As is, they are ignored.
To do that, you need a Mac Developer Account ($100) or other specialized software (as Eric mentioned), so it was out of reach.
Or you create a template.dmg and update that for each release, but I could not get that to work.

Add Infernal Backgrounds

Add them by name only, so they appear in the dropdown.
No rule support:

Infernals do not seem to have options for Unwoven Coadjutor or Demonic Familiar as Backgrounds

Change the damage type of weapon stats

@the-smith reports
"for weapons, it does not let you choose Bashing or Aggravated damage types, only Lethal."

I get this recursive exception when changing the damage type:

 at javax.swing.JComboBox.setSelectedItem(Unknown Source)
        at net.sf.anathema.lib.gui.widgets.ChangeableJComboBox.setSelectedObject(ChangeableJComboBox.java:44)
        at net.sf.anathema.character.equipment.impl.creation.view.WeaponDamageView.setSelectedObject(WeaponDamageView.java:60)
        at net.sf.anathema.character.equipment.impl.creation.view.WeaponDamageView.setSelectedObject(WeaponDamageView.java:17)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter.updateHealthTypeInView(WeaponDamagePresenter.java:48)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter.access$000(WeaponDamagePresenter.java:15)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter$1.changeOccured(WeaponDamagePresenter.java:35)
        at net.sf.anathema.lib.control.change.ChangeControl.fireChangedEvent(ChangeControl.java:16)
        at net.sf.anathema.character.equipment.impl.creation.model.WeaponDamageModel.setHealthType(WeaponDamageModel.java:32)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter$2.valueChanged(WeaponDamagePresenter.java:40)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter$2.valueChanged(WeaponDamagePresenter.java:38)
        at net.sf.anathema.lib.control.objectvalue.ObjectValueControl.fireValueChangedEvent(ObjectValueControl.java:21)
        at net.sf.anathema.lib.gui.widgets.ChangeableJComboBox$1.itemStateChanged(ChangeableJComboBox.java:34)
        at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)
        at javax.swing.JComboBox.selectedItemChanged(Unknown Source)
        at javax.swing.JComboBox.setSelectedItem(Unknown Source)
        at net.sf.anathema.lib.gui.widgets.ChangeableJComboBox.setSelectedObject(ChangeableJComboBox.java:44)
        at net.sf.anathema.character.equipment.impl.creation.view.WeaponDamageView.setSelectedObject(WeaponDamageView.java:60)
        at net.sf.anathema.character.equipment.impl.creation.view.WeaponDamageView.setSelectedObject(WeaponDamageView.java:17)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter.updateHealthTypeInView(WeaponDamagePresenter.java:48)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter.access$000(WeaponDamagePresenter.java:15)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter$1.changeOccured(WeaponDamagePresenter.java:35)
        at net.sf.anathema.lib.control.change.ChangeControl.fireChangedEvent(ChangeControl.java:16)
        at net.sf.anathema.character.equipment.impl.creation.model.WeaponDamageModel.setHealthType(WeaponDamageModel.java:32)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter$2.valueChanged(WeaponDamagePresenter.java:40)
        at net.sf.anathema.character.equipment.creation.presenter.stats.WeaponDamagePresenter$2.valueChanged(WeaponDamagePresenter.java:38)
        at net.sf.anathema.lib.control.objectvalue.ObjectValueControl.fireValueChangedEvent(ObjectValueControl.java:21)
        at net.sf.anathema.lib.gui.widgets.ChangeableJComboBox$1.itemStateChanged(ChangeableJComboBox.java:34)
        at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)
        at javax.swing.JComboBox.selectedItemChanged(Unknown Source)
        at javax.swing.JComboBox.setSelectedItem(Unknown Source)
        at net.sf.anathema.lib.gui.widgets.ChangeableJComboBox.setSelectedObject(ChangeableJComboBox.java:44)

Show effect picks for multi-effect Charms only once

Sometimes, multi-effect Charms have their picks listed more than once. I've witnessed this for (Solar Integrity) Phoenix Renewal Technique, (DB Resistance) Element Protection Form and (Infernal - SWLiHN - Ego) Wholeness Rightly Assumed.

Solar Charms are changed in Revision 49a6f68
Dragon-Blooded Charms are changed in Revision b9bb1ee
Infernal Charms are changed in Revisions 612a872 and f3c9ef2

"Special" Charms are broken

Changelog reports: "All "special" charms are now specified via a data-driven method".

This appears to work in general, however, various Charms seem to be broken.

_Known Problems_:

  1. See #28
  2. See #29
  3. See #30

Create writable repository on Windows 7

A version created with gradle buildWindowsInstaller fails to start on Windows 7 because it cannot create a Equipment database file.
Furthermore, a build unzipped into c:\program files (x86)\anathema crashes because it can't create a repo directory there.

Character_Thaumaturgy is in master and does not compile

If you try to build Anathema based on "/build.gradle" Character_Thaumaturgy will prevent Anathema to compile.

To the best of my knowledge thaumaturgy is out for 3.0, so at least the "/Character_Thaumaturgy/build.gradle" file should be removed from the master branch and moved to a new branch.

Unhandled exception thrown while clicking around in the charm view

I believe that this exception occurred in 37e9e26 (but please confirm me @UrsKR).

Here is what I have done:

  • Chose a new 2nd edition Solar.
  • Increased all of its attributes to 5 (except for craft)
  • Increased essence to 5.
  • Started to select randomly charms in the Solar/Dodge group randomly (I did this fast and just clicked around)
  • After a few clicks, the following exception was thrown:
java.lang.ArrayIndexOutOfBoundsException: 14 >= 14
       at java.util.Vector.elementAt(Unknown Source)
       at javax.swing.DefaultListModel.getElementAt(Unknown Source)
       at javax.swing.plaf.basic.BasicListUI.updateLayoutState(Unknown Source)
       at javax.swing.plaf.basic.BasicListUI.maybeUpdateLayoutState(Unknown Source)
       at javax.swing.plaf.basic.BasicListUI.getPreferredSize(Unknown Source)
       at javax.swing.JComponent.getPreferredSize(Unknown Source)
       at javax.swing.ScrollPaneLayout.layoutContainer(Unknown Source)
       at java.awt.Container.layout(Unknown Source)
       at java.awt.Container.doLayout(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validateTree(Unknown Source)
       at java.awt.Container.validate(Unknown Source)
       at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
       at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
       at java.awt.event.InvocationEvent.dispatch(Unknown Source)
       at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
       at java.awt.EventQueue.access$000(Unknown Source)
       at java.awt.EventQueue$3.run(Unknown Source)
       at java.awt.EventQueue$3.run(Unknown Source)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
       at java.awt.EventQueue.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)

Print Sidereals

  • Create a new Sidereal
  • 'Print' to a Second Edition Character Sheet
[ERROR] net.sf.anathema.framework.reporting.ReportException: java.lang.UnsupportedOperationException: Trait Template Collection can't handle custom trait types
    at net.sf.anathema.character.impl.reporting.SimpleExaltSheetReport.performPrint(SimpleExaltSheetReport.java:80)
    at net.sf.anathema.framework.reporting.ITextReportPrinter.printReport(ITextReportPrinter.java:22)
    at net.sf.anathema.framework.reporting.AnathemaPrintAction.performPrint(AnathemaPrintAction.java:152)
    at net.sf.anathema.framework.reporting.AnathemaPrintAction.access$000(AnathemaPrintAction.java:37)
    at net.sf.anathema.framework.reporting.AnathemaPrintAction$1.run(AnathemaPrintAction.java:108)
    at net.disy.commons.swing.dialog.progress.ProgressMonitorExecutor$1.run(ProgressMonitorExecutor.java:52)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.UnsupportedOperationException: Trait Template Collection can't handle custom trait types
    at net.sf.anathema.character.generic.impl.traits.TraitTemplateCollection$1.visitCustomTraitType(TraitTemplateCollection.java:54)
    at net.sf.anathema.character.sidereal.colleges.model.CollegeType.accept(CollegeType.java:16)
    at net.sf.anathema.character.generic.impl.traits.TraitTemplateCollection.getTraitTemplate(TraitTemplateCollection.java:24)
    at net.sf.anathema.character.reporting.pdf.content.traits.FavorableTraitContent.getTraitMax(FavorableTraitContent.java:86)
    at net.sf.anathema.character.reporting.pdf.rendering.general.traits.FavorableTraitBoxContentEncoder.encodeFavorableTrait(FavorableTraitBoxContentEncoder.java:108)
    at net.sf.anathema.character.reporting.pdf.rendering.general.traits.FavorableTraitBoxContentEncoder.encodeTraitGroup(FavorableTraitBoxContentEncoder.java:89)
    at net.sf.anathema.character.reporting.pdf.rendering.general.traits.FavorableTraitBoxContentEncoder.encodeTraitGroups(FavorableTraitBoxContentEncoder.java:63)
    at net.sf.anathema.character.reporting.pdf.rendering.general.traits.FavorableTraitBoxContentEncoder.encode(FavorableTraitBoxContentEncoder.java:49)
    at net.sf.anathema.character.reporting.pdf.rendering.general.box.PdfBoxEncoder.encodeBox(PdfBoxEncoder.java:48)
    at net.sf.anathema.character.reporting.pdf.rendering.general.box.PdfBoxEncoder.encodeBox(PdfBoxEncoder.java:42)
    at net.sf.anathema.character.sidereal.reporting.layout.Sidereal2ndEditionDetailsPageEncoder.encodeColleges(Sidereal2ndEditionDetailsPageEncoder.java:163)
    at net.sf.anathema.character.sidereal.reporting.layout.Sidereal2ndEditionDetailsPageEncoder.encode(Sidereal2ndEditionDetailsPageEncoder.java:57)
    at net.sf.anathema.character.impl.reporting.SimpleExaltSheetReport.performPrint(SimpleExaltSheetReport.java:77)
    ... 6 more

Grant material bonuses for vitriolic materials

Capybara! says:
When adding equipment to a character, there is no adjustment to the traits of weapons made out of a single magical material (variable) when a vitriol-material is selected, even when the double attunement cost is specified.

Keep only one list of dependencies

Right now, there are eclipse's .classpath files and gradle's build files, both sharing the dependencies.
Try to generate the eclipse files from the gradle ones.
Same for IntelliJ

Project files

Since the last update of Anathema the projects cannot be easily opend by Eclipse. Previously set workspaces won't work. There are dependencies defined in the eclipse projects no longer exists. If so the guide to open the code on the website must be update.

@UrsKR: What is the intended way to open the projects?

Sun proprietary api is used many places in Anathema

Sun (now Oracle) is free to remove/change these classes in the future because they are not part of the Java API so they should not be used.

The following classes use these APIs:

Project "Lib_Gui"

  • net.sf.anathema.lib.gui.ui.ColoredWindowsComboBoxUI
  • net.sf.anathema.lib.gui.ui.ComboBoxPainter
  • net.sf.anathema.lib.gui.widgets.ColoredJComboBox

Model equipment for Infernals properly

@the-smith and @JMobius found out that Infernals need some extra work to have their equipment modelled properly.
The gist, from the mailing list:

1 - a new Composition of Artifacts (Malfean materials) that costs
double for magical material-resonating Exalts to attune, but normal
cost to attune for Malfeans, akuma, and Infernals. This Composition
works otherwise like a mixed-material artifact, ie, no magical
material bonuses.

2 - a tag to Vitriol-taint an artifact made of the magical materials.
This cuts the attunement cost in half for Malfeans, akuma, and
Infernals, but doubles attunment for magical material-resonating
Exalts (ie, an moonsilver artifact that normally costs a Lunar 2 motes
to attune would cost her 4 points to attune if it were
Vitriol-tainted; for Infernals it would normally be 4 points to attune
but 2 if it were Vitriol-tainted).

3 - The above should fix the issue with Attunement cost showing up as
the same for an Infernal with magical materials and Vitriol-tainted
magical materials, but if it doesn't, Infernals pay double attunement
costs for any artifact that isn't either of Malfean construction or
Vitriol-tainted.

Activate Infernals Templates

@the-smith reports on the list:
Most obvious thing (from 2 minutes of looking): where's the Infernals?
I know the charmsets are there, and I'm certain I remember Sean getting their templates in place last year. But they don't show as a character type or a charm type.

Fix rendering of Solar Melee Charm tree

@the-smith reports:
there's something not right with the code that
displays the charm trees. Take a look at Solar Melee: at least for
me, the 4th row of charms where Thousand Arms Prana appears, followed
by Sun-Sword Concentration, etc, is way offset to the right, making
the whole thing hard to use even on a 24" monitor.

Calculate XP for edited combos correctly

The XP cost for the combo is not correctly calculated.
As is, the program deducts 1 XP for the modification, but does not deduct any points for the new Charm itself.

  • Create Character
  • Learn Charms
  • Create Combo
  • Set Experienced
  • Add Charm to Combo
  • Commit with XP

=> Only 1 XP deducted, not 1+[Min. Ability] XP

Externalize Thirdparty libraries

Instead of having the entirety of the thirdparty libraries in our repository, we should externalize them, so Gradle downloads them when required.
This makes migration to new versions of a lib much easier, and makes it clearer to see which versions are actually in use.

To this end, I'd like to replace the current dependencies upon Thirdparty/** with maven-style dependencies as far as possible.
Where impossible (e.g not available in an existing repository or the existing repo doesn't seem reliable), we could make our own repo here on github by reordering the jars and adding POM files to them.

Watch out: The dependency files are referenced in Anathema's plugin.xml and plugin-fragment.xml files!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.