Add missing full-stop.
[naja.git] / naja / actions.py
index 4dafbc6fbe3ebed6dc8d68b06a19986013183c61..89c43f81abb049f42923658d7f0cc9763ab5535e 100644 (file)
@@ -128,15 +128,30 @@ class GenericBits(LocationAction):
         self.set_bits = parse_bits(self.data.get('set', []))
         self.clear_bits = parse_bits(self.data.get('clear', []))
         self.toggle_bits = parse_bits(self.data.get('toggle', []))
+        self.once = self.data.get('once', False)
+        self.acquire_win = self.data.get('acquire_win', False)
+        self.lose_health = self.data.get('lose_health', False)
 
     def perform_action(self, board, location):
         bits = board.player.bits
         bits.set_bits(self.set_bits)
         bits.toggle_bits(self.toggle_bits)
         bits.clear_bits(self.clear_bits)
+        if self.acquire_win:
+            sound.play_sound('yipee.ogg')
+            board.acquire_win_token()
+        if self.lose_health:
+            sound.play_sound('awwww.ogg')
+            board.lose_health()
+        if self.once:
+            location.actions.remove(self)
 
     def get_glyphs(self):
         glyphs = []
+        if self.acquire_win:
+            glyphs.append(ACTION_GLYPHS.WINTOKEN)
+        if self.lose_health:
+            glyphs.append(ACTION_GLYPHS.DAMAGE)
         if self.set_bits:
             glyphs.append(ACTION_GLYPHS.SET_BITS)
         if self.clear_bits:
@@ -149,11 +164,17 @@ class GenericBits(LocationAction):
         if 'message' in self.data:
             return super(GenericBits, self).get_text()
         parts = []
+        if self.acquire_win:
+            parts.append("Gain a {WINTOKEN}.")
+        if self.lose_health:
+            parts.append("Lose {HEALTH}.")
         for template, bits in [
                 ('Set %s.', self.set_bits), ('Clear %s.', self.clear_bits),
-                ('Toggle %s', self.toggle_bits)]:
+                ('Toggle %s.', self.toggle_bits)]:
             if bits:
                 parts.append(template % (bit_glyphs(bits)))
+        if self.once:
+            parts.append('Usable once only.')
         return " ".join(parts)
 
 
@@ -191,8 +212,6 @@ class AcquireWinToken(LocationAction):
         board.player.bits.clear_bits(set([
             BITS.RED, BITS.GREEN, BITS.BLUE,
         ]))
-        if self.data.get('once', False):
-            location.actions.remove(self)
 
 
 class GainHealth(LocationAction):