我关注到这个逻辑的时候是因为在研究属性赋予的时候想到了冰冻直升机,后来专门去搜索了一下,果然mo3的冰冻直升机用的是盖特逻辑,我在想士兵能不能也能实现发射冰冻武器呢,但是士兵是不能使用盖特逻辑的,那么ARES平台的增强的弹药逻辑是可以派上用场的。
弹药耗尽时切换武器
一个很实用的功能,效果如标题所说。
[TechnoType]>NoAmmoWeapon= (integer) 当弹药用尽后切换至另一武器。值为0是主武器,1为副武器,-1不切换武器。默认-1
注意
该标签不能覆盖被载具和步兵上的DeployFire=yes启用的DeployFireWeapon。
[TechnoType]>NoAmmoAmount= (integer) 如果弹药等于低于该值,则启用NoAmmoWeapon。默认0
以上是ARES说明书正文,下面为我制作的士兵发射冰冻武器的代码,可供参考,同时也一起解释弹药增强逻辑的意思。
[TechnoType] 在步兵栏加上这些代码
Reload=25 ;装弹延迟
Ammo=8 ;子弹数
NoAmmoWeapon=1 ;子弹打空后切换为副武器
PipScale=none ;不显示子弹数目
ReloadAmount=8 ;一次装弹为8
Primary=IceEMP ;主武器
Secondary=IceEMP2 ;副武器
武器代码:
[IceEMP]
DamAGe=0 ;必须为0,否则很大可能性会导致该武器就将“冰冻”的单位杀掉
ROF=15
Range=8
Speed=100
Projectile=IceEMPPro
Warhead=IceEMPWH
IsLaser=yes
LaserInnerColor=100,100,100
LaserOuterColor=100,100,100
LaserOuterSpread=100,100,100
LaserDuration=30
Report=TeslaTroopRechargeCoil
Ammo=1 ;不能为0,也可以不要这句代码
[IceEMP2]
DamAGe=0
ROF=15
Range=8
Speed=100
Projectile=IceEMPPro
Warhead=IceEMPWH2
IsLaser=yes
LaserInnerColor=100,100,100
LaserOuterColor=100,100,100
LaserOuterSpread=100,100,100
LaserDuration=30
Report=TeslaTroopRechargeCoil
Ammo=0 ;副武器如果要消耗弹药那么需要在步兵代码里和NoAmmoAmount配合使用
[IceEMPPro]
;AA=yes ;这句代码注释掉下面会解释
AG=no ;不能A地板(避免A地板蓄能后再攻击单位一下就“冻住”了单位)
Inviso=yes
ImAGe=none
SubjectToCliffs=yes
SubjectToElevation=yes
SubjectToWalls=yes
;PS:不让对空是因为我测试过发现用主武器攻击两下就让大部分的飞行器直接掉下来摔毁了,我猜测心灵终结3中的冰冻直升机不能对空估计也会出现这个问题。而有些单位例如夜鹰直升机在空中被冻住后只会失灵又不会掉下来,这个情况请参考ARES说明书用电磁脉冲摧毁失灵单位的说明。
[IceEMPWH]
Verses=3%,3%,3%,3%,3%,3%,3%,3%,3%,3%,3% ;1%不主动攻击不还击,2%不主动攻击
AttachEffect.Animation=IceEMPAnim ;弹头赋予冰霜动画
AttachEffect.Duration=60 ;属性持续时间,包含动画持续时间以及下面特殊效果持续时间
AttachEffect.SpeedMultiplier=0.7 ;减速到70%
AttachEffect.ROFMultiplier=1.3 ;射速加长为原来的1.3倍
AttachEffect.ArmorMultiplier=0.8 ;护甲削减为0.8倍
AttachEffect.Cumulative=no ;不能叠加作用,详情看我另一篇关于赋予属性的文章(如果为yes,作用属性等能叠加,属性持续时间只能修正不能叠加)
[IceEMPWH2]
Verses=1%,1%,1%,1%,1%,1%,1%,1%,1%,1%,1%
EMEffect=yes ;EMP效果
EMP.Duration=210 ;EMP持续时间
EMP.Cap=-1 ;EMP持续时间修正,不叠加
EMP.Sparkles=IceEMPAnim2 ;被EMP后的动画,建议设置为冰霜效果
AttachEffect.Animation=IceEMPAnim3 ;建议设置为冰霜效果
AttachEffect.ArmorMultiplier=0.01 ;护甲被削减至0.01倍,非常的脆弱
AttachEffect.Duration=210 ;持续时间,最好与EMP持续时间同步
;在这里加EMP效果是为了让受到攻击的单位被完全“冻住”无法任何操作,如果不加只会护甲变成纸糊的但还是能选择发出语音指令等。特别说明:在这个弹头这里不要加AttachEffect.Cumulative=yes这句,因为0.01倍的护甲如果再被多个攻击者叠加作用可能会出现护甲被削减至几乎为0的情况,这时候可能会出现攻击丢失的BUG。
以上就是武器全部代码,不怎么美好,差不多就是那个意思,接下来就是这个士兵使用该武器需要注意的地方:
既然提到了EMP,那么这个武器有个最大的问题就是攻击士兵是不会让士兵完全“失灵”的,需要在士兵代码加一句ImmuneToEMP=no,以及其他某些建筑默认免疫EMP的,也要加这一句才会起效果。(ps:EMP攻击某些建筑是无效果的,例如维修厂,作战实验室,矿场等,哪怕被EMP也不会影响功效,在建筑里面EMP只对工厂和防御建筑起效果)
士兵等加这一句代码后可能会影响到其他EMP武器的发挥,若不想其他EMP武器影响到士兵,可以改其他EMP武器弹头对步兵比例为0%。
使用该冰冻武器的士兵进入IFV后,无法正常使用该冰冻武器。同理,进驻建筑或战斗要塞也无法正常发射武器,怎么弄你懂的。
该冰冻武器最大的BUG,就是可以通过攻击A单位后转为攻击B单位有可能会瞬间冻住B单位,这个BUG在mo3的冰冻直升机上同样存在,目前无法解决。为了最大化避免BUG,装弹延时和弹药数是我测试过后较为合理的值。
由于本文章是解释弹药增强逻辑,不知道大家通过我这一通小操作看懂其中最实用的消耗弹药切换武器的逻辑没有。
为了不耽误正事,解释一下其他代码的实际运用。
飞机专用的弹药恢复速率
(注意看粗体字,飞机专用,就是说要通过机场或其他途径为自己补充弹药的飞行单位)
在原版当中飞机恢复弹药是定死的,如果你要做一个大弹药量用机枪为武器的飞机就很蛋疼,用这个就可以解决问题。
[AircraftType]>ReloadRate= (double - minutes) 恢复速率,停靠建筑必须有UnitReload=yes。默认[General]?ReloadRate
默认[General]ReloadRate=.3,要加快速率就要调小该值,最小值为0,一进机场就开挂式的上满了弹药。该代码写在飞机单位上,而不是机场或其他非飞机单位。
单独的消耗弹药计算
可以单独设置武器一次消耗多少弹药。
[Weapon]>Ammo= (integer) 写0就是不消耗弹药。默认1
如果某单位携带弹药,但是武器里没有这一句,注意是没有这句代码而不是Ammo=0,默认还是会每次发射消耗一颗弹药。这句代码常用于规定武器是否消耗弹药,其他用途不大。
关于飞机武器中Ammo与Burst的关系:
Burst=2,意思是一颗弹药将会发射两颗炮弹,有个前提要在ART中给飞机设置开火位置,否则只会发射一颗。Burst这个数值最好不要大于4。
我们可以理解为Burst是一颗弹药发射几个炮弹,Ammo是一次攻击消耗几个弹药。
武器中最好不要同时出现这两个代码,如果同时加上了,请看下面bug说明。
假设飞机携带弹药为2,武器加上Ammo=2和Burst=2,飞机会一次发射两颗炮弹并消耗一颗弹药,然后BUG就出现了,飞机就会不知所措,带着剩下一颗弹药在目标上空盘旋;
Ammo=2和Burst=1,飞机会发射一颗炮弹,带着剩下一颗弹药继续不知所措盘旋转圈圈;
Ammo=2,飞机会发射一颗炮弹,带着剩下一颗弹药盘旋转圈圈更欢快了;
武器Ammo数超过飞机携带弹药数,飞机就会无法攻击,带着所有弹药转圈圈诅咒指挥官;
所以通过这些情况我们看出,只能是Ammo=0或1,或只要Burst=x,且不要将两个代码连用。
至于飞机携带弹药为其他数目下的情况大家自行研究。
弹药一次恢复量以及空仓时弹药一次恢复量,作用于不靠补给自行恢复弹药的单位。
[TechnoType]>ReloadAmount= (integer) 弹药一次恢复多少,不支持负值。默认1,这里指弹药未打完自然恢复的数量。
[TechnoType]>EmptyReloadAmount= (integer) 写0或负值就会让单位打完所有弹药后不会恢复,默认ReloadAmount
注意:以上3个代码不支持飞机类单位,因为一般飞机类单位武器是加Burst=,不加Ammo=,容易出现bug,而飞机单位恢复弹药是靠机场的,是这个代码ReloadRate=。