标题: 《三国志孔明传》分析结果, 之前的包括后面的都塞在这儿吧
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-14 01:39 资料 个人空间 短消息 只看该作者 QQ
《三国志孔明传》分析结果

使用工具:

1、OllyDbg(设置断点来探查算法在程序里的位置)
2、IDA Pro with Hex-Rays(查看每个函数的C语言代码)

一、物理攻击全分析

原作者:ctermiii
http://www.xycq.net/forum/thread-213636-1-1.html

QUOTE:

// 基本攻击伤害函数(thiscall类成员函数)
// 入口地址:0x0042A4AD
// 参数1:this=攻击方类指针
// 参数2:a2=防御方类指针
// 参数3:a3=是否执行攻击,为0表示计算行动价值时使用
unsigned int __thiscall sub_42A4AD(structADD *this, int a2, int a3)
{
  int Def_BASNo; // eax@1
  unsigned int result; // eax@2
  unsigned __int8 v5; // ST30_1@3
  unsigned __int8 v6; // ST24_1@3
  int v7; // [sp+Ch] [bp-28h]@10
  structADD *pAttack; // [sp+10h] [bp-24h]@1
  unsigned int fixedD; // [sp+14h] [bp-20h]@3
  structADD *pDefense; // [sp+18h] [bp-1Ch]@3
  unsigned int Hurt; // [sp+24h] [bp-10h]@8
  unsigned __int8 Def_ADDNo; // [sp+28h] [bp-Ch]@1
  unsigned int fixedA; // [sp+30h] [bp-4h]@3

  pAttack = this;
  Def_BASNo = sub_41EF0C(a2);                   // 防御方人物编号
  Def_ADDNo = sub_429061(Def_BASNo);            // 防御方战场编号
  if ( Def_ADDNo == 255 )
  {
    result = 0;
  }
  else
  {
    pDefense = &dword_46C098[Def_ADDNo];        // 防御方战场类指针
    v5 = Get_Element_onCell(pAttack);           // 攻击方地形因素
    v6 = Get_Element_onCell(pDefense);          // 防御方地形因素
    fixedA = v5 * Get_AVal(pAttack) / 10;       // 攻击力修正值
    fixedD = v6 * Get_DVal(pDefense) / 10;      // 防御力修正值

    // a3为1表示执行攻击时,为0表示计算行动价值时
    if ( random(fixedA) >= fixedD / 10 || !a3 || Get_statusADD(pDefense, statusChaos) )
    {
      // 基本伤害=攻击力修正-防御力修正/2
      if ( (fixedD + 1) >> 1 < fixedA )
        Hurt = fixedA - (fixedD >> 1);
      else
        Hurt = 1;

      // 根据防御方兵种来修正基本伤害
      // 如果修正后基本伤害为0,则判为攻击未命中
      v7 = Get_Arms(pDefense) - 9;
      switch ( v7 )
      {
        case 0:                                 // 战车系
        case 1:
        case 2:
        case 27:                                // 象兵团
          Hurt = 3 * Hurt >> 2;                 // 修正为75%
          break;
        case 18:                                // 运粮队
        case 19:                                // 物资队
        case 20:                                // 军乐队
          Hurt = 3 * Hurt >> 1;                 // 修正为150%
          break;
        case 21:                                // 南蛮兵
        case 22:                                // 南蛮骑兵
        case 26:                                // 羌族兵
        case 30:                                // 北狄兵
          Hurt >>= 1;                           // 修正为50%
          break;
        case 25:                                // 藤甲兵
          Hurt = 1;                             // 基本伤害强判为1
          break;
        default:                                // 其他兵种无修正
          break;
      }
      result = Hurt;
    }
    else
    {
      result = 0;                               // 判定命中失败,攻击未命中
    }
  }
  return result;
}

[ 本帖最后由 阿尔法孝直 于 2016-2-1 03:20 编辑 ]


精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-14 02:57 资料 个人空间 短消息 只看该作者 QQ
二、策略道具全分析

1、攻击性策略与道具
http://www.xycq.net/forum/thread-213692-1-1.html
原作者:ctermiii

2、查看类策略与道具

如果是策略,则要计算成功率:

计算一个0~(攻击方智力-1)的随机数,如果
随机数大于等于防御方智力/4,那么策略成功。
但是如果防御方具有减轻策略损伤的状态,那么要再算一次随机数,两次都大于等于防御方智力/4,策略才能成功。

查看策略:A=8,B=5
侦察策略:A=15,B=11
谍报策略:A=30,B=11
查看书:A=5,B=4
侦察书:A=11,B=6
谍报书:A=20,B=11

计算一个0~(B-1)的随机数,查看类的损伤就是
A+随机数。

如果防御方具有减轻策略损伤的状态,那么计算结果要除以2。

最后,损伤不能超过防御方剩余策略值。

3、压迫类、骂声类的策略与道具

如果是策略,则要计算成功率:

计算一个0~(攻击方智力-1)的随机数,如果
随机数大于等于防御方智力/3,那么策略成功。
但是如果防御方具有减轻策略损伤的状态,那么要再算一次随机数,两次都大于等于防御方智力/3,策略才能成功。

最后的效果:
a、双降,能力变为原来的2/3
b、单降,能力变为原来的4/5
c、单升,能力变为原来的6/5
d、双升,能力变为原来的3/2

4、假情报类策略与道具

如果是策略,则要计算成功率:

计算一个0~(攻击方智力-1)的随机数,如果
随机数大于等于防御方智力/3,那么策略成功。
但是如果防御方具有减轻策略损伤的状态,那么要再算一次随机数,两次都大于等于防御方智力/3,策略才能成功。

如果成功,则混乱。

5、反间类策略与道具

如果是策略,则要计算成功率:

计算一个0~(攻击方智力-1)的随机数,如果
随机数大于等于防御方智力/3,那么策略成功。
但是如果防御方具有减轻策略损伤的状态,那么要再算一次随机数,两次都大于等于防御方智力/3,策略才能成功。

如果成功,每回合耐久力减少10%,直到撤退或状态恢复。

6、牵制、止步策略与道具

如果是策略,则要计算成功率:

计算一个0~(攻击方智力-1)的随机数,如果
随机数大于等于防御方智力/5,那么策略成功。
但是如果防御方具有减轻策略损伤的状态,那么要再算一次随机数,两次都大于等于防御方智力/5,策略才能成功。

如果成功,攻击速度(牵制)或移动速度(止步)减半。

7、补给类策略与道具

恢复豆、援队书:使用者智力/10+100
恢复麦、援部书:使用者智力/5+300
恢复米、援军书:2*使用者智力/5+500
恢复肉、援国书:补满
小补给、援队:使用者智力/2+20
中补给、援部:4*使用者智力/5+40
大补给、援军:11*使用者智力/10+60
全补给、援国:补满

恢复后的剩余耐久力不能超过最大耐久力。

8、策略恢复类策略与道具

进言、药:  恢复20策略值
献策、中药: 恢复40策略值
施策、华佗药:恢复80策略值

不能给物资队恢复策略。

9、状态恢复类策略与道具

苏醒书、觉醒:混乱状态恢复
恢复书、康复:耐久力每回合减少状态恢复
释放书、解放:攻击速度减半状态恢复
轻功书、轻功:移动速度减半状态恢复

10、奋起类、坚固类策略与道具

暂时提高攻击力、防御力,最后的效果同3

11、对策、回归、升格策略与道具

对策:减轻策略损伤
回归:恢复回合结束的状态
升格:兵种提升

升格的道具有:长兵器指南书、近卫兵心得 等等。

12、封策策略与道具

如果是策略,则要计算成功率:

计算一个0~(攻击方智力-1)的随机数,如果
随机数大于等于防御方智力/3,那么策略成功。
但是如果防御方具有减轻策略损伤的状态,那么要再算一次随机数,两次都大于等于防御方智力/3,策略才能成功。

如果成功,则不能使用策略。

13、能力提升类道具

武勇种、智谋种、仁爱种、精神种
分别增加
武力、智力、统率力、策略值上限
0~3的随机数+2

武勇果、智谋果、仁爱果、精神果
分别增加
武力、智力、统率力、策略值上限
0~5的随机数+5

对应能力不能超过255。

根性种增加耐久力上限
0~10的随机数+15

根性果增加耐久力上限
0~20的随机数+30

耐久力上限最大1000。

14、经验种、经验果

http://www.xycq.net/forum/thread-213663-1-1.html

的8楼,原作者godtype

15、武器、防具、车马、兵书



[ 本帖最后由 阿尔法孝直 于 2010-8-14 03:36 编辑 ]


精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-14 03:16 资料 个人空间 短消息 只看该作者 QQ
三、经验获得全分析

http://www.xycq.net/forum/thread-213663-1-1.html
原作者:godtype

四、自动恢复全分析

1、处在恢复地形或者持有兵书的部队,每回合可以自动恢复部分耐久力。且两个条件都满足的话,恢复可以叠加。

恢复量为:

(0~4的随机数+地形恢复效果)*最大耐久力/100+兵书恢复效果*最大耐久力/100

