mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-28 09:05:26 +00:00
196 lines
7.6 KiB
Lua
196 lines
7.6 KiB
Lua
--[[
|
||
local defs = {
|
||
timer_region = 1,
|
||
challenge_region = 2,
|
||
monster_hilichurl = 3,
|
||
exist_hour = {0,6},
|
||
}
|
||
--]]
|
||
|
||
local Tri = {
|
||
[1] = { name = "enter_region", config_id = 8000001, event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", trigger_count = 0, forbid_guest = false },
|
||
[2] = { name = "leave_region", config_id = 8000002, event = EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "action_leave_region", trigger_count = 0, forbid_guest = false },
|
||
[3] = { name = "hilichurl_die", config_id = 8000003, event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_hilichurl_die", trigger_count = 0, tag = "950" },
|
||
[4] = { name = "time_axis_pass", config_id = 8000004, event = EventType.EVENT_TIME_AXIS_PASS, source = "Loop", condition = "", action = "action_time_axis_pass", trigger_count = 0 },
|
||
[5] = { name = "variable_change", config_id = 8000005, event = EventType.EVENT_VARIABLE_CHANGE, source = "hili_die", condition = "", action = "action_variable_change", trigger_count = 0 },
|
||
[6] = { name = "set_game_time", config_id = 8000006, event = EventType.EVENT_SET_GAME_TIME, source = "", condition = "", action = "action_set_game_time", trigger_count = 0 },
|
||
[7] = { name = "group_load", config_id = 8000007, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
|
||
[8] = { name = "group_will_unload", config_id = 8000008, event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_group_will_unload", trigger_count = 0},
|
||
[9] = { name = "hp_change", config_id = 8000009, event = EventType.EVENT_SPECIFIC_MONSTER_HP_CHANGE, source = tostring(defs.monster_hilichurl), condition = "", action = "action_hp_change", trigger_count = 0 },
|
||
--[10]= { name = "var_print", config_id = 8000010, event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "", action = "action_var_print", trigger_count = 0 }
|
||
}
|
||
|
||
local Var = {
|
||
[1] = { config_id=50000001,name = "hili_die", value = 0, no_refresh = false }
|
||
}
|
||
|
||
|
||
function Initialize()
|
||
for k,v in pairs(Tri) do
|
||
table.insert(triggers, v)
|
||
table.insert(suites[1].triggers, v.name)
|
||
end
|
||
table.insert(variables, Var[1])
|
||
end
|
||
---------------------------------
|
||
function action_enter_region(context, evt)
|
||
if evt.param1 == defs.challenge_region then
|
||
--做一个challenge唯一的保护
|
||
if ScriptLib.GetGroupTempValue(context, "in_challenge", {}) == 0 then
|
||
local ret = ScriptLib.ActiveChallenge(context, 234, 234, 1, 950, 1, 0)
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : hili challenge ret = "..ret)
|
||
ScriptLib.SetGroupTempValue(context, "in_challenge", 1, {})
|
||
end
|
||
elseif evt.param1 == defs.timer_region then
|
||
ScriptLib.InitTimeAxis(context, "Loop", {5}, true)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_leave_region(context, evt)
|
||
if evt.param1 == defs.challenge_region then
|
||
if ScriptLib.GetRegionEntityCount(context, { region_eid = evt.source_eid, entity_type = EntityType.AVATAR }) == 0 then
|
||
ScriptLib.SetGroupTempValue(context, "in_challenge", 0, {})
|
||
ScriptLib.StopChallenge(context, 234, 0)
|
||
end
|
||
elseif evt.param1 == defs.timer_region then
|
||
ScriptLib.EndTimeAxis(context, "Loop")
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_hilichurl_die(context, evt)
|
||
if evt.param1 ~= defs.monster_hilichurl then
|
||
return -1
|
||
end
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : boss_die_type = "..evt.param2)
|
||
--仅大伟丘正常死亡才计数
|
||
if evt.param2 == 0 then
|
||
ScriptLib.SetGroupTempValue(context, "in_challenge", 0, {})
|
||
local ret = ScriptLib.ChangeGroupVariableValue(context, "hili_die", 1)
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : die_count_result = "..ret)
|
||
ScriptLib.RemoveExtraGroupSuite(context, 0, 2)
|
||
ScriptLib.RemoveExtraGroupSuite(context, 0, 3)
|
||
return 0
|
||
elseif evt.param2 == 2 then
|
||
--大伟丘逃跑的处理
|
||
ScriptLib.SetGroupTempValue(context, "Exist", 0, {})
|
||
ScriptLib.SetGroupTempValue(context, "in_challenge", 0, {})
|
||
ScriptLib.StopChallenge(context, 234, 0)
|
||
ScriptLib.RemoveExtraGroupSuite(context, 0, 2)
|
||
ScriptLib.RemoveExtraGroupSuite(context, 0, 3)
|
||
end
|
||
return -1
|
||
end
|
||
|
||
function action_time_axis_pass(context, evt)
|
||
local time = ScriptLib.GetGameHour(context)
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : game hour = "..time)
|
||
LF_Handle_Monster_Hilichurl(context)
|
||
return 0
|
||
end
|
||
|
||
--通过变量通知挑战是否完成
|
||
function action_variable_change(context, evt)
|
||
if evt.param1 == evt.param2 + 1 then
|
||
ScriptLib.FinishFindHilichurlLevel(context)
|
||
ScriptLib.EndTimeAxis(context, "Loop")
|
||
return 0
|
||
end
|
||
return -1
|
||
end
|
||
|
||
--调时间后立即做一次判定
|
||
function action_set_game_time(context, evt)
|
||
LF_Handle_Monster_Hilichurl(context)
|
||
return 0
|
||
end
|
||
|
||
function action_group_load(context, evt)
|
||
--使用unload做清理,暂时不用load
|
||
return 0
|
||
end
|
||
|
||
function action_group_will_unload(context ,evt)
|
||
ScriptLib.RemoveEntityByConfigId(context, 0, EntityType.MONSTER, defs.monster_hilichurl)
|
||
ScriptLib.RemoveExtraGroupSuite(context, 0, 2)
|
||
ScriptLib.RemoveExtraGroupSuite(context, 0, 3)
|
||
ScriptLib.EndTimeAxis(context, "Loop")
|
||
return 0
|
||
end
|
||
|
||
function action_hp_change(context, evt)
|
||
if evt.param3 == 0 then
|
||
return -1
|
||
elseif evt.param3 <= 50 then
|
||
if ScriptLib.GetGroupTempValue(context, "hp_50", {}) == 1 then
|
||
return -1
|
||
end
|
||
ScriptLib.ShowReminder(context, 1110236)
|
||
ScriptLib.AddExtraGroupSuite(context, 0, 3)
|
||
ScriptLib.SetGroupTempValue(context, "hp_50", 1, {})
|
||
elseif evt.param3 <= 90 then
|
||
if ScriptLib.GetGroupTempValue(context, "hp_90", {}) == 1 then
|
||
return -1
|
||
end
|
||
ScriptLib.ShowReminder(context, 1110236)
|
||
ScriptLib.AddExtraGroupSuite(context, 0, 2)
|
||
ScriptLib.SetGroupTempValue(context, "hp_90", 1, {})
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_var_print(context, evt)
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : var_change : "..evt.source_name.." "..evt.param2.." -> "..evt.param1)
|
||
return 0
|
||
end
|
||
----------------------------------------------
|
||
function LF_Handle_Monster_Hilichurl(context)
|
||
local time = ScriptLib.GetGameHour(context)
|
||
if defs.exist_hour[2] == 24 then
|
||
if time == 0 then
|
||
time = 24
|
||
end
|
||
end
|
||
--先校验时间符合区间
|
||
if time < defs.exist_hour[1] then
|
||
LF_Try_Remove_Hilichurl(context)
|
||
return -1
|
||
end
|
||
--需要处理超出时间是否强制脱战
|
||
if time >= defs.exist_hour[2] then
|
||
LF_Try_Remove_Hilichurl(context)
|
||
return -1
|
||
end
|
||
LF_Try_Summon_Hilichurl(context)
|
||
end
|
||
|
||
function LF_Try_Remove_Hilichurl(context)
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : Try_Remove_Hilichurl")
|
||
--如果怪不存在则简化处理
|
||
if 1 ~= ScriptLib.GetGroupTempValue(context, "Exist", {}) then
|
||
return 0
|
||
end
|
||
if 1 ~= ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_hilichurl, "_IS_IN_BATTLE") then
|
||
local ret = ScriptLib.RemoveEntityByConfigId(context, 0, EntityType.MONSTER, defs.monster_hilichurl)
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : Remove Monster Result = "..ret)
|
||
ScriptLib.SetGroupTempValue(context, "Exist", 0, {})
|
||
end
|
||
end
|
||
|
||
function LF_Try_Summon_Hilichurl(context)
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : Try_Summon_Hilichurl")
|
||
if 1 == ScriptLib.GetGroupTempValue(context, "Exist", {}) then
|
||
return 0
|
||
end
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : Create Monster")
|
||
local ret = ScriptLib.CreateMonster(context, {config_id = defs.monster_hilichurl, delay_time = 0})
|
||
ScriptLib.PrintContextLog(context, "## Hilichurl : Create Monster Result = "..ret)
|
||
if ret == 0 then
|
||
ScriptLib.SetGroupTempValue(context, "Exist", 1, {})
|
||
ScriptLib.SetGroupTempValue(context, "hp_50", 0, {})
|
||
ScriptLib.SetGroupTempValue(context, "hp_90", 0, {})
|
||
end
|
||
end
|
||
----------------------------------------------
|
||
Initialize() |