mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-26 18:35:20 +00:00
Cache GMSTs in getDerivedDisposition
This commit is contained in:
parent
ea956b537c
commit
02dec787fd
@ -566,11 +566,14 @@ namespace MWMechanics
|
||||
MWWorld::LiveCellRef<ESM::NPC>* player = playerPtr.get<ESM::NPC>();
|
||||
const MWMechanics::NpcStats &playerStats = playerPtr.getClass().getNpcStats(playerPtr);
|
||||
|
||||
const MWWorld::Store<ESM::GameSetting>& gmst = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>();
|
||||
static float fDispRaceMod = gmst.find("fDispRaceMod")->getFloat();
|
||||
if (Misc::StringUtils::ciEqual(npc->mBase->mRace, player->mBase->mRace))
|
||||
x += MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispRaceMod")->getFloat();
|
||||
x += fDispRaceMod;
|
||||
|
||||
x += MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispPersonalityMult")->getFloat()
|
||||
* (playerStats.getAttribute(ESM::Attribute::Personality).getModified() - MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispPersonalityBase")->getFloat());
|
||||
static float fDispPersonalityMult = gmst.find("fDispPersonalityMult")->getFloat();
|
||||
static float fDispPersonalityBase = gmst.find("fDispPersonalityBase")->getFloat();
|
||||
x += fDispPersonalityMult * (playerStats.getAttribute(ESM::Attribute::Personality).getModified() - fDispPersonalityBase);
|
||||
|
||||
float reaction = 0;
|
||||
int rank = 0;
|
||||
@ -606,16 +609,23 @@ namespace MWMechanics
|
||||
reaction = 0;
|
||||
rank = 0;
|
||||
}
|
||||
x += (MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispFactionRankMult")->getFloat() * rank
|
||||
+ MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispFactionRankBase")->getFloat())
|
||||
* MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispFactionMod")->getFloat() * reaction;
|
||||
|
||||
x -= MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispCrimeMod")->getFloat() * playerStats.getBounty();
|
||||
static float fDispFactionRankMult = gmst.find("fDispFactionRankMult")->getFloat();
|
||||
static float fDispFactionRankBase = gmst.find("fDispFactionRankBase")->getFloat();
|
||||
static float fDispFactionMod = gmst.find("fDispFactionMod")->getFloat();
|
||||
x += (fDispFactionRankMult * rank
|
||||
+ fDispFactionRankBase)
|
||||
* fDispFactionMod * reaction;
|
||||
|
||||
static float fDispCrimeMod = gmst.find("fDispCrimeMod")->getFloat();
|
||||
static float fDispDiseaseMod = gmst.find("fDispDiseaseMod")->getFloat();
|
||||
x -= fDispCrimeMod * playerStats.getBounty();
|
||||
if (playerStats.hasCommonDisease() || playerStats.hasBlightDisease())
|
||||
x += MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispDiseaseMod")->getFloat();
|
||||
x += fDispDiseaseMod;
|
||||
|
||||
static float fDispWeaponDrawn = gmst.find("fDispWeaponDrawn")->getFloat();
|
||||
if (playerStats.getDrawState() == MWMechanics::DrawState_Weapon)
|
||||
x += MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find("fDispWeaponDrawn")->getFloat();
|
||||
x += fDispWeaponDrawn;
|
||||
|
||||
x += ptr.getClass().getCreatureStats(ptr).getMagicEffects().get(ESM::MagicEffect::Charm).getMagnitude();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user