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