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:
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)]:
if bits:
parts.append(template % (bit_glyphs(bits)))
+ if self.once:
+ parts.append('Usable once only.')
return " ".join(parts)
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):