mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 23:02:27 +08:00
225 lines
7.2 KiB
Go
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) |