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] -> AIChronoSphereSWAIChronoWarpSW 分别明确设置。如果设置了 AIChronoSphereSW 但没有设置 AIChronoWarpSW,那么游戏会检查前者指定的 SW.PostDependent 来获取关联的超级武器。如果也没有设置那么会分别使用 [SuperWeaponTypes] 列表中最后一个 Type=ChronoSphereType=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.inirulesmd.ini 中的阵营条目)可以用来定义在简报界面播放的自定义主题。若未设置则载入图主题会一直播放直至游戏场景实际开始。

    • 可以分别通过设置 ShowBriefingResumeButtonLabelShowBriefingResumeButtonStatusLabel 来自定义启动简报对话框界面恢复按钮的字符串标签以及按钮的状态文本。它们默认为在其他情况下打开简报对话框界面时使用相同的标签

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 中的 TargetSpecialThreatCoefficientDefaultEnemyHouseThreatBonus 标签。

  • 所有攻击其他空中单位的战机在执行此脚本时会直接将其结束。由于如果没有这一效果那么战机类在开发此功能时存在一些无法修复的 Bug 因此这种行为是故意的

  • AITargetTypes 动作通过第二个参数指示小队类型使用特遣部队接近并攻击目标,该参数是 AITargetTypes 中一个由 modder 自行定义的组的索引。请参阅下表以了解可能的行为(第一个参数)和参量(第二个参数值)。

aimd.ini

[SOMESCRIPTTYPE]  ; ScriptType
x=i,n             ; For i values check the next table

行为

参数

重复

目标优先级

描述

10000

目标类型 #

较近的

10001

目标类型 #

较近的

当一个小队成员击杀指定目标时结束

10002

AITargetTypes 索引 #

较近的

10003

AITargetTypes 索引 #

较近的

当一个小队成员击杀指定目标时结束

10004

AITargetTypes 索引 #

较近的

从列表中选取 1 个随机目标

10005

目标类型 #

较远的

10006

目标类型 #

较远的

当一个小队成员击杀指定目标时结束

10007

AITargetTypes 索引 #

较远的

10008

AITargetTypes 索引 #

较远的

当一个小队成员击杀指定目标时结束

10009

AITargetTypes 索引 #

较远的

从列表中选取 1 个随机目标

10010

目标类型 #

较近且威胁较高

10011

目标类型 #

较近且威胁较高

当一个小队成员击杀指定目标时结束

10012

AITargetTypes 索引 #

较近且威胁较高

10013

AITargetTypes 索引 #

较近且威胁较高

当一个小队成员击杀指定目标时结束

10014

目标类型 #

较远且威胁较高

10015

目标类型 #

较远且威胁较高

当一个小队成员击杀指定目标时结束

10016

AITargetTypes 索引 #

较远且威胁较高

10017

AITargetTypes 索引 #

较远且威胁较高

当一个小队成员击杀指定目标时结束

  • 下列值为可用于新攻击脚本动作第二个参数的 目标类型 # 参数:

    • 「被视为载具的建筑」意为那些同时设置了 UndeploysIntoFoundation=1x1 且没有设置 ConsideredVehicle 或者设置了 ConsideredVehicle=true 的建筑。

目标类型

描述

1

任何事物

任何敌方 载具类型战机类型步兵类型建筑类型

2

建筑

任何敌方不被视为载具的 建筑类型

3

矿车

任何敌方拥有 Harvester=yesResourceGatherer=yes载具类型、拥有 ResourceGatherer=yes建筑类型

4

步兵

任何地方步兵类型

5

载具

任何敌方载具类型或被视为载具的建筑

6

工厂

任何敌方拥有 Factory= 设置的建筑类型

7

基地防御

任何敌方拥有 IsBaseDefense=yes建筑类型

8

所属方威胁

任何瞄准小队所属方单位或任何接近小队队长的敌人。

9

电厂

