DNF90 服务端与启动器完整源码(含 GM 工具功能增强)
服务端(Go): - GM 塞背包/带属性装备发放:在线角色推送 op14 增量物品行,背包实时刷新,无需回角色选择界面 - GM 改金币/改等级:去掉在线拒绝,落库后推送 op14 钱包/op37 等级状态,在线实时刷新 - 等级端点统一切换到新版 GMSetCharacterLevel(自带在线刷新) - 无限/锁死疲劳模式 + 燃烧疲劳:每房间消耗 2 点、打怪与通关经验双倍 - 燃烧疲劳开关时给所有在线角色推送系统提示(op12 mode 0) - 深渊史诗掉率:GM 全局倍率 + 城镇增益药剂窗口倍率,真实接入掉落结算 启动器(Python/JS): - 标题栏自绘、窗口 1204x717、禁止拖拽改大小、仅最小化/关闭 - GM 工具:疲劳与燃烧、深渊史诗掉率、拍卖行上架(单一定价对齐) - 拍卖行上架前端对齐服务端单一价格语义,修复 400 报错
This commit is contained in:
commit
645b64fe21
4388 files changed
+1405457
No files matched your search
@@ -0,0 +1,86 @@
|
||||
package raid
|
||||
|
||||
// 超时空之战:战况表格子上要画的"怪物头像"用的是**真实的怪物 ID**,而这只怪是
|
||||
// 谁,写在 PVF 里,不是服务端自编的一张表:
|
||||
//
|
||||
// dungeon/gcontents/180621_fiendwar/cosmo_*.dgn
|
||||
// [maze info] → [map specification] `boss` x y <mapID>
|
||||
// map/gcontents/180621_fiendwar/dungeon/(2,0)_Boss_<mapID>.map
|
||||
// [monster] <怪物ID> ... `[fixed]` `[boss]`
|
||||
//
|
||||
// 本文件把这条对应关系固化成表;`raid_fiendwar_monster_pvf_test.go` 会逐条回读
|
||||
// 真 PVF 复核(每张 maze 的 BOSS 房地图、里面那只 [boss]、以及 maze 张数),
|
||||
// 数据漂移会让测试先红,而不是等玩家看见错的头像。
|
||||
//
|
||||
// 权威出处(百度百科「超时空之战」· 怪物信息):
|
||||
// "其中前哨基地/兵站本营/攻击基地中的怪物以随机分配的形式出现在地图中。"
|
||||
// —— 分配发生在**建图那一刻**,所以前哨基地/兵站本营的领主是开团时就抽定的
|
||||
// (见 FiendWarBattle.FixtureMazes,按格子位置钉死),雷达通关后战况表显示的与进图实际打到的才会
|
||||
// 是同一只。
|
||||
//
|
||||
// 权威出处(同一页 · 地图构造):"雷达:该副本通关后增加所有玩家10%技能伤害,
|
||||
// 并显示地图中怪物头像。(反之怪物头像显示问号)" —— 揭示的开关就是 RADAR STATE。
|
||||
|
||||
// fiendWarArmyBossIDs 是"攻击基地用"的四只稀有怪,也就是敌军军团 type 1..4 会走进
|
||||
// 的那张 maze(maze = type-1)的领主:
|
||||
//
|
||||
// 1 魅妖公主(110979) / 2 融合型恶魔(110977) / 3 狂热恶魔:破坏者(110987) / 4 超合金恶魔:艾罗伊(110982)
|
||||
//
|
||||
// 千分比权重就是 PVF 的 [ENEMY CREATE RATE] 1 30000 2 30000 3 30000 4 10000。
|
||||
var fiendWarArmyBossIDs = [4]uint32{110979, 110977, 110987, 110982}
|
||||
|
||||
// fiendWarOrcBossIDs 是"随机中立"的原生怪(非移动型)领主,也就是 monster type
|
||||
// 1..2 会走进的那张 maze(maze = type+3)的领主:
|
||||
//
|
||||
// 1 面霸1号(110714) / 2 兽人队长:血之埃克斯(110975)
|
||||
//
|
||||
// maze 4/5 的小怪是山贼兽人/山贼弩兵/山贼头头(FarmerOrc/ArcherOrc/BanditOrc/BanditOrcHead),
|
||||
// 与百科"原生怪物(非移动型怪物)· 随机中立"那一栏一致。
|
||||
var fiendWarOrcBossIDs = [2]uint32{110714, 110975}
|
||||
|
||||
// FiendWarFixtureBossIDs 是每个设施副本、逐张 maze 的领主。
|
||||
//
|
||||
// 长度就是这张副本的 maze 张数:雷达/炮塔/量子时空传送站只有 1 张(领主恒定),
|
||||
// 前哨基地与兵站本营各有 3 张(领主随机分配,开团抽定)。
|
||||
var FiendWarFixtureBossIDs = map[int][]uint32{
|
||||
// 雷达基地:磁力恶魔:马格内特
|
||||
4963: {110973},
|
||||
// 炮塔:常春魔藤
|
||||
4965: {110980},
|
||||
// 前哨基地:人类背叛者:宾柏 / 引力恶魔:薛丁恶 / 宇宙粉碎机:克鲁瑟
|
||||
4967: {110981, 110984, 110708},
|
||||
4969: {110981, 110984, 110708},
|
||||
4971: {110981, 110984, 110708},
|
||||
// 兵站本营:光之恶魔:欧格里 / 暗之恶魔:艾森 / 重力恶魔:白斯
|
||||
4975: {110709, 110978, 110992},
|
||||
4976: {110709, 110978, 110992},
|
||||
4977: {110709, 110978, 110992},
|
||||
// 量子时空传送站:宇宙恶魔:罗什(纯白 / 黑暗)
|
||||
4953: {110995},
|
||||
4978: {110994},
|
||||
}
|
||||
|
||||
// FiendWarArmyBossID 返回敌军军团某兵种对应的领主。
|
||||
func FiendWarArmyBossID(enemyType byte) (uint32, bool) {
|
||||
if enemyType < 1 || int(enemyType) > len(fiendWarArmyBossIDs) {
|
||||
return 0, false
|
||||
}
|
||||
return fiendWarArmyBossIDs[enemyType-1], true
|
||||
}
|
||||
|
||||
// FiendWarOrcBossID 返回原生怪(中立兽人)某兵种对应的领主。
|
||||
func FiendWarOrcBossID(monsterType byte) (uint32, bool) {
|
||||
if monsterType < 1 || int(monsterType) > len(fiendWarOrcBossIDs) {
|
||||
return 0, false
|
||||
}
|
||||
return fiendWarOrcBossIDs[monsterType-1], true
|
||||
}
|
||||
|
||||
// FiendWarFixtureBossID 返回设施副本第 maze 张图的领主。
|
||||
func FiendWarFixtureBossID(dungeon, maze int) (uint32, bool) {
|
||||
bosses, ok := FiendWarFixtureBossIDs[dungeon]
|
||||
if !ok || maze < 0 || maze >= len(bosses) {
|
||||
return 0, false
|
||||
}
|
||||
return bosses[maze], true
|
||||
}
|
||||
Reference in new issue
Block a user