Skip to content

Commit 73d0188

Browse files
committed
Add menu option to assign random special abilities
Implemented a feature allowing users to add random special abilities (SPA) to selected personnel via a new context menu item. Integrated the functionality with the campaign's ability settings and ensured relevant events are triggered upon usage.
1 parent 60328bb commit 73d0188

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

MekHQ/resources/mekhq/resources/GUI.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ removePregnancy.text=Remove Pregnancy
259259
removePregnancies.text=Remove Pregnancies
260260
regenerateLoyalty.text=Regenerate Loyalty
261261
regeneratePersonality.text=Regenerate Personality
262+
addRandomSPA.text=Add Random SPA
262263
addMinimumComplement.text=Add minimum complement
263264
addMinimumComplementRandom.text=Random
264265
addMinimumComplementElite.text=Elite

MekHQ/src/mekhq/gui/adapter/PersonnelTableMouseAdapter.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import mekhq.campaign.personnel.enums.*;
5050
import mekhq.campaign.personnel.enums.education.EducationLevel;
5151
import mekhq.campaign.personnel.enums.education.EducationStage;
52+
import mekhq.campaign.personnel.generator.SingleSpecialAbilityGenerator;
5253
import mekhq.campaign.personnel.randomEvents.PersonalityController;
5354
import mekhq.campaign.personnel.ranks.Rank;
5455
import mekhq.campaign.personnel.ranks.RankSystem;
@@ -143,6 +144,7 @@ public class PersonnelTableMouseAdapter extends JPopupMenuAdapter {
143144
private static final String CMD_REMOVE_PREGNANCY = "PREGNANCY_SPOUSE";
144145
private static final String CMD_LOYALTY = "LOYALTY";
145146
private static final String CMD_PERSONALITY = "PERSONALITY";
147+
private static final String CMD_ADD_RANDOM_ABILITY = "ADD_RANDOM_ABILITY";
146148

147149
private static final String CMD_IMPRISON = "IMPRISON";
148150
private static final String CMD_FREE = "FREE";
@@ -1129,6 +1131,14 @@ public void actionPerformed(ActionEvent action) {
11291131
}
11301132
break;
11311133
}
1134+
case CMD_ADD_RANDOM_ABILITY: {
1135+
SingleSpecialAbilityGenerator singleSpecialAbilityGenerator = new SingleSpecialAbilityGenerator();
1136+
for (Person person : people) {
1137+
singleSpecialAbilityGenerator.rollSPA(gui.getCampaign(), person);
1138+
MekHQ.triggerEvent(new PersonChangedEvent(person));
1139+
}
1140+
break;
1141+
}
11321142

11331143
// region Randomization Menu
11341144
case CMD_RANDOM_NAME: {
@@ -3021,6 +3031,13 @@ protected Optional<JPopupMenu> createPopupMenu() {
30213031
menu.add(menuItem);
30223032
}
30233033

3034+
if (gui.getCampaign().getCampaignOptions().isUseAbilities()) {
3035+
menuItem = new JMenuItem(resources.getString("addRandomSPA.text"));
3036+
menuItem.setActionCommand(CMD_ADD_RANDOM_ABILITY);
3037+
menuItem.addActionListener(this);
3038+
menu.add(menuItem);
3039+
}
3040+
30243041
JMenuHelpers.addMenuIfNonEmpty(popup, menu);
30253042
}
30263043
// endregion GM Menu

0 commit comments

Comments
 (0)