Coverage for thb/meta/characters/kanako.py : 72%
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 --
4# -- third party --
5# -- own --
6from thb import actions, characters
7from thb.meta.common import ui_meta
10# -- code --
13@ui_meta(characters.kanako.Kanako)
14class Kanako:
15 # Character
16 name = '八坂神奈子'
17 title = '山丘与湖泊的化身'
18 illustrator = '和茶'
19 cv = '北斗夜/VV'
21 port_image = 'thb-portrait-kanako'
22 figure_image = 'thb-figure-kanako'
23 miss_sound_effect = 'thb-cv-kanako_miss'
25 notes = '|RKOF模式不可用|r'
28@ui_meta(characters.kanako.KanakoKOF)
29class KanakoKOF:
30 # Character
31 name = '八坂神奈子'
32 title = '山丘与湖泊的化身'
33 illustrator = '和茶'
34 cv = '北斗夜/VV'
36 port_image = 'thb-portrait-kanako'
37 figure_image = 'thb-figure-kanako'
38 miss_sound_effect = 'thb-cv-kanako_miss'
40 notes = '|RKOF修正角色|r'
43@ui_meta(characters.kanako.KanakoFaith)
44class KanakoFaith:
45 # Skill
46 name = '信仰'
47 description = (
48 '|B限定技|r,出牌阶段,你可以令你攻击范围内的所有其他角色依次选择一项:\n'
49 '|B|R>> |r令你摸一张牌。\n'
50 '|B|R>> |r弃置你一张牌,然后你视为对其使用了一张|G弹幕|r或|G弹幕战|r(按此法使用的弹幕不消耗干劲)。'
51 )
53 def clickable(self, game):
54 me = game.me
55 if me.tags['kanako_faith']:
56 return False
58 try:
59 act = game.action_stack[-1]
60 if isinstance(act, actions.ActionStage) and act.target is me:
61 return True
63 except IndexError:
64 pass
66 return False
68 def is_action_valid(self, sk, tl):
69 cl = sk.associated_cards
70 if cl:
71 return (False, '请不要选择牌')
73 if not tl: 73 ↛ 74line 73 didn't jump to line 74, because the condition on line 73 was never true
74 return (False, '没有符合条件的角色')
75 else:
76 return (True, '发动【信仰】')
78 def effect_string(self, act):
79 return '|G【%s】|r打开神社大门,开始收集|G信仰|r!%s表示很感兴趣。' % (
80 act.source.ui_meta.name,
81 '、'.join(['|G【%s】|r' % p.ui_meta.name for p in act.target_list]),
82 )
84 def sound_effect(self, act):
85 return 'thb-cv-kanako_faith'
88@ui_meta(characters.kanako.KanakoFaithCheers)
89class KanakoFaithCheers:
90 def effect_string_before(self, act):
91 return '|G【%s】|r献上了信仰!' % (
92 act.source.ui_meta.name,
93 )
96@ui_meta(characters.kanako.KanakoFaithCounteract)
97class KanakoFaithCounteract:
98 def effect_string_before(self, act):
99 return '|G【%s】|r决定要拆台!' % (
100 act.source.ui_meta.name,
101 )
104@ui_meta(characters.kanako.KanakoFaithCounteractPart1)
105class KanakoFaithCounteractPart1:
106 def effect_string(self, act):
107 return '|G【%s】|r弃置了|G【%s】|r的%s。' % (
108 act.source.ui_meta.name,
109 act.target.ui_meta.name,
110 self.card_desc(act.card),
111 )
114@ui_meta(characters.kanako.KanakoFaithCounteractPart2)
115class KanakoFaithCounteractPart2:
116 # choose_option meta
117 choose_option_buttons = (('弹幕战', 'duel'), ('弹幕', 'attack'))
118 choose_option_prompt = '信仰:请选择希望的效果'
121@ui_meta(characters.kanako.KanakoFaithEffect)
122class KanakoFaithEffect:
123 # choose_option meta
124 choose_option_buttons = (('弃置对方的牌', 'drop'), ('对方摸牌', 'draw'))
125 choose_option_prompt = '信仰:请选择希望的效果'
128@ui_meta(characters.kanako.Virtue)
129class Virtue:
130 # Skill
131 name = '神德'
132 description = '摸牌阶段,你可以放弃摸牌,改为令一名其他角色摸两张牌,然后其须展示并交给你一张牌,若交给你的牌为红桃牌,你摸一张牌。'
135@ui_meta(characters.kanako.VirtueHandler)
136class VirtueHandler:
137 def target(self, pl):
138 if not pl:
139 return (False, '神德:请选择1名玩家')
141 return (True, '神德:放弃摸牌,选定的目标摸2张牌')
144@ui_meta(characters.kanako.VirtueAction)
145class VirtueAction:
146 def choose_card_text(self, g, act, cards):
147 prompt = '神德:交给对方一张牌'
148 return act.cond(cards), prompt
150 def effect_string_before(self, act):
151 return '|G【%s】|r对|G【%s】|r发动了|G神德|r。' % (
152 act.source.ui_meta.name,
153 act.target.ui_meta.name,
154 )
156 def effect_string(self, act):
157 return '|G【%s】|r归还了%s。' % (
158 act.target.ui_meta.name,
159 self.card_desc(act.card),
160 )
162 def sound_effect(self, act):
163 return 'thb-cv-kanako_virtue'
166@ui_meta(characters.kanako.KanakoFaithKOF)
167class KanakoFaithKOF:
168 # Skill
169 name = '信仰'
170 description = (
171 '|B锁定技|r,结束阶段开始时,若你满足以下条件之一,将你的手牌补至X张(X为你的当前体力值):\n'
172 '|B|R>> |r你的体力值大于对方。\n'
173 '|B|R>> |r你曾于出牌阶段对对方造成过伤害。'
175 )
178@ui_meta(characters.kanako.KanakoFaithKOFAction)
179class KanakoFaithKOFAction:
180 def effect_string_before(self, act):
181 return '|G【%s】|r又收到的%s张香火钱,比博丽神社不知道高到哪里去了!' % (
182 act.target.ui_meta.name,
183 act.amount,
184 )
186 def sound_effect(self, act):
187 return 'thb-cv-kanako_faith'