mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-20 21:23:52 +00:00
Allow blocking of hand-to-hand attacks
This commit is contained in:
parent
73382b8aa4
commit
1b9209df4a
3 changed files with 9 additions and 4 deletions
|
@ -324,7 +324,7 @@ namespace MWClass
|
|||
|
||||
MWMechanics::applyElementalShields(ptr, victim);
|
||||
|
||||
if (!weapon.isEmpty() && MWMechanics::blockMeleeAttack(ptr, victim, weapon, damage))
|
||||
if (MWMechanics::blockMeleeAttack(ptr, victim, weapon, damage))
|
||||
damage = 0;
|
||||
|
||||
if (damage > 0)
|
||||
|
|
|
@ -641,7 +641,7 @@ namespace MWClass
|
|||
|
||||
MWMechanics::applyElementalShields(ptr, victim);
|
||||
|
||||
if (!weapon.isEmpty() && MWMechanics::blockMeleeAttack(ptr, victim, weapon, damage))
|
||||
if (MWMechanics::blockMeleeAttack(ptr, victim, weapon, damage))
|
||||
damage = 0;
|
||||
|
||||
if (healthdmg && damage > 0)
|
||||
|
|
|
@ -91,7 +91,11 @@ namespace MWMechanics
|
|||
blockerTerm *= gmst.find("fBlockStillBonus")->getFloat();
|
||||
blockerTerm *= blockerStats.getFatigueTerm();
|
||||
|
||||
float attackerSkill = attacker.getClass().getSkill(attacker, weapon.getClass().getEquipmentSkill(weapon));
|
||||
float attackerSkill = 0.f;
|
||||
if (weapon.isEmpty())
|
||||
attackerSkill = attacker.getClass().getSkill(attacker, ESM::Skill::HandToHand);
|
||||
else
|
||||
attackerSkill = attacker.getClass().getSkill(attacker, weapon.getClass().getEquipmentSkill(weapon));
|
||||
float attackerTerm = attackerSkill + 0.2 * attackerStats.getAttribute(ESM::Attribute::Agility).getModified()
|
||||
+ 0.1 * attackerStats.getAttribute(ESM::Attribute::Luck).getModified();
|
||||
attackerTerm *= attackerStats.getFatigueTerm();
|
||||
|
@ -120,7 +124,8 @@ namespace MWMechanics
|
|||
float normalizedEncumbrance = blocker.getClass().getNormalizedEncumbrance(blocker);
|
||||
normalizedEncumbrance = std::min(1.f, normalizedEncumbrance);
|
||||
float fatigueLoss = fFatigueBlockBase + normalizedEncumbrance * fFatigueBlockMult;
|
||||
fatigueLoss += weapon.getClass().getWeight(weapon) * attackerStats.getAttackStrength() * fWeaponFatigueBlockMult;
|
||||
if (!weapon.isEmpty())
|
||||
fatigueLoss += weapon.getClass().getWeight(weapon) * attackerStats.getAttackStrength() * fWeaponFatigueBlockMult;
|
||||
fatigue.setCurrent(fatigue.getCurrent() - fatigueLoss);
|
||||
blockerStats.setFatigue(fatigue);
|
||||
|
||||
|
|
Loading…
Reference in a new issue