コード例 #1
0
    def active_skill_header(cls, m: "MonsterModel",
                            previous_transforms: List["MonsterModel"]):

        active_skill = m.active_skill
        if active_skill is None:
            return BoldText('Active Skill')

        if len(previous_transforms) == 0:
            active_cd = "({} -> {})".format(active_skill.cooldown_turns_max,
                                            active_skill.cooldown_turns_min)
        else:
            skill_texts = []
            previous_transforms.reverse()
            for i, mon in enumerate(previous_transforms):
                skill = mon.active_skill
                # we can assume skill is not None because the monster transforms
                cooldown_text = '({}cd)'.format(str(skill.cooldown_turns_max))
                if skill.cooldown_turns_min != skill.cooldown_turns_max:
                    cooldown_text = '{} -> {}'.format(skill.cooldown_turns_max,
                                                      skill.cooldown_turns_min)
                skill_texts.append('{}{}'.format(
                    get_emoji(cls.transform_emoji_names[i % len(
                        cls.transform_emoji_names)]), cooldown_text))
            skill_texts.append('{} ({} cd)'.format(
                get_emoji(cls.up_emoji_name),
                m.active_skill.cooldown_turns_max))
            active_cd = ' '.join(skill_texts)

        return Box(BoldText('Active Skill'),
                   cls.get_compound_active_text(active_skill),
                   BoldText(active_cd),
                   delimiter=' ')
コード例 #2
0
 def _get_help_text(self, ctx):
     args = {
         "db": get_emoji("db"),
         "p": ctx.prefix,
         "tsubaki": get_emoji("tsubaki")
     }
     return HELP_TEXT.format(**args)
コード例 #3
0
    def stats_header(cls, m: "MonsterModel", previous_evolutions,
                     query_settings: QuerySettings):
        voice_emoji = get_awakening_emoji(
            63) if m.awakening_count(63) and not m.is_equip else ''

        multiboost_emoji = None
        if m.awakening_count(
                30) and query_settings.cardmode == CardModeModifier.coop:
            multiboost_emoji = get_emoji('misc_multiboost')

        plus_emoji = get_emoji('plus_297')
        if cls.get_plus_status(previous_evolutions,
                               query_settings.cardplus) != 297:
            plus_emoji = get_emoji('plus_0')

        lb_emoji = get_emoji('lv110')
        if m.limit_mult > 0 and query_settings.cardlevel == CardLevelModifier.lv120:
            lb_emoji = get_emoji('lv120')

        header = Box(Text(voice_emoji),
                     Text(plus_emoji),
                     Text(multiboost_emoji) if multiboost_emoji else None,
                     Text('Stats'),
                     Text('({}, +{}%)'.format(lb_emoji, m.limit_mult))
                     if m.limit_mult else None,
                     delimiter=' ')
        return header
コード例 #4
0
    def get_other_info_feedback_text(self) -> str:
        line = [get_rarity_emoji(self.guess_monster.rarity)]
        if self.rarity_diff == 0:
            line.append(get_emoji('green_check_custom') + " | ")
        elif self.rarity_diff == -1:
            line.append(
                "\N{DOWNWARDS BLACK ARROW}\N{VARIATION SELECTOR-16} | ")
        else:
            line.append("\N{UPWARDS BLACK ARROW}\N{VARIATION SELECTOR-16} | ")
        for type in self.guess_monster.types:
            line.append(get_type_emoji(type))
            if type in self.monster.types:
                line.append(get_emoji('green_check_custom') + " ")
            else:
                line.append(get_emoji('red_cross_custom') + " ")
        line.append(" | Sell MP: ")
        line.append('{:,}'.format(self.guess_monster.sell_mp))
        if self.mp_diff == 0:
            line.append(get_emoji('green_check_custom'))
        elif self.mp_diff == -1:
            line.append("\N{DOWNWARDS BLACK ARROW}\N{VARIATION SELECTOR-16}")
        else:
            line.append("\N{UPWARDS BLACK ARROW}\N{VARIATION SELECTOR-16}")

        return "".join(line)
コード例 #5
0
 def leader_skill_header(m: "MonsterModel", lsmultiplier: LsMultiplier,
                         transform_base: "MonsterModel"):
     return Box(BoldText('Leader Skill'),
                BoldText(
                    ls_multiplier_text(m.leader_skill) if lsmultiplier ==
                    LsMultiplier.lsdouble else get_emoji('1x') + ' ' +
                    ls_single_multiplier_text(m.leader_skill)),
                BoldText('(' + get_emoji('\N{DOWN-POINTING RED TRIANGLE}') +
                         '7x6)') if m != transform_base
                and transform_base.leader_skill.is_7x6 else None,
                delimiter=' ')
コード例 #6
0
 def super_awakenings_row(m: "MonsterModel"):
     normal_awakenings = len(m.awakenings) - m.superawakening_count
     super_awakenings_emojis = [
         _get_awakening_text(a) for a in m.awakenings[normal_awakenings:]
     ]
     return Box(Text(get_emoji('sa_questionmark')),
                *[Text(e) for e in super_awakenings_emojis],
                delimiter=' ') if len(super_awakenings_emojis) > 0 else None
コード例 #7
0
 def get_awakenings_feedback_text(self) -> str:
     awakes = []
     feedback = []
     guess_awo_count = len(self.guess_monster.awakenings
                           ) - self.guess_monster.superawakening_count
     for index, guess_awake in enumerate(
             self.guess_monster.awakenings[:guess_awo_count]):
         awakes.append(
             get_awakening_emoji(guess_awake.awoken_skill_id,
                                 guess_awake.name))
         val = self.awakenings_diff[index]
         if val == 0:
             feedback.append(get_emoji('red_cross_custom'))
         elif val == 0.5:
             feedback.append(get_emoji('yellow_square_custom'))
         else:
             feedback.append(get_emoji('green_check_custom'))
     return "\n".join(["".join(awakes), "".join(feedback)])
コード例 #8
0
 def get_name_line_feedback_text(self) -> str:
     line = []
     attr1 = self.guess_monster.attr1.name.lower()
     attr2 = self.guess_monster.attr2.name.lower()
     attr_feedback = []
     for num in self.attr_diff:
         if num == 0:
             attr_feedback.append(get_emoji('red_cross_custom'))
         elif num == 0.5:
             attr_feedback.append(get_emoji('yellow_square_custom'))
         else:
             attr_feedback.append(get_emoji('green_check_custom'))
     line.append(get_attribute_emoji_by_enum(self.guess_monster.attr1))
     line.append(attr_feedback[0] + " / ")
     line.append(get_attribute_emoji_by_enum(self.guess_monster.attr2))
     line.append(attr_feedback[1] + " ")
     line.append("[" + str(self.guess_monster.monster_id) + "] ")
     line.append(self.guess_monster.name_en)
     return "".join(line)
コード例 #9
0
    def all_awakenings_row(cls, m: "MonsterModel", transform_base):
        if len(m.awakenings) == 0:
            return Box(Text('No Awakenings'))

        return Box(
            Box(get_emoji(cls.up_emoji_name) if m != transform_base else '',
                cls.normal_awakenings_row(m),
                delimiter=' '),
            Box('\N{DOWN-POINTING RED TRIANGLE}',
                IdView.all_awakenings_row(transform_base, transform_base),
                delimiter=' ') if m != transform_base else None,
            cls.super_awakenings_row(m),
        )
コード例 #10
0
def _format_ls_text(hp, atk, rcv, resist=0, combo=0, fua=0, mfua=0, te=0):
    resist_val = ' {}{}%'.format(get_emoji('shield_amount'),
                                 _format_number(100 *
                                                resist)) if resist else ''

    ehp = ' [{}x eHP]'.format(_format_number(hp /
                                             (1 - resist))) if resist else ''

    combos = '+{}c'.format(combo) if combo else ''
    true_damage = '{}'.format(_humanize_number(fua, 2)) if fua else ''
    any_fua = 'fua' if fua or mfua else ''

    joined = ' '.join((a for a in [combos, true_damage, any_fua] if a))
    extras = f"[{joined}]" if joined else ''

    return f"[{_format_number(hp)}/{_format_number(atk)}/{_format_number(rcv)}{resist_val}]{ehp} {extras}"
コード例 #11
0
 async def validrules(self, ctx):
     """Show rules for the valid-answer monster list"""
     args = {"db": get_emoji("db"), "rd": get_emoji("rd")}
     await ctx.send(RULES_TEXT.format(**args))
コード例 #12
0
def _killer_latent_emoji(latent_name: str):
    return get_emoji('latent_killer_{}'.format(latent_name.lower()))