void Scene_Skill::Update() { help_window->Update(); skillstatus_window->Update(); skill_window->Update(); if (Input::IsTriggered(Input::CANCEL)) { Game_System::SePlay(Data::system.cancel_se); Scene::Pop(); } else if (Input::IsTriggered(Input::DECISION)) { int skill_id = skill_window->GetSkillId(); Game_Actor* actor = Game_Party::GetActors()[actor_index]; if (actor->IsSkillUsable(skill_id)) { Game_System::SePlay(Data::system.decision_se); if (Data::skills[skill_id - 1].type == RPG::Skill::Type_switch) { actor->SetSp(actor->GetSp() - actor->CalculateSkillCost(skill_id)); Game_Switches[Data::skills[skill_id - 1].switch_id] = true; Scene::PopUntil(Scene::Map); Game_Map::SetNeedRefresh(true); } else if (Data::skills[skill_id - 1].type == RPG::Skill::Type_normal) { Scene::Push(EASYRPG_MAKE_SHARED<Scene_ActorTarget>(skill_id, actor_index, skill_window->GetIndex())); skill_index = skill_window->GetIndex(); } else if (Data::skills[skill_id - 1].type == RPG::Skill::Type_teleport) { // ToDo: Displays the teleport target scene/window } else if (Data::skills[skill_id - 1].type == RPG::Skill::Type_escape) { // ToDo: Displays the escape target scene/window } } else { Game_System::SePlay(Data::system.buzzer_se); } } }
void Scene_ActorTarget::UpdateSkill() { if (Input::IsTriggered(Input::DECISION)) { Game_Actor* actor = static_cast<Game_Actor*>(&(*Main_Data::game_party)[actor_index]); if (actor->GetSp() < actor->CalculateSkillCost(id)) { Game_System::SePlay(Game_System::GetSystemSE(Game_System::SFX_Buzzer)); return; } if (Main_Data::game_party->UseSkill(id, actor, target_window->GetActor())) { Game_System::SePlay(Game_System::GetSystemSE(Game_System::SFX_UseItem)); } else { Game_System::SePlay(Game_System::GetSystemSE(Game_System::SFX_Buzzer)); } status_window->Refresh(); target_window->Refresh(); } }