From 5f0c8a47832baef7bed5cfa40e31dcae2181a1fd Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Sat, 9 Mar 2019 22:05:24 +0400 Subject: [PATCH 1/2] Combat AI: decrease priority multiplier for enchantments (bug #3830) --- apps/openmw/mwmechanics/spellpriority.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwmechanics/spellpriority.cpp b/apps/openmw/mwmechanics/spellpriority.cpp index 79606fda6..6cda51ac8 100644 --- a/apps/openmw/mwmechanics/spellpriority.cpp +++ b/apps/openmw/mwmechanics/spellpriority.cpp @@ -170,7 +170,7 @@ namespace MWMechanics float rating = rateEffects(enchantment->mEffects, actor, enemy); - rating *= 2; // prefer rechargable magic items over spells + rating *= 1.25f; // prefer rechargable magic items over spells return rating; } From 2a08b85998ba378a36b1e0232085b801698d2362 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Sat, 9 Mar 2019 22:20:43 +0400 Subject: [PATCH 2/2] Combat AI: normalize hit chance in the weapon priority calculation --- apps/openmw/mwmechanics/weaponpriority.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwmechanics/weaponpriority.cpp b/apps/openmw/mwmechanics/weaponpriority.cpp index 66fbbcdcc..c02729341 100644 --- a/apps/openmw/mwmechanics/weaponpriority.cpp +++ b/apps/openmw/mwmechanics/weaponpriority.cpp @@ -127,7 +127,9 @@ namespace MWMechanics value = ref->mBase->mData.mCombat; } - rating *= getHitChance(actor, enemy, value) / 100.f; + // Take hit chance in account, but do not allow rating become negative. + float chance = getHitChance(actor, enemy, value) / 100.f; + rating *= std::min(1.f, std::max(0.01f, chance)); if (weapon->mData.mType < ESM::Weapon::Arrow) rating *= weapon->mData.mSpeed;