本帖最后由 黑夜666 于 2022-7-14 20:25 编辑
经过几天的努力,终于用【公版ARES】和【双杀步枪大佬的DP-Kratos】以及【Mr.L大佬的Phobos 0.2】搞出了类似于百合子的反弹防盾了。并且感谢这两位大佬的提供的宝贝扩展引擎。
效果图:
介绍:
拥有这种护盾的单位,仅可以反弹Arcing类型和ROT类型的抛射体,反弹后的抛射体落到地面会爆炸,也有些会反弹到天空爆炸,会对地面或空中其他单位可能造成伤害。这种反弹效果也有缺陷,但总体是很不错的效果了。
缺陷:
由于原生的公版引擎,没有魔改,此反弹护盾有三个局限性:
①以下四种武器无法反弹:
V3导弹这种
基洛夫在头顶垂直扔炸弹这种
美国大兵没有弹道的武器这种
磁暴和光棱武器
直接会打到护盾表面,消耗护盾。
另外,当被反弹的抛射体撞到另外一个反弹护盾上,其很大几率会直接爆炸而不是二次反弹,即会消耗护盾,当护盾消耗完,单位再次受到攻击,则单位本身掉血,且没有了反弹抛射体能力。
当然,护盾逻辑有其装甲类型,可以自定义装甲让其护盾免受某些武器伤害。
②对于ROT类型的抛射体,可能反弹后的抛射体在空中会颤抖。
③8,9成的抛射体武器都可以成功反弹,但是对于射速极快,或者一次发射很多个抛射体的武器,反弹效果可能来不及,比如第一个炮弹反弹了,第二个炮弹没来得及反弹,则会消耗护盾本身。
为何来不及,因为动画武器是动画每帧发射一次,取决于护盾动画播放速度,如果速度很快的话,那这些抛射体都能反弹了。
期望和鸣谢:
感谢双杀步枪大佬和Mr.L大佬提供的扩展引擎,感谢Firelaw兄弟提供的护盾素材,再次感谢双杀步枪大佬的技术帮助。
小弟真心期待大佬们在后续引擎版本中可以将真正的反弹护盾更新进去。大家有什么更好的实现方法和效果,敬请分享,共同学习!!!
代码原理:
Phobos的护盾逻辑,给护盾动画加个动画武器,动画武器的弹头中加入AE,AE要设置为对抛射体有效,AE中设置计时器,分两个阶段,第一个阶段AE时间到了,NEXT到下一个AE,第一阶段:加入速度属性,乘以-1,即改变抛射体方向,第二阶段:使抛射体自爆,因为Arcing和ROT抛射体,在速度成-1后有很大几率会飞出地图,这一点小弟是真的无能为力。
护盾素材:
Firelaw兄弟的素材:
【素材下载】又一个护盾 - ☉ 红警素材研究会 ☉ - 红警DIY论坛 - Powered by Discuz! (ra2diy.com)
代码部分:
护盾部分
rules:
;注册护盾动画
[Animations]
+=hd
Phobos的护盾逻辑
[ShieldTypes]
+=FTShield
[FTShield]
Strength=2000 ; integer
InitialStrength=2000 ; integer
Armor=none ; ArmorType
Powered=false ; boolean
AbsorbOverDamage=false ; boolean
SelfHealing=10.0 ; double, percents or absolute
SelfHealing.Rate=0.2 ; double, ingame minutes
Respawn=0.0 ; double, percents or absolute
Respawn.Rate=0.0 ; double, ingame minutes
BracketDelta=0 ; integer - pixels
Pips=-1,-1,-1 ; integer, frames of pips.shp (zero-based) for Green, Yellow, Red
Pips.Building=-1,-1,-1 ; integer, frames of pips.shp (zero-based) for Green, Yellow, Red
Pips.Background= ; filename - including the .shp/.pcx extension
Pips.Building.Empty= ; integer, frame of pips.shp (zero-based) for empty building pip
IdleAnim=hd ; Animation
IdleAnim.ConditionYellow=hd ; Animation
IdleAnim.ConditionRed=hd ; Animation
IdleAnimDamaged=hd ; Animation
IdleAnimDamaged.ConditionYellow=hd ; Animation
IdleAnimDamaged.ConditionRed=hd ; Animation
IdleAnim.OfflineAction=Hides ; AttachedAnimFlag (None, Hides, Temporal, Paused or PausedTemporal)
IdleAnim.TemporalAction=Hides ; AttachedAnimFlag (None, Hides, Temporal, Paused or PausedTemporal)
BreakAnim= ; Animation
HitAnim= ; Animation
BreakWeapon= ; WeaponType
AbsorbPercent=1.0 ; floating point value
PassPercent=0.0 ; floating point value
AllowTransfer=yes ; boolean ; boolean
;让某单位用这个护盾
[TechnoType]
ShieldType=FTShield
art:
;护盾动画
[hd]
CustomPalette=hd.PAL
Rate=455
Translucency=50
Damage=1
Weapon=hdFTweapon
反弹功能部分
rules:
[AttachEffectTypes]
+=hdFT
+=hdFT2
+=hdFTRof
+=hdFTRof2
[WeaponTypes]
+hdFTweapon
[Warheads]
+=hdFTWH
;反弹功能开启
[hdFTweapon]
Projectile=hdFTP
Warhead=hdFTWH
[hdFTP]
Inviso=yes
Image=none
SubjectToCliffs=yes
SubjectToElevation=yes
SubjectToWalls=yes
[hdFTWH]
CellSpread=2
PercentAtMax=1
Verses=0%,0%,0%,0%,0%,0%,0%,0%,0%,0%,1000000%
AttachEffectTypes=hdFT,hdFTRof
AffectsAir=yes ;使用弹头附加效果是否影响空中单位的总开关(注意Affects有s)
AffectsBullet=yes ;使用弹头附加效果是否影响抛射体的总开关(注意Affects有s)
ClearTarget=yes
DamageAirThreshold=-1
;两个EA
;反弹arcing抛射体
[hdFT]
Status.SpeedMultiplier=-1.0 ;速度系数,替身不会动
Duration=12
AffectBullet=yes ;用于弹头附加时,赋予半径CellSpread范围内的抛射体 (注意Affect没有s)
OnlyAffectBullet=no ;用于弹头附加时,只影响抛射体,不影响单位 (注意Affect没有s)
AffectMissile=no
AffectTorpedo=yes ;用于弹头附加时,影响Level=yes的抛射体
AffectCannon=yes ;用于弹头附加时,影响Arcing=yes的抛射体
Cumulative=yes
Next=hdFT2
;一些反弹地面自行爆炸,一些反弹到空中,让AE控制其爆炸
[hdFT2]
AffectBullet=yes ;用于弹头附加时,赋予半径CellSpread范围内的抛射体 (注意Affect没有s)
OnlyAffectBullet=no ;用于弹头附加时,只影响抛射体,不影响单位 (注意Affect没有s)
AffectMissile=no
AffectMissile=yes ;用于弹头附加时,影响ROT>0的抛射体
AffectTorpedo=yes ;用于弹头附加时,影响Level=yes的抛射体
AffectCannon=yes ;用于弹头附加时,影响Arcing=yes的抛射体
DestroySelf.Delay=0
DestroySelf.Peaceful=no
DestroySelf.AffectWho=ALL
;反弹ROT类型抛射体
[hdFTRof]
Status.SpeedMultiplier=-1.0 ;速度系数,替身不会动
Duration=25
AffectBullet=yes ;用于弹头附加时,赋予半径CellSpread范围内的抛射体 (注意Affect没有s)
OnlyAffectBullet=no ;用于弹头附加时,只影响抛射体,不影响单位 (注意Affect没有s)
AffectMissile=yes ;用于弹头附加时,影响ROT>0的抛射体
AffectTorpedo=no ;用于弹头附加时,影响Level=yes的抛射体
AffectCannon=no ;用于弹头附加时,影响Arcing=yes的抛射体
Cumulative=yes
Next=hdFTRof2
;一些反弹地面自行爆炸,一些反弹到空中,让AE控制其爆炸
[hdFTRof2]
AffectBullet=yes ;用于弹头附加时,赋予半径CellSpread范围内的抛射体 (注意Affect没有s)
OnlyAffectBullet=no ;用于弹头附加时,只影响抛射体,不影响单位 (注意Affect没有s)
AffectMissile=yes ;用于弹头附加时,影响ROT>0的抛射体
AffectTorpedo=no ;用于弹头附加时,影响Level=yes的抛射体
AffectCannon=no ;用于弹头附加时,影响Arcing=yes的抛射体
DestroySelf.Delay=0
DestroySelf.Peaceful=no
DestroySelf.AffectWho=ALL
|