mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-21 10:23:52 +00:00
Merge pull request #356 from OpenMW/master
Add OpenMW commits up to 7 Dec 2017
This commit is contained in:
commit
de77ee3126
4 changed files with 22 additions and 1 deletions
|
@ -1265,6 +1265,15 @@ namespace MWClass
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ratings[i] = it->getClass().getEffectiveArmorRating(*it, ptr);
|
ratings[i] = it->getClass().getEffectiveArmorRating(*it, ptr);
|
||||||
|
|
||||||
|
// Take in account armor condition
|
||||||
|
const bool hasHealth = it->getClass().hasItemHealth(*it);
|
||||||
|
if (hasHealth)
|
||||||
|
{
|
||||||
|
int armorHealth = it->getClass().getItemHealth(*it);
|
||||||
|
int armorMaxHealth = it->getClass().getItemMaxHealth(*it);
|
||||||
|
ratings[i] *= (float(armorHealth) / armorMaxHealth);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1069,7 +1069,8 @@ namespace MWMechanics
|
||||||
if (player.getClass().getNpcStats(player).isWerewolf())
|
if (player.getClass().getNpcStats(player).isWerewolf())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (ptr.getClass().isClass(ptr, "Guard") && creatureStats.getAiSequence().getTypeId() != AiPackage::TypeIdPursue && !creatureStats.getAiSequence().isInCombat())
|
if (ptr.getClass().isClass(ptr, "Guard") && creatureStats.getAiSequence().getTypeId() != AiPackage::TypeIdPursue && !creatureStats.getAiSequence().isInCombat()
|
||||||
|
&& creatureStats.getMagicEffects().get(ESM::MagicEffect::CalmHumanoid).getMagnitude() == 0)
|
||||||
{
|
{
|
||||||
const MWWorld::ESMStore& esmStore = MWBase::Environment::get().getWorld()->getStore();
|
const MWWorld::ESMStore& esmStore = MWBase::Environment::get().getWorld()->getStore();
|
||||||
static const int cutoff = esmStore.get<ESM::GameSetting>().find("iCrimeThreshold")->getInt();
|
static const int cutoff = esmStore.get<ESM::GameSetting>().find("iCrimeThreshold")->getInt();
|
||||||
|
|
|
@ -1710,6 +1710,12 @@ namespace MWMechanics
|
||||||
|
|
||||||
bool MechanicsManager::isAggressive(const MWWorld::Ptr &ptr, const MWWorld::Ptr &target)
|
bool MechanicsManager::isAggressive(const MWWorld::Ptr &ptr, const MWWorld::Ptr &target)
|
||||||
{
|
{
|
||||||
|
// Don't become aggressive if a calm effect is active, since it would cause combat to cycle on/off as
|
||||||
|
// combat is activated here and then canceled by the calm effect
|
||||||
|
if ((ptr.getClass().isNpc() && ptr.getClass().getCreatureStats(ptr).getMagicEffects().get(ESM::MagicEffect::CalmHumanoid).getMagnitude() > 0)
|
||||||
|
|| (!ptr.getClass().isNpc() && ptr.getClass().getCreatureStats(ptr).getMagicEffects().get(ESM::MagicEffect::CalmCreature).getMagnitude() > 0))
|
||||||
|
return false;
|
||||||
|
|
||||||
int disposition = 50;
|
int disposition = 50;
|
||||||
if (ptr.getClass().isNpc())
|
if (ptr.getClass().isNpc())
|
||||||
disposition = getDerivedDisposition(ptr, true);
|
disposition = getDerivedDisposition(ptr, true);
|
||||||
|
|
|
@ -2607,6 +2607,11 @@ namespace MWWorld
|
||||||
if (ptr.getRefData().isDeleted())
|
if (ptr.getRefData().isDeleted())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// we should not sell ingrediends from owned organic containers
|
||||||
|
MWWorld::LiveCellRef<ESM::Container>* ref = ptr.get<ESM::Container>();
|
||||||
|
if (ref && (ref->mBase->mFlags & ESM::Container::Organic))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (Misc::StringUtils::ciEqual(ptr.getCellRef().getOwner(), mOwner.getCellRef().getRefId()))
|
if (Misc::StringUtils::ciEqual(ptr.getCellRef().getOwner(), mOwner.getCellRef().getRefId()))
|
||||||
mOut.push_back(ptr);
|
mOut.push_back(ptr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue