RimWorld AI分析整理:袭击AssaultColony

集群AI:袭击殖民地
该AI有几种标签
1.默认
2.工兵:看来他们想用工程兵挖掘隧道来攻破殖民地的防御圈。
3.破坏者:这些袭击者打算攻破你的城墙。他们将决定自己进入你的殖民地的路径,并摧毁任何阻碍他们的东西。
4.智能规避:注意——他们的战术似乎异常聪明。他们会避开你的炮塔的火力范围,并注意到你的一些陷阱。
5.允许绑架:可能抱走倒地的小人
6.允许盗窃:可能偷走地上的东西
7.允许捡枪:可能拿走地上的武器

当袭击发生时,根据袭击点数随机选择1、2、3中一种来发生
当袭击发生时,根据袭击点数随机选择是否启动4.智能规避
当袭击发生时,默认启动5和6,mod作者可以调节自己mod中的袭击是否启动
当袭击发生时,默认关闭7,mod作者可以调节自己mod中的袭击是否启动
以下的数值用a~b时均表示为在a和b之间取随机数
以下职责均为行为树,每一个节点“无行为”时执行下一个节点的内容

集群AI状态机:袭击殖民地
进攻状态:【默认状态】/【工兵状态】/【破坏者状态】
超时后转化为【离开地图状态】
>条件:距离袭击开始已经经过一段时间,默认状态为433秒~633秒,工兵和破坏者为550秒~633秒
>信息:来自{派系名}的{袭击者名}准备放弃并离开了。
殖民地破坏后转化为【离开地图状态】
>条件:殖民地受伤系数达到25%~35%
>信息:来自{派系名}的{袭击者名}在造成破坏后满足地准备离开了。
允许绑架时可能转化为【绑架状态】
>条件1.整个群体已经超过5秒没有受伤
>条件2.绑架者周围8格内存在倒地的殖民者
>信息:来自{派系名}的{袭击者名}准备绑架他们能带走的殖民者并离开。
允许盗窃时可能转化为【盗窃状态】
>条件1.整个群体已经超过5秒没有受伤
>条件2.所有成员7格内的物品总价值大于所有成员袭击点数【大于100时被视为100】的2~10倍
>信息:来自{派系名}的{袭击者名}准备带走他们能带走的战利品并离开。
当派系关系改善时改为【离开地图状态】
>条件:关系变更,且由敌对变为中立或友好
>信息:来自{派系名}的{袭击者名}准备离开了。

=====================================默认状态
>赋予所有的成员以【袭击殖民地AssaultColony】职责
>所有成员不允许攻击倒地单位

职责:袭击殖民地AssaultColony
节点1.服用药物JobGiver_TakeCombatEnhancingDrug
>禁用成瘾品的人无行为
>距离上一次服药时间少于20000tick的人无行为
>物品栏中无可用药物的人无行为
>服用可用的药物
节点2.清除小人JobGiver_AIFightEnemies
>确认已有目标
>>旧目标需要在72格内
>>旧目标需要未死亡或消失
>>旧目标上一次攻击或被攻击发生在400tick内
>>旧目标的位置需要可到达
>>若不满足所有条件,则清除旧目标
>查找新目标
>>目标需要在65格内
>>目标需要在视野内或可以到达能够攻击到该目标的位置
>>若武器为纵火武器,则目标需要可燃
>>如果没有旧目标,触发一次集群AI的“发现目标”
>攻击目标
>>若没有目标,则无行为
>>若没有攻击能力则无行为
>>若没有攻击位置则无行为
>>若是近战兵,则接近并与目标近战
>>若已处于正确位置,则进入观察目标并开火自传哪个台
>>若未处于正确位置,则移动到正确位置
节点3.毁坏最近的东西
>查找目标
>>在6x6的格子内搜索
>>先找建筑 否则找植物
>摧毁目标
>>若无目标则无行为
>>若目标已被摧毁或不可到达,则无行为
>>若目标是植物,则前往并点燃该植物
>>若携带武器,且武器主要用于摧毁建筑物,则有70%的概率使用武器攻击
>>若具有点火能力,且目标可燃,且目标没有正在燃烧,且目标不是门,则有30%概率前往并点燃目标
>>近战拆除该目标
节点4.毁坏殖民地的建筑
>若无建筑则无行为
>若建筑已被摧毁或不可到达,则无行为
>若建筑是框架(未完成)或“惰性建筑”则无行为
【惰性建筑将在以后进行统计,有门、沙袋、雕塑什么的】
>若携带武器,且武器主要用于摧毁建筑物,则有70%的概率使用武器攻击
>若具有点火能力,且建筑可燃,且目标没有正在燃烧,且目标不是门,则有30%概率前往并点燃目标
>近战拆除该目标
节点5.前往最近敌对目标
>目标可以是小人、炮塔、虫巢
>若无目标则无行为
>若目标无法达到则无行为
>移动到该目标的位置
节点6.毁坏殖民地的建筑
>与节点4相似,但可以拆除框架和“惰性建筑”
节点7.挖掘
【“焦点”一般在袭击来临时赋值,比如一个高价值东西或者一个人,但此袭击没有焦点,这个节点应该不工作】
>找到达“焦点”的最佳路径
>当最佳路径被阻挡时,尝试强制通过
>>如果阻挡的东西是可挖掘的,那么若能够执行挖掘工作则挖掘该东西,否则近战
>>如果阻挡的东西是不可挖掘的,且主武器主要用于摧毁建筑(如手雷),那么优先对该东西使用武器,否则根据工作能力使用挖掘或者近战

