fix: highlight and shadow and multi-part weapons#1004
fix: highlight and shadow and multi-part weapons#1004OH296 merged 13 commits intoAdeptus-Dominus:mainfrom
Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the 📝 WalkthroughSummary by CodeRabbit
WalkthroughBy 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
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Possibly related PRs
Suggested labels
Suggested reviewers
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. Comment |
There was a problem hiding this comment.
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
⛔ Files ignored due to path filters (78)
sprites/spr_indomitus_complex_psy_hood/308aed46-7906-480b-a2b9-07b771c978e3.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/baed253b-ca79-4975-a382-c6f3bb1e3750.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/cc48e121-d030-4365-98d4-c96cae616cf6.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/layers/308aed46-7906-480b-a2b9-07b771c978e3/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/layers/308aed46-7906-480b-a2b9-07b771c978e3/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/layers/baed253b-ca79-4975-a382-c6f3bb1e3750/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/layers/baed253b-ca79-4975-a382-c6f3bb1e3750/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/layers/cc48e121-d030-4365-98d4-c96cae616cf6/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood/layers/cc48e121-d030-4365-98d4-c96cae616cf6/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/0a003967-014c-4789-8e8b-22966f90f92b.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/12292fae-7c51-4ce0-a73a-640e9340ff09.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/677ccaa0-47e6-481a-9397-b045df6425bf.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/f7b471f2-993d-4ab5-a31e-e7494c3a2e7d.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/0a003967-014c-4789-8e8b-22966f90f92b/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/0a003967-014c-4789-8e8b-22966f90f92b/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/12292fae-7c51-4ce0-a73a-640e9340ff09/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/12292fae-7c51-4ce0-a73a-640e9340ff09/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/677ccaa0-47e6-481a-9397-b045df6425bf/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/677ccaa0-47e6-481a-9397-b045df6425bf/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/f7b471f2-993d-4ab5-a31e-e7494c3a2e7d/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_cables/layers/f7b471f2-993d-4ab5-a31e-e7494c3a2e7d/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/0cc6a913-f7cf-4a42-b55d-4c2e35912f8d.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/d5b54b53-180c-46be-9598-14d688af60f6.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/eeeb9f09-92af-47b6-926b-9af54f8b3dd0.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/layers/0cc6a913-f7cf-4a42-b55d-4c2e35912f8d/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/layers/0cc6a913-f7cf-4a42-b55d-4c2e35912f8d/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/layers/d5b54b53-180c-46be-9598-14d688af60f6/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/layers/d5b54b53-180c-46be-9598-14d688af60f6/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/layers/eeeb9f09-92af-47b6-926b-9af54f8b3dd0/025efc18-cda5-4ad2-aa08-89bf4392026e.pngis excluded by!**/*.pngsprites/spr_indomitus_complex_psy_hood_crown/layers/eeeb9f09-92af-47b6-926b-9af54f8b3dd0/03d917a8-bff1-45d7-818b-f057c5540e44.pngis excluded by!**/*.pngsprites/spr_indomitus_left_shin_shadow/bb2de076-5af9-459a-b130-624bab24de74.pngis excluded by!**/*.pngsprites/spr_indomitus_left_shin_shadow/c23a99ed-6ea4-4ba2-8272-35125ec5c9db.pngis excluded by!**/*.pngsprites/spr_indomitus_left_shin_shadow/e60513c5-fcc3-459c-916e-8b19128ed541.pngis excluded by!**/*.pngsprites/spr_indomitus_left_shin_shadow/layers/bb2de076-5af9-459a-b130-624bab24de74/5ed376c2-9d33-44c5-9f13-c15f43e640b4.pngis excluded by!**/*.pngsprites/spr_indomitus_left_shin_shadow/layers/c23a99ed-6ea4-4ba2-8272-35125ec5c9db/5ed376c2-9d33-44c5-9f13-c15f43e640b4.pngis excluded by!**/*.pngsprites/spr_indomitus_left_shin_shadow/layers/e60513c5-fcc3-459c-916e-8b19128ed541/5ed376c2-9d33-44c5-9f13-c15f43e640b4.pngis excluded by!**/*.pngsprites/spr_pow_sword_blade_additions/3734a08a-42ee-4fd0-9737-0dbb3f6d3a68.pngis excluded by!**/*.pngsprites/spr_pow_sword_blade_additions/443a40e3-969c-4155-b66d-32e2a541cfde.pngis excluded by!**/*.pngsprites/spr_pow_sword_blade_additions/d76e9ffc-a89c-41eb-bc8a-b41946b2e18b.pngis excluded by!**/*.pngsprites/spr_pow_sword_blade_additions/layers/3734a08a-42ee-4fd0-9737-0dbb3f6d3a68/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_pow_sword_blade_additions/layers/443a40e3-969c-4155-b66d-32e2a541cfde/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_pow_sword_blade_additions/layers/d76e9ffc-a89c-41eb-bc8a-b41946b2e18b/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/235bd87f-2f4e-4fc9-bb10-1ebddcf91c8e.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/3e5f5a08-83de-438b-b0cb-cac34c23ab3c.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/4d350e69-6eba-4604-83b1-0c4822d3ff68.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/9229c4f8-7950-4cc1-a8fd-4e8a91eb0a3a.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/ce487658-50ad-47c9-a1f1-ba211cdf48a0.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/layers/235bd87f-2f4e-4fc9-bb10-1ebddcf91c8e/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/layers/3e5f5a08-83de-438b-b0cb-cac34c23ab3c/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/layers/4d350e69-6eba-4604-83b1-0c4822d3ff68/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/layers/9229c4f8-7950-4cc1-a8fd-4e8a91eb0a3a/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_pow_sword_cross_guard/layers/ce487658-50ad-47c9-a1f1-ba211cdf48a0/d6d4a4a7-b1f1-4f7c-a10d-1d6a1bd8fba8.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/4a04d880-daf4-46bb-aff0-901a873b35eb.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/c25a06b5-ba12-44c0-9b16-8dab1e63aa31.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/c310d9f2-1bb1-4847-ac8e-fd6df2f81d28.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/ff1a90fe-9eaa-4220-a0f3-1295c62fdc29.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/layers/4a04d880-daf4-46bb-aff0-901a873b35eb/0b5e7fba-d4a1-441e-a726-f45a72c56663.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/layers/c25a06b5-ba12-44c0-9b16-8dab1e63aa31/0b5e7fba-d4a1-441e-a726-f45a72c56663.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/layers/c310d9f2-1bb1-4847-ac8e-fd6df2f81d28/0b5e7fba-d4a1-441e-a726-f45a72c56663.pngis excluded by!**/*.pngsprites/spr_psy_hood_components/layers/ff1a90fe-9eaa-4220-a0f3-1295c62fdc29/0b5e7fba-d4a1-441e-a726-f45a72c56663.pngis excluded by!**/*.pngsprites/sword_Works/15bdf6d1-36e2-4fa6-98a3-03a159744f13.pngis excluded by!**/*.pngsprites/sword_Works/31d5cc7c-0525-4085-a433-2ed3013cef4e.pngis excluded by!**/*.pngsprites/sword_Works/5051efa5-01a3-4db4-acd8-74048d2eddea.pngis excluded by!**/*.pngsprites/sword_Works/58d181d9-62d4-4157-8758-88a6adc79e7c.pngis excluded by!**/*.pngsprites/sword_Works/637ec865-a195-4b67-8535-b6c09dd4b59c.pngis excluded by!**/*.pngsprites/sword_Works/7dad12e8-9912-4c01-8374-c263d839f8ee.pngis excluded by!**/*.pngsprites/sword_Works/97e23b71-7ea0-4b29-8d54-08786d1abb0b.pngis excluded by!**/*.pngsprites/sword_Works/a61b19e9-4e12-413c-a563-c73c840247af.pngis excluded by!**/*.pngsprites/sword_Works/e42b9269-9ffe-4f24-bb8f-c51d50da6fcc.pngis excluded by!**/*.pngsprites/sword_Works/layers/15bdf6d1-36e2-4fa6-98a3-03a159744f13/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/31d5cc7c-0525-4085-a433-2ed3013cef4e/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/5051efa5-01a3-4db4-acd8-74048d2eddea/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/58d181d9-62d4-4157-8758-88a6adc79e7c/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/637ec865-a195-4b67-8535-b6c09dd4b59c/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/7dad12e8-9912-4c01-8374-c263d839f8ee/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/97e23b71-7ea0-4b29-8d54-08786d1abb0b/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/a61b19e9-4e12-413c-a563-c73c840247af/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis excluded by!**/*.pngsprites/sword_Works/layers/e42b9269-9ffe-4f24-bb8f-c51d50da6fcc/6ccd8587-c054-408f-906b-426b7a9b5d5f.pngis 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.vshsprites/spr_weapon_chsword/spr_weapon_chsword.yysprites/spr_pow_sword_blade_additions/spr_pow_sword_blade_additions.yysprites/spr_indomitus_complex_psy_hood_cables/spr_indomitus_complex_psy_hood_cables.yysprites/spr_pow_sword_cross_guard/spr_pow_sword_cross_guard.yysprites/spr_gladiator_crest/spr_gladiator_crest.yyscripts/scr_sprite_helpers/scr_sprite_helpers.gmlshaders/full_livery_shader/full_livery_shader.fshsprites/spr_psy_hood_components/spr_psy_hood_components.yyChapterMaster.yypsprites/spr_indomitus_complex_psy_hood/spr_indomitus_complex_psy_hood.yysprites/sword_Works/sword_Works.yysprites/spr_da_mk6_helm_crests/spr_da_mk6_helm_crests.yysprites/spr_special_helm/spr_special_helm.yysprites/spr_indomitus_left_shin_shadow/spr_indomitus_left_shin_shadow.yysprites/spr_weapon_evisc/spr_weapon_evisc.yysprites/spr_fur_tail_topknot/spr_fur_tail_topknot.yysprites/spr_indomitus_complex_psy_hood_crown/spr_indomitus_complex_psy_hood_crown.yysprites/mk7_chest_variants/mk7_chest_variants.yysprites/spr_psy_hood/spr_psy_hood.yyscripts/scr_ComplexSet/scr_ComplexSet.gmlsprites/spr_mk7_chest_variants/spr_mk7_chest_variants.yyscripts/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.yysprites/spr_pow_sword_blade_additions/spr_pow_sword_blade_additions.yysprites/spr_indomitus_complex_psy_hood_cables/spr_indomitus_complex_psy_hood_cables.yysprites/spr_pow_sword_cross_guard/spr_pow_sword_cross_guard.yysprites/spr_gladiator_crest/spr_gladiator_crest.yysprites/spr_psy_hood_components/spr_psy_hood_components.yysprites/spr_indomitus_complex_psy_hood/spr_indomitus_complex_psy_hood.yysprites/sword_Works/sword_Works.yysprites/spr_da_mk6_helm_crests/spr_da_mk6_helm_crests.yysprites/spr_special_helm/spr_special_helm.yysprites/spr_indomitus_left_shin_shadow/spr_indomitus_left_shin_shadow.yysprites/spr_weapon_evisc/spr_weapon_evisc.yysprites/spr_fur_tail_topknot/spr_fur_tail_topknot.yysprites/spr_indomitus_complex_psy_hood_crown/spr_indomitus_complex_psy_hood_crown.yysprites/mk7_chest_variants/mk7_chest_variants.yysprites/spr_psy_hood/spr_psy_hood.yysprites/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.
- Color codes in the code shouldn't have any spaces in their id. I.e., color code
# 80bf40will crash the game.- All code should comply with the main GML documentation: https://manual.gamemaker.io/beta/en/GameMaker_Language/GML_Reference/GML_Reference.htm
Files:
scripts/scr_sprite_helpers/scr_sprite_helpers.gmlscripts/scr_ComplexSet/scr_ComplexSet.gmlscripts/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":2if 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 blessedValues match width/height (167x231). Consistent with the machine-spirit’s expectations.
73-75: Keyframe channel schema normalisedChannel 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 codified232x167 recorded; matches sprite size. Proceed.
73-75: Channel format updated correctlyChannel “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 added232x167 mirrors the sprite’s dimensions. Alignment maintained.
73-75: Keyframe channel reflow acceptableRestructured channel block is consistent; no functional deviation detected.
sprites/spr_psy_hood/spr_psy_hood.yy (2)
69-70: seqHeight/seqWidth registered232x167 correctly recorded; harmony sustained.
76-87: All four keyframes migrated to the new channel schemaOrdering 0..3 preserved, Id paths correct. Sanctified.
sprites/spr_pow_sword_cross_guard/spr_pow_sword_cross_guard.yy (3)
70-71: Sequence dimensions consistent231x167 matches the sprite; no discord detected.
76-92: Confirm frame ordering matches variant selection logicFive 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 forspr_indomitus_complex_psy_hoodexists 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 referencesRegistration 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 ofuse_shadow,shadow_transformandshadow_textureconfirmed inscr_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 nospr_indomitus_right_shin_shadowin the sacred files; both shins reference the left shadow. If this reuse is intentional, document it with a clarifying comment or refactor to a genericspr_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. Verifiedshadow_transformin the vertex shader and bothshadow_textureanduse_shadowin the fragment shader—rituals complete.
Purpose and Description
Testing done
Related things and/or additional context