前言，art代码一堆，绝对不要试图在本文中摘取代码从零开始写，请复制原版art已有的项进行修改。


art.ini文件用于指定游戏的图画如何显示到用户的屏幕上。游戏中大部分的图像数据都位于这里。art.ini文件的某些部分甚至用于创建附加的特效，例如播放矿的产生的动画。 


就像rules.ini一样，art.ini文件也由片断组成。每个独立的对象必须拥有自己的片断。然而，在art.ini文件中，片断头更加重要——在绝大多数情况下，它指定了该对象使用的图像。如果某个步兵的片断头叫做“[SOMEGUY]”，那么游戏将希望有个叫做“someguy.shp”的文件能够与之相对应，而这个shp文件中或许包含了显示该步兵单位的所有需要的图像。另外，在rules.ini中，如果一个对象没有“Image=”这一条标签，那么游戏默认使用art.ini中片断头与之相同的代码。如果某个单位的片断头叫做“[MEGATANK]”，那么游戏将会在art.ini中寻找片断头叫做“[MEGATANK]”的片断来决定如何显示该单位，当然最后也会寻找同名的图片。然而，在art.ini文件中动画对象可能使用另外的图像，此时通过“Image=”的值来指定。 


建议不要删除已经存在的片断头，因为游戏会引用某些片断头，删除的话有可能由于游戏找不到其引用的头而导致崩溃。（这句话的意思就是别没事找事胡乱删除原本就有的东西，哪怕你觉得这部分没啥作用……存在必有道理……） 


建筑动画只要加上ShouldUseCellDrawer=false就可以使用CustomPalette


 全局标签 

Cameo= 
指定该单位使用哪个SHP文件作为图标（就是你点的那个东西来建造它）。如果该对象没有图标，游戏默认使用“Missing 
Cameo”图标作为它的图标（就是那个红警2样的图标）。每个图标都必须是SHP格式，并且调色盘要求是红警2的cameo.pal文件。另外，图标的大小要求是60*48像素，即宽60像素，高48像素。

AltCameo= 
指定当该单位升级之后使用的图标。升级是指玩家使用间谍渗透对方的兵营或战车工厂之后，单位所产生的变化。规则和Cameo=标签相同。 

Voxel= 
指定该单位的图像是否是vxl（就是说这个单位是不是使用vxl文件作为图形）。游戏会将它和SHP文件区分对待。某些标签是否起作用取决于这个标签是否设置为“yes”（就是说如果这个标签决定某些涉及vxl的标签是否有效。假如被设置成“no”，那么即使你为那些有关vxl的标签赋了值也无效）。 


Remapable= 
如果被赋值为yes，那么它将告诉游戏该单位的图像文件（SHP或者VXL）包含特殊的红色像素，这些特殊的红色像素会自动变色为玩家拥有的颜色（就是说如果这个标签赋值yes，那么该单位的图像中采用了特殊红色像素的部分会变成你选择的颜色）。这些特殊的像素位于unittem.pal、unitsno.pal和uniturb.pal这几个调色盘文件中，索引号为16至31。 动画无主，动画上的这个颜色不会被替换


Normalized= 
默认否。表示动画播放速度是否随游戏速度改变。
首先遵循Rate或者RandomRate设置的每帧时间（我们称之为T）
如果在动画上设置了Normalized=yes
则根据公式重新计算：

如果T大于5帧（最常见的情况），则重新计算为8×T /（1到6的游戏速度）。


如果T在1到4帧之间，则游戏应用硬编码乘法器，此时不清楚。


由此产生的T是该动画将持续的帧的持续时间。

NewTheater= 
如果被赋值为yes，那么该单位（一般是建筑）将会在不同的场景中使用不同的图形（例如温和气候场景和雪地场景）。
游戏通过判断图像文件名的第二个字母来决定使用哪个图像。
如果某个建筑名叫“[GARADR]”，那么当建筑在雪地场景中建造的时候，游戏会寻找名叫“garadr.shp”的文件作为图像；当建筑在温和气候场景中建造的时候，则寻找“gtradr.shp”。
注意A代表雪地气候，U代表城市场景，T代表温和气候场景。尤里的复仇中，D代表沙漠场景，L代表月球场景。如果游戏找不到与场景相关的图像，那么将默认使用文件名第二个字母为G的图像（也就是普通的场景）。 

