diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/StatUp.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/StatUp.java index 09b9c1df57..b6fda285b0 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/StatUp.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/data/scripts/handlers/effecthandlers/StatUp.java @@ -71,5 +71,11 @@ public class StatUp extends AbstractEffect } } effected.getStat().mergeAdd(stat, _amount); + + // Calculate stat increase skills. + if (effected.isPlayer()) + { + effected.getActingPlayer().calculateStatIncreaseSkills(); + } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java index 57f230e0c3..5ef3783140 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -906,6 +906,8 @@ public class Player extends Playable private PlayerRandomCraft _randomCraft = null; + private ScheduledFuture _statIncreaseSkillTask; + private final Map _petEvolves = new HashMap<>(); private final List _questTimers = new ArrayList<>(); @@ -14765,4 +14767,147 @@ public class Player extends Playable } }); } + + public void calculateStatIncreaseSkills() + { + // Use a task to prevent multiple execution from effects. + if (_statIncreaseSkillTask != null) + { + return; + } + + _statIncreaseSkillTask = ThreadPool.schedule(() -> + { + Skill knownSkill; + double statValue; + boolean update = false; + + // Remove stat increase skills. + for (int i = CommonSkill.STR_INCREASE_BONUS_1.getId(); i <= CommonSkill.MEN_INCREASE_BONUS_1.getId(); i++) + { + knownSkill = getKnownSkill(i); + if (knownSkill != null) + { + removeSkill(knownSkill); + update = true; + } + } + + // STR bonus. + statValue = getStat().getValue(Stat.STAT_STR); + if ((statValue >= 60) && (statValue < 70)) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 70) && (statValue < 90)) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // INT bonus. + statValue = getStat().getValue(Stat.STAT_INT); + if ((statValue >= 60) && (statValue < 70)) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 70) && (statValue < 90)) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // DEX bonus. + statValue = getStat().getValue(Stat.STAT_DEX); + if ((statValue >= 50) && (statValue < 60)) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 60) && (statValue < 80)) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 80) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // WIT bonus. + statValue = getStat().getValue(Stat.STAT_WIT); + if ((statValue >= 40) && (statValue < 50)) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 50) && (statValue < 70)) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 70) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // CON bonus. + statValue = getStat().getValue(Stat.STAT_CON); + if ((statValue >= 50) && (statValue < 65)) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 65) && (statValue < 90)) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // MEN bonus. + statValue = getStat().getValue(Stat.STAT_MEN); + if ((statValue >= 45) && (statValue < 60)) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 60) && (statValue < 85)) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 85) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // Update skill list. + if (update) + { + sendSkillList(); + } + + _statIncreaseSkillTask = null; + }, 500); + } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java index ca4fb76ed7..3918d39819 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java @@ -59,6 +59,24 @@ public enum CommonSkill PET_SWITCH_STANCE(6054, 1), WEIGHT_PENALTY(4270, 1), POTION_MASTERY(45184, 1), + STR_INCREASE_BONUS_1(45191, 1), + STR_INCREASE_BONUS_2(45191, 2), + STR_INCREASE_BONUS_3(45191, 3), + INT_INCREASE_BONUS_1(45192, 1), + INT_INCREASE_BONUS_2(45192, 2), + INT_INCREASE_BONUS_3(45192, 3), + DEX_INCREASE_BONUS_1(45193, 1), + DEX_INCREASE_BONUS_2(45193, 2), + DEX_INCREASE_BONUS_3(45193, 3), + WIT_INCREASE_BONUS_1(45194, 1), + WIT_INCREASE_BONUS_2(45194, 2), + WIT_INCREASE_BONUS_3(45194, 3), + CON_INCREASE_BONUS_1(45195, 1), + CON_INCREASE_BONUS_2(45195, 2), + CON_INCREASE_BONUS_3(45195, 3), + MEN_INCREASE_BONUS_1(45196, 1), + MEN_INCREASE_BONUS_2(45196, 2), + MEN_INCREASE_BONUS_3(45196, 3), TELEPORT(60018, 1); private final SkillHolder _holder; diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index 68599c55f4..e8d9743896 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -357,6 +357,9 @@ public class EnterWorld implements IClientIncomingPacket // Send EtcStatusUpdate player.sendPacket(new EtcStatusUpdate(player)); + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); + // Clan packets if (clan != null) { diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java index c45c8f47e6..550fd6e761 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java @@ -119,6 +119,9 @@ public class ExResetStatusBonus implements IClientIncomingPacket player.sendPacket(new UserInfo(player)); player.getStat().recalculateStats(true); + + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); } } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java index 2db67ec6b3..fa984e808b 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java @@ -110,5 +110,8 @@ public class ExSetStatusBonus implements IClientIncomingPacket } player.sendPacket(new UserInfo(player)); + + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/StatUp.java b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/StatUp.java index 09b9c1df57..b6fda285b0 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/StatUp.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/data/scripts/handlers/effecthandlers/StatUp.java @@ -71,5 +71,11 @@ public class StatUp extends AbstractEffect } } effected.getStat().mergeAdd(stat, _amount); + + // Calculate stat increase skills. + if (effected.isPlayer()) + { + effected.getActingPlayer().calculateStatIncreaseSkills(); + } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java index c7843144f7..8cfb288f54 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -930,6 +930,8 @@ public class Player extends Playable private PlayerRandomCraft _randomCraft = null; + private ScheduledFuture _statIncreaseSkillTask; + private final List _collections = new ArrayList<>(); private final List _collectionFavorites = new ArrayList<>(); @@ -14843,6 +14845,149 @@ public class Player extends Playable }); } + public void calculateStatIncreaseSkills() + { + // Use a task to prevent multiple execution from effects. + if (_statIncreaseSkillTask != null) + { + return; + } + + _statIncreaseSkillTask = ThreadPool.schedule(() -> + { + Skill knownSkill; + double statValue; + boolean update = false; + + // Remove stat increase skills. + for (int i = CommonSkill.STR_INCREASE_BONUS_1.getId(); i <= CommonSkill.MEN_INCREASE_BONUS_1.getId(); i++) + { + knownSkill = getKnownSkill(i); + if (knownSkill != null) + { + removeSkill(knownSkill); + update = true; + } + } + + // STR bonus. + statValue = getStat().getValue(Stat.STAT_STR); + if ((statValue >= 60) && (statValue < 70)) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 70) && (statValue < 90)) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // INT bonus. + statValue = getStat().getValue(Stat.STAT_INT); + if ((statValue >= 60) && (statValue < 70)) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 70) && (statValue < 90)) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // DEX bonus. + statValue = getStat().getValue(Stat.STAT_DEX); + if ((statValue >= 50) && (statValue < 60)) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 60) && (statValue < 80)) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 80) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // WIT bonus. + statValue = getStat().getValue(Stat.STAT_WIT); + if ((statValue >= 40) && (statValue < 50)) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 50) && (statValue < 70)) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 70) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // CON bonus. + statValue = getStat().getValue(Stat.STAT_CON); + if ((statValue >= 50) && (statValue < 65)) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 65) && (statValue < 90)) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // MEN bonus. + statValue = getStat().getValue(Stat.STAT_MEN); + if ((statValue >= 45) && (statValue < 60)) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 60) && (statValue < 85)) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 85) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // Update skill list. + if (update) + { + sendSkillList(); + } + + _statIncreaseSkillTask = null; + }, 500); + } + public List getCollections() { return _collections; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java index ca4fb76ed7..3918d39819 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java @@ -59,6 +59,24 @@ public enum CommonSkill PET_SWITCH_STANCE(6054, 1), WEIGHT_PENALTY(4270, 1), POTION_MASTERY(45184, 1), + STR_INCREASE_BONUS_1(45191, 1), + STR_INCREASE_BONUS_2(45191, 2), + STR_INCREASE_BONUS_3(45191, 3), + INT_INCREASE_BONUS_1(45192, 1), + INT_INCREASE_BONUS_2(45192, 2), + INT_INCREASE_BONUS_3(45192, 3), + DEX_INCREASE_BONUS_1(45193, 1), + DEX_INCREASE_BONUS_2(45193, 2), + DEX_INCREASE_BONUS_3(45193, 3), + WIT_INCREASE_BONUS_1(45194, 1), + WIT_INCREASE_BONUS_2(45194, 2), + WIT_INCREASE_BONUS_3(45194, 3), + CON_INCREASE_BONUS_1(45195, 1), + CON_INCREASE_BONUS_2(45195, 2), + CON_INCREASE_BONUS_3(45195, 3), + MEN_INCREASE_BONUS_1(45196, 1), + MEN_INCREASE_BONUS_2(45196, 2), + MEN_INCREASE_BONUS_3(45196, 3), TELEPORT(60018, 1); private final SkillHolder _holder; diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index ce6c8cd50c..742ea9e52f 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -361,6 +361,9 @@ public class EnterWorld implements IClientIncomingPacket // Send EtcStatusUpdate player.sendPacket(new EtcStatusUpdate(player)); + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); + // Clan packets if (clan != null) { diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java index c45c8f47e6..550fd6e761 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java @@ -119,6 +119,9 @@ public class ExResetStatusBonus implements IClientIncomingPacket player.sendPacket(new UserInfo(player)); player.getStat().recalculateStats(true); + + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); } } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java index 2db67ec6b3..fa984e808b 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java @@ -110,5 +110,8 @@ public class ExSetStatusBonus implements IClientIncomingPacket } player.sendPacket(new UserInfo(player)); + + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); } } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatUp.java b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatUp.java index 09b9c1df57..b6fda285b0 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatUp.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/dist/game/data/scripts/handlers/effecthandlers/StatUp.java @@ -71,5 +71,11 @@ public class StatUp extends AbstractEffect } } effected.getStat().mergeAdd(stat, _amount); + + // Calculate stat increase skills. + if (effected.isPlayer()) + { + effected.getActingPlayer().calculateStatIncreaseSkills(); + } } } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java index c7843144f7..8cfb288f54 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Player.java @@ -930,6 +930,8 @@ public class Player extends Playable private PlayerRandomCraft _randomCraft = null; + private ScheduledFuture _statIncreaseSkillTask; + private final List _collections = new ArrayList<>(); private final List _collectionFavorites = new ArrayList<>(); @@ -14843,6 +14845,149 @@ public class Player extends Playable }); } + public void calculateStatIncreaseSkills() + { + // Use a task to prevent multiple execution from effects. + if (_statIncreaseSkillTask != null) + { + return; + } + + _statIncreaseSkillTask = ThreadPool.schedule(() -> + { + Skill knownSkill; + double statValue; + boolean update = false; + + // Remove stat increase skills. + for (int i = CommonSkill.STR_INCREASE_BONUS_1.getId(); i <= CommonSkill.MEN_INCREASE_BONUS_1.getId(); i++) + { + knownSkill = getKnownSkill(i); + if (knownSkill != null) + { + removeSkill(knownSkill); + update = true; + } + } + + // STR bonus. + statValue = getStat().getValue(Stat.STAT_STR); + if ((statValue >= 60) && (statValue < 70)) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 70) && (statValue < 90)) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.STR_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // INT bonus. + statValue = getStat().getValue(Stat.STAT_INT); + if ((statValue >= 60) && (statValue < 70)) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 70) && (statValue < 90)) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.INT_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // DEX bonus. + statValue = getStat().getValue(Stat.STAT_DEX); + if ((statValue >= 50) && (statValue < 60)) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 60) && (statValue < 80)) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 80) + { + addSkill(CommonSkill.DEX_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // WIT bonus. + statValue = getStat().getValue(Stat.STAT_WIT); + if ((statValue >= 40) && (statValue < 50)) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 50) && (statValue < 70)) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 70) + { + addSkill(CommonSkill.WIT_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // CON bonus. + statValue = getStat().getValue(Stat.STAT_CON); + if ((statValue >= 50) && (statValue < 65)) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 65) && (statValue < 90)) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 90) + { + addSkill(CommonSkill.CON_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // MEN bonus. + statValue = getStat().getValue(Stat.STAT_MEN); + if ((statValue >= 45) && (statValue < 60)) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_1.getSkill(), false); + update = true; + } + else if ((statValue >= 60) && (statValue < 85)) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_2.getSkill(), false); + update = true; + } + else if (statValue >= 85) + { + addSkill(CommonSkill.MEN_INCREASE_BONUS_3.getSkill(), false); + update = true; + } + + // Update skill list. + if (update) + { + sendSkillList(); + } + + _statIncreaseSkillTask = null; + }, 500); + } + public List getCollections() { return _collections; diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java index ca4fb76ed7..3918d39819 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/model/skill/CommonSkill.java @@ -59,6 +59,24 @@ public enum CommonSkill PET_SWITCH_STANCE(6054, 1), WEIGHT_PENALTY(4270, 1), POTION_MASTERY(45184, 1), + STR_INCREASE_BONUS_1(45191, 1), + STR_INCREASE_BONUS_2(45191, 2), + STR_INCREASE_BONUS_3(45191, 3), + INT_INCREASE_BONUS_1(45192, 1), + INT_INCREASE_BONUS_2(45192, 2), + INT_INCREASE_BONUS_3(45192, 3), + DEX_INCREASE_BONUS_1(45193, 1), + DEX_INCREASE_BONUS_2(45193, 2), + DEX_INCREASE_BONUS_3(45193, 3), + WIT_INCREASE_BONUS_1(45194, 1), + WIT_INCREASE_BONUS_2(45194, 2), + WIT_INCREASE_BONUS_3(45194, 3), + CON_INCREASE_BONUS_1(45195, 1), + CON_INCREASE_BONUS_2(45195, 2), + CON_INCREASE_BONUS_3(45195, 3), + MEN_INCREASE_BONUS_1(45196, 1), + MEN_INCREASE_BONUS_2(45196, 2), + MEN_INCREASE_BONUS_3(45196, 3), TELEPORT(60018, 1); private final SkillHolder _holder; diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java index ce6c8cd50c..742ea9e52f 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/EnterWorld.java @@ -361,6 +361,9 @@ public class EnterWorld implements IClientIncomingPacket // Send EtcStatusUpdate player.sendPacket(new EtcStatusUpdate(player)); + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); + // Clan packets if (clan != null) { diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java index c45c8f47e6..550fd6e761 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExResetStatusBonus.java @@ -119,6 +119,9 @@ public class ExResetStatusBonus implements IClientIncomingPacket player.sendPacket(new UserInfo(player)); player.getStat().recalculateStats(true); + + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); } } } diff --git a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java index 2db67ec6b3..fa984e808b 100644 --- a/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java +++ b/L2J_Mobius_Essence_6.0_BattleChronicle/java/org/l2jmobius/gameserver/network/clientpackets/stats/ExSetStatusBonus.java @@ -110,5 +110,8 @@ public class ExSetStatusBonus implements IClientIncomingPacket } player.sendPacket(new UserInfo(player)); + + // Calculate stat increase skills. + player.calculateStatIncreaseSkills(); } }