轩辕春秋文化论坛 » 步步为营 » ctermiii 的《三国孔明传物理伤害分析》代码解读


2010-7-27 02:43 阿尔法孝直
ctermiii 的《三国孔明传物理伤害分析》代码解读

[size=3][color=seagreen]写在前面:

本帖对 ctermiii 的《三国孔明传物理伤害分析》进行代码解读,原帖地址:

[/color][/size][url=http://www.xycq.net/forum/thread-213636-1-1.html][size=3][color=seagreen]http://www.xycq.net/forum/thread-213636-1-1.html[/color][/size][/url]

[color=seagreen][size=3]《三国孔明传物理伤害分析》的每次更新,本帖都将同步更新。[/size]
[/color]
[font=黑体][size=4]一、物理攻击[/size][/font]

[indent][size=3][color=red][b]注:红字部分表示这一步运算有可能或者一定会使结果变为零。
[/b][/color][/size]
[/indent][indent]计算一个0~(攻方攻击力*攻方所在地形因素/10)-1的随机数,
[color=red]如果该随机数<防御方防御力*防御方地形因素/10/10,并且防御方没有混乱,那么物理攻击伤害=0;[/color]
否则:
[indent]1、如果(防御力*地形因素/10+1)/2>=攻击方攻击力*攻击方所在地形因素/10,那么
[indent]物理攻击伤害=1[/indent]
[indent]否则,物理攻击伤害=攻击力*地形因素/10-防御力*地形因素/10/2[/indent]2、判断防御方兵种,如果
[indent][color=red](1)防御方为战车系,那么[/color]
[indent][color=red]物理攻击伤害=3*物理攻击伤害/4[/color][/indent]
(2)防御方为运粮、物资或军乐队,那么
[indent]物理攻击伤害=3*物理攻击伤害/2[/indent]
[color=red](3)防御方为南蛮兵或南蛮骑兵,那么
[/color][indent][color=red]物理攻击伤害=物理攻击伤害/2[/color][/indent]
(4)防御方为藤甲兵,那么
[indent]物理攻击伤害=1[/indent][/indent]3、如果是[color=blue]间接攻击[1][/color],那么

[indent][color=red]物理攻击伤害=物理攻击伤害/2[/color][/indent]4、如果攻击方为象兵[color=blue]直接攻击[2][/color]且防御方没混乱,或者攻击方为蛇兵直接攻击且防御方没[color=blue]中毒[3][/color],那么:计算一个0~攻击方智力-1的随机数,如果该随机数>=防御方智力/2
[indent](如果防御方带有“对策”效果,那么再算一次随机数并比较,但仅再算一次,第二次就无视“对策”效果了),那么:
(1)如果攻击方是象兵,则防御方混乱
(2)如果攻击方是蛇兵,则防御方中毒[/indent]5、如果物理攻击伤害>0,那么:
[indent](1)计算一个0~99的随机数,如果该随机数<攻击方的攻击速度,那么发生全力一击:

[indent]物理攻击伤害=3*物理攻击伤害/2[/indent]
(2)计算一个0~攻击方等级-1的随机数A与一个0~防御方等级-1的随机数D,如果随机数A>随机数D,或者发生了全力一击,那么
[indent]计算一个0~攻击方等级-1的随机数A’,
物理攻击伤害=物理攻击伤害+(随机数A’ [color=blue]mod[/color] 6)。[color=blue][4][/color]否则
a)计算一个0~防御方等级-1的随机数D’,

[indent]物理攻击伤害=物理攻击伤害-(随机数D’ mod 6)。[/indent]
[color=red]b)如果物理攻击伤害<0,那么
[/color][indent][color=red]物理攻击伤害=0[/color][/indent][/indent]
(3)如果防御方是我军,那么:
[indent][color=red]a)如果是初级难度,那么
[/color][indent][color=red]物理攻击伤害=8*物理攻击伤害/10[/color][/indent]
b)如果是高级难度,那么
[indent]物理攻击伤害=12*物理攻击伤害/10[/indent][/indent](4)如果物理攻击伤害>防御方剩余耐久力,那么
[indent]物理攻击伤害=防御方剩余耐久力[/indent][/indent]6、执行攻击动作:
[indent]防御方剩余耐久力=防御方剩余耐久力-物理攻击伤害[/indent]
7、计算一个0~14的随机数,如果该随机数<攻击方攻击速度-防御方攻击速度+1,且防御方剩余耐久力>0,那么发生连击,返回第1步再算一次(但仅再算一次)。[/indent][/indent]
注释:
[color=blue][1]间接攻击指的是反击,或者炮车、虎兵、蛇兵、象兵的非第一人攻击。
[2]直接攻击,就是对攻击点的第一人攻击,且非反击。
[3]中毒指的是耐久力每回合减少10%的状态
[4]mod是求余运算符号,A mod B就是正整数A除以正整数B得到的余数C,0<=C<B。[/color]

[color=Silver][[i] 本帖最后由 阿尔法孝直 于 2010-7-29 23:54 编辑 [/i]][/color]

2010-7-27 12:56 ctermiii
哈,难道我的表达能力不足以让人理解吗?:hz1026:

2010-7-27 13:10 阿尔法孝直
回复 #2 ctermiii 的帖子

:hz1026:只是一些坛子的老同志习惯了像龙吟那样的文字表述而已。

2010-7-27 13:39 ctermiii
嗯,我是习惯连代码一起解释,这样有人想改,就不用问我要记录了

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.