红色警戒2 Rulesmd.ini [projectiles]标签词典 您所在的位置:网站首页 红警警戒攻击无效 红色警戒2 Rulesmd.ini [projectiles]标签词典

红色警戒2 Rulesmd.ini [projectiles]标签词典

2024-05-24 20:50| 来源: 网络整理| 查看: 265

[projectiles]

 

Inviso=yes ;默认no

当为yes时,规定该射弹没有图像并且不投射阴影,优先级高于Image=。

Inviso=yes时弹体的Speed将会无视武器和抛射体中任何关于速度与加速度方面以及弹体曲线飞行路径等的设定,使武器开火后瞬间命中目标,实际上此类武器每次的爆炸动画绘制位置都会有细微的偏差。

 

Image=(filename)

该射弹的图像。Image需来自art(md).ini来定义属性。Image一般取自shp动画,也能使用VXL模型。

当设置了图像,需设定该射弹的运行轨迹,比如ROT等,否则射弹轨迹无法正常到达目标点。

art(md).ini中带Rotates=yes的射弹使用其图像的32帧来表示在不同方向上的移动,每个方向取用一帧。这意味着这些射弹不支持设置动画,为静态图像。

Ares有个标签可使射弹在各方向支持动画:

AnimLength= (integer - frames)

射弹每个面的动画帧数,设置后可使射弹播放动画。播放速度为每动画帧一帧。动画不能保证从第一帧开始播放。默认值为1。

在art(md).ini中该射弹需要Rotates=yes,AnimRate不能为0,否则IE。

 

Color=(Gold|DarkRed|DarkBlue|DarkSky|DarkGreen|Orange|Magenta|Purple)

指定要在此射弹图像的可上色部分使用的颜色。仅适用于voxel射弹。

 

FirersPalette= (boolean) ;默认no。

如果设置,无论该弹体图像代码中的设置如何,弹体都将重新上色为单位所属色。

注意:基于Voxel的射弹总是被重新上色为橙色而不是玩家的所属色。

 

AttachedSystem= (ParticleSystemType)     (Ares标签)该抛射体使用该粒子系统,只有BehavesLike=smoke支持。

抛射体在飞向目标的过程中产生烟雾粒子,抛射体图像同样支持SHP和Voxel。

Shadow= (boolean) ;默认no。

抛射体的图像是否在地面上绘制阴影。

 

Scalable=yes ;默认no

定义Trailer(尾焰)的SpawnDelay(绘制尾焰的延迟,可以理解为尾焰绘制的间距)是否取决于地图上当前的射弹数量。(如果该射弹带尾焰的话)

如果地图上存在7个或更少的任何Scalable=yes类型的射弹,则生成两个Trailer之间的延迟完全由SpawnDelay确定。超过7个时,延迟会动态增加。

SpawnDelay增加值:(Number of Scalable Projectiles - 5) / 3  (直接取整)

 

Arcing=true ;默认no

如果为yes,射弹将以抛物线的平滑曲线路径飞向其目标。通常抛物线的高度取决于到目标的距离:距离越远,弧越高。弧的曲率看起来是固定的。

Arcing=yes的弹丸以 50的固定速度行进,忽略Acceleration和武器的Speed。它还使武器能够比其射程定义的数值稍微远一些,并且这个额外的距离只会随着海拔的增加(即从悬崖顶部)而增加。这个标签会使弹丸降低命中率,距离越远效果越明显。

无法正常从地面攻击到空中单位,因为射弹总是向地面坠落。

 

ROT=(integer)

非零值意味着该射弹可以瞄准其目标,射弹会向上飞行调整角度以弧形击中目标。

ROT值越低弹体向目标飞行曲线越平滑,所以也会因为角度等问题导致命中率越低,因此会出现各种奇奇怪怪的行为。ROT值越高弹体飞行弧线越不“平滑”,意味着弹体在命中目标前可拐弯的角度越大甚至强行切换方位以确保能命中目标。

设置预定义的飞行路径(通过Arcing= yes / Lobber=yes和类似方法)将使游戏忽略射弹上设置的任何ROT;前两个标签确定的飞行路径优先。

