合擊公式(參考)
下面内容黑字部分不見得一定要理解,開頭紅字部分類比揣摩好應該就可以了。
把合擊理解為一種炸彈,炸彈需要兩部分,1.點火引綫。2.爆炸實體。
炸彈的引綫與實體不同,并且按固定的規格用大致差不多的製作數量完成。
合擊與炸彈的不同之處在於,合擊的引綫同時作爲實體影響威力,而且實體的製作數量是動態的,實體的製作數量由引綫出現的出手順序的位置決定,具有部分廢棄引綫。
在玩家指令讀取時相當於炸彈製作階段,哪個作爲引綫哪些作爲實體是不確定的,部分可能的引綫不見得在玩家指令讀取時便成功加入製作材料中去,引綫具有消耗性廢棄性,這個引綫概率為50%(初心服很可能不一樣),不點燃便沒用了,而引綫一旦點燃,引綫的作用便以完成,後續不需要再次點燃(指50%概率計算),同時作爲實體影響威力。
在實際戰鬥動畫開始,也就是炸彈實際爆炸過程中,當然也會有實際情況的意外成爲啞彈或半啞彈,因爲炸彈内部是分室的,也就是就算已經在玩家指令讀取階段判斷為合擊,實際過程中根據條件依然會降格為普通攻擊,截斷合擊,甚至影響合擊頭等。
根據實際情況一場戰鬥也可以單彈、雙彈、三彈......一個炸彈可以單黃蛋、雙黃蛋、三黃蛋......前者事先構造,後者突發裂變。
其它條件因素具足的情況下,是否為引綫完全由概率決定,為50%,其它條件因素大多數玩家總結的差不多了。例如:連續出手順序、普通攻擊、同一對象位置等等。
想要合擊要注意分爲,構造階段,爆炸階段,前者玩家輸入指令完成,後者動畫運行完成。
排除任何額外因素,能10合的單位集合,10合概率50%,9合概率25%,8合概率12.5%......有10合概率50%,有9合概率75%,有8合概率87.5%......
猜測:
被合擊單位除了制御巫術以及祈禱等各種技能抵消傷害外,還有諸如被合擊單位選擇換位等應對手段,只是換位后原合擊集團第一速度順位的合擊降格為對隨機對象的普通攻擊很可能是無視對方閃避必定命中,如戰鬥過程中因根據具體情況只有1個戰鬥單位的特殊合擊形式也可能具有特殊普通攻擊一致的性質。
戰鬥單位
{
戰鬥行動輪數
行動動作
遠程武器
主客方
自身位置
受攻對象位置
卡位
昏睡
石化
混亂
挑撥
混亂原動作
忠誠原動作 //非寵物强制為原動作
當前血量
合擊与否 = 否
}
戰鬥單位集合 //速度由高至低
{
戰鬥單位[戰鬥單位數]
}
if 玩家指令讀取
{
位置集合[20] = {0}
for (行動輪數 = 0, 合擊引綫 = 無, i = 0; i < 戰鬥單位集合.戰鬥單位數; ++i)
{
if 戰鬥單位集合[i].行動動作 == 普通攻擊 &&
戰鬥單位集合[i].遠程武器 == 非 &&
戰鬥單位集合[i].卡位 == 非 &&
戰鬥單位集合[i].昏睡 == 非 &&
戰鬥單位集合[i].石化 == 非 &&
戰鬥單位集合[i].混亂 == 非 &&
戰鬥單位集合[i].挑撥 == 非
{
if 合擊引綫 == 有 &&
位置集合[戰鬥單位集合[i].自身位置] != 1 &&
戰鬥單位集合[i].主客方 == 戰鬥單位集合[i-1].主客方 &&
戰鬥單位集合[i].受攻對象位置 == 戰鬥單位集合[i-1].受攻對象位置
{
位置集合[戰鬥單位集合[i].自身位置] = 1
戰鬥單位集合[i-1].行動動作 = 合擊
戰鬥單位集合[i].行動動作 = 合擊
戰鬥單位集合[i].戰鬥行動輪數 = 行動輪數
continue;
}
合擊引綫 = 無
for (x = 0; x < 20; ++x)
{
位置集合[x] = 0
}
if 合擊引綫 == 無 &&
rand(1,100) <= 50 //初心服也許更改了這個數值
{
合擊引綫 = 有
位置集合[戰鬥單位集合[i].自身位置] = 1
++行動輪數
戰鬥單位集合[i].戰鬥行動輪數 = 行動輪數
continue;
}
}
合擊引綫 = 無
for (x = 0; x < 20; ++x)
{
位置集合[x] = 0
}
++行動輪數
戰鬥單位集合[i].戰鬥行動輪數 = 行動輪數
}
}
if 戰鬥動畫開始
{
for (i = 0; i < 戰鬥單位集合.戰鬥單位數; ++i)
{
if 戰鬥單位集合[i].行動動作 == 合擊
{
if 戰鬥單位集合[i].遠程武器 == 是
{
戰鬥單位集合[i].行動動作 = 普通攻擊
戰鬥單位集合[i].戰鬥行動輪數 = 0
}
else
{
for (ii = i + 1; ii < 戰鬥單位集合.戰鬥單位數; ++ii)
{
if 戰鬥單位集合[i].戰鬥行動輪數 != 戰鬥單位集合[ii].戰鬥行動輪數
{
戰鬥單位集合[i].行動動作 = 普通攻擊
break;
}
if 戰鬥單位集合[ii].忠誠原動作 == 非 ||
戰鬥單位集合[ii].混亂原動作 == 非
{
戰鬥單位集合[i].行動動作 = 普通攻擊
戰鬥單位集合[ii].戰鬥行動輪數 = 0
break;
}
if 戰鬥單位集合[ii].遠程武器 == 是
{
戰鬥單位集合[ii].行動動作 = 普通攻擊
戰鬥單位集合[i].行動動作 = 普通攻擊
break;
}
if 戰鬥單位集合[ii].昏睡 == 非 &&
戰鬥單位集合[ii].石化 == 非 &&
戰鬥單位集合[ii].當前血量 > 0
{
戰鬥單位集合[i].合擊与否 = 是
break;
}
}
}
}
if 戰鬥單位集合[i].合擊与否 == 是
{
for (ii = i; ii < 戰鬥單位集合.戰鬥單位數; ++ii)
{
if 戰鬥單位集合[i].戰鬥行動輪數 == 戰鬥單位集合[ii].戰鬥行動輪數
{
執行 戰鬥單位集合[ii].(合擊/普通攻擊)
}
else
{
i = ii - 1
break;
}
}
}
else
{
執行 戰鬥單位集合[i].原動作
}
}
}
單次合擊形式 = 速度由高至低連續相同戰鬥行動輪數的合擊/普通攻擊
玩家指令讀取時的普通攻擊註意促成合流升格為合擊,戰鬥動畫開始的合擊註意避免分流降為普通攻擊。玩家指令讀取時注意點擊同一對象,速度順序,甚至一些方式調整速度;戰鬥動畫開始時需要保證戰鬥單位的當前血量、狀態等,前一個單位是否為合擊取決於後者。
50%是合擊引線起點,有了引線以後的合擊單位便無視概率計算,但是作引線也有50%的概率作不成引線而失去進入合擊的可能,所以盡量讓不穩定的單位或者輸出低的單位作成合擊引線。戰鬥過程前的合流的不穩定因素 與 戰鬥過程中的分流因素 盡量重合,保證大流盡量不被分割以及輸出傷害不被分離。
例:可能不聽話的寵,輸出不高的單位盡量放在先手位置,聽從指令的單位輸出高的單位盡量聚在大流之中,人物等不會NO的單位,尤其高輸出單位盡量處在連續不斷的速度順序内,中間最好不插入可能NO的單位
合擊与否的關鍵在於合擊前兩個成員是否成立合擊,至於之後是否有成員合擊是否合擊或者普通攻擊並不重要,只要相同輪數即可合擊,大概這就是各種BUG(1迅2合,1換遠程武器2合擊等)的原因