Another GamePieceID question

Like the poster here …

viewtopic.php?f=6&t=7998

I am getting that same error when trying to Refresh Pieces. I have a base module and a number of extensions and it is failing when I have any of the extensions added (though the base module did refresh fine). Looking at my base module, all of the gpids are okay …

<VASSAL.build.widget.PieceSlot entryName="Pz IIIFL" gpid="161" height="103" width="102">+/null/prototype;German Tank	piece;;;G-Pz-IIIFL;Pz IIIFL/ null;0;0;161</VASSAL.build.widget.PieceSlot>

But on my extensions, they all have an extensionID in the first line of the build file …

<VASSAL.build.module.ModuleExtension anyModule="false" description="Ghost Panzer - Jim Krohn © Worthington Games" extensionId="8gp" module="Band of Brothers" moduleVersion="2.1" nextPieceSlotId="103" vassalVersion="3.2.16" version="2.0">

seems to have been carried over into the GamePieceIDs, as shown here …

<VASSAL.build.widget.PieceSlot entryName="KV1M41" gpid="8gp:77" height="103" width="102">+/null/prototype;Russian Tank	piece;;;R-KV1M41;KV1M41/ null;0;0;8gp:77</VASSAL.build.widget.PieceSlot>

I have two questions …

  1. Can I simply remove the extensionID from the gpid (for example, using the case above, gpid=“77”)?

  2. Do the gpid’s in the extensions have to be different integers from the base module, or as long as they are all different inside each separate module and extension, can they repeat?

Thanks.

Hi Davey,

The short answer is that there is a bug in the Refresh pieces code when trying to refresh a scenario with an extension loaded.

To answer your questions

  1. No, don’t do this. The extensionId is required.
  2. No, they don’t have to be different integers. However, the bug is thinking gpid ‘77’ in the module is the same as gpid ‘8gp:77’ in the extension and causing the refresh to fail. No, they cannot repeat. You could workaround this by changing the numeric part of the gpid’s in the extension to be guaranteed different from any in the main module (e.g. by adding 1000 to each). However, this will impact your ability to be able to refresh older scenarios.

I have opened a Bug Tracker item (http://www.vassalengine.org/tracker/show_bug.cgi?id=12533) and found and fixed the bug. Committed to the repository changeset #9230.

Hopefully we can get this into a new version of Vassal soon.

Regards,
Brent.

Thus spake Brent Easton:

Hi Davey,

The short answer is that there is a bug in the Refresh pieces code when
trying to refresh a scenario with an extension loaded.

To answer your questions

  1. No, don’t do this. The extensionId is required.
  2. No, they don’t have to be different integers. However, the bug is
    thinking gpid ‘77’ in the module is the same as gpid ‘8gp:77’ in the
    extension and causing the refresh to fail. No, they cannot repeat. You
    could workaround this by changing the numeric part of the gpid’s in the
    extension to be guaranteed different from any in the main module (e.g.
    by adding 1000 to each). However, this will impact your ability to be
    able to refresh older scenarios.

I have opened a Bug Tracker item
(vassalengine.org/tracker/sho … i?id=12533) and found
and fixed the bug. Committed to the repository changeset #9230.

Hopefully we can get this into a new version of Vassal soon.

Regards,
Brent.

The fix is in the current development build, 3.2.17-svn9243, available
here:

vassalengine.sourceforge.net/builds/

J.