由battle_ai.c研究关于怪物的战斗AI在enemy1.txt的设定

这裡的AI不是指练功的时你的宠物的AI
而是野外战斗、任务战斗NPC的AI

以下是程式码的部分

#define B_AI_NORMAL_ATTACKOPTION "at" //普通攻击设定
#define B_AI_NORMAL_GUARDOPTION "gu" //防御设定
#define B_AI_NORMAL_MAGICOPTION "ma" //魔法设定
#define B_AI_NORMAL_ESCAPEOPTION "es" //逃脱设定
#define B_AI_NORMAL_WAZAOPTION "wa" //使用技能设定
#ifdef _ENEMY_ATTACK_AI
  #define B_AI_NORMAL_RANDAOPTION "rn" //随机设定
  #define B_AI_NORMAL_RANDOMOPTIONNUM 1 //rn 可以设定的参数有1个
#endif

#define B_AI_NORMAL_ATTACKSUBOPTIONNUM 3 //at 可以设定的参数有3个
#define B_AI_NORMAL_GUARDSUBOPTIONNUM 1 //gu 可以设定的参数有1个
#define B_AI_NORMAL_MAGICSUBOPTIONNUM 1 // ma 可以设定的参数有1个
#define B_AI_NORMAL_ESCAPESUBOPTIONNUM 1 //es 可以设定的参数有1个
#define B_AI_NORMAL_WAZASUBOPTIONNUM 7 //wa 可以设定的参数有7个


举个例来说 萨登,at:2;4;4|gu:0|es:0|rn:|wa:3;2;1;2;0;0;0;

at = 普通攻击设定
at:2;4;4 => at[0] = 2、at[1] = 4、at[2] = 4

//at[0] 设定值可以是0与正整数,当at[0]=0的时候,几乎就是不进行普通攻击,而数字越高越容易进行普通攻击 (若搭配其他参数设定的话)

//at[1]可以用的参数设定是 1~4
#define B_AI_NORMAL_TARGET_ALL 1 //不分玩家人物或者宠物,没有优先攻击
#define B_AI_NORMAL_TARGET_PLAYER 2 //先攻击玩家人物
#define B_AI_NORMAL_TARGET_PET 3 //先攻击玩家宠物
#ifdef _ENEMY_ATTACK_AI
  #define B_AI_NORMAL_TARGET_LEADER 4 //先攻击玩家队长人物
#endif

//at[2]可以用的参数设定是 1~7
//会从at[1]所选出的种类再由以下条件选择先攻击谁
#define B_AI_NORMAL_SELECT_RANDOM 1 //随机攻击一个
#define B_AI_NORMAL_SELECT_HP_MAX 2 //先攻击血最多的
#define B_AI_NORMAL_SELECT_HP_MIN 3 //先攻击血最少的
#ifdef _ENEMY_ATTACK_AI
  #define B_AI_NORMAL_SELECT_STR_MAX 4 //先攻击力量最高的
  #define B_AI_NORMAL_SELECT_DEX_MAX 5 //先攻击敏捷最高的
  #define B_AI_NORMAL_SELECT_DEX_MIN 6 //先攻击敏捷最低的
  #define B_AI_NORMAL_SELECT_ATT_SUBDUE 7 //先攻击有利的属性
#endif

gu = 

 

ma = 

 

es = 

 

wa = 

 

rn = 随机的设定

rn 可以设定1个参数,共0、1两种,不设定的话预设是1
当at[2]设定的对象都没了,攻击对象要怎麽随机
 

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。