Coverage for thb/meta/characters/kaguya.py : 67%
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.meta.common import ui_meta
11# -- code --
14@ui_meta(characters.kaguya.Kaguya)
15class Kaguya:
16 # Character
17 name = '蓬莱山辉夜'
18 title = '永远的公主殿下'
19 illustrator = '噗呼噗呼@星の妄想乡'
20 cv = 'shourei小N'
22 port_image = 'thb-portrait-kaguya'
23 figure_image = 'thb-figure-kaguya'
24 miss_sound_effect = 'thb-cv-kaguya_miss'
27@ui_meta(characters.kaguya.Dilemma)
28class Dilemma:
29 # Skill
30 name = '难题'
31 description = '每当一名角色令你回复1点体力后,你可以令其摸一张牌;每当你受到一次伤害后,你可以令伤害来源选择一项:|B|R>> |r交给你一张方块牌,|B|R>> |r失去1点体力。'
34@ui_meta(characters.kaguya.DilemmaDamageAction)
35class DilemmaDamageAction:
36 # choose_card meta
37 def choose_card_text(self, g, act, cards):
38 if act.cond(cards):
39 return (True, '交出一张方片牌')
40 else:
41 return (False, '请选择交出一张方片牌(否则失去一点体力)')
43 def effect_string_before(self, act):
44 return '|G【%s】|r对|G【%s】|r发动了|G难题|r。' % (
45 act.source.ui_meta.name,
46 act.target.ui_meta.name
47 )
49 def effect_string(self, act):
50 if act.peer_action == 'card':
51 return '|G【%s】|r给了|G【%s】|r一张牌。' % (
52 act.target.ui_meta.name,
53 act.source.ui_meta.name
54 )
55 # elif act.peer_action == 'life':
56 # <handled by LifeLost>
58 def sound_effect(self, act):
59 return random.choice([
60 'thb-cv-kaguya_dilemma1',
61 'thb-cv-kaguya_dilemma2',
62 ])
65@ui_meta(characters.kaguya.DilemmaHealAction)
66class DilemmaHealAction:
67 def effect_string(self, act):
68 return '|G【%s】|r发动了|G难题|r,|G【%s】|r摸了一张牌。' % (
69 act.source.ui_meta.name,
70 act.target.ui_meta.name,
71 )
73 def sound_effect(self, act):
74 return random.choice([
75 'thb-cv-kaguya_dilemma1',
76 'thb-cv-kaguya_dilemma2',
77 ])
80@ui_meta(characters.kaguya.DilemmaHandler)
81class DilemmaHandler:
82 # choose_option meta
83 choose_option_buttons = (('发动', True), ('不发动', False))
85 def choose_option_prompt(self, act):
86 _type = {
87 'positive': '正面效果',
88 'negative': '负面效果'
89 }.get(act.dilemma_type, 'WTF?!')
90 return '你要发动【难题】吗(%s)?' % _type
93@ui_meta(characters.kaguya.ImperishableNight)
94class ImperishableNight:
95 # Skill
96 name = '永夜'
97 description = '你的回合外,每当其他角色使用的红色基本牌置入弃牌堆时,你可以将一张红色基本牌或装备牌当|G封魔阵|r对其使用。'
99 image = None
101 tag_anim = lambda c: 'thb-tag-sealarray' 101 ↛ exitline 101 didn't run the lambda on line 101
103 def effect_string(self, act):
104 return '|G【%s】|r对|G【%s】|r使用了|G永夜|r。' % (
105 act.source.ui_meta.name,
106 act.target.ui_meta.name
107 )
109 def sound_effect(self, act):
110 return 'thb-cv-kaguya_inight'
113@ui_meta(characters.kaguya.ImperishableNightHandler)
114class ImperishableNightHandler:
115 # choose_option meta
116 choose_option_buttons = (('发动', True), ('不发动', False))
118 def choose_option_prompt(self, act):
119 prompt = '你要发动【永夜】吗(对%s)?'
120 return prompt % act.target.ui_meta.name
122 # choose_card meta
123 def choose_card_text(self, g, act, cards):
124 if act.cond(cards):
125 return (True, '陷入永夜吧!')
126 else:
127 return (False, '请选择一张红色的基本牌或装备牌')