[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]
Check out Janggi (Korean Chess), our featured variant for December, 2024.
Check out Janggi (Korean Chess), our featured variant for December, 2024.
You certainly know how to push the ID to its limits...
It appears unloading of locust victims was not implemented in the betza.txt GAME-code include file; if an unload was specified it would always use the piece that was in the destination square. I now added some code to replace that by the locust victim if there was any, and the destination square was empty.
This is all related to lack of a clear definition on what the XBetza u should do, and which I have been hesitant to specify. The original idea was to unload the piece taken at the destination. But since that leaves the case where the destination was empty useless, I let the ID use the locust victim as backup. Which was unambiguous at the time the ID would only allow a single locust victim. But then the newClick move entry allowed an arbitrary number of those. And I already made an exception that a u on the leg immediately following a c or d leg would prefer to unload the locust victim of that preceding leg, rather than the victim at the destination, to make the friendly/enemy-hopping kludge work. (This is already implemented at the parsing stage of the XBetza, so it would work for ID and GAME code alike, and none of the involved modifiers would be treated as a locust victim or unload at execution.)
So the currently applied rule is (1) replace all cau/dau combinations by a hypothetical p'/p" for enemy/friendly hopping only, and if a u is left, unload there (2) the victim at the destination, or if not present (3) the locust victim. There is no provision for when multiple u are left; I guess these would unload the same.
The friendly-hopping kludge is not really needed anymore in the ID, now that the captureMatrix can specify a hop ban based on the involved colored types: one can simply specify p in the XBetza, ban hopping over all types of one color, and allow it over all types of the other color. But the GAME code does not implement capture matrices yet.
For the time being it is still undefined what would happen for a true unload when there are multiple locust victims and no replacement capture. (A case that the current GAME code does not support anyway.)