diff --git a/apps/openmw/mwmechanics/aicombat.cpp b/apps/openmw/mwmechanics/aicombat.cpp index 8f2408587..5ae2a0ca1 100644 --- a/apps/openmw/mwmechanics/aicombat.cpp +++ b/apps/openmw/mwmechanics/aicombat.cpp @@ -163,9 +163,7 @@ namespace MWMechanics float rangeMelee; float rangeCloseUp; bool distantCombat = false; - int attackType = actor.getClass().getCreatureStats(actor).getAttackType(); - if (weaptype==WeapType_BowAndArrow || weaptype==WeapType_Crossbow || weaptype==WeapType_ThowWeapon - || attackType==MWMechanics::CreatureStats::AT_Target ) + if (weaptype==WeapType_BowAndArrow || weaptype==WeapType_Crossbow || weaptype==WeapType_ThowWeapon) { rangeMelee = 1000; // TODO: should depend on archer skill rangeCloseUp = 0; //doesn't needed when attacking from distance diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 05c4e1f2a..954eb18b3 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -644,7 +644,12 @@ bool CharacterController::updateNpcState() mAnimation->addEffect("meshes\\" + castStatic->mModel, -1, false, "Left Hand", effect->mParticle); mAnimation->addEffect("meshes\\" + castStatic->mModel, -1, false, "Right Hand", effect->mParticle); - determineAttackType(effectentry.mRange); + switch(effectentry.mRange) + { + case 0: mAttackType = "self"; break; + case 1: mAttackType = "touch"; break; + case 2: mAttackType = "target"; break; + } mAnimation->play(mCurrentWeapon, Priority_Weapon, MWRender::Animation::Group_UpperBody, true, @@ -698,7 +703,7 @@ bool CharacterController::updateNpcState() mAttackType = "shoot"; else { - int attackType = stats.getAttackType(); + int attackType; if(isWeapon && Settings::Manager::getBool("best attack", "Game")) attackType = getBestAttack(weapon->get()->mBase); else @@ -1302,57 +1307,34 @@ void CharacterController::updateVisibility() mAnimation->setAlpha(alpha); } -void CharacterController::determineAttackType(int spellRange) +void CharacterController::determineAttackType() { - if(spellRange == -1) + float * move = mPtr.getClass().getMovementSettings(mPtr).mPosition; + + if (move[0] && !move[1]) //sideway { - float * move = mPtr.getClass().getMovementSettings(mPtr).mPosition; - - if (move[0] && !move[1]) //sideway - { - mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Slash); - if(mPtr.getClass().isNpc()) - mAttackType = "slash"; - else - mCurrentWeapon = "attack2"; - } - else if (move[1]) //forward - { - mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Thrust); - if(mPtr.getClass().isNpc()) - mAttackType = "thrust"; - else - mCurrentWeapon = "attack3"; - } + mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Slash); + if(mPtr.getClass().isNpc()) + mAttackType = "slash"; else - { - mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Chop); - if(mPtr.getClass().isNpc()) - mAttackType = "chop"; - else - mCurrentWeapon = "attack1"; - } - + mCurrentWeapon = "attack2"; + } + else if (move[1]) //forward + { + mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Thrust); + if(mPtr.getClass().isNpc()) + mAttackType = "thrust"; + else + mCurrentWeapon = "attack3"; } else { - switch(spellRange) - { - case 0: - mAttackType = "self"; - mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Self); - break; - case 1: - mAttackType = "touch"; - mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Touch); - break; - case 2: - mAttackType = "target"; - mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Target); - break; - } + mPtr.getClass().getCreatureStats(mPtr).setAttackType(MWMechanics::CreatureStats::AT_Chop); + if(mPtr.getClass().isNpc()) + mAttackType = "chop"; + else + mCurrentWeapon = "attack1"; } - } } \ No newline at end of file diff --git a/apps/openmw/mwmechanics/character.hpp b/apps/openmw/mwmechanics/character.hpp index 37fc42f1e..6950854c8 100644 --- a/apps/openmw/mwmechanics/character.hpp +++ b/apps/openmw/mwmechanics/character.hpp @@ -165,7 +165,7 @@ class CharacterController float mSecondsOfRunning; std::string mAttackType; // slash, chop or thrust - void determineAttackType(int spellRange = -1); + void determineAttackType(); void refreshCurrentAnims(CharacterState idle, CharacterState movement, bool force=false); diff --git a/apps/openmw/mwmechanics/creaturestats.hpp b/apps/openmw/mwmechanics/creaturestats.hpp index f9b52abc0..308883fc5 100644 --- a/apps/openmw/mwmechanics/creaturestats.hpp +++ b/apps/openmw/mwmechanics/creaturestats.hpp @@ -118,11 +118,7 @@ namespace MWMechanics { AT_Chop, AT_Slash, - AT_Thrust, - - AT_Self, - AT_Touch, - AT_Target, + AT_Thrust }; void setAttackType(int attackType) { mAttackType = attackType; } int getAttackType() { return mAttackType; }