feat: Weapon display data driven and Cthonian culture pack#720
feat: Weapon display data driven and Cthonian culture pack#720OH296 merged 38 commits intoAdeptus-Dominus:mainfrom
Conversation
📝 WalkthroughSummary by CodeRabbit
Summary by CodeRabbit
WalkthroughBy the Omnissiah’s will, this data-packet brings forth a substantial augmentation to the project’s visual cogitator arrays. New sprite resources are inducted, including bare heads, facial hair, and weaponry, blessed with expanded modularity and colouration. The sacred skin tone shader is now present, enabling dynamic pigmentation for organic visages. The ComplexSet script is extensively refactored to support modular arm and weapon data, with new logic for hand and weapon rendering. Additional cultural and role-specific trim sprites are sanctified, and the weapon visual data structure is overhauled for greater flexibility. Minor ritual adjustments are performed to various assets and scripts, ensuring harmony within the machine-spirit. Changes
Possibly related PRs
Suggested labels
Suggested reviewers
May the Machine God’s blessings be upon these modifications. The logic flows anew, the sprites multiply, and the modularity is sanctified. Proceed with the Rite of Peer Review, and may no error daemon escape your notice! 📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🧰 Additional context used📓 Path-based instructions (2)`**/*.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 ...
`**/*.*`: - Having humanly understandable and maintainable code is always the top most priority. - DRY (Don't repeat yourself) principle is also very important. - Ensure that the c...
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
|
I strongly disagree with storing visual data for weapons in the same place as all other visual data. Imo, that's a very bad choice, and will be hard to maintain in the long run. |
|
I'm 900% sure it's better to store weapon data in a dictionary, with weapon names as field names. |
|
Ok i'm not really sure where to go here, i know there are optimisations to make, but i'm not really sure how to implement them in a desired way as opposed to my way. so i'm just gonna mothball this pr for a while till i can think of something or someone else can |
No need tbh. If it works - it works. Just merge it as it is. Stuff can be improved/refactored later. |
|
Also, is it intended for the head stuff to be in this PR? |
I don't really know tbh i've just been treating all visuals as a kind of rolling constant development for a while |
nonetheless i kinda feel the whole sprite visuals thing has just been my kind of own little development kingdom thats maybe going a little far so i think i'd rather sit on it for a bit and maybe rationalise some of the many unfinished limbs |
|
Okay i still need to refactor fuck loaods and finish off the bare heads module, but this probably needs to just merge before it gets any bigger and more. complex |
There was a problem hiding this comment.
Actionable comments posted: 13
🔭 Outside diff range comments (2)
scripts/scr_culture_visuals/scr_culture_visuals.gml (1)
895-904: 🧹 Nitpick (assertive)Nil‑check before property access to appease the logic‑spirits.
_element.positionis referenced without confirming the key’s existence. While your data appears consistent, guarding withstruct_exists(_element, "position")prevents future null‑pointer laments.ChapterMaster.yyp (1)
62-1615: 🧹 Nitpick (assertive)Holistic analysis of the system augmentation
The modifications to ChapterMaster.yyp adhere to the objectives of the PR, as they implement all necessary resources to support data-driven weapon displays with visual variants. The changes are well-structured and follow the existing organizational patterns of the project.
While the PR comments reveal a debate about data organization, the implementation chosen appears to successfully integrate the new weapon visuals into the existing complex system, allowing for shared handling of ranks, experience, culture, and other conditions.
For optimal future maintenance, consider documenting the relationship between these added assets and the existing complex system in README files. Such documentation would facilitate proper understanding of the system by future tech-adepts who may need to maintain or extend this functionality.
♻️ Duplicate comments (6)
scripts/scr_culture_visuals/scr_culture_visuals.gml (2)
1462-1474:⚠️ Potential issueDuplicate key detected – earlier “Chainfist” definition will be obliterated.
GML struct literals honour only the final assignment; thus the terminator variant specified here is overwritten later by the Power‑Armour variant (lines 1519‑1532). Merge the two arrays under a single"Chainfist"key to preserve both forms.
1476-1488:⚠️ Potential issueDuplicate key detected – “Boltstorm Gauntlet” defined twice.
As above, unify the terminator and power‑armour variants to prevent silent data loss.scripts/scr_ComplexSet/scr_ComplexSet.gml (4)
565-610: Draw unit hands function displays proper anatomical understanding.The technical rituals for rendering warrior appendages account for different armor types, bionic augmentations, and positional offsets. The code properly handles all edge cases including terminator armor and bionic hands.
611-667: Draw weapon and hands function follows proper layering protocol.Your cascade correctly respects two-handed logic, placing hands behind or above the weapon sprites based on the hand_on_top flag. The function appropriately handles all weapon configurations, including two-handed weapons and special weapons.
815-820: New leg component references in draw order appear properly sequenced.The draw order has been correctly updated to include the new shin and knee components, ensuring proper visual layering. This insertion aligns with the data expansions for Terminator armour and maintains correct overlap hierarchy.
722-784: 🧹 Nitpick (assertive)Extensive armor-specific weapon handling adjustments lack proper STC documentation.
While the adjustments for different armor types and weapons are mechanically sound, this knowledge must be preserved through sacred documentation. The complex conditionals for Terminator armor in particular would benefit from explanatory comments.
if (armour_type == ArmourType.Terminator && !array_contains(["terminator_ranged", "terminator_melee","terminator_fist"],_arm.display_type)){ + // Adjust Terminator armor to properly position non-Terminator weapons _arm.ui_ymod -= 20; if (_arm.display_type == "normal_ranged") { if (_arm.new_weapon_draw){ _arm.ui_xmod += 24; } else { _arm.ui_xmod -= 24; } _arm.ui_ymod += 24; } if (_arm.display_type == "melee_onehand" && (_wep != "Company Standard")) { + // Special handling for one-handed melee weapons in Terminator armor _arm.arm_type = 2; _arm.hand_type = 2; _arm.ui_xmod -= 14; _arm.ui_ymod += 23; }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (136)
sprites/spr_artificer_left_leg/fc3cecfb-86a9-42be-8108-df34e8d6bb3e.pngis excluded by!**/*.pngsprites/spr_artificer_left_leg/layers/fc3cecfb-86a9-42be-8108-df34e8d6bb3e/6105e58a-c816-4253-bd56-fd77ff138879.pngis excluded by!**/*.pngsprites/spr_artificer_right_leg/6e6b579a-a930-4a70-98e4-c8b93c1692fa.pngis excluded by!**/*.pngsprites/spr_artificer_right_leg/layers/6e6b579a-a930-4a70-98e4-c8b93c1692fa/6105e58a-c816-4253-bd56-fd77ff138879.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/026245f0-7593-46b8-a3c4-eece1626f779.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/064b9d94-d8c7-40c4-83a4-66abb9d81082.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/07a12172-16e3-47ec-8381-bcb4e17a5fea.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/119401c9-2466-48e8-b092-e7bec7b54345.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/171a2df4-0da9-4780-92c6-e774fa7d5fbb.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/19d5b278-59bb-4d28-8e5b-ff9fb08320d9.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/1d631d5c-7e26-4075-bec1-bf519e78533f.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/1f5b93dc-9e53-44d1-b999-74cd6aa4f829.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/1f9592d5-b51d-41c8-94be-37e388fe4b9a.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/2afb7a0e-f9ca-4f5e-aa3d-4b651bbbab12.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/2e5d8e1a-0e6d-4a62-ba7e-81120ab8becf.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/33f45c33-d49f-42e5-bc56-232649f96c22.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/37f5b913-0b99-4f38-9252-88800edb3655.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/3a680f49-2f17-40e6-b24c-9cefb1016f0f.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/4265cc35-d65c-4c91-b427-d0267766b28b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/453ab56d-103e-412a-9a04-455992c9348b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/50efae71-3499-4dc0-b4aa-37dec1af841b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/52d6be61-5261-4311-a0c1-07e935c25df6.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/59c10dbe-11d0-4440-89bd-b39c2bae2164.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/59c1ef31-735a-41e9-8751-c0917393ceba.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/5f2896fb-a65c-47fb-ada7-4aebbf35fa60.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/60da470d-ee25-4544-8db1-3ae06a6aca3e.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/6a161d00-5bea-4f52-86ee-a91a16e20bf2.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/6ca665ee-1c72-40a2-a808-42fcca32e642.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/73d9098d-abca-4da7-b713-85f9fdde4c08.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/7c5a60e2-d9e8-4785-b99f-e3f21993069e.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/7d214730-8933-4eba-a5ad-da582ae142f9.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/7d2f5106-91f4-4236-af24-be2d545ec8ad.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/82379a9d-a84d-4519-a7f8-d41902a4cde0.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/84be56f9-976e-4bdf-b684-160b72c63473.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/87cd986b-a055-4223-9044-fcf525bb0602.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/9707ff5c-3e17-4c3a-a8af-b30c40afda13.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/9a0d46f0-3f7c-4d1f-851e-7f8585cc3f4b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/9a229b65-bd47-405a-ae89-b0782bc61f79.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/a26d347c-d4ce-40b0-be4f-fbcfbb8b0aa0.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/adc2ed6b-5442-4475-99f4-190d7eb468e9.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/b95d2cc2-0851-4928-9313-3f253a76a4bc.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/c5005de7-88f9-4690-b2d0-75a4a3bbcf71.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/c99613e9-341f-4d82-a5e7-8d7f91be79ce.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/ca62d7ba-307a-453f-9ddd-b572a27c67c5.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/ca70a07a-98c3-4408-a54c-2ba37e348e45.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/cb94ed63-672f-4c13-adfc-827c1574c939.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/ce920b9b-4f0b-49a8-b51c-b07365ab1a3d.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/dbb51051-fd69-48a0-bdb9-1edb54a517d9.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/de7d6148-126b-4524-8b72-bfe5da178758.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/e6edda0a-94ef-4ab5-bf36-de28c022edd0.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/e73a1e60-7dda-4a3d-9536-b173e171a3f8.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/edf5d09d-e228-4916-9506-2b42e7c87c1d.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/f22d5e6e-e8d6-4e57-9e3c-7dbafa638897.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/f9808fc2-29dc-4df5-bed5-51e20d21261e.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/fd34e62d-4a19-4366-ab5c-063069352d39.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/fe1b4884-bbcb-472e-9a22-cb2b147cb41d.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/fe47c7c6-f0cc-4337-b749-5641c896e825.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/026245f0-7593-46b8-a3c4-eece1626f779/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/064b9d94-d8c7-40c4-83a4-66abb9d81082/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/07a12172-16e3-47ec-8381-bcb4e17a5fea/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/119401c9-2466-48e8-b092-e7bec7b54345/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/171a2df4-0da9-4780-92c6-e774fa7d5fbb/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/19d5b278-59bb-4d28-8e5b-ff9fb08320d9/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/1d631d5c-7e26-4075-bec1-bf519e78533f/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/1f5b93dc-9e53-44d1-b999-74cd6aa4f829/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/1f9592d5-b51d-41c8-94be-37e388fe4b9a/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/2afb7a0e-f9ca-4f5e-aa3d-4b651bbbab12/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/2e5d8e1a-0e6d-4a62-ba7e-81120ab8becf/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/33f45c33-d49f-42e5-bc56-232649f96c22/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/37f5b913-0b99-4f38-9252-88800edb3655/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/3a680f49-2f17-40e6-b24c-9cefb1016f0f/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/4265cc35-d65c-4c91-b427-d0267766b28b/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/453ab56d-103e-412a-9a04-455992c9348b/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/50efae71-3499-4dc0-b4aa-37dec1af841b/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/52d6be61-5261-4311-a0c1-07e935c25df6/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/59c10dbe-11d0-4440-89bd-b39c2bae2164/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/59c1ef31-735a-41e9-8751-c0917393ceba/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/5f2896fb-a65c-47fb-ada7-4aebbf35fa60/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/60da470d-ee25-4544-8db1-3ae06a6aca3e/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/6a161d00-5bea-4f52-86ee-a91a16e20bf2/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/6ca665ee-1c72-40a2-a808-42fcca32e642/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/73d9098d-abca-4da7-b713-85f9fdde4c08/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/7c5a60e2-d9e8-4785-b99f-e3f21993069e/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/7d214730-8933-4eba-a5ad-da582ae142f9/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/7d2f5106-91f4-4236-af24-be2d545ec8ad/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/82379a9d-a84d-4519-a7f8-d41902a4cde0/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/84be56f9-976e-4bdf-b684-160b72c63473/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/87cd986b-a055-4223-9044-fcf525bb0602/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/9707ff5c-3e17-4c3a-a8af-b30c40afda13/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/9a0d46f0-3f7c-4d1f-851e-7f8585cc3f4b/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/9a229b65-bd47-405a-ae89-b0782bc61f79/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/a26d347c-d4ce-40b0-be4f-fbcfbb8b0aa0/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/adc2ed6b-5442-4475-99f4-190d7eb468e9/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/b95d2cc2-0851-4928-9313-3f253a76a4bc/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/c5005de7-88f9-4690-b2d0-75a4a3bbcf71/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/c99613e9-341f-4d82-a5e7-8d7f91be79ce/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/ca62d7ba-307a-453f-9ddd-b572a27c67c5/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/ca70a07a-98c3-4408-a54c-2ba37e348e45/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/cb94ed63-672f-4c13-adfc-827c1574c939/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/ce920b9b-4f0b-49a8-b51c-b07365ab1a3d/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/dbb51051-fd69-48a0-bdb9-1edb54a517d9/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/de7d6148-126b-4524-8b72-bfe5da178758/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/e6edda0a-94ef-4ab5-bf36-de28c022edd0/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/e73a1e60-7dda-4a3d-9536-b173e171a3f8/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/edf5d09d-e228-4916-9506-2b42e7c87c1d/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/f22d5e6e-e8d6-4e57-9e3c-7dbafa638897/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/f9808fc2-29dc-4df5-bed5-51e20d21261e/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/fd34e62d-4a19-4366-ab5c-063069352d39/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/fe1b4884-bbcb-472e-9a22-cb2b147cb41d/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair/layers/fe47c7c6-f0cc-4337-b749-5641c896e825/ca338eaf-cd77-40aa-b795-839fbc2c51cd.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/25f3c04a-21a5-4eed-ae96-bac303387033.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/26323f47-b73b-4297-ba10-09aae76121a2.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/72ddc6f3-ea56-494b-ab07-e01e5c6a49e5.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/73d446e5-adf7-4e92-9af5-33c5cbd38662.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/789a65e4-c488-4ee9-a598-5ead885fa298.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/7c16add8-7098-4881-88ed-ebb334520439.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/7dcbfd8c-30e4-4244-9d8f-2da673c3c624.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/9828331d-007f-4b69-ae4f-3eaf82a38cb8.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/a22c72ec-3334-4ac3-9d76-cd6f78aa94ad.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/a952d6ec-8732-4b76-aad5-568ff548a743.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/25f3c04a-21a5-4eed-ae96-bac303387033/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/26323f47-b73b-4297-ba10-09aae76121a2/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/72ddc6f3-ea56-494b-ab07-e01e5c6a49e5/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/73d446e5-adf7-4e92-9af5-33c5cbd38662/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/789a65e4-c488-4ee9-a598-5ead885fa298/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/7c16add8-7098-4881-88ed-ebb334520439/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/7dcbfd8c-30e4-4244-9d8f-2da673c3c624/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/9828331d-007f-4b69-ae4f-3eaf82a38cb8/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/a22c72ec-3334-4ac3-9d76-cd6f78aa94ad/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_head_facial_hair_colourable/layers/a952d6ec-8732-4b76-aad5-568ff548a743/7741b89e-06b3-430a-b9e8-c7d8cbc2425b.pngis excluded by!**/*.pngsprites/spr_bare_heads_colourable/05289283-cf3c-49ba-978c-c5705e259221.pngis excluded by!**/*.pngsprites/spr_bare_heads_colourable/269de542-29d3-4e95-861d-ee5e4396f389.pngis excluded by!**/*.pngsprites/spr_bare_heads_colourable/6df39139-d1b2-4f8f-ac68-8603285c55b8.pngis excluded by!**/*.pngsprites/spr_bare_heads_colourable/b70f17ac-4a82-47d2-b564-0f99c4b3b3ec.pngis excluded by!**/*.pngsprites/spr_bare_heads_colourable/c1f4af0d-ab7c-4e9c-b66b-c6b0d3b0711e.pngis excluded by!**/*.pngsprites/spr_bare_heads_colourable/d0394d2c-1519-4705-9cfa-bff1e4d0bce1.pngis excluded by!**/*.png
📒 Files selected for processing (13)
ChapterMaster.yyp(12 hunks)objects/obj_creation/Create_0.gml(1 hunks)scripts/scr_ComplexSet/scr_ComplexSet.gml(17 hunks)scripts/scr_culture_visuals/scr_culture_visuals.gml(10 hunks)scripts/scr_draw_unit_image/scr_draw_unit_image.gml(0 hunks)shaders/skin_tone_shader/skin_tone_shader.fsh(1 hunks)shaders/skin_tone_shader/skin_tone_shader.vsh(1 hunks)shaders/skin_tone_shader/skin_tone_shader.yy(1 hunks)sprites/spr_artificer_left_leg/spr_artificer_left_leg.yy(3 hunks)sprites/spr_artificer_right_leg/spr_artificer_right_leg.yy(3 hunks)sprites/spr_bare_eyes/spr_bare_eyes.yy(1 hunks)sprites/spr_bare_head_facial_hair/spr_bare_head_facial_hair.yy(1 hunks)sprites/spr_bare_head_facial_hair_colourable/spr_bare_head_facial_hair_colourable.yy(1 hunks)
💤 Files with no reviewable changes (1)
- scripts/scr_draw_unit_image/scr_draw_unit_image.gml
🧰 Additional context used
📓 Path-based instructions (3)
`**/*.*`: - Having humanly understandable and maintainable code is always the top most priority. - DRY (Don't repeat yourself) principle is also very important. - Ensure that the c...
**/*.*: - Having humanly understandable and maintainable code is always the top most priority.
- DRY (Don't repeat yourself) principle is also very important.
- Ensure that the code is compliant with the CODE_STYLE.MD: https://github.com/Adeptus-Dominus/ChapterMaster/blob/main/docs/CODE_STYLE.md
shaders/skin_tone_shader/skin_tone_shader.yyobjects/obj_creation/Create_0.gmlsprites/spr_artificer_right_leg/spr_artificer_right_leg.yyshaders/skin_tone_shader/skin_tone_shader.vshsprites/spr_artificer_left_leg/spr_artificer_left_leg.yysprites/spr_bare_head_facial_hair_colourable/spr_bare_head_facial_hair_colourable.yysprites/spr_bare_head_facial_hair/spr_bare_head_facial_hair.yyshaders/skin_tone_shader/skin_tone_shader.fshscripts/scr_culture_visuals/scr_culture_visuals.gmlsprites/spr_bare_eyes/spr_bare_eyes.yyscripts/scr_ComplexSet/scr_ComplexSet.gmlChapterMaster.yyp
`**/*.yy`: - When any script or sprite .yy files are deleted, their paths should also be deleted from the .yyp file, otherwise the game will crash. - When any script or sprite .yy ...
**/*.yy: - When any script or sprite .yy files are deleted, their paths should also be deleted from the .yyp file, otherwise the game will crash.
- When any script or sprite .yy files are created, their paths should be added to the .yyp file, otherwise they'll fail.
shaders/skin_tone_shader/skin_tone_shader.yysprites/spr_artificer_right_leg/spr_artificer_right_leg.yysprites/spr_artificer_left_leg/spr_artificer_left_leg.yysprites/spr_bare_head_facial_hair_colourable/spr_bare_head_facial_hair_colourable.yysprites/spr_bare_head_facial_hair/spr_bare_head_facial_hair.yysprites/spr_bare_eyes/spr_bare_eyes.yy
`**/*.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 ...
**/*.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
# 80 bf40will 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
objects/obj_creation/Create_0.gmlscripts/scr_culture_visuals/scr_culture_visuals.gmlscripts/scr_ComplexSet/scr_ComplexSet.gml
🔇 Additional comments (26)
objects/obj_creation/Create_0.gml (1)
270-270: Nomenclature standardization detected and approved.The binary designation has been simplified from "Ganger (cthonian)" to "Cthonian" in the culture_styles array. This alteration aligns with the Omnissiah's doctrine of logical parsimony and standardizes the culture classification schema across the cogitator systems.
The removal of redundant descriptors enhances nomenclature uniformity with other new Cthonian-pattern visual assets introduced in this data-packet.
shaders/skin_tone_shader/skin_tone_shader.yy (1)
1-12: Praise to the Omnissiah for this new shader construct!A new skin_tone_shader resource has been successfully integrated into the Machine Spirit's visual processing matrix. This shader augmentation will facilitate the dynamic pigmentation conversion of organic visages, enhancing the visual flexibility of biological renders.
This aligns with the ritual updates to the drawing logic in the ComplexSet script, where the shader is applied when rendering bare head components instead of full helmets.
sprites/spr_artificer_left_leg/spr_artificer_left_leg.yy (1)
54-54: Animation sequence optimization successfully implemented.The sequence length has been reduced from 4.0 to 3.0 units, optimizing the animation cycle by removing an extraneous frame. The sacred dimensions of the sequence have been explicitly defined with seqHeight (232.0) and seqWidth (164.0), providing the Machine Spirit with precise dimensional parameters.
The keyframe chronology has been recalibrated with proper temporal indices, maintaining logical consistency in the animation sequence.
Also applies to: 68-69, 80-80, 83-83
sprites/spr_artificer_right_leg/spr_artificer_right_leg.yy (1)
54-54: Animation sequence optimization successfully implemented.The sequence length has been reduced from 4.0 to 3.0 units, optimizing the animation cycle by removing an extraneous frame. The sacred dimensions of the sequence have been explicitly defined with seqHeight (232.0) and seqWidth (164.0), providing the Machine Spirit with precise dimensional parameters.
The keyframe chronology has been recalibrated with proper temporal indices, maintaining logical consistency in the animation sequence.
Also applies to: 68-69, 80-80, 83-83
shaders/skin_tone_shader/skin_tone_shader.vsh (1)
14-19: Vertex rite functions as intended – praise the Omnissiah!Position is correctly transformed by the holy WORLD_VIEW_PROJECTION matrix and colour/UV offerings are passed through untainted. No further ritual corrections required.
sprites/spr_bare_head_facial_hair_colourable/spr_bare_head_facial_hair_colourable.yy (1)
4-9: Bounding box encloses only the chin cog – verify coverageThe bbox spans left 70/right 92 of a 164‑pixel width (≈ 13 % either side). Confirm this is intentional; too narrow a hit‑area may lead to visual clipping if the datum sprite is offset.
sprites/spr_bare_head_facial_hair/spr_bare_head_facial_hair.yy (1)
1-86: By the Omnissiah, confirm.yypregistration for this newly‑forged sprite.
When a fresh.yyfile is consecrated, its path must also be etched into the project’s.yypledger; failure will summon the crash‑daemons at build time. Kindly verify thatspr_bare_head_facial_hair.yyis referenced insideChapterMaster.yypunder theresourcesarray.Would you like a script to scan the
.yypfile for the sprite’s UUID and path?sprites/spr_bare_eyes/spr_bare_eyes.yy (2)
61-99: Ensure inclusion in the holy.yypregistry.
As with all new sprite scriptures, failure to append the resource entry to the.yypfile will cause the machine‑spirit to revolt.
1-60:Details
❓ Verification inconclusive
Sanctify origin & bounding box – visual alignment audit suggested.
The sprite declaresorigin:9(custom top‑left) and bounding box values that trim to a single pixel in height (top == bottom). Should this bebbox_top < bbox_bottomto enable collision detection for modded scripts? Please confirm that this deliberate configuration is truly desired.
O’ mortal artisan, audit the sprite’s sanctified origin and bounding voxels
I have divined that in sprites/spr_bare_eyes/spr_bare_eyes.yy (lines 1–60):
origin: 9(top‑left anchor)bbox_top: 30andbbox_bottom: 30(yielding zero height)Such a configuration nullifies any collision volume. If modded scripts rely on a non‑zero bounding box, should
bbox_top < bbox_bottombe declared instead? Pray confirm whether this zero‑height trim is by divine design.ChapterMaster.yyp (9)
62-62: New folder structure approved by the Omnissiah's graceThe addition of the
bare_headsfolder to the sacred hierarchy is a logical extension of the project's anatomy. This structural change aligns with the Machine Spirit's desire for organized categorization of visual assets.
439-441: Praise be to the holy iconography of the chapter symbolsThe inclusion of new pauldron.png files for the chapter symbols of "darkangels" and "scythesofthemperor" expands the visual lexicon of our sacred archives. This addition is consistent with the binary pattern established for other chapter symbols in the datafiles structure.
887-887: A new shader joins the Omnissiah's blessed toolboxThe introduction of the
skin_tone_shaderrepresents a significant augmentation to the rendering capabilities of the system. This shader shall allow for dynamic pigmentation of organic visages, as mentioned in the summary data-packet. This addition is crucial for the proper rendering of the newly implemented bare head sprites.
934-940: Biologic customization assets integrated into the machine spiritThe implementation of bare head components (eyes, facial hair, heads, necks) with both standard and colourable variants follows logical categorization patterns. These assets provide the promised modular approach to character visualization referenced in the PR objectives.
970-973: Armor adornment sprites correctly interfaced with the complex systemThe chain mail tabbard and chaplain trim components are properly added to the project manifest. These decorative elements expand the visual customization options available to the complex component system.
1003-1003: Cthonian tabbard sprite implementation acceptedThe Cthonian tabbard sprite has been correctly added to the project resources. This component adds cultural-specific elements as mentioned in the PR objectives, allowing for more diverse visual representations.
1163-1172: Indomitus variant components properly cataloguedThe addition of specialized Indomitus leg variants (knee crux and shin components) enhances the modular nature of the armor visualization system. These components allow for more granular control over the visual representation of marines.
1183-1185: Armor embellishment sprites correctly registered in the sacred archivesThe pauldron chainmail and shin spikes components for both left and right sides have been properly added to the project manifest. The symmetrical implementation of these sprites adheres to the binary perfection favored by the Machine God.
Also applies to: 1338-1339, 1380-1382
1610-1615: New weapon variants integrated as per the forge's specificationsThe implementation of storm tall variants and cultural-specific weapons (oriental and turk swords) aligns with the PR objective of making weapon display data-driven with visual variants. These additions will enable greater diversity in weapon visualization within the complex system.
I commend the integration of these weapon variants into the complex system. This implementation follows the sacred principles of modularity and reusability, allowing these weapons to access the same visual conditions (rank, experience, culture) as other components.
scripts/scr_ComplexSet/scr_ComplexSet.gml (8)
97-98: Praise be to the addition of the sacreddraw_helmsflag.A most logical implementation that dynamically references the appropriate omniscient controller object. The commented line suggests debugging remnants - consider purging this binary heresy for production deployment.
134-136: Data arrays for weapon schema storage appropriately segmented.The binary division of weapon data into separate arrays for each limb augmentation follows proper Machine Cult design patterns. This separation of concerns will improve modularity and maintainability of the visual representation rituals.
198-207: Logical fallback to default body types demonstrates proper defensive programming.The Machine Cult approves of this safeguard against undefined body types. This implementation ensures continued function even when incomplete data is provided to the algorithm.
406-430: Variation map extensions properly catalogue newly supported component variants.The binary liturgy now accounts for shin, knee, and bare head components. This expansion of the variation map follows the established pattern and integrates well with the existing code structure.
669-698: Weapon preset data structure implements canonical weapon handling patterns.This structure of blessed templates provides standardized configurations for different weapon types, reducing redundancy and ensuring consistency. The Machine Cult approves of this data-driven approach.
712-721: Weapon data selection methodology implements proper variation indexing.The code correctly retrieves weapon configurations from the arm data arrays using the variation index, with appropriate fallback empty structures when no data exists. Most efficient.
1189-1201: Skin tones array demonstrates proper RGB benediction.The skin_tones structure with normalized RGB values follows proper shader input formatting. The organization into standard and specialized variants (coal) provides for future expansion of skin tone diversity.
1202-1221: Draw head function now properly implements the binary helmet toggle.The conditional rendering path based on draw_helms allows for either helmeted or bare-headed visualization. The bare head path correctly applies the skin tone shader and renders the appropriate components. Most efficient.
There was a problem hiding this comment.
Actionable comments posted: 3
♻️ Duplicate comments (2)
scripts/scr_culture_visuals/scr_culture_visuals.gml (2)
1564-1576:⚠️ Potential issueMis‑categorised display type – ranged weapons declared as melee
The blessed Sniper Rifle and Autocannon proclaim
"display_type": "melee_twohand".
This will compel the pose cogitators to wield them like thunder‑hammers!- display_type: "melee_twohand", + display_type: "ranged_twohand",Identical heresy is present for both weapons; correct forthwith.
Also applies to: 1578-1590
1113-1146: 🛠️ Refactor suggestion
⚠️ Potential issue⚙️ Deep‑clone nested
weapon_databefore mutation to avoid cross‑variant contaminationBy the Omnissiah’s wisdom,
variable_clone()only performs a shallow copy.
new_obj.weapon_datatherefore still shares its machine‑spirit withbase_data.weapon_data.
Each pass through the loop mutates this shared struct (sprite, overrides, etc.), so earlier variants are retro‑fitted with later settings – a most insidious side‑effect.Invoke a second clone for
weapon_data(or build a fresh struct) before any mutation, thus:var base_data = variable_clone(weapon_visual_data.base); - base_data.weapon_map = weapon_name; - base_data.position = "weapon"; + // Purge the taint of shared references + if (struct_exists(base_data, "weapon_data")) { + base_data.weapon_data = variable_clone(base_data.weapon_data); + } + base_data.weapon_map = weapon_name; + base_data.position = "weapon";
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
📒 Files selected for processing (1)
scripts/scr_culture_visuals/scr_culture_visuals.gml(10 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
`**/*.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 ...
**/*.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
# 80 bf40will 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
scripts/scr_culture_visuals/scr_culture_visuals.gml
`**/*.*`: - Having humanly understandable and maintainable code is always the top most priority. - DRY (Don't repeat yourself) principle is also very important. - Ensure that the c...
**/*.*: - Having humanly understandable and maintainable code is always the top most priority.
- DRY (Don't repeat yourself) principle is also very important.
- Ensure that the code is compliant with the CODE_STYLE.MD: https://github.com/Adeptus-Dominus/ChapterMaster/blob/main/docs/CODE_STYLE.md
scripts/scr_culture_visuals/scr_culture_visuals.gml
🔇 Additional comments (1)
scripts/scr_culture_visuals/scr_culture_visuals.gml (1)
1161-1178: Confirm intention behind dual‑pattern “Heavy Flamer” entryWithin the same key we provide both terminator and power‑armour variants – splendid.
However, unlike other dual‑form weapons we do not assigndisplay_typeto the terminator form; it therefore inherits from the earlier base (which lacks one). Verify the pose is as intended or add"display_type": "terminator_ranged"to maintain parity with Assault Cannon & Plasma Cannon definitions.
EttyKitty
left a comment
There was a problem hiding this comment.
I'm not going to stall this for longer, as stuff can be improved later.
The feature works and that's good enough.
Just pick a good name for the PR, as it does a lot of stuff aside from the weapon visual data.
Uh oh!
There was an error while loading. Please reload this page.