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 -- 

4import random 

5 

6# -- third party -- 

7# -- own -- 

8from thb import characters 

9from thb.cards.classes import AttackCard 

10from thb.meta.common import ui_meta 

11 

12 

13# -- code -- 

14 

15 

16@ui_meta(characters.sakuya.Sakuya) 

17class Sakuya: 

18 # Character 

19 name = '十六夜咲夜' 

20 title = '完全潇洒的PAD长' 

21 illustrator = '和茶' 

22 cv = 'VV' 

23 

24 port_image = 'thb-portrait-sakuya' 

25 figure_image = 'thb-figure-sakuya' 

26 miss_sound_effect = 'thb-cv-sakuya_miss' 

27 

28 

29@ui_meta(characters.sakuya.Dagger) 

30class Dagger: 

31 # Skill 

32 name = '飞刀' 

33 description = '你可以将一张装备牌当|G弹幕|r使用或打出,以此法使用的|G弹幕|r无距离限制。' 

34 

35 def clickable(self, g): 

36 me = g.me 

37 

38 if not (me.cards or me.showncards or me.equips): return False 

39 

40 try: 

41 act = g.hybrid_stack[-1] 

42 if act.cond([characters.sakuya.Dagger(me)]): 

43 return True 

44 

45 except (IndexError, AttributeError): 

46 pass 

47 

48 return False 

49 

50 def is_complete(self, skill): 

51 assert skill.is_card(characters.sakuya.Dagger) 

52 cl = skill.associated_cards 

53 if len(cl) != 1 or 'equipment' not in cl[0].category: 

54 return (False, '请选择一张装备牌!') 

55 return (True, '快看!灰出去了!') 

56 

57 def is_action_valid(self, sk, tl): 

58 rst, reason = self.is_complete(sk) 

59 if not rst: 

60 return rst, reason 

61 else: 

62 return AttackCard().ui_meta.is_action_valid(sk, tl) 

63 

64 def effect_string(self, act): 

65 # for LaunchCard.ui_meta.effect_string 

66 source = act.source 

67 card = act.card 

68 target = act.target 

69 s = '|G【%s】|r将|G%s|r制成了|G飞刀|r,向|G【%s】|r掷去!' % ( 

70 source.ui_meta.name, 

71 card.associated_cards[0].ui_meta.name, 

72 target.ui_meta.name, 

73 ) 

74 return s 

75 

76 def sound_effect(self, act): 

77 return random.choice([ 

78 'thb-cv-sakuya_dagger1', 

79 'thb-cv-sakuya_dagger2', 

80 ]) 

81 

82 

83@ui_meta(characters.sakuya.LunaDialActionStage) 

84class LunaDialActionStage: 

85 def sound_effect(self, act): 

86 return 'thb-cv-sakuya_lunadial' 

87 

88 

89@ui_meta(characters.sakuya.LunaDial) 

90class LunaDial: 

91 # Skill 

92 name = '月时计' 

93 description = '|B锁定技|r,准备阶段开始时,你执行一个额外的出牌阶段。'