地形恢复效果:
兵营5
村庄10
鹿砦15
关隘20
城池25

兵书恢复效果(若一支部队携带多本兵书,则只计算效果最高的一本):
三略10
六韬15
孟德新书20
孙子兵法25

恢复后的耐久力不能超过最大耐久力。

2、处在军乐队周围的部队每回合可以恢复策略值
恢复量=军乐队的智力/10+1

物资队的策略值不能恢复;
我军的军乐队不能给敌军恢复策略值,反之亦然。

3、每回合自动恢复状态

a、如果是好的状态(攻防上升、策略损伤减轻)

恢复某一个状态(去掉策略损伤减轻,去掉一阶攻防上升,二阶攻防上升降为一阶)要求

计算一个0~[(智力+防御力)/100+20-1]的随机数,如果小于等于A,则恢复该状态。

其中A的取值与兵种类型有关:
军师系、运粮队、物资队、军乐队、皇帝、都督、幻术师:1
步兵系、弓兵系、战车系、炮车系:2
骑兵系、弓骑兵系、贼兵系、武术家系:3
少数民族兵种、动物兵团:4

b、如果是坏的状态(攻防下降、混乱、耐久力每回合减少等)

恢复某一个状态(去掉不良状态,去掉一阶攻防下降,二阶攻防下降降为一阶)要求

计算一个0~[20-(智力+防御力)/100-1]的随机数,如果小于等于B,则恢复该状态。

其中B的取值与兵种类型有关:
军师系:10
运粮队、物资队、军乐队、皇帝、都督、幻术师:4
步兵系、弓兵系、战车系、炮车系:3
骑兵系、弓骑兵系、贼兵系、武术家系:2
少数民族兵种、动物兵团:1

注意:
1、一次计算只能恢复一种状态。如果是N个状态则要计算N次。

2、由于每个部队有3个状态变量,分别是:攻击力升降、防御力升降、其他状态。
在每次附上状态后,所属状态的变量第6位(最右边为第0位,最左边为第7位)被置位。
于是判断是否恢复之前,要先判断该位是否为1。若为1则该位清零,跳过判断过程。若为0,才能进行判断。
也就是说,附上状态后,至少要隔一个回合才能恢复(无论要恢复的与附上的是否是同一种状态)。

[ 本帖最后由 阿尔法孝直 于 2011-2-15 01:59 编辑 ]
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-14 03:23 资料 个人空间 短消息 只看该作者 QQ
五、天气算法

天气代码:00、01、02晴,03云,04、05雨

A=0~5的随机数
B=存储天气的变量

如果A>B,则B加1;如果A<B,则B减1。

如果B=5,则B=0;如果B=0,则B=5。

注:孔明传的天气算法与英杰传完全一致。
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-14 03:24 资料 个人空间 短消息 只看该作者 QQ
六、武将基本数据及战场数据的内存

从0x4556E8开始,每个武将基本数据占54个字节

+00 2字节 武将代码
+02 4字节 未知
+06 7字节 武将姓名(虽然一个汉字是2个字节,但是字符串要以0x00结尾)
+0D 1字节 未知
+0E 2字节 未知
+10 4字节 未知
+14 2字节 未知
+16 2字节 头像编号
+18 2字节 未知
+1A 1字节 所属君主
+1B 1字节 武力
+1C 1字节 统率力
+1D 1字节 智力
+1E 2字节 最大耐久力
+20 2字节 未知
+22 1字节 最大策略值
+23 1字节 未知
+24 1字节 兵种
+25 1字节 等级
+26 1字节 经验值
+27 15字节 15个道具


从0x46C098开始,每个武将战场附加数据占23个字节

+00 2字节 人物代码
+02 2字节 未知,但是改成其他值会出错退出
+04 1字节 战场编号
+05 1字节 战场横坐标(左起为0,FF表示伏兵)
+06 1字节 战场纵坐标(上起为0,FF表示伏兵)
+07 1字节 仇人战场编号,FF表示没有仇人
+08 1字节 目标X坐标
+09 1字节 目标Y坐标
+0A 1字节 行动顺序编号,00为最先行动的。
+0B 1字节 00=未出场,01=伏兵,02=正常,03=撤退
+0C 1字节 二进制,10=朝向(该位为1则朝右),20=全屏移动,40=形象不动(在移动动作显示结束时写入),80=回合结束
+0D 1字节 AI,若AI≠07则为友军或敌军
+0E 1字节 在移动过程中(即显示移动动作时)的方向,00=上,01=右,02=下,03=左
+0F 4字节 剩余耐久力(实际只有2字节)
+13 1字节 剩余策略值
+14 1字节 攻击力升降属性:00=双升,01=单升,02=正常,03=单降,04=双降
+15 1字节 防御力升降属性:同上
+16 1字节 状态(二进制):01=移动力下降,02=攻击速度下降,04=封策,08=对策,10=混乱,20=耐久力每回合减少,40=刚附上状态,下一回合消失。

[ 本帖最后由 阿尔法孝直 于 2016-3-21 16:21 编辑 ]
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-16 02:30 资料 个人空间 短消息 只看该作者 QQ
七、AI类型


00=(X,Y) 移动/n 移动:
若移动范围+攻击范围内有我军就选择行动价值最高的动作,否则:
1、当仇人代码为n=FF时,朝着(X,Y)坐标移动。
2、当仇人代码为n=FF时,且到达了(X,Y)坐标,则AI变为03=(X,Y) 待命。
3、当仇人代码为n=00~2C且仇人还在场时,朝着战场n号人物移动。
4、若仇人代码为n=00~2C且仇人消失,则AI变为01=攻击最近敌。

01=攻击最近敌:
若移动范围+攻击范围内有我军就选择行动价值最高的动作,否则向最近的我军移动。

02=(X,Y) 不动/n 不动:
无论攻击范围内是否有我军都会选择行动价值最高的动作,但是不会移动。
X,Y,n都无意义。(不确定)

03=(X,Y) 待命/n 待命:
若移动范围+攻击范围内有我军就选择行动价值最高的动作,否则不会移动。
X,Y,n都无意义。(不确定)

04=(X,Y) 无攻击移动/n 无攻击移动:
只会朝着目标坐标(X,Y)移动(若仇人代码为FF)或战场n号人物移动,不会攻击或使用策略。
1、当仇人代码为n=FF时,且到达了(X,Y)坐标,则AI变为03=(X,Y) 待命。
2、若仇人代码为n=00~2C且仇人消失,则AI变为01=攻击最近敌。

07=键入
若我方AI≠07,则为友军。
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-16 02:40 资料 个人空间 短消息 只看该作者 QQ
八、行动价值概述

行动价值是一个反映一支电脑操控的部队行动准则的数字。
每个可能的走位及每个可能的动作都会计算其对应的行动价值。
电脑操控的部队会选择行动价值最高的动作。

基本规则:
1、物理攻击和策略的行动价值相等时,优先采用物理攻击。
2、若存在行动价值相等的多个策略,优先采用策略编号小的策略。
3、物理攻击或使用策略,若存在行动价值相等的多个目标时,按照下图优先级(序号小的优先考虑):


图1:适用于普通、高级策略、弩兵、连弩兵、弩骑兵、连弩骑兵、炮车系(粉红色区域)



图2:适用于普通、中级策略、弓兵、弓骑兵


[ 本帖最后由 阿尔法孝直 于 2010-8-19 02:53 编辑 ]
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-16 03:00 资料 个人空间 短消息 只看该作者 QQ
九、物理攻击行动价值

0、使用攻击伤害函数计算一次伤害。注意:
0.1、计算伤害时,计算攻击方地形加成使用的是攻击方当前坐标而不是攻击时的坐标。
0.2、之后与等级相关的随机数加成与连击相关的算法,不进行计算。

1、如果攻击致命(攻击伤害>=防御方剩余耐久力),则行动价值=75。如果防御方还是象或蛇兵团,则行动价值再加5。

2、如果攻击不能致命,那么:
2.1、如果攻击伤害<防御方最大耐久力*10%,那么:
2.1.1、如果防御方还有>=41%的耐久力,那么:
    如果攻击方AI≠1,或者攻击方是三大后勤兵种,那么行动价值=0。否则行动价值=10。
2.1.2、如果防御方还有<41%的耐久力,那么:
    行动价值=16

2.2、如果攻击伤害>=防御方最大耐久力*10%,那么:
  行动价值=16。如果防御方还是象或蛇兵团,则行动价值再加4。

3、如果防御方混乱,行动价值再加8。

4、如果行动价值>0,且防御方是我军或敌军主将,那么行动价值加10。

5、如果行动价值>0,且防御方是我军或敌军其他的有名字的武将,那么行动价值加6。

6、如果上述计算的行动价值<75,且攻击方是军师系、后勤、幻术师,则行动价值=0。

7、如果攻击方是象兵团,则周围8格有n个可以攻击到的(包括攻击点本身),行动价值再加 10*n。

