Coverage for thb/meta/characters/sakuya.py : 70%
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 -*-
3# -- stdlib --
4import random
6# -- third party --
7# -- own --
8from thb import characters
9from thb.cards.classes import AttackCard
10from thb.meta.common import ui_meta
13# -- code --
16@ui_meta(characters.sakuya.Sakuya)
17class Sakuya:
18 # Character
19 name = '十六夜咲夜'
20 title = '完全潇洒的PAD长'
21 illustrator = '和茶'
22 cv = 'VV'
24 port_image = 'thb-portrait-sakuya'
25 figure_image = 'thb-figure-sakuya'
26 miss_sound_effect = 'thb-cv-sakuya_miss'
29@ui_meta(characters.sakuya.Dagger)
30class Dagger:
31 # Skill
32 name = '飞刀'
33 description = '你可以将一张装备牌当|G弹幕|r使用或打出,以此法使用的|G弹幕|r无距离限制。'
35 def clickable(self, g):
36 me = g.me
38 if not (me.cards or me.showncards or me.equips): return False
40 try:
41 act = g.hybrid_stack[-1]
42 if act.cond([characters.sakuya.Dagger(me)]):
43 return True
45 except (IndexError, AttributeError):
46 pass
48 return False
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, '快看!灰出去了!')
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)
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
76 def sound_effect(self, act):
77 return random.choice([
78 'thb-cv-sakuya_dagger1',
79 'thb-cv-sakuya_dagger2',
80 ])
83@ui_meta(characters.sakuya.LunaDialActionStage)
84class LunaDialActionStage:
85 def sound_effect(self, act):
86 return 'thb-cv-sakuya_lunadial'
89@ui_meta(characters.sakuya.LunaDial)
90class LunaDial:
91 # Skill
92 name = '月时计'
93 description = '|B锁定技|r,准备阶段开始时,你执行一个额外的出牌阶段。'