feat(map-gen/population): 完善户外荒野地图第7步「动态实体与遭遇战填充 (Population Phase)」 #36
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景说明
在《暗黑破坏神2》的户外荒野地图(Wilderness Level,
DrlgType = 3)7 步生成管线中,第 1~6 步(拓扑初始化、方向边界Border 1..8与开放大门Bord1o..4o锚定、特殊任务地标预设散布、泥土路网折线寻路、LvlSub.txt避障替换、256 项 8 邻域位掩码泥土瓦片合成与5 \times 5子格碰撞网格)已在src/game/wilderness.ts中完整落地并通过验证。目前 DS1 预制体自带的静态实体坐标(
level.objects)已随stampDs1导出,但**第 7 步:动态单位、物件与遭遇战生成(Population Phase / 对应原版D2Game.dll动态填充与部分D2Common道路附属生成)**尚未完全实现,特此立项追踪。待实现功能清单 (TODOs)
1. 户外怪物群落(Monster Packs)与密度刷怪机制
Levels.txt怪物池:根据当前关卡的Mon1~Mon25(普通难度)及nmon1~nmon25(噩梦/地狱)字段选择合法怪物种类。MonStats.txt中的MinGrp/MaxGrp,以“怪堆(Pack + 随从)”为单位在开阔草地区域(非障碍物、非水域)成群生成,而非单只零散随机刷怪。TownETrans.ds1/TownSTrans.ds1)及传送点周围保留安全排斥半径,避免玩家刚出门即被贴脸包围。Levels.txt中的MonUMin/MonUMax数量区间,在开阔区块或任务地标周边刷出头目怪(Champion)或随机暗金金怪(Unique Boss + Minions)并赋予词缀。2. 固定超级暗金怪(SuperUniques)与守卫 NPC 行为绑定
rogue2):\leftrightarrow冰冷高原交界处的开放大门预制体(Bord1o.ds1~Bord4o.ds1)内激活罗格斥候 NPC 弗拉维,绑定驻守巡逻与自动射击靠近怪物的 AI。bivouac)预制体内。cairn2.ds1)旁。funktree.ds1)旁。gravey.ds1)内。3. 程序化小站(Waypoint)与路边交互物件散布
DRLGOUTDOORS_SpawnAct12Waypoint):Id = 3、石块旷野Id = 4、黑暗森林Id = 5、黑色荒地Id = 6),于靠近主干道且开阔平坦的1 \times 1区块自动生成小站底座及传送交互点。DRLGOUTDOORS_SpawnAct12Shrines):dirtPathGrid邻近格)与废墟旁按概率刷出神殿(Shrines)、恢复水井(Wells)、营火残骸、可踢翻的碎石/木桶以及普通宝箱,并对接TreasureClassEx.txt掉落表。关联代码位置
src/game/wilderness.ts(见UNIMPLEMENTED_PASSES中的DRLGOUTDOORS_SpawnAct12Waypoint与DRLGOUTDOORS_SpawnAct12Shrines)src/game/iso-scene.tssrc/game/object-lookup.ts已在 commit
e9f2cee(feat(map-gen/population): implement wilderness population phase, waypoints, shrines, superuniques & safe zones (fixes #36)) 中完整实现户外荒野第 7 步(Population Phase)的所有要求,并通过全部单元测试(634 passed):1. 标准怪物群落刷怪与安全保护半径 (
SafeZone)planLevelMonsters根据Levels.txt(MonDen,MonUMin,MonUMax,m1..m10) 与MonStats.txt(MinGrp..MaxGrp) 预算并生成怪物小队,头目与随从 (minion) 保持簇状分布。combat.ts(spawnMonsterPacks) 与act-scene.ts中引入SafeZone排除判定,围绕玩家出生点 (radius: 180)、传送小站 (radius: 160) 与城镇过渡桥/边界出入口 (radius: 160) 建立安全区,杜绝过图即被怪群包围(Spawn Kill)。2. 精英头目(Champions & Uniques)与词缀 (
MonUMod.txt)monsters.ts中实现CANONICAL_ELITE_MODIFIERS、rollEliteModifiers与applyEliteModifiers,为蓝色头目(Champions,抽取strong/fast等)与金色暗金怪(Uniques,抽取 1~2 项词缀如cursed、fireenchant、lightenchant、coldenchant、stoneskin、magicresistant等)赋予对应的生命倍率、伤害加成(如Extra Strong+50% 伤害)与移速加成(如Extra Fast+40% 速度)。3. 固定暗金头目(SuperUniques)与特殊 NPC 地标绑定
levelId 3) 的沉沦魔营地Act 1 - Fallen Camp Bishibosh(bivouac)。levelId 4) 的凯恩之石Act 1 - Cairn Stones(cairn2),附带闪电强化 + 特别快速 (lightenchant,fast)。levelId 5) 的艾尼弗斯之树Act 1 - Inifus(funktree),附带特别强壮 + 特别快速 (strong,fast)。levelId 17/gravey)。rogue2):自动锚定在鲜血荒地 (levelId 2) 与冰冷之原 (levelId 3) 交界的开口边界门内侧(土路交界点)。4. 传送小站与路边神殿/交互物动态散布
DRLGOUTDOORS_SpawnAct12Waypoint):在冰冷之原 (3)、乱石旷野 (4)、黑暗森林 (5)、黑色荒地 (6) 等户外带小站地图的主干道 (dirt road) 旁自动寻找 3x3 开阔平地生成传送小站 (type: 2, id: 37)。DRLGOUTDOORS_SpawnAct12Shrines):沿主干道两侧及废墟/农舍周边自动散布神殿 (SF,SH,BC,SG)、治愈水井 (HW)、宝箱 (L1,C1,C2) 以及木桶/篝火 (BR,BF)。UNIMPLEMENTED_PASSES:已将DRLGOUTDOORS_SpawnAct12Waypoint与DRLGOUTDOORS_SpawnAct12Shrines从未实现列表中移除。