8、如果攻击方是蛇兵团,则周围4格有n个可以攻击到的(包括攻击点本身),行动价值再加 10*n。

9、物理攻击行动价值最低为1。

[ 本帖最后由 阿尔法孝直 于 2016-3-2 20:00 编辑 ]
精华帖
顶部
性别:男-离线 lewulezo


Rank: 4
组别 校尉
级别 仁勇校尉
功绩 27
帖子 158
编号 58100
注册 2006-1-22
来自 上海


发表于 2010-8-16 17:50 资料 文集 短消息 只看该作者
强力分析贴,慢慢研究中。
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-19 00:23 资料 个人空间 短消息 只看该作者 QQ
十、策略行动价值

(一)攻击性策略
1、如果受计方地形符合条件,且不是雨天(如果是火计),并且100-100*受计方智力/施计防智力/5>=50,那么:
 1.1、先用策略伤害函数计算一次对中心点伤害。
 1.2、如果致命(策略伤害>=受计方剩余耐久力),行动价值=80。
 1.3、如果不致命,行动价值=20。
 1.4、如果是大策略,那么中心点周围4格有n个人(n>=1),行动价值再加10*n。
 1.5、如果是大策略,那么中心点周围4格没有人,行动价值减4。
2、如果不满足第1步需要的条件,那么行动价值=0。

(二)查看类
如果受计方剩余策略值>0,且100-100*受计方智力/施计防智力/4>=50,那么行动价值=17;否则行动价值=0。

(三)压迫、威压
1、如果受计方攻击力已经是双降了,行动价值=0。
2、如果受计方攻击力不是双降,那么
 如果 100-100*受计方智力/施计防智力/3>=50,则行动价值=18;否则行动价值=0。
3、如果是威压,那么以受计方坐标为中心点,周围4格有n个人(n>=1),行动价值再加10*n。
4、如果是威压,那么中心点周围4格没有人,行动价值减4(最低为0)。

(三)骂声、挑拨
1、如果受计方防御力已经是双降了,行动价值=0。
2、如果受计方防御力不是双降,那么
  如果 100-100*受计方智力/施计防智力/3>=50,则行动价值=19;否则行动价值=0。
3、如果是挑拨,那么以受计方坐标为中心点,周围4格有n个人(n>=1),行动价值再加10*n。
4、如果是挑拨,那么中心点周围4格没有人,行动价值减4(最低为0)。

(四)假情报、伪兵
1、如果受计方剩余耐久力不足40%,行动价值=0。
2、如果受计方剩余耐久力>=40%,那么
  如果 100-100*受计方智力/施计防智力/4>=50,则行动价值=22;否则行动价值=0。
3、如果是伪兵,那么以受计方坐标为中心点,周围4格有n个人(n>=1),行动价值再加10*n。
4、如果是伪兵,那么中心点周围4格没有人,行动价值减4(最低为0)。
5、如果受计方已经混乱,行动价值=0。

(五)反间、流言
1、如果受计方剩余耐久力不足40%,行动价值=0。
2、如果受计方剩余耐久力>=40%,那么
  如果 100-100*受计方智力/施计防智力/3>=50,则行动价值=20;否则行动价值=0。
3、如果是流言,那么以受计方坐标为中心点,周围4格有n个人(n>=1),行动价值再加10*n。
4、如果是流言,那么中心点周围4格没有人,行动价值减4(最低为0)。
5、如果受计方已经有耐久力每回合减少的状态,行动价值=0。

(六)牵制
1、如果受计方兵种攻击速度>=8(武术家、大武术家、猛虎兵团),那么行动价值=23,否则行动价值=0。
2、如果受计方已经有攻击速度减半的状态,行动价值=0。

(七)止步
如果受计方没有移动速度减半的状态,行动价值=25,否则行动价值=0。

(八)封策
如果受计方是文官(军师系、后勤、幻术师)且没有策略被封的状态,行动价值=24,否则行动价值=0。

(九)耐久力恢复
1、计算策略威力基数:
  小补给、援队=0;
  中补给、援部=1;
  大补给、援军=2;
  全补给、援国=3。
2、如果受计方剩余耐久力<50%,那么:
 2.0、行动价值=30。
 2.1、如果不是全补给或援国,期望值=施计方等级+200*(威力基数+1)
 2.2、如果是全补给或援国,期望值=受计方最大耐久力。
 2.3、如果恢复了期望值之后满血,则
   期望值=受计方最大耐久力-剩余耐久力;
   行动价值加2。
 2.4、如果 (受计方最大耐久力-剩余耐久力)/期望值<=60%,则行动价值减4。(从逻辑上看,该步骤永远不可能被执行,因为条件根本无法满足。)
 2.5、如果受计方剩余耐久力<=20%,那么行动价值加4。
 2.6、如果对自己使用,行动价值加1。
3、如果受计方剩余耐久力>=50%,那么行动价值=0。
4.1、如果是大策略,那么自己周围8格有n个不满血的人(n>=1),行动价值再加10*n。
4.2、如果是大策略,那么自己周围8格没有不满血的人,行动价值减4。

(十)策略值恢复
1、满足以下条件之一时,行动价值=0:
 1.1、受计方剩余策略值>=50%。
 1.2、受计方是物资队。
 1.3、受计方是施计方(例如皇帝会施策,但是却不能对自己使用)。
 1.4、受计方最大策略值=0(例如骑兵系、弓骑兵系、武术家系)。
2、上述条件皆不满足时:
 2.0、行动价值=28。
 2.1、计算恢复量,即:进言20,献策40,施策80。
 2.2、如果恢复了之后满策略值,则行动价值加2。
 2.3、如果 (受计方最大策略值-剩余策略值)/恢复量<=60%,则行动价值减4。
 2.4、如果受计方剩余策略值<=20%,那么行动价值加4。

(十一)觉醒
如果受计方混乱,行动价值=32,否则行动价值=0。

(十二)康复
如果受计方中了耐久力每回合减少状态,行动价值=31,否则行动价值=0。

(十三)解放
如果受计方中了攻击速度减半状态,行动价值=27,否则行动价值=0。

(十四)轻功
如果受计方中了移动速度减半状态,行动价值=26,否则行动价值=0。

(十五)奋起、鼓舞
1、如果受计方攻击力已经是双升了,行动价值=0。
2、如果受计方攻击力是单升或正常,那么
  受计方不是文官,行动价值=12;否则行动价值=0。
3、如果受计方攻击力是单降,行动价值=29。
4、如果受计方攻击力是双降,行动价值=31。
5、如果是鼓舞,那么以受计方坐标为中心点,周围4格有n个攻击力不是双升的人(n>=1),行动价值再加10*n。
6、如果是鼓舞,那么中心点周围4格没有攻击力不是双升的人,行动价值减4(最低为0)。
7、如果对自己使用,行动价值减1。
8、如果施计方的移动范围+攻击范围内没有敌人,那么行动价值=0。

(十六)坚固、强阵
1、如果受计方防御力已经是双升了,行动价值=0。
2、如果受计方防御力是单升或正常,那么
  受计方不是文官,行动价值=11;否则行动价值=0。
3、如果受计方防御力是单降,行动价值=27。
4、如果受计方防御力是双降,行动价值=29。
5、如果是强阵,那么以受计方坐标为中心点,周围4格有n个防御力不是双升的人(n>=1),行动价值再加10*n。
6、如果是强阵,那么中心点周围4格没有防御力不是双升的人,行动价值减4(最低为0)。
7、如果对自己使用,行动价值减1。
8、如果施计方的移动范围+攻击范围内没有敌人,那么行动价值=0。

(十七)对策
如果受计方没有减轻策略伤害的状态并且施计方的移动范围+攻击范围内有敌人,行动价值=13,否则行动价值=0。

(十八)回归
1、如果受计方回合结束,行动价值=15,否则行动价值=0。
2、如果对自己使用,行动价值=0。

(十九)升格
行动价值=0。

最后如果行动价值>0,那么:
1、如果受计方是我军或敌军主将,那么行动价值加10。
2、如果受计方是我军或敌军其他的有名字的武将,那么行动价值加6。
3、如果行动价值超过255,那么行动价值=255;如果行动价值低于0,那么行动价值=0。
4、如果受计方是仇人,行动价值加10。
5、有些变量会控制电脑操控部队策略的使用:
  (1)0x46A6DA处的值为0(初级难度),则:
    禁止使用对策、封策;
    禁止使用12~24号策略;
    步兵系、弓兵系、羌族兵不使用火系策略;
    禁止在受计方攻防状态为单升或正常时使用奋起、鼓舞、坚固、强阵。
  (2)0x46A6DA处的值为1(中级难度),则:
    禁止使用对策、封策;
    禁止在受计方攻防状态为单升或正常时使用奋起、鼓舞、坚固、强阵。

---------------------------------------------------------------

这样就可以看出使用策略的大致优先级了(只考虑单体的策略):

