概述
戰(zhàn)斗其實(shí)就是兩個數(shù)值之間的較量,攻擊方的力量A和防守方的力量D。這兩個數(shù)值受到各種情況的修正,比如樹林給予50%額外的防御加成,將會修正防守方的力量D。
一旦修正后的A和D被用來計算勝率,以下的公式將對雙方都生效,不管誰是進(jìn)攻方,誰是防守方。
每個單位開始戰(zhàn)斗時都有100點(diǎn)HP,并且在戰(zhàn)斗后損失一定量的HP。一旦HP在戰(zhàn)斗中降至0,這個單位就會死亡。如果一個力量3的弓箭手在戰(zhàn)斗中損失了40點(diǎn)HP,戰(zhàn)斗結(jié)束后他的力量會降至3*(1-0.4)=1.8。如果這個弓箭手開始戰(zhàn)斗時只有2.5的力量,他還是有100點(diǎn)HP,如果這次也損失了40點(diǎn)HP,戰(zhàn)斗結(jié)束后他的力量會降至2.5*(1-0.4)=1.5。
戰(zhàn)斗是一輪一輪進(jìn)行的,每一輪都會擲一次骰子,由A和D決定誰贏得這一輪。輸?shù)舻囊环綄ゲ糠諬P。之后進(jìn)行下一輪的戰(zhàn)斗。一旦某一方的HP降至0或負(fù)數(shù),戰(zhàn)斗結(jié)束并且這個單位被消滅。
先攻給予一個“自由”輪。這意味如果某一方有兩次先攻,這兩輪仍然如同原先一樣戰(zhàn)斗,但是如果先攻方輸?shù)袅诉@輪他不會受傷,而贏了他可以對對方正常造成傷害。
撤退對于勝率沒有影響,它只發(fā)生在進(jìn)攻方將要死亡的一輪。
------------------------------------------------------------
如果一個單位有5-7的先攻,那么它究竟有幾次先攻?
(這一段原文比較繁瑣,我翻譯得簡單一點(diǎn))
每個單位實(shí)際上有兩個相關(guān)的參數(shù):確定先攻和先攻機(jī)會。
先攻=確定先攻+先攻機(jī)會所以5-7的先攻就是在每次戰(zhàn)斗中選取一個5-7之間的隨機(jī)數(shù)作為先攻次數(shù)。
一旦戰(zhàn)斗開始,第一個要檢查的是對方是否擁有免疫先攻能力,如果沒有,先攻正常運(yùn)作。
接下來要檢查對方是否也擁有先攻,如果也有的話,兩者先攻的差將會在戰(zhàn)斗計算被應(yīng)用。比如一個6次先攻的部隊面對一個2次先攻的部隊,相當(dāng)于前者擁有4次先攻。
--------------------------------------------------------------
基本公式
修正值
攻擊方和防守方會從一些升級(比如1級戰(zhàn)斗+10%力量)和位置(比如樹林給防守方50%防御加值)得到獎勵。這些加到單位的基本數(shù)值上,基本數(shù)值是指受傷時的力量(如果單位受傷的話)。一旦修正后的力量計算出來后,我們把攻擊方數(shù)值叫做A,防守方叫做D,之后計算傷害時就只需要這兩個數(shù)值了。
舉個例子,一個受傷的2.5力量的弓箭手有一級戰(zhàn)斗(+10%),并且在樹林中防守(+50%),那么D=2.5*(1+10%+50%)=2.5*1.6=4
回合
決定每一輪成功的機(jī)會只是擲一個骰子。攻擊方贏得這一輪的概率是A/(A+D),防守方相對地是D/(A+D)。
每一輪都會造成一個固定量的傷害。這個傷害從開始時總的100點(diǎn)HP中減去,傷害的數(shù)值由雙方的力量決定(見下)。如果上面的D=4的弓箭手被一個A=6的弓騎兵(先不考慮先攻的因素,所以選用一個免疫先攻的兵種)攻擊,在一輪中被擊中造成的傷害是24點(diǎn),這輪結(jié)束后弓箭手還有76點(diǎn)HP。
一輪造成的傷害
一輪造成的傷害的基本值是20點(diǎn),也就是1/5的HP,但是雙方的A和D也會影響各自造成的傷害。
進(jìn)攻方對防守方一輪造成的傷害是:20*(3*A+D)/(3*D+A)
防守方對進(jìn)攻方一輪造成的傷害是:20*(3*D+A)/(3*A+D)
結(jié)果會被四舍五入成整數(shù)。所以,弓箭手一輪對弓騎兵的傷害是20*9/11=16,而弓騎兵一輪對弓箭手的傷害是20*11/9=24。
-------------------------------------------------------------
可能的命中數(shù)
因?yàn)槊恳粨舳紩斐晒潭ǖ膫?,這就是說一個單位在死亡之前接受的命中數(shù)也是固定的。這個數(shù)值只取決于A和D的對比。
還舉上面的例子,弓箭手一次受傷24點(diǎn),也就是說它會在第5次被命中的時候死亡。
4次之后它只剩4點(diǎn)HP,第5次是致命的。
類似的,弓騎兵一次受傷16點(diǎn),第7次被命中將會死亡。
因?yàn)檫@個數(shù)值已經(jīng)確定,最終影響結(jié)果的只取決于雙方的命中數(shù)。
------------------------------------------------------------------
基本勝率計算
現(xiàn)在需要的東西都齊全了,就可以開始計算基本勝率。
弓箭手要勝弓騎兵,需要在自己被命中5次之前,先命中弓騎兵7次。也就是說,勝率是在11輪戰(zhàn)斗中至少贏得7次,而每次的勝率都是D/(A+D)=0.4。我們先計算剛好11輪贏7次的概率,然后按同樣的算法計算在11輪中贏8,9,10,11次的概率,然后全部相加,就是最終的勝率。
概率論中有一個伯努利過程,可以用一連串的事件X0X1..Xn來模擬一輪輪的戰(zhàn)斗。
每一個事件發(fā)生的概率都是p=D/(A+D)。那么在n=11輪中贏k=7次的概率符合二項(xiàng)式分布,f(k;n,p)=C(n,k)*(p^k)*((1-p)^(n-k))。這里C(n,k)是二項(xiàng)式系數(shù),用代數(shù)式表達(dá)就是(n!)/(k!*(n-k)!)。
把數(shù)字帶入得f(7;11,0.4)=C(11,7)*(0.4^7)*((1-0.4)^(11-7))=0.0701
這是11次剛好贏7次的概率7%
然后同理計算其他幾種情況,最終勝率是
f(7;11,0.4)+f(8;11,0.4)+f(9;11,0.4)+f(10;11,0.4)+f(11;11,0.4)=0.0701+
0.02336+0.00519+0.000692+0.0000419=0.09935
所以弓箭手贏弓騎兵的概率大約是9.9%然后我們再來看一下如果弓箭手贏了它還會剩下多少力量。在贏的情況下,有70%的可能性被擊中4次,23%被擊中3次,5%被擊中2次,其余忽略不計。那么加權(quán)平均值是0.7*(100-4*24)+0.23*(100-3*24)+0.05*(100-2*24)=2.8+6.4+2.4=11.64HP。轉(zhuǎn)化成力量來看,2.5*11.64%=0.3。它平均只剩下0.3的力量了。這只是假設(shè)它獲勝,因?yàn)?0%的情況下它會輸?shù)簟?/p>
---------------------------------------------------------------------
先攻的作用
假設(shè)這個弓箭手有兩次先攻,這次進(jìn)攻他的是一個劍士,力量和弓騎兵一樣也是6,但是沒有免疫先攻的能力。
那么,前兩輪的戰(zhàn)斗和之前不一樣,弓箭手如果贏了,會正常造成傷害;如果輸了,不會受到傷害。之后的戰(zhàn)斗就和以前一樣了。
計算的時候把前兩輪分成三種情況考慮,第一種情況是頭兩輪弓箭手一箭都不中,出現(xiàn)這種情況的概率是36%,然后接下來的情況就和上面的例子完全一樣,0.09935的勝率。第二種情況是中一箭,發(fā)生的概率是48%,接下來就要在10輪中至少贏得6輪,0.194的勝率。如果兩箭都中,發(fā)生概率16%,接下來要在9輪中至少贏得5輪,0.404的勝率。
總勝率就是0.36*0.0707+0.48*0.194+0.16*0.404=0.183
這次弓箭手有18.3%的概率獲勝。
-----------------------------------------------------------------------
撤退
(這個我也簡單翻譯一下)
撤退只在攻擊方的最后一輪生效(防守方不能撤退)。仍然按照通常的戰(zhàn)斗進(jìn)行,萬一攻擊方這一輪會被打死時,根據(jù)這個兵種的撤退概率隨機(jī)。如果成功,退回來;失敗就死了。
瀏覽量:02013-05-08
瀏覽量:02013-04-10
瀏覽量:02013-04-10
瀏覽量:02013-04-10
瀏覽量:02013-04-10
瀏覽量:02013-04-09