魔獸的數學計算

by Danny

技能效果的疊加

可疊加型

  • 長效性狀態技:兩技能基底不同則可疊加(互不干擾), 相同就不可疊加。此類技能有:緩慢術、癱瘓術、妖火、 震地擊、酒醉迷霧、沉默、…等。

    • 例1:假設緩慢術-20%速度、癱瘓術-50%速度。某部隊原速度400,被放了兩個法術。
      則結果速度變為: 400 × ( 1 - 20% - 50% ) = 120

    • 例2:假設女法的緩慢術-60%速度、-25%攻速,持續15秒,增幅為「緩慢」;某中立怪也有個緩慢術-50%速度、-40%攻速,持續5秒,增幅為「魔障」。 若一部隊先被女法放,3秒後再被此中立怪放,則首先他身上會有「緩慢」增幅,但是當中立怪的魔障放下去以後就開始混亂了。
      此部隊身上將只剩「魔障」增幅,但卻是「緩慢」增幅的特效,-60%速度,-40%攻速,持續15-3=12秒。

      這一點要儘量注意,同基底的技能即使增幅不同,在重複疊加時會造成很多的混亂。

  • 靈氣/連結技:兩技能增幅相同則不可疊加;不同則可疊加。此類技能有:邪黑氣、耐力靈氣、暴風雪、雲霧術、地震、…等。

    • 例1:大法師的 耀目法光+0.75每秒回魔;物品的耀目法光+0.50每秒回魔,兩者的增幅都是「耀目法光」。
      若一個部隊同時受這兩個靈氣影響 ,則他身上只有一個「耀目法光」增幅,+0.75每秒回魔。

    • 例2:大法師的耀目法光+0.75每秒回魔,增幅為「耀目法光」;物品的精神靈氣+0.50每秒回魔,增幅為「精神靈氣」。
      若一個部隊同時受這兩個靈氣影響 ,則他身上有「耀目法光」和「精神靈氣」兩個增幅,+1.25每秒回魔。

    P.S:如果兩個這一類的技能類型不同,但 增幅相同會怎麼樣呢? 通常不會有人這樣做,如果這麼做會產生很混亂的結果,有興趣可自行測試。

  • 被動技:少數技能即使ID相同,也可以互相疊加。這些技能主要是物品被動技能,已知的有:+攻擊傷害、+裝甲、+生命、+法力、+生命再生、+法力再生(%)、+攻速、+英雄屬性。
    例如:某英雄拿3把+18攻擊傷害的劍,就+54攻擊傷害。

以上三類效果彼此可線性疊加。

不可疊加型

某些效果就是不能互相疊加,即使是二種ID不同、甚至基底技能不同類的技能。如:物品加速、魔法抗性。設計地圖時最好不要有多種此類技能,否則會造成混亂。以下列出筆者的測試結果:

  • 泉水/補血棒的每秒回血率不疊加,只取最大值。 同理,泉水的每秒回魔率不疊加,只取最大值。

  • 物品加速(加固定值)不疊加,取最大值。(可以修改遊戲常數使它變成可疊加)。

  • 艾魯恩的優雅、物品抗魔、舉盾等技能的魔法抗性、穿刺抗性不互相疊加,效果取最大值。
    P.S:物品抗魔只能抗法術,其它二者可抗魔法或法術屬性的傷害。

  • 失誤率的計算是各失誤率取聯集。但被動技Miss效果(暴擊/重擊/ 醉拳、閃躲)不累加,只取最大值。

    例:某部隊有無想轉生 +30%閃躲率,且有醉拳+10%閃躲率,被一個站在低地,且被上了詛咒(-33%命中率)的部隊射擊。問命中率多少?
    A:總共的失誤率有Max( 30%, 10% )、 25%( 低地打高地失誤率 )、33%
    所以命中率 = ( 1 - 30% ) × ( 1 - 25% ) × ( 1 - 33% ) = 35.175%
    失誤率 = 1 - 命中率 = 64.825%

攻擊被動技

