mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-17 01:10:10 +00:00
Merge pull request #2930 from Capostrophic/shieldlocation
Redistribute hits to carried left slot when possible (#5490)
This commit is contained in:
commit
999325ab44
@ -30,6 +30,7 @@
|
||||
Bug #5451: Magic projectiles don't disappear with the caster
|
||||
Bug #5452: Autowalk is being included in savegames
|
||||
Bug #5484: Zero value items shouldn't be able to be bought or sold for 1 gold
|
||||
Bug #5490: Hits to carried left slot aren't redistributed if there's no shield equipped
|
||||
Feature #390: 3rd person look "over the shoulder"
|
||||
Feature #2386: Distant Statics in the form of Object Paging
|
||||
Feature #5297: Add a search function to the "Datafiles" tab of the OpenMW launcher
|
||||
|
@ -784,7 +784,22 @@ namespace MWClass
|
||||
MWWorld::InventoryStore &inv = getInventoryStore(ptr);
|
||||
MWWorld::ContainerStoreIterator armorslot = inv.getSlot(hitslot);
|
||||
MWWorld::Ptr armor = ((armorslot != inv.end()) ? *armorslot : MWWorld::Ptr());
|
||||
if(!armor.isEmpty() && armor.getTypeName() == typeid(ESM::Armor).name())
|
||||
bool hasArmor = !armor.isEmpty() && armor.getTypeName() == typeid(ESM::Armor).name();
|
||||
// If there's no item in the carried left slot or if it is not a shield redistribute the hit.
|
||||
if (!hasArmor && hitslot == MWWorld::InventoryStore::Slot_CarriedLeft)
|
||||
{
|
||||
if (Misc::Rng::rollDice(2) == 0)
|
||||
hitslot = MWWorld::InventoryStore::Slot_Cuirass;
|
||||
else
|
||||
hitslot = MWWorld::InventoryStore::Slot_LeftPauldron;
|
||||
armorslot = inv.getSlot(hitslot);
|
||||
if (armorslot != inv.end())
|
||||
{
|
||||
armor = *armorslot;
|
||||
hasArmor = !armor.isEmpty() && armor.getTypeName() == typeid(ESM::Armor).name();
|
||||
}
|
||||
}
|
||||
if (hasArmor)
|
||||
{
|
||||
if (!object.isEmpty() || attacker.isEmpty() || attacker.getClass().isNpc()) // Unarmed creature attacks don't affect armor condition
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user