如果目标在此弹丸击中之前被摧毁,弹丸将简单地消失或在飞行中爆炸。

ROT=0 :将禁用追踪行为并使弹丸直线飞行,请注意,这种直线飞行方法一直存在问题。

ROT=1:射弹将沿着似乎是一条直线到达它的目标。实际上,在远距离和低速下,弹丸也会调整其轨迹以适应目标位置的变化,但这通常是小幅度的。

弹丸不会与发射点有高度偏差,因此以特定角度或距离发射时会出现奇怪的行为,尤其发射者和目标不在一个高度时最明显。他们有时会“越过”他们的目标并飞越地图边界,但稍后会重新进入地图,击中他们的目标。

在飞行特性方面也有其他不寻常的行为,特别是当 ROT 为 1 或0与AA =yes或Inaccurate =yes / FlakScatter =yes结合时,尽管可能所有 ROT 大于 0 的值和 Inaccurate 或 FlakScatter结合都会有不同的问题 (需要测试)。可能将产生极端形式的“盘旋导弹错误”或出膛时直接命中发射者(炸膛)等奇怪行为。

将 ROT 设置为 1 似乎会使射弹默认为高加速度,这意味着它将以低速发射并在向目标移动时加速,通过修改Acceleration标签可以防止这种情况发生,以产生更平稳的飞行。

在飞机上:带有 ROT小于 2 的射弹的武器对地攻击时,将导致飞机以单个射弹的扫射模式发射武器,直到武器已发射五次、目标被摧毁或单位中止其攻击任务。它将对飞机携带的每个弹药重复此操作。这与轰炸机常见的射击模式是一致的。

不同之处在于ROT=1在一定程度上射向目标,而ROT=0则直接落到地面上。

 

VeryHigh=yes ;默认no

指定射弹在高巡航高度飞行,这意味着它的飞行或路径不受任何其他障碍或规则的影响。

 

Ranged=yes ;默认no。

这个抛射体是否会耗尽燃料然后爆炸。

一般用于防止抛射体在不准确时未击中目标后会无限追击。(所有弹丸都应在 255 帧后爆炸。)

 

Arm=(integer);默认0

指定此射弹能够引爆其弹头之前的延迟。弹丸仍然可以通过撞击其目标或障碍物(例如悬崖)而忽略这个延迟提前引爆,并具有防止追踪弹丸在越过其预期目标时引爆的效果(常见于低ROT弹丸)。

Arm的数值设定会影响到弹体飞行特性,比如说,Arm值设置很高,而弹体飞行距离不够长的时候,当弹体已经飞行至目标的那个格子上方时,此时弹体未碰撞到任何物体,但是这个引爆延迟帧数又未到,弹体甚至会自己在空中强行拐弯来消耗这个时间再至目标处爆炸。

 

CourseLockDuration=(integer)

以帧为单位,指定该射弹将在发射后先保持直线飞行一段距离再开始瞄准目标进行航向偏移的时间。

要使此参数生效,还需要将射弹的“Acceleration”属性值设置为高于其默认值 3。(?)

 

Acceleration=(integer);默认值为3

此标签控制应用于此射弹武器的加速度。

如果此值为 0,则射弹将生成,但会停留在发射炮口的位置。一个例外似乎是当这样的射弹被发射并且攻击的目标处于不同的高度时,弹丸将相应地上升或下降以保持与目标的高度相同。只有当这些射弹直接进入它们所要攻击的目标时,这个单位才能被此类射弹击中,否则不会对任何人造成任何伤害。

目前尚不清楚负加速度会导致什么结果,但已经测试过,由 AircraftTypes 发射的加速度值为-200的弹丸会在大圆圈内飞过,并且很少会真正击中目标。值 -2147483648 导致弹丸立即击中目标。

 

Floater=yes ;默认no。

为yes时指定该射弹在行进时不会偏离其高度(普通射弹在到达时会“坠落”到目标)。这意味着它通常会一直移动,直到撞到东西。

 (实际测试中这个标签未发现有什么作用,原版在武器和抛射体均出现过,如果有知道实际作用的大佬欢迎告知)

Level=yes ;默认no。

