0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-28 09:05:26 +00:00
KingRainbow44 8dd3a721e5
Revert "The Great De-Local'ifying of defs and base_info"
This reverts commit 0989747b
2023-08-30 21:15:50 -04:00

297 lines
9.5 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[======================================
|| filename: VarunaStandard
|| owner: shuyi.chang
|| description: 回流之柱被控制组
|| LogName: ## [VarunaStandard]
|| Protection:
=======================================]]
--[[
local defs =
{
-- 钓鱼点
fishingPoint = {
bottom = suite_id01,
top = suite_id02,
},
-- 升降水面,应该只有一项
rootWaterTable =
{
[188001] = 330300001,
},
}
--]]
local extraTriggers =
{
{ config_id = 50000001, name = "GROUP_LOAD", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_EVENT_GROUP_LOAD", trigger_count = 0 },
{ config_id = 50000002, name = "PLATFORM_ARRIVAL", event = EventType.EVENT_PLATFORM_ARRIVAL, source = "", condition = "", action = "action_EVENT_PLATFORM_ARRIVAL", trigger_count = 0 },
}
local extraVariables =
{
}
local rootGadgetId = 70290436
local bubbleGadgetId = 70290437
local waterGadgetId = 70310225
local fishingGadgetId = 70950099
local bubbles = {}
local roots = {}
local waterConfigId = 0
local fishPoints = {}
local fishGroupId = 133303151
--================================================================
-- Local Functions
--================================================================
function LF_Initialize_Group(triggers, suites, variables, gadgets, regions)
-- insert triggers
for i = 1, #extraTriggers do
table.insert(triggers, extraTriggers[i])
end
-- add triggers to suite
for i = 1, #extraTriggers do
if extraTriggers[i].name == "GROUP_LOAD" then
-- 每个suite都放group load
for j = 1, #suites do
table.insert(suites[j].triggers,extraTriggers[i].name)
end
else
-- 另外的只放到初始suite 1中
table.insert(suites[1].triggers,extraTriggers[i].name)
end
end
-- insert variables
for i = 1, #extraVariables do
table.insert(variables, extraVariables[i])
end
for k, v in pairs(gadgets) do
-- find all roots
if v.gadget_id == rootGadgetId then
table.insert(roots, v.config_id)
end
-- find all bubbles
if v.gadget_id == bubbleGadgetId then
table.insert(bubbles, v.config_id)
end
-- find all waters(should only have one)
if v.gadget_id == waterGadgetId then
waterConfigId = v.config_id
end
-- find all fishing point(should only have two)
if v.gadget_id == fishingGadgetId then
table.insert(fishPoints, v.config_id)
end
end
end
function LF_SetGadgetState(context, configId, gadgetState)
-- ScriptLib.PrintContextLog(context, "## [VarunaStandard] LF_SetSpoutGadgetState is called")
ScriptLib.SetGadgetStateByConfigId(context, configId, gadgetState)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] gadget = "..configId..", state is set to "..gadgetState)
end
function LF_SetRootAndBubbleState(context, prev_context, weatherState)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] LF_SetRootAndBubbleState is called")
LF_SetRootAndBubbleState_Local(context, weatherState)
return 0
end
function LF_CreateFishingPoint(context, weatherState)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] LF_CreateFishingPoint is called")
-- 0雨天用低处的1晴天用高处的
local suite = 0
if weatherState == 0 then
-- 雨天,创建低的
suite = defs.fishingPoint.bottom
elseif weatherState == 1 then
-- 晴天,创建高的
suite = defs.fishingPoint.top
end
if suite ~= 0 then
-- ScriptLib.CreateGadget(context, { config_id = pointId })
ScriptLib.AddExtraGroupSuite(context, fishGroupId, suite)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] create fish point "..suite)
end
end
function LF_CreateFishingPoint_FromOther(context, prev_context, weatherState)
LF_CreateFishingPoint(context, weatherState)
return 0
end
function LF_DelFishingPoint(context, weatherState)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] LF_DelFishingPoint is called")
local suite = 0
if weatherState == 0 then
-- 雨天,删除高的
suite = defs.fishingPoint.top
elseif weatherState == 1 then
-- 晴天,删除低的
suite = defs.fishingPoint.bottom
end
if suite == 0 then
-- 组里没有钓鱼点,啥也不干
return 0
end
-- 移动水面只有一个,这里就写死了,简单一点
local exist = ScriptLib.CheckIsInGroup(context, 133303188, 188001)
if exist == true then
local waterStatus = ScriptLib.GetGroupVariableValueByGroup(context, "waterStatus", 133303188)
if waterStatus == 2 then
-- 水片已存在,且在移动中,需要把钓鱼点干掉,创建等移动平台到位通知
ScriptLib.RemoveExtraGroupSuite(context, fishGroupId, defs.fishingPoint.top)
ScriptLib.RemoveExtraGroupSuite(context, fishGroupId, defs.fishingPoint.bottom)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] del all fish points cuz water is moving")
end
-- 存在但没在移动,只干掉不需要的那个钓鱼点(这个不需要的钓鱼点其实也应该已经不在了)
ScriptLib.RemoveExtraGroupSuite(context, fishGroupId, suite)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] del fish point "..suite)
else
ScriptLib.RemoveExtraGroupSuite(context, fishGroupId, defs.fishingPoint.top)
ScriptLib.RemoveExtraGroupSuite(context, fishGroupId, defs.fishingPoint.bottom)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] del all fish points cuz water doesn't exist")
end
end
function LF_DelFishingPoint_FromOther(context, prev_context, weatherState)
LF_DelFishingPoint(context, weatherState)
return 0
end
function LF_SetRootAndBubbleState_Local(context, weatherState)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] LF_SetRootAndBubbleState_Local is called")
-- 0雨天1晴天
LF_SetBubbleState(context, weatherState)
LF_SetRootState(context, weatherState)
LF_SetWaterState(context, weatherState)
if #fishPoints ~= 0 then
LF_DelFishingPoint(context, weatherState)
end
return 0
end
function LF_SetBubbleState(context, weatherState)
-- 下雨的时候有泡泡
local gadgetState
if weatherState == 0 then
gadgetState = 0
elseif weatherState == 1 then
gadgetState = 201
end
for i = 1, #bubbles do
-- 只设置非202状态的泡泡
if 202 ~= ScriptLib.GetGadgetStateByConfigId(context, 0, bubbles[i]) then
LF_SetGadgetState(context, bubbles[i], gadgetState)
end
end
end
function LF_SetRootState(context, weatherState)
-- 下雨的时候不能和树桩交互
local gadgetState
if weatherState == 0 then
gadgetState = 0
elseif weatherState == 1 then
gadgetState = 201
end
for i = 1, #roots do
LF_SetGadgetState(context, roots[i], gadgetState)
end
end
function LF_SetWaterState(context, weatherState)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] LF_SetWaterState is called, waterConfigId = "..waterConfigId)
-- 下雨的时候水面下降(把水吸走了)
local pointId
if weatherState == 0 then
pointId = 2
elseif weatherState == 1 then
pointId = 1
end
if waterConfigId ~= 0 then
for k, v in pairs(defs.rootWaterTable) do
-- 水面上升和下降
ScriptLib.SetPlatformPointArray(context, k, v, {pointId}, { route_type = 0 })
ScriptLib.PrintContextLog(context, "## [VarunaStandard] water "..k.." is moving, pointId = "..pointId)
ScriptLib.SetGroupVariableValueByGroup(context, "waterStatus", 2, 133303188)
end
end
end
--================================================================
-- Triggers
--================================================================
function action_EVENT_GROUP_LOAD(context, evt)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] group is loaded")
-- group 加载时查询当前天气
local weather = ScriptLib.GetGroupVariableValueByGroup(context, "SGV_WeatherState", 133303126)
LF_SetRootAndBubbleState_Local(context, weather)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] there are "..#fishPoints.." items in table fishPoints")
return 0
end
function action_EVENT_PLATFORM_ARRIVAL(context, evt)
ScriptLib.PrintContextLog(context, "## [VarunaStandard] platform "..evt.param1.." arrives at point id "..evt.param2..", index = "..evt.param3)
-- 根据平台到了哪个点决定出现哪个
-- 平台所在group和钓鱼点所在group不是同一个平台需要通知钓鱼点group创建时机
-- 删除听133303126的天气group var通知
if evt.param3 == 2 then
-- 雨天低点通知133303151
ScriptLib.ExecuteGroupLua(context, 133303151, "LF_CreateFishingPoint_FromOther", {0})
ScriptLib.SetGroupVariableValueByGroup(context, "waterStatus", 0, 133303188)
elseif evt.param3 == 1 then
-- 晴天,高点
ScriptLib.ExecuteGroupLua(context, 133303151, "LF_CreateFishingPoint_FromOther", {1})
ScriptLib.SetGroupVariableValueByGroup(context, "waterStatus", 1, 133303188)
end
return 0
end
--================================================================
-- Initialize
--================================================================
LF_Initialize_Group(triggers, suites, variables, gadgets, regions)