跳转到内容
RA2DIY-WIKI 当前处于维护模式:页面上的内容随时可能发生更改且不会事先告知。

7.超级武器词典

CCC1478留言 | 贡献2025年5月26日 (一) 15:15的版本 (已保护“7.超级武器词典”​([编辑=仅允许管理员](无限期)​[移动=仅允许管理员](无限期)))

[General]

4.全局代码解释,设定了一些原版超武的参数

[SuperWeaponTypes]

IsPowered=<boolean>

是否耗电,没电时停止加载且不可释放

(def=yes)

-Bug-

原版中使用超时空传送时,如果点击了超时空源之后由于某种原因电力不足,那么仍然可以在电力不足的情况下发动超时空传送并重新开始倒计时。

典型应用

RA2引擎伞兵超武

RechargeVoice=<sound>

超武准备就绪的声音,TS残留,RA2已添加SuperAnim动画系统,可用SuperAnimThree挂音效实现

(def=none)

ChargingVoice=<sound>

超武开始充能的声音,TS残留,RA2直接使用建筑建造行为的任意音效接口即可

(def=none)

ImpatientVoice=<sound>

玩家点击未就绪超武的声音,TS残留,RA2只能播放鼠标点击图标的音效

(def=none)

SuspendVoice=<sound>

暂停特殊超武充能的声音,TS残留

(def=none)

Ares拓展了一套超武加载不同进度和状态时的EVA与Message逻辑,详见Ares说明书

RechargeTime=<float>

超武加载时间,单位为分钟,最大50107951

(def=5.0)

同时也作为UseChargeDrain耗能状态持续时间的参考值之一

(算法为RechargeTime * ChargeToDrainRatio)

特殊值-1代表0CD,否则至少要走一轮图标上加载的时间

超出最大值则同-1的情况表现

UseChargeDrain=<boolean>

是否为蓄能式超武

(def=no)

效果为第一次发射后CD不是一次性重置

而是遵照[General] -> ChargeToDrainRatio的比率计算耗能时间

第二次释放该超武才能“停止”耗能转为蓄能状态

也因此可以在第一次加载好后

释放(耗能状态) > 第二次释放,实际为“取消”(蓄能状态) > 释放(耗能状态) > ......

以此无限释放

只有FireStorm类超武切实适合这个功能

典型应用

FS引擎FireStorm超武

- Bug / Feature -

这个逻辑会导致一些赋予1次超武使用权的行为实际上无限可用

例如https://www.bilibili.com/opus/688326933636710403

此外,心灵支配和闪电风暴这样同类之间通过程序内的全局变量互相禁用的超武也可以借此释放,不过只能释放原超武

当然,其他非手动的超武释放方式同样可以实现,并且不限制于仅能使用同一超武

但这个禁用实际上是Westwood对原逻辑运作的保障,越过禁用并不代表就能正常多个地点同时释放这两类超武

例如它们如果没有结束就被强制在另一处释放,那么会刷新生效位置到新的地方,而不是另一处并行释放另一个

Type=<type>

超武的类型

(def=none)

Action=<action>

鼠标动作

green

典型应用是各种原版引擎和NP引擎时代的光标挂超武跳板,不过实际上都只能算摆拍

原版下大多Action同时自带逻辑工作效果,也就是给超武写个Sell那么超武发射也会卖掉建筑,对应的这会让AI使用的时候识别出错导致IE

Ares0.1开始允许使用Cursor与NoCursor设定与Action不关联的光标图像

Ares0.D新增自定义鼠标动作,详见Ares说明书

SidebarImage=<Cameo>

超武图标,填SHP文件名,使用cameo.pal作为色盘

(def=XXICON)

对于填写了一个sidencX.mix等加载存在问题的shp的超武只有在“第二局”游戏中才不会显示为xxicon.shp而是正常读取

这类“第二局”问题对于使用XNA CNCNet Client的用户倒是大抵只有战役重开和游戏内载入存档才会遇到

Ares0.1开始允许自定义图标色盘

Ares0.2开始允许使用256索引PCX作为图标抛弃SHP格式

PhobosBuild0开始更是允许使用24位全彩RGB的PCX文件作为图标

PreClick=<boolean>

是否为分步超武首先点击的超武

