diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/README.md b/docs/prototype/generation/phase9_0r2_character_animation_01/README.md new file mode 100644 index 00000000..56bf8905 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/README.md @@ -0,0 +1,19 @@ +# Phase 9.0R2 Character Animation Generation + +Task ceiling: four API Mart image calls and USD 5 equivalent total. Intended +calls are one six-frame battle-motion row each for Wayrunner, Farstring and +Kindhand, with one call reserved for retry. The Phase 7 profession anchors are +the identity authority. Generated rows own pose and timing only. + +The six positions in every row are curated into two runtime groups: + +- frames 0-2: ready and two locomotion contacts; +- frames 3-5: profession action anticipation, impact and recovery/hold. + +Hearthguard and Riftblade use the already accepted Phase 6 cycles and require +no paid generation. Runtime VFX remain separate from character frames. + +The initial Wayrunner row is retained as rejected because the evade pose gained +a second blade fragment and the counter pose lost its held dagger. The fourth +and final authorized call is `wayrunner-r2`; no additional retry is allowed in +this task. diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/requests/farstring.json b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/farstring.json new file mode 100644 index 00000000..9c1d94d2 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/farstring.json @@ -0,0 +1,28 @@ +{ + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact bow-ready stance facing screen-right; first forward step with bow held low and cloak trailing; second forward step with clearly exchanged leg contact; planted archer stance raising the bow and reaching to the quiver; full bow draw aimed horizontally to screen-right with string hand beside the cheek; arrow-release follow-through with bow arm extended and draw arm moving back. Every pose changes arms, legs, torso and body weight. The arrow may remain touching the bow only; no detached projectile, enemy, trail, VFX, shadow, text or scenery" + } + }, + "cell": { + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "style": "match the attached Farstring identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, red-brown hair, teal scarf, navy-and-white archer coat, quiver, belts, boots and recurved bow, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/requests/kindhand.json b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/kindhand.json new file mode 100644 index 00000000..9a02404d --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/kindhand.json @@ -0,0 +1,28 @@ +{ + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact lantern-ready stance facing screen-right; first forward step with lantern kept low and free arm counter-swinging; second forward step with clearly exchanged leg contact; planted casting stance lifting the lantern to chest height and opening the free hand toward the ally; healing invocation with lantern raised above shoulder height, knees braced and free hand extended; controlled recovery lowering the lantern toward the original ready stance. Every pose changes arms, legs, torso and body weight. Lantern light stays inside the lantern; no detached glow, particles, ally, VFX, shadow, text or scenery" + } + }, + "cell": { + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "style": "match the attached Kindhand identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, braided dark hair, white-and-navy healer coat with teal ornaments, satchel, boots and teal lantern, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/requests/wayrunner-r2.json b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/wayrunner-r2.json new file mode 100644 index 00000000..e16cf679 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/wayrunner-r2.json @@ -0,0 +1,28 @@ +{ + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion with torso leaning back and knees bent; decisive counter-thrust toward screen-right; balanced recovery into the original ready stance. The same single curved dagger from the identity anchor stays held in the same dominant hand and visibly connected to that hand in all six poses, including evade, thrust and recovery. Never add a second weapon and never detach the dagger, blade, handle, sheath or any clothing fragment. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery" + } + }, + "cell": { + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "style": "match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and exactly one curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/requests/wayrunner.json b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/wayrunner.json new file mode 100644 index 00000000..07dbf067 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/requests/wayrunner.json @@ -0,0 +1,28 @@ +{ + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion crouch with torso leaning away and dagger drawn back; decisive counter-lunge with dagger arm extended toward screen-right and rear leg braced; balanced recovery into the original ready stance. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery" + } + }, + "cell": { + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "style": "match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/base-source.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/base-source.png new file mode 100644 index 00000000..46a36ed8 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/base-source.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/advance_1.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/advance_1.png new file mode 100644 index 00000000..140139bd Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/advance_1.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/draw.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/draw.png new file mode 100644 index 00000000..2eebd572 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/draw.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/raise.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/raise.png new file mode 100644 index 00000000..95157886 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/raise.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/ready.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/ready.png new file mode 100644 index 00000000..dabe7851 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/ready.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/rejected_overflow.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/rejected_overflow.png new file mode 100644 index 00000000..4f47bff3 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/rejected_overflow.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/release.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/release.png new file mode 100644 index 00000000..c305ce1b Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/release.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-0.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-0.png new file mode 100644 index 00000000..897506d8 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-0.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-1.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-1.png new file mode 100644 index 00000000..f2c2b310 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-1.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-2.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-2.png new file mode 100644 index 00000000..bf7b2345 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-2.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-3.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-3.png new file mode 100644 index 00000000..7f18f728 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-3.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-4.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-4.png new file mode 100644 index 00000000..abf87f23 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-4.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-5.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-5.png new file mode 100644 index 00000000..8f8c6e19 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/battle_motion/frame-5.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/frames-manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/frames-manifest.json new file mode 100644 index 00000000..13544200 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/frames/frames-manifest.json @@ -0,0 +1,119 @@ +{ + "ok": true, + "engine": "component-row", + "engine_revision": "7cf852184bff", + "extract_args": { + "segmentation": "projection" + }, + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "rows": [ + { + "state": "battle_motion", + "frames": 6, + "method": "components", + "files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "frame_records": [ + { + "index": 0, + "nontransparent_pixels": 14302, + "bbox": [ + 59, + 20, + 185, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 1, + "nontransparent_pixels": 14144, + "bbox": [ + 36, + 20, + 179, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 2, + "nontransparent_pixels": 14771, + "bbox": [ + 73, + 20, + 217, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 3, + "nontransparent_pixels": 13527, + "bbox": [ + 50, + 20, + 190, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 4, + "nontransparent_pixels": 11505, + "bbox": [ + 76, + 20, + 183, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 5, + "nontransparent_pixels": 15557, + "bbox": [ + 44, + 20, + 209, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + } + ], + "ok": true, + "engine_revision": "7cf852184bff" + } + ], + "errors": [], + "warnings": [] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/manifest.json new file mode 100644 index 00000000..fbbceab5 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/manifest.json @@ -0,0 +1,96 @@ +{ + "characterId": "farstring-p9-0r2", + "engine": "component-row", + "game_input": "sprite-sheet-alpha.png", + "degraded_static_fallback": false, + "curation_applied": false, + "frame_variant": "pixel", + "sprite_sheet_alpha": "sprite-sheet-alpha.png", + "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", + "base_image": "base-source.png", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "animation": { + "cellWidth": 256, + "cellHeight": 256, + "columns": 6, + "rows": { + "battle_motion": { + "row": 0, + "frames": 6, + "fps": 8, + "durations_ms": [ + 125, + 125, + 125, + 125, + 125, + 125 + ], + "loop": false, + "frame_variant": "pixel" + } + } + }, + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/prompts/battle_motion.txt b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/prompts/battle_motion.txt new file mode 100644 index 00000000..8ad91b69 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/prompts/battle_motion.txt @@ -0,0 +1,46 @@ +Create a single horizontal sprite strip for the game character `farstring-p9-0r2` in the state `battle_motion`. + +If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action. + +Character: farstring-p9-0r2. +Style contract: match the attached Farstring identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, red-brown hair, teal scarf, navy-and-white archer coat, quiver, belts, boots and recurved bow, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX. + +Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork. + +Animation action: six readable full-body key poses from left to right: exact bow-ready stance facing screen-right; first forward step with bow held low and cloak trailing; second forward step with clearly exchanged leg contact; planted archer stance raising the bow and reaching to the quiver; full bow draw aimed horizontally to screen-right with string hand beside the cheek; arrow-release follow-through with bow arm extended and draw arm moving back. Every pose changes arms, legs, torso and body weight. The arrow may remain touching the bow only; no detached projectile, enemy, trail, VFX, shadow, text or scenery. + +Anchor lock: +- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows. +- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row. +- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity. +- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors. +- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row. +- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor. +- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts. +- Prefer a subtler animation over any change that mutates the character identity. + + + +Transparency and artifact rules: +- Prefer pose, expression, and silhouette changes over decorative effects. +- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette. +- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels. +- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts. +- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds. +- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character. + +Layout requirements: +- Exactly 6 full-body frames, left to right, in one horizontal row. +- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing. +- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output. +- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose. +- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses. +- Center one complete pose in each slot. No pose may cross into the neighboring slot. +- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image. +- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects. +- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it. +- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot. +- Avoid motion blur. Use clear pose changes readable at 256x256. +- Preserve the same silhouette, face, proportions, palette, material, and props across every frame. + +Output only the sprite strip image. diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/all-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/all-contact.png new file mode 100644 index 00000000..7a8b4ddf Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/all-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/battle_motion-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/battle_motion-contact.png new file mode 100644 index 00000000..5049b730 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/battle_motion-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/battle_motion.gif b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/battle_motion.gif new file mode 100644 index 00000000..101aa91a Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/qa/battle_motion.gif differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.dry-run.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.dry-run.json new file mode 100644 index 00000000..eb158101 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.dry-run.json @@ -0,0 +1,13 @@ +{ + "mode": "dry-run", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6323 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.generation.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.generation.json new file mode 100644 index 00000000..2fee1297 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.generation.json @@ -0,0 +1,18 @@ +{ + "mode": "execute", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6323, + "task_id": "task_01KZV3FRNSMSRPQA7A5CCRCTAM", + "status": "completed", + "bytes": 2697868, + "cost": 0.014, + "credits_cost": 0.14 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.png new file mode 100644 index 00000000..c9baa119 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/raw/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/references/layout-guides/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/references/layout-guides/battle_motion.png new file mode 100644 index 00000000..6e390f06 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/references/layout-guides/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-inspect.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-inspect.report.json new file mode 100644 index 00000000..2b603c32 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-inspect.report.json @@ -0,0 +1,51 @@ +{ + "ok": true, + "engine": "component-row", + "kind": "sprite-gen-inspect-report", + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring", + "states": [ + "battle_motion" + ], + "thresholds": { + "histogram_min": 0.0, + "dhash_min": 0.55, + "motion_min": 0.01 + }, + "rows": [ + { + "state": "battle_motion", + "source": "frames", + "expected_frames": 6, + "found_frames": 6, + "natural_pose_count": 6, + "frame_files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "metrics": { + "histogram_intersection": { + "min": 0.9030313276206934, + "mean": 0.9402975935239378 + }, + "dhash_similarity": { + "min": 0.5625, + "mean": 0.8020833333333334 + }, + "motion_presence": 0.08065396178002451, + "centroid_sigma": { + "x": 11.205703521896254, + "y": 5.292666799306076 + } + }, + "ok": true, + "errors": [], + "warnings": [] + } + ], + "errors": [], + "warnings": [] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-request.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-request.json new file mode 100644 index 00000000..58f8a7d3 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-request.json @@ -0,0 +1,49 @@ +{ + "version": 1, + "kind": "sprite-gen-request", + "engine": "component-row", + "character": { + "id": "farstring-p9-0r2", + "description": "", + "base_image": "base-source.png" + }, + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact bow-ready stance facing screen-right; first forward step with bow held low and cloak trailing; second forward step with clearly exchanged leg contact; planted archer stance raising the bow and reaching to the quiver; full bow draw aimed horizontally to screen-right with string hand beside the cheek; arrow-release follow-through with bow arm extended and draw arm moving back. Every pose changes arms, legs, torso and body weight. The arrow may remain touching the bow only; no detached projectile, enemy, trail, VFX, shadow, text or scenery" + } + }, + "style": "match the attached Farstring identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, red-brown hair, teal scarf, navy-and-white archer coat, quiver, belts, boots and recurved bow, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "motion_phase_guides": false, + "layout": "taxonomy/v1", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-sheet-alpha.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-sheet-alpha.png new file mode 100644 index 00000000..ec246ebd Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-sheet-alpha.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-sheet-alpha.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-sheet-alpha.report.json new file mode 100644 index 00000000..de371a44 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/sprite-sheet-alpha.report.json @@ -0,0 +1,121 @@ +{ + "ok": true, + "engine": "component-row", + "curation_applied": false, + "frame_variant": "pixel", + "errors": [], + "atlas": "sprite-sheet-alpha.png", + "manifest": "manifest.json", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "states": [ + "battle_motion" + ], + "cells": [ + { + "state": "battle_motion", + "frame": 0, + "nontransparent_pixels": 14302, + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 1, + "nontransparent_pixels": 14144, + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 2, + "nontransparent_pixels": 14771, + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 3, + "nontransparent_pixels": 13527, + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 4, + "nontransparent_pixels": 11505, + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 5, + "nontransparent_pixels": 15557, + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ], + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/base-source.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/base-source.png new file mode 100644 index 00000000..01c890c6 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/base-source.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_1.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_1.png new file mode 100644 index 00000000..8d5a1f9d Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_1.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_2.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_2.png new file mode 100644 index 00000000..6a93822d Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_2.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/heal.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/heal.png new file mode 100644 index 00000000..a376c47e Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/heal.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/raise.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/raise.png new file mode 100644 index 00000000..30347f71 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/raise.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/ready.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/ready.png new file mode 100644 index 00000000..a354e963 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/ready.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/recover.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/recover.png new file mode 100644 index 00000000..ed63cf67 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/recover.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-0.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-0.png new file mode 100644 index 00000000..ce7ac961 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-0.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-1.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-1.png new file mode 100644 index 00000000..e519869f Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-1.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-2.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-2.png new file mode 100644 index 00000000..820068a6 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-2.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-3.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-3.png new file mode 100644 index 00000000..a06055c8 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-3.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-4.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-4.png new file mode 100644 index 00000000..579ea3d4 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-4.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-5.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-5.png new file mode 100644 index 00000000..586af500 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/battle_motion/frame-5.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/frames-manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/frames-manifest.json new file mode 100644 index 00000000..89cddd7e --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/frames/frames-manifest.json @@ -0,0 +1,117 @@ +{ + "ok": true, + "engine": "component-row", + "engine_revision": "7cf852184bff", + "extract_args": {}, + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "rows": [ + { + "state": "battle_motion", + "frames": 6, + "method": "components", + "files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "frame_records": [ + { + "index": 0, + "nontransparent_pixels": 13219, + "bbox": [ + 87, + 20, + 179, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 1, + "nontransparent_pixels": 14360, + "bbox": [ + 74, + 20, + 186, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 2, + "nontransparent_pixels": 14972, + "bbox": [ + 73, + 20, + 189, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 3, + "nontransparent_pixels": 14199, + "bbox": [ + 71, + 20, + 191, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 4, + "nontransparent_pixels": 12135, + "bbox": [ + 81, + 20, + 182, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 5, + "nontransparent_pixels": 13190, + "bbox": [ + 86, + 20, + 179, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + } + ], + "ok": true, + "engine_revision": "7cf852184bff" + } + ], + "errors": [], + "warnings": [] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/manifest.json new file mode 100644 index 00000000..c4dc9b9d --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/manifest.json @@ -0,0 +1,96 @@ +{ + "characterId": "kindhand-p9-0r2", + "engine": "component-row", + "game_input": "sprite-sheet-alpha.png", + "degraded_static_fallback": false, + "curation_applied": false, + "frame_variant": "pixel", + "sprite_sheet_alpha": "sprite-sheet-alpha.png", + "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", + "base_image": "base-source.png", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "animation": { + "cellWidth": 256, + "cellHeight": 256, + "columns": 6, + "rows": { + "battle_motion": { + "row": 0, + "frames": 6, + "fps": 8, + "durations_ms": [ + 125, + 125, + 125, + 125, + 125, + 125 + ], + "loop": false, + "frame_variant": "pixel" + } + } + }, + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/prompts/battle_motion.txt b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/prompts/battle_motion.txt new file mode 100644 index 00000000..d97bf590 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/prompts/battle_motion.txt @@ -0,0 +1,46 @@ +Create a single horizontal sprite strip for the game character `kindhand-p9-0r2` in the state `battle_motion`. + +If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action. + +Character: kindhand-p9-0r2. +Style contract: match the attached Kindhand identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, braided dark hair, white-and-navy healer coat with teal ornaments, satchel, boots and teal lantern, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX. + +Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork. + +Animation action: six readable full-body key poses from left to right: exact lantern-ready stance facing screen-right; first forward step with lantern kept low and free arm counter-swinging; second forward step with clearly exchanged leg contact; planted casting stance lifting the lantern to chest height and opening the free hand toward the ally; healing invocation with lantern raised above shoulder height, knees braced and free hand extended; controlled recovery lowering the lantern toward the original ready stance. Every pose changes arms, legs, torso and body weight. Lantern light stays inside the lantern; no detached glow, particles, ally, VFX, shadow, text or scenery. + +Anchor lock: +- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows. +- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row. +- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity. +- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors. +- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row. +- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor. +- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts. +- Prefer a subtler animation over any change that mutates the character identity. + + + +Transparency and artifact rules: +- Prefer pose, expression, and silhouette changes over decorative effects. +- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette. +- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels. +- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts. +- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds. +- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character. + +Layout requirements: +- Exactly 6 full-body frames, left to right, in one horizontal row. +- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing. +- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output. +- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose. +- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses. +- Center one complete pose in each slot. No pose may cross into the neighboring slot. +- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image. +- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects. +- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it. +- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot. +- Avoid motion blur. Use clear pose changes readable at 256x256. +- Preserve the same silhouette, face, proportions, palette, material, and props across every frame. + +Output only the sprite strip image. diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/all-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/all-contact.png new file mode 100644 index 00000000..46fb7814 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/all-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/battle_motion-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/battle_motion-contact.png new file mode 100644 index 00000000..45c82126 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/battle_motion-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/battle_motion.gif b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/battle_motion.gif new file mode 100644 index 00000000..7d92cb6d Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/qa/battle_motion.gif differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.dry-run.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.dry-run.json new file mode 100644 index 00000000..b5aeda3d --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.dry-run.json @@ -0,0 +1,13 @@ +{ + "mode": "dry-run", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6386 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.generation.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.generation.json new file mode 100644 index 00000000..eb9e4213 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.generation.json @@ -0,0 +1,18 @@ +{ + "mode": "execute", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6386, + "task_id": "task_01KZV3FS97ACAN816CQ9759PHC", + "status": "completed", + "bytes": 2980744, + "cost": 0.014, + "credits_cost": 0.14 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.png new file mode 100644 index 00000000..d805c0c9 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/raw/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/references/layout-guides/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/references/layout-guides/battle_motion.png new file mode 100644 index 00000000..6e390f06 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/references/layout-guides/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-inspect.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-inspect.report.json new file mode 100644 index 00000000..e73a10eb --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-inspect.report.json @@ -0,0 +1,51 @@ +{ + "ok": true, + "engine": "component-row", + "kind": "sprite-gen-inspect-report", + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand", + "states": [ + "battle_motion" + ], + "thresholds": { + "histogram_min": 0.0, + "dhash_min": 0.55, + "motion_min": 0.01 + }, + "rows": [ + { + "state": "battle_motion", + "source": "frames", + "expected_frames": 6, + "found_frames": 6, + "natural_pose_count": 6, + "frame_files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "metrics": { + "histogram_intersection": { + "min": 0.9099098027554764, + "mean": 0.9387761506313932 + }, + "dhash_similarity": { + "min": 0.875, + "mean": 0.9135416666666667 + }, + "motion_presence": 0.06173651003370098, + "centroid_sigma": { + "x": 1.1887552883033723, + "y": 1.7503021164440575 + } + }, + "ok": true, + "errors": [], + "warnings": [] + } + ], + "errors": [], + "warnings": [] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-request.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-request.json new file mode 100644 index 00000000..beececf3 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-request.json @@ -0,0 +1,49 @@ +{ + "version": 1, + "kind": "sprite-gen-request", + "engine": "component-row", + "character": { + "id": "kindhand-p9-0r2", + "description": "", + "base_image": "base-source.png" + }, + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact lantern-ready stance facing screen-right; first forward step with lantern kept low and free arm counter-swinging; second forward step with clearly exchanged leg contact; planted casting stance lifting the lantern to chest height and opening the free hand toward the ally; healing invocation with lantern raised above shoulder height, knees braced and free hand extended; controlled recovery lowering the lantern toward the original ready stance. Every pose changes arms, legs, torso and body weight. Lantern light stays inside the lantern; no detached glow, particles, ally, VFX, shadow, text or scenery" + } + }, + "style": "match the attached Kindhand identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, braided dark hair, white-and-navy healer coat with teal ornaments, satchel, boots and teal lantern, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "motion_phase_guides": false, + "layout": "taxonomy/v1", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-sheet-alpha.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-sheet-alpha.png new file mode 100644 index 00000000..82842bae Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-sheet-alpha.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-sheet-alpha.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-sheet-alpha.report.json new file mode 100644 index 00000000..4c4464d7 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/sprite-sheet-alpha.report.json @@ -0,0 +1,121 @@ +{ + "ok": true, + "engine": "component-row", + "curation_applied": false, + "frame_variant": "pixel", + "errors": [], + "atlas": "sprite-sheet-alpha.png", + "manifest": "manifest.json", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "states": [ + "battle_motion" + ], + "cells": [ + { + "state": "battle_motion", + "frame": 0, + "nontransparent_pixels": 13219, + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 1, + "nontransparent_pixels": 14360, + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 2, + "nontransparent_pixels": 14972, + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 3, + "nontransparent_pixels": 14199, + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 4, + "nontransparent_pixels": 12135, + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 5, + "nontransparent_pixels": 13190, + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ], + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/base-source.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/base-source.png new file mode 100644 index 00000000..91f8b666 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/base-source.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_1.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_1.png new file mode 100644 index 00000000..e2f1d944 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_1.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_2.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_2.png new file mode 100644 index 00000000..2234c28f Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_2.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/counter.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/counter.png new file mode 100644 index 00000000..797b35c7 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/counter.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/evade.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/evade.png new file mode 100644 index 00000000..8f16d45a Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/evade.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/ready.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/ready.png new file mode 100644 index 00000000..4b2b0eb2 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/ready.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/recover.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/recover.png new file mode 100644 index 00000000..aa7522a6 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/recover.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curation-inputs/counter-expanded.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curation-inputs/counter-expanded.png new file mode 100644 index 00000000..44d139ed Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curation-inputs/counter-expanded.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-0.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-0.png new file mode 100644 index 00000000..0bb08062 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-0.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-1.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-1.png new file mode 100644 index 00000000..5a796ebc Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-1.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-2.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-2.png new file mode 100644 index 00000000..de659280 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-2.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-3.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-3.png new file mode 100644 index 00000000..2aa6e9d7 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-3.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-4.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-4.png new file mode 100644 index 00000000..ac706a12 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-4.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-5.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-5.png new file mode 100644 index 00000000..3f4062e8 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/battle_motion/frame-5.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/frames-manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/frames-manifest.json new file mode 100644 index 00000000..1281f692 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/frames/frames-manifest.json @@ -0,0 +1,121 @@ +{ + "ok": true, + "engine": "component-row", + "engine_revision": "7cf852184bff", + "extract_args": { + "segmentation": "projection" + }, + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "rows": [ + { + "state": "battle_motion", + "frames": 6, + "method": "components", + "files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "frame_records": [ + { + "index": 0, + "nontransparent_pixels": 11901, + "bbox": [ + 58, + 20, + 181, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 1, + "nontransparent_pixels": 13545, + "bbox": [ + 86, + 20, + 228, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 2, + "nontransparent_pixels": 12866, + "bbox": [ + 68, + 20, + 199, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 3, + "nontransparent_pixels": 20379, + "bbox": [ + 0, + 20, + 185, + 236 + ], + "edge_pixels": 37, + "chroma_adjacent_pixels": 0 + }, + { + "index": 4, + "nontransparent_pixels": 14865, + "bbox": [ + 55, + 20, + 217, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 5, + "nontransparent_pixels": 12432, + "bbox": [ + 56, + 20, + 189, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + } + ], + "ok": true, + "engine_revision": "7cf852184bff" + } + ], + "errors": [], + "warnings": [ + "battle_motion: frame 03 has 37 non-transparent edge pixels" + ] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/manifest.json new file mode 100644 index 00000000..2d579606 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/manifest.json @@ -0,0 +1,96 @@ +{ + "characterId": "wayrunner-p9-0r2-r2", + "engine": "component-row", + "game_input": "sprite-sheet-alpha.png", + "degraded_static_fallback": false, + "curation_applied": false, + "frame_variant": "pixel", + "sprite_sheet_alpha": "sprite-sheet-alpha.png", + "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", + "base_image": "base-source.png", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "animation": { + "cellWidth": 256, + "cellHeight": 256, + "columns": 6, + "rows": { + "battle_motion": { + "row": 0, + "frames": 6, + "fps": 8, + "durations_ms": [ + 125, + 125, + 125, + 125, + 125, + 125 + ], + "loop": false, + "frame_variant": "pixel" + } + } + }, + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/prompts/battle_motion.txt b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/prompts/battle_motion.txt new file mode 100644 index 00000000..7fe5d06f --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/prompts/battle_motion.txt @@ -0,0 +1,46 @@ +Create a single horizontal sprite strip for the game character `wayrunner-p9-0r2-r2` in the state `battle_motion`. + +If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action. + +Character: wayrunner-p9-0r2-r2. +Style contract: match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and exactly one curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX. + +Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork. + +Animation action: six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion with torso leaning back and knees bent; decisive counter-thrust toward screen-right; balanced recovery into the original ready stance. The same single curved dagger from the identity anchor stays held in the same dominant hand and visibly connected to that hand in all six poses, including evade, thrust and recovery. Never add a second weapon and never detach the dagger, blade, handle, sheath or any clothing fragment. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery. + +Anchor lock: +- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows. +- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row. +- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity. +- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors. +- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row. +- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor. +- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts. +- Prefer a subtler animation over any change that mutates the character identity. + + + +Transparency and artifact rules: +- Prefer pose, expression, and silhouette changes over decorative effects. +- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette. +- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels. +- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts. +- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds. +- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character. + +Layout requirements: +- Exactly 6 full-body frames, left to right, in one horizontal row. +- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing. +- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output. +- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose. +- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses. +- Center one complete pose in each slot. No pose may cross into the neighboring slot. +- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image. +- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects. +- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it. +- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot. +- Avoid motion blur. Use clear pose changes readable at 256x256. +- Preserve the same silhouette, face, proportions, palette, material, and props across every frame. + +Output only the sprite strip image. diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/all-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/all-contact.png new file mode 100644 index 00000000..d6f933f8 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/all-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/battle_motion-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/battle_motion-contact.png new file mode 100644 index 00000000..9d96ddbd Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/battle_motion-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/battle_motion.gif b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/battle_motion.gif new file mode 100644 index 00000000..1b4c9823 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/qa/battle_motion.gif differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.dry-run.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.dry-run.json new file mode 100644 index 00000000..c019c2ce --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.dry-run.json @@ -0,0 +1,13 @@ +{ + "mode": "dry-run", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6474 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.generation.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.generation.json new file mode 100644 index 00000000..fdb821bc --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.generation.json @@ -0,0 +1,18 @@ +{ + "mode": "execute", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6474, + "task_id": "task_01KZV3X3Q3WZ178AC8MXNEDXZG", + "status": "completed", + "bytes": 2647860, + "cost": 0.014, + "credits_cost": 0.14 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.png new file mode 100644 index 00000000..deeeee60 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/raw/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/references/layout-guides/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/references/layout-guides/battle_motion.png new file mode 100644 index 00000000..6e390f06 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/references/layout-guides/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-inspect.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-inspect.report.json new file mode 100644 index 00000000..61146a6d --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-inspect.report.json @@ -0,0 +1,55 @@ +{ + "ok": true, + "engine": "component-row", + "kind": "sprite-gen-inspect-report", + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2", + "states": [ + "battle_motion" + ], + "thresholds": { + "histogram_min": 0.0, + "dhash_min": 0.55, + "motion_min": 0.01 + }, + "rows": [ + { + "state": "battle_motion", + "source": "frames", + "expected_frames": 6, + "found_frames": 6, + "natural_pose_count": 6, + "frame_files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "metrics": { + "histogram_intersection": { + "min": 0.8931689880888273, + "mean": 0.9415338242405802 + }, + "dhash_similarity": { + "min": 0.5625, + "mean": 0.7239583333333334 + }, + "motion_presence": 0.1282040824142157, + "centroid_sigma": { + "x": 18.61100372100719, + "y": 3.5107240174891396 + } + }, + "ok": true, + "errors": [], + "warnings": [ + "battle_motion: frame 03 has 37 non-transparent edge pixels" + ] + } + ], + "errors": [], + "warnings": [ + "battle_motion: frame 03 has 37 non-transparent edge pixels" + ] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-request.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-request.json new file mode 100644 index 00000000..e1aa1518 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-request.json @@ -0,0 +1,49 @@ +{ + "version": 1, + "kind": "sprite-gen-request", + "engine": "component-row", + "character": { + "id": "wayrunner-p9-0r2-r2", + "description": "", + "base_image": "base-source.png" + }, + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion with torso leaning back and knees bent; decisive counter-thrust toward screen-right; balanced recovery into the original ready stance. The same single curved dagger from the identity anchor stays held in the same dominant hand and visibly connected to that hand in all six poses, including evade, thrust and recovery. Never add a second weapon and never detach the dagger, blade, handle, sheath or any clothing fragment. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery" + } + }, + "style": "match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and exactly one curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "motion_phase_guides": false, + "layout": "taxonomy/v1", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-sheet-alpha.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-sheet-alpha.png new file mode 100644 index 00000000..731cbe5f Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-sheet-alpha.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-sheet-alpha.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-sheet-alpha.report.json new file mode 100644 index 00000000..50f95a73 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/sprite-sheet-alpha.report.json @@ -0,0 +1,121 @@ +{ + "ok": true, + "engine": "component-row", + "curation_applied": false, + "frame_variant": "pixel", + "errors": [], + "atlas": "sprite-sheet-alpha.png", + "manifest": "manifest.json", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "states": [ + "battle_motion" + ], + "cells": [ + { + "state": "battle_motion", + "frame": 0, + "nontransparent_pixels": 11901, + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 1, + "nontransparent_pixels": 13545, + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 2, + "nontransparent_pixels": 12866, + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 3, + "nontransparent_pixels": 20379, + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 4, + "nontransparent_pixels": 14865, + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 5, + "nontransparent_pixels": 12432, + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ], + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/base-source.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/base-source.png new file mode 100644 index 00000000..91f8b666 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/base-source.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-0.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-0.png new file mode 100644 index 00000000..fdaac4d1 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-0.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-1.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-1.png new file mode 100644 index 00000000..e611c56e Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-1.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-2.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-2.png new file mode 100644 index 00000000..b20f68c2 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-2.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-3.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-3.png new file mode 100644 index 00000000..7e67ff3a Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-3.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-4.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-4.png new file mode 100644 index 00000000..757b15d3 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-4.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-5.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-5.png new file mode 100644 index 00000000..4e4f60fc Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/battle_motion/frame-5.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/frames-manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/frames-manifest.json new file mode 100644 index 00000000..ab7ee502 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/frames/frames-manifest.json @@ -0,0 +1,119 @@ +{ + "ok": true, + "engine": "component-row", + "engine_revision": "7cf852184bff", + "extract_args": { + "segmentation": "projection" + }, + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "rows": [ + { + "state": "battle_motion", + "frames": 6, + "method": "components", + "files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "frame_records": [ + { + "index": 0, + "nontransparent_pixels": 12304, + "bbox": [ + 55, + 20, + 191, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 1, + "nontransparent_pixels": 12605, + "bbox": [ + 92, + 20, + 219, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 2, + "nontransparent_pixels": 11795, + "bbox": [ + 51, + 20, + 163, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 3, + "nontransparent_pixels": 22113, + "bbox": [ + 25, + 20, + 217, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 4, + "nontransparent_pixels": 14657, + "bbox": [ + 10, + 20, + 184, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + }, + { + "index": 5, + "nontransparent_pixels": 12745, + "bbox": [ + 53, + 20, + 189, + 236 + ], + "edge_pixels": 0, + "chroma_adjacent_pixels": 0 + } + ], + "ok": true, + "engine_revision": "7cf852184bff" + } + ], + "errors": [], + "warnings": [] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/manifest.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/manifest.json new file mode 100644 index 00000000..24744400 --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/manifest.json @@ -0,0 +1,96 @@ +{ + "characterId": "wayrunner-p9-0r2", + "engine": "component-row", + "game_input": "sprite-sheet-alpha.png", + "degraded_static_fallback": false, + "curation_applied": false, + "frame_variant": "pixel", + "sprite_sheet_alpha": "sprite-sheet-alpha.png", + "sprite_sheet_alpha_report": "sprite-sheet-alpha.report.json", + "base_image": "base-source.png", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "animation": { + "cellWidth": 256, + "cellHeight": 256, + "columns": 6, + "rows": { + "battle_motion": { + "row": 0, + "frames": 6, + "fps": 8, + "durations_ms": [ + 125, + 125, + 125, + 125, + 125, + 125 + ], + "loop": false, + "frame_variant": "pixel" + } + } + }, + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/prompts/battle_motion.txt b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/prompts/battle_motion.txt new file mode 100644 index 00000000..f2436ddd --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/prompts/battle_motion.txt @@ -0,0 +1,46 @@ +Create a single horizontal sprite strip for the game character `wayrunner-p9-0r2` in the state `battle_motion`. + +If this is a pre-idle/simple run, the attached base image may be used as the canonical character design. In direction-anchor mode, do not use base images for final action rows; accepted idle/direction anchors own row identity. Use the attached accepted idle/direction anchor as the canonical character design for this row. If a state anchor is attached for a non-locomotion state, treat it as approved state vocabulary only. Use the attached layout guide image only for frame count, slot spacing, centering, and safe padding. If an additional generated row strip is attached, use it only as a motion reference, never as a replacement identity source. Do not simply copy the still reference pose. Generate distinct animation poses that create a readable cycle or action. + +Character: wayrunner-p9-0r2. +Style contract: match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX. + +Use this prompt as an authoritative sprite-production spec. Do not expand it into a polished illustration, painterly character image, anime key art, 3D render, vector mascot, glossy app icon, realistic portrait, or marketing artwork. + +Animation action: six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion crouch with torso leaning away and dagger drawn back; decisive counter-lunge with dagger arm extended toward screen-right and rear leg braced; balanced recovery into the original ready stance. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery. + +Anchor lock: +- Accepted idle/direction anchors own character identity, outfit details, colors, face design, asymmetric markings, and side-specific accessories for final action rows. +- Base character images and original character sheets are pre-idle sources only. Do not reinterpret or reintroduce base-character details inside a direction-anchor action row. +- This row owns motion only. Spend the variation budget on limb contacts, arm counter-swing, body height, torso lean, head bob, hair bounce, and loop continuity. +- Do not redesign or reinterpret identity details while animating. Keep face, hair shape, markings, palette, outline weight, body proportions, outfit, props, and silhouette copied from the approved anchors. +- Preserve side-specific features exactly as the approved anchors show them. Do not solve hairpin side, earring side, logos, handed props, scars, one-sided markings, asymmetric clothing, or lighting cues from scratch inside the row. +- When generating a paired left/right row, use the paired row reference only for timing, scale, and animation intensity. Rotate the body, feet, shoulders, face angle, and gaze to the target facing, but keep identity details attached according to the accepted target-direction anchor. +- For cyclic locomotion, do not let a single running/walking pose anchor determine every frame's leg phase. Use multi-pose motion references and the layout phase guide for foot contacts. +- Prefer a subtler animation over any change that mutates the character identity. + + + +Transparency and artifact rules: +- Prefer pose, expression, and silhouette changes over decorative effects. +- Effects are allowed only when state-relevant, opaque, hard-edged, sprite-like, fully inside the same frame slot, and physically touching or overlapping the character silhouette. +- Do not draw detached effects: floating stars, loose sparkles, floating punctuation, floating icons, separated smoke clouds, loose dust, disconnected outline bits, or stray pixels. +- Do not draw wave marks, motion arcs, speed lines, action streaks, afterimages, blur, smears, halos, glows, auras, floor patches, cast shadows, contact shadows, drop shadows, oval floor shadows, landing marks, or impact bursts. +- Do not include text, labels, frame numbers, visible grids, guide marks, speech bubbles, thought bubbles, UI panels, code snippets, scenery, checkerboard transparency, white backgrounds, or black backgrounds. +- Reject any pose that is cropped, overlaps another pose, crosses into a neighboring frame slot, or creates a separate disconnected component that is not attached to the character. + +Layout requirements: +- Exactly 6 full-body frames, left to right, in one horizontal row. +- The attached layout guide shows the 6 frame boxes, inner safe area, and optional motion phase hints for this row. Follow its slot count, spacing, centering, padding, and phase timing. +- Do not reproduce the layout guide itself: no visible boxes, guide lines, center marks, labels, stick figures, guide colors, or guide background may appear in the output. +- Treat the image as 6 equal-width invisible 256x256 frame slots. Fill every slot: each requested slot must contain exactly one complete full-body pose. +- Spread the 6 poses evenly across the whole image width. Do not leave any requested slot blank or create large empty gaps between poses. +- Center one complete pose in each slot. No pose may cross into the neighboring slot. +- Use a perfectly flat pure magenta #FF00FF chroma-key background across the whole image. +- Do not use #FF00FF, pure magenta, or chroma-adjacent colors in the character, highlights, props, shadows, or effects. +- Keep the rendering faithful to the attached reference sprite: same outline weight, same palette, same detail level — do not restyle it. +- Keep every frame self-contained with at least 24 px horizontal and 20 px vertical safe padding. No character body part should be clipped by the frame slot. +- Avoid motion blur. Use clear pose changes readable at 256x256. +- Preserve the same silhouette, face, proportions, palette, material, and props across every frame. + +Output only the sprite strip image. diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/all-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/all-contact.png new file mode 100644 index 00000000..8be37332 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/all-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/battle_motion-contact.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/battle_motion-contact.png new file mode 100644 index 00000000..1d45db4f Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/battle_motion-contact.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/battle_motion.gif b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/battle_motion.gif new file mode 100644 index 00000000..f0afee44 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/qa/battle_motion.gif differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.dry-run.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.dry-run.json new file mode 100644 index 00000000..1bad26bf --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.dry-run.json @@ -0,0 +1,13 @@ +{ + "mode": "dry-run", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6228 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.generation.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.generation.json new file mode 100644 index 00000000..a60ec19e --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.generation.json @@ -0,0 +1,18 @@ +{ + "mode": "execute", + "model": "gpt-image-2", + "size": "16:9", + "resolution": "2k", + "output": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.png", + "local_references": [ + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/base-source.png", + "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/references/layout-guides/battle_motion.png" + ], + "remote_reference_count": 0, + "prompt_chars": 6228, + "task_id": "task_01KZV3FRMGNR223SCBT897CN6Y", + "status": "completed", + "bytes": 2666921, + "cost": 0.014, + "credits_cost": 0.14 +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.png new file mode 100644 index 00000000..fa321638 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/raw/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/references/layout-guides/battle_motion.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/references/layout-guides/battle_motion.png new file mode 100644 index 00000000..6e390f06 Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/references/layout-guides/battle_motion.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-inspect.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-inspect.report.json new file mode 100644 index 00000000..7b6961dd --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-inspect.report.json @@ -0,0 +1,55 @@ +{ + "ok": true, + "engine": "component-row", + "kind": "sprite-gen-inspect-report", + "run_dir": "/Users/wusumac/Documents/game/aetherbound_guild/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner", + "states": [ + "battle_motion" + ], + "thresholds": { + "histogram_min": 0.0, + "dhash_min": 0.55, + "motion_min": 0.01 + }, + "rows": [ + { + "state": "battle_motion", + "source": "frames", + "expected_frames": 6, + "found_frames": 6, + "natural_pose_count": 6, + "frame_files": [ + "frames/battle_motion/frame-0.png", + "frames/battle_motion/frame-1.png", + "frames/battle_motion/frame-2.png", + "frames/battle_motion/frame-3.png", + "frames/battle_motion/frame-4.png", + "frames/battle_motion/frame-5.png" + ], + "metrics": { + "histogram_intersection": { + "min": 0.8875354710163257, + "mean": 0.937255362229763 + }, + "dhash_similarity": { + "min": 0.546875, + "mean": 0.6947916666666667 + }, + "motion_presence": 0.14238841337316177, + "centroid_sigma": { + "x": 18.67242674123238, + "y": 3.0218324064914084 + } + }, + "ok": true, + "errors": [], + "warnings": [ + "battle_motion: dHash silhouette similarity is low (0.547 < 0.550)" + ] + } + ], + "errors": [], + "warnings": [ + "battle_motion: dHash silhouette similarity is low (0.547 < 0.550)" + ] +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-request.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-request.json new file mode 100644 index 00000000..8cb07e0d --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-request.json @@ -0,0 +1,49 @@ +{ + "version": 1, + "kind": "sprite-gen-request", + "engine": "component-row", + "character": { + "id": "wayrunner-p9-0r2", + "description": "", + "base_image": "base-source.png" + }, + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "chroma_key": { + "name": "magenta", + "hex": "#FF00FF", + "rgb": [ + 255, + 0, + 255 + ], + "selection": "manual" + }, + "states": { + "battle_motion": { + "frames": 6, + "fps": 8, + "loop": false, + "action": "six readable full-body key poses from left to right: exact ready stance facing screen-right; first forward step with opposite arm swing; second forward step with clearly exchanged leg contact; low side-evasion crouch with torso leaning away and dagger drawn back; decisive counter-lunge with dagger arm extended toward screen-right and rear leg braced; balanced recovery into the original ready stance. Every pose changes limbs and body weight. No enemy, slash effect, detached VFX, shadow, text or scenery" + } + }, + "style": "match the attached Wayrunner identity anchor exactly: Japanese 2D hand-drawn game sprite, clean fine ink, controlled cel shading, identical face, black hair with cyan forelock, white-and-navy asymmetric coat, belts, boots and curved dagger, same right-facing three-quarter camera and proportions; transparent runtime sprite production quality, no redesign, no chibi distortion and no detached VFX", + "motion_phase_guides": false, + "layout": "taxonomy/v1", + "fit": { + "resample": "lanczos", + "align_x": "foot-centroid", + "align_y": "bottom", + "pixel_perfect": false + }, + "chroma": { + "mode": "rgb", + "unmix_reach": 4, + "spill_max_fraction": 0.005 + } +} diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-sheet-alpha.png b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-sheet-alpha.png new file mode 100644 index 00000000..ef946d1a Binary files /dev/null and b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-sheet-alpha.png differ diff --git a/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-sheet-alpha.report.json b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-sheet-alpha.report.json new file mode 100644 index 00000000..b60b51cb --- /dev/null +++ b/docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner/sprite-sheet-alpha.report.json @@ -0,0 +1,121 @@ +{ + "ok": true, + "engine": "component-row", + "curation_applied": false, + "frame_variant": "pixel", + "errors": [], + "atlas": "sprite-sheet-alpha.png", + "manifest": "manifest.json", + "cell": { + "shape": "square", + "width": 256, + "height": 256, + "safe_margin_x": 24, + "safe_margin_y": 20 + }, + "states": [ + "battle_motion" + ], + "cells": [ + { + "state": "battle_motion", + "frame": 0, + "nontransparent_pixels": 12304, + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 1, + "nontransparent_pixels": 12605, + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 2, + "nontransparent_pixels": 11795, + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 3, + "nontransparent_pixels": 22113, + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 4, + "nontransparent_pixels": 14657, + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "state": "battle_motion", + "frame": 5, + "nontransparent_pixels": 12745, + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ], + "frame_layout": { + "sheetWidth": 1536, + "sheetHeight": 256, + "cellWidth": 256, + "cellHeight": 256, + "rows": { + "battle_motion": [ + { + "x": 0, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 256, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 512, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 768, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1024, + "y": 0, + "w": 256, + "h": 256 + }, + { + "x": 1280, + "y": 0, + "w": 256, + "h": 256 + } + ] + } + } +} diff --git a/runtime/assets/animations/asset-manifest.json b/runtime/assets/animations/asset-manifest.json new file mode 100644 index 00000000..b9cbacd0 --- /dev/null +++ b/runtime/assets/animations/asset-manifest.json @@ -0,0 +1,657 @@ +{ + "kind": "aetherbound-p9-0r2-runtime-animation-assets", + "generated_calls": 4, + "generated_cost_usd": 0.056, + "rejected": [ + { + "run": "wayrunner", + "reason": "detached duplicate blade fragment and missing held dagger at counter impact" + } + ], + "records": [ + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/idle/frames/frame-0.png", + "runtime": "runtime/assets/animations/hearthguard/idle/frame-0.png", + "sha256": "8b4154ad9b311d9b51a2c68fe0a88b8d9bbfd1c866b7fc927fdec2a5e8c5be78", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/idle/frames/frame-1.png", + "runtime": "runtime/assets/animations/hearthguard/idle/frame-1.png", + "sha256": "1171faa3fa1997f2893c322204ffb52d55e65c2645ed32736472f0cfbfbad53d", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/idle/frames/frame-2.png", + "runtime": "runtime/assets/animations/hearthguard/idle/frame-2.png", + "sha256": "411187fa79fb8c3febb84e4b98cf773bd9c934f8e0d727427c7d06e1abc5bfc0", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/idle/frames/frame-3.png", + "runtime": "runtime/assets/animations/hearthguard/idle/frame-3.png", + "sha256": "3ccb23b607b08be80f64298e586ea138c8c0aade2a9206b452450ad62a0f66b2", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/idle/frames/frame-4.png", + "runtime": "runtime/assets/animations/hearthguard/idle/frame-4.png", + "sha256": "a3bb8880d6f324e21d4fbb1b1786dce10027cd46d24232ae8cc1d0a9aa702b77", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/idle/frames/frame-5.png", + "runtime": "runtime/assets/animations/hearthguard/idle/frame-5.png", + "sha256": "e05b9aab9f2e1e0ca0fb56b61bd339c4422eb590afdce73e3ed95c955d555ded", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-0.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-0.png", + "sha256": "843529741b006201c24cc7bcedee8545da82f384564772043ab7d2b4b17be8e8", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-1.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-1.png", + "sha256": "cfb822896b3ef93afc154241cb30030202f93d8b750a8c46b9d2c807bcdd5324", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-2.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-2.png", + "sha256": "91b3bd25e6d2647e160653236c4ddeb11a92b6372b124a58436181b675a7e9e0", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-3.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-3.png", + "sha256": "d4dc97c3b741cf2ceecca2c444a1ebf9dc1a822b967589f4c43bf23318b0adda", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-4.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-4.png", + "sha256": "1664f6203664d9c5796d277c3a29b9d64f01d009c34c34141931139a1df5a1bf", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-5.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-5.png", + "sha256": "a33a1c1068a5d26956309b80583bba341c773d152941370da34eb91cb185c343", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-6.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-6.png", + "sha256": "050393815f7489cd32d3d03345349816f6b4c5ece5b0e09c45831be5165503ca", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/advance/frames/frame-7.png", + "runtime": "runtime/assets/animations/hearthguard/advance/frame-7.png", + "sha256": "11e668f459783dda6c3ffd7d9d070c02e2ff903c1d03af4cbafec3a62603ba5f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/guard/frames/frame-0.png", + "runtime": "runtime/assets/animations/hearthguard/guard/frame-0.png", + "sha256": "fbf58045e3046305be9ad6305e12c6381dec6b019865f13756f666040ce2d48a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/guard/frames/frame-1.png", + "runtime": "runtime/assets/animations/hearthguard/guard/frame-1.png", + "sha256": "ab5957610be3a1e317e0c06dc9fd74461db745b62e07d0b43739b0cb0fe25b9e", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/guard/frames/frame-2.png", + "runtime": "runtime/assets/animations/hearthguard/guard/frame-2.png", + "sha256": "1742d94e056a3399b52b4155ae1562bde5570bb9d80ae108511cb5438935d21f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/guard/frames/frame-3.png", + "runtime": "runtime/assets/animations/hearthguard/guard/frame-3.png", + "sha256": "6193b3127be71296fca7add2f7b603ebf224004a3b9f36b3c35ba34de8683f6f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/basic_attack/frames/frame-0.png", + "runtime": "runtime/assets/animations/hearthguard/basic_attack/frame-0.png", + "sha256": "01690dce426e3517c04a03259b3205aab6092bbdc30a2b493cd0a2754261dc3b", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/basic_attack/frames/frame-1.png", + "runtime": "runtime/assets/animations/hearthguard/basic_attack/frame-1.png", + "sha256": "b570ae04e020b6f3fb6d49f66744986aa0fff032a6a1f1e974b37eeef0e6506c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/basic_attack/frames/frame-2.png", + "runtime": "runtime/assets/animations/hearthguard/basic_attack/frame-2.png", + "sha256": "8fd5a8962a3d76d31cf995601670d33b357f53728c66ae02b7ee03604c5aec3e", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/basic_attack/frames/frame-3.png", + "runtime": "runtime/assets/animations/hearthguard/basic_attack/frame-3.png", + "sha256": "3da7ef4279685ac5daae8538973ebdf4708a7252cb2531f9c738fc6b73b50bf5", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/basic_attack/frames/frame-4.png", + "runtime": "runtime/assets/animations/hearthguard/basic_attack/frame-4.png", + "sha256": "166243f926e4e1dd56a04cd2db44c3e9888a03d97093a82a63c36064f704f692", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/basic_attack/frames/frame-5.png", + "runtime": "runtime/assets/animations/hearthguard/basic_attack/frame-5.png", + "sha256": "38818691bed19c30017527efcebb51504291b6a2506cbdda7fc79bf60df20b4c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/victory/frames/frame-0.png", + "runtime": "runtime/assets/animations/hearthguard/victory/frame-0.png", + "sha256": "12de2fe4181565c01a7803593d6e9b686782712441d2de397bfb2729ae0b77d1", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/victory/frames/frame-1.png", + "runtime": "runtime/assets/animations/hearthguard/victory/frame-1.png", + "sha256": "5b1d6792c1ed6e7fee05d16652559143840de98227128570fd6b8d9034897125", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/victory/frames/frame-2.png", + "runtime": "runtime/assets/animations/hearthguard/victory/frame-2.png", + "sha256": "d905de646c5256e6a88484367143f53e6650aed3386f02aad087b4275d361152", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/victory/frames/frame-3.png", + "runtime": "runtime/assets/animations/hearthguard/victory/frame-3.png", + "sha256": "a9a506bf511f556295333b862e6e0def5cb5af749eefc41c9ec717f040118dfc", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/victory/frames/frame-4.png", + "runtime": "runtime/assets/animations/hearthguard/victory/frame-4.png", + "sha256": "5120d588dec9a05e571d142e6528b1c1937f33e12ebf1527d6b916fcb873470d", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/recruit-aegis/accepted/victory/frames/frame-5.png", + "runtime": "runtime/assets/animations/hearthguard/victory/frame-5.png", + "sha256": "12de2fe4181565c01a7803593d6e9b686782712441d2de397bfb2729ae0b77d1", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/idle/frames/frame-0.png", + "runtime": "runtime/assets/animations/riftblade/idle/frame-0.png", + "sha256": "e1c706cda49d5a969d8b3b79cf0d249e68eda62317cd10482573b4e2b4694b9a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/idle/frames/frame-1.png", + "runtime": "runtime/assets/animations/riftblade/idle/frame-1.png", + "sha256": "65b26d2d1a7aaacbf3e1e9eb09e74d0abdbc501d43f86a65cc38c394f03a8a1f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/idle/frames/frame-2.png", + "runtime": "runtime/assets/animations/riftblade/idle/frame-2.png", + "sha256": "ae3292dee152f608f8267a261bcfe9f92c0e2d258cde88357a3b7d877591e9f7", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/idle/frames/frame-3.png", + "runtime": "runtime/assets/animations/riftblade/idle/frame-3.png", + "sha256": "65b26d2d1a7aaacbf3e1e9eb09e74d0abdbc501d43f86a65cc38c394f03a8a1f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/idle/frames/frame-4.png", + "runtime": "runtime/assets/animations/riftblade/idle/frame-4.png", + "sha256": "e1c706cda49d5a969d8b3b79cf0d249e68eda62317cd10482573b4e2b4694b9a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/idle/frames/frame-5.png", + "runtime": "runtime/assets/animations/riftblade/idle/frame-5.png", + "sha256": "65b26d2d1a7aaacbf3e1e9eb09e74d0abdbc501d43f86a65cc38c394f03a8a1f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-0.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-0.png", + "sha256": "db12c546a406c2a7084fb781507765056c59b6bc101acf6539387c55a0767934", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-1.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-1.png", + "sha256": "0f7ced5832d819991ca686ddbf58bbbfd805ebca43c9e538d46428fea485ddca", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-2.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-2.png", + "sha256": "3993c4333764233cb6080ee6b018c153fdb9a522cd2befe9a48a02bbefa9d6d4", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-3.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-3.png", + "sha256": "e5eb2d28e07fb1177d129dc86654bcc79562eca9011dd89fc59cba1408b1aec6", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-4.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-4.png", + "sha256": "c32a0ef3fefcfccfcca946aca19555f1edebb04dc3168d2d96c2c491ae0064a5", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-5.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-5.png", + "sha256": "392b40ffd8e8a3eb127d34fea19e0bf4d0c85b80d52834f46cfe7231d1a7b5a9", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-6.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-6.png", + "sha256": "51d57d28bba42de37ae64739d974a2b483b73f4d7b405a2436b66d4c671c741c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/advance/frames/frame-7.png", + "runtime": "runtime/assets/animations/riftblade/advance/frame-7.png", + "sha256": "7a7c94a8664458d9fbde01d3cfc1ce9edd5c80a6d651133c1948816d7141c7dc", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/telegraph/frames/frame-0.png", + "runtime": "runtime/assets/animations/riftblade/telegraph/frame-0.png", + "sha256": "e16291db9ece820e183e5ac612eab92162ac79d244085bab28ed595965101cd8", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/telegraph/frames/frame-1.png", + "runtime": "runtime/assets/animations/riftblade/telegraph/frame-1.png", + "sha256": "1203f1db63301d56fd33c224eeae95dc7d4ff4f8e17232ec494ec345dd7024b9", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/telegraph/frames/frame-2.png", + "runtime": "runtime/assets/animations/riftblade/telegraph/frame-2.png", + "sha256": "49c254ff46c129ac0d0af6bd1fffcccb41b9c97504ff4d7dee42f45ed9b41467", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/telegraph/frames/frame-3.png", + "runtime": "runtime/assets/animations/riftblade/telegraph/frame-3.png", + "sha256": "58d3379ad97ac15f1d3599daab42042e170dec579e21268d59f7c0eec15df3af", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/telegraph/frames/frame-4.png", + "runtime": "runtime/assets/animations/riftblade/telegraph/frame-4.png", + "sha256": "315802401dfe8d37a3772c3c7de2ed5854ed8a6a1655a0c052bbd07c7e93c215", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/telegraph/frames/frame-5.png", + "runtime": "runtime/assets/animations/riftblade/telegraph/frame-5.png", + "sha256": "529db5da4c14ebf4e7e1c8ad6e110e01e0f8688c2381de1485528604aa906f09", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/attack/frames/frame-0.png", + "runtime": "runtime/assets/animations/riftblade/attack/frame-0.png", + "sha256": "0c35e0e9f3fb3fcdd8433fec9b54bef40564a0ed9b15d6feb895e6b5baac0dbf", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/attack/frames/frame-1.png", + "runtime": "runtime/assets/animations/riftblade/attack/frame-1.png", + "sha256": "3f51bcc5fedae705d4ef38d2cd2e283043dd712491ae283e829d66841c261579", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/attack/frames/frame-2.png", + "runtime": "runtime/assets/animations/riftblade/attack/frame-2.png", + "sha256": "92248688dbff97177a58c5601f43509b292912f9cc862922ef3cdd72690e47c1", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/attack/frames/frame-3.png", + "runtime": "runtime/assets/animations/riftblade/attack/frame-3.png", + "sha256": "bf679aa2a6ee524087ed2ee26160cc4cda74a19832663b1107aad80993c3ed43", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/attack/frames/frame-4.png", + "runtime": "runtime/assets/animations/riftblade/attack/frame-4.png", + "sha256": "13eb4dd4504cfc1dfe2a518e5c93209e4df61bfa10ea24501e6871d608a6565d", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/attack/frames/frame-5.png", + "runtime": "runtime/assets/animations/riftblade/attack/frame-5.png", + "sha256": "654eaf1c33e2a05febbaa5df0ddb41dcb67202adc3a614a074a0de6daaf877ea", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/hit/frames/frame-0.png", + "runtime": "runtime/assets/animations/riftblade/hit/frame-0.png", + "sha256": "c679208c7d7744d8c26be8364449377021c22fc586afc8ebdceae0c1a9e34c69", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/hit/frames/frame-1.png", + "runtime": "runtime/assets/animations/riftblade/hit/frame-1.png", + "sha256": "e96dcc742cb16f98e4b08ae39822de0e00f0e66863084cf0afeff466eefc8221", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/hit/frames/frame-2.png", + "runtime": "runtime/assets/animations/riftblade/hit/frame-2.png", + "sha256": "08a63f58c5278be758375f84e9da138b944bdeeec146b6ca7786de5576d53f30", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/hit/frames/frame-3.png", + "runtime": "runtime/assets/animations/riftblade/hit/frame-3.png", + "sha256": "2683c5cf3d27699b084c8528d86b3d2ac775d30029c78834b45b30bd620da693", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-0.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-0.png", + "sha256": "9b281edb3733d10453cbad1d4290837c1e5a4d77a01b2f928ed5fca269f6edb7", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-1.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-1.png", + "sha256": "b5799a6e4a2942b16872a0d813a40892cff4e63d5a8fa543146bdca83197213d", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-2.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-2.png", + "sha256": "d054d07b37b961ee579ee2ab4ac5a4fd4fb9a1bdd5a793c3b778db8f60d47d64", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-3.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-3.png", + "sha256": "b228cb85ed7614da81e064ce119c4c0a99f304b9915707f474e58c173b9ea9af", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-4.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-4.png", + "sha256": "2a41ab35b4258e5d3ad151b3c6bb749ce1537993609e2345942e94c249241e9c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-5.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-5.png", + "sha256": "35cc2f34d9c43ba749d4d7a2e0e99a6cd3b0640dda49c4d7f7089dce9f5c7180", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-6.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-6.png", + "sha256": "e39ef22df9fd2aac1a42e654aa1ca53959a7b25c97fe5f638295bbe51f48f300", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase6_motion_proof_03/runs/enemy-riftblade/accepted/death/frames/frame-7.png", + "runtime": "runtime/assets/animations/riftblade/death/frame-7.png", + "sha256": "a30d4a9cdb1ad898e9df74984555de7ef1a0be70a1a9ef716c43aed7e1abb2c3", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/ready.png", + "runtime": "runtime/assets/animations/wayrunner/idle/frame-0.png", + "sha256": "c2716cdaff61435dd8385d0b6fbe8b9df3b6f48184b155e9f4ec2a635ccadd1a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/recover.png", + "runtime": "runtime/assets/animations/wayrunner/idle/frame-1.png", + "sha256": "dd56cb508f6a8eadad1e6e017fd1b3e9c45de1b75f320bf46d4aa34bcc510b7a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_1.png", + "runtime": "runtime/assets/animations/wayrunner/advance/frame-0.png", + "sha256": "122538a56230fb4f189323fd6415ec9d1f48c96bdd7af39643765d110c53f88a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/advance_2.png", + "runtime": "runtime/assets/animations/wayrunner/advance/frame-1.png", + "sha256": "bb0409884565fb07a7109615d9e849c529b9f08285d843bc0aa31064751fe285", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/ready.png", + "runtime": "runtime/assets/animations/wayrunner/evade_counter/frame-0.png", + "sha256": "c2716cdaff61435dd8385d0b6fbe8b9df3b6f48184b155e9f4ec2a635ccadd1a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/evade.png", + "runtime": "runtime/assets/animations/wayrunner/evade_counter/frame-1.png", + "sha256": "fe34ebd6450283aa94418241bcc1eb0031472dab8cc4ad494fe54303050e9430", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/counter.png", + "runtime": "runtime/assets/animations/wayrunner/evade_counter/frame-2.png", + "sha256": "93fda8ed2c0d466b35d1479fd48114a525894e595a6d226586bc4bf10e6be15c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/wayrunner-r2/curated/recover.png", + "runtime": "runtime/assets/animations/wayrunner/evade_counter/frame-3.png", + "sha256": "dd56cb508f6a8eadad1e6e017fd1b3e9c45de1b75f320bf46d4aa34bcc510b7a", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/ready.png", + "runtime": "runtime/assets/animations/farstring/idle/frame-0.png", + "sha256": "5a4e91eebd04d3ac70e86c576ca76d7be958329a825bdec316b46343cddb512c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/raise.png", + "runtime": "runtime/assets/animations/farstring/idle/frame-1.png", + "sha256": "e42d18db7a7f99a11c5dea6de2ad0a246eea509ff62d08ba39af6e8dde3561df", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/ready.png", + "runtime": "runtime/assets/animations/farstring/advance/frame-0.png", + "sha256": "5a4e91eebd04d3ac70e86c576ca76d7be958329a825bdec316b46343cddb512c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/advance_1.png", + "runtime": "runtime/assets/animations/farstring/advance/frame-1.png", + "sha256": "4642e81f3576ad3b1581e2edc23f926c536d52e6c2377b162f84e24f6dcbdb15", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/ready.png", + "runtime": "runtime/assets/animations/farstring/draw_release/frame-0.png", + "sha256": "5a4e91eebd04d3ac70e86c576ca76d7be958329a825bdec316b46343cddb512c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/raise.png", + "runtime": "runtime/assets/animations/farstring/draw_release/frame-1.png", + "sha256": "e42d18db7a7f99a11c5dea6de2ad0a246eea509ff62d08ba39af6e8dde3561df", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/draw.png", + "runtime": "runtime/assets/animations/farstring/draw_release/frame-2.png", + "sha256": "8c339527f41cef9f6c194ac517aa1071ca6ddec7b90546998b6b1cf56167bf3d", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/farstring/curated/release.png", + "runtime": "runtime/assets/animations/farstring/draw_release/frame-3.png", + "sha256": "3cc0685a03ad95016c8e21a85e43fcd48b67def289792ef3a6eef3193338ec1e", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/ready.png", + "runtime": "runtime/assets/animations/kindhand/idle/frame-0.png", + "sha256": "7c82a307e1cadc2879e45c61e514748477db576a8f7c6e30753fdcbb9459230f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/recover.png", + "runtime": "runtime/assets/animations/kindhand/idle/frame-1.png", + "sha256": "f6ae76cae0fe76e6b891debe8bd831b03aa3adbf981b63517166a648532c7ed7", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_1.png", + "runtime": "runtime/assets/animations/kindhand/advance/frame-0.png", + "sha256": "23ed28dbd1eef62671aa37739a88d0a6aa4fa4c08adcb39fa9de2ab2303cc8b2", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/advance_2.png", + "runtime": "runtime/assets/animations/kindhand/advance/frame-1.png", + "sha256": "c008962414779bccd652bddeef2504fc6fe4b89f771be889f9d3dff1b6a86a9c", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/ready.png", + "runtime": "runtime/assets/animations/kindhand/lantern_heal/frame-0.png", + "sha256": "7c82a307e1cadc2879e45c61e514748477db576a8f7c6e30753fdcbb9459230f", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/raise.png", + "runtime": "runtime/assets/animations/kindhand/lantern_heal/frame-1.png", + "sha256": "a2b97f13f3297991a8d468a979f2ae266058280a25081438431f5584321674ef", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/heal.png", + "runtime": "runtime/assets/animations/kindhand/lantern_heal/frame-2.png", + "sha256": "f883bacc2b9a0445ec0848f66364a69b7a632212411af39e5ba26668a61393b1", + "width": 256, + "height": 256 + }, + { + "source": "docs/prototype/generation/phase9_0r2_character_animation_01/runs/kindhand/curated/recover.png", + "runtime": "runtime/assets/animations/kindhand/lantern_heal/frame-3.png", + "sha256": "f6ae76cae0fe76e6b891debe8bd831b03aa3adbf981b63517166a648532c7ed7", + "width": 256, + "height": 256 + } + ] +} diff --git a/runtime/assets/animations/farstring/advance/frame-0.png b/runtime/assets/animations/farstring/advance/frame-0.png new file mode 100644 index 00000000..dabe7851 Binary files /dev/null and b/runtime/assets/animations/farstring/advance/frame-0.png differ diff --git a/runtime/assets/animations/farstring/advance/frame-0.png.import b/runtime/assets/animations/farstring/advance/frame-0.png.import new file mode 100644 index 00000000..fe820266 --- /dev/null +++ b/runtime/assets/animations/farstring/advance/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://qr4n8xyt3b3x" +path="res://.godot/imported/frame-0.png-08696a5f8dbb5b50efb7c1367b8c3b15.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/advance/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-08696a5f8dbb5b50efb7c1367b8c3b15.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/runtime/assets/animations/farstring/advance/frame-1.png b/runtime/assets/animations/farstring/advance/frame-1.png new file mode 100644 index 00000000..140139bd Binary files /dev/null and b/runtime/assets/animations/farstring/advance/frame-1.png differ diff --git a/runtime/assets/animations/farstring/advance/frame-1.png.import b/runtime/assets/animations/farstring/advance/frame-1.png.import new file mode 100644 index 00000000..1cd43f59 --- /dev/null +++ b/runtime/assets/animations/farstring/advance/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpqaewrpf2w2m" +path="res://.godot/imported/frame-1.png-25bf5803f4d7961c96a3594089071dd8.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/advance/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-25bf5803f4d7961c96a3594089071dd8.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/runtime/assets/animations/farstring/draw_release/frame-0.png b/runtime/assets/animations/farstring/draw_release/frame-0.png new file mode 100644 index 00000000..dabe7851 Binary files /dev/null and b/runtime/assets/animations/farstring/draw_release/frame-0.png differ diff --git a/runtime/assets/animations/farstring/draw_release/frame-0.png.import b/runtime/assets/animations/farstring/draw_release/frame-0.png.import new file mode 100644 index 00000000..0ed4457e --- /dev/null +++ b/runtime/assets/animations/farstring/draw_release/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjak2fwowdd8" +path="res://.godot/imported/frame-0.png-a2835d9714bc852991a10b788046ecb4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/draw_release/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-a2835d9714bc852991a10b788046ecb4.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/runtime/assets/animations/farstring/draw_release/frame-1.png b/runtime/assets/animations/farstring/draw_release/frame-1.png new file mode 100644 index 00000000..95157886 Binary files /dev/null and b/runtime/assets/animations/farstring/draw_release/frame-1.png differ diff --git a/runtime/assets/animations/farstring/draw_release/frame-1.png.import b/runtime/assets/animations/farstring/draw_release/frame-1.png.import new file mode 100644 index 00000000..2b722cbf --- /dev/null +++ b/runtime/assets/animations/farstring/draw_release/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://wlsat2cdvgkl" +path="res://.godot/imported/frame-1.png-aac86842fae0d06f7ba21b7f349642a7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/draw_release/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-aac86842fae0d06f7ba21b7f349642a7.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/runtime/assets/animations/farstring/draw_release/frame-2.png b/runtime/assets/animations/farstring/draw_release/frame-2.png new file mode 100644 index 00000000..2eebd572 Binary files /dev/null and b/runtime/assets/animations/farstring/draw_release/frame-2.png differ diff --git a/runtime/assets/animations/farstring/draw_release/frame-2.png.import b/runtime/assets/animations/farstring/draw_release/frame-2.png.import new file mode 100644 index 00000000..efac8a70 --- /dev/null +++ b/runtime/assets/animations/farstring/draw_release/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtpck601ubb4o" +path="res://.godot/imported/frame-2.png-00621f458998ff2130969f2acb710b36.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/draw_release/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-00621f458998ff2130969f2acb710b36.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/runtime/assets/animations/farstring/draw_release/frame-3.png b/runtime/assets/animations/farstring/draw_release/frame-3.png new file mode 100644 index 00000000..c305ce1b Binary files /dev/null and b/runtime/assets/animations/farstring/draw_release/frame-3.png differ diff --git a/runtime/assets/animations/farstring/draw_release/frame-3.png.import b/runtime/assets/animations/farstring/draw_release/frame-3.png.import new file mode 100644 index 00000000..1750eecb --- /dev/null +++ b/runtime/assets/animations/farstring/draw_release/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://usss74b8qrki" +path="res://.godot/imported/frame-3.png-828c83915805bf0f05077ef1892e0c12.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/draw_release/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-828c83915805bf0f05077ef1892e0c12.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/runtime/assets/animations/farstring/idle/frame-0.png b/runtime/assets/animations/farstring/idle/frame-0.png new file mode 100644 index 00000000..dabe7851 Binary files /dev/null and b/runtime/assets/animations/farstring/idle/frame-0.png differ diff --git a/runtime/assets/animations/farstring/idle/frame-0.png.import b/runtime/assets/animations/farstring/idle/frame-0.png.import new file mode 100644 index 00000000..7a0d0846 --- /dev/null +++ b/runtime/assets/animations/farstring/idle/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://parkxifklx7n" +path="res://.godot/imported/frame-0.png-9447c56ba61ff809d56db3c8787f0c26.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/idle/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-9447c56ba61ff809d56db3c8787f0c26.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/runtime/assets/animations/farstring/idle/frame-1.png b/runtime/assets/animations/farstring/idle/frame-1.png new file mode 100644 index 00000000..95157886 Binary files /dev/null and b/runtime/assets/animations/farstring/idle/frame-1.png differ diff --git a/runtime/assets/animations/farstring/idle/frame-1.png.import b/runtime/assets/animations/farstring/idle/frame-1.png.import new file mode 100644 index 00000000..01564751 --- /dev/null +++ b/runtime/assets/animations/farstring/idle/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8fl10mr3f3b1" +path="res://.godot/imported/frame-1.png-8de65fe83753f5bfb07f4bb57c2a1208.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/farstring/idle/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-8de65fe83753f5bfb07f4bb57c2a1208.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/runtime/assets/animations/hearthguard/advance/frame-0.png b/runtime/assets/animations/hearthguard/advance/frame-0.png new file mode 100644 index 00000000..1f35f3f1 Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-0.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-0.png.import b/runtime/assets/animations/hearthguard/advance/frame-0.png.import new file mode 100644 index 00000000..4244bdb6 --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4i7fvt5b467l" +path="res://.godot/imported/frame-0.png-b51641c6f542d0a21aa115dc01a52668.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-b51641c6f542d0a21aa115dc01a52668.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/runtime/assets/animations/hearthguard/advance/frame-1.png b/runtime/assets/animations/hearthguard/advance/frame-1.png new file mode 100644 index 00000000..69a92276 Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-1.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-1.png.import b/runtime/assets/animations/hearthguard/advance/frame-1.png.import new file mode 100644 index 00000000..579798be --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://crn002nlwmhxr" +path="res://.godot/imported/frame-1.png-5ac9abeebc6e99ed14aeb7b1f7e3c8ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-5ac9abeebc6e99ed14aeb7b1f7e3c8ba.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/runtime/assets/animations/hearthguard/advance/frame-2.png b/runtime/assets/animations/hearthguard/advance/frame-2.png new file mode 100644 index 00000000..475cb216 Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-2.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-2.png.import b/runtime/assets/animations/hearthguard/advance/frame-2.png.import new file mode 100644 index 00000000..eea4c6aa --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://drrflghdop08v" +path="res://.godot/imported/frame-2.png-92d7c6b46311eb239a48bbdb35b4edb0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-92d7c6b46311eb239a48bbdb35b4edb0.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/runtime/assets/animations/hearthguard/advance/frame-3.png b/runtime/assets/animations/hearthguard/advance/frame-3.png new file mode 100644 index 00000000..88defa5c Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-3.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-3.png.import b/runtime/assets/animations/hearthguard/advance/frame-3.png.import new file mode 100644 index 00000000..5f4d01e7 --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1oqfobg5kkl3" +path="res://.godot/imported/frame-3.png-694d6c6681f269c6d59dd1447c8bfd77.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-694d6c6681f269c6d59dd1447c8bfd77.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/runtime/assets/animations/hearthguard/advance/frame-4.png b/runtime/assets/animations/hearthguard/advance/frame-4.png new file mode 100644 index 00000000..d0ff6598 Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-4.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-4.png.import b/runtime/assets/animations/hearthguard/advance/frame-4.png.import new file mode 100644 index 00000000..d7f56506 --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bu2t0re5x3dwo" +path="res://.godot/imported/frame-4.png-24a303309a75ddc6a512e5f82f1d5576.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-24a303309a75ddc6a512e5f82f1d5576.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/runtime/assets/animations/hearthguard/advance/frame-5.png b/runtime/assets/animations/hearthguard/advance/frame-5.png new file mode 100644 index 00000000..d2c1918e Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-5.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-5.png.import b/runtime/assets/animations/hearthguard/advance/frame-5.png.import new file mode 100644 index 00000000..542e4f6e --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bnuv0aq3up5wp" +path="res://.godot/imported/frame-5.png-410aacaa79b1faf0f26814003f6c1872.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-410aacaa79b1faf0f26814003f6c1872.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/runtime/assets/animations/hearthguard/advance/frame-6.png b/runtime/assets/animations/hearthguard/advance/frame-6.png new file mode 100644 index 00000000..730acb07 Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-6.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-6.png.import b/runtime/assets/animations/hearthguard/advance/frame-6.png.import new file mode 100644 index 00000000..8902bee4 --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-6.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmdvreag32mov" +path="res://.godot/imported/frame-6.png-aa1bf1ef722cf77896c819eaa5b1d7eb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-6.png" +dest_files=["res://.godot/imported/frame-6.png-aa1bf1ef722cf77896c819eaa5b1d7eb.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/runtime/assets/animations/hearthguard/advance/frame-7.png b/runtime/assets/animations/hearthguard/advance/frame-7.png new file mode 100644 index 00000000..4087631f Binary files /dev/null and b/runtime/assets/animations/hearthguard/advance/frame-7.png differ diff --git a/runtime/assets/animations/hearthguard/advance/frame-7.png.import b/runtime/assets/animations/hearthguard/advance/frame-7.png.import new file mode 100644 index 00000000..bb0b88df --- /dev/null +++ b/runtime/assets/animations/hearthguard/advance/frame-7.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blkmb6uaslpcm" +path="res://.godot/imported/frame-7.png-7631fe14ef0c599dabf8e83b0b5644e3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/advance/frame-7.png" +dest_files=["res://.godot/imported/frame-7.png-7631fe14ef0c599dabf8e83b0b5644e3.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/runtime/assets/animations/hearthguard/basic_attack/frame-0.png b/runtime/assets/animations/hearthguard/basic_attack/frame-0.png new file mode 100644 index 00000000..73610636 Binary files /dev/null and b/runtime/assets/animations/hearthguard/basic_attack/frame-0.png differ diff --git a/runtime/assets/animations/hearthguard/basic_attack/frame-0.png.import b/runtime/assets/animations/hearthguard/basic_attack/frame-0.png.import new file mode 100644 index 00000000..6796222a --- /dev/null +++ b/runtime/assets/animations/hearthguard/basic_attack/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dlwybfoon56hy" +path="res://.godot/imported/frame-0.png-e2c4cef30155bd3579b2416c9dc2d567.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/basic_attack/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-e2c4cef30155bd3579b2416c9dc2d567.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/runtime/assets/animations/hearthguard/basic_attack/frame-1.png b/runtime/assets/animations/hearthguard/basic_attack/frame-1.png new file mode 100644 index 00000000..cb318df3 Binary files /dev/null and b/runtime/assets/animations/hearthguard/basic_attack/frame-1.png differ diff --git a/runtime/assets/animations/hearthguard/basic_attack/frame-1.png.import b/runtime/assets/animations/hearthguard/basic_attack/frame-1.png.import new file mode 100644 index 00000000..aef1f495 --- /dev/null +++ b/runtime/assets/animations/hearthguard/basic_attack/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccbx6ljishh0b" +path="res://.godot/imported/frame-1.png-f44209689740a612e500516921f27409.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/basic_attack/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-f44209689740a612e500516921f27409.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/runtime/assets/animations/hearthguard/basic_attack/frame-2.png b/runtime/assets/animations/hearthguard/basic_attack/frame-2.png new file mode 100644 index 00000000..cba80c7b Binary files /dev/null and b/runtime/assets/animations/hearthguard/basic_attack/frame-2.png differ diff --git a/runtime/assets/animations/hearthguard/basic_attack/frame-2.png.import b/runtime/assets/animations/hearthguard/basic_attack/frame-2.png.import new file mode 100644 index 00000000..fe704bb9 --- /dev/null +++ b/runtime/assets/animations/hearthguard/basic_attack/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bipm2osg8vvfr" +path="res://.godot/imported/frame-2.png-3dd7f0a09fe57e605808c1ee0f59a032.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/basic_attack/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-3dd7f0a09fe57e605808c1ee0f59a032.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/runtime/assets/animations/hearthguard/basic_attack/frame-3.png b/runtime/assets/animations/hearthguard/basic_attack/frame-3.png new file mode 100644 index 00000000..942c6bca Binary files /dev/null and b/runtime/assets/animations/hearthguard/basic_attack/frame-3.png differ diff --git a/runtime/assets/animations/hearthguard/basic_attack/frame-3.png.import b/runtime/assets/animations/hearthguard/basic_attack/frame-3.png.import new file mode 100644 index 00000000..378f4ba3 --- /dev/null +++ b/runtime/assets/animations/hearthguard/basic_attack/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctprkk0ojlo5j" +path="res://.godot/imported/frame-3.png-0475c95322a1a171f15a14a82c4cf93b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/basic_attack/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-0475c95322a1a171f15a14a82c4cf93b.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/runtime/assets/animations/hearthguard/basic_attack/frame-4.png b/runtime/assets/animations/hearthguard/basic_attack/frame-4.png new file mode 100644 index 00000000..a94bb82e Binary files /dev/null and b/runtime/assets/animations/hearthguard/basic_attack/frame-4.png differ diff --git a/runtime/assets/animations/hearthguard/basic_attack/frame-4.png.import b/runtime/assets/animations/hearthguard/basic_attack/frame-4.png.import new file mode 100644 index 00000000..845ac251 --- /dev/null +++ b/runtime/assets/animations/hearthguard/basic_attack/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3p5lsj48cvh8" +path="res://.godot/imported/frame-4.png-238381515e199a9e53a244a7eac30522.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/basic_attack/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-238381515e199a9e53a244a7eac30522.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/runtime/assets/animations/hearthguard/basic_attack/frame-5.png b/runtime/assets/animations/hearthguard/basic_attack/frame-5.png new file mode 100644 index 00000000..9f75caca Binary files /dev/null and b/runtime/assets/animations/hearthguard/basic_attack/frame-5.png differ diff --git a/runtime/assets/animations/hearthguard/basic_attack/frame-5.png.import b/runtime/assets/animations/hearthguard/basic_attack/frame-5.png.import new file mode 100644 index 00000000..9435300e --- /dev/null +++ b/runtime/assets/animations/hearthguard/basic_attack/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duxgam4neibk" +path="res://.godot/imported/frame-5.png-d43c2faeeeb2f1bbb69a2c0c87856e18.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/basic_attack/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-d43c2faeeeb2f1bbb69a2c0c87856e18.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/runtime/assets/animations/hearthguard/guard/frame-0.png b/runtime/assets/animations/hearthguard/guard/frame-0.png new file mode 100644 index 00000000..5b24e72a Binary files /dev/null and b/runtime/assets/animations/hearthguard/guard/frame-0.png differ diff --git a/runtime/assets/animations/hearthguard/guard/frame-0.png.import b/runtime/assets/animations/hearthguard/guard/frame-0.png.import new file mode 100644 index 00000000..94968e9c --- /dev/null +++ b/runtime/assets/animations/hearthguard/guard/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bp62nwa11gwsf" +path="res://.godot/imported/frame-0.png-72b0af7e20bc844b69b7fb063fa53669.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/guard/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-72b0af7e20bc844b69b7fb063fa53669.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/runtime/assets/animations/hearthguard/guard/frame-1.png b/runtime/assets/animations/hearthguard/guard/frame-1.png new file mode 100644 index 00000000..478b83c9 Binary files /dev/null and b/runtime/assets/animations/hearthguard/guard/frame-1.png differ diff --git a/runtime/assets/animations/hearthguard/guard/frame-1.png.import b/runtime/assets/animations/hearthguard/guard/frame-1.png.import new file mode 100644 index 00000000..9e944079 --- /dev/null +++ b/runtime/assets/animations/hearthguard/guard/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duku7ykuhefwa" +path="res://.godot/imported/frame-1.png-50f8fdcd04799aeffed6d973d3510fb7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/guard/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-50f8fdcd04799aeffed6d973d3510fb7.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/runtime/assets/animations/hearthguard/guard/frame-2.png b/runtime/assets/animations/hearthguard/guard/frame-2.png new file mode 100644 index 00000000..3780de6b Binary files /dev/null and b/runtime/assets/animations/hearthguard/guard/frame-2.png differ diff --git a/runtime/assets/animations/hearthguard/guard/frame-2.png.import b/runtime/assets/animations/hearthguard/guard/frame-2.png.import new file mode 100644 index 00000000..0944d407 --- /dev/null +++ b/runtime/assets/animations/hearthguard/guard/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxcvjye2r0q76" +path="res://.godot/imported/frame-2.png-4f70dc310f22685fbc13fc1f2efdb029.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/guard/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-4f70dc310f22685fbc13fc1f2efdb029.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/runtime/assets/animations/hearthguard/guard/frame-3.png b/runtime/assets/animations/hearthguard/guard/frame-3.png new file mode 100644 index 00000000..f57ce171 Binary files /dev/null and b/runtime/assets/animations/hearthguard/guard/frame-3.png differ diff --git a/runtime/assets/animations/hearthguard/guard/frame-3.png.import b/runtime/assets/animations/hearthguard/guard/frame-3.png.import new file mode 100644 index 00000000..4cf8e772 --- /dev/null +++ b/runtime/assets/animations/hearthguard/guard/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cmm44kryvcnk6" +path="res://.godot/imported/frame-3.png-cb3d2c142dc61515585d7e0ed6e7c743.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/guard/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-cb3d2c142dc61515585d7e0ed6e7c743.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/runtime/assets/animations/hearthguard/idle/frame-0.png b/runtime/assets/animations/hearthguard/idle/frame-0.png new file mode 100644 index 00000000..347e3605 Binary files /dev/null and b/runtime/assets/animations/hearthguard/idle/frame-0.png differ diff --git a/runtime/assets/animations/hearthguard/idle/frame-0.png.import b/runtime/assets/animations/hearthguard/idle/frame-0.png.import new file mode 100644 index 00000000..acf89acd --- /dev/null +++ b/runtime/assets/animations/hearthguard/idle/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5ljvs3ksds3j" +path="res://.godot/imported/frame-0.png-9f60c2f0be94c6b7ad732b04550f9b79.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/idle/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-9f60c2f0be94c6b7ad732b04550f9b79.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/runtime/assets/animations/hearthguard/idle/frame-1.png b/runtime/assets/animations/hearthguard/idle/frame-1.png new file mode 100644 index 00000000..0a29970f Binary files /dev/null and b/runtime/assets/animations/hearthguard/idle/frame-1.png differ diff --git a/runtime/assets/animations/hearthguard/idle/frame-1.png.import b/runtime/assets/animations/hearthguard/idle/frame-1.png.import new file mode 100644 index 00000000..77ed15aa --- /dev/null +++ b/runtime/assets/animations/hearthguard/idle/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bto1fa8iaj4bp" +path="res://.godot/imported/frame-1.png-a867ccbf02d56a3265c5d78e89e6bc2f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/idle/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-a867ccbf02d56a3265c5d78e89e6bc2f.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/runtime/assets/animations/hearthguard/idle/frame-2.png b/runtime/assets/animations/hearthguard/idle/frame-2.png new file mode 100644 index 00000000..ca2663b8 Binary files /dev/null and b/runtime/assets/animations/hearthguard/idle/frame-2.png differ diff --git a/runtime/assets/animations/hearthguard/idle/frame-2.png.import b/runtime/assets/animations/hearthguard/idle/frame-2.png.import new file mode 100644 index 00000000..02b7ded7 --- /dev/null +++ b/runtime/assets/animations/hearthguard/idle/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnv0r012xygmv" +path="res://.godot/imported/frame-2.png-2d81429827510ae14ee2acc73cda900f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/idle/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-2d81429827510ae14ee2acc73cda900f.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/runtime/assets/animations/hearthguard/idle/frame-3.png b/runtime/assets/animations/hearthguard/idle/frame-3.png new file mode 100644 index 00000000..f41ee94c Binary files /dev/null and b/runtime/assets/animations/hearthguard/idle/frame-3.png differ diff --git a/runtime/assets/animations/hearthguard/idle/frame-3.png.import b/runtime/assets/animations/hearthguard/idle/frame-3.png.import new file mode 100644 index 00000000..f6601874 --- /dev/null +++ b/runtime/assets/animations/hearthguard/idle/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c02p6yn0teubn" +path="res://.godot/imported/frame-3.png-02298a5ac6c9fc814d0f5612bfc35899.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/idle/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-02298a5ac6c9fc814d0f5612bfc35899.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/runtime/assets/animations/hearthguard/idle/frame-4.png b/runtime/assets/animations/hearthguard/idle/frame-4.png new file mode 100644 index 00000000..ea5790ac Binary files /dev/null and b/runtime/assets/animations/hearthguard/idle/frame-4.png differ diff --git a/runtime/assets/animations/hearthguard/idle/frame-4.png.import b/runtime/assets/animations/hearthguard/idle/frame-4.png.import new file mode 100644 index 00000000..a9d7be34 --- /dev/null +++ b/runtime/assets/animations/hearthguard/idle/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clg07bgbsmr3h" +path="res://.godot/imported/frame-4.png-f30876aecc69303c8b13079c190d5c05.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/idle/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-f30876aecc69303c8b13079c190d5c05.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/runtime/assets/animations/hearthguard/idle/frame-5.png b/runtime/assets/animations/hearthguard/idle/frame-5.png new file mode 100644 index 00000000..d1508e4a Binary files /dev/null and b/runtime/assets/animations/hearthguard/idle/frame-5.png differ diff --git a/runtime/assets/animations/hearthguard/idle/frame-5.png.import b/runtime/assets/animations/hearthguard/idle/frame-5.png.import new file mode 100644 index 00000000..b43e07ea --- /dev/null +++ b/runtime/assets/animations/hearthguard/idle/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dvhop6hej27dy" +path="res://.godot/imported/frame-5.png-a1ff282d0af3695cb9dfff0fb07f1801.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/idle/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-a1ff282d0af3695cb9dfff0fb07f1801.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/runtime/assets/animations/hearthguard/victory/frame-0.png b/runtime/assets/animations/hearthguard/victory/frame-0.png new file mode 100644 index 00000000..7d25e2c0 Binary files /dev/null and b/runtime/assets/animations/hearthguard/victory/frame-0.png differ diff --git a/runtime/assets/animations/hearthguard/victory/frame-0.png.import b/runtime/assets/animations/hearthguard/victory/frame-0.png.import new file mode 100644 index 00000000..cf4c9079 --- /dev/null +++ b/runtime/assets/animations/hearthguard/victory/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnlwy2jimdxs6" +path="res://.godot/imported/frame-0.png-a0db642d699aaa38c0904fa1d0ae301c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/victory/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-a0db642d699aaa38c0904fa1d0ae301c.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/runtime/assets/animations/hearthguard/victory/frame-1.png b/runtime/assets/animations/hearthguard/victory/frame-1.png new file mode 100644 index 00000000..d5b7c742 Binary files /dev/null and b/runtime/assets/animations/hearthguard/victory/frame-1.png differ diff --git a/runtime/assets/animations/hearthguard/victory/frame-1.png.import b/runtime/assets/animations/hearthguard/victory/frame-1.png.import new file mode 100644 index 00000000..0aaca6f6 --- /dev/null +++ b/runtime/assets/animations/hearthguard/victory/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8tl63ab7qp6t" +path="res://.godot/imported/frame-1.png-459fcef2db358d30d8e2ad3a4424036d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/victory/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-459fcef2db358d30d8e2ad3a4424036d.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/runtime/assets/animations/hearthguard/victory/frame-2.png b/runtime/assets/animations/hearthguard/victory/frame-2.png new file mode 100644 index 00000000..477ee68c Binary files /dev/null and b/runtime/assets/animations/hearthguard/victory/frame-2.png differ diff --git a/runtime/assets/animations/hearthguard/victory/frame-2.png.import b/runtime/assets/animations/hearthguard/victory/frame-2.png.import new file mode 100644 index 00000000..619a0edf --- /dev/null +++ b/runtime/assets/animations/hearthguard/victory/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bwok77dm6pa0n" +path="res://.godot/imported/frame-2.png-4a538ab4e43d44983719ece353d05ec6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/victory/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-4a538ab4e43d44983719ece353d05ec6.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/runtime/assets/animations/hearthguard/victory/frame-3.png b/runtime/assets/animations/hearthguard/victory/frame-3.png new file mode 100644 index 00000000..8f8bbf5f Binary files /dev/null and b/runtime/assets/animations/hearthguard/victory/frame-3.png differ diff --git a/runtime/assets/animations/hearthguard/victory/frame-3.png.import b/runtime/assets/animations/hearthguard/victory/frame-3.png.import new file mode 100644 index 00000000..f7b6caee --- /dev/null +++ b/runtime/assets/animations/hearthguard/victory/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d2nvlqrjwvskv" +path="res://.godot/imported/frame-3.png-f5a9965c4e69a81edc9f0cfc8b502068.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/victory/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-f5a9965c4e69a81edc9f0cfc8b502068.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/runtime/assets/animations/hearthguard/victory/frame-4.png b/runtime/assets/animations/hearthguard/victory/frame-4.png new file mode 100644 index 00000000..857a700f Binary files /dev/null and b/runtime/assets/animations/hearthguard/victory/frame-4.png differ diff --git a/runtime/assets/animations/hearthguard/victory/frame-4.png.import b/runtime/assets/animations/hearthguard/victory/frame-4.png.import new file mode 100644 index 00000000..cf9afdb4 --- /dev/null +++ b/runtime/assets/animations/hearthguard/victory/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://63m7m5pcpwun" +path="res://.godot/imported/frame-4.png-bd987d6e2a2abc84565f2cd62551ce62.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/victory/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-bd987d6e2a2abc84565f2cd62551ce62.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/runtime/assets/animations/hearthguard/victory/frame-5.png b/runtime/assets/animations/hearthguard/victory/frame-5.png new file mode 100644 index 00000000..7d25e2c0 Binary files /dev/null and b/runtime/assets/animations/hearthguard/victory/frame-5.png differ diff --git a/runtime/assets/animations/hearthguard/victory/frame-5.png.import b/runtime/assets/animations/hearthguard/victory/frame-5.png.import new file mode 100644 index 00000000..ac28892d --- /dev/null +++ b/runtime/assets/animations/hearthguard/victory/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cory4p5ivc4ou" +path="res://.godot/imported/frame-5.png-5ed6d4d913e4073bd3c203aca0ac941e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/hearthguard/victory/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-5ed6d4d913e4073bd3c203aca0ac941e.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/runtime/assets/animations/kindhand/advance/frame-0.png b/runtime/assets/animations/kindhand/advance/frame-0.png new file mode 100644 index 00000000..8d5a1f9d Binary files /dev/null and b/runtime/assets/animations/kindhand/advance/frame-0.png differ diff --git a/runtime/assets/animations/kindhand/advance/frame-0.png.import b/runtime/assets/animations/kindhand/advance/frame-0.png.import new file mode 100644 index 00000000..7d4c0b57 --- /dev/null +++ b/runtime/assets/animations/kindhand/advance/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxkod6hhq8svw" +path="res://.godot/imported/frame-0.png-be3e52c85fe7edbce278ad132abe4e5c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/advance/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-be3e52c85fe7edbce278ad132abe4e5c.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/runtime/assets/animations/kindhand/advance/frame-1.png b/runtime/assets/animations/kindhand/advance/frame-1.png new file mode 100644 index 00000000..6a93822d Binary files /dev/null and b/runtime/assets/animations/kindhand/advance/frame-1.png differ diff --git a/runtime/assets/animations/kindhand/advance/frame-1.png.import b/runtime/assets/animations/kindhand/advance/frame-1.png.import new file mode 100644 index 00000000..9bd15096 --- /dev/null +++ b/runtime/assets/animations/kindhand/advance/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://08n11k3j1c41" +path="res://.godot/imported/frame-1.png-3af8e1a50bd2fb4eb6b282c64e352d6c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/advance/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-3af8e1a50bd2fb4eb6b282c64e352d6c.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/runtime/assets/animations/kindhand/idle/frame-0.png b/runtime/assets/animations/kindhand/idle/frame-0.png new file mode 100644 index 00000000..a354e963 Binary files /dev/null and b/runtime/assets/animations/kindhand/idle/frame-0.png differ diff --git a/runtime/assets/animations/kindhand/idle/frame-0.png.import b/runtime/assets/animations/kindhand/idle/frame-0.png.import new file mode 100644 index 00000000..2c4a5165 --- /dev/null +++ b/runtime/assets/animations/kindhand/idle/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cahyekk8pcqms" +path="res://.godot/imported/frame-0.png-e2b58e388b42aeda9862a9f3a91310b7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/idle/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-e2b58e388b42aeda9862a9f3a91310b7.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/runtime/assets/animations/kindhand/idle/frame-1.png b/runtime/assets/animations/kindhand/idle/frame-1.png new file mode 100644 index 00000000..ed63cf67 Binary files /dev/null and b/runtime/assets/animations/kindhand/idle/frame-1.png differ diff --git a/runtime/assets/animations/kindhand/idle/frame-1.png.import b/runtime/assets/animations/kindhand/idle/frame-1.png.import new file mode 100644 index 00000000..ae6d93fe --- /dev/null +++ b/runtime/assets/animations/kindhand/idle/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://didhw1ghcmpja" +path="res://.godot/imported/frame-1.png-081c00e55a1482def8a6d1cb9f688d88.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/idle/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-081c00e55a1482def8a6d1cb9f688d88.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/runtime/assets/animations/kindhand/lantern_heal/frame-0.png b/runtime/assets/animations/kindhand/lantern_heal/frame-0.png new file mode 100644 index 00000000..a354e963 Binary files /dev/null and b/runtime/assets/animations/kindhand/lantern_heal/frame-0.png differ diff --git a/runtime/assets/animations/kindhand/lantern_heal/frame-0.png.import b/runtime/assets/animations/kindhand/lantern_heal/frame-0.png.import new file mode 100644 index 00000000..bb4a2281 --- /dev/null +++ b/runtime/assets/animations/kindhand/lantern_heal/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l0u1n7thbltd" +path="res://.godot/imported/frame-0.png-0de08ec480faead9c6b3d98386f92054.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/lantern_heal/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-0de08ec480faead9c6b3d98386f92054.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/runtime/assets/animations/kindhand/lantern_heal/frame-1.png b/runtime/assets/animations/kindhand/lantern_heal/frame-1.png new file mode 100644 index 00000000..30347f71 Binary files /dev/null and b/runtime/assets/animations/kindhand/lantern_heal/frame-1.png differ diff --git a/runtime/assets/animations/kindhand/lantern_heal/frame-1.png.import b/runtime/assets/animations/kindhand/lantern_heal/frame-1.png.import new file mode 100644 index 00000000..d1f8ac1f --- /dev/null +++ b/runtime/assets/animations/kindhand/lantern_heal/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vg4nrqswmo2w" +path="res://.godot/imported/frame-1.png-41b79abf04665af947a97a28a13a1143.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/lantern_heal/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-41b79abf04665af947a97a28a13a1143.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/runtime/assets/animations/kindhand/lantern_heal/frame-2.png b/runtime/assets/animations/kindhand/lantern_heal/frame-2.png new file mode 100644 index 00000000..a376c47e Binary files /dev/null and b/runtime/assets/animations/kindhand/lantern_heal/frame-2.png differ diff --git a/runtime/assets/animations/kindhand/lantern_heal/frame-2.png.import b/runtime/assets/animations/kindhand/lantern_heal/frame-2.png.import new file mode 100644 index 00000000..72adcdc7 --- /dev/null +++ b/runtime/assets/animations/kindhand/lantern_heal/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b3r41lkrqugqu" +path="res://.godot/imported/frame-2.png-f6e944df3a7a0b6b32881cf855823e87.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/lantern_heal/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-f6e944df3a7a0b6b32881cf855823e87.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/runtime/assets/animations/kindhand/lantern_heal/frame-3.png b/runtime/assets/animations/kindhand/lantern_heal/frame-3.png new file mode 100644 index 00000000..ed63cf67 Binary files /dev/null and b/runtime/assets/animations/kindhand/lantern_heal/frame-3.png differ diff --git a/runtime/assets/animations/kindhand/lantern_heal/frame-3.png.import b/runtime/assets/animations/kindhand/lantern_heal/frame-3.png.import new file mode 100644 index 00000000..c32febf3 --- /dev/null +++ b/runtime/assets/animations/kindhand/lantern_heal/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ew4fj7tqd2ex" +path="res://.godot/imported/frame-3.png-7cd48252734855273eee0b48c0c07754.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/kindhand/lantern_heal/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-7cd48252734855273eee0b48c0c07754.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/runtime/assets/animations/riftblade/advance/frame-0.png b/runtime/assets/animations/riftblade/advance/frame-0.png new file mode 100644 index 00000000..191d47ff Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-0.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-0.png.import b/runtime/assets/animations/riftblade/advance/frame-0.png.import new file mode 100644 index 00000000..48a0e9d7 --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ct05i6wuw1dna" +path="res://.godot/imported/frame-0.png-b7cbacbd75148f518a1017ee0ac2b40d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-b7cbacbd75148f518a1017ee0ac2b40d.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/runtime/assets/animations/riftblade/advance/frame-1.png b/runtime/assets/animations/riftblade/advance/frame-1.png new file mode 100644 index 00000000..fcd327ac Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-1.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-1.png.import b/runtime/assets/animations/riftblade/advance/frame-1.png.import new file mode 100644 index 00000000..6dbf76fb --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5tvhbi22xjpl" +path="res://.godot/imported/frame-1.png-66cf799dcfd5b5f5d5aaa4cf5500fa72.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-66cf799dcfd5b5f5d5aaa4cf5500fa72.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/runtime/assets/animations/riftblade/advance/frame-2.png b/runtime/assets/animations/riftblade/advance/frame-2.png new file mode 100644 index 00000000..fe9d5b8e Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-2.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-2.png.import b/runtime/assets/animations/riftblade/advance/frame-2.png.import new file mode 100644 index 00000000..07cec74c --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bdmckv3ty07ft" +path="res://.godot/imported/frame-2.png-e1155a423a44e660ea19f1ad6cf83eb5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-e1155a423a44e660ea19f1ad6cf83eb5.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/runtime/assets/animations/riftblade/advance/frame-3.png b/runtime/assets/animations/riftblade/advance/frame-3.png new file mode 100644 index 00000000..8aae9fbc Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-3.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-3.png.import b/runtime/assets/animations/riftblade/advance/frame-3.png.import new file mode 100644 index 00000000..0535bced --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://kqcftuboeoth" +path="res://.godot/imported/frame-3.png-725d644fd211f61f9221444d00d9b8f3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-725d644fd211f61f9221444d00d9b8f3.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/runtime/assets/animations/riftblade/advance/frame-4.png b/runtime/assets/animations/riftblade/advance/frame-4.png new file mode 100644 index 00000000..6526736e Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-4.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-4.png.import b/runtime/assets/animations/riftblade/advance/frame-4.png.import new file mode 100644 index 00000000..e75cafd8 --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dtlredmolpxju" +path="res://.godot/imported/frame-4.png-ce3f0159c9d00c32a7cbea4636448a68.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-ce3f0159c9d00c32a7cbea4636448a68.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/runtime/assets/animations/riftblade/advance/frame-5.png b/runtime/assets/animations/riftblade/advance/frame-5.png new file mode 100644 index 00000000..a3becfed Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-5.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-5.png.import b/runtime/assets/animations/riftblade/advance/frame-5.png.import new file mode 100644 index 00000000..0cc19b6a --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dp7ogb1u4j101" +path="res://.godot/imported/frame-5.png-009cf951c92ff59bf604de4a70fe16b1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-009cf951c92ff59bf604de4a70fe16b1.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/runtime/assets/animations/riftblade/advance/frame-6.png b/runtime/assets/animations/riftblade/advance/frame-6.png new file mode 100644 index 00000000..eb6bc671 Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-6.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-6.png.import b/runtime/assets/animations/riftblade/advance/frame-6.png.import new file mode 100644 index 00000000..3908ffc1 --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-6.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dpe7tstn86o3y" +path="res://.godot/imported/frame-6.png-62c6462465d2ac0d8436553d792fe4f9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-6.png" +dest_files=["res://.godot/imported/frame-6.png-62c6462465d2ac0d8436553d792fe4f9.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/runtime/assets/animations/riftblade/advance/frame-7.png b/runtime/assets/animations/riftblade/advance/frame-7.png new file mode 100644 index 00000000..548e8c24 Binary files /dev/null and b/runtime/assets/animations/riftblade/advance/frame-7.png differ diff --git a/runtime/assets/animations/riftblade/advance/frame-7.png.import b/runtime/assets/animations/riftblade/advance/frame-7.png.import new file mode 100644 index 00000000..cf17b49c --- /dev/null +++ b/runtime/assets/animations/riftblade/advance/frame-7.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b83kp0o5cj1tx" +path="res://.godot/imported/frame-7.png-aa76fba562cba28f8022da00f95580f6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/advance/frame-7.png" +dest_files=["res://.godot/imported/frame-7.png-aa76fba562cba28f8022da00f95580f6.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/runtime/assets/animations/riftblade/attack/frame-0.png b/runtime/assets/animations/riftblade/attack/frame-0.png new file mode 100644 index 00000000..be925718 Binary files /dev/null and b/runtime/assets/animations/riftblade/attack/frame-0.png differ diff --git a/runtime/assets/animations/riftblade/attack/frame-0.png.import b/runtime/assets/animations/riftblade/attack/frame-0.png.import new file mode 100644 index 00000000..d2e9ca38 --- /dev/null +++ b/runtime/assets/animations/riftblade/attack/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4pnmvktu02dd" +path="res://.godot/imported/frame-0.png-2028be4ce2a8025a697011051cd86eb4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/attack/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-2028be4ce2a8025a697011051cd86eb4.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/runtime/assets/animations/riftblade/attack/frame-1.png b/runtime/assets/animations/riftblade/attack/frame-1.png new file mode 100644 index 00000000..14ef3464 Binary files /dev/null and b/runtime/assets/animations/riftblade/attack/frame-1.png differ diff --git a/runtime/assets/animations/riftblade/attack/frame-1.png.import b/runtime/assets/animations/riftblade/attack/frame-1.png.import new file mode 100644 index 00000000..5088a6cf --- /dev/null +++ b/runtime/assets/animations/riftblade/attack/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjcek6j4ypkin" +path="res://.godot/imported/frame-1.png-cf81f202c231bc6a15b427b3368d03ee.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/attack/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-cf81f202c231bc6a15b427b3368d03ee.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/runtime/assets/animations/riftblade/attack/frame-2.png b/runtime/assets/animations/riftblade/attack/frame-2.png new file mode 100644 index 00000000..2db0bc81 Binary files /dev/null and b/runtime/assets/animations/riftblade/attack/frame-2.png differ diff --git a/runtime/assets/animations/riftblade/attack/frame-2.png.import b/runtime/assets/animations/riftblade/attack/frame-2.png.import new file mode 100644 index 00000000..2dd23d99 --- /dev/null +++ b/runtime/assets/animations/riftblade/attack/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b73w1am3wyubr" +path="res://.godot/imported/frame-2.png-d767b2b0e0aa196cc8889c0257f160e9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/attack/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-d767b2b0e0aa196cc8889c0257f160e9.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/runtime/assets/animations/riftblade/attack/frame-3.png b/runtime/assets/animations/riftblade/attack/frame-3.png new file mode 100644 index 00000000..bdd6e7cb Binary files /dev/null and b/runtime/assets/animations/riftblade/attack/frame-3.png differ diff --git a/runtime/assets/animations/riftblade/attack/frame-3.png.import b/runtime/assets/animations/riftblade/attack/frame-3.png.import new file mode 100644 index 00000000..911ad289 --- /dev/null +++ b/runtime/assets/animations/riftblade/attack/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b37dh5tjbgdk2" +path="res://.godot/imported/frame-3.png-94d543a610d3b9eff5dc3c38027be310.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/attack/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-94d543a610d3b9eff5dc3c38027be310.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/runtime/assets/animations/riftblade/attack/frame-4.png b/runtime/assets/animations/riftblade/attack/frame-4.png new file mode 100644 index 00000000..258c9c64 Binary files /dev/null and b/runtime/assets/animations/riftblade/attack/frame-4.png differ diff --git a/runtime/assets/animations/riftblade/attack/frame-4.png.import b/runtime/assets/animations/riftblade/attack/frame-4.png.import new file mode 100644 index 00000000..e97bf66d --- /dev/null +++ b/runtime/assets/animations/riftblade/attack/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c84x8k5ni5duo" +path="res://.godot/imported/frame-4.png-69201020db32c4f436e0fe7fbfbff491.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/attack/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-69201020db32c4f436e0fe7fbfbff491.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/runtime/assets/animations/riftblade/attack/frame-5.png b/runtime/assets/animations/riftblade/attack/frame-5.png new file mode 100644 index 00000000..e6bb6bbd Binary files /dev/null and b/runtime/assets/animations/riftblade/attack/frame-5.png differ diff --git a/runtime/assets/animations/riftblade/attack/frame-5.png.import b/runtime/assets/animations/riftblade/attack/frame-5.png.import new file mode 100644 index 00000000..73254efb --- /dev/null +++ b/runtime/assets/animations/riftblade/attack/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b8l6a3kmpr7y2" +path="res://.godot/imported/frame-5.png-d627aa8e3a6ceea7552e00b55c55b891.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/attack/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-d627aa8e3a6ceea7552e00b55c55b891.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/runtime/assets/animations/riftblade/death/frame-0.png b/runtime/assets/animations/riftblade/death/frame-0.png new file mode 100644 index 00000000..8d894a2e Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-0.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-0.png.import b/runtime/assets/animations/riftblade/death/frame-0.png.import new file mode 100644 index 00000000..3ab8f3bc --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b7bj7kr5mk4q8" +path="res://.godot/imported/frame-0.png-1aece7a66cce9befa373fc34da4f45a6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-1aece7a66cce9befa373fc34da4f45a6.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/runtime/assets/animations/riftblade/death/frame-1.png b/runtime/assets/animations/riftblade/death/frame-1.png new file mode 100644 index 00000000..894dc19b Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-1.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-1.png.import b/runtime/assets/animations/riftblade/death/frame-1.png.import new file mode 100644 index 00000000..cebcf036 --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://i060ob5f4ww7" +path="res://.godot/imported/frame-1.png-88d187555137abf3bb7000d2fab9c0c7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-88d187555137abf3bb7000d2fab9c0c7.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/runtime/assets/animations/riftblade/death/frame-2.png b/runtime/assets/animations/riftblade/death/frame-2.png new file mode 100644 index 00000000..fd0162cb Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-2.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-2.png.import b/runtime/assets/animations/riftblade/death/frame-2.png.import new file mode 100644 index 00000000..af04e2aa --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhutrjq0ekllq" +path="res://.godot/imported/frame-2.png-c5e6fd32375a7d88387acee8d3355e8f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-c5e6fd32375a7d88387acee8d3355e8f.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/runtime/assets/animations/riftblade/death/frame-3.png b/runtime/assets/animations/riftblade/death/frame-3.png new file mode 100644 index 00000000..e0b2686e Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-3.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-3.png.import b/runtime/assets/animations/riftblade/death/frame-3.png.import new file mode 100644 index 00000000..4713e9ee --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bjqy7ji00irum" +path="res://.godot/imported/frame-3.png-122996d6d76721ab2829a18ca1361213.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-122996d6d76721ab2829a18ca1361213.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/runtime/assets/animations/riftblade/death/frame-4.png b/runtime/assets/animations/riftblade/death/frame-4.png new file mode 100644 index 00000000..ff4ad3ec Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-4.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-4.png.import b/runtime/assets/animations/riftblade/death/frame-4.png.import new file mode 100644 index 00000000..48745b65 --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bw6nsb76nkykq" +path="res://.godot/imported/frame-4.png-e31b4b07486778acb78f5dfbce23d09d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-e31b4b07486778acb78f5dfbce23d09d.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/runtime/assets/animations/riftblade/death/frame-5.png b/runtime/assets/animations/riftblade/death/frame-5.png new file mode 100644 index 00000000..a8641012 Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-5.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-5.png.import b/runtime/assets/animations/riftblade/death/frame-5.png.import new file mode 100644 index 00000000..624f1c45 --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5hupp6wnj85d" +path="res://.godot/imported/frame-5.png-c7f29f160774ded08685491977760f02.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-c7f29f160774ded08685491977760f02.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/runtime/assets/animations/riftblade/death/frame-6.png b/runtime/assets/animations/riftblade/death/frame-6.png new file mode 100644 index 00000000..1313169d Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-6.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-6.png.import b/runtime/assets/animations/riftblade/death/frame-6.png.import new file mode 100644 index 00000000..27b38d15 --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-6.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c23ygqbugf1m1" +path="res://.godot/imported/frame-6.png-ec241a424db47964a6c5671148bdd524.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-6.png" +dest_files=["res://.godot/imported/frame-6.png-ec241a424db47964a6c5671148bdd524.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/runtime/assets/animations/riftblade/death/frame-7.png b/runtime/assets/animations/riftblade/death/frame-7.png new file mode 100644 index 00000000..9f9458eb Binary files /dev/null and b/runtime/assets/animations/riftblade/death/frame-7.png differ diff --git a/runtime/assets/animations/riftblade/death/frame-7.png.import b/runtime/assets/animations/riftblade/death/frame-7.png.import new file mode 100644 index 00000000..e7f35757 --- /dev/null +++ b/runtime/assets/animations/riftblade/death/frame-7.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d153lcxht28o2" +path="res://.godot/imported/frame-7.png-385a0e9f6239e3d15a368e279e8ec2c5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/death/frame-7.png" +dest_files=["res://.godot/imported/frame-7.png-385a0e9f6239e3d15a368e279e8ec2c5.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/runtime/assets/animations/riftblade/hit/frame-0.png b/runtime/assets/animations/riftblade/hit/frame-0.png new file mode 100644 index 00000000..3fe2670a Binary files /dev/null and b/runtime/assets/animations/riftblade/hit/frame-0.png differ diff --git a/runtime/assets/animations/riftblade/hit/frame-0.png.import b/runtime/assets/animations/riftblade/hit/frame-0.png.import new file mode 100644 index 00000000..2b624ca7 --- /dev/null +++ b/runtime/assets/animations/riftblade/hit/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4t0yrmbgooyg" +path="res://.godot/imported/frame-0.png-1fa34fc7f685fb23a4dc1e2e6c59dee1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/hit/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-1fa34fc7f685fb23a4dc1e2e6c59dee1.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/runtime/assets/animations/riftblade/hit/frame-1.png b/runtime/assets/animations/riftblade/hit/frame-1.png new file mode 100644 index 00000000..fac4052e Binary files /dev/null and b/runtime/assets/animations/riftblade/hit/frame-1.png differ diff --git a/runtime/assets/animations/riftblade/hit/frame-1.png.import b/runtime/assets/animations/riftblade/hit/frame-1.png.import new file mode 100644 index 00000000..70f0e695 --- /dev/null +++ b/runtime/assets/animations/riftblade/hit/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dn5hcpbuhy0ax" +path="res://.godot/imported/frame-1.png-ac5b39caa04cb3df75c6d579424a7df9.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/hit/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-ac5b39caa04cb3df75c6d579424a7df9.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/runtime/assets/animations/riftblade/hit/frame-2.png b/runtime/assets/animations/riftblade/hit/frame-2.png new file mode 100644 index 00000000..2d049a82 Binary files /dev/null and b/runtime/assets/animations/riftblade/hit/frame-2.png differ diff --git a/runtime/assets/animations/riftblade/hit/frame-2.png.import b/runtime/assets/animations/riftblade/hit/frame-2.png.import new file mode 100644 index 00000000..3c207e6b --- /dev/null +++ b/runtime/assets/animations/riftblade/hit/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csvg28fi01ujq" +path="res://.godot/imported/frame-2.png-41ccc9850fb4a5287d3cf87105ac7963.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/hit/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-41ccc9850fb4a5287d3cf87105ac7963.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/runtime/assets/animations/riftblade/hit/frame-3.png b/runtime/assets/animations/riftblade/hit/frame-3.png new file mode 100644 index 00000000..b0337181 Binary files /dev/null and b/runtime/assets/animations/riftblade/hit/frame-3.png differ diff --git a/runtime/assets/animations/riftblade/hit/frame-3.png.import b/runtime/assets/animations/riftblade/hit/frame-3.png.import new file mode 100644 index 00000000..e28b0da8 --- /dev/null +++ b/runtime/assets/animations/riftblade/hit/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b0wqhl4fffi1f" +path="res://.godot/imported/frame-3.png-019e6afa53946d9bd737ed9e55968b3e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/hit/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-019e6afa53946d9bd737ed9e55968b3e.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/runtime/assets/animations/riftblade/idle/frame-0.png b/runtime/assets/animations/riftblade/idle/frame-0.png new file mode 100644 index 00000000..c3d0c783 Binary files /dev/null and b/runtime/assets/animations/riftblade/idle/frame-0.png differ diff --git a/runtime/assets/animations/riftblade/idle/frame-0.png.import b/runtime/assets/animations/riftblade/idle/frame-0.png.import new file mode 100644 index 00000000..c475fc9f --- /dev/null +++ b/runtime/assets/animations/riftblade/idle/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dxvcp0ptrjyvv" +path="res://.godot/imported/frame-0.png-b0e890241299c4ccec44ac70ef1f459f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/idle/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-b0e890241299c4ccec44ac70ef1f459f.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/runtime/assets/animations/riftblade/idle/frame-1.png b/runtime/assets/animations/riftblade/idle/frame-1.png new file mode 100644 index 00000000..69c9479e Binary files /dev/null and b/runtime/assets/animations/riftblade/idle/frame-1.png differ diff --git a/runtime/assets/animations/riftblade/idle/frame-1.png.import b/runtime/assets/animations/riftblade/idle/frame-1.png.import new file mode 100644 index 00000000..e47bddd0 --- /dev/null +++ b/runtime/assets/animations/riftblade/idle/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5776b8kjcf5h" +path="res://.godot/imported/frame-1.png-0ff11a19db6b7410249eaffeaa3fd903.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/idle/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-0ff11a19db6b7410249eaffeaa3fd903.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/runtime/assets/animations/riftblade/idle/frame-2.png b/runtime/assets/animations/riftblade/idle/frame-2.png new file mode 100644 index 00000000..ea91d19f Binary files /dev/null and b/runtime/assets/animations/riftblade/idle/frame-2.png differ diff --git a/runtime/assets/animations/riftblade/idle/frame-2.png.import b/runtime/assets/animations/riftblade/idle/frame-2.png.import new file mode 100644 index 00000000..bf8d3aad --- /dev/null +++ b/runtime/assets/animations/riftblade/idle/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3kkg7d8g5d07" +path="res://.godot/imported/frame-2.png-15f5e84e01ae5a039d82c50d9420ff33.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/idle/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-15f5e84e01ae5a039d82c50d9420ff33.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/runtime/assets/animations/riftblade/idle/frame-3.png b/runtime/assets/animations/riftblade/idle/frame-3.png new file mode 100644 index 00000000..69c9479e Binary files /dev/null and b/runtime/assets/animations/riftblade/idle/frame-3.png differ diff --git a/runtime/assets/animations/riftblade/idle/frame-3.png.import b/runtime/assets/animations/riftblade/idle/frame-3.png.import new file mode 100644 index 00000000..ebf79dc3 --- /dev/null +++ b/runtime/assets/animations/riftblade/idle/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dog2gjr8ymxwf" +path="res://.godot/imported/frame-3.png-4284e99c46b7da36b7d17426473fd91a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/idle/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-4284e99c46b7da36b7d17426473fd91a.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/runtime/assets/animations/riftblade/idle/frame-4.png b/runtime/assets/animations/riftblade/idle/frame-4.png new file mode 100644 index 00000000..c3d0c783 Binary files /dev/null and b/runtime/assets/animations/riftblade/idle/frame-4.png differ diff --git a/runtime/assets/animations/riftblade/idle/frame-4.png.import b/runtime/assets/animations/riftblade/idle/frame-4.png.import new file mode 100644 index 00000000..bf69fa7a --- /dev/null +++ b/runtime/assets/animations/riftblade/idle/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5gomy7k34mbb" +path="res://.godot/imported/frame-4.png-0a7f71bfbb8717bd32e6cbdb2ae897b4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/idle/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-0a7f71bfbb8717bd32e6cbdb2ae897b4.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/runtime/assets/animations/riftblade/idle/frame-5.png b/runtime/assets/animations/riftblade/idle/frame-5.png new file mode 100644 index 00000000..69c9479e Binary files /dev/null and b/runtime/assets/animations/riftblade/idle/frame-5.png differ diff --git a/runtime/assets/animations/riftblade/idle/frame-5.png.import b/runtime/assets/animations/riftblade/idle/frame-5.png.import new file mode 100644 index 00000000..90f634b9 --- /dev/null +++ b/runtime/assets/animations/riftblade/idle/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dk8y1suovkwpj" +path="res://.godot/imported/frame-5.png-5366f4f3557cbf697a1c7225341f57a1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/idle/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-5366f4f3557cbf697a1c7225341f57a1.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/runtime/assets/animations/riftblade/telegraph/frame-0.png b/runtime/assets/animations/riftblade/telegraph/frame-0.png new file mode 100644 index 00000000..434a1abf Binary files /dev/null and b/runtime/assets/animations/riftblade/telegraph/frame-0.png differ diff --git a/runtime/assets/animations/riftblade/telegraph/frame-0.png.import b/runtime/assets/animations/riftblade/telegraph/frame-0.png.import new file mode 100644 index 00000000..70a95066 --- /dev/null +++ b/runtime/assets/animations/riftblade/telegraph/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbw7umwessw8r" +path="res://.godot/imported/frame-0.png-a850b38cb8208a4cbd5023da0acf88db.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/telegraph/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-a850b38cb8208a4cbd5023da0acf88db.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/runtime/assets/animations/riftblade/telegraph/frame-1.png b/runtime/assets/animations/riftblade/telegraph/frame-1.png new file mode 100644 index 00000000..2854bcd9 Binary files /dev/null and b/runtime/assets/animations/riftblade/telegraph/frame-1.png differ diff --git a/runtime/assets/animations/riftblade/telegraph/frame-1.png.import b/runtime/assets/animations/riftblade/telegraph/frame-1.png.import new file mode 100644 index 00000000..9d195b19 --- /dev/null +++ b/runtime/assets/animations/riftblade/telegraph/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://04gbwqpbipc5" +path="res://.godot/imported/frame-1.png-3630301c1b7d41318e48e1051d12d8ac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/telegraph/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-3630301c1b7d41318e48e1051d12d8ac.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/runtime/assets/animations/riftblade/telegraph/frame-2.png b/runtime/assets/animations/riftblade/telegraph/frame-2.png new file mode 100644 index 00000000..74d85642 Binary files /dev/null and b/runtime/assets/animations/riftblade/telegraph/frame-2.png differ diff --git a/runtime/assets/animations/riftblade/telegraph/frame-2.png.import b/runtime/assets/animations/riftblade/telegraph/frame-2.png.import new file mode 100644 index 00000000..d0fa9506 --- /dev/null +++ b/runtime/assets/animations/riftblade/telegraph/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dfaxv36wkcq4u" +path="res://.godot/imported/frame-2.png-e2464d9df84191eebcab901ca3b4c0d7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/telegraph/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-e2464d9df84191eebcab901ca3b4c0d7.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/runtime/assets/animations/riftblade/telegraph/frame-3.png b/runtime/assets/animations/riftblade/telegraph/frame-3.png new file mode 100644 index 00000000..b34f99c7 Binary files /dev/null and b/runtime/assets/animations/riftblade/telegraph/frame-3.png differ diff --git a/runtime/assets/animations/riftblade/telegraph/frame-3.png.import b/runtime/assets/animations/riftblade/telegraph/frame-3.png.import new file mode 100644 index 00000000..b3ac3d5b --- /dev/null +++ b/runtime/assets/animations/riftblade/telegraph/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://caoqewi77eft7" +path="res://.godot/imported/frame-3.png-a153fd5ea78230f48ac2ba3094f3459d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/telegraph/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-a153fd5ea78230f48ac2ba3094f3459d.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/runtime/assets/animations/riftblade/telegraph/frame-4.png b/runtime/assets/animations/riftblade/telegraph/frame-4.png new file mode 100644 index 00000000..fa070039 Binary files /dev/null and b/runtime/assets/animations/riftblade/telegraph/frame-4.png differ diff --git a/runtime/assets/animations/riftblade/telegraph/frame-4.png.import b/runtime/assets/animations/riftblade/telegraph/frame-4.png.import new file mode 100644 index 00000000..55cb31ec --- /dev/null +++ b/runtime/assets/animations/riftblade/telegraph/frame-4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1fi4jol187u6" +path="res://.godot/imported/frame-4.png-d208a3e3a3b982901426dd22aaad7e38.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/telegraph/frame-4.png" +dest_files=["res://.godot/imported/frame-4.png-d208a3e3a3b982901426dd22aaad7e38.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/runtime/assets/animations/riftblade/telegraph/frame-5.png b/runtime/assets/animations/riftblade/telegraph/frame-5.png new file mode 100644 index 00000000..de6b0d25 Binary files /dev/null and b/runtime/assets/animations/riftblade/telegraph/frame-5.png differ diff --git a/runtime/assets/animations/riftblade/telegraph/frame-5.png.import b/runtime/assets/animations/riftblade/telegraph/frame-5.png.import new file mode 100644 index 00000000..3f015075 --- /dev/null +++ b/runtime/assets/animations/riftblade/telegraph/frame-5.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bv6ubrwxbqa2a" +path="res://.godot/imported/frame-5.png-e73bc40575f1cde283febc41ffa8defa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/riftblade/telegraph/frame-5.png" +dest_files=["res://.godot/imported/frame-5.png-e73bc40575f1cde283febc41ffa8defa.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/runtime/assets/animations/wayrunner/advance/frame-0.png b/runtime/assets/animations/wayrunner/advance/frame-0.png new file mode 100644 index 00000000..e2f1d944 Binary files /dev/null and b/runtime/assets/animations/wayrunner/advance/frame-0.png differ diff --git a/runtime/assets/animations/wayrunner/advance/frame-0.png.import b/runtime/assets/animations/wayrunner/advance/frame-0.png.import new file mode 100644 index 00000000..5b1a5c8b --- /dev/null +++ b/runtime/assets/animations/wayrunner/advance/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bicbny4im01lj" +path="res://.godot/imported/frame-0.png-5a728d023f9efce5c2eb595663aa57c4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/advance/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-5a728d023f9efce5c2eb595663aa57c4.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/runtime/assets/animations/wayrunner/advance/frame-1.png b/runtime/assets/animations/wayrunner/advance/frame-1.png new file mode 100644 index 00000000..2234c28f Binary files /dev/null and b/runtime/assets/animations/wayrunner/advance/frame-1.png differ diff --git a/runtime/assets/animations/wayrunner/advance/frame-1.png.import b/runtime/assets/animations/wayrunner/advance/frame-1.png.import new file mode 100644 index 00000000..58fa87cb --- /dev/null +++ b/runtime/assets/animations/wayrunner/advance/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xufwtd0xns00" +path="res://.godot/imported/frame-1.png-421e4b33187768e0808c0957be3f4bfc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/advance/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-421e4b33187768e0808c0957be3f4bfc.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/runtime/assets/animations/wayrunner/evade_counter/frame-0.png b/runtime/assets/animations/wayrunner/evade_counter/frame-0.png new file mode 100644 index 00000000..4b2b0eb2 Binary files /dev/null and b/runtime/assets/animations/wayrunner/evade_counter/frame-0.png differ diff --git a/runtime/assets/animations/wayrunner/evade_counter/frame-0.png.import b/runtime/assets/animations/wayrunner/evade_counter/frame-0.png.import new file mode 100644 index 00000000..23251b6a --- /dev/null +++ b/runtime/assets/animations/wayrunner/evade_counter/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d1v4cinbaq8yc" +path="res://.godot/imported/frame-0.png-d40b019b6417caa4994aa4231acc9aec.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/evade_counter/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-d40b019b6417caa4994aa4231acc9aec.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/runtime/assets/animations/wayrunner/evade_counter/frame-1.png b/runtime/assets/animations/wayrunner/evade_counter/frame-1.png new file mode 100644 index 00000000..8f16d45a Binary files /dev/null and b/runtime/assets/animations/wayrunner/evade_counter/frame-1.png differ diff --git a/runtime/assets/animations/wayrunner/evade_counter/frame-1.png.import b/runtime/assets/animations/wayrunner/evade_counter/frame-1.png.import new file mode 100644 index 00000000..72043021 --- /dev/null +++ b/runtime/assets/animations/wayrunner/evade_counter/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvqf5xiuk04dq" +path="res://.godot/imported/frame-1.png-f0f78e96dc726f859001b37e85905cab.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/evade_counter/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-f0f78e96dc726f859001b37e85905cab.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/runtime/assets/animations/wayrunner/evade_counter/frame-2.png b/runtime/assets/animations/wayrunner/evade_counter/frame-2.png new file mode 100644 index 00000000..797b35c7 Binary files /dev/null and b/runtime/assets/animations/wayrunner/evade_counter/frame-2.png differ diff --git a/runtime/assets/animations/wayrunner/evade_counter/frame-2.png.import b/runtime/assets/animations/wayrunner/evade_counter/frame-2.png.import new file mode 100644 index 00000000..7c1ac752 --- /dev/null +++ b/runtime/assets/animations/wayrunner/evade_counter/frame-2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dubuafql7rx1y" +path="res://.godot/imported/frame-2.png-50be73ad9103e37ef3b8c0509d4fbbfa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/evade_counter/frame-2.png" +dest_files=["res://.godot/imported/frame-2.png-50be73ad9103e37ef3b8c0509d4fbbfa.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/runtime/assets/animations/wayrunner/evade_counter/frame-3.png b/runtime/assets/animations/wayrunner/evade_counter/frame-3.png new file mode 100644 index 00000000..aa7522a6 Binary files /dev/null and b/runtime/assets/animations/wayrunner/evade_counter/frame-3.png differ diff --git a/runtime/assets/animations/wayrunner/evade_counter/frame-3.png.import b/runtime/assets/animations/wayrunner/evade_counter/frame-3.png.import new file mode 100644 index 00000000..1f60d9a4 --- /dev/null +++ b/runtime/assets/animations/wayrunner/evade_counter/frame-3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://do3afpohrlllm" +path="res://.godot/imported/frame-3.png-b0cc3b6243bbd22e67fc1168aaa2e4aa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/evade_counter/frame-3.png" +dest_files=["res://.godot/imported/frame-3.png-b0cc3b6243bbd22e67fc1168aaa2e4aa.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/runtime/assets/animations/wayrunner/idle/frame-0.png b/runtime/assets/animations/wayrunner/idle/frame-0.png new file mode 100644 index 00000000..4b2b0eb2 Binary files /dev/null and b/runtime/assets/animations/wayrunner/idle/frame-0.png differ diff --git a/runtime/assets/animations/wayrunner/idle/frame-0.png.import b/runtime/assets/animations/wayrunner/idle/frame-0.png.import new file mode 100644 index 00000000..dde42c4e --- /dev/null +++ b/runtime/assets/animations/wayrunner/idle/frame-0.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cfor7eu2f70ac" +path="res://.godot/imported/frame-0.png-a99ced7afd00429b0991632603c7935c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/idle/frame-0.png" +dest_files=["res://.godot/imported/frame-0.png-a99ced7afd00429b0991632603c7935c.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/runtime/assets/animations/wayrunner/idle/frame-1.png b/runtime/assets/animations/wayrunner/idle/frame-1.png new file mode 100644 index 00000000..aa7522a6 Binary files /dev/null and b/runtime/assets/animations/wayrunner/idle/frame-1.png differ diff --git a/runtime/assets/animations/wayrunner/idle/frame-1.png.import b/runtime/assets/animations/wayrunner/idle/frame-1.png.import new file mode 100644 index 00000000..ce6ed065 --- /dev/null +++ b/runtime/assets/animations/wayrunner/idle/frame-1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbb3tahcgorao" +path="res://.godot/imported/frame-1.png-e2927e4d8cde618769016947f1e40ddd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/animations/wayrunner/idle/frame-1.png" +dest_files=["res://.godot/imported/frame-1.png-e2927e4d8cde618769016947f1e40ddd.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/runtime/main.gd b/runtime/main.gd index f6d3e448..acdc71d1 100644 --- a/runtime/main.gd +++ b/runtime/main.gd @@ -15,6 +15,38 @@ const RIFTBLADE := { "hit": preload("res://assets/enemies/riftblade/hit.png"), "death": preload("res://assets/enemies/riftblade/death.png"), } +const ANIMATION_SPECS := { + "Hearthguard": { + "idle": {"root": "hearthguard/idle", "frames": 6, "fps": 6.0, "loop": true}, + "advance": {"root": "hearthguard/advance", "frames": 8, "fps": 10.0, "loop": true}, + "guard": {"root": "hearthguard/guard", "frames": 4, "fps": 10.0, "loop": false}, + "basic_attack": {"root": "hearthguard/basic_attack", "frames": 6, "fps": 12.0, "loop": false}, + "victory": {"root": "hearthguard/victory", "frames": 6, "fps": 6.0, "loop": false}, + }, + "Wayrunner": { + "idle": {"root": "wayrunner/idle", "frames": 2, "fps": 3.0, "loop": true}, + "advance": {"root": "wayrunner/advance", "frames": 2, "fps": 6.0, "loop": true}, + "evade_counter": {"root": "wayrunner/evade_counter", "frames": 4, "fps": 7.0, "loop": false}, + }, + "Farstring": { + "idle": {"root": "farstring/idle", "frames": 2, "fps": 3.0, "loop": true}, + "advance": {"root": "farstring/advance", "frames": 2, "fps": 6.0, "loop": true}, + "draw_release": {"root": "farstring/draw_release", "frames": 4, "fps": 7.0, "loop": false}, + }, + "Kindhand": { + "idle": {"root": "kindhand/idle", "frames": 2, "fps": 3.0, "loop": true}, + "advance": {"root": "kindhand/advance", "frames": 2, "fps": 6.0, "loop": true}, + "lantern_heal": {"root": "kindhand/lantern_heal", "frames": 4, "fps": 7.0, "loop": false}, + }, + "Riftblade": { + "idle": {"root": "riftblade/idle", "frames": 6, "fps": 6.0, "loop": true}, + "advance": {"root": "riftblade/advance", "frames": 8, "fps": 10.0, "loop": true}, + "telegraph": {"root": "riftblade/telegraph", "frames": 6, "fps": 10.0, "loop": false}, + "attack": {"root": "riftblade/attack", "frames": 6, "fps": 12.0, "loop": false}, + "hit": {"root": "riftblade/hit", "frames": 4, "fps": 10.0, "loop": false}, + "death": {"root": "riftblade/death", "frames": 8, "fps": 10.0, "loop": false}, + }, +} const VFX := { "guard": preload("res://assets/vfx/protect_absorb.png"), "heal": preload("res://assets/vfx/protect_gain.png"), @@ -32,6 +64,11 @@ const BOOT_REQUIRED_PATHS: Array[String] = [ "res://assets/actors/kindhand.png", "res://assets/enemies/riftblade/idle.png", "res://assets/enemies/riftblade/attack.png", + "res://assets/animations/hearthguard/advance/frame-0.png", + "res://assets/animations/wayrunner/evade_counter/frame-0.png", + "res://assets/animations/farstring/draw_release/frame-0.png", + "res://assets/animations/kindhand/lantern_heal/frame-0.png", + "res://assets/animations/riftblade/death/frame-0.png", "res://assets/fonts/NotoSansSC.ttf", ] @@ -106,11 +143,17 @@ var enemy_hp := 100 var guard_events := 0 var rear_events := 0 var victory_events := 0 +var phase_impact_committed: Dictionary = {} +var animation_library: Dictionary = {} +var victory_clock := 0.0 var display_root: Control var front_sprite: TextureRect var rear_sprite: TextureRect var enemy_sprite: TextureRect +var victory_front_sprite: TextureRect +var victory_rear_sprite: TextureRect +var victory_enemy_sprite: TextureRect var projectile: Control var front_base_position := Vector2.ZERO var rear_base_position := Vector2.ZERO @@ -128,6 +171,7 @@ func _ready() -> void: display_root.name = "DisplayRoot" display_root.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) add_child(display_root) + load_animation_library() setup_audio() resized.connect(queue_render) render() @@ -156,6 +200,95 @@ func setup_audio() -> void: sfx_playback = audio_player.get_stream_playback() +func load_animation_library() -> void: + animation_library.clear() + for character in ANIMATION_SPECS: + var states: Dictionary = ANIMATION_SPECS[character] + var loaded_states := {} + for state in states: + var spec: Dictionary = states[state] + var frames: Array[Texture2D] = [] + for index in range(int(spec["frames"])): + var path := "res://assets/animations/%s/frame-%d.png" % [spec["root"], index] + var texture := load(path) as Texture2D + assert(texture != null, "Missing animation texture: %s" % path) + frames.append(texture) + loaded_states[state] = { + "frames": frames, + "fps": float(spec["fps"]), + "loop": bool(spec["loop"]), + } + animation_library[character] = loaded_states + + +func animation_frame_index(character: String, state: String, elapsed: float) -> int: + var resolved_state := state + if not animation_library.has(character): + return 0 + var states: Dictionary = animation_library[character] + if not states.has(resolved_state): + resolved_state = "idle" + var animation: Dictionary = states[resolved_state] + var frames: Array = animation["frames"] + if frames.is_empty(): + return 0 + var fps: float = animation["fps"] + if reduced_motion and bool(animation["loop"]): + return 0 + if reduced_motion: + fps = minf(fps, 5.0) + var raw_index := int(floor(maxf(0.0, elapsed) * fps)) + return raw_index % frames.size() if bool(animation["loop"]) else mini(raw_index, frames.size() - 1) + + +func animation_texture(character: String, state: String, elapsed: float) -> Texture2D: + if animation_library.has(character): + var states: Dictionary = animation_library[character] + var resolved_state := state if states.has(state) else "idle" + if states.has(resolved_state): + var animation: Dictionary = states[resolved_state] + var frames: Array = animation["frames"] + return frames[animation_frame_index(character, resolved_state, elapsed)] + return RIFTBLADE.get(state, RIFTBLADE["idle"]) if character == "Riftblade" else ACTORS.get(character, ACTORS["Hearthguard"]) + + +func front_animation_state() -> String: + match battle_phase: + 0: + return "advance" + 2: + return "guard" if front_choice == "Hearthguard" else "evade_counter" + 4: + return "basic_attack" if front_choice == "Hearthguard" else "evade_counter" + return "idle" + + +func rear_animation_state() -> String: + match battle_phase: + 0: + return "advance" + 3, 4: + return "draw_release" if rear_choice == "Farstring" else "lantern_heal" + return "idle" + + +func enemy_animation_state() -> String: + match battle_phase: + 0: + return "advance" + 1: + return "telegraph" + 2: + return "attack" + 3: + return "hit" if rear_choice == "Farstring" else "idle" + 4: + return "hit" + 5: + return "death" + return "idle" + + func queue_render() -> void: if render_pending: return @@ -168,6 +301,9 @@ func render() -> void: front_sprite = null rear_sprite = null enemy_sprite = null + victory_front_sprite = null + victory_rear_sprite = null + victory_enemy_sprite = null projectile = null for child in display_root.get_children(): child.free() @@ -397,14 +533,13 @@ func render_battle() -> void: var world_bottom := size.y - 58.0 var actor_height: float = clampf(size.y * 0.27, 92.0, 170.0) var actor_width: float = actor_height - var contact_reached := battle_phase > 0 + var contact_reached := battle_phase > 0 or reduced_motion front_base_position = Vector2(size.x * (0.39 if contact_reached else 0.18), world_bottom - actor_height) rear_base_position = Vector2(size.x * (0.24 if contact_reached else 0.07), world_bottom - actor_height * 0.92) enemy_base_position = Vector2(size.x * (0.56 if contact_reached else 0.77), world_bottom - actor_height * 0.84) - front_sprite = actor_at(ACTORS[front_choice], front_base_position, Vector2(actor_width, actor_height), "FrontActor") - rear_sprite = actor_at(ACTORS[rear_choice], rear_base_position, Vector2(actor_width * 0.9, actor_height * 0.9), "RearActor") - var enemy_texture: Texture2D = RIFTBLADE["death"] if battle_phase >= 5 else RIFTBLADE["hit"] if battle_phase == 4 else RIFTBLADE["attack"] if battle_phase in [1, 2] else RIFTBLADE["idle"] - enemy_sprite = actor_at(enemy_texture, enemy_base_position, Vector2(actor_width * 0.82, actor_height * 0.82), "EnemyActor") + front_sprite = actor_at(animation_texture(front_choice, front_animation_state(), battle_clock), front_base_position, Vector2(actor_width, actor_height), "FrontActor") + rear_sprite = actor_at(animation_texture(rear_choice, rear_animation_state(), battle_clock), rear_base_position, Vector2(actor_width * 0.9, actor_height * 0.9), "RearActor") + enemy_sprite = actor_at(animation_texture("Riftblade", enemy_animation_state(), battle_clock), enemy_base_position, Vector2(actor_width * 0.82, actor_height * 0.82), "EnemyActor") add_health_bar("FrontHealth", Vector2(22, 72), Vector2(size.x * 0.29, 14), front_hp, 100, candidate_name(front_choice)) add_health_bar("EnemyHealth", Vector2(size.x * 0.69 - 22, 72), Vector2(size.x * 0.29, 14), enemy_hp, 100, tr_text("裂影刃手", "Riftblade")) @@ -434,9 +569,9 @@ func render_victory() -> void: add_full_wash(Color(0.02, 0.035, 0.075, 0.2)) render_hud(tr_text("第一次远征完成", "First Expedition Complete")) var actor_height: float = clampf(size.y * 0.29, 98.0, 185.0) - actor_at(ACTORS[front_choice], Vector2(size.x * 0.13, size.y - actor_height - 45), Vector2(actor_height, actor_height), "VictoryFront") - actor_at(ACTORS[rear_choice], Vector2(size.x * 0.29, size.y - actor_height * 0.92 - 45), Vector2(actor_height * 0.92, actor_height * 0.92), "VictoryRear") - actor_at(RIFTBLADE["death"], Vector2(size.x * 0.48, size.y - actor_height * 0.52 - 42), Vector2(actor_height * 0.52, actor_height * 0.52), "VictoryEnemy") + victory_front_sprite = actor_at(animation_texture(front_choice, "victory" if front_choice == "Hearthguard" else "idle", victory_clock), Vector2(size.x * 0.13, size.y - actor_height - 45), Vector2(actor_height, actor_height), "VictoryFront") + victory_rear_sprite = actor_at(animation_texture(rear_choice, "idle", victory_clock), Vector2(size.x * 0.29, size.y - actor_height * 0.92 - 45), Vector2(actor_height * 0.92, actor_height * 0.92), "VictoryRear") + victory_enemy_sprite = actor_at(animation_texture("Riftblade", "death", 99.0), Vector2(size.x * 0.48, size.y - actor_height * 0.52 - 42), Vector2(actor_height * 0.52, actor_height * 0.52), "VictoryEnemy") var banner := PanelContainer.new() banner.name = "VictoryBanner" var banner_height: float = min(size.y - 112.0, 330.0) @@ -551,6 +686,8 @@ func depart() -> void: guard_events = 0 rear_events = 0 victory_events = 0 + phase_impact_committed.clear() + victory_clock = 0.0 page = AppPage.BATTLE play_cue("depart") render() @@ -559,9 +696,34 @@ func depart() -> void: func advance_battle_phase() -> void: if page != AppPage.BATTLE or not battle_playing: return + commit_phase_impact(battle_phase) battle_phase += 1 battle_clock = 0.0 match battle_phase: + 6: + battle_playing = false + victory_events += 1 + page = AppPage.VICTORY + render() + + +func phase_impact_time(phase: int) -> float: + match phase: + 2: + return 4.0 / 12.0 + 3: + return 2.0 / 7.0 + 4: + return 3.0 / 10.0 + 5: + return 5.0 / 10.0 + return -1.0 + + +func commit_phase_impact(phase: int) -> void: + if phase_impact_committed.get(phase, false): + return + match phase: 2: front_hp = 82 if front_choice == "Hearthguard" else 88 guard_events += 1 @@ -570,7 +732,7 @@ func advance_battle_phase() -> void: if rear_choice == "Farstring": enemy_hp = 64 else: - front_hp = min(100, front_hp + 12) + front_hp = mini(100, front_hp + 12) rear_events += 1 play_cue("role") 4: @@ -579,17 +741,26 @@ func advance_battle_phase() -> void: 5: enemy_hp = 0 play_cue("victory") - 6: - battle_playing = false - victory_events += 1 - page = AppPage.VICTORY - render() + _: + return + phase_impact_committed[phase] = true func _process(delta: float) -> void: - if page != AppPage.BATTLE or not battle_playing: + if page == AppPage.VICTORY: + if front_choice.is_empty() or rear_choice.is_empty(): + return + victory_clock += delta + if victory_front_sprite != null and is_instance_valid(victory_front_sprite): + victory_front_sprite.texture = animation_texture(front_choice, "victory" if front_choice == "Hearthguard" else "idle", victory_clock) + victory_rear_sprite.texture = animation_texture(rear_choice, "idle", victory_clock) + return + if page != AppPage.BATTLE or not battle_playing or restart_confirmation: return battle_clock += delta + var impact_time := phase_impact_time(battle_phase) + if impact_time >= 0.0 and battle_clock >= impact_time: + commit_phase_impact(battle_phase) var duration := 2.5 if battle_phase == 0 else 2.2 if battle_clock >= duration: advance_battle_phase() @@ -597,14 +768,13 @@ func _process(delta: float) -> void: if front_sprite == null or not is_instance_valid(front_sprite): return var progress: float = clampf(battle_clock / duration, 0.0, 1.0) - var bob := 0.0 if reduced_motion else sin(battle_clock * 5.0) * 3.0 if battle_phase == 0 and not reduced_motion: front_sprite.position.x = lerp(size.x * 0.13, size.x * 0.38, progress) rear_sprite.position.x = lerp(size.x * 0.03, size.x * 0.20, progress) enemy_sprite.position.x = lerp(size.x * 0.82, size.x * 0.57, progress) - front_sprite.position.y = front_base_position.y + bob - rear_sprite.position.y = rear_base_position.y - bob * 0.7 - enemy_sprite.position.y = enemy_base_position.y + bob * 0.5 + front_sprite.texture = animation_texture(front_choice, front_animation_state(), battle_clock) + rear_sprite.texture = animation_texture(rear_choice, rear_animation_state(), battle_clock) + enemy_sprite.texture = animation_texture("Riftblade", enemy_animation_state(), battle_clock) if projectile != null and is_instance_valid(projectile) and battle_phase == 3 and rear_choice == "Farstring" and not reduced_motion: projectile.position.x = lerp(size.x * 0.42, size.x * 0.64, progress) @@ -647,6 +817,8 @@ func clear_experience() -> void: guard_events = 0 rear_events = 0 victory_events = 0 + phase_impact_committed.clear() + victory_clock = 0.0 func toggle_locale() -> void: diff --git a/runtime/tests/p9_0r1_dynamic_slice_test.gd.uid b/runtime/tests/p9_0r1_dynamic_slice_test.gd.uid new file mode 100644 index 00000000..7aaf0c4f --- /dev/null +++ b/runtime/tests/p9_0r1_dynamic_slice_test.gd.uid @@ -0,0 +1 @@ +uid://ble8u45v6y2cv diff --git a/runtime/tests/p9_0r2_character_animation_test.gd b/runtime/tests/p9_0r2_character_animation_test.gd new file mode 100644 index 00000000..4e935337 --- /dev/null +++ b/runtime/tests/p9_0r2_character_animation_test.gd @@ -0,0 +1,107 @@ +extends SceneTree + +const MainScene = preload("res://main.tscn") + +var failures: Array[String] = [] + + +func _initialize() -> void: + call_deferred("run_test") + + +func run_test() -> void: + var game := MainScene.instantiate() + game.auto_boot = false + root.add_child(game) + await settle(10) + + for character in game.ANIMATION_SPECS: + for state in game.ANIMATION_SPECS[character]: + var spec: Dictionary = game.ANIMATION_SPECS[character][state] + expect(int(spec["frames"]) > 1, "%s/%s has more than one frame" % [character, state]) + var texture_0: Texture2D = game.animation_texture(character, state, 0.0) + var texture_1: Texture2D = game.animation_texture(character, state, 1.0 / float(spec["fps"]) + 0.01) + expect(texture_0 != texture_1, "%s/%s changes texture during normal rendering" % [character, state]) + + game.front_choice = "Wayrunner" + game.rear_choice = "Farstring" + game.depart() + game.battle_phase = 2 + game.battle_clock = 0.0 + game.phase_impact_committed.clear() + game.front_hp = 100 + game.render() + var initial_front_texture: Texture2D = game.front_sprite.texture + game._process(0.16) + expect(game.front_sprite.texture != initial_front_texture, "Wayrunner body pose changes during evade/counter") + expect(game.front_hp == 100 and game.guard_events == 0, "front HP remains unchanged before impact frame") + game._process(0.30) + expect(game.front_hp == 88 and game.guard_events == 1, "front impact commits once after enemy strike frame") + game._process(0.30) + expect(game.front_hp == 88 and game.guard_events == 1, "front impact cannot duplicate") + game.request_restart() + var paused_clock: float = game.battle_clock + game._process(1.0) + expect(game.battle_clock == paused_clock, "Restart confirmation freezes animation and impact time") + game.cancel_restart() + + game.battle_phase = 3 + game.battle_clock = 0.0 + game.phase_impact_committed.erase(3) + game.enemy_hp = 100 + game.render() + var initial_rear_texture: Texture2D = game.rear_sprite.texture + game._process(0.16) + expect(game.rear_sprite.texture != initial_rear_texture, "Farstring body pose changes while drawing bow") + expect(game.enemy_hp == 100 and game.rear_events == 0, "rear damage waits for release frame") + game._process(0.20) + expect(game.enemy_hp == 64 and game.rear_events == 1, "arrow impact commits once at release frame") + + game.battle_phase = 5 + game.battle_clock = 0.0 + game.phase_impact_committed.erase(5) + game.enemy_hp = 34 + game.render() + game._process(0.90) + var death_final: Texture2D = game.animation_texture("Riftblade", "death", 99.0) + expect(game.enemy_sprite.texture == death_final, "non-looping death holds final frame") + expect(game.enemy_hp == 0, "death impact commits at declared frame") + game._process(0.40) + expect(game.enemy_hp == 0 and game.enemy_sprite.texture == death_final, "death cannot loop or recommit") + + for front in ["Hearthguard", "Wayrunner"]: + for rear in ["Farstring", "Kindhand"]: + game.clear_experience() + game.front_choice = front + game.rear_choice = rear + game.depart() + for phase in range(6): + game.advance_battle_phase() + expect(game.page == game.AppPage.VICTORY, "%s + %s reaches victory" % [front, rear]) + expect(game.victory_events == 1, "%s + %s commits one victory" % [front, rear]) + + game.clear_experience() + expect(game.phase_impact_committed.is_empty() and game.battle_clock == 0.0, "reset clears animation impact state") + game.reduced_motion = true + expect(game.animation_frame_index("Wayrunner", "idle", 1.0) == 0, "reduced motion freezes nonessential idle loop") + expect(game.animation_frame_index("Wayrunner", "evade_counter", 0.25) > 0, "reduced motion retains authored action frames") + + game.queue_free() + await settle(60) + if failures.is_empty(): + print("ABG_P9_0R2_CHARACTER_ANIMATION_OK actors=5 states=20 impact_once=true death_hold=true reduced_motion=true") + quit(0) + else: + for failure in failures: + push_error(failure) + quit(1) + + +func settle(frames: int) -> void: + for frame in range(frames): + await process_frame + + +func expect(condition: bool, message: String) -> void: + if not condition: + failures.append("P9.0R2 character animation: %s" % message) diff --git a/runtime/tests/p9_0r2_character_animation_test.gd.uid b/runtime/tests/p9_0r2_character_animation_test.gd.uid new file mode 100644 index 00000000..1d64d5fa --- /dev/null +++ b/runtime/tests/p9_0r2_character_animation_test.gd.uid @@ -0,0 +1 @@ +uid://dyuy4bvnwpd15 diff --git a/runtime/tests/p9_0r2_dynamic_slice_test.gd b/runtime/tests/p9_0r2_dynamic_slice_test.gd new file mode 100644 index 00000000..a31f8d89 --- /dev/null +++ b/runtime/tests/p9_0r2_dynamic_slice_test.gd @@ -0,0 +1,66 @@ +extends SceneTree + +const MainScene = preload("res://main.tscn") + +var game: Control +var failures: Array[String] = [] + + +func _initialize() -> void: + call_deferred("run_test") + + +func run_test() -> void: + game = MainScene.instantiate() + game.auto_boot = false + root.add_child(game) + await settle(12) + game.locale = "zh_CN" + game.text_scale = 1.0 + game.reduced_motion = false + game.muted = true + game.boot_verified = true + game.front_choice = OS.get_environment("ABG_P9_0R2_FRONT") + game.rear_choice = OS.get_environment("ABG_P9_0R2_REAR") + if game.front_choice.is_empty(): + game.front_choice = "Hearthguard" + if game.rear_choice.is_empty(): + game.rear_choice = "Farstring" + game.depart() + var seen_front_frames: Dictionary = {} + var seen_rear_frames: Dictionary = {} + var seen_enemy_frames: Dictionary = {} + var elapsed := 0.0 + while game.page != game.AppPage.VICTORY and elapsed < 22.0: + await process_frame + elapsed += 1.0 / 30.0 + if game.front_sprite != null: + seen_front_frames[game.front_sprite.texture.resource_path] = true + seen_rear_frames[game.rear_sprite.texture.resource_path] = true + seen_enemy_frames[game.enemy_sprite.texture.resource_path] = true + if game.page != game.AppPage.VICTORY: + failures.append("dynamic slice did not reach victory") + if game.guard_events != 1 or game.rear_events != 1 or game.victory_events != 1: + failures.append("dynamic slice role events were not committed exactly once") + if seen_front_frames.size() < 4 or seen_rear_frames.size() < 4 or seen_enemy_frames.size() < 8: + failures.append("dynamic slice did not render enough distinct body-pose frames") + await create_timer(1.6).timeout + game.queue_free() + game = null + await settle(120) + if failures.is_empty(): + print("ABG_P9_0R2_DYNAMIC_SLICE_OK duration=%.2f front=%s front_frames=%d rear=%s rear_frames=%d enemy_frames=%d impact_once=true renderer=normal" % [elapsed, OS.get_environment("ABG_P9_0R2_FRONT"), seen_front_frames.size(), OS.get_environment("ABG_P9_0R2_REAR"), seen_rear_frames.size(), seen_enemy_frames.size()]) + call_deferred("finish", 0) + else: + for failure in failures: + push_error(failure) + call_deferred("finish", 1) + + +func finish(exit_code: int) -> void: + quit(exit_code) + + +func settle(frames: int) -> void: + for frame in range(frames): + await process_frame diff --git a/runtime/tests/p9_0r2_dynamic_slice_test.gd.uid b/runtime/tests/p9_0r2_dynamic_slice_test.gd.uid new file mode 100644 index 00000000..f1836ade --- /dev/null +++ b/runtime/tests/p9_0r2_dynamic_slice_test.gd.uid @@ -0,0 +1 @@ +uid://i3lcerlpni70 diff --git a/tools/sync_p9_0r2_animation_assets.py b/tools/sync_p9_0r2_animation_assets.py new file mode 100644 index 00000000..6dced903 --- /dev/null +++ b/tools/sync_p9_0r2_animation_assets.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +"""Build the P9.0R2 runtime animation tree from accepted source frames.""" + +from __future__ import annotations + +import hashlib +import json +import shutil +import sys +from pathlib import Path + +from PIL import Image + + +ROOT = Path(__file__).resolve().parents[1] +OUT = ROOT / "runtime/assets/animations" +GEN = ROOT / "docs/prototype/generation/phase9_0r2_character_animation_01/runs" +PHASE6 = ROOT / "docs/prototype/generation/phase6_motion_proof_03/runs" + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def copy_frame(source: Path, target: Path, records: list[dict[str, object]]) -> None: + if not source.is_file(): + raise SystemExit(f"missing animation source: {source}") + target.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(source, target) + records.append( + { + "source": source.relative_to(ROOT).as_posix(), + "runtime": target.relative_to(ROOT).as_posix(), + "sha256": sha256(target), + "width": Image.open(target).width, + "height": Image.open(target).height, + } + ) + + +def copy_cycle( + character: str, + state: str, + source_root: Path, + frame_names: list[str], + records: list[dict[str, object]], +) -> None: + for index, name in enumerate(frame_names): + copy_frame( + source_root / name, + OUT / character / state / f"frame-{index}.png", + records, + ) + + +def main() -> int: + records: list[dict[str, object]] = [] + + hearthguard = PHASE6 / "recruit-aegis/accepted" + for state in ("idle", "advance", "guard", "basic_attack", "victory"): + manifest_path = hearthguard / state / "cycle-manifest.json" + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + copy_cycle( + "hearthguard", + state, + hearthguard / state, + [str(frame["output"]) for frame in manifest["frames"]], + records, + ) + + riftblade = PHASE6 / "enemy-riftblade/accepted" + for state in ("idle", "advance", "telegraph", "attack", "hit", "death"): + manifest_path = riftblade / state / "cycle-manifest.json" + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) + copy_cycle( + "riftblade", + state, + riftblade / state, + [str(frame["output"]) for frame in manifest["frames"]], + records, + ) + + custom = { + "wayrunner": { + "ready": GEN / "wayrunner-r2/curated/ready.png", + "advance_1": GEN / "wayrunner-r2/curated/advance_1.png", + "advance_2": GEN / "wayrunner-r2/curated/advance_2.png", + "evade": GEN / "wayrunner-r2/curated/evade.png", + "counter": GEN / "wayrunner-r2/curated/counter.png", + "recover": GEN / "wayrunner-r2/curated/recover.png", + }, + "farstring": { + "ready": GEN / "farstring/curated/ready.png", + "advance_1": GEN / "farstring/curated/advance_1.png", + "raise": GEN / "farstring/curated/raise.png", + "draw": GEN / "farstring/curated/draw.png", + "release": GEN / "farstring/curated/release.png", + }, + "kindhand": { + "ready": GEN / "kindhand/curated/ready.png", + "advance_1": GEN / "kindhand/curated/advance_1.png", + "advance_2": GEN / "kindhand/curated/advance_2.png", + "raise": GEN / "kindhand/curated/raise.png", + "heal": GEN / "kindhand/curated/heal.png", + "recover": GEN / "kindhand/curated/recover.png", + }, + } + runtime_sequences = { + "wayrunner": { + "idle": ["ready", "recover"], + "advance": ["advance_1", "advance_2"], + "evade_counter": ["ready", "evade", "counter", "recover"], + }, + "farstring": { + "idle": ["ready", "raise"], + "advance": ["ready", "advance_1"], + "draw_release": ["ready", "raise", "draw", "release"], + }, + "kindhand": { + "idle": ["ready", "recover"], + "advance": ["advance_1", "advance_2"], + "lantern_heal": ["ready", "raise", "heal", "recover"], + }, + } + for character, states in runtime_sequences.items(): + for state, names in states.items(): + for index, name in enumerate(names): + copy_frame( + custom[character][name], + OUT / character / state / f"frame-{index}.png", + records, + ) + + manifest = { + "kind": "aetherbound-p9-0r2-runtime-animation-assets", + "generated_calls": 4, + "generated_cost_usd": 0.056, + "rejected": [ + { + "run": "wayrunner", + "reason": "detached duplicate blade fragment and missing held dagger at counter impact", + } + ], + "records": records, + } + (OUT / "asset-manifest.json").write_text( + json.dumps(manifest, ensure_ascii=False, indent=2) + "\n", + encoding="utf-8", + ) + print(f"ABG_P9_0R2_ANIMATION_ASSETS_OK files={len(records)} calls=4 cost_usd=0.056") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/verify_p9_0r2_animation_assets.py b/tools/verify_p9_0r2_animation_assets.py new file mode 100644 index 00000000..9cb48eac --- /dev/null +++ b/tools/verify_p9_0r2_animation_assets.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +"""Verify P9.0R2 animation provenance, frame integrity and state diversity.""" + +from __future__ import annotations + +import hashlib +import json +from collections import defaultdict +from pathlib import Path + +from PIL import Image, ImageChops + + +ROOT = Path(__file__).resolve().parents[1] +MANIFEST = ROOT / "runtime/assets/animations/asset-manifest.json" + + +def sha256(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def main() -> int: + payload = json.loads(MANIFEST.read_text(encoding="utf-8")) + records = payload["records"] + if len(records) != 92: + raise SystemExit(f"expected 92 records, found {len(records)}") + states: dict[str, list[Path]] = defaultdict(list) + for record in records: + source = ROOT / record["source"] + runtime = ROOT / record["runtime"] + if not source.is_file() or not runtime.is_file(): + raise SystemExit(f"missing source/runtime pair: {record}") + if sha256(source) != record["sha256"] or sha256(runtime) != record["sha256"]: + raise SystemExit(f"hash mismatch: {record['runtime']}") + with Image.open(runtime) as image: + if image.mode != "RGBA" or image.getbbox() is None: + raise SystemExit(f"invalid transparent animation frame: {record['runtime']}") + if image.width != record["width"] or image.height != record["height"]: + raise SystemExit(f"dimension mismatch: {record['runtime']}") + relative = Path(record["runtime"]) + states[(relative.parts[-3] + "/" + relative.parts[-2])].append(runtime) + + for state, frames in states.items(): + if len(frames) < 2: + raise SystemExit(f"state has fewer than two frames: {state}") + with Image.open(frames[0]) as first: + first_rgba = first.convert("RGBA") + distinct = False + for path in frames[1:]: + with Image.open(path) as image: + candidate = image.convert("RGBA") + if candidate.size != first_rgba.size or ImageChops.difference(first_rgba, candidate).getbbox() is not None: + distinct = True + break + if not distinct: + raise SystemExit(f"state frames are visually identical: {state}") + + if payload["generated_calls"] != 4 or abs(payload["generated_cost_usd"] - 0.056) > 0.000001: + raise SystemExit("generation cost/call provenance mismatch") + if payload["rejected"] != [ + { + "run": "wayrunner", + "reason": "detached duplicate blade fragment and missing held dagger at counter impact", + } + ]: + raise SystemExit("rejected generation history mismatch") + print(f"ABG_P9_0R2_ANIMATION_ASSETS_OK files={len(records)} states={len(states)} calls=4 cost_usd=0.056") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())