Coverage for thb/meta/characters/yuuka.py : 64%
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 -*-
2from __future__ import annotations
4# -- stdlib --
5# -- third party --
6# -- own --
7from thb import characters
8from thb.cards.classes import AttackCard
9from thb.meta.common import ui_meta
12# -- code --
13@ui_meta(characters.yuuka.ReversedScales)
14class ReversedScales:
15 # Skill
16 name = '逆鳞'
17 description = '每当你成为其他角色使用的单体符卡效果目标时,你可以将其视为|G弹幕战|r效果;你的回合外,你可以将一张手牌当做|G弹幕|r使用或打出。'
19 def clickable(self):
20 me = self.me
21 if self.my_turn():
22 return False
24 if not (me.cards or me.showncards):
25 return False
27 return self.accept_cards([self.build_handcard(AttackCard)])
29 def is_complete(self, skill):
30 acards = skill.associated_cards
31 if len(acards) != 1:
32 return (False, '请选择1张牌!')
34 return (True, '反正这条也看不到,偷个懒~~~')
36 def is_action_valid(self, sk, tl):
37 rst, reason = self.is_complete(sk)
38 if not rst:
39 return (rst, reason)
40 else:
41 return AttackCard().ui_meta.is_action_valid([sk], tl)
43 def effect_string(self, act):
44 # for LaunchCard.ui_meta.effect_string
45 return '|G【%s】|r用和善的眼神看了|G【%s】|r一眼。' % (
46 act.source.ui_meta.name,
47 act.target.ui_meta.name,
48 )
50 def sound_effect(self, act):
51 return 'thb-cv-yuuka_flowerqueen'
54@ui_meta(characters.yuuka.Sadist)
55class Sadist:
56 # Skill
57 name = '施虐'
58 description = '当你击坠一名角色时,你可以对攻击范围内一名其他角色造成1点伤害;你对体力值为1的其他角色造成的伤害+1。'
61@ui_meta(characters.yuuka.SadistKOF)
62class SadistKOF:
63 # Skill
64 name = '施虐'
65 description = '|B锁定技|r,当你击坠对手后,你摸2张牌并对其下一名登场角色造成1点伤害。'
68@ui_meta(characters.yuuka.ReversedScalesAction)
69class ReversedScalesAction:
70 def effect_string_apply(self, act):
71 return (
72 '|G【%s】|r:“来正面上我啊!”'
73 ) % (
74 act.target.ui_meta.name,
75 )
77 def sound_effect(self, act):
78 return 'thb-cv-yuuka_rs'
81@ui_meta(characters.yuuka.SadistAction)
82class SadistAction:
83 def effect_string_apply(self, act):
84 return (
85 '|G【%s】|r又看了看|G【%s】|r:“你也要尝试一下么!”'
86 ) % (
87 act.source.ui_meta.name,
88 act.target.ui_meta.name,
89 )
91 def sound_effect(self, act):
92 return 'thb-cv-yuuka_sadist'
95@ui_meta(characters.yuuka.SadistKOFDamageAction)
96class SadistKOFDamageAction:
97 def effect_string_apply(self, act):
98 return (
99 '|G【%s】|r又看了看|G【%s】|r:“你也要尝试一下么!”'
100 ) % (
101 act.source.ui_meta.name,
102 act.target.ui_meta.name,
103 )
105 def sound_effect(self, act):
106 return 'thb-cv-yuuka_sadist'
109@ui_meta(characters.yuuka.SadistHandler)
110class SadistHandler:
111 # choose_card
112 def choose_card_text(self, act, cards):
113 if act.cond(cards):
114 return (True, '发动【施虐】')
115 else:
116 return (False, '【施虐】:请弃置一张牌')
118 def target(self, pl):
119 if not pl:
120 return (False, '【施虐】:请选择1名玩家')
122 return (True, '发动【施虐】')
125@ui_meta(characters.yuuka.ReversedScalesHandler)
126class ReversedScalesHandler:
127 # choose_option
128 choose_option_buttons = (('发动', True), ('不发动', False))
129 choose_option_prompt = '你要发动【逆鳞】吗?'
132@ui_meta(characters.yuuka.Yuuka)
133class Yuuka:
134 # Character
135 name = '风见幽香'
136 title = '四季的鲜花之主'
137 illustrator = '霏茶'
138 cv = 'VV'
140 port_image = 'thb-portrait-yuuka'
141 figure_image = 'thb-figure-yuuka'
142 miss_sound_effect = 'thb-cv-yuuka_miss'
145@ui_meta(characters.yuuka.YuukaKOF)
146class YuukaKOF:
147 # Character
148 name = '风见幽香'
149 title = '四季的鲜花之主'
150 illustrator = '霏茶'
151 cv = 'VV'
153 port_image = 'thb-portrait-yuuka'
154 figure_image = 'thb-figure-yuuka'
155 miss_sound_effect = 'thb-cv-yuuka_miss'
157 notes = '|RKOF修正角色'