def check_deaths(): for p in range(len(players)): if players[p].is_dead(): print("\n{} was defeated.".format(players[p].get_name())) sleep(delay) del players[p] for e in range(len(enemies)): if enemies[e].is_dead(): print("\n{} was defeated.".format(enemies[e].get_name())) sleep(delay) for player in players: # Experience gain player.change_exp(enemies[e].get_exp()) print("{} gained {} EXP.".format(player.get_name(), enemies[e].get_exp())) sleep(delay) while player.check_lvl(): player.lvl_up() print("{} leveled up to level {}.".format( player.get_name(), player.get_lvl())) sleep(delay) # Rolls for items with open("enemy_data/{}.txt".format( enemies[e].get_name().lower().replace(' ', '_'))) as f_in: enemy = f_in.readlines() if len( enemy ) > 1: # Item drops of enemy are stored after first line of enemy file for item_drop in enemy[1:]: if randint(1, 100) <= int( item_drop.split()[1]): # Rolls for item with open("item_data/{}.txt".format( item_drop.split()[0])) as f_in2: item_type = f_in2.readline().strip() # For equipment items if item_type == "equipment": new_item = f_in2.readline().split() # If player does not already have an equipment item of the same type if player.check_equipment_type( new_item[1]) == -1: potential_equip = Equipment( new_item[0].replace('_', ' '), new_item[1], int(new_item[2]), int(new_item[3]), int(new_item[4]), int(new_item[5])) print("{} found {}.".format( player.get_name(), potential_equip.get_name())) sleep(delay) potential_equip.display() sleep(delay) while True: p_input = input( "'T' to take equipment, 'D' to discard equipment." ) if p_input.lower() == 't': player.add_equipment( potential_equip) print("{} took {}.".format( player.get_name(), potential_equip. get_name())) sleep(delay) break elif p_input.lower() == 'd': print( "{} discarded {}.". format( player.get_name(), potential_equip. get_name())) sleep(delay) break else: print( "Invalid response: Expected 'T' or 'D'." ) sleep(delay) # Else, asks player whether to replace it or not else: potential_equip = Equipment( new_item[0].replace('_', ' '), new_item[1], int(new_item[2]), int(new_item[3]), int(new_item[4]), int(new_item[5])) print( "{} found {} but already has a(n) {}." .format( player.get_name(), potential_equip.get_name(), potential_equip.get_type() )) sleep(delay) print("Old:") sleep(delay) player.get_equipment()[ player.check_equipment_type( potential_equip.get_type( ))].display() sleep(delay) print("New:") sleep(delay) potential_equip.display() sleep(delay) while True: p_input = input( "'T' to take new equipment, 'K' to keep old equipment." ) if p_input.lower() == 't': print( "{} discarded {} and took {}." .format( player.get_name(), player. get_equipment() [player. check_equipment_type( potential_equip .get_type() )].get_name(), potential_equip. get_name())) player.add_equipment( potential_equip) sleep(delay) break elif p_input.lower() == 'k': print( "{} discarded {} and kept {}." .format( player.get_name(), potential_equip. get_name(), player. get_equipment() [player. check_equipment_type( potential_equip .get_type() )].get_name())) sleep(delay) break else: print( "Invalid response: Expected 'T' or 'K'." ) sleep(delay) # For consumable items elif item_type == "consumable": new_item = f_in2.readline().split() potential_item = Consumable( new_item[0].replace('_', ' '), int(new_item[1]), int(new_item[2])) print("{} found {}.".format( player.get_name(), potential_item.get_name())) sleep(delay) potential_item.display() sleep(delay) while True: p_input = input( "'T' to take item, 'D' to discard item." ) if p_input.lower() == 't': player.add_item(potential_item) print("{} took {}.".format( player.get_name(), potential_item.get_name())) sleep(delay) break elif p_input.lower() == 'd': print( "{} discarded {}.".format( player.get_name(), potential_item. get_name())) sleep(delay) break else: print( "Invalid response: Expected 'T' or 'D'." ) sleep(delay) del enemies[e]