mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-03-03 03:19:40 +00:00
Unreachable enemies combat AI fix (Fixes #2271)
This commit is contained in:
parent
37a85e31d6
commit
81925645a3
1 changed files with 13 additions and 10 deletions
|
@ -207,16 +207,6 @@ namespace MWMechanics
|
|||
const MWWorld::Class& actorClass = actor.getClass();
|
||||
MWBase::World* world = MWBase::Environment::get().getWorld();
|
||||
|
||||
// can't fight if attacker can't go where target is. E.g. A fish can't attack person on land.
|
||||
if (!actorClass.isNpc() && !MWMechanics::isEnvironmentCompatible(actor, target))
|
||||
{
|
||||
actorClass.getCreatureStats(actor).setAttackingOrSpell(false);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//Update every frame
|
||||
bool& combatMove = storage.mCombatMove;
|
||||
|
@ -476,6 +466,19 @@ namespace MWMechanics
|
|||
// for distant combat we should know if target is in LOS even if distToTarget < rangeAttack
|
||||
bool inLOS = distantCombat ? world->getLOS(actor, target) : true;
|
||||
|
||||
// can't fight if attacker can't go where target is. E.g. A fish can't attack person on land.
|
||||
if (distToTarget >= rangeAttack
|
||||
&& !actorClass.isNpc() && !MWMechanics::isEnvironmentCompatible(actor, target))
|
||||
{
|
||||
// TODO: start fleeing?
|
||||
movement.mPosition[0] = 0;
|
||||
movement.mPosition[1] = 0;
|
||||
movement.mPosition[2] = 0;
|
||||
readyToAttack = false;
|
||||
actorClass.getCreatureStats(actor).setAttackingOrSpell(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
// (within attack dist) || (not quite attack dist while following)
|
||||
if(inLOS && (distToTarget < rangeAttack || (distToTarget <= rangeFollow && followTarget && !isStuck)))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue