diff options
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | src/game.rs | 10 |
2 files changed, 14 insertions, 2 deletions
@@ -49,3 +49,9 @@ for this purpose. Note that the engine is expected to respect the `[Variant XXX]` line in the PTN game-state, so expect breakage with anything but the default. + +## Additional contributors + +With thanks to + +- ~devp for fixing a capstone->wall flattening bug diff --git a/src/game.rs b/src/game.rs index 4a91755..6bc43dc 100644 --- a/src/game.rs +++ b/src/game.rs @@ -424,7 +424,7 @@ impl GameState { } let mut steps: usize = drops.len(); - let cap: bool = stack[0].stone == Stone::Capstone; + let cap: bool = stack[stack.len() - 1].stone == Stone::Capstone; let mut pos_new = Position { x: pos.x, y: pos.y }; while steps > 0 { @@ -453,7 +453,13 @@ impl GameState { )); } Stone::Standing => { - if (steps > 1) || (!cap) { + if cap { + if (steps > 1) || (drops[drops.len() - 1] > 1) { + return Err(String::from( + "A capstone move may not flatten a standing stone unless dropped on its own.", + )); + } + } else { return Err(String::from( "A move may not cover a standing stone.", )); |
