mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-12 21:39:26 +00:00
Switch hand-to-hand attack types randomly when "always use best attack" is turned on (Fixes #3259)
This commit is contained in:
parent
0a2724f9f2
commit
b332704df7
@ -1281,14 +1281,19 @@ bool CharacterController::updateWeaponState()
|
||||
mAttackType = "shoot";
|
||||
else
|
||||
{
|
||||
if(isWeapon && mPtr == getPlayer() &&
|
||||
Settings::Manager::getBool("best attack", "Game"))
|
||||
if (isWeapon)
|
||||
{
|
||||
MWWorld::ContainerStoreIterator weapon = mPtr.getClass().getInventoryStore(mPtr).getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
|
||||
mAttackType = getBestAttack(weapon->get<ESM::Weapon>()->mBase);
|
||||
if(mPtr == getPlayer() &&
|
||||
Settings::Manager::getBool("best attack", "Game"))
|
||||
{
|
||||
MWWorld::ContainerStoreIterator weapon = mPtr.getClass().getInventoryStore(mPtr).getSlot(MWWorld::InventoryStore::Slot_CarriedRight);
|
||||
mAttackType = getBestAttack(weapon->get<ESM::Weapon>()->mBase);
|
||||
}
|
||||
else
|
||||
setAttackTypeBasedOnMovement();
|
||||
}
|
||||
else
|
||||
determineAttackType();
|
||||
setAttackTypeRandomly();
|
||||
}
|
||||
|
||||
mAnimation->play(mCurrentWeapon, priorityWeapon,
|
||||
@ -2061,7 +2066,18 @@ void CharacterController::updateMagicEffects()
|
||||
mAnimation->setLightEffect(light);
|
||||
}
|
||||
|
||||
void CharacterController::determineAttackType()
|
||||
void CharacterController::setAttackTypeRandomly()
|
||||
{
|
||||
float random = Misc::Rng::rollProbability();
|
||||
if (random >= 2/3.f)
|
||||
mAttackType = "thrust";
|
||||
else if (random >= 1/3.f)
|
||||
mAttackType = "slash";
|
||||
else
|
||||
mAttackType = "chop";
|
||||
}
|
||||
|
||||
void CharacterController::setAttackTypeBasedOnMovement()
|
||||
{
|
||||
float *move = mPtr.getClass().getMovementSettings(mPtr).mPosition;
|
||||
|
||||
|
@ -189,7 +189,8 @@ class CharacterController : public MWRender::Animation::TextKeyListener
|
||||
|
||||
bool mAttackingOrSpell;
|
||||
|
||||
void determineAttackType();
|
||||
void setAttackTypeBasedOnMovement();
|
||||
void setAttackTypeRandomly();
|
||||
|
||||
void refreshCurrentAnims(CharacterState idle, CharacterState movement, JumpingState jump, bool force=false);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user