Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# -*- coding: utf-8 -*- 

2 

3# -- stdlib -- 

4# -- third party -- 

5# -- own -- 

6from thb.actions import ActionStage, PlayerTurn, PrepareStage 

7from thb.cards.base import Skill 

8from thb.cards.classes import AttackCard, TreatAs, t_None 

9from thb.characters.base import Character, register_character_to 

10from thb.mode import THBEventHandler 

11 

12 

13# -- code -- 

14class Dagger(TreatAs, Skill): 

15 skill_category = ['character', 'active'] 

16 treat_as = AttackCard 

17 distance = 99999 

18 

19 def check(self): 

20 cards = self.associated_cards 

21 if len(cards) != 1: 

22 return False 

23 

24 c = cards[0] 

25 if c.resides_in is None: 

26 return False 

27 

28 if c.resides_in.type not in ('cards', 'showncards', 'equips'): 

29 return False 

30 

31 if 'equipment' not in c.category: 

32 return False 

33 

34 return True 

35 

36 

37class LunaDialActionStage(ActionStage): 

38 def apply_action(self): 

39 tags = self.target.tags 

40 tags['lunadial'] = True 

41 

42 try: 

43 return super(LunaDialActionStage, self).apply_action() 

44 finally: 

45 tags['lunadial'] = False 

46 

47 

48class LunaDial(Skill): 

49 associated_action = None 

50 skill_category = ['character', 'passive', 'compulsory'] 

51 target = t_None() 

52 

53 

54class LunaDialHandler(THBEventHandler): 

55 interested = ['action_after'] 

56 execute_after = ['CiguateraHandler'] 

57 

58 def handle(self, evt_type, act): 

59 if evt_type == 'action_after' and isinstance(act, PrepareStage): 

60 src = act.target 

61 if not src.has_skill(LunaDial): 

62 return act 

63 

64 g = self.game 

65 PlayerTurn.get_current(g).pending_stages.insert(0, LunaDialActionStage) 

66 

67 return act 

68 

69 

70@register_character_to('common') 

71class Sakuya(Character): 

72 skills = [Dagger, LunaDial] 

73 eventhandlers = [LunaDialHandler] 

74 maxlife = 4