Example #1
0
    def embed(cls, state: MonsterListViewState):
        fields = []
        if not cls.has_subqueries(state):
            fields.append(
                EmbedField(
                    state.title,
                    Box(*cls.monster_list(state.monster_list,
                                          state.current_monster_id,
                                          state.query_settings))))

        else:
            cur_subq_id = None
            cur_mon_list = []
            offset = 0
            i = 0
            for m in state.monster_list:
                subq_id = state.extra_info.get_subquery_mon(m.monster_id)
                if cur_mon_list and subq_id != cur_subq_id:
                    title = MonsterHeader.box_with_emoji(
                        state.extra_info.get_monster(cur_subq_id),
                        query_settings=state.query_settings,
                        link=False)
                    fields.append(
                        EmbedField(
                            title,
                            Box(*cls.monster_list(cur_mon_list,
                                                  state.current_monster_id,
                                                  state.query_settings,
                                                  offset=offset))))
                    cur_mon_list = []
                    offset += i
                    i = 0
                cur_mon_list.append(m)
                cur_subq_id = subq_id
                i += 1

            title = MonsterHeader.box_with_emoji(
                state.extra_info.get_monster(cur_subq_id),
                query_settings=state.query_settings,
                link=False)
            fields.append(
                EmbedField(
                    title,
                    Box(*cls.monster_list(cur_mon_list,
                                          state.current_monster_id,
                                          state.query_settings,
                                          offset=offset))))

        fields.append(
            EmbedField(BoldText('Page'),
                       Box('{} of {}'.format(state.current_page + 1,
                                             state.page_count)),
                       inline=True))

        return EmbedView(EmbedMain(
            title=cls.get_title(state),
            color=state.query_settings.embedcolor,
        ),
                         embed_footer=embed_footer_with_state(state),
                         embed_fields=fields)
Example #2
0
def _pantheon_lines(monsters, base_monster, query_settings):
    if not len(monsters):
        return []
    return [
        MonsterHeader.box_with_emoji(mon, link=mon.monster_id != base_monster.monster_id, query_settings=query_settings)
        for mon in sorted(monsters, key=lambda x: int(x.monster_id))
    ]
Example #3
0
 def _evo_lines(monsters, current_monster, query_settings):
     if not len(monsters):
         return []
     return [
         MonsterHeader.box_with_emoji(
             ae,
             link=ae.monster_id != current_monster.monster_id,
             query_settings=query_settings)
         for ae in sorted(monsters, key=lambda x: int(x.monster_id))
     ]
Example #4
0
 def embed(state: LeaderSkillSingleViewState):
     ls = state.mon.leader_skill
     return EmbedView(embed_main=EmbedMain(
         title=ls_single_multiplier_text(ls),
         description=Box(
             BoldText(
                 MonsterHeader.box_with_emoji(
                     state.mon, query_settings=state.query_settings)),
             Text(ls.desc if ls else 'None')),
         color=state.query_settings.embedcolor),
                      embed_footer=embed_footer_with_state(state))
Example #5
0
 def monster_list(cls, monsters: List["MonsterModel"],
                  current_monster_id: int, query_settings: QuerySettings):
     if not len(monsters):
         return []
     return [
         MonsterHeader.box_with_emoji(mon,
                                      link=True,
                                      prefix=cls.get_emoji(
                                          i, current_monster_id),
                                      query_settings=query_settings)
         for i, mon in enumerate(monsters)
     ]
Example #6
0
def mat_use_field(mons,
                  title,
                  max_mons=MAX_MONS_TO_SHOW,
                  query_settings: Optional[QuerySettings] = None):
    text = None
    if len(mons) == 0:
        text = "None"
    elif len(mons) > max_mons:
        text = f"({len(mons) - max_mons} more monster{'s' if len(mons) - max_mons > 1 else ''}, see `^allmats` for full list)"
    return EmbedField(
        title,
        Box(
            *(MonsterHeader.box_with_emoji(em, query_settings=query_settings)
              for em in mons[:max_mons]), text))
Example #7
0
def skillup_field(mons, sec, link, query_settings):
    text = None
    text2 = None
    if len(mons) == 0:
        text = "None"

    if sec:
        text2 = Box(
            f"({max(len(mons) - MAX_MONS_TO_SHOW, 0) + sec} ",
            LinkedText(
                f"more monster{'s' if max(len(mons) - MAX_MONS_TO_SHOW, 0) + sec > 1 else ''}",
                link),
            f", incl. {sec} alt evo{'s' if sec > 1 else ''})",
            delimiter="")
    elif len(mons) > MAX_MONS_TO_SHOW:
        text2 = f"({len(mons) - MAX_MONS_TO_SHOW} more monsters)"

    return EmbedField(
        "Skillups",
        Box(
            *(MonsterHeader.box_with_emoji(em, query_settings=query_settings)
              for em in mons[:MAX_MONS_TO_SHOW]), text, text2))