任何敌方拥有正值 Power=建筑类型

10

驻营

任何敌方拥有步兵驻扎的建筑类型

11

科技建筑

任何拥有 Unsellable=yesCapturable=yes、负值 TechLevel= 或位于 [AI] -> NeutralTechBuildings= 列表中的建筑类型

12

矿场

任何敌方拥有 Refinery=yesResourceGatherer=yes建筑类型、拥有 ResourceGatherer=yesHarvester=no载具类型(即奴隶矿车)

13

心灵控制者

任何武器使用 MindControl=yes 弹头的载具类型战机类型步兵类型建筑类型

14

空中单位(包括降落的)

任何敌方战机类型和拥有 Jumpjet=yes载具类型步兵类型,包括已经降落的和任何其他当前仍在空中的单位

15

海军

任何敌方拥有 Naval=yes建筑类型载具类型,以及任何在水上单元格的载具类型战机类型步兵类型

16

阻扰者

任何敌方拥有正值 InhibitorRange=、正值 RadarJamRadius=CloakGenerator=yesGapGenerator=yes 的对象

17

地面载具

任何敌方没有 Naval=yes载具类型、降落的战机类型或被视为载具的建筑类型

18

经济相关

任何敌方拥有 Harvester=yesResourceGatherer=yes载具类型、拥有 Refinery=yesResourceGatherer=yesOrePurifier=yes建筑类型

19

兵营

任何敌方拥有 Factory=InfantryType建筑类型

20

重工

任何敌方拥有 Naval=noFactory=UnitType建筑类型

21

机场

任何敌方拥有 Factory=AircraftType建筑类型

22

雷达

任何敌方拥有 Radar=yesSpySat=yes建筑类型

23

高科

任何敌方位于 [AI]>BuildTech= 列表中的建筑类型

24

船坞

任何敌方拥有 Naval=yesFactory=UnitType建筑类型

25

超武

任何敌方拥有 SuperWeapon=SuperWeapon2=SuperWeapons=建筑类型

26

建造厂

任何敌方拥有 ConstructionYard=yesFactory=BuildingType建筑类型

27

中立

任何中立(平民)对象

28

发生器

任何敌方拥有 CloakGenerator=yesGapGenerator=yes建筑类型

29

雷达干扰器

任何敌方拥有正值 RadarJamRadius= 的对象

30

抑制者

任何敌方拥有正值 InhibitorRange= 的对象

31

海军单位

任何敌方拥有 Naval=yes载具类型或任何在水上单元格的载具类型战机类型步兵类型

32

机动单位

任何载具类型战机类型步兵类型

33

可占领

任何拥有 Capturable=yes 的建筑或任何拥有 BridgeRepairHut=yesRepairable=yes 的建筑

34

区域威胁

任何敌方处于小队队长警戒区域内的对象

35

重工与船坞

任何敌方拥有 Factory=UnitType建筑类型

36

非防御建筑

任何敌方拥有 IsBaseDefense=no建筑类型

  • 第二个参数是 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

[AITargetType] 索引 #

敌方

较近且威胁较高

10052

[AITargetType] 索引 #

敌方

较近的

在选中列表中选取 1 个随机目标

10053

目标类型 #

友方

较近的

10054

[AITargetType] 索引 #

友方

较近的

10055

[AITargetType] 索引 #

友方

较近的

在选中列表中选取 1 个随机目标

10056

目标类型 #

敌方

较远且威胁较高

10057

[AITargetType] 索引 #

敌方

较远且威胁较高

10058

[AITargetType] 索引 #

敌方

较远的

在选中列表中选取 1 个随机目标

10059

目标类型 #

友方

较远的

10060

[AITargetType] 索引 #

友方

较远的

10061

[AITargetType] 索引 #

友方

较远的

在选中列表中选取 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_GAMETXT_GAME_WAS_SAVEDTXT_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]
...

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

选择地图触发的所有者