Exemple #1
0
    def use(self, user):
        n = 0
        d = 0
        dmax = 5
        while d != dmax:
            x = random.randint(1, 10)
            print(user.name + ' Tushib qoldi ' + str(x))
            if x > 10 - user.energy - user.accuracy - user.tempaccuracy - 1:
                n += 1
            d += 1
        for a in user.abilities:
            n = a.onhit(a, n, user)
        # бонусный урон персонажа
        if n != 0:
            n += user.bonusdamage + 3
        # уходит энергия
        user.energy -= 3
        utils.damage(user, user.itemtarget, n, 'melee')
        if n != 0:
            user.fight.string.add(
                '🌩' + " |" + user.name +
                ' SEKIRA teleportatsiyasidan⭕️ foydalanib Oyboltani⛏ ' +
                user.itemtarget.name +
                'ga masofadan uloqtirayabdi. Yetkazildi ' + str(n) + ' zarb!')

        else:
            user.fight.string.add(
                u'\U0001F4A8' + " |" + user.name +
                ' Oyboltani⛏ otayabdi, lekin tekkiza olmayabdi.')
        user.itemlist.remove(self)
        user.throwcd += 2
        user.lostweapon = Weapon_list.speareternal
        del user.itemtarget
    def use(self, user):
        n = 0
        d = 0
        dmax = 5
        while d != dmax:
            x = random.randint(1, 10)
            print(user.name + ' Выпало ' + str(x))
            if x > 10 - user.energy - user.accuracy - user.tempaccuracy - 1:
                n += 1
            d += 1
        for a in user.abilities:
            n = a.onhit(a, n, user)
        # бонусный урон персонажа
        if n != 0:
            n += user.bonusdamage + 1
        # уходит энергия
        user.energy -= 3
        utils.damage(user, user.itemtarget, n, 'melee')
        if n != 0:
            user.fight.string.add(u'\U0001F4A5' + " |" + user.name + ' кидает Копье Нарсил в '
                                  + user.itemtarget.name + '. Нанесено ' + str(n) + ' урона!')

        else:
            user.fight.string.add(u'\U0001F4A8' + " |" + user.name + ' кидает Копье Нарсил, но не попадает.')
        user.itemlist.remove(self)
        user.throwcd += 3
        user.lostweapon = Weapon_list.speareternal
        del user.itemtarget
Exemple #3
0
    def use(self, user):
        n = 0
        d = 0
        dmax = 5
        while d != dmax:
            x = random.randint(1, 10)
            print(user.name + ' Tushib qoldi ' + str(x))
            if x > 10 - user.energy - user.accuracy - user.tempaccuracy - 1:
                n += 1
            d += 1
        for a in user.abilities:
            n = a.onhit(a, n, user)
        # бонусный урон персонажа
        if n != 0:
            n += user.bonusdamage + 3
        # уходит энергия
        user.energy -= 3
        utils.damage(user, user.itemtarget, n, 'melee')
        if n != 0:
            user.fight.string.add(u'\U0001F4A5' + " |" + user.name +
                                  ' kristal nayzani🔹 otayabdi ' +
                                  user.itemtarget.name + '. Yetkazildi ' +
                                  str(n) + ' zarb!')

        else:
            user.fight.string.add(
                u'\U0001F4A8' + " |" + user.name +
                ' kristal nayzani🔹 otayabdi, lekin tekkiza olmayabdi.')
        user.itemlist.remove(self)
        user.throwcd += 3
        user.lostweapon = Weapon_list.iceman
        del user.itemtarget
