【大段警告】:
如果想要步兵上限技能的加成数值,也跟着一起+2,应该怎么办呢?
步兵上限不能跟着+2的原因在于

:请观察骑兵和炮兵的代码,不难看出,上限技能的加成数值的设置(也是我们上文修改之处),发生在技能检验的函数(CUnitCommander::HasSkill)之后。而当兵种为步兵时,程序将从图3的黑色箭头方向检验skill_13的阵型技能,检验完毕后,它将不设置技能加成的数值,函数直接结束

(POP意味着函数结束)。
所以,当兵种为步兵时,程序不经过被我们修改过的代码

,所以阵型技能的加成数值还是1,并没有跟随着+2……
有小伙伴在这里可能会问,为什么它可以不设置加成的数值呢,这样简单粗暴地直接结束,会出问题吗?答案是不会

。因为原汇编利用了HasSkill将在有技能时返回1、无技能时返回0,返回的布尔值与技能的加成数值正好相等的巧合,所以原汇编这么写的确不会出错。
但是,注意注意!这其实不是个好习惯

!为了程序的可扩展性与易维护性,自己写的时候请勿耍这种得不偿失的小聪明!