妖塔刷新区域表 = {"九层妖塔一层","九层妖塔二层","九层妖塔三层","九层妖塔四层","九层妖塔五层","九层妖塔六层","九层妖塔七层","九层妖塔八层","九层妖塔九层","九层妖塔十层","九层妖塔十一层","九层妖塔十二层",}

妖塔陷阱区域表 = {"九层妖塔一层陷阱","九层妖塔二层陷阱","九层妖塔三层陷阱","九层妖塔四层陷阱","九层妖塔五层陷阱","九层妖塔六层陷阱","九层妖塔七层陷阱","九层妖塔八层陷阱","九层妖塔九层陷阱","九层妖塔十层陷阱","九层妖塔十一层陷阱","九层妖塔十二层陷阱",}

妖塔获取经验表 = {[1] = {10560},[2] = {14080},[3] = {18480},[4] = {23760},[5] = {29920},[6] = {40656},[7] = {51744},[8] = {61600},[9] = {79200},[10] = {900000},[11] = {1800000},[12] = {3600000},}

妖塔传送阵刷新表 = {Point(1028, 160),Point(881, 307),Point(733, 455),Point(1148, 280),Point(1001, 427),Point(853, 575),Point(1291, 423),Point(1144, 570),Point(996, 718),Point(596, 592),Point(596, 592),Point(596, 592),}

妖塔活跃度表 = {
    1,
    2,
    3,
    4,
    4,
    5,
    6,
    24,
    26,
    75,
}

-- -- 陷阱刷新节奏（秒），可按需调整
-- local 陷阱刷新间隔_普通 = 12
-- local 陷阱刷新间隔_标准 = 20
-- local 陷阱刷新间隔_进阶 = 16
-- local 陷阱刷新间隔_困难 = 14

-- -- 记录每张地图实例的“下一次陷阱刷新时间”（使用 DateTime）
-- local 陷阱下次刷新时间 = {}

--妖塔刷新怪物表
妖塔精英刷新怪物表 = {
    --1层
    { "妖僧 弘化", "妖僧 清远", "妖僧 弘深", "妖僧 清慧","妖道 正阳子", "妖道 幽冥子", "妖道 卜阳子", "妖道 青冥子","金刚尸卫 容丘", "金刚尸卫 志力", "金刚尸卫 玉龙", "金刚尸卫 志成" },
    --2层
    { "妖僧 弘化02", "妖僧 清远02", "妖僧 弘深02", "妖僧 清慧02","妖道 正阳子02", "妖道 幽冥子02", "妖道 卜阳子02", "妖道 青冥子02","金刚尸卫 容丘02", "金刚尸卫 志力02", "金刚尸卫 玉龙02", "金刚尸卫 志成02" },
    --3层
    { "禁卫统领 火罗", "禁卫统领 铜卫", "禁卫统领 巨胆", "禁卫统领 铁卫","魔将 重八", "魔将 古刀", "魔将 赤焰 ", "魔将 十刃","碎骨将军 魔翼", "碎骨将军 化甲", "碎骨将军 朱炎", "碎骨将军 雷炎" },
    --4层
    { "禁卫统领 火罗02", "禁卫统领 铜卫02", "禁卫统领 巨胆02", "禁卫统领 铁卫02","魔将 重八02", "魔将 古刀02", "魔将 赤焰02", "魔将 十刃02","碎骨将军 魔翼02", "碎骨将军 化甲02", "碎骨将军 朱炎02", "碎骨将军 雷炎02" },
    --5层
    { "剑角虫魔 野须", "剑角虫魔 金龟", "剑角虫魔 赤目", "剑角虫魔 星斑","类人蜂 毒妇", "类人蜂 鬼头", "类人蜂 朱砂", "类人蜂 长须","血食虫 绯姬 ", "血食虫 狼牙", "血食虫 虹刺", "血食虫 暗刺" },
    --6层
    { "剑角虫魔 野须02", "剑角虫魔 金龟02", "剑角虫魔 赤目02", "剑角虫魔 星斑02","类人蜂 毒妇02", "类人蜂 鬼头02", "类人蜂 朱砂02", "类人蜂 长须02","血食虫 绯姬02", "血食虫 狼牙02", "血食虫 虹刺02", "血食虫 暗刺02" },
    --7层
    { "刽子手 一刀", "刽子手 直纹", "刽子手 血来", "刽子手 恶屠","毒尾蝎 绝角", "毒尾蝎 鬼背", "毒尾蝎 三针", "毒尾蝎 巨首","邪血弃徒 白毛", "邪血弃徒 狂风", "邪血弃徒 小耳", "邪血弃徒 胖子" },
    --8层
    { "刽子手 一刀02", "刽子手 直纹02", "刽子手 血来02", "刽子手 恶屠02","毒尾蝎 绝角02", "毒尾蝎 鬼背02", "毒尾蝎 三针02", "毒尾蝎 巨首02","邪血弃徒 白毛02", "邪血弃徒 狂风02", "邪血弃徒 小耳02", "邪血弃徒 胖子02" },
    --9层
    { "远古魔像 石鬼", "远古魔像 石祭","石弓魔 阿奴比", "石弓魔 暗影","魔锤守卫 兽魔", "魔锤守卫 羊魔" },
    --10层 秘境普通
    { "远古魔像 石羯", "石弓魔 狂猎","魔锤守卫 力魔", "远古魔像 石妖","石弓魔 邪目", "魔锤守卫 狂魔" },
	--11层 秘境进阶
    { "兽人狂战 怒焰", "兽人狂战 邪力","兽人祭司 祭心", "兽人祭司 祭血","精锐狼骑 隐怒", "精锐狼骑 血弑" },
	 --12层 秘境困难
    { "焱灵之主 燃尽", "焱灵之主 怒心","冰灵之主 寒雾", "冰灵之主 凝霜","冰霜领主 狂力", "冰霜领主 疯魔" },
}