Exemple #4
0
    def use(self, user):
        n = 0
        d = 0
        dmax = 5
        while d != dmax:
            x = random.randint(1, 10)
            print(user.name + ' Выпало ' + str(x))
            if x > 10 - user.energy - user.accuracy - user.tempaccuracy - 1:
                n += 1
            d += 1
        for a in user.abilities:
            n = a.onhit(a, n, user)
        # бонусный урон персонажа
        if n != 0:
            n += user.bonusdamage + 1
        # уходит энергия
        user.energy -= 3
        utils.damage(user, user.itemtarget, n, 'melee')
        if n != 0:
            user.fight.string.add(u'\U0001F4A5' + " |" + user.name +
                                  ' кидает Копье Нарсил в ' +
                                  user.itemtarget.name + '. Нанесено ' +
                                  str(n) + ' урона!')

        else:
            user.fight.string.add(u'\U0001F4A8' + " |" + user.name +
                                  ' кидает Копье Нарсил, но не попадает.')
        user.itemlist.remove(self)
        user.throwcd += 3
        user.lostweapon = Weapon_list.speareternal
        del user.itemtarget
    async def damage(self, ctx):
        """
        Calculates damage based on hypothetical stat values.
        """
        stats = {
            'strength': 0,
            'crit damage': 0,
            'weapon damage': 0,
            'combat level': 0
        }
        questions = {
            'strength':
            f'{ctx.author.mention}\nHow much **strength** do you want to have?',
            'crit damage':
            f'{ctx.author.mention}\nHow much **crit damage** do you want to have?',
            'weapon damage':
            f'{ctx.author.mention}\nHow much **damage** does your weapon have on the tooltip?',
            'combat level':
            f'{ctx.author.mention}\nWhat is your **combat level**?'
        }

        for stat in stats.keys():
            ans = await self.prompt_for_stat(ctx, questions[stat])
            stats[stat] = ans

        mob = await self.prompt_for_mobs(ctx)

        enchant_levels = await ctx.prompt(
            message=
            f'{ctx.author.mention}\nDo you want to use **level 5** or **level 6** enchantments?',
            emoji_list=[('5️⃣', ENCHANTED_BOOK_5), ('6️⃣', ENCHANTED_BOOK_6)])

        modifier = stats['combat level'] * 4
        for enchantment in MOBS_RELEVANT_ENCHANTS[mob]:
            perk = ENCHANTMENT_BONUS[enchantment]
            if callable(perk):
                modifier += perk(enchant_levels[enchantment])
            else:
                modifier += perk * enchant_levels[enchantment]

        calculated_dmg = round(
            damage(stats['weapon damage'], stats['strength'],
                   stats['crit damage'], modifier))

        no_crit_dmg = round(
            damage(stats['weapon damage'], stats['strength'], 0, modifier))

        await Embed(ctx=ctx, title=f'Calculated damage').add_field(
            name='Damage with crit', value=f'{calculated_dmg}').add_field(
                name='Damage without crit',
                value=f'{no_crit_dmg}').add_field().add_field(
                    name='Strength', value=f'{stats["strength"]}').add_field(
                        name='Crit damage', value=f'{stats["crit damage"]}%'
                    ).add_field().add_field(
                        name='Weapon damage',
                        value=f'{stats["weapon damage"]}').add_field(
                            name='Combat level',
                            value=f'{stats["combat level"]}'
                        ).add_field().send()
Exemple #6
0
def apply_effects(fight):
    for p in fight.actors:
        if p.bleedcounter > 0 and special_abilities.Sturdy.Sturdy in p.abilities:
            if p.bleedcounter >= 6:
                fight.string.add(u'\U00002763' + "| Кровотечение отнимает у " +
                                 p.name + ' жизнь!')
                p.hp -= 1
                fight.string.add(u'\U00002665' * p.hp + ' |' + str(p.name) +
                                 " теряет " + str(1) +
                                 " жизнь(ей). Остается " + str(p.hp) + " хп.")
                p.bleedcounter = 0
                p.bloodloss = True
            else:
                fight.string.add(u'\U00002763' + "|" + p.name +
                                 ' истекает кровью!' + '(' +
                                 str(6 - p.bleedcounter) + ')')
                p.bleedcounter += 1
        elif p.bleedcounter > 0:
            if p.bleedcounter >= 4:
                fight.string.add(u'\U00002763' + "| Кровотечение отнимает у " +
                                 p.name + ' жизнь!')
                p.hp -= 1
                fight.string.add(u'\U00002665' * p.hp + ' |' + str(p.name) +
                                 " теряет " + str(1) +
                                 " жизнь(ей). Остается " + str(p.hp) + " хп.")
                p.bleedcounter = 0
                p.bloodloss = True
            else:
                fight.string.add(u'\U00002763' + "|" + p.name +
                                 ' истекает кровью!' + '(' +
                                 str(4 - p.bleedcounter) + ')')
                p.bleedcounter += 1
        if p.firecounter > 0:
            if p.extinguish is True:
                p.firecounter = 0
                p.extinguish = False
            elif p.offfire == fight.round:
                fight.string.add(u'\U0001F525' + "| Огонь на " + p.name +
                                 ' потух!')
                p.firecounter = 0
            else:
                utils.damage(None, p, p.firecounter, 'fire')
                p.energy -= p.firecounter - 1
                if p.firecounter - 1 == 0:
                    fight.string.add(u'\U0001F525' + "|" + p.name +
                                     ' горит! Получает ' + str(p.firecounter) +
                                     " урона.")
                else:
                    fight.string.add(u'\U0001F525' + "|" + p.name +
                                     ' горит! Теряет ' +
                                     str(p.firecounter - 1) +
                                     " энергии и получает " +
                                     str(p.firecounter) + " урона.")
        if p.stuncounter > 0:
            p.stuncounter -= 1
            if p.stuncounter == 0:
                fight.string.add(u'\U0001F300' + '|' + p.name +
                                 ' приходит в себя.')
    def use(self, user):
        if random.randint(1, 10)<=user.energy + 5:
            user.fight.string.add(u'\U0001F52A' + " |" + user.name + ' кидает Метательный Нож в '
                                  + user.itemtarget.name + '. Нанесено 1 урона ' +
                                  u'\U00002763' + "|" + user.itemtarget.name + ' истекает кровью!')
            utils.damage(user, user.itemtarget, 1, 'melee')
            user.itemtarget.bleedcounter += 1
            user.itemtarget.bloodloss = False

        else:
            user.fight.string.add(u'\U0001F4A8' + " |" + user.name + ' кидает Метательный Нож, но не попадает.')
        user.itemlist.remove(self)
        user.energy -= 1
        del user.itemtarget
Exemple #8
0
    def use(self, user):
        if random.randint(1, 10) <= user.energy + 5:
            user.fight.string.add(u'\U0001F52A' + " |" + user.name +
                                  ' кидает Метательный Нож в ' +
                                  user.itemtarget.name +
                                  '. Нанесено 1 урона ' + u'\U00002763' + "|" +
                                  user.itemtarget.name + ' истекает кровью!')
            utils.damage(user, user.itemtarget, 1, 'melee')
            user.itemtarget.bleedcounter += 1
            user.itemtarget.bloodloss = False

        else:
            user.fight.string.add(u'\U0001F4A8' + " |" + user.name +
                                  ' кидает Метательный Нож, но не попадает.')
        user.itemlist.remove(self)
        user.energy -= 1
        del user.itemtarget
def apply_effects(fight):
    for p in fight.actors:
        if p.bleedcounter > 0 and special_abilities.Sturdy.Sturdy in p.abilities:
            if p.bleedcounter >= 6:
                fight.string.add(u'\U00002763' + "| Кровотечение отнимает у " + p.name + ' жизнь!')
                p.hp -= 1
                fight.string.add(u'\U00002665' * p.hp + ' |' + str(p.name) +
                                 " теряет " + str(1) + " жизнь(ей). Остается " + str(p.hp) + " хп.")
                p.bleedcounter = 0
                p.bloodloss = True
            else:
                fight.string.add(u'\U00002763' + "|" + p.name + ' истекает кровью!' + '(' + str(6-p.bleedcounter) + ')')
                p.bleedcounter += 1
        elif p.bleedcounter > 0:
            if p.bleedcounter >= 4:
                fight.string.add(u'\U00002763' + "| Кровотечение отнимает у " + p.name + ' жизнь!')
                p.hp -= 1
                fight.string.add(u'\U00002665' * p.hp + ' |' + str(p.name) +
                                 " теряет " + str(1) + " жизнь(ей). Остается " + str(p.hp) + " хп.")
                p.bleedcounter = 0
                p.bloodloss = True
            else:
                fight.string.add(u'\U00002763' + "|" + p.name + ' истекает кровью!' + '(' + str(4-p.bleedcounter) + ')')
                p.bleedcounter += 1
        if p.firecounter > 0:
            if p.extinguish is True:
                p.firecounter = 0
                p.extinguish = False
            elif p.offfire == fight.round:
                fight.string.add(u'\U0001F525' + "| Огонь на " + p.name + ' потух!')
                p.firecounter = 0
            else:
                utils.damage(None, p, p.firecounter, 'fire')
                p.energy -= p.firecounter - 1
                if p.firecounter - 1 == 0:
                    fight.string.add(u'\U0001F525' + "|" + p.name
                                     + ' горит! Получает ' + str(p.firecounter) + " урона.")
                else:
                    fight.string.add(u'\U0001F525' + "|" + p.name + ' горит! Теряет '
                                     + str(p.firecounter - 1) + " энергии и получает " + str(p.firecounter) + " урона.")
        if p.stuncounter > 0:
            p.stuncounter -= 1
            if p.stuncounter == 0:
                fight.string.add(u'\U0001F300' + '|' + p.name + ' приходит в себя.')
