Approve Nanman storm shaman handpainted sprite v1

This commit is contained in:
2026-07-01 19:06:27 +09:00
parent 5ec253021a
commit 760c94286c
20 changed files with 106 additions and 48 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 889 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 KiB

View File

@@ -0,0 +1,24 @@
# Nanman Storm Shaman Hand-Painted v1
- source: `handpaint-batch6-nanman-shaman-storm-source-v1.png`
- base status: ok
- action status: ok
- base partial alpha: 0, opaque pixels: 2204834
- action partial alpha: 0, opaque pixels: 5146084
- base frame border hits: 0
- action frame border hits: 0
- base empty frames: 0
- action empty frames: 0
- base bbox width range: 195..223
- base bbox height range: 286..290
- base bottom range: 303..303
- action bbox width range: 195..245
- action bbox height range: 240..290
- action bottom range: 303..303
- contact: `handpaint-batch6-nanman-shaman-storm-v1-contact.png`
- animation: `handpaint-batch6-nanman-shaman-storm-v1-animation.gif`
- before/after: `handpaint-batch6-nanman-shaman-storm-v1-before-after.png`
- scale compare: `handpaint-batch6-nanman-shaman-storm-v1-scale-compare.png`
- battle composite: `handpaint-batch6-nanman-shaman-storm-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

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -6,9 +6,9 @@ This gate catches obvious sprite-art failures before user approval. It does not
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
- Approved baseline units: 37
- Approved baseline units: 38
- Pending approval units: 0
- Queued rework units: 54
- Queued rework units: 53
## Checked Rules

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 409 KiB

View File

@@ -0,0 +1,36 @@
# Unit Sprite Approval Packet: unit-nanman-shaman-storm v1
- Status: approved during continuous production run
- Source art: `docs/handpaint-batch6-nanman-shaman-storm-source-v1.png`
- Contact sheet: `docs/handpaint-batch6-nanman-shaman-storm-v1-contact.png`
- Animation GIF: `docs/handpaint-batch6-nanman-shaman-storm-v1-animation.gif`
- Before/after: `docs/handpaint-batch6-nanman-shaman-storm-v1-before-after.png`
- Scale compare: `docs/handpaint-batch6-nanman-shaman-storm-v1-scale-compare.png`
- Browser check: `docs/handpaint-batch6-nanman-shaman-storm-v1-debug-preview-battle-check.png`
- Current approval board: `docs/unit-sprite-current-approval-board.png`
- Debug preview URL: `http://127.0.0.1:4173/heros_web/?debug&debugSpritePreview=unit-nanman-shaman-storm&v=nanman-shaman-storm-v1-console-clean`
## Visual Decision
Nanman storm shaman v1 is accepted as a wind/lightning tactic variant. The indigo robe mass, pale mask, storm staff, and contained lightning charms distinguish it from both the base and ember shaman sprites at battle scale.
## Technical Checks
- Base partial alpha: `0`
- Action partial alpha: `0`
- Base frame border hits: `0`
- Action frame border hits: `0`
- Base empty frames: `0`
- Action empty frames: `0`
- Base bbox width range: `195..223`
- Base bbox height range: `286..290`
- Base bottom range: `303..303`
- Action bbox width range: `195..245`
- Action bbox height range: `240..290`
- Action bottom range: `303..303`
- Local build: `passed`
- Local browser console errors: `0`
## Notes
The lightning details are bold enough to read at 50px while staying contained inside the frame. The sprite remains fully opaque and stable without external bases, rings, or badges.

View File

@@ -4,9 +4,9 @@ This file is generated by `scripts/write-unit-sprite-next-steps.py`.
## Current Gate
- Approved baseline units: 37
- Approved baseline units: 38
- Pending approval units: 0
- Queued rework units: 54
- Queued rework units: 53
- Manifest: `docs/unit-sprite-rework-manifest.json`
- Audit: `docs/unit-sprite-rework-audit.json`
- Current approval board: not generated until the next pending sample.
@@ -14,7 +14,7 @@ This file is generated by `scripts/write-unit-sprite-next-steps.py`.
## Next Unit Queue
1. `unit-nanman-shaman-storm` - queued-rework, base `border-hits=32`, actions `border-hits=98`
No queued next unit is defined in the manifest.
## Commands Before Approval
@@ -41,5 +41,4 @@ pnpm build
## First Task After Current Approval
- Start with `unit-nanman-shaman-storm`.
- Generate source art, assemble sheets, produce contact/GIF/before-after/scale/battle screenshots, then rerun the gates.
- No first task is defined.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -11,8 +11,8 @@
"batch7-unique-officer": 19
},
"stage_counts": {
"approved-baseline": 37,
"queued-rework": 54
"approved-baseline": 38,
"queued-rework": 53
},
"rows": [
{
@@ -1328,7 +1328,7 @@
},
{
"batch": "batch6-nanman-special",
"review_stage": "queued-rework",
"review_stage": "approved-baseline",
"stem": "unit-nanman-shaman-storm",
"base": {
"key": "unit-nanman-shaman-storm",
@@ -1338,23 +1338,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 1999925,
"border_hits": 32,
"min_width": 243,
"max_width": 246,
"min_height": 280,
"max_height": 281,
"min_bottom": 281,
"max_bottom": 287,
"opaque_pixels": 2204834,
"border_hits": 0,
"min_width": 195,
"max_width": 223,
"min_height": 286,
"max_height": 290,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 3,
"height_swing": 1,
"bottom_swing": 6,
"battle_min_width_px": 38.8,
"battle_max_width_px": 39.3,
"battle_min_height_px": 44.7,
"battle_max_height_px": 44.9,
"status": "border-hits=32"
"width_swing": 28,
"height_swing": 4,
"bottom_swing": 0,
"battle_min_width_px": 31.2,
"battle_max_width_px": 35.6,
"battle_min_height_px": 45.7,
"battle_max_height_px": 46.3,
"status": "ok"
},
"actions": {
"key": "unit-nanman-shaman-storm-actions",
@@ -1364,23 +1364,23 @@
1252
],
"partial_alpha": 0,
"opaque_pixels": 4453376,
"border_hits": 98,
"min_width": 220,
"max_width": 255,
"min_height": 275,
"max_height": 281,
"min_bottom": 274,
"max_bottom": 289,
"opaque_pixels": 5146084,
"border_hits": 0,
"min_width": 195,
"max_width": 245,
"min_height": 240,
"max_height": 290,
"min_bottom": 303,
"max_bottom": 303,
"empty_frames": 0,
"width_swing": 35,
"height_swing": 6,
"bottom_swing": 15,
"battle_min_width_px": 35.1,
"battle_max_width_px": 40.7,
"battle_min_height_px": 43.9,
"battle_max_height_px": 44.9,
"status": "border-hits=98"
"width_swing": 50,
"height_swing": 50,
"bottom_swing": 0,
"battle_min_width_px": 31.2,
"battle_max_width_px": 39.1,
"battle_min_height_px": 38.3,
"battle_max_height_px": 46.3,
"status": "ok"
}
},
{

View File

@@ -29,8 +29,8 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
## Review Stage Counts
- approved-baseline: 37
- queued-rework: 54
- approved-baseline: 38
- queued-rework: 53
## Batch Plan
@@ -75,7 +75,7 @@ Visual review boards are generated by `scripts/render-unit-sprite-review-boards.
| batch6-nanman-special | approved-baseline | `unit-nanman-officer-warlord` | ok | ok | 204..234 x 284..288 | 173..259 x 256..295 | 32.6..37.4 x 45.4..46.0 | w30 h4 b0 |
| 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 | queued-rework | `unit-nanman-shaman-storm` | border-hits=32 | border-hits=98 | 243..246 x 280..281 | 220..255 x 275..281 | 38.8..39.3 x 44.7..44.9 | w3 h1 b6 |
| 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 | queued-rework | `unit-pang-tong` | border-hits=32 | border-hits=98 | 243..246 x 280..281 | 220..255 x 275..281 | 38.8..39.3 x 44.7..44.9 | w3 h1 b6 |
| 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 |

View File

@@ -22,6 +22,7 @@
"unit-nanman-officer-warlord",
"unit-nanman-shaman",
"unit-nanman-shaman-ember",
"unit-nanman-shaman-storm",
"unit-rebel",
"unit-rebel-archer",
"unit-rebel-archer-fire",
@@ -51,9 +52,7 @@
],
"pendingApproval": [],
"currentApprovalCandidate": {},
"nextAfterApproval": [
"unit-nanman-shaman-storm"
],
"nextAfterApproval": [],
"reviewStages": {
"approved-baseline": "Approved hand-painted reference or approved completed unit.",
"pending-approval": "Prepared sample waiting for user approval; do not expand, commit, push, or deploy.",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 598 KiB

After

Width:  |  Height:  |  Size: 1.1 MiB