ShadowIndex= 
仅用于使用vxl图像的对象，并且包含多个vxl的对象。它决定了哪个vxl会渲染出单位的影子。例如：直升机，直升机的机体大概包含两个vxl，即机身和螺旋桨。ShadowIndex=决定了游戏到底是绘制机身的影子还是螺旋桨的影子。 


DemandLoad= 
可以被赋值为true或者false。如果设置成true，游戏将会在装载“Loading…”那个画面的时候预载入图像而不是在建造的载入图像。一般用于平民建筑。（这是当然的！你要是打算在那个“Loading…”画面的时候悠哉悠哉地洗个澡的话，就随便你设置……） 


TurretOffset= 
指定单位的炮塔位于什么地方，沿着单位的中轴线。换句话说，炮塔距离前后有多远。默认值为0（正中心），单位是“lepton”，其中，256个lepton等于一格。就是说如果某个机体前后长度为1格，相当于前后256个lepton。 


PrimaryFireFLH= 
SecondaryFireFLH= 
ElitePrimaryFireFLH= 
EliteSecondaryFireFLH= 
决定了炮弹出膛位置和开火动画播放位置，单位是lepton，格式是(数字英文逗号数字英文逗号数字)，分别表示前，左，高。如果武器的burst=大于1，第二发炮弹会从F -L H的位置发出。
WeaponXFLH= 
与“PrimaryFireFLH=”相似。这里的X代表第几种武器。这个标签仅用于拥有多种武器的单位，如ifv，盖特。光棱用的是weapon1，所以也是这个系统。总之，primaryfireflh只对primary有效，weaponxflh只 对weaponx有效。art要和rules的武器代码对应

游戏中地表单元是60x30的菱形，换算为实际尺寸就是边长为60*2^0.5/2像素的一个正方形，而这个边长等于256个单位，所以每个像素等于256/(60*2^0.5/2)=6.035个单位，因此F和L在平行于屏幕的截图上像素数乘以6即可。H的方向总是和屏幕成60°所以应乘上6.035/sin60°=6.969即7。

SecondSpawnOffset=
填坐标，第二子机发射位置，用于雷鸣导弹。


AlternateFLH0= 
AlternateFLH1= 
AlternateFLH2= 
AlternateFLH3= 
AlternateFLH4= 
这些标签和其他有关FLH的标签相似。这些标签用于战斗要塞要塞开火位置。


 步兵 
FireUp= 
表述1：指定使用第一武器开火的动画的帧的序号。它用来确定例如使用步枪的时候，当你可以看到步枪开火时子弹离开的那一帧的帧序号，不是前一帧也不是后一帧（总之就是那一帧）。仅适用于步兵站着而不是卧倒时。 
表述2：步兵攻击前摇，第几帧确实打出攻击


FireProne= 
（仅用于尤里的复仇）同上。唯一的不同就是步兵是卧倒开火。 

SecondaryFire= 
（仅用于尤里的复仇）与“FireUp=”相同，只不过这里是第二武器。 

SecondaryProne= 
（仅用于尤里的复仇）卧倒用第二武器开火的…… 

Crawls= 
指定是否单位能够爬行（包括卧倒）。当然步兵的动作序列必须具有爬行的帧。 

Sequence=XXXSequence
决定步兵使用哪个动作序列。序列是指定哪些帧用于开火，哪些帧用于行走等等。
任何一个步兵素材正常发挥作用都需要sequence。

[XXXSequence]

步兵动作序列告诉游戏某个步兵的SHP文件的哪些帧用于什么用途。每个标签都有三四个可能的值。 

第一个数字是特定动作的开始帧。注意红警2是从0号开始计算SHP的帧数，因此红警2的起始帧被认为是0号。 

第【三】个数字是每个方向上的帧数，包括起始帧。 比如动员兵在SHP文件里每行走6帧换一个方向，则此数字写6

