Revelation skill exploit prevention.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment 2022-12-05 07:04:02 +00:00
parent a0bf69f75a
commit e8efb64cb0
36 changed files with 108 additions and 36 deletions

View File

@ -433,8 +433,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -433,8 +433,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -433,8 +433,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -433,8 +433,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -383,8 +383,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -383,8 +383,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -383,8 +383,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -383,8 +383,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -391,8 +391,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -391,8 +391,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -391,8 +391,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}

View File

@ -391,8 +391,6 @@ public class RequestAcquireSkill implements ClientPacket
final String varName = count == 0 ? REVELATION_VAR_NAMES[0] : REVELATION_VAR_NAMES[1];
player.getVariables().set(varName, skill.getId());
giveSkill(player, trainer, skill);
// Exploit prevention.
SkillData.getInstance().getSkill(1570, 1).applyEffects(player, player);
}
final List<SkillLearn> skills = SkillTreeData.getInstance().getAvailableRevelationSkills(player, SubclassType.BASECLASS);

View File

@ -48,5 +48,6 @@ public class RequestAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.sendSkillList();
}
}

View File

@ -24,6 +24,7 @@ import java.util.List;
import java.util.Map;
import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.data.xml.SkillTreeData;
import org.l2jmobius.gameserver.model.SkillLearn;
@ -194,6 +195,12 @@ public class RequestAcquireAbilityList implements ClientPacket
}
player.sendPacket(new ExAcquireAPSkillList(player));
player.getStat().recalculateStats(true);
ThreadPool.schedule(() ->
{
player.sendSkillList();
player.getStat().recalculateStats(false);
player.broadcastInfo();
}, 100);
}
}