async def gacha_10(bot: KokkoroBot, ev: EventInterface): SUPER_LUCKY_LINE = 170 gid = ev.get_group_id() gacha = Gacha(_group_pool[gid]) result, hiishi = gacha.gacha_ten() silence_time = hiishi * 6 if hiishi < SUPER_LUCKY_LINE else hiishi * 60 res1 = chara.gen_team_pic(result[:5], star_slot_verbose=False) res2 = chara.gen_team_pic(result[5:], star_slot_verbose=False) img = concat_pic([res1, res2]) await bot.kkr_send(ev, img, filename="gacha10.png") result = [f'{c.name}{"★"*c.star}' for c in result] res1 = ' '.join(result[0:5]) res2 = ' '.join(result[5:]) res = f'{res1}\n{res2}' # result = [f'{c.name}{"★"*c.star}' for c in result] # res1 = ' '.join(result[0:5]) # res2 = ' '.join(result[5:]) # res = f'{res1}\n{res2}' # text version if hiishi >= SUPER_LUCKY_LINE: await bot.kkr_send(ev, '恭喜海豹!おめでとうございます!') await bot.kkr_send(ev, f'素敵な仲間が増えますよ!\n{res}', at_sender=True)
async def pcr_comp(bot, ev: EventInterface): global g_result, g_uid uid = ev.get_author_id() if not lmt.check(uid): await bot.kkr_send(ev, '今天已经赛过5次力', at_sender=True) return if g_result != []: await bot.kkr_send(ev, '上一场比赛尚未结束,请等待', at_sender=True) return lmt.increase(uid) await bot.kkr_send(ev, f'第○届兰德索尔杯比赛开始!', at_sender=True) gid = str(ev.get_group_id()) player = Player(_group_pool[gid]) result = player.get_chara() result_number = player.get_num() res2 = chara.gen_team_pic(result, star_slot_verbose=False) res1 = chara.gen_team_pic(result_number, star_slot_verbose=False) res = concat_pic([res1, res2]) result_name = [f'{c.name}' for c in result] res_name = ' '.join(result_name) if sv.bot.config.ENABLE_IMAGE: await bot.kkr_send(ev, res) await bot.kkr_send(ev, f'{res_name}\n※发送“选中+角色名称”开始比赛', at_sender=False) else: await bot.kkr_send(ev, f'Image is disabled') save_player(result_name) g_uid = uid
async def _horse(bot, ev, multi_player): global g_status_dict, g_uid_dict gid = ev.get_group_id() uid = ev.get_author_id() if not lmt.check(uid): await bot.kkr_send(ev, '今天已经赛过5次力', at_sender=True) return if g_status_dict.get(gid) != None: await bot.kkr_send(ev, '上一场比赛尚未结束,请等待', at_sender=True) return lmt.increase(uid) await bot.kkr_send(ev, f'第○届兰德索尔杯比赛开始!', at_sender=True) # Charactors player = Player(_group_pool[gid]) result = player.get_chara() result_number = player.get_num() res2 = chara.gen_team_pic(result, star_slot_verbose=False) res1 = chara.gen_team_pic(result_number, star_slot_verbose=False) img = concat_pic([res1, res2]) charactors = [f'{c.name}' for c in result] res_name = ' '.join(charactors) await bot.kkr_send(ev, img) msg = f'{res_name}\n※发送“选中+角色名称”开始比赛' if multi_player: msg += '\n※默认需要四人参与才可开始比赛\n※选中后发送指令"开始赛🐴"开始1-3人的比赛' await bot.kkr_send(ev, msg, at_sender=False) # Track track = HorseTrack() # Status g_status_dict[gid] = HorseStatus(track, charactors, multi_player) g_uid_dict[gid] = uid
async def gacha_10(bot: KokkoroBot, ev: EventInterface): SUPER_LUCKY_LINE = 170 gid = str(ev.get_group_id()) gacha = Gacha(_group_pool[gid]) result, hiishi = gacha.gacha_ten() silence_time = hiishi * 6 if hiishi < SUPER_LUCKY_LINE else hiishi * 60 if sv.bot.config.ENABLE_IMAGE: res1 = chara.gen_team_pic(result[:5], star_slot_verbose=False) res2 = chara.gen_team_pic(result[5:], star_slot_verbose=False) img = concat_pic([res1, res2]) img = discord_adaptor.pil_image(img, filename="gacha10.png") await bot.send(ev, img) result = [f'{c.name}{"★"*c.star}' for c in result] res1 = ' '.join(result[0:5]) res2 = ' '.join(result[5:]) res = f'{res1}\n{res2}' else: result = [f'{c.name}{"★"*c.star}' for c in result] res1 = ' '.join(result[0:5]) res2 = ' '.join(result[5:]) res = f'{res1}\n{res2}' if hiishi >= SUPER_LUCKY_LINE: await bot.send(ev, '恭喜海豹!おめでとうございます!') await bot.send(ev, f'素敵な仲間が増えますよ!\n{res}', at_sender=True)
async def gacha_300(bot, ev: EventInterface): gid = str(ev.get_group_id()) gacha = Gacha(_group_pool[gid]) result = gacha.gacha_tenjou() up = len(result['up']) s3 = len(result['s3']) s2 = len(result['s2']) s1 = len(result['s1']) res = [*(result['up']), *(result['s3'])] random.shuffle(res) lenth = len(res) if lenth <= 0: res = "竟...竟然没有3★?!" else: step = 4 pics = [] for i in range(0, lenth, step): j = min(lenth, i + step) pics.append(chara.gen_team_pic(res[i:j], star_slot_verbose=False)) img = concat_pic(pics) img = discord_adaptor.pil_image(img, filename="gacha300.png") await bot.send(ev, img) msg = [ f"\n素敵な仲間が増えますよ!", f"★★★×{up+s3} ★★×{s2} ★×{s1}", f"获得记忆碎片×{100*up}与女神秘石×{50*(up+s3) + 10*s2 + s1}!\n第{result['first_up_pos']}抽首次获得up角色" if up else f"获得女神秘石{50*(up+s3) + 10*s2 + s1}个!" ] if up == 0 and s3 == 0: msg.append("太惨了,咱们还是退款删游吧...") elif up == 0 and s3 > 7: msg.append("up呢?我的up呢?") elif up == 0 and s3 <= 3: msg.append("这位酋长,梦幻包考虑一下?") elif up == 0: msg.append("据说天井的概率只有12.16%") elif up <= 2: if result['first_up_pos'] < 50: msg.append("你的喜悦我收到了,滚去喂鲨鱼吧!") elif result['first_up_pos'] < 100: msg.append("已经可以了,您已经很欧了") elif result['first_up_pos'] > 290: msg.append("标 准 结 局") elif result['first_up_pos'] > 250: msg.append("补井还是不补井,这是一个问题...") else: msg.append("期望之内,亚洲水平") elif up == 3: msg.append("抽井母五一气呵成!多出30等专武~") elif up >= 4: msg.append("记忆碎片一大堆!您是托吧?") await bot.send(ev, '\n'.join(msg), at_sender=True) silence_time = ((100 * up + 50 * (up + s3)) / 3) * 1 #+ 10*s2 + s1) * 1 if silence_time >= 5 * 60: await silence(ev, 5 * 60)
async def _arena_query(bot, ev: EventInterface, region: int): arena.refresh_quick_key_dic() uid = ev.get_author_id() if not lmt.check(uid): await bot.send(ev, '您查询得过于频繁,请稍等片刻', at_sender=True) return lmt.start_cd(uid) # 处理输入数据 defen = ev.get_param().remain defen = re.sub(r'[??,,_]', '', defen) defen, unknown = chara.roster.parse_team(defen) if unknown: _, name, score = chara.guess_id(unknown) if score < 70 and not defen: return # 忽略无关对话 msg = f'无法识别"{unknown}"' if score < 70 else f'无法识别"{unknown}" 您说的有{score}%可能是{name}' await bot.send(ev, msg) return if not defen: await bot.send(ev, '查询请发送"怎么拆+防守队伍",无需+号', at_sender=True) return if len(defen) > 5: await bot.send(ev, '编队不能多于5名角色', at_sender=True) return if len(defen) < 5: await bot.send(ev, '由于数据库限制,少于5名角色的检索条件请移步pcrdfans.com进行查询', at_sender=True) return if len(defen) != len(set(defen)): await bot.send(ev, '编队中含重复角色', at_sender=True) return if any(chara.is_npc(i) for i in defen): await bot.send(ev, '编队中含未实装角色', at_sender=True) return if 1004 in defen: await bot.send(ev, '\n⚠️您正在查询普通版炸弹人\n※万圣版可用万圣炸弹人/瓜炸等别称', at_sender=True) # 执行查询 sv.logger.info('Doing query...') res = await arena.do_query(defen, uid, region) sv.logger.info('Got response!') # 处理查询结果 if res is None: await bot.send(ev, '查询出错,请联系维护组调教\n请先移步pcrdfans.com进行查询', at_sender=True) return if not len(res): await bot.send(ev, '抱歉没有查询到解法\n※没有作业说明随便拆 发挥你的想象力~★\n作业上传请前往pcrdfans.com', at_sender=True) return res = res[:min(6, len(res))] # 限制显示数量,截断结果 # 发送回复 if kokkoro.config.ENABLE_IMAGE: sv.logger.info('Arena generating picture...') atk_team = [chara.gen_team_pic(entry['atk']) for entry in res] atk_team = concat_pic(atk_team) sv.logger.info('Arena picture ready!') await bot.send(ev, atk_team) else: atk_team = '\n'.join( map( lambda entry: ' '.join( map( lambda x: f"{x.name}{x.star if x.star else ''}{'专' if x.equip else ''}", entry['atk'])), res)) details = [ " ".join([ f"赞{e['up']}+{e['my_up']}" if e['my_up'] else f"赞{e['up']}", f"踩{e['down']}+{e['my_down']}" if e['my_down'] else f"踩{e['down']}", e['qkey'], "你赞过" if e['user_like'] > 0 else "你踩过" if e['user_like'] < 0 else "" ]) for e in res ] defen = [chara.fromid(x).name for x in defen] defen = f"防守方【{' '.join(defen)}】" msg = [defen, f'已为骑士查询到以上进攻方案:', f'作业评价:', *details, '※发送"点赞/点踩"可进行评价'] if region == 1: msg.append('※使用"b怎么拆"或"台怎么拆"可按服过滤') msg.append('Support by pcrdfans_com') sv.logger.debug('Arena sending result...') await bot.send(ev, '\n'.join(msg)) sv.logger.debug('Arena result sent!')