第【二】个数字表示每个方向上实际使用的帧数。一般而言，如果shp中没有不使用的帧，和第三个数字保持一致即可。






动员兵 
Crawl=86,6,6 
游戏从第86帧（在SHP Builder中，显示为第87帧）开始，使用6帧包括第87帧作为面向北，然后后6帧作为下一个方向，以此类推。


Prone=86,1,6 
这里，游戏仍然以6帧作为一个方向的帧数，但是仅使用其中每个方向的第1帧。在构成一个方向的6帧中的后5帧都被忽略了。


第四个值是罗盘系统上的“北，南，东，西”。游戏的方向性和你认为的不一样，游戏认为北就是你的屏幕的左上方。基本上游戏的罗盘相当于顺时针旋转了45°。第四个标签仅用于Idle1=、Idle2=、WetIdle1=、WetIdle2=和Cheer=标签中。 


下面是有效的动作标签： 

Ready= 
用于当步兵单位站在那里等待的时候。 

Guard= 
用于当步兵单位被置于防御模式中。在红警2中似乎使用的不多。 

Tread= 
指定当步兵单位在水中游泳，并不断打水保持自己浮在水面上的帧序列。（谭雅？） 

Prone= 
指定步兵单位卧倒（企图减少伤害）的所有帧序列。 

Walk= 
指定当步兵行走的时候的帧序列。 

Swim= 
指定当步兵在水中游泳的帧序列。 

FireUp= 
指定当步兵单位站着向敌方单位开火的帧序列。 

WetAttack= 
指定当步兵单位在水中向敌方单位开火的帧序列。 

Down= 
指定当步兵单位遭到攻击卧倒的帧序列。 

Crawl= 
指定当步兵单位爬行的帧序列。当步兵在移动的时候遭到攻击会出现这种动作。 

Up= 
和down=相反。指定当危险过后步兵单位站起来的帧序列。 

FireProne= 
指定当步兵卧倒开火的帧序列。 

Idle1= 
Idle2= 
指定当步兵单位站着闲得没事的帧序列。这会使步兵单位不至于看起来像一尊雕像一样。 

WetIdle1= 
WetIdle2= 
同上。不同点是这里的标签指的是水中。 

Die1= 
指定当步兵单位被某种拥有InfDeath=0弹头的武器杀死的帧序列。 

Die2= 
指定当步兵单位被某种拥有InfDeath=1弹头的武器杀死的帧序列。可能会从Die2=和Die3=中随机选择一种。 

Die3= 
指定当步兵单位被某种拥有InfDeath=1弹头的武器杀死的帧序列。可能会从Die3=和Die2=中随机选择一种。 

Die4= 
指定当步兵单位被某种拥有InfDeath=2弹头的武器杀死的帧序列。 

Die5= 
指定当步兵单位被某种拥有InfDeath=3弹头的武器杀死的帧序列。 

WetDie1= 
指定当步兵单位在水中被杀死的帧序列。可能会从WetDie1=和WetDie2=中随机选择一种。 

WetDie2= 
指定当步兵单位在水中被杀死的帧序列。可能会从WetDie2=和WetDie1=中随机选择一种。 

Deploy= 
指定当步兵单位被命令“部署”从而激活某种功能（就像美国大兵会在身边摆放沙袋并架起机关枪）的帧序列。
建议不少于7帧，否则可能不成功

Deployed= 
指定步兵单位部署状态下的帧序列。 

Undeploy= 
指定当步兵被命令“取消部署”的帧序列。 

DeployedFire=
指定部署状态下开火的帧序列

DeployedIdle=
指定步兵单位部署状态下闲置的帧序列。

Cheer= 
指定步兵单位欢呼的帧序列。 

Paradrop= 
指定当步兵单位被空投到战场上的帧。该帧不要有影子。 

SecondaryFire= 
（仅用于尤里的复仇）和FireUp=相同，不同的是这里使用第二武器开火。 

SecondaryProne= 
（仅用于尤里的复仇）和FireProne=相同，不同的是这里使用第二武器卧倒开火。 

以下用于飞行兵 顾名思义
Fly=
Hover=
FireFly=
Tumble=
AirDeathStart= ;gs a split of Tumble, which is unused
AirDeathFalling=
AirDeathFinish=


