逗游網(wǎng):值得大家信賴的游戲下載站!

微信:doyo_game
關(guān)注逗游
單機首頁 游戲庫 排行榜 資訊 攻略 專題 合集 工具補丁 手機游戲 正版商城
所在位置:攻略中心 > 圖文攻略 > 雨中冒險2 > 正文

雨中冒險2Proc系數(shù)及機制詳解 觸發(fā)流內(nèi)核剖析

發(fā)布時間:2021-04-08 13:31 來源:百度貼吧  作者:冥府烏鴉

 

雨中冒險2觸發(fā)流是游戲中的一個經(jīng)典流派,游戲中各種類型的裝備如何觸發(fā)?下面一起來看看雨中冒險2Proc系數(shù)及機制詳解

雨中冒險2Proc系數(shù)及機制詳解

首先,雨中冒險2(下稱ROR2)的傷害機制是這樣的。

玩家使用技能 Skill,通過 投射物/球體/其他方式 造成了各種類型的傷害,代碼里賦予一個 DamageInfo 的 類 用于記錄本次技能造成的傷害。

DamageInfo 經(jīng)過 GlobalEventMangaer 類的 OnHitEnemy 事件,判斷技能擊中敵人后產(chǎn)生的各種效果,判斷各種物品的觸發(fā)。判斷完畢后,開始計算傷害-------進入 HealthComponent 類 的 TakeDamage 事件,從而計算最終傷害。

而我們今天這篇文章的重點,將注重于 OnHitEnemy 這個事件里,使用 Proc Coefficient 觸發(fā)系數(shù) 進行計算觸發(fā)型道具的原理。

任何角色造成的傷害都屬于 DamageInfo 類。而這個類里有一個 float 屬性 是 procCoefficient。

這個屬性影響了我們的各類擊中后觸發(fā)的效果以及傷害。

我們拿我們最熟悉的光頭 Commando 來舉例

Double Tap 雙擊 技能 擁有1 proc系數(shù),同時造成100%的傷害。

那么在你擁有5個粘性炸彈,1個 MK1 導彈的時候。

一次技能 有 (5x5)x 1 =25% 的概率觸發(fā) 粘性炸彈,造成100% x 180%=180%的合計傷害。

一次技能 有 (10%)x 1 =10% 的概率觸發(fā) 一個導彈,造成100% x 300%=300%的合計傷害。

以光頭作為模板,我們來看看其他擁有不同的傷害和proc系數(shù)的技能是怎么樣的。

Auto-Nailgun 自動釘槍 技能 擁有 0.6 proc系數(shù),同時造成70%的傷害。

那么在你擁有5個粘性炸彈,1個 MK1 導彈的時候。

一發(fā)釘子 有 (5x5)x 0.6 =15% 的概率觸發(fā) 粘性炸彈,造成70% x 180%=126% 的合計傷害。

一發(fā)釘子 有 (10%)x 0.6 =6% 的概率觸發(fā) 一個導彈,造成70% x 300%=210% 的合計傷害。

發(fā)現(xiàn)了嗎?對于輸出頻率高的小車,作者 hopoo 選擇了引入 proc系數(shù) 這一機制來平衡 高攻擊頻率和其他技能的觸發(fā)平衡。

In Hopoo Games Development Thoughts #1, the developers introduced the concept of proc coefficient like so:

"MUL-T’s nailgun has a low proc coefficient per nail of 0.4 compared to most character’s 1.0, so he isn’t proccing stuff a ton faster than other characters." - Quote from NaKyle, 03/30-2019.

在 Hopoo Games 的游戲設計思想討論#1 里,開發(fā)者對Proc系數(shù)的描述是這樣的:

"MUL-T的釘槍,每根釘子的proc系數(shù)很低,只有0.4,而大多數(shù)角色都是1.0,所以他觸發(fā)道具的速度并不比其他角色快上一大堆。" - 引自NaKyle,2019年03月30日。

(備注,之后小車的proc系數(shù)從0.4改成了0.6,重振頹勢,復興小車榮耀 我輩義不容辭)

作者引入Proc 系數(shù)這一概念,有效地將攻擊頻率快,但是傷害低的技能 和 攻擊頻率慢,但是傷害高的技能 ,在觸發(fā)道具的數(shù)值上作出了合理的平衡。

那么。如果一次傷害, DamegeInfo 的proc系數(shù)是0的情況呢?

如果一次傷害的proc系數(shù)為0,那么接下來所有觸發(fā)內(nèi)容都不會被響應。

相信細心的讀者可能已經(jīng)聯(lián)想到了,有時候你的導彈/火球 會觸發(fā)尤克里里,冰環(huán)火環(huán)等裝備。

要知道,觸發(fā)的特效造成的傷害,也是會進入OnHitEnemy這一事件響應中的。而觸發(fā)道具的傷害都含有自己的proc系數(shù)。

