Shield durability/zh: Difference between revisions
Jump to navigation
Jump to search
(Created page with "1.6.0 版的參數如下:") |
No edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
盾牌的耐用度會隨著玩家抵擋怪物的攻擊與踩盾滑行逐漸降低。 | |||
== 抵擋攻擊 == | == 抵擋攻擊 == | ||
Line 20: | Line 20: | ||
* <code>damageRatio</code> (攻換防比)是從 [[GlobalParameter]] 裡來的("Global" 底下的 "ShieldDamageRatio")。 | * <code>damageRatio</code> (攻換防比)是從 [[GlobalParameter]] 裡來的("Global" 底下的 "ShieldDamageRatio")。 | ||
* <code>attackPower</code> 是被抵擋的攻擊的攻擊力。 | * <code>attackPower</code> 是被抵擋的攻擊的攻擊力。 | ||
* <code>guardPower</code >是盾牌的防禦力,也是 [[GeneralParamList]] | * <code>guardPower</code > 是盾牌的防禦力,也是 [[GeneralParamList]] 來的("WeaponCommon" 底下的 "GuardPower")。 | ||
* <code>additionalGuardPower</code> 就是防禦力加成加多少(沒有加成則是零)。 | * <code>additionalGuardPower</code> 就是防禦力加成加多少(沒有加成則是零)。 | ||
minDmg | minDmg (最小損失)在大部分的時候都是 1 的樣子。意思是扣耐用的時候至少會扣 1 點(而不是 0.2 點或 0.75 點)。 | ||
1.6.0 版的 ShieldDamageRatio (攻換防比)是 0.2。也就是說,敵人的攻擊力比防禦力低的時候,抵擋一次扣 1 點耐用度。攻擊力比防禦高的時候,攻擊力每增加 5 點,盾牌的耐用度就多扣 1 點。<ref>https://github.com/leoetlino/botw/blob/v1.6.0/Actor/GeneralParamList/GlobalParameter.gparamlist.yml#L28</ref> | 1.6.0 版的 ShieldDamageRatio (攻換防比)是 0.2。也就是說,敵人的攻擊力比防禦力低的時候,抵擋一次扣 1 點耐用度。攻擊力比防禦高的時候,攻擊力每增加 5 點,盾牌的耐用度就多扣 1 點。<ref>https://github.com/leoetlino/botw/blob/v1.6.0/Actor/GeneralParamList/GlobalParameter.gparamlist.yml#L28</ref> | ||
== | == 踩盾滑行 == | ||
這個 gist 裡有原始碼<ref>{{addr|a=0x71002CEAF4|ver=nx-1.5.0}}: https://gist.github.com/leoetlino/34a2ce6273f7cfcbbabceda24d19aa5d</ref>(很長所以不放在這裡),總結邏輯如下: | 這個 gist 裡有原始碼<ref>{{addr|a=0x71002CEAF4|ver=nx-1.5.0}}: https://gist.github.com/leoetlino/34a2ce6273f7cfcbbabceda24d19aa5d</ref>(很長所以不放在這裡),總結邏輯如下: | ||
Line 37: | Line 37: | ||
1.6.0 版的參數如下: | 1.6.0 版的參數如下: | ||
* | * 大部分盾牌的 RideBreakRatio(滑致損比)都是 1.0。例外的盾牌包括古代兵裝·盾的 0.2。換句話說,同樣的滑行時間,古代兵裝·盾損失的耐用度是別的盾牌的 20%。在[https://docs.google.com/spreadsheets/u/0/d/1qhh_TLCF_1vMdpPY0QHbhYhN-eUIyh6R3Povo-gziMg/pubhtml 這個表格] 裡列出了所有盾牌的 RideBreakRatio,以及其他更多隱藏參數。 | ||
* ShieldRideBaseFrame | * ShieldRideBaseFrame (盾滑基礎幀數)是 120<ref>https://github.com/leoetlino/botw/blob/v1.6.0/Actor/GeneralParamList/GlobalParameter.gparamlist.yml#L26</ref>,而 ShieldRideHitBaseDamage (盾滑基礎損失)則是1<ref>https://github.com/leoetlino/botw/blob/v1.6.0/Actor/GeneralParamList/GlobalParameter.gparamlist.yml#L27</ref>。意即,每 120 幀(現實四秒)扣耐用度 <code>RideBreakRatio * 1</code> 這麼多點。 | ||
* | * 盾跳後盾牌觸地時也會扣一次上述的耐用度。 | ||
我們知道盾牌的計時器是和「單個盾牌」綁定的(每「面」盾牌都有一個專屬的計時器,注意不是每「種」),所以滑行的途中換盾牌就會讓計時器歸零。從技術上來說,只要滑行的時候勤(四秒內)換盾牌,就可以不扣任何耐用度。 | |||
Latest revision as of 05:04, 30 May 2020
盾牌的耐用度会随着玩家抵挡怪物的攻击与踩盾滑行逐渐降低。
抵挡攻击
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 点(而不是 0.2 点或 0.75 点)。
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
- ↑ 0x71002F0844 [nx-1.5.0 executable]
- ↑ https://github.com/leoetlino/botw/blob/v1.6.0/Actor/GeneralParamList/GlobalParameter.gparamlist.yml#L28
- ↑ 0x71002CEAF4 [nx-1.5.0 executable]: https://gist.github.com/leoetlino/34a2ce6273f7cfcbbabceda24d19aa5d
- ↑ https://github.com/leoetlino/botw/blob/v1.6.0/Actor/GeneralParamList/GlobalParameter.gparamlist.yml#L26
- ↑ https://github.com/leoetlino/botw/blob/v1.6.0/Actor/GeneralParamList/GlobalParameter.gparamlist.yml#L27