Beispiel #1
0
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);
		}
	}
}
Beispiel #2
0
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;
}
Beispiel #4
0
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;
}