remove dynamic_cast to ActionPotion

pull/62/head^2
mrcheko 8 years ago
parent 48765f2ff2
commit 229cb4b386

@ -229,8 +229,7 @@ namespace MWMechanics
osg::Vec3f vAimDir = MWBase::Environment::get().getWorld()->aimToTarget(actor, target);
float distToTarget = MWBase::Environment::get().getWorld()->getHitDistance(actor, target);
bool isPotion = (dynamic_cast<ActionPotion*>(currentAction.get()) != NULL);
storage.mReadyToAttack = (!isPotion && distToTarget <= rangeAttack);
storage.mReadyToAttack = (currentAction->isAttackingOrSpell() && distToTarget <= rangeAttack);
// can't fight if attacker can't go where target is. E.g. A fish can't attack person on land.
if (distToTarget > rangeAttack

@ -19,6 +19,7 @@ namespace MWMechanics
virtual float getCombatRange (bool& isRanged) const = 0;
virtual float getActionCooldown() { return 0.f; }
virtual const ESM::Weapon* getWeapon() const { return NULL; };
virtual bool isAttackingOrSpell() const { return true; }
};
class ActionSpell : public Action
@ -53,6 +54,7 @@ namespace MWMechanics
/// Drinks the given potion.
virtual void prepare(const MWWorld::Ptr& actor);
virtual float getCombatRange (bool& isRanged) const;
virtual bool isAttackingOrSpell() const { return false; }
/// Since this action has no animation, apply a small cool down for using it
virtual float getActionCooldown() { return 1.f; }

Loading…
Cancel
Save