如果讀者有興趣,可參考研究資料被動攻擊技的需求和疊加

  • 碎裂擊、高射砲、粉碎波、爆裂彈、疫病雲、劫掠:
    這幾類技能幾乎可與其它被動技完全相容,各自有自己的效果(以下b項的被動技皆不包括這些)。

    • 碎裂擊:飛濺傷害無視裝甲、防禦加與任何防禦性被動技能。可與暴擊和爆破相乘。但不會吸血或反彈

    • 高射砲:飛濺傷害屬性與攻擊者同,考慮目標裝甲及各被動技。可吸血或反彈。

    • 震波:附加傷害的攻擊類型為法術,對魔法免疫者有效,對虛空部隊無效。

    • 劫掠:除了會被蜘蛛擊取代以外,可與其它所有被動技相容。

  • 無論一個部隊有多少種被動技,各被動技的發動機率互不影響。但當二者或以上的被動技同時發動時,會互相覆蓋導致只有其中一種被動技能發揮效果,發動的優先度是B社內定的;如果這些技能的優先度相同,則以較晚獲得的技能優先。例如當一個英雄有被動技20%機率4倍暴擊,並拿了一個15%機率2倍暴擊的物品時,發動暴擊機率為:

    4倍暴擊=20% × ( 1 - 15% )
    2倍暴擊=( 1 - 20 )% × 15%
    同時發動=20% × 15%(通常是先學到技能才拿物品,所以物品技能較晚獲得,故2倍暴擊優先;當然,如果你先拿物品再學暴擊,就是4倍優先)
    總計暴擊機率=二個物品聯集=1 - ( 1 - 20% ) × ( 1 - 15% )

    • 暴擊/重擊/醉拳:對近戰部隊而言,附加傷害的攻擊類型為法術,但傷害類型為強化(對魔法免疫者有效,對虛空部隊無效);遠程部隊則先乘再加。多個暴擊同時發動會跳出很多數字,但只有一個有效。附加傷害可吸血但不反彈。

    • 爆破(Demolish):附加傷害可吸血和反彈。可與暴擊類累乘。多個爆破技同時發動時也可以累乘。

P.S:有些人可能會問--到底被動技的優先度是怎麼看的?
筆者測試後也找不出任何規則-o-"。不過既然知道其中一個會被覆蓋掉,那麼只要記得避免會被覆蓋的情形就好了,誰先誰後應該不重要吧?

各種數值的計算

攻擊力 - 整數

部隊基本攻擊力

先介紹部隊基本的攻擊力,此數值由以下三數組成:

  • Attack - Base(基礎傷害)

  • Attack - Number of Dice(骰子數量)

  • Attack - Sides Per Die(骰子面數)

令基礎傷害 = A,骰子數量 = B,骰子面數 = C,
則一個部隊的攻擊力的範圍是:A+B ~ A+BC
例如:一級的步兵 基礎傷害=11,骰子數量 = 1,骰子面數 = 2(通常記為11+1d2)
則步兵的攻擊力範圍就是: 11 + 1 ~ 11 + 1 × 2 = 12 ~ 13
其實很簡單,想成傷害是基礎值加上B顆C面的骰子丟出來的和就是了。

現在一定有人問了--為什麼B社不直接讓我們設定攻擊力的最小值和最大值,而要搞什麼骰子的?
我們看看這兩個例子:

※244+1d11:244 + 1顆11面骰擲出的點數和:

點數和 1 2 3 4 5 6 7 8 9 10 11
傷害值 245 246 247 248 249 250 251 252 253 254 255
機率 1/11 1/11 1/11 1/11 1/11 1/11 1/11 1/11 1/11 1/11 1/11

※243+2d6:243 + 2顆6面骰擲出的點數和:

點數和 2 3 4 5 6 7 8 9 10 11 12
傷害值 245 246 247 248 249 250 251 252 253 254 255
機率 1/36 2/36 3/36 4/36 5/36 6/36 5/36 4/36 3/36 2/36 1/36

看到了嗎?雖然攻擊力一樣是245~255,但是各攻擊力出現的機率卻不相同。
大致上來說,骰子越多,攻擊力的範圍接近平均值的機率越高。

此外,正規戰的攻擊升級通常是直接把骰子數加一(可以到Upgrade Editor中改)。

攻擊力的加成

