Files
2022-11-30 00:00:20 +08:00

225 lines
7.2 KiB
Go

--[[
雷导立方
square={
[1]={config_id=115001,rotation=0},
[2]={config_id=115002,rotation=90},
[3]={config_id=115003,rotation=180},
[4]={config_id=115004,rotation=270},
[5]={config_id=115005,rotation=0},
}
]]--
local square={
{config_id=defs.gadget_1,rotation=defs.rotation_1},
{config_id=defs.gadget_2,rotation=defs.rotation_2},
{config_id=defs.gadget_3,rotation=defs.rotation_3},
{config_id=defs.gadget_4,rotation=defs.rotation_4},
{config_id=defs.gadget_5,rotation=defs.rotation_5},
}
local connectRelation={
[defs.gadget_1]=defs.gadget_connect1,
[defs.gadget_2]=defs.gadget_connect2,
[defs.gadget_3]=defs.gadget_connect3,
[defs.gadget_4]=defs.gadget_connect4,
[defs.gadget_5]=defs.gadget_connect5,
}
local extraTriggers={
{ config_id = 8000001, name = "group_load", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
{ config_id = 8000002, name = "PLATFORM_REACH_POINT", event = EventType.EVENT_PLATFORM_REACH_POINT, source = "", condition = "", action = "action_EVENT_PLATFORM_REACH_POINT", 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})
for i=1,#square do
if square[i].config_id ~= 0 then
table.insert(variables,{ config_id=50000000+square[i].config_id,name = square[i].config_id.."isrotating", value = 0})
table.insert(variables,{ config_id=51000000+square[i].config_id,name = square[i].config_id.."rotation", value = square[i].rotation})
end
end
--初始化
end
function SquareBeHit(context)
if ScriptLib.GetGroupVariableValue(context,"successed")~=0 then
return 0
end
for i=1,#square do
if square[i].config_id ~= 0 then
if context.target_entity_id == ScriptLib.GetEntityIdByConfigId(context, square[i].config_id) or context.source_entity_id== ScriptLib.GetEntityIdByConfigId(context, square[i].config_id) then
if CheckAllRotationDone(context) then
--if ScriptLib.GetGroupVariableValue(context,square[i].config_id.."isrotating") ==0 then
--ScriptLib.SetGroupVariableValue(context, square[i].config_id.."isrotating", 1)
--ScriptLib.SetPlatformPointArray(context, square[i].config_id, 322000031, { 1 }, { route_type = 0,turn_mode=true })
--local angle=ScriptLib.GetGroupVariableValue(context,square[i].config_id.."rotation")
--angle=(angle+90)%360
--ScriptLib.SetGroupVariableValue(context, square[i].config_id.."rotation",angle)
RotateGadget(context,square[i].config_id)
for j=1,#connectRelation[square[i].config_id] do
RotateGadget(context,connectRelation[square[i].config_id][j])
end
end
end
end
end
return 0
end
function RotateGadget(context,config_id)
ScriptLib.SetGroupVariableValue(context, config_id.."isrotating", 1)
ScriptLib.SetPlatformPointArray(context, config_id, 322000031, { 1 }, { route_type = 0,turn_mode=true })
local angle=ScriptLib.GetGroupVariableValue(context,config_id.."rotation")
angle=(angle+90)%360
ScriptLib.SetGroupVariableValue(context, config_id.."rotation",angle)
ScriptLib.SetGadgetStateByConfigId(context, config_id, 201) -- gadget旋转过程特效
return 0
end
-- 底座物件表现
function RootGadgetEffect(context)
for i=1,#gadgets do
if ScriptLib.GetEntityIdByConfigId(context,gadgets[i].config_id) == 70330084 then
ScriptLib.SetGadgetStateByConfigId(context, gadgets[i].config_id, 201)
end
end
return 0
end
function CheckAllRotationDone(context)
for i=1,#square do
if ScriptLib.GetGroupVariableValue(context,square[i].config_id.."isrotating") ~=0 then
return false
end
end
return true
end
function action_EVENT_PLATFORM_REACH_POINT(context,evt)
ScriptLib.SetGroupVariableValue(context, evt.param1.."isrotating", 0)
CheckIsSuccess(context)
return 0
end
function action_group_load(context,evt)
if ScriptLib.GetGroupVariableValue(context,"successed")~=0 then
for i=1,#square do
if square[i].config_id ~= 0 then
ScriptLib.SetGadgetStateByConfigId(context, square[i].config_id, 901)
end
end
ScriptLib.AddExtraGroupSuite(context, defs.group_ID, 2)
return 0
end
--groupload重置variable
for i=1,#square do
if square[i].config_id ~= 0 then
ScriptLib.SetGroupVariableValue(context, square[i].config_id.."rotation", square[i].rotation)
ScriptLib.SetGroupVariableValue(context, square[i].config_id.."isrotating", 0)
end
end
for i=1,#square do
if square[i].config_id ~= 0 then
if square[i].rotation==90 then
ScriptLib.SetPlatformPointArray(context, square[i].config_id, 322000031, { 1 }, { route_type = 0,turn_mode=true })
ScriptLib.SetGroupVariableValue(context, square[i].config_id.."isrotating", 1)
end
if square[i].rotation==180 then
ScriptLib.SetPlatformPointArray(context, square[i].config_id, 322000031, { 2 }, { route_type = 0,turn_mode=true })
ScriptLib.SetGroupVariableValue(context, square[i].config_id.."isrotating", 1)
end
if square[i].rotation==270 then
ScriptLib.SetPlatformPointArray(context, square[i].config_id, 322000031, { 3 }, { route_type = 0,turn_mode=true })
ScriptLib.SetGroupVariableValue(context, square[i].config_id.."isrotating", 1)
end
end
end
return 0
end
function CheckIsSuccess(context)
local table0={}
local table90={}
local table180={}
local table270={}
local angle=999
local exitCount=0
for i=1,#square do
if square[i].config_id ~= 0 then
exitCount=exitCount+1
angle=ScriptLib.GetGroupVariableValue(context,square[i].config_id.."rotation")
if angle==0 then
table.insert(table0,square[i].config_id)
elseif angle==90 then
table.insert(table90,square[i].config_id)
elseif angle==180 then
table.insert(table180,square[i].config_id)
elseif angle==270 then
table.insert(table270,square[i].config_id)
end
end
end
if #table0>=exitCount or #table90>=exitCount or #table180>=exitCount or #table270>=exitCount then
for i=1,#square do
if square[i].config_id ~= 0 then
ScriptLib.SetGadgetStateByConfigId(context, square[i].config_id, 901)
end
end
ScriptLib.SetGroupVariableValue(context, "successed", 1)
ScriptLib.AddExtraGroupSuite(context, defs.group_ID, 2)
RootGadgetEffect(context)
return 0
end
if #table0>1 then
for i=1,#table0 do
ScriptLib.SetGadgetStateByConfigId(context, table0[i], 902)
end
else
for i=1,#table0 do
ScriptLib.SetGadgetStateByConfigId(context, table0[i], 0)
end
end
if #table90>1 then
for i=1,#table90 do
ScriptLib.SetGadgetStateByConfigId(context, table90[i], 902)
end
else
for i=1,#table90 do
ScriptLib.SetGadgetStateByConfigId(context, table90[i], 0)
end
end
if #table180>1 then
for i=1,#table180 do
ScriptLib.SetGadgetStateByConfigId(context, table180[i], 902)
end
else
for i=1,#table180 do
ScriptLib.SetGadgetStateByConfigId(context, table180[i], 0)
end
end
if #table270>1 then
for i=1,#table270 do
ScriptLib.SetGadgetStateByConfigId(context, table270[i], 902)
end
else
for i=1,#table270 do
ScriptLib.SetGadgetStateByConfigId(context, table270[i], 0)
end
end
return 0
end
--local square=InitialData()
LF_Initialize_Group(triggers, suites)