|
142 | 142 | import mekhq.campaign.personnel.skills.Aging; |
143 | 143 | import mekhq.campaign.personnel.skills.RandomSkillPreferences; |
144 | 144 | import mekhq.campaign.personnel.skills.Skill; |
| 145 | +import mekhq.campaign.personnel.skills.SkillDeprecationTool; |
145 | 146 | import mekhq.campaign.personnel.skills.SkillType; |
| 147 | +import mekhq.campaign.personnel.skills.Skills; |
146 | 148 | import mekhq.campaign.personnel.skills.enums.SkillAttribute; |
147 | 149 | import mekhq.campaign.personnel.skills.enums.SkillSubType; |
148 | 150 | import mekhq.campaign.randomEvents.personalities.PersonalityController; |
@@ -230,6 +232,7 @@ public class PersonnelTableMouseAdapter extends JPopupMenuAdapter { |
230 | 232 | private static final String CMD_ACQUIRE_HUMANTRO = "HUMANTRO"; |
231 | 233 | private static final String CMD_ACQUIRE_ABILITY = "ABILITY"; |
232 | 234 | private static final String CMD_ACQUIRE_CUSTOM_CHOICE = "CUSTOM_CHOICE"; |
| 235 | + private static final String CMD_REFUND_SKILL = "REFUND_SKILL"; |
233 | 236 | private static final String CMD_IMPROVE = "IMPROVE"; |
234 | 237 | private static final String CMD_BUY_TRAIT = "BUY_TRAIT"; |
235 | 238 | private static final String CMD_CHANGE_ATTRIBUTE = "CHANGE_ATTRIBUTE"; |
@@ -658,6 +661,18 @@ public void actionPerformed(ActionEvent action) { |
658 | 661 | getCampaign().personUpdated(selectedPerson); |
659 | 662 | break; |
660 | 663 | } |
| 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 | + } |
661 | 676 | case CMD_BUY_TRAIT: { |
662 | 677 | String type = data[1]; |
663 | 678 | int cost = MathUtility.parseInt(data[2]); |
@@ -4142,6 +4157,18 @@ protected Optional<JPopupMenu> createPopupMenu() { |
4142 | 4157 | menuItem.addActionListener(this); |
4143 | 4158 | menu.add(menuItem); |
4144 | 4159 |
|
| 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 | + |
4145 | 4172 | if (!getCampaignOptions().isUseAdvancedMedical()) { |
4146 | 4173 | menuItem = new JMenuItem(resources.getString("editHits.text")); |
4147 | 4174 | menuItem.setActionCommand(CMD_EDIT_HITS); |
|
0 commit comments