盾牌的耐用度

From ZeldaMods (Breath of the Wild)
Revision as of 04:32, 30 May 2020 by Simple (talk | contribs) (Created page with "我們知道盾牌的計時器是和「單個盾牌」綁定的(每「面」盾牌都有一個專屬的計時器,注意不是每「種」),所以滑行的途中換盾...")
Jump to navigation Jump to search
Other languages:


盾牌的耐用度会随着玩家抵挡怪物的攻击与盾牌滑行逐渐降低。

抵挡攻击

The logic is as follows[1]:

float damageRatio = GlobalParameter::sInstance->globalParam->shieldDamageRatio.value();
int damage = damageRatio * (param->attackPower - guardPower - additionalGuardPower);
if (param->forceOnlyOneDamage)
  minDamage = 1;
else
  minDamage = param->minDmg;
weapon->takeDamage(max(damage, minDamage));
  • damageRatio (攻换防比)是从 GlobalParameter 里来的("Global" 底下的 "ShieldDamageRatio")。
  • attackPower 是被抵挡的攻击的攻击力。
  • guardPower是盾牌的防御力,也是 bgparamlist 来的("WeaponCommon" 底下的 "GuardPower").
  • additionalGuardPower 就是防御力加成加多少(没有加成则是零)。

minDmg (最小扣耐用)在大部分的时候都是 1 的样子。意思是耐用度至少会降低 1。

1.6.0 版的 ShieldDamageRatio (攻换防比)是 0.2。也就是说,敌人的攻击力比防御力低的时候,抵挡一次扣 1 点耐用度。攻击力比防御高的时候,攻击力每增加 5 点,盾牌的耐用度就多扣 1 点。[2]

盾牌滑行

这个 gist 里有源代码[3](很长所以不放在这里),总结逻辑如下:

  • 林克在盾牌上滑行的时候,一个计时器(和盾绑定)会纪录滑行的时间。
  • 如果林克在“光滑的表面”滑行滑行的速度小于 0.03,则不扣耐用度。
  • 否则,每当计时器计到 ShieldRideBaseFrame (as configured in GlobalParameter) 这个数字时,盾牌的耐用度就会减少 RideBreakRatio * ShieldRideHitBaseDamage * Damage 这么多点,然后计时器归零。

1.6.0 版的参数如下:

  • 大部分盾牌的 RideBreakRatio(滑致损比)都是 1.0。例外的盾牌包括古代兵装·盾的 0.2。换句话说,同样的滑行时间,古代兵装·盾损失的耐用度是别的盾牌的 20%。在这个表格 里列出了所有盾牌的 RideBreakRatio,以及其他更多隐藏参数。
  • ShieldRideBaseFrame (盾滑基础帧数)是 120[4],而 ShieldRideHitBaseDamage (盾滑基础损失)则是1[5]。前者的意思是每 120 帧(现实四秒)扣耐用度 RideBreakRatio * 1 这么多点。
  • 盾跳后盾牌触地时也会扣一次上述的耐用度。

我们知道盾牌的计时器是和“单个盾牌”绑定的(每“面”盾牌都有一个专属的计时器,注意不是每“种”),所以滑行的途中换盾牌就会让计时器归零。从技术上来说,只要滑行的时候勤(四秒内)换盾牌,就可以不扣任何耐用度。


References