nokiafan1111
Ефрейтор
Всем привет.
Столкнулся с проблемой при заточке стигм. Распишу по пуктам, объяснить сложновато)
1) Забиваете все слоты стигмами, оригинальными.
2) Берете любую стигму, любого класса и точите до +1
3) Тпшаетесь в другую локацию или в релог
4) Вуаля, у вас есть скил другово класса или же скилы стигм которые вы не одели.
Может кто помочь с этой фичей? капнул сервис заточки. Что тут можно добавить или поменять, чтобы "заблокировать" присвоение скилов.
Столкнулся с проблемой при заточке стигм. Распишу по пуктам, объяснить сложновато)
1) Забиваете все слоты стигмами, оригинальными.
2) Берете любую стигму, любого класса и точите до +1
3) Тпшаетесь в другую локацию или в релог
4) Вуаля, у вас есть скил другово класса или же скилы стигм которые вы не одели.
Может кто помочь с этой фичей? капнул сервис заточки. Что тут можно добавить или поменять, чтобы "заблокировать" присвоение скилов.
public static void enchantStigmaAct(Player player, Item parentItem, Item targetItem, int currentEnchant, boolean result) {
if (result) {
currentEnchant++;
} else {
currentEnchant = 0;
}
if (!player.getInventory().decreaseByObjectId(parentItem.getObjectId(), 1)) {
AuditLogger.info(player, "Possible enchant hack, can't remove 2nd stigma.");
return;
}
targetItem.setEnchantLevel(currentEnchant);
if (targetItem.isEquipped()) {
player.getGameStats().updateStatsVisually();
}
ItemPacketService.updateItemAfterInfoChange(player, targetItem);
if (targetItem.isEquipped()) {
player.getEquipment().setPersistentState(PersistentState.UPDATE_REQUIRED);
} else {
player.getInventory().setPersistentState(PersistentState.UPDATE_REQUIRED);
}
if (result) {
Stigma stigmaInfo = targetItem.getItemTemplate().getStigma();
for (Stigma.StigmaSkill sSkill : stigmaInfo.getSkills()) {
String sSkillStack = DataManager.SKILL_DATA.getSkillTemplate(sSkill.getSkillId()).getStack();
for (PlayerSkillEntry psSkill : player.getSkillList().getStigmaSkills()) {
if (psSkill.getSkillTemplate().getStack().equals(sSkillStack)) {
SkillLearnService.removeSkill(player, psSkill.getSkillId());
player.getEffectController().removeEffect(psSkill.getSkillId());
}
}
}
player.getSkillList().deleteHiddenStigmaSilent(player);
//TODO block enchant to the max skill lvl
Integer realSkillId = DataManager.SKILL_TREE_DATA.getStigmaTree().get(player.getRace()).get(DataManager.SKILL_DATA.getSkillTemplate(stigmaInfo.getSkills().get(0).getSkillId()).getStack()).get(targetItem.getEnchantLevel() + 1);
if (realSkillId != null) {
player.getSkillList().addStigmaSkill(player, realSkillId, 1);
} else {
log.error("No have Stigma skill for enchanted stigma item.");
}
StigmaService.recheckHiddenStigma(player);
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_STIGMA_ENCHANT_SUCCESS(new DescriptionId(targetItem.getNameId())));
} else {
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_STIGMA_ENCHANT_FAIL(new DescriptionId(targetItem.getNameId())));
player.getInventory().decreaseByObjectId(targetItem.getObjectId(), 1);
}
}
if (result) {
currentEnchant++;
} else {
currentEnchant = 0;
}
if (!player.getInventory().decreaseByObjectId(parentItem.getObjectId(), 1)) {
AuditLogger.info(player, "Possible enchant hack, can't remove 2nd stigma.");
return;
}
targetItem.setEnchantLevel(currentEnchant);
if (targetItem.isEquipped()) {
player.getGameStats().updateStatsVisually();
}
ItemPacketService.updateItemAfterInfoChange(player, targetItem);
if (targetItem.isEquipped()) {
player.getEquipment().setPersistentState(PersistentState.UPDATE_REQUIRED);
} else {
player.getInventory().setPersistentState(PersistentState.UPDATE_REQUIRED);
}
if (result) {
Stigma stigmaInfo = targetItem.getItemTemplate().getStigma();
for (Stigma.StigmaSkill sSkill : stigmaInfo.getSkills()) {
String sSkillStack = DataManager.SKILL_DATA.getSkillTemplate(sSkill.getSkillId()).getStack();
for (PlayerSkillEntry psSkill : player.getSkillList().getStigmaSkills()) {
if (psSkill.getSkillTemplate().getStack().equals(sSkillStack)) {
SkillLearnService.removeSkill(player, psSkill.getSkillId());
player.getEffectController().removeEffect(psSkill.getSkillId());
}
}
}
player.getSkillList().deleteHiddenStigmaSilent(player);
//TODO block enchant to the max skill lvl
Integer realSkillId = DataManager.SKILL_TREE_DATA.getStigmaTree().get(player.getRace()).get(DataManager.SKILL_DATA.getSkillTemplate(stigmaInfo.getSkills().get(0).getSkillId()).getStack()).get(targetItem.getEnchantLevel() + 1);
if (realSkillId != null) {
player.getSkillList().addStigmaSkill(player, realSkillId, 1);
} else {
log.error("No have Stigma skill for enchanted stigma item.");
}
StigmaService.recheckHiddenStigma(player);
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_STIGMA_ENCHANT_SUCCESS(new DescriptionId(targetItem.getNameId())));
} else {
PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_MSG_STIGMA_ENCHANT_FAIL(new DescriptionId(targetItem.getNameId())));
player.getInventory().decreaseByObjectId(targetItem.getObjectId(), 1);
}
}
