最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

【我?guī)旺椊切辀ug】護盾不被增傷加成,斷崖飛刃被吞,因陀羅可閃避榴蓮針,這究竟....

2020-07-13 03:58 作者:等--等燈等燈  | 我要投稿

前言

這個系列內容大概是科學分析一些明日方舟游戲中一些bug或"bug"的原理并給出可能的解決方案

往期內容歡迎查看本人的專欄

本期的內容包括:
因陀羅可以閃避榴蓮針,詳見:https://ngabbs.com/read.php?tid=22409229
單位存在護盾時可能不會受到傷害加成效果,詳見:https://ngabbs.com/read.php?tid=22523518
斷崖2技能對阻擋單位的傷害有一定概率被吞,詳見:https://ngabbs.com/read.php?tid=22533203或此視頻


內容之間沒有太多的相關性,都是一些近期發(fā)現的bug
一起解決了就做了個合集

封面:游戲斷崖精二立繪


因陀羅:我閃的究竟是什么?

因陀羅的閃避條件比較迷
雖然說的物理近戰(zhàn),但可以閃避部分物理無人機
最近甚至有大佬發(fā)現榴蓮針都可以被其閃避
翻看因陀羅的buffTemplate
我們可以很清晰地發(fā)現鷹角將其閃避的條件設定為了"MELEE""PHYSICAL"(即物理近戰(zhàn))

因陀羅的近戰(zhàn)物理閃避

那么很明顯,問題并不是出在因陀羅自己身上,而是出在對于"MELEE"的判定或者阿的技能身上(或兩者都有)

弄清楚這個問題之前,我們先需要介紹一個被稱作"modifier"的東西(下一章也會講到這東西)
modifier是游戲中一種記錄變化以及變化的屬性的數據結構
例如,傷害是一種記錄HP變化,目的為傷害的modifier
反之,治療是一種記錄HP變化,目的為治療的modifier
modifier記錄的不僅僅是變化量以及目的
還有其它更多的屬性,例如傷害類型(物理法術真實治療),攻擊類型(普通濺射buff),是否可致死,是否屬于環(huán)境傷害等等......
近戰(zhàn)與遠程的判定,就是判定的傷害的modifier中一個名為apPLYWay的屬性
apPLYWay是一個類似于二進制掩碼的屬性,一共兩位
第一位代表近戰(zhàn),第二位代表遠程
用二進制來表示時,無是00(0),近戰(zhàn)是01(1),遠程是10(2),近+遠是11(3)


好,回到閃避的問題上來,我們知道了近戰(zhàn)與遠程是來源于apPLYWay屬性,那么閃避具體是如何判定的呢?

上圖是拆出來的偽代碼,部分函數為了方便辨認做了重命名

可以看出,程序會將filter中的apPLYWay與modifier中的apPLYWay做二進制AND運算
若運算結果與modifier中的apPLYWay屬性相同,則通過判定執(zhí)行下一步

知道了判定機制,還剩下最后一個問題
如何知道一個傷害modifier中的apPLYWay屬性到底是什么?
其實這個問題很簡單
舟游的普通攻擊大體分為兩種,有彈道的和沒彈道的
根據反編譯結果,無彈道攻擊的apPLYWay固定返回1,彈道攻擊的apPLYWay固定返回2
所以這里可以得到第一個結論了
因陀羅閃避中的"近戰(zhàn)"一般情況下是指無彈道攻擊(所以可以閃避無人機)

阿的榴蓮針明顯有彈道,為什么因陀羅還會閃避他的攻擊?
這是因為,雖然阿的榴蓮針確實是彈道攻擊,但是其傷害不來源于彈道,而是來源于一個固定值傷害的buff
翻看這個buff的生效機制,可以發(fā)現這個buff在計算傷害時,傳入modifier的apPLYWay屬性始終被設為0

始終為0的apPLYWay

結合上面的閃避的生效機制,當modifier中apPLYWay屬性為0時,無論與什么變量做AND運算結果都是0
而0又與其本身相等,無論如何都能通過判定...
換言之,無論閃避是限定近戰(zhàn)還是遠程,阿的榴蓮針都能夠被閃避


護盾:我到底能不能吃到傷害加成?

最近有大佬發(fā)現,部分情況下,泥巖的法術護盾存在時,會使其受到的法術傷害吃不到傷害加成
如果一直都吃不到還能用特性解釋,一會吃得到一會吃不到就很神秘了
詳情見:https://ngabbs.com/read.php?tid=22523518

要解決這個問題,需要明白護盾和傷害加成本質上是怎么生效的

(此處略去作為補充內容的傷害/治療的生效的詳細步驟,有興趣的可以去NGA原貼查看)

根據反編譯結果,受擊傷害倍率調整,反傷,閃避,抵擋,護盾等等一系列行為全部會在一個事件節(jié)點(ON_TAKE_DAMAGE)上執(zhí)行

護盾的邏輯大概是先判斷傷害類型和modifier是否有效
如有效則用取護盾值與modifier值中的較小值,然后用護盾值-較小值設為新的護盾值
最后用modifier值-較小值獲取理論值,如理論值小于等于0則cancel掉modifier并將modifier值設為0
否則將modifier值設為理論值
注意,以上護盾的邏輯完全沒有傷害倍率的參與

傷害倍率的邏輯大概是先判斷傷害類型和modifier是否有效
如有效則將modifier值*傷害倍率得到新的modifier值
這里同樣也沒有護盾的參與

