mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-28 09:05:26 +00:00
203 lines
7.9 KiB
Lua
203 lines
7.9 KiB
Lua
--地脉花循环营地模板
|
||
|
||
--local defs = {
|
||
-- group_id = xxx ,
|
||
-- monster_waves = 4,
|
||
-- chest_id = xxx,
|
||
-- operator1_id = xxx,
|
||
-- operator2_id = xxx
|
||
--}
|
||
|
||
|
||
|
||
|
||
local Tri = {
|
||
[1] = { name = "any_monster_die", config_id = 8000001, event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_any_monster_die", trigger_count = 0 },
|
||
[2] = { name = "blossom_progress_finish", config_id = 8000002, event = EventType.EVENT_BLOSSOM_PROGRESS_FINISH, source = "", condition= "", action = "action_blossom_progress_finish", trigger_count = 0 },
|
||
[4] = { name = "group_load", config_id = 8000004, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
|
||
[5] = { name = "group_refresh", config_id = 8000005, event = EventType.EVENT_GROUP_REFRESH, source = "", condition = "", action = "action_group_refresh", trigger_count = 0 },
|
||
--[6] = { name = "chest_die", config_id = 8000006, event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "action_any_gadget_die", trigger_count = 0 },
|
||
[7] = { name = "select_option", config_id = 8000007, event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0 },
|
||
[8] = { name = "blossom_chest_die", config_id = 8000008, event = EventType.EVENT_BLOSSOM_CHEST_DIE, source = "", condition = "", action = "action_blossom_chest_die", trigger_count = 0 },
|
||
|
||
}
|
||
|
||
function Initialize()
|
||
for k,v in pairs(Tri) do
|
||
table.insert(triggers, v)
|
||
table.insert(suites[1].triggers, v.name)
|
||
end
|
||
|
||
--注入一个blossom的标志位。下次groupload时如果为1,说明玩法已经开始了,不再走一次init
|
||
table.insert(variables,{ config_id=50000001,name = "HasStarted", value = 0, no_refresh = true})
|
||
table.insert(variables,{ config_id=50000002,name = "wave", value = 0, no_refresh = true})
|
||
|
||
|
||
|
||
end
|
||
|
||
----------------------------------
|
||
|
||
function action_any_monster_die(context, evt)
|
||
--当怪物死的时候,增加循环营地进度
|
||
ScriptLib.AddBlossomScheduleProgressByGroupId(context, 0)
|
||
--如果还有怪物活着,无事发生
|
||
if ScriptLib.GetGroupMonsterCountByGroupId(context, 0) ~= 0 then
|
||
return -1
|
||
end
|
||
--当前波次怪物死光了,则加载下一波怪物
|
||
LF_Create_Next_Monster_Wave(context)
|
||
return 0
|
||
end
|
||
|
||
function action_group_load(context, evt)
|
||
--group加载时,刷新循环营地
|
||
ScriptLib.PrintContextLog(context,"BG: Group has been loaded!")
|
||
ScriptLib.SetGroupVariableValue(context,"GroupCompletion",0)
|
||
|
||
--group load时判定一下这个group是否已经开启,如果已经开启则无事发生
|
||
local has_started = ScriptLib.GetGroupVariableValue(context,"HasStarted")
|
||
if (has_started == 1) then
|
||
ScriptLib.PrintContextLog(context,"BG: Group has been started, refresh failed!")
|
||
return 0
|
||
end
|
||
|
||
ScriptLib.RefreshBlossomGroup(context, { group_id = 0, suite = 1, exclude_prev = true, is_delay_unload = true })
|
||
LF_Init_Blossom_Group(context)
|
||
return 0
|
||
end
|
||
|
||
function action_group_refresh(context, evt)
|
||
|
||
ScriptLib.PrintContextLog(context,"BG: Group has been refreshed!")
|
||
|
||
--group load时判定一下这个group是否已经开启,如果已经开启则无事发生
|
||
local has_started = ScriptLib.GetGroupVariableValue(context,"HasStarted")
|
||
if (has_started == 1) then
|
||
ScriptLib.PrintContextLog(context,"BG: Group has been started, refresh failed!")
|
||
return 0
|
||
end
|
||
|
||
--group刷新时,初始化整个group
|
||
LF_Init_Blossom_Group(context)
|
||
return 0
|
||
end
|
||
|
||
|
||
function action_blossom_chest_die(context,evt)
|
||
--领取完奖励后,刷新循环营地
|
||
if evt.param1 == defs.gadget_id_chest then
|
||
ScriptLib.PrintContextLog(context,"BG: blossom has been opened. Refreh the next blossom group")
|
||
--group重置为没有开始的状态
|
||
ScriptLib.SetGroupVariableValue(context,"HasStarted",0)
|
||
ScriptLib.SetGroupVariableValue(context,"wave",0)
|
||
ScriptLib.RefreshBlossomGroup(context, { group_id = 0, suite = 1, exclude_prev = true })
|
||
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_select_option(context,evt)
|
||
--玩家选择选项后,隐藏地脉淤积gadget,清除gadget上的选项,激活第一波怪物
|
||
ScriptLib.PrintContextLog(context,"BG: Option has been selected! Monster waves start!")
|
||
ScriptLib.SetGadgetStateByConfigId(context, LF_Get_Blossom_Operator(context), 201)
|
||
ScriptLib.DelWorktopOptionByGroupId(context,0,LF_Get_Blossom_Operator(context),187)
|
||
|
||
|
||
--所有东西成功刷出来了,将group设置为已开始状态
|
||
ScriptLib.SetGroupVariableValue(context,"HasStarted",1)
|
||
LF_Start_Monster_Wave(context)
|
||
return 0
|
||
end
|
||
|
||
|
||
function action_blossom_progress_finish(context,evt)
|
||
--进度打满以后,创建奖励
|
||
LF_Create_Reward(context)
|
||
ScriptLib.SetGroupVariableValue(context,"GroupCompletion",1)
|
||
return 0
|
||
end
|
||
----------------------------------
|
||
|
||
function LF_Create_Reward(context)
|
||
--创建循环营地奖励方法,并将循环营地进度置到reward
|
||
ScriptLib.PrintContextLog(context,"BG: Monster wave has ended, creating blossom group reward")
|
||
ScriptLib.SetBlossomScheduleStateByGroupId(context,0,3)
|
||
ScriptLib.PrintContextLog(context,"BG: Creaing blossom chest!!")
|
||
ScriptLib.CreateBlossomChestByGroupId(context,0,defs.gadget_id_chest)
|
||
end
|
||
|
||
|
||
|
||
|
||
function LF_Create_Next_Monster_Wave(context)
|
||
--更新下一波怪物潮的方法,如果已经到了最后一波,则不刷新(此时理论上来说打完应该直接触发blossom group finish)
|
||
local wave = ScriptLib.GetGroupVariableValue(context,"wave")
|
||
--local wave = ScriptLib.GetGroupTempValue(context, "wave", {})
|
||
local nextWave = wave + 1
|
||
if nextWave+1 > #suites then
|
||
ScriptLib.PrintContextLog(context, "BG: This is final wave ")
|
||
else
|
||
ScriptLib.PrintContextLog(context,"BG: Creating monster wave: "..nextWave)
|
||
ScriptLib.AddExtraGroupSuite(context, 0, nextWave+1)
|
||
|
||
ScriptLib.PrintContextLog(context,"BG: We are trying to load suite : "..nextWave+1)
|
||
ScriptLib.SetGroupVariableValue(context,"wave",nextWave)
|
||
--ScriptLib.SetGroupTempValue(context, "wave", nextWave, {})
|
||
end
|
||
end
|
||
|
||
|
||
function LF_Start_Monster_Wave(context)
|
||
--启动怪物潮,进入打怪阶段
|
||
ScriptLib.SetBlossomScheduleStateByGroupId(context, 0, 2)
|
||
ScriptLib.SetGroupVariableValue(context,"wave",0)
|
||
--ScriptLib.SetGroupTempValue(context, "wave", 0, {})
|
||
--加载第一波怪物
|
||
LF_Create_Next_Monster_Wave(context)
|
||
end
|
||
|
||
|
||
|
||
function LF_Init_Blossom_Group(context)
|
||
--初始化循环营地方法,移除全部的怪物group,并刷新地脉淤积操作台
|
||
ScriptLib.PrintContextLog(context,"BG: Blossom group is initiating")
|
||
|
||
--初始化时,先移除掉所有怪物的suite
|
||
for i = 2, #suites do
|
||
ScriptLib.RemoveExtraGroupSuite(context,0,i)
|
||
end
|
||
if (LF_Get_Blossom_Operator(context) == -1) then
|
||
return -1
|
||
end
|
||
|
||
ScriptLib.PrintContextLog(context,"BG: Current operator config id is: "..LF_Get_Blossom_Operator(context))
|
||
|
||
--加载地脉淤积的gadget
|
||
local ret = ScriptLib.CreateGadget(context, {config_id = LF_Get_Blossom_Operator(context)})
|
||
|
||
ScriptLib.PrintContextLog(context,"BG: Create worktop result: "..ret)
|
||
|
||
--给地脉淤积的gadget增加操作选项
|
||
ScriptLib.SetWorktopOptionsByGroupId(context,0,LF_Get_Blossom_Operator(context),{187})
|
||
|
||
|
||
return 0
|
||
end
|
||
|
||
|
||
|
||
function LF_Get_Blossom_Operator(context)
|
||
--获取当前BlossomGroup的地脉淤积操作台的方法,根据当前的刷新类型,返回不同的操作台
|
||
|
||
local operator = {[1]=defs.gadget_id_operator_1,[2]=nil,[3]=defs.gadget_id_operator_2}
|
||
local refreshType = ScriptLib.GetBlossomRefreshTypeByGroupId(context, 0)
|
||
if not (refreshType == 1 or refreshType == 3) then
|
||
return -1
|
||
end
|
||
ScriptLib.PrintContextLog(context,"BG: Current blossom group refresh type: "..refreshType)
|
||
|
||
return operator[refreshType]
|
||
end
|
||
----------------------------------
|
||
Initialize() |