Files
behavior3editor/sample-node-config.json
T

1 line
39 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[{"desc":"BOSS对话","input":["{对象}?"],"doc":"+ 使用event_level表中的事件ID(事件逻辑见事件表)\n","args":[{"desc":"事件ID","type":"int","name":"event_id"}],"name":"BossTalk"},{"desc":"获取自己的单位","output":["{单位}"],"name":"GetSelfAvatar"},{"desc":"炮手被动","args":[{"desc":"间隔","type":"int","name":"lock"},{"desc":"排除技能id","type":"int?","name":"ex1"},{"desc":"排除技能id","type":"int?","name":"ex2"},{"desc":"排除技能id","type":"int?","name":"ex3"},{"desc":"排除技能id","type":"int?","name":"ex4"},{"desc":"排除技能id","type":"int?","name":"ex5"}],"name":"Passive1010200"},{"desc":"获取单位数量","output":["数量(int)"],"args":[{"desc":"阵营1\/2","type":"int?","name":"camp"},{"desc":"角色","type":"boolean?","name":"role"},{"desc":"怪物","type":"boolean?","name":"monster"},{"desc":"子弹","type":"boolean?","name":"bullet"},{"desc":"机器人","type":"boolean?","name":"robot"}],"doc":"+ 默认全地图\n","name":"GetAvatarCount"},{"desc":"始终返回失败","doc":"+ 只能有一个子节点,多个仅执行第一个\n+ 不管子节点是否成功都返回失败\n","name":"AlwaysFail"},{"desc":"复活","name":"Realive"},{"desc":"加怒气点","input":["{作用目标}?"],"doc":"+ 是正常的怒气产消,会用于正常逻辑的怒气消耗\n+ 默认目标为自己\n+ 仅使用一次,是指本次释放技能所有被勾选“仅使用一次”的addAp节点最多加一次\n","args":[{"desc":"点数","type":"int","name":"add"},{"desc":"是否只加一次","type":"boolean?","name":"once"}],"name":"AddAp"},{"desc":"比较公共血量(千分比)","args":[{"desc":">","type":"int?","name":"gt"},{"desc":">=","type":"int?","name":"ge"},{"desc":"==","type":"int?","name":"eq"},{"desc":"<=","type":"int?","name":"le"},{"desc":"<","type":"int?","name":"lt"}],"doc":"+ 直接针对地图中的公共血量\n","name":"CmpShareHp"},{"desc":"查找敌人","output":["目标单位"],"args":[{"desc":"x","type":"int?","name":"x"},{"desc":"y","type":"int?","name":"y"},{"desc":"宽","type":"lua?","name":"w"},{"desc":"高","type":"lua?","name":"h"},{"desc":"查找类型","type":"string?","name":"type"},{"desc":"怪物类型","type":"int?","name":"monster_type"},{"desc":"以子弹为中心","type":"boolean?","name":"bullet"},{"desc":"忽略碰撞体积","type":"boolean?","name":"no_collision"},{"desc":"考虑自身体积","type":"boolean?","name":"self_collision"},{"desc":"距离优先","type":"boolean?","name":"dis_priority"}],"doc":"+ 返回单目标,判定优先级:威胁值最高,当威胁值相等时选最近那一个\n+ 没找到返回失败\n","name":"FindEnemy"},{"desc":"放范围内权重最大的技能","input":["{目标}"],"doc":"+ 当多个技能都可以满足释放条件时,按权重释放,被动技能不参与\n","output":["{技能id}"],"name":"LaunchSkillWithWeight"},{"desc":"设置朝向","args":[{"desc":"反向","type":"boolean?","name":"anti"},{"desc":"指定朝向","type":"int?","name":"face"}],"doc":"+ 1为右,-1为左\n+ 指定朝向优先\n","name":"SetFace"},{"desc":"随机移动","args":[{"desc":"只向前随机","type":"boolean?","name":"face"},{"desc":"范围","type":"int?","name":"range"}],"doc":"+ 无法移动返回失败\n+ 移动过程中返回正在运行状态,达到目的地返回成功\n","name":"MoveRandom"},{"desc":"贝塞尔曲线运动","input":["[路点]","{作用单位}"],"doc":"+ 子弹专用运动曲线,人物带测\n+ 飞行过程返回正在运行,抵达返回成功,前端假象,后端瞬移,最好不要在飞行过程做碰撞\n+ 所输入路点少于两个返回失败\n","args":[{"desc":"时间","type":"int","name":"time"},{"desc":"子弹","type":"boolean?","name":"bullet"}],"name":"BezierCurve"},{"desc":"正在待机","name":"IsIdle"},{"desc":"获取范围内怪物数量","output":["数量(int)"],"args":[{"desc":"怪物id","type":"int?","name":"monsterid"},{"desc":"x","type":"int?","name":"x"},{"desc":"y","type":"int?","name":"y"},{"desc":"宽","type":"lua?","name":"w"},{"desc":"高","type":"lua?","name":"h"},{"desc":"以子弹为中心","type":"boolean?","name":"bullet"},{"desc":"忽略碰撞体积","type":"boolean?","name":"no_collision"}],"name":"GetMonsterCountInRange"},{"desc":"否为主角","input":["{对象}"],"name":"IsRole"},{"desc":"获取buff时间","output":["帧数(int)"],"args":[{"desc":"首层id","type":"int?","name":"buffid"}],"doc":"+ 获取BUFF当前剩余时间\n+ 当同ID的BUFF同时存在不止一个时,按最大层数的BUFF的结果\n","name":"GetBuffTime"},{"desc":"自增","input":["变量"],"doc":"+ 所输入变量为空,返回失败\n+ 变量稳定加1\n","args":[{"desc":"值","type":"lua?","name":"add"}],"name":"AddValue"},{"desc":"怪物寻敌(读配置警戒范围)","output":["[{目标}]"],"args":[{"desc":"查找类型","type":"string?","name":"type"},{"desc":"忽略碰撞体积","type":"boolean?","name":"no_collision"},{"desc":"考虑自身体积","type":"boolean?","name":"self_collision"},{"desc":"威胁值优先","type":"boolean?","name":"threat"}],"doc":"+ 无目标返回失败\n","name":"MonsterFindEnemy"},{"desc":"取数组的长度","input":["数组"],"doc":"+ 若数组为空,返回失败\n","output":["值"],"name":"GetArrayCount"},{"desc":"释放技能","input":["{目标}"],"doc":"+ 本身也会进行技能冷却判定\n+ 技能转向按目标碰撞体积中心做判定(仅计算x轴)\n","args":[{"desc":"技能id","type":"int","name":"skillid"},{"desc":"改变朝向","type":"boolean?","name":"face"}],"name":"LaunchSkill"},{"desc":"取反","doc":"+ 将子节点的返回值取反\n","name":"Not"},{"desc":"正在移动","name":"IsMoving"},{"desc":"修改技能触发几率","args":[{"desc":"技能id","type":"lua","name":"skillid"},{"desc":"t1","type":"lua?","name":"t1"},{"desc":"t2","type":"lua?","name":"t2"},{"desc":"id","type":"lua?","name":"id"},{"desc":"p","type":"lua?","name":"p"}],"doc":"+ 调整触发类技能触发几率(直接替换表中数值)\n+ 没有携带技能时返回失败\n","name":"ChangeSkillTrigger"},{"desc":"驱散buff","input":["{目标}"],"doc":"+ 驱散成功与否收到驱散几率属性影响\n+ 无目标返回失败\n+ 来源默认是技能释放者,无来源技能默认自己\n","name":"DispelBuff"},{"desc":"Buff是否存在","input":["{对象}"],"doc":"+ 可以只填分类\n+ 单位默认自己\n","args":[{"desc":"分类","type":"int?","name":"type"},{"desc":"指定buffid(首层)","type":"int?","name":"buffid"}],"name":"HasBuff"},{"desc":"拉取到子弹","input":["[{被拉单位}]"],"doc":"+ 本质上是瞬移,过程不可见\n+ 拉去到子弹坐标\n","args":[{"desc":"时间\/帧","type":"int","name":"time"}],"name":"PullToBullet"},{"desc":"是否可以击退","input":["{目标单位}"],"doc":"+ 目标是主角、可击退的怪物(配表)且不处于霸体状态(目前不包括机器人与召唤物)则返回成功\n+ 其他情况或没有目标时返回失败\n","name":"CanHitBack"},{"desc":"否为怪物","input":["{对象}"],"name":"IsMonster"},{"desc":"是否已死亡","input":["{单位(默认自己)}"],"name":"IsDeath"},{"desc":"顺序执行","doc":"+ 一直往下执行,有子节点返回成功则返回成功,若全部节点返回失败则返回失败\n+ 子节点是或的关系\n","name":"Sequence"},{"desc":"等待","args":[{"desc":"帧数","type":"lua","name":"time"}],"doc":"+ 仅影响当前行为树\n","name":"Wait"},{"desc":"查找攻击范围内敌人","output":["{目标单位}"],"doc":"+ 使用monster中的攻击范围进行判定\n+ 没找到返回失败\n","name":"FindEnemyCanAttack"},{"desc":"检查副本类型","args":[{"desc":"副本id","type":"int?","name":"id"},{"desc":"是否为pvp","type":"boolean?","name":"is_pvp"}],"name":"CheckMapLevel"},{"desc":"查找多个友军","output":["[{目标单位}]"],"args":[{"desc":"x","type":"int?","name":"x"},{"desc":"y","type":"int?","name":"y"},{"desc":"宽","type":"lua?","name":"w"},{"desc":"高","type":"lua?","name":"h"},{"desc":"最大数量","type":"int?","name":"count"},{"desc":"查找类型","type":"string?","name":"type"},{"desc":"以子弹为中心","type":"boolean?","name":"bullet"},{"desc":"考虑自身体积","type":"boolean?","name":"self_collision"},{"desc":"忽略碰撞体积","type":"boolean?","name":"no_collision"}],"doc":"+ 跟FindEnemyList一样,仅限友军\n","name":"FindFriendList"},{"desc":"拉取目标","input":["{目的单位}","[{被拉单位}]"],"doc":"+ 本质上是瞬移,过程不可见\n","args":[{"desc":"时间\/帧","type":"int?","name":"time"}],"name":"PullToTarget"},{"desc":"击退","input":["目标"],"args":[{"desc":"时间(帧)","type":"int","name":"time"},{"desc":"距离","type":"int","name":"w"}],"name":"HitBack"},{"desc":"子树","args":[{"desc":"行为树","type":"string","name":"tree"}],"doc":"+ 不能死循环(原则上不可套娃)\n+ 不可接子节点\n+ 返回子树根节点结果\n","name":"ChildTree"},{"desc":"范围伤害","args":[{"desc":"x","type":"int?","name":"x"},{"desc":"y","type":"int?","name":"y"},{"desc":"宽","type":"lua?","name":"w"},{"desc":"高","type":"lua?","name":"h"},{"desc":"数量上限","type":"int?","name":"max"},{"desc":"查找类型","type":"string?","name":"type"},{"desc":"最终伤害加成(千分比)","type":"lua?","name":"add"},{"desc":"吸血(千分比)","type":"lua?","name":"recover"},{"desc":"技能伤害千分比","type":"lua?","name":"dmg_var"},{"desc":"技能固定伤害","type":"lua?","name":"dmg_const"},{"desc":"不播受击","type":"boolean?","name":"no_hit_action"},{"desc":"以子弹为中心","type":"boolean?","name":"bullet"},{"desc":"忽略碰撞体积","type":"boolean?","name":"no_collision"},{"desc":"伤害次数","type":"int?","name":"count"}],"doc":"+ findEnemyList+forEach+Hurt,必定成功\n","name":"RangeHurt"},{"desc":"遍历数组","input":["[{数组}]"],"doc":"+ 遍历数组,并对每个数组里的值进行一次运算\n+ 执行逻辑为并行执行\n","output":["{变量}"],"name":"ForEach"},{"desc":"只执行一次","args":[{"desc":"本帧内","type":"boolean?","name":"frame"}],"doc":"+ 可以接多个子节点,子节点默认全部执行\n+ 被打断后该节点后的子节点依旧不会执行\n+ 该节点执行后永远返回成功\n","name":"Once"},{"desc":"侦听技能释放","input":["{目标(默认自己)}"],"doc":"+ 第一次执行返回成功,之后执行返回失败\n","args":[{"desc":"技能id","type":"int?","name":"skillid"},{"desc":"技能类型","type":"int?","name":"type"}],"name":"ListenSkill"},{"desc":"宠物跟随","name":"PetFollow"},{"desc":"敌人处于警戒范围内","input":["{敌人}"],"doc":"+ 根据monster表中的警戒范围进行判定\n+ 敌人为空或敌人已经死亡返回失败\n","name":"InAlertRange"},{"desc":"随机并行执行","args":[{"desc":"数量","type":"lua","name":"count"}],"doc":"+ 随机选取若干子节点并行执行,过程无序\n+ 随机数量不得超过子节点\n+ 子节点不支持返回正在运行状态(wait之类)\n","name":"RandomParallel"},{"desc":"始终返回成功","doc":"+ 只能有一个子节点,多个仅执行第一个\n+ 不管子节点是否成功都返回成功\n","name":"AlwaysSuccess"},{"desc":"技能是否可释放","args":[{"desc":"技能id","type":"int","name":"skillid"}],"doc":"# 返回失败的情况:\n+ 没有携带该技能(配表)\n+ 处于CD状态\n+ 所释放技能的类型处于lockAction状态\n+ 被动技能\n+ 怒气技能需求怒气不足\n","name":"CanLaunch"},{"desc":"真实伤害","input":["{目标}"],"doc":"+ 无视伤害免疫\n+ 目标可以是单个或多个\n","args":[{"desc":"次数","type":"int?","name":"count"},{"desc":"固定值","type":"lua?","name":"extra"},{"desc":"不播受击","type":"boolean?","name":"no_hit_action"}],"name":"RealDamage"},{"desc":"比较属性值(千分比)","input":["{对象}"],"doc":"+ 对象默认自己\n+ 字段名只能填hp与ap\n","args":[{"desc":"字段(hp\/ap)","type":"string","name":"key"},{"desc":">","type":"int?","name":"gt"},{"desc":">=","type":"int?","name":"ge"},{"desc":"==","type":"int?","name":"eq"},{"desc":"<=","type":"int?","name":"le"},{"desc":"<","type":"int?","name":"lt"}],"name":"CmpAttrPercent"},{"desc":"设置为空","input":["变量"],"doc":"+ 将变量置空\n","name":"SetNull"},{"desc":"敌人处于攻击范围内","input":["{敌人}"],"doc":"+ 根据monster表中的攻击范围进行判定\n+ 敌人为空或敌人已经死亡返回失败\n","name":"InAttackRange"},{"desc":"秒杀单位","input":["{目标(默认自己)}"],"doc":"+ 无视一切,直接死亡\n","name":"SecKill"},{"input":["{目标}"],"doc":"+ 无目标返回失败\n+ 无法转向或无法移动返回失败\n+ 抵达地形边界返回失败\n+ 不会返回正在运行状态\n","name":"MoveAway"},{"desc":"锁定行为","args":[{"desc":"时间(帧)","type":"lua","name":"time"},{"desc":"禁止重力","type":"boolean?","name":"gravity"},{"desc":"禁止移动","type":"boolean?","name":"move"},{"desc":"禁止跳跃","type":"boolean?","name":"jump"},{"desc":"禁止转向","type":"boolean?","name":"face"},{"desc":"禁止普攻","type":"boolean?","name":"skill1"},{"desc":"禁止自动技能","type":"boolean?","name":"skill2"},{"desc":"禁止主动技能","type":"boolean?","name":"skill3"},{"desc":"禁止二段跳","type":"boolean?","name":"skill4"},{"desc":"霸体","type":"boolean?","name":"super_armor"},{"desc":"无法被选中","type":"boolean?","name":"select"},{"desc":"无法回怒","type":"boolean?","name":"ap"}],"doc":"+ 状态间不相互影响,重复效果取最大值\n+ 无特殊情况下仅用做技能过程设定单位状态\n","name":"LockAction"},{"desc":"获取单位属性","input":["{单位}"],"doc":"+ 属性名称,英文小写\n","args":[{"desc":"属性1名称","type":"string?","name":"key1"},{"desc":"属性2名称","type":"string?","name":"key2"},{"desc":"属性3名称","type":"string?","name":"key3"},{"desc":"属性4名称","type":"string?","name":"key4"},{"desc":"属性5名称","type":"string?","name":"key5"}],"output":["{属性1}","{属性2}","{属性3}","{属性4}","{属性5}"],"name":"GetAttrs"},{"desc":"击退怒气","input":["{作用目标}?"],"doc":"+ 受到击退怒气抵抗属性影响,原则上不可写负\n+ 来源默认是技能释放者,无来源技能默认自己\n+ 是否生效一次,是指本次释放技能所有被勾选“仅使用一次”的addAp节点最多加一次\n","args":[{"desc":"点数","type":"int","name":"add"},{"desc":"是否生效一次","type":"boolean?","name":"once"}],"name":"DropAp"},{"desc":"设置免疫伤害状态","args":[{"desc":"是否激活","type":"boolean?","name":"active"},{"desc":"持续时间","type":"lua?","name":"time"}],"name":"SetInvincibleState"},{"desc":"伤害之无中生有","input":["{目标}"],"args":[{"desc":"次数","type":"int?","name":"count"},{"desc":"伤害值","type":"lua?","name":"value"}],"name":"HurtWithoutSrc"},{"desc":"查找多个敌人","output":["[{目标单位}]"],"args":[{"desc":"x","type":"int?","name":"x"},{"desc":"y","type":"int?","name":"y"},{"desc":"宽","type":"lua?","name":"w"},{"desc":"高","type":"lua?","name":"h"},{"desc":"最大数量","type":"int?","name":"count"},{"desc":"查找类型","type":"string?","name":"type"},{"desc":"怪物类型","type":"int?","name":"monster_type"},{"desc":"以子弹为中心","type":"boolean?","name":"bullet"},{"desc":"忽略碰撞体积","type":"boolean?","name":"no_collision"},{"desc":"考虑自身体积","type":"boolean?","name":"self_collision"},{"desc":"距离优先","type":"boolean?","name":"dis_priority"}],"doc":"+ 返回数组\n+ 没找到返回失败\n","name":"FindEnemyList"},{"desc":"子弹是否已死亡","name":"IsBulletDeath"},{"desc":"侦听击杀","input":["{目标}"],"doc":"+ 第一次执行返回成功,之后执行返回失败\n","name":"ListenKill"},{"desc":"比较血量百分比","input":["{对象}"],"doc":"+ 对象默认自己\n","args":[{"desc":">","type":"int?","name":"gt"},{"desc":">=","type":"int?","name":"ge"},{"desc":"==","type":"int?","name":"eq"},{"desc":"<=","type":"int?","name":"le"},{"desc":"<","type":"int?","name":"lt"}],"name":"CmpHp"},{"desc":"循环执行","args":[{"desc":"次数","type":"lua?","name":"count"}],"name":"Loop"},{"desc":"敌人处于巡逻范围内","input":["{敌人}"],"doc":"+ 根据monster表中的巡逻范围进行判定\n+ 敌人为空或敌人已经死亡返回失败\n","name":"InPatrolRange"},{"desc":"增加技能等级","args":[{"desc":"skillid","type":"int","name":"skillid"},{"desc":"增加等级","type":"lua","name":"add"}],"doc":"+ 战斗过程增加的技能等级,可增可减\n+ 没有携带该技能时返回失败\n+ 技能等级最高可达上限,最低到1\n","name":"AddSkillLevel"},{"desc":"创建Buff","input":["{目标}?"],"doc":"+ 原则上AI行为树不可使用\n+ BUFF效果根据分类会受到对应属性(抗性)影响(具体查表)\n+ BUFF叠加规则见表中配置,可自叠\n+ BUFF的ID必须填第一层ID,否则会当第一层ID使用\n+ 该节点所填BUFF变量(持续时间、属性千分比)将会覆盖原BUFF表中持续时间\n+ 怪物不可控会使怪物直接免疫控制分类的BUFF\n+ 作用目标默认自己\n+ 除非buffid不存在返回失败,否则永远返回成功\n+ 属性如果使用公式,需要用双号括起来,{\\[1011\\]=\"atk*2\"}\n","args":[{"desc":"buffid","type":"lua","name":"buffid"},{"desc":"层数","type":"int","name":"stack"},{"desc":"持续时间(帧)","type":"lua?","name":"time"},{"desc":"属性(覆盖)","type":"lua?","name":"attrs"},{"desc":"属性千分比(覆盖)","type":"lua?","name":"attrs_per"}],"name":"CreateBuff"},{"desc":"造成百分比伤害","input":["{目标}"],"doc":"+ 跟hurt一样,除了是根据血量进行伤害计算,会受伤害免疫影响\n+ 目标为空返回失败\n","args":[{"desc":"伤害(千分比)","type":"lua?","name":"percent"},{"desc":"基于最大血量(默认当前血量)","type":"boolean?","name":"max_hp"},{"desc":"不播受击","type":"boolean?","name":"no_hit_action"}],"name":"HurtPercent"},{"desc":"怪物塔防寻路","output":["[路点]"],"doc":"+ 根据mappic_json里的路点进行移动(仅用于进击的怪怪)\n+ 无路点时返回失败\n","name":"MonsterFindDefendPath"},{"desc":"碰撞检测","output":["[{目标单位}]"],"args":[{"desc":"单位类型","type":"string?","name":"type"},{"desc":"共享碰撞","type":"boolean?","name":"share_skill"}],"doc":"+ 注意普朗克时间常量12帧,子弹实际情况下并非连续过程,速度不可过快\n+ 共享碰撞,所有同一技能的标记了的子弹共享碰撞记录\n+ 碰撞规则在子弹表中配置\n+ 返回结果为数组\n","name":"CheckCollision"},{"desc":"非空","input":["变量"],"doc":"+ 判断变量是否为空\n","name":"NotNull"},{"desc":"获取副本剩余时间","output":["时间\/秒(int)"],"doc":"+ 若副本无剩余时间,返回失败\n","name":"GetFubenRemainTime"},{"desc":"寻找本平台的敌人","output":["[{目标}]"],"doc":"+ 找当前平台怪物,不包括斜坡\n+ 没找到返回失败\n","name":"FindEnemyFloor"},{"desc":"创建子弹","input":["{以目标为中心}"],"doc":"+ 先创建的子弹表现层级低于后创建的,此处先后为该节点先后(不管延时)\n+ 延迟创建不算计子弹存活时间,延迟创建后无法打断,除非死亡\n+ 不在空中创建,起始坐标点在空中返回失败\n+ 目标默认自己\n+ 不在地里创建,设定后会做地形检测\n","args":[{"desc":"子弹id","type":"int","name":"id"},{"desc":"x","type":"int","name":"x"},{"desc":"y","type":"int","name":"y"},{"desc":"x初速度","type":"int?","name":"vx"},{"desc":"y初速度","type":"int?","name":"vy"},{"desc":"x加速度","type":"int?","name":"ax"},{"desc":"y加速度","type":"int?","name":"ay"},{"desc":"飞行时间","type":"int?","name":"time"},{"desc":"以子弹为中心","type":"boolean?","name":"by_bullet"},{"desc":"不在地里创建","type":"boolean?","name":"terrain"},{"desc":"不在空中创建","type":"boolean?","name":"nospace"},{"desc":"延时","type":"int?","name":"delay"}],"name":"CreateBullet"},{"desc":"战士被动","args":[{"desc":"间隔","type":"int","name":"lock"},{"desc":"排除技能id","type":"int?","name":"ex1"},{"desc":"排除技能id","type":"int?","name":"ex2"},{"desc":"排除技能id","type":"int?","name":"ex3"},{"desc":"排除技能id","type":"int?","name":"ex4"},{"desc":"排除技能id","type":"int?","name":"ex5"}],"name":"Passive1010100"},{"desc":"侦听复活","doc":"+ 第一次执行返回成功,之后执行返回失败\n","name":"ListenRealive"},{"desc":"获取单位属性","input":["{单位}"],"doc":"+ 属性名称,英文小写\n","args":[{"desc":"属性名称","type":"string","name":"key"}],"output":["{属性值}"],"name":"GetAttr"},{"desc":"是否可释放普通攻击","doc":"+ 判定该单位所携带的所有普攻技能是否可释放\n+ 失败条件跟CanLaunch相同\n","name":"CanNormalAttack"},{"desc":"设置变量","input":["变量"],"args":[{"desc":"值","type":"lua?","name":"value"}],"name":"SetValue"},{"desc":"随机执行","args":[{"desc":"权重1","type":"int?","name":"w1"},{"desc":"权重2","type":"int?","name":"w2"},{"desc":"权重3","type":"int?","name":"w3"},{"desc":"权重4","type":"int?","name":"w4"},{"desc":"权重5","type":"int?","name":"w5"},{"desc":"权重6","type":"int?","name":"w6"},{"desc":"权重7","type":"int?","name":"w7"},{"desc":"权重8","type":"int?","name":"w8"},{"desc":"权重9","type":"int?","name":"w9"},{"desc":"权重10","type":"int?","name":"w10"}],"doc":"\n","name":"RandomExec"},{"input":["数组1","数组2","数组3","数组4"],"doc":"+ 拼接会去除重复项\n+ 不同类别数组可拼接,后果自负\n","output":["[数组]"],"name":"MergeList"},{"desc":"否为为斜坡(以单位为中心点)","input":["单位"],"doc":"+ 相对面向,x,y偏移按自己面向控制\n","args":[{"desc":"x","type":"lua","name":"x"},{"desc":"y","type":"lua","name":"y"},{"desc":"相对面向","type":"boolean?","name":"face"}],"name":"IsSlant"},{"desc":"强制位移","input":["{单位}"],"doc":"+ 跟主动位移区分,会受到霸体影响,且会触发临击稳如泰山属性\n+ 边界限制后不会掉落平台,前提是无y轴位移\n+ 不选择以自身为方向时,正为右,负为左\n","args":[{"desc":"x","type":"int","name":"x"},{"desc":"y","type":"int","name":"y"},{"desc":"时间(帧)","type":"int","name":"time"},{"desc":"以自己的方向为基准","type":"boolean?","name":"myface"},{"desc":"相对方向","type":"boolean?","name":"relatively"},{"desc":"边界限制","type":"boolean?","name":"border"}],"output":["实际位移距离(int)"],"name":"ForceShift"},{"desc":"改变子弹轨迹","args":[{"desc":"x初速度","type":"int?","name":"vx"},{"desc":"y初速度","type":"int?","name":"vy"},{"desc":"x加速度","type":"int?","name":"ax"},{"desc":"y加速度","type":"int?","name":"ay"},{"desc":"地形检测","type":"boolean?","name":"terrain"}],"doc":"+ 子弹轨迹在前端与后端中存在偏差,不要做过于浮夸的轨迹与碰撞\n+ 子弹专用,其他地方返回失败\n","name":"ChangeBulletPath"},{"desc":"并行执行","doc":"执行所有子节点并返回成功\n","name":"Parallel"},{"desc":"跳跃","input":["{目标\/默认自己}"],"args":[{"desc":"纵向初速度","type":"int","name":"vspeed"},{"desc":"横向初速度","type":"int","name":"hspeed"},{"desc":"时间","type":"int?","name":"time"},{"desc":"是否忽略重力","type":"boolean?","name":"no_gravity"}],"name":"Jump"},{"desc":"寻路","input":["{目标单位}"],"doc":"+ 填写终点自动返回路点(移动路径),需要使用movePath进行移动\n+ 没有找到路径则返回失败\n","args":[{"desc":"终点坐标x","type":"int?","name":"x"},{"desc":"终点坐标y","type":"int?","name":"y"},{"desc":"只能移动","type":"boolean?","name":"only_move"}],"output":["[路点]"],"name":"FindPath"},{"desc":"怪物巡逻","args":[{"desc":"随机范围","type":"int?","name":"rand"}],"doc":"+ 在平台上进行monster表中的巡逻范围(半径)\n","name":"MonsterPatrol"},{"desc":"获取单位当前怒气","input":["单位"],"doc":"+ 必定返回成功\n","output":["怒气"],"name":"GetAp"},{"desc":"比较值大小","input":["值(int)"],"doc":"+ 若值为空,返回失败\n+ 非整数类型可能会报错\n","args":[{"desc":"值","type":"lua?","name":"value"},{"desc":">","type":"int?","name":"gt"},{"desc":">=","type":"int?","name":"ge"},{"desc":"==","type":"int?","name":"eq"},{"desc":"<=","type":"int?","name":"le"},{"desc":"<","type":"int?","name":"lt"}],"name":"Cmp"},{"desc":"获取Ai行为树变量","input":["{单位}"],"doc":"+ 如果所输入单位无AI,返回失败\n+ 不传目标默认自己\n+ 原行为树中的值修改不会影响拷贝过来的值\n+ 若那边值不存在,这边得到的输出值为空,并不会返回失败\n","args":[{"desc":"变量1名称","type":"string?","name":"key1"},{"desc":"变量2名称","type":"string?","name":"key2"},{"desc":"变量3名称","type":"string?","name":"key3"},{"desc":"变量4名称","type":"string?","name":"key4"},{"desc":"变量5名称","type":"string?","name":"key5"}],"output":["{变量1}","{变量2}","{变量3}","{变量4}","{变量5}"],"name":"GetAiVars"},{"desc":"获取buff层数","output":["层数(int)"],"args":[{"desc":"首层id","type":"int?","name":"buffid"}],"doc":"+ 必须为首层ID\n+ 当同ID的BUFF同时存在不止一个时,按最大层数的BUFF的结果\n","name":"GetBuffStack"},{"desc":"获取释放者","output":["{单位}"],"name":"GetLauncher"},{"desc":"寻路移动","input":["[路点]"],"doc":"+ 根据路点依次进行移动\n+ 路点少于两个返回失败\n+ 无法移动返回失败\n+ 每达到一个目的地移除一个路点\n+ 不会返回正在运行状态\n","name":"MovePath"},{"desc":"普通攻击","input":["{目标}"],"doc":"+ 默认使用所携带技能中的普攻\n+ 有两个时会出问题,会根据怪物攻击范围做一次是否能打到人的判定\n","args":[{"desc":"转向","type":"boolean?","name":"face"}],"name":"NormalAttack"},{"desc":"获取单位等级","input":["单位"],"doc":"+ 必定返回成功\n","output":["等级"],"name":"GetLv"},{"desc":"解除锁定行为(无效)","args":[{"desc":"重力","type":"boolean?","name":"gravity"},{"desc":"移动","type":"boolean?","name":"move"},{"desc":"跳跃","type":"boolean?","name":"jump"},{"desc":"转向","type":"boolean?","name":"face"},{"desc":"普攻","type":"boolean?","name":"skill1"},{"desc":"自动技能","type":"boolean?","name":"skill2"},{"desc":"主动技能","type":"boolean?","name":"skill3"},{"desc":"二段跳","type":"boolean?","name":"skill4"},{"desc":"霸体","type":"boolean?","name":"super_armor"},{"desc":"选中","type":"boolean?","name":"select"},{"desc":"回怒","type":"boolean?","name":"ap"}],"name":"UnlockAction"},{"desc":"净化buff","input":["{目标(默认自己)}"],"doc":"+ 净化成功与否收到净化几率属性影响\n","name":"PurgeBuff"},{"desc":"计算距离","input":["{起始单位}?","{目标单位}"],"doc":"+ 计算两个单位的距离\n+ 目标为空返回失败\n","output":["距离(int)"],"name":"Distance"},{"desc":"设置状态(单选)","input":["{对象}(默认自己)"],"doc":"+ BOSS专用\n","args":[{"desc":"持续时间","type":"lua?","name":"time"},{"desc":"虚弱","type":"boolean?","name":"WEAK"}],"name":"SetState"},{"desc":"打印日志","args":[{"desc":"值","type":"lua?","name":"value"}],"doc":"+ 测试用,可打印任意变量或值\n","name":"Trace"},{"desc":"测试伤害次数","doc":"+ 统计本单位的所以技能的伤害次数(该单位的任意行为树中)\n","name":"DebugHitCount"},{"desc":"选择执行","doc":"+ 一直往下执行,有子节点返回成功则返回成功,若全部节点返回失败则返回失败\n+ 子节点是或的关系\n","name":"Selector"},{"desc":"移动到攻击位置","input":["{目标}"],"doc":"+ 偏移量务必保证少于所拥有技能的攻击范围\n","args":[{"desc":"偏移量","type":"int?","name":"offset"},{"desc":"考虑碰撞体积","type":"boolean?","name":"collision"}],"name":"MoveToAtkPos"},{"desc":"侦听使用物品","input":["物品id"],"doc":"+ 第一次执行返回成功,之后执行返回失败\n","name":"ListenUseItem"},{"desc":"侦听击杀","doc":"+ 第一次执行返回成功,之后执行返回失败\n","name":"ListenDie"},{"desc":"获取统计数据","input":["{单位}"],"doc":"+ 非主角返回失败\n","output":["同时击杀","连杀"],"name":"GetStat"},{"desc":"改变技能cd","args":[{"desc":"skillid","type":"int","name":"skillid"},{"desc":"千分比","type":"lua?","name":"percent"},{"desc":"固定值","type":"lua?","name":"add"}],"doc":"+ 没有携带技能返回失败,cd最低为0\n+ 不会影响当前已经进入的冷却时间\n","name":"ChangeSkillCd"},{"desc":"子弹跟随","input":["{跟随目标}"],"doc":"+ 不能在跟随过程做碰撞检测\n+ 后端为时间到时瞬移至跟随目标(本质上无实际无移动过程)【无延迟情况下强制抵达】\n+ 跟随过程返回正在运行,到达后返回成功,无目标返回失败\n","args":[{"desc":"时间","type":"int","name":"time"},{"desc":"x初速度","type":"int?","name":"vx"},{"desc":"y初速度","type":"int?","name":"vy"}],"name":"BulletFollow"},{"desc":"获取符文词条属性","output":["(int)"],"args":[{"desc":"词条id","type":"int","name":"entryid"}],"doc":"+ 没有词条返回失败\n","name":"GetRuneEntry"},{"desc":"设置战斗状态","args":[{"desc":"状态","type":"string","name":"state"},{"desc":"持续时间","type":"lua?","name":"time"}],"name":"SetFightState"},{"desc":"比较属性值","input":["{对象}"],"doc":"+ 属性值使用attr表中小写英文字段\n+ 也可获取hp、ap\n","args":[{"desc":"字段","type":"string","name":"key"},{"desc":">","type":"int?","name":"gt"},{"desc":">=","type":"int?","name":"ge"},{"desc":"==","type":"int?","name":"eq"},{"desc":"<=","type":"int?","name":"le"},{"desc":"<","type":"int?","name":"lt"}],"name":"CmpAttr"},{"desc":"获取图腾精练等级","output":["图腾id","精练等级(int)"],"args":[{"desc":"部位","type":"int","name":"part"}],"name":"GetTotemRefine"},{"desc":"获取配置","output":["{值}"],"args":[{"desc":"表名","type":"string","name":"name"},{"desc":"索引","type":"lua","name":"id"},{"desc":"字段","type":"string","name":"key"}],"doc":"+ 慎重使用\n+ 可获取任意表中的字段\n+ 填错可能会报错\n","name":"GetConf"},{"desc":"子弹销毁","doc":"+ 子弹专用,非子弹返回失败\n","name":"BulletDie"},{"desc":"数组随机取一值","input":["[数组]"],"doc":"+ 输入数组为空,输出变量为空\n","output":["{随机值}"],"name":"ArrayRandomOne"},{"desc":"取数组的一个元素","input":["数组"],"doc":"+ 若数组为空,返回失败\n+ 索引超出数组大小,输出空值\n","args":[{"desc":"索引(从1开始)","type":"int","name":"index"}],"output":["值"],"name":"GetArrayItem"},{"desc":"获取当前时间帧","output":["帧(int)"],"doc":"+ 返回一个服务器启动至今的一个时间,用于相减\n","name":"GetCurFrame"},{"desc":"修改技能行为树变量","args":[{"desc":"技能id","type":"int","name":"skillid"}],"doc":"+ 即将废弃\n","name":"ChangeSkillVars"},{"desc":"修改AI行为树变量","input":["{目标}"],"doc":"+ 改变指定单位的AI行为树的变量,无目标时返回失败\n+ 变量是即时修改,若选择立即执行则强制该行为树再次执行(需要处理重复执行问题)\n","args":[{"desc":"立即执行","type":"boolean?","name":"now"}],"name":"ChangeAiVars"},{"desc":"恢复血量(默认恢复至max)","input":["{目标}"],"doc":"+ 秘密回血不会触发飘字,血条会变\n","args":[{"desc":"千分比","type":"lua?","name":"percent"},{"desc":"固定值","type":"lua?","name":"add"},{"desc":"秘密回血(不通知客户端)","type":"boolean?","name":"secret"}],"name":"RecoverHp"},{"desc":"瞬移","input":["作用单位"],"doc":"+ 进行相对坐标瞬移\n","args":[{"desc":"x偏移","type":"int","name":"x"},{"desc":"y偏移","type":"int","name":"y"}],"name":"Teleport"},{"desc":"主动位移","input":["{单位}"],"doc":"+ 主动位移不受霸体影响,不会触发临击稳如泰山,过程霸体\n","args":[{"desc":"x","type":"int","name":"x"},{"desc":"y","type":"int","name":"y"},{"desc":"时间(帧)","type":"int","name":"time"},{"desc":"以自己的方向为基准","type":"boolean?","name":"myface"},{"desc":"相对方向","type":"boolean?","name":"relatively"},{"desc":"边界限制","type":"boolean?","name":"border"}],"output":["实际位移距离(int)"],"name":"Shift"},{"desc":"随机执行","args":[{"desc":"概率(千分比)","type":"lua","name":"prob"}],"doc":"+ 并行执行所有子节点\n+ 随机失败时返回失败,否则必定返回成功\n","name":"ProbExec"},{"desc":"获取主角名字","input":["{对象}"],"doc":"+ 主角为空,返回失败\n","output":["名字(string)"],"name":"GetRoleName"},{"desc":"检查True或False","args":[{"desc":"值","type":"lua?","name":"value"}],"doc":"+ 做简单数值公式判定,返回成功或失败\n","name":"Check"},{"desc":"获取当前最高输出玩家单位","output":["{单位}"],"doc":"+ 若全相等随便返回一个\n","name":"GetHighestHurtRole"},{"desc":"图腾之力属性","output":["值(int)"],"args":[{"desc":"部位","type":"int","name":"part"},{"desc":"属性(1,2,3)","type":"int","name":"idx"}],"doc":"+ 没有携带图腾返回默认值\n","name":"GetTotemRefineAttr"},{"desc":"移除buff","args":[{"desc":"buffid","type":"int?","name":"buffid"},{"desc":"分类","type":"int?","name":"type"},{"desc":"层数","type":"int","name":"stack"}],"doc":"+ 强制移除BUFF,不受任何影响,用于逻辑处理\n","name":"RemoveBuff"},{"desc":"打断并设置新状态","input":["{目标}"],"doc":"+ 没有目标、怪物不可控、霸体返回失败\n+ 打断对方所有正在运行技能,会打断行为树中的LockAction(会打断被动、不会打断AI)\n+ 禁止移动(lockAction)被打断会进入待机状态\n","args":[{"desc":"时间(帧)","type":"lua?","name":"time"},{"desc":"禁止重力","type":"boolean?","name":"gravity"},{"desc":"禁止移动","type":"boolean?","name":"move"},{"desc":"禁止跳跃","type":"boolean?","name":"jump"},{"desc":"禁止转向","type":"boolean?","name":"face"},{"desc":"禁止普攻","type":"boolean?","name":"skill1"},{"desc":"禁止自动技能","type":"boolean?","name":"skill2"},{"desc":"禁止主动技能","type":"boolean?","name":"skill3"},{"desc":"禁止二段跳","type":"boolean?","name":"skill4"},{"desc":"无法回怒","type":"boolean?","name":"ap"}],"name":"Break"},{"desc":"获取战斗状态时长(只能选一种状态)","output":["时间"],"args":[{"desc":"禁止重力","type":"boolean?","name":"gravity"},{"desc":"禁止移动","type":"boolean?","name":"move"},{"desc":"禁止跳跃","type":"boolean?","name":"jump"},{"desc":"禁止转向","type":"boolean?","name":"face"},{"desc":"禁止普攻","type":"boolean?","name":"skill1"},{"desc":"禁止瞬发","type":"boolean?","name":"skill2"},{"desc":"禁止吟唱","type":"boolean?","name":"skill3"},{"desc":"禁止蓄力","type":"boolean?","name":"skill4"},{"desc":"霸体","type":"boolean?","name":"super_armor"},{"desc":"无法被选中","type":"boolean?","name":"select"},{"desc":"无法回怒","type":"boolean?","name":"ap"}],"doc":"+ 测试用\n","name":"GetFightState"},{"desc":"不处于移动中","name":"NotMoving"},{"desc":"拉取到自己","input":["[{被拉单位}]"],"doc":"+ 本质上是瞬移,过程不可见\n","args":[{"desc":"时间\/帧","type":"int?","name":"time"}],"name":"PullToSelf"},{"desc":"根据id查找怪物","output":["[{怪物(数组)}]"],"args":[{"desc":"怪物id","type":"int","name":"monsterid"}],"doc":"+ 获取地图中特定ID的怪物\n+ 没有的话也会返回成功\n","name":"FindMonstersById"},{"desc":"获取单位所有技能id","input":["单位"],"doc":"+ 测试用\n","output":["技能id列表"],"name":"GetSkillIds"},{"input":["{目标}"],"doc":"+ 客户端专用\n","args":[{"desc":"随机范围","type":"int?","name":"rand"},{"desc":"忽略碰撞体积","type":"boolean?","name":"no_collision"}],"name":"MoveToTarget"},{"input":["{目标}"],"doc":"+ 移动到设定目标的一个随机距离位置(该位置在第一次执行时随机,之后固定)\n+ 没有目标时返回失败\n+ 需要跟找本平台敌人节点配合\n","args":[{"desc":"随机范围","type":"int?","name":"rand"}],"name":"FloorMove"},{"desc":"设置路点","input":["[路点]"],"doc":"+ 路点进行角度偏移\n+ 以原点坐标(0,0)进行旋转,逆时针\n","args":[{"desc":"角度","type":"int","name":"angle"}],"name":"RotatePath"},{"desc":"设置路点","output":["[数组]"],"args":[{"desc":"x1","type":"int?","name":"x1"},{"desc":"y1","type":"int?","name":"y1"},{"desc":"x2","type":"int?","name":"x2"},{"desc":"y2","type":"int?","name":"y2"},{"desc":"x3","type":"int?","name":"x3"},{"desc":"y3","type":"int?","name":"y3"}],"doc":"+ 贝塞尔曲线专用贝塞尔曲线专用\n","name":"SetPath"},{"desc":"跟随","input":["{单位}","{跟随目标}"],"doc":"+ 跟随过程中无法被选中XXXXX,本质上为瞬移\n+ 后端为时间到时瞬移至跟随目标(本质上无实际无移动过程)【无延迟情况下强制抵达】\n+ 跟随过程返回正在运行,到达后返回成功,无目标返回失败\n","args":[{"desc":"时间","type":"int","name":"time"},{"desc":"x初速度","type":"int?","name":"vx"},{"desc":"y初速度","type":"int?","name":"vy"}],"name":"Follow"},{"desc":"侦听被攻击","input":["{伤害来源}","伤害值int"],"doc":"+ 第一次执行返回成功,之后执行返回失败\n","args":[{"desc":"排除技能id","type":"int?","name":"exclude"},{"desc":"包含无敌单位","type":"boolean?","name":"no_select"}],"name":"ListenUnderAttack"},{"desc":"造成伤害","input":["{目标}"],"doc":"+ 在伤害公式表可见详细流程\n+ 目标为空返回失败\n","args":[{"desc":"次数","type":"int?","name":"count"},{"desc":"最终伤害加成(千分比)","type":"lua?","name":"add"},{"desc":"吸血(千分比)","type":"lua?","name":"recover"},{"desc":"技能伤害千分比","type":"lua?","name":"dmg_var"},{"desc":"技能固定伤害","type":"lua?","name":"dmg_const"},{"desc":"伤害衰减","type":"lua?","name":"attenuate"},{"desc":"不播受击","type":"boolean?","name":"no_hit_action"}],"name":"Hurt"},{"input":["{单位}?","{坐标}"],"doc":"+ 根据地图位置瞬移\n","args":[{"desc":"x","type":"int?","name":"x"},{"desc":"y","type":"int?","name":"y"}],"name":"SetPos"},{"desc":"数组是否为空","output":["[数组]"],"name":"IsEmpty"},{"desc":"创建召唤物","input":["{相对目标}"],"doc":"+ 与主角同向,会调整召唤物的初始朝向\n","args":[{"desc":"召唤物id","type":"int","name":"id"},{"desc":"x偏移量","type":"lua?","name":"x"},{"desc":"y偏移量","type":"lua?","name":"y"},{"desc":"无法被命中","type":"boolean?","name":"no_select"},{"desc":"与主角同向","type":"boolean?","name":"same_face"},{"desc":"持续时间","type":"lua?","name":"time"},{"desc":"与主同死","type":"boolean?","name":"die_together"}],"output":["{召唤物}"],"name":"CreateSummon"},{"desc":"待机","input":["{单位}"],"name":"Idle"},{"desc":"获取技能等级","output":["等级(int)"],"args":[{"desc":"skillid","type":"int","name":"skillid"}],"doc":"+ 没携带技能返回失败\n","name":"GetSkillLevel"},{"desc":"获取单位坐标","input":["{单位}"],"doc":"+ 返回的坐标为地图绝对坐标\n+ 单位为空返回失败\n","output":["{坐标}"],"name":"GetAvatarPos"},{"desc":"否为悬空","input":["{对象}"],"doc":"+ 不在地面上全当浮空\n","name":"IsInSky"}]