接著來算攻擊力的加成,首先引進需要用到的東西:

  • 每點主屬性增加的攻擊力:遊戲平衡常數中可以設定,預設為1。

  • 增加或減少X攻擊 力的技能:包括所有魔法、靈氣、物品的效果,總效果如何計算請詳見 前文,大致上是直接做加減計算。

  • 增加或減少Y%攻擊 力的技能:包括所有魔法、靈氣、物品的效果, 參考值為遊戲中顯示白色攻擊力數字的平均值,也就是部隊基本攻擊力加上主屬性(不含加 成)後的結果。

算法不難,只要知道所謂+Y%就是加上平均攻擊力 × Y%就好了,不過由於攻擊力是整數,所以每一個技能加成最後算出來的結果要四捨五入,且最小值為1,也就是正向法術最少+1,負向法術最少-1。

舉例來說:阿薩斯攻擊力49 - 59,受到戰意影響+10%攻擊力,受到可多獸戰鼓+20%攻擊力,受到癱瘓的影響-50%攻擊力,拿一把爪子+15攻擊力,結果是?
先算平均攻擊力( 49 + 59 ) ÷ 2 = 54
戰意:54 × 10% = 5.4 => 5
戰鼓:54 × 20% = 10.8 => 11
癱瘓:54 × 50% = 27 => -27
總合:5 + 11 - 27 + 15 = 4
所以阿薩斯的攻擊力會變成49 - 59 +4

攻擊冷卻時間 - 實數

攻擊冷卻時間(Cooldown, CD)為實數,單位為秒/次。

參數

首先引進需要用到的東西:

  • 每點敏捷增加的攻擊速度:遊戲平衡常數中可以設定,不同地圖可能會不一樣,預設為0.02,即2%(最小增減幅度為0.01,所以不會有0.015之類的存在)。

  • 技能增加或減少的攻擊速度:包括所有魔法、靈氣、物品的效果,總效果 如何計算請詳見前文,大致上是直接做加減計算。

  • 初始攻擊間隔:即部隊不受任何技能影響時的初始攻擊間隔(英雄則還要加上敏捷=0的條件),可從 部隊編輯器設定。

  • 動畫損傷點(Damage Point):這是 部隊開始攻擊到目標造成傷害(遠程的話是實際射出武器)的延遲時間。當此數大於初始攻擊間隔 ,或者初始攻擊間隔極低時,將會對初始攻擊間隔造成一些不規則的影響。

攻速計算

首先把初始攻擊間隔轉化成初始攻擊速度,單位為次/秒:初始攻擊速度 = 1 ÷ 初始攻擊間隔
實際攻擊速度就是:初始攻擊速度×(1+Σ技能增加%+Σ敏捷增加%)
如果需要的話可以再轉回來:實際攻擊間隔 = 1 ÷ 實際攻擊速度
其實就是直接加減,很簡單吧!

舉幾個例子:

  1. 某英雄初始攻擊間隔2.0,裝備2個15%加速手套 ,嗜血術+40%攻速,敏捷30點。
    那麼它的實際攻擊速度就是( 1 ÷ 2.0 ) × ( 1 + 15% × 2 + 40% + 30 × 2% ) = 1.15 次/秒

  2. 某英雄B初始攻擊間隔1.0,中 癱瘓術減低攻速50%,中減速減攻速25%,被冰凍減攻速25%,敏捷25點
    那麼它的實際攻擊速度= 1 × ( 1 - 50% - 25% - 25% + 25 × 2 % ) = 0.5 次/秒
    如果讀者喜歡用CD算,可以把算式改成:實際攻擊間隔 = 初始攻擊間隔 ÷(1+Σ技能增加%+Σ敏捷增加%)

如果讀者喜歡用CD算,可以把算式改成:實際攻擊間隔 = 初始攻擊間隔 ÷(1+Σ技能增加%+Σ敏捷增加%)

換言之:

  1. 實際攻擊間隔 = 2.0 ÷ ( 1 + 15% × 2 + 40% + 30 × 2% )

  2. 實際攻擊間隔 = 1.0 ÷ ( 1 - 50% - 25% - 25% + 25 × 2% )

