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 Game_Party::SetupBattleTestMembers() { Clear(); for (auto& btdata : Data::system.battletest_data) { AddActor(btdata.actor_id); Game_Actor* actor = Game_Actors::GetActor(btdata.actor_id); // Filter garbage btdata inserted by the editor std::array<int, 5> ids = { btdata.weapon_id, btdata.shield_id, btdata.armor_id, btdata.helmet_id, btdata.accessory_id }; std::replace_if(ids.begin(), ids.end(), [] (const int& item_id) { return ReaderUtil::GetElement(Data::items, item_id) == nullptr; }, 0); actor->SetEquipment(RPG::Item::Type_weapon, ids[0]); actor->SetEquipment(RPG::Item::Type_shield, ids[1]); actor->SetEquipment(RPG::Item::Type_armor, ids[2]); actor->SetEquipment(RPG::Item::Type_helmet, ids[3]); actor->SetEquipment(RPG::Item::Type_accessory, ids[4]); actor->ChangeLevel(btdata.level, false); actor->SetHp(actor->GetMaxHp()); actor->SetSp(actor->GetMaxSp()); } data().party_size = data().party.size(); Main_Data::game_player->Refresh(); }
bool Game_Interpreter::CommandFullHeal(RPG::EventCommand const& com) { // Code 10490 std::vector<Game_Actor*> actors = GetActors(com.parameters[0], com.parameters[1]); for (std::vector<Game_Actor*>::iterator i = actors.begin(); i != actors.end(); i++) { Game_Actor* actor = *i; actor->SetHp(actor->GetMaxHp()); actor->SetSp(actor->GetMaxSp()); actor->RemoveAllStates(); } return true; }
void Game_Party::SetupBattleTestMembers() { data.party.clear(); std::vector<RPG::TestBattler>::const_iterator it; for (it = Data::system.battletest_data.begin(); it != Data::system.battletest_data.end(); ++it) { AddActor(it->actor_id); Game_Actor* actor = Game_Actors::GetActor(it->actor_id); actor->SetEquipment(0, it->weapon_id); actor->SetEquipment(1, it->shield_id); actor->SetEquipment(1, it->armor_id); actor->SetEquipment(1, it->helmet_id); actor->SetEquipment(1, it->accessory_id); actor->ChangeLevel(it->level, false); actor->SetHp(actor->GetMaxHp()); actor->SetSp(actor->GetMaxSp()); } Main_Data::game_player->Refresh(); }
bool Game_Interpreter::CommandChangeSP(RPG::EventCommand const& com) { // Code 10470 std::vector<Game_Actor*> actors = GetActors(com.parameters[0], com.parameters[1]); bool remove = com.parameters[2] != 0; int amount = ValueOrVariable(com.parameters[3], com.parameters[4]); if (remove) amount = -amount; for (std::vector<Game_Actor*>::iterator i = actors.begin(); i != actors.end(); i++) { Game_Actor* actor = *i; int sp = actor->GetSp() + amount; if (sp < 0) sp = 0; actor->SetSp(sp); } return true; }