def refresh_damage(current_data): #毒圈伤害 for uid in current_data['player_location'].keys(): if not in_circle(current_data['player_location'][uid], current_data['safe_circle']): current_data['player_blood'][uid] -= current_data['safe_circle'][2] # 敌人伤害 for uid in current_data['player_location'].keys(): for eid in current_data['player_location'].keys(): if uid == eid: continue if cor2dis(current_data['player_location'][uid], current_data['player_location'] [eid]) < current_data['player_atk_range'][eid]: current_data['player_blood'][uid] -= current_data[ 'player_damage'][eid] # 生死状态 delhelp = [] for uid in current_data['player_location'].keys(): if current_data['player_blood'][uid] <= 0: current_data['the_dead'].append(uid) delhelp.append(uid) for uid in delhelp: current_data['player_location'].pop(uid) current_data['player_blood_limit'].pop(uid) current_data['player_blood'].pop(uid) current_data['player_damage'].pop(uid) current_data['player_atk_range'].pop(uid) current_data['player_vision_range'].pop(uid) current_data['player_visible'].pop(uid) current_data['player_enemy_location'].pop(uid) current_data['player_small_location'].pop(uid)
def small_item_show(current_data): for uid in current_data['player_location'].keys(): tmp = [] for loc in current_data['small_item_location']: if cor2dis(current_data['player_location'][uid], loc[1]) < current_data['player_vision_range'][uid]: tmp.append(loc) current_data['player_small_location'][uid] = tmp
def refresh_item_locations(current_data): for uid in current_data['player_location'].keys(): # 小物品更新 delhelper = [] for s_item in current_data['small_item_location']: if cor2dis(s_item[1], current_data['player_location'][uid]) < 3: if s_item[0] == 1: current_data['player_damage'][uid] += 5 elif s_item[0] == 2: current_data['player_blood'][uid] = add_health( 10, current_data['player_blood'][uid], current_data['player_blood_limit'][uid]) elif s_item[0] == 3: current_data['player_vision_range'][uid] += 5 else: current_data['player_atk_range'][uid] += 5 delhelper.append(s_item) for s_item in delhelper: current_data['small_item_location'].remove(s_item) # 大物品更新 delhelper = [] for b_item in current_data['big_item_location']: if cor2dis(b_item[1], current_data['player_location'][uid]) < 3: if b_item[0] == 1: current_data['player_damage'][uid] += 15 elif b_item[0] == 2: current_data['player_blood'][uid] = add_health( 50, current_data['player_blood'][uid], current_data['player_blood_limit'][uid]) elif b_item[0] == 3: current_data['player_blood_limit'][uid] += 20 elif b_item[0] == 4: current_data['player_vision_range'][uid] += 15 elif b_item[0] == 5: current_data['player_atk_range'][uid] += 15 else: current_data['player_visible'][uid] = 0 delhelper.append(b_item) for b_item in delhelper: current_data['big_item_location'].remove(b_item)
def enemy_show(current_data): for uid in current_data['player_location'].keys(): tmp = [] for eid in current_data['player_location'].keys(): if uid == eid: continue if cor2dis(current_data['player_location'][uid], current_data['player_location'][eid]) < current_data['player_vision_range'][uid] and \ current_data['player_visible'][eid] == 1: tmp.append(current_data['player_location'][eid]) current_data['player_enemy_location'][uid] = tmp
def in_circle(pos, safe_circle): dis = cor2dis(pos, safe_circle[0]) return dis < safe_circle[1]