-
Couldn't load subscription status.
- Fork 39
Implementation of contemptor dread #1034
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
📝 WalkthroughSummary by CodeRabbit
WalkthroughTech-Priest, the data-ritual adds two dreadnought weapons, renames a Volkite sprite, updates visuals and UI mappings, extends ruins rewards with a new type, inserts shop entries, and registers corresponding sprite resources and project metadata. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Pre-merge checks❌ Failed checks (2 warnings)
✅ Passed checks (1 passed)
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro
⛔ Files ignored due to path filters (6)
sprites/spr_Contemptor_Conversion_Beamer/cdc4c2e7-a824-4a45-8406-fe470c6eae31.pngis excluded by!**/*.pngsprites/spr_Contemptor_Conversion_Beamer/layers/cdc4c2e7-a824-4a45-8406-fe470c6eae31/af2cc7f4-f5e3-470f-aa0e-ad3ebfbba808.pngis excluded by!**/*.pngsprites/spr_Contemptor_assault_cannon/1b47a347-6927-4943-981c-dfba95287448.pngis excluded by!**/*.pngsprites/spr_Contemptor_assault_cannon/layers/1b47a347-6927-4943-981c-dfba95287448/719740c0-402f-4dc6-af3e-0d8475287311.pngis excluded by!**/*.pngsprites/spr_Volkite_Culverins/d532989d-6b36-48dc-9ccb-1daf433cbb1f.pngis excluded by!**/*.pngsprites/spr_Volkite_Culverins/layers/d532989d-6b36-48dc-9ccb-1daf433cbb1f/1f3e5664-e536-47f4-b0bf-214e1fd9c23a.pngis excluded by!**/*.png
📒 Files selected for processing (9)
ChapterMaster.yyp(3 hunks)objects/obj_shop/Create_0.gml(1 hunks)scripts/scr_culture_visuals/scr_culture_visuals.gml(2 hunks)scripts/scr_ruins_reward/scr_ruins_reward.gml(1 hunks)scripts/scr_ui_display_weapons/scr_ui_display_weapons.gml(1 hunks)scripts/scr_weapon/scr_weapon.gml(3 hunks)sprites/spr_Contemptor_Conversion_Beamer/spr_Contemptor_Conversion_Beamer.yy(1 hunks)sprites/spr_Contemptor_assault_cannon/spr_Contemptor_assault_cannon.yy(1 hunks)sprites/spr_Volkite_Culverins/spr_Volkite_Culverins.yy(5 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.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_ui_display_weapons/scr_ui_display_weapons.gmlscripts/scr_ruins_reward/scr_ruins_reward.gmlobjects/obj_shop/Create_0.gmlscripts/scr_culture_visuals/scr_culture_visuals.gmlscripts/scr_weapon/scr_weapon.gml
**/*.*
⚙️ CodeRabbit configuration file
**/*.*: - Having humanly understandable and maintainable code is the top most priority.
- DRY (Don't repeat yourself) principle is also very important.
- If a TODO comment is added, ask the user if you should create a GitHub issue for this TODO.
- If a TODO comment is deleted, remind the user if there is an active GitHub issue related to that comment.
Files:
scripts/scr_ui_display_weapons/scr_ui_display_weapons.gmlscripts/scr_ruins_reward/scr_ruins_reward.gmlsprites/spr_Volkite_Culverins/spr_Volkite_Culverins.yysprites/spr_Contemptor_Conversion_Beamer/spr_Contemptor_Conversion_Beamer.yyobjects/obj_shop/Create_0.gmlscripts/scr_culture_visuals/scr_culture_visuals.gmlsprites/spr_Contemptor_assault_cannon/spr_Contemptor_assault_cannon.yyChapterMaster.yypscripts/scr_weapon/scr_weapon.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_Volkite_Culverins/spr_Volkite_Culverins.yysprites/spr_Contemptor_Conversion_Beamer/spr_Contemptor_Conversion_Beamer.yysprites/spr_Contemptor_assault_cannon/spr_Contemptor_assault_cannon.yy
🧠 Learnings (1)
📚 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 (14)
scripts/scr_ui_display_weapons/scr_ui_display_weapons.gml (1)
192-192: The rite of renaming is observed, Tech-Priest.The sprite reference update from
spr_twl_Volkite_Culverinstospr_Volkite_Culverinsaligns with the sacred asset manifest amendments. The data-ritual proceeds without flaw.scripts/scr_culture_visuals/scr_culture_visuals.gml (1)
2186-2215: The archives expand, Tech-Priest. The machine spirit acknowledges the amendment.The sprite reference revision (line 2186) and the two newly inscribed dreadnought weapon visuals (Heavy Conversion Beamer, Kheres Assault Cannon) adhere to established sacred patterns. Body types, display protocols, and sprite bindings align with the ancient templates. The DRY violations within this data-vault remain catalogued for future purgation, as per archived learnings.
Based on learnings.
sprites/spr_Contemptor_assault_cannon/spr_Contemptor_assault_cannon.yy (1)
1-92: The new icon of war is forged, Tech-Priest.The sprite asset
spr_Contemptor_assault_cannonmanifests in accordance with the sacred GameMaker protocols. Name, dimensions, texture group bindings, and spatial origin are inscribed without error. The asset integrates seamlessly with the visual archives.ChapterMaster.yyp (3)
579-579: IDE version increment acknowledged.The IDE metadata advances to 2024.1400.0.901. No functional impact detected.
1116-1119: New Contemptor weapon sprites registered correctly.Tech-Priest, the manifest accepts two dreadnought armament visuals: spr_Contemptor_assault_cannon and spr_Contemptor_Conversion_Beamer. Asset paths align with expected structure. Registration complies with coding guidelines requiring .yy file paths be added to the project manifest.
As per coding guidelines.
1707-1707: Obsolete spr_twl_Volkite_Culverins references eradicated. Tech-Priest, no trace of the old prefix remains in the manifest or codebase.sprites/spr_Contemptor_Conversion_Beamer/spr_Contemptor_Conversion_Beamer.yy (1)
1-92: Sprite asset structure approved.Tech-Priest, the Conversion Beamer visual data-construct is correctly forged. Bounding parameters, frame reference, parent hierarchy (dreadnought), and texture designation (MarineViewer) align with machine protocols. Single-frame configuration appropriate for static armament visual.
sprites/spr_Volkite_Culverins/spr_Volkite_Culverins.yy (5)
3-3: Root sprite identifier renamed correctly.The sprite designation transitions from spr_twl_Volkite_Culverins to spr_Volkite_Culverins. The nomenclature simplifies appropriately.
24-24: Sprite name field updated consistently.The internal name field mirrors the root identifier change. Consistency maintained.
36-36: Sequence designation updated accordingly.The sequence %Name aligns with the renamed sprite identifier.
60-60: Sequence name field consistency maintained.Secondary sequence name designation reflects the identifier transition.
74-74: Sprite path purification complete. Tech-Priest, the resource manifests at sprites/spr_Volkite_Culverins/spr_Volkite_Culverins.yy and the archaic file is purged.scripts/scr_weapon/scr_weapon.gml (2)
75-75: The rite of description enhancement is acknowledged, Tech-Priest.The updated inscription for Twin-linked Volkite Culverins appropriately conveys the weapon's dreadnought-mounted fury and twin-beam devastation. The lore remains faithful to the ancient Volkite mysteries.
1345-1360: Clarify Heavy Conversion Beamer damage values
Tech-Priest: Attack values (500/550/600) on Heavy Conversion Beamer exactly mirror the standard Conversion Beam Projector, while the vehicle-mounted heavy variant uses 800/900/1000. Confirm whether this parity is intentional or if the Heavy infantry model requires increased values.
| i += 1; | ||
| item[i] = "Heavy Conversion Beamer"; | ||
| item_stocked[i] = scr_item_count(item[i]); | ||
| item_cost[i] = 0; | ||
| forge_cost[i] = 0; | ||
| i += 1; | ||
| item[i] = "Kheres Assault Cannon"; | ||
| item_stocked[i] = scr_item_count(item[i]); | ||
| item_cost[i] = 0; | ||
| forge_cost[i] = 0; | ||
| i += 1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tech-Priest, the sanctity of the procurement rites is compromised.
The newly inscribed entries for "Heavy Conversion Beamer" and "Kheres Assault Cannon" lack the nobuy[i]=1; seal, diverging from the sacred pattern observed in all preceding Contemptor and archaic weaponry catalogues (lines 555-677). Without this decree, the profane may attempt direct acquisition when these relics should remain bound to ritual discovery alone.
Apply this corrective benediction:
i += 1;
+ nobuy[i]=1;
item[i] = "Heavy Conversion Beamer";
item_stocked[i] = scr_item_count(item[i]);
item_cost[i] = 0;
forge_cost[i] = 0;
i += 1;
+ nobuy[i]=1;
item[i] = "Kheres Assault Cannon";
item_stocked[i] = scr_item_count(item[i]);
item_cost[i] = 0;
forge_cost[i] = 0;
i += 1;🤖 Prompt for AI Agents
In objects/obj_shop/Create_0.gml around lines 678 to 688, the entries for "Heavy
Conversion Beamer" and "Kheres Assault Cannon" are missing the nobuy[i]=1 flag;
add nobuy[i]=1 immediately after setting forge_cost[i]=0 for each of those two
items so they follow the established pattern for Contemptor/archaic weapons and
cannot be directly purchased.
| //Damaged Dreadnought | ||
| else if (ruins_type=7){ | ||
| wep1=("Contemptor Dreadnought"); | ||
| wen1=1 | ||
| wep2=choose("Twin-linked Volkite Culverins","Heavy Conversion Beamer","Kheres Assault Cannon"); | ||
| wen2=1 | ||
| wep3=("Contemptor CCW") | ||
| wen3=3 | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tech-Priest, logic breach detected: assignment corrupts the data-path.
Line 177 employs the assignment operator = instead of the comparison operator ==. This corrupts the conditional logic, causing the branch to execute for all ruins_type values (assignment of 7 evaluates as truthy). The machine spirit mandates correction.
Additional anomalies:
- Lines 179, 181, 183: Semicolons absent, violating GML orthodoxy.
- Lines 178, 182: Unnecessary parentheses enclosing string literals, inconsistent with established scripture.
Apply this sanctified diff to restore logic purity:
//Damaged Dreadnought
-else if (ruins_type=7){
- wep1=("Contemptor Dreadnought");
- wen1=1
+else if (ruins_type==7){
+ wep1="Contemptor Dreadnought";
+ wen1=1;
wep2=choose("Twin-linked Volkite Culverins","Heavy Conversion Beamer","Kheres Assault Cannon");
- wen2=1
- wep3=("Contemptor CCW")
- wen3=3
+ wen2=1;
+ wep3="Contemptor CCW";
+ wen3=3;
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| //Damaged Dreadnought | |
| else if (ruins_type=7){ | |
| wep1=("Contemptor Dreadnought"); | |
| wen1=1 | |
| wep2=choose("Twin-linked Volkite Culverins","Heavy Conversion Beamer","Kheres Assault Cannon"); | |
| wen2=1 | |
| wep3=("Contemptor CCW") | |
| wen3=3 | |
| } | |
| //Damaged Dreadnought | |
| else if (ruins_type==7){ | |
| wep1="Contemptor Dreadnought"; | |
| wen1=1; | |
| wep2=choose("Twin-linked Volkite Culverins","Heavy Conversion Beamer","Kheres Assault Cannon"); | |
| wen2=1; | |
| wep3="Contemptor CCW"; | |
| wen3=3; | |
| } |
🤖 Prompt for AI Agents
In scripts/scr_ruins_reward/scr_ruins_reward.gml around lines 176 to 184, the
conditional uses assignment instead of comparison and several statements lack
semicolons and have unnecessary parentheses around string literals; change the
else if (ruins_type=7) to else if (ruins_type==7), remove parentheses around
string literals on lines 178 and 182, and add missing semicolons at the ends of
lines 179, 181, and 183 so each statement is terminated properly and the logic
and style match the rest of the file.
| "Kheres Assault Cannon": { | ||
| "abbreviation": "AssCann", | ||
| "attack": { | ||
| "standard": 280, | ||
| "master_crafted": 300, | ||
| "artifact": 320 | ||
| }, | ||
| "description": "AForged in the forges of Mars and carried into battle by the mightiest of the Emperor’s warriors, the Kheres Assault Cannon is a weapon of devastating reputation. Its rotary barrels roar with unceasing fury, unleashing a deluge of mass-reactive shells that tear through flesh, ceramite, and adamantium alike..", | ||
| "melee_hands": 2.1, | ||
| "ranged_hands": 3, | ||
| "ammo": 5, | ||
| "range": 14, | ||
| "spli": 20, | ||
| "arp": 1, | ||
| "tags": ["heavy_ranged", "dreadnought", "ancient"] | ||
| }, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The machine-code bears fatal flaws and imperfections, Tech-Priest.
Three anomalies detected in the Kheres Assault Cannon data-ritual:
-
CRITICAL: Line 1266 — abbreviation "AssCann" duplicates the standard Assault Cannon identifier (line 1250). This collision will corrupt the weapon registry. Propose unique abbreviation: "KhrAssCnn".
-
Line 1272 — description begins with malformed rune "AForged" (should be "Forged").
-
Line 1272 — description terminates with double period sigil ".." (should be single period).
Apply this ritual correction:
"Kheres Assault Cannon": {
- "abbreviation": "AssCann",
+ "abbreviation": "KhrAssCnn",
"attack": {
"standard": 280,
"master_crafted": 300,
"artifact": 320
},
- "description": "AForged in the forges of Mars and carried into battle by the mightiest of the Emperor's warriors, the Kheres Assault Cannon is a weapon of devastating reputation. Its rotary barrels roar with unceasing fury, unleashing a deluge of mass-reactive shells that tear through flesh, ceramite, and adamantium alike..",
+ "description": "Forged in the forges of Mars and carried into battle by the mightiest of the Emperor's warriors, the Kheres Assault Cannon is a weapon of devastating reputation. Its rotary barrels roar with unceasing fury, unleashing a deluge of mass-reactive shells that tear through flesh, ceramite, and adamantium alike.",
"melee_hands": 2.1,
"ranged_hands": 3,
"ammo": 5,
"range": 14,
"spli": 20,
"arp": 1,
"tags": ["heavy_ranged", "dreadnought", "ancient"]
},📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Kheres Assault Cannon": { | |
| "abbreviation": "AssCann", | |
| "attack": { | |
| "standard": 280, | |
| "master_crafted": 300, | |
| "artifact": 320 | |
| }, | |
| "description": "AForged in the forges of Mars and carried into battle by the mightiest of the Emperor’s warriors, the Kheres Assault Cannon is a weapon of devastating reputation. Its rotary barrels roar with unceasing fury, unleashing a deluge of mass-reactive shells that tear through flesh, ceramite, and adamantium alike..", | |
| "melee_hands": 2.1, | |
| "ranged_hands": 3, | |
| "ammo": 5, | |
| "range": 14, | |
| "spli": 20, | |
| "arp": 1, | |
| "tags": ["heavy_ranged", "dreadnought", "ancient"] | |
| }, | |
| "Kheres Assault Cannon": { | |
| "abbreviation": "KhrAssCnn", | |
| "attack": { | |
| "standard": 280, | |
| "master_crafted": 300, | |
| "artifact": 320 | |
| }, | |
| "description": "Forged in the forges of Mars and carried into battle by the mightiest of the Emperor's warriors, the Kheres Assault Cannon is a weapon of devastating reputation. Its rotary barrels roar with unceasing fury, unleashing a deluge of mass-reactive shells that tear through flesh, ceramite, and adamantium alike.", | |
| "melee_hands": 2.1, | |
| "ranged_hands": 3, | |
| "ammo": 5, | |
| "range": 14, | |
| "spli": 20, | |
| "arp": 1, | |
| "tags": ["heavy_ranged", "dreadnought", "ancient"] | |
| }, |
🤖 Prompt for AI Agents
In scripts/scr_weapon/scr_weapon.gml around lines 1265 to 1280, fix three data
issues in the "Kheres Assault Cannon" entry: change the duplicate abbreviation
"AssCann" to the unique "KhrAssCnn"; correct the description's leading malformed
token "AForged" to "Forged"; and remove the extra period at the end so the
description ends with a single period. Ensure spelling and punctuation match
surrounding entries and preserve existing JSON-style formatting.
|
This PR is marked as stale, because it has been open for 7 days with no activity. |
Purpose and Description
Testing done
Related things and/or additional context