=====================================绑架状态
>赋予所有距离绑架对象最近的成员【绑架Kidnap】职责
>赋予剩下的成员【袭击殖民地AssaultColony】职责

职责:绑架Kidnap
节点1.尝试绑架JobGiver_Kidnap
>若当前位置无法到达地图边缘则无行为
>前往18格以内的一个可绑架单位并绑架
>拾取该单位后立刻前往地图
节点2.从最佳位置离开地图JobGiver_ExitMapBest
>找到最近的可到达的地图边缘点
>当最佳离开点被阻挡时,尝试强制通过
>>如果阻挡的东西是可挖掘的,那么若能够执行挖掘工作则挖掘该东西,否则近战
>>如果阻挡的东西是不可挖掘的,且主武器主要用于摧毁建筑(如手雷),那么优先对该东西使用武器,否则根据工作能力使用挖掘或者近战
>当最佳离开点没有被阻挡时,到达该地点,并到达后立刻离开地图

职责:袭击殖民地AssaultColony
在【默认状态】介绍完毕了

=====================================盗窃状态
>赋予所有距离绑架对象最近的成员【盗窃Steal】职责
>赋予剩下的成员【袭击殖民地AssaultColony】职责
职责:盗窃Steal
节点1.尝试盗窃JobGiver_Steal
>若当前位置无法到达地图边缘则无行为
>前往12格以内的一个物品并拾取
>拾取该单位后立刻前往地图
节点2.从最佳位置离开地图JobGiver_ExitMapBest
>找到最近的可到达的地图边缘点
>当最佳离开点被阻挡时,尝试强制通过
>>如果阻挡的东西是可挖掘的,那么若能够执行挖掘工作则挖掘该东西,否则近战
>>如果阻挡的东西是不可挖掘的,且主武器主要用于摧毁建筑(如手雷),那么优先对该东西使用武器,否则根据工作能力使用挖掘或者近战
>当最佳离开点没有被阻挡时,到达该地点,并到达后立刻离开地图

职责:袭击殖民地AssaultColony
在【默认状态】介绍完毕了
=====================================离开地图状态
>赋予所有的成员以【离开地图ExitMapBest】职责

职责:离开地图ExitMapBest
节点1.从最佳位置离开地图JobGiver_ExitMapBest
>找到最近的可到达的地图边缘点
>当最佳离开点被阻挡时,尝试强制通过
>>如果阻挡的东西是可挖掘的,那么若能够执行挖掘工作则挖掘该东西,否则近战
>>如果阻挡的东西是不可挖掘的,且主武器主要用于摧毁建筑(如手雷),那么优先对该东西使用武器,否则根据工作能力使用挖掘或者近战
>当最佳离开点没有被阻挡时,到达该地点,并到达后立刻离开地图

=====================================
工兵状态和破坏者状态的话,我们在其他章节具体讲述吧!
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值