Esempio n. 1
0
    def render_weapon(self, weapon, shortened):
        rarity_color = RARITY_COLORS.get(weapon['raw_rarity'], RARITY_COLORS['Mythic'])
        color = discord.Color.from_rgb(*rarity_color)
        e = discord.Embed(title='Weapon search found one exact match', color=color)
        thumbnail_url = f'{CONFIG.get("graphics_url")}/Spells/Cards_{weapon["spell_id"]}_full.png'
        e.set_thumbnail(url=thumbnail_url)
        if shortened:
            return self.render_embed(e, 'weapon_shortened.jinja', weapon=weapon)

        if 'release_date' in weapon:
            e.set_footer(text='Release date')
            e.timestamp = weapon["release_date"]
        return self.render_embed(e, 'weapon.jinja', weapon=weapon)
Esempio n. 2
0
    def render_troop(self, troop, shortened):
        rarity_color = RARITY_COLORS.get(troop['raw_rarity'], RARITY_COLORS['Mythic'])
        if 'Boss' in troop['raw_types']:
            rarity_color = RARITY_COLORS['Doomed']
        e = discord.Embed(title='Troop search found one exact match', color=discord.Color.from_rgb(*rarity_color))
        thumbnail_url = f'{CONFIG.get("graphics_url")}/Troops/Cards_{troop["filename"]}_full.png'
        e.set_thumbnail(url=thumbnail_url)
        if shortened:
            return self.render_embed(e, 'troop_shortened.jinja', troop=troop)

        if 'release_date' in troop:
            e.set_footer(text='Release date')
            e.timestamp = troop["release_date"]
        return self.render_embed(e, 'troop.jinja', troop=troop)
Esempio n. 3
0
    def render_adventure_board(self, adventures, lang):
        highest_rarity = max(a['raw_rarity'] for a in adventures)
        color = list(RARITY_COLORS.values())[highest_rarity]
        e = discord.Embed(title=_('[ADVENTURE_BOARD]', lang), color=discord.Color.from_rgb(*color))

        for adventure in adventures:
            reward_emojis = [self.my_emojis.get(t.lower()[1:-1], '') for t in adventure['reward_types']]
            name = f'{"".join(reward_emojis)} __{adventure["name"]}__ ({adventure["rarity"]})'
            rewards = ', '.join([f'{v} {k}' for k, v in adventure['rewards'].items()])
            e.add_field(name=name, value=rewards, inline=False)
        now = datetime.datetime.utcnow()
        reset_time = now.replace(hour=7, minute=0, second=0, microsecond=0)
        time_left = reset_time + datetime.timedelta(hours=24) - now
        hours = time_left.seconds // 3600
        minutes = time_left.seconds // 60 - hours * 60
        footer = _('[DAILY_ADVENTURES_RESET_IN]', lang).replace('%1', str(hours)).replace('%2', str(minutes))
        e.set_footer(text=footer)
        return e
Esempio n. 4
0
    def get_soulforge_weapon_image_data(self, search_term, date, switch, lang):
        search_result = self.search_weapon(search_term, lang)
        if len(search_result) != 1:
            return
        weapon = search_result[0].copy()

        requirements = SOULFORGE_REQUIREMENTS[weapon['raw_rarity']].copy()
        jewels = []
        for color in weapon['colors']:
            color_code = COLORS.index(color)
            filename = f'Runes_Jewel{color_code:02n}_full.png'
            jewels.append({
                'filename':
                filename,
                'amount':
                requirements['jewels'],
                'available_on':
                translate_day(color_code, lang),
                'kingdoms':
                sorted([
                    _(kingdom['name'], lang)
                    for kingdom in self.kingdoms.values()
                    if 'primary_color' in kingdom
                    and color == kingdom['primary_color']
                    and kingdom['location'] == 'krystara'
                ]),
            })
        requirements['jewels'] = jewels
        kingdom = self.kingdoms[weapon['kingdom_id']]

        affixes = [{
            'name': _(affix['name'], lang),
            'description': _(affix['description'], lang),
            'color': list(RARITY_COLORS.values())[i],
        } for i, affix in enumerate(weapon['affixes'], start=1)]
        mana_colors = ''.join([c.title() for c in weapon['colors']
                               ]).replace('Brown', 'Orange')
        kingdom_filebase = self.kingdoms[weapon['kingdom_id']]['filename']
        result = {
            'switch': switch,
            'name': weapon['name'],
            'rarity_color': RARITY_COLORS[weapon['raw_rarity']],
            'rarity': weapon['rarity'],
            'filename': f'Spells/Cards_{weapon["spell_id"]}_full.png',
            'description': weapon['spell']['description'],
            'kingdom': weapon['kingdom'],
            'kingdom_logo': f'Maplocations_{kingdom_filebase}_full.png',
            'type': _(weapon['type'], lang),
            'background': f'Background/{kingdom["filename"]}_full.png',
            'gow_logo': 'Atlas/gow_logo.png',
            'requirements': requirements,
            'affixes': affixes,
            'affix_icon': 'Atlas/affix.png',
            'gold_medal': 'Atlas/medal_gold.png',
            'mana_color': f'Troopcardall_{mana_colors}_full.png',
            'mana_cost': weapon['spell']['cost'],
            'stat_increases': {
                'attack': sum(weapon['attack_increase']),
                'health': sum(weapon['health_increase']),
                'armor': sum(weapon['armor_increase']),
                'magic': sum(weapon['magic_increase'])
            },
            'stat_icon': 'Atlas/{stat}.png',
            'texts': {
                'from_battles':
                _('[PET_LOOT_BONUS]', lang).replace('+%1% %2 ',
                                                    '').replace('+%1 %2 ', ''),
                'gem_bounty':
                _('[DUNGEON_OFFER_NAME]', lang),
                'kingdom_challenges':
                f'{_("[KINGDOM]", lang)} {_("[CHALLENGES]", lang)}',
                'soulforge':
                _('[SOULFORGE]', lang),
                'resources':
                _('[RESOURCES]', lang),
                'dungeon':
                _('[DUNGEON]', lang),
                'dungeon_battles':
                _('[TASK_WIN_DUNGEON_BATTLES]', lang),
                'tier_8':
                _('[CHALLENGE_TIER_8_ROMAN]', lang),
                'available':
                _('[AVAILABLE]', lang),
                'in_soulforge':
                _('[WEAPON_AVAILABLE_FROM_SOULFORGE]', lang),
                'n_gems':
                _('[GEMS_GAINED]', lang).replace('%1', '50'),
            },
            'date': format_locale_date(date, lang),
        }
        return result