步兵单位的规则代码在 rules(md).ini 文件中,通常需要在 [InfantryTypes]
位置下作提前的声明(但这似乎不是必须的),此篇文章以红色警戒2尤里的复仇1.001为环境,释义步兵单位主体(不包含武器等)的常见规则。
[E1]
UIName=Name:E1 ; 此单位的显示名字,在 ra2(md).csf 中修改
Name=GI ; 注释用,不影响
Image=GI ; 所用的图像模型名称,在 art(md).ini 有定义,如果没有定义就会使用此名字加 .shp 后缀的文件
Category=Soldier ; 单位类型,步兵固定填此值
Primary=M60 ; 主武器名称
Secondary=Para ; 副武器名称
Occupier=yes ; 填 yes 指示能够进驻/占领建筑物
OccupyWeapon=UCPara ; 进驻建筑物后使用的武器名称,如果没有此项则默认为主武器
EliteOccupyWeapon=UCElitePara ; 精英单位进驻建筑物后使用的武器名称
OpenTransportWeapon=1 ; 在战斗要塞中使用的武器,1 为副武器,0 为主武器,-1 为默认值,根据情况使用
Prerequisite=GAPILE ; 建造前提,填建筑物名称,使用英文逗号 , 分隔
; 比如 GAPILE,GATECH 表示需要盟军作战实验室和兵营才能建造
CrushSound=InfantrySquish ; 被碾压时的声音名称
Strength=125 ; 生命值、血量
Pip=white ; 在载具中格子的颜色
OccupyPip=PersonBlue ; 在建筑物中格子的颜色
Armor=none ; 装甲类型名称
TechLevel=1 ; 科技等级,在某些能够限定科技等级的场景中会用到此值来决定是否能够建造此单位
; 取值范围是 0 ~ 10,或者是 -1,此项也影响单位在建造栏中的顺序
Sight=5 ; 视野距离,探迷雾的距离
Speed=4 ; 移动速度
Owner=British,French,Germans,Americans,Alliance ; 拥有国家,此项可能影响开局时附带的单位,注意此项并不是指哪些国家能够建造的意思
Cost=200 ; 造价、价格
Soylent=100 ; 售卖/回收价格(被部队回收厂回收的价格)
Points=10 ; 经验点数,此项可能与价格综合计算为升级判断的属性
IsSelectableCombatant=yes ; 指定此单位是否能够被选取战斗部队功能(原版默认是 P 键)选中
VoiceSelect=GISelect ; 声音,被选中时
VoiceMove=GIMove ; 声音,下达移动指令时
VoiceAttack=GIAttackCommand ; 声音,下达攻击指令时
VoiceFeedback=GIFear ; 声音,恐慌时
VoiceSpecialAttack=GIMove ; 声音,部分单位有此特殊的功能语音,但尚不清楚如何触发
DieSound=GIDie ; 声音,死亡时
Locomotor={4A582744-9839-11d1-B709-00A024DDAFD1} ; 此项影响单位的移动方式
PhysicalSize=1 ; 步兵单位固定填 1,作用不明
MovementZone=Infantry ; 此项影响单位的移动方式
ThreatPosed=10 ; 威胁值,此项可能影响人机AI,建议结合 ai(md).ini 或其它人机AI的部分参考
ImmuneToVeins=yes ; 指定单位是否免疫带有 Veinhole=yes 属性的武器伤害(红色警戒2中可能已弃用)
ImmuneToPsionics=no ; 指定是否免疫心灵控制
Bombable=yes ; 是否能够被安置炸弹
Deployer=yes ; 是否能够部署
DeployFire=yes ; 部署后是否能够开火
; DeployTime=.022 ; 原版规则已经不再使用此属性并且默认被注释,似乎此值指示 部署/展开 的时间
VeteranAbilities=STRONGER,FIREPOWER,ROF,SIGHT,FASTER ; 升一级后的能力,多个值以英文逗号 , 分隔
EliteAbilities=SELF_HEAL,STRONGER,FIREPOWER,ROF ; 升精英后的能力,多个值以英文逗号 , 分隔
Size=1 ; 占格大小,在载具中的占格子数
Crushable=yes ; 是否能够被碾压
DeploySound=GIDeploy ; 部署音效
UndeploySound=GIUndeploy ; 解除部署音效
ElitePrimary=M60E ; 精英主武器
EliteSecondary=ParaE ; 精英副武器
IFVMode=2 ; 进入多功能步兵车时使用的武器,尤里的复仇 1.001 中一共定义了 1 ~ 17 号武器
; 具体请参考多功能步兵车的规则代码
声音的定义在 sound(md).ini 文件中,武器相关的定义就在 rules(md).ini 文件下。
其中 Locomotor
、MovementZone
、SpeedType
、MovementRestrictedTo
四项属性同时能影响单位的移动方式,因为红色警戒2的硬编码程序特点,建议更改这四项值的时候参考已有的单位相关代码,不然容易得到意料之外的细节问题,比如设置 Locomotor={92612C46-F71F-11d1-AC9F-006008055BB5}
的同时设置 BalloonHover=no
,这样大兵就会像直升机那样移动时飞行,到达时着陆;如果设置 MovementZone=Amphibious
同时设置 SpeedType=Amphibious
这样大兵就能够移动到水面上。
Armor
装甲类型的值有:none(无,比如美国大兵)、flak(布甲,比如谭雅)、plate(铁甲,比如磁暴步兵)、light、medium、heavy、wood、steel、concrete、special_1、special_2,步兵一般只用前三项类型。
升级能力有:
值 | 效果 |
---|
FASTER | 速度加快,影响 Speed 属性 |
STRONGER | 生命值加强(实际好像影响的是护甲) |
FIREPOWER | 伤害加强,影响武器的 Damage 属性 |
SCATTER | 遇到伤害会散开,还会避免碾压 |
ROF | 加快射速,影响武器的 ROF 属性 |
SIGHT | 视野扩大,影响 Sight 属性 |
CLOAK | 隐形能力,赋予 Cloakable=yes 效果 |
TIBERIUM_PROOF | 赋予 TiberiumProof=yes 效果,作用未知 |
VEIN_PROOF | 赋予 ImmuneToVeins=yes 效果,作用未知 |
SELF_HEAL | 自动回血,赋予 SelfHealing=yes 效果 |
EXPLODES | 允许死亡爆炸武器,赋予 Explodes=yes 效果 |
RADAR_INVISIBLE | 在敌方雷达中隐形(未证实),赋予 RadarInvisible=yes 效果 |
SENSORS | 允许探测隐形(未证实),赋予 Sensors=yes 效果 |
FEARLESS | 不会恐慌,同时不会匍匐,赋予 Fearless=yes 效果 |
C4 | 增加爆破建筑物的功能,赋予 C4=yes 效果 |
TIBERIUM_HEAL | 赋予 TiberiumHeal=yes 效果,作用未知 |
GUARD_AREA | 使单位在空闲时自动进入警戒状态,作用未知 |
CRUSHER | 提供碾压能力(未证实),赋予 Crusher=yes 效果 |
其它可用于步兵类的规则属性如下,可自行添加或修改:
PrerequisiteOverride=CAWASH16 ; 覆盖建造前提,此项列举出的建筑物名称如果被玩家占有或心灵控制,则也可以建造此单位(未证实)
RequiresStolenAlliedTech=yes ; 指定必须要间谍渗透了盟军作战实验室才能建造
RequiresStolenThirdTech=yes ; 指定必须要间谍渗透了尤里作战实验室才能建造
RequiresStolenSovietTech=yes ; 指定必须要间谍渗透了苏军作战实验室才能建造
C4=yes ; 攻击建筑时使用C4
Assaulter=no ; 设置为 yes 时可以清除建筑物中的驻军,步兵使用其主武器清除驻军,武器可以通过 AssaultAnim 属性播放清除动画(未证实)
BuildLimit=1 ; 建造限制,最多只能存活这么多个数量
NavalTargeting=6 ; 指定攻击海面单位的方式
; 0 能攻击水下单位(使用主武器),1 能攻击水下单位(使用副武器)
; 2 只能攻击水下单位
; 3 能攻击海面单位(使用副武器)
; 4 使用主武器攻击海面单位、使用副武器攻击水下单位,5 使用主武器攻击海面和水下单位
; 6 不能攻击海面和水下单位
UseOwnName=true ; 进入多功能步兵车时是否使用自己的本名,比如:“谭雅 多功能步兵车”
LeadershipRating=8 ; 默认为 5,人机AI决定队伍的行驶路线时会以这个值最高的单位为参考
; 玩家框选一批单位时的语音和鼠标指针会以这个值最高的单位为参考对象(未证实)
SpecialThreatValue=1 ; 此项和 ThreatPosed 类似,也影响人机AI
SelfHealing=yes ; 是否能够自动回血
AllowedToStartInMultiplayer=no ; 是否能够开局自带,需要在游戏对话框界面设置了开局自带部队
Trainable=no ; 是否能够升级
ImmuneToRadiation=yes ; 是否免疫辐射
ImmuneToPsionicWeapons=no ; 指定单位是否免疫具有 PsychicDamage=yes 弹头属性的武器(应该用于心灵控制的超级武器)
ImmuneToPoison=yes ; 指定单位是否免疫具有 Poison=yes 弹头属性的武器(病毒狙击手的毒气)
Unnatural=yes ; 是否为非自然单位,此项为 yes 时,表示不能被带有 Natural=yes 属性的单位攻击
Natural=yes ; 是否为自然单位,上面项的反义词
NotHuman=yes ; 是否是人类,此项影响单位的死亡方式,比如不是人类时,就不会有被电死等等的死亡效果
SpeedType=Amphibious ; 此项定义了单位在不同类型的地形上的移动形式
; 可能的值有:Foot、Track、Wheel、Float、Winged、Hover、Amphibious、Creep、FloatBeach
; 因为此项和其他值共同影响单位的移动方式,所以修改前建议先参考其它单位的配置
MoveToShroud=no ; 默认是 yes,此项如果为 no,则单位不能直接移动到未探索的地图区域(比如超时空军团兵)
Teleporter=yes ; 此值为 yes 表示该步兵单位能够被超时空传送而不死
PreventAttackMove=yes ; 如果此值为 yes,那么该单位不能使用移动攻击指令(默认同时按 CTRL + SHIFT)
PixelSelectionBracketDelta=-26 ; 此项影响单位血条绘制的位置,值越小越靠上,反之越靠下
DetectDisguise=yes ; 是否能检测伪装单位
ForbiddenHouses=Americans ; 哪些国家不能建造,多个值以英文逗号 , 分隔
RequiredHouses=Arabs ; 指定只能让哪些国家建造,多个值以英文逗号 , 分隔
Fraidycat=yes ; 是否受到伤害后会恐慌逃跑
Civilian=yes ; 此项为 yes 表示该单位被视为平民对象,这会影响人机AI的威胁值扫描逻辑(未证实)
Nominal=yes ; 决定当鼠标放到单位上时是否显示其名称(未证实)
Explodes=yes ; 死亡后是否爆炸,该爆炸默认使用主武器
DeathWeapon=TerrorBomb ; 死亡武器,使用此项指定的武器爆炸
CanPassiveAquire=no ; 是否会主动攻击
CanRetaliate=no ; 是否打不还手,此项如果和上一项同时为否,那么没收到指令前到死也不会主动攻击,通常用于难以控制的单位
ReselectIfLimboed=yes ; 对于某些武器是 LimboLaunch=yes 属性的单位,此项设为 yes 可以让其攻击后重新拥有被玩家的控制权(比如狗的攻击)
RejoinTeamIfLimboed=yes ; 同上,但指的是否重新归队,这里的归队应该指的是AI逻辑中的队伍
DefaultToGuardArea=yes ; 默认是 yes,如果此项为 no,那么闲置时就不会处于警戒状态,这样敌人进入攻击范围也不会主动攻击(不影响还击)
BombSight=4 ; 如果单位的武器弹头有 BombDisarm=yes 属性,那么此值影响自动找寻并拆弹的距离范围,比如工程师自动拆疯狂伊文的炸弹(未证实)
Engineer=yes ; 指定单位是否具有工程师逻辑,这个要注意此项不能单独使用,应该配合工程师的注册和相应的武器,不然效果是有问题的
CloseRange=yes ; 指示单位是否配备了非常近距离的武器,可能用于人机AI判断威胁值时不会扫描得太远(未证实)
GuardRange=9 ; 此项指定单位的警戒范围,一般只用于一些没有实际攻击武器的单位(比如工程师)
DeployedCrushable=no ; 指定单位部署后是否能被碾压,这是 Crushable 属性的重写覆盖逻辑
HoverAttack=yes ; 此项应该只用于在空中攻击的单位(如火箭飞行兵),表示攻击时会从地面起飞(未证实)
Insignificant=no ; 设置此项为 yes 的单位不会被统计到游戏结算的击杀数里,同时也不会被优先选择为攻击的目标,也不会语音播报(未证实)
DontScore=yes ; 此项是 Insignificant 属性的子集,而且杀死带有此属性的单位不会升级
Ivan=yes ; 设置了此项的单位在攻击时鼠标指针会被替换为疯狂伊文的炸弹
AttackFriendlies=yes ; 此项为 yes 则表示该单位会把友军当作敌人,会自动攻击友军,而且鼠标指针移向友军时会出现攻击指针
AttackCursorOnFriendlies=yes ; 这是上一项的子集,不会主动攻击友军,只是鼠标指针移向友军时会出现攻击指针
CanDisguise=yes ; 确定单位是否能伪装,此项单独使用似乎没有效果
PermaDisguise=yes ; 为 yes 时确定 CanDisguise=yes 伪装的单位是像间谍那样的永久伪装,不然伪装的单位可能会被解释为像幻影坦克那种
TypeImmune=yes ; 此项为 yes 时表示单位会免疫同一拥有者的相同单位的伤害,比如尤里的冲击波就不能伤害另一个己方的尤里
; 注意此项不会免疫来自粒子系统的伤害,比如病毒狙击手的毒气,因为这些伤害是无法追踪来源的
AlternateArcticArt=yes ; 如果设置了此项,那么不同地图场景会使用不同的 SHP 模型,找模型文件时会加字符后缀
; 比如海豹部队在普通场景使用 SEAL.SHP 模型,在雪地场景使用 SEALA.SHP 模型
; 尤里的复仇共支持 7 种场景,这些属于 art(md).ini 范畴,这里不作解释
; 以下项作用于拥有类似火箭飞行兵移动方式的单位,这些代码也是写在单位主体下的
JumpJet=yes ; 设置为 yes 指定单位具有火箭飞行兵的逻辑,不单独使用,不然效果会有些问题
JumpjetSpeed=30 ; 设置飞行速度
JumpjetClimb=20 ; 设置垂直和下降速度,比如飞跃较高建筑物时的场景
JumpjetCrash=25 ; 设置坠毁降落时的速度(未证实)
JumpJetAccel=10 ; 设置加速度和减速度的系数比,使用此项时要注意可能导致一些允许降落的单位(Landable=yes)不能降落,因为减速度函数不会达到 0
JumpJetTurnRate=10 ; 设置转弯率
JumpjetHeight=500 ; 设置飞行距离地面的高度
JumpjetWobbles=.01 ; 设置上下摆动的次数,单位是每秒,此项不能为 0,如果不需要上下摆动,请让 JumpjetNoWobbles=yes
JumpjetDeviation=1 ; 设置上下摆动的幅度
JumpjetNoWobbles=yes ; 设置是否具有上下摆动的效果
JumpJetTurn=yes ; 设置为 yes 指定单位在移动或转向时不能开火
; 以下项作用于弹头具有 Airstrike=yes 属性的武器(鲍里斯的呼叫空中支援),这些代码也是写在单位主体下的
AirstrikeTeam=2 ; 普通等级召唤的空中支援单位数量
EliteAirstrikeTeam=4 ; 同上,但是精英等级
AirstrikeTeamType=BPLN ; 普通等级召唤的空中支援单位名称
EliteAirstrikeTeamType=BPLN ; 同上,但是精英等级
AirstrikeRechargeTime=100 ; 普通等级空中支援的充能时间,当空中支援中途被击杀、或是返回到地图外时下一次支援的等待时间
EliteAirstrikeRechargeTime=50 ; 同上,但是精英等级
最后总注:以上不包含所有步兵可用的设置代码,没有列明的但原规则中存在的请直接参考原版规则代码作分析。