From 36978da4e68e07ae1c88f69f90554b7356138435 Mon Sep 17 00:00:00 2001 From: AnLanyoru Date: Mon, 16 Dec 2024 08:51:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=98=E6=96=97=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiuxian/xiuxian_utils/player_fight.py | 1356 +++++++++-------- 1 file changed, 705 insertions(+), 651 deletions(-) diff --git a/nonebot_plugin_xiuxian_2/xiuxian/xiuxian_utils/player_fight.py b/nonebot_plugin_xiuxian_2/xiuxian/xiuxian_utils/player_fight.py index 0f1a14c..554d0b5 100755 --- a/nonebot_plugin_xiuxian_2/xiuxian/xiuxian_utils/player_fight.py +++ b/nonebot_plugin_xiuxian_2/xiuxian/xiuxian_utils/player_fight.py @@ -1,23 +1,35 @@ import random -from .xiuxian2_handle import XiuxianDateManage ,OtherSet, UserBuffDate, XIUXIAN_IMPART_BUFF +from .xiuxian2_handle import XiuxianDateManage, OtherSet, UserBuffDate, XIUXIAN_IMPART_BUFF from ..xiuxian_config import convert_rank from .utils import number_to sql_message = XiuxianDateManage() # sql类 xiuxian_impart = XIUXIAN_IMPART_BUFF() -boss_zs = 0 -boss_hx = 0 -boss_bs = 0 -boss_jg = 0 -boss_jh = 0 -boss_jb = 0 -boss_xx = 0 -boss_xl =0 - -random_break = 0 -random_xx = 0 -random_hx = 0 -random_def = 0 + + +class BossBuff: + def __init__(self): + self.boss_zs = 0 + self.boss_hx = 0 + self.boss_bs = 0 + self.boss_xx = 0 + self.boss_jg = 0 + self.boss_jh = 0 + self.boss_jb = 0 + self.boss_xl = 0 + + +class UserRandomBuff: + def __init__(self): + self.random_break = 0 + self.random_xx = 0 + self.random_hx = 0 + self.random_def = 0 + + +empty_boss_buff = BossBuff() +empty_ussr_random_buff = UserRandomBuff() + def Player_fight(player1: dict, player2: dict, type_in, bot_id): """ @@ -63,8 +75,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): if user2_buff_data.get_user_sec_buff_data() is not None: user2_skill_date = user2_buff_data.get_user_sec_buff_data() player2_skil_open = True - - player1_sub_open = False #辅修功法14 + + player1_sub_open = False # 辅修功法14 player2_sub_open = False user1_sub_buff_date = {} user2_sub_buff_date = {} @@ -73,7 +85,7 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): player1_sub_open = True if user2_buff_data.get_user_sub_buff_data() != None: user2_sub_buff_date = user2_buff_data.get_user_sub_buff_data() - player2_sub_open = True + player2_sub_open = True play_list = [] suc = None @@ -87,25 +99,30 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): player1_turn_cost = 0 # 先设定为初始值 0 player2_turn_cost = 0 - player1_f_js = get_user_def_buff(player1['user_id']) # 玩家1减伤 - player2_f_js = get_user_def_buff(player2['user_id']) # 玩家2减伤 + player1_f_js = get_user_def_buff(player1['user_id']) # 玩家1减伤 + player2_f_js = get_user_def_buff(player2['user_id']) # 玩家2减伤 player1_js = player1_f_js player2_js = player2_f_js user1_skill_sh = 0 user2_skill_sh = 0 user1_buff_turn = True user2_buff_turn = True - + user1_battle_buff_date = UserBattleBuffDate(player1['user_id']) # 1号的战斗buff信息 user2_battle_buff_date = UserBattleBuffDate(player2['user_id']) # 2号的战斗buff信息 - + while True: msg1 = "{}发起攻击,造成了{}伤害\n" msg2 = "{}发起攻击,造成了{}伤害\n" - - user1_battle_buff_date, user2_battle_buff_date, msg = start_sub_buff_handle(player1_sub_open, user1_sub_buff_date, user1_battle_buff_date, player2_sub_open, user2_sub_buff_date , user2_battle_buff_date) - play_list.append(get_msg_dict(player1, player1_init_hp, msg)) #辅修功法14 - + + user1_battle_buff_date, user2_battle_buff_date, msg = start_sub_buff_handle(player1_sub_open, + user1_sub_buff_date, + user1_battle_buff_date, + player2_sub_open, + user2_sub_buff_date, + user2_battle_buff_date) + play_list.append(get_msg_dict(player1, player1_init_hp, msg)) # 辅修功法14 + player2_health_temp = player2['气血'] if player1_skil_open: # 是否开启技能 if user1_turn_skip: # 无需跳过回合 @@ -127,7 +144,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): elif user1_skill_type == 2: # 持续性伤害技能 play_list.append(get_msg_dict(player1, player1_init_hp, skill_msg)) player1 = calculate_skill_cost(player1, user1_hp_cost, user1_mp_cost) - player2['气血'] = player2['气血'] - int(user1_skill_sh * (0.2 + player2_js)) # 玩家1的伤害 * 玩家2的减伤 + player2['气血'] = player2['气血'] - int( + user1_skill_sh * (0.2 + player2_js)) # 玩家1的伤害 * 玩家2的减伤 play_list.append( get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) @@ -146,7 +164,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) player2['气血'] = player2['气血'] - int(player1_sh * player2_js) # 玩家1的伤害 * 玩家2的减伤 play_list.append( - get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) + get_msg_dict(player1, player1_init_hp, + f"{player2['道号']}剩余血量{player2['气血']}")) elif user1_buff_type == 2: # 减伤类buff,需要在player2处判断 isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 @@ -161,7 +180,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) player2['气血'] = player2['气血'] - int(player1_sh * player2_js) # 玩家1的伤害 * 玩家2的减伤 play_list.append( - get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) + get_msg_dict(player1, player1_init_hp, + f"{player2['道号']}剩余血量{player2['气血']}")) player1_js = player1_f_js - user1_skill_sh if player1_f_js - user1_skill_sh > 0.1 else 0.1 elif user1_skill_type == 4: # 封印类技能 @@ -178,9 +198,11 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): msg1 = "{}发起会心一击,造成了{}伤害\n" else: msg1 = "{}发起攻击,造成了{}伤害\n" - play_list.append(get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) + play_list.append( + get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) player2['气血'] = player2['气血'] - int(player1_sh * player2_js) # 玩家1的伤害 * 玩家2的减伤 - play_list.append(get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) + play_list.append( + get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) else: # 持续性技能判断,不是第一次 if user1_skill_type == 2: # 持续性伤害技能 @@ -193,15 +215,18 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): msg1 = "{}发起会心一击,造成了{}伤害\n" else: msg1 = "{}发起攻击,造成了{}伤害\n" - play_list.append(get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) + play_list.append( + get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) # 玩家1的伤害 * 玩家2的减伤,持续性伤害不影响普攻 player2['气血'] = player2['气血'] - int((user1_skill_sh + player1_sh) * player2_js) - play_list.append(get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) + play_list.append( + get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) elif user1_skill_type == 3: # buff类技能 user1_buff_type = user1_skill_data['bufftype'] if user1_buff_type == 1: # 攻击类buff - isCrit, player1_sh = get_turnatk(player1, user1_skill_sh,user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, user1_skill_sh, + user1_battle_buff_date) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" @@ -244,10 +269,12 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): msg1 = "{}发起会心一击,造成了{}伤害\n" else: msg1 = "{}发起攻击,造成了{}伤害\n" - play_list.append(get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) + play_list.append( + get_msg_dict(player1, player1_init_hp, msg1.format(player1['道号'], player1_sh))) player2['气血'] = player2['气血'] - int(player1_sh * player2_js) # 玩家1的伤害 * 玩家2的减伤 - play_list.append(get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) + play_list.append( + get_msg_dict(player1, player1_init_hp, f"{player2['道号']}剩余血量{player2['气血']}")) if player1_turn_cost == 0: # 封印时间到 user2_turn_skip = True user2_buff_turn = True @@ -275,7 +302,9 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): play_list.append(get_msg_dict(player1, player1_init_hp, f"☆------{player1['道号']}动弹不得!------☆")) ## 自己回合结束 处理 辅修功法14 - player1, boss, msg = after_atk_sub_buff_handle(player1_sub_open,player1, user1_main_buff_data, user1_sub_buff_date, player2_health_temp-player2['气血'], player2) + player1, boss, msg = after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, + user1_sub_buff_date, player2_health_temp - player2['气血'], + player2) play_list.append(get_msg_dict(player1, player1_init_hp, msg)) if player2['气血'] <= 0: # 玩家2气血小于0,结算 @@ -298,8 +327,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): if player1_turn_cost < 0: # 休息为负数,如果休息,则跳过回合,正常是0 user1_turn_skip = False player1_turn_cost += 1 - - player1_health_temp = player1['气血'] #辅修功法14 + + player1_health_temp = player1['气血'] # 辅修功法14 if player2_skil_open: # 有技能 if user2_turn_skip: # 玩家2无需跳过回合 play_list.append(get_msg_dict(player2, player2_init_hp, f"☆------{player2['道号']}的回合------☆")) @@ -319,7 +348,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): elif user2_skill_type == 2: # 持续性伤害技能 play_list.append(get_msg_dict(player2, player2_init_hp, skill_msg)) - player1['气血'] = player1['气血'] - int(user2_skill_sh *(0.2 + player1_js) ) # 玩家2的伤害 * 玩家1的减伤 + player1['气血'] = player1['气血'] - int( + user2_skill_sh * (0.2 + player1_js)) # 玩家2的伤害 * 玩家1的减伤 play_list.append( get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) player2 = calculate_skill_cost(player2, user2_hp_cost, user2_mp_cost) @@ -327,7 +357,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): elif user2_skill_type == 3: # buff类技能 user2_buff_type = user2_skill_date['bufftype'] if user2_buff_type == 1: # 攻击类buff - isCrit, player2_sh = get_turnatk(player2, user2_skill_sh, user2_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player2_sh = get_turnatk(player2, user2_skill_sh, + user2_battle_buff_date) # 判定是否暴击 辅修功法14 if isCrit: msg2 = "{}发起会心一击,造成了{}伤害\n" else: @@ -338,7 +369,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) player1['气血'] = player1['气血'] - int(player2_sh * player1_js) play_list.append( - get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) + get_msg_dict(player2, player2_init_hp, + f"{player1['道号']}剩余血量{player1['气血']}")) player2 = calculate_skill_cost(player2, user2_hp_cost, user2_mp_cost) elif user2_buff_type == 2: # 减伤类buff,需要在player2处判断 @@ -352,7 +384,8 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) player1['气血'] = player1['气血'] - int(player2_sh * player1_js) play_list.append( - get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) + get_msg_dict(player2, player2_init_hp, + f"{player1['道号']}剩余血量{player1['气血']}")) player2_js = player2_f_js - user2_skill_sh if player2_f_js - user2_skill_sh > 0.1 else 0.1 player2 = calculate_skill_cost(player2, user2_hp_cost, user2_mp_cost) @@ -370,9 +403,11 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): msg2 = "{}发起会心一击,造成了{}伤害\n" else: msg2 = "{}发起攻击,造成了{}伤害\n" - play_list.append(get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) + play_list.append( + get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) player1['气血'] = player1['气血'] - int(player2_sh * player1_js) # 玩家2的伤害 * 玩家1的减伤 - play_list.append(get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) + play_list.append( + get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) else: # 持续性技能判断,不是第一次 if user2_skill_type == 2: # 持续性伤害技能 @@ -387,14 +422,17 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): else: msg2 = "{}发起攻击,造成了{}伤害\n" - play_list.append(get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) + play_list.append( + get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) player1['气血'] = player1['气血'] - int((user2_skill_sh + player2_sh) * player1_js) - play_list.append(get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) + play_list.append( + get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) elif user2_skill_type == 3: # buff类技能 user2_buff_type = user2_skill_date['bufftype'] if user2_buff_type == 1: # 攻击类buff - isCrit, player2_sh = get_turnatk(player2, user2_skill_sh, user2_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player2_sh = get_turnatk(player2, user2_skill_sh, + user2_battle_buff_date) # 判定是否暴击 辅修功法14 if isCrit: msg2 = "{}发起会心一击,造成了{}伤害\n" @@ -438,9 +476,11 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): msg2 = "{}发起会心一击,造成了{}伤害\n" else: msg2 = "{}发起攻击,造成了{}伤害\n" - play_list.append(get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) + play_list.append( + get_msg_dict(player2, player2_init_hp, msg2.format(player2['道号'], player2_sh))) player1['气血'] = player1['气血'] - int(player2_sh * player1_js) # 玩家1的伤害 * 玩家2的减伤 - play_list.append(get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) + play_list.append( + get_msg_dict(player2, player2_init_hp, f"{player1['道号']}剩余血量{player1['气血']}")) if player2_turn_cost == 0: # 封印时间到 user1_turn_skip = True @@ -483,10 +523,11 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): int(player2['真元'] / (1 + user2_mp_buff)) ) break - + ## 对方回合结束 处理 辅修功法14 - player2, player1, msg = after_atk_sub_buff_handle(player2_sub_open,player2, user2_main_buff_data, user2_sub_buff_date, - player1_health_temp - player1['气血'], player1) + player2, player1, msg = after_atk_sub_buff_handle(player2_sub_open, player2, user2_main_buff_data, + user2_sub_buff_date, + player1_health_temp - player1['气血'], player1) play_list.append(get_msg_dict(player1, player1_init_hp, msg)) if player1['气血'] <= 0: # 玩家2气血小于0,结算 @@ -496,16 +537,16 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): if isSql: sql_message.update_user_hp_mp(player1['user_id'], 1, int(player1['真元'] / (1 + user1_mp_buff))) sql_message.update_user_hp_mp(player2['user_id'], int(player2['气血'] / (1 + user2_hp_buff)), - int(player2['真元'] / (1 + user2_mp_buff))) + int(player2['真元'] / (1 + user2_mp_buff))) break - if player2_turn_cost < 0: # 休息为负数,如果休息,则跳过回合,正常是0 user2_turn_skip = False player2_turn_cost += 1 if user1_turn_skip == False and user2_turn_skip == False: - play_list.append({"type": "node", "data": {"name": "Bot", "uin": int(bot_id), "content": "双方都动弹不得!"}}) + play_list.append( + {"type": "node", "data": {"name": "Bot", "uin": int(bot_id), "content": "双方都动弹不得!"}}) user1_turn_skip = True user2_turn_skip = True @@ -515,15 +556,18 @@ def Player_fight(player1: dict, player2: dict, type_in, bot_id): return play_list, suc + def get_st2_type(): data_dict = ST2 return get_dict_type_rate(data_dict) + def get_st1_type(): """根据概率返回事件类型""" data_dict = ST1 return get_dict_type_rate(data_dict) + def get_dict_type_rate(data_dict): """根据字典内概率,返回字典key""" temp_dict = {} @@ -535,35 +579,36 @@ def get_dict_type_rate(data_dict): key = OtherSet().calculated(temp_dict) return key -ST1 ={ - "攻击": { - "type_rate": 50, - }, - "会心": { - "type_rate": 50, - }, - "暴伤": { - "type_rate": 50, - }, - "禁血": { - "type_rate": 50, - } + +ST1 = { + "攻击": { + "type_rate": 50, + }, + "会心": { + "type_rate": 50, + }, + "暴伤": { + "type_rate": 50, + }, + "禁血": { + "type_rate": 50, } +} -ST2 ={ - "降攻": { - "type_rate": 50, - }, - "降会": { - "type_rate": 50, - }, - "降暴": { - "type_rate": 50, - }, - "禁蓝": { - "type_rate": 50, - } +ST2 = { + "降攻": { + "type_rate": 50, + }, + "降会": { + "type_rate": 50, + }, + "降暴": { + "type_rate": 50, + }, + "禁蓝": { + "type_rate": 50, } +} async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): @@ -574,97 +619,75 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): {"user_id": None,"道号": None, "气血": None, "攻击": None, "真元": None, '会心':None, 'exp':None} """ user1_buff_date = UserBuffDate(player1['user_id']) # 1号的buff信息 - if user1_buff_date is None: # 处理为空的情况 + if user1_buff_date is None: # 处理为空的情况 user1_main_buff_data = None user1_sub_buff_data = None else: user1_main_buff_data = user1_buff_date.get_user_main_buff_data() - user1_sub_buff_data = user1_buff_date.get_user_sub_buff_data() #获取玩家1的辅修功法 - user1_hp_buff = user1_main_buff_data['hpbuff'] if user1_main_buff_data is not None else 0 - user1_mp_buff = user1_main_buff_data['mpbuff'] if user1_main_buff_data is not None else 0 - user1_random_buff = user1_main_buff_data['random_buff'] if user1_main_buff_data is not None else 0 - fan_buff = user1_sub_buff_data['fan'] if user1_sub_buff_data is not None else 0 - stone_buff = user1_sub_buff_data['stone'] if user1_sub_buff_data is not None else 0 - integral_buff = user1_sub_buff_data['integral'] if user1_sub_buff_data is not None else 0 - sub_break = user1_sub_buff_data['break'] if user1_sub_buff_data is not None else 0 + user1_sub_buff_data = user1_buff_date.get_user_sub_buff_data() # 获取玩家1的辅修功法 + user1_hp_buff = user1_main_buff_data['hpbuff'] if user1_main_buff_data is not None else 0 + user1_mp_buff = user1_main_buff_data['mpbuff'] if user1_main_buff_data is not None else 0 + user1_random_buff = user1_main_buff_data['random_buff'] if user1_main_buff_data is not None else 0 + fan_buff = user1_sub_buff_data['fan'] if user1_sub_buff_data is not None else 0 + stone_buff = user1_sub_buff_data['stone'] if user1_sub_buff_data is not None else 0 + integral_buff = user1_sub_buff_data['integral'] if user1_sub_buff_data is not None else 0 + sub_break = user1_sub_buff_data['break'] if user1_sub_buff_data is not None else 0 impart_data = xiuxian_impart.get_user_impart_info_with_id(player1['user_id']) impart_hp_per = impart_data['impart_hp_per'] if impart_data is not None else 0 impart_mp_per = impart_data['impart_mp_per'] if impart_data is not None else 0 user1_hp_buff = user1_hp_buff + impart_hp_per user1_mp_buff = user1_mp_buff + impart_mp_per - global random_break - global random_xx - global random_hx - global random_def - - - + + random_buff = UserRandomBuff() if user1_random_buff == 1: - user1_main_buff = random.randint(0,100) - if 0<= user1_main_buff <= 25: - random_break = random.randint(15,40)/100 - random_xx = 0 - random_hx = 0 - random_def = 0 - elif 26<= user1_main_buff <= 50: - random_break = 0 - random_xx = random.randint(2,10)/100 - random_hx = 0 - random_def = 0 - elif 51<= user1_main_buff <= 75: - random_break = 0 - random_xx = 0 - random_hx = random.randint(5,40)/100 - random_def = 0 - elif 76<= user1_main_buff <= 100: - random_break = 0 - random_xx = 0 - random_hx = 0 - random_def = random.randint(5,15)/100 - else: - random_break = 0 - random_xx = 0 - random_hx = 0 - random_def = 0 - - user1_break = random_break + sub_break - + user1_main_buff = random.randint(0, 100) + if 0 <= user1_main_buff <= 25: + random_buff.random_break = random.randint(15, 40) / 100 + elif 26 <= user1_main_buff <= 50: + random_buff.random_xx = random.randint(2, 10) / 100 + elif 51 <= user1_main_buff <= 75: + random_buff.random_hx = random.randint(5, 40) / 100 + elif 76 <= user1_main_buff <= 100: + random_buff.random_def = random.randint(5, 15) / 100 + + user1_break = random_buff.random_break + sub_break + BOSSDEF = { - "衣以候": "衣以侯布下了禁制镜花水月,", - "金凰儿": "金凰儿使用了神通:金凰天火罩!", - "九寒": "九寒使用了神通:寒冰八脉!", - "莫女": "莫女使用了神通:圣灯启语诀!", - "术方": "术方使用了神通:天罡咒!", - "卫起": "卫起使用了神通:雷公铸骨!", - "血枫": "血枫使用了神通:混世魔身!", - "以向": "以向使用了神通:云床九练!", - "砂鲛": "不说了!开鳖!", - "神风王": "不说了!开鳖!", - "鲲鹏": "鲲鹏使用了神通:逍遥游!", - "天龙": "天龙使用了神通:真龙九变!", - "历飞雨": "厉飞雨使用了神通:天煞震狱功!", - "外道贩卖鬼": "不说了!开鳖!", - "元磁道人": "元磁道人使用了法宝:元磁神山!", - "散发着威压的尸体": "尸体周围爆发了出强烈的罡气!" -} + "衣以候": "衣以侯布下了禁制镜花水月,", + "金凰儿": "金凰儿使用了神通:金凰天火罩!", + "九寒": "九寒使用了神通:寒冰八脉!", + "莫女": "莫女使用了神通:圣灯启语诀!", + "术方": "术方使用了神通:天罡咒!", + "卫起": "卫起使用了神通:雷公铸骨!", + "血枫": "血枫使用了神通:混世魔身!", + "以向": "以向使用了神通:云床九练!", + "砂鲛": "不说了!开鳖!", + "神风王": "不说了!开鳖!", + "鲲鹏": "鲲鹏使用了神通:逍遥游!", + "天龙": "天龙使用了神通:真龙九变!", + "历飞雨": "厉飞雨使用了神通:天煞震狱功!", + "外道贩卖鬼": "不说了!开鳖!", + "元磁道人": "元磁道人使用了法宝:元磁神山!", + "散发着威压的尸体": "尸体周围爆发了出强烈的罡气!" + } BOSSATK = { - "衣以候": "衣以侯布下了禁制镜花水月,", - "金凰儿": "金凰儿使用了神通:金凰天火罩!", - "九寒": "九寒使用了神通:寒冰八脉!", - "莫女": "莫女使用了神通:圣灯启语诀!", - "术方": "术方使用了神通:天罡咒!", - "卫起": "卫起使用了神通:雷公铸骨!", - "血枫": "血枫使用了神通:混世魔身!", - "以向": "以向使用了神通:云床九练!", - "砂鲛": "不说了!开鳖!", - "神风王": "不说了!开鳖!", - "鲲鹏": "鲲鹏使用了神通:逍遥游!", - "天龙": "天龙使用了神通:真龙九变!", - "历飞雨": "厉飞雨使用了神通:天煞震狱功!", - "外道贩卖鬼": "不说了!开鳖!", - "元磁道人": "元磁道人使用了法宝:元磁神山!", - "散发着威压的尸体": "尸体周围爆发了出强烈的罡气!" -} + "衣以候": "衣以侯布下了禁制镜花水月,", + "金凰儿": "金凰儿使用了神通:金凰天火罩!", + "九寒": "九寒使用了神通:寒冰八脉!", + "莫女": "莫女使用了神通:圣灯启语诀!", + "术方": "术方使用了神通:天罡咒!", + "卫起": "卫起使用了神通:雷公铸骨!", + "血枫": "血枫使用了神通:混世魔身!", + "以向": "以向使用了神通:云床九练!", + "砂鲛": "不说了!开鳖!", + "神风王": "不说了!开鳖!", + "鲲鹏": "鲲鹏使用了神通:逍遥游!", + "天龙": "天龙使用了神通:真龙九变!", + "历飞雨": "厉飞雨使用了神通:天煞震狱功!", + "外道贩卖鬼": "不说了!开鳖!", + "元磁道人": "元磁道人使用了法宝:元磁神山!", + "散发着威压的尸体": "尸体周围爆发了出强烈的罡气!" + } # 有技能,则开启技能模式 @@ -674,13 +697,12 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): user1_skill_date = user1_buff_date.get_user_sec_buff_data() player1_skil_open = True - player1_sub_open = False #辅修功法14 + player1_sub_open = False # 辅修功法14 user1_sub_buff_date = {} if user1_buff_date.get_user_sub_buff_data() is not None: user1_sub_buff_date = user1_buff_date.get_user_sub_buff_data() player1_sub_open = True - play_list = [] player_init_hp = player1['气血'] suc = None @@ -691,366 +713,351 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): boss_turn_skip = True player1_turn_cost = 0 # 先设定为初始值 0 player1_f_js = get_user_def_buff(player1['user_id']) - player1_js = player1_f_js # 减伤率 - - - global boss_zs - global boss_hx - global boss_bs - global boss_xx - global boss_jg - global boss_jh - global boss_jb - global boss_xl - + player1_js = player1_f_js # 减伤率 + boss_buff = BossBuff() if boss["jj"] == "祭道境": - #boss["减伤"] = random.randint(40,90)/100 # boss减伤率 - boss["减伤"] = 0.05 # boss减伤率 - boss_st1 = random.randint(0,100) #boss神通1 - if 0 <= boss_st1 <= 25: - boss_zs = 1 #boss攻击 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - elif 26 <= boss_st1 <= 50: - boss_zs = 0 - boss_hx = 0.7 #boss会心 - boss_bs = 0 - boss_xx = 0 - elif 51 <= boss_st1 <= 75: - boss_zs = 0 - boss_hx = 0 - boss_bs = 2 #boss暴伤 - boss_xx = 0 - elif 75 <= boss_st1 <= 100: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = 1 #boss禁血 - - boss_st2 = random.randint(0,100) #boss神通2 - if 0 <= boss_st2 <= 25: - boss_jg = 0.7 #boss降攻 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - elif 26 <= boss_st2 <= 50: - boss_jg = 0 - boss_jh = 0.7 #boss降会 - boss_jb = 0 - boss_xl = 0 - elif 51 <= boss_st2 <= 75: - boss_jg = 0 - boss_jh = 0 - boss_jb = 1.5 #boss降暴 - boss_xl = 0 - elif 76 <= boss_st2 <= 100: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = 1 #boss禁蓝 - - if convert_rank('遁一境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('江湖好手')[0]: #遁一以下 - boss["减伤"] = 1 # boss减伤率 - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - if convert_rank('至尊境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('斩我境圆满')[0]: #遁一境 - boss["减伤"] = random.randint(50,55) / 100 # boss减伤率 - boss_st1 = random.randint(0,100) #boss神通1 - if 0 <= boss_st1 <= 25: - boss_zs = 0.3 #boss攻击 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - elif 26 <= boss_st1 <= 50: - boss_zs = 0 - boss_hx = 0.1 #boss会心 - boss_bs = 0 - boss_xx = 0 - elif 51 <= boss_st1 <= 75: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0.5 #boss暴伤 - boss_xx = 0 - elif 75 <= boss_st1 <= 100: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = random.randint(5,100) / 100 #boss禁血 - - boss_st2 = random.randint(0,100) #boss神通2 - if 0 <= boss_st2 <= 25: - boss_jg = 0.3 #boss降攻 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - elif 26 <= boss_st2 <= 50: - boss_jg = 0 - boss_jh = 0.3 #boss降会 - boss_jb = 0 - boss_xl = 0 - elif 51 <= boss_st2 <= 75: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0.5 #boss降暴 - boss_xl = 0 - elif 76 <= boss_st2 <= 100: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = random.randint(5,100) / 100 #boss禁血 - - if convert_rank('真仙境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('遁一境圆满')[0]: #至尊境 - boss["减伤"] = random.randint(40,45) / 100 # boss减伤率 - boss_st1 = random.randint(0,100) #boss神通1 - if 0 <= boss_st1 <= 25: - boss_zs = 0.4 #boss攻击 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - elif 26 <= boss_st1 <= 50: - boss_zs = 0 - boss_hx = 0.2 #boss会心 - boss_bs = 0 - boss_xx = 0 - elif 51 <= boss_st1 <= 75: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0.7 #boss暴伤 - boss_xx = 0 - elif 75 <= boss_st1 <= 100: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = random.randint(10,100) / 100 #boss禁血 - - boss_st2 = random.randint(0,100) #boss神通2 - if 0 <= boss_st2 <= 25: - boss_jg = 0.4 #boss降攻 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - elif 26 <= boss_st2 <= 50: - boss_jg = 0 - boss_jh = 0.4 #boss降会 - boss_jb = 0 - boss_xl = 0 - elif 51 <= boss_st2 <= 75: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0.7 #boss降暴 - boss_xl = 0 - elif 76 <= boss_st2 <= 100: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = random.randint(10,100) / 100 #boss禁血 - - if convert_rank('仙王境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('至尊境圆满')[0]: #真仙境 - boss["减伤"] = random.randint(30,35) / 100 # boss减伤率 - boss_st1 = random.randint(0,100) #boss神通1 - if 0 <= boss_st1 <= 25: - boss_zs = 0.6 #boss攻击 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - elif 26 <= boss_st1 <= 50: - boss_zs = 0 - boss_hx = 0.35 #boss会心 - boss_bs = 0 - boss_xx = 0 - elif 51 <= boss_st1 <= 75: - boss_zs = 0 - boss_hx = 0 - boss_bs = 1.1 #boss暴伤 - boss_xx = 0 - elif 75 <= boss_st1 <= 100: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = random.randint(30,100) / 100 #boss禁血 - - boss_st2 = random.randint(0,100) #boss神通2 - if 0 <= boss_st2 <= 25: - boss_jg = 0.5 #boss降攻 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - elif 26 <= boss_st2 <= 50: - boss_jg = 0 - boss_jh = 0.5 #boss降会 - boss_jb = 0 - boss_xl = 0 - elif 51 <= boss_st2 <= 75: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0.9 #boss降暴 - boss_xl = 0 - elif 76 <= boss_st2 <= 100: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = random.randint(30,100) / 100 #boss禁血 - - if convert_rank('准帝境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('真仙境圆满')[0]: #仙王境 - boss["减伤"] = random.randint(20,25) / 100 # boss减伤率 - boss_st1 = random.randint(0,100) #boss神通1 - if 0 <= boss_st1 <= 25: - boss_zs = 0.7 #boss攻击 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - elif 26 <= boss_st1 <= 50: - boss_zs = 0 - boss_hx = 0.45 #boss会心 - boss_bs = 0 - boss_xx = 0 - elif 51 <= boss_st1 <= 75: - boss_zs = 0 - boss_hx = 0 - boss_bs = 1.3 #boss暴伤 - boss_xx = 0 - elif 75 <= boss_st1 <= 100: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = random.randint(40,100) / 100 #boss禁血 - - boss_st2 = random.randint(0,100) #boss神通2 - if 0 <= boss_st2 <= 25: - boss_jg = 0.55 #boss降攻 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - elif 26 <= boss_st2 <= 50: - boss_jg = 0 - boss_jh = 0.6 #boss降会 - boss_jb = 0 - boss_xl = 0 - elif 51 <= boss_st2 <= 75: - boss_jg = 0 - boss_jh = 0 - boss_jb = 1 #boss降暴 - boss_xl = 0 - elif 76 <= boss_st2 <= 100: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = random.randint(40,100) / 100 #boss禁血 - - if convert_rank('仙帝境初期')[0] < convert_rank((boss["jj"]+ '中期'))[0] < convert_rank('仙王境圆满')[0]: #准帝境 - boss["减伤"] = random.randint(10,15) / 100 # boss减伤率 - boss_st1 = random.randint(0,100) #boss神通1 - if 0 <= boss_st1 <= 25: - boss_zs = 0.85 #boss攻击 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - elif 26 <= boss_st1 <= 50: - boss_zs = 0 - boss_hx = 0.5 #boss会心 - boss_bs = 0 - boss_xx = 0 - elif 51 <= boss_st1 <= 75: - boss_zs = 0 - boss_hx = 0 - boss_bs = 1.5 #boss暴伤 - boss_xx = 0 - elif 75 <= boss_st1 <= 100: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = random.randint(50,100) / 100 #boss禁血 - - boss_st2 = random.randint(0,100) #boss神通2 - if 0 <= boss_st2 <= 25: - boss_jg = 0.6 #boss降攻 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - elif 26 <= boss_st2 <= 50: - boss_jg = 0 - boss_jh = 0.65 #boss降会 - boss_jb = 0 - boss_xl = 0 - elif 51 <= boss_st2 <= 75: - boss_jg = 0 - boss_jh = 0 - boss_jb = 1.1 #boss降暴 - boss_xl = 0 - elif 76 <= boss_st2 <= 100: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = random.randint(50,100) / 100 #boss禁血 - - if convert_rank('祭道境初期')[0] < convert_rank((boss["jj"]+ '中期'))[0] < convert_rank('准帝境圆满')[0]: #仙帝境 - boss["减伤"] = 0.1 # boss减伤率 - boss_st1 = random.randint(0,100) #boss神通1 - if 0 <= boss_st1 <= 25: - boss_zs = 0.9 #boss攻击 - boss_hx = 0 - boss_bs = 0 - boss_xx = 0 - elif 26 <= boss_st1 <= 50: - boss_zs = 0 - boss_hx = 0.6 #boss会心 - boss_bs = 0 - boss_xx = 0 - elif 51 <= boss_st1 <= 75: - boss_zs = 0 - boss_hx = 0 - boss_bs = 1.7 #boss暴伤 - boss_xx = 0 - elif 75 <= boss_st1 <= 100: - boss_zs = 0 - boss_hx = 0 - boss_bs = 0 - boss_xx = random.randint(60,100) / 100 #boss禁血 - - boss_st2 = random.randint(0,100) #boss神通2 - if 0 <= boss_st2 <= 25: - boss_jg = 0.62 #boss降攻 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 - elif 26 <= boss_st2 <= 50: - boss_jg = 0 - boss_jh = 0.67 #boss降会 - boss_jb = 0 - boss_xl = 0 - elif 51 <= boss_st2 <= 75: - boss_jg = 0 - boss_jh = 0 - boss_jb = 1.2 #boss降暴 - boss_xl = 0 - elif 76 <= boss_st2 <= 100: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = random.randint(60,100) / 100 #boss禁血 - - + # boss["减伤"] = random.randint(40,90)/100 # boss减伤率 + boss["减伤"] = 0.05 # boss减伤率 + boss_st1 = random.randint(0, 100) # boss神通1 + if 0 <= boss_st1 <= 25: + boss_buff.boss_zs = 1 # boss攻击 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 26 <= boss_st1 <= 50: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0.7 # boss会心 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 51 <= boss_st1 <= 75: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 2 # boss暴伤 + boss_buff.boss_xx = 0 + elif 75 <= boss_st1 <= 100: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 1 # boss禁血 + + boss_st2 = random.randint(0, 100) # boss神通2 + if 0 <= boss_st2 <= 25: + boss_buff.boss_jg = 0.7 # boss降攻 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 26 <= boss_st2 <= 50: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0.7 # boss降会 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 51 <= boss_st2 <= 75: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 1.5 # boss降暴 + boss_buff.boss_xl = 0 + elif 76 <= boss_st2 <= 100: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 1 # boss禁蓝 + + if convert_rank('遁一境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('江湖好手')[0]: # 遁一以下 + boss["减伤"] = 1 # boss减伤率 + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + if convert_rank('至尊境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('斩我境圆满')[0]: # 遁一境 + boss["减伤"] = random.randint(50, 55) / 100 # boss减伤率 + boss_st1 = random.randint(0, 100) # boss神通1 + if 0 <= boss_st1 <= 25: + boss_buff.boss_zs = 0.3 # boss攻击 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 26 <= boss_st1 <= 50: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0.1 # boss会心 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 51 <= boss_st1 <= 75: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0.5 # boss暴伤 + boss_buff.boss_xx = 0 + elif 75 <= boss_st1 <= 100: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = random.randint(5, 100) / 100 # boss禁血 + + boss_st2 = random.randint(0, 100) # boss神通2 + if 0 <= boss_st2 <= 25: + boss_buff.boss_jg = 0.3 # boss降攻 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 26 <= boss_st2 <= 50: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0.3 # boss降会 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 51 <= boss_st2 <= 75: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0.5 # boss降暴 + boss_buff.boss_xl = 0 + elif 76 <= boss_st2 <= 100: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = random.randint(5, 100) / 100 # boss禁血 + + if convert_rank('真仙境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('遁一境圆满')[0]: # 至尊境 + boss["减伤"] = random.randint(40, 45) / 100 # boss减伤率 + boss_st1 = random.randint(0, 100) # boss神通1 + if 0 <= boss_st1 <= 25: + boss_buff.boss_zs = 0.4 # boss攻击 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 26 <= boss_st1 <= 50: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0.2 # boss会心 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 51 <= boss_st1 <= 75: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0.7 # boss暴伤 + boss_buff.boss_xx = 0 + elif 75 <= boss_st1 <= 100: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = random.randint(10, 100) / 100 # boss禁血 + + boss_st2 = random.randint(0, 100) # boss神通2 + if 0 <= boss_st2 <= 25: + boss_buff.boss_jg = 0.4 # boss降攻 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 26 <= boss_st2 <= 50: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0.4 # boss降会 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 51 <= boss_st2 <= 75: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0.7 # boss降暴 + boss_buff.boss_xl = 0 + elif 76 <= boss_st2 <= 100: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = random.randint(10, 100) / 100 # boss禁血 + + if convert_rank('仙王境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('至尊境圆满')[0]: # 真仙境 + boss["减伤"] = random.randint(30, 35) / 100 # boss减伤率 + boss_st1 = random.randint(0, 100) # boss神通1 + if 0 <= boss_st1 <= 25: + boss_buff.boss_zs = 0.6 # boss攻击 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 26 <= boss_st1 <= 50: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0.35 # boss会心 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 51 <= boss_st1 <= 75: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 1.1 # boss暴伤 + boss_buff.boss_xx = 0 + elif 75 <= boss_st1 <= 100: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = random.randint(30, 100) / 100 # boss禁血 + + boss_st2 = random.randint(0, 100) # boss神通2 + if 0 <= boss_st2 <= 25: + boss_buff.boss_jg = 0.5 # boss降攻 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 26 <= boss_st2 <= 50: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0.5 # boss降会 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 51 <= boss_st2 <= 75: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0.9 # boss降暴 + boss_buff.boss_xl = 0 + elif 76 <= boss_st2 <= 100: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = random.randint(30, 100) / 100 # boss禁血 + + if convert_rank('准帝境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('真仙境圆满')[0]: # 仙王境 + boss["减伤"] = random.randint(20, 25) / 100 # boss减伤率 + boss_st1 = random.randint(0, 100) # boss神通1 + if 0 <= boss_st1 <= 25: + boss_buff.boss_zs = 0.7 # boss攻击 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 26 <= boss_st1 <= 50: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0.45 # boss会心 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 51 <= boss_st1 <= 75: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 1.3 # boss暴伤 + boss_buff.boss_xx = 0 + elif 75 <= boss_st1 <= 100: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = random.randint(40, 100) / 100 # boss禁血 + + boss_st2 = random.randint(0, 100) # boss神通2 + if 0 <= boss_st2 <= 25: + boss_buff.boss_jg = 0.55 # boss降攻 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 26 <= boss_st2 <= 50: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0.6 # boss降会 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 51 <= boss_st2 <= 75: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 1 # boss降暴 + boss_buff.boss_xl = 0 + elif 76 <= boss_st2 <= 100: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = random.randint(40, 100) / 100 # boss禁血 + + if convert_rank('仙帝境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('仙王境圆满')[0]: # 准帝境 + boss["减伤"] = random.randint(10, 15) / 100 # boss减伤率 + boss_st1 = random.randint(0, 100) # boss神通1 + if 0 <= boss_st1 <= 25: + boss_buff.boss_zs = 0.85 # boss攻击 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 26 <= boss_st1 <= 50: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0.5 # boss会心 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 51 <= boss_st1 <= 75: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 1.5 # boss暴伤 + boss_buff.boss_xx = 0 + elif 75 <= boss_st1 <= 100: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = random.randint(50, 100) / 100 # boss禁血 + + boss_st2 = random.randint(0, 100) # boss神通2 + if 0 <= boss_st2 <= 25: + boss_buff.boss_jg = 0.6 # boss降攻 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 26 <= boss_st2 <= 50: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0.65 # boss降会 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 51 <= boss_st2 <= 75: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 1.1 # boss降暴 + boss_buff.boss_xl = 0 + elif 76 <= boss_st2 <= 100: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = random.randint(50, 100) / 100 # boss禁血 + + if convert_rank('祭道境初期')[0] < convert_rank((boss["jj"] + '中期'))[0] < convert_rank('准帝境圆满')[0]: # 仙帝境 + boss["减伤"] = 0.1 # boss减伤率 + boss_st1 = random.randint(0, 100) # boss神通1 + if 0 <= boss_st1 <= 25: + boss_buff.boss_zs = 0.9 # boss攻击 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 26 <= boss_st1 <= 50: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0.6 # boss会心 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = 0 + elif 51 <= boss_st1 <= 75: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 1.7 # boss暴伤 + boss_buff.boss_xx = 0 + elif 75 <= boss_st1 <= 100: + boss_buff.boss_zs = 0 + boss_buff.boss_hx = 0 + boss_buff.boss_bs = 0 + boss_buff.boss_xx = random.randint(60, 100) / 100 # boss禁血 + + boss_st2 = random.randint(0, 100) # boss神通2 + if 0 <= boss_st2 <= 25: + boss_buff.boss_jg = 0.62 # boss降攻 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 26 <= boss_st2 <= 50: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0.67 # boss降会 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 + elif 51 <= boss_st2 <= 75: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 1.2 # boss降暴 + boss_buff.boss_xl = 0 + elif 76 <= boss_st2 <= 100: + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = random.randint(60, 100) / 100 # boss禁血 + if fan_buff == 1: - boss_jg = 0 - boss_jh = 0 - boss_jb = 0 - boss_xl = 0 + boss_buff.boss_jg = 0 + boss_buff.boss_jh = 0 + boss_buff.boss_jb = 0 + boss_buff.boss_xl = 0 fan_data = True else: fan_data = False - - - - - - #except: + + # except: # boss["减伤"] = 0.9 # boss减伤率 user1_skill_sh = 0 @@ -1062,101 +1069,115 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): qx = boss['气血'] boss_now_stone = boss['stone'] boss_js = boss['减伤'] - - + if boss_js <= 0.6 and boss['name'] in BOSSDEF: effect_name = BOSSDEF[boss['name']] boss_js_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{effect_name},获得了{int((1-boss_js)*100)}%减伤!"}} - + "uin": int(bot_id), + "content": f"{effect_name},获得了{int((1 - boss_js) * 100)}%减伤!"}} + play_list.append(boss_js_data) - - if boss_zs > 0 : + + if boss_buff.boss_zs > 0: boss_zs_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了真龙九变,提升了{int(boss_zs *100)}%攻击力!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了真龙九变,提升了{int(boss_buff.boss_zs * 100)}%攻击力!"}} + play_list.append(boss_zs_data) - - if boss_hx > 0 : + + if boss_buff.boss_hx > 0: boss_hx_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了无瑕七绝剑,提升了{int(boss_hx *100)}%会心率!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了无瑕七绝剑,提升了{int(boss_buff.boss_hx * 100)}%会心率!"}} + play_list.append(boss_hx_data) - - if boss_bs > 0 : + + if boss_buff.boss_bs > 0: boss_bs_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了太乙剑诀,提升了{int(boss_bs *100)}%会心伤害!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了太乙剑诀,提升了{int(boss_buff.boss_bs * 100)}%会心伤害!"}} + play_list.append(boss_bs_data) - - if boss_xx > 0 : + + if boss_buff.boss_xx > 0: boss_xx_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了七煞灭魂聚血杀阵,降低了{player1['道号']}{int((boss_xx) *100)}%气血吸取!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了七煞灭魂聚血杀阵,降低了{player1['道号']}{int((boss_buff.boss_xx) * 100)}%气血吸取!"}} + play_list.append(boss_xx_data) - - if boss_jg > 0 : + + if boss_buff.boss_jg > 0: boss_jg_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了子午安息香,降低了{player1['道号']}{int((boss_jg) *100)}%伤害!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了子午安息香,降低了{player1['道号']}{int((boss_buff.boss_jg) * 100)}%伤害!"}} + play_list.append(boss_jg_data) - - if boss_jh > 0 : + + if boss_buff.boss_jh > 0: boss_jh_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了玄冥剑气,降低了{player1['道号']}{int((boss_jh) *100)}%会心率!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了玄冥剑气,降低了{player1['道号']}{int((boss_buff.boss_jh) * 100)}%会心率!"}} + play_list.append(boss_jh_data) - - if boss_jb > 0 : + + if boss_buff.boss_jb > 0: boss_jb_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了大德琉璃金刚身,降低了{player1['道号']}{int((boss_jb) *100)}%会心伤害!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了大德琉璃金刚身,降低了{player1['道号']}{int((boss_buff.boss_jb) * 100)}%会心伤害!"}} + play_list.append(boss_jb_data) - - if boss_xl > 0 : - #effect_name = BOSSDEF[boss['name']] + + if boss_buff.boss_xl > 0: + # effect_name = BOSSDEF[boss['name']] boss_xl_data = {"type": "node", "data": {"name": f"{boss['name']}", - "uin": int(bot_id), "content": f"{boss['name']}使用了千煌锁灵阵,降低了{player1['道号']}{int((boss_xl) *100)}%真元吸取!"}} - + "uin": int(bot_id), + "content": f"{boss['name']}使用了千煌锁灵阵,降低了{player1['道号']}{int((boss_buff.boss_xl) * 100)}%真元吸取!"}} + play_list.append(boss_xl_data) - - if random_break > 0: + + if random_buff.random_break > 0: random_break_data = {"type": "node", "data": {"name": f"{player1['道号']}", - "uin": int(bot_id), "content": f"{player1['道号']}发动了八九玄功,获得了{int((random_break)*100)}%穿甲!"}} + "uin": int(bot_id), + "content": f"{player1['道号']}发动了八九玄功,获得了{int((random_buff.random_break) * 100)}%穿甲!"}} play_list.append(random_break_data) - - if random_xx > 0: + + if random_buff.random_xx > 0: random_xx_data = {"type": "node", "data": {"name": f"{player1['道号']}", - "uin": int(bot_id), "content": f"{player1['道号']}发动了八九玄功,提升了{int((random_xx)*100)}%!吸血效果!"}} + "uin": int(bot_id), + "content": f"{player1['道号']}发动了八九玄功,提升了{int((random_buff.random_xx) * 100)}%!吸血效果!"}} play_list.append(random_xx_data) - - if random_hx > 0: + + if random_buff.random_hx > 0: random_hx_data = {"type": "node", "data": {"name": f"{player1['道号']}", - "uin": int(bot_id), "content": f"{player1['道号']}发动了八九玄功,提升了{int((random_hx)*100)}%!会心!"}} + "uin": int(bot_id), + "content": f"{player1['道号']}发动了八九玄功,提升了{int((random_buff.random_hx) * 100)}%!会心!"}} play_list.append(random_hx_data) - - if random_def > 0: + + if random_buff.random_def > 0: random_def_data = {"type": "node", "data": {"name": f"{player1['道号']}", - "uin": int(bot_id), "content": f"{player1['道号']}发动了八九玄功,获得了{int((random_def)*100)}%!减伤!"}} + "uin": int(bot_id), + "content": f"{player1['道号']}发动了八九玄功,获得了{int((random_buff.random_def) * 100)}%!减伤!"}} play_list.append(random_def_data) - - + boss['会心'] = 30 - - if fan_data == True : + + if fan_data == True: fan_data = {"type": "node", "data": {"name": f"{player1['道号']}", - "uin": int(bot_id), "content": f"{player1['道号']}发动了辅修功法反咒禁制,无效化了减益!"}} + "uin": int(bot_id), + "content": f"{player1['道号']}发动了辅修功法反咒禁制,无效化了减益!"}} play_list.append(fan_data) - - user1_battle_buff_date = UserBattleBuffDate(player1['user_id']) # 1号的战斗buff信息 辅修功法14 + user1_battle_buff_date = UserBattleBuffDate(player1['user_id']) # 1号的战斗buff信息 辅修功法14 while True: msg1 = "{}发起攻击,造成了{}伤害\n" msg2 = "{}发起攻击,造成了{}伤害\n" - - user1_battle_buff_date, user2_battle_buff_date, msg = start_sub_buff_handle(player1_sub_open,user1_sub_buff_date,user1_battle_buff_date,False,{},{}) - play_list.append(get_msg_dict(player1, player_init_hp, msg)) #辅修功法14 + + user1_battle_buff_date, user2_battle_buff_date, msg = start_sub_buff_handle(player1_sub_open, + user1_sub_buff_date, + user1_battle_buff_date, False, {}, + {}) + play_list.append(get_msg_dict(player1, player_init_hp, msg)) # 辅修功法14 player2_health_temp = boss['气血'] if player1_skil_open: # 是否开启技能 @@ -1172,7 +1193,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): if user1skill_type == 1: # 直接伤害类技能 play_list.append(get_msg_dict(player1, player_init_hp, skillmsg)) player1 = calculate_skill_cost(player1, user1hpconst, user1mpcost) - boss['气血'] = boss['气血'] - int(user1_skill_sh * (boss_js + user1_break)) # 玩家1的伤害 * boss的减伤 + boss['气血'] = boss['气血'] - int( + user1_skill_sh * (boss_js + user1_break)) # 玩家1的伤害 * boss的减伤 boss_hp_msg = f"{boss['name']}剩余血量{boss['气血']}" play_list.append(get_msg_dict(player1, player_init_hp, boss_hp_msg)) sh += user1_skill_sh @@ -1180,7 +1202,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): elif user1skill_type == 2: # 持续性伤害技能 play_list.append(get_msg_dict(player1, player_init_hp, skillmsg)) player1 = calculate_skill_cost(player1, user1hpconst, user1mpcost) - boss['气血'] = boss['气血'] - int(user1_skill_sh * (0.2 + boss_js + user1_break)) # 玩家1的伤害 * 玩家2的减伤 + boss['气血'] = boss['气血'] - int( + user1_skill_sh * (0.2 + boss_js + user1_break)) # 玩家1的伤害 * 玩家2的减伤 boss_hp_msg = f"{boss['name']}剩余血量{boss['气血']}" play_list.append(get_msg_dict(player1, player_init_hp, boss_hp_msg)) sh += user1_skill_sh @@ -1188,7 +1211,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): elif user1skill_type == 3: # buff类技能 user1buff_type = user1_skill_date['bufftype'] if user1buff_type == 1: # 攻击类buff - isCrit, player1_sh = get_turnatk(player1 ,0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" else: @@ -1197,13 +1221,15 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): play_list.append(get_msg_dict(player1, player_init_hp, skillmsg)) player1_atk_msg = msg1.format(player1['道号'], player1_sh) play_list.append(get_msg_dict(player1, player_init_hp, player1_atk_msg)) - boss['气血'] = boss['气血'] - int(player1_sh * (boss_js + user1_break)) # 玩家1的伤害 * 玩家2的减伤 + boss['气血'] = boss['气血'] - int( + player1_sh * (boss_js + user1_break)) # 玩家1的伤害 * 玩家2的减伤 boss_hp_msg = f"{boss['name']}剩余血量{boss['气血']}" play_list.append(get_msg_dict(player1, player_init_hp, boss_hp_msg)) sh += player1_sh elif user1buff_type == 2: # 减伤类buff,需要在player2处判断 - isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" else: @@ -1213,7 +1239,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): play_list.append(get_msg_dict(player1, player_init_hp, skillmsg)) player1_atk_msg = msg1.format(player1['道号'], player1_sh) play_list.append(get_msg_dict(player1, player_init_hp, player1_atk_msg)) - boss['气血'] = boss['气血'] - int(player1_sh * (boss_js + user1_break)) # 玩家1的伤害 * 玩家2的减伤 + boss['气血'] = boss['气血'] - int( + player1_sh * (boss_js + user1_break)) # 玩家1的伤害 * 玩家2的减伤 boss_hp_msg = f"{boss['name']}剩余血量{boss['气血']}" play_list.append(get_msg_dict(player1, player_init_hp, boss_hp_msg)) player1_js = player1_f_js - user1_skill_sh @@ -1228,7 +1255,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): bossbuffturn = False else: # 没放技能,打一拳 - isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" else: @@ -1246,7 +1274,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): skillmsg = get_persistent_skill_msg(player1['道号'], user1_skill_date['name'], user1_skill_sh, player1_turn_cost) play_list.append(get_msg_dict(player1, player_init_hp, skillmsg)) - isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" else: @@ -1261,7 +1290,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): elif user1skill_type == 3: # buff类技能 user1buff_type = user1_skill_date['bufftype'] if user1buff_type == 1: # 攻击类buff - isCrit, player1_sh = get_turnatk(player1, user1_skill_sh,user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, user1_skill_sh, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" @@ -1278,7 +1308,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): sh += player1_sh elif user1buff_type == 2: # 减伤类buff,需要在player2处判断 - isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" else: @@ -1299,7 +1330,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): skillmsg = get_persistent_skill_msg(player1['道号'], user1_skill_date['name'], user1_skill_sh, player1_turn_cost) play_list.append(get_msg_dict(player1, player_init_hp, skillmsg)) - isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" else: @@ -1323,7 +1355,8 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): else: # 没有技能的derB play_list.append(get_msg_dict(player1, player_init_hp, f"☆------{player1['道号']}的回合------☆")) - isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date) # 判定是否暴击 辅修功法14 + isCrit, player1_sh = get_turnatk(player1, 0, user1_battle_buff_date, + boss_buff, random_buff) # 判定是否暴击 辅修功法14 if isCrit: msg1 = "{}发起会心一击,造成了{}伤害\n" else: @@ -1334,9 +1367,12 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): boss_hp_msg = f"{boss['name']}剩余血量{boss['气血']}" play_list.append(get_msg_dict(player1, player_init_hp, boss_hp_msg)) sh += player1_sh - + ## 自己回合结束 处理 辅修功法14 - player1,boss,msg = after_atk_sub_buff_handle(player1_sub_open,player1,user1_main_buff_data,user1_sub_buff_date,player2_health_temp - boss['气血'],boss) + player1, boss, msg = after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, + user1_sub_buff_date, + player2_health_temp - boss['气血'], boss, + boss_buff, random_buff) play_list.append(get_msg_dict(player1, player_init_hp, msg)) sh += player2_health_temp - boss['气血'] @@ -1364,38 +1400,46 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): # 没有技能的derB if boss_turn_skip: - boss_sub = random.randint(0,100) + boss_sub = random.randint(0, 100) if boss_sub <= 8: play_list.append(get_boss_dict(boss, qx, f"☆------{boss['name']}的回合------☆", bot_id)) - isCrit, boss_sh = get_turnatk_boss(boss,0,UserBattleBuffDate("9999999")) # 判定是否暴击 辅修功法14 + isCrit, boss_sh = get_turnatk_boss(boss, 0, UserBattleBuffDate("9999999"), boss_buff) # 判定是否暴击 辅修功法14 if isCrit: msg2 = "{}:紫玄掌!!紫星河!!!并且发生了会心一击,造成了{}伤害\n" else: msg2 = "{}:紫玄掌!!紫星河!!!造成了{}伤害\n" - play_list.append(get_boss_dict(boss, qx, msg2.format(boss['name'], boss_sh * (1 + boss_zs) * 5 + (player1['气血'] * 0.3)), bot_id)) - player1['气血'] = player1['气血'] - (((boss_sh * (1 + boss_zs) * (player1_js - random_def) * 5) + (player1['气血'] * 0.3) )) + play_list.append(get_boss_dict(boss, qx, msg2.format(boss['name'], + boss_sh * (1 + boss_buff.boss_zs) * 5 + ( + player1['气血'] * 0.3)), bot_id)) + player1['气血'] = player1['气血'] - (( + (boss_sh * (1 + boss_buff.boss_zs) * (player1_js - random_buff.random_def) * 5) + ( + player1['气血'] * 0.3))) + play_list.append(get_boss_dict(boss, qx, f"{player1['道号']}剩余血量{player1['气血']}", bot_id)) + + elif 8 <= boss_sub <= 16: + play_list.append(get_boss_dict(boss, qx, f"☆------{boss['name']}的回合------☆", bot_id)) + isCrit, boss_sh = get_turnatk_boss(boss, 0, UserBattleBuffDate("9999999"), boss_buff) # 判定是否暴击 辅修功法14 + if isCrit: + msg2 = "{}:子龙朱雀!!!穿透了对方的护甲!并且发生了会心一击,造成了{}伤害\n" + else: + msg2 = "{}:子龙朱雀!!!穿透了对方的护甲!造成了{}伤害\n" + play_list.append(get_boss_dict(boss, qx, msg2.format(boss['name'], boss_sh * (1 + boss_buff.boss_zs) * ( + player1_js - random_buff.random_def + 0.5) * 3), bot_id)) + player1['气血'] = player1['气血'] - ( + ((boss_sh * (1 + boss_buff.boss_zs) * (player1_js - random_buff.random_def + 0.5) * 3))) play_list.append(get_boss_dict(boss, qx, f"{player1['道号']}剩余血量{player1['气血']}", bot_id)) - - elif 8<= boss_sub <= 16: - play_list.append(get_boss_dict(boss, qx, f"☆------{boss['name']}的回合------☆", bot_id)) - isCrit, boss_sh = get_turnatk_boss(boss,0,UserBattleBuffDate("9999999")) # 判定是否暴击 辅修功法14 - if isCrit: - msg2 = "{}:子龙朱雀!!!穿透了对方的护甲!并且发生了会心一击,造成了{}伤害\n" - else: - msg2 = "{}:子龙朱雀!!!穿透了对方的护甲!造成了{}伤害\n" - play_list.append(get_boss_dict(boss, qx, msg2.format(boss['name'], boss_sh * (1 + boss_zs) * (player1_js - random_def + 0.5) * 3), bot_id)) - player1['气血'] = player1['气血'] - (((boss_sh * (1 + boss_zs) * (player1_js - random_def + 0.5) * 3))) - play_list.append(get_boss_dict(boss, qx, f"{player1['道号']}剩余血量{player1['气血']}", bot_id)) - + else: play_list.append(get_boss_dict(boss, qx, f"☆------{boss['name']}的回合------☆", bot_id)) - isCrit, boss_sh = get_turnatk_boss(boss,0,UserBattleBuffDate("9999999")) # 判定是否暴击 辅修功法14 + isCrit, boss_sh = get_turnatk_boss(boss, 0, UserBattleBuffDate("9999999"), boss_buff) # 判定是否暴击 辅修功法14 if isCrit: msg2 = "{}发起会心一击,造成了{}伤害\n" else: msg2 = "{}发起攻击,造成了{}伤害\n" - play_list.append(get_boss_dict(boss, qx, msg2.format(boss['name'], boss_sh * (1 + boss_zs)), bot_id)) - player1['气血'] = player1['气血'] - (boss_sh * (1 + boss_zs) * (player1_js - random_def)) + play_list.append( + get_boss_dict(boss, qx, msg2.format(boss['name'], boss_sh * (1 + boss_buff.boss_zs)), bot_id)) + player1['气血'] = player1['气血'] - ( + boss_sh * (1 + boss_buff.boss_zs) * (player1_js - random_buff.random_def)) play_list.append(get_boss_dict(boss, qx, f"{player1['道号']}剩余血量{player1['气血']}", bot_id)) else: @@ -1405,15 +1449,14 @@ async def Boss_fight(player1: dict, boss: dict, type_in=2, bot_id=0): play_list.append( {"type": "node", "data": {"name": "Bot", "uin": int(bot_id), "content": f"{boss['name']}胜利"}}) suc = "Boss赢了" - - #get_stone = int(boss_now_stone * (sh * boss_js / qx)) - #boss['stone'] = boss_now_stone - get_stone + + # get_stone = int(boss_now_stone * (sh * boss_js / qx)) + # boss['stone'] = boss_now_stone - get_stone zx = boss['总血量'] - - get_stone = int(boss_now_stone * ((qx - boss['气血']) / zx ) * (1 + stone_buff)) - boss['stone'] = boss_now_stone - get_stone + get_stone = int(boss_now_stone * ((qx - boss['气血']) / zx) * (1 + stone_buff)) + boss['stone'] = boss_now_stone - get_stone if isSql: sql_message.update_user_hp_mp( @@ -1442,24 +1485,27 @@ def get_boss_dict(boss, boss_init_hp, msg, bot_id): def get_user_def_buff(user_id): - user_armor_data = UserBuffDate(user_id).get_user_armor_buff_data() #防具减伤 - user_weapon_data = UserBuffDate(user_id).get_user_weapon_data() #武器减伤 - user_main_data = UserBuffDate(user_id).get_user_main_buff_data() #功法减伤 + user_armor_data = UserBuffDate(user_id).get_user_armor_buff_data() # 防具减伤 + user_weapon_data = UserBuffDate(user_id).get_user_weapon_data() # 武器减伤 + user_main_data = UserBuffDate(user_id).get_user_main_buff_data() # 功法减伤 if user_weapon_data is not None: - weapon_def = user_weapon_data['def_buff'] #武器减伤 + weapon_def = user_weapon_data['def_buff'] # 武器减伤 else: - weapon_def =0 + weapon_def = 0 if user_main_data is not None: - main_def = user_main_data['def_buff'] #功法减伤 + main_def = user_main_data['def_buff'] # 功法减伤 else: - main_def =0 + main_def = 0 if user_armor_data is not None: - def_buff = user_armor_data['def_buff'] #防具减伤 + def_buff = user_armor_data['def_buff'] # 防具减伤 else: def_buff = 0 - return round(1 - (def_buff + weapon_def + main_def ), 2) # 初始减伤率 + return round(1 - (def_buff + weapon_def + main_def), 2) # 初始减伤率 + -def get_turnatk(player, buff=0, user_battle_buff_date={}): #辅修功法14 +def get_turnatk(player, buff=0, user_battle_buff_date={}, + boss_buff: BossBuff = empty_boss_buff, + random_buff: UserRandomBuff = empty_ussr_random_buff): # 辅修功法14 sub_atk = 0 sub_crit = 0 sub_dmg = 0 @@ -1468,13 +1514,13 @@ def get_turnatk(player, buff=0, user_battle_buff_date={}): #辅修功法14 user_id = player['user_id'] impart_data = xiuxian_impart.get_user_impart_info_with_id(user_id) user_buff_data = UserBuffDate(user_id) - weapon_critatk_data = UserBuffDate(user_id).get_user_weapon_data() #武器会心伤害 + weapon_critatk_data = UserBuffDate(user_id).get_user_weapon_data() # 武器会心伤害 weapon_zw = UserBuffDate(user_id).get_user_weapon_data() main_zw = user_buff_data.get_user_main_buff_data() # 专武伤害,其实叫伴生武器更好。。。 zwsh = 0.5 if main_zw["ew"] != 0 and weapon_zw["zw"] != 0 and main_zw["ew"] == weapon_zw["zw"] else 0 - main_critatk_data = user_buff_data.get_user_main_buff_data() #功法会心伤害 - player_sub_open = False #辅修功法14 + main_critatk_data = user_buff_data.get_user_main_buff_data() # 功法会心伤害 + player_sub_open = False # 辅修功法14 user_sub_buff_date = {} if user_buff_data.get_user_sub_buff_data() != None: user_sub_buff_date = UserBuffDate(user_id).get_user_sub_buff_data() @@ -1499,26 +1545,30 @@ def get_turnatk(player, buff=0, user_battle_buff_date={}): #辅修功法14 main_critatk_data = None impart_know_per = impart_data['impart_know_per'] if impart_data is not None else 0 impart_burst_per = impart_data['impart_burst_per'] if impart_data is not None else 0 - weapon_critatk = weapon_critatk_data['critatk'] if weapon_critatk_data is not None else 0 #武器会心伤害 - main_critatk = main_critatk_data['critatk'] if main_critatk_data is not None else 0 #功法会心伤害 + weapon_critatk = weapon_critatk_data['critatk'] if weapon_critatk_data is not None else 0 # 武器会心伤害 + main_critatk = main_critatk_data['critatk'] if main_critatk_data is not None else 0 # 功法会心伤害 isCrit = False - turnatk = int(round(random.uniform(0.95, 1.05), 2) - * (player['攻击'] * (buff + sub_atk + 1) * (1 - boss_jg)) * (1 + zwsh)) # 攻击波动,buff是攻击buff - if random.randint(0, 100) <= player['会心'] + (impart_know_per + sub_crit - boss_jh + random_hx )* 100: # 会心判断 - turnatk = int(turnatk * (1.5 + impart_burst_per + weapon_critatk + main_critatk + sub_dmg - boss_jb)) #boss战、切磋、秘境战斗会心伤害公式(不包含抢劫) + turnatk = int(round(random.uniform(0.95, 1.05), 2) + * (player['攻击'] * (buff + sub_atk + 1) * (1 - boss_buff.boss_jg)) * (1 + zwsh)) # 攻击波动,buff是攻击buff + if random.randint(0, 100) <= player['会心'] + ( + impart_know_per + sub_crit - boss_buff.boss_jh + random_buff.random_hx) * 100: # 会心判断 + turnatk = int(turnatk * ( + 1.5 + impart_burst_per + weapon_critatk + main_critatk + sub_dmg - boss_buff.boss_jb)) # boss战、切磋、秘境战斗会心伤害公式(不包含抢劫) isCrit = True return isCrit, turnatk -def get_turnatk_boss(player, buff=0, user_battle_buff_date={}): #boss伤害计算公式 +def get_turnatk_boss(player, buff=0, user_battle_buff_date={}, + boss_buff: BossBuff = empty_boss_buff): # boss伤害计算公式 isCrit = False - turnatk = int(round(random.uniform(0.95, 1.05), 2) - * (player['攻击'] * (buff + 1))) # 攻击波动,buff是攻击buff - if random.randint(0, 100) <= player['会心'] + boss_hx * 100: # 会心判断 - turnatk = int(turnatk * (1.5 + boss_bs )) #boss战、切磋、秘境战斗会心伤害公式(不包含抢劫) + turnatk = int(round(random.uniform(0.95, 1.05), 2) + * (player['攻击'] * (buff + 1))) # 攻击波动,buff是攻击buff + if random.randint(0, 100) <= player['会心'] + boss_buff.boss_hx * 100: # 会心判断 + turnatk = int(turnatk * (1.5 + boss_buff.boss_bs)) # boss战、切磋、秘境战斗会心伤害公式(不包含抢劫) isCrit = True return isCrit, turnatk + def isEnableUserSikll(player, hpcost, mpcost, turncost, skillrate): # 是否满足技能释放条件 skill = False if turncost < 0: # 判断是否进入休息状态 @@ -1540,7 +1590,7 @@ def get_skill_hp_mp_data(player, secbuffdata): weapon_mp = 0 hpcost = int(secbuffdata['hpcost'] * player['气血']) if secbuffdata['hpcost'] != 0 else 0 - mpcost = int(secbuffdata['mpcost'] * player['exp'] * (1 - weapon_mp )) if secbuffdata['mpcost'] != 0 else 0 + mpcost = int(secbuffdata['mpcost'] * player['exp'] * (1 - weapon_mp)) if secbuffdata['mpcost'] != 0 else 0 return hpcost, mpcost, secbuffdata['skill_type'], secbuffdata['rate'] @@ -1633,7 +1683,7 @@ def apply_buff(user_battle_buff, subbuffdata, is_opponent=False): '12': ('stone_buff', "聚宝效果"), '13': ('break_buff', "斗战效果"), } - + attr, desc = buff_type_to_attr[subbuffdata['buff_type']] setattr(user_battle_buff, attr, subbuffdata['buff']) if int(subbuffdata['buff_type']) >= 0 and int(subbuffdata['buff_type']) <= 10: @@ -1653,7 +1703,9 @@ def start_sub_buff_handle(player1_sub_open, subbuffdata1, user1_battle_buff_date # 处理攻击后辅修功法效果 -def after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, subbuffdata1, damage1, player2): +def after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, subbuffdata1, damage1, player2, + boss_buff: BossBuff = empty_boss_buff, + random_buff: UserRandomBuff = empty_boss_buff): msg = "" if not player1_sub_open: @@ -1665,15 +1717,18 @@ def after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, s if 'max_hp' not in player1: exp = int(player1['exp']) - player1['max_hp'] = int(exp / 2) * (1 + user1_main_buff_data.get('hpbuff', 0) + impart_hp_per_1 if user1_main_buff_data is not None else 0) - player1['max_mp'] = exp * (1 + user1_main_buff_data.get('mpbuff', 0) + impart_mp_per_1 if user1_main_buff_data is not None else 0) + player1['max_hp'] = int(exp / 2) * ( + 1 + user1_main_buff_data.get('hpbuff', 0) + impart_hp_per_1 if user1_main_buff_data is not None else 0) + player1['max_mp'] = exp * ( + 1 + user1_main_buff_data.get('mpbuff', 0) + impart_mp_per_1 if user1_main_buff_data is not None else 0) buff_value = int(subbuffdata1['buff']) buff_tow = int(subbuffdata1['buff2']) buff_type = subbuffdata1['buff_type'] if buff_type == '4': - restore_health = int(player1['exp'] / 2) * (1 + user1_main_buff_data['hpbuff'] + impart_hp_per_1) * buff_value // 100 + restore_health = int(player1['exp'] / 2) * ( + 1 + user1_main_buff_data['hpbuff'] + impart_hp_per_1) * buff_value // 100 player1['气血'] += restore_health player1['气血'] = min(player1['气血'], player1['max_hp']) msg = "回复气血:" + str(restore_health) @@ -1683,12 +1738,12 @@ def after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, s player1['真元'] = min(player1['真元'], player1['max_mp']) msg = "回复真元:" + str(restore_mana) elif buff_type == '6': - health_stolen = (damage1 * (buff_value + random_xx) // 100) * (1 - boss_xx) + health_stolen = (damage1 * (buff_value + random_buff.random_xx) // 100) * (1 - boss_buff.boss_xx) player1['气血'] += health_stolen player1['气血'] = min(player1['气血'], player1['max_hp']) msg = "吸取气血:" + str(health_stolen) elif buff_type == '7': - mana_stolen = (damage1 * buff_value // 100) * (1 - boss_xl) + mana_stolen = (damage1 * buff_value // 100) * (1 - boss_buff.boss_xl) player1['真元'] += mana_stolen player1['真元'] = min(player1['真元'], player1['max_mp']) msg = "吸取真元:" + str(mana_stolen) @@ -1698,8 +1753,8 @@ def after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, s player2['气血'] = max(player2['气血'], player2['max_hp']) msg = "对手中毒消耗血量:" + str(poison_damage) elif buff_type == '9': - health_stolen = (damage1 * (buff_value + random_xx) // 100) * (1 - boss_xx) - mana_stolen = (damage1 * buff_tow // 100) * (1 - boss_xl) + health_stolen = (damage1 * (buff_value + random_buff.random_xx) // 100) * (1 - boss_buff.boss_xx) + mana_stolen = (damage1 * buff_tow // 100) * (1 - boss_buff.boss_xl) player1['气血'] += health_stolen player1['气血'] = min(player1['气血'], player1['max_hp']) player1['真元'] += mana_stolen @@ -1709,8 +1764,7 @@ def after_atk_sub_buff_handle(player1_sub_open, player1, user1_main_buff_data, s return player1, player2, msg - -class UserBattleBuffDate: #辅修功法14 +class UserBattleBuffDate: # 辅修功法14 def __init__(self, user_id): """用户战斗Buff数据""" self.user_id = user_id