chang8787
chang8787
关注数: 9
粉丝数: 8
发帖数: 333
关注贴吧数: 166
1.4版本皇帝逃跑算法详解 看到很多人都遇到皇帝逃跑这个困扰,我自己玩190用曹操开局也碰到一次,打下长安后一年左右皇帝就跑了,而且多次SL都逃跑让我瞬间想弃档,过年出不了门,正好去研究了下,想看看是不是可修改,所幸在scripts里找到了皇帝逃跑的算法(并亲测修改有效),拿出来给大家分享下(如果喜欢保持神秘的玩家,看到这就别往下看了) 脚本路径:data.pack-script-campaign-3k_campaign_emperor_manager,有兴趣的可以自己按照自己的想法去修改。 涉及到皇帝出逃的核心算法函数有两个:calculate_emperor_bonus和find_best_faction_for_emperor,CA计算皇帝是否逃跑,其实就是给每个势力算一个得分,得分最高者拥有皇帝,如果皇帝当前所在势力不是最高分,那就会逃跑。下面一一详解这两个函数的作用。 calculate_emperor_bonus主要是计算皇帝拥有者的其中一个加成分(注意,不是最终得分),大致逻辑如下: 1. 如果皇帝是逃跑过来的,+100,注意:这个状态只在第一次选择摄政之前有效,当你选择了摄政以后,你的状态就变化了,不再有这个100的加成。 2. 如果当前是摄政状态,曹操+50,其它势力+25,注意,当我们刚刚携天子时,由于笔者是在一年后才触发选择(修改前皇帝之前跑了),这时候并不是摄政状态,不适用于此项。 3. 初始状态(即1、2之外的状态,当然不能是废天子或杀天子),如果是董卓势力,+50,如果派系领袖是董卓,+150(代码里用的是faction:faction_leader():generation_template_key() == "3k_main_template_historical_dong_zhuo_hero_fire" ,182剧本和190剧本我不确认是不是都是从这个template里生成的),注意:这里两个加分是可以叠加的。 4. 声望等级,这里是用等级而不是声望值,这里是减分项,-(4-等级)*25,如你是伯(就是2级),这里要-50。 5. 拥有区域数(这里代码用的是 faction:region_list():num_items() ,因为找不到相关代码,所以不确认一个城镇的多个资源点,是算一个还是多个,有知道的朋友可以补充一下):<=5,-100;<=10,-50;<=20,-25。 以上五点计算出当前皇帝拥有者的一个加成分,但不是最后得分,最后得分要跟find_best_faction_for_emperor的得分相加。 下面讲一下find_best_faction_for_emperor函数涉及的算分项,这个函数本质就是给每个势力计算一个分数,找出分数最高的势力返回: 1. 前置条件——派系未灭亡、文化是3k_main_chinese(目前应该只有两个文化,另一个是黄巾势力的)、不是汉帝国等特殊势力。 2. 多人游戏(因为笔者没有去玩多人游戏,描述的可能不太准确)下,如果玩家1拥有皇帝,则除玩家1外的所有玩家:如果与玩家1有外交条约treaty_components_multiplayer_victory(同盟?知道的朋友解释一下),-150;否则,+50。 3. 如果与皇帝拥有者开战,+25。 4. 如果是其它派系的附庸势力,-50。 5. 如果是孙坚、刘备、曹操三个势力(与领袖无关),+50。 6. 如果是刘宠、袁绍、刘表、孙融、马腾、公孙瓒势力(与领袖无关),+25。 7. 如果是袁术势力(与领袖无关,CA注释里用了一个“Nobody likes Yuan Shu” ,好狠),-50。 8. +拥有的区域数量*5(与calculate_emperor_bonus一样,不清楚是同一个城镇多个资源点都只算1,还是每个资源点都分别计数)。 9. +声望等级*25。 10. 如果是皇帝拥有者,加上calculate_emperor_bonus计算出来的结果(正数就是加分,负数就是减分)。 11. 加上一个0-25的随机整数。 以上算出来的最高分,就是皇帝拥有者,具体触发计算的条件我没去研究,目测应该是每次让选择是否摄政时会先计算一下皇帝是否逃跑,如果不逃跑才让拥有者选择摄政、废天子和杀天子。
1
下一页