--妖塔刷新怪物表
妖塔普通刷新怪物表 = {
    --1 2 层
    { "饥饿僵尸01", "怨恨僵尸01", "脏污僵尸01", "复仇僵尸01" },
    { "饥饿僵尸02", "怨恨僵尸02", "脏污僵尸02", "复仇僵尸02" },
    --3 4 层
    { "血战士01", "魔塔刀卫01", "诅咒战士01", "魔塔剑卫01" },
    { "血战士02", "魔塔刀卫02", "诅咒战士02", "魔塔剑卫02" },
    --5 6 层
    { "长尾毒蜈蚣01", "广翅多角虫01", "鳞甲毒蜈蚣01", "星斑多角虫01" },
    { "长尾毒蜈蚣02", "广翅多角虫02", "鳞甲毒蜈蚣02", "星斑多角虫02" },
    --7 8 层
    { "红猪妖01", "黑猪妖01", "凶恶红猪妖01", "狼锤黑猪妖01" },
    { "红猪妖02", "黑猪妖02", "凶恶红猪妖02", "狼锤黑猪妖02" },
    --9 10 层
    { "鼠妖01", "翼虫01", "大鼠妖01", "鬼翼虫01" },
    { "大鼠妖01", "鬼翼虫01", "大鼠妖02", "鬼翼虫02" },
    --11 秘境进阶
    { "兽人僵尸3263", "兽人僵尸3262", "兽人幽魂3261", "兽人幽魂3260" },
	--12 秘境困难
    { "腐化雪齿虎3273", "腐化雪齿虎3272", "腐化雪熊3271", "腐化雪熊3270" },
}