很明顯,這二者的在執(zhí)行并不會相互調用
先結算護盾時,護盾如果完全生效,則會將modifier取消掉,傷害倍率提升由于其邏輯不會執(zhí)行
先結算護盾時,護盾如果只抵消一部分,傷害倍率提升由于其邏輯只會對抵消后的modifier值生效
先結算傷害倍率提升時,modifier值會被增加,護盾值的扣減也會被傷害倍率提升加成
說白了就是一個行動的結算順序問題

由于這二者的行為位于一個行動節(jié)點,按照鷹角目前的邏輯,其行動會按照其在buffContainer中的順序(絕大部分時候為添加順序)進行結算
也就是說,

先加護盾,再加易傷,護盾吃不到傷害加成
先加易傷,再加護盾,護盾可以吃到傷害加成


解決方法:把護盾或傷害倍率更變轉移至其它行動節(jié)點(備選:ON_APPLYING_MODIFIER,ON_BEFORE_APPLYING_MODIFIER)
或者是給行動加一個優(yōu)先度之類的屬性,讓二者在同一行動節(jié)點進行結算時能夠保證固定的順序


斷崖:我的飛刃呢???

新干員斷崖,2技能對阻擋單位的傷害有一定概率不會觸發(fā)
詳情可以查看此視頻

樓主經過大量的測試后發(fā)現:
這個吞攻擊的現象觸發(fā)毫無規(guī)律,而且二倍速下觸發(fā)概率比正常情況下大了非常多
上個擁有這種特征的現象叫掉幀

如果假定斷崖被吞攻擊是掉幀引起的,那么為什么其它攻擊不會被吞,被吞的只有對阻擋單位的傷害?

首先,我們了解一下斷崖對阻擋單位傷害的機制
斷崖對阻擋單位進行傷害的機制屬于額外能力,正常情況下不會被觸發(fā)
只有使用triggerAbility之類的行為,才能使其觸發(fā)
所以,斷崖2技能開始時,會給自己上一個buff,buff的效果是
在持有者位于OnAbilitySpellOn事件時(這個事件的時間可以大致看做普攻前搖結束的瞬間),觸發(fā)buff持有者名為HitBlockee的能力
所以,正常情況下,斷崖會在普攻發(fā)出彈道的瞬間對阻擋單位造成一次傷害
而攻擊被吞,就是這個額外能力沒有在指定事件時被成功觸發(fā)
那么為什么掉幀會導致額外能力無法成功觸發(fā)?

所有能力都有一個冷卻,這個冷卻模式由timemode變量控制(之前在安潔篇講過)
timeMode=0 為 FROM_ATTACK_SPEED。即冷卻依賴于攻擊速度。至于怎么讓動畫適應間隔是別的變量的內容。典型例子是各類普攻。
timeMode=1 為 FROM_ANIMATION。即冷卻無條件依賴于動畫,與攻速無關。動畫按默認速度播放,不受攻擊間隔影響。典型例子是絕影。
timeMode=2 為 SPECIFIED。即冷卻需要指定,與動畫攻速均無關聯。典型例子鈣質化,柏喙扔飛刀,愛國者的真?zhèn)猸h(huán)。
timeMode=3 為 LOAD_FROM_BLACKBOARD。即冷卻從blackboard中加載,因此可以根據技能等級變化。目前只有早露3技能使用。
主動能力必須冷卻完畢才可再次觸發(fā)(有一些手段可以重置冷卻)
斷崖額外攻擊阻擋目標的能力,和普攻一樣,timeMode=0,即冷卻跟隨攻擊速度。

那么原因已經很明顯了
斷崖對阻擋目標的攻擊,由于冷卻的原因,其間隔必須大于等于攻擊間隔
而在二倍速存在一定掉幀的情況下,由于斷崖2技能額外攻擊和普攻的冷卻周期不完全同步(注意額外攻擊是以普通攻擊的SPELL_ON為一個周期的起始進行冷卻的)
很可能出現普通攻擊到達SPELL_ON時間時,額外攻擊還沒有冷卻好的情況
和普通攻擊不同的是,在嘗試觸發(fā)額外攻擊失敗后,并不會在短時間內再嘗試第二次。而是會等到下一個普攻SPELL_ON事件再嘗試觸發(fā)
因此嘗試觸發(fā)失敗的那次,飛刃自然就被吞了

解決方法:
解決掉幀幾乎是不可能的,但是可以解決掉幀帶來的巨大影響
最簡單的方法就是手動設置冷卻,把冷卻設短一點
例如把timeMode設成2,cooldown設成0.1之類的
這樣即使在2倍速下也不會出現吞攻擊的情況

UP自行將斷崖bug修復了一下(方案是timeMode設成2,cooldown設成0.1)

修復后視頻:https://www.bilibili.com/video/BV1hf4y1R79S

可以明顯看到即使是2倍速也不會吞攻擊了


本文原載于NGA:https://ngabbs.com/read.php?tid=22540222

作者為本人

此專欄以CC BY-NC-SA 4.0協(xié)議發(fā)布

【我?guī)旺椊切辀ug】護盾不被增傷加成,斷崖飛刃被吞,因陀羅可閃避榴蓮針,這究竟....的評論 (共 條)

分享到微博請遵守國家法律
渭南市| 扶绥县| 济南市| 宣化县| 新营市| 咸宁市| 酒泉市| 黄陵县| 陆河县| 合江县| 阜康市| 二连浩特市| 三台县| 独山县| 毕节市| 嘉祥县| 呼伦贝尔市| 石门县| 长丰县| 石河子市| 醴陵市| 五家渠市| 凌源市| 通化县| 莲花县| 青河县| 时尚| 萨迦县| 芜湖市| 武平县| 皋兰县| 舒城县| 彝良县| 南丰县| 贡觉县| 龙井市| 伊宁市| 仪征市| 湘阴县| 镇坪县| 泊头市|