# 世界BOSS争夺战系统设计文档 ## 系统概述 本系统实现了三个主要活动模块: 1. **世界BOSS争夺战** - 每周日晚8点开启,玩家争夺BOSS掉落物品 2. **攻城战** - 开服2周后开启,战盟争夺城堡控制权 3. **怪物军团** - 每周三、周五晚上7点开启,抵御怪物入侵 ## 系统架构 ### 模块结构 ``` ActivityManager.lua # 活动管理器(主控制器) ├── WorldBoss.lua # 世界BOSS争夺战系统 ├── WorldBossAuction.lua # 世界BOSS拍卖系统 ├── SiegeWar.lua # 攻城战系统 └── MonsterLegion.lua # 怪物军团系统 ``` ### 数据持久化 系统使用Lua内置的持久化API: - `setsysvar()` / `getsysvar()` - 系统级全局变量 - `setplaydef()` / `getplaydef()` - 玩家级变量 - `setguilddef()` / `getguilddef()` - 战盟级变量 ## 世界BOSS争夺战系统 ### 活动流程 1. **报名阶段**(30分钟) - 玩家个人报名 - 最少50人报名才开启战斗 - 强制战盟模式 2. **战斗阶段**(60分钟) - 所有报名玩家进入战场 - PK不红名,死亡可钻石复活 - 按个人和战盟统计伤害 3. **拍卖阶段**(30分钟) - 所有参与战斗的玩家可参与 - 装备起拍价300钻石 - 彩云兽起拍价500钻石 - 一代坐骑/宠物起拍价2000钻石 - 项链起拍价10000钻石 ### BOSS配置 #### 炽焰魔 - **血量**:基础血量 × 2.0 - **伤害**:基础伤害 × 0.5 - **必定掉落**: - 卓越装备2件(3-4属性) - 卓越套装1件(3-4属性) - **概率掉落**: - 彩云兽(10%) - 卓越项链(30%,2-3属性,必带卓越一击) #### 咒怨魔王 - **血量**:基础血量 × 2.5 - **伤害**:基础伤害 × 0.4 - **必定掉落**: - 卓越装备2件(3-4属性) - 卓越套装2件(3-4属性) - **概率掉落**: - 1代坐骑(15%) - 1代宠物(15%) - 卓越项链(40%,2-3属性,必带卓越一击) ### 拍卖收益分配 #### 战盟分配(按总伤害排名) - 第1名:50% - 第2名:30% - 第3名:20% #### 战盟内玩家分配(按BOSS伤害排名) - 第1名:30% - 第2名:25% - 第3名:20% - 第4名:10% - 第5名:5% - 剩余:平均分配 ## 攻城战系统 ### 活动流程 1. **准备阶段**(30分钟) - 战盟报名 - 设置城堡血量 2. **攻击阶段**(60分钟) - 所有报名战盟攻击城堡 - 攻击方伤害加成1.2倍 3. **防守阶段**(30分钟) - 城堡拥有者战盟防守 - 防守方伤害加成1.5倍 ### 城堡配置 - **最大血量**:1,000,000 - **占领阈值**:剩余血量10% - **奖励倍数**:获胜战盟2.0倍 ## 怪物军团系统 ### 活动流程 1. **准备阶段**(15分钟) - 玩家报名 - 生成第一波怪物 2. **入侵阶段**(5波怪物) - 第1波:小怪入侵(50只,100级) - 第2波:精英怪(30只,150级) - 第3波:混合部队(40只,200级) - 第4波:强力精英(25只,250级) - 第5波:军团BOSS(1只,300级) ### 奖励系统 - **基础分数**:100分 - **击杀倍数**:10倍 - **BOSS击杀奖励**:1000分 - **波次完成奖励**:500分 - **战盟加成**:1.2倍 ## 技术特性 ### 数据持久化 - 所有活动数据自动保存到数据库 - 服务器重启后数据不丢失 - 支持系统级、玩家级、战盟级数据存储 ### 定时器系统 - 自动检查活动状态 - 自动切换活动阶段 - 自动结束和清理活动 ### 错误处理 - 使用pcall保护关键函数调用 - 详细的错误日志记录 - 优雅的异常恢复机制 ### 模块化设计 - 每个活动系统独立运行 - 统一的接口规范 - 易于扩展和维护 ## 使用方法 ### 初始化系统 ```lua local ActivityManager = require("ActivityManager") ActivityManager.Init() ``` ### 获取活动信息 ```lua local activities = ActivityManager.GetAllActivitiesInfo() for _, activity in ipairs(activities) do print(activity.name, activity.status, activity.timeRemaining) end ``` ### 玩家参与活动 ```lua local success, message = ActivityManager.PlayerJoinActivity(actor, 1) -- 1=世界BOSS if success then print("报名成功") else print("报名失败:", message) end ``` ### 获取排行榜 ```lua local playerRanking = ActivityManager.GetActivityRanking(1, "player") -- 世界BOSS玩家排名 local allianceRanking = ActivityManager.GetActivityRanking(1, "alliance") -- 世界BOSS战盟排名 ``` ## 配置说明 ### 时间配置 - 世界BOSS:每周日晚8点 - 攻城战:开服2周后,每周六晚8点 - 怪物军团:每周三、周五晚上7点 ### 人数限制 - 世界BOSS:最少50人报名 - 攻城战:无人数限制 - 怪物军团:最少20人报名 ### 奖励配置 - 拍卖手续费:20% - 战盟分配比例:50%、30%、20% - 玩家分配比例:30%、25%、20%、10%、5% ## 扩展建议 ### 新增活动类型 1. 在`ActivityManager.lua`中添加新的活动类型 2. 创建对应的活动模块 3. 实现统一的接口函数 ### 自定义配置 1. 修改各模块中的配置常量 2. 支持从配置文件读取 3. 支持运行时动态调整 ### 客户端集成 1. 实现客户端通知接口 2. 添加UI界面支持 3. 实现实时数据同步 ## 注意事项 1. **数据一致性**:确保所有数据操作都使用持久化API 2. **性能优化**:避免频繁的数据库操作,合理使用缓存 3. **错误处理**:所有关键操作都要有错误处理机制 4. **日志记录**:重要事件要记录详细日志 5. **测试验证**:在测试环境充分验证后再部署到生产环境 ## 版本历史 - **v1.0.0** - 初始版本,包含三个主要活动系统 - 支持完整的数据持久化 - 模块化设计,易于维护和扩展 - 完整的错误处理和日志记录