From d7aba7dc7a8e8cc8b5c10b649aa9dfd1e7cb3bde Mon Sep 17 00:00:00 2001 From: Treeku Date: Thu, 3 Apr 2014 13:37:11 +0100 Subject: [PATCH] resetLvl only remvs class/expertise skills (safer) It's better to only remove class/expertise skills, rather than remove all but certain skills. The previous method would remove all chronicles, politician and basic language and harvesting skills! --- src/services/PlayerService.java | 34 ++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/services/PlayerService.java b/src/services/PlayerService.java index f4ffbb60..7ccc070e 100644 --- a/src/services/PlayerService.java +++ b/src/services/PlayerService.java @@ -592,22 +592,30 @@ public class PlayerService implements INetworkDispatch { core.buffService.clearBuffs(creature); - for (String skill : creature.getSkills()) { - if (skill.startsWith("species_")) { - continue; - } + try { + String[] skills; - switch (skill) { - case "language_basic_comprehend": - case "language_basic_speak": - case "creature_harvesting": - case "language_wookiee_comprehend": - continue; - default: - core.skillService.removeSkill(creature, skill); + skillTemplate = ClientFileManager.loadFile("datatables/skill_template/skill_template.iff", DatatableVisitor.class); + + for (int s = 0; s < skillTemplate.getRowCount(); s++) { + if (skillTemplate.getObject(s, 0) != null) { + if (((String) skillTemplate.getObject(s, 0)).equals(player.getProfession())) { + skills = ((String) skillTemplate.getObject(s, 4)).split(","); + + for (String skill : skills) { + creature.removeSkill(skill); + } + + break; + } + } } + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); } - + + core.skillService.resetExpertise(creature); + String xpType = ((player.getProfession().contains("entertainer")) ? "entertainer" : ((player.getProfession().contains("trader")) ? "crafting" : "combat_general")); player.setXp(xpType, 0);