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/V3_1/Activity_WindMaze_Battle.lua
2023-10-22 15:27:31 +08:00

233 lines
10 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: Activity_WindMaze_Battle
|| owner: juntao.chen
|| description: 风场迷宫活动关卡流程控制
|| LogName: Activity_WindMaze_Battle
|| Protection: [Protection]
=======================================]]
--需求misc
--[[
defs ={
gallery_id = 27004,
finish_region = 111,
}
]]
--测试结束
local Stage_Battle = {
Coin_Gadget_ID = 70800269,
Revive_Point = 1148
}
local temp_Variables = {
{ name = "coin", value = 0, no_refresh = false },
{ name = "killed_monster", value = 0, no_refresh = false },
{ name = "cur_stage", value = 0, no_refresh = false },
{ name = "end", value = 0, no_refresh = false },
}
local temp_Tirgger = {
{event = EventType.EVENT_VARIABLE_CHANGE, source = "", action = "action_EVENT_VARIABLE_CHANGE"},
{event = EventType.EVENT_ANY_GADGET_DIE, source = "", action = "action_EVENT_ANY_GADGET_DIE"},
{event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", action = "action_EVENT_GROUP_WILL_UNLOAD"},
{event = EventType.EVENT_ANY_MONSTER_DIE, source = "", action = "action_EVENT_ANY_MONSTER_DIE"},
{event = EventType.EVENT_GALLERY_STOP, source = "", action = "action_EVENT_GALLERY_STOP"},
{event = EventType.EVENT_DUNGEON_ALL_AVATAR_DIE, source = "", action = "action_EVENT_DUNGEON_ALL_AVATAR_DIE"},
{event = EventType.EVENT_DUNGEON_SETTLE, source = "", action = "action_EVENT_DUNGEON_SETTLE"},
{event = EventType.EVENT_ENTER_REGION, source = "", action = "action_EVENT_ENTER_REGION"},
--
}
--处理玩家进场清空陈列室替换值
function action_EVENT_ENTER_REGION(context,evt)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_ENTER_REGION" )
if evt.param1 == defs.ability_region then
if level_list[base_info.group_id] ~= nil then
return 0
end
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_ENTER_REGION:清空陈列室替换值=".."Activity_WindField_"..level_list[base_info.group_id].."_Ball")
--金币
ScriptLib.ClearExhibitionReplaceableData(context, evt.uid, "Activity_WindField_5_Coin")
end
return 0
end
--处理地城关闭如单人Esc退出
function action_EVENT_DUNGEON_SETTLE(context,evt)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_DUNGEON_SETTLE" )
LF_Try_End(context,true)
return 0
end
--团灭检测器
function action_EVENT_DUNGEON_ALL_AVATAR_DIE(context,evt)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_DUNGEON_ALL_AVATAR_DIE|evt.uid="..evt.uid)
local _uidlist = ScriptLib.GetSceneUidList(context)
for i = 1 ,#_uidlist do
if ScriptLib.IsPlayerAllAvatarDie(context,_uidlist[i]) == false then --任一活着则结束
return 0
end
end
ScriptLib.SetGroupVariableValue(context,"cur_stage",0)
return 0
end
function action_EVENT_GALLERY_STOP(context,evt)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_GALLERY_STOP |is_fail = "..evt.param2.." |reason = "..evt.param3 )
--[[ enum GalleryStopReason
{
GALLERY_STOP_NONE = 0;
GALLERY_STOP_TIMEUP = 1;
GALLERY_STOP_CLIENT_INTERRUPT = 2;
GALLERY_STOP_LUA_INTERRUPT_SUCCESS = 3;
GALLERY_STOP_LUA_INTERRUPT_FAIL = 4;
GALLERY_STOP_OWNER_LEAVE_SCENE = 5;
GALLERY_STOP_PLAY_INIT_FAILED = 6; // 玩法启动失败
GALLERY_STOP_OTHER_PLAYER_ENTER = 7;// 其他玩家进来
GALLERY_STOP_AVATAR_DIE = 8; // AVATAR阵亡
GALLERY_STOP_FINISHED = 9; // 完成gallery
GALLERY_STOP_FUNGUS_ALL_DIE = 10; // 3.2新增蕈兽团灭发起gallery stop
} ]]
if evt.param3 == 3 or evt.param3 == 9 then
ScriptLib.CauseDungeonSuccess(context)
else
ScriptLib.CauseDungeonFail(context)
end
return 0
end
function action_EVENT_ANY_MONSTER_DIE(context,evt)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_ANY_MONSTER_DIE")
--watcher累计杀怪
local _uidlist = ScriptLib.GetSceneUidList(context)
for i = 1 , #_uidlist do
ScriptLib.AddExhibitionAccumulableDataAfterSuccess(context, _uidlist[i], "Activity_WindField_5_Monster", 1, {play_type=ExhibitionPlayType.Gallery,gallery_id=defs.gallery_id})
end
ScriptLib.ChangeGroupVariableValue(context,"killed_monster",1)
return 0
end
function action_EVENT_GROUP_WILL_UNLOAD(context,evt)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_GROUP_WILL_UNLOAD")
LF_Try_End(context,true)
return 0
end
function action_EVENT_ANY_GADGET_DIE(context,evt)--吃金币
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_ANY_GADGET_DIE: evt.param1=" .. evt.param1)
--查询gadgetid
local _gadgetid = 0
for k,v in pairs(gadgets) do
if v.config_id == evt.param1 then
_gadgetid = v.gadget_id
break
end
end
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_ANY_GADGET_DIE:_gadgetid = ".._gadgetid)
--金币
if _gadgetid == Stage_Battle.Coin_Gadget_ID then
ScriptLib.ChangeGroupVariableValue(context,"coin",1)
ScriptLib.ChangeGroupTempValue(context,"level_5_coin_sum",1,{})
--watcher单局吃金币
local _uidlist = ScriptLib.GetSceneUidList(context)
for i = 1 , #_uidlist do
ScriptLib.AddExhibitionReplaceableDataAfterSuccess(context, _uidlist[i], "Activity_WindField_5_Coin", 1, {play_type=ExhibitionPlayType.Gallery,gallery_id=defs.gallery_id})
end
end
return 0
end
function action_EVENT_VARIABLE_CHANGE(context,evt)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_VARIABLE_CHANGE:"..evt.source_name.." = "..evt.param1)
if evt.source_name == "cur_stage" then
local _uidlist = ScriptLib.GetSceneUidList(context)
if evt.param1 == 1 then
--第一阶段先开gallery
ScriptLib.SetPlayerStartGallery(context,defs.gallery_id,_uidlist)
--设置复活点
ScriptLib.SetGalleryRevivePoint(context, defs.gallery_id, base_info.group_id, Stage_Battle.Revive_Point)
elseif evt.param1 == 6 then
--watcher完成
for i = 1 , #_uidlist do
ScriptLib.AddExhibitionReplaceableDataAfterSuccess(context, _uidlist[i], "Activity_WindField_5_LevelFinish", 1, {play_type=ExhibitionPlayType.Gallery,gallery_id=defs.gallery_id})
end
--最后完成
LF_Try_End(context,false)
elseif evt.param1 == 0 then
if ScriptLib.IsGalleryStart(context, defs.gallery_id) then
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_VARIABLE_CHANGE:StopGalleryByReason")
ScriptLib.StopGalleryByReason(context, defs.gallery_id, 8)
else
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_VARIABLE_CHANGE:CauseDungeonFail")
ScriptLib.CauseDungeonFail(context)
end
return 0
else
--第二到四阶段,关旧的挑战
local _score = {
["is_start"] = false,
["is_success"] = false,
["challenge_time"] = 0,
["show_id"] = stage_challenge_id[evt.param1 - 1],
}
ScriptLib.UpdatePlayerGalleryScore(context,defs.gallery_id,_score)
end
if evt.param1 ~= 6 then
--无论什么阶段,都开新的挑战
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle action_EVENT_VARIABLE_CHANGE:stage_challenge_id[evt.param1]="..stage_challenge_id[evt.param1])
local _score = {
["is_start"] = true,
["is_success"] = false,
["challenge_time"] = stage_challenge_time[evt.param1],
["show_id"] = stage_challenge_id[evt.param1],
}
ScriptLib.UpdatePlayerGalleryScore(context,defs.gallery_id,_score)
end
ScriptLib.SetGroupVariableValue(context,"killed_monster",0)
ScriptLib.SetGroupVariableValue(context,"coin",0)
elseif evt.source_name == "killed_monster" then
ScriptLib.UpdatePlayerGalleryScore(context,defs.gallery_id,{[evt.source_name] = evt.param1})
elseif evt.source_name == "coin" then
ScriptLib.UpdatePlayerGalleryScore(context,defs.gallery_id,{[evt.source_name] = evt.param1})
--二阶段吃金币奖励buff
if ScriptLib.GetGroupVariableValue(context,"cur_stage") == 2 and evt.param1 == defs.stage2_coin_goal then
local _uidlist = ScriptLib.GetSceneUidList(context)
for i = 1 , #_uidlist do
--ScriptLib.AttachGalleryTeamAbilityGroup(context, {_uidlist[i]}, defs.gallery_id, 0)
ScriptLib.SetTeamServerGlobalValue(context, _uidlist[i], "SGV_WindField_Buff_1", 1)
end
ScriptLib.ChangeGroupTempValue(context,"data_buff_times",1,{})
end
--三阶段吃金币奖励buff
if ScriptLib.GetGroupVariableValue(context,"cur_stage") == 4 and evt.param1 == defs.stage4_coin_goal then
local _uidlist = ScriptLib.GetSceneUidList(context)
for i = 1 , #_uidlist do
--ScriptLib.AttachGalleryTeamAbilityGroup(context, {_uidlist[i]}, defs.gallery_id, 0)
ScriptLib.SetTeamServerGlobalValue(context, _uidlist[i], "SGV_WindField_Buff_2", 1)
end
ScriptLib.ChangeGroupTempValue(context,"data_buff_times",1,{})
end
elseif evt.source_name == "end" then
ScriptLib.StopGallery(context, defs.gallery_id, true)
end
return 0
end
function LF_Try_End(context,is_fail)
ScriptLib.PrintContextLog(context,"## Activity_WindMaze_Battle LF_Try_End:")
ScriptLib.StopGallery(context, defs.gallery_id, is_fail)
return 0
end
--初始化
function Initialize()
--加触发器
if temp_Tirgger ~= nil then
for k,v in pairs(temp_Tirgger) do
v.name = v.action
v.config_id = 40000000 + k
v.trigger_count = 0
v.condition = ""
table.insert(triggers, v)
table.insert(suites[init_config.suite].triggers, v.name)
end
end
--加变量
if temp_Variables ~= nil then
for k,v in pairs(temp_Variables) do
v.config_id = 50000000 + k
table.insert(variables,v)
end
end
return 0
end
Initialize()