为yes时,射弹只是沿直线向其目标行进。此弹丸无法在水域之外的地面存活。

它似乎在模拟ROT=0和1射弹的弹道,和Arcing=yes连用时鱼雷会在平面上以圆弧轨迹向目标行进,注意,这会降低命中率。

 

Vertical=yes ;默认no。

指定此射弹沿垂直直线向上或向下移动。此标签还需要在使用它的射弹(有image)上设置 DetonationAltitude,如果未设置射弹会在出膛时立即引爆(会伤害到开火者)。

这种射弹旨在用作坠落炸弹,并用于Nuke的向上/向下飞弹的特殊情况。

当被其他武器发射时,这些射弹会水平地朝发射者的方向飞行(?)。在这种情况下,它们永远不会引爆,除非通过其他方式(例如地形碰撞或ProjectileRange)强制引爆,如果目标处于不同的高度,则永远不会击中目标,直线飞行越过所有物体直到他们离开地图。

需要测试的几种情况:(可能有错误,待后期慢慢尝试)

1.当与ROT大于1结合使用时,它似乎优先于 Vertical,将射弹变成普通的巡航射弹。ROT=1需要进一步调查。

2.与Arcing结合使用时,会产生不可预见的弹体和武器行为:弹体将不可见,不会造成任何伤害,并且在几次射击后武器将无法发射。

3.可以使用在AirburstWeapons上,从它们的分裂高度以正确的朝向笔直向下落。

4.看起来,建筑物也不能发射这些射弹,尽管 1x1 建筑物可能值得一试。

5.在 BalloonHover=yes 的 JumpJet 单位使用的射弹上设置 Vertical=no 将阻止它尝试直接悬停在其目标上,即使它在射程内。

6.如果武器是由 AircraftType 发射的,它会产生“持续俯冲”效果,而不仅仅是为了地形碰撞。

 

Dropping=yes ;默认no。

此射弹从发射时的初始高度落下,就像从飞机上投下的炸弹一样。会导致射弹在发射后立即引爆(不会伤害到开火者,飞机除外)。常用于触发某些分裂武器或溅射武器。

 

DetonationAltitude=(integer)

指定抛射体高于地面的安全高度,以leptons为单位。设置Vertical=yes的抛射体在达到或产生在此高度及以上时会立即引爆。因此,为了安全起见,该值应始终设置为高于发射者的高度(以及因此产生射弹的高度),除非有人设法在低于地面高度的情况下生成射弹。

DetonationAltitude 应该可以设置在其他标签的抛射体上,并会产生预期的效果,使它们在达到一定高度时引爆。(Dropping不行)

 

Degenerates=(boolean) ;未找到原版规则文件中有此标签的实际运用。

弹丸在行进时是否会失去力量。如果为“yes”,则 [General] 中 MissileSpeedVar=.25 (导弹的速度波动百分比)和 MissileROTVar=.25(导弹的转弯率波动百分比) 语句指定的值将应用于此抛射体。

武器每帧损失 1 点伤害,直到其伤害降至 5。仅适用于抛射体包含Dropping=yes(?)、ROT大于 0 或Ranged=yes的情况。

 

Inaccurate=(boolean)

射弹发射方式是否为散射,这将导致射弹不会瞄准。请注意,即使Inaccurate=no ,也可以认为射弹是不准确的(?)。

如果设置,射弹按照[CombatDamage]>BallisticScatter=1.0或HomingScatter=2.0(红警2似乎未使用这个定义)标志中定义的数值规定随机散射的范围。

BallisticScatter一般作用于抛射体包含Inviso=yes。

射弹不会捕捉到目标,因此在距离目标很短的距离内引爆时不会被视为直接命中。这意味着没有Spread或CellSpread的武器可能不会损坏目标。

Ares有两个标签可以微观定义抛射体的弹道分布,这两个标签要起作用抛射体需要同时包含Inaccurate=yes和Arcing=yes。

BallisticScatter.Min= (float - cell range)

弹道散布最小范围。如果有FlakScatter=no或者Invisible=yes就默认为[CombatDamage]>BallisticScatter/2,否则是0。

BallisticScatter.Max= (float - cell range)

