合击公式(参考)
華姬 2024/01/06 13:01:52



下面内容黑字部分不見得一定要理解,开头红字部分类比揣摩好应该就可以了。


把合击理解为一种炸弹,炸弹需要两部分,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


{


if战斗单位集合[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].混乱原动作 == 非


{


战斗单位集合[ii].行动动作 = 普通攻击


战斗单位集合[i].行动动作 = 普通攻击


战斗单位集合[ii].战斗行动轮数 = 0


break;


}



if战斗单位集合[ii].远程武器 == 是


{


战斗单位集合[ii].行动动作 = 普通攻击


战斗单位集合[i].行动动作 = 普通攻击


break;


}



if战斗单位集合[ii].昏睡 == 非 &&


战斗单位集合[ii].石化 == 非 &&


战斗单位集合[ii].当前血量 > 0


{


break;


}


}



for(ii = i; ii < 战斗单位集合.战斗单位数; ++ii)


{


if 战斗单位集合[ii].战斗行动轮数 == 战斗单位集合[i].战斗行动轮数 &&


战斗单位集合[ii].行动动作 == 合击 &&


战斗单位集合[ii].攻击对象位置 == 空


{


战斗单位集合[ii].行动动作 = 普通攻击


战斗单位集合[i].行动动作 = 普通攻击(特殊) //该普通攻击比较特殊


}


}


}


}



战斗单位集合[i].实际执行动作


}


}




单次合击形式 = 速度由高至低连续相同战斗行动轮数的合击




玩家指令读取时的普通攻击注意促成合流升格为合击,战斗动画开始的合击註意避免分流降为普通攻击。玩家指令读取时注意点击同一对象
速度顺序,甚至一些方式调整速度;战斗动画开始时需要保证战斗单位的当前血量、状态等,前一个单位是否为合击取决於后者。




50%是合击引线起点,有了引线以后的合击单位便无视概率计算,但是作引线也有50%的概率作不成引线而失去进入合击的可能,所以尽量让不稳定的单位或者输出低的单位作成合击引线。
战斗过程前的合流的不稳定因素 与 战斗过程中的分流因素 尽量重合,保证大流尽量不被分割以及输出伤害不被分离。




例:可能不听话的宠,输出不高的单位尽量放在先手位置,听从指令的单位输出高的单位尽量聚在大流之中,人物等不会NO的单位,尤其高输出单位尽量处在连续不断的速度顺序内,中间最好不插入可能NO的单位