攻擊冷卻時間上下限

攻擊速度是有限制的,其上限為原始攻速的500%( 預設情況200敏捷即上限),下限為20%。

此外,原始攻擊間隔也是有下限的(不然填上0電腦就暴了=.=),但是實際算法尚未確定。這個下限和動畫傷害點有關。測試結果如下:

Damage Point 原始CD下限 CD上限(攻速下限) CD下限(攻速上限)
5.00 5.07 25.35 1.014
2.00 2.07 10.35 0.414
1.00 1.07 5.35 0.214
0.50 0.57 2.85 0.114
0.25 0.32 1.6 0.064
0.00 0.11 0.55 0.022

描述實際數值

最後補充遊戲中對於攻速的描述所代表的實際數值:

描述 實際數值
極快(Very Fast) CD < 1.0
快(Fast) 1.0 <= CD < 1.5
中等(Average) 1.5 <= CD < 2.0
慢(Slow) 2.0 <= CD < 3.0
極慢(Very Slow) 3.0 <= CD

移動速度 - 實數

移動速度(Movement Speed)為實數,單位為距離/秒。

參數

首先引進需要用到的參數:

  • 部隊原始速度:就是WE中設定的最基礎速度。

  • 部隊最小/最大速度:限定部隊的移動速度,當其超過這個範圍時,將取這個界限值作為其移動速度(0表示不限制;如果最小值>最大值,效果相當於 互換他們的位置)。

  • 遊戲常數-部隊最小/最大速度:當部隊沒有限制最小或最大速度時,將由它來代替其作用。預設是400/150。

影響技能

改變移動速度的技能有:

  • 加速鞋:效果是+X速度,如有多個此種技能則不疊加,只取最大值(可更改遊戲常數使它變成可疊加)。

  • 技能/靈氣/物品加成:效果是+Y%速度,效果間是否可疊加請詳見前文。

移動速度計算

  • 部隊基礎速度 = 部隊原始速度 + Σ敏捷增加。

  • 理論移動速度 = (部隊基礎速度 + Σ加速鞋)×(1+Σ技能增加%)。

  • 實際移動速度 = 理論移動速度受到最小/最大移動速度調整的結果。

相關內容

附上你可能想要瞭解的一些東西:

  • 移動速度的極限為最高522,不管你將速度設得多高,都不會超過這個值。

  • 移動速度的極限為最低1,不管你將速度設得多多,都不會小於這個值。

  • 部隊原始速度=0時,表示該部隊不能移動,不能轉向。無論你給他加多少移動速度都不會動 。

  • 使用觸發Set Movement Speed可以改變「部隊基礎速度」。

  • 使用觸發Current Movement Speed (Default)可以取得未被觸發改變的「部隊基礎速度」。

  • 使用觸發Current Movement Speed (Current)可以取得「實際移動速度」。

實際數值

遊戲中對於速度的描述所代表的實際數值:

描述 實際數值
極快(Very Fast) 350 < 速度
快(Fast) 280 < 速度 <= 350
中等(Average) 220 < 速度 <= 280
慢(Slow) 175 < 速度 <= 220
極慢(Very Slow) 速度 <= 175

英雄生命 - 實數

英雄生命點數(HP,Hit Point)為實數。

參數

  • 每點力量的生命點數加成:預設值為25

影響技能/昇級

改變生命的技能和昇級主要有四種:

  • 暫時增加血量的物品技能

  • 永久增加血量的物品技能(生命書)

  • 石化聖者(暫時性)

  • 血量增加昇級,如人族的動物戰爭訓練

生命計算

生命計算只須把基礎血量和加成全部加起來就可以了,如下:
英雄生命 = 基礎血量 + 力量 × 力量加成點數 + Σ技能/昇級加成。

英雄法力 - 實數

英雄法力點數(MP,Mana Point)為實數。

參數

  • 每點智慧的法力點數加成:預設值為15

影響技能/昇級

改變法力的技能/昇級有:

  • 暫時增加法力的物品技能

  • 法師的等級昇級

此外,能增加生命的技能,一般也都能設定增加的法力。此類技能請參考上面的英雄生命說明,這裡僅列出內定增加法力的技能。

法力計算

跟生命計算一樣,全部加起來就可以了,如下:
英雄法力 = 基礎法力 + 智慧 × 智慧加成點數 + Σ技能/昇級加成。

回血速度 - 實數

回血速度(HP Regeneration)為一實數,單位為HP回復量/秒。

參數

首先引進需要用到的參數:

  • 部隊原始回血:這個值還可設定白天/晚上/全天/腐地回血,總之在符合條件時,這是部隊基本的回血

  • 每點力量增加的回血速度:預設值為0.05

影響技能

改變回血速度的技能有三大類:

  • 一種是+X回血速度(如邪黑氣不把Percent Bonus打勾)

  • 一種是每秒回復Y%生命值(如邪黑氣把Percent Bonus打勾),其參考數值為最大生命值

  • 一種是生命之泉的每秒回復Y%血量,與前兩者的區別是它不產生 增幅,而且多個此類技能效果不疊加,只取最大值

回血速度計算

算法也很簡單,能疊加的全部相加就好了,不同效果間可否疊加請詳見前文:
每秒回血量 = 部隊原始回血 + 力量(含加成) × 0.05 + Σ技能或物品加成 + 生命上限 × Σ技能或物品加成%。

回魔速度 - 實數

回魔速度為一實數,單位為 Mana回復量/秒。

參數

首先引進需要用到的參數:

  • 部隊原始回魔:這個值一定要在部隊原始 法力設定>0時才有效。

  • 每點智慧增加的回魔速度:可由遊戲常數修改,預設值為0.05。

影響技能

改變回魔速度的技能有四大類:

  • 一種是+X回魔速度(如預設的耀目法光)

  • 一種是每秒回復Y%法力(如修改後的耀目法光),其參考數值為最大 法力值

  • 一種是法力之泉的每秒回復Y%法力,與前兩者的區別是它不產生 增幅,而且多個此類技能效果不疊加,只取最大值

  • 最後是物品技能的+Y%法力回復速度,參考值是[原始回魔+智慧回魔]

回魔速度算法

算法也很類似,也就是:
每秒回魔量 = ( 部隊原始回魔 + 智慧(含加成) × 0.05 ) × ( 1 + Σ物品技能加成% ) + Σ技能或物品加成 + 法力上限 × Σ靈氣技能加成%。

傷害的計算

傷害和生命值為實數,你扣0.1滴血就是0.1滴血,只是扣10次才會顯示少1罷了。

這是一個可歌可泣的故事,敍述你的一個士兵發出的攻擊,如何經過層層的剝削,而達到讓敵人的生命值減少這個最終目的。

一個輸出傷害的傷害包括三種主要屬性,即傷害值、攻擊類型傷害類型

一開始會先判斷是否可對目標生效,如果不能生效,則根本不會輸出傷害(和輸出0 傷害不同,觸發偵測不到)。

傷害輸出

首先從一個部隊發動攻擊開始,經過前文的計算,我們可以算出部隊經過加成後的攻擊力範圍,然後經過電腦擲骰子的過程,得出部隊最原始的輸出攻擊力。

傷害倍乘

艾魯恩的優雅防禦魔法防禦等類型的技能,可讓你的攻擊力乘以一個自己設定的倍率。

倍乘傷害是累乘的。例如在物品欄裝6個2倍的艾魯恩技能的物品,再來個50%的舉盾技,那麼你的攻擊就變成2^6 × 0.5 = 32倍。

幻影乘倍

如果攻擊者是個幻影,理所當然要乘上它的攻擊力倍數。正規戰中的設定是0,所以不管攻擊力多大,打出來都沒有傷害。

失誤判斷

詛咒酒醉迷霧低地打高地無想轉生等可能使攻擊者失誤。

失誤率的算法是,被動閃躲技之間取最大閃躲率,之後所有閃躲率取聯集。

例如惡魔獵人無想轉生閃躲率30%,拿了一個物品提供15%閃躲率。大法師中了詛咒命中率-33%,中了酒醉迷霧命中率-40%,並且從低地打惡魔獵人。

大法師攻擊的失誤率是用30%、33%、40%、25%四數取聯集 = 1 - (1-30%) × (1-33%) × (1-40%) × (1-25%) = 78.9%
如果還是不懂,可以想成大法師攻擊時,先考慮詛咒,有1-33%=67%的機率可以命中,再考慮酒醉迷霧,有67%×(1-40%) = 40.2%機率可以命中,再考慮後兩者,得出21.1%的命中率。換算成失誤率即1-21.1%=78.9%。

如果攻擊失誤就會:

  • 失去對主目標的攻擊傷害

  • 如果是投射攻擊,投射物將不追蹤,射到目標目前所在的位置

  • 如果是飛濺或穿刺攻擊,投射物到達目標後仍能造成飛濺/穿刺傷害,但威力會減弱,其比例可由遊戲常數中的Combat - Missed Attack Damage Factor調整

  • 大部分的攻擊附加被動效果都不會生效。可生效的極少,如彈幕、滾油

被動攻擊技

被動技的效果太多了,而且彼此的疊加也頗複雜,詳細的疊加情形請見被動技能需求&疊加研究

主要兩個重點必須知道:

  • 計算的原則通常都是先乘再加,也就是附加的固定傷害通常是不會跟著乘倍的。
    例如遠程攻擊的大法師攻擊力100,發動重擊+50傷害,發動爆破傷害×2。重擊和爆破可以疊加,結果輸出傷害會是250,而不是300。

  • 非常多被動技的附加X點傷害是附加法術傷害(有的是物理屬性,有的是全域屬性,有的則是和攻擊者的攻擊屬性完全一樣),它們附加的傷害和部隊發動的攻擊傷害是分開計算的,如果用觸發去偵測,可以測到兩個以上的傷害事件。

    例1:山王以75攻擊力攻擊某目標,並且發動可產生25額外傷害的重擊。
    山王總共對目標輸出兩個傷害,一個是75點的英雄傷害;另一個則是25點的法術傷害。

    例2:牛伯伯以50攻擊力攻擊某目標,並且發動可產生40額外傷害的震波。
    牛伯伯對目標輸出50點的普通傷害;並且對所有震到的部隊輸出40點的法術傷害。

範圍攻擊的傷害衰減

大家應該都知道飛濺/穿刺/彈跳攻擊會有傷害的衰減吧,傷害的衰減是以輸出傷害(末扣防之前)為準。

譬如弩砲攻擊力50,打山王由於裝甲類型和防禦力減弱為10。弩砲對山王後面的下一個 部隊輸出的傷害是50×Y%,而不是10×Y%。

另外,假設投石車炸到12個目標,所有飛濺攻擊的輸出傷害都共用同一個隨機數,而不是對12個目標個別取一次隨機數。

傷害反彈

在進行傷害計算之前,系統會用未減弱的傷害計算反彈效果。

近戰反彈

近戰反彈包括荊棘光環和尖刺甲殼兩種,屬於防禦屬性的法術傷害,即不計裝甲、對魔免無效、對英雄裝甲減弱、…等等。

算法很簡單,就是都互不影響,全部線性疊加。譬如某近戰部隊攻擊力100打地穴領主,他有尖刺甲殼反彈33%傷害,荊棘光環反彈15傷害(可設定成反彈百分比或定值),而攻擊者就會受到100×33%=33和15兩個反彈的法術傷害,這兩個傷害是分開的,如果要加起來就是33+15=48。

遠程偏轉

艾魯恩的優雅、防禦、魔法防禦都可以有遠端反彈。

至於算法…哪個發動就取哪個效果,如果同時發動,取承受傷害最高的那個(感覺有點怪怪的,不過事實就是這樣 囧)。

承受傷害

現在傷害輸出到了,開始計算承受的傷害。

靈魂連結

這種技能作為第一步驟是因為它會把傷砉分配出去,把一個傷害輸出分裂成很多個傷害輸出。靈魂連結的分擔百分比是指主部隊所需承受的傷害,此部分傷害屬性等皆和攻擊者輸出的一模一樣。而扣除主部隊分擔的比例,由所有連結的部隊分擔(包含主部隊),此部分傷害屬於法術屬性,魔法免疫者不受傷害(仍舊可以分擔)。

假設將1個蝙蝠騎士(裝甲0)、1個農奴、1個在採礦的農奴、1個英雄連結在一起(承受60%),而敵方的翼龍騎士攻擊蝙蝠騎士,隨機選到50的穿刺傷害,則電腦如此判斷:

  • 對蝙蝠騎士輸出傷害:100 × 60% = 60 點穿刺傷害。

  • 所有部隊各自承受的分擔傷害輸出:100 × ( 1 -60% ) ÷ 4 = 10 點法術傷害。

當然,對蝙蝙騎士而言有兩個傷害,一個是60 點穿刺傷害,一個是10 點法術傷害。

如果多個靈魂連結呢?由於技能基底相同,根據前面所述,後放的靈魂連結會覆蓋先放的靈魂連結,所有部隊的分擔效果都以主部隊身上的增幅來判斷。

硬化外皮

沒錯,這東西就是排得這麼前面,傷害都還沒扣掉就先減固定值,所以它的效果並不如想像中的好。不過這玩意兒還是有一點可取之處的,多個硬化外皮各自可發揮效果,算法很簡單,傷害輸出減掉抵抗量,結果如果小於最小傷害,就取最小傷害。多個硬化皮膚技能同時作用時,先得到的技能先生效,後得到的技能後生效。

例:某部隊先得到減少20傷害,最低傷害5的硬化外皮,再得到減少30傷害,最低傷害8的硬化外皮,當它受到19的攻擊力時:

  • 第一個硬化外皮:Max( 19 - 20, 5 ) = 5

  • 第二個硬化外皮:Max( 5 - 30, 8 ) = 8

所以變成8點傷害。

看到了嗎?基本上最低傷害越低的皮排在越後面越好。

尖刺甲殼

這個技能除了反彈以外,還可以降低近戰傷害為一定乘數。多個尖刺甲殼彼此效果可累乘(增幅相同亦可)。

穿刺 /魔法抗性

艾魯恩的優雅防禦魔法防禦可以把穿刺、魔法、法術傷害減弱成Y%。另外,物品還有一個降低傷害法術(Spell Damage Reduction)可以把法術傷害減弱成Y%。物品抗魔先取的話,艾魯恩的優雅舉盾的魔法抗性可以加成。單純艾魯恩的優雅舉盾的魔法抗性可以加成(累乘)。

例如某部隊有A技能80%穿刺傷害,50%魔法或法術傷害;B技能65%穿刺傷害,80%魔法或法術傷害。當承受穿刺傷害時,取B的效果;承受魔法或法術傷害時,取A的效果。

狂戰士

多個狂戰士使用時,後者會覆蓋前者的效果,持續時間則比較當前效果剩餘時間與新技能作用時間,取時間長者狂戰士預設是增加傷害的,適用任何物理、魔法傷害。

幻影乘倍

沒什麼好說的,幻影受到的傷害要再乘上這個百分率。

防禦類型加成

看看偉大的Blizzard公司設計出的裝甲相剋表吧:

普通 輕型 中型 重型 未武裝 強化 英雄 神性 虛空 魔法免疫
100% 100% 100% 100% 100% 100% 100% 100% ×0% ×100%
普通 100% 100% 150% 100% 100% 70% 100% 5% ×0% ×100%
穿刺 100% 200% 75% 100% 150% 35% 50% 5% ×0% ×100%
英雄 100% 100% 100% 100% 100% 50% 100% 5% ×0% ×100%
攻城 100% 100% 50% 100% 150% 150% 50% 5% ×0% ×100%
混沌 100% 100% 100% 100% 100% 100% 100% 100% ×0% ×100%
魔法 100% 125% 75% 200% 100% 35% 50% 5% ×166%
法術 100% 100% 100% 100% 100% 100% 70% 5% ×166% ×100%
治療 100% 100% 100% 100% 100% 100% 100% 100% ×166% ×100%

這部分應該沒什麼困難吧?看著對照表算數字就好了,綠底部分可由遊戲常數修改。

讀者有沒有注意到,為什麼魔法-魔法免疫是╳;而法術-魔法免疫是×100%呢?不要懷疑,事實就是這樣。還記得之前所說的嗎?可否傷害的判定是看傷害類型;而攻擊類型則影響傷害的加成。