那么為什么我們不會看見導彈 觸發(fā) 尤克里里,尤克里里再觸發(fā)導彈的死循環(huán)?

這里就要引入一個新的概念,叫做 procChainMask 我稱之為 Proc連鎖機制。

在OnhitEnemy事件中,計算完各類保證傷害正常的代碼,保證Proc系數(shù)不為0的情況之下,我們造成的傷害會經(jīng)過第一層判斷。

if (damageInfo.crit){GlobalEventManager.instance.OnCrit(component, master, damageInfo.procCoefficient, damageInfo.procChainMask);}

如果角色的crit暴擊率大于100,那么這次傷害會直接判斷并標記為為暴擊,接下來在TakeDamage事件里使得最終傷害翻倍。

Proc系數(shù)不影響暴擊,暴擊獨立于Proc系統(tǒng)。

if (!damageInfo.procChainMask.HasProc(ProcType.Missile)){this.ProcMissile(inventory.GetItemCount(RoR2Content.Items.Missile), component, master, teamIndex, damageInfo.procChainMask, victim, damageInfo);}

而接下來,就是判斷是否觸發(fā)各類道具的時刻了。

我們可以看到,如果這次傷害,也就是 damageinfo 的 procChainMask 屬性 不具有 導彈的 ProcType 觸發(fā)種類,那么就會進入觸發(fā)導彈的判斷。

if (Util.CheckRoll(10f * damageInfo.procCoefficient, attackerMaster)){float damageCoefficient = 3f * (float)stack;float damage = Util.OnHitProcDamage(damageInfo.damage, attackerBody.damage, damageCoefficient);ProcChainMask procChainMask2 = procChainMask;procChainMask2.AddProc(ProcType.Missile);FireProjectileInfo fireProjectileInfo = new FireProjectileInfo{projectilePrefab = this.missilePrefab,position = position,rotation = Util.QuaternionSafeLookRotation(up),procChainMask = procChainMask2,target = victim,owner = gameObject,damage = damage,crit = damageInfo.crit,force = 200f,damageColorIndex = DamageColorIndex.Item};ProjectileManager.instance.FireProjectile(fireProjectileInfo);}

首先會通過隨機數(shù)判斷是否觸發(fā)導彈,而這個隨機數(shù)的概率判斷會經(jīng)過proc系數(shù)的一次修正。

所以小車觸發(fā)導彈的幾率會是10f x 0.6 = 6%。

然后計算堆疊數(shù),判斷出這次Projectile 投射物的 基礎傷害。

如果成功觸發(fā)導彈,則會發(fā)射出一個導彈(廢話)

而這個導彈被一個語句賦予了一個屬性。

procChainMask2.AddProc(ProcType.Missile);

這個導彈之后造成的傷害,也就是屬于這個導彈的damageinfo ,會被打上一個導彈的ProcType。

就像是你對一個人施放了魔咒,刻下了一個印記,那么這個印記就不會再被別人重復刻上。

然后回頭看看之前的觸發(fā)語句。

if (!damageInfo.procChainMask.HasProc(ProcType.Missile))

如果這次傷害 Damageinfo 里不具有 ProcType.Missile 導彈屬性。那么才會進入判斷導彈的觸發(fā)。

也就是說,這解決了一個問題,導彈是不會重復觸發(fā)導彈的。

那么導彈觸發(fā)的尤克里里,會不會再觸發(fā)導彈?

答案是不會。

為什么?

因為ProcChainMask 是繼承的,猶如鏈條一般。

發(fā)射出去的導彈具有 ProcType.Missile 的屬性,而如果這個導彈觸發(fā)了別的道具,那么別的道具造成的傷害 Damageinfo 里,也會有這個屬性。

也就是說,導彈觸發(fā)的尤克里里,造成的閃電彈射傷害,已經(jīng)被導彈玷污了(霧),再也沒法觸發(fā)導彈了。

同理,導彈觸發(fā)的熔巖鉆機,迸射出的火球也不能再觸發(fā)導彈。

這就是 Proc 連鎖機制,保證游戲傷害平衡而不卡死的關(guān)鍵。

了解了以上內(nèi)容,我們就可以對癥下藥,更合理地構(gòu)建自己的build了。

附錄1

Q:為什么我拿了很多撬棍和水晶,還是沒法觸發(fā)火環(huán)?

if (damageInfo.damage / component.damage >= 4f && component.HasBuff(RoR2Content.Buffs.ElementalRingsReady))

首先必須你造成的傷害 DamageInfo,具有不為 0 的 proc系數(shù)。

其次必須你造成的總計傷害數(shù)值,是你 面板傷害 的 400%。

而撬棍和水晶的傷害加成,并不是計算在DamageInfo 里面的,而是通過TakeDamage事件里的最終傷害加成實現(xiàn)的。也就是提高終傷并不能觸碰到冰火環(huán)的閾值。

