0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-28 09:05:26 +00:00
GC-Resources/Resources/Scripts/Common/V2_7/Activity_LumenCharge.lua
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

498 lines
23 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.

--ServerUploadTool Save to [/root/env/data/lua/common/V2_7]
--======================================================================================================================
--|| Filename || Activity_LumenCharge
--|| RelVersion || V2_7
--|| Owner || chao-jin
--|| Description ||
--|| LogName || ##[Activity_LumenCharge]
--|| Protection ||
--======================================================================================================================
--[[Defs & Miscs
local defs = {
challenge_time = 300,
pursina = 581032,
pursina_tip = 581105,
muds_lv1 = {581066,581067,581068,581069,581070,581071},
muds_lv2 = {581014,581016},
score_lv1 = 3,
score_lv2 = 6,
fail_region = 581197,
}
local extra_info = {
start_operator = 581002,
lantern = 581011,
}
local mud_list = {
--普通黑泥
[581016] = { mud_id = 581009, cover_list= {}, respawn_time = 8, mutex_id = 0, score = 6, cover_content = {} },
[581014] = { mud_id = 581008, cover_list= {}, respawn_time = 8, mutex_id = 0, score = 6, cover_content = {} },
--黑泥核心1
[581066] = { mud_id = 581082, cover_list= {581094}, respawn_time = 4, mutex_id = 581067, score = 3,
cover_content = {
[1] = {581025},
[2] = {581033},
[3] = {581051},
[4] = {581079},
[5] = {581123},}
},
--黑泥核心2
[581068] = { mud_id = 581081, cover_list= {581095,581096}, respawn_time = 4, mutex_id = 581071, score = 3,
cover_content = {
[1] = {581020,581026},
[2] = {581049,581044},
[3] = {581054,581055},
[4] = {581108,581080},
[5] = {581127,581124},}
},
--黑泥核心3
[581069] = { mud_id = 581083, cover_list= {581093}, respawn_time = 4, mutex_id = 581070, score = 3,
cover_content = {
[1] = {581022},
[2] = {581045},
[3] = {581099},
[4] = {581098},
[5] = {581125},}
},
--黑泥核心4
[581067] = {mud_id = 581084, cover_list = {581091, 581092}, respawn_time = 6, mutex_id = 581066, score = 3,
cover_content = {
[1] = {581031,581036},
[2] = {581053,581046},
[3] = {581056,581100},
[4] = {581101,581113},
[5] = {581126,581128},},
},
--黑泥核心5
[581070] = {mud_id = 581085, cover_list = {581087, 581088}, respawn_time = 6, mutex_id = 581069, score = 3,
cover_content = {
[1] = {581029,581039},
[2] = {581047,581048},
[3] = {581102,581103},
[4] = {581115,581116},
[5] = {581129,581130},},
},
--黑泥核心6
[581071] = {mud_id = 581086, cover_list = {581017,581019,581089, 581090}, respawn_time = 6, mutex_id = 581068, score = 3,
cover_content = {
[1] = {581040,581041,581042,581043},
[2] = {581052,581058,581059,581050},
[3] = {581104,581106,581057,581076},
[4] = {581078,581119,581118,581117},
[5] = {581122,581131,581132,581139},},
},
}
--====================================================================================================================]]
--======================================================================================================================
local LumenCharge_Triggers = {
{ config_id = 9100401, name = "group_load", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0},
{ config_id = 9100402, name = "add_charge_progress", event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "condition_add_charge_progress", action = "", trigger_count = 0, tag = "1001" },
{ config_id = 9100403, name = "variable_change", event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "", action = "action_variable_change", trigger_count = 0,},
{ config_id = 9100404, name = "select_option", event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0,},
{ config_id = 9100405, name = "challenge_success", event = EventType.EVENT_CHALLENGE_SUCCESS, source = "", condition = "", action = "action_challenge_success", trigger_count = 0,},
{ config_id = 9100406, name = "challenge_fail", event = EventType.EVENT_CHALLENGE_FAIL, source = "", condition = "", action = "action_challenge_fail", trigger_count = 0,},
{ config_id = 9100407, name = "any_gadget_die", event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "action_any_gadget_die", trigger_count = 0},
{ config_id = 9100408, name = "leave_fail_region", event = EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "action_leave_fail_region", trigger_count = 0},
{ config_id = 9100409, name = "time_axis_pass", event = EventType.EVENT_TIME_AXIS_PASS, source = "", condition = "", action = "action_time_axis_pass", trigger_count = 0},
}
--Events
--Group加载时处理内容
function action_group_load(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:加载Group")
ScriptLib.ActivateGroupLinkBundle(context, base_info.group_id)
LF_ResetAllValues(context)
ScriptLib.SetWorktopOptionsByGroupId(context, base_info.group_id, extra_info.start_operator, {7})
return 0
end
--处理进度计数,当能量增加时增加进度
function condition_add_charge_progress(context, evt)
if evt.source_name == "energy" and evt.param1 ~= 0 then
return true
end
return false
end
--处理能量进度变化时的进度显示
function action_variable_change(context, evt)
if evt.source_name == "energy" then
--充能进度10%刷怪
if evt.param1 == 10 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:刷新第1波怪")
ScriptLib.ChangeGroupVariableValue(context, "stage", 1)
ScriptLib.ShowReminder(context, 4000144)
ScriptLib.AddExtraGroupSuite(context, base_info.group_id, 5)
ScriptLib.CreateGadget(context, {config_id = defs.enemy_gadget})
-- ScriptLib.RemoveExtraGroupSuite(context, base_info.group_id, 9)
end
--充能进度35%刷怪
if evt.param1 == 35 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:刷新第2波怪")
ScriptLib.ChangeGroupVariableValue(context, "stage", 1)
ScriptLib.ShowReminder(context, 4000144)
ScriptLib.AddExtraGroupSuite(context, base_info.group_id, 6)
-- ScriptLib.RemoveExtraGroupSuite(context, base_info.group_id, 11)
end
--充能进度60%刷怪
if evt.param1 == 60 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:刷新第3波怪")
ScriptLib.ChangeGroupVariableValue(context, "stage", 1)
ScriptLib.ShowReminder(context, 4000144)
ScriptLib.AddExtraGroupSuite(context, base_info.group_id, 7)
-- ScriptLib.RemoveExtraGroupSuite(context, base_info.group_id, 13)
end
--充能进度85%刷怪
if evt.param1 == 85 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:刷新第4波怪")
ScriptLib.ChangeGroupVariableValue(context, "stage", 1)
ScriptLib.ShowReminder(context, 4000144)
ScriptLib.AddExtraGroupSuite(context, base_info.group_id, 17)
-- ScriptLib.RemoveExtraGroupSuite(context, base_info.group_id, 15)
--移除BGM物件
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, defs.enemy_gadget) then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:移除BGM物件")
ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, defs.enemy_gadget)
end
end
end
return 0
end
--玩家与操作台交互
function action_select_option(context, evt)
if extra_info.start_operator ~= evt.param1 then
return 0
end
LF_ResetAllValues(context)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:开启挑战")
ScriptLib.CreateFatherChallenge(context, 1, 2009007, defs.challenge_time, {success = 10, fail = 5})
ScriptLib.AttachChildChallenge(context, 1, 2009009, 2009009, { defs.challenge_time, 3, 1002, 100},{},{success = 1,fail = 1})
ScriptLib.AttachChildChallenge(context, 1, 2009010, 2009010, { defs.challenge_time, 3, 1003, 100},{},{success = 1,fail = 1})
ScriptLib.AttachChildChallenge(context, 1, 2009008, 2009008, { defs.challenge_time, 3, 1001, 100},{},{success = 10,fail = 5})
ScriptLib.StartFatherChallenge(context,1)
--启动reminder开灯
ScriptLib.ShowReminder(context, 4000143)
ScriptLib.SetGadgetStateByConfigId(context, extra_info.lantern, GadgetState.GearStart)
--刷新黑泥对应Group
ScriptLib.AddExtraGroupSuite(context, 166001581, 2)
ScriptLib.AddExtraGroupSuite(context, 166001581, 3)
ScriptLib.AddExtraGroupSuite(context, 166001581, 4)
--处理光钉,启动,嘲讽
LF_StartPursina(context)
LF_SetPursinaMidSpeed(context)
--开启充能进度时间轴
ScriptLib.DelWorktopOptionByGroupId(context, base_info.group_id, extra_info.start_operator, 7)
ScriptLib.InitTimeAxis(context, "energyBasic", {2}, true)
return 0
end
--玩家距离过远挑战失败
function action_leave_fail_region(context, evt)
if evt.param1 == defs.fail_region then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:玩家脱离战斗区域,手动结束挑战")
ScriptLib.StopChallenge(context, 1, 0)
end
return 0
end
--处理时间轴
function action_time_axis_pass(context, evt)
--充能的时间轴
if evt.source_name == "energyBasic" then
--增加进度
ScriptLib.ChangeGroupVariableValue(context, "energy", 1)
end
--黑泥重生的时间轴
local core_id = tonumber(evt.source_name)
if core_id ~= nil then
if mud_list[core_id] ~= nil then
--普通黑泥,没有互斥,直接创生核心和黑泥
if mud_list[core_id].mutex_id == 0 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:[普通黑泥]时间轴触发")
LF_CreateMudSet(context, core_id)
else
--核心黑泥
--互斥黑泥不存在
if 0 == ScriptLib.GetEntityIdByConfigId(context, mud_list[core_id].mutex_id) then
LF_CreateMudSet(context, core_id)
ScriptLib.EndTimeAxis(context, tostring(core_id))
ScriptLib.PrintContextLog(context,"##[LumenCharge]:[核心黑泥]复活完成,关闭自身时间轴")
else
--互斥黑泥存在
ScriptLib.PrintContextLog(context,"##[LumenCharge]:[核心黑泥]互斥黑泥存在,此次不刷新"..(mud_list[core_id].mutex_id ))
return 0
end
end
end
end
return 0
end
--处理黑泥死亡,加进度,计入统计
function action_any_gadget_die(context,evt)
if not ScriptLib.IsChallengeStartedByChallengeId(context, 2009007) then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:挑战未開啟,不處理")
return 0
end
local core_id = evt.param1
--确定死亡的是黑泥核心
if mud_list[core_id] ~= nil then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:增加清除黑泥的总计数")
ScriptLib.ChangeGroupTempValue(context, "MUD_REMOVED", 1, {})
if 1 ~= ScriptLib.GetGroupTempValue(context, "PURSINA_WORKING", {}) then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:光钉损坏中,清除黑泥不增加进度")
else
ScriptLib.PrintContextLog(context,"##[LumenCharge]:清除黑泥,增加进度")
for i=1,mud_list[core_id].score do
ScriptLib.ChangeGroupVariableValue(context, "energy", 1)
end
end
--移除黑泥对应的组件
LF_RemoveMudSet(context,core_id)
if mud_list[core_id].mutex_id == 0 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:创建普通黑泥复生时间轴")
ScriptLib.InitTimeAxis(context, tostring(core_id), {mud_list[core_id].respawn_time}, false)
else
ScriptLib.PrintContextLog(context,"##[LumenCharge]:创建核心黑泥复生时间轴")
ScriptLib.InitTimeAxis(context, tostring(core_id), {mud_list[core_id].respawn_time}, true)
end
end
return 0
end
--处理挑战成功
function action_challenge_success(context, evt)
if evt.param1 ~= 2009007 then
return 0
end
ScriptLib.PrintContextLog(context,"##[LumenCharge]:总挑战成功")
--处理运营数据
local transaction = evt.param_str1
local used_time = defs.challenge_time - evt.param2
local remove_mud = ScriptLib.GetGroupTempValue(context, "MUD_REMOVED", {})
local lumen_level = ScriptLib.GetTeamServerGlobalValue(context, context.owner_uid, "SGV_Light_Stone_Level")
ScriptLib.PrintContextLog(context,"##[LumenCharge]:埋点数据, 挑战成功,流水号"..transaction.."耗时"..used_time.."清除黑泥总数"..remove_mud.."流明石等级"..lumen_level)
ScriptLib.MarkGroupLuaAction(context, "Luminous_challenge_2", transaction, {["challenge_id"] = 2009007,["end_reason"] = 1,["use_time"]= used_time ,["remove_mud"]= remove_mud,["luminous_level"] = lumen_level})
--Group流转
LF_ClearGroup(context)
--跳转到EndSuite
ScriptLib.GoToGroupSuite(context, base_info.group_id, 16)
ScriptLib.TryFinishLuminanceStoneChallengeStage(context, base_info.group_id)
ScriptLib.FinishGroupLinkBundle(context, base_info.group_id)
return 0
end
--处理挑战失败
function action_challenge_fail(context, evt)
if evt.param1 ~= 2009007 then
return 0
end
ScriptLib.PrintContextLog(context,"##[LumenCharge]:总挑战失败")
--处理运营数据
local transaction = evt.param_str1
local used_time = defs.challenge_time - evt.param2
local remove_mud = ScriptLib.GetGroupTempValue(context, "MUD_REMOVED", {})
local lumen_level = ScriptLib.GetTeamServerGlobalValue(context, context.owner_uid, "SGV_Light_Stone_Level")
if evt.param2 <= 0 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:埋点数据,时间用尽,流水号"..transaction.."耗时"..used_time.."清除黑泥总数"..remove_mud.."流明石等级"..lumen_level)
ScriptLib.MarkGroupLuaAction(context, "Luminous_challenge_2", transaction, {["challenge_id"] = 2009007,["end_reason"] = 2,["use_time"]= used_time ,["remove_mud"]= remove_mud, ["luminous_level"] = lumen_level})
else
if ScriptLib.IsPlayerAllAvatarDie(context, context.owner_uid) then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:埋点数据,团灭,流水号"..transaction.."耗时"..used_time.."清除黑泥总数"..remove_mud.."流明石等级"..lumen_level)
ScriptLib.MarkGroupLuaAction(context, "Luminous_challenge_2", transaction, {["challenge_id"] = 2009007,["end_reason"] = 0,["use_time"]= used_time ,["remove_mud"]= remove_mud, ["luminous_level"] = lumen_level})
else
ScriptLib.PrintContextLog(context,"##[LumenCharge]:挑战失败,未团灭")
end
end
--重置部分内容
LF_ClearGroup(context)
ScriptLib.CreateGadget(context, {config_id = defs.pursina_tip})
ScriptLib.SetWorktopOptionsByGroupId(context, base_info.group_id, extra_info.start_operator, {7})
return 0
end
--======================================================================================================================
--LevelFunctions
--Group结束重置内容
function LF_ClearGroup(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:移除Group额外内容")
LF_StopPursina(context)
LF_SetPursinaNormal(context)
--保底移除BGM物件
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, defs.enemy_gadget) then
ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, defs.enemy_gadget)
end
--移除额外Suite
for i=1,17 do
ScriptLib.RemoveExtraGroupSuite(context, base_info.group_id, i+1)
end
--停掉时间轴
ScriptLib.EndTimeAxis(context, "energyBasic")
for core_id,infos in pairs(mud_list) do
ScriptLib.EndTimeAxis(context, tostring(core_id))
end
end
--初始化所有变量
function LF_ResetAllValues(context)
ScriptLib.SetGroupTempValue(context, "MUD_REMOVED", 0, {})
ScriptLib.SetGroupVariableValue(context, "energy", 0)
ScriptLib.SetGroupVariableValue(context, "stage", 1)
end
--无特效和无冲击波状态
function LF_SetPursinaNormal(context)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:光钉移除破损状态效果")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_ROTATE", 0)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 1, {})
end
--故障状态
function LF_SetPursinaBroken(context)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:光钉破损")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_ROTATE", 1)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 0, {})
end
--中速正常运转
function LF_SetPursinaMidSpeed(context)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:正常充能")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_ROTATE", 2)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 1, {})
end
--高速运转,这里第二天玩法里用不到
function LF_SetPursinaHighSpeed(context)
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_ROTATE", 3)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 1, {})
end
--启动光钉,打开嘲讽
function LF_StartPursina(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:启动光钉")
ScriptLib.SetGadgetStateByConfigId(context, defs.pursina, 202)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 1, {})
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_TAUNT", 1)
--启动时移除指示物
ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, defs.pursina_tip)
end
--停止光钉,关闭嘲讽
function LF_StopPursina(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenCharge]:关闭光钉")
ScriptLib.SetGadgetStateByConfigId(context, defs.pursina, 203)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 0, {})
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_TAUNT", 0)
end
--创建黑泥套组
function LF_CreateMudSet(context, core_id)
if mud_list[core_id] ~= nil then
local covers = mud_list[core_id].cover_list
local content = mud_list[core_id].cover_content
ScriptLib.PrintContextLog(context,"##[LumenCharge]:创建黑泥,黑泥白盒")
ScriptLib.CreateGadget(context, {config_id = core_id})
ScriptLib.CreateGadget(context, {config_id = mud_list[core_id].mud_id})
if #covers ~= 0 then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:创建黑泥包裹物")
for k,cover_id in pairs(covers) do
ScriptLib.CreateGadget(context, {config_id = cover_id})
end
end
if #content ~= 0 then
-- local cur_stage = ScriptLib.GetGroupVariableValue(context, "stage")
ScriptLib.PrintContextLog(context,"##[LumenCharge]:遍历移除包裹内容物")
-- 这里遍历了所有stage的包裹物全部尝试进行一次移除
for stage_index=1,5 do
for k,content_id in pairs(content[stage_index]) do
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, content_id) then
ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, content_id)
end
end
end
end
else
ScriptLib.PrintContextLog(context,"##[LumenCharge]:[WARINING] 使用了错误的黑泥核心ID注意检查")
end
end
--移除黑泥套组
function LF_RemoveMudSet(context, core_id)
if mud_list[core_id] ~= nil then
local covers = mud_list[core_id].cover_list
local content= mud_list[core_id].cover_content
ScriptLib.PrintContextLog(context,"##[LumenCharge]:移除黑泥白盒")
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, mud_list[core_id].mud_id) then
ScriptLib.KillEntityByConfigId(context, { group_id = base_info.group_id, config_id = mud_list[core_id].mud_id, entity_type = EntityType.GADGET })
-- ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, mud_list[core_id].mud_id)
end
ScriptLib.PrintContextLog(context,"##[LumenCharge]:移除黑泥包裹物")
for k,cover_id in pairs(covers) do
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, cover_id) then
ScriptLib.KillEntityByConfigId(context, { group_id = base_info.group_id, config_id = cover_id, entity_type = EntityType.GADGET })
-- ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, cover_id)
end
end
local cur_stage = ScriptLib.GetGroupVariableValue(context, "stage")
if content[cur_stage] ~= nil then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:创建包裹内容物")
for k,content_id in pairs(content[cur_stage]) do
ScriptLib.CreateGadget(context, {config_id = content_id})
end
end
else
ScriptLib.PrintContextLog(context,"##[LumenCharge]:[WARINING] 使用了错误的黑泥核心ID注意检查")
end
end
--移除黑泥套组,创建内容物
--======================================================================================================================
--ServerLuaCalls
function SLC_PausePursina(context)
LF_SetPursinaBroken(context)
ScriptLib.EndTimeAxis(context, "energyBasic")
return 0
end
function SLC_ResumePursina(context)
if not ScriptLib.IsChallengeStartedByChallengeId(context, 2009007) then
ScriptLib.PrintContextLog(context,"##[LumenCharge]:挑战已结束,不再恢复时间轴")
return 0
end
LF_SetPursinaMidSpeed(context)
ScriptLib.InitTimeAxis(context, "energyBasic", {2}, true)
return 0
end
--=====================================================================================================================
--初始化GroupTrigger
function LumenCharge_Initialize()
for config_id,infos in pairs(monsters) do
if infos.affix ~= nil then
table.insert(infos.affix, 4160)
else
infos["affix"] = {4160}
end
end
for k,v in pairs(LumenCharge_Triggers) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
end
LumenCharge_Initialize()