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

202 lines
7.1 KiB
Lua
Raw 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.

--[[======================================
|| filename: Activity_BattleMushroomMonster
|| owner: chen.chen
|| description: 蕈兽战斗白盒
|| LogName: TD
|| Protection: [Protection]
=======================================]]
local battleStartConsole = 1001
local beastSkillConsole={
[1]=1033,
[2]=1034,
[3]=1035,
[4]=1036,
}
local gearOptionInfo=
{
summonBeastInfo=
{
[906]=1023,
[907]=1024,
[908]=1025,
[909]=1026,
[910]=1027,
[911]=1028,
[912]=1029,
[913]=1030,
[914]=1031,
[915]=1032,
},
challengeInfo=
{
attackChallenge=900,
defenseChallenge=901
},
beastSillInfo=
{
[1]=902,
[2]=903,
[3]=904,
[4]=905,
}
}
local extraTriggers =
{
{ config_id = 40000001, name = "group_load", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_EVENT_GROUP_LOAD", trigger_count = 0 },
{ config_id = 40000002, name = "select_option", event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_EVENT_SELECT_OPTION", trigger_count = 0 },
{ config_id = 40000003, name = "monster_die", event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_EVENT_ANY_MONSTER_DIE", trigger_count = 0 },
}
------ Local Functions -----------
function LF_Initialize_Level()
--- TRIGGER
for i, _suite in ipairs(suites) do
for _, _trigger in pairs(extraTriggers) do
table.insert(_suite.triggers, _trigger.name)
end
end
for _, _trigger in pairs(extraTriggers) do
table.insert(triggers, _trigger)
end
for i=1,#beastSkillConsole do
table.insert(variables,{ config_id=50000000+i,name = beastSkillConsole[i].."BeastConfigId", value = 0})
end
table.insert(variables,{ config_id=51000000,name = "wave", value = 1})
table.insert(variables,{ config_id=51000001,name = "strategy", value = 1})
table.insert(variables,{ config_id=51000002,name = "index", value = 1})
return 0
end
function LF_StartAttackChanllenge(context)
PrintLog(context, "测试关卡开启")
local wave=ScriptLib.GetGroupVariableValue(context,"wave")
local strategy=ScriptLib.GetGroupVariableValue(context,"strategy")
local index=ScriptLib.GetGroupVariableValue(context,"index")
local waveInfo=random_strategy_info[strategy][wave][index]
--零时测试数据
ScriptLib.ActiveChallenge(context, 1, 1, 0, waveInfo.total_count, 0, 0)
ScriptLib.AutoPoolMonsterTide(context, 1, base_info.group_id, waveInfo.monster_package,0, {}, {}, {total_count=waveInfo.total_count, min_count=waveInfo.min_count, max_count=waveInfo.max_count,fill_time=0,fill_count=0,is_ordered = true})
--ScriptLib.AutoMonsterTide(context, 100, 251009001, {1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048}, 100, 2, 5)
return 0
end
------ Server Lua Call Functions -----------
--怪物cd重置
function SLC_MushroomMonsterAlertRefreshSkill(context)
PrintLog(context,"蕈兽技能CD重置")
--进入惊吓状态
local beast = ScriptLib.GetMonsterConfigId(context, { monster_eid = context.source_entity_id })
--local beast = ScriptLib.GetGadgetConfigId(context, { gadget_eid = context.source_entity_id })
ScriptLib.SetEntityServerGlobalValueByConfigId(context, beast, "SGV_Fungus_StartBurst_Immediately",0)
for k,v in pairs(beastSkillConsole) do
if ScriptLib.GetGroupVariableValue(context, v.."BeastConfigId")==beast then
ScriptLib.AssignPlayerShowTemplateReminder(context, 200, {param_vec={k},param_uid_vec={},uid_vec={context.owner_uid}})
end
end
return 0
end
--蕈兽放技能
function SLC_MushroomMonsterAlertDoSkill(context)
PrintLog(context,"蕈兽开始释放技能")
local beast = ScriptLib.GetMonsterConfigId(context, { monster_eid = context.source_entity_id })
ScriptLib.SetEntityServerGlobalValueByConfigId(context, beast, "SGV_Fungus_StartBurst_Immediately",1)
return 0
end
------ conditions & actions ------
--group加载
function action_EVENT_GROUP_LOAD(context, evt)
PrintLog(context, "group load")
--variable重置
for i=1,#beastSkillConsole do
ScriptLib.SetGroupVariableValue(context, beastSkillConsole[i].."BeastConfigId", 0)
end
--开启挑战台子增加按钮
ScriptLib.SetWorktopOptionsByGroupId(context, 0, battleStartConsole, {gearOptionInfo.challengeInfo.attackChallenge,gearOptionInfo.challengeInfo.defenseChallenge})
--给四个台子增加创建蕈兽的按钮
local insertTableValue=function(input)
local output={}
for k,v in pairs(input) do
table.insert(output,k)
end
return output
end
local tempTbl=insertTableValue(gearOptionInfo.summonBeastInfo)
for i=1,#beastSkillConsole do
ScriptLib.SetWorktopOptionsByGroupId(context, 0, beastSkillConsole[i], tempTbl)
end
return 0
end
function action_EVENT_SELECT_OPTION(context, evt)
PrintLog(context, "select option")
--先看看是不是开启挑战
if evt.param1 == battleStartConsole then
if evt.param2 == gearOptionInfo.challengeInfo.attackChallenge then
PrintLog(context, "开启挑战关")
ScriptLib.AddExtraGroupSuite(context, 0, 2)
LF_StartAttackChanllenge(context)
elseif evt.param2 == gearOptionInfo.challengeInfo.defenseChallenge then
PrintLog(context, "开启防守关")
ScriptLib.AddExtraGroupSuite(context, 0, 3)
else
PrintLog(context, "挑战台上了错误的按钮")
end
return 0
end
--看看是不是召唤蕈兽
for k,v in pairs(gearOptionInfo.summonBeastInfo) do
if k==evt.param2 then
monsterConfigId=gearOptionInfo.summonBeastInfo[evt.param2]
--先把自己的按钮只换了
for a,b in pairs(beastSkillConsole) do
if evt.param1==b then
ScriptLib.SetWorktopOptionsByGroupId(context, 0, b, {gearOptionInfo.beastSillInfo[a]})
else
--其他几个操作台删掉对应按钮
ScriptLib.DelWorktopOptionByGroupId(context, 0, b, evt.param2)
end
end
--然后把怪物创建出来
if -1==ScriptLib.CreateMonster(context, { config_id = monsterConfigId,delay_time = 0,server_global_value={["SGV_Fungus_StartBurst_Immediately"]=0,["SGV_Fungus_StartBurst_WaitForStandby"]=0}}) then
PrintLog(context, "怪物创建失败")
else
PrintLog(context, "怪物创建成功configID:"..monsterConfigId)
end
--最近记录下怪物和操作台的绑定关系
ScriptLib.SetGroupVariableValue(context, evt.param1.."BeastConfigId",monsterConfigId)
return 0
end
end
--看看是不是要放蕈兽技能
for k,v in pairs(gearOptionInfo.beastSillInfo) do
if v==evt.param2 then
local consoleId=beastSkillConsole[k]
local monsterId=ScriptLib.GetGroupVariableValue(context, consoleId.."BeastConfigId")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, monsterId, "SGV_Fungus_StartBurst_Immediately", 1)
--起一个时间轴给它设回来这个先改成用词缀加SLC做
return 0
end
end
--如果无事发生
PrintLog(context, "按钮配置有误,未触发任何逻辑")
return 0
end
function action_EVENT_ANY_MONSTER_DIE(context, evt)
for i=1,#beastSkillConsole do
if ScriptLib.GetGroupVariableValue(context, beastSkillConsole[i].."BeastConfigId") == evt.param1 then
PrintLog(context, "蕈兽死亡:"..evt.param1)
ScriptLib.SetGroupVariableValue(context, beastSkillConsole[i].."BeastConfigId",0)
end
end
return 0
end
LF_Initialize_Level()