-- 机关初始化配置 -- 初始状态 local state_ = GadgetState.GearStart -- 启动元素 local start_elem_type_ = ElementType.Fire -- 最大启动值 local max_start_value_ = 0 -- 启动持续时间 local start_last_time_ = 16 -- 停止元素 local stop_elem_type_ = ElementType.Ice -- 最大停止值 local max_stop_value_ = 1 -- 停止持续时间 local stop_last_time_ = 2 --冰冻状态额外持续的时间 local frozen_time = 4 -- 机关被攻击 --[[ function OnBeHurt(context, element_type) -- 获取机关当前状态 local state = ScriptLib.GetGadgetState(context) if state == GadgetState.Default then if element_type == start_elem_type then -- 获取原有的启动值 local start_value = ScriptLib.GetGearStartValue(context) start_value = start_value + 1 if start_value >= max_start_value_ then -- 在Default状态下,启动值超过最大启动值,则转换为GearStart状态 ScriptLib.SetGadgetState(context, GadgetState.GearStart) -- 启动值设置为最大启动值 ScriptLib.SetGearStartValue(context, max_start_value_) else -- 在Default状态下,被启动元素攻击一次,增加1点启动值 ScriptLib.SetGearStartValue(context, start_value) end --待机状态的机关也会进入停止状态 elseif stop_elem_type_ ~= ElementType.None and element_type == stop_elem_type_ then -- 获取原有的停止值 local stop_value = ScriptLib.GetGearStopValue(context) stop_value = stop_value + 1 if stop_value >= max_stop_value_ then -- 在Default状态下,停止值超过最大停止值,则转换为GearStop状态 ScriptLib.SetGadgetState(context, GadgetState.GearStop) -- 停止值设置为最大停止值 ScriptLib.SetGearStopValue(context, max_stop_value_) else -- 在GearStart状态下,被停止元素攻击一次,增加1点停止值 ScriptLib.SetGearStopValue(context, stop_value) end end elseif state == GadgetState.GearStart then if stop_elem_type_ ~= ElementType.None and element_type == stop_elem_type_ then -- 获取原有的停止值 local stop_value = ScriptLib.GetGearStopValue(context) stop_value = stop_value + 1 if stop_value >= max_stop_value_ then -- 在GearStart状态下,停止值超过最大停止值,则转换为GearStop状态 ScriptLib.SetGadgetState(context, GadgetState.GearStop) -- 停止值设置为最大停止值 ScriptLib.SetGearStopValue(context, max_stop_value_) else -- 在GearStart状态下,被停止元素攻击一次,增加1点停止值 ScriptLib.SetGearStopValue(context, stop_value) end end elseif state == GadgetState.GearStop then if stop_elem_type_ ~= ElementType.None and element_type == stop_elem_type_ then -- 在GearStop状态下,重置停止状态(刷新开始时间) ScriptLib.ResetGadgetState(context, GadgetState.GearStop) end end end ]]-- --移除喷火机关的default状态 function OnBeHurt(context, element_type, strike_type, is_host) -- 获取机关当前状态 local state = ScriptLib.GetGadgetState(context) if state == GadgetState.GearStart then if stop_elem_type_ ~= ElementType.None and element_type == stop_elem_type_ then -- 获取原有的停止值 local stop_value = ScriptLib.GetGearStopValue(context) stop_value = stop_value + 1 if stop_value >= max_stop_value_ then -- 在GearStart状态下,停止值超过最大停止值,则转换为GearStop状态 ScriptLib.SetGadgetState(context, GadgetState.GearStop) -- 停止值设置为最大停止值 ScriptLib.SetGearStopValue(context, max_stop_value_) else -- 在GearStart状态下,被停止元素攻击一次,增加1点停止值 ScriptLib.SetGearStopValue(context, stop_value) end end elseif state == GadgetState.GearStop then if stop_elem_type_ ~= ElementType.None and element_type == stop_elem_type_ then -- 在GearStop状态下,重置停止状态(刷新开始时间) ScriptLib.ResetGadgetState(context, GadgetState.GearStop) end end end --[[ -- 定时器回调 function OnTimer(context, now) -- 获取机关当前状态 local state = ScriptLib.GetGadgetState(context) if state == GadgetState.Default then local start_value = ScriptLib.GetGearStartValue(context) if start_value >= max_start_value_ then -- 在Default状态下,启动值超过最大启动值,则转换为GearStart状态 ScriptLib.SetGadgetState(context, GadgetState.GearStart) end elseif state == GadgetState.GearStart then -- 获取当前状态的开始时间 local state_begin_time = ScriptLib.GetGadgetStateBeginTime(context) if now >= state_begin_time + start_last_time_ then -- 如果启动时间超过启动持续时间,则转换为GearStop状态 ScriptLib.SetGadgetState(context, GadgetState.GearStop) -- 设置启动值为0 ScriptLib.SetGearStartValue(context, 0) end elseif state == GadgetState.GearStop then -- 获取当前状态的开始时间 local state_begin_time = ScriptLib.GetGadgetStateBeginTime(context) if now >= state_begin_time + stop_last_time_ + frozen_time then -- 如果停止时间超过停止持续时间,则转换为Default状态 ScriptLib.SetGadgetState(context, GadgetState.Default) -- 设置停止值为0 ScriptLib.SetGearStopValue(context, 0) end end end ]]-- -- 定时器回调 function OnTimer(context, now) -- 获取机关当前状态 local state = ScriptLib.GetGadgetState(context) if state == GadgetState.GearStart then -- 获取当前状态的开始时间 local state_begin_time = ScriptLib.GetGadgetStateBeginTime(context) if now >= state_begin_time + start_last_time_ then -- 如果启动时间超过启动持续时间,则转换为GearStop状态 ScriptLib.SetGadgetState(context, GadgetState.GearStop) -- 设置启动值为0 ScriptLib.SetGearStartValue(context, 0) end elseif state == GadgetState.GearStop then -- 获取当前状态的开始时间 local state_begin_time = ScriptLib.GetGadgetStateBeginTime(context) if now >= state_begin_time + stop_last_time_ + frozen_time then -- 如果停止时间超过停止持续时间,则转换为Start状态 ScriptLib.SetGadgetState(context, GadgetState.GearStart) -- 设置停止值为0 ScriptLib.SetGearStopValue(context, 0) end end end