×
Меню
Индекс
 

fSwingBlockBase

 
fSwingBlockBase - это параметр, отвечающий за базовую возможность блокирования щитом.
 
Значение по умолчанию: 1
 
Так же известна формула которая используется в OpenMW, судя по всему она близка к оригиналу.
 
Если игрок сбит с ног, нокаутирован, парализован, оглушен, находится в стойке заклинания или колдует: нет блока
 
theta = угол от игрока к врагу, отрицательный — противник слева от центральной линии, положительный — противник справа от центральной линии
 
if theta < fCombatBlockLeftAngle: нет блока
if theta > fCombatBlockRightAngle: нет блока
 
#Обратите внимание, что приведенные выше тесты неточны, поскольку каждое сравнение рассчитывается с использованием скалярного произведения. Который неправильно преобразуется в угол и немного отличается от указанного.
 
blockTerm = pcBlockSkill + 0.2 * pcAgility + 0.1 * pcLuck
swingTerm = attackSwing * fSwingBlockMult + fSwingBlockBase
 
fatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)
where normalisedFatigue is a function of fatigue. empty fatigue bar -> 0.0, full fatigue bar -> 1.0
Note fatigueTerm is normally 1.25 at full fatigue.
 
playerTerm = blockTerm * swingTerm
if player is not moving forward at any speed: playerTerm = playerTerm * 1.25 (note this is not fBlockStillBonus)
playerTerm = playerTerm * fatigueTerm
 
Если npc существо: npcSkill = характеристики существ
В противном случае: npcSkill = навык NPC с оружием в руках
 
npcTerm = npcSkill + 0.2 * npcAgility + 0.1 * npcLuck
npcFatigueTerm = fFatigueBase - fFatigueMult*(1 - normalisedFatigue)
using NPC normalisedFatigue
npcTerm = npcTerm * npcFatigueTerm
 
x = int(playerTerm - npcTerm)
if x < iBlockMinChance: x = iBlockMinChance
if x > iBlockMaxChance: x = iBlockMaxChance
roll 100, block if roll < x
 
если удар заблокирован, прочность щита уменьшается от входящего урона, смягчение урона не применяется.