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_LumenWipeout.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

295 lines
13 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_LumenWipeout
--|| RelVersion || V2_7
--|| Owner || chao-jin
--|| Description ||
--|| LogName || ##[Activity_LumenWipeout]
--|| Protection ||
--[[======================================================================================================================
--Defs & Miscs
local defs = {
pursina = 630015,
pursina_tip = 630087,
fail_region = 630038
}
local mud_list = {
[630009] = 630063,
[630012] = 630062,
[630023] = 630028,
}
local extra_infos = {
start_operator = 630002,
mud_cover = 630096,
}
--======================================================================================================================]]
local LumenWipeout_Triggers = {
{config_id = 8002001, name = "pursina_state", event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "", action = "action_pursina_state", trigger_count = 0},
{config_id = 8002002, name = "challenge_success", event = EventType.EVENT_CHALLENGE_SUCCESS, source = "", condition = "", action = "action_challenge_success", trigger_count = 0 },
{config_id = 8002003, name = "challenge_fail", event = EventType.EVENT_CHALLENGE_FAIL, source = "", condition = "", action = "action_challenge_fail", trigger_count = 0 },
{config_id = 8002004, name = "any_gadget_die", event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "action_any_gadget_die", trigger_count = 0},
{config_id = 8002005, name = "group_load", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0},
{config_id = 8002006, name = "leave_fail_region", event = EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "action_leave_fail_region", trigger_count = 0},
{config_id = 8002007, name = "gadget_create", event = EventType.EVENT_GADGET_CREATE, source = "", condition = "", action = "action_gadget_create", trigger_count = 0},
{config_id = 8002008, name = "time_axis_pass", event = EventType.EVENT_TIME_AXIS_PASS, source = "", condition = "", action = "action_time_axis_pass", trigger_count = 0},
{config_id = 8002009, name = "select_option", event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0},
{config_id = 8002010, name = "pause_battle_bgm", event = EventType.EVENT_ANY_MONSTER_LIVE, source = "", condition = "", action = "action_pause_battle_bgm", trigger_count = 0},
}
--Events
function action_pursina_state(context, evt)
if evt.source_name == "pursina_state" then
if evt.param1 == 0 then
LF_SetPursinaNormal(context)
return 0
end
if evt.param1 == 1 then
LF_SetPursinaBroken(context)
return 0
end
if evt.param1 == 2 then
LF_SetPursinaMidSpeed(context)
return 0
end
if evt.param3 == 3 then
LF_SetPursinaHighSpeed(context)
return 0
end
end
return 0
end
--挑战成功处理
function action_challenge_success(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:挑战成功")
--运营用的埋点数据
local used_time = 300 - evt.param2
local remove_mud = ScriptLib.GetGroupTempValue(context, "MUD_REMOVED", {})
local transaction = evt.param_str1
local lumen_level = ScriptLib.GetTeamServerGlobalValue(context, context.owner_uid, "SGV_Light_Stone_Level")
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:埋点数据,挑战成功,流水号"..transaction.."耗时"..used_time.."清除黑泥总数"..remove_mud.."流明石等级"..lumen_level)
ScriptLib.MarkGroupLuaAction(context, "Luminous_challenge_2", transaction, {["challenge_id"] = 2009002,["end_reason"] = 1,["use_time"]= used_time ,["remove_mud"]= remove_mud,["luminous_level"] = lumen_level})
LF_ClearGroup(context)
ScriptLib.TryFinishLuminanceStoneChallengeStage(context, base_info.group_id)
ScriptLib.GoToGroupSuite(context, base_info.group_id, 10)
ScriptLib.FinishGroupLinkBundle(context, base_info.group_id)
return 0
end
--处理BGM物件
function action_pause_battle_bgm(context, evt)
if evt.param1 == 630078 then
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:刷最后一波怪移除BGM入战物件")
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, defs.enemy_gadget) then
ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, defs.enemy_gadget)
end
end
return 0
end
--挑战失败处理
function action_challenge_fail(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:挑战失败")
--运营用的埋点数据
local used_time = 300 - evt.param2
local remove_mud = ScriptLib.GetGroupTempValue(context, "MUD_REMOVED", {})
local lumen_level = ScriptLib.GetTeamServerGlobalValue(context, context.owner_uid, "SGV_Light_Stone_Level")
local transaction = evt.param_str1
if evt.param2 <= 0 then
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:埋点数据,时间用尽,流水号"..transaction.."耗时"..used_time.."清除黑泥总数"..remove_mud.."流明石等级"..lumen_level)
ScriptLib.MarkGroupLuaAction(context, "Luminous_challenge_2", transaction, {["challenge_id"] = 2009002,["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,"##[LumenWipeout]:埋点数据,团灭,流水号"..transaction.."耗时"..used_time.."清除黑泥总数"..remove_mud.."流明石等级"..lumen_level)
ScriptLib.MarkGroupLuaAction(context, "Luminous_challenge_2", transaction, {["challenge_id"] = 2009002,["end_reason"] = 0,["use_time"]= used_time ,["remove_mud"]= remove_mud, ["luminous_level"] = lumen_level})
end
end
--清除额外内容并恢复
LF_ClearGroup(context)
ScriptLib.CreateGadget(context, {config_id = defs.pursina_tip})
ScriptLib.SetWorktopOptionsByGroupId(context, base_info.group_id, extra_infos.start_operator, {7})
return 0
end
--Group加载
function action_group_load( context, evt )
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:加载Group,初始化一些内容")
ScriptLib.SetGroupTempValue(context, "MUD_REMOVED", 0, {})
return 0
end
--玩家脱离战斗区域,挑战失败
function action_leave_fail_region(context, evt)
if evt.param1 == defs.fail_region then
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:玩家脱离战斗区域,手动结束挑战")
ScriptLib.StopChallenge(context, 233, 0)
end
return 0
end
-- 触发操作
function action_select_option(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:开启挑战")
--记录场上的黑泥数量
ScriptLib.SetGroupTempValue(context, "MUD_NUMS", 0, {})
ScriptLib.SetGroupTempValue(context, "MUD_REMIND", 0, {})
--开启挑战
ScriptLib.ActiveChallenge(context, 233, 2009005, 300, 166001630, 29, 0)
ScriptLib.DelWorktopOptionByGroupId(context, 166001630, 630002, 7)
--启动光钉
LF_StartPursina(context)
LF_SetPursinaNormal(context)
ScriptLib.InitTimeAxis(context, "pursinaDelay", {2}, false)
--创建两个喷气岩
ScriptLib.CreateGadget(context, { config_id = 630068 })
ScriptLib.CreateGadget(context, { config_id = 630076 })
ScriptLib.CreateGadget(context, { config_id = defs.enemy_gadget })
--刷第一波怪
ScriptLib.AddExtraGroupSuite(context, 166001630, 2)
ScriptLib.ShowReminder(context, 400012)
local pos = {x=993, y=737, z=409}
ScriptLib.ScenePlaySound(context, {play_pos = pos, sound_name = "LevelHornSound001", play_type= 1, is_broadcast = false })
return 0
end
-- 黑泥创生处理
function action_gadget_create(context,evt)
--黑泥核心创建时,同步创建黑泥
if mud_list[evt.param1] ~= nil then
-- ScriptLib.CreateGadget(context, {config_id = mud_list[evt.param1]})
ScriptLib.ChangeGroupTempValue(context, "MUD_NUMS", 1, {})
--创建黑泥,看看光钉的工作状态
if 0 ~= ScriptLib.GetGroupTempValue(context, "MUD_NUMS", {}) then
if 1 == ScriptLib.GetGroupTempValue(context, "PURSINA_WORKING", {}) then
if 0 == ScriptLib.GetGroupTempValue(context, "MUD_REMIND", {}) then
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:弹出第一次Reminder")
ScriptLib.ShowReminder(context, 4000146)
ScriptLib.SetGroupTempValue(context, "MUD_REMIND",1, {})
end
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:创建黑泥,光钉在工作中,光钉损坏")
ScriptLib.ShowReminder(context, 4000151)
LF_SetPursinaBroken(context)
end
end
end
if evt.param1 == extra_infos.start_operator then
ScriptLib.SetWorktopOptionsByGroupId(context, base_info.group_id, extra_infos.start_operator, {7})
end
return 0
end
--统计黑泥核心死亡数量
function action_any_gadget_die(context,evt)
if mud_list[evt.param1] ~= nil then
--移除对应的黑泥白盒
ScriptLib.ChangeGroupTempValue(context, "MUD_NUMS", -1, {})
ScriptLib.KillEntityByConfigId(context, { group_id = base_info.group_id, config_id = mud_list[evt.param1], entity_type = EntityType.GADGET })
-- ScriptLib.RemoveEntityByConfigId(context, 166001630, EntityType.GADGET, mud_list[evt.param1])
if not ScriptLib.IsChallengeStartedByChallengeId(context, 2009005) then
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:挑战未开始,不增加统计")
return 0
end
--场上没有黑泥了,移除包裹物,恢复光钉
if 0 == ScriptLib.GetGroupTempValue(context, "MUD_NUMS", {}) then
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, extra_infos.mud_cover) then
ScriptLib.KillEntityByConfigId(context, { group_id = base_info.group_id, config_id = extra_infos.mud_cover, entity_type = EntityType.GADGET })
-- ScriptLib.RemoveEntityByConfigId(context, 166001630, EntityType.GADGET, extra_infos.mud_cover)
end
LF_SetPursinaMidSpeed(context)
end
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:黑泥核心死亡,增加统计")
ScriptLib.ChangeGroupTempValue(context, "MUD_REMOVED", 1, {})
end
return 0
end
--时间轴移动
function action_time_axis_pass(context,evt)
if evt.source_name == "pursinaDelay" then
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:光钉开始正常运转")
LF_SetPursinaMidSpeed(context)
ScriptLib.ShowReminder(context, 4000145)
end
return 0
end
--======================================================================================================================
--LevelFunctions
function LF_ClearGroup(context)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:移除Group额外内容")
if 0 ~= ScriptLib.GetEntityIdByConfigId(context, defs.enemy_gadget) then
ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, defs.enemy_gadget)
end
for i=1,8 do
ScriptLib.RemoveExtraGroupSuite(context, base_info.group_id, i+1)
end
LF_SetPursinaNormal(context)
LF_StopPursina(context)
ScriptLib.EndTimeAxis(context, "pursinaDelay")
end
--无特效和无冲击波状态
function LF_SetPursinaNormal(context)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:光钉移除破损状态效果")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_ROTATE", 0)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 1, {})
end
--故障状态
function LF_SetPursinaBroken(context)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:光钉破损")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.pursina, "SGV_PURSINA_ROTATE", 1)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 0, {})
end
--中速正常运转
function LF_SetPursinaMidSpeed(context)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:正常充能")
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,"##[LumenWipeout]:启动光钉")
ScriptLib.SetGadgetStateByConfigId(context, defs.pursina, 202)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 1, {})
--启动时移除指示物
ScriptLib.RemoveEntityByConfigId(context, base_info.group_id, EntityType.GADGET, defs.pursina_tip)
end
--停止光钉
function LF_StopPursina(context, evt)
ScriptLib.PrintContextLog(context,"##[LumenWipeout]:关闭光钉")
ScriptLib.SetGadgetStateByConfigId(context, defs.pursina, 203)
ScriptLib.SetGroupTempValue(context, "PURSINA_WORKING", 0, {})
end
function LumenWipeout_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
table.insert(variables, { config_id=50000001,name = "pursina_state", value = 0,no_refresh = false})
table.insert(variables, { config_id=50000002,name = "ChallengeSuccess", value = 0,no_refresh = false})
-- suites[1].triggers = {}
for k,v in pairs(LumenWipeout_Triggers) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
end
LumenWipeout_Initialize()