This can be treated the same way. Just define none of the Horde pieces as promoting, and entirely rely on the user-supplied function WeirdPromotion() to handle all promotions. Then you can make the depth (or in fact any shape) of the promotion zone dependent on the piece type. I checked, and I see there already is a way to veto a move: return 1022 as the promotion piece. For a real promotion, return the number of the promoted piece type.
There doesn't seem to be a provision for kamikaze moves, though; returning 0 means no promotion. So I would have to add a code for that (1021?).
This can be treated the same way. Just define none of the Horde pieces as promoting, and entirely rely on the user-supplied function WeirdPromotion() to handle all promotions. Then you can make the depth (or in fact any shape) of the promotion zone dependent on the piece type. I checked, and I see there already is a way to veto a move: return 1022 as the promotion piece. For a real promotion, return the number of the promoted piece type.
There doesn't seem to be a provision for kamikaze moves, though; returning 0 means no promotion. So I would have to add a code for that (1021?).