diff --git a/docs/propfix-fa-zheng-source-v1.png b/docs/propfix-fa-zheng-source-v1.png new file mode 100644 index 0000000..d8fc1b0 Binary files /dev/null and b/docs/propfix-fa-zheng-source-v1.png differ diff --git a/docs/propfix-fa-zheng-v1-animation.gif b/docs/propfix-fa-zheng-v1-animation.gif new file mode 100644 index 0000000..d0780aa Binary files /dev/null and b/docs/propfix-fa-zheng-v1-animation.gif differ diff --git a/docs/propfix-fa-zheng-v1-battle-composite.png b/docs/propfix-fa-zheng-v1-battle-composite.png new file mode 100644 index 0000000..3f95a20 Binary files /dev/null and b/docs/propfix-fa-zheng-v1-battle-composite.png differ diff --git a/docs/propfix-fa-zheng-v1-before-after.png b/docs/propfix-fa-zheng-v1-before-after.png new file mode 100644 index 0000000..0fd75e8 Binary files /dev/null and b/docs/propfix-fa-zheng-v1-before-after.png differ diff --git a/docs/propfix-fa-zheng-v1-contact.png b/docs/propfix-fa-zheng-v1-contact.png new file mode 100644 index 0000000..23e4f0b Binary files /dev/null and b/docs/propfix-fa-zheng-v1-contact.png differ diff --git a/docs/propfix-fa-zheng-v1-debug-preview-battle-check.png b/docs/propfix-fa-zheng-v1-debug-preview-battle-check.png new file mode 100644 index 0000000..63b9ff7 Binary files /dev/null and b/docs/propfix-fa-zheng-v1-debug-preview-battle-check.png differ diff --git a/docs/propfix-fa-zheng-v1-report.md b/docs/propfix-fa-zheng-v1-report.md new file mode 100644 index 0000000..4af59ed --- /dev/null +++ b/docs/propfix-fa-zheng-v1-report.md @@ -0,0 +1,24 @@ +# Fa Zheng prop fix v1 report + +- source: `propfix-fa-zheng-source-v1.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 2131622 +- action partial alpha: 0, opaque pixels: 4574401 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 152..250 +- base bbox height range: 282..294 +- base bottom range: 303..303 +- action bbox width range: 131..231 +- action bbox height range: 282..294 +- action bottom range: 303..303 +- contact: `propfix-fa-zheng-v1-contact.png` +- animation: `propfix-fa-zheng-v1-animation.gif` +- before/after: `propfix-fa-zheng-v1-before-after.png` +- scale compare: `propfix-fa-zheng-v1-scale-compare.png` +- battle composite: `propfix-fa-zheng-v1-battle-composite.png` +- manual checks: run build and local browser verification after generation +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/propfix-fa-zheng-v1-scale-compare.png b/docs/propfix-fa-zheng-v1-scale-compare.png new file mode 100644 index 0000000..f285eb2 Binary files /dev/null and b/docs/propfix-fa-zheng-v1-scale-compare.png differ diff --git a/docs/propfix-ma-liang-source-v1.png b/docs/propfix-ma-liang-source-v1.png new file mode 100644 index 0000000..2d24824 Binary files /dev/null and b/docs/propfix-ma-liang-source-v1.png differ diff --git a/docs/propfix-ma-liang-v1-animation.gif b/docs/propfix-ma-liang-v1-animation.gif new file mode 100644 index 0000000..b05afe8 Binary files /dev/null and b/docs/propfix-ma-liang-v1-animation.gif differ diff --git a/docs/propfix-ma-liang-v1-battle-composite.png b/docs/propfix-ma-liang-v1-battle-composite.png new file mode 100644 index 0000000..675e925 Binary files /dev/null and b/docs/propfix-ma-liang-v1-battle-composite.png differ diff --git a/docs/propfix-ma-liang-v1-before-after.png b/docs/propfix-ma-liang-v1-before-after.png new file mode 100644 index 0000000..56fc297 Binary files /dev/null and b/docs/propfix-ma-liang-v1-before-after.png differ diff --git a/docs/propfix-ma-liang-v1-contact.png b/docs/propfix-ma-liang-v1-contact.png new file mode 100644 index 0000000..513bf1b Binary files /dev/null and b/docs/propfix-ma-liang-v1-contact.png differ diff --git a/docs/propfix-ma-liang-v1-debug-preview-battle-check.png b/docs/propfix-ma-liang-v1-debug-preview-battle-check.png new file mode 100644 index 0000000..9992ad7 Binary files /dev/null and b/docs/propfix-ma-liang-v1-debug-preview-battle-check.png differ diff --git a/docs/propfix-ma-liang-v1-report.md b/docs/propfix-ma-liang-v1-report.md new file mode 100644 index 0000000..4c3366c --- /dev/null +++ b/docs/propfix-ma-liang-v1-report.md @@ -0,0 +1,24 @@ +# Ma Liang prop fix v1 report + +- source: `propfix-ma-liang-source-v1.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 1934766 +- action partial alpha: 0, opaque pixels: 4224110 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 150..217 +- base bbox height range: 282..290 +- base bottom range: 303..303 +- action bbox width range: 126..204 +- action bbox height range: 282..295 +- action bottom range: 303..303 +- contact: `propfix-ma-liang-v1-contact.png` +- animation: `propfix-ma-liang-v1-animation.gif` +- before/after: `propfix-ma-liang-v1-before-after.png` +- scale compare: `propfix-ma-liang-v1-scale-compare.png` +- battle composite: `propfix-ma-liang-v1-battle-composite.png` +- manual checks: run build and local browser verification after generation +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/propfix-ma-liang-v1-scale-compare.png b/docs/propfix-ma-liang-v1-scale-compare.png new file mode 100644 index 0000000..243f463 Binary files /dev/null and b/docs/propfix-ma-liang-v1-scale-compare.png differ diff --git a/docs/propfix-pang-tong-source-v1.png b/docs/propfix-pang-tong-source-v1.png new file mode 100644 index 0000000..1024eb4 Binary files /dev/null and b/docs/propfix-pang-tong-source-v1.png differ diff --git a/docs/propfix-pang-tong-v1-animation.gif b/docs/propfix-pang-tong-v1-animation.gif new file mode 100644 index 0000000..33f7328 Binary files /dev/null and b/docs/propfix-pang-tong-v1-animation.gif differ diff --git a/docs/propfix-pang-tong-v1-battle-composite.png b/docs/propfix-pang-tong-v1-battle-composite.png new file mode 100644 index 0000000..04f3e6c Binary files /dev/null and b/docs/propfix-pang-tong-v1-battle-composite.png differ diff --git a/docs/propfix-pang-tong-v1-before-after.png b/docs/propfix-pang-tong-v1-before-after.png new file mode 100644 index 0000000..b0adad9 Binary files /dev/null and b/docs/propfix-pang-tong-v1-before-after.png differ diff --git a/docs/propfix-pang-tong-v1-contact.png b/docs/propfix-pang-tong-v1-contact.png new file mode 100644 index 0000000..5162147 Binary files /dev/null and b/docs/propfix-pang-tong-v1-contact.png differ diff --git a/docs/propfix-pang-tong-v1-debug-preview-battle-check.png b/docs/propfix-pang-tong-v1-debug-preview-battle-check.png new file mode 100644 index 0000000..045f49b Binary files /dev/null and b/docs/propfix-pang-tong-v1-debug-preview-battle-check.png differ diff --git a/docs/propfix-pang-tong-v1-report.md b/docs/propfix-pang-tong-v1-report.md new file mode 100644 index 0000000..f2c0721 --- /dev/null +++ b/docs/propfix-pang-tong-v1-report.md @@ -0,0 +1,24 @@ +# Pang Tong prop fix v1 report + +- source: `propfix-pang-tong-source-v1.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 1907114 +- action partial alpha: 0, opaque pixels: 4307606 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 152..205 +- base bbox height range: 282..290 +- base bottom range: 303..303 +- action bbox width range: 131..203 +- action bbox height range: 282..295 +- action bottom range: 303..303 +- contact: `propfix-pang-tong-v1-contact.png` +- animation: `propfix-pang-tong-v1-animation.gif` +- before/after: `propfix-pang-tong-v1-before-after.png` +- scale compare: `propfix-pang-tong-v1-scale-compare.png` +- battle composite: `propfix-pang-tong-v1-battle-composite.png` +- manual checks: run build and local browser verification after generation +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/propfix-pang-tong-v1-scale-compare.png b/docs/propfix-pang-tong-v1-scale-compare.png new file mode 100644 index 0000000..3c2d88e Binary files /dev/null and b/docs/propfix-pang-tong-v1-scale-compare.png differ diff --git a/docs/propfix-shu-strategist-source-v1.png b/docs/propfix-shu-strategist-source-v1.png new file mode 100644 index 0000000..2f52eb0 Binary files /dev/null and b/docs/propfix-shu-strategist-source-v1.png differ diff --git a/docs/propfix-shu-strategist-v1-animation.gif b/docs/propfix-shu-strategist-v1-animation.gif new file mode 100644 index 0000000..a158747 Binary files /dev/null and b/docs/propfix-shu-strategist-v1-animation.gif differ diff --git a/docs/propfix-shu-strategist-v1-battle-composite.png b/docs/propfix-shu-strategist-v1-battle-composite.png new file mode 100644 index 0000000..3b8c991 Binary files /dev/null and b/docs/propfix-shu-strategist-v1-battle-composite.png differ diff --git a/docs/propfix-shu-strategist-v1-before-after.png b/docs/propfix-shu-strategist-v1-before-after.png new file mode 100644 index 0000000..3c54954 Binary files /dev/null and b/docs/propfix-shu-strategist-v1-before-after.png differ diff --git a/docs/propfix-shu-strategist-v1-contact.png b/docs/propfix-shu-strategist-v1-contact.png new file mode 100644 index 0000000..d055e95 Binary files /dev/null and b/docs/propfix-shu-strategist-v1-contact.png differ diff --git a/docs/propfix-shu-strategist-v1-debug-preview-battle-check.png b/docs/propfix-shu-strategist-v1-debug-preview-battle-check.png new file mode 100644 index 0000000..cc88b11 Binary files /dev/null and b/docs/propfix-shu-strategist-v1-debug-preview-battle-check.png differ diff --git a/docs/propfix-shu-strategist-v1-report.md b/docs/propfix-shu-strategist-v1-report.md new file mode 100644 index 0000000..9deb120 --- /dev/null +++ b/docs/propfix-shu-strategist-v1-report.md @@ -0,0 +1,24 @@ +# Shu Strategist prop fix v1 report + +- source: `propfix-shu-strategist-source-v1.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 2151310 +- action partial alpha: 0, opaque pixels: 4345236 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 149..249 +- base bbox height range: 282..288 +- base bottom range: 303..303 +- action bbox width range: 125..237 +- action bbox height range: 248..288 +- action bottom range: 303..303 +- contact: `propfix-shu-strategist-v1-contact.png` +- animation: `propfix-shu-strategist-v1-animation.gif` +- before/after: `propfix-shu-strategist-v1-before-after.png` +- scale compare: `propfix-shu-strategist-v1-scale-compare.png` +- battle composite: `propfix-shu-strategist-v1-battle-composite.png` +- manual checks: run build and local browser verification after generation +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/propfix-shu-strategist-v1-scale-compare.png b/docs/propfix-shu-strategist-v1-scale-compare.png new file mode 100644 index 0000000..6271a91 Binary files /dev/null and b/docs/propfix-shu-strategist-v1-scale-compare.png differ diff --git a/docs/propfix-sima-yi-source-v1.png b/docs/propfix-sima-yi-source-v1.png new file mode 100644 index 0000000..240edb5 Binary files /dev/null and b/docs/propfix-sima-yi-source-v1.png differ diff --git a/docs/propfix-sima-yi-v1-animation.gif b/docs/propfix-sima-yi-v1-animation.gif new file mode 100644 index 0000000..48759fd Binary files /dev/null and b/docs/propfix-sima-yi-v1-animation.gif differ diff --git a/docs/propfix-sima-yi-v1-battle-composite.png b/docs/propfix-sima-yi-v1-battle-composite.png new file mode 100644 index 0000000..d23c6e0 Binary files /dev/null and b/docs/propfix-sima-yi-v1-battle-composite.png differ diff --git a/docs/propfix-sima-yi-v1-before-after.png b/docs/propfix-sima-yi-v1-before-after.png new file mode 100644 index 0000000..b190517 Binary files /dev/null and b/docs/propfix-sima-yi-v1-before-after.png differ diff --git a/docs/propfix-sima-yi-v1-contact.png b/docs/propfix-sima-yi-v1-contact.png new file mode 100644 index 0000000..2db3735 Binary files /dev/null and b/docs/propfix-sima-yi-v1-contact.png differ diff --git a/docs/propfix-sima-yi-v1-debug-preview-battle-check.png b/docs/propfix-sima-yi-v1-debug-preview-battle-check.png new file mode 100644 index 0000000..55c5970 Binary files /dev/null and b/docs/propfix-sima-yi-v1-debug-preview-battle-check.png differ diff --git a/docs/propfix-sima-yi-v1-report.md b/docs/propfix-sima-yi-v1-report.md new file mode 100644 index 0000000..7364c58 --- /dev/null +++ b/docs/propfix-sima-yi-v1-report.md @@ -0,0 +1,24 @@ +# Sima Yi prop fix v1 report + +- source: `propfix-sima-yi-source-v1.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 2205012 +- action partial alpha: 0, opaque pixels: 4503608 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 159..237 +- base bbox height range: 282..294 +- base bottom range: 303..303 +- action bbox width range: 137..224 +- action bbox height range: 276..294 +- action bottom range: 303..303 +- contact: `propfix-sima-yi-v1-contact.png` +- animation: `propfix-sima-yi-v1-animation.gif` +- before/after: `propfix-sima-yi-v1-before-after.png` +- scale compare: `propfix-sima-yi-v1-scale-compare.png` +- battle composite: `propfix-sima-yi-v1-battle-composite.png` +- manual checks: run build and local browser verification after generation +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/propfix-sima-yi-v1-scale-compare.png b/docs/propfix-sima-yi-v1-scale-compare.png new file mode 100644 index 0000000..d9c3741 Binary files /dev/null and b/docs/propfix-sima-yi-v1-scale-compare.png differ diff --git a/docs/strategist-prop-audit.md b/docs/strategist-prop-audit.md new file mode 100644 index 0000000..3937add --- /dev/null +++ b/docs/strategist-prop-audit.md @@ -0,0 +1,45 @@ +# Strategist Prop Audit + +This audit keeps Zhuge Liang's large white feather fan as a unique signature prop. + +## Prop Rule + +- `unit-zhuge-liang` is the only unit allowed to use a large white feather fan silhouette. +- Other strategist, civil-official, and shaman units should use bamboo slips, scrolls, maps, command tablets, brush cases, small folding fans, talismans, ritual staffs, or faction-specific tools. +- A fan is acceptable only when it does not read as Zhuge Liang's large white feather fan at 50px battle scale. + +## Current Audit + +| unit | current prop read | issue | action | +| --- | --- | --- | --- | +| `unit-zhuge-liang` | large white feather fan | allowed signature prop | keep | +| `unit-ma-liang` | bamboo slips, bound book, scroll case | white feather fan removed | fixed in batch 1 | +| `unit-pang-tong` | dark wood slips, compact dark folded fan, scroll bundles | no white feather fan | fixed in batch 1 | +| `unit-sima-yi` | black command tablet, sealed military order, tally baton | fan removed | fixed in batch 1 | +| `unit-fa-zheng` | campaign map board, command slips, tally baton | fan removed | fixed in batch 1 | +| `unit-yi-ji` | letter, bamboo slips, scroll | distinct civil envoy | keep | +| `unit-huang-quan` | bamboo slips, map board, baton | distinct quartermaster official | keep | +| `unit-shu-strategist` | writing brush, bamboo slips, compact field map | white feather fan removed | fixed in batch 1 | +| `unit-shu-strategist-field` | likely strategist prop variant | needs later batch check | later | +| `unit-shu-strategist-white` | likely pale strategist prop variant | needs later batch check | later | +| `unit-wei-strategist` | white feather fan in several poses | too close to Zhuge Liang | later prop cleanup | +| `unit-wei-strategist-black` | dark strategist prop variant | needs later batch check | later | +| `unit-wei-strategist-blue` | strategist prop variant | needs later batch check | later | +| `unit-wu-strategist` | white feather fan in several poses | too close to Zhuge Liang | later prop cleanup | +| `unit-wu-strategist-fire` | white fan in fire strategist poses | too close to Zhuge Liang | later prop cleanup | +| `unit-wu-strategist-river` | white fan in river strategist poses | too close to Zhuge Liang | later prop cleanup | +| `unit-nanman-shaman` | ritual staff / tribal ornaments | not a white feather fan | keep | +| `unit-nanman-shaman-ember` | ritual staff / ember ornaments | not a white feather fan | keep | +| `unit-nanman-shaman-storm` | ritual staff / storm ornaments | not a white feather fan | keep | + +## Representative Fix Batch + +The first correction batch changes: + +- `unit-ma-liang` +- `unit-pang-tong` +- `unit-sima-yi` +- `unit-fa-zheng` +- `unit-shu-strategist` + +Later cleanup should remove white-feather-fan reads from remaining generic strategist variants after this representative batch is verified. diff --git a/docs/strategist-propfix-batch1-report.md b/docs/strategist-propfix-batch1-report.md new file mode 100644 index 0000000..5780da0 --- /dev/null +++ b/docs/strategist-propfix-batch1-report.md @@ -0,0 +1,44 @@ +# Strategist Prop Fix Batch 1 + +Goal: keep Zhuge Liang's large white feather fan unique, while preserving strategist readability for representative units. + +## Units Updated + +| unit | old read | new prop direction | result | +| --- | --- | --- | --- | +| `unit-ma-liang` | white feather fan / soft scholar | bamboo slips, bound book, scroll case, sealed letter | fixed | +| `unit-pang-tong` | strategist fan pattern | dark wood slips, compact dark folded fan, scroll bundles | fixed | +| `unit-sima-yi` | gray fan could echo Zhuge Liang | black command tablet, sealed military order, tally baton | fixed | +| `unit-fa-zheng` | small fan plus command slips | campaign map board, command slips, tally baton | fixed | +| `unit-shu-strategist` | large white feather fan | writing brush, bamboo slips, compact field map | fixed | + +## Deliverables + +| unit | contact | animation | before/after | battle preview | browser check | +| --- | --- | --- | --- | --- | --- | +| `unit-ma-liang` | `docs/propfix-ma-liang-v1-contact.png` | `docs/propfix-ma-liang-v1-animation.gif` | `docs/propfix-ma-liang-v1-before-after.png` | `docs/propfix-ma-liang-v1-battle-composite.png` | `docs/propfix-ma-liang-v1-debug-preview-battle-check.png` | +| `unit-pang-tong` | `docs/propfix-pang-tong-v1-contact.png` | `docs/propfix-pang-tong-v1-animation.gif` | `docs/propfix-pang-tong-v1-before-after.png` | `docs/propfix-pang-tong-v1-battle-composite.png` | `docs/propfix-pang-tong-v1-debug-preview-battle-check.png` | +| `unit-sima-yi` | `docs/propfix-sima-yi-v1-contact.png` | `docs/propfix-sima-yi-v1-animation.gif` | `docs/propfix-sima-yi-v1-before-after.png` | `docs/propfix-sima-yi-v1-battle-composite.png` | `docs/propfix-sima-yi-v1-debug-preview-battle-check.png` | +| `unit-fa-zheng` | `docs/propfix-fa-zheng-v1-contact.png` | `docs/propfix-fa-zheng-v1-animation.gif` | `docs/propfix-fa-zheng-v1-before-after.png` | `docs/propfix-fa-zheng-v1-battle-composite.png` | `docs/propfix-fa-zheng-v1-debug-preview-battle-check.png` | +| `unit-shu-strategist` | `docs/propfix-shu-strategist-v1-contact.png` | `docs/propfix-shu-strategist-v1-animation.gif` | `docs/propfix-shu-strategist-v1-before-after.png` | `docs/propfix-shu-strategist-v1-battle-composite.png` | `docs/propfix-shu-strategist-v1-debug-preview-battle-check.png` | + +## Technical Verification + +- `pnpm build`: passed. +- `scripts/audit-unit-sprite-sheets.py`: passed for updated sheets. +- `scripts/check-unit-sprite-approval-gate.py --mode release`: passed. +- `scripts/check-unit-sprite-workflow-consistency.py`: passed. +- Local browser checks: 5/5 passed. +- Local browser console errors: `0`. +- Local browser 404s: `0`. + +## Follow-Up Queue + +The representative batch fixes the most visible overlap. Remaining generic variants that still need later prop cleanup: + +- `unit-wei-strategist` +- `unit-wu-strategist` +- `unit-wu-strategist-fire` +- `unit-wu-strategist-river` +- `unit-shu-strategist-field` +- `unit-shu-strategist-white` diff --git a/docs/unit-sprite-batch-queue.json b/docs/unit-sprite-batch-queue.json index 3744235..3d09ce0 100644 --- a/docs/unit-sprite-batch-queue.json +++ b/docs/unit-sprite-batch-queue.json @@ -430,10 +430,10 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 24.9, - 34.2, + 23.8, + 39.8, 45.0, - 46.8 + 46.0 ], "spec": "unit-sprite-batch2-shu-strategist-spec.md" }, @@ -1208,10 +1208,10 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 29.1, - 35.3, - 46.3, - 46.3 + 24.3, + 39.9, + 45.0, + 47.0 ], "spec": null }, @@ -1348,9 +1348,9 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 25.6, - 38.8, - 46.3, + 24.0, + 34.7, + 45.0, 46.3 ], "spec": null @@ -1362,10 +1362,10 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 28.0, - 32.1, - 46.0, - 46.0 + 24.3, + 32.7, + 45.0, + 46.3 ], "spec": null }, @@ -1376,10 +1376,10 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 31.3, - 33.5, - 46.0, - 46.0 + 25.4, + 37.9, + 45.0, + 47.0 ], "spec": null }, diff --git a/docs/unit-sprite-batch-queue.md b/docs/unit-sprite-batch-queue.md index 4204961..e19375e 100644 --- a/docs/unit-sprite-batch-queue.md +++ b/docs/unit-sprite-batch-queue.md @@ -65,7 +65,7 @@ No next unit is currently defined. | `unit-shu-spearman` | approved reference | approved-baseline | technical ok | 23.3..42.0 x 43.8..46.3 | `unit-sprite-batch2-shu-spearman-spec.md` | | `unit-shu-spearman-guard` | approved reference | approved-baseline | technical ok | 29.4..32.7 x 44.2..47.1 | | | `unit-shu-spearman-veteran` | approved reference | approved-baseline | technical ok | 26.0..32.9 x 46.3..47.1 | | -| `unit-shu-strategist` | approved reference | approved-baseline | technical ok | 24.9..34.2 x 45.0..46.8 | `unit-sprite-batch2-shu-strategist-spec.md` | +| `unit-shu-strategist` | approved reference | approved-baseline | technical ok | 23.8..39.8 x 45.0..46.0 | `unit-sprite-batch2-shu-strategist-spec.md` | | `unit-shu-strategist-field` | approved reference | approved-baseline | technical ok | 26.5..32.9 x 44.2..47.1 | | | `unit-shu-strategist-white` | approved reference | approved-baseline | technical ok | 24.9..32.7 x 44.2..47.1 | | @@ -162,7 +162,7 @@ No next unit is currently defined. | unit | role | stage | status | battle base px | spec | | --- | --- | --- | --- | --- | --- | | `unit-cao-cao` | approved reference | approved-baseline | technical ok | 32.9..36.4 x 46.3..47.3 | | -| `unit-fa-zheng` | approved reference | approved-baseline | technical ok | 29.1..35.3 x 46.3..46.3 | | +| `unit-fa-zheng` | approved reference | approved-baseline | technical ok | 24.3..39.9 x 45.0..47.0 | | | `unit-gong-zhi` | approved reference | approved-baseline | technical ok | 33.2..35.5 x 46.3..46.3 | | | `unit-huang-quan` | approved reference | approved-baseline | technical ok | 28.9..34.8 x 46.3..46.3 | | | `unit-huang-zhong` | approved reference | approved-baseline | technical ok | 27.2..36.3 x 46.3..47.3 | | @@ -172,9 +172,9 @@ No next unit is currently defined. | `unit-lu-meng` | approved reference | approved-baseline | technical ok | 27.0..40.4 x 46.0..46.3 | | | `unit-ma-chao` | approved reference | approved-baseline | technical ok | 26.5..42.0 x 46.0..47.3 | | | `unit-ma-dai` | approved reference | approved-baseline | technical ok | 27.0..39.8 x 46.0..46.3 | | -| `unit-ma-liang` | approved reference | approved-baseline | technical ok | 25.6..38.8 x 46.3..46.3 | | -| `unit-pang-tong` | approved reference | approved-baseline | technical ok | 28.0..32.1 x 46.0..46.0 | | -| `unit-sima-yi` | approved reference | approved-baseline | technical ok | 31.3..33.5 x 46.0..46.0 | | +| `unit-ma-liang` | approved reference | approved-baseline | technical ok | 24.0..34.7 x 45.0..46.3 | | +| `unit-pang-tong` | approved reference | approved-baseline | technical ok | 24.3..32.7 x 45.0..46.3 | | +| `unit-sima-yi` | approved reference | approved-baseline | technical ok | 25.4..37.9 x 45.0..47.0 | | | `unit-wang-ping` | approved reference | approved-baseline | technical ok | 28.0..33.7 x 45.7..46.0 | | | `unit-yan-yan` | approved reference | approved-baseline | technical ok | 30.4..37.5 x 45.7..46.0 | | | `unit-yi-ji` | approved reference | approved-baseline | technical ok | 27.8..33.9 x 45.7..46.0 | | diff --git a/docs/unit-sprite-review-approved-and-pending.png b/docs/unit-sprite-review-approved-and-pending.png index 4083e0e..aca0fe2 100644 Binary files a/docs/unit-sprite-review-approved-and-pending.png and b/docs/unit-sprite-review-approved-and-pending.png differ diff --git a/docs/unit-sprite-review-batch2-shu.png b/docs/unit-sprite-review-batch2-shu.png index cc578e1..a175b07 100644 Binary files a/docs/unit-sprite-review-batch2-shu.png and b/docs/unit-sprite-review-batch2-shu.png differ diff --git a/docs/unit-sprite-review-batch7-unique-officer.png b/docs/unit-sprite-review-batch7-unique-officer.png index d59c43b..0799d87 100644 Binary files a/docs/unit-sprite-review-batch7-unique-officer.png and b/docs/unit-sprite-review-batch7-unique-officer.png differ diff --git a/docs/unit-sprite-review-index.png b/docs/unit-sprite-review-index.png index d9ca2a0..b0ca285 100644 Binary files a/docs/unit-sprite-review-index.png and b/docs/unit-sprite-review-index.png differ diff --git a/docs/unit-sprite-rework-audit.json b/docs/unit-sprite-rework-audit.json index ff86dff..adbf04d 100644 --- a/docs/unit-sprite-rework-audit.json +++ b/docs/unit-sprite-rework-audit.json @@ -83,22 +83,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2296062, + "opaque_pixels": 2131622, "border_hits": 0, - "min_width": 182, - "max_width": 221, - "min_height": 290, - "max_height": 290, + "min_width": 152, + "max_width": 250, + "min_height": 282, + "max_height": 294, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 39, - "height_swing": 0, + "width_swing": 98, + "height_swing": 12, "bottom_swing": 0, - "battle_min_width_px": 29.1, - "battle_max_width_px": 35.3, - "battle_min_height_px": 46.3, - "battle_max_height_px": 46.3, + "battle_min_width_px": 24.3, + "battle_max_width_px": 39.9, + "battle_min_height_px": 45.0, + "battle_max_height_px": 47.0, "status": "ok" }, "actions": { @@ -109,22 +109,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 5507911, + "opaque_pixels": 4574401, "border_hits": 0, - "min_width": 183, - "max_width": 244, - "min_height": 270, - "max_height": 290, + "min_width": 131, + "max_width": 231, + "min_height": 282, + "max_height": 294, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 61, - "height_swing": 20, + "width_swing": 100, + "height_swing": 12, "bottom_swing": 0, - "battle_min_width_px": 29.2, - "battle_max_width_px": 39.0, - "battle_min_height_px": 43.1, - "battle_max_height_px": 46.3, + "battle_min_width_px": 20.9, + "battle_max_width_px": 36.9, + "battle_min_height_px": 45.0, + "battle_max_height_px": 47.0, "status": "ok" } }, @@ -767,21 +767,21 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2452368, + "opaque_pixels": 1934766, "border_hits": 0, - "min_width": 160, - "max_width": 243, - "min_height": 290, + "min_width": 150, + "max_width": 217, + "min_height": 282, "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 83, - "height_swing": 0, + "width_swing": 67, + "height_swing": 8, "bottom_swing": 0, - "battle_min_width_px": 25.6, - "battle_max_width_px": 38.8, - "battle_min_height_px": 46.3, + "battle_min_width_px": 24.0, + "battle_max_width_px": 34.7, + "battle_min_height_px": 45.0, "battle_max_height_px": 46.3, "status": "ok" }, @@ -793,22 +793,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 6122211, + "opaque_pixels": 4224110, "border_hits": 0, - "min_width": 160, - "max_width": 264, - "min_height": 286, - "max_height": 290, + "min_width": 126, + "max_width": 204, + "min_height": 282, + "max_height": 295, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 104, - "height_swing": 4, + "width_swing": 78, + "height_swing": 13, "bottom_swing": 0, - "battle_min_width_px": 25.6, - "battle_max_width_px": 42.2, - "battle_min_height_px": 45.7, - "battle_max_height_px": 46.3, + "battle_min_width_px": 20.1, + "battle_max_width_px": 32.6, + "battle_min_height_px": 45.0, + "battle_max_height_px": 47.1, "status": "ok" } }, @@ -1394,22 +1394,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2067632, + "opaque_pixels": 1907114, "border_hits": 0, - "min_width": 175, - "max_width": 201, - "min_height": 288, - "max_height": 288, + "min_width": 152, + "max_width": 205, + "min_height": 282, + "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 26, - "height_swing": 0, + "width_swing": 53, + "height_swing": 8, "bottom_swing": 0, - "battle_min_width_px": 28.0, - "battle_max_width_px": 32.1, - "battle_min_height_px": 46.0, - "battle_max_height_px": 46.0, + "battle_min_width_px": 24.3, + "battle_max_width_px": 32.7, + "battle_min_height_px": 45.0, + "battle_max_height_px": 46.3, "status": "ok" }, "actions": { @@ -1420,22 +1420,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 5101099, + "opaque_pixels": 4307606, "border_hits": 0, - "min_width": 164, - "max_width": 273, - "min_height": 286, - "max_height": 290, + "min_width": 131, + "max_width": 203, + "min_height": 282, + "max_height": 295, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 109, - "height_swing": 4, + "width_swing": 72, + "height_swing": 13, "bottom_swing": 0, - "battle_min_width_px": 26.2, - "battle_max_width_px": 43.6, - "battle_min_height_px": 45.7, - "battle_max_height_px": 46.3, + "battle_min_width_px": 20.9, + "battle_max_width_px": 32.4, + "battle_min_height_px": 45.0, + "battle_max_height_px": 47.1, "status": "ok" } }, @@ -2819,22 +2819,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2006886, + "opaque_pixels": 2151310, "border_hits": 0, - "min_width": 156, - "max_width": 214, + "min_width": 149, + "max_width": 249, "min_height": 282, - "max_height": 293, + "max_height": 288, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 58, - "height_swing": 11, + "width_swing": 100, + "height_swing": 6, "bottom_swing": 0, - "battle_min_width_px": 24.9, - "battle_max_width_px": 34.2, + "battle_min_width_px": 23.8, + "battle_max_width_px": 39.8, "battle_min_height_px": 45.0, - "battle_max_height_px": 46.8, + "battle_max_height_px": 46.0, "status": "ok" }, "actions": { @@ -2845,22 +2845,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 5055851, + "opaque_pixels": 4345236, "border_hits": 0, - "min_width": 155, - "max_width": 243, - "min_height": 282, - "max_height": 293, + "min_width": 125, + "max_width": 237, + "min_height": 248, + "max_height": 288, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 88, - "height_swing": 11, + "width_swing": 112, + "height_swing": 40, "bottom_swing": 0, - "battle_min_width_px": 24.8, - "battle_max_width_px": 38.8, - "battle_min_height_px": 45.0, - "battle_max_height_px": 46.8, + "battle_min_width_px": 20.0, + "battle_max_width_px": 37.9, + "battle_min_height_px": 39.6, + "battle_max_height_px": 46.0, "status": "ok" } }, @@ -2990,22 +2990,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 2302994, + "opaque_pixels": 2205012, "border_hits": 0, - "min_width": 196, - "max_width": 210, - "min_height": 288, - "max_height": 288, + "min_width": 159, + "max_width": 237, + "min_height": 282, + "max_height": 294, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 14, - "height_swing": 0, + "width_swing": 78, + "height_swing": 12, "bottom_swing": 0, - "battle_min_width_px": 31.3, - "battle_max_width_px": 33.5, - "battle_min_height_px": 46.0, - "battle_max_height_px": 46.0, + "battle_min_width_px": 25.4, + "battle_max_width_px": 37.9, + "battle_min_height_px": 45.0, + "battle_max_height_px": 47.0, "status": "ok" }, "actions": { @@ -3016,22 +3016,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 5483833, + "opaque_pixels": 4503608, "border_hits": 0, - "min_width": 180, - "max_width": 267, - "min_height": 286, - "max_height": 290, + "min_width": 137, + "max_width": 224, + "min_height": 276, + "max_height": 294, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, "width_swing": 87, - "height_swing": 4, + "height_swing": 18, "bottom_swing": 0, - "battle_min_width_px": 28.8, - "battle_max_width_px": 42.7, - "battle_min_height_px": 45.7, - "battle_max_height_px": 46.3, + "battle_min_width_px": 21.9, + "battle_max_width_px": 35.8, + "battle_min_height_px": 44.1, + "battle_max_height_px": 47.0, "status": "ok" } }, diff --git a/docs/unit-sprite-rework-audit.md b/docs/unit-sprite-rework-audit.md index 9eea736..7c5eadc 100644 --- a/docs/unit-sprite-rework-audit.md +++ b/docs/unit-sprite-rework-audit.md @@ -52,7 +52,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards. | batch | stage | stem | base | actions | base bbox | action bbox | battle base px | motion swing | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | batch7-unique-officer | approved-baseline | `unit-cao-cao` | ok | ok | 206..228 x 290..296 | 186..252 x 270..296 | 32.9..36.4 x 46.3..47.3 | w22 h6 b0 | -| batch7-unique-officer | approved-baseline | `unit-fa-zheng` | ok | ok | 182..221 x 290..290 | 183..244 x 270..290 | 29.1..35.3 x 46.3..46.3 | w39 h0 b0 | +| batch7-unique-officer | approved-baseline | `unit-fa-zheng` | ok | ok | 152..250 x 282..294 | 131..231 x 282..294 | 24.3..39.9 x 45.0..47.0 | w98 h12 b0 | | batch7-unique-officer | approved-baseline | `unit-gong-zhi` | ok | ok | 208..222 x 290..290 | 196..287 x 270..290 | 33.2..35.5 x 46.3..46.3 | w14 h0 b0 | | batch1-approved-core | approved-baseline | `unit-guan-yu` | ok | ok | 190..270 x 276..291 | 172..296 x 171..289 | 30.4..43.1 x 44.1..46.5 | w80 h15 b4 | | batch7-unique-officer | approved-baseline | `unit-huang-quan` | ok | ok | 181..218 x 290..290 | 176..251 x 284..290 | 28.9..34.8 x 46.3..46.3 | w37 h0 b0 | @@ -64,7 +64,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards. | batch7-unique-officer | approved-baseline | `unit-lu-meng` | ok | ok | 169..253 x 288..290 | 153..238 x 286..290 | 27.0..40.4 x 46.0..46.3 | w84 h2 b0 | | batch7-unique-officer | approved-baseline | `unit-ma-chao` | ok | ok | 166..263 x 288..296 | 166..263 x 284..296 | 26.5..42.0 x 46.0..47.3 | w97 h8 b0 | | batch7-unique-officer | approved-baseline | `unit-ma-dai` | ok | ok | 169..249 x 288..290 | 162..239 x 284..290 | 27.0..39.8 x 46.0..46.3 | w80 h2 b0 | -| batch7-unique-officer | approved-baseline | `unit-ma-liang` | ok | ok | 160..243 x 290..290 | 160..264 x 286..290 | 25.6..38.8 x 46.3..46.3 | w83 h0 b0 | +| batch7-unique-officer | approved-baseline | `unit-ma-liang` | ok | ok | 150..217 x 282..290 | 126..204 x 282..295 | 24.0..34.7 x 45.0..46.3 | w67 h8 b0 | | batch6-nanman-special | approved-baseline | `unit-meng-huo` | ok | ok | 174..221 x 286..288 | 149..248 x 275..289 | 27.8..35.3 x 45.7..46.0 | w47 h2 b0 | | batch6-nanman-special | approved-baseline | `unit-nanman-infantry` | ok | ok | 152..219 x 288..288 | 152..243 x 265..288 | 24.3..35.0 x 46.0..46.0 | w67 h0 b0 | | batch6-nanman-special | approved-baseline | `unit-nanman-infantry-jungle` | ok | ok | 172..209 x 286..288 | 158..247 x 282..288 | 27.5..33.4 x 45.7..46.0 | w37 h2 b0 | @@ -75,7 +75,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards. | batch6-nanman-special | approved-baseline | `unit-nanman-shaman` | ok | ok | 190..214 x 288..288 | 197..263 x 277..290 | 30.4..34.2 x 46.0..46.0 | w24 h0 b0 | | batch6-nanman-special | approved-baseline | `unit-nanman-shaman-ember` | ok | ok | 180..212 x 288..290 | 180..242 x 264..290 | 28.8..33.9 x 46.0..46.3 | w32 h2 b0 | | batch6-nanman-special | approved-baseline | `unit-nanman-shaman-storm` | ok | ok | 195..223 x 286..290 | 195..245 x 240..290 | 31.2..35.6 x 45.7..46.3 | w28 h4 b0 | -| batch7-unique-officer | approved-baseline | `unit-pang-tong` | ok | ok | 175..201 x 288..288 | 164..273 x 286..290 | 28.0..32.1 x 46.0..46.0 | w26 h0 b0 | +| batch7-unique-officer | approved-baseline | `unit-pang-tong` | ok | ok | 152..205 x 282..290 | 131..203 x 282..295 | 24.3..32.7 x 45.0..46.3 | w53 h8 b0 | | batch1-approved-rebel | approved-baseline | `unit-rebel` | ok | ok | 195..284 x 271..281 | 180..286 x 178..289 | 31.2..45.4 x 43.3..44.9 | w89 h10 b8 | | batch1-approved-rebel | approved-baseline | `unit-rebel-archer` | ok | ok | 185..263 x 272..278 | 116..284 x 228..288 | 29.6..42.0 x 43.5..44.4 | w78 h6 b1 | | batch5-rebel-other | approved-baseline | `unit-rebel-archer-fire` | ok | ok | 161..249 x 288..295 | 161..252 x 285..295 | 25.7..39.8 x 46.0..47.1 | w88 h7 b0 | @@ -100,10 +100,10 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards. | batch2-shu | approved-baseline | `unit-shu-spearman` | ok | ok | 146..263 x 274..290 | 146..276 x 280..295 | 23.3..42.0 x 43.8..46.3 | w117 h16 b0 | | batch2-shu | approved-baseline | `unit-shu-spearman-guard` | ok | ok | 184..205 x 277..295 | 176..276 x 232..295 | 29.4..32.7 x 44.2..47.1 | w21 h18 b0 | | batch2-shu | approved-baseline | `unit-shu-spearman-veteran` | ok | ok | 163..206 x 290..295 | 143..276 x 221..295 | 26.0..32.9 x 46.3..47.1 | w43 h5 b0 | -| batch2-shu | approved-baseline | `unit-shu-strategist` | ok | ok | 156..214 x 282..293 | 155..243 x 282..293 | 24.9..34.2 x 45.0..46.8 | w58 h11 b0 | +| batch2-shu | approved-baseline | `unit-shu-strategist` | ok | ok | 149..249 x 282..288 | 125..237 x 248..288 | 23.8..39.8 x 45.0..46.0 | w100 h6 b0 | | batch2-shu | approved-baseline | `unit-shu-strategist-field` | ok | ok | 166..206 x 277..295 | 166..269 x 277..295 | 26.5..32.9 x 44.2..47.1 | w40 h18 b0 | | batch2-shu | approved-baseline | `unit-shu-strategist-white` | ok | ok | 156..205 x 277..295 | 156..269 x 276..295 | 24.9..32.7 x 44.2..47.1 | w49 h18 b0 | -| batch7-unique-officer | approved-baseline | `unit-sima-yi` | ok | ok | 196..210 x 288..288 | 180..267 x 286..290 | 31.3..33.5 x 46.0..46.0 | w14 h0 b0 | +| batch7-unique-officer | approved-baseline | `unit-sima-yi` | ok | ok | 159..237 x 282..294 | 137..224 x 276..294 | 25.4..37.9 x 45.0..47.0 | w78 h12 b0 | | batch7-unique-officer | approved-baseline | `unit-wang-ping` | ok | ok | 175..211 x 286..288 | 158..256 x 286..295 | 28.0..33.7 x 45.7..46.0 | w36 h2 b0 | | batch3-wei | approved-baseline | `unit-wei-archer` | ok | ok | 190..245 x 288..296 | 190..245 x 282..296 | 30.4..39.1 x 46.0..47.3 | w55 h8 b0 | | batch3-wei | approved-baseline | `unit-wei-archer-crossbow` | ok | ok | 186..230 x 288..290 | 169..276 x 249..290 | 29.7..36.7 x 46.0..46.3 | w44 h2 b0 | diff --git a/src/assets/images/units/unit-fa-zheng-actions.png b/src/assets/images/units/unit-fa-zheng-actions.png index 044227c..a1aaa18 100644 Binary files a/src/assets/images/units/unit-fa-zheng-actions.png and b/src/assets/images/units/unit-fa-zheng-actions.png differ diff --git a/src/assets/images/units/unit-fa-zheng.png b/src/assets/images/units/unit-fa-zheng.png index 7c8d936..2622e85 100644 Binary files a/src/assets/images/units/unit-fa-zheng.png and b/src/assets/images/units/unit-fa-zheng.png differ diff --git a/src/assets/images/units/unit-ma-liang-actions.png b/src/assets/images/units/unit-ma-liang-actions.png index 9257170..030a8ef 100644 Binary files a/src/assets/images/units/unit-ma-liang-actions.png and b/src/assets/images/units/unit-ma-liang-actions.png differ diff --git a/src/assets/images/units/unit-ma-liang.png b/src/assets/images/units/unit-ma-liang.png index 3b3d74c..3d44ab1 100644 Binary files a/src/assets/images/units/unit-ma-liang.png and b/src/assets/images/units/unit-ma-liang.png differ diff --git a/src/assets/images/units/unit-pang-tong-actions.png b/src/assets/images/units/unit-pang-tong-actions.png index 5cae52d..9e2ce06 100644 Binary files a/src/assets/images/units/unit-pang-tong-actions.png and b/src/assets/images/units/unit-pang-tong-actions.png differ diff --git a/src/assets/images/units/unit-pang-tong.png b/src/assets/images/units/unit-pang-tong.png index 57e8e5f..257ea9d 100644 Binary files a/src/assets/images/units/unit-pang-tong.png and b/src/assets/images/units/unit-pang-tong.png differ diff --git a/src/assets/images/units/unit-shu-strategist-actions.png b/src/assets/images/units/unit-shu-strategist-actions.png index 40005f2..1c5f292 100644 Binary files a/src/assets/images/units/unit-shu-strategist-actions.png and b/src/assets/images/units/unit-shu-strategist-actions.png differ diff --git a/src/assets/images/units/unit-shu-strategist.png b/src/assets/images/units/unit-shu-strategist.png index 069ee84..d8f49b1 100644 Binary files a/src/assets/images/units/unit-shu-strategist.png and b/src/assets/images/units/unit-shu-strategist.png differ diff --git a/src/assets/images/units/unit-sima-yi-actions.png b/src/assets/images/units/unit-sima-yi-actions.png index 47bd21b..0273c49 100644 Binary files a/src/assets/images/units/unit-sima-yi-actions.png and b/src/assets/images/units/unit-sima-yi-actions.png differ diff --git a/src/assets/images/units/unit-sima-yi.png b/src/assets/images/units/unit-sima-yi.png index ec04fa1..2b3cd43 100644 Binary files a/src/assets/images/units/unit-sima-yi.png and b/src/assets/images/units/unit-sima-yi.png differ