妖塔陷阱刷新怪物表 = {
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
	{ "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
    { "落石", "炸弹", "飞轮" , "熔火"},
}

function 九层妖塔_执行(地图)
    -- 使用与C#相同的变量名，但作为地图实例变量而不是全局变量
    local 数字_陷阱刷新间隔_KEY = "数字_陷阱刷新间隔"
    
    -- 为每个地图实例单独管理陷阱刷新间隔，初始值与C#保持一致
    if 地图.数字变量[数字_陷阱刷新间隔_KEY] == nil then
        地图.数字变量[数字_陷阱刷新间隔_KEY] = 500  -- 与C#中的常量值保持一致
    end

    if 地图.数字变量[数字_妖塔级别] == 0 then
        if 主程.当前时间 > 地图.节点计时 then
            if 地图.玩家列表.Count == 0 then
                地图.副本节点 = 255
            end
            if 地图.副本节点 == 255 then
                地图:关闭副本()
            elseif 地图.副本节点 == 0 then
                地图:地图公告("<#T:50047>") -- 欢迎进入九层妖塔的试炼
                地图.副本节点 = 地图.副本节点 + 1
                地图.节点计时 = 主程.当前时间:AddSeconds(5.0)
                激活妖塔祭坛(地图)
            elseif 地图.副本节点 == 1 then
                地图:地图公告("<#T:50021>") -- 九层妖塔中妖魔众多，随着层数增加妖物的能力会更强大，英雄可要谨慎了
                地图.副本节点 = 地图.副本节点 + 1
                地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
            elseif 地图.副本节点 == 2 then
                地图:地图公告("<#T:50022>") -- 左侧红色的是烈火祭坛，右侧蓝色的是寒冰祭坛
                地图.副本节点 = 地图.副本节点 + 1
                地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
            elseif 地图.副本节点 == 3 then
                地图:地图公告("<#T:50029>") -- 在每波妖物出现时，您必须点击正确的祭坛以提供庇佑！
                地图.副本节点 = 10
                地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
            elseif 地图.副本节点 > 9 then
                local 节点 = 地图.副本节点 % 10
                local 层数 = 地图.副本节点 // 10
                if 节点 == 0 then
                    local 祭坛类型 = randomNum(0,1,true)
                    地图.数字变量[数字_妖塔祭坛类型] = 祭坛类型
                    if 祭坛类型 == 0 then
                        地图:地图公告("<#P0:" .. 层数 .. "><#T:50023>") -- 第[X]波妖物即将出现，它们将带着烈焰吞噬您！赶快点击烈火祭坛获得庇佑！
                    else
                        地图:地图公告("<#P0:" .. 层数 .. "><#T:50024>") -- 第[X]波妖物即将出现，它们将带着寒霜吞噬您！赶快点击寒冰祭坛获得庇佑！
                    end
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                elseif 节点 == 1 then
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                    --开始刷怪（九层妖塔：1精英+3普通）
                    local 怪物刷新 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                    if 怪物刷新 ~= nil then
                        -- 1个精英怪
                        范围刷新怪物从地图实例(从表随机取值(妖塔精英刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        -- 3个普通怪
                        范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true, true, 3)
                        -- 范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        -- 范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        -- 范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        激活妖塔怪物BUFF(地图, 地图.数字变量[数字_妖塔祭坛类型] or 0)
                    end
                elseif 节点 == 2 then
                    -- 添加安全检查，确保层数有效
                    if 层数 >= 1 and 层数 <= 10 and 妖塔陷阱区域表[层数] then
                        local 陷阱刷新 = 获取副本怪物区域(地图, 妖塔陷阱区域表[层数])
                        if 地图.存活怪物总数 ~= 0 then
                            -- 陷阱阶段为玩家添加提示类BUFF（对齐bak1）
                            地图:宠物添加角色BUFF(58001)
                            地图:宠物添加角色BUFF(58011)
                            -- 使用地图实例的变量而不是全局变量
                            if 地图.数字变量[数字_陷阱刷新间隔_KEY] and 地图.数字变量[数字_陷阱刷新间隔_KEY] > 0 then
                                地图.数字变量[数字_陷阱刷新间隔_KEY] = 地图.数字变量[数字_陷阱刷新间隔_KEY] - 1
                            else
                                -- 添加调试信息
                                -- print("尝试刷新陷阱，层数: " .. 层数 .. "，陷阱区域: " .. (妖塔陷阱区域表[层数] or "nil"))
                                if 陷阱刷新 ~= nil then
                                    -- 添加概率控制，只有30%的几率刷新陷阱
                                    if randomNum(1, 100, true) <= 30 then
                                        local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                        -- 陷阱公告
                                        if 陷阱类型 == "落石" then
                                            地图:地图公告("落石即将降临！小心被砸到！")
                                        elseif 陷阱类型 == "炸弹" then
                                            地图:地图公告("炸弹爆炸！快躲开！")
                                        elseif 陷阱类型 == "飞轮" then
                                            地图:地图公告("我的飞轮会让你无处可逃！")
                                        elseif 陷阱类型 == "熔火" then
                                            地图:地图公告("熔火来袭，快来躲避！")
                                        end
                                        -- print("刷新陷阱类型: " .. 陷阱类型)
                                        范围刷新怪物从地图实例(陷阱类型, 地图, 0, 陷阱刷新:获取刷新范围(), true, true)
                                    end
                                    地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                else
                                    -- print("陷阱区域未找到: " .. 妖塔陷阱区域表[层数])
                                    -- 如果没有陷阱区域，使用怪物区域
                                    local 怪物区域 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                                    if 怪物区域 ~= nil then
                                        -- 添加概率控制，只有30%的几率刷新陷阱
                                        if randomNum(1, 100, true) <= 30 then
                                            local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                            -- 陷阱公告
                                            if 陷阱类型 == "落石" then
                                                地图:地图公告("落石即将降临！小心被砸到！")
                                            elseif 陷阱类型 == "炸弹" then
                                                地图:地图公告("炸弹爆炸！快躲开！")
                                            elseif 陷阱类型 == "飞轮" then
                                                地图:地图公告("我的飞轮会让你无处可逃！")
                                            elseif 陷阱类型 == "熔火" then
                                                地图:地图公告("熔火来袭，快来躲避！")
                                            end
                                            -- print("使用怪物区域刷新陷阱: " .. 陷阱类型)
                                            范围刷新怪物从地图实例(陷阱类型, 地图, 0, 怪物区域:获取刷新范围(), true, true)
                                        end
                                        地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                    end
                                end
                            end
                        else
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    else
                        -- print("无效层数或陷阱区域表配置错误，层数: " .. tostring(层数))
                        -- 跳过陷阱逻辑，直接进入下一阶段
                        if 地图.存活怪物总数 == 0 then
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    end
                elseif 节点 == 3 then
                    --这里提示怪物清除
                    地图:地图公告("<#P0:" .. 层数 .. "><#T:50025>") -- 第[X]层妖物已清除！
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 4 then
                    --这里提示获取经验
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家:玩家增加经验(nil, 妖塔获取经验表[层数][1])
                    end
                    地图:地图公告("<#P0:" .. 层数 .. "><#P1:".. 妖塔获取经验表[层数][1] .."><#T:990313>") -- 恭喜你获得第[X]层经验：共计[XXX]经验值
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 5 then
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家.角色数据.日程进度.V = 玩家.角色数据.日程进度.V + 妖塔活跃度表[层数]
                        玩家:发送日程详情()
                        玩家.角色数据.零点数字[数字_妖塔每日奖励层数] = 层数 --将人物最高层数=当前层数
                    end
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(3.0)
                elseif 节点 == 6 then
                    --这里提示下层传送门刷新
                    if 层数 ~= 9 then
                        地图:地图公告("<#T:50030>") -- 传送阵已开启，请点击前往下一层！
                    else
                        地图:地图公告("恭喜您通过了所有的挑战！请点击传送阵离开妖塔！") -- 九层妖塔完成提示
                    end
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddHours(1.0)
                    刷新守卫从地图实例(6123, 地图, 游戏方向.下方, 妖塔传送阵刷新表[层数])
                end
            end
        end
    end
    
    if 地图.数字变量[数字_妖塔级别] == 1 then
        if 主程.当前时间 > 地图.节点计时 then
            if 地图.玩家列表.Count == 0 then
                地图.副本节点 = 255
            end
            if 地图.副本节点 == 255 then
                地图:关闭副本()
            elseif 地图.副本节点 == 0 then
                地图:地图公告("欢迎进入妖塔秘境【标准】的试炼！")
                地图.副本节点 = 地图.副本节点 + 1
                地图.节点计时 = 主程.当前时间:AddSeconds(5.0)
                激活妖塔祭坛(地图)
            elseif 地图.副本节点 == 1 then
                地图:地图公告("在妖物出现时，您必须点击正确的祭坛以提供庇护！")
                地图.副本节点 = 10
                地图.节点计时 = 主程.当前时间:AddSeconds(5.0)
            elseif 地图.副本节点 > 9 then
                local 节点 = 地图.副本节点 % 10
                local 层数 = 10
                if 节点 == 0 then
                    地图.数字变量[数字_妖塔祭坛类型] = randomNum(0,1,true)
                    地图:地图公告("<#T:" .. 700373 + 地图.数字变量[数字_妖塔祭坛类型] .. ">") -- 秘境标准妖物即将出现公告：700373=烈焰，700374=寒霜
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                elseif 节点 == 1 then
                    地图:地图公告("<#T:" .. 700373 + 地图.数字变量[数字_妖塔祭坛类型] .. ">") -- 秘境标准妖物即将出现公告：700373=烈焰，700374=寒霜
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                    --开始刷怪
                    local 怪物刷新 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                    if 怪物刷新 ~= nil then
                        范围刷新怪物从地图实例(从表随机取值(妖塔精英刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        -- 范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true, true, 3)
                        激活妖塔怪物BUFF(地图, 地图.数字变量[数字_妖塔祭坛类型] or 0)
                    end
                elseif 节点 == 2 then
                    -- 秘境标准陷阱逻辑（与普通副本相同）
                    if 层数 >= 1 and 层数 <= 10 and 妖塔陷阱区域表[层数] then
                        local 陷阱刷新 = 获取副本怪物区域(地图, 妖塔陷阱区域表[层数])
                        if 地图.存活怪物总数 ~= 0 then
                            地图:宠物添加角色BUFF(58001)
                            地图:宠物添加角色BUFF(58011)
                            if 地图.数字变量[数字_陷阱刷新间隔_KEY] and 地图.数字变量[数字_陷阱刷新间隔_KEY] > 0 then
                                地图.数字变量[数字_陷阱刷新间隔_KEY] = 地图.数字变量[数字_陷阱刷新间隔_KEY] - 1
                            else
                                -- print("秘境标准尝试刷新陷阱，层数: " .. 层数)
                                if 陷阱刷新 ~= nil then
                                    -- 添加概率控制，只有30%的几率刷新陷阱
                                    if randomNum(1, 100, true) <= 30 then
                                        local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                        if 陷阱类型 == "落石" then
                                            地图:地图公告("落石即将降临！小心被砸到！")
                                        elseif 陷阱类型 == "炸弹" then
                                            地图:地图公告("炸弹爆炸！快躲开！")
                                        elseif 陷阱类型 == "飞轮" then
                                            地图:地图公告("我的飞轮会让你无处可逃！")
                                        elseif 陷阱类型 == "熔火" then
                                            地图:地图公告("熔火来袭，快来躲避！")
                                        end
                                        -- print("秘境标准刷新陷阱类型: " .. 陷阱类型)
                                        范围刷新怪物从地图实例(陷阱类型, 地图, 0, 陷阱刷新:获取刷新范围(), true, true)
                                    end
                                    地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                else
                                    local 怪物区域 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                                    if 怪物区域 ~= nil then
                                        -- 添加概率控制，只有30%的几率刷新陷阱
                                        if randomNum(1, 100, true) <= 30 then
                                            local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                            if 陷阱类型 == "落石" then
                                                地图:地图公告("落石即将降临！小心被砸到！")
                                            elseif 陷阱类型 == "炸弹" then
                                                地图:地图公告("炸弹爆炸！快躲开！")
                                            elseif 陷阱类型 == "飞轮" then
                                                地图:地图公告("我的飞轮会让你无处可逃！")
                                            elseif 陷阱类型 == "熔火" then
                                                地图:地图公告("熔火来袭，快来躲避！")
                                            end
                                            范围刷新怪物从地图实例(陷阱类型, 地图, 0, 怪物区域:获取刷新范围(), true, true)
                                        end
                                        地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                    end
                                end
                            end
                        else
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    else
                        if 地图.存活怪物总数 == 0 then
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    end
                elseif 节点 == 3 then
                    --这里提示怪物清除
                    地图:地图公告("妖塔秘境【标准】中强大的敌人已经被清除。")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 4 then
                    --这里提示获取经验
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家:玩家增加经验(nil, 妖塔获取经验表[层数][1])
                    end
                    地图:地图公告("<#P0:".. 妖塔获取经验表[层数][1] .."><#T:恭喜你获得妖塔秘境【标准】经验奖励：共计[`~]经验值。>")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 5 then
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家.角色数据.零点数字[数字_妖塔每日奖励层数] = 层数 --将人物最高层数=当前层数
                    end
                    地图:地图公告("恭喜您通过了妖塔秘境【标准】的试炼！请点击传送阵离开妖塔！")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 6 then
                    --这里提示下层传送门刷新
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddHours(1.0)
                    刷新守卫从地图实例(6123, 地图, 游戏方向.下方, 妖塔传送阵刷新表[层数])
                end
            end
        end
    end
	
    if 地图.数字变量[数字_妖塔级别] == 2 then
        if 主程.当前时间 > 地图.节点计时 then
            if 地图.玩家列表.Count == 0 then
                地图.副本节点 = 255
            end
            if 地图.副本节点 == 255 then
                地图:关闭副本()
            elseif 地图.副本节点 == 0 then
                地图:地图公告("欢迎进入妖塔秘境【进阶】的试炼！")
                地图.副本节点 = 地图.副本节点 + 1
                地图.节点计时 = 主程.当前时间:AddSeconds(5.0)
                激活妖塔祭坛(地图)
            elseif 地图.副本节点 == 1 then
                地图:地图公告("在妖物出现时，您必须点击正确的祭坛以提供庇护！")
                地图.副本节点 = 10
                地图.节点计时 = 主程.当前时间:AddSeconds(5.0)
            elseif 地图.副本节点 > 9 then
                local 节点 = 地图.副本节点 % 10
                local 层数 = 11
                if 节点 == 0 then
                    地图.数字变量[数字_妖塔祭坛类型] = randomNum(0,1,true)
                    地图:地图公告("<#T:" .. 700373 + 地图.数字变量[数字_妖塔祭坛类型] .. ">") -- 秘境进阶妖物即将出现公告：700373=烈焰，700374=寒霜
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                elseif 节点 == 1 then
                    地图:地图公告("<#T:" .. 700373 + 地图.数字变量[数字_妖塔祭坛类型] .. ">") -- 秘境进阶妖物即将出现公告：700373=烈焰，700374=寒霜
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                    --开始刷怪
                    local 怪物刷新 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                    if 怪物刷新 ~= nil then
                        范围刷新怪物从地图实例(从表随机取值(妖塔精英刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        -- 范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true, true, 3)
                        激活妖塔怪物BUFF(地图, 地图.数字变量[数字_妖塔祭坛类型] or 0)
                    end
                elseif 节点 == 2 then
                    -- 秘境标准陷阱逻辑（与普通副本相同）
                    if 层数 >= 1 and 层数 <= 10 and 妖塔陷阱区域表[层数] then
                        local 陷阱刷新 = 获取副本怪物区域(地图, 妖塔陷阱区域表[层数])
                        if 地图.存活怪物总数 ~= 0 then
                            地图:宠物添加角色BUFF(58001)
                            地图:宠物添加角色BUFF(58011)
                            if 地图.数字变量[数字_陷阱刷新间隔_KEY] and 地图.数字变量[数字_陷阱刷新间隔_KEY] > 0 then
                                地图.数字变量[数字_陷阱刷新间隔_KEY] = 地图.数字变量[数字_陷阱刷新间隔_KEY] - 1
                            else
                                -- print("秘境标准尝试刷新陷阱，层数: " .. 层数)
                                if 陷阱刷新 ~= nil then
                                    local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                    if 陷阱类型 == "落石" then
                                        地图:地图公告("落石即将降临！小心被砸到！")
                                    elseif 陷阱类型 == "炸弹" then
                                        地图:地图公告("炸弹爆炸！快躲开！")
                                    elseif 陷阱类型 == "飞轮" then
                                        地图:地图公告("我的飞轮会让你无处可逃！")
                                    elseif 陷阱类型 == "熔火" then
                                        地图:地图公告("熔火来袭，快来躲避！")
                                    end
                                    -- print("秘境标准刷新陷阱类型: " .. 陷阱类型)
                                    范围刷新怪物从地图实例(陷阱类型, 地图, 0, 陷阱刷新:获取刷新范围(), true, true)
                                    地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                else
                                    local 怪物区域 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                                    if 怪物区域 ~= nil then
                                        local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                        if 陷阱类型 == "落石" then
                                            地图:地图公告("落石即将降临！小心被砸到！")
                                        elseif 陷阱类型 == "炸弹" then
                                            地图:地图公告("炸弹爆炸！快躲开！")
                                        elseif 陷阱类型 == "飞轮" then
                                            地图:地图公告("我的飞轮会让你无处可逃！")
                                        elseif 陷阱类型 == "熔火" then
                                            地图:地图公告("熔火来袭，快来躲避！")
                                        end
                                        范围刷新怪物从地图实例(陷阱类型, 地图, 0, 怪物区域:获取刷新范围(), true, true)
                                        地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                    end
                                end
                            end
                        else
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    else
                        if 地图.存活怪物总数 == 0 then
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    end
                elseif 节点 == 3 then
                    --这里提示怪物清除
                    地图:地图公告("妖塔秘境【进阶】中强大的敌人已经被清除。")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 4 then
                    --这里提示获取经验
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家:玩家增加经验(nil, 妖塔获取经验表[层数][1])
                    end
                    地图:地图公告("<#P0:".. 妖塔获取经验表[层数][1] .."><#T:恭喜你获得妖塔秘境【进阶】经验奖励：共计[`~]经验值。>")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 5 then
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家.角色数据.零点数字[数字_妖塔每日奖励层数] = 层数 --将人物最高层数=当前层数
                    end
                    地图:地图公告("恭喜您通过了妖塔秘境【进阶】的试炼！请点击传送阵离开妖塔！")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 6 then
                    --这里提示下层传送门刷新
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddHours(1.0)
                    刷新守卫从地图实例(6123, 地图, 游戏方向.下方, 妖塔传送阵刷新表[层数])
                end
            end
        end
    end
	
    if 地图.数字变量[数字_妖塔级别] == 3 then
        if 主程.当前时间 > 地图.节点计时 then
            if 地图.玩家列表.Count == 0 then
                地图.副本节点 = 255
            end
            if 地图.副本节点 == 255 then
                地图:关闭副本()
            elseif 地图.副本节点 == 0 then
                地图:地图公告("欢迎进入妖塔秘境【困难】的试炼！")
                地图.副本节点 = 地图.副本节点 + 1
                地图.节点计时 = 主程.当前时间:AddSeconds(5.0)
                激活妖塔祭坛(地图)
            elseif 地图.副本节点 == 1 then
                地图:地图公告("在妖物出现时，您必须点击正确的祭坛以提供庇护！")
                地图.副本节点 = 10
                地图.节点计时 = 主程.当前时间:AddSeconds(5.0)
            elseif 地图.副本节点 > 9 then
                local 节点 = 地图.副本节点 % 10
                local 层数 = 12
                if 节点 == 0 then
                    地图.数字变量[数字_妖塔祭坛类型] = randomNum(0,1,true)
                    地图:地图公告("<#T:" .. 700373 + 地图.数字变量[数字_妖塔祭坛类型] .. ">") -- 秘境困难妖物即将出现公告：700373=烈焰，700374=寒霜
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                elseif 节点 == 1 then
                    地图:地图公告("<#T:" .. 700373 + 地图.数字变量[数字_妖塔祭坛类型] .. ">") -- 秘境困难妖物即将出现公告：700373=烈焰，700374=寒霜
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(4.0)
                    --开始刷怪
                    local 怪物刷新 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                    if 怪物刷新 ~= nil then
                        范围刷新怪物从地图实例(从表随机取值(妖塔精英刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        范围刷新怪物从地图实例(从表随机取值(妖塔普通刷新怪物表[层数]), 地图, 0, 怪物刷新:获取刷新范围(), true, true)
                        激活妖塔怪物BUFF(地图, 地图.数字变量[数字_妖塔祭坛类型] or 0)
                    end
                elseif 节点 == 2 then
                    -- 秘境标准陷阱逻辑（与普通副本相同）
                    if 层数 >= 1 and 层数 <= 10 and 妖塔陷阱区域表[层数] then
                        local 陷阱刷新 = 获取副本怪物区域(地图, 妖塔陷阱区域表[层数])
                        if 地图.存活怪物总数 ~= 0 then
                            if 地图.数字变量[数字_陷阱刷新间隔_KEY] and 地图.数字变量[数字_陷阱刷新间隔_KEY] > 0 then
                                地图.数字变量[数字_陷阱刷新间隔_KEY] = 地图.数字变量[数字_陷阱刷新间隔_KEY] - 1
                            else
                                -- print("秘境标准尝试刷新陷阱，层数: " .. 层数)
                                if 陷阱刷新 ~= nil then
                                    local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                    -- print("秘境标准刷新陷阱类型: " .. 陷阱类型)
                                    范围刷新怪物从地图实例(陷阱类型, 地图, 0, 陷阱刷新:获取刷新范围(), true, true)
                                    地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                else
                                    local 怪物区域 = 获取副本怪物区域(地图, 妖塔刷新区域表[层数])
                                    if 怪物区域 ~= nil then
                                        local 陷阱类型 = 从表随机取值(妖塔陷阱刷新怪物表[层数])
                                        范围刷新怪物从地图实例(陷阱类型, 地图, 0, 怪物区域:获取刷新范围(), true, true)
                                        地图.数字变量[数字_陷阱刷新间隔_KEY] = 500
                                    end
                                end
                            end
                        else
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    else
                        if 地图.存活怪物总数 == 0 then
                            地图.副本节点 = 地图.副本节点 + 1
                            地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                        end
                    end
                elseif 节点 == 3 then
                    --这里提示怪物清除
                    地图:地图公告("妖塔秘境【困难】中强大的敌人已经被清除。")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 4 then
                    --这里提示获取经验
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家:玩家增加经验(nil, 妖塔获取经验表[层数][1])
                    end
                    地图:地图公告("<#P0:".. 妖塔获取经验表[层数][1] .."><#T:恭喜你获得妖塔秘境【困难】经验奖励：共计[`~]经验值。>")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 5 then
                    local 玩家列表 = 地图:获取玩家列表()
                    for i = 0, 玩家列表.Count - 1 do
                        local 玩家 = 玩家列表[i]
                        玩家.角色数据.零点数字[数字_妖塔每日奖励层数] = 层数 --将人物最高层数=当前层数
                    end
                    地图:地图公告("恭喜您通过了妖塔秘境【困难】的试炼！请点击传送阵离开妖塔！")
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddSeconds(1.0)
                elseif 节点 == 6 then
                    --这里提示下层传送门刷新
                    地图.副本节点 = 地图.副本节点 + 1
                    地图.节点计时 = 主程.当前时间:AddHours(1.0)
                    刷新守卫从地图实例(6123, 地图, 游戏方向.下方, 妖塔传送阵刷新表[层数])
                end
            end
        end
    end	

end

function 激活妖塔怪物BUFF(地图, 冰火)
    local 怪物列表 = 地图:获取怪物列表()
    for i = 0, 怪物列表.Count - 1 do
        local 怪物 = 怪物列表[i]
        怪物:添加Buff时处理(58000 + 冰火 * 10, 怪物)
    end
end

function 激活妖塔祭坛(地图)
    local 守卫列表 = 地图:获取守卫列表()
    for i = 0, 守卫列表.Count - 1 do
        local 守卫 = 守卫列表[i]
        if 守卫.模板编号 == 6115 then
            守卫:添加Buff时处理(58002, 守卫)
            守卫:添加Buff时处理(58003, 守卫)
            守卫:发送聊天信息("<#T:50031>") -- 烈火祭坛已经激活！
        end
        if 守卫.模板编号 == 6116 then
            守卫:添加Buff时处理(58012, 守卫)
            守卫:添加Buff时处理(58013, 守卫)
            守卫:发送聊天信息("<#T:50032>") -- 寒冰祭坛已经激活！
        end
    end
end
