Skip to content

Conversation

@Werwolf-12
Copy link
Contributor

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: Medium labels Oct 3, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 3, 2025

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added Kheres Assault Cannon and Heavy Conversion Beamer, with sprites and shop availability.
    • Introduced a Damaged Dreadnought ruins reward that can grant Contemptor gear.
  • Improvements

    • Enhanced visuals for new Dreadnought weapons.
    • Updated description for Twin‑linked Volkite Culverins.
  • Bug Fixes

    • Corrected Volkite Culverins to use the proper sprite for accurate display.
  • Chores

    • Aligned asset naming for Volkite Culverins; updated internal editor version.

Walkthrough

Tech-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

Cohort / File(s) Change summary
Project resources and sprites
ChapterMaster.yyp, sprites/spr_Contemptor_Conversion_Beamer/spr_Contemptor_Conversion_Beamer.yy, sprites/spr_Contemptor_assault_cannon/spr_Contemptor_assault_cannon.yy, sprites/spr_Volkite_Culverins/spr_Volkite_Culverins.yy
Updated IDEVersion. Added new sprites for Contemptor Heavy Conversion Beamer and Kheres Assault Cannon. Renamed Volkite Culverins sprite from twin-linked variant to spr_Volkite_Culverins and updated references/paths. Adjusted resources and Sprites lists accordingly.
Weapon visuals and UI mappings
scripts/scr_culture_visuals/scr_culture_visuals.gml, scripts/scr_ui_display_weapons/scr_ui_display_weapons.gml
Repointed Volkite sprite reference to spr_Volkite_Culverins. Added entries for Heavy Conversion Beamer and Kheres Assault Cannon with display_type “dreadnought” and corresponding Contemptor sprites.
Weapon data registry
scripts/scr_weapon/scr_weapon.gml
Modified description for Twin-linked Volkite Culverins. Added new weapon definitions: Kheres Assault Cannon and Heavy Conversion Beamer with full stats and tags in global.weapons.
Shop initialisation
objects/obj_shop/Create_0.gml
Inserted Heavy Conversion Beamer and Kheres Assault Cannon into equipment listing with stock and zero costs.
Ruins rewards
scripts/scr_ruins_reward/scr_ruins_reward.gml
Added branch for ruins_type 7 (Damaged Dreadnought) to assign specific Contemptor gear rewards before item addition calls.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

PR: Feature

Suggested reviewers

  • OH296
  • Blogaugis

Pre-merge checks

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title Check ⚠️ Warning Tech-Priest, the pull request title does not conform to the repository’s conventional commit format as it omits the required commit type prefix and scope notation, offering only a generic summary without the “():” structure. Tech-Priest, please revise the title to follow “(): ”, for example “feat(dreadnought): implement contemptor dread support”, ensuring inclusion of the appropriate commit type and colon separator.
Description Check ⚠️ Warning Tech-Priest, the pull request description remains largely unchanged from the boilerplate template and fails to provide any concrete Purpose and Description of changes, actual testing steps, or meaningful additional context, rendering it incomplete. Tech-Priest, kindly populate the Purpose and Description section with a concise explanation of what the changes implement, detail any verification or testing performed and outcomes, and supply relevant related context or references to ensure clarity for reviewers.
✅ Passed checks (1 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e4f54d7 and 03906e2.

⛔ Files ignored due to path filters (6)
  • sprites/spr_Contemptor_Conversion_Beamer/cdc4c2e7-a824-4a45-8406-fe470c6eae31.png is excluded by !**/*.png
  • sprites/spr_Contemptor_Conversion_Beamer/layers/cdc4c2e7-a824-4a45-8406-fe470c6eae31/af2cc7f4-f5e3-470f-aa0e-ad3ebfbba808.png is excluded by !**/*.png
  • sprites/spr_Contemptor_assault_cannon/1b47a347-6927-4943-981c-dfba95287448.png is excluded by !**/*.png
  • sprites/spr_Contemptor_assault_cannon/layers/1b47a347-6927-4943-981c-dfba95287448/719740c0-402f-4dc6-af3e-0d8475287311.png is excluded by !**/*.png
  • sprites/spr_Volkite_Culverins/d532989d-6b36-48dc-9ccb-1daf433cbb1f.png is excluded by !**/*.png
  • sprites/spr_Volkite_Culverins/layers/d532989d-6b36-48dc-9ccb-1daf433cbb1f/1f3e5664-e536-47f4-b0bf-214e1fd9c23a.png is 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.

Files:

  • scripts/scr_ui_display_weapons/scr_ui_display_weapons.gml
  • scripts/scr_ruins_reward/scr_ruins_reward.gml
  • objects/obj_shop/Create_0.gml
  • scripts/scr_culture_visuals/scr_culture_visuals.gml
  • scripts/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.gml
  • scripts/scr_ruins_reward/scr_ruins_reward.gml
  • sprites/spr_Volkite_Culverins/spr_Volkite_Culverins.yy
  • sprites/spr_Contemptor_Conversion_Beamer/spr_Contemptor_Conversion_Beamer.yy
  • objects/obj_shop/Create_0.gml
  • scripts/scr_culture_visuals/scr_culture_visuals.gml
  • sprites/spr_Contemptor_assault_cannon/spr_Contemptor_assault_cannon.yy
  • ChapterMaster.yyp
  • scripts/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.yy
  • sprites/spr_Contemptor_Conversion_Beamer/spr_Contemptor_Conversion_Beamer.yy
  • sprites/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_Culverins to spr_Volkite_Culverins aligns 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_cannon manifests 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.

Comment on lines +678 to +688
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;
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

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.

Comment on lines +176 to +184
//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
}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

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.

Suggested change
//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.

Comment on lines +1265 to +1280
"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"]
},
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

The machine-code bears fatal flaws and imperfections, Tech-Priest.

Three anomalies detected in the Kheres Assault Cannon data-ritual:

  1. CRITICAL: Line 1266 — abbreviation "AssCann" duplicates the standard Assault Cannon identifier (line 1250). This collision will corrupt the weapon registry. Propose unique abbreviation: "KhrAssCnn".

  2. Line 1272 — description begins with malformed rune "AForged" (should be "Forged").

  3. 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.

Suggested change
"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 Emperors 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.

@github-actions
Copy link
Contributor

This PR is marked as stale, because it has been open for 7 days with no activity.

@github-actions github-actions bot added the Status: Stale No activity for more than a week label Oct 10, 2025
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: Medium Status: Stale No activity for more than a week

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant