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_0/Activity_WorldBoss.lua
2024-01-16 22:53:55 +08:00

129 lines
4.0 KiB
Lua

--[[======================================
|| filename: Activity_WorldBoss
|| owner: chao.cui
|| description: 大世界BOSS
|| LogName: TD
|| Protection: [Protection]
=======================================]]
local extraTriggers =
{
--{ config_id = 40000001, name = "tri_monster_die", event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "condition_EVENT_ANY_MONSTER_DIE", action = "action_EVENT_ANY_MONSTER_DIE", trigger_count = 0},
{ config_id = 40000002, name = "tri_enter_region", event = EventType.EVENT_ENTER_REGION, source = "", condition = "condition_EVENT_ENTER_REGION", action = "action_EVENT_ENTER_REGION", forbid_guest = false, trigger_count = 0},
{ config_id = 40000003, name = "tri_leave_region", event = EventType.EVENT_LEAVE_REGION, source = "", condition = "condition_EVENT_LEAVE_REGION", action = "action_EVENT_LEAVE_REGION", forbid_guest = false, trigger_count = 0},
}
------ conditions & actions ------
-- function condition_EVENT_ANY_MONSTER_DIE(context, evt)
-- if ScriptLib.GetGroupMonsterCountByGroupId(context, defs.group_id) ~= 0 then
-- return false
-- end
-- return true
-- end
-- function action_EVENT_ANY_MONSTER_DIE(context, evt)
-- if 0 ~= ScriptLib.CreateGadget(context, { config_id = defs.chest_config_id }) then
-- ScriptLib.PrintContextLog(context, "生成宝箱失败")
-- return -1
-- end
-- return 0
-- end
function condition_EVENT_ENTER_REGION(context, evt)
if evt.param1 ~= defs.small_region_id then return false end
return true
end
function action_EVENT_ENTER_REGION(context, evt)
ScriptLib.PrintContextLog(context, "进入内圈")
ScriptLib.SetPlayerEyePoint(context, defs.small_region_id, defs.big_region_id)
return 0
end
-- 触发条件
function condition_EVENT_LEAVE_REGION(context, evt)
if evt.param1 ~= defs.big_region_id then return false end
return true
end
-- 触发操作
function action_EVENT_LEAVE_REGION(context, evt)
ScriptLib.PrintContextLog(context, "离开外圈")
if context.uid ~= 0 then
ScriptLib.ClearPlayerEyePoint(context, defs.small_region_id)
end
return 0
end
------ SLC ------
-- charge_type: 0-负电荷 1-正电荷
function SLC_Activity_Boss_Watcher_Charge(context, charge_type)
ScriptLib.PrintContextLog(context, "电荷类型:"..charge_type)
local uidlist = ScriptLib.GetSceneUidList(context)
for i = 1, #uidlist do
-- 迁移3.3的接口,替换原计算逻辑 by siyu.li
local r = defs.watcher_region_id or defs.big_region_id
if ScriptLib.IsInRegion(context, uidlist[i], r) then
if charge_type == 1 then
-- 正电荷
ScriptLib.AddExhibitionAccumulableData(context, uidlist[i], "Activity_GravenBOSS_Positive_Charge", 1)
end
if charge_type == 0 then
-- 负电荷
ScriptLib.AddExhibitionAccumulableData(context, uidlist[i], "Activity_GravenBOSS_Negative_Charge", 1)
end
end
end
return 0
end
------ LF -------
function LF_Avatar_Is_In_Region(context, uid, region_id)
local avatar_id = ScriptLib.GetAvatarEntityIdByUid(context, uid)
local pos1 = ScriptLib.GetPosByEntityId(context, avatar_id)
local region
for _, _region in pairs(regions) do
if _region.config_id == region_id then
region = _region
break
end
end
local X = pos1.x - region.pos.x
local Y = pos1.y - region.pos.y
local Z = pos1.z - region.pos.z
if region.shape == RegionShape.SPHERE then
if math.sqrt(X*X+Y*Y+Z*Z) <= region.radius then
return true
else
return false
end
elseif region.shape == RegionShape.CUBIC then
if math.abs(X) > region.size.x/2 or math.abs(Y) > region.size.y/2 or math.abs(Z) > region.size.z/2 then
return false
else
return true
end
end
end
function LF_Initialize_Level()
for _k, _tri in pairs(extraTriggers) do
table.insert(triggers, _tri)
table.insert(suites[1].triggers, _tri.name)
end
return 0
end
LF_Initialize_Level()