Exemple #10
0
def apply_effects(fight):
    for p in fight.actors:
        if p.bleedcounter > 0 and special_abilities.Sturdy.Sturdy in p.abilities:
            if p.bleedcounter >= 6:
                fight.string.add(u'\U00002763' + "| Qon yo`qotish " + p.name + ' dan jonni olib qo`ydi!')
                p.hp -= 1
                fight.string.add(u'\U00002665' * p.hp + ' |' + str(p.name) +
                                 " " + str(1) + " ta jonni yo`qotoyabdi. Qoldi " + str(p.hp) + " ta jon.")
                p.bleedcounter = 0
                p.bloodloss = True
            else:
                fight.string.add(u'\U00002763' + "|" + p.name + ' qon yo`qotaybdi!' + '(' + str(6-p.bleedcounter) + ')')
                p.bleedcounter += 1
        elif p.bleedcounter > 0:
            if p.bleedcounter >= 4:
                fight.string.add(u'\U00002763' + "| Qon yo`qotish " + p.name + ' dan jonni olib qo`ydi!')
                p.hp -= 1
                fight.string.add(u'\U00002665' * p.hp + ' |' + str(p.name) +
                                 " " + str(1) + " ta jonni yo`qotoyabdi. Qoldi " + str(p.hp) + " ta jon.")
                p.bleedcounter = 0
                p.bloodloss = True
            else:
                fight.string.add(u'\U00002763' + "|" + p.name + ' qon yo`qotaybdi!' + '(' + str(4-p.bleedcounter) + ')')
                p.bleedcounter += 1
        if p.firecounter > 0:
            if p.extinguish is True:
                p.firecounter = 0
                p.extinguish = False
            elif p.offfire == fight.round:
                fight.string.add(u'\U0001F525' + "| Olov " + p.name + ' dagi o`chdi!')
                p.firecounter = 0
            else:
                utils.damage(None, p, p.firecounter, 'fire')
                p.energy -= p.firecounter - 1
                if p.firecounter - 1 == 0:
                    fight.string.add(u'\U0001F525' + "|" + p.name
                                     + ' yonayabdi! U ' + str(p.firecounter) + " ta zarar ko`rdi.")
                else:
                    fight.string.add(u'\U0001F525' + "|" + p.name + ' yonayabdi! Yoqotdi '
                                     + str(p.firecounter - 1) + " ta energiya va oldi " + str(p.firecounter) + " ta zarar.")
        if p.stuncounter > 0:
            p.stuncounter -= 1
            if p.stuncounter == 0:
                fight.string.add(u'\U0001F300' + '|' + p.name + ' o`ziga keldi.')
Exemple #11
0
    def use(self, user):
        if random.randint(1, 10) <= user.energy + 5:
            user.fight.string.add(u'\U0001F52A' + " |" + user.name +
                                  ' Uchar pichoqni otdi va ' +
                                  user.itemtarget.name +
                                  'ga 1ta zarb yetkazdi ' + u'\U00002763' +
                                  "|" + user.itemtarget.name +
                                  ' qon yo`qotayabdi!')
            utils.damage(user, user.itemtarget, 1, 'melee')
            user.itemtarget.bleedcounter += 1
            user.itemtarget.bloodloss = False

        else:
            user.fight.string.add(
                u'\U0001F4A8' + " |" + user.name +
                ' Uchar pichoqni otayabdi, lekin tegmayabdi.')
        user.itemlist.remove(self)
        user.energy -= 1
        del user.itemtarget
