1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-03 16:49:54 +00:00

Merge pull request #155 from OpenMW/master

Add OpenMW commits up to 17 Feb 2017, part 2
This commit is contained in:
David Cernat 2017-02-17 23:19:30 +02:00 committed by GitHub
commit 0d75264221
8 changed files with 33 additions and 31 deletions

View file

@ -231,8 +231,8 @@ namespace MWClass
typeText = "#{sHeavy}";
}
text += "\n#{sArmorRating}: " + MWGui::ToolTips::toString(getEffectiveArmorRating(ptr,
MWMechanics::getPlayer()));
text += "\n#{sArmorRating}: " + MWGui::ToolTips::toString(static_cast<int>(getEffectiveArmorRating(ptr,
MWMechanics::getPlayer())));
int remainingHealth = getItemHealth(ptr);
text += "\n#{sCondition}: " + MWGui::ToolTips::toString(remainingHealth) + "/"
@ -277,7 +277,7 @@ namespace MWClass
return record->mId;
}
int Armor::getEffectiveArmorRating(const MWWorld::ConstPtr &ptr, const MWWorld::Ptr &actor) const
float Armor::getEffectiveArmorRating(const MWWorld::ConstPtr &ptr, const MWWorld::Ptr &actor) const
{
const MWWorld::LiveCellRef<ESM::Armor> *ref = ptr.get<ESM::Armor>();
@ -290,7 +290,7 @@ namespace MWClass
if(ref->mBase->mData.mWeight == 0)
return ref->mBase->mData.mArmor;
else
return ref->mBase->mData.mArmor * armorSkill / iBaseArmorSkill;
return ref->mBase->mData.mArmor * armorSkill / static_cast<float>(iBaseArmorSkill);
}
std::pair<int, std::string> Armor::canBeEquipped(const MWWorld::ConstPtr &ptr, const MWWorld::Ptr &npc) const

View file

@ -84,7 +84,7 @@ namespace MWClass
virtual bool canSell (const MWWorld::ConstPtr& item, int npcServices) const;
/// Get the effective armor rating, factoring in the actor's skills, for the given armor.
virtual int getEffectiveArmorRating(const MWWorld::ConstPtr& armor, const MWWorld::Ptr& actor) const;
virtual float getEffectiveArmorRating(const MWWorld::ConstPtr& armor, const MWWorld::Ptr& actor) const;
};
}

View file

@ -1133,14 +1133,14 @@ namespace MWClass
float fUnarmoredBase2 = store.find("fUnarmoredBase2")->getFloat();
int unarmoredSkill = stats.getSkill(ESM::Skill::Unarmored).getModified();
int ratings[MWWorld::InventoryStore::Slots];
float ratings[MWWorld::InventoryStore::Slots];
for(int i = 0;i < MWWorld::InventoryStore::Slots;i++)
{
MWWorld::ContainerStoreIterator it = invStore.getSlot(i);
if (it == invStore.end() || it->getTypeName() != typeid(ESM::Armor).name())
{
// unarmored
ratings[i] = static_cast<int>((fUnarmoredBase1 * unarmoredSkill) * (fUnarmoredBase2 * unarmoredSkill));
ratings[i] = (fUnarmoredBase1 * unarmoredSkill) * (fUnarmoredBase2 * unarmoredSkill);
}
else
{

View file

@ -45,8 +45,8 @@ namespace MWMechanics
, mCellY(std::numeric_limits<int>::max())
{
// mDuration isn't saved in the save file, so just giving it "1" for now if the package has a duration.
// The exact value of mDuration only matters for repeating packages
if (mRemainingDuration != 0)
// The exact value of mDuration only matters for repeating packages.
if (mRemainingDuration > 0) // Previously mRemainingDuration could be negative even when mDuration was 0. Checking for > 0 should fix old saves.
mDuration = 1;
else
mDuration = 0;
@ -142,7 +142,8 @@ namespace MWMechanics
void AiEscort::fastForward(const MWWorld::Ptr& actor, AiState &state)
{
// Update duration counter
// Update duration counter if this package has a duration
if (mDuration > 0)
mRemainingDuration--;
}
}

View file

@ -52,9 +52,9 @@ AiFollow::AiFollow(const ESM::AiSequence::AiFollow *follow)
, mActorRefId(follow->mTargetId), mActorId(-1)
, mCellId(follow->mCellId), mActive(follow->mActive), mFollowIndex(mFollowIndexCounter++)
{
// mDuration isn't saved in the save file, so just giving it "1" for now if the package has a duration.
// The exact value of mDuration only matters for repeating packages
if (mRemainingDuration != 0)
// mDuration isn't saved in the save file, so just giving it "1" for now if the package had a duration.
// The exact value of mDuration only matters for repeating packages.
if (mRemainingDuration > 0) // Previously mRemainingDuration could be negative even when mDuration was 0. Checking for > 0 should fix old saves.
mDuration = 1;
else
mDuration = 0;
@ -107,7 +107,7 @@ bool AiFollow::execute (const MWWorld::Ptr& actor, CharacterController& characte
if (!mAlwaysFollow) //Update if you only follow for a bit
{
//Check if we've run out of time
if (mDuration != 0)
if (mDuration > 0)
{
mRemainingDuration -= ((duration*MWBase::Environment::get().getWorld()->getTimeScaleFactor()) / 3600);
if (mRemainingDuration <= 0)
@ -228,7 +228,8 @@ int AiFollow::getFollowIndex() const
void AiFollow::fastForward(const MWWorld::Ptr& actor, AiState &state)
{
// Update duration counter
// Update duration counter if this package has a duration
if (mDuration > 0)
mRemainingDuration--;
}

View file

@ -482,7 +482,7 @@ namespace MWWorld
return -1;
}
int Class::getEffectiveArmorRating(const ConstPtr &armor, const Ptr &actor) const
float Class::getEffectiveArmorRating(const ConstPtr &armor, const Ptr &actor) const
{
throw std::runtime_error("class does not support armor ratings");
}

View file

@ -353,7 +353,7 @@ namespace MWWorld
virtual int getPrimaryFactionRank (const MWWorld::ConstPtr& ptr) const;
/// Get the effective armor rating, factoring in the actor's skills, for the given armor.
virtual int getEffectiveArmorRating(const MWWorld::ConstPtr& armor, const MWWorld::Ptr& actor) const;
virtual float getEffectiveArmorRating(const MWWorld::ConstPtr& armor, const MWWorld::Ptr& actor) const;
};
}

View file

@ -251,7 +251,7 @@ void MWWorld::InventoryStore::autoEquip (const MWWorld::Ptr& actor)
static float fUnarmoredBase2 = store.find("fUnarmoredBase2")->getFloat();
int unarmoredSkill = stats.getSkill(ESM::Skill::Unarmored).getModified();
float unarmoredRating = static_cast<int>((fUnarmoredBase1 * unarmoredSkill) * (fUnarmoredBase2 * unarmoredSkill));
float unarmoredRating = (fUnarmoredBase1 * unarmoredSkill) * (fUnarmoredBase2 * unarmoredSkill);
TSlots slots_;
initSlots (slots_);