Skip to content

Conversation

@Blogaugis
Copy link
Collaborator

@Blogaugis Blogaugis commented Sep 5, 2025

Purpose and Description

  • Adds items that can be basically classified as: tribal, medieval/early conventional, late conventional eras as precursors to the 40k era;
  • Expand the tech tree (forge facilities, currently planned with chapter traits, while the default options would mean that these facilities will be completed on game start);
  • Adds more viability for renegade playthroughs.
  • Rudimentary capability to imitate playing a 40k table top game, with equipment added from it.
  • Also some potential vehicle components, but likely will be commented out until vehicle code is improved.

Testing done

  • Compilation;
  • Item purchase;
  • Item forging;
  • Item manual equipment;
  • Item usage (low tech medkits and tools in battle with some wounded marines and damaged vehicles, weapon checks if they work in general);
  • Research (forge facility upgrades);
  • Trait selection (Starting technology options);
  • Ending a turn.

Related things and/or additional context

#987 - Links and general task.
The #948 is supposed to make these additions more viable.
Descriptions are also partially inspired by the Cataclysm (Dark Days Ahead or Bright Nights) hitchhikers guide to the galaxy.
And, of course, the other 40k tabletop games.

Initial comment:
Added Tribal era items:
Weapons (4 melee, 2 ranged);
1 armour;
4 gear/mobility items.
TODO: Add proper functionality to the gear (and armour) items, also add the missing research option for psionic items.
TODO2: Continue adding the 2 other eras and their techs.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 5, 2025

Important

Review skipped

Auto incremental reviews are disabled on this repository.

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

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

📝 Walkthrough

Summary by CodeRabbit

  • New Features
    • Expanded technology research system with new paths including animal husbandry, metallurgy, chemistry, combustion, and plastics.
    • Massively expanded shop inventory with tribal and advanced-tier weapons, armour, and equipment.
    • Equipment now locked behind research prerequisites with descriptive unlock tooltips.
    • New disadvantage options affecting available technologies and progression paths.
    • Enhanced specialist equipment bonuses for medical and technical gear during combat.

Walkthrough

Arch-Tech-Priest, this PR manifests a substantial expansion to the Chapter's technological foundations. The archives now contain tribal, conventional, and 40k-era production research pathways, accompanied by three tech regression disadvantages. The item catalogues—weapons, equipment, and shop wares—have been vastly augmented with research-gated unlocks, whilst combat protocols now acknowledge new tool proficiencies. In total: 11 new forge fields, 3 disadvantage tiers, 100+ shop entries, and expanded weapon and gear definitions with prerequisite binding.

Changes

Cohort / File(s) Change Summary
Production Research Framework
objects/obj_controller/Create_0.gml
Added 11 new tech entries (animal, metallurgy, mechanisms, chemistry, combustion, plastics, mechnchem, chain, power_fields, las) with tier progression. Established production_research_pathways with tribal, early/late conventional, 40k, and psi mappings. Introduced conditional regression logic for late conventional, medieval, and stone age disadvantages disabling specific techs.
Disadvantage System
objects/obj_creation/Create_0.gml
Registered three Tech Regression disadvantage tiers: Late Conventional (value 20), Medieval (value 40), and Stone Age (value 60), each tied to Forge rebuild mechanics with escalating scope.
Shop Item Catalogue
objects/obj_shop/Create_0.gml
Expanded equipment, armour, and production sections with 100+ tribal, conventional, and 40k-era items. Introduced research-gated tooltips and forge_cost adjustments dependent on metallurgy, chemistry, combustion, plastics, and mechnchem prerequisites. Inverted psi research condition logic.
Combat Aftermath Protocols
scripts/scr_after_combat/scr_after_combat.gml
Augmented Apothecaries path to recognize Medical Herb Pack (1.1× multiplier) and Sororitas Medkit (1.5× multiplier). Enhanced Techmarine path to account for Primitive Tools (1.1× multiplier) and Combi-Tool (1.3× multiplier) in vehicle recovery calculations.
Weapon & Gear Archive
scripts/scr_weapon/scr_weapon.gml
Vastly expanded global.weapons with 30+ new entries (Wooden Spear, Ritual Stone Knife, Crossbow, early metallurgic and advanced 40k arms) and global.gear with 40+ entries (tribal wear, chainmail, power armour variants, vehicle equipment, mobility items) introducing new fields (damage_resistance_mod, hp_mod, second_profiles, special_properties).

Estimated Code Review Effort

🎯 4 (Complex) | ⏱️ ~50 minutes

The expansion spans heterogeneous systems (tech trees, shop unlock logic, combat mechanics, data structures) with significant conditional branching and extensive new data entries requiring verification against intended progression design, research prerequisite logic, and balance implications.

Possibly Related Issues

  • TODO: Tech Tree Expansion #987: Implements the planned tech-tree expansion by introducing new production_research entries, shop item unlocks, and weapon/gear data additions—directly fulfilling the stated objective to expand the technological progression system.

Possibly Related PRs

Suggested Labels

PR: Feature

Suggested Reviewers

  • OH296

The Machine Spirit commends thy efforts, Tech-Priest. These expansions to the knowledge-archive are noted. May thy implementations honour the Omnissiah's design principles.

Pre-merge checks

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The inscribed designation "feat: Tech Tree Expansion" adheres to the conventional commits protocol, employing the correct feat type designation and maintaining conciseness at 25 characters, well within the prescribed 50-character threshold. The title accurately encapsulates the principal alterations herein—the substantial expansion of production research pathways, new technological tiers across tribal and 40k eras, and accompanying systems modifications. The designation proves directly correlative to the changeset's core purpose and requires no clarification.
Description Check ✅ Passed The provided description manifests all requisite sections prescribed by the repository template: Purpose and Description articulates the expansion clearly with markdown enumeration; Testing done presents a comprehensive checklist of validation protocols performed across compilation, procurement, forging, deployment, and research facets; and Related things and additional context provides sufficient contextual references to ancillary directives and inspirational sources. The description demonstrates thoroughness and adheres to template structure, enabling adequate comprehension of the changesets' scope and validation measures undertaken.
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.

@github-actions github-actions bot added Size: Medium Type: Feature Adds something new labels Sep 5, 2025
Added Tribal era items:
Weapons (4 melee, 2 ranged);
1 armour;
4 gear/mobility items.
TODO: Add proper functionality to the gear (and armour) items, also add the missing research option for psionic items.
TODO2: Continue adding the 2 other eras and their techs.
@Blogaugis Blogaugis force-pushed the feat-TechTreeExpansion branch from d59240c to 4e254b4 Compare September 7, 2025 10:43
Medical Herbs and Primitive Tools should now function,
Psionic Tech research is added.
Tribalwear should be tested, I assume it may have issues recognizing as a valid armour, but this knowledge is based on my old findings and testing.

Optional TODO: ask artisans for sprites.
Comment on lines 1701 to 1709
// Tribal research
if (research.psi[0] < 1){
i++;
item[i] = ["research", "Rune Analysis", ["psi"]];
item_stocked[i] = 0;
forge_cost[i] = 1000;
tooltip_overide[i] = "Even though our ancestors, or even we, claimed that 'there are no gods in the ground and in the sky. This is the Imperial Truth' long ago, there is no use denying that psionics exist. To make use of it, or guard against, we need to study how can we interact with it in the material world. Preliminary research suggests that certain signs - 'marks' - may hold clues to it. \nRequired for: Ritual Stone Knife, Psychic Accessories.";
}
//Research of 40k
Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@Frost-bit-jpg , @KRdaMystic , @OH296 and @EttyKitty if you are able
I need your thoughts on this - perhaps the psi category should be librarian research? So that librarians have their own tree with it. This also makes psyker intolerant trait have much more gameplay impact (until we introduce psyker hirelings, maybe). After all, they are the main users of this research.

Another thing, I'm not sure if it is written in a 'good enough' state, or there can be better ways to write this.

P.S. @CassieCaster I hereby invite you too to review the thing that you claimed will never be a thing.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

If anyone has better ideas of how to write it better than walls of if, you are welcome to suggest it.

Added Tribal era items:
Weapons (4 melee, 2 ranged);
1 armour;
4 gear/mobility items.
TODO: Add proper functionality to the gear (and armour) items, also add the missing research option for psionic items.
TODO2: Continue adding the 2 other eras and their techs.
Medical Herbs and Primitive Tools should now function,
Psionic Tech research is added.
Tribalwear should be tested, I assume it may have issues recognizing as a valid armour, but this knowledge is based on my old findings and testing.

Optional TODO: ask artisans for sprites.
@Blogaugis Blogaugis force-pushed the feat-TechTreeExpansion branch from ba24c6e to b0a6632 Compare September 10, 2025 08:54
@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 Sep 17, 2025
@Blogaugis
Copy link
Collaborator Author

TODO: reroute the pull request to CMBeta.

@github-actions github-actions bot removed the Status: Stale No activity for more than a week label Oct 4, 2025
@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 11, 2025
@github-actions github-actions bot removed the Status: Stale No activity for more than a week label Oct 16, 2025
- Added more forge research options (requires improvements);
- Fixed a few potential issues with after_combat functionality;
- Added items with stats to use the new research options.
- Added animal mount, non-implemented options are commented out;
- Added some prerequisites for some technologies;
- Added 3 Tech regression disadvantage options.
- Fixes some of compile errors;

