mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-06 00:55:50 +00:00
Switch torches to shields for hostile NPCs
This commit is contained in:
parent
66e0a7ff02
commit
e46472442a
@ -33,6 +33,7 @@
|
|||||||
Bug #5101: Hostile followers travel with the player
|
Bug #5101: Hostile followers travel with the player
|
||||||
Bug #5108: Savegame bloating due to inefficient fog textures format
|
Bug #5108: Savegame bloating due to inefficient fog textures format
|
||||||
Bug #5165: Active spells should use real time intead of timestamps
|
Bug #5165: Active spells should use real time intead of timestamps
|
||||||
|
Bug #5300: NPCs don't switch from torch to shield when starting combat
|
||||||
Bug #5358: ForceGreeting always resets the dialogue window completely
|
Bug #5358: ForceGreeting always resets the dialogue window completely
|
||||||
Bug #5363: Enchantment autocalc not always 0/1
|
Bug #5363: Enchantment autocalc not always 0/1
|
||||||
Bug #5364: Script fails/stops if trying to startscript an unknown script
|
Bug #5364: Script fails/stops if trying to startscript an unknown script
|
||||||
|
@ -1430,6 +1430,13 @@ namespace MWMechanics
|
|||||||
if (heldIter != inventoryStore.end() && heldIter->getTypeName() != typeid(ESM::Light).name())
|
if (heldIter != inventoryStore.end() && heldIter->getTypeName() != typeid(ESM::Light).name())
|
||||||
inventoryStore.unequipItem(*heldIter, ptr);
|
inventoryStore.unequipItem(*heldIter, ptr);
|
||||||
}
|
}
|
||||||
|
else if (heldIter == inventoryStore.end() || heldIter->getTypeName() == typeid(ESM::Light).name())
|
||||||
|
{
|
||||||
|
// For hostile NPCs, see if they have anything better to equip first
|
||||||
|
auto shield = inventoryStore.getPreferredShield(ptr);
|
||||||
|
if(shield != inventoryStore.end())
|
||||||
|
inventoryStore.equip(MWWorld::InventoryStore::Slot_CarriedLeft, shield, ptr);
|
||||||
|
}
|
||||||
|
|
||||||
heldIter = inventoryStore.getSlot(MWWorld::InventoryStore::Slot_CarriedLeft);
|
heldIter = inventoryStore.getSlot(MWWorld::InventoryStore::Slot_CarriedLeft);
|
||||||
|
|
||||||
|
@ -556,6 +556,14 @@ void MWWorld::InventoryStore::autoEquip (const MWWorld::Ptr& actor)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MWWorld::ContainerStoreIterator MWWorld::InventoryStore::getPreferredShield(const MWWorld::Ptr& actor)
|
||||||
|
{
|
||||||
|
TSlots slots;
|
||||||
|
initSlots (slots);
|
||||||
|
autoEquipArmor(actor, slots);
|
||||||
|
return slots[Slot_CarriedLeft];
|
||||||
|
}
|
||||||
|
|
||||||
const MWMechanics::MagicEffects& MWWorld::InventoryStore::getMagicEffects() const
|
const MWMechanics::MagicEffects& MWWorld::InventoryStore::getMagicEffects() const
|
||||||
{
|
{
|
||||||
return mMagicEffects;
|
return mMagicEffects;
|
||||||
|
@ -153,6 +153,8 @@ namespace MWWorld
|
|||||||
ContainerStoreIterator getSlot (int slot);
|
ContainerStoreIterator getSlot (int slot);
|
||||||
ConstContainerStoreIterator getSlot(int slot) const;
|
ConstContainerStoreIterator getSlot(int slot) const;
|
||||||
|
|
||||||
|
ContainerStoreIterator getPreferredShield(const MWWorld::Ptr& actor);
|
||||||
|
|
||||||
void unequipAll(const MWWorld::Ptr& actor);
|
void unequipAll(const MWWorld::Ptr& actor);
|
||||||
///< Unequip all currently equipped items.
|
///< Unequip all currently equipped items.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user