Moved marking and layer priority

It would be a good idea to post a link to your module (see also How to report problems). That will help us help you. If you cannot post your module, for whatever reason, then try to make a Minimale Working Example (MWE) that illustrates your problem.

See Reference manual - Trait Ordering and YOU (and also this post by @Brent_Easton). As Brent points out, it is absolutely crucial that module developers understand trait ordering.

One thing not mentioned in the reference manual or elsewhere, as far as I can tell, is how PrototypeTraits are handled. When VASSAL constructs a piece (or card, or whatever that has traits), it fully unpacks the traits. Suppose you have

  • Prototype A
    • BasicTrait - empty
    • Trait A1
    • Trait A2
  • Prototype B
    • BasicTrait - empty
    • Trait B1
    • Trait B2
  • Prototype A'
    • BasicTrait - empty
    • PrototypeTrait: name = A
    • Trait A'1
  • Piece a
    • BasicTrait - name = a
    • Trait a1
    • PrototypeTrait: name = A'
    • PrototypeTrait: name = B
    • Trait: a2

(Note that all elements that carries traits must have a BasicTrait as the last (top-most) element of the traits list).

When the piece a is constructed, it is fully expanded (except BasicTraits in prototypes) and becomes

  • Piece a (expanded)
    • BasicTrait name: a
    • Trait a1
    • Trait A1 (from prototype A via prototype A')
    • Trait A2 (from prototype A via prototype A')
    • Trait A'1 (from prototype A')
    • Trait B1 (from prototype B)
    • Trait B2 (from prototype B)
    • Trait a2

If @jrwatts suggestion is the answer to your problem, please remember to mark that as the solution. That will help others that may have a similar problem.

Yours,
Christian

1 Like