弹道散布最大范围。默认[CombatDamage]>BallisticScatter

 

FlakScatter=yes ;默认no。

弹头随机引爆在目标周围的单元格内,这将导致命中不准确。这一般用于产生“高射炮”效果的轻微误差。因此弹头最好设置CellSpread,否则命中率感人。

 

SubjectToCliffs=(boolean) ;默认no。

射弹是否可以飞越悬崖。一般作用于未规定ROT的弹体,因为带ROT值的弹体被假定能够改变其飞行路径避开悬崖。

SubjectToElevation=(boolean) ;默认no。

射弹在向与自身不同高度的目标射击时是否根据[ElevationModel]获得/失去射程。

[ElevationModel] ;Rulesmd.ini原版数据

ElevationIncrement=4

发射者和目标之间射程加成的级别数。

ElevationIncrementBonus=2

发射者和目标之间每个高度增量(非地图标高)获得的射程加成值。

ElevationBonusCap=2

限制加成范围,以防止特殊情况下平均扫描工作度增加。

当为yes时除了上述射程变化外,还会出现原本无法攻击围墙内的单位因为攻击者站在了稍高一些的地势处就可以攻击了。

SubjectToWalls=(boolean) ;默认no。

射弹是否可以被其路径中的围墙阻挡。如果为yes,发射者只有在找到没有被墙壁阻挡的发射位置时才会发射。

弹头设置有Wall =yes的武器将能够瞄准墙壁,抛物线或某些移动的弹体会击中墙壁。

SubjectToTrenches=(boolean) ;默认yes。 (Ares标签)

弹体是否会穿过建筑掩体攻击到里面的驻军。no为可以穿过。

SubjectToBuildings= (boolean) ;默认no。 (Ares标签)

该抛射体是否会被建筑物阻挡。

SolidLevel= (integer) ;默认0   (Ares标签)

当设定SubjectToBuildings=yes时,若该抛射体的SolidLevel(坚固程度)值高于或等于建筑的SolidLevel值,那么攻击者将使用这个武器直接对被建筑阻挡的目标进行攻击,尝试摧毁建筑或抛射体越过建筑(与建筑的SolidHeight有关,即阻挡高度),如果低于建筑的坚固等级,那么就不能开火,必须绕过建筑进行攻击。

IgnoresFirestorm=yes ;默认no

抛射体可以无视火风暴围墙。(原版无效)

该逻辑需要使用Ares启用火风暴超武才有效,有Firestorm.Wall=yes的建筑将会被视为火风暴围墙并且自动连接。火风暴围墙启用后会消灭越过它的任何东西。

AA=yes ;默认no

允许抛射体攻击空中飞行单位。

注意:虽然爱国者导弹和高射炮上的 AA 设置为“yes”,但它们实际上不会向降落的伞兵开火。这是由于涉及一种特殊的逻辑,将伞兵归类为地面单位。为了让这些防御系统按应有的方式向伞兵开火,必须在[AAHeatSeeker]和[FlakProj]上都设置AG=yes。LandTargeting将阻止这些对空防御向地面单位开火。

AG=no ;默认yes

武器无法对地面强制开火,但它们仍然可以攻击地面单位(树木等地形对象不算地面单位)。要使武器完全无法向地面单位开火,必须在该武器的使用者(TechnoType) 上将 LandTargeting 设置为“1” 。

Ares分裂与空爆逻辑:

Splits=yes

启用分裂逻辑。武器弹头会在击中目标或障碍物后爆炸且分裂子武器。

当与Airburst=yes连用时弹头在目标上空爆炸,可与Ranged=yes和ProjectileRange (这个标签应用于武器上)连用定义抛射体飞行ProjectileRange的距离后自行引爆。

因此ProjectileRange要比发射者到攻击者之间的距离小,否则无用。

启用Splits=yes逻辑的子武器(AirburstWeapon)要么向初始目标前进,要么瞄准附近不超过2×2范围的新目标,要么撞击7×7区域中的一个随机单位。子武器弹头上的Verses比率和AffectsEnemies类设置会影响目标选择。

在Ares中,若子武器的抛射体有AA=yes,子武器只会选择空中单位。(这个未测试)

Cluster=(integer)

分裂的子武器数量,若无Splits=yes此标签无效。小于1的值代表没有AirburstWeapon。

 

RetargetAccuracy= (float - percentage)

分裂出来的子武器攻击原定目标的概率。有效值为0到1之间。值越高,越倾向攻击原定目标。默认0,一定会重新选择目标(如果该区域只有这一个单位那么还是会攻击这个单位)。若无Splits=yes这个标签设置无效。

 

RetargetSelf= (boolean) 分裂出的子武器是否会向发射者本身攻击。默认yes,不会向发射者攻击,但仍有可能会因为子武器选择了发射者的单元格而造成范围误伤。若无Splits=yes这个标签设置无效。

 

Airburst=yes

启用空爆逻辑。

武器弹头无需击中目标就能爆炸且分裂子武器,可配合VeryHigh=yes使爆炸高度变得很高。

空爆逻辑子武器的抛射体带AA=yes无效,只会攻击地面。

 

AirburstSpread= (float - cell range)

空爆逻辑子武器的覆盖半径。向这个范围内的每个格子发射一枚子武器,默认1.5(3x3)。 若子武器设置了ROT大于0的值,此范围会有偏差。只能和Airburst=yes连用,不能和Splits=yes混用。

AirburstSpread的值决定子武器数量:(仅供参考)

AirburstSpread=0-1之间,子武器数量为1.

AirburstSpread=1,子武器数量为5。

AirburstSpread=1.5,子武器数量为9.

AirburstSpread=2,子武器数量为13.

以此类推,当AirburstSpread数值大于11时游戏有可能会发生错误。

AirburstSpread弹体大致分布格子

AirburstWeapon=(Weapon)

空爆/分裂逻辑启用后分裂出的子武器名称。

AirburstWeapon不要设置低于19的速度值,否则逻辑将表现不稳定。

此武器需注册在[WeaponTypes]注册表里(Ares功能)或挂载在某一单位上,否则游戏会因为无法加载这个武器的原因报错。

 

AroundTarget= (boolean)

决定分裂或空爆子武器的散布原点,yes以目标为原点散布子武器,no则以抛体爆炸处为原点。空爆逻辑默认为no,分裂逻辑默认为yes。

 

ShrapnelWeapon=(Weapon)

溅射武器名称。弹头将在爆炸时从撞击点发射此武器,前提撞击点不在建筑内或光秃秃的单元格。

Phobos有两个标签可改变撞击点的溅射逻辑:

Shrapnel.AffectsGround=true  ;默认false

弹头在啥也没有的空地上爆炸也能分裂出此武器。

Shrapnel.AffectsBuildings=true  ;默认false

弹头在建筑内爆炸也能分裂出此武器。建筑的占地格子会影响施加给该建筑的ShrapnelWeapon数量,详情见ShrapnelCount。

此武器适用于IsLaser=true和IsElectricBolt=true逻辑的武器类型。其他RadBeam、Sonic、MagBeam或Wave等均不适用,并非说完全无效,而是无法正确绘制图像或出现其他表现不稳定的情况。

带image的抛射体估计能应用于此武器,毕竟和AirburstWeapon有相通部分。

此武器需注册在[WeaponTypes]注册表里(Ares功能)或挂载在某一单位上,否则游戏会因为无法加载这个武器的原因报错。

 

ShrapnelCount=(Signed integers)

定义ShrapnelWeapon的数量,填整数。

ShrapnelWeapon会优先寻找就近的目标(敌方目标或树木等地形对象),每个目标只会被攻击一次,如果没有目标或目标数量不足那剩余的武器就随机攻击射程内的单元格,会避开友军,当然ShrapnelWeapon数量过多时有时候还是会误伤到随机攻击的那个单元格的友军。

对建筑有特殊效果,建筑占地格子数会影响到武器的施加数量选择。假设ShrapnelCount=5,这个武器在射程内的攻击目标有两个,一个是2x2的建筑,一个是作战单位或地形对象,那么分裂武器会用一个来攻击作战单位或地形对象,另外4个一起“照顾”建筑,对建筑造成4倍伤害!总而言之,溅射武器会尽量将目标分散到可攻击范围内的单位或有物体存在的格子上做到“雨露均沾”,如果目标单位数量不足,就会将多余的数量施加在距离最近的建筑上,避免溅射武器的浪费,此建筑被施加的数量不超过建筑占地格子数。所以有时候直接用主武器攻击此类建筑反而没有溅射武器伤害高!

