if (random.randint(1, 1000)) > chance_of_loot * 10: minstat = round(num * luck_multiply) maxstat = round(5 + int(num * 1.5) * luck_multiply) item = await self.bot.create_random_item( minstat=(minstat if minstat > 0 else 1) if minstat < 35 else 35, maxstat=(maxstat if maxstat > 0 else 1) if maxstat < 35 else 35, minvalue=round(num * luck_multiply), maxvalue=round(num * 50 * luck_multiply), owner=ctx.author, ) else: item = items.get_item() await conn.execute( 'INSERT INTO loot ("name", "value", "user") VALUES ($1, $2, $3);', item["name"], item["value"], ctx.author.id, ) if (guild := ctx.character_data["guild"]): await conn.execute( 'UPDATE guild SET "money"="money"+$1 WHERE "id"=$2;', int(gold / 10), guild, ) await conn.execute(
async def status(self, ctx): _("""Checks your adventure status.""") num, time, done = ctx.adventure_data if not done: return await ctx.send( _("""\ You are currently on an adventure with difficulty `{difficulty}`. Time until it completes: `{time_left}` Adventure name: `{adventure}`""").format( difficulty=num, time_left=time, adventure=self.bot.config.adventure_names[num], )) sword, shield = await self.bot.get_equipped_items_for(ctx.author) sword, shield = await self.bot.generate_stats( ctx.author, sword["damage"] if sword else 0, shield["armor"] if shield else 0, classes=ctx.character_data["class"], race=ctx.character_data["race"], ) luck_booster = await self.bot.get_booster(ctx.author, "luck") current_level = int(rpgtools.xptolevel(ctx.character_data["xp"])) luck_multiply = ctx.character_data["luck"] success = rpgtools.calcchance( sword, shield, num, current_level, luck_multiply, returnsuccess=True, booster=bool(luck_booster), ) await self.bot.delete_adventure(ctx.author) if not success: await self.bot.pool.execute( 'UPDATE profile SET "deaths"="deaths"+1 WHERE "user"=$1;', ctx.author.id) return await ctx.send(_("You died on your mission. Try again!")) gold = round( random.randint(20 * (num - 1) or 1, 60 * (num - 1) or 70) * luck_multiply) if await self.bot.get_booster(ctx.author, "money"): gold = int(gold * 1.25) xp = random.randint(250 * num, 500 * num) async with self.bot.pool.acquire() as conn: if random.randint(1, 10) < 10: minstat = round(num * luck_multiply) maxstat = round(5 + int(num * 1.5) * luck_multiply) item = await self.bot.create_random_item( minstat=minstat if minstat < 35 else 35, maxstat=maxstat if maxstat < 35 else 35, minvalue=round(num * luck_multiply), maxvalue=round(num * 50 * luck_multiply), owner=ctx.author, ) else: item = items.get_item() await conn.execute( 'INSERT INTO loot ("name", "value", "user") VALUES ($1, $2, $3);', item["name"], item["value"], ctx.author.id, ) if (guild := ctx.character_data["guild"]): await conn.execute( 'UPDATE guild SET "money"="money"+$1 WHERE "id"=$2;', int(gold / 10), guild, ) await conn.execute( 'UPDATE profile SET "money"="money"+$1, "xp"="xp"+$2, "completed"="completed"+1 WHERE "user"=$3;', gold, xp, ctx.author.id, ) if (partner := ctx.character_data["marriage"]): await conn.execute( 'UPDATE profile SET "money"="money"+($1*(1+"lovescore"/1000000)) WHERE "user"=$2;', int(gold / 2), partner, )