有一些更正和补充
1)基础值为枪法,机器人的枪法为自己和控制者枪法的最大值
应该为 枪法x清醒度/100 清醒度包括以下数值(100, 75, 65, 50, 100),按注释来看,喝酒减少清醒度.
火箭筒的算法不同,为 (Dex+枪法+智慧+10x级别)/4
有重武器技能加15,专家再加15
清醒度影响人物的每一个属性,所有取人物属性的地方都要加上清醒修正
2)士气加成
3)疲劳惩罚
4)当前值如果大于枪支状态,则取与枪支状态的均值
5)与上次射击同一目标加10
不是同一目标,是同一方格
6)神经值加15
7)蹲着射击有加成,距离每格加1,最大加10
8)趴着射击大于5格有加成,距离每格加1,最大加20,如果带支架,再加成,状态大于85%的支架再加50%加成,即趴着射击最大有30的加成。
支架加成为 支架状态x趴着射击的加成/100/2
9)如果不是双手武器,则SMG减5,如果没有双手技能,减20
是否使用两把武器的判断如下:
1. 左手武器类别为枪
2. 左手武器不能为双手武器
3. 射击者不在扫射状态
4. 右手武器不是榴弹发射器
5. 右手武器必须是枪
6. 左手枪的状态必须大于等于10
7. 左手枪中必须有子弹
如果不符合,即使没有双手技能也不减20
10)如果是扫射,减去该武器的扫射惩罚,扫射的子弹逐发累计惩罚,有自动武器技能,惩罚减半,自动武器专家再减半。
11)在可以看到目标时,每花一点AP瞄准,则加10
增加一条
如果射击者是电脑控制的人,在简单模式下命中减5, 在其他模式下如下
INT8 gbDiff[MAX_DIFF_PARMS][5] =
{
//AI DIFFICULTY SETTING
// WIMPY EASY NORMAL TOUGH ELITE
{ -20, -10, 0, 10, 20 }, // DIFF_ENEMY_EQUIP_MOD
{ -10, -5, 0, 5, 10 }, // DIFF_ENEMY_TO_HIT_MOD
{ -2, -1, 0, 1, 2 }, // DIFF_ENEMY_INTERRUPT_MOD
{ 50, 65, 80, 90, 95 }, // DIFF_RADIO_RED_ALERT
{ 4, 6, 8, 10, 13 } // DIFF_MAX_COVER_RANGE
};
// max with 0 to prevent this being a bonus, for JA2 it's just a penalty to make early enemies easy
// CJC note: IDIOT! This should have been a min. It's kind of too late now...
// CJC 2002-05-17: changed the max to a min to make this work.
iChance += __min( 0, gbDiff[ DIFF_ENEMY_TO_HIT_MOD ][ SoldierDifficultyLevel( pSoldier ) ] );
按代码来看命中最多会减10
12)射击者被气体影响,减50
13)正接受包扎减20
14)每个shock点减5
再增加一条
如果射击者的枪上有增程枪管,并且在这次射击中枪管会脱落,命中减30
15)激瞄加成,状态50%无加成,100%加20,状态低于50%反而带来惩罚,0%减20
应该在狙瞄后面
火箭枪和自动火箭枪自带激瞄,激瞄状态等于枪的状态
激瞄加成为 (激瞄状态-50)x20/50 负数则变为惩罚
16)太阳镜缩短视距10%
缩短视距,不是命中,视距在后面影响命中
17)狙瞄在距离大于6格时,每个AP可减少20%视距,最大减少80%,此效果要乘以狙瞄状态百分比
不花费AP瞄准时无效,6格内无效(包括6格),狙瞄影响的是视距,不是命中,视距减少效果如下:
20x瞄准花费的APx(距离-60)/100x狙瞄状态/100
如果视距小于1,强制为1
18)射头每格受3点惩罚,射腿每格受1点惩罚
不是每格,而是每10点视距,不足10点的不计算
19)射程惩罚:(最大射程-(实际距离×3))/1.7 (此公式中距离单位为格)
再增加一条
如果射击者为坦克的话并且 距离/10 小于26的话命中减少 2x(26-(距离/10))
20)视野惩罚:3×(9-视距)
如果视距为0,减少80,否则的话如下
// Effects based on aiming & sight
// From for JA2.5: 3% bonus/penalty for each tile different from range NORMAL_RANGE.
// This doesn't provide a bigger bonus at close range, but stretches it out, making medium
// range less penalized, and longer range more penalized
iChance += 3 * ( NORMAL_RANGE - iSightRange ) / CELL_X_SIZE;
命中增加 3x(90-视距)/10
21)由地面射击屋顶的人减25
22)屋顶向下射击加15,屋顶技能再加15
专家再加15
在射手瞄准的格内查找与射手同一层的士兵,如果找到
23)目标蹲着,则实际距离大于8格减20,距离大于2格的每大一格减3
如果射击者是坦克且距离小于12格时,每少一格命中减13
24)目标趴着,距离大于2格的每大一格减3,最大减40
如果射击者是坦克且距离小于12格时,每少一格命中减25
25)目标站着,射击者趴着,则小于5格有惩罚,此时打腿惩罚小,打头惩罚大,距离近惩罚大,距离远惩罚小,4格打头无惩罚,3格打头惩罚10,1格惩罚30。
等于5格时也有惩罚
惩罚计算如下
iChance -= (5 - ubAdjAimPos - 距离 / 10) x 10;
ubAdjAimPos为瞄准的部位,瞄头时为1,瞄身体时为2,瞄腿时为3,此时瞄其他部位时视为瞄身体
26)目标移动越多惩罚越大,最大30
27)目标闪躲惩罚:目标AGI/5+目标等级×2,此惩罚在目标蹲着时减1/3,目标趴着时减2/3,最后如果此惩罚值低于射手AGI/5+射手等级×2,则惩罚取消。
惩罚是目标AGI/5+目标等级x2,蹲着减1/3,趴着减2/3
奖励是射手AGI/5+射手等级x2,如果目标是坦克或射手是怪物女王,奖励减半
如果惩罚大于奖励,则命中减少(惩罚-奖励)
如果奖励大于惩罚,不奖励也不惩罚
在射手瞄准的格内未找到与射手同一层的士兵且射手是坦克且距离小于12格,每少1格命中减25
28)负伤惩罚,生命值只有一半的人会有1/3的惩罚,最大惩罚为2/3,如果负伤被包扎了,则惩罚加大,生命值只有一半的人将会有1/2的惩罚,最后,负伤惩罚可以被佣兵级别降低,1级不降,然后每高一级降10%,10级佣兵只受到10%的负伤惩罚。
29)气值不满有惩罚,惩罚百分比(100-气值)/200,此惩罚可被DEX降低,DEX为10不降,dex为100只受10%惩罚。
惩罚为 命中x(100-气值)/200
Dex修正为 惩罚x(110-Dex)/100
最后命中减去Dex修正
30)实际距离超过最大射程减半!
增加一条
如果视距大于视线范围,命中减半
31)命中率最后被强制归到1到99之间
如果命中小于1且射手是坦克,则命中为0,否则命中为1
如果命中大于99,强制为99
sdjk回复:谢谢补充,有些东西是为了叙述起来简洁,不至于烦琐得吓走太多人而故意省略的,如喝酒和坦克等,一些我认为无关紧要的公式也没有写,只是把典型值列出供参考,现在好了,你给了读者一个新选择。
另,我文中的距离统一是“格”,也就是10个距离单位,因为距离单位对玩家来说是没有直观意义的,所以都按照格来说了。你纠正的一些公式,其实只是距离单位不同而已。
屋顶作战技能应该是没有专家级的