千军破武将技能关系推测与讨论
手机阅读
假设1,按照客服所说,群技能、不可替代技能优先级高于其他技能;
假设2,群技能自身的优先级根据技能等级排序,例如妖术3>妖术2>妖术1;
假设3,群技能优先级相同,例如千军破=落雷=火烧连营=八门金锁=妖术=春秋斩=鬼神惊;
假设4,群技能优先级高于其他不可覆盖技能,例如千军破>攻心;
假设5,名将技能优先级高于其他将技能优先级,例如威吓>火箭;
假设6、主动技能不和被动技能进行优先级比较,例如赵云的铁血在判定时只会和陷坑比较,不会去和反乱比较(假设赵云打上了反乱);
假设7、姜维的连弩计入名将技能;
假设8,名将技能每名名将仅能拥有唯一,即不能出现吕布同时有千军破、落雷、威吓、铁血、连弩,但是吕布可以同时有反乱、虎啸、枪阵、陷坑等技能;
假设9,技能攻击、反击的伤害高于普通攻击、反击。
一、技能的设计
技能表:技能id,技能名称,技能图片id,技能描述,技能属性id
技能图片表:技能图片id,技能图片
技能属性表:技能属性id,技能兵种限制,技能范围id,主动被动,发动概率
技能优先级表:guid,技能id,优先级
技能-效果关系表:guid,技能id,技能效果id
技能效果表:技能效果id,效果对象,技能攻击效果,技能防御效果
技能范围表:技能范围id,技能范围类型,技能范围数量
技能-属性关系表:guid,技能id,属性,关系类型id,效果
关系类型表:关系类型id,关系类型
【说明】
技能表的描述可能不全面,但是最关心的问题已经包含在里面了。其中有,技能的兵种限制(例如,陆逊火烧连营只能弓兵使用)、技能的攻击效果(例如,增加多少攻击、增加多少防御)、技能是主动技能还是被动技能(例如,奋斗是被动技能增加步兵攻击,虎啸是主动技能骑兵发动)、技能攻击范围(例如,反乱只能攻击1个对象,千军破攻击9个对象)、技能攻击范围类型(例如,妖术是十字攻击,鬼神惊是X攻击),技能发动概率(例如,落雷发动概率是多少,春秋斩发动概率是多少),属性点对技能的影响(例如,增加武力可以提高枪阵的发动概率,千军破和任何属性没有关系)等
技能-效果关系表描述技能对应的效果,允许一个技能有多个效果(例如,神射提高弓兵的攻防)。
技能-属性关系表描述哪些技能对属性有依赖,其中关系类型id关联关系类型表,查找是针对发动概率还是具体效果,效果为关系类型的加成数值。
二、武将的设计
此处只考虑武将-技能关系
玩家武将-技能表:guid,玩家武将id,技能id
玩家-武将表:guid,玩家id,玩家武将id
玩家武将表:玩家武将id,对应武将id,......
初始武将具有两个技能,则在玩家武将-技能表中insert两条记录即可。记录玩家武将id和技能id。
三、技能发动的算法猜测
变量定义不描述
获取玩家武将技能信息,按照优先级排列,存入列表
依次遍历此列表
获取列表当前技能发动概率(此为调用方法,分别根据技能、技能-属性加成、装备加成来计算);
根据概率设置模拟范围;
利用蒙特卡洛方法来模拟技能发动与否的判断(此处肯定有一个方法来根据概率进行发动与否的模拟,是否蒙特卡洛方法仅为本人猜测);
判断技能是否发动
是{记录发动技能,跳出循环}
技能列表中数据顺次移动一位,循环进行下一技能的判断
获取发动技能id,如果列表中技能都没有发动,则按照普通攻击处理
获取技能id(或是普通攻击)的效果
根据效果进行攻防计算
相关推荐
- 12-15千军破武将介绍 司马懿
- 12-15千军破武将介绍 黄忠
- 12-15千军破武将介绍 姜维
- 12-15千军破武将技能 百步穿杨
- 12-15千军破武将技能 八阵图
- 12-15千军破武将技能 妙计骂声反乱奇袭
- 12-15千军破武将介绍 诸葛亮
- 12-15千军破武将介绍 吕布
- 12-15千军破武将介绍 关羽
- 12-15千军破武将介绍 张飞