int itemCount2 = master.inventory.GetItemCount(RoR2Content.Items.NearbyDamageBonus);if (itemCount2 > 0 && vector.sqrMagnitude <= 169f){damageInfo.damageColorIndex = DamageColorIndex.Nearby;num *= 1f + (float)itemCount2 * 0.2f;......

上為凝神水晶的代碼,可以看到只是提高終傷數(shù)值 num. 而不是修改damageinfo的damage屬性.

if (damageInfo.crit){num *= 2f;}

同時這里有一個很簡單粗暴的暴擊雙倍傷害代碼,也是放在TakeDamage事件里的。

所以如果想觸發(fā)冰火環(huán),你需要讓技能的傷害x道具的傷害 超過400%。

比如如果你是光頭,想用平A M1 觸發(fā) 火環(huán),那你需要2個導彈,發(fā)射一發(fā)導彈造成600%的傷害,才能觸發(fā)。

如果你是鐵拳Loader,平A只有340%,那么你如果觸發(fā)1個導彈,就是1020%的傷害,絕對能觸發(fā)火環(huán)。

附錄2

常見物品的Proc系數(shù)和影響范圍 (T1 T2 T3 TB TE為 白綠紅黃裝 )

影響范圍

T1 三尖匕首:影響 觸發(fā)幾率 和 持續(xù)時間

T1 眩暈手雷:觸發(fā)幾率

T1 黏彈:觸發(fā)幾率

T2 AtG導彈MK.1:觸發(fā)幾率

T2 尤克里里:觸發(fā)幾率

T2 吸血種子:回復量

T2 捕食本能:攻速Buff 持續(xù)時間

T2 收割者鐮刀:回復量

T3 完美巨獸:爆炸半徑

T3 感應肉鉤:觸發(fā)幾率

*T3 禿鷲蘇醒

火焰精英(伊芙利特的卓越):燃燒 持續(xù)時間

冰霜精英(她的噬咬擁抱):減速 持續(xù)時間

天青石精英(幽靈頭飾):減速 持續(xù)時間

孔雀石精英(恩庫哈吶的反駁):禁療Buff 持續(xù)時間

T3 粉碎的正義:減甲 持續(xù)時間

TB 熔融鉆機:觸發(fā)幾率

TB 電能鉆機:觸發(fā)幾率

Proc系數(shù)

非列出的幸存者技能均為1。

Acrid 絕命毒師 shift 腐蝕跳躍 酸池持續(xù)傷害 0.1

Artificer 工匠 M2 充能完畢的納米炸彈 能量卷須 0.3

Bandit 盜賊 M1 迸射 每個彈丸0.5. (5個彈丸)

Captain 船長 M1 火神霰彈槍 每個彈丸0.75(8個彈丸)

Captain 船長 R 軌道補給信標 0 (?)

Commando M2 突擊隊員(指揮官) 相位爆破 0.5 (8個彈丸)

Engineer 工程師 R TR58碳化器炮塔 平A 0.6 (移動炮臺)

Huntress 女獵手 M1 疾風 0.7 (3下)

Loader 裝彈手 R M551電塔 0.5

MUL-T 多面手 M1 自動釘槍 0.6(12個釘子)

MUL-T 多面手 M2 爆破筒 0.3(子母彈)

Rex 雷克斯 M1 命令:注射 0.5 (3下)

Rex 雷克斯 M2 命令:鉆孔 0.5

Rex 雷克斯 shift 樹莓齊射 0.5

Rex 雷克斯 R 觸須生長 0(持續(xù)傷害)

物品,非列出的均為1。

T1 一捆煙花 0.2

T1 黏彈 0

T1 汽油 0 (和鬼火不同機制!)

T2 魯納德的手環(huán) 0

T2 賈羅的手環(huán) 0

T2 剃刀尖網(wǎng) 0.5

T2 尤克里里 0.2

T2 鬼火 1 (wiki寫的1,目前沒研究出來能不能觸發(fā),代碼里看不太明白)

T3 完美巨獸 0

T3 儀式匕首 1

T3 冰霜圣物 0.2

T3 恩庫哈吶的意見 0.2

T3 共鳴圓盤 穿刺 1 爆炸 0

T3 感應肉鉤 0.33

T3 不穩(wěn)定的特斯拉線圈 0.3

TE 前子蓄能器 觸須 0.1

TL 異端幻象 爆炸傷害1,觸碰傷害0.1

進入《雨中冒險2》專區(qū)
查看更多《雨中冒險2》攻略
標簽: 
http://4uh5.cn/article/437750復制本文地址
閱讀本文后,您的心情是:(選擇后可查看結(jié)果)
 
惡心
憤怒
強贊
感動
路過
無聊
雷囧
關(guān)注
今日關(guān)注游戲
游戲?qū)n}
IGN 9分以上作品 愿者上鉤釣魚的那點趣事 深冬之寒,來一起看看游戲中精美的雪景吧