diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-animation.gif b/docs/propfix-ma-liang-white-eyebrow-v4-animation.gif new file mode 100644 index 0000000..c668428 Binary files /dev/null and b/docs/propfix-ma-liang-white-eyebrow-v4-animation.gif differ diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-battle-browser-check.png b/docs/propfix-ma-liang-white-eyebrow-v4-battle-browser-check.png new file mode 100644 index 0000000..2eefe1b Binary files /dev/null and b/docs/propfix-ma-liang-white-eyebrow-v4-battle-browser-check.png differ diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-battle-composite.png b/docs/propfix-ma-liang-white-eyebrow-v4-battle-composite.png new file mode 100644 index 0000000..e5635c1 Binary files /dev/null and b/docs/propfix-ma-liang-white-eyebrow-v4-battle-composite.png differ diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-before-after.png b/docs/propfix-ma-liang-white-eyebrow-v4-before-after.png new file mode 100644 index 0000000..f134070 Binary files /dev/null and b/docs/propfix-ma-liang-white-eyebrow-v4-before-after.png differ diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-contact.png b/docs/propfix-ma-liang-white-eyebrow-v4-contact.png new file mode 100644 index 0000000..b12c18a Binary files /dev/null and b/docs/propfix-ma-liang-white-eyebrow-v4-contact.png differ diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-report.md b/docs/propfix-ma-liang-white-eyebrow-v4-report.md new file mode 100644 index 0000000..0b45afb --- /dev/null +++ b/docs/propfix-ma-liang-white-eyebrow-v4-report.md @@ -0,0 +1,26 @@ +# Ma Liang white eyebrow identity v4 report + +- identity note: Ma Liang keeps a visible white-eyebrow scholar read, while avoiding Zhuge Liang's white feather fan and white-robed sage silhouette. +- source: `propfix-ma-liang-white-eyebrow-v4-source.png` +- base status: ok +- action status: ok +- base partial alpha: 0, opaque pixels: 2087558 +- action partial alpha: 0, opaque pixels: 4261312 +- base frame border hits: 0 +- action frame border hits: 0 +- base empty frames: 0 +- action empty frames: 0 +- base bbox width range: 166..224 +- base bbox height range: 282..290 +- base bottom range: 303..303 +- action bbox width range: 139..212 +- action bbox height range: 282..291 +- action bottom range: 303..303 +- contact: `propfix-ma-liang-white-eyebrow-v4-contact.png` +- animation: `propfix-ma-liang-white-eyebrow-v4-animation.gif` +- before/after: `propfix-ma-liang-white-eyebrow-v4-before-after.png` +- scale compare: `propfix-ma-liang-white-eyebrow-v4-scale-compare.png` +- battle composite: `propfix-ma-liang-white-eyebrow-v4-battle-composite.png` +- local browser battle check: `propfix-ma-liang-white-eyebrow-v4-battle-browser-check.png` +- manual checks: build and local browser verification passed after generation +- note: battle composite is a scale review image; gameplay roster is unchanged during sample approval diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-scale-compare.png b/docs/propfix-ma-liang-white-eyebrow-v4-scale-compare.png new file mode 100644 index 0000000..6428e22 Binary files /dev/null and b/docs/propfix-ma-liang-white-eyebrow-v4-scale-compare.png differ diff --git a/docs/propfix-ma-liang-white-eyebrow-v4-source.png b/docs/propfix-ma-liang-white-eyebrow-v4-source.png new file mode 100644 index 0000000..7bb664a Binary files /dev/null and b/docs/propfix-ma-liang-white-eyebrow-v4-source.png differ diff --git a/docs/strategist-prop-audit.md b/docs/strategist-prop-audit.md index 3937add..ac5b383 100644 --- a/docs/strategist-prop-audit.md +++ b/docs/strategist-prop-audit.md @@ -1,10 +1,13 @@ # Strategist Prop Audit This audit keeps Zhuge Liang's large white feather fan as a unique signature prop. +It also keeps character-specific scholar traits intact: Ma Liang should read as the white-eyebrow civil official, not as another white-robed feather-fan strategist. ## Prop Rule - `unit-zhuge-liang` is the only unit allowed to use a large white feather fan silhouette. +- `unit-zhuge-liang` may keep the white-robed sage read; other strategists should not rely on white robes plus fan shapes for identity. +- `unit-ma-liang` may use bright white only for his famous eyebrows and small paper highlights. His robe silhouette should stay green/olive/tan and document-focused. - 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. @@ -13,7 +16,7 @@ This audit keeps Zhuge Liang's large white feather fan as a unique signature pro | 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-ma-liang` | white eyebrows, bamboo slips, bound book, scroll case | white robe/fan read removed while preserving Ma Liang's white-eyebrow identity | fixed in follow-up | | `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 | diff --git a/docs/strategist-propfix-batch1-report.md b/docs/strategist-propfix-batch1-report.md index 5780da0..9a84c31 100644 --- a/docs/strategist-propfix-batch1-report.md +++ b/docs/strategist-propfix-batch1-report.md @@ -1,12 +1,13 @@ # Strategist Prop Fix Batch 1 Goal: keep Zhuge Liang's large white feather fan unique, while preserving strategist readability for representative units. +Follow-up note: character-specific traits matter more than removing every white accent. Ma Liang now keeps a white-eyebrow identity while avoiding Zhuge Liang's white robe and feather-fan language. ## 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-ma-liang` | white feather fan / soft Zhuge-like scholar | white eyebrows, green civil-official robes, bamboo slips, bound book, scroll case, sealed letter | fixed in follow-up | | `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 | @@ -22,6 +23,14 @@ Goal: keep Zhuge Liang's large white feather fan unique, while preserving strate | `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` | +## Character Identity Follow-Up + +| unit | contact | animation | before/after | battle preview | note | +| --- | --- | --- | --- | --- | --- | +| `unit-ma-liang` | `docs/propfix-ma-liang-white-eyebrow-v4-contact.png` | `docs/propfix-ma-liang-white-eyebrow-v4-animation.gif` | `docs/propfix-ma-liang-white-eyebrow-v4-before-after.png` | `docs/propfix-ma-liang-white-eyebrow-v4-battle-composite.png` | Restores Ma Liang's white-eyebrow read without using Zhuge Liang's white feather fan or white-robed sage silhouette. | + +Follow-up browser check: `docs/propfix-ma-liang-white-eyebrow-v4-battle-browser-check.png`. + ## Technical Verification - `pnpm build`: passed. diff --git a/docs/unit-sprite-batch-queue.json b/docs/unit-sprite-batch-queue.json index 3d09ce0..7230acf 100644 --- a/docs/unit-sprite-batch-queue.json +++ b/docs/unit-sprite-batch-queue.json @@ -1348,8 +1348,8 @@ "baseStatus": "ok", "actionStatus": "ok", "battleBasePx": [ - 24.0, - 34.7, + 26.5, + 35.8, 45.0, 46.3 ], diff --git a/docs/unit-sprite-batch-queue.md b/docs/unit-sprite-batch-queue.md index e19375e..224e65c 100644 --- a/docs/unit-sprite-batch-queue.md +++ b/docs/unit-sprite-batch-queue.md @@ -172,7 +172,7 @@ 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 | 24.0..34.7 x 45.0..46.3 | | +| `unit-ma-liang` | approved reference | approved-baseline | technical ok | 26.5..35.8 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 | | diff --git a/docs/unit-sprite-review-approved-and-pending.png b/docs/unit-sprite-review-approved-and-pending.png index aca0fe2..ef7a3dd 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-batch7-unique-officer.png b/docs/unit-sprite-review-batch7-unique-officer.png index 0799d87..ad8c06d 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 b0ca285..b22c621 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 adbf04d..949be62 100644 --- a/docs/unit-sprite-rework-audit.json +++ b/docs/unit-sprite-rework-audit.json @@ -767,20 +767,20 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 1934766, + "opaque_pixels": 2087558, "border_hits": 0, - "min_width": 150, - "max_width": 217, + "min_width": 166, + "max_width": 224, "min_height": 282, "max_height": 290, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 67, + "width_swing": 58, "height_swing": 8, "bottom_swing": 0, - "battle_min_width_px": 24.0, - "battle_max_width_px": 34.7, + "battle_min_width_px": 26.5, + "battle_max_width_px": 35.8, "battle_min_height_px": 45.0, "battle_max_height_px": 46.3, "status": "ok" @@ -793,22 +793,22 @@ 1252 ], "partial_alpha": 0, - "opaque_pixels": 4224110, + "opaque_pixels": 4261312, "border_hits": 0, - "min_width": 126, - "max_width": 204, + "min_width": 139, + "max_width": 212, "min_height": 282, - "max_height": 295, + "max_height": 291, "min_bottom": 303, "max_bottom": 303, "empty_frames": 0, - "width_swing": 78, - "height_swing": 13, + "width_swing": 73, + "height_swing": 9, "bottom_swing": 0, - "battle_min_width_px": 20.1, - "battle_max_width_px": 32.6, + "battle_min_width_px": 22.2, + "battle_max_width_px": 33.9, "battle_min_height_px": 45.0, - "battle_max_height_px": 47.1, + "battle_max_height_px": 46.5, "status": "ok" } }, diff --git a/docs/unit-sprite-rework-audit.md b/docs/unit-sprite-rework-audit.md index 7c5eadc..4956db1 100644 --- a/docs/unit-sprite-rework-audit.md +++ b/docs/unit-sprite-rework-audit.md @@ -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 | 150..217 x 282..290 | 126..204 x 282..295 | 24.0..34.7 x 45.0..46.3 | w67 h8 b0 | +| batch7-unique-officer | approved-baseline | `unit-ma-liang` | ok | ok | 166..224 x 282..290 | 139..212 x 282..291 | 26.5..35.8 x 45.0..46.3 | w58 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 | diff --git a/src/assets/images/units/unit-ma-liang-actions.png b/src/assets/images/units/unit-ma-liang-actions.png index 030a8ef..17b5508 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 3d44ab1..c88e834 100644 Binary files a/src/assets/images/units/unit-ma-liang.png and b/src/assets/images/units/unit-ma-liang.png differ