Skip to content

Feature: Advanced Character Builder Phase One - Life Path Builder#7625

Draft
IllianiBird wants to merge 165 commits into
MegaMek:mainfrom
IllianiBird:acbLifePathBuilder
Draft

Feature: Advanced Character Builder Phase One - Life Path Builder#7625
IllianiBird wants to merge 165 commits into
MegaMek:mainfrom
IllianiBird:acbLifePathBuilder

Conversation

@IllianiBird
Copy link
Copy Markdown
Collaborator

This PR introduces the first phase of the upcoming Advanced Character Builder (ACB). Specifically, this PR introduces the ability for users and developers to write, load, and customize their own Life Paths.

These Life Paths will be used by ACB to construct ATOW-style characters with rich backgrounds and diverse skills.

The Life Path Builder can be accessed here:

image

This PR is still WIP and is being posted solely so @HammerGS can have a play - he's been waiting very patiently.

# Conflicts:
#	MekHQ/resources/mekhq/resources/GUI.properties
#	MekHQ/resources/mekhq/resources/ImmersiveDialogConfirmation.properties
#	MekHQ/src/mekhq/MHQConstants.java
#	MekHQ/src/mekhq/gui/dialog/MHQOptionsDialog.java
# Conflicts:
#	MekHQ/build.gradle
#	MekHQ/src/mekhq/campaign/Campaign.java
#	MekHQ/src/mekhq/campaign/CampaignFactory.java
#	MekHQ/src/mekhq/campaign/personnel/advancedCharacterBuilder/LifePathEntryData.java
#	MekHQ/src/mekhq/campaign/personnel/skills/enums/SkillSubType.java
@IllianiBird
Copy link
Copy Markdown
Collaborator Author

Updated to match Main

@IllianiBird
Copy link
Copy Markdown
Collaborator Author

Whoops, accidentally closed the PR D:

@IllianiBird IllianiBird reopened this May 17, 2026
Comment on lines +218 to +219
LOGGER.error(ex, "Invalid default value for attribute {}: {} vs {}-{}", label, defaultValue, minValue,
maxValue);

Check warning

Code scanning / CodeQL

Unused format argument Warning

This format call refers to 0 argument(s) but supplies 4 argument(s).

if (selectedCategoryCounts.containsKey(category)) {
int currentValue = selectedCategoryCounts.get(category);
currentValue = clamp(currentValue, minimumSkillLevel, maximumSkillLevel);

Check notice

Code scanning / CodeQL

Deprecated method or constructor invocation Note

Invoking
MathUtility.clamp
should be avoided because it has been deprecated.
// Normal Skills
for (String skillName : new ArrayList<>(allSkills)) {
SkillType type = SkillType.getType(skillName);
if (type.isCombatSkill()) {

Check notice

Code scanning / CodeQL

Deprecated method or constructor invocation Note

Invoking
SkillType.isCombatSkill
should be avoided because it has been deprecated.
# Conflicts:
#	MekHQ/resources/mekhq/resources/GUI.properties
#	MekHQ/resources/mekhq/resources/ImmersiveDialogConfirmation.properties
#	MekHQ/src/mekhq/MHQConstants.java
#	MekHQ/src/mekhq/campaign/Campaign.java
#	MekHQ/src/mekhq/gui/dialog/MHQOptionsDialog.java
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New Feature Used with the RFE tag to indicate a new feature Personnel Personnel-related Issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants