0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-28 09:05:26 +00:00
Yuuki b09934e7b9 Revert "remove local in defs"
This reverts commit 7e0a645ef33da87ddd5c402c6a64180001c6b03d.
2023-11-23 23:27:47 +08:00

148 lines
6.4 KiB
Lua

--[[
local defs = {
gadget_up = 1, --向上压板
gadget_down = 2, --向下压板
gadget_water = 7001, --水片
point_array = 400100010,
point_list = {1,2,3,4,5},
gadget_list = {1,2,3,4,5}, --刻痕
point_xz = {x=100,z=100}, --point坐标
point_y = {100,110,120,130,140}, --point坐标
start_level = 3, --初始水位
is_abnormal = 0,
abnormal_height = 90, --上涨高度
}
--]]
-------------------
local Tri = {
[1] = { name = "gadget_state_change", config_id = 8000001, event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_gadget_state_change", trigger_count = 0 },
[2] = { name = "platform_reach_point", config_id = 8000002, event = EventType.EVENT_PLATFORM_REACH_POINT, source = "", condition = "", action = "action_platform_reach_point", trigger_count = 0 },
[3] = { name = "group_load", config_id = 8000003, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
[4] = { name = "group_refresh", config_id = 8000004, event = EventType.EVENT_GROUP_REFRESH, source = "", condition = "", action = "action_group_refresh", trigger_count = 0 },
[5] = { name = "variable_change", config_id = 8000005, event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "", action = "action_variable_change", trigger_count = 0 }
}
local Var = {
[1] = { config_id=50000001,name = "Water_Level", value = 0, no_refresh = true },
[2] = { config_id=50000002,name = "tune", value = 0, no_refresh = true },
[3] = { config_id=50000003,name = "first_play", value = 1, no_refresh = true },
}
function Initialize()
for k,v in pairs(Tri) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
for k,v in pairs(Var) do
table.insert(variables, v)
end
end
--------------------------------------
function action_gadget_state_change(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : State_Change : "..evt.param2.." | "..evt.param3.." -> "..evt.param1)
if evt.param1 == 201 and evt.param3 == 0 then
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
if evt.param2 == defs.gadget_up then
if water < #defs.point_list and 0 == ScriptLib.GetGroupTempValue(context, "motion", {}) then
LF_Modify_Water(context, water, 1)
end
elseif evt.param2 == defs.gadget_down and 0 == ScriptLib.GetGroupTempValue(context, "motion", {}) then
if water > 1 then
LF_Modify_Water(context, water, -1)
end
end
--elseif evt.param1 == 0 and evt.param3 == 201 then
-- if evt.param2 == defs.gadget_up or evt.param2 == defs.gadget_down then
-- LF_Check_Water_To_Motion(context, evt)
-- end
end
return 0
end
function action_platform_reach_point(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : Reach_Point | "..evt.param1.." | "..evt.param2)
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
ScriptLib.ScenePlaySound(context, {play_pos = defs.audio_xyz, sound_name = defs.audio_list[water], play_type=1, is_broadcast=true})
ScriptLib.SetGroupTempValue(context, "motion", 0, {})
--if evt.param1 == defs.gadget_water then
-- LF_Check_Water_To_Motion(context, evt)
--end
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 201)
ScriptLib.SetGroupVariableValue(context, "tune", water)
return 0
end
function action_group_load(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : Group_Load")
LF_Init_Water(context, evt)
return 0
end
function action_group_refresh(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : Group_Refresh")
LF_Init_Water(context, evt)
return 0
end
function action_variable_change(context, evt)
if evt.param1 == evt.param2 then
return -1
end
ScriptLib.PrintContextLog(context, "## TuneStone : Variable : "..evt.source_name.." : "..evt.param2.." -> "..evt.param1)
return 0
end
function LF_Init_Water(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : LF_Init_Water")
--根据存档还原水位
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
local pos = defs.point_xz
if defs.is_abnormal == 1 and 1 == ScriptLib.GetGroupVariableValue(context, "first_play") then
pos.y = defs.abnormal_height
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.gadget_water, pos, {x=0,y=0,z=0})
ScriptLib.SetGroupTempValue(context, "motion", 1, {})
ScriptLib.SetPlatformPointArray(context, defs.gadget_water, defs.point_array, {defs.point_list[defs.start_level]}, {route_type = 0, turn_mode = false})
ScriptLib.SetGroupVariableValue(context, "first_play", 0)
ScriptLib.SetGroupVariableValue(context, "Water_Level", defs.start_level)
return 0
end
if water == 0 then
water = defs.start_level
end
ScriptLib.SetGroupVariableValue(context, "Water_Level", water)
ScriptLib.SetGroupVariableValue(context, "tune", water)
pos.y = defs.point_y[water]
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.gadget_water, pos, {x=0,y=0,z=0})
ScriptLib.SetGroupTempValue(context, "motion", 0, {})
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 201)
return 0
end
function LF_Modify_Water(context, water, delta)
ScriptLib.PrintContextLog(context, "## TuneStone : LF_Modify_Water : level = "..water.." | delta = "..delta)
ScriptLib.SetGroupTempValue(context, "motion", 1, {})
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 0)
--ScriptLib.ScenePlaySound(context, {play_pos = defs.audio_xyz, sound_name = defs.audio_list[water], play_type=2, is_broadcast=true})
local _water = water + delta
ScriptLib.SetGroupVariableValue(context, "Water_Level", _water)
ScriptLib.SetPlatformPointArray(context, defs.gadget_water, defs.point_array, {defs.point_list[_water]}, {route_type = 0, turn_mode = false})
end
function LF_Check_Water_To_Motion(context, evt)
local up_state = ScriptLib.GetGadgetStateByConfigId(context, 0, defs.gadget_up)
local down_state = ScriptLib.GetGadgetStateByConfigId(context, 0, defs.gadget_down)
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
if up_state == 201 and down_state == 201 then
--跳过
elseif up_state == 201 and water < #defs.point_list then
LF_Modify_Water(context, water, 1)
water = water + 1
elseif down_state == 201 and water > 1 then
LF_Modify_Water(context, water, -1)
water = water - 1
end
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 201)
ScriptLib.SetGroupVariableValue(context, "tune", water)
end
--------------------------------------
Initialize()