コード例 #1
0
ファイル: game_actor.cpp プロジェクト: Ghabry/easyrpg-player
bool Game_Actor::UseItem(int item_id, const Game_Battler* source) {
	const RPG::Item* item = ReaderUtil::GetElement(Data::items, item_id);
	if (!item) {
		Output::Warning("UseItem: Can't use invalid item %d", item_id);
		return false;
	}

	if (IsDead() && item->type != RPG::Item::Type_medicine) {
		return false;
	}

	if (item->type == RPG::Item::Type_book) {
		return LearnSkill(item->skill_id);
	}

	if (item->type == RPG::Item::Type_material) {
		SetBaseMaxHp(GetBaseMaxHp() + item->max_hp_points);
		SetBaseMaxSp(GetBaseMaxSp() + item->max_sp_points);
		SetBaseAtk(GetBaseAtk() + item->atk_points2);
		SetBaseDef(GetBaseDef() + item->def_points2);
		SetBaseAgi(GetBaseAgi() + item->agi_points2);
		SetBaseSpi(GetBaseSpi() + item->spi_points2);

		return true;
	}

	return Game_Battler::UseItem(item_id, source);
}
コード例 #2
0
int Game_Battler::GetSpi() const {
	int base_spi = GetBaseSpi();
	int n = min(max(base_spi, 1), 999);

	const std::vector<int16_t>& states = GetStates();
	for (std::vector<int16_t>::const_iterator i = states.begin(); i != states.end(); i++) {
		if(Data::states[(*i)].affect_spirit) {
			n = AffectParameter(Data::states[(*i)].affect_type, base_spi);
			break;
		}
	}

	n = min(max(n, 1), 999);

	return n;
}
コード例 #3
0
ファイル: game_battler.cpp プロジェクト: Zegeri/Player
int Game_Battler::GetSpi() const {
	int base_spi = GetBaseSpi();
	int n = min(max(base_spi, 1), 999);

	for (int16_t i : GetInflictedStates()) {
		// States are guaranteed to be valid
		const RPG::State& state = *ReaderUtil::GetElement(Data::states, i);
		if (state.affect_spirit) {
			n = AffectParameter(state.affect_type, base_spi);
			break;
		}
	}

	n += spi_modifier;

	n = min(max(n, 1), 999);

	return n;
}
コード例 #4
0
ファイル: game_actor.cpp プロジェクト: ChrisOelmueller/Player
void Game_Actor::SetBaseSpi(int spi) {
	data.spirit_mod += spi - GetBaseSpi();
}
コード例 #5
0
ファイル: game_actor.cpp プロジェクト: ChrisOelmueller/Player
int Game_Actor::GetBaseSpi() const {
	return GetBaseSpi(true, true);
}
コード例 #6
0
ファイル: game_actor.cpp プロジェクト: Ghabry/easyrpg-player
void Game_Actor::SetBaseSpi(int spi) {
	int new_spirit_mod = GetData().spirit_mod + (spi - GetBaseSpi());
	GetData().spirit_mod = new_spirit_mod;
}