AI 脚本与触发
此页面列出了所有 Phobos 引入的 AI 脚本与地图触发相关的修改。
Bug 修复与杂项
脚本动作
移动到单元格现在遵守 YR 的单元格计算规则。使用1000 * Y + X获取单元格值。(先前使用遗留自 RA1 的128 * Y + X)现在游戏可以读取的路径点范围拓展到了 [0, 2147483647]。(先前为 [0,701])
地图触发结果
41 播放动画在...现在可以更完善地创建可以播放音效、造成杀伤以及使用设置了TiberiumChainReaction参数的动画(需要修改FAData.ini)。地图触发结果
125 将建筑建于...现在可以设置是否播放建造动画(需要修改FAData.ini)。全局变量(
rulesmd.ini中的VariableNames)和局部变量(地图中的VariableNames)现在都没有数量限制了。脚本动作
部署现在会让拥有DeploysInto的载具自动寻找空地以进行部署,而不再是直接呆住。由触发结果 7、80、107 生成的小队现在可以正常使用 IFV 和 OpenTopped 逻辑。
如果预先放置了拥有
NaturalParticleSystem的建筑,它总是在游戏开始时被创建。这一行为已被移除。用于 AI 脚本动作的超级武器
56 超时空传送至建筑、57 超时空传送至目标和10104 超时空传送至敌方基地现在可以通过[General] -> AIChronoSphereSW和AIChronoWarpSW分别明确设置。如果设置了AIChronoSphereSW但没有设置AIChronoWarpSW,那么游戏会检查前者指定的SW.PostDependent来获取关联的超级武器。如果也没有设置那么会分别使用[SuperWeaponTypes]列表中最后一个Type=ChronoSphere和Type=ChronoWarp的超级武器。
单人任务地图
基地节点修复
在单人战役中你可以决定 AI 是否修复由 Deliver 超武(Ares 功能)提供的基地节点/建筑。
你可以通过设置
[Basic] -> RepairBaseNodes来全局控制,或者在特定地图文件的[Some House]中设置同名标签。局部标签会覆盖全局。
在 rulesmd.ini:
[Basic]
RepairBaseNodes=false ; boolean
在地图文件:
[Country House]
RepairBaseNodes= ; List of 3 booleans indicating whether AI repair basenodes in Easy / Normal / Difficult game diffculty.
默认载入图与简报位置
现在可以为单人战役地图的载入图像素偏移值和载入图图像以及色盘设置默认值,如果地图自身没有定义这些那么会将其作为默认值使用。
在 missionmd.ini:
[Defaults]
DefaultLS640BriefLocX=0 ; integer
DefaultLS640BriefLocY=0 ; integer
DefaultLS800BriefLocX=0 ; integer
DefaultLS800BriefLocY=0 ; integer
DefaultLS640BkgdName= ; filename - including the .shp extension.
DefaultLS800BkgdName= ; filename - including the .shp extension.
DefaultLS800BkgdPal= ; filename - including the .pal extension
备注
尽管标签名为 DefaultLS800BkgdPal,但实际上就像原本游戏中的 LS800BkgdPal 那样适用于两种情况。
基地车重新部署
现在你可以通过设置
[Basic] -> MCVRedeploys来决定单人战役中的基地车能否重部署。这会覆盖[MultiplayerDialogSettings] -> MCVRedeploys但仅生效于单人战役地图中。
在地图文件:
[Basic]
MCVRedeploys= ; boolean
启动时显示简报对话框
现在你可以通过在地图文件的
[Basic]小节或missionmd.ini(前者优先)中设置ShowBriefing为 true 来使简报对话框在单人战役地图启动时显示。用户可以通过在RA2MD.INI中设置ShowBriefing为 false 来禁用这一功能。BriefingTheme(按优先级从高到低的顺序为:地图文件、missionmd.ini、rulesmd.ini中的阵营条目)可以用来定义在简报界面播放的自定义主题。若未设置则载入图主题会一直播放直至游戏场景实际开始。可以分别通过设置
ShowBriefingResumeButtonLabel和ShowBriefingResumeButtonStatusLabel来自定义启动简报对话框界面恢复按钮的字符串标签以及按钮的状态文本。它们默认为在其他情况下打开简报对话框界面时使用相同的标签
在 missionmd.ini:
[SOMEMISSION] ; Filename of mission map
ShowBriefing= ; boolean
BriefingTheme= ; Theme name
在地图文件:
[Basic]
ShowBriefing=false ; boolean
BriefingTheme= ; Theme name
在 rulesmd.ini:
[SOMESIDE] ; Side
BriefingTheme= ; Theme name
在 uimd.ini:
[UISettings]
ShowBriefingResumeButtonLabel=GUI:Resume ; CSF entry key
ShowBriefingResumeButtonStatusLabel=STT:BriefingButtonReturn ; CSF entry key
在 RA2MD.INI:
[Phobos]
ShowBriefing=true ; boolean
脚本动作
10000-10999 游戏内行为
10000-10049 攻击行为
这些行为通过第二个参数指示小队类型使用特遣部队接近并攻击目标,该参数是一个通用预定义组的索引。请参阅下表以了解可能的行为(第一个参数)和参量(第二个参数值)。
基于威胁值的攻击行为会考虑
rulesmd.ini中的TargetSpecialThreatCoefficientDefault和EnemyHouseThreatBonus标签。所有攻击其他空中单位的战机在执行此脚本时会直接将其结束。由于如果没有这一效果那么战机类在开发此功能时存在一些无法修复的 Bug 因此这种行为是故意的
AITargetTypes动作通过第二个参数指示小队类型使用特遣部队接近并攻击目标,该参数是AITargetTypes中一个由 modder 自行定义的组的索引。请参阅下表以了解可能的行为(第一个参数)和参量(第二个参数值)。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=i,n ; For i values check the next table
行为 |
参数 |
重复 |
目标优先级 |
描述 |
|---|---|---|---|---|
10000 |
目标类型 # |
是 |
较近的 |
|
10001 |
目标类型 # |
否 |
较近的 |
当一个小队成员击杀指定目标时结束 |
10002 |
|
是 |
较近的 |
|
10003 |
|
否 |
较近的 |
当一个小队成员击杀指定目标时结束 |
10004 |
|
是 |
较近的 |
从列表中选取 1 个随机目标 |
10005 |
目标类型 # |
是 |
较远的 |
|
10006 |
目标类型 # |
否 |
较远的 |
当一个小队成员击杀指定目标时结束 |
10007 |
|
是 |
较远的 |
|
10008 |
|
否 |
较远的 |
当一个小队成员击杀指定目标时结束 |
10009 |
|
是 |
较远的 |
从列表中选取 1 个随机目标 |
10010 |
目标类型 # |
是 |
较近且威胁较高 |
|
10011 |
目标类型 # |
否 |
较近且威胁较高 |
当一个小队成员击杀指定目标时结束 |
10012 |
|
是 |
较近且威胁较高 |
|
10013 |
|
否 |
较近且威胁较高 |
当一个小队成员击杀指定目标时结束 |
10014 |
目标类型 # |
是 |
较远且威胁较高 |
|
10015 |
目标类型 # |
否 |
较远且威胁较高 |
当一个小队成员击杀指定目标时结束 |
10016 |
|
是 |
较远且威胁较高 |
|
10017 |
|
否 |
较远且威胁较高 |
当一个小队成员击杀指定目标时结束 |
下列值为可用于新攻击脚本动作第二个参数的 目标类型 # 参数:
「被视为载具的建筑」意为那些同时设置了
UndeploysInto和Foundation=1x1且没有设置ConsideredVehicle或者设置了ConsideredVehicle=true的建筑。
值 |
目标类型 |
描述 |
|---|---|---|
1 |
任何事物 |
任何敌方 |
2 |
建筑 |
任何敌方不被视为载具的 |
3 |
矿车 |
任何敌方拥有 |
4 |
步兵 |
任何地方 |
5 |
载具 |
任何敌方 |
6 |
工厂 |
任何敌方拥有 |
7 |
基地防御 |
任何敌方拥有 |
8 |
所属方威胁 |
任何瞄准小队所属方单位或任何接近小队队长的敌人。 |
9 |
电厂 |
任何敌方拥有正值 |
10 |
驻营 |
任何敌方拥有步兵驻扎的 |
11 |
科技建筑 |
任何拥有 |
12 |
矿场 |
任何敌方拥有 |
13 |
心灵控制者 |
任何武器使用 |
14 |
空中单位(包括降落的) |
任何敌方 |
15 |
海军 |
任何敌方拥有 |
16 |
阻扰者 |
任何敌方拥有正值 |
17 |
地面载具 |
任何敌方没有 |
18 |
经济相关 |
任何敌方拥有 |
19 |
兵营 |
任何敌方拥有 |
20 |
重工 |
任何敌方拥有 |
21 |
机场 |
任何敌方拥有 |
22 |
雷达 |
任何敌方拥有 |
23 |
高科 |
任何敌方位于 |
24 |
船坞 |
任何敌方拥有 |
25 |
超武 |
任何敌方拥有 |
26 |
建造厂 |
任何敌方拥有 |
27 |
中立 |
任何中立(平民)对象 |
28 |
发生器 |
任何敌方拥有 |
29 |
雷达干扰器 |
任何敌方拥有正值 |
30 |
抑制者 |
任何敌方拥有正值 |
31 |
海军单位 |
任何敌方拥有 |
32 |
机动单位 |
任何 |
33 |
可占领 |
任何拥有 |
34 |
区域威胁 |
任何敌方处于小队队长警戒区域内的对象 |
35 |
重工与船坞 |
任何敌方拥有 |
36 |
非防御建筑 |
任何敌方拥有 |
第二个参数是
AITargetTypes小节中从 0 开始的索引用于指定可选的载具类型、战机类型、步兵类型和建筑类型。AITargetTypes索引 # 值在新的AITargetTypes小节中获取,该小节必须在rulesmd.ini中声明:
在 rulesmd.ini:
[AITargetTypes] ; List of TechnoType lists
0=SOMETECHNOTYPE,SOMEOTHERTECHNOTYPE,SAMPLETECHNOTYPE
1=ANOTHERTECHNOTYPE,YETANOTHERTECHNOTYPE
...
10050-10099 移动小队至科技类型位置行为
这些行为通过第二个参数指示小队类型使用特遣部队接近由其指定的目标。请参阅下表以了解可能的行为(第一个参数值)。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=i,n ; For i values check the next table
行为 |
参数 |
目标所属 |
目标优先级 |
描述 |
|---|---|---|---|---|
10050 |
目标类型 # |
敌方 |
较近且威胁较高 |
|
10051 |
|
敌方 |
较近且威胁较高 |
|
10052 |
|
敌方 |
较近的 |
在选中列表中选取 1 个随机目标 |
10053 |
目标类型 # |
友方 |
较近的 |
|
10054 |
|
友方 |
较近的 |
|
10055 |
|
友方 |
较近的 |
在选中列表中选取 1 个随机目标 |
10056 |
目标类型 # |
敌方 |
较远且威胁较高 |
|
10057 |
|
敌方 |
较远且威胁较高 |
|
10058 |
|
敌方 |
较远的 |
在选中列表中选取 1 个随机目标 |
10059 |
目标类型 # |
友方 |
较远的 |
|
10060 |
|
友方 |
较远的 |
|
10061 |
|
友方 |
较远的 |
在选中列表中选取 1 个随机目标 |
10100-10999 一般用途
10100 时效性区域警戒
可以让特遣部队中的单位一定时间内进入区域警戒模式。与原本只能待在运抵进行基本的警戒命令(
5,n)不同:它可以更主动地攻击入侵附近区域的目标或保护需要保护的单位。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=10100,n ; integer, time in ingame seconds
10101 等待弹药满载
如果特遣部队中包含使用弹药的单位那么在这些单位弹药满载前脚本不会继续。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=10101,0
10102 向小队队长集结
将特遣部队围绕小队队长(该单位在此期间几乎保持不动)进入区域警戒模式给定的事件值。默认的半径是
[General] -> CloseEnough且单位不会离开此区域。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=10102,n
10103 装载入运输载具
如果特遣部队中包含可以被同一特遣部队的运输工具装载的单位,那么该行为会让这些单位进入运输工具。在单人任务地图中,下一个操作必须是等待到满载(
43,0)否则脚本将不会继续执行。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=10103,0
10104 超时空传送至敌方基地
使用第一个可用的
Type=ChronoSphere超级武器将小队类型的成员超时空传送到敌方基地附近[General] -> AISafeDistance(加上参数中定义的可为负值的额外距离)格的位置。超级武器必须先加载到[General] -> AIMinorSuperReadyPercent所指定百分比才能被此行为考虑。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=10104,n ; integer, additional distance in cells
12000-12999 补充/设定预设动作。
12000 无目标情况下等待
当在例如新的
通用目标类型攻击动作和AITargetTypes 攻击脚本动作执行前小队类型会考虑如果未选择目标则必须等待 1 秒。第二个参数是一个用于指定未找到目标时充实多少次然后才放弃新的攻击脚本动作并跳转到下一行的参数。默认值0表示无限次重试。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=12000,n ; integer n=0
12001 修改目标距离
默认情况下,
移动小队至科技类型位置在队长抵达rulesmd.ini中声明的CloseEnough距离时结束。当该行为在移动小队至科技类型位置前执行时会覆盖CloseEnough值。这一行为仅对接下来的第一次执行效果有影响而之后再下一次移动时仍会继续使用CloseEnough。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=12001,n
12002 设置移动结束参数
设置移动动作结束并跳转到下一行的方式。此操作仅在第一次执行时有效,下次移动时仍会恢复使用
CloseEnough。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=12002,n
可选参数有:
参数 |
动作结束于… |
|---|---|
0 |
小队队长抵达最小距离 |
1 |
一个单位抵达最小距离 |
2 |
所有小队成员抵达最小距离 |
14000-14999 工具行为
14000 设置小队权重奖励
当在例如新的
通用目标类型攻击动作和AITargetTypes 攻击脚本动作执行前小队类型会考虑如果小队目标被小队成员杀死则必须奖励增加 AI 触发的当前权重。当前权重不会超过AI触发最小权重和最大权重的限制。第二个参数是一个正整数。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=14000,n ; integer n=0
14001 增加AI触发权重
当执行此行为时增加 AI 触发的当前权重。当前权重永远不会超过AI触发最小权重和最大权重的限制。注意所有同一 AI 触发的小队类型最后都会更新 AI 触发当前权重。第二个参数是一个正整数。注意原版游戏在 AI 触发周期结束时会使用两个小队中的第一个来计算 AI 触发当前权重,此行为不检查小队是 AI 触发中的第一个还是第二个并在执行行为时计算当前权重。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=14001,n
14002 降低AI触发权重
当执行此行为时减少 AI 触发的当前权重。细则同上。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=14002,n
14003 撤销小队成功
与脚本动作
49,0相反的效果。类似小队失败。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=14003,0
16000-16999 流程控制
16000 定时跳转至同一行
当计时器结束时当前脚本动作结束并重新开始同一动作。计时器会会一直重复跳转(无限循环)直到被
16002号结果打断或小队被摧毁。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=16000,n ; integer n=0, in ingame seconds
16001 定时跳转至下一行
当计时器结束时当前脚本动作结束并开始脚本类型列表中下一个动作。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=16001,n ; integer n=0, in ingame seconds
16002 停止定时跳转
如果激活了定时跳转则该动作将停止进程。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=16002,0
16003 随机跳过下一行
执行该动作时会挑选一个在 1 和 100 之间的随机数,如果数值小于等于第二个参数则跳过下一个动作。第二个参数为 0 表示永远不会跳过下一个动作而 100 表示永远跳过下一个动作。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=16003,n ; where 0 > n <= 100
16004 随机选取脚本
当执行此行为时会随机选取一个新的脚本类型并替换当前脚本。第二个参数是新的
AIScriptsList小节下从 0 开始的索引。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=16004,n
第二个参数是 AIScriptsList 小节下从 0 开始的索引,该小节必须在 rulesmd.ini 中声明才能使此脚本生效:
在 rulesmd.ini:
[AIScriptsList] ; List of ScriptType lists
0=SOMESCRIPTTYPE,SOMEOTHERSCRIPTTYPE,SAMPLESCRIPTTYPE
1=ANOTHERSCRIPTTYPE,YETANOTHERSCRIPTTYPE
...
16005 跳回上一个脚本
在由
94号动作选择的随机脚本中使用可以使其跳回到上一个脚本,并继续执行x=94,n之后的行。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=16005,0
18000-18999 变量操作
18000-18023 编辑变量
计算一个变量值。
变量值由于某些原因在触发行为中值类型为 int16 而非 int32,这表示它的范围是从 -2^15 到 2^15-1。
任何超出此范围限制的数值都可能导致无法预测的结果!
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=i,n ; where 18000 <= i <= 18023, n is made up of two parts, the low 16 bits is being used to store the variable index, the high 16 bits is being used for storing the param value.
18024 - 18047 使用局部变量编辑变量
使用局部变量的值来操作变量的值。
类似于
18000-18023,但用于操作值的数字是从局部变量中读取的。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=i,n ; where 18024 <= i <= 18047, n is made up of two parts, the low 16 bits is being used to store the variable index, the high 16 bits is being used for storing the local variable index.
18000 - 18071 使用全局变量编辑变量
使用全局变量的值来操作变量的值。
类似于
18000-18023,但用于操作值的数字是从全局变量中读取的。
在 aimd.ini:
[SOMESCRIPTTYPE] ; ScriptType
x=i,n ; where 18048 <= i <= 18071, n is made up of two parts, the low 16 bits is being used to store the variable index, the high 16 bits is being used for storing the global variable index.
19000-19999 杂项/未分类
此类别目前为空。
触发结果
500 单人任务存档
立即保存当前游戏。
备注
要让此结果用于多人游戏,你必须使用支持多人存档后的 YRpp spawner 版本。
这些原有 CSF 条目将会被使用:
TXT_SAVING_GAME、TXT_GAME_WAS_SAVED和TXT_ERROR_SAVING_GAME。存档描述将会类似
地图描述名称 - CSF文本。例如:
盟军战役25: 僵僵の钱 - 钱全被偷光了!。
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],500,4,[CSFKey],0,0,0,0,A,[ActionX]
...
501 编辑变量
计算一个变量值。
变量值为 int32,这表示它的范围是从 -2^31 到 2^31-1。
任何超出此范围限制的数值都可能导致无法预测的结果!
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],501,0,[VariableIndex],[Operation],[Number],[IsGlobalVariable],0,A,[ActionX]
...
操作 |
描述 |
|---|---|
0 |
当前值 = 数字 |
1 |
当前值 = 当前值 + 数字 |
2 |
当前值 = 当前值 - 数字 |
3 |
当前值 = 当前值 * 数字 |
4 |
当前值 = 当前值/数字 |
5 |
当前值 = 当前值 % 数字 |
6 |
当前值 = 当前值 左移 数字 位 |
7 |
当前值 = 当前值 右移 数字 位 |
8 |
当前值 = 当前值 按位取反 |
9 |
当前值 = 当前值 异或 数字 |
10 |
当前值 = 当前值 位或 数字 |
11 |
当前值 = 当前值 位与 数字 |
502 生成随机数
在 [Min, Max] 范围内生成一个随机整数并存入给定变量。
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],502,0,[VariableIndex],[Min],[Max],[IsGlobalVariable],0,A,[ActionX]
...
503 输出变量的值
输出变量值至消息列表。
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],503,0,[VariableIndex],[IsGlobalVariable],0,0,0,A,[ActionX]
...
504 变量间计算
将两个变量的值进行计算。
类似
501,但计算数值读取自另一变量。
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],504,0,[VariableIndex],[Operation],[VariableForOperationIndex],[IsGlobalVariable],[IsOperationGlobalVariable],A,[ActionX]
...
Operation 可以见上 501 号动作。
505 在坐标释放超级武器
谨慎使用
在指定位置发射
[SuperWeaponTypes]列表中的超级武器。HouseIndex可取以下值:
所属方索引 |
描述 |
|---|---|
>= 0 |
地图上当前所属方的索引 |
4475-4482 |
类似范围 0-7 的索引 |
-1 |
选择一个非中立的随机所属方 |
-2 |
选择第一个中立所属方 |
-3 |
选择随机人类玩家 |
坐标的 X 和 Y 可以使用正数值或使用 -1 来表示在可视区域内随机。
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],505,0,0,[SuperWeaponTypesIndex],[HouseIndex],[CoordinateX],[CoordinateY],A,[ActionX]
...
506 在路径点释放超级武器
谨慎使用
在指定路径点发射
[SuperWeaponTypes]列表中的超级武器。
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],506,0,0,[SuperWeaponTypesIndex],[HouseIndex],[WaypointIndex],0,A,[ActionX]
...
510 切换基地重新部署设定
通过设置第三个参数强制基地车能否重部署。
在 mycampaign.map:
[Actions]
...
ID=ActionCount,[Action1],510,0,0,[MCVRedeploy],0,0,0,A,[ActionX]
...
触发条件
500-511 变量比较
比较变量值与给定值。
在 mycampaign.map:
[Events]
...
ID=EventCount,[Event1],[EVENTID],2,[VariableIndex],[Param],[EventX]
...
条件 ID |
描述 |
全局 |
|---|---|---|
500 |
当前值 > 数字 |
否 |
501 |
当前值 < 数字 |
否 |
502 |
当前值 = 数字 |
否 |
503 |
当前值 >= 数字 |
否 |
504 |
当前值 <= 数字 |
否 |
505 |
当前值 & 数字 != 0 |
否 |
506 |
当前值 > 数字 |
是 |
507 |
当前值 < 数字 |
是 |
508 |
当前值 = 数字 |
是 |
509 |
当前值 >= 数字 |
是 |
510 |
当前值 <= 数字 |
是 |
511 |
当前值 & 数字 != 0 |
是 |
512-523 变量与局部变量比较
比较变量值与给定局部变量值。
在 mycampaign.map:
[Events]
...
ID=EventCount,[Event1],[EVENTID],2,[VariableIndex],[LocalVariableIndex],[EventX]
...
条件 ID |
描述 |
全局 |
|---|---|---|
512 |
当前值 > 局部变量值 |
否 |
513 |
当前值 < 局部变量值 |
否 |
514 |
当前值 = 局部变量值 |
否 |
515 |
当前值 >= 局部变量值 |
否 |
516 |
当前值 <= 局部变量值 |
否 |
517 |
当前值 & 局部变量值 != 0 |
否 |
518 |
当前值 > 局部变量值 |
是 |
519 |
当前值 < 局部变量值 |
是 |
520 |
当前值 = 局部变量值 |
是 |
521 |
当前值 >= 局部变量值 |
是 |
522 |
当前值 <= 局部变量值 |
是 |
523 |
当前值 & 局部变量值 != 0 |
是 |
524-535 变量与全局变量比较
比较变量值与给定全局变量值。
在 mycampaign.map:
[Events]
...
ID=EventCount,[Event1],[EVENTID],2,[VariableIndex],[GlobalVariableIndex],[EventX]
...
条件 ID |
描述 |
全局 |
|---|---|---|
524 |
当前值 > 全局变量值 |
否 |
525 |
当前值 < 全局变量值 |
否 |
526 |
当前值 = 全局变量值 |
否 |
527 |
当前值 >= 全局变量值 |
否 |
528 |
当前值 <= 全局变量值 |
否 |
529 |
当前值 & 全局变量值 != 0 |
否 |
530 |
当前值 > 全局变量值 |
是 |
531 |
当前值 < 全局变量值 |
是 |
532 |
当前值 = 全局变量值 |
是 |
533 |
当前值 >= 全局变量值 |
是 |
534 |
当前值 <= 全局变量值 |
是 |
535 |
当前值 & 全局变量值 != 0 |
是 |
600 对象护盾被摧毁
在 mycampaign.map:
[Events]
...
ID=EventCount,...,600,2,0,0,...
...
601-602 检查所属方是否有/无科技类型
601:当指定所属方至少拥有一个设定的科技类型时触发。602:当指定所属方没有任何一个设定的科技类型时触发。多人游戏所属方(索引 4475 至 4482)支持。
备注
与 Ares 的 81 & 82 号条件不同,这些使用条件中的所属方参数而不是触发的所有者。
在 mycampaign.map:
[Events]
...
ID=EventCount,...,[EVENTID],2,[HouseIndex],[TechnoType],...
...
604-605 检查特定科技类型进入单元格
604:检查进入单元格的科技类型是否与条件中指定的 ID相同。605:检查进入单元格的科技类型是否出现在选定的AITargetTypes列表中。HouseIndex可以自定义为指定所属方。
在 mycampaign.map:
[Events]
...
ID=EventCount,...,604,2,[HouseIndex],[TechnoType],...
ID=EventCount,...,605,2,[HouseIndex],[AITargetTypes index#],...
...
所属方索引 |
描述 |
|---|---|
>= 0 |
地图上当前所属方的索引 |
-1 |
该值将被忽略(任何所属方均有效) |
-2 |
选择地图触发的所有者 |