Skip to content

Commit 951fb18

Browse files
authored
Merge pull request #6573 from IllianiBird/edgeDisplay
Refactored Edge Handling to Use Adjusted Edge Values
2 parents 9856187 + 817a942 commit 951fb18

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

MekHQ/src/mekhq/campaign/personnel/Person.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -4216,7 +4216,28 @@ public String getOptionList(@Nullable String sep, final String groupKey) {
42164216
// endregion Personnel Options
42174217

42184218
// region edge
4219+
4220+
/**
4221+
* Retrieves the edge value for the current person.
4222+
*
4223+
* <p><b>Usage:</b> This method gets the character's raw Edge score. Generally you likely want to use
4224+
* {@link #getAdjustedEdge()} instead, as that includes adjustments for the character's {@code unlucky} trait.</p>
4225+
*
4226+
* @return The edge value defined in the person's options.
4227+
*/
42194228
public int getEdge() {
4229+
return getOptions().intOption(OptionsConstants.EDGE);
4230+
}
4231+
4232+
/**
4233+
* Retrieves the adjusted edge value for the current person.
4234+
*
4235+
* <p>The adjusted Edge value is calculated by subtracting the person's level of bad luck (unlucky)
4236+
* from their base Edge value.</p>
4237+
*
4238+
* @return The adjusted edge value after accounting for the person's level of bad luck.
4239+
*/
4240+
public int getAdjustedEdge() {
42204241
return getOptions().intOption(OptionsConstants.EDGE) - unlucky;
42214242
}
42224243

@@ -4237,7 +4258,7 @@ public void changeEdge(final int amount) {
42374258
* Resets support personnel edge points to the purchased level. Used for weekly refresh.
42384259
*/
42394260
public void resetCurrentEdge() {
4240-
setCurrentEdge(getEdge());
4261+
setCurrentEdge(getAdjustedEdge());
42414262
}
42424263

42434264
/**

MekHQ/src/mekhq/campaign/unit/Unit.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -4834,12 +4834,12 @@ public void resetPilotAndEntity() {
48344834
if (getCampaign().getCampaignOptions().isUseEdge()) {
48354835
double sumEdge = 0;
48364836
for (Person p : drivers) {
4837-
sumEdge += p.getEdge();
4837+
sumEdge += p.getCurrentEdge();
48384838
}
48394839
// Again, don't count infantrymen twice
48404840
if (!entity.hasETypeFlag(Entity.ETYPE_INFANTRY)) {
48414841
for (Person p : gunners) {
4842-
sumEdge += p.getEdge();
4842+
sumEdge += p.getCurrentEdge();
48434843
}
48444844
}
48454845
// Average the edge values of pilots and gunners. The Spacecraft Engineer
@@ -5233,7 +5233,7 @@ public void resetEngineer() {
52335233
}
52345234
sumEdgeUsed = engineer.getEdgeUsed();
52355235
}
5236-
sumEdge += p.getEdge();
5236+
sumEdge += p.getAdjustedEdge();
52375237

52385238
if (p.hasSkill(SkillType.S_TECH_VESSEL)) {
52395239
sumSkill += p.getSkill(SkillType.S_TECH_VESSEL).getLevel();
@@ -5267,7 +5267,7 @@ public void resetEngineer() {
52675267
}
52685268
engineer.addSkill(SkillType.S_TECH_VESSEL, sumSkill / nCrew, sumBonus / nCrew);
52695269
engineer.setEdgeUsed(sumEdgeUsed);
5270-
engineer.setCurrentEdge((sumEdge - sumEdgeUsed) / nCrew);
5270+
engineer.setCurrentEdge(max(0, (sumEdge - sumEdgeUsed) / nCrew));
52715271
engineer.setUnit(this);
52725272
} else {
52735273
engineer = null;

MekHQ/src/mekhq/gui/view/PersonViewPanel.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,8 @@ private JPanel fillSkills() {
16001600
}
16011601
}
16021602

1603-
if (campaign.getCampaignOptions().isUseEdge() && (person.getEdge() > 0)) {
1603+
int edge = person.getAdjustedEdge();
1604+
if (campaign.getCampaignOptions().isUseEdge() && (edge != 0)) {
16041605
lblEdge1.setName("lblEdge1");
16051606
lblEdge1.setText(resourceMap.getString("lblEdge1.text"));
16061607
gridBagConstraints = new GridBagConstraints();
@@ -1612,7 +1613,7 @@ private JPanel fillSkills() {
16121613

16131614
lblEdge2.setName("lblEdge2");
16141615
lblEdge1.setLabelFor(lblEdge2);
1615-
lblEdge2.setText(Integer.toString(person.getEdge()));
1616+
lblEdge2.setText(Integer.toString(edge));
16161617
lblEdge2.setToolTipText(person.getEdgeTooltip());
16171618
gridBagConstraints = new GridBagConstraints();
16181619
gridBagConstraints.gridx = 1;

0 commit comments

Comments
 (0)