正数:就按字面意思表示溅射的数量。

负数:表示“从它的绝对值中减去父武器的射程”,例如,ShrapnelCount=-8将发射8 - 父武器的射程的数量,这个”父武器的射程”在实际测试中是指发射者和目标之间的距离,并非父武器定义的Range值。

0:会自动选择发射数量对射程内有物体存在的单元格攻击一次,因此建筑同样会被施加射程内该建筑的占地格子数的武器数量,比如说建筑占地为2X2,会被施加4次伤害,如果这个2X2有一半超出了射程,就只施加能攻击到的两格的数量。

 

Trajectory=Straight   (Phobos标签)

定义抛射体轨迹为直线射击,不能和Arcing、ROT或Inviso混用。

(此抛射体轨迹发挥不怎么稳定,对空攻击移速快的飞行单位时有很大的概率打不中,可以配合Ranged=yes来改善一下命中率)

 

Trajectory=Bombard   (Phobos标签)

Trajectory.Bombard.Height=(double) ;默认0

定义抛射体轨迹为轰击弹道,类似直线弹道,但是攻击目标上方的坐标点(该坐标点的高度由Trajectory.Bombard.Height决定)。抛射体先直线飞行,接近坐标点后会自由落体,并在接触到地面或目标后爆炸。因此该抛射体轨迹适用于飞行单位。

 

Trajectory.Speed=(floating point value) ;默认100.0

自定义抛射体轨迹的初始速度。(仅适用于上述两条自定义轨迹)

 

Phobos抛射体拦截逻辑:

Interceptable=true   ;默认false

该抛射体可以被拦截。只有定义ROT大于0的抛射体才有效果,其他Arcing=true等的抛射体会有不同程度的问题或无效。

Interceptable.DeleteOnIntercept=(boolean) ;默认false

当为true时,该抛射体被拦截后会直接消失;为false时该抛射体被拦截后会正常引爆。 

若拦截器设置了Interceptor.DeleteOnIntercept将会覆盖此处的逻辑。

Interceptable.WeaponOverride=(Weapon)

此抛射体被拦截后的爆炸武器(前提是会爆炸)。此武器的Warhead将被拦截器上Interceptor.WeaponOverride的设置覆盖。

Strength=(integer) ;默认0,该抛射体的生命值。

Armor=(ArmorType);该抛射体的装甲。

拦截抛射体逻辑需在拦截器单位上单独设置逻辑,未设置拦截逻辑的单位无法拦截抛射体。

Bouncy=yes ;似乎已过时不起作用

如果启用,使武器射弹容易受到弹性的影响,默认情况下,这会使射弹在撞击时弹跳一小段距离。但是,悬崖和敌方建筑等一些障碍物通常会阻止射弹前进(导致其引爆)。坡度还可以改变弹丸反弹的方向,也可以影响弹丸的速度。

在红色警戒 2和Yuri's Revenge中,虽然读取了这个标志,但没有代码存在。

Elasticity=(point) ;似乎已过时不起作用

此标志指定弹丸的弹力范围为 0.0 - 1.0(默认为 0.75)。

Proximity= (boolean) ;这个标签多次存在,但似乎已过时不起作用。(如果有知道具体用途的大佬欢迎告知。)

根据rules(md).ini的注释,这个标签应该是定义射弹在到达目标所在的单元格时立即引爆,不一定非要击中目标点。但是,在读取标签时,它没有与之关联的逻辑,因此它什么也不做。

High=yes

抛射体将忽略/摧毁其路径中的围墙。如果为no,发射者只有在没有被墙壁阻挡的位置时才会发射武器。此标签已过时,被SubjectToWalls=取代。

由于projectile组合太多,效果也不同,因此需要测试的地方太多,所以最复杂,因此本专栏难免会有错误之处和需要修正的地方,欢迎协助修正。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有