diff --git a/.gitea/workflows/baseline-mac.yml b/.gitea/workflows/baseline-mac.yml deleted file mode 100644 index fc01fd4f..00000000 --- a/.gitea/workflows/baseline-mac.yml +++ /dev/null @@ -1,47 +0,0 @@ -# mac 平台 golden 基线生成工作流(workflow_dispatch 手动触发型,2026-11-03)。 -# 用途:渲染基线按平台各存——mac 基线必须在 Mac 的图形会话里窗口化渲染产出(Windows 基线不可跨平台替代)。 -# 纪律(Q6):本工作流只「生成」候选基线文件(落在 runner 作业工作区,不提交不入库); -# 入库走人工通道:人工目检四张基线(体验验证清单㊾)→ 取回文件显式提交并写明触发原因。 -# 禁由 CI 自动提交基线(防静默重制掩盖视觉回归)。 -# 运行形态:runs-on=ci-mac(host 模式,作业活在 ci-runner 图形会话内——窗口可开、截图可用)。 -name: baseline-mac -on: - workflow_dispatch: - -jobs: - refresh: - runs-on: ci-mac - timeout-minutes: 30 - steps: - - name: 检出(纯 shell 克隆) - env: - TOKEN: ${{ github.token }} - run: | - git clone -q "https://${TOKEN}@git.kuaimeo.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE/repo" - cd "$GITHUB_WORKSPACE/repo" && git log --oneline -1 - - - name: 导入缓存刷新 - run: | - cd "$GITHUB_WORKSPACE/repo" - /usr/local/bin/godot --headless --path game --editor --quit - - - name: 退出判别实验(quit-after 能否解 macOS 窗口化退出挂死) - run: | - cd "$GITHUB_WORKSPACE/repo" - mkdir -p /tmp/shots_diag - /usr/local/bin/godot --path game --quit-after 3000 res://probe/board_shot_probe.tscn -- /tmp/shots_diag - echo "diag_rc=$?" - ls -la /tmp/shots_diag/ | head -8 - - - name: 基线生成(棋盘三图) - run: | - cd "$GITHUB_WORKSPACE/repo" - GODOT_BIN=/usr/local/bin/godot bash tools/golden_baseline_refresh.sh "$GITHUB_WORKSPACE/repo/game" - ls -la game/tests/golden/mac/ || true - - - name: 基线生成(菜单全屏) - run: | - cd "$GITHUB_WORKSPACE/repo" - GODOT_BIN=/usr/local/bin/godot bash tools/golden_baseline_refresh.sh "$GITHUB_WORKSPACE/repo/game" --menu - ls -la game/tests/golden/mac/ || true - echo "WORKSPACE_REMOINDER: 基线文件在 runner 侧 $GITHUB_WORKSPACE/repo/game/tests/golden/mac/,人工取回目检后入库" diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml deleted file mode 100644 index 7237235d..00000000 --- a/.gitea/workflows/ci.yml +++ /dev/null @@ -1,51 +0,0 @@ -# 远端 CI 工作流(2026-11-03 用户裁:CI 迁远端 Mac runner,host 模式直跑)。 -# 触发:master 收到 push(post-merge 钩子合回自动推,或人手推 master)——分支推送不触发 -# (开发分支不烧远端引擎时长;分支级验证=开发期手动跑批档)。 -# 跑什么由 tools/ci/domain_route.sh 按改动域分流(乙案)—— -# 游戏码批=两域全量(含渲染闸);文档批=文档域秒级闸;纯闸件/管线批=零触发。 -# 运行环境:Mac host 模式(tools/ci/mac_setup.sh 自举),GODOT_BIN/GDSTYLE_BIN 由自举件安装到位。 -# 检出用纯 shell 克隆:host 模式执行 JS 系动作(actions/checkout)需要 node 运行时, -# runner 机器无 node——首跑实证「Cannot find: node in PATH」即败(run 4),本仓禁用 JS 系动作, -# 引入新 Actions 前必须确认其执行器形态(shell/composite 可,node/docker 不可)。 -# 闸清单与域划分唯一出处 = tools/run_all_gates.sh(本文件只负责触发与分流,不另列闸件)。 -name: ci -on: - push: - branches: [master] - -jobs: - gates: - runs-on: ci-mac - timeout-minutes: 90 - steps: - - name: 检出(纯 shell 克隆) - env: - TOKEN: ${{ github.token }} - run: | - git clone -q "https://${TOKEN}@git.kuaimeo.com/${GITHUB_REPOSITORY}.git" "$GITHUB_WORKSPACE/repo" - cd "$GITHUB_WORKSPACE/repo" - git log --oneline -1 - - - name: 域分流(乙案) - id: route - run: | - cd "$GITHUB_WORKSPACE/repo" - bash tools/ci/domain_route.sh "${{ github.event.before }}" "${{ github.sha }}" - - - name: 导入缓存刷新(闸前置——.godot 不入 git,冷检出一付) - if: steps.route.outputs.mode != 'skip' - run: | - cd "$GITHUB_WORKSPACE/repo" - /usr/local/bin/godot --headless --path game --editor --quit - - - name: 跑闸 - if: steps.route.outputs.mode != 'skip' - env: - GODOT_BIN: /usr/local/bin/godot - GDSTYLE_BIN: /usr/local/bin/gdstyle - run: | - cd "$GITHUB_WORKSPACE/repo" - MODE="${{ steps.route.outputs.mode }}" - if [ "$MODE" = "full" ]; then ARGS=""; else ARGS="--docs"; fi - echo "[ci] 域=$MODE 跑闸参数=$ARGS" - bash tools/run_all_gates.sh $ARGS diff --git a/.gitignore b/.gitignore index fa6e5311..ef6a5961 100644 --- a/.gitignore +++ b/.gitignore @@ -53,9 +53,10 @@ archive/ # === 在途图像素材(2026-10-02 用户裁:artwork/ 整目录不入库,取消 md 例外——此前文本指引入库留痕的口子关闭)=== artwork/ -# === 游戏包美术素材(2026-11-03 用户裁:素材回 git,推翻 2026-09-29 不入库裁定—— -# 仓库自包含原则:远端 CI 与任何新克隆必须拉到完整可跑素材)=== -!game/assets/art/**/*.import +# === 游戏包美术素材(2026-09-29 裁定维持:素材不入 git,运行时资源本地生成不入库)=== +game/assets/art/** +!game/assets/art/**/*.md +!game/assets/art/**/ # === 模拟数据缓存层(2026-10-03 用户裁:sim-data/ 数据件不入库——最新 MC 锚常驻留盘作分析缓存,无数值调整不重跑;同日二裁:README+分析工具三件留库,其余留盘)=== sim-data/* diff --git a/AGENTS.md b/AGENTS.md index 47711831..9fdd17c3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -16,7 +16,7 @@ ## 运行与验证(工作目录 = 含 project.godot 的切片目录) -- **合回验证 = 远端 CI(2026-11-03 用户裁,取代 2026-10-30 本地 CI)**:git merge 合回 master 落地后,post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式,环境自举件=`tools/ci/mac_setup.sh`),工作流(`.gitea/workflows/ci.yml`)按改动域分流(分流算法单点=`tools/ci/domain_route.sh`):游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发。回执由 `tools/ci_watch.sh remote` 轮询 Gitea API 写回 `game/tests/.gates/ci-status.json`(合同不变:commit/绿红/红闸(job 级)+job 日志链接/耗时)+`ci-history.jsonl` 流水账;**回执等待一律后台(2026-11-02 用户裁)**:合回落地先向用户呈报本批总结,随即 run_in_background 运行 `tools/ci_watch.sh remote <合并提交>`,禁前台 sleep/轮询等 CI(细则=process-conventions §1 第 3 条)。CI 红态不回滚合并——红项在案、修复批合回即再推再验追绿;开工先读 CI 状态,红未修不开新批。同一份字节禁止第二次人手跑。`tools/run_all_gates.sh` 仍是全部验证闸的**唯一入口与唯一清单,域划分与选闸算法只写在它这一个地方**,文档禁另列清单;`--code`/`--docs`/`--quick` 手动档只服务开发期按域跑批(开发期窄测纪律见 process-conventions §6),不构成验收;全量回归由用户自发发起。**runner 依赖**:Mac 需开机在线(关机=远端任务排队延后);换机/重装按 `tools/ci/mac_setup.sh` 自举 +- **合回验证 = 本地 CI(2026-10-30 用户裁)**:git merge 合回 master 落地后,post-merge 钩子(`tools/hooks/post-merge`)后台触发 `tools/ci_runner.sh` 跑一次全量域闸(调 `tools/run_all_gates.sh` 不带参数档,02 全套件),结果落 `game/tests/.gates/ci-status.json`(commit/绿红/红闸名单+关键日志行/耗时)+`ci-history.jsonl` 流水账;CI 红态下修复合回落地即由 post-merge 钩子复验追绿(红态修复走新开修复 worktree,`fix-<任务名>` 分支,免重塑免数卡;post-commit 钩子保留为红态主区直提兜底触发,绿态与无状态零触发)——批内提交零钩子检查、合回只验一次,同一份字节禁止第二次人手跑。CI 红不回滚合并,红项在案、修复合回追绿;开工先读 CI 状态,红未修不开新批。跑批起手自动 `--editor --quit` 刷类名缓存(.godot 缓存不入 git,防合并后失配假红)。`tools/run_all_gates.sh` 仍是全部验证闸的**唯一入口与唯一清单,域划分与选闸算法只写在它这一个地方**,闸件增减与分域调整都只改它,文档禁另列清单;`--code`/`--docs`/`--quick` 手动档只服务开发期按域跑批(开发期窄测纪律见 process-conventions §6),不构成验收;全量回归由用户自发发起。**回执等待一律后台(2026-11-02 用户裁)**:合回落地先向用户呈报本批总结,随即 run_in_background 运行 `tools/ci_watch.sh <合并提交>` 等回执、唤醒后再续,禁前台 sleep/轮询等 CI(细则=process-conventions §1 第 3 条) - 单件直跑(调试期最窄确认用,**不构成验收**):冒烟测试 `python tools/run_smoke.py`(`game/tests/smoke_boot.tscn` 极小启动场景)· 系统测试 `python tools/run_system_test.py`(宿主 `game/tests/system_test.gd`)· 场景探针 `…console.exe --headless --path . res://probe/ui_probe.tscn` · 单元与集成 `… --script res://tests/run_all.gd` - 调参批量:`--script res://sim/adventure_monte_carlo.gd`(全冒险期望)· `res://sim/reward_expectation.gd`(奖励期望);关卡完成率/难度类测量一律走全冒险 - 数值验证:`python tools/balance_verifier.py`(采集端 `res://sim/verifier_batch.gd`,报告与原始数据落 `sim-data/`) @@ -40,7 +40,7 @@ | 时机 | 权威文档 | |---|---| -| 批次开工 / 流程纪律 | `design/engineering/process-conventions.md`——车道铁律(一切改动走独立 worktree,主区只作合并落点)、合回后远端 CI、五段流水线、批次清单、测试两入口与 MC/闸机细则、像素纪律 | +| 批次开工 / 流程纪律 | `design/engineering/process-conventions.md`——车道铁律(一切改动走独立 worktree,主区只作合并落点)、合回后本地 CI、五段流水线、批次清单、测试两入口与 MC/闸机细则、像素纪律 | | 流水线段入口 | 技能对照——doc-design=文档设计(兼任反哺点落文)/asset-ingest=美术录入/req-card=写卡/iter-plan=迭代编排/iter=实现(五者均装于项目 `.zcode/skills/`);登记不立技能;批后收尾与中间文档退役=batch-closure(同一目录);格式与状态机权威=`design/engineering/doc-conventions.md` §12 | | 定代码方案 / 写代码 / 改代码前 | `design/engineering/code-conventions.md`——结构/契约/语言/数值/流程五类硬纪律(反例库 = 同目录 code-conventions-cases.md) | | 定测试方案 / 写测试 / 改测试前 | `design/engineering/test-conventions.md`——探针标配 / 回归断言 / 提交前验证 / 验收清单落码 | @@ -103,11 +103,11 @@ ## 硬性红线(勿违反;操作细则在 process-conventions.md 与各规约) -- 车道铁律(2026-10-31 用户裁恢复)——主工作区只作合并落点,一切开发/设计改动走独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`(建区即跑 `tools/setup_worktree_userdir.sh`),收口=冻结→件核→并 master→重塑→主区 `git merge --no-ff`→删区(合回即删,2026-09-19 原裁),CI 红不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,免重塑免数卡)修复合回追绿;主区唯一合法写动作=合并,agent 侧由 worktree-guard 拦主区 Edit/Write 与非 merge 提交;豁免面仅 `.zcode/`、`.qoder/`(不入 git,主区直改);commit 点零钩子检查(pre-commit 直改闸已退役),全量验证归合回后远端 CI(post-merge 钩子推送触发,见「运行与验证」首条);`--no-verify` 仅属用户,agent 禁用(细则见 process-conventions §1) +- 车道铁律(2026-10-31 用户裁恢复)——主工作区只作合并落点,一切开发/设计改动走独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`(建区即跑 `tools/setup_worktree_userdir.sh`),收口=冻结→件核→并 master→重塑→主区 `git merge --no-ff`→删区(合回即删,2026-09-19 原裁),CI 红不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,免重塑免数卡)修复合回追绿;主区唯一合法写动作=合并,agent 侧由 worktree-guard 拦主区 Edit/Write 与非 merge 提交;豁免面仅 `.zcode/`、`.qoder/`(不入 git,主区直改);commit 点零钩子检查(pre-commit 直改闸已退役),全量验证归合回后本地 CI(`tools/hooks/post-merge` 触发,见「运行与验证」首条);`--no-verify` 仅属用户,agent 禁用(细则见 process-conventions §1) - **仓库根禁止设会话状态文件**(`active.md` 已废除)——现状看 roadmap「当前位」,待办看待办清单,过程看 git 提交信息,产出物看 `reports/`;任何文档禁止另设「当前状态快照」节,两处记同一件事必然漂移(细则见 doc-conventions 第 10 节) - 测试执行两入口铁规——只有迭代 loop 开发与用户点名两个触发入口;其余会话零测试,需测试支撑先请示并注明未跑测 -- 合回后验证 = 远端 CI 闸全绿(唯一强制验证点;唯一入口、唯一闸清单、唯一域划分与选闸算法仍只在 `tools/run_all_gates.sh`,禁在文档另列;触发与追绿语义见「运行与验证」首条与 process-conventions §1)。开发期手动跑批按需选档(`--code` 关联档选测——02 跑「卡片申报 ∪ diff 推导」并集套件、三件保险恒跑、横切面回落全量——算法只在闸脚本内定义),手动跑不构成验收;全量回归由用户自发发起。远端按改动域分流:文档面批走文档域秒级闸,代码面批走两域全量(分流算法单点=`tools/ci/domain_route.sh`) -- **改动四类**——**需求改动**(游戏代码,含随逻辑写/改的测试代码):唯一走「写需求卡片+编入迭代批次」通道;迭代实现批禁写 `design/` 整个目录、两份根流程清单(`待办清单.md`/`体验验证清单.md`)与 `game/tests/README.md`(能力清单,归写卡段维护)(含新增/修改/删除),设计文档对它只读、是写测试与实现代码的输入依据;两份流程清单的条目状态只由流水线各段推进,实现批禁止顺手改;产出物只准写 `reports/`;合回后由远端 CI 验证(红项修复合回追绿,process-conventions §1)。**工程改动**(tools/、闸件、模拟测量工具、纯测试维护——不改变游戏行为的配套代码)、**文档设计改动**、**美术素材改动**:不写需求卡片、不编迭代批次,由用户发令走独立 worktree 直改+合回(车道铁律,commit 点零钩子检查);大体量改动(含触及代码面的工程改动如纯测试维护)同车道无特殊通道;文档设计类写入走 doc-design 技能(登记条目格式由流水线闸强制) +- 合回后验证 = 本地 CI 全量域闸全绿(唯一强制验证点;唯一入口、唯一闸清单、唯一域划分与选闸算法仍只在 `tools/run_all_gates.sh`,禁在文档另列;触发与追绿语义见「运行与验证」首条与 process-conventions §1)。开发期手动跑批按需选档(`--code` 关联档选测——02 跑「卡片申报 ∪ diff 推导」并集套件、三件保险恒跑、横切面回落全量——算法只在闸脚本内定义),手动跑不构成验收;全量回归由用户自发发起。文档面批与代码面批验收同走合回 CI 全量(`--docs` 仅属开发期手动档,process-conventions §1) +- **改动四类**——**需求改动**(游戏代码,含随逻辑写/改的测试代码):唯一走「写需求卡片+编入迭代批次」通道;迭代实现批禁写 `design/` 整个目录、两份根流程清单(`待办清单.md`/`体验验证清单.md`)与 `game/tests/README.md`(能力清单,归写卡段维护)(含新增/修改/删除),设计文档对它只读、是写测试与实现代码的输入依据;两份流程清单的条目状态只由流水线各段推进,实现批禁止顺手改;产出物只准写 `reports/`;合回后由本地 CI 全量验证(红项修复合回追绿,process-conventions §1)。**工程改动**(tools/、闸件、模拟测量工具、纯测试维护——不改变游戏行为的配套代码)、**文档设计改动**、**美术素材改动**:不写需求卡片、不编迭代批次,由用户发令走独立 worktree 直改+合回(车道铁律,commit 点零钩子检查);大体量改动(含触及代码面的工程改动如纯测试维护)同车道无特殊通道;文档设计类写入走 doc-design 技能(登记条目格式由流水线闸强制) - 五段流水线铁律——**需求改动**(游戏代码)按「登记 → 文档设计/美术设计 → 写需求卡片 → 迭代编排 → 实现」五段推进,段间不自动流转、每段转进由用户发令;编入迭代的卡片必须设计闭合+零待裁点——需求卡片任何工作量皆可写、皆可编入迭代,工作量限制只属迭代层(迭代估时总量 <5 个工作日=「冻结待凑批」、不可开工);流水线闸 `tools/pipeline_gate.py` 强制(已注册进 run_all_gates.sh 文档域);实现段零裁断——卡片没写清=上游缺陷,停该卡退回上游,禁内联求裁(process-conventions §2,格式与状态机=doc-conventions §12)。工程/文档设计/美术素材三类改动不走写卡与编排段:(如需设计讨论)→ 用户发令 → 独立 worktree 直改 → 合回 CI(车道细则=process-conventions §1) - MC/模拟:无数值改动零跑;档位硬闸见 `sim-data/README.md`「MC 采集档位表」,一档只能由用户发起 - 闸机轮次纪律:新码先孤立验证 → 出红只跑红件最小单元 → 长批先最小参数试车 → 开工扫坑册(process-conventions §6) diff --git a/design/engineering/architecture/architecture.md b/design/engineering/architecture/architecture.md index ff7060fa..7aab90d8 100644 --- a/design/engineering/architecture/architecture.md +++ b/design/engineering/architecture/architecture.md @@ -267,7 +267,7 @@ |---|---|---|---| | **worktree-guard**(ZCode PreToolUse) | `.zcode/hooks/worktree-guard.sh`(本机件,不入 git) | agent 侧车道纪律:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免);`git commit --no-verify` 拦截(该旗标仅属用户);iter 分支合回一卡一提交数卡校验;规则闸 | 路径性质+分支名+MERGE_HEAD+git 图 | -验证收拢为合回后远端 CI(post-merge 钩子推送 origin master 触发 Gitea Actions,runner=Mac 本机 host 模式;按改动域分流,分流单点=tools/ci/domain_route.sh),commit 点零执法;主工作区防污染由 ZCode 层守卫承担——只约束 agent,用户手工改动不受限。子代理覆盖面(2026-10-26 冷启动评估实测):子代理的工具调用不经过 ZCode 层守卫——ZCode 层实际只覆盖主会话工具调用;残余暴露面=子代理写主工作区与蓄意 `--no-verify`(该旗标整族跳过 git 层钩子),属故意越权而非遗忘型失误,与防遗忘的设计目标正交。 +验证收拢为合回后本地 CI 全量(post-merge 触发),commit 点零执法;主工作区防污染由 ZCode 层守卫承担——只约束 agent,用户手工改动不受限。子代理覆盖面(2026-10-26 冷启动评估实测):子代理的工具调用不经过 ZCode 层守卫——ZCode 层实际只覆盖主会话工具调用;残余暴露面=子代理写主工作区与蓄意 `--no-verify`(该旗标整族跳过 git 层钩子),属故意越权而非遗忘型失误,与防遗忘的设计目标正交。 ### 三条判定硬闸现行状态 diff --git a/design/engineering/process-conventions.md b/design/engineering/process-conventions.md index 72fe5a13..1efcf908 100644 --- a/design/engineering/process-conventions.md +++ b/design/engineering/process-conventions.md @@ -7,12 +7,12 @@ ## 1. 分支纪律(worktree 铁律) -主工作区(master 检出)只作合并落点,一切开发/设计改动禁止直接发生在主工作区(2026-10-31 用户裁恢复;2026-10-30 的「主区直改+直提」车道与 commit 点 pre-commit 直改闸随之退役;验证模型同构——合回后远端 CI 是唯一强制验证点,2026-11-03 用户裁,细则见本节第 3 条): +主工作区(master 检出)只作合并落点,一切开发/设计改动禁止直接发生在主工作区(2026-10-31 用户裁恢复;2026-10-30 的「主区直改+直提」车道与 commit 点 pre-commit 直改闸随之退役;验证模型不动——合回后本地 CI 仍是唯一强制验证点): 1. **worktree 车道(一切面)**:每批先建独立 worktree:`git worktree add ../g-plan2-<任务名> -b <任务分支>`;建区后立刻跑 `tools/setup_worktree_userdir.sh`——给该区独立 Godot user 目录(测试夹具、试玩日志、截图产物不与其他区共用;主区不生成,真实档保持原位)。所有改动与提交都在 worktree 内自由进行——commit 点零钩子检查(`tools/hooks/pre-commit` 已删除)。豁免面仅 `.zcode/`(钩子与配置)与 `.qoder/`(本机 harness 配置)允许主工作区直改——两份实测均不入 git(走 worktree 反而带不进去,改动只对本机生效) 2. **收口顺序(固定)**:**冻结 → 件核 → 并 master → 重塑 → 主区合回 → 删区**——代码与断言改完即冻结,全仓件核 grep 查残留;master 已被别的批次推进时先在 worktree 内 `git merge master` 解冲突(必须在合回之前,合回后才并=CI 验的是中间态);**重塑**=迭代分支(iter 形)合回前执行 `python tools/reshape_cards.py`,把分支线性史按卡末态快照压成一卡一笔(可选追加一笔纯文档收尾),master 台账由此每卡一行——工具自带「重塑前后树逐字节一致」断言与 backup 分支,不改任何文件内容;非迭代批免重塑;然后主工作区 `git merge --no-ff <任务分支>`——这是主区唯一合法写动作(合回守卫对迭代分支数卡校验,未归卡提交拦下)。**合回落地即 `git worktree remove`+删分支(合回即删,2026-09-19 原裁);post-merge 钩子已在合回落地时自动触发 CI,红态不回滚合并——新开修复 worktree(`fix-<任务名>` 分支,非 iter 形免重塑免数卡)修复提交再合,落地复验追绿后删修复区**。游戏类测试(冒烟/单测/MC/探针)批内默认零执行(两入口铁规,见 §4),用户点名或当场问才跑 -3. **合回后验证(远端 CI,2026-11-03 用户裁取代本地 CI)**:git merge 合回 master 落地后 post-merge 钩子(`tools/hooks/post-merge`)自动 `git push origin master` 触发远端 CI(Gitea Actions,runner=Mac 本机 host 模式),工作流按改动域分流(分流算法单点=`tools/ci/domain_route.sh`:游戏码批=两域全量含渲染闸,文档批=文档域秒级闸,纯闸件/管线批=零触发)——唯一强制验证点。回执由 `tools/ci_watch.sh remote` 轮询 Gitea API 写回 `game/tests/.gates/ci-status.json`(合同不变:commit/verdict/red_gates/key_lines/note),agent 开工先读 CI 状态的纪律不变,红未修不开新批。CI 红态不回滚合并——修复走新开修复 worktree(`fix-<任务名>` 分支,非 iter 形免重塑免数卡),修复合回落地即再推再验追绿(追绿同链;本地跑批件 `ci_runner.sh` 与本地追绿钩子 post-commit 已退役)。导入缓存刷新(.godot 不入 git 的在册坑)由工作流「导入缓存刷新」步接管。**回执等待纪律(2026-11-02 用户裁)**:合回落地即向用户呈报本批总结,回执等待一律以 run_in_background 后台任务运行 `tools/ci_watch.sh remote <合并提交>`(认领判据与容错细则=该件头注),禁前台 sleep/轮询循环等 CI;后台任务唤醒会话后按回执续行——绿即删区收口,红或超时即呈报走修复批。闸重跑等一切分钟级跑批等待同此纪律 -4. **执法分层(全机械,零自觉依赖)**:①`.zcode/hooks/worktree-guard.sh`(PreToolUse,本机件不入 git)——agent 侧:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免)、`git commit --no-verify` 拦截(该旗标仅属用户)、iter 分支合回的一卡一提交数卡校验、规则闸(写 design//game/ 前核对会话规约读取记录)。②post-merge 钩子——远端 CI 触发(推送+挂回执等待;仅主工作区,任务 worktree 内的合并不触发)。③git 层不设车道钩子(pre-commit 直改闸已退役)——用户手工改动不受限;ZCode 层只约束 agent(子代理不经守卫层) +3. **合回后验证(本地 CI,2026-10-30 用户裁)**:git merge 合回 master 落地后 post-merge 钩子(`tools/hooks/post-merge`)后台触发 `tools/ci_runner.sh merge` 对 master 尖跑一次全量域闸——唯一强制全量验证点;CI 红态下修复合回落地即由 post-merge 钩子复验追绿(红态修复走新开修复 worktree,`fix-<任务名>` 分支,非 iter 形免重塑免数卡;post-commit 钩子保留为红态主区直提兜底触发,绿态与无状态零触发)。重跑判据:同一份字节禁止第二次人手跑;有意义的重跑只剩「验证修复」一类。CI 红不回滚合并——红项记 `game/tests/.gates/ci-status.json`,开工先读 CI 状态,红未修不开新批。跑批起手 `--editor --quit` 刷类名缓存(在册坑:.godot 缓存不入 git,合并后失配假红假绿)。并跑语义=跑完补跑(coalesce):跑批期间新触发不中断当前轮,轮尾对最新尖端补跑,绝不逐笔各跑一轮。**回执等待纪律(2026-11-02 用户裁)**:合回落地即向用户呈报本批总结,回执等待一律以 run_in_background 后台任务运行 `tools/ci_watch.sh <合并提交>`(认领判据与容错细则=该件头注),禁前台 sleep/轮询循环等 CI;后台任务唤醒会话后按回执续行——绿即删区收口,红或超时即呈报走修复批。闸重跑等一切分钟级跑批等待同此纪律 +4. **执法分层(全机械,零自觉依赖)**:①`.zcode/hooks/worktree-guard.sh`(PreToolUse,本机件不入 git)——agent 侧:主工作区 Edit/Write 与主区非 merge `git commit` 拦截(豁免 `.zcode/`、`.qoder/`;worktree 内目标快速放行;合并收尾提交凭 MERGE_HEAD 豁免)、`git commit --no-verify` 拦截(该旗标仅属用户)、iter 分支合回的一卡一提交数卡校验、规则闸(写 design//game/ 前核对会话规约读取记录)。②post-merge/post-commit 钩子——本地 CI 触发(仅主工作区;任务 worktree 内的合并不触发)。③git 层不设车道钩子(pre-commit 直改闸已退役)——用户手工改动不受限;ZCode 层只约束 agent(子代理不经守卫层) ## 2. 五段流水线 @@ -48,8 +48,8 @@ 7. **验收改动先行声明**——验收变化(基线换代/探针增改/旧断言改判)预先写进需求卡片,禁事后补 **完成** -8. **合回后 CI 验证(唯一强制验证点)**——主工作区 `git merge --no-ff <任务分支>` 落地后 post-merge 钩子自动推送 origin master 触发远端 CI;远端按改动域分流(§1 第 3 条),游戏码批跑全量域闸(不带参数档,02 全套件),判定与红项由 `ci_watch.sh remote` 写回 `game/tests/.gates/ci-status.json`。全量是游戏码批的强制档:跨卡触面、探针与未申报套件的消费漏网只有全量闸能抓(迭代 44 实证),关联档选测的盲区由它兜底。合回前独立验收审计通过(iter 技能第 5 步),未过不合回。`tools/run_all_gates.sh` 是全部验证闸的**唯一入口、唯一清单与唯一域划分(含选闸算法与套件族映射表)**,闸件增减、分域调整都只改它;**本文与其他文档禁另列闸件清单**(清单散落多处正是 iter27 漏跑 `probe_gate --full` 的成因)。开发期手动跑批按需选档(按文件性质判域:代码面→`--code`,文档件→`--docs`,两类都有→全量;`--code` 关联档选测——02 只跑「需求卡片申报 ∪ diff 推导」并集套件、00 冒烟/01 系统测试/09 静态扫描三件保险恒跑、横切面回落全量——算法见闸脚本),手动跑不构成验收。闸件(`tools/` 下机检脚本与闸壳)自身的改动不占 CI 全量——其质量义务=落批时人工确认闸可跑通且判据口径未变;闸真崩溃时远端 CI 判红在案(job 失败=verdict 红,fail-closed 语义保留) -9. **重跑语义(2026-10-30 用户裁,取代原「每批一次/合并后零复跑」口径)**——同一份字节禁止第二次人手跑;允许的重跑只剩两类:① CI 红后的修复合回(post-merge 钩子再推再验,每轮修复至多触发一轮);② 用户自发发起的全量回归。「跑都跑了再跑一遍保险」「顺手改点再补一跑」都不构成重跑理由。导入缓存刷新由远端工作流「导入缓存刷新」步接管,合并后无手工动作 +8. **合回后 CI 验证(唯一强制验证点)**——主工作区 `git merge --no-ff <任务分支>` 落地后 post-merge 钩子自动跑全量域闸(不带参数档,02 全套件),判定与红项落 `game/tests/.gates/ci-status.json`。全量是唯一强制档:跨卡触面、探针与未申报套件的消费漏网只有全量闸能抓(迭代 44 实证),关联档选测的盲区由它兜底。合回前独立验收审计通过(iter 技能第 5 步),未过不合回。该脚本是全部验证闸的**唯一入口、唯一清单与唯一域划分(含选闸算法与套件族映射表)**,闸件增减、分域调整都只改它;**本文与其他文档禁另列闸件清单**(清单散落多处正是 iter27 漏跑 `probe_gate --full` 的成因)。开发期手动跑批按需选档(按文件性质判域:代码面→`--code`,文档件→`--docs`,两类都有→全量;`--code` 关联档选测——02 只跑「需求卡片申报 ∪ diff 推导」并集套件、00 冒烟/01 系统测试/09 静态扫描三件保险恒跑、横切面回落全量——算法见闸脚本),手动跑不构成验收。闸件(`tools/` 下机检脚本与闸壳)自身的改动不占 CI 全量——其质量义务=落批时人工确认闸可跑通且判据口径未变;闸真崩溃时 CI 判红在案(跑不出回执=verdict 红,fail-closed 语义保留) +9. **重跑语义(2026-10-30 用户裁,取代原「每批一次/合并后零复跑」口径)**——同一份字节禁止第二次人手跑;允许的重跑只剩两类:① CI 红后的修复合回(post-merge 钩子复验,每轮修复至多触发一轮);② 用户自发发起的全量回归。「跑都跑了再跑一遍保险」「顺手改点再补一跑」都不构成重跑理由。类名缓存刷新与开机确认由 CI 跑批起手接管(§1 第 2 条),合并后无手工动作 10. **批次完成后的登记义务**——合回 master 后按 doc-conventions §12.1 推进待办清单条目状态(做完整条删除),涉及迭代编排的在 roadmap 迭代总表与顶部「当前位」节换代——执行入口=项目技能 batch-closure(批后收尾与中间文档退役),跨会话教训写记忆库。批次过程与结论由 git 提交信息承载,禁止再写会话状态文件(见 doc-conventions 第 10 节)。`design/` 与根规则文件(`AGENTS.md`/`roadmap.md`/`待办清单.md`/`体验验证清单.md`)实现批禁写,见 §12 11. **文档同步闸(实现批禁写文档)**——实现批**禁写 `design/` 整个目录与根规则文件**,**另禁写 `game/tests/README.md`(能力清单,归写卡段维护,test-conventions §8.9)**,要往外交代的东西一律落 `reports/`:实现报告 `reports/iter-实现报告-<日期>.md`(各卡状态+实机目检总清单+遗留读数义务+实现决定记录——超白名单/超卡片明列范围事项逐条记「决了什么/为什么/代价/撤销方式」,全部按卡执行时只写一行「零拍板」)、GDD 反哺点清单 `reports/iter-反哺点-<日期>.md`(每条写清哪个文件哪一节、改成什么、依据是什么)。设计权威文档(GDD/art-bible)**任何批都不直改**:用户在会话中逐点裁决后,由工程/文档设计改动批(直改类)写入 `design/`(执行入口=doc-design 技能),并把反哺条目从 `reports/` 清掉(吸收即死;退役执行=batch-closure 技能)。机械面文档(roadmap 行/术语表/README 工具注)同样归工程/文档设计改动批在合并前更新。反哺点未落地期间相关 GDD 节视为待反哺,读前先查 `reports/` 与待办清单;需求卡片必列「关联文档同步面」按两层标注 12. **实机目检归用户,只登记不阻塞**——真人检测项登记进实现报告目检总清单与体验验证清单即完成批内义务;禁把等目检当停工理由或完成前置 @@ -62,7 +62,7 @@ **MC/verifier 触发细则**:仅在数值验证场景触发(改数值前后取证);normal 档为主、perfect 按需;**无数值改动的会话禁跑 MC**;结构位移类「存档锚」须先向用户请示定性再跑;需求卡片预设步骤的前提消失时(如「带值裁定后重锚」实际未投值)停问勿照字面执行。 -**分级周期口径**:全部验证闸收编在 `tools/run_all_gates.sh` 一个入口下(**脚本即清单,且即域划分的唯一出处**),分三档——`--code`/`--docs` 按本批改动域只跑该域闸(闸件清单与域划分只写在脚本头部注释,本文不重列);`--quick` 是全量档的中段自检形态(跳过渲染闸与静态扫描);**不带参数=两域全量**。强制验证点=合回后远端 CI(游戏码批走全量档,细则见 §1 第 3 条);分档只服务开发期手动跑批。真人实机目检归用户不进自动闸。 +**分级周期口径**:全部验证闸收编在 `tools/run_all_gates.sh` 一个入口下(**脚本即清单,且即域划分的唯一出处**),分三档——`--code`/`--docs` 按本批改动域只跑该域闸(闸件清单与域划分只写在脚本头部注释,本文不重列);`--quick` 是全量档的中段自检形态(跳过渲染闸与静态扫描);**不带参数=两域全量**。强制验证点=合回后本地 CI 的全量档(§1 第 2 条);分档只服务开发期手动跑批。真人实机目检归用户不进自动闸。 ## 5. MC 采集档位细则 diff --git a/design/engineering/test-conventions.md b/design/engineering/test-conventions.md index 5d5b95d8..039058c1 100644 --- a/design/engineering/test-conventions.md +++ b/design/engineering/test-conventions.md @@ -25,9 +25,9 @@ 每个缺陷修复必须在探针或冒烟中留下能抓住该缺陷的断言(例:封印动作耗尽 AP → 必须进入第 2 轮; 选用道具 → 库存态必须变 Used)。没有回归断言的修复视为未完成。 -## 4. 验证时机(合回后远端 CI 制,2026-11-03 换代) +## 4. 验证时机(合回后本地 CI 制,2026-10-30 换代) -开发期窄测义务不变:每批开发中,本批新增/改动的验收测试自己跑绿即收口(卡内只测自己改的东西,process-conventions §6)。全量验证归合回后的远端 CI:git merge 合回 master 落地后 post-merge 钩子推送 origin master,远端按改动域分流跑 `tools/run_all_gates.sh`(游戏码批=不带参数档两域全量、02 全套件——跨卡触面与关联档选测的盲区由全量兜底;文档批=文档域秒级闸;分流算法单点=`tools/ci/domain_route.sh`),回执由 `tools/ci_watch.sh remote` 轮询写回 `game/tests/.gates/ci-status.json`;CI 红态下修复合回落地即再推再验追绿(修复走新开 `fix-<任务名>` 修复 worktree,process-conventions §1;本地跑批件 ci_runner.sh 与本地追绿钩子 post-commit 已退役)。同一份字节禁止第二次人手跑。该脚本是全部验证闸的唯一入口与唯一清单,域划分与选闸算法只写在脚本里,本文禁另列闸件清单。 +开发期窄测义务不变:每批开发中,本批新增/改动的验收测试自己跑绿即收口(卡内只测自己改的东西,process-conventions §6)。全量验证归合回后的本地 CI:git merge 合回 master 触发 post-merge 钩子跑 `tools/run_all_gates.sh` 不带参数档(两域全量,02 全套件——跨卡触面与关联档选测的盲区由全量兜底),结果落 `game/tests/.gates/ci-status.json`;CI 红态下修复合回落地即由 post-merge 钩子复验追绿(修复走新开 `fix-<任务名>` 修复 worktree,process-conventions §1)。同一份字节禁止第二次人手跑。该脚本是全部验证闸的唯一入口与唯一清单,域划分与选闸算法只写在脚本里,本文禁另列闸件清单。 行为探针使用随机化玩家行为(封印/停手/刷新/无效点击)——自动玩家不做的动作就是测试盲区。 ## 5. 测试函数怎么写——验收清单条目的落码规范 diff --git a/game/assets/art/board/seal_mark.png b/game/assets/art/board/seal_mark.png deleted file mode 100644 index ddf875e1..00000000 Binary files a/game/assets/art/board/seal_mark.png and /dev/null differ diff --git a/game/assets/art/board/seal_mark.png.import b/game/assets/art/board/seal_mark.png.import deleted file mode 100644 index 769ad7d8..00000000 --- a/game/assets/art/board/seal_mark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://7mgi36hqrvej" -path="res://.godot/imported/seal_mark.png-4e00c69f08466c44d297a28c90752754.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/seal_mark.png" -dest_files=["res://.godot/imported/seal_mark.png-4e00c69f08466c44d297a28c90752754.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_deep_underdark_1.png b/game/assets/art/board/terrain_floor_deep_underdark_1.png deleted file mode 100644 index 79ee9353..00000000 Binary files a/game/assets/art/board/terrain_floor_deep_underdark_1.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_deep_underdark_1.png.import b/game/assets/art/board/terrain_floor_deep_underdark_1.png.import deleted file mode 100644 index 4cb607d9..00000000 --- a/game/assets/art/board/terrain_floor_deep_underdark_1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bqvh7631mcuaj" -path="res://.godot/imported/terrain_floor_deep_underdark_1.png-c1b190b8e4b3895184bdd0ee6bd74f82.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_deep_underdark_1.png" -dest_files=["res://.godot/imported/terrain_floor_deep_underdark_1.png-c1b190b8e4b3895184bdd0ee6bd74f82.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_deep_underdark_2.png b/game/assets/art/board/terrain_floor_deep_underdark_2.png deleted file mode 100644 index 854ae1c9..00000000 Binary files a/game/assets/art/board/terrain_floor_deep_underdark_2.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_deep_underdark_2.png.import b/game/assets/art/board/terrain_floor_deep_underdark_2.png.import deleted file mode 100644 index ab154447..00000000 --- a/game/assets/art/board/terrain_floor_deep_underdark_2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://x6sl5ht6n2uc" -path="res://.godot/imported/terrain_floor_deep_underdark_2.png-c0469b1cf1af026328686618be34f5d3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_deep_underdark_2.png" -dest_files=["res://.godot/imported/terrain_floor_deep_underdark_2.png-c0469b1cf1af026328686618be34f5d3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_deep_underdark_3.png b/game/assets/art/board/terrain_floor_deep_underdark_3.png deleted file mode 100644 index 451109dc..00000000 Binary files a/game/assets/art/board/terrain_floor_deep_underdark_3.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_deep_underdark_3.png.import b/game/assets/art/board/terrain_floor_deep_underdark_3.png.import deleted file mode 100644 index 6693993a..00000000 --- a/game/assets/art/board/terrain_floor_deep_underdark_3.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://blj41w52x8poi" -path="res://.godot/imported/terrain_floor_deep_underdark_3.png-f159b9c2d516f78ef7d19b05a4631d11.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_deep_underdark_3.png" -dest_files=["res://.godot/imported/terrain_floor_deep_underdark_3.png-f159b9c2d516f78ef7d19b05a4631d11.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_deep_underdark_4.png b/game/assets/art/board/terrain_floor_deep_underdark_4.png deleted file mode 100644 index 436dd4f0..00000000 Binary files a/game/assets/art/board/terrain_floor_deep_underdark_4.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_deep_underdark_4.png.import b/game/assets/art/board/terrain_floor_deep_underdark_4.png.import deleted file mode 100644 index 8f1a2858..00000000 --- a/game/assets/art/board/terrain_floor_deep_underdark_4.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b3bwubcxsl5jq" -path="res://.godot/imported/terrain_floor_deep_underdark_4.png-f5f15b985679a255ff00e1b8688e15b2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_deep_underdark_4.png" -dest_files=["res://.godot/imported/terrain_floor_deep_underdark_4.png-f5f15b985679a255ff00e1b8688e15b2.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_deep_underdark_5.png b/game/assets/art/board/terrain_floor_deep_underdark_5.png deleted file mode 100644 index eb1ca36e..00000000 Binary files a/game/assets/art/board/terrain_floor_deep_underdark_5.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_deep_underdark_5.png.import b/game/assets/art/board/terrain_floor_deep_underdark_5.png.import deleted file mode 100644 index e7cc8e97..00000000 --- a/game/assets/art/board/terrain_floor_deep_underdark_5.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cv07q7w556bwy" -path="res://.godot/imported/terrain_floor_deep_underdark_5.png-143a53136daea878fff67d8ac9e05c42.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_deep_underdark_5.png" -dest_files=["res://.godot/imported/terrain_floor_deep_underdark_5.png-143a53136daea878fff67d8ac9e05c42.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_dungeon_1.png b/game/assets/art/board/terrain_floor_dungeon_1.png deleted file mode 100644 index 4851e3bc..00000000 Binary files a/game/assets/art/board/terrain_floor_dungeon_1.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_dungeon_1.png.import b/game/assets/art/board/terrain_floor_dungeon_1.png.import deleted file mode 100644 index 9f14b819..00000000 --- a/game/assets/art/board/terrain_floor_dungeon_1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b65onwkof3wsy" -path="res://.godot/imported/terrain_floor_dungeon_1.png-40bb7fc26d6ced997a8f1cc9005b6f18.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_dungeon_1.png" -dest_files=["res://.godot/imported/terrain_floor_dungeon_1.png-40bb7fc26d6ced997a8f1cc9005b6f18.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_dungeon_2.png b/game/assets/art/board/terrain_floor_dungeon_2.png deleted file mode 100644 index 3211eb39..00000000 Binary files a/game/assets/art/board/terrain_floor_dungeon_2.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_dungeon_2.png.import b/game/assets/art/board/terrain_floor_dungeon_2.png.import deleted file mode 100644 index b14ebbf7..00000000 --- a/game/assets/art/board/terrain_floor_dungeon_2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ddqxia2sv5ktq" -path="res://.godot/imported/terrain_floor_dungeon_2.png-c4869c7b250ede2771251e1c17af6563.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_dungeon_2.png" -dest_files=["res://.godot/imported/terrain_floor_dungeon_2.png-c4869c7b250ede2771251e1c17af6563.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_dungeon_3.png b/game/assets/art/board/terrain_floor_dungeon_3.png deleted file mode 100644 index bb53aa6e..00000000 Binary files a/game/assets/art/board/terrain_floor_dungeon_3.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_dungeon_3.png.import b/game/assets/art/board/terrain_floor_dungeon_3.png.import deleted file mode 100644 index 5f011ca0..00000000 --- a/game/assets/art/board/terrain_floor_dungeon_3.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bieystjeu21q4" -path="res://.godot/imported/terrain_floor_dungeon_3.png-148125c305ac1d93b24d178431bf294e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_dungeon_3.png" -dest_files=["res://.godot/imported/terrain_floor_dungeon_3.png-148125c305ac1d93b24d178431bf294e.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_dungeon_4.png b/game/assets/art/board/terrain_floor_dungeon_4.png deleted file mode 100644 index 601aaedf..00000000 Binary files a/game/assets/art/board/terrain_floor_dungeon_4.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_dungeon_4.png.import b/game/assets/art/board/terrain_floor_dungeon_4.png.import deleted file mode 100644 index 4858a3c7..00000000 --- a/game/assets/art/board/terrain_floor_dungeon_4.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://q5eko1txuoq5" -path="res://.godot/imported/terrain_floor_dungeon_4.png-3fe81a46ece4b02dc031045919a12259.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_dungeon_4.png" -dest_files=["res://.godot/imported/terrain_floor_dungeon_4.png-3fe81a46ece4b02dc031045919a12259.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_dungeon_5.png b/game/assets/art/board/terrain_floor_dungeon_5.png deleted file mode 100644 index b830793d..00000000 Binary files a/game/assets/art/board/terrain_floor_dungeon_5.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_dungeon_5.png.import b/game/assets/art/board/terrain_floor_dungeon_5.png.import deleted file mode 100644 index f2e5f169..00000000 --- a/game/assets/art/board/terrain_floor_dungeon_5.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bvyjsdrcsysi1" -path="res://.godot/imported/terrain_floor_dungeon_5.png-de6614fc89049d19ea41225a836f9d75.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_dungeon_5.png" -dest_files=["res://.godot/imported/terrain_floor_dungeon_5.png-de6614fc89049d19ea41225a836f9d75.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_underdark_1.png b/game/assets/art/board/terrain_floor_underdark_1.png deleted file mode 100644 index 58bbef8f..00000000 Binary files a/game/assets/art/board/terrain_floor_underdark_1.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_underdark_1.png.import b/game/assets/art/board/terrain_floor_underdark_1.png.import deleted file mode 100644 index d247f281..00000000 --- a/game/assets/art/board/terrain_floor_underdark_1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://tql72osnj7b4" -path="res://.godot/imported/terrain_floor_underdark_1.png-f600aa8d0e421e81abdeacc2ca1e684d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_underdark_1.png" -dest_files=["res://.godot/imported/terrain_floor_underdark_1.png-f600aa8d0e421e81abdeacc2ca1e684d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_underdark_2.png b/game/assets/art/board/terrain_floor_underdark_2.png deleted file mode 100644 index bc81def6..00000000 Binary files a/game/assets/art/board/terrain_floor_underdark_2.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_underdark_2.png.import b/game/assets/art/board/terrain_floor_underdark_2.png.import deleted file mode 100644 index 5d235be2..00000000 --- a/game/assets/art/board/terrain_floor_underdark_2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b5wep4y81o1jw" -path="res://.godot/imported/terrain_floor_underdark_2.png-af44e8e4b98a05a2d39075dbcd9d4e01.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_underdark_2.png" -dest_files=["res://.godot/imported/terrain_floor_underdark_2.png-af44e8e4b98a05a2d39075dbcd9d4e01.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_underdark_3.png b/game/assets/art/board/terrain_floor_underdark_3.png deleted file mode 100644 index fed5e8fd..00000000 Binary files a/game/assets/art/board/terrain_floor_underdark_3.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_underdark_3.png.import b/game/assets/art/board/terrain_floor_underdark_3.png.import deleted file mode 100644 index 37166c30..00000000 --- a/game/assets/art/board/terrain_floor_underdark_3.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dui4ogsp407gh" -path="res://.godot/imported/terrain_floor_underdark_3.png-2b02c10af1a0cdae05a3e6c4b62383db.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_underdark_3.png" -dest_files=["res://.godot/imported/terrain_floor_underdark_3.png-2b02c10af1a0cdae05a3e6c4b62383db.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_underdark_4.png b/game/assets/art/board/terrain_floor_underdark_4.png deleted file mode 100644 index 827034ce..00000000 Binary files a/game/assets/art/board/terrain_floor_underdark_4.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_underdark_4.png.import b/game/assets/art/board/terrain_floor_underdark_4.png.import deleted file mode 100644 index 1b28f0fd..00000000 --- a/game/assets/art/board/terrain_floor_underdark_4.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cmhm5txfhgwx3" -path="res://.godot/imported/terrain_floor_underdark_4.png-f1fdca02c60c236ff6c7656d2c63a42e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_underdark_4.png" -dest_files=["res://.godot/imported/terrain_floor_underdark_4.png-f1fdca02c60c236ff6c7656d2c63a42e.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_floor_underdark_5.png b/game/assets/art/board/terrain_floor_underdark_5.png deleted file mode 100644 index b9f29454..00000000 Binary files a/game/assets/art/board/terrain_floor_underdark_5.png and /dev/null differ diff --git a/game/assets/art/board/terrain_floor_underdark_5.png.import b/game/assets/art/board/terrain_floor_underdark_5.png.import deleted file mode 100644 index e36416ea..00000000 --- a/game/assets/art/board/terrain_floor_underdark_5.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://l2rq0unla3uv" -path="res://.godot/imported/terrain_floor_underdark_5.png-b581b01cb084ee52178ca96663e73933.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_floor_underdark_5.png" -dest_files=["res://.godot/imported/terrain_floor_underdark_5.png-b581b01cb084ee52178ca96663e73933.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_crack_deep_underdark.png b/game/assets/art/board/terrain_wall_center_crack_deep_underdark.png deleted file mode 100644 index 12ed78a6..00000000 Binary files a/game/assets/art/board/terrain_wall_center_crack_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_crack_deep_underdark.png.import b/game/assets/art/board/terrain_wall_center_crack_deep_underdark.png.import deleted file mode 100644 index 50457097..00000000 --- a/game/assets/art/board/terrain_wall_center_crack_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://rgaccyhfmihw" -path="res://.godot/imported/terrain_wall_center_crack_deep_underdark.png-2d56722bbd6050f6b795a625b3edaa6c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_crack_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_center_crack_deep_underdark.png-2d56722bbd6050f6b795a625b3edaa6c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_crack_dungeon.png b/game/assets/art/board/terrain_wall_center_crack_dungeon.png deleted file mode 100644 index 2aee016e..00000000 Binary files a/game/assets/art/board/terrain_wall_center_crack_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_crack_dungeon.png.import b/game/assets/art/board/terrain_wall_center_crack_dungeon.png.import deleted file mode 100644 index 1c877644..00000000 --- a/game/assets/art/board/terrain_wall_center_crack_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cgr1rjgu7yw3v" -path="res://.godot/imported/terrain_wall_center_crack_dungeon.png-df45d525c0fd838550460540defe30f2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_crack_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_center_crack_dungeon.png-df45d525c0fd838550460540defe30f2.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_crack_underdark.png b/game/assets/art/board/terrain_wall_center_crack_underdark.png deleted file mode 100644 index d17ef75a..00000000 Binary files a/game/assets/art/board/terrain_wall_center_crack_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_crack_underdark.png.import b/game/assets/art/board/terrain_wall_center_crack_underdark.png.import deleted file mode 100644 index 473ea274..00000000 --- a/game/assets/art/board/terrain_wall_center_crack_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bv36y7mva45uy" -path="res://.godot/imported/terrain_wall_center_crack_underdark.png-8ca77a6201e1431a0db830c2275ad51e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_crack_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_center_crack_underdark.png-8ca77a6201e1431a0db830c2275ad51e.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_deep_underdark.png b/game/assets/art/board/terrain_wall_center_deep_underdark.png deleted file mode 100644 index 2c61cf83..00000000 Binary files a/game/assets/art/board/terrain_wall_center_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_deep_underdark.png.import b/game/assets/art/board/terrain_wall_center_deep_underdark.png.import deleted file mode 100644 index 26be9c37..00000000 --- a/game/assets/art/board/terrain_wall_center_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dvhyhx04wiouj" -path="res://.godot/imported/terrain_wall_center_deep_underdark.png-21dba86720ce186d7016925f8a498d80.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_center_deep_underdark.png-21dba86720ce186d7016925f8a498d80.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_dungeon.png b/game/assets/art/board/terrain_wall_center_dungeon.png deleted file mode 100644 index 796b1c84..00000000 Binary files a/game/assets/art/board/terrain_wall_center_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_dungeon.png.import b/game/assets/art/board/terrain_wall_center_dungeon.png.import deleted file mode 100644 index 4ec18e73..00000000 --- a/game/assets/art/board/terrain_wall_center_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://qxf2g7lov6th" -path="res://.godot/imported/terrain_wall_center_dungeon.png-658b0d351ec8a12f85a4143d159fb3fd.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_center_dungeon.png-658b0d351ec8a12f85a4143d159fb3fd.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_speckle_deep_underdark.png b/game/assets/art/board/terrain_wall_center_speckle_deep_underdark.png deleted file mode 100644 index abf7f96f..00000000 Binary files a/game/assets/art/board/terrain_wall_center_speckle_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_speckle_deep_underdark.png.import b/game/assets/art/board/terrain_wall_center_speckle_deep_underdark.png.import deleted file mode 100644 index 3ed807d9..00000000 --- a/game/assets/art/board/terrain_wall_center_speckle_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://l7y5j2ksy8ax" -path="res://.godot/imported/terrain_wall_center_speckle_deep_underdark.png-18c3524fcd66d9ed2ed95e2e87467104.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_speckle_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_center_speckle_deep_underdark.png-18c3524fcd66d9ed2ed95e2e87467104.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_speckle_dungeon.png b/game/assets/art/board/terrain_wall_center_speckle_dungeon.png deleted file mode 100644 index cfb85b97..00000000 Binary files a/game/assets/art/board/terrain_wall_center_speckle_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_speckle_dungeon.png.import b/game/assets/art/board/terrain_wall_center_speckle_dungeon.png.import deleted file mode 100644 index 2a6ba912..00000000 --- a/game/assets/art/board/terrain_wall_center_speckle_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cf8sm7ryxvgph" -path="res://.godot/imported/terrain_wall_center_speckle_dungeon.png-2ccd555fef371b488c3dc218ae241295.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_speckle_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_center_speckle_dungeon.png-2ccd555fef371b488c3dc218ae241295.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_speckle_underdark.png b/game/assets/art/board/terrain_wall_center_speckle_underdark.png deleted file mode 100644 index 5bd9d774..00000000 Binary files a/game/assets/art/board/terrain_wall_center_speckle_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_speckle_underdark.png.import b/game/assets/art/board/terrain_wall_center_speckle_underdark.png.import deleted file mode 100644 index c84df32c..00000000 --- a/game/assets/art/board/terrain_wall_center_speckle_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://db0pevpne83kk" -path="res://.godot/imported/terrain_wall_center_speckle_underdark.png-a6e4207e2f82bef11f1ec867f81aeef8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_speckle_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_center_speckle_underdark.png-a6e4207e2f82bef11f1ec867f81aeef8.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_center_underdark.png b/game/assets/art/board/terrain_wall_center_underdark.png deleted file mode 100644 index 1cd39d08..00000000 Binary files a/game/assets/art/board/terrain_wall_center_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_center_underdark.png.import b/game/assets/art/board/terrain_wall_center_underdark.png.import deleted file mode 100644 index 4670f55d..00000000 --- a/game/assets/art/board/terrain_wall_center_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cvo0jytgh8bgh" -path="res://.godot/imported/terrain_wall_center_underdark.png-4586560d6659927249e74c4aef1c55db.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_center_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_center_underdark.png-4586560d6659927249e74c4aef1c55db.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_n_deep_underdark.png b/game/assets/art/board/terrain_wall_end_n_deep_underdark.png deleted file mode 100644 index 8d710978..00000000 Binary files a/game/assets/art/board/terrain_wall_end_n_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_n_deep_underdark.png.import b/game/assets/art/board/terrain_wall_end_n_deep_underdark.png.import deleted file mode 100644 index 72947459..00000000 --- a/game/assets/art/board/terrain_wall_end_n_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ebb36udrrlco" -path="res://.godot/imported/terrain_wall_end_n_deep_underdark.png-953a459c1d7d70cb54ff21d6e65e947e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_n_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_end_n_deep_underdark.png-953a459c1d7d70cb54ff21d6e65e947e.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_n_dungeon.png b/game/assets/art/board/terrain_wall_end_n_dungeon.png deleted file mode 100644 index bc126ab6..00000000 Binary files a/game/assets/art/board/terrain_wall_end_n_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_n_dungeon.png.import b/game/assets/art/board/terrain_wall_end_n_dungeon.png.import deleted file mode 100644 index 5ed9e401..00000000 --- a/game/assets/art/board/terrain_wall_end_n_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bjkoixrqxyfvi" -path="res://.godot/imported/terrain_wall_end_n_dungeon.png-0292ee08e0a9524fae5fce50c83e27a0.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_n_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_end_n_dungeon.png-0292ee08e0a9524fae5fce50c83e27a0.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_n_underdark.png b/game/assets/art/board/terrain_wall_end_n_underdark.png deleted file mode 100644 index d2ba1c50..00000000 Binary files a/game/assets/art/board/terrain_wall_end_n_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_n_underdark.png.import b/game/assets/art/board/terrain_wall_end_n_underdark.png.import deleted file mode 100644 index ac11cbac..00000000 --- a/game/assets/art/board/terrain_wall_end_n_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dwisuhgfosirs" -path="res://.godot/imported/terrain_wall_end_n_underdark.png-623c49a4e05a066226c2dfb6e066d735.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_n_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_end_n_underdark.png-623c49a4e05a066226c2dfb6e066d735.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_s_deep_underdark.png b/game/assets/art/board/terrain_wall_end_s_deep_underdark.png deleted file mode 100644 index 36030068..00000000 Binary files a/game/assets/art/board/terrain_wall_end_s_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_s_deep_underdark.png.import b/game/assets/art/board/terrain_wall_end_s_deep_underdark.png.import deleted file mode 100644 index f22138c3..00000000 --- a/game/assets/art/board/terrain_wall_end_s_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c3jin8ytakl8a" -path="res://.godot/imported/terrain_wall_end_s_deep_underdark.png-6c06ef145e41ecfc9bbdfc330ea28e29.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_s_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_end_s_deep_underdark.png-6c06ef145e41ecfc9bbdfc330ea28e29.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_s_dungeon.png b/game/assets/art/board/terrain_wall_end_s_dungeon.png deleted file mode 100644 index 13618f17..00000000 Binary files a/game/assets/art/board/terrain_wall_end_s_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_s_dungeon.png.import b/game/assets/art/board/terrain_wall_end_s_dungeon.png.import deleted file mode 100644 index 9bd24b30..00000000 --- a/game/assets/art/board/terrain_wall_end_s_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dxu6my20xmrcw" -path="res://.godot/imported/terrain_wall_end_s_dungeon.png-57e9f35af5ee5188529d19914d6ca77c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_s_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_end_s_dungeon.png-57e9f35af5ee5188529d19914d6ca77c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_s_underdark.png b/game/assets/art/board/terrain_wall_end_s_underdark.png deleted file mode 100644 index 60d01669..00000000 Binary files a/game/assets/art/board/terrain_wall_end_s_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_s_underdark.png.import b/game/assets/art/board/terrain_wall_end_s_underdark.png.import deleted file mode 100644 index c0345477..00000000 --- a/game/assets/art/board/terrain_wall_end_s_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b4vqrhnwi6dt" -path="res://.godot/imported/terrain_wall_end_s_underdark.png-bc9e276e09623b0334da8ed6dfe0eab1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_s_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_end_s_underdark.png-bc9e276e09623b0334da8ed6dfe0eab1.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_w_deep_underdark.png b/game/assets/art/board/terrain_wall_end_w_deep_underdark.png deleted file mode 100644 index 3901d0c2..00000000 Binary files a/game/assets/art/board/terrain_wall_end_w_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_w_deep_underdark.png.import b/game/assets/art/board/terrain_wall_end_w_deep_underdark.png.import deleted file mode 100644 index 55fec3be..00000000 --- a/game/assets/art/board/terrain_wall_end_w_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bii82y3sk4grg" -path="res://.godot/imported/terrain_wall_end_w_deep_underdark.png-d8d8a5cb939f178b0b824311d090e725.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_w_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_end_w_deep_underdark.png-d8d8a5cb939f178b0b824311d090e725.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_w_dungeon.png b/game/assets/art/board/terrain_wall_end_w_dungeon.png deleted file mode 100644 index 34aa583f..00000000 Binary files a/game/assets/art/board/terrain_wall_end_w_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_w_dungeon.png.import b/game/assets/art/board/terrain_wall_end_w_dungeon.png.import deleted file mode 100644 index 6ab2eb30..00000000 --- a/game/assets/art/board/terrain_wall_end_w_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b65l0bhfd558i" -path="res://.godot/imported/terrain_wall_end_w_dungeon.png-3aad2e0c1657cf6eebf27b020b395b2c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_w_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_end_w_dungeon.png-3aad2e0c1657cf6eebf27b020b395b2c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_end_w_underdark.png b/game/assets/art/board/terrain_wall_end_w_underdark.png deleted file mode 100644 index 56002e77..00000000 Binary files a/game/assets/art/board/terrain_wall_end_w_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_end_w_underdark.png.import b/game/assets/art/board/terrain_wall_end_w_underdark.png.import deleted file mode 100644 index 5f3c32d9..00000000 --- a/game/assets/art/board/terrain_wall_end_w_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cd5s6k3b7im7e" -path="res://.godot/imported/terrain_wall_end_w_underdark.png-9186bc905359de8487544281666215d5.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_end_w_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_end_w_underdark.png-9186bc905359de8487544281666215d5.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_hrun_deep_underdark.png b/game/assets/art/board/terrain_wall_hrun_deep_underdark.png deleted file mode 100644 index 7b9ea546..00000000 Binary files a/game/assets/art/board/terrain_wall_hrun_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_hrun_deep_underdark.png.import b/game/assets/art/board/terrain_wall_hrun_deep_underdark.png.import deleted file mode 100644 index cfe6fe84..00000000 --- a/game/assets/art/board/terrain_wall_hrun_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b5p724r8nn4d0" -path="res://.godot/imported/terrain_wall_hrun_deep_underdark.png-0420654e445530a86d1d34034a31da6d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_hrun_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_hrun_deep_underdark.png-0420654e445530a86d1d34034a31da6d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_hrun_dungeon.png b/game/assets/art/board/terrain_wall_hrun_dungeon.png deleted file mode 100644 index f5cd79b6..00000000 Binary files a/game/assets/art/board/terrain_wall_hrun_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_hrun_dungeon.png.import b/game/assets/art/board/terrain_wall_hrun_dungeon.png.import deleted file mode 100644 index 607a46e2..00000000 --- a/game/assets/art/board/terrain_wall_hrun_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cbf66ix2absgu" -path="res://.godot/imported/terrain_wall_hrun_dungeon.png-3c9b70e7ac0fb58d990f82e83c6e731f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_hrun_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_hrun_dungeon.png-3c9b70e7ac0fb58d990f82e83c6e731f.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_hrun_underdark.png b/game/assets/art/board/terrain_wall_hrun_underdark.png deleted file mode 100644 index 90a99e66..00000000 Binary files a/game/assets/art/board/terrain_wall_hrun_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_hrun_underdark.png.import b/game/assets/art/board/terrain_wall_hrun_underdark.png.import deleted file mode 100644 index e9e060ac..00000000 --- a/game/assets/art/board/terrain_wall_hrun_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://svrupdcmhsfl" -path="res://.godot/imported/terrain_wall_hrun_underdark.png-4291043e05ce452299e340333ee8e872.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_hrun_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_hrun_underdark.png-4291043e05ce452299e340333ee8e872.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_in_nw_deep_underdark.png b/game/assets/art/board/terrain_wall_in_nw_deep_underdark.png deleted file mode 100644 index c83f80eb..00000000 Binary files a/game/assets/art/board/terrain_wall_in_nw_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_in_nw_deep_underdark.png.import b/game/assets/art/board/terrain_wall_in_nw_deep_underdark.png.import deleted file mode 100644 index 58d16d76..00000000 --- a/game/assets/art/board/terrain_wall_in_nw_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bo6xkwfjmxosn" -path="res://.godot/imported/terrain_wall_in_nw_deep_underdark.png-2d2512aed9946584c3b8dd0df540cb09.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_in_nw_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_in_nw_deep_underdark.png-2d2512aed9946584c3b8dd0df540cb09.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_in_nw_dungeon.png b/game/assets/art/board/terrain_wall_in_nw_dungeon.png deleted file mode 100644 index 5c1266e2..00000000 Binary files a/game/assets/art/board/terrain_wall_in_nw_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_in_nw_dungeon.png.import b/game/assets/art/board/terrain_wall_in_nw_dungeon.png.import deleted file mode 100644 index 6f89e9ea..00000000 --- a/game/assets/art/board/terrain_wall_in_nw_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cdi3c5ap10ylv" -path="res://.godot/imported/terrain_wall_in_nw_dungeon.png-2f1ca8b7a692cfcb82277f1a1f644e81.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_in_nw_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_in_nw_dungeon.png-2f1ca8b7a692cfcb82277f1a1f644e81.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_in_nw_underdark.png b/game/assets/art/board/terrain_wall_in_nw_underdark.png deleted file mode 100644 index cb06e7cb..00000000 Binary files a/game/assets/art/board/terrain_wall_in_nw_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_in_nw_underdark.png.import b/game/assets/art/board/terrain_wall_in_nw_underdark.png.import deleted file mode 100644 index e7591b0b..00000000 --- a/game/assets/art/board/terrain_wall_in_nw_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cdw5m34cj1i7y" -path="res://.godot/imported/terrain_wall_in_nw_underdark.png-abdbd3fda6332dc184e23a71b3e64694.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_in_nw_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_in_nw_underdark.png-abdbd3fda6332dc184e23a71b3e64694.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_in_sw_deep_underdark.png b/game/assets/art/board/terrain_wall_in_sw_deep_underdark.png deleted file mode 100644 index 0b82e6c6..00000000 Binary files a/game/assets/art/board/terrain_wall_in_sw_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_in_sw_deep_underdark.png.import b/game/assets/art/board/terrain_wall_in_sw_deep_underdark.png.import deleted file mode 100644 index 0081da6c..00000000 --- a/game/assets/art/board/terrain_wall_in_sw_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bfdvybhhsiab" -path="res://.godot/imported/terrain_wall_in_sw_deep_underdark.png-95a51c1cfaa299327d9521102d62a8fd.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_in_sw_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_in_sw_deep_underdark.png-95a51c1cfaa299327d9521102d62a8fd.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_in_sw_dungeon.png b/game/assets/art/board/terrain_wall_in_sw_dungeon.png deleted file mode 100644 index 4fd8d1c2..00000000 Binary files a/game/assets/art/board/terrain_wall_in_sw_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_in_sw_dungeon.png.import b/game/assets/art/board/terrain_wall_in_sw_dungeon.png.import deleted file mode 100644 index bae01494..00000000 --- a/game/assets/art/board/terrain_wall_in_sw_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bm1ym8guy8hy7" -path="res://.godot/imported/terrain_wall_in_sw_dungeon.png-af8146ab3ec09f7ec81d311545df2db8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_in_sw_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_in_sw_dungeon.png-af8146ab3ec09f7ec81d311545df2db8.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_in_sw_underdark.png b/game/assets/art/board/terrain_wall_in_sw_underdark.png deleted file mode 100644 index b9981cc4..00000000 Binary files a/game/assets/art/board/terrain_wall_in_sw_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_in_sw_underdark.png.import b/game/assets/art/board/terrain_wall_in_sw_underdark.png.import deleted file mode 100644 index 28503b9f..00000000 --- a/game/assets/art/board/terrain_wall_in_sw_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c0ucsu6l6goha" -path="res://.godot/imported/terrain_wall_in_sw_underdark.png-f6e0900dc4f816e4abc37c0f028e53b1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_in_sw_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_in_sw_underdark.png-f6e0900dc4f816e4abc37c0f028e53b1.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_lone_deep_underdark.png b/game/assets/art/board/terrain_wall_lone_deep_underdark.png deleted file mode 100644 index 49d1c140..00000000 Binary files a/game/assets/art/board/terrain_wall_lone_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_lone_deep_underdark.png.import b/game/assets/art/board/terrain_wall_lone_deep_underdark.png.import deleted file mode 100644 index 26e03b63..00000000 --- a/game/assets/art/board/terrain_wall_lone_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://hvnun5n6056x" -path="res://.godot/imported/terrain_wall_lone_deep_underdark.png-1a6b6f4455c09948d8f791bff7c778f8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_lone_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_lone_deep_underdark.png-1a6b6f4455c09948d8f791bff7c778f8.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_lone_dungeon.png b/game/assets/art/board/terrain_wall_lone_dungeon.png deleted file mode 100644 index 550efaa0..00000000 Binary files a/game/assets/art/board/terrain_wall_lone_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_lone_dungeon.png.import b/game/assets/art/board/terrain_wall_lone_dungeon.png.import deleted file mode 100644 index 18cca459..00000000 --- a/game/assets/art/board/terrain_wall_lone_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bm2h8q6lnsj2o" -path="res://.godot/imported/terrain_wall_lone_dungeon.png-52df3c8260010c5129ad3213cd9b9a43.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_lone_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_lone_dungeon.png-52df3c8260010c5129ad3213cd9b9a43.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_lone_underdark.png b/game/assets/art/board/terrain_wall_lone_underdark.png deleted file mode 100644 index 8a5d5468..00000000 Binary files a/game/assets/art/board/terrain_wall_lone_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_lone_underdark.png.import b/game/assets/art/board/terrain_wall_lone_underdark.png.import deleted file mode 100644 index d159e400..00000000 --- a/game/assets/art/board/terrain_wall_lone_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://77v8wirdmy68" -path="res://.godot/imported/terrain_wall_lone_underdark.png-7edaf1e8452f7900b29c17db52c0e2fb.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_lone_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_lone_underdark.png-7edaf1e8452f7900b29c17db52c0e2fb.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_n_deep_underdark.png b/game/assets/art/board/terrain_wall_n_deep_underdark.png deleted file mode 100644 index 32e215ea..00000000 Binary files a/game/assets/art/board/terrain_wall_n_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_n_deep_underdark.png.import b/game/assets/art/board/terrain_wall_n_deep_underdark.png.import deleted file mode 100644 index d2711691..00000000 --- a/game/assets/art/board/terrain_wall_n_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://82hovv8uc8x8" -path="res://.godot/imported/terrain_wall_n_deep_underdark.png-fbb2006ac471691867c3bfc9bc5f8f4a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_n_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_n_deep_underdark.png-fbb2006ac471691867c3bfc9bc5f8f4a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_n_dungeon.png b/game/assets/art/board/terrain_wall_n_dungeon.png deleted file mode 100644 index da17d322..00000000 Binary files a/game/assets/art/board/terrain_wall_n_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_n_dungeon.png.import b/game/assets/art/board/terrain_wall_n_dungeon.png.import deleted file mode 100644 index 19900fdd..00000000 --- a/game/assets/art/board/terrain_wall_n_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://xi6qqpfssh4f" -path="res://.godot/imported/terrain_wall_n_dungeon.png-92bed658d0d444b4b3af2c7099283ac6.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_n_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_n_dungeon.png-92bed658d0d444b4b3af2c7099283ac6.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_n_underdark.png b/game/assets/art/board/terrain_wall_n_underdark.png deleted file mode 100644 index a5cf1f1b..00000000 Binary files a/game/assets/art/board/terrain_wall_n_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_n_underdark.png.import b/game/assets/art/board/terrain_wall_n_underdark.png.import deleted file mode 100644 index c68b7144..00000000 --- a/game/assets/art/board/terrain_wall_n_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dmdw5yu8tl5bo" -path="res://.godot/imported/terrain_wall_n_underdark.png-67d67be8ad6c55a96d817a8401a23591.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_n_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_n_underdark.png-67d67be8ad6c55a96d817a8401a23591.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_nw_deep_underdark.png b/game/assets/art/board/terrain_wall_nw_deep_underdark.png deleted file mode 100644 index 02d6e498..00000000 Binary files a/game/assets/art/board/terrain_wall_nw_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_nw_deep_underdark.png.import b/game/assets/art/board/terrain_wall_nw_deep_underdark.png.import deleted file mode 100644 index a318cb9c..00000000 --- a/game/assets/art/board/terrain_wall_nw_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cc4ywbm165883" -path="res://.godot/imported/terrain_wall_nw_deep_underdark.png-79c09758be59b4560293fecb9c18ed05.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_nw_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_nw_deep_underdark.png-79c09758be59b4560293fecb9c18ed05.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_nw_dungeon.png b/game/assets/art/board/terrain_wall_nw_dungeon.png deleted file mode 100644 index bcb184e8..00000000 Binary files a/game/assets/art/board/terrain_wall_nw_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_nw_dungeon.png.import b/game/assets/art/board/terrain_wall_nw_dungeon.png.import deleted file mode 100644 index 4b90ce8b..00000000 --- a/game/assets/art/board/terrain_wall_nw_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bg8eus334o3xy" -path="res://.godot/imported/terrain_wall_nw_dungeon.png-6b9f23693b836a61cdad264892b98848.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_nw_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_nw_dungeon.png-6b9f23693b836a61cdad264892b98848.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_nw_underdark.png b/game/assets/art/board/terrain_wall_nw_underdark.png deleted file mode 100644 index 208d3fd1..00000000 Binary files a/game/assets/art/board/terrain_wall_nw_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_nw_underdark.png.import b/game/assets/art/board/terrain_wall_nw_underdark.png.import deleted file mode 100644 index f64fd9ed..00000000 --- a/game/assets/art/board/terrain_wall_nw_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dglh6jyhow4c" -path="res://.godot/imported/terrain_wall_nw_underdark.png-fe712f58bebec5aa7c5efd1227f781c3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_nw_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_nw_underdark.png-fe712f58bebec5aa7c5efd1227f781c3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_s_deep_underdark.png b/game/assets/art/board/terrain_wall_s_deep_underdark.png deleted file mode 100644 index 71a223db..00000000 Binary files a/game/assets/art/board/terrain_wall_s_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_s_deep_underdark.png.import b/game/assets/art/board/terrain_wall_s_deep_underdark.png.import deleted file mode 100644 index cc153f56..00000000 --- a/game/assets/art/board/terrain_wall_s_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c438agpdmwdu3" -path="res://.godot/imported/terrain_wall_s_deep_underdark.png-3c678f69636db64772c2edc372d7c317.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_s_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_s_deep_underdark.png-3c678f69636db64772c2edc372d7c317.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_s_dungeon.png b/game/assets/art/board/terrain_wall_s_dungeon.png deleted file mode 100644 index 5071d740..00000000 Binary files a/game/assets/art/board/terrain_wall_s_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_s_dungeon.png.import b/game/assets/art/board/terrain_wall_s_dungeon.png.import deleted file mode 100644 index 4c862571..00000000 --- a/game/assets/art/board/terrain_wall_s_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://domdlufjlq6nq" -path="res://.godot/imported/terrain_wall_s_dungeon.png-037dfed667cc59ec4668e80a9794926a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_s_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_s_dungeon.png-037dfed667cc59ec4668e80a9794926a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_s_underdark.png b/game/assets/art/board/terrain_wall_s_underdark.png deleted file mode 100644 index 34467477..00000000 Binary files a/game/assets/art/board/terrain_wall_s_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_s_underdark.png.import b/game/assets/art/board/terrain_wall_s_underdark.png.import deleted file mode 100644 index 701b0721..00000000 --- a/game/assets/art/board/terrain_wall_s_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b0ql3ac3up57t" -path="res://.godot/imported/terrain_wall_s_underdark.png-0100fbd8ef0488e937caa72aa208a5fd.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_s_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_s_underdark.png-0100fbd8ef0488e937caa72aa208a5fd.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_sw_deep_underdark.png b/game/assets/art/board/terrain_wall_sw_deep_underdark.png deleted file mode 100644 index e3b8cda0..00000000 Binary files a/game/assets/art/board/terrain_wall_sw_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_sw_deep_underdark.png.import b/game/assets/art/board/terrain_wall_sw_deep_underdark.png.import deleted file mode 100644 index e0172639..00000000 --- a/game/assets/art/board/terrain_wall_sw_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b2ystne6fwwdq" -path="res://.godot/imported/terrain_wall_sw_deep_underdark.png-2f4d16adc4d6eb4d0098ac25924a2ef3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_sw_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_sw_deep_underdark.png-2f4d16adc4d6eb4d0098ac25924a2ef3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_sw_dungeon.png b/game/assets/art/board/terrain_wall_sw_dungeon.png deleted file mode 100644 index 73499d81..00000000 Binary files a/game/assets/art/board/terrain_wall_sw_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_sw_dungeon.png.import b/game/assets/art/board/terrain_wall_sw_dungeon.png.import deleted file mode 100644 index 8f709c27..00000000 --- a/game/assets/art/board/terrain_wall_sw_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dq8peiidl8sat" -path="res://.godot/imported/terrain_wall_sw_dungeon.png-330552816fb6b7432c219d2680a44e5c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_sw_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_sw_dungeon.png-330552816fb6b7432c219d2680a44e5c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_sw_underdark.png b/game/assets/art/board/terrain_wall_sw_underdark.png deleted file mode 100644 index 0b371a34..00000000 Binary files a/game/assets/art/board/terrain_wall_sw_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_sw_underdark.png.import b/game/assets/art/board/terrain_wall_sw_underdark.png.import deleted file mode 100644 index 5c1ba34c..00000000 --- a/game/assets/art/board/terrain_wall_sw_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://6sm7bqq31s7s" -path="res://.godot/imported/terrain_wall_sw_underdark.png-f36c6615ac6d087a1c50a968712353a2.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_sw_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_sw_underdark.png-f36c6615ac6d087a1c50a968712353a2.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_vrun_deep_underdark.png b/game/assets/art/board/terrain_wall_vrun_deep_underdark.png deleted file mode 100644 index a75fe6a8..00000000 Binary files a/game/assets/art/board/terrain_wall_vrun_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_vrun_deep_underdark.png.import b/game/assets/art/board/terrain_wall_vrun_deep_underdark.png.import deleted file mode 100644 index b3e269f5..00000000 --- a/game/assets/art/board/terrain_wall_vrun_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://xaxgkg0r3au8" -path="res://.godot/imported/terrain_wall_vrun_deep_underdark.png-152a77f4602a5de6311c4f3dbff9d2cb.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_vrun_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_vrun_deep_underdark.png-152a77f4602a5de6311c4f3dbff9d2cb.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_vrun_dungeon.png b/game/assets/art/board/terrain_wall_vrun_dungeon.png deleted file mode 100644 index 7864db33..00000000 Binary files a/game/assets/art/board/terrain_wall_vrun_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_vrun_dungeon.png.import b/game/assets/art/board/terrain_wall_vrun_dungeon.png.import deleted file mode 100644 index a0bf908a..00000000 --- a/game/assets/art/board/terrain_wall_vrun_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://mx6jscg4t428" -path="res://.godot/imported/terrain_wall_vrun_dungeon.png-e4381c9b2b4333532791f5d6ab9b27b8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_vrun_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_vrun_dungeon.png-e4381c9b2b4333532791f5d6ab9b27b8.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_vrun_underdark.png b/game/assets/art/board/terrain_wall_vrun_underdark.png deleted file mode 100644 index 31ad5d66..00000000 Binary files a/game/assets/art/board/terrain_wall_vrun_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_vrun_underdark.png.import b/game/assets/art/board/terrain_wall_vrun_underdark.png.import deleted file mode 100644 index 6fd7bbf7..00000000 --- a/game/assets/art/board/terrain_wall_vrun_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cu6160orutoe6" -path="res://.godot/imported/terrain_wall_vrun_underdark.png-210db3728378ea55e8051118f89e1acf.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_vrun_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_vrun_underdark.png-210db3728378ea55e8051118f89e1acf.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_w_deep_underdark.png b/game/assets/art/board/terrain_wall_w_deep_underdark.png deleted file mode 100644 index 3ab8db0e..00000000 Binary files a/game/assets/art/board/terrain_wall_w_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_w_deep_underdark.png.import b/game/assets/art/board/terrain_wall_w_deep_underdark.png.import deleted file mode 100644 index d252c609..00000000 --- a/game/assets/art/board/terrain_wall_w_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cryoqyhs63ppr" -path="res://.godot/imported/terrain_wall_w_deep_underdark.png-721382e265020c9dcd3b916ab1b0a301.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_w_deep_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_w_deep_underdark.png-721382e265020c9dcd3b916ab1b0a301.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_w_dungeon.png b/game/assets/art/board/terrain_wall_w_dungeon.png deleted file mode 100644 index a793e266..00000000 Binary files a/game/assets/art/board/terrain_wall_w_dungeon.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_w_dungeon.png.import b/game/assets/art/board/terrain_wall_w_dungeon.png.import deleted file mode 100644 index 135d7a21..00000000 --- a/game/assets/art/board/terrain_wall_w_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://k5utfbnxinx4" -path="res://.godot/imported/terrain_wall_w_dungeon.png-8efa491fd34ca8272667bd9d146f8bcd.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_w_dungeon.png" -dest_files=["res://.godot/imported/terrain_wall_w_dungeon.png-8efa491fd34ca8272667bd9d146f8bcd.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/board/terrain_wall_w_underdark.png b/game/assets/art/board/terrain_wall_w_underdark.png deleted file mode 100644 index 63432296..00000000 Binary files a/game/assets/art/board/terrain_wall_w_underdark.png and /dev/null differ diff --git a/game/assets/art/board/terrain_wall_w_underdark.png.import b/game/assets/art/board/terrain_wall_w_underdark.png.import deleted file mode 100644 index 42ca69e4..00000000 --- a/game/assets/art/board/terrain_wall_w_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://2iu5pro6yicu" -path="res://.godot/imported/terrain_wall_w_underdark.png-b4cc22a68fe225462ee73f38fb2f59bc.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/board/terrain_wall_w_underdark.png" -dest_files=["res://.godot/imported/terrain_wall_w_underdark.png-b4cc22a68fe225462ee73f38fb2f59bc.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_bugbear.png b/game/assets/art/character/character_enemy_bugbear.png deleted file mode 100644 index 1459c927..00000000 Binary files a/game/assets/art/character/character_enemy_bugbear.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_bugbear.png.import b/game/assets/art/character/character_enemy_bugbear.png.import deleted file mode 100644 index c5cd3bd7..00000000 --- a/game/assets/art/character/character_enemy_bugbear.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d1aq8my5rbybh" -path="res://.godot/imported/character_enemy_bugbear.png-b85db95696ea170d3a02378c1b9cb1b6.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_bugbear.png" -dest_files=["res://.godot/imported/character_enemy_bugbear.png-b85db95696ea170d3a02378c1b9cb1b6.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_drider.png b/game/assets/art/character/character_enemy_drider.png deleted file mode 100644 index eacafc76..00000000 Binary files a/game/assets/art/character/character_enemy_drider.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_drider.png.import b/game/assets/art/character/character_enemy_drider.png.import deleted file mode 100644 index c9b344ca..00000000 --- a/game/assets/art/character/character_enemy_drider.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://d1b3u3566fv0o" -path="res://.godot/imported/character_enemy_drider.png-89d380427d47e32b55ca302d2158beaa.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_drider.png" -dest_files=["res://.godot/imported/character_enemy_drider.png-89d380427d47e32b55ca302d2158beaa.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_duergar.png b/game/assets/art/character/character_enemy_duergar.png deleted file mode 100644 index fa34b7e9..00000000 Binary files a/game/assets/art/character/character_enemy_duergar.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_duergar.png.import b/game/assets/art/character/character_enemy_duergar.png.import deleted file mode 100644 index 33bb84b1..00000000 --- a/game/assets/art/character/character_enemy_duergar.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dspobuhs2bv1o" -path="res://.godot/imported/character_enemy_duergar.png-c02537548b2ea756962fa93566ead2ca.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_duergar.png" -dest_files=["res://.godot/imported/character_enemy_duergar.png-c02537548b2ea756962fa93566ead2ca.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_duergar_king.png b/game/assets/art/character/character_enemy_duergar_king.png deleted file mode 100644 index b70daebd..00000000 Binary files a/game/assets/art/character/character_enemy_duergar_king.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_duergar_king.png.import b/game/assets/art/character/character_enemy_duergar_king.png.import deleted file mode 100644 index 6ba43975..00000000 --- a/game/assets/art/character/character_enemy_duergar_king.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://7uvsmevmehhj" -path="res://.godot/imported/character_enemy_duergar_king.png-d5e31106329eda800f48ca51edbed39d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_duergar_king.png" -dest_files=["res://.godot/imported/character_enemy_duergar_king.png-d5e31106329eda800f48ca51edbed39d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_giant_spider.png b/game/assets/art/character/character_enemy_giant_spider.png deleted file mode 100644 index 6dca3321..00000000 Binary files a/game/assets/art/character/character_enemy_giant_spider.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_giant_spider.png.import b/game/assets/art/character/character_enemy_giant_spider.png.import deleted file mode 100644 index 1e792c0b..00000000 --- a/game/assets/art/character/character_enemy_giant_spider.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dpyl4psib7iq3" -path="res://.godot/imported/character_enemy_giant_spider.png-172e2248fcfbc494429b6e3fd1b999c7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_giant_spider.png" -dest_files=["res://.godot/imported/character_enemy_giant_spider.png-172e2248fcfbc494429b6e3fd1b999c7.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_goblin.png b/game/assets/art/character/character_enemy_goblin.png deleted file mode 100644 index c6630f68..00000000 Binary files a/game/assets/art/character/character_enemy_goblin.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_goblin.png.import b/game/assets/art/character/character_enemy_goblin.png.import deleted file mode 100644 index fbf9332c..00000000 --- a/game/assets/art/character/character_enemy_goblin.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://btp31vbcf4cqo" -path="res://.godot/imported/character_enemy_goblin.png-61e8f4ed9f4bde5c1ebad41aac0e2b30.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_goblin.png" -dest_files=["res://.godot/imported/character_enemy_goblin.png-61e8f4ed9f4bde5c1ebad41aac0e2b30.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_hook_horror.png b/game/assets/art/character/character_enemy_hook_horror.png deleted file mode 100644 index fb11697a..00000000 Binary files a/game/assets/art/character/character_enemy_hook_horror.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_hook_horror.png.import b/game/assets/art/character/character_enemy_hook_horror.png.import deleted file mode 100644 index 452f714f..00000000 --- a/game/assets/art/character/character_enemy_hook_horror.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b2a3gq6llqrbl" -path="res://.godot/imported/character_enemy_hook_horror.png-f7f019e67911860bfd4be9701c6e9b2c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_hook_horror.png" -dest_files=["res://.godot/imported/character_enemy_hook_horror.png-f7f019e67911860bfd4be9701c6e9b2c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_enemy_ogre_chief.png b/game/assets/art/character/character_enemy_ogre_chief.png deleted file mode 100644 index c1d89406..00000000 Binary files a/game/assets/art/character/character_enemy_ogre_chief.png and /dev/null differ diff --git a/game/assets/art/character/character_enemy_ogre_chief.png.import b/game/assets/art/character/character_enemy_ogre_chief.png.import deleted file mode 100644 index b7418654..00000000 --- a/game/assets/art/character/character_enemy_ogre_chief.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cxhjjf70qlwko" -path="res://.godot/imported/character_enemy_ogre_chief.png-cb3ca5d1a22cd8e99e0e0e67f0f8798c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_enemy_ogre_chief.png" -dest_files=["res://.godot/imported/character_enemy_ogre_chief.png-cb3ca5d1a22cd8e99e0e0e67f0f8798c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_hero_attack.png b/game/assets/art/character/character_hero_attack.png deleted file mode 100644 index b3ede0cf..00000000 Binary files a/game/assets/art/character/character_hero_attack.png and /dev/null differ diff --git a/game/assets/art/character/character_hero_attack.png.import b/game/assets/art/character/character_hero_attack.png.import deleted file mode 100644 index 91f91984..00000000 --- a/game/assets/art/character/character_hero_attack.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bntadl65b6jnw" -path="res://.godot/imported/character_hero_attack.png-93b08f476e3a009b89e396fa1e46e6df.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_hero_attack.png" -dest_files=["res://.godot/imported/character_hero_attack.png-93b08f476e3a009b89e396fa1e46e6df.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_hero_hit.png b/game/assets/art/character/character_hero_hit.png deleted file mode 100644 index ba469fae..00000000 Binary files a/game/assets/art/character/character_hero_hit.png and /dev/null differ diff --git a/game/assets/art/character/character_hero_hit.png.import b/game/assets/art/character/character_hero_hit.png.import deleted file mode 100644 index af346185..00000000 --- a/game/assets/art/character/character_hero_hit.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dimscg7o8etlj" -path="res://.godot/imported/character_hero_hit.png-568efe9a72fdfea9f5ec51af2bef96cb.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_hero_hit.png" -dest_files=["res://.godot/imported/character_hero_hit.png-568efe9a72fdfea9f5ec51af2bef96cb.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_hero_idle.png b/game/assets/art/character/character_hero_idle.png deleted file mode 100644 index 70262f12..00000000 Binary files a/game/assets/art/character/character_hero_idle.png and /dev/null differ diff --git a/game/assets/art/character/character_hero_idle.png.import b/game/assets/art/character/character_hero_idle.png.import deleted file mode 100644 index cb027532..00000000 --- a/game/assets/art/character/character_hero_idle.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://blpk0rxpsdbbp" -path="res://.godot/imported/character_hero_idle.png-3fa7e01fe1358bc085b861a92c27385a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_hero_idle.png" -dest_files=["res://.godot/imported/character_hero_idle.png-3fa7e01fe1358bc085b861a92c27385a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_hero_portrait.png b/game/assets/art/character/character_hero_portrait.png deleted file mode 100644 index 2f0c44ba..00000000 Binary files a/game/assets/art/character/character_hero_portrait.png and /dev/null differ diff --git a/game/assets/art/character/character_hero_portrait.png.import b/game/assets/art/character/character_hero_portrait.png.import deleted file mode 100644 index 0cd3a046..00000000 --- a/game/assets/art/character/character_hero_portrait.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://2cqiu1gqhpdl" -path="res://.godot/imported/character_hero_portrait.png-c00d1ca3a380578f93578e5f57469a61.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_hero_portrait.png" -dest_files=["res://.godot/imported/character_hero_portrait.png-c00d1ca3a380578f93578e5f57469a61.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/character/character_hero_walk.png b/game/assets/art/character/character_hero_walk.png deleted file mode 100644 index 44be323c..00000000 Binary files a/game/assets/art/character/character_hero_walk.png and /dev/null differ diff --git a/game/assets/art/character/character_hero_walk.png.import b/game/assets/art/character/character_hero_walk.png.import deleted file mode 100644 index 404633a3..00000000 --- a/game/assets/art/character/character_hero_walk.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bkatg15m1umhu" -path="res://.godot/imported/character_hero_walk.png-4b44c893a70d6eb9fcf8e28d1af6b0b7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/character/character_hero_walk.png" -dest_files=["res://.godot/imported/character_hero_walk.png-4b44c893a70d6eb9fcf8e28d1af6b0b7.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/fx/shovel_swing_f0.png b/game/assets/art/fx/shovel_swing_f0.png deleted file mode 100644 index ab3b0b38..00000000 Binary files a/game/assets/art/fx/shovel_swing_f0.png and /dev/null differ diff --git a/game/assets/art/fx/shovel_swing_f0.png.import b/game/assets/art/fx/shovel_swing_f0.png.import deleted file mode 100644 index 35b86297..00000000 --- a/game/assets/art/fx/shovel_swing_f0.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bci06atuxoj2l" -path="res://.godot/imported/shovel_swing_f0.png-06ffc540d3ad1550957a48f3c889b190.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/fx/shovel_swing_f0.png" -dest_files=["res://.godot/imported/shovel_swing_f0.png-06ffc540d3ad1550957a48f3c889b190.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/fx/shovel_swing_f1.png b/game/assets/art/fx/shovel_swing_f1.png deleted file mode 100644 index 769e539d..00000000 Binary files a/game/assets/art/fx/shovel_swing_f1.png and /dev/null differ diff --git a/game/assets/art/fx/shovel_swing_f1.png.import b/game/assets/art/fx/shovel_swing_f1.png.import deleted file mode 100644 index c571bb92..00000000 --- a/game/assets/art/fx/shovel_swing_f1.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://e47aiashtdlk" -path="res://.godot/imported/shovel_swing_f1.png-84017c125b45d615a7dc6035e51c95ad.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/fx/shovel_swing_f1.png" -dest_files=["res://.godot/imported/shovel_swing_f1.png-84017c125b45d615a7dc6035e51c95ad.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/fx/shovel_swing_f2.png b/game/assets/art/fx/shovel_swing_f2.png deleted file mode 100644 index 278353ed..00000000 Binary files a/game/assets/art/fx/shovel_swing_f2.png and /dev/null differ diff --git a/game/assets/art/fx/shovel_swing_f2.png.import b/game/assets/art/fx/shovel_swing_f2.png.import deleted file mode 100644 index 801f740f..00000000 --- a/game/assets/art/fx/shovel_swing_f2.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cesyve5qba48u" -path="res://.godot/imported/shovel_swing_f2.png-90ae5cc0450c344e9a910083341d2225.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/fx/shovel_swing_f2.png" -dest_files=["res://.godot/imported/shovel_swing_f2.png-90ae5cc0450c344e9a910083341d2225.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_bg.png b/game/assets/art/scene/scene_camp_bg.png deleted file mode 100644 index 00d5b88c..00000000 Binary files a/game/assets/art/scene/scene_camp_bg.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_bg.png.import b/game/assets/art/scene/scene_camp_bg.png.import deleted file mode 100644 index 58570a8b..00000000 --- a/game/assets/art/scene/scene_camp_bg.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bwlimsh4e0u1r" -path="res://.godot/imported/scene_camp_bg.png-ad8da76e848772a9fd1f8364d5ec2282.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_bg.png" -dest_files=["res://.godot/imported/scene_camp_bg.png-ad8da76e848772a9fd1f8364d5ec2282.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_board.png b/game/assets/art/scene/scene_camp_board.png deleted file mode 100644 index ee9c77dc..00000000 Binary files a/game/assets/art/scene/scene_camp_board.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_board.png.import b/game/assets/art/scene/scene_camp_board.png.import deleted file mode 100644 index d902dcad..00000000 --- a/game/assets/art/scene/scene_camp_board.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://biak0b4j1om3a" -path="res://.godot/imported/scene_camp_board.png-2bb40fea7e76e8223a8ee46d42f0564d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_board.png" -dest_files=["res://.godot/imported/scene_camp_board.png-2bb40fea7e76e8223a8ee46d42f0564d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_campfire.png b/game/assets/art/scene/scene_camp_campfire.png deleted file mode 100644 index b7adeaf0..00000000 Binary files a/game/assets/art/scene/scene_camp_campfire.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_campfire.png.import b/game/assets/art/scene/scene_camp_campfire.png.import deleted file mode 100644 index 5767ac0d..00000000 --- a/game/assets/art/scene/scene_camp_campfire.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ndp0uhptgqky" -path="res://.godot/imported/scene_camp_campfire.png-de9b03b71e5cc4cdda7044a26e14a348.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_campfire.png" -dest_files=["res://.godot/imported/scene_camp_campfire.png-de9b03b71e5cc4cdda7044a26e14a348.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_chest.png b/game/assets/art/scene/scene_camp_chest.png deleted file mode 100644 index 84713a52..00000000 Binary files a/game/assets/art/scene/scene_camp_chest.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_chest.png.import b/game/assets/art/scene/scene_camp_chest.png.import deleted file mode 100644 index 764c758b..00000000 --- a/game/assets/art/scene/scene_camp_chest.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://k7p13sma4aov" -path="res://.godot/imported/scene_camp_chest.png-8a14e84aaa4c16615ee7c9caf7907074.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_chest.png" -dest_files=["res://.godot/imported/scene_camp_chest.png-8a14e84aaa4c16615ee7c9caf7907074.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_dummy.png b/game/assets/art/scene/scene_camp_dummy.png deleted file mode 100644 index 277a206e..00000000 Binary files a/game/assets/art/scene/scene_camp_dummy.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_dummy.png.import b/game/assets/art/scene/scene_camp_dummy.png.import deleted file mode 100644 index a2ead307..00000000 --- a/game/assets/art/scene/scene_camp_dummy.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bvx11fd8xi8v6" -path="res://.godot/imported/scene_camp_dummy.png-0e3dc9dfccca2e79204bfe1b987ba3ca.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_dummy.png" -dest_files=["res://.godot/imported/scene_camp_dummy.png-0e3dc9dfccca2e79204bfe1b987ba3ca.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_forge.png b/game/assets/art/scene/scene_camp_forge.png deleted file mode 100644 index 817fb421..00000000 Binary files a/game/assets/art/scene/scene_camp_forge.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_forge.png.import b/game/assets/art/scene/scene_camp_forge.png.import deleted file mode 100644 index f4f0661f..00000000 --- a/game/assets/art/scene/scene_camp_forge.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bho1gh7ryoeno" -path="res://.godot/imported/scene_camp_forge.png-bdd0ec03bb168d33247f81916c3e43c3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_forge.png" -dest_files=["res://.godot/imported/scene_camp_forge.png-bdd0ec03bb168d33247f81916c3e43c3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_gate.png b/game/assets/art/scene/scene_camp_gate.png deleted file mode 100644 index 7ea25a60..00000000 Binary files a/game/assets/art/scene/scene_camp_gate.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_gate.png.import b/game/assets/art/scene/scene_camp_gate.png.import deleted file mode 100644 index ec103ad2..00000000 --- a/game/assets/art/scene/scene_camp_gate.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cjpvw3h4jb5ot" -path="res://.godot/imported/scene_camp_gate.png-26be8f559f484cb9444347d25ce1dd04.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_gate.png" -dest_files=["res://.godot/imported/scene_camp_gate.png-26be8f559f484cb9444347d25ce1dd04.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_notebook.png b/game/assets/art/scene/scene_camp_notebook.png deleted file mode 100644 index 34ffacf2..00000000 Binary files a/game/assets/art/scene/scene_camp_notebook.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_notebook.png.import b/game/assets/art/scene/scene_camp_notebook.png.import deleted file mode 100644 index 7dfbb7ab..00000000 --- a/game/assets/art/scene/scene_camp_notebook.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b13td544tmy2k" -path="res://.godot/imported/scene_camp_notebook.png-ee3dec562e61ac5cee5ec0c7acb3a357.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_notebook.png" -dest_files=["res://.godot/imported/scene_camp_notebook.png-ee3dec562e61ac5cee5ec0c7acb3a357.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_tent.png b/game/assets/art/scene/scene_camp_tent.png deleted file mode 100644 index 006d1f3b..00000000 Binary files a/game/assets/art/scene/scene_camp_tent.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_tent.png.import b/game/assets/art/scene/scene_camp_tent.png.import deleted file mode 100644 index 73a19401..00000000 --- a/game/assets/art/scene/scene_camp_tent.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b8xj8p66yfvwv" -path="res://.godot/imported/scene_camp_tent.png-b89dbea860fc9c6d13bdb53af0533642.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_tent.png" -dest_files=["res://.godot/imported/scene_camp_tent.png-b89dbea860fc9c6d13bdb53af0533642.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_camp_wall.png b/game/assets/art/scene/scene_camp_wall.png deleted file mode 100644 index 0fff6eba..00000000 Binary files a/game/assets/art/scene/scene_camp_wall.png and /dev/null differ diff --git a/game/assets/art/scene/scene_camp_wall.png.import b/game/assets/art/scene/scene_camp_wall.png.import deleted file mode 100644 index 8a50f5f5..00000000 --- a/game/assets/art/scene/scene_camp_wall.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b4o3do4bo7sum" -path="res://.godot/imported/scene_camp_wall.png-e8871b9de80a29c065a661f23f1a8cd4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_camp_wall.png" -dest_files=["res://.godot/imported/scene_camp_wall.png-e8871b9de80a29c065a661f23f1a8cd4.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_stage_bg_deep_underdark.png b/game/assets/art/scene/scene_stage_bg_deep_underdark.png deleted file mode 100644 index 7ccae636..00000000 Binary files a/game/assets/art/scene/scene_stage_bg_deep_underdark.png and /dev/null differ diff --git a/game/assets/art/scene/scene_stage_bg_deep_underdark.png.import b/game/assets/art/scene/scene_stage_bg_deep_underdark.png.import deleted file mode 100644 index 3e238d75..00000000 --- a/game/assets/art/scene/scene_stage_bg_deep_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://80psivqtlgsp" -path="res://.godot/imported/scene_stage_bg_deep_underdark.png-40c9b4152fe37e62dc2d2b61533b0383.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_stage_bg_deep_underdark.png" -dest_files=["res://.godot/imported/scene_stage_bg_deep_underdark.png-40c9b4152fe37e62dc2d2b61533b0383.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_stage_bg_dungeon.png b/game/assets/art/scene/scene_stage_bg_dungeon.png deleted file mode 100644 index 44c42148..00000000 Binary files a/game/assets/art/scene/scene_stage_bg_dungeon.png and /dev/null differ diff --git a/game/assets/art/scene/scene_stage_bg_dungeon.png.import b/game/assets/art/scene/scene_stage_bg_dungeon.png.import deleted file mode 100644 index 9be40600..00000000 --- a/game/assets/art/scene/scene_stage_bg_dungeon.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://v6708buxtf2k" -path="res://.godot/imported/scene_stage_bg_dungeon.png-5db883a26511a741d808c2594192d27a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_stage_bg_dungeon.png" -dest_files=["res://.godot/imported/scene_stage_bg_dungeon.png-5db883a26511a741d808c2594192d27a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_stage_bg_underdark.png b/game/assets/art/scene/scene_stage_bg_underdark.png deleted file mode 100644 index 3cad45e7..00000000 Binary files a/game/assets/art/scene/scene_stage_bg_underdark.png and /dev/null differ diff --git a/game/assets/art/scene/scene_stage_bg_underdark.png.import b/game/assets/art/scene/scene_stage_bg_underdark.png.import deleted file mode 100644 index 2c30034f..00000000 --- a/game/assets/art/scene/scene_stage_bg_underdark.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bsjqmmc10n67o" -path="res://.godot/imported/scene_stage_bg_underdark.png-ac0b308b34e6bf255f0748a026ef267d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_stage_bg_underdark.png" -dest_files=["res://.godot/imported/scene_stage_bg_underdark.png-ac0b308b34e6bf255f0748a026ef267d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_stage_ground.png b/game/assets/art/scene/scene_stage_ground.png deleted file mode 100644 index 8f4803d3..00000000 Binary files a/game/assets/art/scene/scene_stage_ground.png and /dev/null differ diff --git a/game/assets/art/scene/scene_stage_ground.png.import b/game/assets/art/scene/scene_stage_ground.png.import deleted file mode 100644 index 2fca347b..00000000 --- a/game/assets/art/scene/scene_stage_ground.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b3aaglen1alw7" -path="res://.godot/imported/scene_stage_ground.png-a11b6a0430bcb2f048b2a1eb9cdf66ea.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_stage_ground.png" -dest_files=["res://.godot/imported/scene_stage_ground.png-a11b6a0430bcb2f048b2a1eb9cdf66ea.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/scene/scene_stage_plaza.png b/game/assets/art/scene/scene_stage_plaza.png deleted file mode 100644 index c2f89c2b..00000000 Binary files a/game/assets/art/scene/scene_stage_plaza.png and /dev/null differ diff --git a/game/assets/art/scene/scene_stage_plaza.png.import b/game/assets/art/scene/scene_stage_plaza.png.import deleted file mode 100644 index 105de203..00000000 --- a/game/assets/art/scene/scene_stage_plaza.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://oyw1sn4cupc0" -path="res://.godot/imported/scene_stage_plaza.png-a3a92d12d3b121d65eed1a1d2d147f31.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/scene/scene_stage_plaza.png" -dest_files=["res://.godot/imported/scene_stage_plaza.png-a3a92d12d3b121d65eed1a1d2d147f31.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/backdrop_stone.png b/game/assets/art/ui/backdrop_stone.png deleted file mode 100644 index e79fd30d..00000000 Binary files a/game/assets/art/ui/backdrop_stone.png and /dev/null differ diff --git a/game/assets/art/ui/backdrop_stone.png.import b/game/assets/art/ui/backdrop_stone.png.import deleted file mode 100644 index b4012907..00000000 --- a/game/assets/art/ui/backdrop_stone.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c2tfcanic03yg" -path="res://.godot/imported/backdrop_stone.png-799c672c1695c92b2aff3adcca263380.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/backdrop_stone.png" -dest_files=["res://.godot/imported/backdrop_stone.png-799c672c1695c92b2aff3adcca263380.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/border_stone.png b/game/assets/art/ui/border_stone.png deleted file mode 100644 index 26427291..00000000 Binary files a/game/assets/art/ui/border_stone.png and /dev/null differ diff --git a/game/assets/art/ui/border_stone.png.import b/game/assets/art/ui/border_stone.png.import deleted file mode 100644 index b5a66ea3..00000000 --- a/game/assets/art/ui/border_stone.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bfeovg2xhf4ox" -path="res://.godot/imported/border_stone.png-12d43548af52199d50f7855c5e304610.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/border_stone.png" -dest_files=["res://.godot/imported/border_stone.png-12d43548af52199d50f7855c5e304610.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/button_stone.png b/game/assets/art/ui/button_stone.png deleted file mode 100644 index 904f1497..00000000 Binary files a/game/assets/art/ui/button_stone.png and /dev/null differ diff --git a/game/assets/art/ui/button_stone.png.import b/game/assets/art/ui/button_stone.png.import deleted file mode 100644 index 54a4bc38..00000000 --- a/game/assets/art/ui/button_stone.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://70c70lsrbc8v" -path="res://.godot/imported/button_stone.png-5ab18541546b60db4ddb0a308313bba7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/button_stone.png" -dest_files=["res://.godot/imported/button_stone.png-5ab18541546b60db4ddb0a308313bba7.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/button_stone_pressed.png b/game/assets/art/ui/button_stone_pressed.png deleted file mode 100644 index 161091a4..00000000 Binary files a/game/assets/art/ui/button_stone_pressed.png and /dev/null differ diff --git a/game/assets/art/ui/button_stone_pressed.png.import b/game/assets/art/ui/button_stone_pressed.png.import deleted file mode 100644 index 855f5b1d..00000000 --- a/game/assets/art/ui/button_stone_pressed.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://tprx4ie1y2nv" -path="res://.godot/imported/button_stone_pressed.png-8dc823b8e3152939770cc37218c41a97.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/button_stone_pressed.png" -dest_files=["res://.godot/imported/button_stone_pressed.png-8dc823b8e3152939770cc37218c41a97.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/checkbox_checked.png b/game/assets/art/ui/gen/checkbox_checked.png deleted file mode 100644 index 8bf34558..00000000 Binary files a/game/assets/art/ui/gen/checkbox_checked.png and /dev/null differ diff --git a/game/assets/art/ui/gen/checkbox_checked.png.import b/game/assets/art/ui/gen/checkbox_checked.png.import deleted file mode 100644 index db693b2b..00000000 --- a/game/assets/art/ui/gen/checkbox_checked.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c37vc3lk8j46e" -path="res://.godot/imported/checkbox_checked.png-be331ca5bc2f4bbbb7d8d9f3f5aa38c7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/checkbox_checked.png" -dest_files=["res://.godot/imported/checkbox_checked.png-be331ca5bc2f4bbbb7d8d9f3f5aa38c7.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/checkbox_checked_disabled.png b/game/assets/art/ui/gen/checkbox_checked_disabled.png deleted file mode 100644 index 76862b12..00000000 Binary files a/game/assets/art/ui/gen/checkbox_checked_disabled.png and /dev/null differ diff --git a/game/assets/art/ui/gen/checkbox_checked_disabled.png.import b/game/assets/art/ui/gen/checkbox_checked_disabled.png.import deleted file mode 100644 index f75394a6..00000000 --- a/game/assets/art/ui/gen/checkbox_checked_disabled.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://csa8nxs5rd1ck" -path="res://.godot/imported/checkbox_checked_disabled.png-0b82c6a6e76a9ac90dc9e7aab1acb5d0.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/checkbox_checked_disabled.png" -dest_files=["res://.godot/imported/checkbox_checked_disabled.png-0b82c6a6e76a9ac90dc9e7aab1acb5d0.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/checkbox_unchecked.png b/game/assets/art/ui/gen/checkbox_unchecked.png deleted file mode 100644 index 080ab93c..00000000 Binary files a/game/assets/art/ui/gen/checkbox_unchecked.png and /dev/null differ diff --git a/game/assets/art/ui/gen/checkbox_unchecked.png.import b/game/assets/art/ui/gen/checkbox_unchecked.png.import deleted file mode 100644 index 474e5cfc..00000000 --- a/game/assets/art/ui/gen/checkbox_unchecked.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bcxl6v0tuddrx" -path="res://.godot/imported/checkbox_unchecked.png-2d74fc2e148b67340bc15301d7ab0b20.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/checkbox_unchecked.png" -dest_files=["res://.godot/imported/checkbox_unchecked.png-2d74fc2e148b67340bc15301d7ab0b20.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/checkbox_unchecked_disabled.png b/game/assets/art/ui/gen/checkbox_unchecked_disabled.png deleted file mode 100644 index 93d0bc6d..00000000 Binary files a/game/assets/art/ui/gen/checkbox_unchecked_disabled.png and /dev/null differ diff --git a/game/assets/art/ui/gen/checkbox_unchecked_disabled.png.import b/game/assets/art/ui/gen/checkbox_unchecked_disabled.png.import deleted file mode 100644 index d59d97d7..00000000 --- a/game/assets/art/ui/gen/checkbox_unchecked_disabled.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://s77irc8u3vb5" -path="res://.godot/imported/checkbox_unchecked_disabled.png-3a548f6b94bb18167d5607a58a16bf4a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/checkbox_unchecked_disabled.png" -dest_files=["res://.godot/imported/checkbox_unchecked_disabled.png-3a548f6b94bb18167d5607a58a16bf4a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/option_arrow.png b/game/assets/art/ui/gen/option_arrow.png deleted file mode 100644 index 25bae828..00000000 Binary files a/game/assets/art/ui/gen/option_arrow.png and /dev/null differ diff --git a/game/assets/art/ui/gen/option_arrow.png.import b/game/assets/art/ui/gen/option_arrow.png.import deleted file mode 100644 index 88c9efb6..00000000 --- a/game/assets/art/ui/gen/option_arrow.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bcxxt11qv3dbk" -path="res://.godot/imported/option_arrow.png-137be1c806e28e86518a9ef13f8aeee9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/option_arrow.png" -dest_files=["res://.godot/imported/option_arrow.png-137be1c806e28e86518a9ef13f8aeee9.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/slider_grabber.png b/game/assets/art/ui/gen/slider_grabber.png deleted file mode 100644 index f53cba64..00000000 Binary files a/game/assets/art/ui/gen/slider_grabber.png and /dev/null differ diff --git a/game/assets/art/ui/gen/slider_grabber.png.import b/game/assets/art/ui/gen/slider_grabber.png.import deleted file mode 100644 index 124fdd5d..00000000 --- a/game/assets/art/ui/gen/slider_grabber.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bntrcomrrsrwd" -path="res://.godot/imported/slider_grabber.png-ba18ff33ac0e2d8187625d5afd88333a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/slider_grabber.png" -dest_files=["res://.godot/imported/slider_grabber.png-ba18ff33ac0e2d8187625d5afd88333a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/slider_grabber_disabled.png b/game/assets/art/ui/gen/slider_grabber_disabled.png deleted file mode 100644 index 8e53ce84..00000000 Binary files a/game/assets/art/ui/gen/slider_grabber_disabled.png and /dev/null differ diff --git a/game/assets/art/ui/gen/slider_grabber_disabled.png.import b/game/assets/art/ui/gen/slider_grabber_disabled.png.import deleted file mode 100644 index 05ed4cc5..00000000 --- a/game/assets/art/ui/gen/slider_grabber_disabled.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bld83qtfy5cx6" -path="res://.godot/imported/slider_grabber_disabled.png-9f95594f132d7e05607289d40168c3b3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/slider_grabber_disabled.png" -dest_files=["res://.godot/imported/slider_grabber_disabled.png-9f95594f132d7e05607289d40168c3b3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/slider_grabber_highlight.png b/game/assets/art/ui/gen/slider_grabber_highlight.png deleted file mode 100644 index 2f485579..00000000 Binary files a/game/assets/art/ui/gen/slider_grabber_highlight.png and /dev/null differ diff --git a/game/assets/art/ui/gen/slider_grabber_highlight.png.import b/game/assets/art/ui/gen/slider_grabber_highlight.png.import deleted file mode 100644 index 251c2072..00000000 --- a/game/assets/art/ui/gen/slider_grabber_highlight.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dvwgrhmraj2pi" -path="res://.godot/imported/slider_grabber_highlight.png-3fac15354c02e1eabb51c47480b8ba38.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/slider_grabber_highlight.png" -dest_files=["res://.godot/imported/slider_grabber_highlight.png-3fac15354c02e1eabb51c47480b8ba38.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/gen/spinbox_updown.png b/game/assets/art/ui/gen/spinbox_updown.png deleted file mode 100644 index 0c8080ce..00000000 Binary files a/game/assets/art/ui/gen/spinbox_updown.png and /dev/null differ diff --git a/game/assets/art/ui/gen/spinbox_updown.png.import b/game/assets/art/ui/gen/spinbox_updown.png.import deleted file mode 100644 index 42944b62..00000000 --- a/game/assets/art/ui/gen/spinbox_updown.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://brppa0ay8e8nr" -path="res://.godot/imported/spinbox_updown.png-79ed9fabd79d665c14c0e5d154733884.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/gen/spinbox_updown.png" -dest_files=["res://.godot/imported/spinbox_updown.png-79ed9fabd79d665c14c0e5d154733884.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_atlas.png b/game/assets/art/ui/icon_atlas.png deleted file mode 100644 index eafff2c6..00000000 Binary files a/game/assets/art/ui/icon_atlas.png and /dev/null differ diff --git a/game/assets/art/ui/icon_atlas.png.import b/game/assets/art/ui/icon_atlas.png.import deleted file mode 100644 index 21f89db1..00000000 --- a/game/assets/art/ui/icon_atlas.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://doev3s0bcuq5j" -path="res://.godot/imported/icon_atlas.png-e89438fa2c7f3a01bc829f65a369f953.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_atlas.png" -dest_files=["res://.godot/imported/icon_atlas.png-e89438fa2c7f3a01bc829f65a369f953.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_blast.png b/game/assets/art/ui/icon_blast.png deleted file mode 100644 index 712cdd9d..00000000 Binary files a/game/assets/art/ui/icon_blast.png and /dev/null differ diff --git a/game/assets/art/ui/icon_blast.png.import b/game/assets/art/ui/icon_blast.png.import deleted file mode 100644 index 48e5f76a..00000000 --- a/game/assets/art/ui/icon_blast.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://o58nlv6hk2ys" -path="res://.godot/imported/icon_blast.png-04064899f4aae105e5ecc26444884109.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_blast.png" -dest_files=["res://.godot/imported/icon_blast.png-04064899f4aae105e5ecc26444884109.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_coinbag.png b/game/assets/art/ui/icon_coinbag.png deleted file mode 100644 index 336fe7d0..00000000 Binary files a/game/assets/art/ui/icon_coinbag.png and /dev/null differ diff --git a/game/assets/art/ui/icon_coinbag.png.import b/game/assets/art/ui/icon_coinbag.png.import deleted file mode 100644 index a239604c..00000000 --- a/game/assets/art/ui/icon_coinbag.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dullklfv7xlte" -path="res://.godot/imported/icon_coinbag.png-7ad26f492e92674b894095789857da38.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_coinbag.png" -dest_files=["res://.godot/imported/icon_coinbag.png-7ad26f492e92674b894095789857da38.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_forge.png b/game/assets/art/ui/icon_forge.png deleted file mode 100644 index a3877919..00000000 Binary files a/game/assets/art/ui/icon_forge.png and /dev/null differ diff --git a/game/assets/art/ui/icon_forge.png.import b/game/assets/art/ui/icon_forge.png.import deleted file mode 100644 index af40eaf3..00000000 --- a/game/assets/art/ui/icon_forge.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cq67vqun43yjs" -path="res://.godot/imported/icon_forge.png-9a2687f121c998d16d7dec611e0254a9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_forge.png" -dest_files=["res://.godot/imported/icon_forge.png-9a2687f121c998d16d7dec611e0254a9.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_heart.png b/game/assets/art/ui/icon_heart.png deleted file mode 100644 index e1316523..00000000 Binary files a/game/assets/art/ui/icon_heart.png and /dev/null differ diff --git a/game/assets/art/ui/icon_heart.png.import b/game/assets/art/ui/icon_heart.png.import deleted file mode 100644 index 50c6a7a5..00000000 --- a/game/assets/art/ui/icon_heart.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://tnxge3jvk55l" -path="res://.godot/imported/icon_heart.png-3e14321ca98d58e5ee89247177dc2a6c.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_heart.png" -dest_files=["res://.godot/imported/icon_heart.png-3e14321ca98d58e5ee89247177dc2a6c.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_keyshard.png b/game/assets/art/ui/icon_keyshard.png deleted file mode 100644 index 7654bd4d..00000000 Binary files a/game/assets/art/ui/icon_keyshard.png and /dev/null differ diff --git a/game/assets/art/ui/icon_keyshard.png.import b/game/assets/art/ui/icon_keyshard.png.import deleted file mode 100644 index 778da476..00000000 --- a/game/assets/art/ui/icon_keyshard.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b5e36vq0sakx3" -path="res://.godot/imported/icon_keyshard.png-cff99cec261e28b5051430eb78979325.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_keyshard.png" -dest_files=["res://.godot/imported/icon_keyshard.png-cff99cec261e28b5051430eb78979325.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_keystone.png b/game/assets/art/ui/icon_keystone.png deleted file mode 100644 index 97b85243..00000000 Binary files a/game/assets/art/ui/icon_keystone.png and /dev/null differ diff --git a/game/assets/art/ui/icon_keystone.png.import b/game/assets/art/ui/icon_keystone.png.import deleted file mode 100644 index 51cca41c..00000000 --- a/game/assets/art/ui/icon_keystone.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bnd8yq1gwlsn" -path="res://.godot/imported/icon_keystone.png-3763a32207cfae2f45fe72d471b0bb5f.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_keystone.png" -dest_files=["res://.godot/imported/icon_keystone.png-3763a32207cfae2f45fe72d471b0bb5f.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_medkit.png b/game/assets/art/ui/icon_medkit.png deleted file mode 100644 index 424985e0..00000000 Binary files a/game/assets/art/ui/icon_medkit.png and /dev/null differ diff --git a/game/assets/art/ui/icon_medkit.png.import b/game/assets/art/ui/icon_medkit.png.import deleted file mode 100644 index c43fe502..00000000 --- a/game/assets/art/ui/icon_medkit.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://jefpnnfyt2f" -path="res://.godot/imported/icon_medkit.png-08fc2ed48cfc456328d0642154fa4558.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_medkit.png" -dest_files=["res://.godot/imported/icon_medkit.png-08fc2ed48cfc456328d0642154fa4558.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_pouch.png b/game/assets/art/ui/icon_pouch.png deleted file mode 100644 index 38d8a71a..00000000 Binary files a/game/assets/art/ui/icon_pouch.png and /dev/null differ diff --git a/game/assets/art/ui/icon_pouch.png.import b/game/assets/art/ui/icon_pouch.png.import deleted file mode 100644 index 1f0bb711..00000000 --- a/game/assets/art/ui/icon_pouch.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dvrxoke5t81od" -path="res://.godot/imported/icon_pouch.png-7af57e57864a8872b241790365ccc158.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_pouch.png" -dest_files=["res://.godot/imported/icon_pouch.png-7af57e57864a8872b241790365ccc158.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_refresh.png b/game/assets/art/ui/icon_refresh.png deleted file mode 100644 index bc4ffc0f..00000000 Binary files a/game/assets/art/ui/icon_refresh.png and /dev/null differ diff --git a/game/assets/art/ui/icon_refresh.png.import b/game/assets/art/ui/icon_refresh.png.import deleted file mode 100644 index 2beda547..00000000 --- a/game/assets/art/ui/icon_refresh.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c5fpw50gjad0u" -path="res://.godot/imported/icon_refresh.png-84a3ff5804304796b72f7b94b917da31.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_refresh.png" -dest_files=["res://.godot/imported/icon_refresh.png-84a3ff5804304796b72f7b94b917da31.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_shield.png b/game/assets/art/ui/icon_shield.png deleted file mode 100644 index c016682f..00000000 Binary files a/game/assets/art/ui/icon_shield.png and /dev/null differ diff --git a/game/assets/art/ui/icon_shield.png.import b/game/assets/art/ui/icon_shield.png.import deleted file mode 100644 index 8d3a42f8..00000000 --- a/game/assets/art/ui/icon_shield.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cqjotgk88l820" -path="res://.godot/imported/icon_shield.png-5447c9828a7dde676476f6e9d9c0b8af.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_shield.png" -dest_files=["res://.godot/imported/icon_shield.png-5447c9828a7dde676476f6e9d9c0b8af.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_shovel.png b/game/assets/art/ui/icon_shovel.png deleted file mode 100644 index e40b213e..00000000 Binary files a/game/assets/art/ui/icon_shovel.png and /dev/null differ diff --git a/game/assets/art/ui/icon_shovel.png.import b/game/assets/art/ui/icon_shovel.png.import deleted file mode 100644 index 340e40d2..00000000 --- a/game/assets/art/ui/icon_shovel.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://clajmy4i3l0pf" -path="res://.godot/imported/icon_shovel.png-64bba6b461a2f5988db8da6e65838ed7.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_shovel.png" -dest_files=["res://.godot/imported/icon_shovel.png-64bba6b461a2f5988db8da6e65838ed7.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_sword.png b/game/assets/art/ui/icon_sword.png deleted file mode 100644 index 35143e66..00000000 Binary files a/game/assets/art/ui/icon_sword.png and /dev/null differ diff --git a/game/assets/art/ui/icon_sword.png.import b/game/assets/art/ui/icon_sword.png.import deleted file mode 100644 index 3d9d12ad..00000000 --- a/game/assets/art/ui/icon_sword.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dd8y2oo0wv0j6" -path="res://.godot/imported/icon_sword.png-9cb55873ed9a5812cea24af598654bae.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_sword.png" -dest_files=["res://.godot/imported/icon_sword.png-9cb55873ed9a5812cea24af598654bae.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/icon_workshop.png b/game/assets/art/ui/icon_workshop.png deleted file mode 100644 index c5ba3fd2..00000000 Binary files a/game/assets/art/ui/icon_workshop.png and /dev/null differ diff --git a/game/assets/art/ui/icon_workshop.png.import b/game/assets/art/ui/icon_workshop.png.import deleted file mode 100644 index 64406186..00000000 --- a/game/assets/art/ui/icon_workshop.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bfpqjx3j80p52" -path="res://.godot/imported/icon_workshop.png-c0b603c8dccfe9069e64d051eabd765e.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/icon_workshop.png" -dest_files=["res://.godot/imported/icon_workshop.png-c0b603c8dccfe9069e64d051eabd765e.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/node_battle.png b/game/assets/art/ui/node_battle.png deleted file mode 100644 index 18884e94..00000000 Binary files a/game/assets/art/ui/node_battle.png and /dev/null differ diff --git a/game/assets/art/ui/node_battle.png.import b/game/assets/art/ui/node_battle.png.import deleted file mode 100644 index 11dea5c4..00000000 --- a/game/assets/art/ui/node_battle.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c4tyr775ctd3r" -path="res://.godot/imported/node_battle.png-d897da35cd6e09c738bf96a9e2ebf5c8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/node_battle.png" -dest_files=["res://.godot/imported/node_battle.png-d897da35cd6e09c738bf96a9e2ebf5c8.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/node_boss.png b/game/assets/art/ui/node_boss.png deleted file mode 100644 index 170482cd..00000000 Binary files a/game/assets/art/ui/node_boss.png and /dev/null differ diff --git a/game/assets/art/ui/node_boss.png.import b/game/assets/art/ui/node_boss.png.import deleted file mode 100644 index 8e9e3246..00000000 --- a/game/assets/art/ui/node_boss.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ckhdl5ow2ilwy" -path="res://.godot/imported/node_boss.png-880d6b2c5f9777b66597a0689ca9db6a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/node_boss.png" -dest_files=["res://.godot/imported/node_boss.png-880d6b2c5f9777b66597a0689ca9db6a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/node_rest.png b/game/assets/art/ui/node_rest.png deleted file mode 100644 index 972d5c89..00000000 Binary files a/game/assets/art/ui/node_rest.png and /dev/null differ diff --git a/game/assets/art/ui/node_rest.png.import b/game/assets/art/ui/node_rest.png.import deleted file mode 100644 index 6159e0b7..00000000 --- a/game/assets/art/ui/node_rest.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://8mab8uhryjga" -path="res://.godot/imported/node_rest.png-87d435876759d192ffecf3a9464f3fba.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/node_rest.png" -dest_files=["res://.godot/imported/node_rest.png-87d435876759d192ffecf3a9464f3fba.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/node_reward.png b/game/assets/art/ui/node_reward.png deleted file mode 100644 index 4a26c963..00000000 Binary files a/game/assets/art/ui/node_reward.png and /dev/null differ diff --git a/game/assets/art/ui/node_reward.png.import b/game/assets/art/ui/node_reward.png.import deleted file mode 100644 index 2418b791..00000000 --- a/game/assets/art/ui/node_reward.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://0nr8gywio7vn" -path="res://.godot/imported/node_reward.png-5668979de50aef5ad53942d485aafdff.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/node_reward.png" -dest_files=["res://.godot/imported/node_reward.png-5668979de50aef5ad53942d485aafdff.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/node_shop.png b/game/assets/art/ui/node_shop.png deleted file mode 100644 index c6bbe080..00000000 Binary files a/game/assets/art/ui/node_shop.png and /dev/null differ diff --git a/game/assets/art/ui/node_shop.png.import b/game/assets/art/ui/node_shop.png.import deleted file mode 100644 index a1756609..00000000 --- a/game/assets/art/ui/node_shop.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dakv3mhvwv1h2" -path="res://.godot/imported/node_shop.png-5ab84123a44a3396f6201cd801023df4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/node_shop.png" -dest_files=["res://.godot/imported/node_shop.png-5ab84123a44a3396f6201cd801023df4.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/assets/art/ui/panel_stone.png b/game/assets/art/ui/panel_stone.png deleted file mode 100644 index 14417b61..00000000 Binary files a/game/assets/art/ui/panel_stone.png and /dev/null differ diff --git a/game/assets/art/ui/panel_stone.png.import b/game/assets/art/ui/panel_stone.png.import deleted file mode 100644 index 5adbff2d..00000000 --- a/game/assets/art/ui/panel_stone.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://ffg6ebgqxxdy" -path="res://.godot/imported/panel_stone.png-c2b330d1b6552bd7ff83ec9fcce267d9.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/art/ui/panel_stone.png" -dest_files=["res://.godot/imported/panel_stone.png-c2b330d1b6552bd7ff83ec9fcce267d9.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/game/core/battle_orchestrator.gd b/game/core/battle_orchestrator.gd index 9b75544f..19b2ed3f 100644 --- a/game/core/battle_orchestrator.gd +++ b/game/core/battle_orchestrator.gd @@ -115,7 +115,7 @@ func _fx_host_fact(fact: String) -> Variant: match fact: "nest_count": var n := 0 - for eff in _status_effects.query_active("enemy"): + for eff in _status_effects.query_active_side("enemy"): if String(eff.effect_id) == "weaken": n += 1 return n @@ -510,19 +510,15 @@ func _defender_ac(unit: Dictionary) -> int: return _damage.defender_ac(unit) -func _pool_effective(effect_id: String) -> int: - var side := "hero" - var row: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(effect_id) - if not row.is_empty(): - side = String(row.target_side) - for eff in _status_effects.query_active(side): +func _pool_effective(effect_id: String, owner_key: String) -> int: + for eff in _status_effects.query_active(owner_key): if eff.effect_id == effect_id: return eff.effective_value return 0 func _emit_composition_effects(side: String, ri: int) -> void: - for eff in _status_effects.query_active(side): + for eff in _status_effects.query_active_side(side): if eff.round_index < ri: # 续存实例(前轮授予)——每结算兑付一次的可见面(合并实例只持首授归因——增益状态 义务⑦) _emit_row({"type": "effect", "source_class": eff.source_class, "origin_cell": eff.origin_cell}, ri, @@ -536,10 +532,10 @@ func _emit_settlement_snapshot(verdict: String) -> void: for u in _enemy_system.query_alive("enemy"): enemies.append({"id": String(u.enemy_id), "hp": int(u.hp), "max_hp": int(u.max_hp), "atk": int(u.atk), "pending_skill": _enemy_system.pending_action(u), "armor": String(u.get("armor_type", "light")), "armor_class": int(u.get("armor_class", 0))}) var buffs: Array[Dictionary] = [] - for eff in _status_effects.query_active("hero"): - buffs.append({"id": eff.effect_id, "side": "hero", "layers": eff.layers, "left": eff.remaining_settlements}) - for eff in _status_effects.query_active("enemy"): - buffs.append({"id": eff.effect_id, "side": "enemy", "layers": eff.layers, "left": eff.remaining_settlements}) + for eff in _status_effects.query_active_side("hero"): + buffs.append({"id": eff.effect_id, "side": "hero", "owner": String(eff.owner_key), "layers": eff.layers, "left": eff.remaining_settlements}) + for eff in _status_effects.query_active_side("enemy"): + buffs.append({"id": eff.effect_id, "side": "enemy", "owner": String(eff.owner_key), "layers": eff.layers, "left": eff.remaining_settlements}) var mines_hit := 0 var safe_n := 0 for evt in _facts.reveals: @@ -666,17 +662,19 @@ func _roll_gp_drop() -> int: func presentation_snapshot() -> Dictionary: var enemies: Array[Dictionary] = [] var all: Array[Variant] = _enemy_system.all_enemies() - # 敌方增益投影(side-wide 状态——蓄力/硬化/削弱/暴走 percent 行 + 警觉 ac 行) - var enemy_effects: Array[Dictionary] = [] - for eff in _status_effects.query_active("enemy"): - var erow: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(eff.effect_id) - if not erow.is_empty() and String(erow.unit) in ["percent", "ac"]: - enemy_effects.append({"effect_id": eff.effect_id, "display_name": String(eff.display_name), "layers": int(eff.layers)}) for i in all.size(): var u: Dictionary[Variant, Variant] = all[i] var alive: bool = bool(u.get("alive", false)) var pending: String = String(u.get("pending_skill", "")) if alive else "" var pending_row: Dictionary[Variant, Variant] = db.combat.skill.row_by_id(pending) + # 敌方增益逐卡投影(呈现各读各的——增益状态 v1.5):每卡只读它自己名下实例 + # (蓄力/硬化/削弱/暴走 percent 行 + 警觉 ac 行;死亡个体桶已清,投影恒空) + var own_effects: Array[Dictionary] = [] + if alive: + for eff in _status_effects.query_active(StatusContainer.owner_key_for(u)): + var erow: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(eff.effect_id) + if not erow.is_empty() and String(erow.unit) in ["percent", "ac"]: + own_effects.append({"effect_id": eff.effect_id, "display_name": String(eff.display_name), "layers": int(eff.layers)}) enemies.append({ "order": i + 1, "display_name": String(u.display_name), @@ -689,7 +687,7 @@ func presentation_snapshot() -> Dictionary: "pending_skill": pending, "pending_type": String(pending_row.get("type", "")) if not pending_row.is_empty() else "", "pending_name": String(pending_row.get("display_name", "")) if not pending_row.is_empty() else "", - "effects": enemy_effects, + "effects": own_effects, "alive": alive, }) var hero := {} @@ -705,7 +703,7 @@ func presentation_snapshot() -> Dictionary: "refresh_used": _facts.refresh_used, # 受理计数入呈现成文面(HUD 余量单源读此处) "hero": hero, "enemies": enemies, - "hero_effects": _status_effects.query_active("hero").duplicate(true), # 值拷贝出户(快照消费方直改不渗入状态容器) + "hero_effects": _status_effects.query_active(StatusContainer.OWNER_HERO).duplicate(true), # 值拷贝出户(快照消费方直改不渗入状态容器) # 整图变异投影(呈现横幅/常驻角标唯一读取面; # 空数组 = 无全局型合法态:普通图与全局池空回落图恒空) "board_variants": (minesweeper.current_board().board_variant_ids().duplicate() diff --git a/game/core/damage_controller.gd b/game/core/damage_controller.gd index 3ebf3137..2f8ab4eb 100644 --- a/game/core/damage_controller.gd +++ b/game/core/damage_controller.gd @@ -89,10 +89,11 @@ func _per_value(name: String, payload: Dictionary) -> int: return 0 -# 巢穴控制数(fact nest_count 取数面——敌方 weaken 实例数,猎巢人订阅面) +# 巢穴控制数(fact nest_count 取数面——敌方名下 weaken 实例总数,猎巢人订阅面; +# 个体化后削弱为累加行、每体各持一条——总数 = 被削弱个体数) func _nest_count() -> int: var n := 0 - for eff in effects.query_active("enemy"): + for eff in effects.query_active_side("enemy"): if String(eff.effect_id) == "weaken": n += 1 return n @@ -196,6 +197,7 @@ func _on_unit_died(u: Dictionary) -> void: for t in _queue: if is_same(t.source_unit, u): t["cancelled"] = true # 死亡即不动手——该敌未结单据作废(静默零行零 commit) + effects.purge_owner(StatusContainer.owner_key_for(u)) # 个体死亡即清名下实例(增益状态 v1.5——不转移不并回) # ---- 兑付管线(单点——所有伤害经过同一道门)---- @@ -370,7 +372,7 @@ func _hero_attack_redeem(t: Dictionary, ctx: Dictionary, base_value: float) -> D payload["tier"] = int(ctx["discount"]) if bool(ctx["crit"]): payload["crit"] = true - var pooled: int = DamageMath.pool_damage(rolled, clamped_pool("hero_offense"), clamped_pool("enemy_defense")) + var pooled: int = DamageMath.pool_damage(rolled, clamped_pool("hero_offense", StatusContainer.OWNER_HERO), clamped_pool("enemy_defense", StatusContainer.owner_key_for(target))) var landed: int = maxi(int(db.combat.settlement.damage_roll.damage_floor), pooled) # 加法族:英雄侧 rider(enemy_skill rider 对称位补齐口径)——后置必中附加,独立于掷点与乘区 # (奥术余烬「普攻命中后恒定结算」语义);猎巢人巢控光环(per nest_count)/矿工的执拗开格加成 @@ -424,8 +426,8 @@ func _hero_attack_deliver(t: Dictionary, ctx: Dictionary, redemption: Dictionary var payload: Dictionary[Variant, Variant] = redemption["payload"] for h in (ctx["ac_hits"] as Array): if String(h.get("kind", "")) == "apply_status": - # source_class 用中性名(fx_apply_status 泛用通道,不挂件名) - effects.apply_effect(String(h.get("status_id", "")), {"source_class": "fx_apply_status"}, -1) + # source_class 用中性名(fx_apply_status 泛用通道,不挂件名);落点 = 被命中者个体(增益状态 v1.5) + effects.apply_effect(String(h.get("status_id", "")), StatusContainer.owner_key_for(ctx["target"]), {"source_class": "fx_apply_status"}, -1) payload["cracked"] = true var label := _attack_label(String(t.display), bool(ctx["crit"]), int(ctx["discount"])) if int(redemption["hero_rider"]) > 0: @@ -473,7 +475,7 @@ func _enemy_roll(t: Dictionary) -> Dictionary: var discount: int = _roll_discount(int(roll_read.roll), threshold) var cdelta: int = _counter_delta(String(t.attack_type), String(hero.get("armor_type", "light"))) var rolled: int = DamageMath.rolled_component(float(t.base_value), discount, crit, int(db.combat.settlement.damage_roll.crit_multiplier), cdelta) - var pooled: int = DamageMath.pool_damage(rolled, clamped_pool("hero_defense"), clamped_pool("enemy_output")) + var pooled: int = DamageMath.pool_damage(rolled, clamped_pool("hero_defense", StatusContainer.OWNER_HERO), clamped_pool("enemy_output", StatusContainer.owner_key_for(t.source_unit))) var total: int = maxi(int(db.combat.settlement.damage_roll.damage_floor), pooled) + int(t.rider) # rider 后置于伤害下限——独立必中加项,不进乘区 return {"roll": int(roll_read.roll), "threshold": threshold, "crit": crit, "discount": discount, "total": total} @@ -593,13 +595,13 @@ func defender_ac(unit: Dictionary) -> int: var total: int = _hero_ac_override if total < 0: total = int(db.combat.hero.armor_class) - for eff in effects.query_active("hero"): + for eff in effects.query_active(StatusContainer.OWNER_HERO): var row: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(eff.effect_id) if not row.is_empty() and String(row.unit) == "ac": total += int(eff.effective_value) return total var total_e: int = int(unit.get("armor_class", 0)) - for eff_e in effects.query_active("enemy"): + for eff_e in effects.query_active(StatusContainer.owner_key_for(unit)): var erow_ac: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(eff_e.effect_id) if not erow_ac.is_empty() and String(erow_ac.unit) == "ac": total_e += int(eff_e.effective_value) @@ -625,10 +627,12 @@ func _discount_shift_up(discount: int, shift: int) -> int: return int(tbl[mini(tbl.size() - 1, idx + shift)]) -# 池内加算 → clamp [-100,+100](池间乘算归 DamageMath.pool_damage 调用侧) -func clamped_pool(pool: String) -> int: +# 池内加算 → clamp [-100,+100](池间乘算归 DamageMath.pool_damage 调用侧); +# 池按个体读(增益状态 v1.5):主角侧池传 OWNER_HERO,敌方侧池传被打者/施放者个体键—— +# 乘区只合计该个体名下实例(B 敌的削弱不进 A 敌的账) +func clamped_pool(pool: String, owner_key: String) -> int: var total := 0 - for eff in effects.query_active("hero") + effects.query_active("enemy"): + for eff in effects.query_active(owner_key): var row: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(eff.effect_id) if row.is_empty(): continue diff --git a/game/core/reward_grant.gd b/game/core/reward_grant.gd index ae265754..0e468f10 100644 --- a/game/core/reward_grant.gd +++ b/game/core/reward_grant.gd @@ -223,8 +223,9 @@ func _dispatch_row(row: Dictionary, att: Dictionary) -> bool: return false -# percent 行兑付:GP 型行走战斗内缓冲记账;其余 apply_effect 入容器; -# 满层拒收 = "奖励未生效"行(零静默) +# percent 行兑付:GP 型行走战斗内缓冲记账;其余 apply_effect 入容器(逐个体——enemy 侧行 = +# 全体存活敌逐只各发一条实例,hero 侧行 = 主角单桶,增益状态 v1.5 目标规则「全体存活敌」); +# 满层拒收 = "奖励未生效"行(零静默——全体皆拒才记一行;部分个体满层拒由该个体容器内原子拒绝) func _apply_percent_row(row: Dictionary, att: Dictionary) -> bool: var eff := String(row.effect_id) if eff == "gp_gain" or eff == "gp_loss": @@ -236,11 +237,20 @@ func _apply_percent_row(row: Dictionary, att: Dictionary) -> bool: var eff_mag: int = int(srow.magnitude) if prem_pct != 100: eff_mag = int(round(eff_mag * prem_pct / 100.0)) - var ok: bool = status_effects.apply_effect(eff, _grant_src(att, prem_pct, eff_mag)) - if ok: + var owner_keys: Array[Variant] = [] + if String(srow.target_side) == "enemy": + for u in units.query_alive("enemy"): + owner_keys.append(StatusContainer.owner_key_for(u)) + else: + owner_keys.append(StatusContainer.OWNER_HERO) + var granted := 0 + for okey in owner_keys: + if status_effects.apply_effect(eff, String(okey), _grant_src(att, prem_pct, eff_mag)): + granted += 1 + if granted > 0: emit_cb.call({"type": "effect", "source_class": String(att.get("source_class", "")), "origin_cell": att.get("cell", Vector2i(-1, -1))}, int(att.get("ri", 0)), String(srow.display_name) + String(att.get("label_suffix", "")), eff_mag, - {"effect_id": eff, "pool_value": int(pool_effective_cb.call(eff))}) + {"effect_id": eff, "pool_value": int(pool_effective_cb.call(eff, String(owner_keys[0])))}) return true emit_cb.call({"type": "reward_ineffective", "source_class": String(att.get("source_class", "")), "origin_cell": att.get("cell", Vector2i(-1, -1)), "highlight": String(att.get("highlight", ""))}, int(att.get("ri", 0)), "奖励未生效(满层)%s" % String(att.get("label_suffix", "")), 0, diff --git a/game/core/settlement/combat_segment.gd b/game/core/settlement/combat_segment.gd index cf1c7b29..1dd34c59 100644 --- a/game/core/settlement/combat_segment.gd +++ b/game/core/settlement/combat_segment.gd @@ -83,9 +83,11 @@ func _enemy_actions(ri: int) -> void: continue if String(srow.type) == "buff" or String(srow.type) == "debuff": # 增益/妨害技 = 0 伤害施放行:不掷不折;状态授予即数值兑现,技能冷却与增益持续两计时器分账。 - # 落点由状态行 target_side 路由(buff → 敌方侧 / debuff → 主角侧——容器零改动,proposal-status-vocabulary §1)。 + # 落点按目标规则(增益状态 v1.5〈目标规则与个体归属〉):buff → 施放者个体(「自己」—— + # 敌方增益技只强化施放者自己,不再全体受益);debuff → 主角(off_guard/sapped 同义主角侧)。 var dur: int = int(srow.get("buff_duration", 1)) - oc._status_effects.apply_effect(String(srow.buff_ref), {"source_class": "enemy_action", "origin_cell": Vector2i(-1, -1), "round_index": ri}, dur) + var owner_key: String = StatusContainer.owner_key_for(u) if String(srow.type) == "buff" else StatusContainer.OWNER_HERO + oc._status_effects.apply_effect(String(srow.buff_ref), owner_key, {"source_class": "enemy_action", "origin_cell": Vector2i(-1, -1), "round_index": ri}, dur) oc._emit_row({"type": "cast", "source_class": "enemy_action", "origin_cell": Vector2i(-1, -1)}, ri, "%s 施放 %s" % [u.display_name, String(srow.display_name)], 0, {"skill_id": skill_id, "effect_id": String(srow.buff_ref), "duration": dur}) oc._enemy_system.commit_action(u) continue diff --git a/game/core/status_container.gd b/game/core/status_container.gd index 391f2bd0..462ef7f9 100644 --- a/game/core/status_container.gd +++ b/game/core/status_container.gd @@ -1,12 +1,25 @@ ## VERTICAL SLICE - NOT FOR PRODUCTION -## 增益状态统一容器:三方效果同构实例、单一时限量纲(先兑付后衰减)、按行叠层与授予时快照抗热重载(垂直切片验证:增益减益逐行归因)。 +## 增益状态统一容器:三方效果同构实例、单一时限量纲(先兑付后衰减)、按行叠层与授予时快照抗热重载。 +## 实例按个体归属(增益状态 v1.5):主角一桶+每只敌各一桶——全体授予=授予路径逐只各发一条实例, +## 合并只在同体内(同名状态不同个体互不相干),个体死亡即清名下实例(purge_owner 单点)。 ## 零随机零信号——纯被动服务;授予唯一入口 apply_effect,满层拒绝零写入(拒收记未生效行归调用方)。 class_name StatusContainer extends RefCounted +const OWNER_HERO := "hero" # 主角个体键(单桶——主角全体状态唯一的归属键) + var db: ConfigDb var _open := false -var _instances: Array[Dictionary] = [] # 插入序;元素 = {effect_id, layers, remaining, source_class, origin_cell, round_index, snap_m, snap_unit, snap_display} +var _buckets: Dictionary[Variant, Variant] = {} # owner_key -> Array[Dictionary](桶内插入序);元素 = {effect_id, layers, remaining, source_class, origin_cell, round_index, snap_m, snap_unit, snap_display} + + +# 个体键约定单点(拼写禁散落第二处——授予/死亡清/消费面一律经此导出): +# 主角 = OWNER_HERO;敌人 = "e<生成序>"(生成序 = 开战逐只编号 handle_id 的 1 基序,沿顺位轴)。 +static func owner_key_for(u: Dictionary) -> String: + if bool(u.get("is_hero", false)): + return OWNER_HERO + assert(u.has("handle_id"), "[增益状态] 敌单位缺 handle_id(个体键导出沿生成序轴——单位违约)") + return "e%d" % (int(u.get("handle_id", -1)) + 1) func _init(db_ref: ConfigDb) -> void: @@ -18,17 +31,21 @@ func notify_battle_start() -> bool: push_warning("[增益状态] Active 下重复 notify_battle_start(EC11)") return false _open = true - _instances.clear() + _buckets.clear() return true # 唯一授予入口(挖掘期零直写——战斗结算 结算编排期统一调用)。 +# owner_key(个体归属——增益状态 v1.5):实例挂到该个体桶,合并/衰减/查询全在桶内; # duration_override(敌人技能池批——增益技施放):技能行 buff_duration 覆盖状态行时长(-1 = 状态表值)。 # 施放是持续量的 owner(proposal §2.2 字段词汇表"buff_duration 增益持续回合数");其他授予路径传缺省。 -func apply_effect(effect_id: String, source: Dictionary, duration_override: int = -1) -> bool: +func apply_effect(effect_id: String, owner_key: String, source: Dictionary = {}, duration_override: int = -1) -> bool: if not _open: push_warning("[增益状态] 域闭授予(EC1)") return false + if owner_key == "": + push_warning("[增益状态] 空 owner_key 授予(个体归属违约)") + return false var row: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(effect_id) if row.is_empty(): push_warning("[增益状态] 未知 effect_id(EC2): %s" % effect_id) @@ -37,14 +54,15 @@ func apply_effect(effect_id: String, source: Dictionary, duration_override: int var dur: int = int(row.duration_settlements) if duration_override < 1 else duration_override var max_stack: int = int(row.max_stack) var snap := _grant_snapshot(row, source) + var bucket: Array[Dictionary] = _bucket_of(owner_key) match policy: "independent": - _instances.append(_new_instance(effect_id, 1, dur, source, snap)) + bucket.append(_new_instance(effect_id, 1, dur, source, snap)) return true "accumulate": - return _apply_accumulate(effect_id, dur, snap, source) + return _apply_accumulate(bucket, effect_id, dur, snap, source) "stack": - return _apply_stack(effect_id, dur, snap, source, max_stack) + return _apply_stack(bucket, effect_id, dur, snap, source, max_stack) push_warning("[增益状态] 未知 stack_policy") return false @@ -57,26 +75,35 @@ func _grant_snapshot(row: Dictionary, source: Dictionary) -> Dictionary: return {"m": snap_m, "unit": String(row.unit), "display": String(row.display_name)} +## 个体桶取用(缺桶新建——实例只在桶内合并,不同体永不互见) +func _bucket_of(owner_key: String) -> Array[Dictionary]: + if not _buckets.has(owner_key): + var fresh: Array[Dictionary] = [] + _buckets[owner_key] = fresh + return fresh + return _buckets[owner_key] + + ## 累加臂:命中加时长未命中追加(R += D 取本次授予生效时长——覆盖值 ≥1 按覆盖值;L 不变;快照沿首授;每次授予必有剩余次数变化) -func _apply_accumulate(effect_id: String, dur: int, snap: Dictionary, source: Dictionary) -> bool: - for inst in _instances: +func _apply_accumulate(bucket: Array[Dictionary], effect_id: String, dur: int, snap: Dictionary, source: Dictionary) -> bool: + for inst in bucket: if inst.effect_id == effect_id: inst.remaining = int(inst.remaining) + dur return true - _instances.append(_new_instance(effect_id, 1, dur, source, snap)) + bucket.append(_new_instance(effect_id, 1, dur, source, snap)) return true ## stack 臂:满层拒零写入·未满加层·未命中追加(stack 授予不触碰 R——spec 决议; ## 满层拒绝原子——容器零写入,拒收由战斗结算记"奖励未生效"行) -func _apply_stack(effect_id: String, dur: int, snap: Dictionary, source: Dictionary, max_stack: int) -> bool: - for inst in _instances: +func _apply_stack(bucket: Array[Dictionary], effect_id: String, dur: int, snap: Dictionary, source: Dictionary, max_stack: int) -> bool: + for inst in bucket: if inst.effect_id == effect_id: if int(inst.layers) >= max_stack: return false inst.layers = int(inst.layers) + 1 return true - _instances.append(_new_instance(effect_id, 1, dur, source, snap)) + bucket.append(_new_instance(effect_id, 1, dur, source, snap)) return true @@ -94,16 +121,15 @@ func _new_instance(effect_id: String, layers: int, dur: int, source: Dictionary, } -# 只读投影(插入序稳定枚举;六归因字段 + display_name + 授予时快照) -func query_active(side: String) -> Array: +# 只读投影(个体桶插入序稳定枚举;owner_key 随行出户 + 六归因字段 + display_name + 授予时快照) +func query_active(owner_key: String) -> Array: var out: Array[Dictionary] = [] - for inst in _instances: + for inst in _buckets.get(owner_key, [] as Array[Dictionary]): var row: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id(inst.effect_id) if row.is_empty(): continue - if String(row.target_side) != side: - continue out.append({ + "owner_key": owner_key, "effect_id": inst.effect_id, "layers": inst.layers, "remaining_settlements": inst.remaining, @@ -118,26 +144,47 @@ func query_active(side: String) -> Array: return out -# 轮末衰减:先兑付后衰减;每实例恰 −1;归 0 移除;返回移除数 k(恰一次执行由 战斗结算 编排信任承载) +# 侧汇总投影(主角侧 = hero 桶;敌方侧 = 各存活个体桶并集——死亡个体桶已随 purge_owner 删除, +# 并集即全部在册实例;数值与旧阵营共享读法等价,服务计数类汇总消费面) +func query_active_side(side: String) -> Array: + if side == OWNER_HERO: + return query_active(OWNER_HERO) + var out: Array[Dictionary] = [] + for key in _buckets.keys(): + if String(key) != OWNER_HERO: + out.append_array(query_active(String(key))) + return out + + +# 轮末衰减:先兑付后衰减;逐桶各 −1(每实例每结算恰一次);归 0 移除;返回移除数 k(恰一次执行由 战斗结算 编排信任承载) func decay_round() -> int: if not _open: return 0 # EC13 域闭兜底读法——容器恒空,无独立分支不诊断 var k := 0 - var survivors: Array[Dictionary] = [] - for inst in _instances: - inst.remaining = int(inst.remaining) - 1 - if inst.remaining <= 0: - k += 1 - else: - survivors.append(inst) - _instances = survivors + for key in _buckets.keys(): + var bucket: Array[Dictionary] = _buckets[key] + var survivors: Array[Dictionary] = [] + for inst in bucket: + inst.remaining = int(inst.remaining) - 1 + if inst.remaining <= 0: + k += 1 + else: + survivors.append(inst) + _buckets[key] = survivors return k +# 个体死亡即清(死亡清唯一通道——死亡个体名下实例全部移除,不转移、不并回别处;返回移除数) +func purge_owner(owner_key: String) -> int: + var removed := (_buckets.get(owner_key, [] as Array[Dictionary]) as Array).size() + _buckets.erase(owner_key) + return removed + + func notify_battle_end() -> bool: if not _open: push_warning("[增益状态] BattleClosed 下重复 notify_battle_end(EC11)") return false _open = false - _instances.clear() # 全清不跨战斗 + _buckets.clear() # 全清不跨战斗 return true diff --git a/game/presentation/views/standee_body.gd b/game/presentation/views/standee_body.gd index 07ac8753..7c17035f 100644 --- a/game/presentation/views/standee_body.gd +++ b/game/presentation/views/standee_body.gd @@ -77,7 +77,7 @@ func name_line_probe() -> Dictionary: # ---- setter 面(presenter/组合根零改排) ---- # data = 战斗结算 presentation_snapshot enemies[] 投影:{order, display_name, hp, max_hp, enemy_id, -# pending_skill/pending_type/pending_name, effects[](敌方 side 增益——各立绘同值呈现)} +# pending_skill/pending_type/pending_name, effects[](该敌自己名下增益——各立绘各读各的,增益状态 v1.5 个体投影)} func set_data(d: Dictionary) -> void: st._display_name = String(d.get("display_name", "敌人")) st._enemy_id = String(d.get("enemy_id", "")) diff --git a/game/tests/golden/README.md b/game/tests/golden/README.md index 51cb1287..05913c31 100644 --- a/game/tests/golden/README.md +++ b/game/tests/golden/README.md @@ -1,12 +1,7 @@ # 视觉 golden 基线(渲染闸的比对基准) -基线**按平台各存**(2026-11-03 用户裁:跨显卡/字形渲染机制差异使跨平台逐像素必失配—— -`windows/` 与 `mac/` 子目录各持一套,平台内部照常严格比对,跨平台不互比; -平台选择实现单点 = `tools/gate_platform.sh` 的 `gate_platform_id`,比较器 `tools/golden_compare.py` -自动拼平台子目录)。本目录现持:`windows/`(棋盘三图 `board_L1_dungeon` / `board_L2_underdark` / -`board_L3_deep_underdark`,裁剪区 900×760 + 启动态菜单 `menu_boot`,全屏)、 -`level_map`(关卡画面全屏,历史基线留根——现行闸件未对拍它)、 -`palette_baseline/`(色板基线,纯文件内容比对与平台无关)。 +五张基线:棋盘三图(`board_L1_dungeon` / `board_L2_underdark` / `board_L3_deep_underdark`, +裁剪区 900×760)+ 启动态菜单(`menu_boot`,全屏)+ 关卡画面(`level_map`,全屏)。 比对判据与工具见 `tools/golden_compare.py` (逐像素灰度差 >16 的像素占比 ≤2%)。 diff --git a/game/tests/golden/windows/board_L1_dungeon.png b/game/tests/golden/board_L1_dungeon.png similarity index 100% rename from game/tests/golden/windows/board_L1_dungeon.png rename to game/tests/golden/board_L1_dungeon.png diff --git a/game/tests/golden/windows/board_L2_underdark.png b/game/tests/golden/board_L2_underdark.png similarity index 100% rename from game/tests/golden/windows/board_L2_underdark.png rename to game/tests/golden/board_L2_underdark.png diff --git a/game/tests/golden/windows/board_L3_deep_underdark.png b/game/tests/golden/board_L3_deep_underdark.png similarity index 100% rename from game/tests/golden/windows/board_L3_deep_underdark.png rename to game/tests/golden/board_L3_deep_underdark.png diff --git a/game/tests/golden/windows/menu_boot.png b/game/tests/golden/menu_boot.png similarity index 100% rename from game/tests/golden/windows/menu_boot.png rename to game/tests/golden/menu_boot.png diff --git a/game/tests/static_scan.sh b/game/tests/static_scan.sh old mode 100755 new mode 100644 index c1e8a1c1..e17aaa93 --- a/game/tests/static_scan.sh +++ b/game/tests/static_scan.sh @@ -140,7 +140,7 @@ S11_TABLE="design/gdd/术语表.md" S11_FAIL_LOCAL=0 if [ ! -f "$S11_TABLE" ]; then - echo "[static_scan] S11 FAIL: 术语表文件不存在(${S11_TABLE})" + echo "[static_scan] S11 FAIL: 术语表文件不存在($S11_TABLE)" S11_FAIL_LOCAL=1 else # 解析词表:「退役词对照」第一列→去括号注→斜杠拆分 diff --git a/game/tests/unit/battle_settlement/damage_controller_test.gd b/game/tests/unit/battle_settlement/damage_controller_test.gd index b42bde9b..6430d0ac 100644 --- a/game/tests/unit/battle_settlement/damage_controller_test.gd +++ b/game/tests/unit/battle_settlement/damage_controller_test.gd @@ -35,6 +35,8 @@ func _init() -> void: _test_hero_death_halt(db) _test_ac_merge(db) _test_pool_clamp(db) + _test_pool_consumption_per_unit(db) + _test_defender_ac_per_unit(db) quit(Kit.finish("damage_controller_test")) @@ -45,7 +47,7 @@ func _on_row(head, ri, display, value, extra) -> void: "round_index": ri, "display": display, "value": value, "extra": extra, "highlight": head.get("highlight", "")}) -func _harness(db): +func _harness(db, depth: int = 0): var rng = RngServiceScript.new() rng.set_master_seed(TEST_SEED) var units = UnitContainerScript.new(db) @@ -53,7 +55,7 @@ func _harness(db): var ctrl = DamageControllerScript.new(db, rng, units, effects) ctrl.emit_row_cb = Callable(self, "_on_row") effects.notify_battle_start() - var spawn_ok: bool = units.spawn({"level_index": 1, "node_depth": 0, "hero_hp": int(db.combat.hero.max_hp)}) + var spawn_ok: bool = units.spawn({"level_index": 1, "node_depth": depth, "hero_hp": int(db.combat.hero.max_hp)}) return {"db": db, "rng": rng, "units": units, "effects": effects, "ctrl": ctrl, "spawn_ok": spawn_ok} @@ -219,6 +221,7 @@ func _test_source_death_void(db) -> void: # 单位字典键集复刻(剥离 handle_id:生产键集含句柄,`==` 误命的可达条件被破坏,夹具刻意不携句柄) func _unit_fixture() -> Dictionary: return { + "handle_id": 0, # 生成序轴(个体化批——个体键导出沿 handle_id;手搭夹具同契约) "enemy_id": "fixture_enemy", "display_name": "地精", "hp": 5, "max_hp": 5, "atk": 1, @@ -342,7 +345,7 @@ func _test_ac_merge(db) -> void: Kit.check("前置:状态表存在 hero 侧 ac 型行", false) return var src := {"source_class": "safe_cell", "origin_cell": Vector2i(-1, -1), "round_index": 0} - h.effects.apply_effect(String(ac_eff.effect_id), src) + h.effects.apply_effect(String(ac_eff.effect_id), StatusContainerScript.OWNER_HERO, src) var expected: int = override_v + int(ac_eff.magnitude) Kit.check("ac 型效果叠层入 AC(层数×幅度,不入池)", h.ctrl.defender_ac(h.units.hero_unit()) == expected) @@ -356,7 +359,7 @@ func _test_pool_clamp(db) -> void: return var lo: int = int(h.db.combat.settlement.core.pool_clamp_lo) var hi: int = int(h.db.combat.settlement.core.pool_clamp_hi) - Kit.check("空效果池读 0(表 clamp 域含 0 前提)", h.ctrl.clamped_pool("hero_offense") == 0 and lo <= 0 and hi >= 0) + Kit.check("空效果池读 0(表 clamp 域含 0 前提)", h.ctrl.clamped_pool("hero_offense", StatusContainerScript.OWNER_HERO) == 0 and lo <= 0 and hi >= 0) # 找 hero_offense 池的 percent 型 hero 侧效果行 var pool_eff := {} for row in h.db.combat.status_effects.rows: @@ -369,12 +372,12 @@ func _test_pool_clamp(db) -> void: Kit.check("前置:hero_offense 池存在 percent 型 hero 侧行", false) return var src := {"source_class": "safe_cell", "origin_cell": Vector2i(-1, -1), "round_index": 0} - var first_ok: bool = h.effects.apply_effect(String(pool_eff.effect_id), src) + var first_ok: bool = h.effects.apply_effect(String(pool_eff.effect_id), StatusContainerScript.OWNER_HERO, src) var expected1: int = clampi(int(pool_eff.magnitude), lo, hi) - Kit.check("池值 = 单实例 L×m 加算后 clamp", first_ok and h.ctrl.clamped_pool("hero_offense") == expected1) - var second_ok: bool = h.effects.apply_effect(String(pool_eff.effect_id), src) + Kit.check("池值 = 单实例 L×m 加算后 clamp", first_ok and h.ctrl.clamped_pool("hero_offense", StatusContainerScript.OWNER_HERO) == expected1) + var second_ok: bool = h.effects.apply_effect(String(pool_eff.effect_id), StatusContainerScript.OWNER_HERO, src) Kit.check("累加政策重复授予受理且层数恒 1(同名重复授予加时长)——池值不变", - second_ok and h.ctrl.clamped_pool("hero_offense") == expected1) + second_ok and h.ctrl.clamped_pool("hero_offense", StatusContainerScript.OWNER_HERO) == expected1) # ac 型效果不入 percent 池 var ac_eff2 := {} for row2 in h.db.combat.status_effects.rows: @@ -382,9 +385,9 @@ func _test_pool_clamp(db) -> void: ac_eff2 = row2 break if not ac_eff2.is_empty(): - var before: int = h.ctrl.clamped_pool("hero_offense") - h.effects.apply_effect(String(ac_eff2.effect_id), src) - Kit.check("ac 型效果不入池(percent 池隔离)", h.ctrl.clamped_pool("hero_offense") == before) + var before: int = h.ctrl.clamped_pool("hero_offense", StatusContainerScript.OWNER_HERO) + h.effects.apply_effect(String(ac_eff2.effect_id), StatusContainerScript.OWNER_HERO, src) + Kit.check("ac 型效果不入池(percent 池隔离)", h.ctrl.clamped_pool("hero_offense", StatusContainerScript.OWNER_HERO) == before) # stack 政策效果:全新容器授予至满层 → 再授拒绝(满层拒绝原子——容器零写入) var stack_eff := {} for row3 in h.db.combat.status_effects.rows: @@ -399,6 +402,47 @@ func _test_pool_clamp(db) -> void: var granted := 0 var max_n: int = int(stack_eff.max_stack) for i in range(max_n + 1): - if effects2.apply_effect(String(stack_eff.effect_id), src): + if effects2.apply_effect(String(stack_eff.effect_id), StatusContainerScript.OWNER_HERO, src): granted += 1 Kit.check("stack 政策恰授予 max_stack 层后拒绝(满层拒绝原子)", granted == max_n) + + +# ---- 个体池读数 / 个体 AC 合流(增益状态 v1.5——敌方状态个体化批)---- + +func _test_pool_consumption_per_unit(db) -> void: + var h = _harness(db, 3) # depth 3 = hobgoblin 行集(unit_count 2-3——个体对照面需 ≥2 敌) + if not h.spawn_ok: + return + var enemies: Array = h.units.all_enemies() + Kit.check("V6 前置:行集 ≥2 敌(个体池对照面)", enemies.size() >= 2) + if enemies.size() < 2: + return + var wmag: int = int(db.combat.status_effects.row_by_id("weaken").magnitude) + var lo: int = int(db.combat.settlement.core.pool_clamp_lo) + var hi: int = int(db.combat.settlement.core.pool_clamp_hi) + var src := {"source_class": "seal_hit", "origin_cell": Vector2i(-1, -1), "round_index": 0} + var k1: String = StatusContainerScript.owner_key_for(enemies[0]) + var k2: String = StatusContainerScript.owner_key_for(enemies[1]) + Kit.check("V6 前置:e1 受理削弱", h.effects.apply_effect("weaken", k1, src)) + Kit.check("B 敌的削弱不进 A 敌的账:e1 池含 weaken 值(clamp 域内)、e2 恒 0〔个体化批 V6〕", + h.ctrl.clamped_pool("enemy_output", k1) == clampi(wmag, lo, hi) and h.ctrl.clamped_pool("enemy_output", k2) == 0) + + +func _test_defender_ac_per_unit(db) -> void: + var h = _harness(db, 3) + if not h.spawn_ok: + return + var enemies: Array = h.units.all_enemies() + Kit.check("V7 前置:行集 ≥2 敌(个体 AC 对照面)", enemies.size() >= 2) + if enemies.size() < 2: + return + var amag: int = int(db.combat.status_effects.row_by_id("alert").magnitude) + var src := {"source_class": "mine_hit", "origin_cell": Vector2i(-1, -1), "round_index": 0} + var u1: Dictionary = enemies[0] + var u2: Dictionary = enemies[1] + var k1: String = StatusContainerScript.owner_key_for(u1) + var base1: int = int(u1.get("armor_class", 0)) + var base2: int = int(u2.get("armor_class", 0)) + Kit.check("V7 前置:e1 受理警觉", h.effects.apply_effect("alert", k1, src)) + Kit.check("alert 各算各的:e1 AC = 自身基数 + 警觉幅度、e2 AC = 自身基数(该敌自己名下 ac 型)〔个体化批 V7〕", + h.ctrl.defender_ac(u1) == base1 + amag and h.ctrl.defender_ac(u2) == base2) diff --git a/game/tests/unit/battle_settlement/roll_multiplier_test.gd b/game/tests/unit/battle_settlement/roll_multiplier_test.gd index df8438c4..723f8129 100644 --- a/game/tests/unit/battle_settlement/roll_multiplier_test.gd +++ b/game/tests/unit/battle_settlement/roll_multiplier_test.gd @@ -231,24 +231,24 @@ func _weaken_accumulate_probe() -> Dictionary: if not settlement.begin_battle({"level_index": 1, "node_depth": 2, "hero_hp": int(_db.combat.hero.max_hp)}): return {} var src: Dictionary = {"source_class": "mine_hit", "origin_cell": Vector2i(0, 0), "round_index": settlement.round_index} - settlement._status_effects.apply_effect("weaken", src) + settlement._status_effects.apply_effect("weaken", "e1", src) settlement._status_effects.decay_round() # remaining 2 → 1(先兑付后衰减——只借衰减器,不结算) - settlement._status_effects.apply_effect("weaken", src) # 累加:remaining 1+2=3,层数不动 + settlement._status_effects.apply_effect("weaken", "e1", src) # 累加:remaining 1+2=3,层数不动 var regrant := _weaken_inst(settlement) - settlement._status_effects.apply_effect("weaken", src, 3) # 覆盖时长按覆盖值累加:3+3=6 + settlement._status_effects.apply_effect("weaken", "e1", src, 3) # 覆盖时长按覆盖值累加:3+3=6 var override_grant := _weaken_inst(settlement) - settlement._status_effects.apply_effect("weaken", src) # 同轮再授:6+2=8 + settlement._status_effects.apply_effect("weaken", "e1", src) # 同轮再授:6+2=8 var extra := _weaken_inst(settlement) if regrant.is_empty() or override_grant.is_empty() or extra.is_empty(): return {} # 走伤害控制器公有算术面 clamped_pool - return {"layers": int(extra.layers), "pool": int(settlement._damage.clamped_pool("enemy_output")), + return {"layers": int(extra.layers), "pool": int(settlement._damage.clamped_pool("enemy_output", "e1")), "after_regrant": int(regrant.remaining_settlements), "after_override": int(override_grant.remaining_settlements), "after_extra": int(extra.remaining_settlements), "snap_magnitude": int(regrant.snap_magnitude)} func _weaken_inst(settlement: Object) -> Dictionary: - for eff in settlement._status_effects.query_active("enemy"): + for eff in settlement._status_effects.query_active("e1"): if String(eff.effect_id) == "weaken": return eff return {} @@ -269,7 +269,7 @@ func _ac11_tier_samples() -> Array: var guard := 12 while settlement.battle_result == "" and guard > 0: guard -= 1 - settlement._status_effects.apply_effect("ac_up", {"source_class": "safe_cell", "origin_cell": Vector2i(0, 0), "round_index": settlement.round_index}) + settlement._status_effects.apply_effect("ac_up", "hero", {"source_class": "safe_cell", "origin_cell": Vector2i(0, 0), "round_index": settlement.round_index}) settlement.minesweeper.settle_batch([{"action": "stop"}]) var tiers: Array = [] for row in rows: @@ -368,7 +368,10 @@ func _hero_attack_row_with(opts: Dictionary, hero_atk_val: int, seed_val: int) - if not settlement.begin_battle({"level_index": 1, "node_depth": 0, "hero_hp": int(_db.combat.hero.max_hp), "hero_atk": hero_atk_val}): return {} for eff in opts.get("effects", []): - settlement._status_effects.apply_effect(String(eff), {"source_class": "mine_hit", "origin_cell": Vector2i(0, 0), "round_index": settlement.round_index}) + # 个体键读数(个体化批):按状态行 target_side 路由个体——主角行归主角桶、敌方行归首敌(被打者) + var erow: Dictionary = _db.combat.status_effects.row_by_id(String(eff)) + var okey: String = "e1" if String(erow.get("target_side", "")) == "enemy" else "hero" + settlement._status_effects.apply_effect(String(eff), okey, {"source_class": "mine_hit", "origin_cell": Vector2i(0, 0), "round_index": settlement.round_index}) settlement.minesweeper.settle_batch([{"action": "stop"}]) for row in rows: if String(row.get("type", "")) == "damage" and String(row.get("source_class", "")) == "hero_attack": diff --git a/game/tests/unit/battle_settlement/round_flow_skill_pool_test.gd b/game/tests/unit/battle_settlement/round_flow_skill_pool_test.gd index 2542adac..1e55860d 100644 --- a/game/tests/unit/battle_settlement/round_flow_skill_pool_test.gd +++ b/game/tests/unit/battle_settlement/round_flow_skill_pool_test.gd @@ -39,6 +39,7 @@ func _init() -> void: _smoke_skill_pool() _smoke_counter_buckets() _smoke_extended_rows() + _smoke_enemy_buff_targets_self() quit(Kit.finish("round_flow_skill_pool_test")) @@ -1086,3 +1087,50 @@ func _smoke_extended_rows() -> void: Kit.check("卡④ wr2③:揭示落空行 type=extended 且 effect_id=fx_reveal 且 origin_cell=越界哨值〔明细收敛 V2〕", not missed.is_empty() and String(missed.get("type", "")) == "extended" and Vector2i(missed["origin_cell"][0], missed["origin_cell"][1]).x == -1) + + +# ---- 敌方增益技自体落点(增益状态 v1.5 目标规则「自己」——敌方状态个体化批)---- +# 真实入口=战斗结算编排链(技能施放):begin_battle → stop 结算推进一轮(战斗段施放+轮末衰减, +# 蓄力表值 2 拍衰减后剩 1 拍仍在池)→ 逐敌读敌方输出池。判据=施放者与被他敌的池读数差。 + +func _smoke_enemy_buff_targets_self() -> void: + var emp_mag: int = int(_db.combat.status_effects.row_by_id("empower").magnitude) + var sc_script = load("res://core/status_container.gd") + var found_seed := -1 + var found_ok := false + var carrier_pool := -999 + for s in range(1, 401): + var rg = load("res://core/rng_service.gd").new() + rg.set_master_seed(s) + var settlement = load("res://core/battle_orchestrator.gd").new(_db, rg) + var rows: Array = [] + settlement.step_row.connect(func(row): rows.append(row)) + # L1 depth 3(hobgoblin 行集 2-3 只——depth 0 单 goblin 常被主角先手一击秒杀,死亡即不动手、cast 不发生) + if not settlement.begin_battle({"level_index": 1, "node_depth": 3, "hero_hp": int(_db.combat.hero.max_hp)}): + continue + for turn in range(4): + if settlement.battle_result != "": + break + settlement.minesweeper.settle_batch([{"action": "stop"}]) # 推进一轮:施放→衰减(蓄力仍持 1 拍) + if settlement.battle_result != "": + break + var charge_casts := 0 + for row in rows: + if String(row.get("type", "")) == "cast" and String(row.get("skill_id", "")) == "charge": + charge_casts += 1 + if charge_casts != 1: + continue # 只取恰一次蓄力施放的时刻——判据单义 + var carriers: Array = [] + for u in settlement._enemy_system.query_alive("enemy"): + var okey: String = sc_script.owner_key_for(u) + if settlement._damage.clamped_pool("enemy_output", okey) != 0: + carriers.append(okey) + if carriers.size() == 1: + found_seed = s + carrier_pool = settlement._damage.clamped_pool("enemy_output", String(carriers[0])) + found_ok = carrier_pool == emp_mag + break + if found_seed > 0: + break + Kit.check("蓄力施放种子可达(恰一次 cast=charge,seed=%d)" % found_seed, found_seed > 0) + Kit.check("敌方增益技自体落点:施放者 output 池 = 蓄力幅度(%d,实测 %d)、他敌恒 0〔个体化批 V5〕" % [emp_mag, carrier_pool], found_ok) diff --git a/game/tests/unit/battle_settlement/seal_polarity_test.gd b/game/tests/unit/battle_settlement/seal_polarity_test.gd index 862711b1..547f394a 100644 --- a/game/tests/unit/battle_settlement/seal_polarity_test.gd +++ b/game/tests/unit/battle_settlement/seal_polarity_test.gd @@ -748,7 +748,7 @@ func _smoke_negative_dictionary() -> void: var snap_b: Dictionary = settlement._reward_economy.query_full_snapshot(by_type["blast"]) settlement.reward_grant().grant_routed(snap_b, "negative", {"source_class": "mine_hit", "cell": by_type["blast"], "ri": 1}) var alert_ok: bool = false - for eff_a in settlement._status_effects.query_active("enemy"): + for eff_a in settlement._status_effects.query_active_side("enemy"): if String(eff_a.effect_id) == "alert": alert_ok = true Kit.check("blast 型负向 → 警觉(敌方护甲等级 +1 状态在位)", alert_ok) diff --git a/game/tests/unit/contracts/system_contracts_test.gd b/game/tests/unit/contracts/system_contracts_test.gd index 2d172f7c..3cc47790 100644 --- a/game/tests/unit/contracts/system_contracts_test.gd +++ b/game/tests/unit/contracts/system_contracts_test.gd @@ -25,6 +25,10 @@ func _init() -> void: _test_rng_tag_closure(db) _test_ticket_nine_columns() _test_status_boolean_acceptance(db) + _test_status_individual_isolation(db) + _test_status_grant_all_per_unit(db) + _test_status_death_clears(db) + _test_status_merge_per_unit(db) quit(Kit.finish("system_contracts_test")) @@ -112,13 +116,96 @@ func _test_status_boolean_acceptance(db) -> void: return var probe_id: String = String(any_row.effect_id) var src := {"source_class": "safe_cell", "origin_cell": Vector2i(-1, -1), "round_index": 0} - Kit.check("域闭授予拒绝(EC1——战斗域外 apply_effect = false)", effects.apply_effect(probe_id, src) == false) - Kit.check("未知 effect_id 拒绝(EC2)", effects.apply_effect("no_such_effect_id__", src) == false) + Kit.check("域闭授予拒绝(EC1——战斗域外 apply_effect = false)", effects.apply_effect(probe_id, StatusContainerScript.OWNER_HERO, src) == false) + Kit.check("未知 effect_id 拒绝(EC2)", effects.apply_effect("no_such_effect_id__", StatusContainerScript.OWNER_HERO, src) == false) effects.notify_battle_start() - Kit.check("开域后受理已知 id(布尔受理口径 true 通道)", effects.apply_effect(probe_id, src) == true) - var active: Array = effects.query_active(String(any_row.target_side)) + Kit.check("开域后受理已知 id(布尔受理口径 true 通道)", effects.apply_effect(probe_id, StatusContainerScript.OWNER_HERO, src) == true) + var active: Array = effects.query_active(StatusContainerScript.OWNER_HERO) var projected := false for a in active: if String(a.effect_id) == probe_id: projected = int(a.effective_value) == int(a.layers) * int(a.snap_magnitude) Kit.check("受理后投影 effective_value = 层数×授予时快照(抗热重载 EC9 面)", projected) + + +# ---- B4 个体归属契约(增益状态 v1.5——敌方状态个体化批):个体隔离/全体逐体发/死亡即清/同体合并 ---- +# 个体键直传字面量("e1"/"e2"/"e3"——拼写约定单点在 StatusContainer.owner_key_for,测试面模拟授予路径逐只授) + +func _test_status_individual_isolation(db) -> void: + var effects = StatusContainerScript.new(db) + effects.notify_battle_start() + var src := {"source_class": "seal_hit", "origin_cell": Vector2i(-1, -1), "round_index": 0} + var wrow: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id("weaken") + Kit.check("前置:weaken 行在册(累加策略——个体合并语义载体)", not wrow.is_empty() and String(wrow.stack_policy) == "accumulate") + Kit.check("个体隔离:A 敌受理", effects.apply_effect("weaken", "e1", src) == true) + Kit.check("个体隔离:B 敌受理(同名不同体互不合并)", effects.apply_effect("weaken", "e2", src) == true) + Kit.check("个体隔离:A/B 各持一条(各体桶独立)〔个体化批 V1〕", + effects.query_active("e1").size() == 1 and effects.query_active("e2").size() == 1) + effects.decay_round() # A/B 各自 −1——先验证互不干扰后验证独立倒数 + var a_after: Array = effects.query_active("e1") + var b_after: Array = effects.query_active("e2") + var a_rem: int = int(a_after[0].remaining_settlements) if a_after.size() == 1 else -1 + var b_rem: int = int(b_after[0].remaining_settlements) if b_after.size() == 1 else -1 + Kit.check("个体隔离:各体独立倒数(A=表值−1、B=表值−1 同步各减)〔个体化批 V1〕", + a_rem == int(wrow.duration_settlements) - 1 and b_rem == int(wrow.duration_settlements) - 1) + Kit.check("个体隔离:投影携带 owner_key(逐个体承载出户)〔个体化批 V1〕", + a_after.size() == 1 and String(a_after[0].owner_key) == "e1" and String(b_after[0].owner_key) == "e2") + + +func _test_status_grant_all_per_unit(db) -> void: + var effects = StatusContainerScript.new(db) + effects.notify_battle_start() + var src := {"source_class": "mine_hit", "origin_cell": Vector2i(-1, -1), "round_index": 0} + var erow: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id("enrage") + Kit.check("前置:enrage 行在册(叠加策略——逐体叠层载体)", not erow.is_empty() and String(erow.stack_policy) == "stack") + # 模拟授予路径全体规则(reward_grant._apply_percent_row 同构):循环三敌逐只各发一条 + var keys: Array[String] = ["e1", "e2", "e3"] + var granted := 0 + for k in keys: + if effects.apply_effect("enrage", k, src): + granted += 1 + Kit.check("全体授予逐体发:三敌各受理一条(对全体=逐只各发)〔个体化批 V2〕", granted == 3) + var e2_ok: bool = effects.apply_effect("enrage", "e2", src) # e2 再授一层——各体独立合并 + Kit.check("全体授予逐体发:同体叠加至 2 层、异体层数不动〔个体化批 V2〕", + e2_ok and int(effects.query_active("e2")[0].layers) == 2 + and int(effects.query_active("e1")[0].layers) == 1 and int(effects.query_active("e3")[0].layers) == 1) + effects.decay_round() + var all_decayed := true + for k in keys: + for eff in effects.query_active(k): + if int(eff.remaining_settlements) != int(erow.duration_settlements) - 1: + all_decayed = false + Kit.check("全体授予逐体发:各体同轮独立衰减 −1(逐桶各减)〔个体化批 V2〕", all_decayed) + + +func _test_status_death_clears(db) -> void: + var effects = StatusContainerScript.new(db) + effects.notify_battle_start() + var src := {"source_class": "seal_hit", "origin_cell": Vector2i(-1, -1), "round_index": 0} + effects.apply_effect("weaken", "e1", src) + effects.apply_effect("weaken", "e2", src) + Kit.check("死亡即清:purge_owner 返回移除数(e1 名下 1 条)〔个体化批 V3〕", effects.purge_owner("e1") == 1) + Kit.check("死亡即清:e1 桶清零(重 purge 零移除)〔个体化批 V3〕", effects.query_active("e1").is_empty() and effects.purge_owner("e1") == 0) + Kit.check("死亡即清:e2 不受影响(不转移不并回)〔个体化批 V3〕", effects.query_active("e2").size() == 1) + var side_all: Array = effects.query_active_side("enemy") + Kit.check("死亡即清:侧汇总只含存活个体实例〔个体化批 V3〕", side_all.size() == 1 and String(side_all[0].owner_key) == "e2") + + +func _test_status_merge_per_unit(db) -> void: + var effects = StatusContainerScript.new(db) + effects.notify_battle_start() + var src := {"source_class": "enemy_action", "origin_cell": Vector2i(-1, -1), "round_index": 0} + var wrow: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id("weaken") + var w_dur: int = int(wrow.duration_settlements) + effects.apply_effect("weaken", "e1", src) + effects.apply_effect("weaken", "e1", src) + Kit.check("同体合并照旧:累加行同体再授时长累加(%d+%d——仍单实例)〔个体化批 V4〕" % [w_dur, w_dur], + effects.query_active("e1").size() == 1 and int(effects.query_active("e1")[0].remaining_settlements) == w_dur * 2) + var erow: Dictionary[Variant, Variant] = db.combat.status_effects.row_by_id("enrage") + var max_stack: int = int(erow.max_stack) + var granted_n := 0 + for i in range(max_stack + 1): + if effects.apply_effect("enrage", "e2", src): + granted_n += 1 + Kit.check("同体合并照旧:叠加行满层拒绝(恰授 max_stack=%d 层)〔个体化批 V4〕" % max_stack, granted_n == max_stack) + Kit.check("同体合并照旧:满层时异体仍受理(拒绝只在同体内原子)〔个体化批 V4〕", effects.apply_effect("enrage", "e3", src) == true) diff --git a/game/tests/unit/presentation/battle_narrator_test.gd b/game/tests/unit/presentation/battle_narrator_test.gd index 13362dd7..494ef192 100644 --- a/game/tests/unit/presentation/battle_narrator_test.gd +++ b/game/tests/unit/presentation/battle_narrator_test.gd @@ -23,6 +23,7 @@ func _init() -> void: _test_phase_text_nonempty() _test_boss_name_uses_boss_rowset() _test_level_clear_wording() + _test_snapshot_effects_per_unit() quit(Kit.finish("battle_narrator_test")) @@ -99,3 +100,39 @@ func _test_level_clear_wording() -> void: {"cleared": false, "result": "failed", "levels_cleared": 1, "stopped_at": 2, "keystone_total": 4, "master_seed": 42}) Kit.check("冒险摘要完成关数行(实际「%s」)〔口径换代 V3〕" % summary, summary.contains("完成 1 关 · 止步第 2 层") and not summary.contains("通关")) + + +# ---- 呈现各读各的(增益状态 v1.5——敌方状态个体化批)---- +# 真实入口=呈现状态快照函数 presentation_snapshot:A 有削弱 B 无 → 两卡投影各现各的(零共享引用) + +func _test_snapshot_effects_per_unit() -> void: + var db = load("res://core/config_db.gd").new() + Kit.check("V8 前置:表加载零 error", db.load_tables("res://data/tables", true) and db.diagnostics_count("error") == 0) + var rng = load("res://core/rng_service.gd").new() + rng.set_master_seed(20261103) + var settlement = load("res://core/battle_orchestrator.gd").new(db, rng) + # depth 3 = hobgoblin 行集 2-3 只——两卡对照面 + var open_ok: bool = settlement.begin_battle({"level_index": 1, "node_depth": 3, "hero_hp": int(db.combat.hero.max_hp)}) + Kit.check("V8 前置:开局(L1 depth3 双敌行集)", open_ok) + if not open_ok: + return + var enemies: Array = settlement._enemy_system.all_enemies() + var dual_ok: bool = enemies.size() >= 2 + Kit.check("V8 前置:≥2 敌(两卡对照面)", dual_ok) + if not dual_ok: + return + var sc = load("res://core/status_container.gd") + var src := {"source_class": "seal_hit", "origin_cell": Vector2i(-1, -1), "round_index": 0} + Kit.check("V8 前置:A 敌受理削弱(B 敌不授)", settlement._status_effects.apply_effect("weaken", sc.owner_key_for(enemies[0]), src)) + var snap: Dictionary = settlement.presentation_snapshot() + var e1_effects: Array = snap.enemies[0].effects + var e2_effects: Array = snap.enemies[1].effects + var e1_has := false + for e in e1_effects: + if String(e.effect_id) == "weaken": + e1_has = true + var e2_has := false + for e in e2_effects: + if String(e.effect_id) == "weaken": + e2_has = true + Kit.check("A 有削弱 B 无 → 两卡投影各现各的(A 卡现削弱、B 卡无同款)〔个体化批 V8〕", e1_has and not e2_has) diff --git a/tools/ci/chunk_dl.py b/tools/ci/chunk_dl.py deleted file mode 100644 index 79d6e11d..00000000 --- a/tools/ci/chunk_dl.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python3 -r"""chunk_dl.py — 分片并行下载器(断点续传),2026-11-03 CI 迁移批收编。 - -背景:GitHub 直连在本项目两台机器均不可用,加速镜像站速度慢且会掐连接/回错误页。 -本件把大文件切成 N 片经镜像并行拉取(单片断了自动续传重试),全部齐后拼合。 -已实证:74MB Godot Linux 包约 15 分钟拉完(2026-11-03 mac_setup 依赖此件拉 Godot macOS 包)。 - -用法: python3 tools/ci/chunk_dl.py <输出路径> [分片数=16] -镜像回落顺序:直连 → gh-proxy.net → gh-proxy.com(HEAD 探测 Content-Length 决定实际用的源)。 -校验:分片按字节范围落盘、按序拼合;zip 结构校验由调用方(mac_setup.sh 的 unzip -tq)承担。 -退出码:0=成功 1=失败。 -""" -import concurrent.futures as cf -import os -import subprocess -import sys - -MIRRORS = ["", "https://gh-proxy.net/", "https://gh-proxy.com/"] - - -def pick_mirror(url: str): - """HEAD 探测取 Content-Length + 前 4 字节 zip 魔数校验(镜像站会回 200 错误页体, - 只看 Content-Length 会把 195 字节的假体当真——2026-11-03 gh-proxy.net 实证)。 - 返回(实际可用 URL, 字节数)或 (None, 0)。非 zip 目标禁用本件。""" - for m in MIRRORS: - u = m + url - r = subprocess.run(["curl", "-sIL", "-m", "30", u], capture_output=True, text=True) - size = 0 - for line in r.stdout.splitlines(): - if line.lower().startswith("content-length:"): - try: - size = int(line.split(":", 1)[1].strip()) - except ValueError: - size = 0 - if size <= 65536: - continue - head = subprocess.run( - ["curl", "-sL", "-m", "20", "-r", "0-3", "-o", "-", u], - capture_output=True) - if head.stdout[:2] != b"PK": - continue - return u, size - return None, 0 - - -def fetch(job) -> bool: - i, s, e, url, out = job - p = "%s.part%02d" % (out, i) - want = e - s + 1 - for _attempt in range(200): - have = os.path.getsize(p) if os.path.exists(p) else 0 - if have >= want: - return True - r0 = s + have - subprocess.run( - ["curl", "-sL", "--speed-limit", "1024", "--speed-time", "30", - "-m", "600", "-r", "%d-%d" % (r0, e), "-o", p + ".new", url], - capture_output=True) - if os.path.exists(p + ".new"): - with open(p, "ab") as f, open(p + ".new", "rb") as g: - f.write(g.read()) - os.remove(p + ".new") - return False - - -def main() -> int: - if len(sys.argv) < 3: - print("用法: python3 chunk_dl.py <输出路径> [分片数=16]") - return 1 - url, out = sys.argv[1], sys.argv[2] - n = int(sys.argv[3]) if len(sys.argv) > 3 else 16 - real, size = pick_mirror(url) - if not real: - print("全部下载源失败") - return 1 - print("size=%d url=%s" % (size, real), flush=True) - chunk = (size + n - 1) // n - jobs = [(i, i * chunk, min((i + 1) * chunk, size) - 1, real, out) - for i in range(n) if i * chunk < size] - with cf.ThreadPoolExecutor(n) as ex: - for ok in ex.map(fetch, jobs): - if not ok: - print("分片重试耗尽") - return 1 - with open(out, "wb") as f: - for i, _, _, _, _ in jobs: - with open("%s.part%02d" % (out, i), "rb") as g: - f.write(g.read()) - for i, _, _, _, _ in jobs: - os.remove("%s.part%02d" % (out, i)) - print("done %d" % os.path.getsize(out)) - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/tools/ci/domain_route.sh b/tools/ci/domain_route.sh deleted file mode 100644 index 98f2803e..00000000 --- a/tools/ci/domain_route.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bash -# 乙案域分流——push 触发的远端 CI 按改动域选闸(2026-11-03 用户裁)。 -# 用法: tools/ci/domain_route.sh -# 输出: stdout 打印 full|docs|skip;GITHUB_OUTPUT 在位时另写 mode= 行(Actions 步骤输出)。 -# 规则(唯一事实源,乙案语义): -# 1. diff 含 game/ 下非 .md 文件(行为载体:代码/场景/数据表/素材)→ full(两域全量,渲染闸随 code 域) -# 2. 否则 diff 非空(design/ 文档、reports/、根 md、game/ 下 .md 等一切非代码面)→ docs -# (乙案:文档批只跑文档域秒级闸——gdd_lint/doc_link/doc_term/pipeline/doc_ref/capability+熵增) -# 例外:diff 只含 tools/ 与 .gitea/(闸件与管线自身改动)→ skip——闸件改动不占合回全量, -# 质量义务=落批人工确认可跑通(run_all_gates.sh 头注既有口径,不在远端重复烧引擎)。 -# 3. diff 空 → skip。 -# 判定面说明:game/tests/** 与 game/sim/** 属 game/ 行为载体(.md 除外)→ full, -# 与 run_all_gates.sh 关联档口径一致(测量面批 02 照跑全套件)。 -set -u -base="${1:-}" -head="${2:-HEAD}" -[ -n "$base" ] || { echo "用法: domain_route.sh " >&2; exit 2; } -head="$(git rev-parse --verify "${head}^{commit}" 2>/dev/null)" || { echo "坏 head: $head" >&2; exit 2; } -# base 不可用(新分支 zero-sha/被 force-push 掉)→ 回落 HEAD~1;孤提交(无父)→ docs 保守最小跑。 -git cat-file -e "$base^{commit}" 2>/dev/null || base="$(git rev-parse "$head~1" 2>/dev/null || true)" -if [ -z "$base" ]; then - mode="docs" -else - files="$(git diff --name-only "$base" "$head" 2>/dev/null)" - if [ -z "$files" ]; then - mode="skip" - elif echo "$files" | grep -vE '\.md$' | grep -qE '^game/'; then - mode="full" - else - non_tools="$(echo "$files" | grep -vE '^(tools/|\.gitea/)' || true)" - if [ -n "$non_tools" ]; then mode="docs"; else mode="skip"; fi - fi -fi -if [ -n "${GITHUB_OUTPUT:-}" ]; then printf 'mode=%s\n' "$mode" >> "$GITHUB_OUTPUT"; fi -echo "$mode" -exit 0 diff --git a/tools/ci/mac_setup.sh b/tools/ci/mac_setup.sh deleted file mode 100644 index a8ba6a36..00000000 --- a/tools/ci/mac_setup.sh +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env bash -# mac_setup.sh — CI runner 自举件(Mac 本机 host 模式+专用账户图形会话;2026-11-03 用户裁)。 -# 一条命令把一台 macOS 变成 gplan 的远端 CI runner:专用账户+自动登录图形会话+Godot+gdstyle+ -# Pillow+act_runner 用户级常驻(LaunchAgent)。 -# 形态要点(渲染闸的硬需求):渲染闸要真窗口 = 必须有图形会话(WindowServer 只存在于已登录会话)。 -# 方案 = ci-runner 账户开机自动登录(owns 控制台图形会话)→ 该会话内 LaunchAgent 拉起 runner → -# 测试作业全部以 ci-runner 身份运行(无 admin、可写面限定);日常使用经「快速用户切换」到本人账户, -# 两会话并存互不干扰(后台会话保留约 1-2GB 内存;后台会话渲染行为在端到端验收第一轮实证)。 -# 用法(sudo 必须——建账户/写 /etc/kcpassword/装 /usr/local/bin 都要 root): -# sudo bash tools/ci/mac_setup.sh [--godot-zip <本地已下载的 macOS 版 zip 路径>] -# 环境前提: -# ① macOS(Intel/Apple Silicon 皆可,Godot 走 universal 包)② Xcode Command Line Tools 已装 -# (python3/git 在位;缺则先 xcode-select --install)③ 调用账户的 ~/gitea-runner/ 下已有 -# act_runner(darwin 包,gitea.com gitea/runner releases)与已注册的 .runner(一次性注册动作)。 -# 幂等:重复执行只补缺件;账户密码首次生成后存 /var/db/gplan-ci-runner.pw(root 600),重跑复用。 -set -euo pipefail - -GODOT_VER="4.7.2" -GODOT_URL="https://github.com/godotengine/godot/releases/download/${GODOT_VER}-stable/Godot_v${GODOT_VER}-stable_macos.universal.zip" -GDSTYLE_VER="0.4.0" -GDSTYLE_URL="https://github.com/atelico/gdstyle/releases/download/v${GDSTYLE_VER}/gdstyle-x86_64-apple-darwin.tar.gz" -MIRRORS=("" "https://gh-proxy.net/" "https://gh-proxy.com/") # 直连优先,镜像回落 -CI_USER="ci-runner" -CI_HOME="/Users/${CI_USER}" -PW_FILE="/var/db/gplan-ci-runner.pw" - -log() { echo "[mac_setup] $*"; } -die() { echo "[mac_setup] ✗ $*" >&2; exit 1; } - -[ "$(uname -s)" = "Darwin" ] || die "仅支持 macOS" -[ "$(id -u)" -eq 0 ] || die "请用 sudo 运行(建账户/写 /etc/kcpassword/装 /usr/local/bin 需要 root)" -for t in git curl python3 unzip dscl; do command -v "$t" >/dev/null 2>&1 || die "缺 ${t}(先 xcode-select --install)"; done -INVOKER="${SUDO_USER:-$(whoami)}" -RUNNER_SRC="/Users/${INVOKER}/gitea-runner" -[ -x "${RUNNER_SRC}/act_runner" ] || die "缺 ${RUNNER_SRC}/act_runner——先从 gitea.com/gitea/runner releases 下载 darwin 包" -[ -f "${RUNNER_SRC}/.runner" ] || die "缺 ${RUNNER_SRC}/.runner——act_runner 尚未注册(register 子命令,见 Gitea 文档)" - -GODOT_ZIP="" -while [ $# -gt 0 ]; do - case "$1" in - --godot-zip) GODOT_ZIP="${2:-}"; shift 2 ;; - *) die "未知参数: $1" ;; - esac -done -rm -f /tmp/godot_mac_XXXXXX.zip /tmp/gdstyle_XXXXXX.tar.gz 2>/dev/null || true # 早期 BSD-mktemp 缺陷的字面残留清理 - -# ── 1. 专用账户+密码落盘(自动登录需要密码编码进 /etc/kcpassword,root 600)── -if dscl . -read "${CI_HOME}" NFSHomeDirectory >/dev/null 2>&1; then - log "账户 ${CI_USER} 已存在" - [ -f "$PW_FILE" ] || die "账户已存在但 $PW_FILE 缺失(无法配置自动登录)——删除账户重跑,或手工补密码文件" - CI_PW="$(cat "$PW_FILE")" -else - CI_PW="$(uuidgen | tr -d '-')" - /usr/sbin/sysadminctl -addUser "$CI_USER" -password "$CI_PW" -home "$CI_HOME" \ - || die "账户创建失败(sysadminctl)" - printf '%s' "$CI_PW" > "$PW_FILE" - chmod 600 "$PW_FILE" - log "账户 ${CI_USER} 已创建(密码仅存 ${PW_FILE},root 600,不对外告知)" -fi -# 家目录兜底:sysadminctl 只登记不创建(首次运行输出 "not created!" 在案)——家目录缺失时 -# 自动登录与任何以该用户执行的操作都会失败(Pillow --user 失败即此根因)。 -if [ ! -d "${CI_HOME}" ]; then - mkdir -p "${CI_HOME}" - chown -R "${CI_USER}:staff" "${CI_HOME}" - createhomedir -c -u "$CI_USER" >/dev/null 2>&1 || true - log "家目录 ${CI_HOME} 已补建" -fi - -# ── 2. 自动登录(ci-runner 拥有控制台图形会话——渲染闸的窗口来源)── -_KCP="/etc/kcpassword" -_need_kcp=1 -[ -f "$_KCP" ] && _need_kcp=0 -if defaults read /Library/Preferences/com.apple.loginwindow autoLoginUser 2>/dev/null | grep -q "$CI_USER"; then - log "自动登录已指向 ${CI_USER},跳过" - _need_kcp=0 -fi -if [ "$_need_kcp" = 1 ]; then - python3 - "$CI_PW" <<'PYEOF' -import sys -pwd = sys.argv[1].encode() -key = bytes([0x7D, 0x89, 0x52, 0x23, 0xD2, 0xBC, 0xDD, 0xEA, 0xA3, 0xB9, 0x1F]) -enc = bytes(b ^ key[i % len(key)] for i, b in enumerate(pwd)) -enc += b"\x00" * ((12 - len(enc) % 12) % 12 + 1) -open("/etc/kcpassword", "wb").write(enc) -PYEOF - chmod 600 /etc/kcpassword - defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser "$CI_USER" - log "自动登录已配置:开机直接进入 ${CI_USER} 图形会话(日常使用=快速用户切换到本人账户)" -fi - -# ── 3. Godot macOS 版 → 完整 .app 装 /usr/local/lib + /usr/local/bin/godot 包装转发 ── -# 纪律:官方签名封 bundle 的 Info.plist——从 .app 抽裸二进制会被 taskgated 判 -# 「Code Signature Invalid」SIGKILL(2026-11-03 实证),必须整 bundle 安装保持签名校验路径。 -if /usr/local/bin/godot --version >/dev/null 2>&1 && /usr/local/bin/godot --version 2>/dev/null | grep -q "$GODOT_VER"; then - log "Godot ${GODOT_VER} 已在位,跳过" -else - ZIP="" - SRC_ZIP="/Users/${INVOKER}/godot-linux/Godot_v${GODOT_VER}-stable_macos.universal.zip" - if [ -n "$GODOT_ZIP" ] && [ -s "$GODOT_ZIP" ]; then - ZIP="$GODOT_ZIP"; log "使用本地 zip: $ZIP" - elif [ -z "$GODOT_ZIP" ] && [ -s "$SRC_ZIP" ]; then - ZIP="$SRC_ZIP"; log "复用已下载 zip: $ZIP" - else - ZIP="$(mktemp "${TMPDIR:-/tmp}/godot_mac_XXXXXX")" # macOS BSD mktemp 禁 X 后带后缀 - _ok=0 - for m in "${MIRRORS[@]}"; do - log "下载 Godot(${m:+经 $m})" - # 镜像站可能回 200 的错误页体——下载后必须验 zip 结构,假成功当失败处理 - if curl -fL --retry 2 -m 1800 -o "$ZIP" "${m}${GODOT_URL}" && unzip -tq "$ZIP" >/dev/null 2>&1; then - _ok=1; break - fi - log "该源失败,换下一源" - done - [ "$_ok" = 1 ] || die "全部下载源失败——手动下载 ${GODOT_URL} 后重跑并加 --godot-zip <路径>;或用 tools/ci/chunk_dl.py 分片拉取" - fi - TMPD="$(mktemp -d)" - unzip -tq "$ZIP" >/dev/null # 双保险:本地复用的 zip 同样验结构 - unzip -q -o "$ZIP" -d "$TMPD" - mkdir -p /usr/local/lib - rm -rf "/usr/local/lib/Godot_ci.app" - cp -R "${TMPD}/Godot.app" "/usr/local/lib/Godot_ci.app" - xattr -dr com.apple.quarantine "/usr/local/lib/Godot_ci.app" 2>/dev/null || true - cat > /usr/local/bin/godot <<'EOF' -#!/bin/bash -exec /usr/local/lib/Godot_ci.app/Contents/MacOS/Godot "$@" -EOF - chmod 0755 /usr/local/bin/godot - rm -rf "$TMPD" - log "Godot 已装:$(/usr/local/bin/godot --version 2>/dev/null | head -1)" -fi - -# ── 4. gdstyle v0.4.0 darwin → /usr/local/bin/gdstyle(S13 静态扫描闸件,版本钉死)── -if /usr/local/bin/gdstyle --version >/dev/null 2>&1; then - log "gdstyle 已在位,跳过" -else - TGZ="$(mktemp "${TMPDIR:-/tmp}/gdstyle_XXXXXX")" # macOS BSD mktemp 禁 X 后带后缀 - SRC_TGZ="/Users/${INVOKER}/godot-linux/gdstyle-x86_64-apple-darwin.tar.gz" - if [ -s "$SRC_TGZ" ] && tar -tzf "$SRC_TGZ" >/dev/null 2>&1; then - TGZ="$SRC_TGZ"; log "复用已下载 gdstyle 包: $TGZ" - else - _ok=0 - for m in "${MIRRORS[@]}"; do - log "下载 gdstyle v${GDSTYLE_VER} darwin(${m:+经 $m})" - if curl -fL --retry 2 -m 600 -o "$TGZ" "${m}${GDSTYLE_URL}" && tar -tzf "$TGZ" >/dev/null 2>&1; then _ok=1; break; fi - done - [ "$_ok" = 1 ] || die "gdstyle 下载失败——手动下载 ${GDSTYLE_URL} 解压放 /usr/local/bin/gdstyle 后重跑" - fi - TMPD="$(mktemp -d)" - tar -xzf "$TGZ" -C "$TMPD" - BIN="$(find "$TMPD" -type f -name 'gdstyle*' | head -1)" - [ -n "$BIN" ] || die "压缩包内未找到 gdstyle 二进制" - install -m 0755 "$BIN" /usr/local/bin/gdstyle - xattr -dr com.apple.quarantine /usr/local/bin/gdstyle 2>/dev/null || true - rm -rf "$TMPD" - log "gdstyle 已装:/usr/local/bin/gdstyle" -fi - -# ── 5. Pillow(渲染闸依赖)——系统级安装(/Library/Python,全账户可导入), -# 不用 --user:ci-runner 家目录时序敏感,系统级绕开全部家目录问题 ── -if python3 -c "import PIL" >/dev/null 2>&1; then - log "Pillow 已在位(系统级),跳过" -else - log "系统级安装 Pillow(阿里源)" - python3 -m pip install pillow \ - -i https://mirrors.aliyun.com/pypi/simple/ --quiet \ - || die "Pillow 系统级安装失败" -fi - -# ── 6. runner 程序与注册文件就位(复制既有注册身份,免重新注册)── -mkdir -p "${CI_HOME}/gitea-runner" "${CI_HOME}/Library/LaunchAgents" -cp -f "${RUNNER_SRC}/act_runner" "${CI_HOME}/gitea-runner/act_runner" -cp -f "${RUNNER_SRC}/.runner" "${CI_HOME}/gitea-runner/.runner" -cp -f "${RUNNER_SRC}/config.yaml" "${CI_HOME}/gitea-runner/config.yaml" 2>/dev/null || true -python3 - "${CI_HOME}/gitea-runner/.runner" <<'PYEOF' -import json, sys -p = sys.argv[1] -d = json.load(open(p)) -d["labels"] = ["ci-mac:host"] -json.dump(d, open(p, "w")) -print("labels ->", d["labels"]) -PYEOF -sed -i '' 's/^ level: debug/ level: info/' "${CI_HOME}/gitea-runner/config.yaml" 2>/dev/null || true -chown -R "${CI_USER}:staff" "${CI_HOME}/gitea-runner" "${CI_HOME}/Library/LaunchAgents" - -# ── 7. LaunchAgent(用户级常驻,挂在 ci-runner 图形会话内——渲染闸窗口的来源)── -PLIST="${CI_HOME}/Library/LaunchAgents/com.gitea.act-runner.plist" -cat > "$PLIST" < - - - - Labelcom.gitea.act-runner - ProgramArguments - - ${CI_HOME}/gitea-runner/act_runner - daemon - - WorkingDirectory${CI_HOME}/gitea-runner - RunAtLoad - KeepAlive - StandardOutPath${CI_HOME}/gitea-runner/daemon.log - StandardErrorPath${CI_HOME}/gitea-runner/daemon.log - - -EOF -chown "${CI_USER}:staff" "$PLIST" -_uid="$(id -u "$CI_USER")" -if launchctl asuser "$_uid" launchctl bootstrap "gui/$_uid" "$PLIST" 2>/dev/null; then - log "LaunchAgent 已在 ${CI_USER} 会话内启动" - _started=1 -else - _started=0 - log "当前无 ${CI_USER} 图形会话——LaunchAgent 已就位,重启后随自动登录自动拉起" -fi - -# ── 8. 退役 Docker 版 runner(如存在)── -if command -v docker >/dev/null 2>&1; then - docker rm -f gitea-runner >/dev/null 2>&1 && log "Docker 版 runner 容器已退役" || log "无 Docker 版 runner 容器(或 docker 未运行)" -fi - -# ── 9. 验证与收尾提示 ── -if [ "$_started" = 1 ]; then - sleep 5 - grep -q "declare successfully" "${CI_HOME}/gitea-runner/daemon.log" 2>/dev/null \ - && log "runner 已向 Gitea 声明成功" || log "runner 已启动,声明确认见 ${CI_HOME}/gitea-runner/daemon.log" -else - log "⚠ 重启 Mac 后自动登录生效、runner 随会话拉起——重启后验证第①条" -fi -log "全部完成。验证清单:" -log " ① Gitea 网页 → 仓库设置 → Actions → Runners 应显示 mac-ci 在线(Idle,标签 ci-mac)" -log " ② sudo -u ${CI_USER} /usr/local/bin/godot --headless --version" -log " ③ sudo -u ${CI_USER} python3 -c 'import PIL'" -log " ④ 日常使用:登录窗/快速用户切换到本人账户(ci-runner 会话在后台保持)" -log " ⑤ 端到端:下一次合回 master 的推送自动触发跑批" diff --git a/tools/ci_runner.sh b/tools/ci_runner.sh new file mode 100644 index 00000000..855e2d59 --- /dev/null +++ b/tools/ci_runner.sh @@ -0,0 +1,97 @@ +#!/usr/bin/env bash +# 本地 CI 跑批件——合回 master 后的全量验证执行器(git 钩子触发、后台运行,2026-10-30 用户裁)。 +# 触发语义(钩子只负责拉起,判定在本件): +# merge 模式=合回验证点:主工作区 git merge 落地后(tools/hooks/post-merge)对 master 尖无条件 +# 跑一次全量域闸;任务 worktree 内的合并不触发(钩子里限主工作区)。 +# commit 模式=红态追绿:仅当最近一次 CI 判红时(tools/hooks/post-commit)本提交触发复验; +# 绿态与无状态零触发——小批直提不重复跑全量,有意义的重跑只剩「验证修复」一类。 +# 并跑语义=跑完补跑(coalesce,2026-10-30 用户裁):跑批期间新触发不中断当前轮——锁被占时, +# 在跑实例的尖端就是当前尖端则本触发无事可做,否则落 ci.rerun 标记;当前轮跑完见标记或尖端 +# 前移,对最新尖端自动补跑一轮。绝不逐笔触发各跑一轮,最终只测最新尖端。 +# 产物(均不入库,本目录 .gitignore 已收):ci-status.json=最新一跑判定(commit/verdict/红闸/ +# 关键日志行/耗时),ci-history.jsonl=逐次流水账,ci.log=当轮全量闸完整输出, +# ci.lock=锁目录(内含在跑尖端),ci.rerun=补跑标记。 +# 用法: tools/ci_runner.sh merge|commit +set -u +REPO="$(cd "$(dirname "$0")/.." && pwd)" +GATES_DIR="$REPO/game/tests/.gates" +LOCK="$GATES_DIR/ci.lock" +RERUN="$GATES_DIR/ci.rerun" +STATUS="$GATES_DIR/ci-status.json" +HISTORY="$GATES_DIR/ci-history.jsonl" +LOG="$GATES_DIR/ci.log" +GODOT="${GODOT_BIN:-/d/code/godot/Godot_v4.7.2-stable_win64_console.exe}" +export PYTHONIOENCODING=utf-8 + +MODE="${1:-commit}" + +# ── 触发判定 ── +if [ "$MODE" = "commit" ]; then + [ -f "$STATUS" ] || exit 0 + grep -q '"verdict": "red"' "$STATUS" || exit 0 +fi + +# ── 锁(mkdir 原子);被占时按在跑尖端判定:同尖=已在验这份字节,异尖=落补跑标记 ── +TIP="$(git -C "$REPO" rev-parse HEAD)" +if ! mkdir "$LOCK" 2>/dev/null; then + if [ "$(cat "$LOCK/tip" 2>/dev/null)" = "$TIP" ]; then + exit 0 + fi + touch "$RERUN" + exit 0 +fi +trap 'rm -rf "$LOCK"' EXIT + +# ── 跑批主循环(跑完补跑)── +while :; do + rm -f "$RERUN" + TIP="$(git -C "$REPO" rev-parse HEAD)" + echo "$TIP" > "$LOCK/tip" + _start="$(date +%s)" + + # 起手刷类名缓存:.godot 缓存不入 git,与合并后代码失配会假红假绿(在册坑)—— + # 原「合并后零复跑」的秒级动作由本件接管,全量闸跑的就是刷新后的字节 + "$GODOT" --headless --path "$REPO/game" --editor --quit >>"$LOG" 2>&1 + + bash "$REPO/tools/run_all_gates.sh" >"$LOG" 2>&1 + RC=$? + _end="$(date +%s)" + + # 判定与记录:读闸脚本写的回执(all_green/各闸退出码),红项关键行取自本轮 ci.log + python - "$REPO" "$TIP" "$RC" "$((_end - _start))" <<'PY' +import json, re, sys, datetime +repo, tip, rc, dur = sys.argv[1], sys.argv[2], int(sys.argv[3]), int(sys.argv[4]) +gates_dir = repo + "/game/tests/.gates" +entry = {"commit": tip, + "timestamp": datetime.datetime.now().astimezone().isoformat(timespec="seconds"), + "exit_code": rc, "verdict": "green" if rc == 0 else "red", + "duration_s": dur, "red_gates": [], "key_lines": []} +try: + with open(gates_dir + "/receipt.json", encoding="utf-8") as f: + r = json.load(f) + # 回执只有确属本跑(commit 对齐)才采信——闸在起手自检即中止时不写新回执, + # 盘上旧回执是上一跑的读数,当作本次红项会撒谎(2026-10-31 实跑缺陷修正) + if r.get("commit") == tip: + entry["red_gates"] = [g["name"] for g in r.get("gates", []) if str(g.get("exit")) != "0"] + else: + entry["note"] = "闸未跑完(起手自检或早期中止,回执为上一跑旧件)——红项读数不可用,看 key_lines 与 ci.log" +except Exception: + pass +try: + with open(gates_dir + "/ci.log", encoding="utf-8", errors="replace") as f: + lines = [l.rstrip() for l in f] + entry["key_lines"] = [l for l in lines if re.search(r"FAIL|红项|Error|error", l)][-12:] +except Exception: + pass +with open(gates_dir + "/ci-status.json", "w", encoding="utf-8") as f: + json.dump(entry, f, ensure_ascii=False, indent=1) +with open(gates_dir + "/ci-history.jsonl", "a", encoding="utf-8") as f: + f.write(json.dumps(entry, ensure_ascii=False) + "\n") +PY + + # 轮尾补跑判定:跑批期间有新触发(标记在)或尖端前移 → 对最新尖端再来一轮 + _newtip="$(git -C "$REPO" rev-parse HEAD)" + if [ ! -f "$RERUN" ] && [ "$_newtip" = "$TIP" ]; then + exit 0 + fi +done diff --git a/tools/ci_watch.sh b/tools/ci_watch.sh index 13b2b5e9..79fe2701 100755 --- a/tools/ci_watch.sh +++ b/tools/ci_watch.sh @@ -1,126 +1,57 @@ #!/usr/bin/env bash -# 回执等待件——合回后等远端 CI 回执的后台轮询器(2026-11-03 用户裁:CI 迁远端,本件改轮询 Gitea API)。 -# 用法: tools/ci_watch.sh remote <推送提交hash> [超时秒,默认 3000] -# 调用面: post-merge 钩子推送 master 成功后自动后台挂起;人手等待亦可(agent 会话以 run_in_background 运行, -# 命令结束时 harness 唤醒——绿→删区收口;红→呈报红闸名单走修复批;超时→呈报「回执未落」)。 -# 「本次回执已落」判据:Gitea commit status 的 state 离开 pending(success/failure/error), -# 且 status 的 target_url 指向本仓库 Actions(防认错仓)。远端跑批 20-35 分钟量级,默认超时给足 50 分钟。 -# 产物:沿用本地 CI 时代的回执合同——game/tests/.gates/ci-status.json(commit/verdict/timestamp/ -# duration_s/red_gates/key_lines/note)覆写 + ci-history.jsonl 追加;红态 red_gates=失败的 job 名单 -# (来自 runs//jobs API),job 日志链接在 key_lines,细粒度红闸清单以 job 日志为准。 -# 授权:GITEA_TOKEN 环境变量优先,否则读 git 凭据库(host=git.kuaimeo.com)。 +# 回执等待件——合回后等 CI 回执的后台轮询器(2026-11-02 用户裁;规则面=process-conventions §1 第 3 条「回执等待纪律」)。 +# 用法: tools/ci_watch.sh <合并提交hash> [超时秒,默认 900] +# 调用面: 合回落地先向用户呈报本批总结,随即以 run_in_background 后台任务运行本件;命令结束时 +# harness 唤醒会话——绿→删区收口;红→呈报红闸名单走修复批;超时→呈报「回执未落」(CI 可能崩溃)。 +# 「本次回执已落」认领判据(三条全满足,防认错轮): +# ① 回执可整读——CI 写回执非原子,半截/读空静默重试; +# ② 回执 commit 为传入提交或其后代——另一会话合回推进尖端触发补跑覆盖时按后代认领(coalesce 语义见 ci_runner.sh); +# ③ 回执 timestamp 晚于合并提交时刻——排除合并前盘上的旧回执(旧尖端是合并提交的祖先,只查②会误领旧回执)。 # 退出码: 0=绿 1=红 2=超时/回执未落 3=参数错误 set -u +# 主工作区定位:CI 只在主工作区跑(post-merge 钩子限主区),从任务 worktree 内调用也要读主区回执—— +# 经 git 公共目录(.git)的上级定位主仓根,主区调用与 worktree 调用同一读数 COMMON="$(git -C "$(dirname "$0")" rev-parse --path-format=absolute --git-common-dir 2>/dev/null)" \ || { echo "不在 git 仓库内"; exit 3; } REPO="$(dirname "$COMMON")" -GATES_DIR="$REPO/game/tests/.gates" -STATUS="$GATES_DIR/ci-status.json" -HISTORY="$GATES_DIR/ci-history.jsonl" - -MODE="${1:-}" -BASE="${2:-}" -TIMEOUT="${3:-3000}" +STATUS="$REPO/game/tests/.gates/ci-status.json" +BASE="${1:-}" +TIMEOUT="${2:-900}" INTERVAL=30 -case "$MODE" in - remote) ;; - *) - echo "用法: ci_watch.sh remote <推送提交hash> [超时秒](本地 CI 模式已退役——回执现由远端产生)" - exit 3 ;; -esac -[ -n "$BASE" ] || { echo "用法: ci_watch.sh remote <推送提交hash> [超时秒]"; exit 3; } +[ -n "$BASE" ] || { echo "用法: ci_watch.sh <合并提交hash> [超时秒]"; exit 3; } BASE="$(git -C "$REPO" rev-parse --verify "${BASE}^{commit}")" || { echo "提交不存在: $BASE"; exit 3; } - -# 仓库全名(owner/repo)从 origin URL 解析(HTTPS 与 SSH 形式都兼容) -_origin="$(git -C "$REPO" remote get-url origin 2>/dev/null || true)" -REPO_SLUG="$(printf '%s' "$_origin" | grep -oE '[^/:]+/[^/]+\.git$' | sed 's/\.git$//')" -[ -n "$REPO_SLUG" ] || { echo "无法从 origin 解析 owner/repo: $_origin"; exit 3; } - -# 令牌:环境变量优先,回落 git 凭据库 -TOKEN="${GITEA_TOKEN:-}" -if [ -z "$TOKEN" ]; then - TOKEN="$(printf 'protocol=https\nhost=git.kuaimeo.com\n\n' | git credential fill 2>/dev/null | sed -n 's/^password=//p' | head -1)" -fi -[ -n "$TOKEN" ] || { echo "取不到 Gitea 令牌(设 GITEA_TOKEN 或先 git credential approve 存储)"; exit 3; } -API="https://git.kuaimeo.com/api/v1/repos/$REPO_SLUG" - -export PYTHONIOENCODING=utf-8 -python -I - "$API" "$BASE" "$TOKEN" "$TIMEOUT" "$INTERVAL" "$STATUS" "$HISTORY" <<'PYEOF' -import json, os, re, subprocess, sys, time, urllib.request, urllib.error, datetime - -api, base, token, timeout, interval, status_path, history_path = sys.argv[1:8] -timeout, interval = int(timeout), int(interval) -deadline = time.time() + timeout -start = time.time() -H = {"Authorization": "token " + token} - - -def get(url, t=20): - req = urllib.request.Request(url, headers=H) - return json.load(urllib.request.urlopen(req, timeout=t)) - - -def combined_status(sha): - return get(api + "/commits/%s/status" % sha) - - -def write_receipt(verdict, note, red_gates, key_lines): - now = datetime.datetime.now().astimezone().isoformat(timespec="seconds") - dur = int(time.time() - start) - d = {"commit": base, "verdict": verdict, "timestamp": now, - "duration_s": dur, "note": note, "red_gates": red_gates, "key_lines": key_lines} - os.makedirs(os.path.dirname(status_path), exist_ok=True) - tmp = status_path + ".tmp" - with open(tmp, "w", encoding="utf-8") as f: - json.dump(d, f, ensure_ascii=False, indent=1) - os.replace(tmp, status_path) - with open(history_path, "a", encoding="utf-8") as f: - f.write(json.dumps(d, ensure_ascii=False) + "\n") - return d - - -def emit(d): - print("CI回执:", d.get("verdict"), "| commit", d.get("commit", "")[:8], "| 耗时", d.get("duration_s"), "s") - if d.get("note"): - print("note:", d["note"]) - for g in d.get("red_gates", []): - print("红闸:", g) - for l in d.get("key_lines", []): - print("key:", l) - - -last_err = "" -while True: - try: - s = combined_status(base) - state = s.get("state", "") - statuses = s.get("statuses", []) - target = next((x.get("target_url", "") for x in statuses if x.get("target_url")), "") - if state in ("success", "failure", "error", "warning"): - red = state != "success" - red_gates, run_id = [], None - m = re.search(r"/actions/runs/(\d+)", target) - if m and red: - run_id = m.group(1) - try: - jobs = get(api + "/actions/runs/%s/jobs" % run_id) - red_gates = sorted({j["name"] for j in jobs.get("jobs", []) if j.get("status") not in ("success", "skipped")}) - except Exception as e: - red_gates = ["" % e] - note = "远端CI state=%s%s" % (state, ("(run %s)" % run_id) if run_id else "") - key_lines = ["job日志: %s" % target] if target else [] - d = write_receipt("green" if not red else "red", note, red_gates, key_lines) - emit(d) - sys.exit(0 if not red else 1) - # pending:继续等 - except urllib.error.HTTPError as e: - last_err = "HTTP %s" % e.code - except Exception as e: - last_err = str(e) - if time.time() > deadline: - note = "超时(%ds)远端回执未落——最后错误 %s;查 runner 在线态与 %s/actions" % (timeout, last_err or "无", api.rsplit("/repos/", 1)[0]) - d = write_receipt("red", note, ["<回执未落>"], []) - emit(d) - sys.exit(2) - time.sleep(interval) -PYEOF +BASE_CT="$(git -C "$REPO" log -1 --format=%ct "$BASE")" +_deadline=$(( $(date +%s) + TIMEOUT )) +while :; do + _read="$(python -I -c " +import json, sys, datetime +try: + d = json.load(open(sys.argv[1], encoding='utf-8')) + ts = int(datetime.datetime.fromisoformat(d['timestamp']).timestamp()) + print(d.get('commit', ''), d.get('verdict', ''), ts) +except Exception: + pass +" "$STATUS")" + _com=""; _verdict=""; _ts="" + if [ -n "$_read" ]; then + set -- $_read + [ $# -eq 3 ] && { _com="$1"; _verdict="$2"; _ts="$3"; } + fi + if [ -n "$_com" ] && [ -n "$_verdict" ] && [ -n "$_ts" ] \ + && [ "$_ts" -gt "$BASE_CT" ] \ + && git -C "$REPO" merge-base --is-ancestor "$BASE" "$_com" 2>/dev/null; then + python -I -c " +import json, sys +d = json.load(open(sys.argv[1], encoding='utf-8')) +print('CI回执:', d.get('verdict'), '| commit', d.get('commit', '')[:8], '| 耗时', d.get('duration_s'), 's') +if d.get('note'): print('note:', d['note']) +for g in d.get('red_gates', []): print('红闸:', g) +for l in d.get('key_lines', []): print('key:', l) +" "$STATUS" + [ "$_verdict" = "green" ] && exit 0 + exit 1 + fi + _now=$(date +%s); _left=$((_deadline - _now)) + [ "$_left" -le 0 ] && { echo "超时(${TIMEOUT}s)回执未落——CI 可能崩溃或未触发,查 game/tests/.gates/ 的 ci.lock 与 ci.log"; exit 2; } + sleep $(( _left < INTERVAL ? _left : INTERVAL )) +done diff --git a/tools/gate_platform.sh b/tools/gate_platform.sh deleted file mode 100644 index 8847cae3..00000000 --- a/tools/gate_platform.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env bash -# 闸件跨平台件——平台探测/路径形式/带超时执行/Godot 孤儿清杀,Git Bash 与 macOS/Linux 双栖。 -# 单点定义:run_all_gates.sh / probe_gate.sh / render_gate.sh / golden_baseline_refresh.sh 共用(source 引入)。 -# 纪律:闸脚本禁裸调 coreutils timeout 与 Windows 专用件(taskkill/PowerShell/ps -W/tasklist/cygpath)—— -# 一律走本件封装;macOS 为 BSD 工具链(无 coreutils timeout,sed/stat 语义不同),裸调必断 -# (2026-11-03 远端 CI 迁移裁决:runner=Mac 本机 host 模式,禁再增 Windows 专用直调)。 -# 平台判定以 uname 为准(Git Bash=MINGW*,macOS=Darwin,Linux=Linux)。 - -gate_is_win() { - case "$(uname -s 2>/dev/null)" in - MINGW*|MSYS*|CYGWIN*|Windows_NT) return 0 ;; - *) return 1 ;; - esac -} - -# Godot --path 接受的项目路径形式:Windows 需 cygpath -m 混合斜杠,其他平台原样。 -gate_game_path() { - if gate_is_win; then cygpath -m "$1"; else printf '%s' "$1"; fi -} - -# 杀整棵进程树()——递归杀子进程后杀本进程。macOS/Linux 走 pgrep -P; -# Windows 侧 MSYS kill 对其可见进程有效,带 wrapper 树的场景仍由调用方原 taskkill /T 逻辑负责。 -gate_kill_tree() { - local p c - kill -9 "$1" 2>/dev/null - for c in $(pgrep -P "$1" 2>/dev/null); do gate_kill_tree "$c"; done -} - -# 带超时执行(coreutils timeout 的纯 bash 替代,双平台同语义): -# gate_run_timeout <秒> <日志路径> <命令...> -# 命令输出重定向到日志;退出码=命令退出码,超时=124(与 coreutils 语义一致,判据与既有闸一致)。 -# 实现=后台启动+守卫落标志文件(probe_gate run_suite 同款手法:taskkill 强杀后 wait 报 0 的 -# 假绿以标志文件纠偏);超时先杀整树再回 124。 -gate_run_timeout() { - local t="$1" log="$2"; shift 2 - local kf - kf="$(mktemp "${TMPDIR:-/tmp}/gatetime_XXXXXX")" - "$@" >"$log" 2>&1 & - local pid=$! - ( sleep "$t" 2>/dev/null - touch "$kf" - gate_kill_tree "$pid" - true ) & - local guard=$! - wait "$pid"; local st=$? - kill "$guard" 2>/dev/null; wait "$guard" 2>/dev/null - if [ -f "$kf" ]; then - gate_kill_tree "$pid" - st=124 - fi - rm -f "$kf" - return "$st" -} - -# 列命令行含 的 Godot 进程 PID(孤儿清杀与批末残留清点共用)。 -# Windows:PowerShell WMI 按进程名+命令行匹配(console wrapper+真引擎都算); -# macOS/Linux:ps 全表按「可执行含 godot+命令行含本 game 路径」过滤(ps 两平台同形)。 -gate_orphans() { - local gp="$1" - if gate_is_win; then - local tmpd tmpf - tmpd="$(mktemp -d "${TMPDIR:-/tmp}/gateorph_XXXXXX")" # macOS BSD mktemp 禁 X 后带后缀(本分支 Windows 专用,模板统一防复用) - tmpf="$tmpd/k.ps1" - local gp_win - gp_win="$(cygpath -m "$gp")" - printf "Get-CimInstance Win32_Process -Filter \"Name like 'Godot%%'\" | Where-Object { \$_.CommandLine -like '*%s*' } | ForEach-Object { \$_.ProcessId }\n" "$gp_win" > "$tmpf" - powershell -NoProfile -ExecutionPolicy Bypass -File "$(cygpath -w "$tmpf")" 2>/dev/null | tr -d '\r' - rm -rf "$tmpd" - else - ps -axo pid=,command= 2>/dev/null | awk -v g="$gp" 'tolower($0) ~ /godot/ && index($0, g) {print $1}' - fi -} - -gate_kill_orphans() { # gate_kill_orphans - local p - for p in $(gate_orphans "$1"); do - if gate_is_win; then taskkill //F //PID "$p" >/dev/null 2>&1 - else kill -9 "$p" 2>/dev/null; fi - done -} - -# 全局 Godot 进程计数(其他会话的仅报数不算账——批末残留清点的对照面)。 -gate_godot_count_all() { - if gate_is_win; then tasklist 2>/dev/null | grep -ci '^Godot' || true - else ps -axo comm= 2>/dev/null | grep -ci 'godot' || true - fi -} - -# golden 基线平台子目录名——渲染基线按平台各存一份(Windows 显卡字形/抗锯齿与 macOS CoreText -# 差异使跨平台逐像素比对必失配,2026-11-03 用户裁:按平台各存基线,平台内部照常严格比对)。 -gate_platform_id() { - case "$(uname -s 2>/dev/null)" in - MINGW*|MSYS*|CYGWIN*|Windows_NT) echo "windows" ;; - Darwin) echo "mac" ;; - *) echo "linux" ;; - esac -} diff --git a/tools/gdstyle_gate.py b/tools/gdstyle_gate.py index 49c375a5..b93d54cb 100644 --- a/tools/gdstyle_gate.py +++ b/tools/gdstyle_gate.py @@ -48,10 +48,7 @@ CONFIG = ROOT / "tools" / "gdstyle.toml" BASELINE = ROOT / "tools" / "gdstyle_baseline.txt" SCAN_DIRS = ["game/core", "game/data", "game/presentation"] PINNED_VERSION = "0.4.0" -# 二进制定位:GDSTYLE_BIN 环境变量优先;Windows 本机固定路径保底,macOS/Linux 走 /usr/local/bin -# (mac_setup.sh 自举件装钉定版 v0.4.0 darwin 包至此,远端 CI 与本机同判据)。 -DEFAULT_BIN = ("D:/code/gdstyle/gdstyle.exe" if sys.platform == "win32" - else "/usr/local/bin/gdstyle") +DEFAULT_BIN = "D:/code/gdstyle/gdstyle.exe" MAX_REPORT = 50 MAX_VANISHED_REPORT = 20 SHRINK_GUARD = 0.9 # 新键数 < 旧键数 * 本系数=骤降,refresh 拒写须 --force diff --git a/tools/golden_baseline_refresh.sh b/tools/golden_baseline_refresh.sh old mode 100755 new mode 100644 index e74858bf..93ad7d7f --- a/tools/golden_baseline_refresh.sh +++ b/tools/golden_baseline_refresh.sh @@ -15,7 +15,6 @@ set -u G="${GODOT_BIN:-/d/code/godot/Godot_v4.7.2-stable_win64_console.exe}" REPO="$(cd "$(dirname "$0")/.." && pwd)" -. "$REPO/tools/gate_platform.sh" # 跨平台件(平台探测/路径形式/带超时执行) GAME="" MODE="board" for a in "$@"; do @@ -25,8 +24,7 @@ for a in "$@"; do esac done GAME="${GAME:-$REPO/game}" -GAME_WIN="$(gate_game_path "$GAME")" # Godot --path 接受形式(Windows 混合斜杠,其他平台原样) -PLAT="$(gate_platform_id)" # 基线落点=本平台子目录(game/tests/golden//) +GAME_WIN="$(cygpath -m "$GAME")" TMP="$(mktemp -d /tmp/goldenrefresh_XXXXXX)" trap 'rm -rf "$TMP"' EXIT @@ -34,20 +32,20 @@ if [ "$MODE" = "menu" ]; then for a in assets/fonts/ui_font_fusion_pixel_zh_hans.ttf \ assets/art/ui/button_stone.png; do if [ ! -f "$GAME/$a" ]; then - echo "[golden_refresh] 拒跑 — 菜单素材缺位: ${a}(S3 停机点口径:基线禁锚回退态,先补素材+导入边车)" + echo "[golden_refresh] 拒跑 — 菜单素材缺位: $a(S3 停机点口径:基线禁锚回退态,先补素材+导入边车)" exit 1 fi done - gate_run_timeout 240 "$TMP/run.log" "$G" --path "$GAME_WIN" --quit-after 3000 res://probe/shot_probe.tscn -- "$TMP/shots" + timeout 240 "$G" --path "$GAME_WIN" res://probe/shot_probe.tscn -- "$TMP/shots" >"$TMP/run.log" 2>&1 st=$? grep -E "\[shot_probe\]" "$TMP/run.log" | tail -3 if [ "$st" -ne 0 ] || [ ! -s "$TMP/shots/shot_menu.png" ]; then - echo "[golden_refresh] FAIL — shot_probe 退出码=${st}(菜单截图缺失/探针自检红,见上)" + echo "[golden_refresh] FAIL — shot_probe 退出码=$st(菜单截图缺失/探针自检红,见上)" exit 1 fi - mkdir -p "$REPO/game/tests/golden/$PLAT" - cp "$TMP/shots/shot_menu.png" "$REPO/game/tests/golden/$PLAT/menu_boot.png" || exit 1 - echo "[golden_refresh] 完成 — 菜单全屏基线已代入 game/tests/golden/$PLAT/menu_boot.png(提交说明须写明触发原因)" + mkdir -p "$REPO/game/tests/golden" + cp "$TMP/shots/shot_menu.png" "$REPO/game/tests/golden/menu_boot.png" || exit 1 + echo "[golden_refresh] 完成 — 菜单全屏基线已代入 game/tests/golden/menu_boot.png(提交说明须写明触发原因)" exit 0 fi @@ -58,21 +56,21 @@ for a in assets/fonts/ui_font_fusion_pixel_zh_hans.ttf \ assets/art/board/terrain_wall_n_underdark.png assets/art/board/terrain_floor_underdark_1.png \ assets/art/board/terrain_wall_n_deep_underdark.png assets/art/board/terrain_floor_deep_underdark_1.png; do if [ ! -f "$GAME/$a" ]; then - echo "[golden_refresh] 拒跑 — 素材缺位: ${a}(S3 停机点口径:基线禁锚字形回退态,先补素材+导入边车)" + echo "[golden_refresh] 拒跑 — 素材缺位: $a(S3 停机点口径:基线禁锚字形回退态,先补素材+导入边车)" exit 1 fi done -gate_run_timeout 180 "$TMP/run.log" "$G" --path "$GAME_WIN" --quit-after 3000 res://probe/board_shot_probe.tscn -- "$TMP/shots" +timeout 180 "$G" --path "$GAME_WIN" res://probe/board_shot_probe.tscn -- "$TMP/shots" >"$TMP/run.log" 2>&1 st=$? grep -E "\[board_shot\]" "$TMP/run.log" | tail -6 if [ "$st" -ne 0 ] || [ ! -s "$TMP/shots/board_meta.json" ]; then - echo "[golden_refresh] FAIL — board_shot_probe 退出码=${st}(meta/截图缺失见上)" + echo "[golden_refresh] FAIL — board_shot_probe 退出码=$st(meta/截图缺失见上)" exit 1 fi python tools/golden_board_crop.py "$TMP/shots/board_meta.json" "$TMP/shots" "$TMP/crop" || exit 1 -mkdir -p "$REPO/game/tests/golden/$PLAT" +mkdir -p "$REPO/game/tests/golden" for b in board_L1_dungeon.png board_L2_underdark.png board_L3_deep_underdark.png; do - cp "$TMP/crop/$b" "$REPO/game/tests/golden/$PLAT/$b" || exit 1 + cp "$TMP/crop/$b" "$REPO/game/tests/golden/$b" || exit 1 done -echo "[golden_refresh] 完成 — 三张基线已换代入 game/tests/golden/$PLAT/(提交说明须写明触发原因)" +echo "[golden_refresh] 完成 — 三张基线已换代入 game/tests/golden/(提交说明须写明触发原因)" diff --git a/tools/golden_compare.py b/tools/golden_compare.py index c87decc8..c98701df 100644 --- a/tools/golden_compare.py +++ b/tools/golden_compare.py @@ -19,14 +19,6 @@ from PIL import Image, ImageChops TOLERANCE = 16 # 灰度差容差(单通道) FAIL_RATIO = 0.02 # changed 占比失败线 -# 基线平台子目录:<黄金图根目录>/——渲染基线按平台各存(gate_platform_id 同口径), -# 平台内部照常逐像素严格比对;跨平台不互比(字形/抗锯齿机制差异,2026-11-03 用户裁)。 -_PLAT = {"win32": "windows", "darwin": "mac"}.get(sys.platform, "linux") - - -def plat_missing(base: Path) -> bool: - return not (base / _PLAT).is_dir() - def compare(base: Path, curr: Path, name: str, failures: list) -> None: pb, pc = base / name, curr / name @@ -56,11 +48,6 @@ def main() -> int: print("用法: python tools/golden_compare.py <黄金图目录> <新截图目录> [屏清单...]") return 1 base, curr = Path(sys.argv[1]), Path(sys.argv[2]) - base = base / _PLAT - if not base.is_dir(): - print("[golden] FAIL — 本平台(%s)基线目录未建:%s" % (_PLAT, base)) - print(" 处置:在该平台跑 tools/golden_baseline_refresh.sh 重制基线并提交(基线换代权限 Q6)") - return 1 shots = sys.argv[3:] or ["shot_menu.png", "shot_camp.png", "shot_level.png", "shot_battle.png"] failures = [] for name in shots: diff --git a/tools/hooks/post-commit b/tools/hooks/post-commit new file mode 100644 index 00000000..dc986266 --- /dev/null +++ b/tools/hooks/post-commit @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# 红态追绿钩子(本地 CI 触发钩子,2026-10-30 用户裁)——仅当最近一次 CI 判红时,本提交触发 +# 后台复验(tools/ci_runner.sh commit,判定在跑批件内);绿态与无状态零触发—— +# 小批直提不重复跑全量,同一份字节禁止第二次人手跑。主工作区限定。 +set -u +_GD="$(cd "$(git rev-parse --git-dir)" && pwd)" +_CD="$(cd "$(git rev-parse --git-common-dir)" && pwd)" +[ "$_GD" = "$_CD" ] || exit 0 +REPO="$(git rev-parse --show-toplevel)" +( nohup bash "$REPO/tools/ci_runner.sh" commit >/dev/null 2>&1 & ) +exit 0 diff --git a/tools/hooks/post-merge b/tools/hooks/post-merge index f0ca94c6..13298b9c 100644 --- a/tools/hooks/post-merge +++ b/tools/hooks/post-merge @@ -1,27 +1,12 @@ #!/usr/bin/env bash -# 合回验证点(远端 CI 触发钩子,2026-11-03 用户裁)——主工作区 git merge 落地后: -# ① push origin master(触发远端 CI:Gitea 收到 push → 派发 mac-ci runner 按改动域跑闸) -# ② 后台挂 ci_watch.sh remote 等回执(回执落 ci-status.json,agent 下次开工读态零改动) -# 推送失败=远端验证不可能发生——大声呈报并落 push_failed 判定进 ci-status.json(防静默,下游开工读态即见)。 -# 任务 worktree 内的合并不触发(CI 只认 master);CI 红了不回滚合并——修复批合回后本钩子再推再验(追绿同链)。 +# 合回验证点(本地 CI 触发钩子,2026-10-30 用户裁)——主工作区 git merge 落地后无条件触发 +# 全量域闸后台跑批(tools/ci_runner.sh merge,约 4 分钟,不阻塞合并动作本身)。 +# 任务 worktree 内的合并不触发(CI 只认 master;worktree 批要提前验证就手动跑 ci_runner.sh)。 +# CI 红了不回滚合并——红项记入 game/tests/.gates/ci-status.json,修复提交经 post-commit 追绿。 set -u _GD="$(cd "$(git rev-parse --git-dir)" && pwd)" _CD="$(cd "$(git rev-parse --git-common-dir)" && pwd)" [ "$_GD" = "$_CD" ] || exit 0 REPO="$(git rev-parse --show-toplevel)" -TIP="$(git -C "$REPO" rev-parse HEAD)" -export PYTHONIOENCODING=utf-8 -if ! git -C "$REPO" push origin master >/dev/null 2>&1; then - echo "[post-merge] ✗ push origin master 失败——远端 CI 无法触发!先修推送(凭据/网络)后手动 git push,再手动挂 tools/ci_watch.sh remote $TIP" - python -I -c " -import json, os, datetime -p = r'$REPO/game/tests/.gates/ci-status.json' -d = {'commit': r'$TIP', 'verdict': 'push_failed', 'timestamp': datetime.datetime.now().astimezone().isoformat(timespec='seconds'), - 'duration_s': 0, 'note': 'post-merge 推送失败,远端 CI 未触发——修复推送后手动 git push + ci_watch remote', 'red_gates': [], 'key_lines': []} -os.makedirs(os.path.dirname(p), exist_ok=True) -json.dump(d, open(p, 'w', encoding='utf-8'), ensure_ascii=False, indent=1) -" 2>/dev/null - exit 0 -fi -( nohup bash "$REPO/tools/ci_watch.sh" remote "$TIP" >/dev/null 2>&1 & ) +( nohup bash "$REPO/tools/ci_runner.sh" merge >/dev/null 2>&1 & ) exit 0 diff --git a/tools/probe_gate.sh b/tools/probe_gate.sh old mode 100755 new mode 100644 index fb1a29e2..839caa7d --- a/tools/probe_gate.sh +++ b/tools/probe_gate.sh @@ -17,12 +17,10 @@ # 四件带断言探针;默认段断言面零删减零改动(--full 只增不改)。 # 渲染面归 render_gate.sh 正主(窗口化:shot_probe 七屏+fx_shot/board_shot 取证+棋盘 golden 逐像素)。 # 用法: tools/probe_gate.sh [game目录] [--click] [--full] 缺省 game 目录=脚本所在仓库的 game/(worktree 内自动指向该 worktree) -# 依赖: Git Bash(coreutils timeout/taskkill) + PowerShell(Windows 侧);macOS/Linux 走 tools/gate_platform.sh -# 共享跨平台件(Godot 路径两平台都可用 GODOT_BIN 环境变量覆盖)。 +# 依赖: Git Bash(coreutils timeout/taskkill) + PowerShell;Godot 路径可用环境变量 GODOT_BIN 覆盖。 set -u G="${GODOT_BIN:-/d/code/godot/Godot_v4.7.2-stable_win64_console.exe}" REPO="$(cd "$(dirname "$0")/.." && pwd)" -. "$REPO/tools/gate_platform.sh" # 跨平台件(平台探测/路径形式/带超时执行/孤儿清杀) GAME=""; WITH_CLICK=0; WITH_FULL=0 for a in "$@"; do case "$a" in @@ -32,7 +30,7 @@ for a in "$@"; do esac done GAME="${GAME:-$REPO/game}" -GAME_WIN="$(gate_game_path "$GAME")" # Godot --path 接受形式(Windows 混合斜杠,其他平台原样) +GAME_WIN="$(cygpath -m "$GAME")" # Godot --path 需 Windows 形式 TMP="$(mktemp -d /tmp/probegate_XXXXXX)" trap 'rm -rf "$TMP"' EXIT _rc=0 @@ -57,7 +55,7 @@ verdict() { # verdict <探针名> <日志路径> <退出码> [签名标记] echo "[probe_gate] FAIL — $name 超时挂死(exit=$st),孤儿已清"; return 1 fi if [ "$st" -ne 0 ]; then - echo "[probe_gate] FAIL — $name 退出码=${st}(退出码为唯一权威判据,PASS 串不抵)"; return 1 + echo "[probe_gate] FAIL — $name 退出码=$st(退出码为唯一权威判据,PASS 串不抵)"; return 1 fi if [ -n "$PY" ] && ! "$PY" "$REPO/tools/error_scan.py" "$log" >"$TMP/err.txt" 2>&1; then echo "[probe_gate] FAIL — $name 脚本错误扫描命中:" @@ -65,16 +63,17 @@ verdict() { # verdict <探针名> <日志路径> <退出码> [签名标记] return 1 fi if ! grep -q "$mark" "$log"; then - echo "[probe_gate] FAIL — $name 未见签名标记「${mark}」(exit=${st}——退出码 0 但零输出亦判红)"; return 1 + echo "[probe_gate] FAIL — $name 未见签名标记「$mark」(exit=$st——退出码 0 但零输出亦判红)"; return 1 fi return 0 } -orphans() { # 列出命令行含本 game 路径的 Godot 进程 PID(实现单点在 gate_platform.sh,双平台) - gate_orphans "$GAME_WIN" +orphans() { # 列出命令行含本 game 路径的 Godot 进程 PID(console wrapper+真引擎都算) + printf "Get-CimInstance Win32_Process -Filter \"Name like 'Godot%%'\" | Where-Object { \$_.CommandLine -like '*%s*' } | ForEach-Object { \$_.ProcessId }\n" "$GAME_WIN" > "$TMP/k.ps1" + powershell -NoProfile -ExecutionPolicy Bypass -File "$(cygpath -w "$TMP/k.ps1")" 2>/dev/null | tr -d '\r' } kill_orphans() { - gate_kill_orphans "$GAME_WIN" + local p; for p in $(orphans); do taskkill //F //PID "$p" >/dev/null 2>&1; done } # 每段跑批统一走本函数:后台启动记 MSYS PID→WINPID,守卫进程到点先 taskkill /T 整树回收 @@ -82,14 +81,6 @@ kill_orphans() { # 2026-10-25 在册挂死根源),后 kill -9 收 MSYS 侧。正常退出不动进程树;段后 kill_orphans 照跑兜底。 run_suite() { # run_suite <日志> <场景 res:// 路径> local t="$1" log="$2" scene="$3" - if ! gate_is_win; then - # macOS/Linux:无 console wrapper(Godot 单进程),走共享带超时执行+孤儿清杀兜底。 - local st - gate_run_timeout "$t" "$log" "$G" --headless --path "$GAME_WIN" "$scene" - st=$? - gate_kill_orphans "$GAME_WIN" - return "$st" - fi local kf="$TMP/killed.$RANDOM" rm -f "$kf" "$G" --headless --path "$GAME_WIN" "$scene" >"$log" 2>&1 & @@ -117,7 +108,7 @@ run_suite() { # run_suite <日志> <场景 res:// 路径> # 冷检出刷导入(.godot 不入 git,fresh worktree 首跑一次性付) if [ ! -f "$GAME/.godot/uid_cache.bin" ]; then echo "[probe_gate] 冷检出:editor --quit 刷导入(一次性,可到 1-2 分钟)" - gate_run_timeout 300 "$TMP/refresh.log" "$G" --headless --path "$GAME_WIN" --editor --quit >/dev/null 2>&1 + timeout 300 "$G" --headless --path "$GAME_WIN" --editor --quit >/dev/null 2>&1 kill_orphans fi @@ -192,8 +183,8 @@ fi echo "======== 残留检查(批末闸) ========" left="$(orphans | wc -l | tr -d ' ')" -total="$(gate_godot_count_all)" -echo "本闸残留 Godot=${left}(必须0) 全局 Godot 进程=${total}(其他会话的仅报数不算账)" +total="$(tasklist 2>/dev/null | grep -ci '^Godot' || true)" +echo "本闸残留 Godot=$left(必须0) 全局 Godot 进程=$total(其他会话的仅报数不算账)" if [ "$left" -ne 0 ]; then echo "[probe_gate] FAIL — 本闸残留未清零"; kill_orphans; _rc=1; fi if [ "$_rc" -eq 0 ]; then echo "[probe_gate] 全绿"; else echo "[probe_gate] 存在 FAIL,见上"; fi exit "$_rc" diff --git a/tools/render_gate.sh b/tools/render_gate.sh old mode 100755 new mode 100644 index ec25691f..d6443f25 --- a/tools/render_gate.sh +++ b/tools/render_gate.sh @@ -27,23 +27,22 @@ # 窗口化运行会短暂弹 Godot 窗口(本机可开窗口径);禁改 --headless 跑本闸 # (headless 无渲染面,探针内 fail-fast 护栏会红——那是护栏生效不是闸红)。 # 用法: tools/render_gate.sh [game目录] 缺省 game 目录=脚本所在仓库的 game/(worktree 内自动指向该 worktree) -# 依赖: tools/gate_platform.sh(双平台封装)+ python(PIL);Windows 侧另用 taskkill/PowerShell,macOS/Linux 走共享件;Godot 路径可用环境变量 GODOT_BIN 覆盖。 +# 依赖: Git Bash(coreutils timeout/taskkill) + PowerShell + python(PIL);Godot 路径可用环境变量 GODOT_BIN 覆盖。 set -u G="${GODOT_BIN:-/d/code/godot/Godot_v4.7.2-stable_win64_console.exe}" REPO="$(cd "$(dirname "$0")/.." && pwd)" -. "$REPO/tools/gate_platform.sh" # 跨平台件(平台探测/路径形式/带超时执行/孤儿清杀) GAME="${1:-$REPO/game}" -GAME_WIN="$(gate_game_path "$GAME")" # Godot --path 接受形式(Windows 混合斜杠,其他平台原样) -GOLDEN="$REPO/game/tests/golden/$(gate_platform_id)" # 本平台基线目录(按平台各存,比较器同口径) +GAME_WIN="$(cygpath -m "$GAME")" # Godot --path 需 Windows 形式 TMP="$(mktemp -d /tmp/rendergate_XXXXXX)" trap 'rm -rf "$TMP"' EXIT _rc=0 -orphans() { # 列出命令行含本 game 路径的 Godot 进程 PID(实现单点在 gate_platform.sh,双平台) - gate_orphans "$GAME_WIN" +orphans() { # 列出命令行含本 game 路径的 Godot 进程 PID(console wrapper+真引擎都算) + printf "Get-CimInstance Win32_Process -Filter \"Name like 'Godot%%'\" | Where-Object { \$_.CommandLine -like '*%s*' } | ForEach-Object { \$_.ProcessId }\n" "$GAME_WIN" > "$TMP/k.ps1" + powershell -NoProfile -ExecutionPolicy Bypass -File "$(cygpath -w "$TMP/k.ps1")" 2>/dev/null | tr -d '\r' } kill_orphans() { - gate_kill_orphans "$GAME_WIN" + local p; for p in $(orphans); do taskkill //F //PID "$p" >/dev/null 2>&1; done } scan_log() { # scan_log <段名> <日志>——脚本错误扫描;日志不可读(error_scan exit 2)同判红 @@ -58,7 +57,7 @@ scan_log() { # scan_log <段名> <日志>——脚本错误扫描;日志不 # 冷检出刷导入(.godot 不入 git,fresh worktree 首跑一次性付) if [ ! -f "$GAME/.godot/uid_cache.bin" ]; then echo "[render_gate] 冷检出:editor --quit 刷导入(一次性,可到 1-2 分钟)" - gate_run_timeout 300 "$TMP/refresh.log" "$G" --headless --path "$GAME_WIN" --editor --quit >/dev/null 2>&1 + timeout 300 "$G" --headless --path "$GAME_WIN" --editor --quit >/dev/null 2>&1 kill_orphans fi @@ -67,13 +66,13 @@ if [ "$pre" -gt 0 ]; then echo "[render_gate] 预清本闸残留 Godot×$pre"; k echo "======== shot_probe 七屏截图 → shot_checker A-D ========" SHOT="$TMP/shots" -gate_run_timeout 180 "$TMP/shot.log" "$G" --path "$GAME_WIN" --quit-after 3000 res://probe/shot_probe.tscn -- "$SHOT" +timeout 180 "$G" --path "$GAME_WIN" res://probe/shot_probe.tscn -- "$SHOT" >"$TMP/shot.log" 2>&1 st=$?; kill_orphans grep -E "\[shot_probe\]" "$TMP/shot.log" | tail -12 if [ "$st" -eq 124 ] || [ "$st" -eq 137 ]; then echo "[render_gate] FAIL — shot_probe 超时挂死(exit=$st),孤儿已清"; _rc=1 elif [ "$st" -ne 0 ] || ! grep -q "问题=0" "$TMP/shot.log"; then - echo "[render_gate] FAIL — shot_probe 未干净完成(exit=${st},缺失屏/空文件/路径断裂见上)"; _rc=1 + echo "[render_gate] FAIL — shot_probe 未干净完成(exit=$st,缺失屏/空文件/路径断裂见上)"; _rc=1 fi if [ "$_rc" -eq 0 ]; then python tools/shot_checker.py "$SHOT" shot_menu.png shot_settings.png shot_career.png shot_camp.png shot_level.png shot_battle.png shot_status.png | sed 's/^/[render_gate] /' @@ -84,13 +83,13 @@ scan_log "shot_probe" "$TMP/shot.log" echo "======== fx_shot_probe 三时刻取证(Q7) ========" FX="$TMP/fxshots" -gate_run_timeout 180 "$TMP/fx.log" "$G" --path "$GAME_WIN" --quit-after 3000 res://probe/fx_shot_probe.tscn -- "$FX" +timeout 180 "$G" --path "$GAME_WIN" res://probe/fx_shot_probe.tscn -- "$FX" >"$TMP/fx.log" 2>&1 st=$?; kill_orphans grep -E "\[fx_shot_probe\]" "$TMP/fx.log" | tail -4 if [ "$st" -eq 124 ] || [ "$st" -eq 137 ]; then echo "[render_gate] FAIL — fx_shot_probe 超时挂死(exit=$st),孤儿已清"; _rc=1 elif [ "$st" -ne 0 ]; then - echo "[render_gate] FAIL — fx_shot_probe 退出码=${st}(取证失败=闸红)"; _rc=1 + echo "[render_gate] FAIL — fx_shot_probe 退出码=$st(取证失败=闸红)"; _rc=1 fi scan_log "fx_shot_probe" "$TMP/fx.log" fx_evidence() { # 取证双检:模式文件存在且非零字节(零字节/缺失任一即 FAIL——Q7) @@ -109,13 +108,13 @@ fx_evidence "fx_final.png" 1 echo "======== board_shot_probe L1-L3 取证(Q7) ========" BD="$TMP/boardshots" -gate_run_timeout 180 "$TMP/bd.log" "$G" --path "$GAME_WIN" --quit-after 3000 res://probe/board_shot_probe.tscn -- "$BD" +timeout 180 "$G" --path "$GAME_WIN" res://probe/board_shot_probe.tscn -- "$BD" >"$TMP/bd.log" 2>&1 st=$?; kill_orphans grep -E "\[board_shot\]" "$TMP/bd.log" | tail -6 if [ "$st" -eq 124 ] || [ "$st" -eq 137 ]; then echo "[render_gate] FAIL — board_shot_probe 超时挂死(exit=$st),孤儿已清"; _rc=1 elif [ "$st" -ne 0 ]; then - echo "[render_gate] FAIL — board_shot_probe 退出码=${st}(取证失败=闸红)"; _rc=1 + echo "[render_gate] FAIL — board_shot_probe 退出码=$st(取证失败=闸红)"; _rc=1 fi scan_log "board_shot_probe" "$TMP/bd.log" for b in board_L1_dungeon.png board_L2_underdark.png board_L3_deep_underdark.png board_meta.json; do @@ -123,8 +122,8 @@ for b in board_L1_dungeon.png board_L2_underdark.png board_L3_deep_underdark.png done echo "======== 棋盘 golden 逐像素(T2——裁剪→对比,容差 provisional) ========" -if [ ! -d "$GOLDEN" ]; then - echo "[render_gate] FAIL — 本平台($(gate_platform_id))基线目录缺失:${GOLDEN}(基线按平台各存、在库=验收断言②)"; _rc=1 +if [ ! -d "$REPO/game/tests/golden" ]; then + echo "[render_gate] FAIL — game/tests/golden/ 基线目录缺失(基线在库=验收断言②)"; _rc=1 elif [ ! -s "$BD/board_meta.json" ]; then echo "[render_gate] SKIP — board_meta.json 缺失(取证段已红),golden 对比不判" else @@ -137,7 +136,7 @@ else assets/art/board/terrain_wall_n_dungeon.png assets/art/board/terrain_floor_dungeon_1.png \ assets/art/board/terrain_wall_n_underdark.png assets/art/board/terrain_floor_underdark_1.png \ assets/art/board/terrain_wall_n_deep_underdark.png assets/art/board/terrain_floor_deep_underdark_1.png; do - [ -f "$GAME/$a" ] || { echo "[render_gate] FAIL — 棋盘素材缺位: ${a}(Q5:基线锚素材齐盘态,缺盘不得出验收结论)"; _asset_miss=1; } + [ -f "$GAME/$a" ] || { echo "[render_gate] FAIL — 棋盘素材缺位: $a(Q5:基线锚素材齐盘态,缺盘不得出验收结论)"; _asset_miss=1; } done if [ "$_asset_miss" -eq 0 ]; then CROP="$TMP/crop" @@ -155,8 +154,8 @@ else fi echo "======== 菜单 golden 逐像素(迭代 28 T4——启动态全屏基线)========" -if [ ! -s "$GOLDEN/menu_boot.png" ]; then - echo "[render_gate] FAIL — $GOLDEN/menu_boot.png 基线缺失(菜单 golden 未建——本平台跑 tools/golden_baseline_refresh.sh --menu)"; _rc=1 +if [ ! -s "$REPO/game/tests/golden/menu_boot.png" ]; then + echo "[render_gate] FAIL — game/tests/golden/menu_boot.png 基线缺失(菜单 golden 未建——tools/golden_baseline_refresh.sh --menu)"; _rc=1 elif [ ! -s "$SHOT/shot_menu.png" ]; then echo "[render_gate] SKIP — shot_menu.png 缺失(shot_probe 段已红),菜单 golden 不判" elif [ ! -f "$GAME/assets/fonts/ui_font_fusion_pixel_zh_hans.ttf" ] || [ ! -f "$GAME/assets/art/ui/button_stone.png" ]; then @@ -173,8 +172,8 @@ fi echo "======== 残留检查(批末闸) ========" left="$(orphans | wc -l | tr -d ' ')" -total="$(gate_godot_count_all)" -echo "本闸残留 Godot=${left}(必须0) 全局 Godot 进程=${total}(其他会话的仅报数不算账)" +total="$(tasklist 2>/dev/null | grep -ci '^Godot' || true)" +echo "本闸残留 Godot=$left(必须0) 全局 Godot 进程=$total(其他会话的仅报数不算账)" if [ "$left" -ne 0 ]; then echo "[render_gate] FAIL — 本闸残留未清零"; kill_orphans; _rc=1; fi if [ "$_rc" -eq 0 ]; then echo "[render_gate] 全绿"; else echo "[render_gate] 存在 FAIL,见上"; fi exit "$_rc" diff --git a/tools/run_all_gates.sh b/tools/run_all_gates.sh old mode 100755 new mode 100644 index b2ad7363..341b4efe --- a/tools/run_all_gates.sh +++ b/tools/run_all_gates.sh @@ -4,8 +4,8 @@ # 漏跑 probe_gate --full 的成因:清单散落三份文档、彼此不一致、且无机器校验)。 # # 跑完写回执 game/tests/.gates/receipt.json(commit+内容树哈希+各闸退出码+存量基线比对+时间戳); -# 远端 CI(2026-11-03 用户裁)读回执判定,回执经 tools/ci_watch.sh remote 轮询 Gitea API 写 ci-status.json—— -# 强制验证点=合回 master 后 post-merge 钩子推送触发的远端跑批;本脚本手动调用(--code/--docs/全量档)只服务开发期按域跑批。 +# 本地 CI(tools/ci_runner.sh,2026-10-30 用户裁)读回执写 ci-status.json——强制验证点=合回 master +# 后 post-merge 钩子触发的全量跑批;本脚本手动调用(--code/--docs/全量档)只服务开发期按域跑批。 # 跑闸时代码面带着未提交改动,回执会标 dirty_game(验的不是 HEAD 字节),CI 判定照常落账留痕。 # # 用法:tools/run_all_gates.sh [--code|--docs|--quick] @@ -44,7 +44,6 @@ GAME="$REPO/game" STAMP_DIR="$GAME/tests/.gates" RECEIPT="$STAMP_DIR/receipt.json" BASELINE="$STAMP_DIR/baseline.json" -. "$REPO/tools/gate_platform.sh" # 跨平台件(平台探测/路径形式/带超时执行) QUICK=0 DOMAIN="full" @@ -94,10 +93,8 @@ fi # ── python 解释器解析:优先带 PIL 的 gamedev venv(渲染闸的 shot_checker/golden_compare 依赖), # 回落 PATH 上的 python。渲染闸的三个脚本要 PIL,用错解释器会假红。 PY="" -for cand in "/d/dev/python/envs/gamedev/Scripts/python.exe" "$(command -v python 2>/dev/null)" "python3" "python"; do +for cand in "/d/dev/python/envs/gamedev/Scripts/python.exe" "$(command -v python 2>/dev/null)" "python"; do [ -z "$cand" ] && continue - # 存在性守卫先行:Windows venv 路径在非 Windows 平台不存在,误选会让 PY 指向幽灵路径整批崩。 - command -v "$cand" >/dev/null 2>&1 || [ -x "$cand" ] || continue if "$cand" -c "import PIL" >/dev/null 2>&1; then PY="$cand"; break; fi [ -z "$PY" ] && PY="$cand" done @@ -285,7 +282,7 @@ if in_domain code; then echo "[gates] 关联档选闸·申报:未找到在册需求卡片(diff 与 roadmap 进行中行均无),申报集为空——仅按 diff 推导" fi if [ "$SCOPE" = related ]; then - echo "[gates] 关联档选闸:02 选套件跑(--only=${ONLY_TERMS})" + echo "[gates] 关联档选闸:02 选套件跑(--only=$ONLY_TERMS)" fi fi fi @@ -341,7 +338,7 @@ gate_unit() { # run_all 是 --script 模式,退出码为唯一判据;分 local _shards="${GATE_SHARDS:-4}" echo "" echo "════════════════════════════════════════════" - echo " ${name}(--script 模式,退出码为唯一判据)" + echo " $name(--script 模式,退出码为唯一判据)" if [ "$SCOPE" = related ] && [ -n "$ONLY_TERMS" ]; then echo " 关联档选跑:--only=$ONLY_TERMS" fi @@ -351,7 +348,7 @@ gate_unit() { # run_all 是 --script 模式,退出码为唯一判据;分 echo "════════════════════════════════════════════" local rc=0 if [ "$_shards" -le 1 ]; then - local -a _cmd=(--headless --path "$(gate_game_path "$GAME")" --script res://tests/run_all.gd) + local -a _cmd=(--headless --path "$(cygpath -m "$GAME")" --script res://tests/run_all.gd) [ ${#_user_args[@]} -gt 0 ] && _cmd+=(-- "${_user_args[@]}") ( cd "$REPO" && "$GODOT" "${_cmd[@]}" ) \ >"$STAMP_DIR/unit.log" 2>&1 @@ -363,7 +360,7 @@ gate_unit() { # run_all 是 --script 模式,退出码为唯一判据;分 local -a _pids=() local k for k in $(seq 1 "$_shards"); do - ( cd "$REPO" && "$GODOT" --headless --path "$(gate_game_path "$GAME")" --script res://tests/run_all.gd \ + ( cd "$REPO" && "$GODOT" --headless --path "$(cygpath -m "$GAME")" --script res://tests/run_all.gd \ -- "${_user_args[@]}" "--shard=$k" "--shard-count=$_shards" ) \ >"$STAMP_DIR/unit_shard_$k.log" 2>&1 & _pids+=($!) diff --git a/tools/run_smoke.py b/tools/run_smoke.py index cbf34fa8..f6b756cd 100644 --- a/tools/run_smoke.py +++ b/tools/run_smoke.py @@ -18,15 +18,13 @@ r"""run_smoke.py — 冒烟测试运行器(脚本错误外部门禁) ③ 输出无「SCRIPT ERROR」「Parse Error」标记行(标记清单供 tools/error_scan.py 复用,禁另写一份)。 """ import argparse -import os import re import subprocess import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent -# 引擎定位:GODOT_BIN 环境变量优先(远端 CI 与非 Windows 平台的注入口),Windows 本机固定路径保底。 -DEFAULT_GODOT = os.environ.get("GODOT_BIN") or r"D:\code\godot\Godot_v4.7.2-stable_win64_console.exe" +DEFAULT_GODOT = r"D:\code\godot\Godot_v4.7.2-stable_win64_console.exe" DEFAULT_SLICE = ROOT / "game" DEFAULT_SCENE = "res://tests/smoke_boot.tscn" SUMMARY_RE = re.compile(r"\[smoke\] 摘要:(\d+) 项检查,(\d+) 项失败") diff --git a/tools/run_system_test.py b/tools/run_system_test.py index 43711a3c..9d49bbe2 100644 --- a/tools/run_system_test.py +++ b/tools/run_system_test.py @@ -19,15 +19,13 @@ r"""run_system_test.py — 系统测试运行器(脚本错误外部门禁) ③ 输出无「SCRIPT ERROR」「Parse Error」标记行(标记清单经 tools/error_scan.py 复用,禁另写一份)。 """ import argparse -import os import re import subprocess import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent -# 引擎定位:GODOT_BIN 环境变量优先(远端 CI 与非 Windows 平台的注入口),Windows 本机固定路径保底。 -DEFAULT_GODOT = os.environ.get("GODOT_BIN") or r"D:\code\godot\Godot_v4.7.2-stable_win64_console.exe" +DEFAULT_GODOT = r"D:\code\godot\Godot_v4.7.2-stable_win64_console.exe" DEFAULT_SLICE = ROOT / "game" DEFAULT_SCRIPT = "res://tests/system_test.gd" # 系统测试宿主 SUMMARY_RE = re.compile(r"(?:冒烟完成|\[system_test\] 摘要):(\d+) 项检查,(\d+) 项失败") diff --git a/tools/setup_worktree_userdir.sh b/tools/setup_worktree_userdir.sh old mode 100755 new mode 100644 diff --git a/tools/sync_worktree_assets.sh b/tools/sync_worktree_assets.sh old mode 100755 new mode 100644 diff --git a/体验验证清单.md b/体验验证清单.md index 71e352e7..7c36e08b 100644 --- a/体验验证清单.md +++ b/体验验证清单.md @@ -590,17 +590,3 @@ - **红灯信号**:窗壳挤压屏面、场景几乎不可见、滚动卡滞或内容溢出窗板即报缺陷。 - **结论回流**:观感校准意见回填 camp.md 终值(普通设计决策);呈现缺陷归待办清单登记新条目。 - -## ㊾ CI 迁远端工程批——Mac 端渲染基线目检(2026-11-03 随工程批登记) - -> CI 迁移远端(Mac 本机 host 模式)工程批:渲染基线按平台各存(windows/ 已有,mac/ 待 Mac 端重制入库)。 -> 基线重制与目检在批次端到端验收时执行(Mac 端跑 tools/golden_baseline_refresh.sh 生成后人工判定)。 -> 登记不阻塞(2026-10-12 真人检测立规)。 - -| # | 目检项 | 判据 | -|---|---|---| -| 1 | Mac 端 golden 基线正确性 | mac/ 子目录四张基线(棋盘三图+menu_boot)重制生成后人工判定:布局骨架与现网一致、无素材缺位字形回退、无渲染异常(错位/透明块/花屏);判定通过后经下一批提交入库,此后渲染闸在 Mac 上以该套基线逐像素比对 | -| 2 | Mac 端渲染闸全链目检 | 远端游戏码批跑渲染闸时 Mac 桌面短暂弹 Godot 窗口属预期(窗口化截图取证);七屏截图与三段取证文件齐全、shot_checker A–D 无红 | - -- **红灯信号**:基线帧出现素材缺位字形、明显错位或花屏;渲染闸报「取证缺失/零字节」。 -- **结论回流**:基线异常=登记待办清单(或当场重制复核);渲染缺陷归待办清单登记新条目。