(def=no)

实际效果是该超武第一次加载完毕后每次正常发射CD不会归零

典型应用

Ra2引擎ChronoSphere超武

【被Ares0.2从硬编码层面废弃了】

PostClick=<boolean>

是否为分步超武之后点击的超武

(def=no)

效果为自身发射时重置PreDependent指定超武的CD

-Bug-

只有这句没有PreDependent或PreDependent指向不明确会导致IE

典型应用

Ra2引擎ChronoWarp超武

【被Ares0.2从硬编码层面废弃了】

PreDependent=<SuperWeapon[Type]Name>

[SuperWeaponType] -> PostClick=yes时该超武与哪个超武关联

(def=none)

实际上是单向性该超武发射后重置对应Type超武的CD而自己无需Recharge,超武建筑也不会显示超武冷却的动画

超武第一次加载完毕后每次正常发射CD不会归零,也就是两句连用可以达到PreClick的效果并额外重置一个超武的CD

典型应用

Ra2引擎ChronoWarp超武

【被Ares0.2从硬编码层面废弃了】



[SuperWeaponType] -> PreDependent=的标准格式如下

[SWPreSpecial]
PreClick=yes
Type=SWPreType

[SWPostSpecial]
PostClick=yes
PreDependent=SWPreType

如果不存在目标Type会导致崩溃

如果存在多个使用目标Type的超武则只影响注册表顺序可找到的第一项



拿原版ChronoSphere与ChonoWarp的关联讲解一下PreClick、PreDependent & PostClick、Type=ChonoSphere的运作方式

【1】[ChronoSphereSpecial] -> Type=ChronoSphere发射

1.由于PreClick=yes一句的存在所以[ChronoSphereSpecial]充能进度不清空

2.由于Type=ChronoSphere于是切换[SuperWeaponTypes]注册表中可找到的第一个Type=ChronoWarp对象

【2】[ChronoWarpSpecial] -> Type=ChronoWarp瞄准

1.发射

-> [ChronoSphereSpecial]进入Recharge,因为[ChronoWarpSpecial]使用PostClick开启了清空PreDependent=对象充能进度的效果,Recharge结束后回到第一步

2.取消

-> [ChronoSphereSpecial]仍然Ready,因为[ChronoWarpSpecial]并未发射,没有清空[ChronoSphereSpecial]超武充能进度的效果,下一次点击超武回到第一步


其中【1】.2.Type=ChronoSphere的超武发射后切换Type=ChronoWarp的超武为该Type硬编码行为,与Pre/PostClick逻辑无关

Ares0.2已允许此类超武微观定义关联,详见说明书,如果你获得本文档的同时没有配套这一文件,说明你的文档并非从原正式发布渠道获取,而是已经被第三方未经许可拆分修改过的



ShowTimer=<boolean>

该超武是否在屏幕右下角显示倒计时

(def=no)

DisableableFromShell=<boolean>

该超武是否需要勾选超级武器按钮否则无法出现

(def=no)

-Bug-

如果超武由于没有勾选超级武器按钮而无法出现则给予该超武的建筑也不可直接建造

在Yr中于[AI] -> BuildTech=<List of BuildingTypes>列出的建筑玩家可建造但不勾选超武按钮则超武不出现

红警2/尤里的复仇中如果玩家在遭遇战不勾选超武按钮,则战役中超武也无法使用。

通过在rules中设置DisableableFromShell=no

在所有地图模式ini中内置为DisableableFromShell=yes可以解决该问题

典型应用 :

YR引擎力场护盾超武和高科建筑

ManualControl=<boolean>

该超武是否AuxBuilding充满时开始加载,RA2下永远无法充满

(def=no)

该逻辑与AuxBuilding逻辑共同使用于TS的化学飞弹超武

当Weeder矿场被泰伯利亚废矿填满时方才允许化学飞弹超武加载

Westwood在[ChemicalSpecial]上方注释"The logic will fail if this weapon is 'powered'"

典型应用

TS引擎化学飞弹超武

RA2下如果使用会导致超武永远无法加载,毕竟Weeds整套逻辑全完蛋了不可能充满

PhobosBuild39开始复原了Weeder与Veins相关的逻辑,并拓展了该逻辑,详见Phobos说明书

AuxBuilding=<BuildingType>

该超武的辅助建筑

(def=none)

除拥有挂载该超武的建筑外必须还有该建筑才能拥有该超武

典型应用

TS引擎化学飞弹超武

-Bug-

如果该超武是由加载物提供的,那么AuxBuilding无效!

Ares0.9修复)

加载物不支持作为AuxBuilding中的合法值

(PhobosBuild#45修复)

WeaponType=<Weapon>

[SuperWeaponType] -> Type=MultiMissile时该武器被用于瞄准目标

green

此处的Weapon为子武器型武器,需要注册

无法绘制EBolt、Laser、RadBeam、Beam、RailGunLaser、ProjectileParticles等武器特效

正常绘制LineTrail、TrailerAnim、Trailer、Shadow、ProjectileImage、Parachuted等抛射体特效

原版核弹为Vertical抛射体,因此竖直向上飞行直到爆炸

但目标瞄准依然有效,因此向下的核弹正常降落于光标处

若武器抛射体为ROT/Inviso式则直接飞向目标

若抛射体为Arcing类,则视目标距离向上飞行一段时间落回原地并命中发射建筑

开火方向为正上方因此Vertical和Arcing只向上飞

不过由于CourseLockDuration的诡异编码行为,直接用CourseLockDuration实现ROT型垂发导弹实际会竖直上升一段时间后偏离

典型应用

TS引擎化学飞弹超武、集束导弹超武

RA2引擎核弹超武

YR新增部分

AIDefendAgainst=<boolean>

该超武的发射是否刺激AI使用力场护盾

(def=no)

SpecialSound=<sound>

指定Type=ForceShield超武效果即将结束时播放的声音,播放时间由[General] -> ForceShieldPlayFadeSoundTime=决定

(def=none)

典型应用

YR引擎力场护盾超武

StartSound=<sound>

指定Type=ForceShield超武释放时播放的声音

(def=none)

典型应用

YR引擎力场护盾超武

FlashSidebarTabFrames=<int>

指定该超武在加载好后图标闪烁时长

(def=-1)

典型应用

YR引擎力场护盾超武、间谍飞机(空袭超武)、心灵探测超武

Range=<float>

该超武释放前以光标为圆心作圆用于瞄准的半径

[BuildingType] -> HasRadialIndicator=yes一个尿性,原版下显示中切屏会直接IE

(def=0)

LineMultiplier=<int>

瞄准圆圆环的密度

(def=0)

写太大游戏会卡


[BuildingType]

rules

SuperWeapon=<SuperWeaponType>

该建筑挂载的第一个超武

(def=none)

SuperWeapon2=<SuperWeaponType>

该建筑挂载的第二个超武

(def=none)

RevealToAll=<boolean>

该建筑是否建造后给予敌方雷达标记、语音警告和向敌方揭露周围Sight范围内的战争迷雾

(def=no)

ChargedAnimTime=<float>

在超武充能结束前多久开始播放就绪动画,单位为分钟

(def=0)

仅读取第一超武

NukeSilo=<boolean>

是否为导弹发射井

(def=no)

Ares下不设定为导弹发射井的建筑无法发射Type=MultiMissile的超武

Ares0.2已添加[SuperWeaponType] -> Nuke.SiloLaunch=<boolean>设定

EMPulseCannon=<boolean>

是否为EMP炮炮台

(def=no)

Ares下EMP炮超武开火使用的武器(Primary)没有Report将会导致IE

还有一个附加功能是[BuildingType] -> EMPulseCannon=yes将除超武引发以外无法用主武攻击

Ares0.8复原了EMPulseCannon超武相关的逻辑并处理了Report问题

PhobosBuild45允许设定使用哪一个武器来发射而不再仅限Primary

art

SuperAnim=<animation>

超武加载

未达到ChargedAnimTime时【保持】

的动画

SuperAnimTwo=<animation>

超武加载

刚达到ChargedAnimTime时【转换】

的动画

SuperAnimThree=<animation>

超武加载

已超过ChargedAnimTime时【保持】

的动画

SuperAnimFour=<animation>

超武发射

返回到ChargedAnimTime前【转换】

的动画

SuperAnim/Two/Three/Four\YSort/ZAdjust等更多内容