Still need to fix the `obj_controller\Create_0.gml` issues.
- It compiles at least.

Have to investigate crashes with `Tech Regression: Stone Age` and likely others.
- It should no longer crash on entry into armamentarium.
- The `i += 1` does not affect the amount of items bought, but rather the position in the shop screen.
Will have to look into ways to purchasing several items with 1 click.
@Blogaugis Blogaugis marked this pull request as ready for review October 19, 2025 10:08
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: 6

Caution

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

⚠️ Outside diff range comments (3)
objects/obj_controller/Create_0.gml (1)

605-611: Correct “Ceremite” to “Ceramite”.

The Omnissiah frowns upon inconsistent materia spells.

-                armour : [["Advanced Ceramite Bonding", "Lightened Ceramite Compound","Ceremite Void Hardening"],{}],
+                armour : [["Advanced Ceramite Bonding", "Lightened Ceramite Compound","Ceramite Void Hardening"],{}],
objects/obj_shop/Create_0.gml (1)

1192-1199: Fix master-crafted stock counting index.

Current loop writes to mc_stocked[i] each iteration, discarding counts. Use mc as the index.

-    mc=0;
-    repeat(i) {
-        mc += 1;
-        if (item[mc] != ""){
-            mc_stocked[i] = scr_item_count(item[mc], "master_crafted");
-        }
-    }    
+    mc = 0;
+    repeat (i) {
+        mc += 1;
+        if (item[mc] != "") {
+            mc_stocked[mc] = scr_item_count(item[mc], "master_crafted");
+        }
+    }
scripts/scr_weapon/scr_weapon.gml (1)

842-857: Duplicate abbreviations verified—implement corrective designations with urgency.

The machine spirits have divined thy error, Tech-Priest. The verification scans confirm five reused sacred codenames:

  • Autocnn (2 instances)
  • LghtClw (2 instances)
  • TwnAssCnn (2 instances)
  • TwnHvyBltr (2 instances)
  • TwnLascnn (2 instances) ← Omitted from thy original assessment

These collisions shall corrupt thy lookup matrices and shatter thy UI glyphs. The proposed renames in the original counsel remain sound. Heed also the Twin Linked Lascannon duplicates, which share identical abbreviations but differ in form (Mount vs. Turret).

Execute the corrective diffs across all cited line ranges: 842–857, 858–879, 1411–1426, 1491–1506, 1586–1601, 1618–1633, 1811–1828, 1845–1860, 2100–2115.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5b9185b and 09f4b83.

📒 Files selected for processing (5)
  • objects/obj_controller/Create_0.gml (2 hunks)
  • objects/obj_creation/Create_0.gml (1 hunks)
  • objects/obj_shop/Create_0.gml (9 hunks)
  • scripts/scr_after_combat/scr_after_combat.gml (2 hunks)
  • scripts/scr_weapon/scr_weapon.gml (8 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.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:

  • objects/obj_creation/Create_0.gml
  • scripts/scr_after_combat/scr_after_combat.gml
  • objects/obj_controller/Create_0.gml
  • objects/obj_shop/Create_0.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:

  • objects/obj_creation/Create_0.gml
  • scripts/scr_after_combat/scr_after_combat.gml
  • objects/obj_controller/Create_0.gml
  • objects/obj_shop/Create_0.gml
  • scripts/scr_weapon/scr_weapon.gml
🧠 Learnings (1)
📚 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_weapon/scr_weapon.gml
🔇 Additional comments (3)
scripts/scr_after_combat/scr_after_combat.gml (2)

448-456: Apothecary gear bonuses integrate cleanly.

The multipliers and counter updates harmonise with Narthecium handling. No fault detected. Validate balance in late-game casualty recovery.


468-474: Techmarine tool scaling looks sound.

Incremental boosts for “Primitive Tools” and “Combi-Tool” fit the progression before Servo-arm/harness. No defects observed.

objects/obj_controller/Create_0.gml (1)

521-548: Psi baseline elevated to 1 — confirm downstream gates.

Setting production_research.psi to [1, {}] changes initial gating. Ensure all psi checks (shop unlocks, training, script hooks) expect 1 as baseline and 2 as “force weaponry” unlock.

Blogaugis and others added 4 commits October 19, 2025 13:23
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Fix, suggested by coderabbit.
Fix suggested by coderabbit
@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 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Size: Big Status: Stale No activity for more than a week Type: Feature Adds something new

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant