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

7.超級武器詞典

於 2025年5月26日 (一) 15:15 由 CCC1478留言 | 貢獻 所作的修訂 (已保护“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等更多內容