mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 21:22:26 +08:00
286 lines
13 KiB
Go
286 lines
13 KiB
Go
--[[
|
|
setmetatable(_ENV,{__index=function() return {} end })
|
|
|
|
|
|
defs.group_id
|
|
defs.timer
|
|
--光桥机关
|
|
local light_bridge={
|
|
{operator_id=8001,effect_id=8002,gadget_id={8003}}
|
|
}
|
|
local wind_field={
|
|
{operator_id=8001,effect_id=8002,gadget_id={8003}}
|
|
}
|
|
--]]
|
|
function LF_Initialize_Trap()
|
|
table.insert(variables,{ config_id=50000001,name = "hasDiscount", value = 0 })
|
|
table.insert(variables,{ config_id=50000002,name = "hasColdDownDiscount", value = 0 })
|
|
t1 = { config_id = 8000001, name = "GADGET_CREATE", event = EventType.EVENT_GADGET_CREATE, source = "", condition = "condition_EVENT_GADGET_CREATE", action = "action_EVENT_GADGET_CREATE", trigger_count = 0 }
|
|
t2 = { config_id = 8000002, name = "SELECT_OPTION", event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_EVENT_SELECT_OPTION", trigger_count = 0,forbid_guest = false }
|
|
t3 = { config_id = 8000003, name = "GROUP_LOAD", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_EVENT_GROUP_LOAD", trigger_count = 0}
|
|
t4 = { config_id = 8000004, name = "Variable_Change", event = EventType.EVENT_VARIABLE_CHANGE, source = "hasDiscount", condition = "", action = "action_VARIABLE_CHANGE", trigger_count = 0}
|
|
t5 = { config_id = 8000005, name = "Gadget_State_Change", event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_GADGET_STATE_CHANGE", trigger_count = 0}
|
|
table.insert(triggers, t1)
|
|
table.insert(triggers, t2)
|
|
table.insert(triggers, t3)
|
|
table.insert(triggers, t4)
|
|
table.insert(triggers, t5)
|
|
table.insert(suites[1].triggers, t1.name)
|
|
table.insert(suites[1].triggers, t2.name)
|
|
table.insert(suites[1].triggers, t3.name)
|
|
table.insert(suites[1].triggers, t4.name)
|
|
table.insert(suites[1].triggers, t5.name)
|
|
--ScriptLib.PrintLog("## suite.gadgets.size() -> "..#suites[1].gadgets)
|
|
--[[
|
|
for i=1,#light_bridge do
|
|
local trigger={ config_id = 8000000+light_bridge[i].operator_id,name = tostring(light_bridge[i].operator_id), event = EventType.EVENT_TIMER_EVENT, source = tostring(light_bridge[i].operator_id), condition = "", action = "action_Light_Bridge_Revert", trigger_count = 0 }
|
|
end
|
|
]]--
|
|
for i=1,#wind_field do
|
|
table.insert(variables,{ config_id=51000000+i,name = tostring(wind_field[i].operator_id).."wind", value = 0 })
|
|
local wind_field_trigger={ config_id = 8000000+wind_field[i].operator_id,name = tostring(wind_field[i].operator_id), event = EventType.EVENT_TIMER_EVENT, source = tostring(wind_field[i].operator_id), condition = "", action = "action_Trap_Revert", trigger_count = 0 }
|
|
table.insert(triggers, wind_field_trigger)
|
|
table.insert(suites[1].triggers, wind_field_trigger.name)
|
|
end
|
|
for i=1,#light_bridge do
|
|
table.insert(variables,{ config_id=52000000+i,name = tostring(light_bridge[i].operator_id).."bridge", value = 0 })
|
|
local light_bridge_trigger={ config_id = 8000000+light_bridge[i].operator_id,name = tostring(light_bridge[i].operator_id), event = EventType.EVENT_TIMER_EVENT, source = tostring(light_bridge[i].operator_id), condition = "", action = "action_Trap_Revert", trigger_count = 0 }
|
|
table.insert(triggers, light_bridge_trigger)
|
|
table.insert(suites[1].triggers, light_bridge_trigger.name)
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function LF_Initial_Options(context)
|
|
if ScriptLib.GetGroupVariableValue(context, "hasDiscount") == 0 then
|
|
for i=1,#light_bridge do
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, light_bridge[i].operator_id, {4001})
|
|
end
|
|
for i=1,#wind_field do
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, wind_field[i].operator_id, {4003})
|
|
end
|
|
elseif ScriptLib.GetGroupVariableValue(context, "hasDiscount") == 1 then
|
|
for i=1,#light_bridge do
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, light_bridge[i].operator_id, {4002})
|
|
end
|
|
for i=1,#wind_field do
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, wind_field[i].operator_id, {4004})
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function action_GADGET_STATE_CHANGE(context,evt)
|
|
--[[
|
|
if evt.param1 == GadgetState.GearStart then
|
|
for i=1,#light_bridge do
|
|
if evt.param2 == light_bridge[i].operator_id then
|
|
ScriptLib.SetGadgetEnableInteract(context, defs.group_id, light_bridge[i].operator_id, false)
|
|
end
|
|
end
|
|
for j=1,#wind_field do
|
|
if evt.param2 == wind_field[i].operator_id then
|
|
ScriptLib.SetGadgetEnableInteract(context, defs.group_id, wind_field[i].operator_id, false)
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
]]--
|
|
if evt.param1 == GadgetState.Default then
|
|
for i=1,#light_bridge do
|
|
if evt.param2 == light_bridge[i].operator_id then
|
|
ScriptLib.ShowReminder(context, 400024)
|
|
ScriptLib.SetGroupVariableValue(context, tostring(light_bridge[i].operator_id).."bridge", 0)
|
|
if ScriptLib.GetGroupVariableValue(context, "hasDiscount") == 0 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4001)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4002)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, light_bridge[i].operator_id, {4001})
|
|
elseif ScriptLib.GetGroupVariableValue(context, "hasDiscount") == 1 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4001)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4002)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, light_bridge[i].operator_id, {4002})
|
|
end
|
|
--ScriptLib.SetGadgetEnableInteract(context, defs.group_id, light_bridge[i].operator_id, true)
|
|
ScriptLib.CreateGadget(context, { config_id = light_bridge[i].effect_id })
|
|
end
|
|
end
|
|
for j=1,#wind_field do
|
|
if evt.param2 == wind_field[j].operator_id then
|
|
ScriptLib.ShowReminder(context, 400024)
|
|
ScriptLib.SetGroupVariableValue(context, tostring( wind_field[j].operator_id).."wind", 0)
|
|
if ScriptLib.GetGroupVariableValue(context, "hasDiscount") == 0 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[j].operator_id, 4003)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[j].operator_id, 4004)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, wind_field[j].operator_id, {4003})
|
|
elseif ScriptLib.GetGroupVariableValue(context, "hasDiscount") == 1 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[j].operator_id, 4003)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[j].operator_id, 4004)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, wind_field[j].operator_id, {4004})
|
|
end
|
|
--ScriptLib.SetGadgetEnableInteract(context, defs.group_id, wind_field[j].operator_id, true)
|
|
for k=1,#wind_field[j].gadget_id do
|
|
ScriptLib.KillEntityByConfigId(context, { config_id = wind_field[j].gadget_id[k] })
|
|
end
|
|
ScriptLib.CreateGadget(context, { config_id = wind_field[j].effect_id })
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function action_VARIABLE_CHANGE(context, evt)
|
|
if evt.param1 ==0 then
|
|
for i=1,#light_bridge do
|
|
if ScriptLib.GetGroupVariableValue(context, tostring(light_bridge[i].operator_id).."bridge") == 0 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4001)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4002)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, light_bridge[i].operator_id, {4001})
|
|
end
|
|
end
|
|
for i=1,#wind_field do
|
|
if ScriptLib.GetGroupVariableValue(context, tostring(wind_field[i].operator_id).."wind") == 0 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[i].operator_id, 4003)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[i].operator_id, 4004)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, wind_field[i].operator_id, {4003})
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
if evt.param1 ==1 then
|
|
for i=1,#light_bridge do
|
|
if ScriptLib.GetGroupVariableValue(context, tostring(light_bridge[i].operator_id).."bridge") == 0 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4001)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, light_bridge[i].operator_id, 4002)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, light_bridge[i].operator_id, {4002})
|
|
end
|
|
end
|
|
for i=1,#wind_field do
|
|
if ScriptLib.GetGroupVariableValue(context, tostring(wind_field[i].operator_id).."wind") == 0 then
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[i].operator_id, 4003)
|
|
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, wind_field[i].operator_id, 4004)
|
|
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, wind_field[i].operator_id, {4004})
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function SetDiscount(context, prev_context, param1, param2, param3)
|
|
ScriptLib.SetGroupVariableValue(context, "hasDiscount", 1)
|
|
return 0
|
|
end
|
|
function SetColdTownDiscount(context, prev_context, param1, param2, param3)
|
|
ScriptLib.SetGroupVariableValue(context, "hasColdDownDiscount", 1)
|
|
return 0
|
|
end
|
|
|
|
function action_Trap_Revert(context, evt)
|
|
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, tonumber(evt.source_name), GadgetState.Default)
|
|
return 0
|
|
end
|
|
|
|
function condition_EVENT_GADGET_CREATE(context, evt)
|
|
return false
|
|
end
|
|
|
|
function action_EVENT_GADGET_CREATE(context, evt)
|
|
return 0
|
|
end
|
|
|
|
function action_EVENT_SELECT_OPTION(context, evt)
|
|
if (evt.param2 == 4001) or (evt.param2==4002) then
|
|
ScriptLib.PrintContextLog(context, "## TD_LOG : 4001 or 4002 UID:"..context.uid.." CLICKED")
|
|
if evt.param2==4001 then
|
|
if ScriptLib.GetMechanicusBuildingPoints(context,defs.challange_group_id ,999, context.uid)<40 then
|
|
ScriptLib.ShowReminder(context, 400026)
|
|
return 0
|
|
else
|
|
ScriptLib.AddMechanicusBuildingPoints(context, defs.challange_group_id,999, context.uid, -40)
|
|
end
|
|
elseif evt.param2==4002 then
|
|
if ScriptLib.GetMechanicusBuildingPoints(context,defs.challange_group_id ,999, context.uid)<20 then
|
|
ScriptLib.ShowReminder(context, 400026)
|
|
return 0
|
|
else
|
|
ScriptLib.AddMechanicusBuildingPoints(context, defs.challange_group_id,999, context.uid, -20)
|
|
end
|
|
end
|
|
ScriptLib.PrintContextLog(context, "## TD_LOG : 4001 or 4002 clicked")
|
|
for i=1,#light_bridge do
|
|
if light_bridge[i].operator_id==evt.param1 then
|
|
ScriptLib.PrintContextLog(context, "## TD_LOG : 4001 or 4002 matched")
|
|
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, light_bridge[i].operator_id, GadgetState.GearStart)
|
|
if ScriptLib.GetGroupVariableValue(context, "hasColdDownDiscount") ~= 0 then
|
|
ScriptLib.CreateGroupTimerEvent(context, defs.group_id, tostring(light_bridge[i].operator_id), defs.timer)
|
|
end
|
|
if evt.param2 == 4001 then
|
|
ScriptLib.DelWorktopOption(context, 4001)
|
|
else
|
|
ScriptLib.DelWorktopOption(context, 4002)
|
|
end
|
|
--去除指引特效
|
|
ScriptLib.KillEntityByConfigId(context, { config_id = light_bridge[i].effect_id })
|
|
--将光桥状态设为Default
|
|
for j=1,#light_bridge[i].gadget_id do
|
|
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, light_bridge[i].gadget_id[j], GadgetState.Default)
|
|
end
|
|
ScriptLib.SetGroupVariableValue(context, tostring(light_bridge[i].operator_id).."bridge", 1)
|
|
--ScriptLib.CreateGroupTimerEvent(context, defs.group_id, tostring(evt.param1), defs.timer)
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
if (evt.param2 == 4003) or (evt.param2==4004) then
|
|
ScriptLib.PrintContextLog(context, "## TD_LOG : 4003 or 4004 UID:"..context.uid.." CLICKED")
|
|
if evt.param2==4003 then
|
|
if ScriptLib.GetMechanicusBuildingPoints(context,defs.challange_group_id ,999, context.uid)<40 then
|
|
ScriptLib.ShowReminder(context, 400026)
|
|
return 0
|
|
else
|
|
ScriptLib.AddMechanicusBuildingPoints(context, defs.challange_group_id,999, context.uid, -40)
|
|
end
|
|
elseif evt.param2==4004 then
|
|
if ScriptLib.GetMechanicusBuildingPoints(context,defs.challange_group_id ,999, context.uid)<20 then
|
|
ScriptLib.ShowReminder(context, 400026)
|
|
return 0
|
|
else
|
|
ScriptLib.AddMechanicusBuildingPoints(context, defs.challange_group_id,999, context.uid, -20)
|
|
end
|
|
end
|
|
ScriptLib.PrintContextLog(context, "## TD_LOG : 4003 or 4004 clicked")
|
|
for i=1,#wind_field do
|
|
if wind_field[i].operator_id==evt.param1 then
|
|
ScriptLib.PrintContextLog(context, "## TD_LOG : 4003 or 4004 matched")
|
|
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, wind_field[i].operator_id, GadgetState.GearStart)
|
|
if ScriptLib.GetGroupVariableValue(context, "hasColdDownDiscount") ~= 0 then
|
|
ScriptLib.CreateGroupTimerEvent(context, defs.group_id, tostring(wind_field[i].operator_id), defs.timer)
|
|
end
|
|
if evt.param2 ==4003 then
|
|
ScriptLib.DelWorktopOption(context, 4003)
|
|
else
|
|
ScriptLib.DelWorktopOption(context, 4004)
|
|
end
|
|
ScriptLib.KillEntityByConfigId(context, { config_id = wind_field[i].effect_id })
|
|
--创建风场
|
|
for j=1,#wind_field[i].gadget_id do
|
|
ScriptLib.CreateGadget(context, { config_id = wind_field[i].gadget_id[j] })
|
|
end
|
|
ScriptLib.SetGroupVariableValue(context, tostring(wind_field[i].operator_id).."wind", 1)
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function action_EVENT_GROUP_LOAD(context, evt)
|
|
LF_Initial_Options(context)
|
|
ScriptLib.SetGroupVariableValue(context, "hasDiscount", 0)
|
|
return 0
|
|
end
|
|
|
|
|
|
|
|
LF_Initialize_Trap() |