第6页:
展开How to change special power templates如何改变特殊能力模板。
特殊能力模板是游戏中最复杂也最强大的部分。
用这些模板,你基本上可以无所不能,但要小心,它们也不容易对付。
对应的文件是GlobalData/SpecialPowerTemplates.xml.
从一个简单的例子开始:
<SpecialPowerTemplate
id=”SpecialPower_UnpackReplaceSelf”
TargetType=”LOCATION_AND_ANGLE”
NameOfVoiceNameToUseAsInitiateIntendToDoVoice=”VoiceDeploy”
RadiusCursorRadius=”1″
PreventConditions=”BOOBY_TRAPPED IS_BEING_DRAGGED SOLD”
Flags=”WATER_OK FOGGED_SHROUDED_CELLS_OK CANNOT_LEAVE_ENCLOSURE CAN_NOT_BE_SCRAMBLED”
WaypointModeTerminal=”false” >
<GameDependency
id=”SpecialPower_UnpackReplaceSelf_GameDependency”
ForbiddenModelConditions=”UNPACKING”/>
</SpecialPowerTemplate>
上述代码是一个MCV的展开特殊能力. ‘id=’必须是第一无二的,以便我们以后使用这个模板.
‘TargetType=’是一个目标选择系统,定义了当前的支援/特殊能力可以作用的对象. 被CAPS的关键词是被硬编码的动作,不能被重定义,但是这里有很多,所以我们只需去学习使用.所以,MCV展开的目标可以使任何地点/多角度的方位.
‘NameOfVoiceNameToUseAsInitiateIntendToDoVoice’字段定义了该能力模板执行时所播放的声音.这里的是MCV在展开时的音效.
‘RadiusCursorRadius=’影响你的光标的外形.对于一些支援能力,你的光标会变为一些不同的形状(比如核弹).这个标签定义了在使用在这个能力时,你的光标如何显示.
‘PreventConditions=’这个很重要.一个情况过滤器,来判断特殊能力动作是否可执行.我们可以看到,MCV不能展开的情况被定义了.例如‘IS_BEING_DRAGGED’,这个情况指的是MCV被天启的鱼叉捕获, ‘SOLD’指的是你买掉总部的时候,还想使用它的打包/部署功能.
‘Flags=’定义了其他的情况,这些情况被‘PreventConditions=’定义为限制条件.这个准确的保证了在特定的情况下,事情会无误的发生.
比如, ‘WATER_OK’表示,MCV可以在水面上展开.现在它当然可以按照缺省值来做,但在某些情况下,最好你最好保证事情会按你想的发展.
‘GameDependency’另一个特殊的功能.在当前的情况下,来阻止模型错误的发生.
‘ForbiddenModelConditions=”UNPACKING”表示MCV已经在展开时,不能在执行展开/打包动作.
现在我会给一个实实在在的修改例子.
我一直深恶痛疾的,EA这个2B一直不做的就是铁幕根本不是真正的铁幕,很多东西仍能够作用于这层神圣不可侵犯的护盾.
所以我要让铁幕重新雄起,就像在2代中一样,绝对的免疫.有两个点会影响它,我要修改的就是缩小光线和超时空转换.
到缩小光线(shrink ray)的模板,如下:
<SpecialPowerTemplate
id=”SpecialPower_ShrinkRay”
ReloadTime=”10s”
TargetType=”OBJECT”
NameOfVoiceNameToUseAsInitiateIntendToDoVoice=”VoiceShrinkRay”
Flags=”NEEDS_OBJECT_FILTER CANNOT_LEAVE_ENCLOSURE”
WaypointModeTerminal=”false” >
<!– must have same object filter as AlliedSupportAircraftShrinkRay –>
<ObjectFilter
Rule=”ANY”
Include=”VEHICLE HUGE_VEHICLE TIME_BOMB”
Exclude=”AIRCRAFT”
StatusBitFlagsExclude=”SUBMERGED AIRBORNE_TARGET”>
</ObjectFilter>
</SpecialPowerTemplate>
我们感兴趣的就是‘ObjectFilter’(目标过滤器),定义了光线可以作用的对象.这里定义的内容是:光线可以射载具,重型载具和时间炸弹,天上飞的和水下潜的它没辙.
现在我要让他在铁幕单位面前也阳痿不举.
于是我找到了硬编码的‘UNDER_IRON_CURTAIN’(铁幕之下)动作/特性条,以及铁幕的激活效果‘IronCurtainEffect’
对缩小光线的操作如下:
<SpecialPowerTemplate
id=”SpecialPower_ShrinkRay”
ReloadTime=”10s”
TargetType=”OBJECT”
NameOfVoiceNameToUseAsInitiateIntendToDoVoice=”VoiceShrinkRay”
Flags=”NEEDS_OBJECT_FILTER CANNOT_LEAVE_ENCLOSURE”
WaypointModeTerminal=”false” >
<!– must have same object filter as AlliedSupportAircraftShrinkRay –>
<ObjectFilter
Rule=”ANY”
Include=”VEHICLE HUGE_VEHICLE TIME_BOMB”
Exclude=”AIRCRAFT”
StatusBitFlagsExclude=”SUBMERGED AIRBORNE_TARGET UNDER_IRON_CURTAIN”>
<ExcludeThing>IronCurtainEffect</ExcludeThing>
</ObjectFilter>
</SpecialPowerTemplate>
我要做的就是把‘UNDER_IRON_CURTAIN’加到例外情况里,这样光线在铁幕单位前就射不了了.( StatusBitFlagsExclude=”SUBMERGED AIRBORNE_TARGET UNDER_IRON_CURTAIN”>)
‘ExcludeThing’也使得光线不能在铁幕效果生效时发射(例如,我正好激活了一个铁幕),同样,对超时空转换,我也这样做了,铁幕单位不会再被超时空转换推倒了. (<ExcludeThing>IronCurtainEffect</ExcludeThing>)
责任编辑:dsgames568