跳转到内容
输入关键词开始搜索。

战斗脚本补充说明

战斗脚本用于在战斗中组织剧情事件、技能效果、伤害结算和单位附加脚本。战斗剧情指令、战斗查询和技能指令已有独立索引,本页补充它们共享的规则和格式。

战斗中使用独立的剧情事件执行系统。它与大地图剧情事件执行器类似,但执行事件时不会强制暂停战斗;需要暂停或继续战斗时,可以在事件中使用 PAUSERESUME 等战斗剧情指令。

战斗中打开控制台时,可以用 bs@ 加指令内容的格式输入战斗脚本指令进行调试。

bs@KILL_ALL*1

部分角色属性字段不只是数值,也可以在战斗中触发命令。触发方式决定字段何时检查、条件参数如何填写,以及命令作用在哪类对象上。

触发方式条件参数说明
by_code由游戏内部逻辑处理,或没有默认实现的属性字段。
halo对象类型#距离光环效果,每帧对光环内目标执行触发命令。对象类型:0 友方,1 敌方,2 双方,3 共鸣。
hit_chance攻击类型列表;可附加 指令*条件命中目标时以字段值为概率触发。攻击类型:0 近战,1 远程,2 技能。可用 swallow_dmg 清除本次伤害并终止后续判定。
do_crit攻击类型列表暴击时触发。
every_5hits每 5 次攻击时,以字段值为概率触发。
hit_by攻击方式被攻击时触发。0 所有,1 近战,2 远程。
on_crit攻击方式被暴击时触发。0 所有,1 近战,2 远程。
on_dodge攻击方式闪避时触发。0 所有,1 近战,2 远程。
on_block攻击方式格挡时触发。0 所有,1 近战,2 远程。
on_dead指令*条件死亡时触发。可用 stop 终止该次死亡判定。
on_skill技能系角色使用技能时触发;不指定时表示所有技能。
in_abnormal异常状态类型角色进入异常状态时触发。0 所有,1 昏迷,2 定身,3 嘲讽,4 沉默,5 平静,6 恐惧,7 隐身,8 控制或混乱。
out_abnormal异常状态类型角色摆脱异常状态时触发。异常状态类型同 in_abnormal。
buff_weaken目标 Buff ID对拥有指定 Buff 的目标提升伤害效果;提升百分比为 Buff 层数 * 字段数值 / 100。
buff_dmgaddBuff ID自身拥有指定 Buff 时提升受到伤害效果;提升百分比为 Buff 层数 * 字段数值 / 100。
defeat_tag击败敌人时触发。
on_frienddown友军被击倒时触发。
on_enemydown敌军被击倒时触发。
polymorph模型ID#模型动作ID#变身特效ID#恢复特效#动态模型信息单位变身效果。模型 ID、动作 ID 或动态模型信息填 RAW 时使用原模型信息。
global_add_stat条件表达式组战斗前根据条件为指定对象范围增加属性。
week_getitem物品ID每周获得指定物品;多个物品 ID 使用 # 分割,仅主角生效。
name_prefix颜色代码#名称文本大小为名称增加前缀。颜色使用 16 进制代码,文本大小可省略。

攻击、技能、特效和指令对单位造成伤害时,通常通过伤害表达式描述结算参数。伤害表达式由多个键值对组成,并使用分号分隔。

key1:value1;key2:value2;...;keyN:valueN
说明
type伤害类型。0 普通近战,1 普通远程,2 技能伤害,3 治疗,4 回蓝,5 空判定。
dmg物理伤害数值,值为伤害值公式。
t_dmg真实伤害数值;治疗效果也使用此值。
hit命中参数,范围 -1000 到 1000;不能闪避时填 1000。
blk被招架参数,范围 -1000 到 1000;不能被招架时填 -1000。
cri暴击参数,范围 -1000 到 1000;不能暴击时填 -1000。
act是否播放受击动作。1 是,0 否。
eft受击特效 ID。
trig是否触发伤害效果,例如反伤。
attack_type指定伤害的武器攻击类型;类型 900 为巫术攻击,对应巫术防御。
buff受到该伤害时附带的 Buff。格式:BuffID,[time],[overlay],时间和层数为可选参数。

伤害值公式支持 +-*/^%、括号,并可嵌入 [%cmd%] 形式的预定义字段。

字段说明
[%rnd:min_val,max_val%]随机一个大于等于 min_val、小于等于 max_val 的整数。
[%field%]field 可替换为任意角色属性字段,返回该字段的数值。

战斗指令中需要定位目标单位时,除了填写角色 ID,也可以使用以下内置对象 ID。

特殊 ID说明
PLAYER玩家单位。
GM_AA 方固定内置单位,用于实现无特定施法者的技能指令。
GM_BB 方固定内置单位,用于实现无特定施法者的技能指令。
THIS当前执行指令的单位自身,常用于单位挂载脚本。
RND_ENEMY_UNIT随机敌方小兵单位,敌方相对于当前 PLAYER 一方。
RND_FRIEND_UNIT随机友方小兵单位,友方相对于当前 PLAYER 一方。
EMITTER={EMITTER_ID}指定 ID 为 EMITTER_ID 的发射器单位。

地城单位对象可以在触发命令中定义附加触发脚本。角色表中的角色也可以通过 TAG 字段 attached_script 指定脚本事件 ID,为该角色挂载附加触发脚本。每个对象可以挂载多个触发器。

[CMD_BEGIN]#触发类型1#触发条件(可选)#触发参数(可选)
命令行1
命令行2
...
[CMD_END]
[CMD_BEGIN]#触发类型2#触发条件(可选)#触发参数(可选)
命令行1
命令行2
...
[CMD_END]
触发类型说明
on_spawn单位刷新出来时触发。
enter_combat进入战斗时触发。
get_hurt单位受到伤害时触发。
dead单位死亡时触发。
on_timer单位身上的计时器到时时触发,计时器由 SET_UNIT_TIMER 设置。
on_skill单位开始释放技能时触发;触发参数为技能 ID。
hp_pct单位血线第一次低于目标百分比时触发;触发参数为目标血线百分比。
interactive具有战斗内可交互对象的单位进行交互行为时触发。
[CMD_BEGIN]#enter_combat#
B_TALK*THIS#关门,放狗!
[CMD_END]
[CMD_BEGIN]#get_hurt#[%this_hp_pct%][<=]5&[%dg_int_val:测试计数器1%][<=]0
SET_DG_INTVAR*测试计数器1#1#1
SKILL_CMD*THIS#THIS#0#add_buff#中立#caster
B_TALK*THIS#别打了!别打了!我认输,什么都给你!
CMD_RETREAT*1
[CMD_END]