Example #1
0
def get_fight_data(env, adversary):
    data = []

    # setup adversary
    adversary_health = db.ret_val(env, "adversary", "name", adversary,
                                  "health")
    adversary_power = db.ret_val(env, "adversary", "name", adversary, "power")

    # setup player
    player_health = ag_utilities.get_player_val(env, "health")

    # setup player - weapon
    player_weapon_power = 0
    player_weapon_list = ag_utilities.get_player_val(env, "weapon")
    for weapon in player_weapon_list:
        power = db.ret_val(env, "weapon", "name", weapon, "power")
        if power > player_weapon_power:
            player_weapon_name = weapon
            player_weapon_power = power

    # player armor
    player_armor_protection = 0
    player_armor_list = ag_utilities.get_player_val(env, "armor")
    for armor in player_armor_list:
        player_armor_protection += db.ret_val(env, "armor", "name", armor,
                                              "protection")

    data.append(["adversary_health", adversary_health])
    data.append(["adversary_power", adversary_power])
    data.append(["player_health", player_health])
    data.append(["player_armor_protection", player_armor_protection])
    data.append(["player_weapon_name", player_weapon_name])
    data.append(["player_weapon_power", player_weapon_power])

    return data
Example #2
0
def update_after_action(env, location, content_type, content_name):
    # update player score
    player_points_earned = ag_utilities.get_player_val(env, "points_earned")
    content_points = db.ret_val(env, content_type, "name", content_name,
                                "points")
    total_points = player_points_earned + content_points
    env = ag_utilities.set_player_val(env, "points_earned", total_points)

    # update player inventory
    inventory = ag_utilities.get_player_val(env, content_type)
    inventory.append(content_name)
    env = ag_utilities.set_player_val(env, content_type, inventory)

    # deactivate content
    env = db.upd_val(env, "content", "name", content_name, "available", False)
    env = db.upd_val(env, "content", "name", content_name, "active", False)
    env = db.upd_val(env, "content", "name", content_name, "menu_idx", "")

    # update the menu_indexes of the remaining content items
    records = db.ret_recs(env, "content",
                          [["location", location], ["active", True]])
    menu_idx = 0
    for record in records:
        menu_idx += 1
        content_name = db.ret(record, "name")
        env = db.upd_val(env, "content", "name", content_name, "menu_idx",
                         str(menu_idx))

    env = ag_utilities.game_over_check(env)

    return env
Example #3
0
def process_action(env, location, menu_idx):
    records = db.ret_recs(env, "content",
                          [["location", location], ["menu_idx", menu_idx]])

    name = db.ret(records[0], "name")
    content_type = db.ret(records[0], "content_type")
    action = db.ret_val(env, "content_type", "name", content_type,
                        "action").lower()

    if action == "fight":
        return fight(env, location, name)
    elif action == "pickup":
        return pickup(env, location, content_type, name)
Example #4
0
def get_items_prompt(env, location):
    prompt = ""
    prompt_options = []

    records = db.ret_recs(env, "content",
                          [["location", location], ["active", True]])
    for record in records:
        content_type = db.ret(record, "content_type")
        name = db.ret(record, "name")
        action = db.ret_val(env, "content_type", "name", content_type,
                            "action")
        menu_idx = db.ret(record, "menu_idx")

        prompt += f"\n{action} {name} - {menu_idx}"
        prompt_options.append(str(menu_idx))
    return [prompt, prompt_options]
Example #5
0
def fight(env, location, adversary_name):
    ag_utilities.print_pause(f"You are fighting the {adversary_name}...")

    while True:
        time.sleep(1)
        fight_data = get_fight_data(env, adversary_name)

        if ag_utilities.flip_coin():
            env = strike_by_player(env, location, fight_data, adversary_name)
            adversary_defeated = not db.ret_val(env, "content", "name",
                                                adversary_name, "active")
            if adversary_defeated:
                return env
        else:
            env = strike_by_adversary(env, fight_data, adversary_name)

        # check: game over
        if ag_utilities.get_player_val(env, "game_end_type") != "":
            return env
    return env
Example #6
0
def enter_location(env, location_idx):
    # init location
    location = db.ret_val_idx(env, "location", location_idx, "name")
    env = ag_utilities.set_player_val(env, "location", location)
    env = set_items(env, location)

    # orientate player
    ag_utilities.print_pause(f"\nYou have entered the {location}.")
    look_around(env, location)

    # fight before gather if set for this location
    if db.ret_val(env, "location", "name", location, "fight_before_gather"):
        env = fight_before_gather(env, location)

        # check: game over
        if ag_utilities.get_player_val(env, "game_end_type") != "":
            return env

        # check: leave location
        if ag_utilities.get_player_val(env, "location") == "":
            return env

    # explore location
    return explore_location(env, location)
def get_player_val(env, key):
    return db.ret_val(env, "player", "id", 0, key)