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