Coverage for thb/meta/characters/sakuya.py : 96%
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):
36 g = self.game
37 me = self.me
39 if not (me.cards or me.showncards or me.equips): return False
41 try:
42 act = g.hybrid_stack[-1]
43 if act.cond([characters.sakuya.Dagger(me)]):
44 return True
46 except (IndexError, AttributeError):
47 pass
49 return False
51 def is_complete(self, skill):
52 assert skill.is_card(characters.sakuya.Dagger)
53 cl = skill.associated_cards
54 if len(cl) != 1 or 'equipment' not in cl[0].category:
55 return (False, '请选择一张装备牌!')
56 return (True, '快看!灰出去了!')
58 def is_action_valid(self, sk, tl):
59 rst, reason = self.is_complete(sk)
60 if not rst:
61 return rst, reason
62 else:
63 return AttackCard().ui_meta.is_action_valid(sk, tl)
65 def effect_string(self, act):
66 # for LaunchCard.ui_meta.effect_string
67 source = act.source
68 card = act.card
69 target = act.target
70 s = '|G【%s】|r将|G%s|r制成了|G飞刀|r,向|G【%s】|r掷去!' % (
71 source.ui_meta.name,
72 card.associated_cards[0].ui_meta.name,
73 target.ui_meta.name,
74 )
75 return s
77 def sound_effect(self, act):
78 return random.choice([
79 'thb-cv-sakuya_dagger1',
80 'thb-cv-sakuya_dagger2',
81 ])
84@ui_meta(characters.sakuya.LunaDialActionStage)
85class LunaDialActionStage:
86 def sound_effect(self, act):
87 return 'thb-cv-sakuya_lunadial'
90@ui_meta(characters.sakuya.LunaDial)
91class LunaDial:
92 # Skill
93 name = '月时计'
94 description = '|B锁定技|r,准备阶段开始时,你执行一个额外的出牌阶段。'