Highlight illegal actions in a different colour
[naja.git] / naja / actions.py
index efbb16b696027255dad973984b15c2dfc54b9e14..f62b4637174621c3a29e541d4c445e4ece66f715 100644 (file)
@@ -74,3 +74,25 @@ class LoseHealthOrMSBAndSetBits(LocationAction):
         if not self.check_and_clear_MSB(board.player):
             board.lose_health()
         board.player.bits.set_bits(location.bitwise_operand)
+
+
+class AcquireWinToken(LocationAction):
+    TEXT = "Acquire a win token, then clear all high bits."
+    USES_MSB = True
+
+    def perform_action(self, board, location):
+        if self.check_and_clear_MSB(board.player):
+            board.acquire_win_token()
+            board.player.bits.clear_bits(set([
+                BITS.CYAN, BITS.MAGENTA, BITS.YELLOW,
+            ]))
+
+
+class GainHealthAndClearBitsOrMSB(LocationAction):
+    TEXT = "Gain health, then clear bits specified by this location or MSB."
+    USES_MSB = True
+
+    def perform_action(self, board, location):
+        board.gain_health()
+        if not self.check_and_clear_MSB(board.player):
+            board.player.bits.clear_bits(location.bitwise_operand)