上古卷軸5 - 失衡篇(暫定)
輸出的失衡值大多數(shù)按三種方式:
1,武器重?fù)?/strong>(不包括盾牌猛擊、不包括徒手)
輸出的失衡值 = 武器的Stagger × 攻擊動(dòng)作的Stagger
2,法術(shù)、附魔(MagicEffect 是 Stagger 模型,無論是否勾選 Detrimental flag)
輸出的失衡值 = Spell 中效果的絕對值
3,盾擊(包括盾牌猛擊、不包括 能裝備盾牌但無法持盾 的單位,如 寒霜元素 的盾擊)
輸出的失衡值 =? (50 + Block 格擋熟練度) × 0.01 × 盾擊動(dòng)作的Stagger
格擋熟練度 的計(jì)算無上下限(輸出負(fù)數(shù)的失衡值 可以與 目標(biāo)負(fù)數(shù)的Mass 負(fù)負(fù)得正)。
這里可能有相關(guān) Game Settings 參與,但我還沒試出來。
如果是 武器重?fù)?輸出失衡值,且目標(biāo)在做一些特殊動(dòng)作(例如 平時(shí)站著偶爾搖晃一下身體的閑置動(dòng)作),那么不會施加失衡值。
而 盾擊 與 法術(shù) 輸出的失衡值則沒這個(gè)機(jī)制。
?武器重?fù)?/strong> 與 盾擊 輸出的失衡值 僅可被 Perk 的切入點(diǎn) Mod Target Stagger 影響;
?法術(shù) 輸出的失衡值 僅可被 Perk 的切入點(diǎn) Mod Spell Magnitude 影響;
目標(biāo) 接受的任意失衡值 可被 Perk 的切入點(diǎn) Mod Incoming Stagger 影響。
若目標(biāo)已經(jīng)處于失衡狀態(tài),期間免疫其它失衡效果(可以接受失衡debuff,但不會更新失衡值記錄、不會重置失衡動(dòng)作)。
==============================
每個(gè)單位都有 Mass 這項(xiàng)基礎(chǔ)屬性,輸出的失衡值 會受到目標(biāo)的 Mass 減免:
如果目標(biāo)是玩家,則目標(biāo)參與計(jì)算的 Mass * 2.5 ;
當(dāng)以 重?fù)?/strong> 或 法術(shù) 給予目標(biāo)失衡時(shí),輸出的失衡值為 Mag 。
若目標(biāo) Mass 等于 0.0 時(shí),Stagger = Mag ;
若目標(biāo) Mass 大于 2.1 時(shí),Stagger = Mag / Mass - (Mass - 2.1) * 0.15 ;
其余情況下,Stagger = Mag / Mass ;
當(dāng)以 盾擊 給予目標(biāo)失衡時(shí),輸出的失衡值為 Mag 。
若目標(biāo) Mass 等于 0.0 時(shí) ,Stagger = 1.0 ;
否則,Stagger = Mag / Mass ;
最終,Stagger 的取值范圍在 0.0 與 1.0 之間 (包括) 。
==============================
最后,會根據(jù) Stagger 值,更新目標(biāo)身上的失衡值記錄(staggerMagnitude)、失衡方向(staggerDirection),并產(chǎn)生對應(yīng)失衡動(dòng)作與失衡持續(xù)時(shí)間。
根據(jù) Stagger 值,
若為 0.0 ,則不更新目標(biāo)身上的失衡值記錄,不產(chǎn)生失衡動(dòng)作。
若不為 0.0 ,則更新目標(biāo)身上的失衡值記錄,并根據(jù)它,產(chǎn)生失衡動(dòng)作。
1, 重?fù)?/strong> 與 盾擊 造成失衡動(dòng)作的持續(xù)時(shí)間,與 法術(shù) 造成失衡動(dòng)作的持續(xù)時(shí)間,會有所不同( 法術(shù) 產(chǎn)生的持續(xù)時(shí)間更長)。
2,對于人類目標(biāo)而言,手持的是 空手 / 雙手武器 與 單手武器 / 法術(shù) / 法杖 / 弓 / 弩 ,受到失衡動(dòng)作的持續(xù)時(shí)間 會有所不同(目標(biāo)手持 空手/雙手武器 受到的持續(xù)時(shí)間更短)。
3,不同生物的失衡動(dòng)作不同、前傾與后傾的方位所產(chǎn)生的失衡動(dòng)作不同,因此所產(chǎn)生 失衡動(dòng)作的持續(xù)時(shí)間 也會有所不同。(如 猛犸巨象 的空手滿額失衡時(shí)間約為 1.67 秒、巨人 的雙手滿額失衡時(shí)間約為 2.27秒 與 2.22 秒)
----------------------------------------
關(guān)于 失衡動(dòng)作持續(xù)時(shí)間 (秒) ,由于不確定因素太多,
這里只提供人類NPC的參考公式(精確到小數(shù)點(diǎn)后兩位、誤差范圍 0.02 秒)。
重?fù)?盾擊? >
?Stagger 區(qū)間??????????? 單/法/杖/弓/弩?????????????????????? ? ?? 空/雙
? (0.75 , 1.00]???????? Stagger * 4.00 - 1.00????????? Stagger * 2.68 - 0.04
? (0.50 , 0.75]???????? Stagger * 1.00 + 1.25???????? Stagger * 1.67 + 0.72
? (0.25 , 0.50]???????? Stagger * 1.00 + 1.25???????? Stagger * 1.17 + 0.95
? (0.00 , 0.25]???????? Stagger * 2.00 + 1.00???????? Stagger * 3.67 + 0.32
法術(shù) >
?Stagger 區(qū)間??????????? 單/法/杖/弓/弩???????????????????? ? ? ?? 空/雙
? (0.75 , 1.00]???????? Stagger * 2.65 + 0.50???????? Stagger * 2.68 - 0.02
? (0.50 , 0.75]???????? Stagger * 1.85 + 1.11???????? Stagger * 1.67 + 0.73
? (0.25 , 0.50]???????? Stagger * 1.85 + 1.13???????? Stagger * 1.17 + 0.97
? (0.00 , 0.25]???????? Stagger * 1.35 + 1.25???????? Stagger * 3.67 + 0.33
例如:
玩家以 鋼制劍(Stagger:0.75),重?fù)簦⊿tagger:×1.0)一個(gè)目標(biāo),使其失衡。
目標(biāo)是原版無mod的正常男性人類NPC,沒有Perk,Mass為 1 ,手里是空手。
那么目標(biāo)受到的 Stagger動(dòng)作值 為 0.75,受到失衡持續(xù)時(shí)間約為 1.97 秒。
----------------------------------------
Game Settings:
fStaggerMassOffsetBase:2.1
fStaggerMassOffsetMult:0.15
fStaggerPlayerMassMult:2.5
==============================
特例:龍
龍 的動(dòng)作文件好像沒有 staggerMagnitude 這項(xiàng)屬性。在嘗試獲取 受到的動(dòng)作值Stagger、受到Stagger的來自方向 這兩項(xiàng)動(dòng)作記錄值時(shí),返回值始終會是 0 。
龍 在計(jì)算受到 重?fù)?/strong>、盾擊、法術(shù) 輸出的失衡值與自身的 Mass 之后,
若 Stagger 大于 0 ,則直接產(chǎn)生最大的失衡動(dòng)作(地面持續(xù)約 2.00 秒,空中持續(xù)約 1.35 秒)。
除了龍起飛時(shí)的動(dòng)作會免疫失衡,龍?jiān)诘孛嫔细谔炜诊w行時(shí),都可以被失衡影響。
龍?jiān)谏档陀?35% 時(shí),會受到一次失衡,并且嘗試著陸,在生命值不滿閾值的情況下不會飛行。
==============================
弓弩:
每個(gè)單位都有 BowStaggerBonus 這項(xiàng)基礎(chǔ)屬性,默認(rèn)為 0.0 。
當(dāng)弓弩的箭矢命中目標(biāo)時(shí),會輸出該數(shù)值的失衡值 (無論弓是否拉滿) 。
這個(gè)屬性不會影響法術(shù)的彈幕。
箭矢失衡計(jì)算 Mass 方式與 法術(shù) 相同。
箭矢失衡計(jì)算 失衡時(shí)間 與 武器重?fù)?相同。
額外效果:弩矢 在命中敵人時(shí),若目標(biāo)在做部分特定的動(dòng)作,則會輸出對應(yīng)的失衡值(如 巨人前進(jìn)攻擊 1.5 、巨人立定揮棒攻擊 1.0 、巨人踩踏攻擊 0.5 ,但不包括 巨人跑動(dòng)、巨人左手輕揮攻擊)。
==============================
測試腳本關(guān)鍵代碼參考:ActiveMagicEffect
(akTarget as ObjectReference).GetAnimationVariableFloat("staggerMagnitude")
RegisterForAnimationEvent(akTarget as ObjectReference, "staggerStop")
GetTimeElapsed()