troytt
|
ffd4e6ae51
|
feat(skill-012): implement 1.13c Multiple Shot module and Vitest suite (#166)
|
2026-09-22 03:36:36 +00:00 |
troytt
|
a8bfc318e0
|
feat(skill-011): implement 1.13c Cold Arrow module and Vitest suite (#165)
|
2026-09-22 03:36:29 +00:00 |
troytt
|
1294496555
|
feat(skill-010): implement 1.13c Jab module and Vitest suite (#164)
|
2026-09-22 03:36:21 +00:00 |
troytt
|
5ec7c16294
|
feat(skill-009): implement 1.13c Critical Strike module and Vitest suite (#163)
|
2026-09-22 03:36:16 +00:00 |
troytt
|
50599c6833
|
feat(skill-008): implement 1.13c Inner Sight module and Vitest suite (#162)
|
2026-09-22 03:36:09 +00:00 |
troytt
|
d94b96241a
|
feat(skill-007): implement 1.13c Fire Arrow module and Vitest suite (#161)
|
2026-09-22 03:36:02 +00:00 |
troytt
|
f5c0b8f8b8
|
feat(skill-006): implement 1.13c Magic Arrow module and Vitest suite (#160)
|
2026-09-22 03:35:55 +00:00 |
troytt
|
cc44f72536
|
feat(skill-005): implement 1.13c Left Hand Swing module and Vitest suite (#159)
|
2026-09-22 03:35:46 +00:00 |
troytt
|
b87c7281f8
|
feat(skill-004): implement 1.13c Left Hand Throw module and Vitest suite (#158)
|
2026-09-22 03:35:38 +00:00 |
troytt
|
1d73542791
|
feat(skill-003): implement 1.13c Unsummon module and Vitest suite (#157)
|
2026-09-22 03:35:29 +00:00 |
troytt
|
5e2f189584
|
feat(skill-002): implement 1.13c Throw module and Vitest suite (#156)
|
2026-09-22 03:35:23 +00:00 |
troytt
|
7be0b1c707
|
feat(skill-001): implement 1.13c Kick module and Vitest suite (#155)
|
2026-09-22 03:35:14 +00:00 |
troytt
|
49abeb5f8c
|
feat(skill-000): implement 1.13c Attack module and Vitest suite (#154)
|
2026-09-22 03:35:06 +00:00 |
troytt
|
550787cb0a
|
feat(engine): implement R1 universal 1.13c skill engine, 7-class renderer, arena harness, and M2/E2E suites
|
2026-09-22 03:22:02 +00:00 |
troytt
|
244bdc1efb
|
fix: resolve slug edge cases and Act 5 Pandemonium level names (Fixes #147)
|
2026-09-22 03:17:22 +00:00 |
troytt
|
09cc23b53c
|
fix: load localized map area names from tbl on transition (Fixes #147)
|
2026-09-22 02:55:24 +00:00 |
troytt
|
f24ad292ca
|
feat(char): pack and render all 7 hero classes with R8 atlases and tests
|
2026-09-22 02:38:22 +00:00 |
troytt
|
c58cb60f79
|
fix: align ControlBar XP bar coordinates and 10-segment ticks (Fixes #146)
|
2026-09-22 02:06:48 +00:00 |
troytt
|
75eba8d9ff
|
feat(anim): 实现 Schema 2 实体图集打包与全量验证 (M1 完成)
|
2026-09-21 14:03:17 +00:00 |
troytt
|
3fa29ec0b8
|
feat(anim): 实现基于 8.8 定点数时钟的实体动画状态机与事件调度器 (ActorAnimator)
|
2026-09-21 13:50:23 +00:00 |
troytt
|
5586c50c8b
|
Merge branch 'feat/animation-system' into main: 合并动画锚点系统与 animdata 解析
|
2026-09-21 13:30:23 +00:00 |
troytt
|
f58ae5b693
|
feat(drlg): 注入 10,029 条原版 DT1 多候选地表加权池,修复库拉斯特与雪原瓦片并完成全量验证 (Phase D3)
|
2026-09-21 13:30:14 +00:00 |
troytt
|
380d01c6c3
|
feat(anim): 实现动画锚点系统、animdata 解析与玩家/怪物动画合成对齐
|
2026-09-21 13:30:04 +00:00 |
troytt
|
e2a74cc8f0
|
feat(ui/controls): 实现完整 UI/HUD 系统、操作快捷键对齐与装备词条染色 (fixes #134, fixes #135, fixes #136, fixes #137, fixes #138, fixes #139, fixes #140)
- R1 (Issue #134): 离线烘焙预生成 UI 图集 (public/ui/) 与 embedded DropTables,彻底消除 2 秒纯色占位回退,实现零运行期 MPQ/DLL 依赖
- R2 (Issue #135): 修复地图缩放 (0.4x~8.0x) 及多 DPR 下 NPC 名称标签与模型顶部的投影对齐
- R3 (Issue #136): HUD 与全屏画布采用 1:1 纵横比等比缩放与居中,彻底修复宽屏下红蓝球被横向拉伸为椭圆的问题
- R4 (Issue #137): 传送点菜单 (Waypoint Menu) 支持点击无缝跨场景传送,随机选取地图变体并平稳降落在对应小站子网格
- R5 (Issue #138): 角色属性面板 (InvChar6) 文本与数字完美对准背景凹槽石框,加点按钮对齐
- R6 (Issue #139): 物品栏 5 级回退 DC6 图标渲染,消灭空白占位框;装备 Tooltip 等比缩放与视口翻折防遮挡
- R7 (Issue #140): 任务日志界面集成 1~5 幕全量 27 个任务图标 (a1q1..a5q6) 及 27 帧已完成印章,第 4 幕自动进行插槽钳制保护
- Controls Parity: 还原原版左键移动/NPC交互/小站/攻击,Shift 强制原地站立攻击,右键释放技能与被动/无技能移动回退,解除 A/W/S/1..4 快捷键与移动冲突
- Tooltips & Dyes: 基于 1.13c PL2 调色板 Table 104 (cgrn) 渲染翡翠绿军帽,战争召唤按 descpriority 完整呈现 11 行符文之语属性与三行正统标题
|
2026-09-21 11:09:10 +00:00 |
troytt
|
ca55cd29d8
|
feat(i18n): 补全暗黑2全量词缀汉化、修复语序倒装、充能技能负数与属性词条解析 (Issue #122)
|
2026-09-19 12:35:08 +00:00 |
troytt
|
7f7b769840
|
feat(i18n): 装备与词条中英文多语言切换支持 EN/ZH/双语 (fixes #122)
|
2026-09-19 12:05:24 +00:00 |
troytt
|
fc6388779e
|
feat(tooltip/drop): 接线properties.ts实现显示层数据驱动化并完成Phase4 1.13c细节对齐 (fixes #133)
|
2026-09-19 11:06:06 +00:00 |
troytt
|
308e16f955
|
fix(affix): 校验词缀classspecific职业限制并支持职业专属装备classlevelreq等级需求 (fixes #132)
|
2026-09-19 10:51:55 +00:00 |
troytt
|
75eb4f4f4b
|
feat(drop/tooltip): 实现Superior/LowQuality属性、Ethereal无形与Socket打孔生成及Rare逐槽分配 (fixes #131)
|
2026-09-19 10:43:20 +00:00 |
troytt
|
041cd65ce0
|
fix(tooltip): 对齐1.13c dgrp全等合并规则,四抗与四维属性仅在全部相等时折叠显示 (fixes #130)
|
2026-09-19 10:32:47 +00:00 |
troytt
|
6d2de24000
|
feat(drop/affix): 将AutoMagic.txt与1.13c StaffMods接入掉落与Tooltip管线 (fixes #129)
|
2026-09-19 10:27:07 +00:00 |
troytt
|
72eb7dea8b
|
fix(affix/tooltip): 为魔法与稀有词缀补齐NON_RANDOM_RANGE_CODES保护,保留元素伤害区间与触发充能技能参数 (fixes #128)
|
2026-09-19 10:09:35 +00:00 |
troytt
|
a618ed7501
|
fix(drop): 基于ItemTypes.txt标志驱动品质判定与classSpecific传递,杜绝普通/劣质戒指护身符 (fixes #127)
|
2026-09-19 10:01:46 +00:00 |
troytt
|
b31a199e6b
|
fix(drop): 补齐Boss掉落monsterType=4使底模升级走Good档并建立1.13c回归基线 (fixes #126)
|
2026-09-19 09:52:01 +00:00 |
troytt
|
f68b1de4ec
|
feat(tooltip/stats): 实现武器防具基础属性增强与底模对照、词条合并与ItemStatCost优先级排序 (fixes #123, #125)
- Issue #123: 计算武器1H/2H增强伤害 (dmg%, dmg-min, dmg-max)、防具增强防御 (ac%, ac)、力量/敏捷/等级需求 (ease, levelreq) 及耐久度上限 (dur, dur%, 3x/2x降级),并附带原始底模数值对照(如 Two-Hand Damage: 36 to 48 (18 to 24), Defense: 260 (130), Required Strength: 124 (156))
- Issue #125: 实现 aggregateAndSortProperties:
* 自动合并 fire-min + fire-max -> Adds X-Y Fire Damage(冰、电、毒、物理同理)
* 自动合并 dgrp=2 四抗为 All Resistances +X,dgrp=1 四维为 +X to All Attributes
* 累加前后缀同类标量词缀,并按 ItemStatCost.txt descpriority (180..0) 严格降序排列
- 全程保持 1.13c 官方英文规范,新增 tests/item-tooltip-123-125.test.ts 专项单测通过
TAG=agy
CONV=aade657e-0c8e-42ff-a5f2-87b2afe80e02
|
2026-09-19 08:05:07 +00:00 |
troytt
|
2cf5acb459
|
fix(tooltip/affix): 对齐1.13c Properties/ItemStatCost/.tbl全量182项词条模板与descFunc=11规则 (fixes #124)
- 溯源并修正 rep-dur (ItemStatCost ID 252, descFunc=11, ModStre9t/ModStre9u):
按 seconds = Math.floor(100 / par) 计算恢复周期(如 par=5 为 20s,par=20 为 5s,par=3 为 33s)
- 内嵌 1.13c Skills.txt + SkillDesc.txt + ENG .tbl 全量 222 项技能名称与职业限制映射(支持 Wearwolf->Werewolf, Summon Fenris->Summon Dire Wolf, Plague Poppy->Poison Creeper, 197->Firestorm 等)
- 内嵌 1.13c CharStats.txt StrSkillTab1..3 + StrClassOnly 全部 21 个技能系 (par 0..20)
- 覆盖 UniqueItems / SetItems / Sets / MagicAffixes / AutoMagic 全部 182 个唯一属性代码,0 处回退泄露
- 新增 tests/item-tooltip-124.test.ts 覆盖全表 182 项属性代码断言,全量 1619 项单测通过
TAG=agy
CONV=aade657e-0c8e-42ff-a5f2-87b2afe80e02
|
2026-09-19 07:43:58 +00:00 |
troytt
|
84686b6939
|
feat(items): 属性词条具体数值Roll点、统一1.13c英文规范与品质降级Fallback机制 (Issue #122)
- 词条具体数值Roll点:Unique/Set/Magic/Rare 具备属性范围区间时通过 D2 PRNG randRange 随机 roll 出具体离散数值,保存在 Item.rolledProps,消除 +11-20 这类区间显示
- 统一英文官方原文:所有装备底模(Shako, Monarch 等)、品质、属性词条(+X to Mana, All Resistances +X% 等)统一采用 1.13c 英文 canonical 原文,在 Gitea 开启 Issue #122 跟踪中文本地化
- 严谨对齐 1.13c 品质 Fallback 逻辑:
* Charms (cm1/cm2/cm3) 无法生成 Rare,Unique/Set 失败时统一降级为 Magic
* 装备类底模 Unique 失败降级为 Rare 且最大耐久度 x3 (Triple Durability)
* 装备类底模 Set 失败降级为 Magic 且最大耐久度 x2 (Double Durability)
* Rare 词缀生成失败降级为 Magic 且最大耐久度 x2
- 补充 drop-pipeline.test.ts Section 7 专项单元测试,全量 1614 项测试全部通过
|
2026-09-19 04:17:15 +00:00 |
troytt
|
c9a9a5558d
|
fix(loot): 修复怪物选择器TC被Baal(H)死锁覆盖的缺陷 (Issue #121)
- 修复 getEffectiveTcName 中因比对 tcInput.value 产生误判,导致所有选定怪物均错误回退到初始 Baal (H) 的核心 Bug
- 引入清晰独立的 customTcOverride 状态变量,仅在用户显式提交高级自定义 TC 时生效
- 在选择新怪物、切换难度或切换任务首杀状态时自动重置 customTcOverride,保证当前怪物真实 1.13c TC 生效
- 优化怪物卡片 Picks 次数与单次 NoDrop 比例展示,提升数据可读性
- 新增 tests/loot.test.ts 专项测试验证 Council、Andariel、Pindleskin 等所有预设怪物 TC 解析正确性
|
2026-09-19 03:58:27 +00:00 |
troytt
|
9b4347a72f
|
feat(boss): 新建幕Boss击杀模拟与真实属性掉落页面 (boss.html)
- 新增 boss.html 及配套前端交互引擎 src/boss.ts,支持 Act 1~5 关底 Boss(安达利尔、督瑞尔、墨菲斯托、迪亚波罗、巴尔)
- 支持 普通/噩梦/地狱 三大难度与首杀 (Quest Kill) 切换
- 支持 1~8 人房间人数 (PP) 与 0~1000% 寻宝率 (MF) 动态调整
- 提取并内置 1.13c 完整掉落表数据 (src/data/canonical-drop-data.ts),支持零延迟离线秒开解析
- 修复 D2Rng 默认种子全零导致 NoDrop 的历史缺陷,以及杂项物品误入品质判定的问题
- 新增 src/game/item-tooltip.ts,完整还原暗金/套装/亮金/魔法/符文/基础装备的暗黑2经典属性面板
- 新增 tests/boss.test.ts 单元测试并全量通过 1603 项测试
|
2026-09-19 03:42:32 +00:00 |
troytt
|
79bf8f4cda
|
perf(scene): 解决首屏阻塞式 166 次 MPQ Range 请求导致的地图载入卡顿 (Issue #117)
- 将 DropTables 移出首屏临界路径,消除 runScene 启动时 166 次 MPQ HTTP Range 阻塞
- 引入 getSharedDropTables 全局单例记忆化缓存,避免跨地图切关卡时重复挂载与重读 MPQ
- 在 boot() 初始阶段提早非阻塞式预热,并在 GameEngine 创建后异步注入 dropTables
- 在 GameEngine 中添加 setDropTables 方法支持动态掉落表注入
- 新增 tests/scene-drop-preload.test.ts 覆盖单例缓存与延迟注入行为验证
TAG=agy
CONV=2a1934de-30ef-464e-b3f3-fcbcdbbc49f1
|
2026-09-19 03:03:28 +00:00 |
troytt
|
3317ef0d90
|
feat(loot): 完善首杀路由、种子锁规避与暂停继续交互 (Issue #110)
- 增强首杀/Bug杀模拟:支持 UI 首杀切换与 Boss 首杀 TC 自动路由(如 Baal -> Baalq)
- 修复无种子参数时 PRNG 零锁死导致的 100% NoDrop 偶发故障
- 增强逆向检索:掉落来源按综合概率降序排列并高亮展示
- 交互优化:新增蒙特卡洛模拟暂停/继续与优雅中断控制
TAG=agy
CONV=2a1934de-30ef-464e-b3f3-fcbcdbbc49f1
|
2026-09-18 15:05:37 +00:00 |
troytt
|
afc653dbc8
|
Merge branch 'issue-115'
|
2026-09-18 14:59:24 +00:00 |
troytt
|
111a631dc7
|
fix(monsters): 修正 SuperUniques.txt 随从类名转录笔误与打包白名单脱节 (Issue #115)
TAG=agy
CONV=2a1934de-30ef-464e-b3f3-fcbcdbbc49f1
|
2026-09-18 14:58:59 +00:00 |
troytt
|
51c869d547
|
Merge branch 'issue-116'
|
2026-09-18 14:32:27 +00:00 |
troytt
|
ad822bfe31
|
Merge branch 'issue-114'
|
2026-09-18 14:32:19 +00:00 |
troytt
|
0535a63174
|
Merge branch 'issue-112'
|
2026-09-18 14:32:12 +00:00 |
troytt
|
ed344259a1
|
fix(tiles): 参照 1.13c DRLGROOM_LoadDt1Files 补充常驻全局通用 DT1 (InvisWal / Blank / Warp) (Issue #112)
参照 1.13c D2Common.dll (DRLGROOM_LoadDt1Files @ 0x6fdb8400),在加载完 LvlTypes.txt 后无条件追加 3 个全局常驻通用 DT1:
- data\global\tiles\Act1\Outdoors\Blank.dt1
- data\global\tiles\Act1\Barracks\InvisWal.dt1
- data\global\tiles\Act1\Barracks\Warp.dt1
其中 InvisWal.dt1 包含 style=49 sequence=7 的地面阻挡瓦片 (walk-blocking collision invisible wall),解决了 Act 5 Hell 1 (125) 和 Pandemonium 3 (135) 等全地图漫游中报 missingTile: floor style=49 sequence=7:0 的问题。
TAG=agy
CONV=2a1934de-30ef-464e-b3f3-fcbcdbbc49f1
|
2026-09-18 14:31:42 +00:00 |
troytt
|
fd67de7b1b
|
fix(d2map): 修正空单元格阻挡掩码与玩家出生点虚空悬空问题 (Issue #114)
1. 在 buildIsoMapScene 中为所有无有效非隐藏地面的单元格(纯黑虚空)标记全部 25 个子瓦片为 blocked = 1 及 COLLIDE_MASK_INVALID (COLLIDE_BLANK | COLLIDE_WALL)。
2. 在 level-links.ts 中实现增强型 findIsoSpawn 并从 d2map.ts 导出,确保出生点单元格必须拥有有效地面且 blocked === 0,优先选取有效传送点/入口位置,或在包含地面的最大可行走连通区域中定位。
3. 添加单元测试 tests/iso-spawn-void-guard.test.ts,验证 16x16 画布中 4x4 房间外的虚空单元格全阻挡,且出生点必定落在房间内。
TAG=agy
CONV=2a1934de-30ef-464e-b3f3-fcbcdbbc49f1
|
2026-09-18 14:30:43 +00:00 |
troytt
|
f111ba5a74
|
fix(drlg): 消除 pickVariant 45度斜向机械平铺条纹并纠正生成器虚构 Style (Issue #116)
- src/game/d2map.ts: 替换 pickVariant 中线性的 (seed + cellX) * cellY 乘法公式为 SplitMix64 空间坐标散列,消除 45 度斜向机械平铺条纹并解决 row 0 退化问题。
- src/game/wilderness-acts.ts: 确保 Mesa 关卡(104~106)峡谷地面始终使用 Mesa 真实的 style 10 地砖,杜绝仅在 Lava 存在的 style 20 引用。
- src/game/wilderness-siege.ts: 攻城木桩栅栏破坏缺口两端(type 7 pillar)改用 fence.dt1 style 2 真实存在的 sequence 10 与 11。
- tests/wilderness-siege-strips.test.ts: 更新攻城木桩断言,验证残破柱桩(type 7)匹配真实的 sequence 10 与 11。
- tests/variant-distribution.test.ts: 新增 64x64 网格变体均匀分布与对角无周期性断言,以及 Kurast、Mesa、Siege 的真实合法 DT1 样式断言。
TAG=agy
CONV=2a1934de-30ef-464e-b3f3-fcbcdbbc49f1
|
2026-09-18 14:30:37 +00:00 |
troytt
|
985d85ebb0
|
fix(wilderness): 修复 pack-act-assets 漏传 dt1Libraries 及 wilderness 自动贴图跨章节污染 (Issue #113)
- scripts/pack-act-assets.ts: 在 generateWilderness 中透传 dt1Libraries: resolvedLibraries,保证地面自动过渡与瓦片解析能获得关卡所加载的全部 DT1 库。
- src/game/wilderness.ts:
- applyGroundTransitions: 当 options.libraries 为空或未指定时直接返回 0 处过渡,修复 isTileAvailable 无库时无条件返回 true 的漏洞。
- 增加关卡类型与章节编号守卫(非 Act 1 - Wilderness 关卡与非 Act 1 关卡跳过),避免对 Mesa (104)、Desert (43)、Barricade (112, 117) 注入无效瓦片。
- 在 phase 1 与 phase 2 中严格校验 (update.style, update.sequence) 瓦片是否存在于当前 DT1 库中,确保不会写入不存在的过渡瓦片。
- tests/wilderness-ground-blend.test.ts: 更新并补充 auto-tiling 测试,覆盖无库安全回退以及非 Act 1 关卡拦截。
TAG=agy
CONV=2a1934de-30ef-464e-b3f3-fcbcdbbc49f1
|
2026-09-18 14:26:16 +00:00 |