0、攻击类(致命) 80
1、觉醒 32
2、康复 31
3、奋起(双降时) 31
4、补给类 约30
5、奋起(单降时) 29
6、坚固(双降时) 29
7、进言类 28
8、解放 27
9、坚固(单降时) 27
10、轻功 26
11、止步 25
12、封策 24
13、牵制 23
14、假情报 22
15、攻击类(不致命) 20
16、反间 20
17、骂声 19
18、压迫 18
19、查看类 17
20、回归 15
21、对策 13
22、奋起(普通) 12
23、坚固(普通) 11

[ 本帖最后由 阿尔法孝直 于 2015-11-9 10:56 编辑 ]
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-23 02:40 资料 个人空间 短消息 只看该作者 QQ
十一、坐标附加行动价值

战场上每个点都有其附加的行动价值,具体是:

0、附加行动价值=0。(赋初值)
1、如果部队耐久力较低(有名字的部队耐久力小于等于40%或没名字的部队耐久力小于等于20%),则移动范围内的恢复地形的附加行动价值+50.
2、若不是恢复地形,且地形加成>10,则附加行动价值加上 地形加成-10。
3、若是恢复地形,则附加行动价值加上 该地形耐久力恢复率/(5%)+3。
4、加上该附加行动价值后,总行动价值仍旧不能超过255。
5、在高级难度下,对于周围4格至少存在1个敌军的格子,该格行动价值减1。(最低为0)

[ 本帖最后由 阿尔法孝直 于 2011-2-15 00:34 编辑 ]
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-8-24 02:31 资料 个人空间 短消息 只看该作者 QQ
十二、友军/敌军部队行动的顺序(以耐久力自动恢复后为准)

第1优先级:处于恢复地形的部队按照部队列表的顺序行动;
第2优先级:耐久力不多(有名字武将耐久力小于等于40%,无名小兵耐久力小于等于20%)的部队按照部队列表的顺序行动;
第3优先级:剩余部队的按照部队列表的顺序行动。

注:如果有人用了回归,则在此人执行完毕之后,按照上面的规则重新排序,剩下所有未执行的部队按照这个重排的顺序行动。

[ 本帖最后由 阿尔法孝直 于 2011-2-15 03:48 编辑 ]
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-9-8 16:16 资料 个人空间 短消息 只看该作者 QQ
十三、伏兵出场位置被占时,出场的实际位置

如图,位置0为原先出场的坐标,如果位置n有人或不可移动地形或边界,则向位置n+1搜索,直到找到空位。

出于算法速度考虑,系统只能提供如果60个空位。如果这60个都被占,则系统出错。

[ 本帖最后由 阿尔法孝直 于 2011-1-6 11:59 编辑 ]


图片附件: 伏兵.jpg (2011-1-6 11:59, 49.94 K)

精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2010-11-23 12:35 资料 个人空间 短消息 只看该作者 QQ
十四、与目标坐标相关(仅适用于AI=0或4的部队)

(一)如果不存在仇人
1、目标坐标行动价值加10;
2、目标坐标周围4格行动价值都加9;(如果是炮车系则不加)
3、如果行动价值最大的几个坐标中包含目标坐标,则优先进入目标坐标。

(二)如果存在仇人
1、仇人周围4格行动价值都加10;(如果是炮车系则不加)
2、仇人的上2、右2、下2、左2、以及斜的4个格子行动价值都加9。(如果是炮车系则不加)

[ 本帖最后由 阿尔法孝直 于 2010-11-23 12:40 编辑 ]
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2011-2-15 03:50 资料 个人空间 短消息 只看该作者 QQ
12L更新回归策略对行动顺序的影响。
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2011-3-3 14:17 资料 个人空间 短消息 只看该作者 QQ
十五、电脑操控部队被包围后会干什么?

如果电脑操控部队满足以下所有条件,则按照7L的图逆序(即编号最大的优先)攻击敌人,如果攻击范围内没有敌人,就什么事都不干:

1、该部队的AI为0(移动)、1(攻击最近敌)或3(休息);
2、该部队周围4格都是敌人或者不可移动地形,或者找不到任何物理攻击行动价值>0的攻击点;
3、此条为AI=0的附加条件,AI=1或3时无视该条:
a)如果该部队存在仇人,且仇人不在周围4格中的任何一格;
b)如果该部队不存在仇人,且其目标坐标不是周围四格中的任何一格。


如果不满足以上条件,则按原来的算法计算行动方式。

[ 本帖最后由 阿尔法孝直 于 2014-4-29 10:35 编辑 ]
精华帖
顶部
性别:男-离线 恋芸
(司徒飞麟)

楚国公
监管使
枢密副使
河东路经略使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
资政殿大学士(从一品)
组别 经略使
级别 大将军
好贴 3
功绩 3357
帖子 12529
编号 871
注册 2005-9-24
来自 上海
家族 轩辕学院


