找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6313|回复: 2

英雄级单位丢一些绑定在超武上特殊攻击技能的方法

[复制链接]
发表于 2020-8-22 20:18:06 | 显示全部楼层 |阅读模式
本帖最后由 jogjog21 于 2020-8-22 20:24 编辑

这是我一年之前就想解决的问题,而今天我终于解决了,所以在论坛里分享下心得。废话不多说,直接进入主题。
前排感谢xuetianyi在这方面对我的启发。

众所周知,在其他游戏里,让一个单位丢技能的效果一般是,你选中那个技能后在你单位周边合理的范围内扔出它,然后你的单位根据你丢技能的种类去做出相应的反应

直观来看,红警2毫无疑问做不到,但是单独把丢技能的步骤拆开,红警2有支援技能,Ares能让某个技能在某种单位周围某范围内才能扔。至少在大致上我们做得到其中的两点。而想要完成这点,单位还需要做到剩下至少两部分。

A.技能在单位存在时才进行读条。
B.丢不同的技能单位能做出不同的反应。

我针对这两点一个个来分析,技能在单位存在时才进行读条,也就是说单位存在时超武存在。在Ares官版中只有建筑才能绑定超武,单位并不行。也就是说想要完成这点就必须做到你的单位与你丢技能的假建筑共存亡。丢不同的技能单位做出不同的反应,也就是说面对不同的技能单位得进行不同的攻击才行。在ares下想要单位同时能使用多种攻击方式,要塞初始载员逻辑是唯一能做到的方案。


1.单位绑定建筑逻辑


想要让你的单位与假建筑共存亡,那么你单位造出来的时候你的假建筑就必须要同时出现。Ares里能做到这点的毫无疑问是指示者功能。而当你想要你的单位死亡时建筑同时死亡,死亡武器则必须要能同步炸掉假建筑,所以我先设置绑定单位技能的假建筑为不可选中,可被通过,特殊护甲。然后设置建造英雄的建筑在英雄存在时能自动向自己脚下投放单位技能假建筑(建筑投放超武+自动投放+极短CD+英雄单位为指示者),而同时为了避免假建筑投放过多,我们设置当单位技能假建筑存在时建筑投放超武无法释放(SW.NegBuildings),假建筑身上绑定英雄技能超武,而同时设置单位死亡武器是超大范围内全图炸毁假建筑,单位死亡后假建筑死亡,假建筑死亡导致单位技能超武消失,同时单位消失导致假建筑投放超武无法释放,而在下次单位出现时假建筑投放超武则再次释放,假建筑存在不仅能重新恢复单位技能超武,又能阻止假建筑投放超武释放过多。以下为关键代码。


;;建筑,单位,护甲,超武请自行注册。绿色为可以随自己情况更改的变量,红色为重要且必要的变量。


……


[ArmorTypes]
sp_beacon=0%;;特殊护甲预订


[XXYY];;建造单位的建筑
……
SuperWeapon=XXXXSpecial;;与承载单位技能的假建筑投放超武一致,视情况可以写SuperWeapon2或是SuperWeapons


[AABBCC];;需要丢技能的单位
……
Explodes=yes
DeathWeapon=ABCDeathWeapon;;爆掉假建筑的死亡武器
DesignatorRange=10;;该单位能在多少范围内丢技能(缺点:这会导致所有技能的射程都一样远)





[FAKEBE];;假建筑
……
Armor=sp_beacon;;特殊护甲,用于单位的死亡武器爆破
SuperWeapons=……(这里写你的英雄技能)
;;无图像假建筑一般部分,可视情况自行添加
Unsellable=yes
Powered=false
BaseNormal=no
ClickRepairable=no
Repairable=no

TechLevel=12
Adjacent=0
Sight=0
Owner=
IronCurtain.Modifier=0
ForceShield.Modifier=0
AIBuildThis=no
Points=0
Power=0
IsPassable=yes
Trainable=no
Selectable=no
Insignificant=yes


;;

[XXXXSpecial]
……
SW.Designators=AABBCC;;必须与上面单位名字一致
Deliver.Types=FAKEBE;;假建筑
SW.NegBuildings=FAKEBE;;必须与上面一致,不然假建筑会迅速在你建造建筑范围内增殖许多无法控制。
IsPowered=no
Money.Amount=0
DisableableFromShell=no
Type=UnitDelivery
ShowTimer=no
RechargeTime=0.01
Action=Custom
Range=0
LineMultiplier=0
SW.FireIntoShroud=yes
SW.AITargeting=Self
SW.UseAITargeting=yes
SW.AutoFire=yes
SW.ShowCameo=no;;AutoFire写yes似乎这条初始值就自动是no了,我多写一次只是为了保险。
SW.ManualFire=no
FlashSidebarTabFrames=0
SW.CreateRadarEvent=no
SW.Deferment=0

