예제 #1
0
def _get_merchantship_msg_from_data_as_text(raw_data: dict,
                                            item_designs_data: dict) -> list:
    result = [f'{emojis.pss_merchantship} **Merchant ship**']
    if raw_data:
        cargo_items = raw_data['CargoItems'].split('|')
        cargo_prices = raw_data['CargoPrices'].split('|')
        for i, cargo_info in enumerate(cargo_items):
            if 'x' in cargo_info:
                item_id, amount = cargo_info.split('x')
            else:
                item_id = cargo_info
                amount = '1'
            if ':' in item_id:
                _, item_id = item_id.split(':')
            if item_id:
                item_details = ''.join(
                    item.get_item_details_short_from_id_as_text(
                        item_id, item_designs_data))
                currency_type, price = cargo_prices[i].split(':')
                currency_emoji = lookups.CURRENCY_EMOJI_LOOKUP[
                    currency_type.lower()]
                result.append(
                    f'{amount} x {item_details}: {price} {currency_emoji}')
    else:
        result.append('-')
    return result
예제 #2
0
def _get_shop_msg_from_data_as_text(raw_data: dict, char_designs_data: dict,
                                    collection_designs_data: dict,
                                    item_designs_data: dict,
                                    room_designs_data: dict) -> list:
    result = [f'{emojis.pss_shop} **Shop**']

    shop_type = raw_data['LimitedCatalogType']
    currency_type = raw_data['LimitedCatalogCurrencyType']
    currency_emoji = lookups.CURRENCY_EMOJI_LOOKUP[currency_type.lower()]
    price = raw_data['LimitedCatalogCurrencyAmount']
    can_own_max = raw_data['LimitedCatalogMaxTotal']

    entity_id = raw_data['LimitedCatalogArgument']
    entity_details = []
    if shop_type == 'Character':
        entity_details = crew.get_char_info_short_from_id_as_text(
            entity_id, char_designs_data, collection_designs_data)
    elif shop_type == 'Item':
        entity_details = item.get_item_details_short_from_id_as_text(
            entity_id, item_designs_data)
    elif shop_type == 'Room':
        entity_details = room.get_room_details_short_from_id_as_text(
            entity_id, room_designs_data)
    else:
        result.append('-')
        return result

    if entity_details:
        result.extend(entity_details)

    result.append(f'Cost: {price} {currency_emoji}')
    result.append(f'Can own (max): {can_own_max}')

    return result
예제 #3
0
def _get_sale_msg_from_data_as_text(raw_data: dict, chars_designs_data: dict,
                                    collections_designs_data: dict,
                                    items_designs_data: dict,
                                    rooms_designs_data: dict) -> list:
    # 'SaleItemMask': use lookups.SALE_ITEM_MASK_LOOKUP to print which item to buy
    result = [f'{emojis.pss_sale} **Sale**']

    sale_item_mask = raw_data['SaleItemMask']
    sale_items = _convert_sale_item_mask(int(sale_item_mask))
    sale_quantity = raw_data['SaleQuantity']
    result.append(f'Buy a {sale_items} _of Starbux_ and get:')

    sale_type = raw_data['SaleType']
    sale_argument = raw_data['SaleArgument']
    if sale_type == 'Character':
        char_design_details = crew.get_char_design_details_by_id(
            sale_argument,
            40,
            chars_designs_data=chars_designs_data,
            collections_designs_data=collections_designs_data)
        entity_details = ''.join(
            char_design_details.get_details_as_text_short())
    elif sale_type == 'Item':
        entity_details = ''.join(
            item.get_item_details_short_from_id_as_text(
                sale_argument, items_designs_data))
    elif sale_type == 'Room':
        entity_details = ''.join(
            room.get_room_details_short_from_id_as_text(
                sale_argument, rooms_designs_data))
    elif sale_type == 'Bonus':
        entity_details = f'{sale_argument} % bonus starbux'
    else:  # Print debugging info
        sale_title = raw_data['SaleTitle']
        debug_details = []
        debug_details.append(f'Sale Type: {sale_type}')
        debug_details.append(f'Sale Argument: {sale_argument}')
        debug_details.append(f'Sale Title: {sale_title}')
        entity_details = '\n'.join(debug_details)

    result.append(f'{sale_quantity} x {entity_details}')

    return result
예제 #4
0
def _get_daily_reward_from_data_as_text(raw_data: dict,
                                        item_designs_data: dict) -> list:
    result = ['**Daily rewards**']

    reward_currency = raw_data['DailyRewardType'].lower()
    reward_currency_emoji = lookups.CURRENCY_EMOJI_LOOKUP[reward_currency]
    reward_amount = int(raw_data['DailyRewardArgument'])
    reward_amount, reward_multiplier = util.get_reduced_number(reward_amount)
    result.append(
        f'{reward_amount:.0f}{reward_multiplier} {reward_currency_emoji}')

    item_rewards = raw_data['DailyItemRewards'].split('|')
    for item_reward in item_rewards:
        item_id, amount = item_reward.split('x')
        item_details = ''.join(
            item.get_item_details_short_from_id_as_text(
                item_id, item_designs_data))
        result.append(f'{amount} x {item_details}')

    return result