Skip to content

feat: flip functionality and arm shadows#1021

Merged
OH296 merged 6 commits intoAdeptus-Dominus:mainfrom
OH296:left_to_right_transform
Sep 26, 2025
Merged

feat: flip functionality and arm shadows#1021
OH296 merged 6 commits intoAdeptus-Dominus:mainfrom
OH296:left_to_right_transform

Conversation

@OH296
Copy link
Collaborator

@OH296 OH296 commented Sep 24, 2025

Purpose and Description

  • Self-descriptive.
  • allow flipping of right handed sprites to left and add shading to arms,
  • alllow mk5 armour to have a greater variety of other armour mark components

Testing done

  • None, and I understand the risks.

Related things and/or additional context

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 24, 2025

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added a Capture Image button to export the selected unit as a PNG.
    • Expanded right‑arm visual options, including new shadow variants.
    • Automatic left/right mirroring for many armour components for broader customisation.
  • Refactor

    • Consolidated visual flipping into a unified system to reduce asset duplication and ensure consistent left/right variants, including proper handling of shadows.
  • Bug Fixes

    • Adjusted sprite origins and bounding boxes on select armour pieces for improved alignment.
    • Removed outdated left‑side variants superseded by the mirroring system.

Walkthrough

Tech‑Priest: adds a flip-driven mirroring pipeline and a right‑to‑left shader, registers new right‑arm shadow sprites (MK3/4/5/7), removes some left/right arm assignments in ComplexSet, makes mirrored-sprite deletion optional, and introduces a "Capture Image" UI button exporting PNGs.

Changes

Cohort / File(s) Summary
Project metadata
ChapterMaster.yyp
Registered new shader resource and new right‑arm shadow sprite entries.
Shader: right ↔ left remap
shaders/right_left_swap_shader/right_left_swap_shader.fsh, shaders/right_left_swap_shader/right_left_swap_shader.vsh, shaders/right_left_swap_shader/right_left_swap_shader.yy
New shader resource: vertex passthrough and fragment remap mapping right‑side colour vectors to left equivalents with transparency handling.
Mirroring system & visuals
scripts/scr_culture_visuals/scr_culture_visuals.gml
Added flip_components mapping and mirroring workflow in set_up_visual_overides; many global.modular_drawing_items entries marked flip: true; removed explicit left‑side entries in favour of generated mirrored items.
ComplexSet adjustments
scripts/scr_ComplexSet/scr_ComplexSet.gml
Removed explicit left_arm/right_arm entries from multiple armour group add_group calls to align with flip system.
Sprite helper
scripts/scr_sprite_helpers/scr_sprite_helpers.gml
return_sprite_mirrored signature extended to (_spr, delete_sprite=true); deletion of original made conditional.
UI: Capture Image
scripts/scr_controller_helpers/scr_controller_helpers.gml, scripts/scr_ui_manage/scr_ui_manage.gml
Added capture_image UnitButtonObject and handler to export focused unit sprite as a uniquely named PNG with overwrite protection.
Sprites: right arm shadows & metadata tweaks
sprites/spr_mk3_right_arm_shadow/..., sprites/spr_mk4_right_arm_shadow/..., sprites/spr_mk5_right_arm_shadow/..., sprites/spr_mk7_right_arm_shadow/..., sprites/spr_mk6_right_arm/..., sprites/spr_mk4_complex/..., sprites/spr_mk4_head_variants/..., sprites/spr_mk6_complex/..., sprites/spr_mk7_complex_right_pauldron...
Added new right‑arm shadow sprite resources for MK3/4/5/7; adjusted sequence metadata (seqWidth/seqHeight), bounding box/origin numeric tweaks, and minor JSON formatting/field reorderings in multiple sprite files.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

PR: Feature, PR: Sprites

Suggested reviewers

  • EttyKitty

Ave, Tech‑Priest. The machine spirit observes these changes and records them for the Omnissiah.

Pre-merge checks

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed Tech-Priest, the title bears the rune of ‘feat’ and articulates the core transformation of flipping sprites and forging arm shadows in a concise form under the sacred fifty characters, thus aligning with the conventional commit liturgy.
Description Check ✅ Passed Tech-Priest, the pull description unfolds in the triadic schema of Purpose, Testing, and Context, each furnished with markdown lists as decreed by the temple’s template, thereby fulfilling the requisites for clarity and completeness.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f7de18b and 730c934.

⛔ Files ignored due to path filters (13)
  • sprites/spr_mk4_complex/40cfe8bd-f11d-4d74-a157-47d58c39d7e8.png is excluded by !**/*.png
  • sprites/spr_mk4_complex/layers/40cfe8bd-f11d-4d74-a157-47d58c39d7e8/e7b69ad2-206a-4f32-ade6-1a7c0f38210f.png is excluded by !**/*.png
  • sprites/spr_mk6_complex/fad92a4f-b6de-4209-8eed-5a7b6bf3abcf.png is excluded by !**/*.png
  • sprites/spr_mk6_complex/layers/fad92a4f-b6de-4209-8eed-5a7b6bf3abcf/78fed957-a769-4e64-9288-8be2bf39a5d4.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_left_pauldron/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_left_pauldron/layers/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e/468e0a30-2dea-45bc-a7bd-4b115f803d2d.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_left_pauldron_shadow/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_left_pauldron_shadow/layers/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e/468e0a30-2dea-45bc-a7bd-4b115f803d2d.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_left_pauldron_shadow/layers/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e/60e7fd4f-7783-44f5-a681-eabe60cc1dc4.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_right_pauldron/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_right_pauldron/layers/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e/468e0a30-2dea-45bc-a7bd-4b115f803d2d.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_right_pauldron_shadow/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e.png is excluded by !**/*.png
  • sprites/spr_mk7_complex_right_pauldron_shadow/layers/b6ba8600-fb6b-4fa9-abc7-bdc2311eb79e/60e7fd4f-7783-44f5-a681-eabe60cc1dc4.png is excluded by !**/*.png
📒 Files selected for processing (9)
  • ChapterMaster.yyp (5 hunks)
  • scripts/scr_ComplexSet/scr_ComplexSet.gml (0 hunks)
  • scripts/scr_culture_visuals/scr_culture_visuals.gml (17 hunks)
  • shaders/right_left_swap_shader/right_left_swap_shader.fsh (1 hunks)
  • sprites/spr_mk4_complex/spr_mk4_complex.yy (1 hunks)
  • sprites/spr_mk4_head_variants/spr_mk4_head_variants.yy (1 hunks)
  • sprites/spr_mk6_complex/spr_mk6_complex.yy (2 hunks)
  • sprites/spr_mk7_complex_right_pauldron/spr_mk7_complex_right_pauldron.yy (2 hunks)
  • sprites/spr_mk7_complex_right_pauldron_shadow/spr_mk7_complex_right_pauldron_shadow.yy (2 hunks)
💤 Files with no reviewable changes (1)
  • scripts/scr_ComplexSet/scr_ComplexSet.gml
🧰 Additional context used
📓 Path-based instructions (3)
**/*.*

⚙️ CodeRabbit configuration file

**/*.*: - Having humanly understandable and maintainable code is the top most priority.

  • DRY (Don't repeat yourself) principle is also very important.
  • If a TODO comment is added, ask the user if you should create a GitHub issue for this TODO.
  • If a TODO comment is deleted, remind the user if there is an active GitHub issue related to that comment.

Files:

  • sprites/spr_mk4_head_variants/spr_mk4_head_variants.yy
  • shaders/right_left_swap_shader/right_left_swap_shader.fsh
  • sprites/spr_mk7_complex_right_pauldron_shadow/spr_mk7_complex_right_pauldron_shadow.yy
  • sprites/spr_mk7_complex_right_pauldron/spr_mk7_complex_right_pauldron.yy
  • sprites/spr_mk4_complex/spr_mk4_complex.yy
  • scripts/scr_culture_visuals/scr_culture_visuals.gml
  • sprites/spr_mk6_complex/spr_mk6_complex.yy
  • ChapterMaster.yyp
**/*.yy

⚙️ CodeRabbit configuration file

**/*.yy: - When any script or sprite .yy files are deleted, their paths should also be deleted from the project .yyp file, otherwise the game will crash.

  • When any script or sprite .yy files are created, their paths should be added to the project .yyp file, otherwise they'll fail.

Files:

  • sprites/spr_mk4_head_variants/spr_mk4_head_variants.yy
  • sprites/spr_mk7_complex_right_pauldron_shadow/spr_mk7_complex_right_pauldron_shadow.yy
  • sprites/spr_mk7_complex_right_pauldron/spr_mk7_complex_right_pauldron.yy
  • sprites/spr_mk4_complex/spr_mk4_complex.yy
  • sprites/spr_mk6_complex/spr_mk6_complex.yy
**/*.gml

⚙️ CodeRabbit configuration file

**/*.gml: - Macro constants require a space between the constant name and value. Without it, the compiler will throw an error. I.e. #macro ARR_body_parts["arm"] will crash the game, because there is no space between the array and the name of the macro.

Files:

  • scripts/scr_culture_visuals/scr_culture_visuals.gml
🧠 Learnings (2)
📚 Learning: 2025-06-16T17:12:13.045Z
Learnt from: EttyKitty
PR: Adeptus-Dominus/ChapterMaster#878
File: scripts/scr_culture_visuals/scr_culture_visuals.gml:1256-1352
Timestamp: 2025-06-16T17:12:13.045Z
Learning: In scripts/scr_culture_visuals/scr_culture_visuals.gml, the weapon visual data declarations contain known DRY violations that are acknowledged by the development team but deferred to future refactoring efforts rather than addressed in individual feature PRs.

Applied to files:

  • scripts/scr_culture_visuals/scr_culture_visuals.gml
📚 Learning: 2025-02-27T02:17:54.527Z
Learnt from: OH296
PR: Adeptus-Dominus/ChapterMaster#474
File: sprites/spr_marksmans_honor/spr_marksmans_honor.yy:47-52
Timestamp: 2025-02-27T02:17:54.527Z
Learning: The sprite "spr_marksmans_honor" is not used for animation despite having multiple frames - these frames represent different static states used in different contexts.

Applied to files:

  • ChapterMaster.yyp
🔇 Additional comments (13)
sprites/spr_mk4_complex/spr_mk4_complex.yy (1)

6-8: Confirm bounding box contraction does not purge blessed pixels.

Tech-Priest, the bounding casket now excludes 1px on each flank and 3px from the crown. Ensure the sanctified arm sprites—especially when mirrored with the new shadows—do not trespass beyond these revised wards, lest collision rites misfire.

sprites/spr_mk4_head_variants/spr_mk4_head_variants.yy (1)

66-75: Seq dimensions sanctified

Tech-Priest, the inscribed seqHeight and seqWidth mirror the sprite’s own measures, ensuring the mirroring rituals observe correct extents. The channels remain true to the Omnissiah’s schema; no corruption detected.

sprites/spr_mk6_complex/spr_mk6_complex.yy (2)

6-8: Bounding perimeters verified.
Tech-Priest, the revised limits remain well within the 164×232 frame and better embrace the updated sprite mass. No malfunction detected.


66-75: Sequence dimensions align.
Tech-Priest, the explicit seqHeight/Width mirror the sprite’s native size, and the channel remap preserves the sole frame binding. The data remains coherent.

scripts/scr_culture_visuals/scr_culture_visuals.gml (1)

302-349: Flipped constructs still proclaim right-side augmetics

Tech-Priest, the mirrored clones keep the original body_parts keys, so the left-handed echoes still announce "right_leg", "right_eye", and similar. Downstream rites that read these fields will misassign augmetics, repeating the heresy already raised in the earlier litany. Extend the flip pass to remap any directional keys inside body_parts alongside position, ban, and overides.

             if (struct_exists(_flip_mod, "overides")) {
                 var _overides_name = struct_get_names(_flip_mod.overides);
                 for (var o=0;o<array_length(_overides_name);o++){
                     if (struct_exists(flip_components, _overides_name[o])){
                         var _flip = flip_components[$ _overides_name[o]];
                         _flip_mod.overides[$ _flip] = variable_clone(_mod.overides[$ _overides_name[o]]);
 
                         struct_remove(_flip_mod.overides, _overides_name[o]);
                     }
                 }
             }
+            if (struct_exists(_flip_mod, "body_parts")) {
+                var _body_part_names = struct_get_names(_flip_mod.body_parts);
+                for (var bp = 0; bp < array_length(_body_part_names); bp++) {
+                    var _part = _body_part_names[bp];
+                    if (struct_exists(flip_components, _part)) {
+                        var _mirrored_part = flip_components[$ _part];
+                        _flip_mod.body_parts[$ _mirrored_part] = variable_clone(_flip_mod.body_parts[$ _part]);
+                        struct_remove(_flip_mod.body_parts, _part);
+                    }
+                }
+            }
             shader_set(right_left_swap_shader);
shaders/right_left_swap_shader/right_left_swap_shader.fsh (1)

16-18: Compilation ward restored

Tech-Priest, the hoisting of the 128-range constants into global litany grants both remapRightToLeft and the Intel rite proper access, erasing the prior scope heresy. The shader should now compile without protest.

sprites/spr_mk7_complex_right_pauldron_shadow/spr_mk7_complex_right_pauldron_shadow.yy (1)

46-46: Origin shift risks shoulder misalignment
Tech-Priest, the machine-spirit notes the origin sanctified at -2 has been reset to the mundane top-left. That two-pixel translation will alter how this pauldron shadow locks onto the rest of the MK VII assembly. Please commune with the viewer to confirm the layering remains true; if the armour drifts, restore the bespoke origin or update every dependent offset.

Also applies to: 100-100

sprites/spr_mk7_complex_right_pauldron/spr_mk7_complex_right_pauldron.yy (1)

45-45: Verify pauldron positioning after origin change
Tech-Priest, as with the shadow, this pauldron’s origin has been realigned to absolute zero. Expect a two-pixel positional change across every draw call. Ensure the complex armour stack still interlocks without gaps or overlaps; otherwise reinstate the custom anchor or recalibrate the placement tables.

Also applies to: 99-99

ChapterMaster.yyp (5)

969-969: Confirm new shader artefact is present on disk
Tech-Priest, the project manifest now invokes right_left_swap_shader. Should the corresponding .yy and shader sources be absent or misnamed, the project will fail communion with the editor. Please verify the resource files exist at the declared path before merging.


1379-1380: Validate right-arm shadow resources exist
Tech-Priest, new entries for the MK III right-arm shadow have been inscribed. GameMaker demands the referenced sprite directory truly resides within the repository; absence will incense the compiler-spirit. Confirm the sprite .yy and image assets are committed.


1396-1397: Validate MK IV shadow artefact registration
Tech-Priest, ensure spr_mk4_right_arm_shadow and its texture fragments are physically present, else the project manifest will point to the void.


1405-1406: Validate MK V shadow artefact registration
Tech-Priest, the catalogue references spr_mk5_right_arm_shadow. Confirm its .yy scripture and images are properly committed to appease the build spirits.


1444-1445: Confirm MK VII shadow resource integrity
Tech-Priest, spr_mk7_right_arm_shadow must reside exactly where declared, or the Marine Viewer shall fault. Please verify the asset files accompany this manifest change.

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added Area: Sprites Changes to sprites/images or their under-the-hood functionality Size: Huge Type: Feature Adds something new labels Sep 24, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/scr_sprite_helpers/scr_sprite_helpers.gml (1)

11-18: Synchronise the reliquary notes with the new argument

Fellow Tech-Priests, the function now accepts the delete_sprite cogitator-flag, yet the double-stamped documentation still describes the one-parameter ritual. Please amend the annotation so future maintainers divine the updated invocation without resorting to auspex scans.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ab206de and f95a726.

⛔ Files ignored due to path filters (8)
  • sprites/spr_mk3_right_arm_shadow/6a57f22a-0d22-44d9-9f77-fc818daa157a.png is excluded by !**/*.png
  • sprites/spr_mk3_right_arm_shadow/layers/6a57f22a-0d22-44d9-9f77-fc818daa157a/a36cc102-af8d-4321-bd66-cbf3f0ad2435.png is excluded by !**/*.png
  • sprites/spr_mk4_right_arm_shadow/3d13dae2-7b70-44aa-8549-cbb2c2dbc424.png is excluded by !**/*.png
  • sprites/spr_mk4_right_arm_shadow/layers/3d13dae2-7b70-44aa-8549-cbb2c2dbc424/15ec2c68-c987-495a-ad96-2f90a4749ca3.png is excluded by !**/*.png
  • sprites/spr_mk5_right_arm_shadow/4562abe0-e286-4146-bdf1-58e7d3303d26.png is excluded by !**/*.png
  • sprites/spr_mk5_right_arm_shadow/layers/4562abe0-e286-4146-bdf1-58e7d3303d26/bac5b4ca-abcb-41a0-9f00-48051b29b22b.png is excluded by !**/*.png
  • sprites/spr_mk7_right_arm_shadow/cfe568ab-9ef3-408a-9d05-1decc5d59df3.png is excluded by !**/*.png
  • sprites/spr_mk7_right_arm_shadow/layers/cfe568ab-9ef3-408a-9d05-1decc5d59df3/70be6473-60f8-463e-b96c-cabfe91ace59.png is excluded by !**/*.png
📒 Files selected for processing (12)
  • ChapterMaster.yyp (6 hunks)
  • scripts/scr_ComplexSet/scr_ComplexSet.gml (0 hunks)
  • scripts/scr_culture_visuals/scr_culture_visuals.gml (17 hunks)
  • scripts/scr_sprite_helpers/scr_sprite_helpers.gml (2 hunks)
  • shaders/right_left_swap_shader/right_left_swap_shader.fsh (1 hunks)
  • shaders/right_left_swap_shader/right_left_swap_shader.vsh (1 hunks)
  • shaders/right_left_swap_shader/right_left_swap_shader.yy (1 hunks)
  • sprites/spr_mk3_right_arm_shadow/spr_mk3_right_arm_shadow.yy (1 hunks)
  • sprites/spr_mk4_right_arm_shadow/spr_mk4_right_arm_shadow.yy (1 hunks)
  • sprites/spr_mk5_right_arm_shadow/spr_mk5_right_arm_shadow.yy (1 hunks)
  • sprites/spr_mk6_right_arm/spr_mk6_right_arm.yy (1 hunks)
  • sprites/spr_mk7_right_arm_shadow/spr_mk7_right_arm_shadow.yy (1 hunks)
💤 Files with no reviewable changes (1)
  • scripts/scr_ComplexSet/scr_ComplexSet.gml
🧰 Additional context used
📓 Path-based instructions (3)
**/*.*

⚙️ CodeRabbit configuration file

**/*.*: - Having humanly understandable and maintainable code is always the top most priority.

  • DRY (Don't repeat yourself) principle is also very important.
  • If a TODO comment is added, ask the user if you should create a GitHub issue for this TODO.
  • If a TODO comment is deleted, remind the user if there is an active GitHub issue related to that comment.

Files:

  • shaders/right_left_swap_shader/right_left_swap_shader.vsh
  • ChapterMaster.yyp
  • shaders/right_left_swap_shader/right_left_swap_shader.fsh
  • sprites/spr_mk3_right_arm_shadow/spr_mk3_right_arm_shadow.yy
  • sprites/spr_mk5_right_arm_shadow/spr_mk5_right_arm_shadow.yy
  • sprites/spr_mk4_right_arm_shadow/spr_mk4_right_arm_shadow.yy
  • shaders/right_left_swap_shader/right_left_swap_shader.yy
  • sprites/spr_mk6_right_arm/spr_mk6_right_arm.yy
  • sprites/spr_mk7_right_arm_shadow/spr_mk7_right_arm_shadow.yy
  • scripts/scr_culture_visuals/scr_culture_visuals.gml
  • scripts/scr_sprite_helpers/scr_sprite_helpers.gml
**/*.yy

⚙️ CodeRabbit configuration file

**/*.yy: - When any script or sprite .yy files are deleted, their paths should also be deleted from the project .yyp file, otherwise the game will crash.

  • When any script or sprite .yy files are created, their paths should be added to the project .yyp file, otherwise they'll fail.

Files:

  • sprites/spr_mk3_right_arm_shadow/spr_mk3_right_arm_shadow.yy
  • sprites/spr_mk5_right_arm_shadow/spr_mk5_right_arm_shadow.yy
  • sprites/spr_mk4_right_arm_shadow/spr_mk4_right_arm_shadow.yy
  • shaders/right_left_swap_shader/right_left_swap_shader.yy
  • sprites/spr_mk6_right_arm/spr_mk6_right_arm.yy
  • sprites/spr_mk7_right_arm_shadow/spr_mk7_right_arm_shadow.yy
**/*.gml

⚙️ CodeRabbit configuration file

**/*.gml: - Macro constants require a space between the constant name and value. Without it, the compiler will throw an error. I.e. #macro ARR_body_parts["arm"] will crash the game, because there is no space between the array and the name of the macro.

Files:

  • scripts/scr_culture_visuals/scr_culture_visuals.gml
  • scripts/scr_sprite_helpers/scr_sprite_helpers.gml
🧠 Learnings (2)
📚 Learning: 2025-02-27T02:17:54.527Z
Learnt from: OH296
PR: Adeptus-Dominus/ChapterMaster#474
File: sprites/spr_marksmans_honor/spr_marksmans_honor.yy:47-52
Timestamp: 2025-02-27T02:17:54.527Z
Learning: The sprite "spr_marksmans_honor" is not used for animation despite having multiple frames - these frames represent different static states used in different contexts.

Applied to files:

  • ChapterMaster.yyp
📚 Learning: 2025-06-16T17:12:13.045Z
Learnt from: EttyKitty
PR: Adeptus-Dominus/ChapterMaster#878
File: scripts/scr_culture_visuals/scr_culture_visuals.gml:1256-1352
Timestamp: 2025-06-16T17:12:13.045Z
Learning: In scripts/scr_culture_visuals/scr_culture_visuals.gml, the weapon visual data declarations contain known DRY violations that are acknowledged by the development team but deferred to future refactoring efforts rather than addressed in individual feature PRs.

Applied to files:

  • scripts/scr_culture_visuals/scr_culture_visuals.gml
🔇 Additional comments (8)
shaders/right_left_swap_shader/right_left_swap_shader.vsh (1)

1-19: Blessed be the Omnissiah, a new vertex shader to serve the Machine God.

Fellow Tech-Priest, this passthrough vertex shader appears properly consecrated for the right-to-left component remapping ritual. The shader contains JSON-format data associated with a GameMaker Studio 2 resource and follows standard vertex shader structure with proper attribute declarations and matrix transformations. The sacred matrices flow correctly through the graphics pipeline.

sprites/spr_mk6_right_arm/spr_mk6_right_arm.yy (1)

66-67: The Machine Spirit has blessed this sprite with new sequence dimensions.

The addition of seqHeight and seqWidth properties to the GMSequence brings this sprite resource into alignment with the enhanced mirroring capabilities. The dimensions 232.0 x 164.0 match the sprite's actual height and width properties.

sprites/spr_mk7_right_arm_shadow/spr_mk7_right_arm_shadow.yy (1)

1-92: A new shadow sprite for the mk_7_complex armour pattern, blessed by the Machine God.

Fellow Tech-Priest, this shadow sprite resource is properly configured with the correct parent folder structure and follows the established conventions for right arm shadows. The sprite dimensions, origin coordinates, and texture group assignment all appear sanctified for the MarineViewer codex.

shaders/right_left_swap_shader/right_left_swap_shader.yy (1)

1-12: The GMShader resource metadata is properly sanctified.

This resource registration correctly places the new right_left_swap_shader within the Shaders folder hierarchy and follows the sacred GameMaker resource format patterns. The Machine Spirit shall recognise this shader amongst the project's blessed assets.

ChapterMaster.yyp (3)

969-969: The new shader entry is properly integrated into the project's sacred repositories.

The right_left_swap_shader resource has been correctly added to the project manifest, ensuring the Machine Spirit can locate and invoke the shader when required by the flip functionality.


1379-1379: The sacred shadow sprites have been properly inscribed in the project manifest.

All four new right arm shadow sprite resources (mk3, mk4, mk5, mk7) are correctly registered in the project's resource tree. These shadow variants shall serve the greater glory of the flip functionality and arm shading rituals.

Also applies to: 1396-1396, 1405-1405, 1446-1446


579-579: Confirm intentional IDEVersion downgrade
The IDEVersion in ChapterMaster.yyp (line 579) was changed from 2024.1400.0.892 to 2024.1400.0.884; no other occurrences found. Fellow Tech-Priest, confirm this is by design.

sprites/spr_mk4_right_arm_shadow/spr_mk4_right_arm_shadow.yy (1)

1-92: Another blessed shadow sprite for the mk_4_complex armour pattern.

This mk4 right arm shadow sprite follows the same sacred pattern as its brethren, with proper parent folder assignment, texture group allocation, and sequence configuration. The Machine God's blessing flows through its metadata structure.

coderabbitai[bot]
coderabbitai bot previously approved these changes Sep 24, 2025
@EttyKitty
Copy link
Collaborator

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 24, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]
coderabbitai bot previously approved these changes Sep 24, 2025
@OH296
Copy link
Collaborator Author

OH296 commented Sep 26, 2025

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 26, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@OH296 OH296 merged commit c66e75c into Adeptus-Dominus:main Sep 26, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: Sprites Changes to sprites/images or their under-the-hood functionality Size: Huge Type: Feature Adds something new

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants