Skip to content

Commit 0774b76

Browse files
authored
Merge pull request #7325 from IllianiBird/refundSkills
Improvement: #7248 Added The GM Ability to Refund Skills
2 parents 61e8c43 + 9626c65 commit 0774b76

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

MekHQ/resources/mekhq/resources/GUI.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ removeOriginalUnit.text=Wipe Original Unit Record
302302
changePrisonerStatus.text=Change Prisoner Status
303303
removePerson.text=Remove Person
304304
editHits.text=Edit Hits
305-
add1XP.text=Add 1 XP
305+
refundSkill.text=Refund Skill
306306
addXP.text=Add XP
307307
setXP.text=Set XP
308308
setEdge.text=Set Edge

MekHQ/src/mekhq/campaign/personnel/skills/SkillDeprecationTool.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ private void checkForDeprecatedSkills(Person person) {
147147
*
148148
* @return the total XP refund value for the deprecated skill
149149
*/
150-
public int getRefundValue(Skills skills, SkillType skillType, String skillName) {
150+
public static int getRefundValue(Skills skills, SkillType skillType, String skillName) {
151151
Skill skill = skills.getSkill(skillName);
152152
int level = skill.getLevel();
153153

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,9 @@
142142
import mekhq.campaign.personnel.skills.Aging;
143143
import mekhq.campaign.personnel.skills.RandomSkillPreferences;
144144
import mekhq.campaign.personnel.skills.Skill;
145+
import mekhq.campaign.personnel.skills.SkillDeprecationTool;
145146
import mekhq.campaign.personnel.skills.SkillType;
147+
import mekhq.campaign.personnel.skills.Skills;
146148
import mekhq.campaign.personnel.skills.enums.SkillAttribute;
147149
import mekhq.campaign.personnel.skills.enums.SkillSubType;
148150
import mekhq.campaign.randomEvents.personalities.PersonalityController;
@@ -230,6 +232,7 @@ public class PersonnelTableMouseAdapter extends JPopupMenuAdapter {
230232
private static final String CMD_ACQUIRE_HUMANTRO = "HUMANTRO";
231233
private static final String CMD_ACQUIRE_ABILITY = "ABILITY";
232234
private static final String CMD_ACQUIRE_CUSTOM_CHOICE = "CUSTOM_CHOICE";
235+
private static final String CMD_REFUND_SKILL = "REFUND_SKILL";
233236
private static final String CMD_IMPROVE = "IMPROVE";
234237
private static final String CMD_BUY_TRAIT = "BUY_TRAIT";
235238
private static final String CMD_CHANGE_ATTRIBUTE = "CHANGE_ATTRIBUTE";
@@ -658,6 +661,18 @@ public void actionPerformed(ActionEvent action) {
658661
getCampaign().personUpdated(selectedPerson);
659662
break;
660663
}
664+
case CMD_REFUND_SKILL: {
665+
String typeLabel = data[1];
666+
SkillType skillType = SkillType.getType(typeLabel);
667+
Skills skills = selectedPerson.getSkills();
668+
int refundValue = SkillDeprecationTool.getRefundValue(skills, skillType, skillType.getName());
669+
670+
selectedPerson.removeSkill(skillType.getName());
671+
selectedPerson.awardXP(getCampaign(), refundValue);
672+
673+
getCampaign().personUpdated(selectedPerson);
674+
break;
675+
}
661676
case CMD_BUY_TRAIT: {
662677
String type = data[1];
663678
int cost = MathUtility.parseInt(data[2]);
@@ -4142,6 +4157,18 @@ protected Optional<JPopupMenu> createPopupMenu() {
41424157
menuItem.addActionListener(this);
41434158
menu.add(menuItem);
41444159

4160+
if (oneSelected) {
4161+
JMenu subMenu = new JMenu(resources.getString("refundSkill.text"));
4162+
for (Skill skill : person.getSkills().getSkills()) {
4163+
String label = skill.getType().getName();
4164+
JMenuItem menuSkill = new JMenuItem(label);
4165+
menuSkill.setActionCommand(makeCommand(CMD_REFUND_SKILL, label));
4166+
menuSkill.addActionListener(this);
4167+
subMenu.add(menuSkill);
4168+
}
4169+
menu.add(subMenu);
4170+
}
4171+
41454172
if (!getCampaignOptions().isUseAdvancedMedical()) {
41464173
menuItem = new JMenuItem(resources.getString("editHits.text"));
41474174
menuItem.setActionCommand(CMD_EDIT_HITS);

0 commit comments

Comments
 (0)