From 8d4f0660ce801b159d4b920c34634ced49b98e6e Mon Sep 17 00:00:00 2001 From: mrcheko Date: Tue, 12 Jul 2016 00:17:43 +0300 Subject: [PATCH] fix hardcoded melee attack ranges --- apps/openmw/mwmechanics/aicombat.cpp | 11 +++++++---- apps/openmw/mwmechanics/aicombataction.cpp | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwmechanics/aicombat.cpp b/apps/openmw/mwmechanics/aicombat.cpp index e00a71f248..130c146b6e 100644 --- a/apps/openmw/mwmechanics/aicombat.cpp +++ b/apps/openmw/mwmechanics/aicombat.cpp @@ -54,11 +54,11 @@ namespace MWMechanics AiCombatStorage(): mAttackCooldown(0), - mTimerReact(0), + mTimerReact(AI_REACTION_TIME), mTimerCombatMove(0), mReadyToAttack(false), mAttack(false), - mAttackRange(200), // default attack range (same as in Creature::Hit) + mAttackRange(0), mCombatMove(false), mLastTargetPos(0,0,0), mCell(NULL), @@ -159,8 +159,11 @@ namespace MWMechanics || target.getClass().getCreatureStats(target).isDead()) return true; - //Update every frame - storage.mReadyToAttack = pathTo(actor, target.getRefData().getPosition().pos, duration, storage.mAttackRange); + if (storage.mCurrentAction.get()) // need to wait to init action with it's attack range + { + //Update every frame + storage.mReadyToAttack = pathTo(actor, target.getRefData().getPosition().pos, duration, storage.mAttackRange); + } storage.updateCombatMove(duration); if (storage.mReadyToAttack) updateActorsMovement(actor, duration, storage); diff --git a/apps/openmw/mwmechanics/aicombataction.cpp b/apps/openmw/mwmechanics/aicombataction.cpp index ae28261baf..a704100357 100644 --- a/apps/openmw/mwmechanics/aicombataction.cpp +++ b/apps/openmw/mwmechanics/aicombataction.cpp @@ -44,7 +44,8 @@ float suggestCombatRange(int rangeTypes) { if (rangeTypes & Touch) { - return 100.f; + static const float fCombatDistance = MWBase::Environment::get().getWorld()->getStore().get().find("fCombatDistance")->getFloat(); + return fCombatDistance; } else if (rangeTypes & Target) {