Exemple #12
0
 def use(self, user):
     damage = random.randint(1, 2)
     enemycount = len(utils.get_other_team(user).actors)
     if enemycount > 2:
         target1 = utils.get_other_team(user).actors[random.randint(
             0, enemycount - 1)]
         newtargets = list(utils.get_other_team(user).actors)
         newtargets.remove(target1)
         target2 = newtargets[random.randint(0, enemycount - 2)]
         utils.damage(user, target1, damage, 'explosion')
         utils.damage(user, target2, damage, 'explosion')
         user.fight.string.add(
             u'\U0001F4A3' + " |" + user.name +
             ' 𝗕𝗮𝗹𝗹𝗶𝘀𝘁𝗶𝗸 𝗥𝗮𝗸𝗲𝘁𝗮🚀 𝗼𝘁𝗮𝘆𝗮𝗯𝗱𝗶❕ \n📟𝗣𝗼𝗿𝘁𝗹𝗮𝘀𝗵 𝗸𝘂𝗰𝗵𝗶: ' +
             str(damage) + '❕ \n📡𝗡𝗶𝘀𝗵𝗼𝗻𝗹𝗮𝗿: ' + target2.name + ' va ' +
             target1.name + '❕')
     else:
         for c in utils.get_other_team(user).actors:
             utils.damage(user, c, damage, 'melee')
         user.fight.string.add(
             u'\U0001F4A3' + " |" + user.name +
             ' 𝗕𝗮𝗹𝗹𝗶𝘀𝘁𝗶𝗸 𝗥𝗮𝗸𝗲𝘁𝗮🚀 𝗼𝘁𝗮𝘆𝗮𝗯𝗱𝗶!❕ \n📟𝗣𝗼𝗿𝘁𝗹𝗮𝘀𝗵 𝗸𝘂𝗰𝗵𝗶: ' +
             str(damage) + '❕')
     user.energy -= 0
     user.itemlist.remove(self)
 def use(self, user):
     damage = random.randint(2, 3)
     enemycount = len(utils.get_other_team(user).actors)
     if enemycount > 2:
         target1 = utils.get_other_team(user).actors[random.randint(0, enemycount-1)]
         newtargets = list(utils.get_other_team(user).actors)
         newtargets.remove(target1)
         target2 = newtargets[random.randint(0, enemycount-2)]
         utils.damage(user, target1, damage, 'explosion')
         utils.damage(user, target2, damage, 'explosion')
         user.fight.string.add(u'\U0001F4A3' + " |" + user.name + ' кидает Гранату! Нанесено ' + str(damage)
                               + ' урона по ' + target2.name + ' и ' + target1.name + '.')
     else:
         for c in utils.get_other_team(user).actors:
             utils.damage(user, c, damage, 'melee')
         user.fight.string.add(u'\U0001F4A3' + " |" + user.name + ' кидает Гранату! Нанесено ' + str(
                               damage) + ' урона.')
     user.energy -= 2
     user.itemlist.remove(self)
 def use(self, user):
     damage = random.randint(2, 3)
     enemycount = len(utils.get_other_team(user).actors)
     if enemycount > 2:
         target1 = utils.get_other_team(user).actors[random.randint(0, enemycount - 1)]
         newtargets = list(utils.get_other_team(user).actors)
         newtargets.remove(target1)
         target2 = newtargets[random.randint(0, enemycount - 2)]
         utils.damage(user, target1, damage, 'melee')
         utils.damage(user, target2, damage, 'melee')
         user.fight.string.add(u'\U0001F47F' + " |" + user.name + ' взрывает труп! Нанесено ' + str(damage)
                               + ' урона по ' + target2.name + ' и ' + target1.name + '.')
     else:
         for c in utils.get_other_team(user).actors:
             utils.damage(user, c, damage, 'melee')
         user.fight.string.add(u'\U0001F47F' + " |" + user.name + ' взрывает труп! Нанесено ' + str(
             damage) + ' урона.')
     user.corpsecounter -= 1
     user.itemlist.remove(self)
Exemple #15
0
 def use(self, user):
     damage = random.randint(2, 3)
     enemycount = len(utils.get_other_team(user).actors)
     if enemycount > 2:
         target1 = utils.get_other_team(user).actors[random.randint(
             0, enemycount - 1)]
         newtargets = list(utils.get_other_team(user).actors)
         newtargets.remove(target1)
         target2 = newtargets[random.randint(0, enemycount - 2)]
         utils.damage(user, target1, damage, 'explosion')
         utils.damage(user, target2, damage, 'explosion')
         user.fight.string.add(u'\U0001F4A3' + " |" + user.name +
                               ' кидает Гранату! Нанесено ' + str(damage) +
                               ' урона по ' + target2.name + ' и ' +
                               target1.name + '.')
     else:
         for c in utils.get_other_team(user).actors:
             utils.damage(user, c, damage, 'melee')
         user.fight.string.add(u'\U0001F4A3' + " |" + user.name +
                               ' кидает Гранату! Нанесено ' + str(damage) +
                               ' урона.')
     user.energy -= 2
     user.itemlist.remove(self)
Exemple #16
0
 def use(self, user):
     damage = random.randint(2, 3)
     enemycount = len(utils.get_other_team(user).actors)
     if enemycount > 2:
         target1 = utils.get_other_team(user).actors[random.randint(
             0, enemycount - 1)]
         newtargets = list(utils.get_other_team(user).actors)
         newtargets.remove(target1)
         target2 = newtargets[random.randint(0, enemycount - 2)]
         utils.damage(user, target1, damage, 'melee')
         utils.damage(user, target2, damage, 'melee')
         user.fight.string.add(u'\U0001F47F' + " |" + user.name +
                               ' o`likni portlatayabdi! Yetkaziladi ' +
                               str(damage) + ' zarb ' + target2.name +
                               ' va ' + target1.name + 'ga.')
     else:
         for c in utils.get_other_team(user).actors:
             utils.damage(user, c, damage, 'melee')
         user.fight.string.add(u'\U0001F47F' + " |" + user.name +
                               ' o`likni portlatayabdi! Yetkaziladi ' +
                               str(damage) + ' zarb.')
     user.corpsecounter -= 1
     user.itemlist.remove(self)
Exemple #17
0
 def use(self, user):
     damage = random.randint(2, 3)
     enemycount = len(utils.get_other_team(user).actors)
     if enemycount > 2:
         target1 = utils.get_other_team(user).actors[random.randint(
             0, enemycount - 1)]
         newtargets = list(utils.get_other_team(user).actors)
         newtargets.remove(target1)
         target2 = newtargets[random.randint(0, enemycount - 2)]
         utils.damage(user, target1, damage, 'melee')
         utils.damage(user, target2, damage, 'melee')
         user.fight.string.add(u'\U0001F47F' + " |" + user.name +
                               ' взрывает труп! Нанесено ' + str(damage) +
                               ' урона по ' + target2.name + ' и ' +
                               target1.name + '.')
     else:
         for c in utils.get_other_team(user).actors:
             utils.damage(user, c, damage, 'melee')
         user.fight.string.add(u'\U0001F47F' + " |" + user.name +
                               ' взрывает труп! Нанесено ' + str(damage) +
                               ' урона.')
     user.corpsecounter -= 1
     user.itemlist.remove(self)
Exemple #18
0
 def use(self, user):
     damage = random.randint(2, 3)
     enemycount = len(utils.get_other_team(user).actors)
     if enemycount > 2:
         target1 = utils.get_other_team(user).actors[random.randint(
             0, enemycount - 1)]
         newtargets = list(utils.get_other_team(user).actors)
         newtargets.remove(target1)
         target2 = newtargets[random.randint(0, enemycount - 2)]
         utils.damage(user, target1, damage, 'explosion')
         utils.damage(user, target2, damage, 'explosion')
         user.fight.string.add(u'\U0001F4A3' + " |" + user.name +
                               ' Granatani otdi! Yetkazildi ' +
                               str(damage) + ' zarb - ' + target2.name +
                               ' va ' + target1.name + '.')
     else:
         for c in utils.get_other_team(user).actors:
             utils.damage(user, c, damage, 'melee')
         user.fight.string.add(u'\U0001F4A3' + " |" + user.name +
                               ' Granatani otdi! Yetkazildi ' +
                               str(damage) + ' zarb.')
     user.energy -= 2
     user.itemlist.remove(self)