SHP战车

Facings=
面数，原版只支持1和8面，ares可使用32甚至64面（8的整数倍）

WalkFrames= 
指定这个SHP战车（不是使用vxl的战车）每个方向的帧数。假定全方向的动画都存在。
这些帧在该SHP战车移动的时候发挥作用。（这种SHP战车和步兵非常类似。） 
可和rules中的WalkRate=配合使用


FiringFrames= 
同上。只不过这些帧用于SHP战车开火。 


StandingFrames=
同上。用于SHP战车闲置，必须和rules中的IdleRate=配合使用。

StartWalkFrame=
StartFiringFrame=
StartStandFrame=
用于调整上述三条从哪一帧开始。(shp第一帧在art内为0号)

附MK的有炮塔shp战车备忘：
分体式SHP车辆：
底盘运动帧若干，顺时针
炮塔32帧置于运动帧后，顺时针
SHP飞艇，原版使用需要一个无形的炮塔，影子和本体之间有一定高度差，在渲染的时候就应该制作出本体和影子间的高度差，原版中这个高度无法改变。Ares中阴影可以正常绘制。
Rotates=yes
Shadow=yes 
Voxel=no
UseTurretShadow=yes
Facings=8 ;面数
StartStandFrame=0
StandingFrames=每个方向主体的闲置帧数
StartWalkFrame=0
WalkFrames=每个方向主体的运动帧数







Trailer=
这个标签指定哪一个动画被用作尾烟。
单位会不停产生动画，动画独立播放，因为单位不停飞远，看起来就是连续的。
只对Aircraft类单位和抛射体图像有效 。
SpawnDelay= 每隔多少帧产生一个新的尾烟动画

TrailerAnim=
和Trailer一样，只不过一般用于碎片（动画）的尾烟
TrailerSeperation=
和SpawnDelay一样，只不过一般用于碎片（动画）的尾烟
应用：可用此代码连接两个动画，可在一个固定动画上挂一个碎片作为尾烟，达成“碎片喷泉”的效果。


UseLineTrail= 
使游戏绘制一条跟从与之相关联的对象的尾线，就像轨迹一样。
它要求“LineTrailColor=”和“LineTrailColorDecrement=”都存在且值有效。 


LineTrailColor= 
指定轨迹线的RGB颜色。 

LineTrailColorDecrement= 
指定轨迹线的消失速度。数值越大代表轨迹线越短。 


 建筑 

Foundation= 
决定建筑有多大，部署该建筑需要多少格。它采用的格式为“宽 x 
长”，其中宽为该建筑在东南或者西北方向上所占的格子数，长为该建筑在西南或者东北方向上所占的格子数。
NxN有固定的几个可用项，并非随意填写，具体查modenc
Ares可使用自定义形状，用ares包中的Documentation/_downloads/custom_foundation.html生成代码

Height= 
指定该建筑有多高（单位为格）。它用于决定当选中该建筑时，出现的白色虚线框的高度，还有基洛夫空艇、火箭飞行兵或其他任何飞行单位打算飞过该建筑时需要升高的高度。 


Buildup= 
决定建造该建筑的时候使用哪个SHP图像作为建造动画。卖建筑的时候，动画倒退播放。这个动画应该少于100帧左右，并且每个可建造的建筑都必须要有“Buildup=”，否则就不能被卖掉。如果你没有建造动画，随便找一个小短动画作为临时建造动画。 


DemandLoadBuildup= 
提前载入建造动画

FreeBuildup= 
可被设定为“true”或者“false”。TS残留 建造完成后清除建造动画的缓存。在ra2已无用。

Recoilless= 
如果被设定为yes，那么即使建筑有炮塔也不会表现出后坐力动画？？？

ToOverlay= 
指定该建筑将会转化为哪个覆盖物。一般用于允许玩家建造城墙

DamageLevels= 
指定一个城墙的SHP文件有多少损坏的程度。每一种损坏的程度都是一整套城墙的图像，而破损增加。（就是说每坏得更厉害一次，都需要一整套城墙的图像。） 


PowerUp1Anim= 
PowerUp2Anim= 
PowerUp3Anim= 
指定当该建筑充能1次、2次或3次时加到建筑上的动画。 

PowerUp1AnimDamaged= 
PowerUp2AnimDamaged= 
PowerUp3AnimDamaged= 
同上。区别是这3个标签用于建筑被破坏到50%或者更少的HP时使用的动画。 

PowerUp1LocX= 
PowerUp2LocX= 
PowerUp3LocX= 
指定绘制建筑的升级模块距离绘制建筑的位置的X轴像素偏移量。建筑的绘制位置是在该建筑的SHP图像的左上方。 

PowerUp1LocY= 
PowerUp2LocY= 
PowerUp3LocY= 
同上。不同的是这里指Y轴像素偏移坐标。 

PowerUp1YSort= 
PowerUp2YSort= 
PowerUp3YSort= 
为升级模块如何绘制创建顺序。如果和其他升级模块相交迭的话，数值最低的升级模块将会在其他模块和动画后面绘制。这些标签使ActiveAnimYSort关联，确定谁遮挡谁


ActiveAnim= 
ActiveAnimTwo= 
ActiveAnimThree= 
指定当该建筑建造起来之后正常运行或者没有严重损坏（就是绿血的状态……）的时候播放的动画。 

ActiveAnimDamaged= 
ActiveAnimTwoDamaged= 
ActiveAnimThreeDamaged= 
指定该建筑以少于50%的HP运行的时候播放的动画。 

ActiveAnimX= 
ActiveAnimTwoX= 
ActiveAnimThreeX= 
指定距离该建筑绘制坐标的X坐标。默认值为0。红警2中无用，因为大多数建筑的动态动画和建筑一样大。 

ActiveAnimY= 
ActiveAnimTwoY= 
ActiveAnimThreeY= 
同上。涉及Y坐标。 

ActiveAnimYSort= 
ActiveAnimTwoYSort= 
ActiveAnimThreeYSort= 
为如何绘制动态动画创建顺序。YSort数值低的动态动画将会在其他ActiveAnim或PowerUp后面绘制。就像“PowerUp1YSort=”一样。 


ActiveAnimZAdjust= 
ActiveAnimTwoZAdjust= 
ActiveAnimThreeZAdjust= 
调整动画在层次上的数值。默认为0。ActiveAnim的z值决定了动态动画到底处于哪一个层次上。最低的z值意味着“处于所有图像的后面”，同样，最高的z值意味着“处于所有图像的前方”。 


ActiveAnimPowered= 
ActiveAnimTwoPowered= 
ActiveAnimThreePowered= 
如果被设置为yes，那么ActiveAnim只有在玩家拥有足够的电力的时候才被播放（这就是为什么一旦电力不够，电厂就失去了动画效果的缘故……）。否则，在电力切断之前动态动画会在播放完全部的帧之后停止播放并冻结在最后一帧。 


SpecialAnim= 
SpecialAnimTwo= 
SpecialAnimThree= 
SpecialAnimDamaged= 
SpecialAnimTwoDamaged= 
SpecialAnimThreeDamaged= 
SpecialAnimZAdjust= 
SpecialAnimTwoZAdjust= 
SpecialAnimThreeZAdjust= 
SpecialAnimX= 
SpecialAnimTwoX= 
SpecialAnimThreeX= 
SpecialAnimY= 
SpecialAnimTwoY= 
SpecialAnimThreeY= 
SpecialAnimYSort= 
SpecialAnimTwoYSort= 
SpecialAnimThreeYSort= 
这些标签就像ActiveAnim一样，只不过这些是用于当该建筑执行特殊功能时。因此并不是一直有效，只有需要的时候才有效。 

ProductionAnim= 
ProductionAnimDamaged= 
ProductionAnimZAdjust= 
ProductionAnimYSort= 
ProductionAnimX= 
ProductionAnimY= 
这些标签也像ActiveAnim一样，只不过用于建造厂，当玩家拥有了一个这样的建筑并建造的时候有效。 

SuperAnim= 
SuperAnimDamaged= 
SuperAnimZAdjust= 
SuperAnimYSort= 
SuperAnimX= 
SuperAnimY= 
基本同上，只不过这些用于属于该建筑的超级武器激活的时候有效。 

PrimaryFirePixelOffset= 
SecondaryFirePixelOffset= 
规定武器开火的位置。和PrimaryFireFLH不同的是它的单位是“像素”而不是“lepton”。通常用于无炮塔的建筑。第一个参数为距离图像中心的x坐标，第二个参数则是y坐标。默认值为0,0，且不管武器从哪个方向开火，它都只从同一个位置开火。这一点不像PrimaryFireFLH一样考虑开火位置的移动。 


PrimaryFireDualOffset= 
当设置为true的时候，表示建筑同时使用PrimaryFirePixelOffset和PrimaryFireFLH。它允许建筑使用PrimaryFirePixelOffset来确定0,0,0（从PrimarFireFLH）的位置，而不是正中心。当要求某个不对称的建筑看起来像有个炮塔（其实没有）的时候使用这个标签会很有效。 


QueueingCell= 
指定当一个矿车在朝矿厂里面倒矿，另一个矿车在旁边等待倒矿的时候，那个等着的矿车所在的格子的x,y坐标（就按照这种顺序）。这个参数按照如下确定：从建筑的西角开始数，向东北方向x坐标增加，向东南方向y坐标增加。 


BibShape= 
指定用作“Bib”的图像。Bib是指建筑的某个部分，单位可以越过这个部分。此时游戏将单位绘制到Bib的上面而不是下面。 

DockingOffset0=X,Y,Z
DockingOffset1= 
DockingOffset2= 
DockingOffset3= 
这三个值表示入坞(战机)距离建筑本身的单元格几何中心偏移量x,y,z坐标（朝向右下意味着x增加，朝向左下意味着y增加，朝向上意味着z增加）。单位是lepton 256为一格。 


DamageFireOffset0= 
DamageFireOffset1= 
DamageFireOffset2= 
DamageFireOffset3= 
指定当建筑被破坏到HP少于50%的时候播放的着火的动画。参数的单位为像素，格式为x,y，默认在SHP的中心播放。 

IsAnimDelayedFire= 
如果被设置为yes，那么当建筑被指定攻击一个在射程范围内的目标的时候，开火前会产生硬直。（光棱塔、磁暴线圈）下面一个标签用于控制该硬直时间。 

DelayedFireDelay= 
指定开火硬直时间的帧数（游戏在中速的时候大约15fps）。它用于同步建筑开火的动画。 

TerrainPalette= 
如果被设置为yes，则建筑会使用地形调色盘isotem.pal、 
isourb.pal和isosno.pal。尤里的复仇中还包括isodes.pal和isolun.pal。只在泰伯利亚之日中使用


CanHideThings= 
可被设置为true或者false。指定是否游戏会自动指明被认为是被该建筑挡住了的动画的格子，并同时显示“隐藏物品”动画。（就是说如果游戏选中了“显示隐藏物品”的选项，且该建筑的这个标签被设为true，则被该建筑挡住的对象会显示出一个闪烁的光标表示这里有东西……） 


AddOccupy1= 
AddOccupy2= 
AddOccupy3= 
AddOccupy4= 
指定某个单位被设定为隐藏时，在顶层会显示出表示隐藏的动画所附加的格子。（什么意思？）它的格式是从建筑偏移位置开始的x和y的偏移量（未知）。（更加不明白了……） 


RemoveOccupy1= 
RemoveOccupy2= 
RemoveOccupy3= 
RemoveOccupy4= 
不考虑CanHideThings=所指定的格子。单位能够占据这么多格子，而不会显示表示隐藏的动画。它的格式是从建筑偏移位置开始的x和y的偏移量（未知）。 


CanBeHidden= 
指定该建筑是否能够被位于它前方的更高的建筑挡住。可以被设置为true或者false。 

OccupyHeight= 
指定OccupyCell（由AddOccupy和CanHideThings=指定）有多高。漂浮在OccupyCell上且低于OccupyHeight的火箭飞行兵会被认为是被挡住，而飞到其上方，则不被认为挡住。 


