9.8 KiB
方案:Skill.skill 额外效果
状态:type 1/2/3/4/5/6/7/8 已落地(2026-09-04)
关联:方案-战斗技能逻辑层.md、方案-战斗表现数据驱动.md
1. 字段
Skill.skill:主动技额外效果。格式 类型,参数…。与 atk_type 正交:索敌仍走 atk_type,额外效果由 skill 头部分发。
| 类型 | 含义 | 参数 |
|---|---|---|
| 1 | 哪吒反向冲锋(只配哪吒) | 冲锋速度(px/s),持续时间(s),伤害系数(万分比) |
| 2 | 万箭齐发(只配弓) | 发射间隔(s),每格箭数,伤害系数(万分比) |
| 3 | 额外给友军加速 | 加速系数(万分比),加速时间(s) |
| 4 | 额外给友军加血 | 加血比例(万分比,相对最大生命) |
| 5 | 吞噬本方小兵(谛听 30307) | 最大数量,每个额外加成(血上限万分比,加法) |
| 6 | 法相天地 | 放大比例,加攻万分比,加攻时间(s),缩小比例,减攻万分比,减攻时间(s) |
| 7 | 挑飞砸地 | 圆形半径(px),伤害系数(万分比),眩晕时间(s) |
| 8 | 距离越远伤害越高 | 距离系数(px),伤害加值(万分比),最大加值(万分比) |
例:1,166,4,10000 → 166 像素/秒、持续 4 秒、伤害 100%。
2. type 1 流程
- 释放英雄主动后:哪吒 HeroActor 保持可见,播「待机单字」,隐藏预制体「阴影」第二节点(吒影)与武器。开战不锁敌(
team=self),CD 到即可放。 - 在「吒」格世界坐标加载
battleHero/prefab/skill/哪吒冲锋。冲锋disarmAnimComplete,旧武器动画 complete 不得收掉跳出。 - 从吒位先蹲再弹,跳到攻本阵营进路上离吒最近的格(格距;不先找任意可走格再二次吸附)。
- 沿攻本阵营怪物进路反向冲锋(
Pathfinder.buildRetreatPath,朝敌方出怪口 / 敌营)。 默认播「哪吒技能2」,冲锋枪播预制体默认「哪吒技能」,皮肤切当前Weapon.skin(回池还原 defaultSkin);节点角对准冲锋前方(0° 右 / 90° 上 / 180° 左,540°/s)。- 沿途对敌对存活怪各伤一次,系数取配表第 4 段。
- 时长到或路径走完:回池、英雄回「待机」、恢复阴影第二节点。
2b. type 2 流程
- 场上无敌方行军怪(非塔)则不放,CD 保持就绪;有怪才开战。不锁具体目标,伤害仍由落点结算。
- 释放弓武器/英雄主动:不写 Ability 直伤,表现层按间隔射箭。
- 目标为攻向施法者的敌方来路
isCanWalk格(多阵营图不含己方出怪路径)。MapGrid.AreaID与阵营区域独立:阵营格可跨区域;通行格出现多种 AreaID 时,再限己方主区域(owner0→1、owner1→2),即只打己方区域内的敌方阵营格。每格每格箭数发,落点在格心附近随机偏移,发射顺序打乱。 - 投掷物为当前武器弓的「箭」(与普攻同一套模板/皮肤),从攻击单位处出发;每发播一次发射动画,间隔短于动画时长则加快倍速。
- 抛物线飞向落点,贝塞尔顶点高于目标坐标;落地消失。
- 落点附近有敌对存活怪则按伤害系数结算。
例:2,0.05,2,10000 → 间隔 0.05 秒、每格 2 箭、伤害 100%。
2c. type 3 / 4 流程
类型 3、4 是附加效果,不注册 exclusive extra presenter,避免吃掉 atk_type / skillId 表现(玉帝仍走 atk_type 7;阎王 10206–10208 走 atk_type 7 + extra type 4)。
- 仅英雄/武器主动(
skillKind为hero/weapon)。无showeffect时在 Router.dispatch 之后立刻执行;有预兆则等预兆起播后PRES_HIT_AT_BASE(0.33s)再执行。 - 目标为施法者友军怪物:己方出怪口行军怪(owner 0→port 1,owner 1→port 2),以及
BattleTeamId.isFriendly的友方召唤。不含攻向自己的敌方来路怪。 - 类型 3:
move_speed_mul×(1+万分比/10000),持续秒数;友军身上循环播怪_加速。 - 类型 4:当前生命 += maxHp×万分比/10000(封顶 maxHp),
syncMxHp;友军身上播怪物加血。 - 特效优先
battleHero/prefab/buff/,缺失则用battleGameMonster/prefab/(并 warn)。
例:3,2000,3 → 移速 +20%、持续 3 秒;4,2000 → 回复 20% 最大生命。
2c2. type 5 流程
类型 5 由 MonsterSkillHost 承接(谛听 30307),不写 DealDamage。
target_stage=2友军圈选,只留Monster.type1/3;stageStrategy=1去重,个数取skill第 2 段。- 播「技能」同时
presentLocked吸入锁定小兵。 - 动画结束
lifecycle.despawn(不发击杀桃);施法者血上限×(1+吞噬数×加成万分比/10000),当前血按原比例同步。
例:5,10,5000 → 最多 10 只,每只 +50% 上限。
2d. type 6 流程
类型 6 是附加效果(如青锋宝剑 20104),不注册 exclusive extra presenter;target_stage=3 为自身,不写 DealDamage,避免打自己。
- 仅英雄/武器主动。无
showeffect时在 Router.dispatch 之后立刻执行;有预兆则等预兆起播后 0.33s 再执行。 - 先对施法者
attack×(1+加攻万分比/10000) 持续加攻时间;同时武器插值缩放到默认×放大比例,英雄「动画」「阴影」保持默认缩放(最大 1 倍,与原放大段一致)。 - 再
attack×(1+减攻万分比/10000) 持续减攻时间;武器、「动画」、「阴影」插值缩放到各自默认×缩小比例。品质框、等级标签等 UI 不缩放。缩放目标始终相对首次绑定的默认值,禁止把当前缩放再乘一遍。 - 两段结束后清攻击加成,武器与动画/阴影插值恢复默认缩放;结束时打回默认,避免残留缩放叠进下一次。
- 缩放由
FaXiangHost.tick与阶段同一时钟写入(约 0.4 秒插值后保持),不走SkillTransformDriver,避免武器出手cancelNode(武器根)把缩放掐掉导致与英雄错相。
例:6,1.5,20000,5,0.5,-3300,5 → 5 秒攻击 ×3、武器 1.5 倍;再 5 秒攻击 ×0.67、武器与字形缩到 0.5 倍;然后恢复。
2e. type 7 流程
类型 7 注册 exclusive extra presenter(红缨枪 20205、三尖两面刀 20506),不写 DealDamage,砸地时由表现层结算。武器主动与其它 type=1 主动一样走 OnTick + cd(勿留空 triggers)。哪吒英雄技仍是 type 1 冲锋:两槽独立 CD,同时就绪按 priority 排队串行,谁都不丢。
- 释放武器/英雄主动,播
Skill.animation(三尖两面刀技能)。 - 主目标无论当前坐标,吸入武器枪尖骨骼
bone3(缺失则 warn 后用朝向节点),配合挑飞段贴枪尖。 - 砸地关键帧:枪尖世界坐标 → 最近可行走格,怪物加速砸向该格脚底。
- 落点播
battleHero/prefab/skill/挑飞砸地效果(三尖两面刀技能2),半径内敌对存活怪按伤害系数结算并上debuff_4眩晕。 - 被挑飞怪即使死亡也占用节点不回收,砸地表现结束后若已死才回收;仍存活则写入落点格并
assignPath。
例:7,100,10000,2 → 半径 100、伤害 100%、眩晕 2 秒。
2f. type 8 流程
类型 8 是附加乘区(震天弓 20511:8,40,1000,10000),不注册 exclusive extra presenter。武器 Skill.type=2 时写到施法者 AtkHookComp,每次普攻命中按距离加伤;主动技自身带 skill=8 时走 DealDamage.skillParts。
- 距离取施法者与当前目标逻辑像素(
DamagePipeline.distancePx)。 - 加值万分比 =
min(最大加值, floor(距离/距离系数) × 伤害加值)。 - 最终伤害 ×
(1 + 加值万分比/10000),与已有__distDmgMul相乘。 - 毒/灼烧等 DoT(
skipEntryHooks)不加。
例:8,40,1000,10000 → 每 40 像素 +10%,最多 +100%。
3. 实现
| 模块 | 职责 |
|---|---|
SkillAbilityBuilder |
extra=1/2/6/7 不写 DealDamage;3/4/6/8 不发 extraSkill cue |
SkillPresenterRouter |
extra=1/2/7 头优先于 atk_type;3/4/6 不注册 exclusive |
NezhaChargePresenter / Host |
显隐、预制体、路径、朝向、命中 |
ArrowRainPresenter / Host |
通行格排队、武器箭抛物线、落地伤 |
SpearTossPresenter / Host |
extra=7 吸枪尖、挑飞、砸地范围伤与眩晕 |
AllySkillExtraHost |
extra=3/4 友军加速/加血与特效 |
FaXiangHost |
extra=6 法相天地加攻/减攻与缩放 |
4. 验收
- 哪吒主动(10146~10148)放出后场上只留「哪」,冲锋体从吒位跳到路上再沿敌方来路反冲
- 冲锋枪保持预制体默认动画,节点朝向跟着冲锋方向转
- 沿途怪吃到
10000万分比伤害;结束后英雄与双字恢复 - 弓主动(如 10186~10188、10216~10218)场上无敌方行军怪则不放;有怪后敌方来路通行格陆续落下与普攻相同的箭;己方出怪路径不射;空格仍空落消失
- 玉帝主动(10196~10198)放出后己方行军怪加速 3 秒并播
怪_加速(表内暂无 showeffect,仍立刻施加);阎王主动(10206~10208)0.1,生死簿预兆起播后 0.33s:对敌直伤身上播怪_流血,己方行军怪回 20% 最大生命并播怪物加血;攻向自己的敌怪不受益 - 法相天地(20104/20106:
6,1.5,20000,5,0.5,-3300,5)先 5 秒武器放大加攻(英雄保持 1 倍),再 5 秒武器+动画+阴影缩到默认×0.5、品质框不跟缩,结束后平滑恢复;不打自己;多次释放武器不会越缩越小 - 挑飞砸地(20205/20506:
7,100,10000,2)把目标吸到枪尖挑起再砸到枪尖最近可行走格,圆形范围伤 + 眩晕 2 秒;死亡怪等砸地特效结束再回收 - 震天弓(20511:
8,40,1000,10000)普攻距离每 40 像素伤害 +10%,最多 +100%;射程仍走atk_buff1type 11