如果制作一个轨道炮,要求是,这个轨道炮的轨道效应只对敌人有效(穿透友军单位不造成伤害),但是Ctrl友军单位却要造成伤害,并且能够获得经验。为了完成这个目标,我们把它分成以下几步:
第一,制作一个轨道炮,这个轨道炮只能使用轨道来攻击单位(就是直接点击任何目标攻击都无伤害);
第二,这个把第一部的弹头写上AffectsAllied=no,这样就制成了这个武器的轨道部分,只对敌人有效的轨道;
第三,在弹头处进行一些处理,以使得弹头对友军和敌军都造成伤害,并且能够获得经验。
有了这个计划,我们进行理论分析:
首先,轨道炮的特点,轨道上使用AmbietDamage,弹头上使用AmbietDamage+Damage。因此,我们令AmbietDamage+Damage=0,得到AmbietDamage=-Damage。那么,AmbietDamage和Damage谁正谁负呢?游戏使用武器的伤害来决定这是一个进攻的单位还是一个修车的单位。那么,我们实验一下,就能够得出明显的结论:游戏使用AmbietDamage判断武器所属单位的类型。因此我们写Damage为负,AmbietDamage为正即可。
第二步是很简单的,下面我们看第三步。这种效果可以通过在弹头上附加动画伤害或者粒子实现,但是都得不到经验。为了实现得到经验,我们可以通过附加武器来实现。附加武器可以使用飞溅武器或者空爆武器。飞溅武器打建筑物却又没有伤害,因此可以用地面爆炸的“空爆”武器。空爆武器爆炸后会在弹头爆点和周围的8个方格各释放一枚子武器,一共9个。为了防止子武器散开子武器抛射体使用Vertical=yes,而且由于DetonationAltitude默认为0就会原地爆炸。
至此讲解完毕,全代码如下,附注释:
[ParticleCannon] ;武器名
AmbientDamage=120 ;轨道伤害
Damage=-120 ;弹头处抵消轨道伤害
ROF=80 ;无效,由附加的粒子系统的粒子的MaxEC决定
Range=7
Projectile=InvisibleParticleCannon
Speed=100
Warhead=RailShot
Report=ParticleTankAttack
IsRailgun=true
AttachedParticleSystem=LargeRailgunSys
[InvisibleParticleCannon] ;抛射体
Inviso=yes ;出膛即命中
Image=none
SubjectToElevation=yes
Airburst=yes ;空爆
AirburstWeapon=ParticleCannonBurst ;空爆武器
[DeathDummy]
EliteSecondary=ParticleCannonBurst ;挂载
[RailShot] ;主武器弹头即轨道弹头,不伤害友军
Verses=125%,100%,100%,100%,100%,100%,100%,100%,75%,100%,100%
Rocker=no
ProneDamage=50%
InfDeath=3
AnimList=none
Wall=yes
Wood=yes
PenetratesBunker=yes
AffectsAllies=no
[ParticleCannonBurst]
Damage=20 ;由于9个子武器同时爆炸,实际伤害是180
ROF=60
Range=8
Projectile=InvisibleVertical2
Speed=100
Warhead=RailShot2
[InvisibleVertical2] ;子武器抛射体,注意没有Inviso=yes
Image=none
Vertical=yes ;防止散开,原地爆炸
[RailShot2] ;子武器弹头即端点弹头,伤害所有单位
Verses=125%,100%,100%,100%,100%,100%,100%,100%,75%,100%,100%
Rocker=no
ProneDamage=50%
InfDeath=3
AnimList=none
Wall=yes
Wood=yes
PenetratesBunker=yes