发表于 2011-4-13 17:56 资料 个人空间 短消息 只看该作者 QQ
太常决议,本帖加为精华,操作:某猫
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2012-3-22 01:53 资料 个人空间 短消息 只看该作者 QQ
策略行动价值部分应该有点错误,这几天重新看看代码。
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2013-10-26 17:55 资料 个人空间 短消息 只看该作者 QQ
这里补充一条,有的关卡会出现使我方或敌方大部分(注意是大部分,不一定是全军,而且混乱的人数是随机的)部队混乱的剧情(如第1关放火之后敌军全军损20血且大部分部队混乱),每支部队混乱的条件是:

计算一个0~等级+等级/2-1的随机整数,如果小于等于等级/2,那么该部队混乱。
那么:混乱概率P和等级n的关系为:

n为奇数:P=(n+1)/(3n-1)
n为偶数:P=(n+2)/(3n)

注意,每结算完一个人,要计算下一个人时,随机数都要重新计算。
精华帖
顶部
性别:男-离线 阿尔法孝直
(雀力日进)

闽国公
遂安军节度使
★★★★★★

Rank: 19Rank: 19Rank: 19Rank: 19
柱国(正二品) 轩辕春秋年度最佳(游戏人生区)
组别 节度使
级别 卫将军
好贴 2
功绩 1796
帖子 6034
编号 19070
注册 2004-10-16
家族 轩辕雀党


发表于 2015-11-5 20:15 资料 个人空间 短消息 只看该作者 QQ
补充:
敌军物资队在他能行动的时候,会给他附近剩余策略值较少的部队自动恢复策略值(这应该算是电脑作弊吧)。具体是:

在每次计算进言/献策/施策的行动价值的时候,如果行动价值大于零,则会给这支部队偷偷恢复策略值(自己不耗策略值)。举例如下:

1、敌军某个物资队行动前,附近有另外一支敌军部队(不能是物资队),其策略值为1/255。
2、物资队等级为20,剩余策略值为30。(能够使用进言、献策)
3、那支部队周围的4格,其中3格物资队能移动到(设这3格按照消耗移动力从小到大依次为A、B、C)。
4、该回合物资队的AI要能移动。(被动状态下移动范围+攻击范围要有我军部队)

那么会进行以下处理:
1、在A格进行进言的行动价值计算,10*1/255<=4成立,行动价值大于零,则该部队的策略值偷偷恢复至1+20=21。
2、在A格进行献策的行动价值计算,10*21/255<=4成立,行动价值大于零,则该部队的策略值偷偷恢复至21+40=61。
3、在B格进行进言的行动价值计算,10*61/255<=4成立,行动价值大于零,则该部队的策略值偷偷恢复至61+20=81。
4、在B格进行献策的行动价值计算,10*81/255<=4成立,行动价值大于零,则该部队的策略值偷偷恢复至81+40=121。
5、在C格进行进言的行动价值计算,10*121/255<=4成立,行动价值大于零,则该部队的策略值偷偷恢复至121+20=141。
6、在C格进行献策的行动价值计算,10*141/255<=4不成立,行动价值等于零,则该部队不再偷偷恢复策略值。
7、如果有多支部队剩余策略值很少,那么都会进行上述操作。
8、如果计算完,判断行动价值最大的操作是在B格给这支部队“献策”,那么物资队会按照正常的程序移动到B格,然后正常地执行一次献策策略。
那么最后这支部队的策略值恢复到141+40=181,并且因为执行了献策,那么物资队会被扣掉24点策略值。

另外,都督会献策,皇帝会施策。那么也会进行上述计算。

[ 本帖最后由 阿尔法孝直 于 2015-11-5 20:20 编辑 ]
精华帖
顶部
性别:未知-离线 龙行天下归心

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 7
编号 520954
注册 2015-11-7


发表于 2015-11-10 20:42 资料 短消息 只看该作者
背景音乐太好了
精华帖
顶部
性别:未知-离线 笨笨熊

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 8
编号 441463
注册 2011-8-31


发表于 2015-12-9 09:50 资料 短消息 只看该作者
武勇种、智谋种、仁爱种、精神种
分别增加
武力、智力、统率力、策略值上限
0~3的随机数+2

武勇果、智谋果、仁爱果、精神果
分别增加
武力、智力、统率力、策略值上限
0~5的随机数+5

孝直兄,这一段的代码在哪个位置?
精华帖
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2024-11-29 02:35
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.020817 second(s), 11 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP