Skip to content

fix: highlight and shadow and multi-part weapons#1004

Merged
OH296 merged 13 commits intoAdeptus-Dominus:mainfrom
OH296:multi_weapons
Sep 16, 2025
Merged

fix: highlight and shadow and multi-part weapons#1004
OH296 merged 13 commits intoAdeptus-Dominus:mainfrom
OH296:multi_weapons

Conversation

@OH296
Copy link
Collaborator

@OH296 OH296 commented Sep 6, 2025

Purpose and Description

  • Self-descriptive.

Testing done

  • None, and I understand the risks.

Related things and/or additional context

@github-actions github-actions bot added Area: Sprites Changes to sprites/images or their under-the-hood functionality Size: Huge Type: Fix This is a fix for a bug labels Sep 6, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 6, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Introduces Indomitus Psychic Hood crest/components.
    • Adds Power Sword variants with cross‑guard and blade additions.
    • Includes new sword assets.
  • Visual Improvements

    • Per‑part shadowing for armour and weapons, with updated shader support.
    • Shin shadow overlays and more consistent sub‑component selection.
    • Improved two‑hand/left‑hand weapon rendering and mirroring.
  • Assets

    • Adds multiple sprites for hood, shadows, weapon parts, and swords.
    • Updates several existing sprites with sequence dimensions/metadata.

Walkthrough

By the Omnissiah: this change introduces a shadow-capable rendering path, a deterministic variant selector, and a refactored weapon-drawing helper. It updates shaders to support shadow textures, extends culture visuals and helpers, adds multiple new sprite assets, adjusts sprite metadata, and registers resources in the project.

Changes

Cohort / File(s) Summary
Project resources
ChapterMaster.yyp
Registers eight new sprite resources; no removals.
Complex rendering system
scripts/scr_ComplexSet/scr_ComplexSet.gml
Adds per-area shadow plumbing, choice_lock in draw_component, new draw_weapon helper, subcomponent handling tweaks, and shadow-set accumulation.
Culture visuals and weapon data
scripts/scr_culture_visuals/scr_culture_visuals.gml
Adds Indomitus Psy Hood crest and components, shin shadows, propagates weapon subcomponents, and updates Power Sword variant with subcomponents.
Sprite helper
scripts/scr_sprite_helpers/scr_sprite_helpers.gml
New function return_sprite_mirrored to generate horizontally mirrored sprites.
Shaders (shadow support)
shaders/full_livery_shader/full_livery_shader.vsh, shaders/full_livery_shader/full_livery_shader.fsh
Adds shadow uniforms/varyings and application path; minor colour handling refactor and Intel clamp workaround.
New sprite assets (psy hood / shin shadow)
sprites/spr_indomitus_complex_psy_hood/..., sprites/spr_indomitus_complex_psy_hood_cables/..., sprites/spr_indomitus_complex_psy_hood_crown/..., sprites/spr_indomitus_left_shin_shadow/..., sprites/spr_psy_hood_components/...
Introduces new multi-frame sprites and sequences for psy hood, cables, crown, shin shadow, and components.
New sprite assets (weapons)
sprites/spr_pow_sword_cross_guard/..., sprites/spr_pow_sword_blade_additions/..., sprites/sword_Works/sword_Works.yy
Adds new weapon-related sprites and sequences (cross-guard, blade additions, sword_Works).
Sprite metadata updates
sprites/mk7_chest_variants/mk7_chest_variants.yy, sprites/spr_mk7_chest_variants/spr_mk7_chest_variants.yy, sprites/spr_da_mk6_helm_crests/spr_da_mk6_helm_crests.yy, sprites/spr_fur_tail_topknot/spr_fur_tail_topknot.yy, sprites/spr_gladiator_crest/spr_gladiator_crest.yy, sprites/spr_psy_hood/spr_psy_hood.yy, sprites/spr_special_helm/spr_special_helm.yy, sprites/spr_weapon_chsword/spr_weapon_chsword.yy, sprites/spr_weapon_evisc/spr_weapon_evisc.yy
Adds seqWidth/seqHeight fields and restructures keyframe channel metadata; adjusts some bbox fields; no content changes to frames.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

Suggested labels

PR: Feature, PR: Sprites, Size: Big

Suggested reviewers

  • EttyKitty
  • Blogaugis

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.

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: 15

Caution

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

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

1396-1415: Bug: wrong variable passed to add_shadow_set.

You pass sub_components instead of shadow; shadows never register.

-            if (shadow != "none") {
-                add_shadow_set(area, _overide_start, _add_sprite_length, sub_components);
+            if (shadow != "none") {
+                add_shadow_set(area, _overide_start, _add_sprite_length, shadow);
             }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3adf374 and c4f6f64.

⛔ Files ignored due to path filters (78)
  • sprites/spr_indomitus_complex_psy_hood/308aed46-7906-480b-a2b9-07b771c978e3.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/baed253b-ca79-4975-a382-c6f3bb1e3750.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/cc48e121-d030-4365-98d4-c96cae616cf6.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/layers/308aed46-7906-480b-a2b9-07b771c978e3/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/layers/308aed46-7906-480b-a2b9-07b771c978e3/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/layers/baed253b-ca79-4975-a382-c6f3bb1e3750/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/layers/baed253b-ca79-4975-a382-c6f3bb1e3750/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/layers/cc48e121-d030-4365-98d4-c96cae616cf6/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood/layers/cc48e121-d030-4365-98d4-c96cae616cf6/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/0a003967-014c-4789-8e8b-22966f90f92b.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/12292fae-7c51-4ce0-a73a-640e9340ff09.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/677ccaa0-47e6-481a-9397-b045df6425bf.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/f7b471f2-993d-4ab5-a31e-e7494c3a2e7d.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/0a003967-014c-4789-8e8b-22966f90f92b/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/0a003967-014c-4789-8e8b-22966f90f92b/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/12292fae-7c51-4ce0-a73a-640e9340ff09/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/12292fae-7c51-4ce0-a73a-640e9340ff09/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/677ccaa0-47e6-481a-9397-b045df6425bf/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/677ccaa0-47e6-481a-9397-b045df6425bf/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/f7b471f2-993d-4ab5-a31e-e7494c3a2e7d/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_cables/layers/f7b471f2-993d-4ab5-a31e-e7494c3a2e7d/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/0cc6a913-f7cf-4a42-b55d-4c2e35912f8d.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/d5b54b53-180c-46be-9598-14d688af60f6.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/eeeb9f09-92af-47b6-926b-9af54f8b3dd0.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/layers/0cc6a913-f7cf-4a42-b55d-4c2e35912f8d/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/layers/0cc6a913-f7cf-4a42-b55d-4c2e35912f8d/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/layers/d5b54b53-180c-46be-9598-14d688af60f6/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/layers/d5b54b53-180c-46be-9598-14d688af60f6/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/layers/eeeb9f09-92af-47b6-926b-9af54f8b3dd0/025efc18-cda5-4ad2-aa08-89bf4392026e.png is excluded by !**/*.png
  • sprites/spr_indomitus_complex_psy_hood_crown/layers/eeeb9f09-92af-47b6-926b-9af54f8b3dd0/03d917a8-bff1-45d7-818b-f057c5540e44.png is excluded by !**/*.png
  • sprites/spr_indomitus_left_shin_shadow/bb2de076-5af9-459a-b130-624bab24de74.png is excluded by !**/*.png
  • sprites/spr_indomitus_left_shin_shadow/c23a99ed-6ea4-4ba2-8272-35125ec5c9db.png is excluded by !**/*.png
  • sprites/spr_indomitus_left_shin_shadow/e60513c5-fcc3-459c-916e-8b19128ed541.png is excluded by !**/*.png
  • sprites/spr_indomitus_left_shin_shadow/layers/bb2de076-5af9-459a-b130-624bab24de74/5ed376c2-9d33-44c5-9f13-c15f43e640b4.png is excluded by !**/*.png
  • sprites/spr_indomitus_left_shin_shadow/layers/c23a99ed-6ea4-4ba2-8272-35125ec5c9db/5ed376c2-9d33-44c5-9f13-c15f43e640b4.png is excluded by !**/*.png
  • sprites/spr_indomitus_left_shin_shadow/layers/e60513c5-fcc3-459c-916e-8b19128ed541/5ed376c2-9d33-44c5-9f13-c15f43e640b4.png is excluded by !**/*.png
  • sprites/spr_pow_sword_blade_additions/3734a08a-42ee-4fd0-9737-0dbb3f6d3a68.png is excluded by !**/*.png
  • sprites/spr_pow_sword_blade_additions/443a40e3-969c-4155-b66d-32e2a541cfde.png is excluded by !**/*.png
  • sprites/spr_pow_sword_blade_additions/d76e9ffc-a89c-41eb-bc8a-b41946b2e18b.png is excluded by !**/*.png
  • sprites/spr_pow_sword_blade_additions/layers/3734a08a-42ee-4fd0-9737-0dbb3f6d3a68/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_pow_sword_blade_additions/layers/443a40e3-969c-4155-b66d-32e2a541cfde/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_pow_sword_blade_additions/layers/d76e9ffc-a89c-41eb-bc8a-b41946b2e18b/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/235bd87f-2f4e-4fc9-bb10-1ebddcf91c8e.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/3e5f5a08-83de-438b-b0cb-cac34c23ab3c.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/4d350e69-6eba-4604-83b1-0c4822d3ff68.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/9229c4f8-7950-4cc1-a8fd-4e8a91eb0a3a.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/ce487658-50ad-47c9-a1f1-ba211cdf48a0.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/layers/235bd87f-2f4e-4fc9-bb10-1ebddcf91c8e/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/layers/3e5f5a08-83de-438b-b0cb-cac34c23ab3c/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/layers/4d350e69-6eba-4604-83b1-0c4822d3ff68/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/layers/9229c4f8-7950-4cc1-a8fd-4e8a91eb0a3a/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_pow_sword_cross_guard/layers/ce487658-50ad-47c9-a1f1-ba211cdf48a0/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/4a04d880-daf4-46bb-aff0-901a873b35eb.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/c25a06b5-ba12-44c0-9b16-8dab1e63aa31.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/c310d9f2-1bb1-4847-ac8e-fd6df2f81d28.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/ff1a90fe-9eaa-4220-a0f3-1295c62fdc29.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/layers/4a04d880-daf4-46bb-aff0-901a873b35eb/0b5e7fba-d4a1-441e-a726-f45a72c56663.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/layers/c25a06b5-ba12-44c0-9b16-8dab1e63aa31/0b5e7fba-d4a1-441e-a726-f45a72c56663.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/layers/c310d9f2-1bb1-4847-ac8e-fd6df2f81d28/0b5e7fba-d4a1-441e-a726-f45a72c56663.png is excluded by !**/*.png
  • sprites/spr_psy_hood_components/layers/ff1a90fe-9eaa-4220-a0f3-1295c62fdc29/0b5e7fba-d4a1-441e-a726-f45a72c56663.png is excluded by !**/*.png
  • sprites/sword_Works/15bdf6d1-36e2-4fa6-98a3-03a159744f13.png is excluded by !**/*.png
  • sprites/sword_Works/31d5cc7c-0525-4085-a433-2ed3013cef4e.png is excluded by !**/*.png
  • sprites/sword_Works/5051efa5-01a3-4db4-acd8-74048d2eddea.png is excluded by !**/*.png
  • sprites/sword_Works/58d181d9-62d4-4157-8758-88a6adc79e7c.png is excluded by !**/*.png
  • sprites/sword_Works/637ec865-a195-4b67-8535-b6c09dd4b59c.png is excluded by !**/*.png
  • sprites/sword_Works/7dad12e8-9912-4c01-8374-c263d839f8ee.png is excluded by !**/*.png
  • sprites/sword_Works/97e23b71-7ea0-4b29-8d54-08786d1abb0b.png is excluded by !**/*.png
  • sprites/sword_Works/a61b19e9-4e12-413c-a563-c73c840247af.png is excluded by !**/*.png
  • sprites/sword_Works/e42b9269-9ffe-4f24-bb8f-c51d50da6fcc.png is excluded by !**/*.png
  • sprites/sword_Works/layers/15bdf6d1-36e2-4fa6-98a3-03a159744f13/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/31d5cc7c-0525-4085-a433-2ed3013cef4e/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/5051efa5-01a3-4db4-acd8-74048d2eddea/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/58d181d9-62d4-4157-8758-88a6adc79e7c/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/637ec865-a195-4b67-8535-b6c09dd4b59c/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/7dad12e8-9912-4c01-8374-c263d839f8ee/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/97e23b71-7ea0-4b29-8d54-08786d1abb0b/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/a61b19e9-4e12-413c-a563-c73c840247af/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
  • sprites/sword_Works/layers/e42b9269-9ffe-4f24-bb8f-c51d50da6fcc/6ccd8587-c054-408f-906b-426b7a9b5d5f.png is excluded by !**/*.png
📒 Files selected for processing (23)
  • ChapterMaster.yyp (4 hunks)
  • scripts/scr_ComplexSet/scr_ComplexSet.gml (11 hunks)
  • scripts/scr_culture_visuals/scr_culture_visuals.gml (5 hunks)
  • scripts/scr_sprite_helpers/scr_sprite_helpers.gml (1 hunks)
  • shaders/full_livery_shader/full_livery_shader.fsh (3 hunks)
  • shaders/full_livery_shader/full_livery_shader.vsh (2 hunks)
  • sprites/mk7_chest_variants/mk7_chest_variants.yy (1 hunks)
  • sprites/spr_da_mk6_helm_crests/spr_da_mk6_helm_crests.yy (1 hunks)
  • sprites/spr_fur_tail_topknot/spr_fur_tail_topknot.yy (1 hunks)
  • sprites/spr_gladiator_crest/spr_gladiator_crest.yy (1 hunks)
  • sprites/spr_indomitus_complex_psy_hood/spr_indomitus_complex_psy_hood.yy (1 hunks)
  • sprites/spr_indomitus_complex_psy_hood_cables/spr_indomitus_complex_psy_hood_cables.yy (1 hunks)
  • sprites/spr_indomitus_complex_psy_hood_crown/spr_indomitus_complex_psy_hood_crown.yy (1 hunks)
  • sprites/spr_indomitus_left_shin_shadow/spr_indomitus_left_shin_shadow.yy (1 hunks)
  • sprites/spr_mk7_chest_variants/spr_mk7_chest_variants.yy (2 hunks)
  • sprites/spr_pow_sword_blade_additions/spr_pow_sword_blade_additions.yy (1 hunks)
  • sprites/spr_pow_sword_cross_guard/spr_pow_sword_cross_guard.yy (1 hunks)
  • sprites/spr_psy_hood/spr_psy_hood.yy (1 hunks)
  • sprites/spr_psy_hood_components/spr_psy_hood_components.yy (1 hunks)
  • sprites/spr_special_helm/spr_special_helm.yy (1 hunks)
  • sprites/spr_weapon_chsword/spr_weapon_chsword.yy (1 hunks)
  • sprites/spr_weapon_evisc/spr_weapon_evisc.yy (1 hunks)
  • sprites/sword_Works/sword_Works.yy (1 hunks)
🧰 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/full_livery_shader/full_livery_shader.vsh
  • sprites/spr_weapon_chsword/spr_weapon_chsword.yy
  • sprites/spr_pow_sword_blade_additions/spr_pow_sword_blade_additions.yy
  • sprites/spr_indomitus_complex_psy_hood_cables/spr_indomitus_complex_psy_hood_cables.yy
  • sprites/spr_pow_sword_cross_guard/spr_pow_sword_cross_guard.yy
  • sprites/spr_gladiator_crest/spr_gladiator_crest.yy
  • scripts/scr_sprite_helpers/scr_sprite_helpers.gml
  • shaders/full_livery_shader/full_livery_shader.fsh
  • sprites/spr_psy_hood_components/spr_psy_hood_components.yy
  • ChapterMaster.yyp
  • sprites/spr_indomitus_complex_psy_hood/spr_indomitus_complex_psy_hood.yy
  • sprites/sword_Works/sword_Works.yy
  • sprites/spr_da_mk6_helm_crests/spr_da_mk6_helm_crests.yy
  • sprites/spr_special_helm/spr_special_helm.yy
  • sprites/spr_indomitus_left_shin_shadow/spr_indomitus_left_shin_shadow.yy
  • sprites/spr_weapon_evisc/spr_weapon_evisc.yy
  • sprites/spr_fur_tail_topknot/spr_fur_tail_topknot.yy
  • sprites/spr_indomitus_complex_psy_hood_crown/spr_indomitus_complex_psy_hood_crown.yy
  • sprites/mk7_chest_variants/mk7_chest_variants.yy
  • sprites/spr_psy_hood/spr_psy_hood.yy
  • scripts/scr_ComplexSet/scr_ComplexSet.gml
  • sprites/spr_mk7_chest_variants/spr_mk7_chest_variants.yy
  • scripts/scr_culture_visuals/scr_culture_visuals.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_weapon_chsword/spr_weapon_chsword.yy
  • sprites/spr_pow_sword_blade_additions/spr_pow_sword_blade_additions.yy
  • sprites/spr_indomitus_complex_psy_hood_cables/spr_indomitus_complex_psy_hood_cables.yy
  • sprites/spr_pow_sword_cross_guard/spr_pow_sword_cross_guard.yy
  • sprites/spr_gladiator_crest/spr_gladiator_crest.yy
  • sprites/spr_psy_hood_components/spr_psy_hood_components.yy
  • sprites/spr_indomitus_complex_psy_hood/spr_indomitus_complex_psy_hood.yy
  • sprites/sword_Works/sword_Works.yy
  • sprites/spr_da_mk6_helm_crests/spr_da_mk6_helm_crests.yy
  • sprites/spr_special_helm/spr_special_helm.yy
  • sprites/spr_indomitus_left_shin_shadow/spr_indomitus_left_shin_shadow.yy
  • sprites/spr_weapon_evisc/spr_weapon_evisc.yy
  • sprites/spr_fur_tail_topknot/spr_fur_tail_topknot.yy
  • sprites/spr_indomitus_complex_psy_hood_crown/spr_indomitus_complex_psy_hood_crown.yy
  • sprites/mk7_chest_variants/mk7_chest_variants.yy
  • sprites/spr_psy_hood/spr_psy_hood.yy
  • sprites/spr_mk7_chest_variants/spr_mk7_chest_variants.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_sprite_helpers/scr_sprite_helpers.gml
  • scripts/scr_ComplexSet/scr_ComplexSet.gml
  • scripts/scr_culture_visuals/scr_culture_visuals.gml
🧠 Learnings (3)
📚 Learning: 2025-03-29T10:30:25.598Z
Learnt from: EttyKitty
PR: Adeptus-Dominus/ChapterMaster#647
File: scripts/scr_en_weapon/scr_en_weapon.gml:24-928
Timestamp: 2025-03-29T10:30:25.598Z
Learning: A data-driven approach for weapon management in `scripts/scr_en_weapon/scr_en_weapon.gml` is planned for a future PR, not within the scope of PR #647.

Applied to files:

  • scripts/scr_ComplexSet/scr_ComplexSet.gml
📚 Learning: 2025-02-24T01:44:06.262Z
Learnt from: OH296
PR: Adeptus-Dominus/ChapterMaster#474
File: scripts/scr_ComplexSet/scr_ComplexSet.gml:400-401
Timestamp: 2025-02-24T01:44:06.262Z
Learning: Multiple assignments to the same property in the `add_group` function's object literal are valid when the property represents a sprite, as they will be merged together using the `add_to_area` function rather than being overwritten.

Applied to files:

  • scripts/scr_ComplexSet/scr_ComplexSet.gml
📚 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 (53)
sprites/spr_weapon_evisc/spr_weapon_evisc.yy (1)

68-81: seqHeight/seqWidth correctly aligned with sprite dimensions.

Sequence dimensions match width/height; keyframe channel reflow is non-functional. Sanctified and acceptable.

sprites/spr_fur_tail_topknot/spr_fur_tail_topknot.yy (2)

66-67: Sequence dimensions aligned; no functional risk detected.

Values mirror sprite width/height. Blessed.


80-81: Negative xorigin detected; confirm intent.

xorigin = -2 is unusual and can misalign layered draws if downstream code assumes non-negative origins. Verify this offset is deliberate for this decoration.

sprites/spr_mk7_chest_variants/spr_mk7_chest_variants.yy (2)

70-71: Sequence dimensions aligned; frames intact.

seqHeight/seqWidth match sprite size; keyframe changes are formatting-only. Machine spirit appeased.


6-9: By the Omnissiah, confirm manual bounding-box mode
Custom bbox_left/right/top values are ignored under auto mode—set "bboxMode":2 if you intend a manual mask, or revert/remove these coords to rely on "bboxMode":0.

sprites/spr_special_helm/spr_special_helm.yy (1)

66-75: Sequence dimension metadata added correctly.

Matches sprite size; keyframe channel reflow retains IDs. Proceed.

scripts/scr_sprite_helpers/scr_sprite_helpers.gml (2)

1-7: Helper looks sound.

draw_sprite_flipped uses the correct origin-compensated formula for x when xscale = -1. Cogitators approve.


25-29: Reduce VRAM churn: reuse a single surface across frames.

Creating/freeing a surface per frame is wasteful. Create once, clear per iteration, free once after the loop.

Apply:

-    for (var _i = 0; _i < _frames; _i++) {
-        // Create surface for this frame
-        var _surf = surface_create(_w, _h);
-        surface_set_target(_surf);
+    var _surf = surface_create(_w, _h);
+    if (!surface_exists(_surf)) { show_debug_message("return_sprite_mirrored: surface_create failed"); return -1; }
+    for (var _i = 0; _i < _frames; _i++) {
+        surface_set_target(_surf);
         draw_clear_alpha(c_black, 0);
@@
-        // Free surface
-        surface_free(_surf);
+    }
+    // Free once
+    surface_free(_surf);

Also applies to: 43-45

⛔ Skipped due to learnings
Learnt from: EttyKitty
PR: Adeptus-Dominus/ChapterMaster#766
File: scripts/scr_ComplexSet/scr_ComplexSet.gml:476-477
Timestamp: 2025-04-25T21:16:10.644Z
Learning: In GameMaker, caching surfaces is generally avoided in the ChapterMaster codebase. It's preferable to create surfaces locally when needed and free them immediately after use with surface_clear_and_free(), as surfaces can be pushed from memory by the GPU at any point. This explicit creation/destruction pattern is used even when the code doesn't run every frame.
sprites/spr_weapon_chsword/spr_weapon_chsword.yy (2)

66-67: seqHeight/seqWidth alignment blessed

Values match width/height (167x231). Consistent with the machine-spirit’s expectations.


73-75: Keyframe channel schema normalised

Channel structure matches the newer pattern; Id holds name/path only. No heresy detected.

sprites/spr_da_mk6_helm_crests/spr_da_mk6_helm_crests.yy (2)

66-67: Sequence dimensions codified

232x167 recorded; matches sprite size. Proceed.


73-75: Channel format updated correctly

Channel “0” now contains only Id name/path; schema looks consistent with other assets.

sprites/spr_gladiator_crest/spr_gladiator_crest.yy (2)

66-67: Sequence dimensions added

232x167 mirrors the sprite’s dimensions. Alignment maintained.


73-75: Keyframe channel reflow acceptable

Restructured channel block is consistent; no functional deviation detected.

sprites/spr_psy_hood/spr_psy_hood.yy (2)

69-70: seqHeight/seqWidth registered

232x167 correctly recorded; harmony sustained.


76-87: All four keyframes migrated to the new channel schema

Ordering 0..3 preserved, Id paths correct. Sanctified.

sprites/spr_pow_sword_cross_guard/spr_pow_sword_cross_guard.yy (3)

70-71: Sequence dimensions consistent

231x167 matches the sprite; no discord detected.


76-92: Confirm frame ordering matches variant selection logic

Five frames at 0..4 look fine. Ensure any deterministic selector maps to this ordering to avoid visual misalignment.


1-4: All sprites registered in .yyp
Verification complete: ChapterMaster.yyp contains entries for all new .yy sprites; no further action required by the Omnissiah.

sprites/mk7_chest_variants/mk7_chest_variants.yy (2)

67-68: seqHeight/seqWidth match sprite dimensions — sanctioned.

Values align with width/height (167x232). No desync foreseen.


74-79: Ignore Keyframe schema compatibility warning
The Channels block in mk7_chest_variants.yy matches the existing sprites’ schema—resourceType and resourceVersion remain siblings of Id as in Sprite544—no action required.

Likely an incorrect or invalid review comment.

sprites/spr_psy_hood_components/spr_psy_hood_components.yy (4)

5-8: Bounding box is a very tight 20x9 — deliberate?

If collisions aren’t used for this component, consider standardising masks or disabling collision checks for its host object to avoid odd hit-tests.


92-93: Negative xorigin (-2) — confirm alignment with parent assembly.

A negative origin can be correct, but verify composite draw doesn’t jitter across variants.


75-88: Frames/sequence wiring looks correct.

Keyframes map cleanly 0..3 with consistent paths and lengths.


27-33: Affirmed: spr_psy_hood_components registered in ChapterMaster.yyp; no action required.

sprites/spr_indomitus_complex_psy_hood/spr_indomitus_complex_psy_hood.yy (3)

69-70: seqWidth/seqHeight match (181x271) — cogitators appeased.

No mismatch with sprite dimensions.


89-90: Origin (7,38) aligns with other Indomitus assets — good.

Should compose cleanly with body_type layers.


27-33: Resolve: Registration already present – Entry for spr_indomitus_complex_psy_hood exists in ChapterMaster.yyp at line 1286.

sprites/spr_indomitus_left_shin_shadow/spr_indomitus_left_shin_shadow.yy (3)

5-8: Zero-sized bounding box with collisionKind=1 — check collision semantics.

If this is strictly a visual shadow, ensure it never participates in collisions; otherwise define a sane bbox or disable collisions at the object level.


88-89: Origin (7,38) mirrors Indomitus body — correct.

Alignment should be stable across frames.


26-33: Registration confirmed: spr_indomitus_left_shin_shadow is present in ChapterMaster.yyp at line 1295.

sprites/sword_Works/sword_Works.yy (5)

70-71: PlaybackSpeedType=1 — confirm this is intentional.

Most sprites here use type 0. If you want FPS-based playback, switch to 0 and set playbackSpeed accordingly.

Apply if needed:

-    "playbackSpeed":1.0,
-    "playbackSpeedType":1,
+    "playbackSpeed":30.0,
+    "playbackSpeedType":0,

35-35: Origin at Top-Left (0,0) — verify weapon-draw helper expects this anchor.

If the helper composes at a custom origin (common for handhelds), set origin=9 with matching xorigin/yorigin.


4-8: Bounding box spans full image — acceptable for non-colliding weapons.

No action if collisions are unused.


117-120: Texture group MarineViewer — aligned with the rest of Marine Viewer assets.

No objections.


1-124: Confirm sprite registration and code references

Registration present in ChapterMaster.yyp at line 1811; manually verify all code points (scripts, objects, events) reference “sword_Works” (or its alias) to prevent orphaned assets.

sprites/spr_indomitus_complex_psy_hood_crown/spr_indomitus_complex_psy_hood_crown.yy (2)

21-27: Crown sprite resource wired correctly; the Machine Spirit hums contentedly.

Dimensions, frames, layers, origin and MarineViewer texture group look consistent. Registered name aligns with folder path.


89-91: Confirm overlay alignment in-scene.

xorigin=7, yorigin=38 with origin=Custom (9). Please visually verify crown alignment over the psy hood across all frames to avoid sub-pixel jitter.

shaders/full_livery_shader/full_livery_shader.vsh (2)

9-11: Shadow transform plumbing accepted.

Uniform/varying definitions are compatible with GM GLSL ES and match the fragment shader expectations.


23-23: Coordinate bake looks sound.

Scale-then-offset from base UVs is correct for atlas-aligned shadow maps.

ChapterMaster.yyp (1)

1284-1286: New sprites sanctified in the project registry.

All newly forged assets are present in resources: psy hood components/cables/crown, left shin shadow, power-sword parts, and sword_Works. This fulfils the crash-warding rite of registration.

Also applies to: 1295-1295, 1494-1495, 1500-1500, 1811-1811

sprites/spr_pow_sword_blade_additions/spr_pow_sword_blade_additions.yy (2)

21-27: Blade-additions sprite looks orderly.

BBox, frames, layer stack, and MarineViewer routing are correct.


28-33: Confirm origin and playback don’t cause unintended animation.

Origin=Top-Left (0) and playbackSpeed=1.0; if this sprite is used as a static variant, ensure image_speed is forced to 0 in code or set sequence speed accordingly to avoid cycling.

shaders/full_livery_shader/full_livery_shader.fsh (3)

36-40: Shadow uniforms/varying integration acknowledged.

Interface matches the vertex shader; default use_shadow=0 preserves old behaviour.


81-86: Intel colour quantisation workaround: approved.

Clamping the 127.25–128.75 range resolves sampling inconsistencies on affected drivers.


139-155: All shadow uniforms and texture stage bindings are present. Binding of use_shadow, shadow_transform and shadow_texture confirmed in scr_ComplexSet.gml—no further action required.

scripts/scr_culture_visuals/scr_culture_visuals.gml (5)

256-270: New crest item wiring looks correct.

Good use of prevent_others, subcomponents, and crown override for the hood. The machine spirits approve.


306-309: Crown subcomponents integration LGTM.


1693-1695: Weapon subcomponents propagation: good.

Copying variant subcomponents into weapon_data is needed for the new drawing path.


2661-2666: Power Sword multi-part config LGTM.

Subcomponents declared cleanly; will play well with the deterministic chooser.


1045-1053: Confirm right shin shadow asset – Tech-scry reveals no spr_indomitus_right_shin_shadow in the sacred files; both shins reference the left shadow. If this reuse is intentional, document it with a clarifying comment or refactor to a generic spr_indomitus_shin_shadow; otherwise, forge and include the proper right‐shin shadow asset.

scripts/scr_ComplexSet/scr_ComplexSet.gml (2)

857-870: draw_weapon helper wiring is sound.

Deterministic choice_lock and subcomponent pass-through look correct.


573-602: All required shadow uniforms exist. Verified shadow_transform in the vertex shader and both shadow_texture and use_shadow in the fragment shader—rituals complete.

@OH296 OH296 merged commit 55773f0 into Adeptus-Dominus:main Sep 16, 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: Warning Type: Fix This is a fix for a bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants