static void menu_controller_handle_key_pressed(struct menu *menu, enum controller_key key) { switch (key) { case CTRLK_UP: previous_menu_entry(menu); break; case CTRLK_DOWN: next_menu_entry(menu); break; case CTRLK_RETURN: case CTRLK_ENTER: select_menu_entry(menu); break; case CTRLK_ESCAPE: quit_menu(menu); break; default: break; } }
void combat_won(void) { int i; combat_mode = 0; music_combat_won(); game_set_party_characters(combat_party, combat_party_size); if (!game_in_party(game_get_leader())) game_set_leader(combat_party[0]); game_get_leader()->x = combat_leader_x; game_get_leader()->y = combat_leader_y; map_character_update(game_get_leader()); for (i = 0; i < combat_party_size; ++i) if (combat_party[i]->life < 6) combat_party[i]->life = 6; quit_menu(); }
void combat_start(void) { int i, j; int leader_x, leader_y; combat_mode = 1; music_combat_started(); quit_menu(); combat_attack_animation = 0; map_get_center(&combat_x, &combat_y); combat_x /= 8; combat_y /= 8; combat_x -= COMBAT_C_X; combat_y -= COMBAT_C_Y; combat_party_size = game_get_party_characters(combat_party); combat_leader_x = game_get_leader()->x; leader_x = combat_leader_x / 4 - combat_x; combat_leader_y = game_get_leader()->y; leader_y = combat_leader_y / 4 - combat_y; if (leader_x < 0) leader_x = 0; if (leader_y < 0) leader_y = 0; if (leader_x >= COMBAT_WIDTH) leader_x = COMBAT_WIDTH - 1; if (leader_y >= COMBAT_HEIGHT) leader_x = COMBAT_HEIGHT - 1; combat_area_init(); combat_area[leader_x][leader_y] = 1; combat_stack[0][0] = leader_x; combat_stack[0][1] = leader_y; combat_stack_size = 1; combat_stack_start = 0; combat_stack_proceed(); for (i = 0; i < combat_party_size; ++i) combat_move_to_area(combat_party[i]); ring_not_working = 0; for (i = 0; i < combat_enemies_num; ++i) { /* somewhat stupid */ if (!strcmp(combat_enemies[i]->name, "Nazgul") || !strcmp(combat_enemies[i]->name, "Witch-King") || !strcmp(combat_enemies[i]->name, "Ghostking") || !strcmp(combat_enemies[i]->name, "Ghost") || !strcmp(combat_enemies[i]->name, "Balrog") || !strcmp(combat_enemies[i]->name, "Barrow Wight") || !strcmp(combat_enemies[i]->name, "Werewolf")) ring_not_working = 1; if (strcmp(combat_enemies[i]->name, "Tentacles")) combat_move_to_area(combat_enemies[i]); for (j = 0; j < combat_enemies[i]->items_num; ++j) combat_enemies[i]->item_used[j] = 0; for (j = 0; j < combat_enemies[i]->items_num; ++j) if (object_is_weapon(combat_enemies[i]->items[j])) { combat_enemies[i]->item_used[j] = 1; break; } for (j = 0; j < combat_enemies[i]->items_num; ++j) if (object_is_armour(combat_enemies[i]->items[j])) { combat_enemies[i]->item_used[j] = 1; break; } for (j = 0; j < combat_enemies[i]->items_num; ++j) if (object_is_shield(combat_enemies[i]->items[j])) { combat_enemies[i]->item_used[j] = 1; break; } } active_character = NULL; combat_next_turn(); }