DoubleThick= 
（仅用于尤里的复仇）如果被设置为true，则该建筑或者动画被超时空兵种攻击的时候会出现额外的半透明效果。用于当建筑有两个或者更多的层且其中一个半透明的层不够用的情况。 

建筑SHP炮塔
在rules的[Animations]下注册
图像从正上方开始，32帧 逆时针
参考代码
[XXXTUR]
Normalized=no
LoopStart=0
LoopEnd=31
LoopCount=-1
Rate=0
Layer=ground
NewTheater=yes
Shadow=yes
Surface=yes



 用作抛射体的动画

 AnimLow=   
 AnimHigh=  
 AnimRate=  
这三条用于动画抛射体，抛射体飞行中会播放动画而非停留在第一帧。low和high等于是loopstart和loopend

UseLineTrail= 

LineTrailColor= 
我怎么感觉好像已经翻译过这些标签了…… 

LineTrailColorDecrement= 
指定轨迹线的长度（如果存在的话）。数值越大意味着轨迹线越短。


Rotates= 
如果被设置为yes，它将告知游戏这个抛射体使用一个具有64帧的SHP，且这些帧显示出一个旋转了360°的抛射体。这使得游戏能够正确显示出导弹按照它的方向移动的帧。 


Voxel= 
如果被设置为yes，则指定该图像是VXL而不是SHP。 



 

 动画

这些动画会在其它之上播放。包括火焰、爆炸、开火动画、各种特效等。 
如新增动画无法显示，请在rules的Animations注册列表注册

Scorch= 
如果被设置为yes，动画会在战场上留下烧焦的痕迹（燃烧“污染”），纯粹就是图像效果。 

Crater= 
如果被设置为yes，动画会在战场上留下弹坑的痕迹，当然也是图像效果。 

PsiWarning= 

如果被设置为yes，动画会在核弹发射的时候为拥有心灵感应器的玩家播放。 

Sticky= 
如果被设置为yes，动画会附着在目标上。但是这条语句是无效的。

Flat= 
告诉游戏绘制的时候在其他对象例如建筑和单位以下的地面上。 

Translucent= 
渐变透明效果，如果被设置为yes，该动画在播放过程中会逐渐变为透明。

Translucency= 
指定动画的恒定半透明效果为多少。注意，这和Translucent是两个独立的功能，不可混用。
可取值25、50或75意味着25%、50%或75%透明度（值越大越透明）。

TranslucencyDetailLevel=
为此动画的半透明效果设置视觉效果所需级别。 
如果此标志的值高于当前游戏视觉细节级别，则尽管存在透明度或半透明值，动画仍将不透明。 默认为0。 

Damage= 
一帧造成一次伤害，范围和动画弹头一样。原版inviso弹头为super，其它为fire2，不能修改
ares平台可为动画伤害单独指定弹头

Report= 
指定当播放动画的时候播放的声音。声音应当和soundmd.ini文件中的片断头相匹配。 
StartSound=
当动画开始播放的时候播放的声音，与上句的区别待研究。

MakeInfantry=
基因突变的原理，动画生成步兵的序号，由rules全局的AnimToInfantry规定，0代表第一个 1代表第二个。

Next= 
指定当前动画已经停止播放之后播放的动画。这也包括当它已经循环播放数次之后的情形。 

DetailLevel= 
为此动画的视觉效果所需级别。如果此标志的值高于当前游戏视觉细节级别则图像不显示。 

UseNormalLight= 
如果被设置为yes，那么动画将一直以100%的亮度播放（即使此时屏幕由于闪电风暴超级武器变暗）。 

YSortAdjust= 
指定动画的YSort值，该值用于使位于某个单位背后（就像超时空部队的空间扭曲图像），或者在单位前方（就像超时空传送启动动画）的动画可以显示出来。 
ZAdjust= 
指定动画的ZSort值，该值用于使某个位于建筑背后或者前方的动画可以显示出来。 
以上两条用法参考原版动画CHRONOSK

YDrawOffset=
填数值。可以改变动画显示的高度（遮挡判定点不变），正值向下，负值向上。

