Files
hk4e/gdconf/game_data_config/lua/common/TowerDefense_Challenge.lua
2022-11-30 00:00:20 +08:00

537 lines
27 KiB
Go
Raw Permalink 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.
--[[
tide_group_defs ={
[1] = {group = 250030010, delay = 60, next_group = 2, buff = {1,2,3},enter={},exit={},enter_id={},exit_id={}},
[2] = {group = 250030010, delay = 60, next_group = 3, buff = {1,2,3}},
[3] = {group = 250030010, delay = 60, next_group = 4, buff = {1,2,3}},
[4] = {group = 250030010, delay = 60, next_group = 5, buff = {1,2,3}},
[5] = {group = 250030010, delay = 60, next_group = 0, buff = {1,2,3}},
}
enter_pool={}
exit_pool={}
--]]
function LF_Init_Challenge_Group()
--g1 = { config_id = 1, gadget_id = 70360002, pos = points[1].pos, rot = points[1].rot, level = 1 }
--table.insert(gadgets, g1)
--table.insert(suites[1].gadgets, g1.config_id)
--创建路径指引
--guide_point_pool={}
--for i=1,100 do
--table.insert(gadgets, { config_id = 10000+i, gadget_id = 70350159, pos = { x = 63.257, y = 14.676, z = -27.624 }, rot = { x = 0.000, y = 0.000, z = 0.000 }, level = 1, is_use_point_array = true })
--table.insert{guide_point_pool,10000+i}
--end
t1 = { config_id = 8000001, name = "gadget_create", event = EventType.EVENT_GADGET_CREATE, source = "", condition = "", action = "action_gadget_create", trigger_count = 0 }
t2 = { config_id = 8000002, name = "select_option", event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0 }
t3 = { config_id = 8000003, name = "challenge_success", event = EventType.EVENT_SCENE_MULTISTAGE_PLAY_STAGE_END, source = "", condition = "", action = "action_EVENT_SCENE_MULTISTAGE_PLAY_STAGE_END", trigger_count = 0}
t4 = { config_id = 8000004, name = "group_load", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 }
t5 = { config_id = 8000005, name = "timer_event", event = EventType.EVENT_TIMER_EVENT, source = "route_points_delay", condition = "", action = "action_add_route_points", trigger_count = 0}
t6 = { config_id = 8000006, name = "point_arrive", event = EventType.EVENT_PLATFORM_REACH_POINT, source = "", condition = "", action = "action_REACH_POINT", trigger_count = 0 }
t7 = { config_id = 8000007, name = "end_stage_request", event = EventType.EVENT_SCENE_MULTISTAGE_PLAY_END_STAGE_REQ, source = "", condition = "", action = "action_END_STAGE", trigger_count = 0 }
t8 = { config_id = 8000008, name = "pick_card_event", event = EventType.EVENT_MECHANICUS_PICKED_CARD, source = "", condition = "", action = "action_PICK_CARD", trigger_count = 0 }
t9 = { config_id = 8000009,name = "TIMER_EVENT_DELAY", event = EventType.EVENT_TIMER_EVENT, source = "delay", condition = "", action = "action_END_DELAY", trigger_count = 0 }
t10 = { config_id = 8000010,name = "TIMER_EVENT_START_REMINDER", event = EventType.EVENT_TIMER_EVENT, source = "reminder", condition = "", action = "action_START_REMINDER", trigger_count = 0 }
t11 = { config_id = 8000011,name = "ALL_AVATAR_DIE", event = EventType.EVENT_DUNGEON_ALL_AVATAR_DIE, source = "", condition = "", action = "action_ALL_AVATAR_DIE", trigger_count = 0 }
for i,v in ipairs(suites) do
table.insert(v.triggers, t1.name)
table.insert(v.triggers, t2.name)
table.insert(v.triggers, t3.name)
table.insert(v.triggers, t4.name)
table.insert(v.triggers, t5.name)
table.insert(v.triggers, t6.name)
table.insert(v.triggers, t7.name)
table.insert(v.triggers, t8.name)
table.insert(v.triggers, t9.name)
table.insert(v.triggers, t10.name)
table.insert(v.triggers, t11.name)
end
table.insert(triggers, t1)
table.insert(triggers, t2)
table.insert(triggers, t3)
table.insert(triggers, t4)
table.insert(triggers, t5)
table.insert(triggers, t6)
table.insert(triggers, t7)
table.insert(triggers, t8)
table.insert(triggers, t9)
table.insert(triggers, t10)
table.insert(triggers, t11)
table.insert(variables, { config_id=50000001,name = "wave_ptr", value = 0})
table.insert(variables, { config_id=50000002,name = "special_challenge", value = 0})
table.insert(variables, { config_id=50000003,name = "left_monsters", value = 0})
table.insert(variables, { config_id=50000004,name = "max_escapable_monsters", value = 10})
table.insert(variables, { config_id=50000005,name = "escaped_monsters", value = 0})
table.insert(variables, { config_id=50000006,name = "route_guide_points_index", value = 1,no_refresh = true})
--怪物对地脉镇石造成额外伤害
table.insert(variables, { config_id=50000007,name = "monster_double_damage", value = 0})
--挑战逃出的怪物不超过一个
table.insert(variables, { config_id=50000008,name = "challenge_8", value = 0})
table.insert(variables, { config_id=50000009,name = "challenge_10", value = 0})
table.insert(variables, { config_id=50000010,name = "challenge_11", value = 0})
table.insert(variables, { config_id=50000011,name = "GM_Ignore_Monster_Escape", value = 0})
table.insert(variables, { config_id=50000012,name = "challenge_65", value = 0})
table.insert(variables, { config_id=50000013,name = "challenge_66", value = 0})
table.insert(variables, { config_id=50000014,name = "challenge_67", value = 0})
table.insert(variables, { config_id=50000015,name = "challenge_68", value = 0})
table.insert(variables, { config_id=50000016,name = "challenge_69", value = 0})
table.insert(variables, { config_id=50000017,name = "challenge_70", value = 0})
table.insert(variables, { config_id=50000018,name = "challenge_71", value = 0})
table.insert(variables, { config_id=50000019,name = "challenge_72", value = 0})
table.insert(variables, { config_id=50000020,name = "challenge_73", value = 0})
table.insert(variables, { config_id=50000021,name = "challenge_74", value = 0})
table.insert(variables, { config_id=50000022,name = "challenge_75", value = 0})
table.insert(variables, { config_id=50000023,name = "challenge_76", value = 0})
end
--------------------------------------
function action_ALL_AVATAR_DIE(context, evt)
local uidList=ScriptLib.GetSceneUidList(context)
local count=0
for i=1,#uidList do
if ScriptLib.IsPlayerAllAvatarDie(context, uidList[i]) then
count=count+1
end
end
if count >= (#uidList) then
ScriptLib.EndSceneMultiStagePlay(context, 999, false)
return 0
end
return 0
end
function action_END_STAGE(context, evt)
if evt.param2==Multistage.MechanicusBuild then
ScriptLib.EndSceneMultiStagePlayStage(context, 999,"build"..ScriptLib.GetGroupVariableValue(context, "wave_ptr"), true)
end
return 0
end
--翻牌子
function action_PICK_CARD(context, evt)
--诅咒效果
--逃脱的魔物不能超过一个
if evt.param2==83 then
ScriptLib.SetGroupVariableValue(context, "challenge_8", evt.param3)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 83, MechanicusChallenge.OnGoing)
end
--角色无法进行攻击持续1轮
if evt.param2==85 then
ScriptLib.SetGroupVariableValue(context, "challenge_10", evt.param3)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 85, MechanicusChallenge.OnGoing)
--ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, defs.attack_forbid_gadget, GadgetState.GearStart)
--ScriptLib.SetIsAllowUseSkill(context, 0)
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "can_use_skill", 0, true)
end
--角色的移动速度降低持续1轮
if evt.param2==86 then
ScriptLib.SetGroupVariableValue(context, "challenge_11", evt.param3)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 86, MechanicusChallenge.OnGoing)
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, defs.speed_down_gadget, GadgetState.GearStart)
end
--牌子效果
--配置功能冷却降低
if evt.param3==33 then
if trap_group~=nil then
for i=1,#trap_group do
ScriptLib.ExecuteGroupLua(context, trap_group[i], "SetColdTownDiscount", {0})
end
end
return 0
end
--配置机关所需奇术点降低
if evt.param3==34 then
if trap_group~=nil then
for i=1,#trap_group do
ScriptLib.ExecuteGroupLua(context, trap_group[i], "SetDiscount", {0})
end
end
--ScriptLib.ExecuteGroupLua(context, defs.trap_group_id, "SetDiscount", {0})
return 0
end
--立即获得250点奇术点
if evt.param3==44 then
--ScriptLib.AddMechanicusBuildingPoints(context,defs.group_id ,999, evt.uid, 50)
return 0
end
--立即回复地脉镇石5点耐久度
if evt.param3==45 then
local hp=ScriptLib.GetGroupVariableValue(context, "escaped_monsters")
hp=hp-5
if hp<0 then
hp=0
end
ScriptLib.SetGroupVariableValue(context, "escaped_monsters", hp)
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "escaped_monsters",hp, true)
return 0
end
--额外出现一架遗迹守卫
if evt.param3==65 then
ScriptLib.SetGroupVariableValue(context, "challenge_65", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "extra_monster_65", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 65, MechanicusChallenge.OnGoing)
return 0
end
--额外出现一架遗迹猎者
if evt.param3==66 then
ScriptLib.SetGroupVariableValue(context, "challenge_66", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "extra_monster_66", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 66, MechanicusChallenge.OnGoing)
return 0
end
--额外出现一架遗迹重机
if evt.param3==67 then
ScriptLib.SetGroupVariableValue(context, "challenge_67", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "extra_monster_67", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 67, MechanicusChallenge.OnGoing)
return 0
end
--额外出现丘丘岩盔王
if evt.param3==68 then
ScriptLib.SetGroupVariableValue(context, "challenge_68", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "extra_monster_68", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 68, MechanicusChallenge.OnGoing)
return 0
end
--额外出现丘丘霜盔王
if evt.param3==69 then
ScriptLib.SetGroupVariableValue(context, "challenge_69", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "extra_monster_69", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 69, MechanicusChallenge.OnGoing)
return 0
end
--额外出现奔跑的丘丘暴徒
if evt.param3==70 then
ScriptLib.SetGroupVariableValue(context, "challenge_70", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "extra_monster_70", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 70, MechanicusChallenge.OnGoing)
return 0
end
--魔物对地脉镇石造成额外1点伤害
if evt.param3==71 then
ScriptLib.SetGroupVariableValue(context, "challenge_71", 1)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 71, MechanicusChallenge.OnGoing)
ScriptLib.SetGroupVariableValue(context, "monster_double_damage", 1)
return 0
end
--所有魔物血量提升xxx
if evt.param3==72 then
ScriptLib.SetGroupVariableValue(context, "challenge_72", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "buff_monster_4112", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 72, MechanicusChallenge.OnGoing)
return 0
end
--所有魔物防御提升xxx
if evt.param3==73 then
ScriptLib.SetGroupVariableValue(context, "challenge_73", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "buff_monster_4113", {defs.group_id})
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 73, MechanicusChallenge.OnGoing)
return 0
end
--击败魔物分降低
if evt.param3==74 then
ScriptLib.SetGroupVariableValue(context, "challenge_74", 1)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 74, MechanicusChallenge.OnGoing)
return 0
end
--建造机关分变高
if evt.param3==75 then
ScriptLib.SetGroupVariableValue(context, "challenge_75", 1)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, evt.param3, 75, MechanicusChallenge.OnGoing)
return 0
end
return 0
end
function Reset_Cards_Effect(context)
--local challenge_83=ScriptLib.GetGroupVariableValue(context, "challenge_8")
local challenge_85=ScriptLib.GetGroupVariableValue(context, "challenge_10")
local challenge_86=ScriptLib.GetGroupVariableValue(context, "challenge_11")
--if challenge_83~=0 then
--ScriptLib.PrintContextLog(context, "## TD_LOG : CHALLENGE 83 CARD ID"..challenge_83)
--ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, challenge_83, 83,MechanicusChallenge.Success)
--end
if challenge_85~=0 then
ScriptLib.PrintContextLog(context, "## TD_LOG : CHALLENGE 85 CARD ID"..challenge_85)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, challenge_85, 85,MechanicusChallenge.Success)
--ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, defs.attack_forbid_gadget, GadgetState.Default)
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "can_use_skill", 1, true)
--ScriptLib.SetIsAllowUseSkill(context, 1)
end
if challenge_86~=0 then
ScriptLib.PrintContextLog(context, "## TD_LOG : CHALLENGE 86 CARD ID"..challenge_86)
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, challenge_86, 86,MechanicusChallenge.Success)
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, defs.speed_down_gadget, GadgetState.GearStop)
end
--ScriptLib.SetGroupVariableValue(context, "challenge_8", 0)
ScriptLib.SetGroupVariableValue(context, "challenge_10", 0)
ScriptLib.SetGroupVariableValue(context, "challenge_11", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_65")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 65, 65,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_65", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_66")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 66, 66,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_66", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_67")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 67, 67,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_67", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_68")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 68, 68,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_68", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_69")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 69, 69,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_69", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_70")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 70, 70,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_70", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_71")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 71, 71,MechanicusChallenge.Success)
ScriptLib.SetGroupVariableValue(context, "monster_double_damage", 0)
end
ScriptLib.SetGroupVariableValue(context, "challenge_71", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_72")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 72, 72,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_72", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_73")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 73, 73,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_73", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_74")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 74, 74,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_74", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_75")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 75, 75,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_75", 0)
return 0
end
function CreateDoors(context,wave)
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "clear_all_points",1, true)
if wave>1 then
ScriptLib.KillGroupEntity(context,{group_id=defs.group_id,gadgets=tide_group_defs[wave-1].enter})
ScriptLib.KillGroupEntity(context,{group_id=defs.group_id,gadgets=tide_group_defs[wave-1].exit})
end
for i=1,#tide_group_defs[wave].enter do
ScriptLib.CreateGadget(context, { config_id =tide_group_defs[wave].enter[i] })
end
for i=1,#tide_group_defs[wave].exit do
ScriptLib.CreateGadget(context, { config_id =tide_group_defs[wave].exit[i] })
end
for i=1,#tide_group_defs[wave].enter_id do
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "add_entrance_point",tide_group_defs[wave].enter_id[i], true)
end
for i=1,#tide_group_defs[wave].exit_id do
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "add_exit_point",tide_group_defs[wave].exit_id[i], true)
end
return 0
end
function action_group_load(context, evt)
if defs.max_escapable_monsters~= nil then
ScriptLib.SetGroupVariableValue(context, "max_escapable_monsters", defs.max_escapable_monsters)
end
ScriptLib.InitSceneMultistagePlay(context, 999, MultistagePlayType.Mechanicus, {rounds = #tide_group_defs, init_building_points = defs.init_building_points or 200},ScriptLib.GetSceneUidList(context))
CreateDoors(context,1)
ScriptLib.SetGroupVariableValue(context, "wave_ptr", 1)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "set_monster_number_req", {defs.group_id})
ScriptLib.ExecuteGroupLua(context, tide_group_defs[1].group, "set_monster_preview", {defs.group_id})
ScriptLib.SetSceneMultiStagePlayValues(context, 999, {round=ScriptLib.GetGroupVariableValue(context, "wave_ptr"),rounds=#tide_group_defs,left_monsters=ScriptLib.GetGroupVariableValue(context, "left_monsters"),max_escapable_monsters=ScriptLib.GetGroupVariableValue(context, "max_escapable_monsters"),escaped_monsters=ScriptLib.GetGroupVariableValue(context, "escaped_monsters"),stage_bonus_building_points=0}, true)
ScriptLib.StartSceneMultiStagePlayStage(context, 999, defs.build_time or 78, Multistage.MechanicusBuild,"build"..ScriptLib.GetGroupVariableValue(context, "wave_ptr"),{})
ScriptLib.ExecuteGroupLua(context, defs.gear_group_id, "Initialize_Fundations", {0})
add_route_guide_points(context)
ScriptLib.CreateGroupTimerEvent(context, defs.group_id, "reminder",5)
return 0
end
function action_START_REMINDER(context, evt)
ScriptLib.ShowReminder(context, 400025)
return 0
end
function action_add_route_points(context, evt)
add_route_guide_points(context)
ScriptLib.CreateGroupTimerEvent(context, defs.group_id, "route_points_delay", defs.route_guide_timer)
return 0
end
function add_route_guide_points(context)
local curwave=ScriptLib.GetGroupVariableValue(context, "wave_ptr")
if tide_group_defs[curwave].guide_routes ==nil then
ScriptLib.PrintContextLog(context, "## TD_LOG : Guide Routes Is Nil")
return 0
end
for i=1,#tide_group_defs[curwave].guide_routes do
--tide_group_defs[curwave].guide_routes[i]
local idx=ScriptLib.GetGroupVariableValue(context, "route_guide_points_index")
if -2==ScriptLib.CreateGadgetByConfigIdByPos(context, guide_point_pool[idx], routes_start_point[tide_group_defs[curwave].guide_routes[i]].start_point, { x = 0.000, y = 0.000, z = 0.000 }) then
ScriptLib.PrintContextLog(context, "## TD_LOG : Guide Points Not Enough")
return 0
end
ScriptLib.SetPlatformPointArray(context, guide_point_pool[idx], tide_group_defs[curwave].guide_routes[i],routes_start_point[tide_group_defs[curwave].guide_routes[i]].points, { route_type = 0 })
if idx >= #guide_point_pool then
idx=1
else
idx=idx+1
end
ScriptLib.SetGroupVariableValue(context, "route_guide_points_index", idx)
end
ScriptLib.CreateGroupTimerEvent(context, defs.group_id, "route_points_delay", defs.route_guide_timer)
return 0
end
function stop_route_guide_points(context)
ScriptLib.CancelGroupTimerEvent(context, defs.group_id, "route_points_delay")
ScriptLib.KillGroupEntity(context,{group_id=defs.group_id,gadgets=guide_point_pool})
return 0
end
function action_REACH_POINT(context,evt)
--ScriptLib.KillEntityByConfigId(context, { config_id = evt.param1 })
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, evt.param1, GadgetState.GearStart)
return 0
end
function action_gadget_create(context, evt)
if evt.param1 == 1 then
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, evt.param1, {2902})
end
return 0
end
function action_select_option(context, evt)
if evt.param1 == 1 and evt.param2 == 2902 then
--ScriptLib.ExecuteGroupLua(context, tide_group_defs[1].group, "start_tide", {defs.group_id})
ScriptLib.InitSceneMultistagePlay(context, 999, MultistagePlayType.Mechanicus, {rounds = #tide_defs, init_building_points = defs.init_building_points or 2000},ScriptLib.GetSceneUidList(context))
ScriptLib.StartSceneMultiStagePlayStage(context, 999, 30, Multistage.MechanicusBuild,"test",{})
ScriptLib.SetGroupVariableValue(context, "wave_ptr", 1)
ScriptLib.DelWorktopOption(context, evt.param2)
end
return 0
end
function del_monster_number(context, prev_context, param1, param2, param3)
local new_num=ScriptLib.GetGroupVariableValue(context, "left_monsters")
if new_num==0 then
return 0
end
new_num=new_num-1
ScriptLib.SetGroupVariableValue(context, "left_monsters", new_num)
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "left_monsters",new_num, true)
return 0
end
function set_monster_number(context, prev_context, param1, param2, param3)
ScriptLib.SetGroupVariableValue(context, "left_monsters", param1)
return 0
end
--某group结束,进下一阶段
function tide_done(context, prev_context, param1, param2, param3)
ScriptLib.EndSceneMultiStagePlayStage(context, 999,"battle"..ScriptLib.GetGroupVariableValue(context, "wave_ptr"), true)
local wave = ScriptLib.GetGroupVariableValue(context, "wave_ptr")
wave=wave+1
ScriptLib.SetGroupVariableValue(context, "wave_ptr", wave)
ScriptLib.PrintContextLog(context, "## wave = "..wave)
if wave > #tide_group_defs then
if ScriptLib.GetGroupVariableValue(context, "challenge_71")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 71, 71,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_71", 0)
if ScriptLib.GetGroupVariableValue(context, "challenge_75")~=0 then
ScriptLib.SetMechanicusChallengeState(context,defs.group_id, 999, 75, 75,MechanicusChallenge.Success)
end
ScriptLib.SetGroupVariableValue(context, "challenge_75", 0)
ScriptLib.EndSceneMultiStagePlay(context, 999, true)
ScriptLib.PrintContextLog(context, "## TD_LOG : All Wave Done")
--ScriptLib.CauseDungeonFail(context)
return 0
end
ScriptLib.ExecuteGroupLua(context, tide_group_defs[wave].group, "set_monster_preview", {defs.group_id})
ScriptLib.CreateGroupTimerEvent(context, defs.group_id, "delay", 3)
Reset_Cards_Effect(context)
--ScriptLib.StartSceneMultiStagePlayStage(context, 999, 30, Multistage.MechanicusFlipCard,"card"..ScriptLib.GetGroupVariableValue(context, "wave_ptr"),{})
return 0
end
function action_END_DELAY(context, evt)
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "building_stage_seconds",defs.build_time or 78, true)
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "round",ScriptLib.GetGroupVariableValue(context, "wave_ptr"), true)
ScriptLib.StartSceneMultiStagePlayStage(context, 999, 30, Multistage.MechanicusFlipCard,"card"..ScriptLib.GetGroupVariableValue(context, "wave_ptr"),{})
CreateDoors(context,ScriptLib.GetGroupVariableValue(context, "wave_ptr"))
return 0
end
--怪物到达终点涨分
function monster_escaped(context, prev_context, param1, param2, param3)
if ScriptLib.GetGroupVariableValue(context, "GM_Ignore_Monster_Escape") ~=0 then
return 0
end
local max_escapable_monsters=ScriptLib.GetGroupVariableValue(context, "max_escapable_monsters")
local escaped_monsters=ScriptLib.GetGroupVariableValue(context, "escaped_monsters")
if ScriptLib.GetGroupVariableValue(context, "monster_double_damage") ==0 then
escaped_monsters=escaped_monsters+1
elseif ScriptLib.GetGroupVariableValue(context, "monster_double_damage") ==1 then
escaped_monsters=escaped_monsters+2
end
ScriptLib.SetSceneMultiStagePlayValue(context, 999, "escaped_monsters",escaped_monsters, true)
if ScriptLib.GetGroupVariableValue(context, "challenge_8") ~=0 then
ScriptLib.EndSceneMultiStagePlay(context, 999, false)
--ScriptLib.CauseDungeonFail(context)
return 0
end
if escaped_monsters>=max_escapable_monsters then
ScriptLib.EndSceneMultiStagePlay(context, 999, false)
--ScriptLib.CauseDungeonFail(context)
return 0
end
ScriptLib.SetGroupVariableValue(context, "escaped_monsters", escaped_monsters)
return 0
end
function action_EVENT_SCENE_MULTISTAGE_PLAY_STAGE_END(context, evt)
if evt.param2==Multistage.MechanicusBuild then
stop_route_guide_points(context)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "start_tide", {defs.group_id})
--ScriptLib.SetSceneMultiStagePlayValues(context, 999, {round=ScriptLib.GetGroupVariableValue(context, "wave_ptr"),rounds=#tide_group_defs,left_monsters=ScriptLib.GetGroupVariableValue(context, "left_monsters"),max_escapable_monsters=ScriptLib.GetGroupVariableValue(context, "max_escapable_monsters"),escaped_monsters=ScriptLib.GetGroupVariableValue(context, "escaped_monsters"),stage_bonus_building_points=0}, true)
ScriptLib.StartSceneMultiStagePlayStage(context, 999, 0, Multistage.MechanicusKill,"battle"..ScriptLib.GetGroupVariableValue(context, "wave_ptr"),{})
end
if evt.param2==Multistage.MechanicusFlipCard then
add_route_guide_points(context)
ScriptLib.ExecuteGroupLua(context, tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group, "set_monster_number_req", {defs.group_id})
ScriptLib.SetSceneMultiStagePlayValues(context, 999, {round=ScriptLib.GetGroupVariableValue(context, "wave_ptr"),rounds=#tide_group_defs,left_monsters=ScriptLib.GetGroupVariableValue(context, "left_monsters"),max_escapable_monsters=ScriptLib.GetGroupVariableValue(context, "max_escapable_monsters"),escaped_monsters=ScriptLib.GetGroupVariableValue(context, "escaped_monsters"),stage_bonus_building_points=0}, true)
ScriptLib.StartSceneMultiStagePlayStage(context, 999, defs.build_time or 78, Multistage.MechanicusBuild,"build"..ScriptLib.GetGroupVariableValue(context, "wave_ptr"),{})
end
return 0
end
--tide_group_defs[ScriptLib.GetGroupVariableValue(context, "wave_ptr")].group
LF_Init_Challenge_Group()