換句話說,雖然一般來說,一般的法術不能對魔法免疫的部隊生效,可是像一些比較特別的被動技--如重擊--就能夠施加攻擊類型為法術,傷害屬性為物理型的傷害。但是魔法-魔法免疫卻是鎖死的,不管你怎麼改傷害類型,它的屬性永遠是魔法型,對魔法免疫完全不可能生效。

防禦力(裝甲值)

先談談部隊的防禦力好了。防禦力為實數,但遊戲中白色數字只顯示到整數,綠色加成只顯示到小數點以下一位。但是小數的防禦力原則上還是有用處的。另外,防禦力下限-20,再更低的話,承受傷害值和-20是一樣的。

再來是防禦力所能減少的傷害百分比,遊戲中有顯示出一個值,但是只算到小數點以下二位,所以可以說是僅供參考。真正的承受比例要用真正的防禦力(實數),依照以下的公式,才能得出最精確的結果。

承受傷害比例:

  • 防禦力為正時: 1 ÷ ( 1 + 防禦力 × 0.06 ) ≒ 1- 遊戲顯示的傷害減成率

  • 防禦力為負時: 2 - ( 1 - 0.06 ) ^ [-防禦力] ≒ 1- 遊戲顯示的傷害減成率

要注意的是:

  • 0.06是一個可從遊戲常數修改的參數。

  • [-防禦力] 是指防禦力的相反數(負數=>正數)再取整數,也就是說-0.6 => 0;-1.2 => 1;-5.4 => 5。

  • ^ 符號表示乘冪。X ^ Y 代表X的Y次方。

    看似這個公式很複雜,其實仔細思考,會發現其實這公式背後隱念的意義是,每增加一點正裝甲,就增加了相當於0.06倍目前生命值的傷害承受力。譬如說一個英雄1000HP,當他防=0時,只能承受1000點物理傷害,當他防8時,就能承受1480點物理傷害。

    負數的裝甲則用到一個科學的近似值觀念。今天設0.06 « 1,則:

  • 2 - ( 1 - 0.06 ) ^ [-防禦力] = 2 - ( 1 - 0.06 × [-防禦力] ) = 1 + 0.06 × [-防禦力]

亦即是每一點負裝甲,就多承受0.06倍的傷害。不過這個公式實在用了太多近似值,而且我們都知道0.06還不夠小,0.06 « 1基本上不準確。所以…當做常識看看就好。

吸血

傷害算出來以後,電腦才用衰減後的傷害來計算吸血值。

可吸血的技能有吸血面具、吸血靈氣、吸血藥水;當然,多個吸血面具之間會有衝突;喝了第二瓶吸血藥水也會把第一瓶的效果蓋掉。總之最後就只有固定幾個會發揮作用。

他們的疊加很簡單,就是互不干涉,各自吸血。參考的數值就是前面算到頭暈腦脹算出來的數值。

補充:回復技能

這不是傷害計算的第五步啦,只是最後提供的參考而已。

來談談傷害和回復的區別:

  • 傷害就是輸出的傷害要經過上面一長串運算,最終才對目標造成傷害。

  • 回復則不受魔法免疫、被動技、裝甲加成等影響,永遠能回復它該回復的量。唯一會影響回復量的是虛空部隊所承受的百分比。

  • 觸發可偵測到傷害,不能偵測到回復。

  • 回復技多半不能對滿血的目標施放。

另外,根據閒閒沒事的筆者和一些前輩的研究發現,有些技能改成負數以後會變性:

  • 醫療噴霧/暴風雪/火焰之雨
    把醫療噴霧改成負數,就變成一般的傷害技。把暴風雪/火焰之雨改成負數,就變成回復技。

  • 治療之風/連環閃電
    把它負數,就變成一般的傷害技。不過不可對滿血的目標施放,也不會在敵軍間彈跳。
    至於連環閃電…改了效果不是很理想,它不會在友軍間彈跳。

綜合教學/魔獸的數學計算.txt · 上一次變更: 2010年11月16日 10:24 am 來自 crassorz
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0