Example #1
0
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]