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); }
int Game_Battler::GetAgi() const { int base_agi = GetBaseAgi(); int n = min(max(base_agi, 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_agility) { n = AffectParameter(Data::states[(*i)].affect_type, base_agi); break; } } n = min(max(n, 1), 999); return n; }
int Game_Battler::GetAgi() const { int base_agi = GetBaseAgi(); int n = min(max(base_agi, 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_agility) { n = AffectParameter(state.affect_type, base_agi); break; } } n += agi_modifier; n = min(max(n, 1), 999); return n; }
void Game_Actor::SetBaseAgi(int agi) { data.agility_mod += agi - GetBaseAgi(); }
int Game_Actor::GetBaseAgi() const { return GetBaseAgi(true, true); }
void Game_Actor::SetBaseAgi(int agi) { int new_agility_mod = GetData().agility_mod + (agi - GetBaseAgi()); GetData().agility_mod = new_agility_mod; }