You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
AdLike2048/docs/方案-Skill额外效果.md

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 流程

  1. 释放英雄主动后:哪吒 HeroActor 保持可见,播「待机单字」,隐藏预制体「阴影」第二节点(吒影)与武器。开战不锁敌(team=self),CD 到即可放。
  2. 在「吒」格世界坐标加载 battleHero/prefab/skill/哪吒冲锋。冲锋 disarmAnimComplete,旧武器动画 complete 不得收掉跳出。
  3. 从吒位先蹲再弹,跳到攻本阵营进路上离吒最近的格(格距;不先找任意可走格再二次吸附)。
  4. 沿攻本阵营怪物进路反向冲锋(Pathfinder.buildRetreatPath,朝敌方出怪口 / 敌营)。
  5. 默认 播「哪吒技能2」,冲锋枪 播预制体默认「哪吒技能」,皮肤切当前 Weapon.skin(回池还原 defaultSkin);节点角对准冲锋前方(0° 右 / 90° 上 / 180° 左,540°/s)。
  6. 沿途对敌对存活怪各伤一次,系数取配表第 4 段。
  7. 时长到或路径走完:回池、英雄回「待机」、恢复阴影第二节点。

2b. type 2 流程

  1. 场上无敌方行军怪(非塔)则不放,CD 保持就绪;有怪才开战。不锁具体目标,伤害仍由落点结算。
  2. 释放弓武器/英雄主动:不写 Ability 直伤,表现层按间隔射箭。
  3. 目标为攻向施法者的敌方来路 isCanWalk 格(多阵营图不含己方出怪路径)。MapGrid.AreaID 与阵营区域独立:阵营格可跨区域;通行格出现多种 AreaID 时,再限己方主区域(owner0→1、owner1→2),即只打己方区域内的敌方阵营格。每格 每格箭数 发,落点在格心附近随机偏移,发射顺序打乱。
  4. 投掷物为当前武器弓的「箭」(与普攻同一套模板/皮肤),从攻击单位处出发;每发播一次发射动画,间隔短于动画时长则加快倍速。
  5. 抛物线飞向落点,贝塞尔顶点高于目标坐标;落地消失。
  6. 落点附近有敌对存活怪则按伤害系数结算。

例: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)。

  1. 仅英雄/武器主动(skillKind 为 hero / weapon)。无 showeffect 时在 Router.dispatch 之后立刻执行;有预兆则等预兆起播后 PRES_HIT_AT_BASE(0.33s)再执行。
  2. 目标为施法者友军怪物:己方出怪口行军怪(owner 0→port 1,owner 1→port 2),以及 BattleTeamId.isFriendly 的友方召唤。不含攻向自己的敌方来路怪。
  3. 类型 3:move_speed_mul ×(1+万分比/10000),持续秒数;友军身上循环播 怪_加速。
  4. 类型 4:当前生命 += maxHp×万分比/10000(封顶 maxHp),syncMxHp;友军身上播 怪物加血。
  5. 特效优先 battleHero/prefab/buff/,缺失则用 battleGameMonster/prefab/(并 warn)。

例:3,2000,3 → 移速 +20%、持续 3 秒;4,2000 → 回复 20% 最大生命。

2c2. type 5 流程

类型 5 由 MonsterSkillHost 承接(谛听 30307),不写 DealDamage。

  1. target_stage=2 友军圈选,只留 Monster.type 1/3;stageStrategy=1 去重,个数取 skill 第 2 段。
  2. 播「技能」同时 presentLocked 吸入锁定小兵。
  3. 动画结束 lifecycle.despawn(不发击杀桃);施法者血上限 ×(1+吞噬数×加成万分比/10000),当前血按原比例同步。

例:5,10,5000 → 最多 10 只,每只 +50% 上限。

2d. type 6 流程

类型 6 是附加效果(如青锋宝剑 20104),不注册 exclusive extra presenter;target_stage=3 为自身,不写 DealDamage,避免打自己。

  1. 仅英雄/武器主动。无 showeffect 时在 Router.dispatch 之后立刻执行;有预兆则等预兆起播后 0.33s 再执行。
  2. 先对施法者 attack ×(1+加攻万分比/10000) 持续加攻时间;同时武器插值缩放到 默认×放大比例,英雄「动画」「阴影」保持默认缩放(最大 1 倍,与原放大段一致)。
  3. 再 attack ×(1+减攻万分比/10000) 持续减攻时间;武器、「动画」、「阴影」插值缩放到各自 默认×缩小比例。品质框、等级标签等 UI 不缩放。缩放目标始终相对首次绑定的默认值,禁止把当前缩放再乘一遍。
  4. 两段结束后清攻击加成,武器与动画/阴影插值恢复默认缩放;结束时打回默认,避免残留缩放叠进下一次。
  5. 缩放由 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 排队串行,谁都不丢。

  1. 释放武器/英雄主动,播 Skill.animation(三尖两面刀技能)。
  2. 主目标无论当前坐标,吸入武器枪尖骨骼 bone3(缺失则 warn 后用朝向节点),配合挑飞段贴枪尖。
  3. 砸地关键帧:枪尖世界坐标 → 最近可行走格,怪物加速砸向该格脚底。
  4. 落点播 battleHero/prefab/skill/挑飞砸地效果(三尖两面刀技能2),半径内敌对存活怪按伤害系数结算并上 debuff_4 眩晕。
  5. 被挑飞怪即使死亡也占用节点不回收,砸地表现结束后若已死才回收;仍存活则写入落点格并 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。

  1. 距离取施法者与当前目标逻辑像素(DamagePipeline.distancePx)。
  2. 加值万分比 = min(最大加值, floor(距离/距离系数) × 伤害加值)。
  3. 最终伤害 × (1 + 加值万分比/10000),与已有 __distDmgMul 相乘。
  4. 毒/灼烧等 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_buff1 type 11