mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 20:49:56 +00:00
Merge pull request #1215 from MiroslavR/armor_rating
Fix incorrect calculation of armor rating
This commit is contained in:
commit
cb142f01e4
6 changed files with 10 additions and 10 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1085,14 +1085,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
|
||||
{
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -245,7 +245,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_);
|
||||
|
|
Loading…
Reference in a new issue