Пример #1
0
    def active_skill_header(cls, m: "MonsterModel",
                            previous_transforms: List["MonsterModel"]):

        active_skill = m.active_skill
        if len(previous_transforms) == 0:
            active_cd = "({} -> {})".format(active_skill.turn_max, active_skill.turn_min) \
                if active_skill else 'None'
        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.turn_max))
                if skill.turn_min != skill.turn_max:
                    cooldown_text = '{} -> {}'.format(skill.turn_min,
                                                      skill.turn_max)
                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.turn_max))
            active_cd = ' '.join(skill_texts)
        return Box(BoldText('Active Skill'),
                   BoldText(active_cd),
                   delimiter=' ')
Пример #2
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
Пример #3
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=' '
     )
Пример #4
0
    def leader_header(cls, m: "MonsterModel", is_base: bool,
                      lsmultiplier: LsMultiplier, base_mon: "MonsterModel"):
        if is_base:
            emoji = get_emoji(cls.down_emoji_name)
            label = 'Base'
        else:
            emoji = get_emoji(cls.up_emoji_name)
            label = 'Transform'

        return Box(emoji,
                   BoldText(label),
                   cls.leader_skill_header(m, lsmultiplier,
                                           base_mon).to_markdown(),
                   delimiter=' ')
Пример #5
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
Пример #6
0
 def transform_active_header(cls, m: "MonsterModel"):
     active_skill = m.active_skill
     active_cd = '({} cd)'.format(
         active_skill.cooldown_turns_min) if active_skill else 'None'
     return Box(get_emoji(cls.up_emoji_name),
                BoldText('Transform Active Skill {}'.format(active_cd)),
                delimiter=' ')
Пример #7
0
    def embed(cls, state: TransformInfoViewState):
        base_mon = state.base_mon
        transformed_mon = state.transformed_mon
        lsmultiplier = state.query_settings.lsmultiplier
        fields = [
            EmbedField(
                '/'.join(['{}'.format(t.name) for t in transformed_mon.types]),
                Box(
                    Box(get_emoji(cls.up_emoji_name),
                        cls.normal_awakenings_row(transformed_mon)
                        if len(transformed_mon.awakenings) != 0 else Box(
                            Text('No Awakenings')),
                        delimiter=' '), TransformInfoView.base_info(base_mon),
                    cls.killers_row(base_mon, base_mon)),
            ),
            EmbedField(BoldText(transformat('Card info')),
                       TransformInfoView.card_info(base_mon, transformed_mon,
                                                   state.acquire_raw),
                       inline=True),
            EmbedField(BoldText('Stats -> ' + transformat('Transform')),
                       TransformInfoView.stats(base_mon, transformed_mon),
                       inline=True),
            EmbedField(
                transformat(
                    TransformInfoView.transform_active_header(
                        transformed_mon).to_markdown()),
                Box(
                    Text(
                        cls.active_skill_text(transformed_mon.active_skill,
                                              state.awoken_skill_map)),
                    TransformInfoView.base_active_header(
                        base_mon).to_markdown(),
                    Text(
                        cls.active_skill_text(base_mon.active_skill,
                                              state.awoken_skill_map)))),
            EmbedField(
                transformat(
                    TransformInfoView.leader_header(transformed_mon, False,
                                                    lsmultiplier,
                                                    base_mon).to_markdown()),
                Box(
                    Text(transformed_mon.leader_skill.desc if transformed_mon.
                         leader_skill else 'None'),
                    TransformInfoView.leader_header(base_mon, True,
                                                    lsmultiplier,
                                                    base_mon).to_markdown(),
                    Text(base_mon.leader_skill.desc if base_mon.
                         leader_skill else 'None')))
        ]

        return EmbedView(EmbedMain(color=state.color,
                                   title=MonsterHeader.fmt_id_header(
                                       transformed_mon, False,
                                       state.is_jp_buffed).to_markdown(),
                                   url=puzzledragonx(transformed_mon)),
                         embed_thumbnail=EmbedThumbnail(
                             MonsterImage.icon(transformed_mon)),
                         embed_footer=embed_footer_with_state(state),
                         embed_fields=fields)
Пример #8
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),
        )
Пример #9
0
def _killer_latent_emoji(latent_name: str):
    return get_emoji('latent_killer_{}'.format(latent_name.lower()))
Пример #10
0
 def base_active_header(cls, m: "MonsterModel"):
     return Box(get_emoji(cls.down_emoji_name),
                BoldText('Base'),
                cls.active_skill_header(m, []),
                delimiter=' ')
Пример #11
0
 def base_info(cls, m: "MonsterModel"):
     return Box(
         Box(get_emoji(cls.down_emoji_name),
             cls.normal_awakenings_row(m)
             if len(m.awakenings) != 0 else Box(Text('No Awakenings')),
             delimiter=' '), cls.super_awakenings_row(m))