mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-28 09:05:26 +00:00
233 lines
10 KiB
Lua
233 lines
10 KiB
Lua
--[[======================================
|
||
|| filename: Activity_WindMaze_Battle
|
||
|| owner: juntao.chen
|
||
|| description: 风场迷宫活动关卡流程控制
|
||
|| LogName: Activity_WindMaze_Battle
|
||
|| Protection: [Protection]
|
||
=======================================]]
|
||
|
||
--需求misc
|
||
--[[
|
||
local 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() |