Fix bits and add new action.
[naja.git] / naja / actions.py
index 32ac03509c88527cf8d5205d0bfa0a490456c674..efbb16b696027255dad973984b15c2dfc54b9e14 100644 (file)
@@ -7,6 +7,7 @@ class LocationAction(object):
     """
 
     TEXT = None
+    USES_MSB = False
 
     def __init__(self, required_bits, **data):
         bits = set()
@@ -43,7 +44,8 @@ class DoNothing(LocationAction):
 
 
 class LoseHealthOrMSB(LocationAction):
-    TEXT = "Lose health. If MSB is set, it will be cleared instead."
+    TEXT = "Lose health or MSB."
+    USES_MSB = True
 
     def perform_action(self, board, location):
         if not self.check_and_clear_MSB(board.player):
@@ -62,3 +64,13 @@ class ToggleBits(LocationAction):
 
     def perform_action(self, board, location):
         board.player.bits.toggle_bits(location.bitwise_operand)
+
+
+class LoseHealthOrMSBAndSetBits(LocationAction):
+    TEXT = "Lose health or MSB, then set bits specified by this location."
+    USES_MSB = True
+
+    def perform_action(self, board, location):
+        if not self.check_and_clear_MSB(board.player):
+            board.lose_health()
+        board.player.bits.set_bits(location.bitwise_operand)