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

258 lines
12 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.

--[[
local defs = {
need_kill_hint = true,
group_id = 144001108, --对应的GroupID
gadget_init = {108013, 108014}, --defs.gadget_init里按顺序填入 开启挑战机关ConfigID、 限时终点ConfigID
challenge_time = 181, --挑战持续的时间
gadget_suites = {
[4] = {108015,108023}, --suites每波需要销毁的指示路点和光柱,结构为[suite_id] = {gadget1,gadget2},id从4开始
[5] = {108017,108024},
[6] = {108019,108025},
},
--怪物死亡时刷新对应的Suites里的纹章,结构为[configid] = suiteid,
suites_heraldry_loot = {
[108075] = 7,
[108077] = 8,
},
gadget_heraldry_count = 15, --收集的激流纹章数量
gadget_heraldry_id = 70350256, --激流纹章ID
suites_chain = {4,5,6,2}, --suite的刷新顺序
}
]]--
local Triggers_Start = {
[1] = { name = "challenge_success", config_id = 9000001, event = EventType.EVENT_CHALLENGE_SUCCESS, source = "",condition = "",action = "action_challenge_success",trigger_count= 0},
[2] = { name = "challenge_fail", config_id = 9000002, event = EventType.EVENT_CHALLENGE_FAIL, source = "",condition = "",action = "action_challenge_fail",trigger_count= 0},
[3] = { name = "select_option", config_id = 9000003, event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0 },
[4] = { name = "gadget_create", config_id = 9000004, event = EventType.EVENT_GADGET_CREATE, source = "", condition = "", action = "action_gadget_create", trigger_count = 0 },
[5] = { name = "gadget_die_count",config_id = 9000005, event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "condition_gadget_die_count", action = "", trigger_count = 0, tag = "888" },
[6] = { name = "any_monster_die", config_id = 9000006, event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_any_monster_die", trigger_count = 0 },
[7] = { name = "enter_region_action", config_id = 9000007, event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", trigger_count = 0 },
[8] = { name = "group_will_unload", config_id = 9000008, event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_group_will_unload", trigger_count = 0 },
[9] = { name = "group_unload", config_id = 9000009, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
}
local Triggers_Final = {
[1] = { config_id=50000001,name = "enter_final_region",config_id = 9000010, event = EventType.EVENT_ENTER_REGION, source = "", condition = "condition_enter_final_region", action = "", trigger_count = 0, tag = "666" },
}
--挑战机关初始化
function action_gadget_create(context, evt)
-- 设置操作台选项
if defs.gadget_init[1] == evt.param1 then
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, defs.gadget_init[1], {175})
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : create_open_gadget")
end
return 0
end
--机关开启条件及开启处理
function action_select_option(context, evt)
if defs.gadget_init[1] ~= evt.param1 or 175 ~= evt.param2 then
return -1
end
--弹出Reminder提示玩家不处于要求的状态下状态ID为2代表玩家处于开船状态
if 2 ~= ScriptLib.GetPlayerVehicleType(context,context.uid) then
ScriptLib.ShowReminder(context, 400041)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : not_in_boat")
return -1
end
if true == ScriptLib.CheckIsInMpMode(context) then
ScriptLib.ShowReminder(context, 400053)
return -1
end
if 0 ~= ScriptLib.GetGroupTempValue(context, "flagHasStarted", {}) then
ScriptLib.ShowReminder(context, 400046)
return -1
end
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 1, {group_id = grp_id})
end
-- 新建一个波次的全局变量 从1开始suites的刷新顺序按suites_chain的顺序刷新
local ret = ScriptLib.SetGroupTempValue(context, "wave", 1, {})
--创建编号为888该挑战的识别id),挑战内容为127的区域挑战具体参数填写方式见DungeonChallengeData表中的注释所有填写的值都必须是int类型
ScriptLib.CreateFatherChallenge(context, 2011, 2011, defs.challenge_time, {success = 10, fail = 5})
ScriptLib.AttachChildChallenge(context, 2011, 2012, 2012,{0,4, 666,1},{},{success = 10,fail = 5}) --限时到达
ScriptLib.AttachChildChallenge(context, 2011, 2013, 2013,{0,2, 888, defs.gadget_heraldry_count},{},{success = 1,fail = 0}) --收集纹章
if defs.need_kill_hint == true then
local hints = 0
for k,v in pairs(defs.suites_heraldry_loot) do
hints = hints+1
end
ScriptLib.AttachChildChallenge(context, 2011, 2014, 2014,{180, defs.group_id, hints, 0},{},{success = 1,fail = 0}) --收集纹章
end
ScriptLib.StartFatherChallenge(context, 2011)
ScriptLib.SetChallengeEventMark(context, 2011, ChallengeEventMarkType.SUMMER_TIME_SPRINT_BOAT_TIME)
ScriptLib.SetChallengeEventMark(context, 2013, ChallengeEventMarkType.SUMMER_TIME_SPRINT_BOAT_GATHER_POINT)
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, defs.gadget_init[1], 175)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : del_work_options_by_group_configId")
-- 添加suite4的新内容
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_chain[1])
--处理关卡6刷怪时会卡住
if defs.group_id == 144002049 then
ScriptLib.AddExtraGroupSuite(context, defs.group_id, 10)
end
-- 将configid为 defs.gadget_init[1] 的物件更改为状态 GadgetState.GearStart
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_init[1], GadgetState.GearStart)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_gadget_state_GearStart")
return 0
end
-- 处理成功
function action_challenge_success(context, evt)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : success_process_start")
if evt.param1 ~= 2011 then
return -1
end
for i=1,#defs.gadget_init do
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_init[i] })
end
for i= 2, #suites do
ScriptLib.KillExtraGroupSuite(context, defs.group_id, i)
end
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 0, {group_id = grp_id})
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : success_kill_all_entity")
ScriptLib.RefreshGroup(context, { group_id = defs.group_id, suite = 1 })
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : success_process_end")
return 0
end
-- 处理失败
function action_challenge_fail(context, evt)
if evt.param1 ~= 2011 then
return -1
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : fail_process_start")
-- 将本组内变量名为 "hasStarted" 的变量设置为 0
ScriptLib.SetGroupVariableValue(context, "hasStarted", 0)
--标记挑战结束
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 0, {group_id = grp_id})
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_groupVariable")
-- 设置操作台选项
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, defs.gadget_init[1], {175})
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_wok_options_by_configid")
for i= 2, #suites do --目前第三组为空,从第四组开始
ScriptLib.RemoveExtraGroupSuite(context, defs.group_id, i)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : remove_groupsuites")
end
-- 将configid为 defs.gadget_init[1] 的物件更改为状态 GadgetState.Default
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_init[1], GadgetState.Default)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_gadget_state_dafault_to_Starter")
-- 永久关闭CongfigId的Gadget需要和Groups的RefreshWithBlock标签搭配
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_init[2] })
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : kill_entity_by_configId")
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : fail_process_end")
return 0
end
--统计激流纹章数量,
function condition_gadget_die_count(context, evt)
local death_config_id = evt.param1
if gadgets[death_config_id].gadget_id == defs.gadget_heraldry_id then
return true
end
return false
end
-- 进入最终区域,suite2
function condition_enter_final_region(context, evt)
-- 判断角色数量不少于1
if evt.param1 ~= suites[2].regions[1] then
return false
end
if ScriptLib.GetRegionEntityCount(context, { region_eid = evt.source_eid, entity_type = EntityType.AVATAR }) < 1 then
return false
end
return true
end
-- 进入每个Suite触发区域时移除终点指示器并刷新下一个Suite移除上一个Suite
function action_enter_region(context, evt)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : EnterRegionToNext")
local wave = ScriptLib.GetGroupTempValue(context, "wave", {})
if wave > #defs.suites_chain then --防止访问不存在的wave
return -1
end
local suite_seq = defs.suites_chain[wave]
-- 判断角色数量不少于1
if evt.param1 ~= suites[suite_seq].regions[1] then
return -1
end
if ScriptLib.GetRegionEntityCount(context, { region_eid = evt.source_eid, entity_type = EntityType.AVATAR }) < 1 then
return -1
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Enter"..suite_seq)
-- 关闭该Suite中的提示光柱和路点
if wave < #defs.suites_chain then
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_suites[suite_seq][1] })
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_suites[suite_seq][2] })
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Kill Tip Gadgets when enter and this wave is"..suite_seq)
end
if wave == 1 then
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave+1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Refresh_Next_Group"..(defs.suites_chain[wave+1]))
elseif wave == #defs.suites_chain then
ScriptLib.RemoveExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave-1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Remove_last_Group"..(defs.suites_chain[wave-1]))
elseif wave > 1 and wave < #defs.suites_chain then
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave+1])
ScriptLib.RemoveExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave-1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Refresh_Next_Group_And_Remove_last_Group"..(defs.suites_chain[wave]))
end
ScriptLib.SetGroupTempValue(context, "wave", wave+1, {})
return 0
end
--根据死亡的怪物对应刷新含有纹章的Suite
function action_any_monster_die(context, evt)
if defs.suites_heraldry_loot[evt.param1] == nil then
return -1
else
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_heraldry_loot[evt.param1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Kill_Monster_And_Add_heraldry")
end
return 0
end
--处理Group重新加载时操作台的问题
function action_group_load( context,evt )
ScriptLib.RefreshGroup(context, { group_id = defs.group_id, suite = 1 })
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, defs.gadget_init[1], {175})
return 0
end
--处理Group未正确卸载的情况
function action_group_will_unload( context,evt )
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 0, {group_id = grp_id})
end
return 0
end
--给每个suite塞触发器
function Initialize()
for k,v in pairs(Triggers_Start) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
table.insert(triggers, Triggers_Final[1])
table.insert(suites[2].triggers, Triggers_Final[1].name)
return 0
end
Initialize()