Exemple #19
0
    async def send_optimizer_result(ctx, profile, best_route, include_dungeon):
        weapon = profile.weapon
        best_stats = best_route[0] or {}
        best_equip = best_route[1] or {}
        is_optimized = best_route[0]['is optimized']

        if not best_equip:
            return await ctx.send(
                f'{ctx.author.mention}, Optimization is not possible with the options you chose!\n'
                f'Collect more talismans or raise your combat level before trying again.'
            )

        embed = Embed(
            ctx=ctx,
            title='{s}'.format(
                s='Successful!' if is_optimized else 'Unsuccessful!')
        ).add_footer(
            text='Player\'s stats include pots.\n'
            '{s}'.format(s='Armor/Weapon includes dungeon stats.\n'
                         if include_dungeon else '') +
            'Please make sure your "before" stats are correct before reforging.'
        )

        for equipment in best_equip:
            for rarity in best_equip[equipment]:
                text = colorize(
                    ' + '.join([
                        f'{best_equip[equipment][rarity][reforge]} {reforge.title()}'
                        for reforge in best_equip[equipment][rarity]
                    ]), RARITY_COLORS[rarity])
                embed.add_field(
                    name=f'**{rarity.title()} {equipment.title()}**',
                    value=text,
                    inline=False)

        base_mod = profile.stats.combat_bonus + (profile.stats.archery_bonus if
                                                 weapon.type == 'bow' else 0)

        if include_dungeon:
            normal_mod = emod('base', weapon) + base_mod

            normal_damage_before = damage(
                profile.weapon.stats.get_stat('damage',
                                              dungeon=include_dungeon),
                profile.stats.get_stat('strength', dungeon=include_dungeon),
                profile.stats.get_stat('crit damage', dungeon=include_dungeon),
                normal_mod)

            normal_damage_after = damage(best_stats['damage'],
                                         best_stats['strength'],
                                         best_stats['crit damage'], normal_mod)

            before_damage = f'```Base > {normal_damage_before:,.0f}```'
            after_damage = f'```Base > {normal_damage_after:,.0f}```'
        else:
            zealot_mod = emod('zealots', weapon) + base_mod
            slayer_mod = emod('slayer bosses', weapon) + base_mod

            slayer_mult = 1
            if weapon.internal_name == 'REAPER_SWORD':
                slayer_mult = 3
            elif weapon.internal_name == 'SCORPION_FOIL':
                slayer_mult = 2.5

            zealot_damage_before = damage(
                profile.weapon.stats.get_stat('damage',
                                              dungeon=include_dungeon),
                profile.stats.get_stat('strength', dungeon=include_dungeon),
                profile.stats.get_stat('crit damage', dungeon=include_dungeon),
                zealot_mod)
            slayer_damage_before = damage(
                profile.weapon.stats.get_stat('damage',
                                              dungeon=include_dungeon),
                profile.stats.get_stat('strength', dungeon=include_dungeon),
                profile.stats.get_stat('crit damage', dungeon=include_dungeon),
                slayer_mod)
            slayer_damage_before *= slayer_mult

            zealot_damage_after = damage(best_stats['damage'],
                                         best_stats['strength'],
                                         best_stats['crit damage'], zealot_mod)
            slayer_damage_after = damage(best_stats['damage'],
                                         best_stats['strength'],
                                         best_stats['crit damage'], slayer_mod)
            slayer_damage_after *= slayer_mult

            before_damage = f'```Zealots > {zealot_damage_before:,.0f}\nSlayers > {slayer_damage_before:,.0f}```'
            after_damage = f'```Zealots > {zealot_damage_after:,.0f}\nSlayers > {slayer_damage_after:,.0f}```'

        weapon_damage_before = ''
        weapon_damage_after = ''
        if weapon.internal_name == 'MIDAS_SWORD':
            weapon_damage_before = f'Weapon damage > {profile.weapon.stats.get_stat("damage", dungeon=include_dungeon):.0f}'
            weapon_damage_after = f'Weapon damage > {best_stats["damage"]:.0f}'

        embed.add_field(
            name='**Before**',
            value=
            f'```Strength > {profile.stats.get_stat("strength", dungeon=include_dungeon):.0f}\n'
            f'Crit damage > {profile.stats.get_stat("crit damage", dungeon=include_dungeon):.0f}%\n'
            f'Crit chance > {profile.stats.get_stat("crit chance", dungeon=include_dungeon):.0f}%\n'
            f'Attack speed > {profile.stats.get_stat("attack speed", dungeon=include_dungeon):.0f}%\n'
            f'{weapon_damage_before}```{before_damage}')
        embed.add_field(
            name='**After**',
            value=
            f'```Strength > {best_stats["strength"]:.0f}\nCrit damage > {best_stats["crit damage"]:.0f}%\n'
            f'Crit chance > {best_stats["crit chance"]:.0f}%\nAttack speed > {best_stats["attack speed"]:.0f}%\n'
            f'{weapon_damage_after}```{after_damage}')

        if not is_optimized:
            embed.add_field(
                name='**Warning**',
                value=
                'The bot took too long to optimize your gear so it gave up.\n'
                'This result is the best it could do in the allotted time.',
                inline=False)

        await embed.send()