这样当你使用建筑XXYY建造单位AABBCC时,XXYY会自动投放绑有单位超武的假建筑FAKEBE,同时FAKEBE会阻止投放FAKEBE的超武继续运作;当单位AABBCC死亡时,XXYY被死亡武器爆破,技能消失。FAKEBE投放超武因为场上不存在单位AABBCC,所以无法发射,只能等到单位AABBCC被建造出来的时候才能继续发射。


2.单位技能逻辑示意

现在我们可以使用许多种超武来绑定到单位上了,而在这里我说几种我认为有参考价值的超武发射方式。


a.超武发射者为单位本身。

我们当然可以用通用弹头超武在一个范围内刷出一些特殊攻击,但是假如我们需要超武发射者是单位本身,超武击杀单位能计入单位经验,或是三级单位使用的技能威力更大怎么办。
在这里我想到了类似于大头原理的方式来完成它,即单位自身为有初始载员的要塞,而技能超武本身是个信标单位投放超武,信标单位是两栖单位且能投放至任意区域。乘客只能以信标单位为攻击目标,并空爆出武器本身的伤害,信标存活条件则视情况而定,如果你需要你的乘客固定打击信标一段时间则需要信标使用AE自杀,如果你需要你的乘客击中信标的一瞬间信标死亡则你需要把乘客发射的一层武器对信标伤害比超过信标血量。乘客经验100%给单位本身,而要塞升级又能带动乘客升级,乘客升级后自己的武器也能升级。同时为了避免你的单位A地使乘客也使用了特殊攻击,乘客的主武器为Fake武器,副武器的抛射体AG=no。以下为关键代码。


……
[ArmorTypes]
targetarmor=0%;;信标的特殊护甲预订



……
;;由于上文有建立超武案例,在此超武略


[AABBCC];;要塞只能是载具,所以这个单位必须是载具。
……
;;在上述条目添加的基础上加入以下代码
Survivor.RookiePassengerChance=0%
Survivor.VeteranPassengerChance=0%
Survivor.ElitePassengerChance=0%
Passengers=1;;这里的数值随你下面的载员数量而定
PipScale=none
InitialPayload.Types=XYPASGER;;载员名
InitialPayload.Nums=1;;视你个人情况而定
OpenTopped=yes
NoManualUnload=yes
NoManualEnter=yes
;;乘客经验继承必要部分
Experience.FromPassengers=yes
Experience.PromotePassengers=yes
Experience.PassengerModifier=100%
……


;;载员
[XYPASGER]
Primary=PassengerFakeWeapon;;防止AG的假武器
Secondary=PassengerTarget;;乘客射击信标的武器
DontSayUnitLost=yes
DontScore=yes
NoManualFire=yes
AttackFriendlies=yes;;攻击信标的必备条目
;;杂项
OmniFire=yes
OpportunityFire=yes
……

;;信标
[ATKTARGET]
……
;;杂项
PixelSelectionBracketDelta=-999999;;藏血条
Points=0
CrateGoodie=no
Sight=0
Speed=0
Cost=0
TechLevel=12
;;

Strength=100;;血不需要太高
Armor=targetarmor;;特殊护甲
AttachEffect.Animation=TGTSUICIDE;;debug的自杀AE,AE绑只能伤害信标护甲的武器,武器伤害极高来确定能秒杀信标,AE相关武器代码与art略
AttachEffect.InitialDelay=70;;可视自己的情况而定,用于信标延时自杀时间
AttachEffect.PenetratesIronCurtain=yes
AttachEffect.Duration=999
AttachEffect.Delay=-1
;;确保信标无论海上陆地都能扔
Locomotor={4A582741-9839-11d1-B709-00A024DDAFD1}
MovementZone=AmphibiousDestroyer
SpeedType=Hover




[PassengerFakeWeapon]
……
Damage=0
Projectile=PassengerFakeProj
Speed=100
Warhead=DummyWH;;自定义一个弹头也可以

[PassengerFakeProj]
Inviso=yes
Image=none

AG=no;;核心关键语句,也是为啥建立Fake武器的原因。
SubjectToCliffs=no
SubjectToElevation=no
SubjectToWalls=no




[PassengerTarget]
……
;;视情况来写这里的武器,如果是发射子机可以写Spawner=yes
Damage=99999;;写99999秒杀信标,写1来保证InitialDelay时间
Projectile=PassengerTargetProj;;空爆抛射体
Warhead=PassengerTargetWH;;必须自定义一个只能攻击信标的自定义弹头
……


