Files
hk4e/gdconf/game_data_config/lua/common/BlackBoxPlay/LightResonanceStone.lua
2022-11-30 00:00:20 +08:00

130 lines
4.3 KiB
Go

--[[
雷共鸣石黑河玩法
]]--
local light_stones_initial={
[1]=defs.gadget_1,
[2]=defs.gadget_2,
[3]=defs.gadget_3,
[4]=defs.gadget_4,
[5]=defs.gadget_5
}
local extraTriggers={
{ config_id = 8000001, name = "GROUP_LOAD", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
}
function LF_Initialize_Group(triggers, suites)
for i=1,#extraTriggers do
table.insert(triggers, extraTriggers[i])
table.insert(suites[init_config.suite].triggers,extraTriggers[i].name)
end
table.insert(variables,{ config_id=50000001,name = "successed", value = 0, no_refresh = true})
--初始化
end
function action_group_load(context, evt)
if ScriptLib.GetGroupVariableValue(context,"successed")~=0 then
for i=1,#light_stones_initial do
if light_stones_initial[i] ~= 0 then
ScriptLib.SetGadgetStateByConfigId(context, light_stones_initial[i], GadgetState.GearAction2)
end
end
ScriptLib.AddExtraGroupSuite(context, defs.group_ID, 2)
return 0
end
return 0
end
function Generate_Table(light_stones_initial)
local outTable={}
for i=1,#light_stones_initial do
if light_stones_initial[i]~=0 then
table.insert(outTable,light_stones_initial[i])
end
end
return outTable
end
function Stone_Behit(context)
local light_stones=Generate_Table(light_stones_initial)
ScriptLib.PrintContextLog(context, "target_entity_id="..context.target_entity_id.." source_entity_id="..context.source_entity_id)
if ScriptLib.GetGroupVariableValue(context,"successed") ~=0 then
return 0
end
for i=1,#light_stones do
if context.target_entity_id==ScriptLib.GetEntityIdByConfigId(context,light_stones[i]) then
gadget_level_change(context,light_stones[i])
--非循环模式
if defs.loop_mode==0 then
if i-1>=1 then
gadget_level_change(context,light_stones[i-1])
end
if i+1 <= #light_stones then
gadget_level_change(context,light_stones[i+1])
end
end
--循环模式
if defs.loop_mode==1 then
if i-1<1 then
gadget_level_change(context,light_stones[#light_stones])
else
gadget_level_change(context,light_stones[i-1])
end
if i+1 > #light_stones then
gadget_level_change(context,light_stones[1])
else
gadget_level_change(context,light_stones[i+1])
end
end
break
end
end
if check_success(context,light_stones)==true then
for i=1,#light_stones do
if GadgetState.Action01 == ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, light_stones[i]) then
ScriptLib.SetGadgetStateByConfigId(context, light_stones[i], 9010)
elseif GadgetState.Action02 == ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, light_stones[i]) then
ScriptLib.SetGadgetStateByConfigId(context, light_stones[i], 9020)
elseif GadgetState.Action03 == ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, light_stones[i]) then
ScriptLib.SetGadgetStateByConfigId(context, light_stones[i], 9030)
end
end
ScriptLib.SetGroupVariableValue(context, "successed",1)
ScriptLib.AddExtraGroupSuite(context, defs.group_ID, 2)
end
return 0
end
--检测是否达成目标
function check_success(context,light_stones)
if #light_stones<=1 then
return true
end
for i=1,#light_stones-1 do
if ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, light_stones[i])~=ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, light_stones[i+1]) then
return false
end
end
return true
end
--处理共鸣石的状态变化
function gadget_level_change(context,config_id)
if config_id==nil then
return 0
end
ScriptLib.PrintContextLog(context, "##config_id is "..config_id)
if GadgetState.Default == ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, config_id) then
ScriptLib.SetGadgetStateByConfigId(context, config_id, GadgetState.Action01)
elseif GadgetState.Action01 == ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, config_id) then
ScriptLib.SetGadgetStateByConfigId(context, config_id, GadgetState.Action02)
elseif GadgetState.Action02 == ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, config_id) then
ScriptLib.SetGadgetStateByConfigId(context, config_id, GadgetState.Action03)
elseif GadgetState.Action03 == ScriptLib.GetGadgetStateByConfigId(context, defs.group_ID, config_id) then
ScriptLib.SetGadgetStateByConfigId(context, config_id, GadgetState.Action01)
end
return 0
end
LF_Initialize_Group(triggers, suites)