AltPalette= 
如果被设置为yes，那么图像将会使用unittem.pal，unitsno.pal和uniturb.pal作为调色盘进行描绘，而不是使用anim.pal作为调色盘。 

AnimPalette= 
如果被设置为yes，那么图像将会使用anim.pal作为调色盘进行描绘，而不是使用unittem.pal、unitsno.pal和uniturb.pal作为调色盘。 

Rate= 
决定动画的播放速度。数值越大代表播放速度越快。
这个数值以900为被除数。
例如300代表游戏将判定动画每帧持续900/300=3帧时间。 
当Rate=X 如果900/X不是整数 帧时间则自动去尾 
举例：301和450都为2帧 451和900都为1帧


Layer= 
决定动画在哪个层上播放。“Top”意味着在所有之上（包括黑幕——试图用闪电风暴击打黑幕）。
“Ground”意味着战场。 

Start= 
指定动画的起始帧。默认从0开始。 

LoopStart= 
指定动画开始循环的帧序号。这和Start=不同。游戏会从Start=那一帧开始播放，一直到LoopEnd=那一帧停止，然后从LoopStart=那一帧继续播放。 


LoopEnd= 
指定动画的结束帧。如果没有到LoopCount=所指定的循环次数，它将会跳到LoopStart=那一帧继续播放。 

LoopCount= 
指定动画播放的次数。第一次播放被认为是循环次数为0（就是说第一次播放相当于循环了0次，第二次播放相当于循环了一次）。当动画播放到了LoopEnd=那一帧时，循环次数加1，同时检测LoopCount=看是否还需要循环。如果LoopCount=被设置为-1，动画将永远不会停止。（正数再怎么加1也不可能加成-1……） 

PingPong=
此代码指定在完成循环后动画是否会反转。
如果设置yes，则动画将向前播放至LoopEnd定义的帧，然后它将从LoopEnd反向播放到LoopStart。 
如果LoopCount = -1，动画将重复向后和向前播放的循环。

IsFlamingGuy=
该动画为火人动画 需要配合RunningFrames=使用 否则ie

Tiled=
使该动画向上至屏幕顶端绘制一长串 看起来向从天而降的光束炮

Reverse=
使该动画反向播放，包括半透明渐变。典型应用：坦克碉堡进出动画。

RandomLoopDelay=
指定此动画的每个循环之间的延迟。 动画必须重复。 从两个值之间随机选择延迟。


HideIfNoOre=
如果触发此动画的单元格里没有矿，则动画将被遮挡。
奇怪的是，与此相同的遮挡效果同样出现在“显示隐藏对象”所用的Behind动画上。



 碎片 

shp碎片的本质是动画，如ts的流星和建筑爆炸时候飞出来的东西都是碎片。和rules里的vxl碎片相似。

Bouncer=为yes时判定此动画为碎片

MaxXYVel= 碎片在平面上的速度，不得小于1

MinZVel= 碎片的竖直速度，正数为向上飞

ExpireAnim= 碎片爆炸动画。可以是另一个碎片的名字，掉入水中会强制播放落水动画。

Damage= 被砸到的伤害数值
DamageRadius= 伤害范围，单位lepton，似乎无效，用弹头的cellspread计数
Warhead=碎片弹头

IsMeteor= 此碎片将会从天而降

Spawns= 撞击产生子碎片类型
SpawnCount= 子碎片数目

LoopStart=
LoopEnd= 
LoopCount= 
和前文一样

RandomRate=填两个数字，碎片shp的播放速度从此区间产生

TrailerAnim=
上文提到尾烟动画
TrailerSeperation=
尾烟动画间隔


TiberiumSpawnType= 碎片落地产生矿，写产生矿的种类，如GEM01
TiberiumSpawnRadius= 产矿范围，无效，只能一格一层。

Elasticity= 碎片弹性，越大越强。
BounceAnim=弹跳动画
上两条详解见shp碎片弹跳http://bbs.ra2diy.com/forum.php?mod=viewthread&tid=14036



By: Xgamer 
Red Alert 2 art.ini 教程 
翻译：小遥指挥官  
审核，纠正 MK

最后修订日期20190201by紫色放逐

