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

672 lines
28 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.
local play={
group_bigworld = 133002418,
group_quest = 133002415,
PlayType = 3,
PlayId = 3
}
local extraTriggers={
{config_id = 8000001,name = "Any_IceSquare_Die", event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "condition_any_gadget_die", action = "action_any_gadget_die", trigger_count = 0 },
{config_id = 8000002,name = "Any_Specialice_Die", event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "condition_any_specialice_die", action = "action_any_specialice_die", trigger_count = 0 },
{config_id = 8000003,name = "Monster_Die_Before_Leave_Scene", event = EventType.EVENT_MONSTER_DIE_BEFORE_LEAVE_SCENE, source = "", condition = "condition_monster_die_before_leave_scene", action = "action_monster_die_before_leave_scene", trigger_count = 0 },
{ config_id = 8000004,name = "Battle_State", event = EventType.EVENT_SCENE_MP_PLAY_BATTLE_STATE, source = "", condition = "condition_battle_state", action = "action_battle_state", trigger_count = 0 },
{ config_id = 8000005,name = "Battle_Result", event = EventType.EVENT_SCENE_MP_PLAY_BATTLE_RESULT, source = "", condition = "", action = "action_battle_result", trigger_count = 0 },
{ config_id = 8000006,name = "TIMER_EVENT_TRANSFORM", event = EventType.EVENT_TIMER_EVENT, source = "transform", condition = "", action = "action_TIMER_EVENT_TRANSFORM", trigger_count = 0 },
{config_id = 8000007,name = "First_Monster_Die", event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "condition_first_monster_die", action = "action_first_monster_die", trigger_count = 1 },
{config_id = 8000008,name = "Ice_Square_Create", event = EventType.EVENT_GADGET_CREATE, source = "", condition = "condition_ice_square_create", action = "action_ice_square_create", trigger_count = 0 },
{ config_id = 8000009,name = "LEAVE_REGION", event = EventType.EVENT_LEAVE_REGION, source = "", condition = "condition_EVENT_LEAVE_REGION", action = "action_EVENT_LEAVE_REGION", forbid_guest = false, trigger_count = 0 },
{config_id = 8000010,name = "Any_Player_Die", event = EventType.EVENT_SCENE_MP_PLAY_ALL_AVATAR_DIE, source = "", condition = "condition_EVENT_AVATAR_DIE", action = "action_EVENT_LEAVE_REGION", trigger_count = 0 },
{config_id = 8000011,name = "Reset_Gadget_State", event = EventType.EVENT_GROUP_REFRESH, source = "", condition = "condition_Reset_Gadget_State", action = "action_Reset_Gadget_State", trigger_count = 0 },
{config_id = 8000012,name = "Gadget_Create_Check", event = EventType.EVENT_GADGET_CREATE, source = "", condition = "", action = "action_Gadget_Create_Log", trigger_count = 0 },
{config_id = 8000013,name = "Gadget_Die_Check", event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "action_Gadget_Die_Log", trigger_count = 0 },
{config_id = 8000014,name = "Gadget_State_Change", event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_Gadget_State_Log", trigger_count = 0 },
{config_id = 8000015,name = "MP_PLAY_BATTLE_INTERRUPT", event = EventType.EVENT_SCENE_MP_PLAY_BATTLE_INTERRUPT, source = "", condition = "", action = "action_SCENE_MP_PLAY_BATTLE_INTERRUPT", trigger_count = 0 },
{ config_id = 8000016,name = "TIMER_EVENT_PHASECHECKONE", event = EventType.EVENT_TIMER_EVENT, source = "phaseonecheck", condition = "", action = "action_PHASE_ONE_CHECK", trigger_count = 0 },
{ config_id = 8000017,name = "TIMER_EVENT_PHASECHECKTWO", event = EventType.EVENT_TIMER_EVENT, source = "phasetwocheck", condition = "", action = "action_PHASE_TWO_CHECK", trigger_count = 0 },
{ config_id = 8000019,name = "LEAVE_REGION2", event = EventType.EVENT_LEAVE_REGION, source = "", condition = "condition_EVENT_LEAVE_REGION2", action = "action_EVENT_LEAVE_REGION2", forbid_guest = false, trigger_count = 0 },
{ config_id = 8000020,name = "ENTER_REGION", event = EventType.EVENT_ENTER_REGION, source = "", condition = "condition_EVENT_ENTER_REGION", action = "action_EVENT_ENTER_REGION", forbid_guest = false, trigger_count = 0 },
}
local repairTriggers={
{ config_id = 8000018,name = "Boss_Refresh", event = EventType.EVENT_ANY_MONSTER_LIVE, source = "", condition = "", action = "action_BOSS_REFRESH", trigger_count = 0 },
}
function LF_Initialize_Group(triggers, suites)
for i=1,#extraTriggers do
table.insert(triggers, extraTriggers[i])
table.insert(suites[init_config.suite].triggers,extraTriggers[i].name)
end
if defs.groupId==133002415 then
for i=1,#extraTriggers do
--table.insert(triggers, extraTriggers[i])
table.insert(suites[1].triggers,extraTriggers[i].name)
end
end
if defs.groupId==133002418 then
table.insert(variables, { config_id=50000001,name = "phaseOneIceRevert", value = 0})
for i=1,#repairTriggers do
table.insert(triggers, repairTriggers[i])
--table.insert(triggers, extraTriggers[i])
table.insert(suites[2].triggers,repairTriggers[i].name)
end
end
end
function action_BOSS_REFRESH(context, evt)
if evt.param1==418001 then
ScriptLib.FailScenePlayBattle(context, defs.groupId)
end
return 0
end
function action_PHASE_ONE_CHECK(context, evt)
if ScriptLib.GetGroupVariableValue(context, "phaseonecheckvalue") ~= 1 then
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {defs.bossId}, "_SERVER_REGISVINE_ICE_ACTIVITY_FLAG_PHASE01", 1)
ScriptLib.CreateGroupTimerEvent(context, defs.groupId, "phaseonecheck", 1)
end
return 0
end
function action_PHASE_TWO_CHECK(context, evt)
if ScriptLib.GetGroupVariableValue(context, "phasetwocheckvalue") ~= 1 then
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {defs.bossId}, "_SERVER_REGISVINE_ICE_ACTIVITY_FLAG_PHASE02", 1)
ScriptLib.CreateGroupTimerEvent(context, defs.groupId, "phasetwocheck", 1)
end
return 0
end
function action_SCENE_MP_PLAY_BATTLE_INTERRUPT(context, evt)
ScriptLib.PrintContextLog(context, "MPPLAY INTERRUPT"..evt.param1.."->"..evt.param2.."->"..evt.param3)
ScriptLib.SetGadgetStateByConfigId(context,defs.iceStormId,GadgetState.GearStop)
if defs.inteeGadget ~= nil then
ScriptLib.SetGadgetStateByConfigId(context,defs.inteeGadget,GadgetState.Default)
end
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.iceStormId)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice1)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice2)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice3)
if defs.inteeGadget ~= nil then
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.inteeGadget)
end
ScriptLib.RefreshGroup(context,{group_id=defs.groupId,suite=1})
return 0
end
function action_Gadget_Create_Log(context, evt)
ScriptLib.PrintContextLog(context, "Gadget Created->"..evt.param1)
return 0
end
function action_Gadget_Die_Log(context, evt)
ScriptLib.PrintContextLog(context, "Gadget Dead->"..evt.param1)
return 0
end
function action_Gadget_State_Log(context, evt)
ScriptLib.PrintContextLog(context, "Gadget State Changed->"..evt.param2.." From "..evt.param3.." To "..evt.param1)
return 0
end
function condition_Reset_Gadget_State(context, evt)
if evt.param1 == 1 then
return true
end
return false
end
function action_Reset_Gadget_State(context, evt)
ScriptLib.CancelGroupTimerEvent(context, defs.groupId, "phaseonecheck")
ScriptLib.CancelGroupTimerEvent(context, defs.groupId, "phasetwocheck")
if defs.inteeGadget ~= nil then
ScriptLib.CreateGadget(context, { config_id = defs.inteeGadget })
end
ScriptLib.SetGadgetStateByConfigId(context,defs.specialice1,GadgetState.Default)
ScriptLib.SetGadgetStateByConfigId(context,defs.specialice2,GadgetState.Default)
ScriptLib.SetGadgetStateByConfigId(context,defs.specialice3,GadgetState.Default)
if defs.inteeGadget ~= nil then
ScriptLib.SetGadgetStateByConfigId(context,defs.inteeGadget,GadgetState.Default)
end
return 0
end
function condition_EVENT_LEAVE_REGION(context, evt)
if ScriptLib.GetGroupVariableValue(context, "isStarted") ~= 1 then
return false
end
if evt.param1 ~= defs.region then
return false
end
uidList=ScriptLib.GetSceneUidList(context)
local count=0
for i=1,#uidList do
if ScriptLib.IsPlayerAllAvatarDie(context, uidList[i]) or (calculateXZDistanceOfTwoEntity(context,ScriptLib.GetAvatarEntityIdByUid(context, uidList[i]),ScriptLib.GetEntityIdByConfigId(context, defs.bossId))>=25) then
count=count+1
end
end
if count >= (#uidList) then
return true
end
return false
end
function condition_EVENT_LEAVE_REGION2(context, evt)
if evt.param1 ~= 418036 then
return false
end
return true
end
function action_EVENT_LEAVE_REGION2(context, evt)
if context.uid~=0 then
ScriptLib.ClearPlayerEyePoint(context, 418067)
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {1})
end
return 0
end
function condition_EVENT_ENTER_REGION(context, evt)
if evt.param1 ~= 418067 then
return false
end
return true
end
function action_EVENT_ENTER_REGION(context, evt)
if context.uid~=0 then
local small_region={}
local big_region={}
for i=1,#regions do
if regions[i].config_id==418067 then
small_region=regions[i]
end
if regions[i].config_id==418036 then
big_region=regions[i]
end
end
TrySetPlayerEyePoint(context, small_region, big_region, 1, {0})
end
return 0
end
function condition_EVENT_AVATAR_DIE(context, evt)
if ScriptLib.GetGroupVariableValue(context, "isStarted") ~= 1 then
return false
end
uidList=ScriptLib.GetSceneUidList(context)
local count=0
for i=1,#uidList do
if ScriptLib.IsPlayerAllAvatarDie(context, uidList[i]) or (calculateXZDistanceOfTwoEntity(context,ScriptLib.GetAvatarEntityIdByUid(context, uidList[i]),ScriptLib.GetEntityIdByConfigId(context, defs.bossId))>=25) then
count=count+1
end
end
if count >= (#uidList) then
return true
end
return false
end
function calculateXZDistanceOfTwoEntity(context,entity1,entity2)
local pos1=ScriptLib.GetPosByEntityId(context, entity1)
local pos2=ScriptLib.GetPosByEntityId(context, entity2)
local distance=math.sqrt((pos1.x-pos2.x)*(pos1.x-pos2.x)+(pos1.z-pos2.z)*(pos1.z-pos2.z))
return distance
end
function action_EVENT_LEAVE_REGION(context, evt)
ScriptLib.FailScenePlayBattle(context, defs.groupId)
return 0
end
function condition_ice_square_create(context, evt)
if evt.param1 == defs.iceSquareId then
return true
end
return false
end
function action_ice_square_create(context, evt)
ScriptLib.ShowReminderRadius(context, 400017, {x=1080,y=285,z=-439}, 25)
return 0
end
function condition_first_monster_die(context, evt)
if defs.groupId == 133002418 then
return true
end
return false
end
function action_first_monster_die(context, evt)
ScriptLib.ShowReminderRadius(context, 400016, {x=1080,y=285,z=-439}, 25)
return 0
end
function action_TIMER_EVENT_TRANSFORM(context, evt)
ScriptLib.TransPlayerToPos(context, {uid_list =ScriptLib.GetSceneUidList(context), pos = {x=1121, y=286, z=-425}, radius = 2, rot = {x=0, y=180, z=0},is_skip_ui=true})
return 0
end
function action_battle_result(context, evt)
if evt.param3 == 1 then
LF_Battle_Win(context, evt)
elseif evt.param3 == 0 then
LF_Battle_Lose(context, evt)
--elseif evt.param3 == 2 then
--LF_Battle_Stop(context, evt)
end
return 0
end
function condition_battle_state(context, evt)
if defs.groupId == play.group_bigworld then
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG: battle_state : param1->"..evt.param1.." | param2->"..evt.param2.." | param3->"..evt.param3)
end
if evt.param1 == play.PlayType and evt.param2 == play.PlayId then
return true
end
return false
end
function action_battle_state(context, evt)
--BATTLE_PREPARE
if evt.param3 == 2 then
LF_Battle_Prepare(context, evt)
--BATTLE_READY
elseif evt.param3 == 3 then
LF_Battle_Ready(context, evt)
--BATTLE_PRESTART
elseif evt.param3 == 4 then
LF_Battle_Prestart(context, evt)
--BATTLE_START
elseif evt.param3 == 5 then
LF_Battle_Start(context, evt)
--[[--BATTLE_STOP
elseif evt.param3 == 6 then
LF_Battle_Stop(context, evt)--]]
elseif defs.groupId == play.group_bigworld then
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_ERR : Invalid Battle State")
return -1
end
return 0
end
--检测急冻树死亡
function condition_monster_die_before_leave_scene(context, evt)
if evt.param1 == defs.bossId then
return true
end
return false
end
function action_monster_die_before_leave_scene(context, evt)
local uid=context.uid
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : action_monster_die_before_leave_scene uid:"..uid)
if uid~=0 and uid ~=nil then
ScriptLib.SetScenePlayBattleUidValue(context, 0, uid, "AVATAR_BOSS_KILL", 1)
end
--增加玩法总进度
ScriptLib.AddScenePlayBattleProgress(context, defs.groupId, 301)
return 0
end
function condition_any_gadget_die(context, evt)
if evt.param1 ~= defs.iceSquareId then
return false
end
return true
end
--冰立方死亡创建屏障
function action_any_gadget_die(context, evt)
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : AVATAR_ICESHIELD_KILL UID:"..context.uid)
ScriptLib.SetGroupVariableValue(context, "iceCubeAlive", 0)
if ScriptLib.GetGroupVariableValue(context, "notCreateIceShieldActivated") ~= 1 then
if context.uid ~= 0 then
local uid = context.uid
local oldCount = ScriptLib.GetScenePlayBattleUidValue(context, 0, uid, "AVATAR_ICESHIELD_KILL_COUNT")
ScriptLib.SetScenePlayBattleUidValue(context, 0, uid, "AVATAR_ICESHIELD_KILL_COUNT", oldCount+1)
end
ScriptLib.KillEntityByConfigId(context, { config_id = defs.targetId })
local idx=ScriptLib.GetGroupVariableValue(context, "positionIdx")
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.iceShieldId, gadgets[idx].pos,gadgets[idx].rot)
end
ScriptLib.SetGroupVariableValue(context, "notCreateIceShieldActivated", 0)
return 0
end
--特殊冰死亡
function condition_any_specialice_die(context, evt)
if evt.param1 == defs.specialice1 then
return true
end
if evt.param1 == defs.specialice2 then
return true
end
if evt.param1 == defs.specialice3 then
return true
end
return false
end
--特殊冰死亡加uidvalue
function action_any_specialice_die(context, evt)
local configId = evt.param1
local uidValue = configId.."_Hit_Uid"
local uid = ScriptLib.GetGroupVariableValue(context, uidValue)
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : action_any_specialice_die uid:"..uid)
if uid ~= 0 and uid ~=nil then
local oldCount = ScriptLib.GetScenePlayBattleUidValue(context, 0, uid, "AVATAR_SPECIALICE_KILL_COUNT")
ScriptLib.SetScenePlayBattleUidValue(context, 0, uid, "AVATAR_SPECIALICE_KILL_COUNT", oldCount+1)
end
if ScriptLib.GetGroupVariableValue(context, "phaseOneIceRevert") ~= 1 then
ScriptLib.CreateGadget(context, { config_id = evt.param1 })
end
return 0
end
--------------------------------------------
--------------------------------------------
function LF_Battle_Prepare(context, evt)
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : LF_Battle_Prepare")
--ScriptLib.PrintLog("================VERSION 76=========================")
--关闭大陨石交互
--ScriptLib.SetGadgetEnableInteract(context, defs.groupId, defs.inteeGadget, false)
if defs.inteeGadget ~= nil then
ScriptLib.KillGroupEntity(context,{group_id=defs.groupId,gadgets={defs.inteeGadget}})
end
--ScriptLib.SetGroupGadgetStateByConfigId(context, defs.groupId, defs.inteeGadget, GadgetState.GearStart)
return 0
end
function LF_Battle_Ready(context, evt)
--ScriptLib.PrintContextLog(context, "## ASTER_LOG : LF_Battle_Ready")
--随机难度
--[[
local D_str = LF_Random_Play_Difficulty(context, evt)
local D_num = 0
if D_str == "normal" then
D_num = 1
elseif D_str == "hard" then
D_num = 2
elseif D_str == "nightmare" then
D_num = 3
elseif D_str == "easy" then
D_num = 4
end
--启用playEntity
LF_Attach_Ability(context, evt, D_num, D_str)
]]--
--开启主玩法
ScriptLib.PrestartScenePlayBattle(context, {duration = 600,start_cd = 5,progress_stage = {0,100,200,300}, group_id = defs.groupId, mode = 200})
ScriptLib.CreateGadget(context, { config_id = 418020 })
ScriptLib.CreateGadget(context, { config_id = 418026 })
ScriptLib.CreateGadget(context, { config_id = 418062 })
--写入难度
--LF_Set_Battle_Difficulty(context, evt, D_num)
--生成Buff序列
--LF_Init_Uid_Op_Buff(context, evt)--]]
return 0
end
function LF_Battle_Prestart(context, evt)
--3秒倒计时提醒
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : LF_Battle_Prestart")
ScriptLib.SetGroupVariableValue(context, "phaseOneIceRevert", 1)
--[[--随机难度
LF_Random_Play_Difficulty(context, evt)
--生成Buff序列
LF_Init_Uid_Op_Buff(context, evt)--]]
return 0
end
function LF_Battle_Start(context, evt)
ScriptLib.SetGroupVariableValue(context, "isStarted", 1)
--正式开始
if ScriptLib.GetScenePlayBattleType(context, defs.groupId) ==1 then
ScriptLib.AutoMonsterTide(context, 1, defs.groupId, defs.monsterTideOne, 999, 3, 3)
elseif ScriptLib.GetScenePlayBattleType(context, defs.groupId) ==2 then
ScriptLib.AutoMonsterTide(context, 2, defs.groupId, defs.monsterTideTwo, 999, 3, 3)
end
--ScriptLib.AutoMonsterTide(context, 1, defs.groupId, {defs.monsterOne,defs.monsterTwo}, 999, 1, 1)
ScriptLib.SetGadgetStateByConfigId(context,defs.specialice1,GadgetState.GearStart)
ScriptLib.SetGadgetStateByConfigId(context,defs.specialice2,GadgetState.GearStart)
ScriptLib.SetGadgetStateByConfigId(context,defs.specialice3,GadgetState.GearStart)
ScriptLib.AddExtraGroupSuite(context, defs.groupId, 2)
ScriptLib.SetGroupVariableValue(context, "MonsterTideCheck", 0)
--怪物转阶段
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {418001}, "_SERVER_REGISVINE_ICE_ACTIVITY_FLAG_PHASE01", 1)
ScriptLib.CreateGroupTimerEvent(context, defs.groupId, "phaseonecheck", 1)
return 0
end
function LF_Battle_Win(context, evt)
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : LF_Battle_Win")
ScriptLib.SetGadgetStateByConfigId(context,defs.iceStormId,GadgetState.GearStop)
if defs.inteeGadget ~= nil then
ScriptLib.SetGadgetStateByConfigId(context,defs.inteeGadget,GadgetState.Default)
end
--ScriptLib.KillGroupEntity(context,{group_id=defs.groupId,monsters={defs.monsterOne,defs.monsterTwo,defs.monsterThree,defs.monsterFour},gadgets={defs.iceStormId,defs.specialice1,defs.specialice2,defs.specialice3,defs.inteeGadget}})
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.iceStormId)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice1)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice2)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice3)
if defs.inteeGadget ~= nil then
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.inteeGadget)
end
ScriptLib.RefreshGroup(context,{group_id=defs.groupId,suite=1})
ScriptLib.CreateScenePlayGeneralRewardGadget(context, {group_id = defs.groupId, config_id = defs.rewardGadget})
--ScriptLib.CreateGadget(context,{config_id=defs.rewardGadget})
ScriptLib.CreateGroupTimerEvent(context, defs.groupId, "transform", 3)
--ScriptLib.TransPlayerToPos(context, {uid_list =ScriptLib.GetSceneUidList(context), pos = {x=1121, y=286, z=-425}, radius = 2, rot = {x=0, y=180, z=0},is_skip_ui=true})
--ScriptLib.SetGadgetEnableInteract(context, defs.groupId, defs.inteeGadget, true)
return 0
end
function LF_Battle_Lose(context, evt)
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : LF_Battle_Lose")
ScriptLib.SetGadgetStateByConfigId(context,defs.iceStormId,GadgetState.GearStop)
if defs.inteeGadget ~= nil then
ScriptLib.SetGadgetStateByConfigId(context,defs.inteeGadget,GadgetState.Default)
end
--ScriptLib.KillGroupEntity(context,{group_id=defs.groupId,monsters={defs.monsterOne,defs.monsterTwo,defs.monsterThree,defs.monsterFour},gadgets={defs.iceStormId,defs.specialice1,defs.specialice2,defs.specialice3,defs.inteeGadget}})
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.iceStormId)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice1)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice2)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice3)
if defs.inteeGadget ~= nil then
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.inteeGadget)
end
--ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.MONSTER, defs.bossId)
ScriptLib.RefreshGroup(context,{group_id=defs.groupId,suite=1})
ScriptLib.CreateGroupTimerEvent(context, defs.groupId, "transform", 3)
--ScriptLib.TransPlayerToPos(context, {uid_list =ScriptLib.GetSceneUidList(context), pos = {x=1121, y=286, z=-425}, radius = 2, rot = {x=0, y=180, z=0},is_skip_ui=true})
--ScriptLib.SetGadgetEnableInteract(context, defs.groupId, defs.inteeGadget, true)
return 0
end
function LF_Battle_Stop(context, evt)
ScriptLib.PrintContextLog(context, "## ICEFLOWERBOSS_LOG : LF_Battle_Stop")
ScriptLib.SetGadgetStateByConfigId(context,defs.iceStormId,GadgetState.GearStop)
if defs.inteeGadget ~= nil then
ScriptLib.SetGadgetStateByConfigId(context,defs.inteeGadget,GadgetState.Default)
end
--ScriptLib.KillGroupEntity(context,{group_id=defs.groupId,monsters={defs.monsterOne,defs.monsterTwo,defs.monsterThree,defs.monsterFour},gadgets={defs.iceStormId,defs.specialice1,defs.specialice2,defs.specialice3,defs.inteeGadget}})
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.iceStormId)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice1)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice2)
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.specialice3)
if defs.inteeGadget ~= nil then
ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.GADGET, defs.inteeGadget)
end
--ScriptLib.RemoveEntityByConfigId(context, defs.groupId, EntityType.MONSTER, defs.bossId)
ScriptLib.RefreshGroup(context,{group_id=defs.groupId,suite=1})
--ScriptLib.CreateGroupTimerEvent(context, defs.groupId, "transform", 3)
ScriptLib.TransPlayerToPos(context, {uid_list =ScriptLib.GetSceneUidList(context), pos = {x=1121, y=286, z=-425}, radius = 2, rot = {x=0, y=180, z=0},is_skip_ui=false})
--ScriptLib.TransPlayerToPos(context, {uid_list =ScriptLib.GetSceneUidList(context), pos = {x=1121, y=286, z=-425}, radius = 2, rot = {x=0, y=180, z=0},is_skip_ui=true})
--ScriptLib.SetGadgetEnableInteract(context, defs.groupId, defs.inteeGadget, true)
return 0
end
--创建冰立方时同时创建龙血结晶生成器
function CreateDulinsOreGenerators(context,idx)
math.randomseed(ScriptLib.GetServerTime(context))
local count=math.random(2,3)
for i=1,count do
ScriptLib.CreateGadget(context, { config_id = defs.bloodOrePositions[idx][i] })
end
return 0
end
--随机创建冰立方
function CreateIceShield(context)
ScriptLib.SetGroupVariableValue(context, "notCreateIceShieldActivated", 0)
alive=ScriptLib.GetGroupVariableValue(context, "iceCubeAlive")
if alive ~=1 then
local newIdx=1
math.randomseed(ScriptLib.GetServerTime(context))
newIdx=math.random(#defs.randomPositions)
for i=1,#gadgets do
if gadgets[i].config_id==defs.randomPositions[newIdx] then
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.iceSquareId, gadgets[i].pos,gadgets[i].rot)
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.targetId, gadgets[i].pos,gadgets[i].rot)
ScriptLib.SetGroupVariableValue(context, "positionIdx", i)
ScriptLib.SetGroupVariableValue(context, "iceCubeAlive", 1)
end
end
local count=math.random(2,3)
for j=1,count do
ScriptLib.CreateGadget(context, { config_id = defs.bloodOrePositions[newIdx][j] })
end
--CreateDulinsOreGenerators(context,newIdx)
end
return 0
end
--[[
--创建离BOSS正面最近的冰立方
function CreateNearestIceShield(context)
alive=ScriptLib.GetGroupVariableValue(context, "iceCubeAlive")
if alive ~=1 then
local minOne={angle=180,idx=-1}
local vector={}
local monsterRotate=ScriptLib.GetRotationByEntityId(context, 24001).y
local monsterForward=CalculateMonsterForward(monsterRotate)
local monsterPosition=monsters[1].pos
for i=1,#defs.randomPositions do
for j=1,#gadgets do
if gadgets[j].config_id==defs.randomPositions[i] then
vector.x=gadgets[j].pos.z-monsterPosition.z
vector.y=gadgets[j].pos.x-monsterPosition.x
local angle=CalculateRotate(monsterForward.x,monsterForward.y,vector.x,vector.y)
if angle<minOne.angle then
minOne.angle=angle
minOne.idx=j
end
end
end
end
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.iceSquareId, gadgets[minOne.idx].pos,gadgets[minOne.idx].rot)
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.targetId, gadgets[minOne.idx].pos,gadgets[minOne.idx].rot)
ScriptLib.SetGroupVariableValue(context, "positionIdx", minOne.idx)
ScriptLib.SetGroupVariableValue(context, "iceCubeAlive", 1)
CreateDulinsOreGenerators(minOne.idx)
end
end
function CalculateMonsterForward(monsterRotate)
local monsterForward={}
monsterForward.x=math.cos(math.rad(monsterRotate))
monsterForward.y=math.sin(math.rad(monsterRotate))
return monsterForward
end
]]--
function CalculateRotate(x1,y1,x2,y2)
local cos=(x1*x2+y1*y2)/(math.sqrt(x1*x1+y1*y1)*math.sqrt(x2*x2+y2*y2))
local rotate=math.deg(math.acos(cos))
return rotate
end
function DestoryIceShieldActivated(context)
ScriptLib.KillEntityByConfigId(context, { config_id = defs.iceShieldId })
return 0
end
--销毁冰立方不触发屏障
function DistoryIceShield(context)
ScriptLib.SetGroupVariableValue(context, "notCreateIceShieldActivated", 1)
ScriptLib.KillEntityByConfigId(context, { config_id = defs.iceSquareId })
ScriptLib.KillEntityByConfigId(context, { config_id = defs.targetId })
return 0
end
function CreateIceStorm(context)
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.groupId, defs.iceStormId, GadgetState.Default)
return 0
end
function DestoryIceStorm(context)
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.groupId, defs.iceStormId, GadgetState.GearStop)
return 0
end
function MonsterPhaseOneCheck(context)
ScriptLib.SetGroupVariableValue(context, "phaseonecheckvalue", 1)
return 0
end
function MonsterPhaseTwoCheck(context)
ScriptLib.SetGroupVariableValue(context, "phasetwocheckvalue", 1)
return 0
end
function StartMonsterTide(context)
if ScriptLib.GetGroupVariableValue(context, "MonsterTideCheck") ==0 then
if ScriptLib.GetScenePlayBattleType(context, defs.groupId) ==1 then
ScriptLib.KillMonsterTide(context, defs.groupId, 1)
ScriptLib.AutoMonsterTide(context, 3, defs.groupId, defs.monsterTideOne, 999, 1, 1)
elseif ScriptLib.GetScenePlayBattleType(context, defs.groupId) ==2 then
ScriptLib.KillMonsterTide(context, defs.groupId, 2)
ScriptLib.AutoMonsterTide(context, 3, defs.groupId, defs.monsterTideTwo, 999, 1, 1)
elseif defs.groupId==133002415 then
ScriptLib.AutoMonsterTide(context, 3, defs.groupId, defs.monsterTideOne, 999, 1, 1)
end
ScriptLib.SetGroupVariableValue(context, "MonsterTideCheck", 1)
else
ScriptLib.ContinueAutoMonster(context, defs.groupId, 3)
end
return 0
end
function PauseMonsterTide(context)
ScriptLib.PauseAutoMonsterTide(context, defs.groupId, 3)
return 0
end
function KillAllMonsters(context)
ScriptLib.PauseAutoMonsterTide(context, defs.groupId, 3)
--[[for i=1,#monsters do
if monsters[i].monster_id~=26020102 then
ScriptLib.KillEntityByConfigId(context, { config_id = monsters[i].config_id })
end
end]]--
ScriptLib.KillGroupEntity(context,{group_id=defs.groupId,monsters=defs.monsterTideOne})
ScriptLib.KillGroupEntity(context,{group_id=defs.groupId,monsters=defs.monsterTideTwo})
return 0
end
function UpdateDulinsBloodPickCount(context)
if context.uid~=nil or context.uid~=0 then
local uid = context.uid
local oldCount = ScriptLib.GetScenePlayBattleUidValue(context, 0, uid, "AVATAR_OREDULINSBLOOD_PICK_COUNT")
ScriptLib.SetScenePlayBattleUidValue(context, 0, uid, "AVATAR_OREDULINSBLOOD_PICK_COUNT", oldCount+1)
end
return 0
end
LF_Initialize_Group(triggers, suites)