This is something that is not possible with the diagram alone. When you specify multiple promoting pieces they all promote according to the same promoChoice string. Unless you specify a promoOffset; then you have Shogi-style promotions, and each promotable piece will promote to a predetermined type promoOffset further in the list, and the only choice you have is to promote or defer.
The diagram script has a 'hook', however, with which yuou can provide your own JavaScript function for verifying promotion choice: when you embed a function WeirdPromotion in the page, it will be called after any move, passing the square coordinates, moved piece and (in any) proposed promotion choice. And can then return the actual promotion piece, including a code that means refusal of the move. Using that you could define the promoChoice as the combination of all possible choices of all promotable pieces, and let the WeirdPromotion routine refuse any choice that does not belong to the piece type. Downside is that this will not affect which piece types will be highlighted in the table, when you have to make the choice. Because WeirPromotion is only called after you made the choice.
This is something that is not possible with the diagram alone. When you specify multiple promoting pieces they all promote according to the same promoChoice string. Unless you specify a promoOffset; then you have Shogi-style promotions, and each promotable piece will promote to a predetermined type promoOffset further in the list, and the only choice you have is to promote or defer.
The diagram script has a 'hook', however, with which yuou can provide your own JavaScript function for verifying promotion choice: when you embed a function WeirdPromotion in the page, it will be called after any move, passing the square coordinates, moved piece and (in any) proposed promotion choice. And can then return the actual promotion piece, including a code that means refusal of the move. Using that you could define the promoChoice as the combination of all possible choices of all promotable pieces, and let the WeirdPromotion routine refuse any choice that does not belong to the piece type. Downside is that this will not affect which piece types will be highlighted in the table, when you have to make the choice. Because WeirPromotion is only called after you made the choice.