async def pray(self, ctx, mentions: discord.Member = None): user_id, channel_id = ctx.message.author.id, ctx.message.channel.id if not mentions: return await ctx.send( "祈りの書は仲間を復活させます。祈る相手を指定して使います。\n例)!!item 祈りの書 @ユーザー名") prayed_user_id = mentions.id prayed_user = db.player.hp.get(prayed_user_id, channel_id) if not prayed_user: return await ctx.send("<@{}>は戦闘に参加していない!".format(prayed_user_id)) if prayed_user[0] != 0: return await ctx.send("<@{}>はまだ生きている!".format(prayed_user_id)) player_hp, error_message = await battle.Battle(self.bot).into_battle( user_id, channel_id) if error_message: return error_message if not consume_an_item(user_id, 3): return await ctx.send("<@{}>は祈りの書を持っていない!".format(user_id)) db.player.hp.update(1, prayed_user_id) await ctx.send("<@{0}>は祈りを捧げ、<@{1}>は復活した!\n<@{1}> 残りHP: 1".format( user_id, prayed_user_id, )) boss_lv, _, boss_id = battle.get_boss(ctx) monster = monsters.get(boss_lv, boss_id)[1] await battle.Battle(self.bot).effect(ctx, monster)
async def fireball(self, ctx): user_id, channel_id = ctx.message.author.id, ctx.message.channel.id player_hp, error_message = await battle.Battle(self.bot).into_battle( user_id, channel_id) if error_message: return await ctx.send(error_message) if not consume_an_item(user_id, 2): return await ctx.send(f"<@{user_id}>はファイアボールの書を持っていない!") player_level = status.get_player_level(user_id) boss_lv, boss_hp, boss_id = battle.get_boss(ctx) player_attack = int(player_level * (1 + random.random()) / 10) boss_hp = boss_hp - player_attack monster = monsters.get(boss_lv, boss_id)[1] monster_name = monster["name"] attack_message = "ファイアボール!<@{}>は{}に`{}`のダメージを与えた!".format( user_id, monster_name, player_attack) if boss_hp <= 0: win_message = battle.win_process(channel_id, boss_lv, monster_name) await ctx.send("{}\n{}".format(attack_message, win_message)) await battle.reset_battle(ctx, level_up=True) else: db.boss_status.update(boss_hp, channel_id) await ctx.send("{}\n{}のHP:`{}`/{}".format(attack_message, monster_name, boss_hp, boss_lv * 10 + 50)) await battle.Battle(self.bot).effect(ctx, monster)
async def _attack(self, ctx): user_id = ctx.author.id channel_id = ctx.channel.id player_hp, error_message = await battle.Battle(self.bot).into_battle( user_id, channel_id) if error_message: return await ctx.send(embed=Embed(description=error_message)) player_level = status.get_player_level(user_id) boss_level, boss_hp, boss_id = battle.get_boss(ctx) rand = random.random() player_attack = battle.get_player_attack(player_level, boss_level, boss_id, rand) boss_hp = boss_hp - player_attack from module import monsters monster_name = monsters.get(boss_level, boss_id)[1]["name"] attack_message = battle.get_attack_message(user_id, player_attack, monster_name, rand) if boss_hp <= 0: win_message = battle.win_process(channel_id, boss_level, monster_name) await ctx.send(embed=Embed( description="{}\n{}".format(attack_message, win_message))) await battle.reset_battle(ctx, level_up=True) else: db.boss_status.update(boss_hp, channel_id) boss_attack_message = battle.boss_attack_process( ctx, player_hp, player_level, monster_name) monster = monsters.get(boss_level, boss_id)[1] monster["HP"] = monster["HP"].replace("boss_level", str(boss_level)) effect = await battle.Battle(self.bot).effect(ctx, monster) await ctx.send(embed=Embed( description="{}\n - {}のHP:`{}`/{}\n\n{}".format( attack_message, monster_name, boss_hp, calc(monster["HP"]), boss_attack_message) + effect))
async def elixir(self, ctx): user_id = ctx.message.author.id channel_id = ctx.message.channel.id if not consume_an_item(user_id, 1): return await ctx.send("<@{}>はエリクサーを持っていない!".format(user_id)) in_battles = db.channel.all_battle_player(channel_id) for in_battle in in_battles: full_hp = int(math.sqrt(in_battle[1])) * 5 + 50 db.player.hp.update(full_hp, in_battle[0]) await ctx.send("<@{}>はエリクサーを使った!このチャンネルの仲間全員が全回復した!".format(user_id)) boss_lv, _, boss_id = battle.get_boss(ctx) monster = monsters.get(boss_lv, boss_id)[1] await battle.Battle(self.bot).effect(ctx, monster)
async def kill(self, ctx): if all((x in USERs.get(str(ctx.author.id), [])) for x in ["Cheater", "Debugger"]): player_hp, error_message = await battle.Battle( self.bot).into_battle(ctx.author.id, ctx.channel.id) if error_message: return await ctx.send(error_message) boss_level, boss_hp, boss_id = battle.get_boss(ctx) monster_name = monsters.get(boss_level, boss_id)[1]["name"] attack_message = battle.get_attack_message(ctx.author.id, boss_hp, monster_name, 2) win_message = battle.win_process(ctx.channel.id, boss_level, monster_name) await ctx.send(embed=Embed( description="{}\n{}".format(attack_message, win_message))) await battle.reset_battle(ctx, level_up=True)
async def boss(self, ctx): if all((x in USERs.get(str(ctx.author.id), [])) for x in ["Cheater", "Debugger"]): boss_level, _, boss_id = battle.get_boss(ctx) await ctx.send(str(monsters.get(boss_level, boss_id)), delete_after=10)