bool Crystal_Loop::logic() { tgui::TGUIWidget *w = tgui::update(); if (w == return_button) { std::vector<Loop *> loops; loops.push_back(this); engine->fade_out(loops); engine->unblock_mini_loop(); } else if (w == player_button) { next_player(); } else { bool done = false; std::vector<Loop *> loops; loops.push_back(this); for (int x = 0; x < 3; x++) { for (int y = 0; y < /*3*/1; y++) { if (w == ability_buttons[x][y]) { if (Game_Specific_Globals::crystals <= 0) { engine->play_sample("sfx/error.ogg"); } else if (!static_cast<Crystal_Button *>(w)->filled()) { std::vector<std::string> v; v.push_back(t("REALLY_SPEND_CRYSTAL")); if (engine->yes_no_prompt(v, &loops)) { engine->play_sample("sfx/spend_crystal.ogg"); Game_Specific_Globals::crystals--; players[current_player]->get_battle_attributes().abilities.abilities[x]++; copy_abilities(); #ifdef STEAMWORKS achieve("crystal"); #endif } } done = true; break; } } } if (!done) { for (int i = 0; i < /*8*/1; i++) { if (w == hp_buttons[i]) { if (Game_Specific_Globals::crystals <= 0) { engine->play_sample("sfx/error.ogg"); } else if (!static_cast<Crystal_Button *>(w)->filled()) { std::vector<std::string> v; v.push_back(t("REALLY_SPEND_CRYSTAL")); if (engine->yes_no_prompt(v, &loops)) { engine->play_sample("sfx/spend_crystal.ogg"); Game_Specific_Globals::crystals--; players[current_player]->get_battle_attributes().abilities.hp++; players[current_player]->get_battle_attributes().max_hp += 10 * cfg.difficulty_mult(); copy_abilities(); #ifdef STEAMWORKS achieve("crystal"); #endif } } } else if (w == mp_buttons[i]) { if (Game_Specific_Globals::crystals <= 0) { engine->play_sample("sfx/error.ogg"); } else if (!static_cast<Crystal_Button *>(w)->filled()) { std::vector<std::string> v; v.push_back(t("REALLY_SPEND_CRYSTAL")); if (engine->yes_no_prompt(v, &loops)) { engine->play_sample("sfx/spend_crystal.ogg"); Game_Specific_Globals::crystals--; players[current_player]->get_battle_attributes().abilities.mp++; players[current_player]->get_battle_attributes().max_mp += 5; copy_abilities(); #ifdef STEAMWORKS achieve("crystal"); #endif } } } } } } #ifdef STEAMWORKS bool all_full = true; for (int i = 0; i < 3; i++) { if ( players[i]->get_battle_attributes().abilities.abilities[0] != 1 || players[i]->get_battle_attributes().abilities.abilities[1] != 1 || players[i]->get_battle_attributes().abilities.abilities[2] != 1 || players[i]->get_battle_attributes().abilities.hp != 1 || players[i]->get_battle_attributes().abilities.mp != 1 ) { all_full = false; break; } } if (all_full) { achieve("crystals"); } #endif return false; }
~Warehourse() { achieve(); }