Possible Die Roll Bug

I’m still using 3.0.17 for my module construction at this time and I ran across what I believe to be a bug.

I have several types of die rolls the you would find in a Dungeon style game (D4, D8, D20, etc) and I have buttons on the map so players can click the appropriate button for the die they need to roll. These buttons use the Action Button trait which triggers a Global Hotkey attached to that particular die roll and everything seems to be fine.

The problem occurs when the player rolls what I call a Dxyz die. This triggers the die roll that “Prompts the user to enter values” so players can enter rolls such as D8 + 3 by filling in the blanks for number of dice rolled, number of sides on the die and number to add.

If this roll is selected from a toolbar menu, where it’s nested, it works fine. But if I set it up as an action button like the rest of the die rolls, the results of the roll are displayed ok but I also get the following error:

An untrapped error has occurred
ConcurrentModificationException

I thought that maybe I’d duplicated hotkeys somewhere (I’ve done that before) but I’ve changed the hotkey several times to keys I know are NOT being used anywhere else and I still get the error.

Is this a bug or is there something else going on? Below is the error log.

Thanx

– OS Windows XP
– Java version 1.6.0_03
– VASSAL version 3.0.17
– To_Be_King version 0.9.5b (Vassal 3.0.17)
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at VASSAL.build.GameModule.fireKeyStroke(GameModule.java:334)
at VASSAL.counters.GlobalHotKey.myKeyEvent(GlobalHotKey.java:69)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:244)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.Decorator.keyEvent(Decorator.java:245)
at VASSAL.counters.ActionButton$ButtonPusher.doClick(ActionButton.java:232)
at VASSAL.counters.ActionButton$ButtonPusher$MapMouseListener.mouseClicked(ActionButton.java:252)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at VASSAL.build.module.Map.mouseClicked(Map.java:1073)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.AWTEventMulticaster.mouseClicked(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 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)

Since we’re on the subject, I wanted to ask about something I find as odd about this Dxyz die roll.

The way it’s set up, the last entry, when prompted for values, is for adding a number to each die rolled. Why would someone need it that way?

For example, I can see a die roll like 2D8 + 3 as being something that would occur in a Dungeon style game. (In fact, I use die rolls like this all the time). But the way it’s set up now, if I entered these values into the entry boxes, I’d essentially be rolling:

(D8 + 3) + (D8 + 3)

Shouldn’t the value in the last entry simply be added to the overall total of the die roll or is there a need for the current way it’s set up? …and if there is a need, could a variation to the current set up be added?

Thanx

Good question. Adding an overall value at the end makes more sense.

I’ll take a look at the bug you reported.

rk

Post generated using Mail2Forum (mail2forum.com)

On May 23, 2008, at 4:02 PM, Rodney Kinney wrote:

Especially because

  1. It is the common way die roll modifiers are handled in games
  2. You can always make an overall add have the same effect as a per-
    die add,
    but you can’t do it the other way around because you might need
    fractional
    values.

Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

The bug is fixed for the next beta release, and I’ve added an “Add to Overall Total” attribute in the properties.

rk

Post generated using Mail2Forum (mail2forum.com)

Awesome!

Thanx