[PassengerTargetProj]
……
;;在这里需要写出你抛射体样子的相关代码,比如ROT或是Arcing,如果你需要抛射体秒命中目标,则可以用Inviso(个人并不建议,原因后面会写到)
Airburst=yes
AirburstWeapon=PassengerReal
AirburstSpread=0.5
Cluster=1;;视自己的情况而定


[PassengerTargetWH]
……
CellSpread=1
PercentAtMax=1
Verses=0%,0%,0%,0%,0%,0%,0%,0%,0%,0%,0%;;必须,否则将会攻击别的东西
Versus.targetarmor=3%;;秒杀信标写9999%,不需要秒杀信标遵从InitialDelay时间则写3%
AffectsEnemies=no
AffectsAllies=no
AffectsOwner=yes

[PassengerReal]
……
;;由你自己的情况来写

不建议发射inviso型抛射体的原因:
这个方法有一个问题,那就是无法将弹头正中中心地射在非空地上。这是因为单位投放超武是无法在建筑或者单位头顶上丢单位的,因此除非你必须要三级单位的超武射不一样的弹头,否则我还是建议这个超武用来射一些如陨石雨这样不需要精确命中的超武而不是需要精确秒命中的弹头型超武。

b.瞬移

如果你想让你的单位使用技能瞬移到一个地方怎么办。当我们有了这一招以后,我们可以在目标地点先刷一个载具,刷出来的载具使用超空间监狱逻辑把目标单位吸入体内,同时刷出来的载具的开火动画延时自杀,信标死亡时100%放出体内单位从而实现目标单位的瞬移。


以下是关键代码。


;;以下是目标单位
[AABBCC];;这里的AABBCC无需是载具,步兵也是可以的
……
Armor=abcspecial;;特殊护甲来引导信标攻击目标


……
;;超武相关代码略



;;目标信标单位
[TARGETB]
……
;;
Primary=TeleportWeapon;;瞬移武器
NoManualFire=yes
Trainable=no
PixelSelectionBracketDelta=-999999;;藏血条
Selectable=no;;防止玩家操控信标
Insignificant=yes
;;瞬移目标禁止移动,所以增加下列语句debug
Speed=0
ROT=0

DefaultToGuardArea=no
Armor=chronosp;;特殊护甲
AttachEffect.Animation=TGTSUICIDE;;自杀AE
AttachEffect.InitialDelay=70;;可视自己的情况而定,用于瞬移技能失效时间。
AttachEffect.PenetratesIronCurtain=yes
AttachEffect.Duration=999
AttachEffect.Delay=-1

……


[
Damage=1
Abductor=yes;;必须
Abductor.AbductBelowPercent=1
Abductor.Anim=WARPAWAY;;自己写瞬移效果的动画,可以在原地留个残影啊之类的
Warhead=TeleportWeaponWH;;特殊弹头

[TeleportWeaponWH]
;;防止吸到盟友的单位上了
AffectsEnemies=no
AffectsAllies=no
AffectsOwner=yes
Verses=0%,0%,0%,0%,0%,0%,0%,0%,0%,0%,0%;;必须。

Versus.abcspecial=100%;;攻击指定护甲单位。


以上就是我认为单位技能里我目前能想到的最通常的两种做法。


当然这样也是有缺点的,主要缺点如下:
1.单位投放可能在目标单位过多时吞掉信标单位,也无法将技能丢在另一个单位或建筑头上。
2.所有技能共用一个射程。
3.不分敌我(理论上使用治疗武器空爆可以解决这个问题,但是截至目前我写这堆东西的时候我还尚未确定治疗武器是否能够空爆出伤害武器,治疗武器的生效需要信标残血,这点可以用AE先扣信标一大半血,然后Delay你想要的时间后再用AE扣掉另一大半血来解决)
4.在Ares2.0下,丢技能的单位限1,Ares3使用SW.AlwaysGranted=yes可以让技能常亮,同时丢技能的单位批量生产(然而效果还是不好,你丢一个技能所有单位技能都丢出去了,最好还是建造限1的单位)


如果大家发现什么问题敬请提出,有什么补充的也可以回复我,本人不胜感激。








发表于 2020-8-22 21:07:58 | 显示全部楼层
辛苦了,大佬棒死了
回复

使用道具 举报

发表于 2020-8-22 23:50:52 | 显示全部楼层
我听说ARES3.0有单位存在时超武读条的功能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-4-18 02:55 , Processed in 0.092554 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表