diff --git a/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini b/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini index fe186d7d9c..59924ad2ec 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini +++ b/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini @@ -165,6 +165,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java index 6224be1d7e..df320675ae 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java @@ -193,6 +193,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1732,6 +1734,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 71d39f17e8..f787558f13 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -562,6 +562,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -600,14 +607,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -664,6 +681,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -765,9 +789,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -776,8 +800,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini b/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini index 70003ae83d..fa16847e5f 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini +++ b/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini @@ -165,6 +165,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java index 4f608e0aea..9a8c845af2 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java @@ -200,6 +200,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1753,6 +1755,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index fdbb806057..81c2cb2e22 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -568,6 +568,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -606,14 +613,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -670,6 +687,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -771,9 +795,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -782,8 +806,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini b/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini index 70003ae83d..fa16847e5f 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini +++ b/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini @@ -165,6 +165,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java index ae7532c867..7ca5088ac8 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java @@ -200,6 +200,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1766,6 +1768,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index fdbb806057..81c2cb2e22 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -568,6 +568,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -606,14 +613,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -670,6 +687,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -771,9 +795,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -782,8 +806,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini index 32b14285e5..2d52b0d870 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini @@ -165,6 +165,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java index 314d868937..92b43f94d2 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java @@ -200,6 +200,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1753,6 +1755,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index c176e9455f..7f3b390af5 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -568,6 +568,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -606,14 +613,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -670,6 +687,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -771,9 +795,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -782,8 +806,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini b/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini index e721d196ca..56d102571c 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini +++ b/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini @@ -165,6 +165,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java index 1562e95702..fb4c31a8d5 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java @@ -207,6 +207,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1762,6 +1764,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 7654b608d7..81c7761eba 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -578,6 +578,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -616,14 +623,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -680,6 +697,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -784,9 +808,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -795,8 +819,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini b/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini index e721d196ca..56d102571c 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini @@ -165,6 +165,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java index a91591daea..54c4c7431e 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java @@ -207,6 +207,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1769,6 +1771,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 20b9fb6c6c..a9234b3188 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -601,6 +601,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -639,14 +646,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -703,6 +720,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -807,9 +831,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -818,8 +842,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini b/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini index f02152caa4..5561970e75 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini +++ b/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini @@ -169,6 +169,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java index df87ecb142..c2b0cd04da 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java @@ -208,6 +208,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1804,6 +1806,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 20b9fb6c6c..a9234b3188 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -601,6 +601,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -639,14 +646,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -703,6 +720,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -807,9 +831,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -818,8 +842,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini index fa1dd10fe7..b0ded94acb 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini @@ -169,6 +169,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java index 0f8c9c2add..c1ed3e96d3 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java @@ -208,6 +208,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1812,6 +1814,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index c36b922c21..8ca2feb467 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -595,6 +595,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -633,14 +640,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -697,6 +714,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -801,9 +825,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -812,8 +836,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini b/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini index 458959612e..474baf52b2 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini +++ b/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini @@ -169,6 +169,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java index 974290b344..47bf6f6993 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1785,6 +1787,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index fe36cf9708..cda998e539 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -577,6 +577,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -615,14 +622,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -679,6 +696,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -783,9 +807,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -794,8 +818,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini index 48fcefda38..f2c0bb2af2 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini @@ -169,6 +169,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java index 45331862c0..65c5ef3395 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1787,6 +1789,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index fe36cf9708..cda998e539 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -577,6 +577,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -615,14 +622,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -679,6 +696,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -783,9 +807,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -794,8 +818,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_10.2_MasterClass/dist/game/config/Character.ini b/L2J_Mobius_10.2_MasterClass/dist/game/config/Character.ini index dc7c0b29fe..b50f589c1c 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/config/Character.ini +++ b/L2J_Mobius_10.2_MasterClass/dist/game/config/Character.ini @@ -169,6 +169,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java index 4c049508a9..fde7c54da0 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1788,6 +1790,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index bc30b1ada7..41538a1ad5 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -578,6 +578,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -616,14 +623,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -680,6 +697,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -784,9 +808,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -795,8 +819,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_10.3_MasterClass/dist/game/config/Character.ini b/L2J_Mobius_10.3_MasterClass/dist/game/config/Character.ini index dc7c0b29fe..b50f589c1c 100644 --- a/L2J_Mobius_10.3_MasterClass/dist/game/config/Character.ini +++ b/L2J_Mobius_10.3_MasterClass/dist/game/config/Character.ini @@ -169,6 +169,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 80 BlowRateChanceLimit = 80 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/Config.java b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/Config.java index 3f20d4c7d1..17f8956d81 100644 --- a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/Config.java @@ -203,6 +203,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1809,6 +1811,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index bc30b1ada7..41538a1ad5 100644 --- a/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_10.3_MasterClass/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -578,6 +578,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -616,14 +623,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -680,6 +697,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -784,9 +808,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -795,8 +819,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_1.0/dist/game/config/Character.ini b/L2J_Mobius_Classic_1.0/dist/game/config/Character.ini index 57bd705a82..02bc40c422 100644 --- a/L2J_Mobius_Classic_1.0/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_1.0/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/Config.java index a3d42e3d54..aa5ba07bdd 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/Config.java @@ -192,6 +192,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1687,6 +1689,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3a5f4d4c86..8832e87ae4 100644 --- a/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_1.0/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -564,6 +564,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -602,14 +609,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -666,6 +683,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -767,9 +791,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -778,8 +802,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/config/Character.ini b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/config/Character.ini index f15070d570..abe7f381d5 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/Config.java index 4c63eaf1e1..3cee9c7173 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1715,6 +1717,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 3a5f4d4c86..8832e87ae4 100644 --- a/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_1.5_AgeOfSplendor/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -564,6 +564,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -602,14 +609,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -666,6 +683,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -767,9 +791,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -778,8 +802,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini index c24fbb6126..9fccbfea10 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.0_Saviors/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java index 85603353ef..12024f0a21 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1718,6 +1720,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index f546c5382d..de6679a241 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -570,6 +570,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -608,14 +615,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -672,6 +689,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -773,9 +797,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -784,8 +808,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_2.5_Zaken/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.5_Zaken/dist/game/config/Character.ini index 1d33b92e91..427cdcd984 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.5_Zaken/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/Config.java index 02ab86ee8b..3fb5472be2 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1722,6 +1724,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index f546c5382d..de6679a241 100644 --- a/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.5_Zaken/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -570,6 +570,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -608,14 +615,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -672,6 +689,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -773,9 +797,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -784,8 +808,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_2.7_Antharas/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.7_Antharas/dist/game/config/Character.ini index 923b102e0a..6b54c0cd96 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.7_Antharas/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/Config.java index 02ab86ee8b..3fb5472be2 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1722,6 +1724,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 0787287f39..ce37205da7 100644 --- a/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.7_Antharas/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -580,6 +580,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -618,14 +625,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -682,6 +699,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -786,9 +810,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -797,8 +821,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/config/Character.ini index 923b102e0a..6b54c0cd96 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.8_SevenSigns/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/Config.java index 02ab86ee8b..3fb5472be2 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1722,6 +1724,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 2e6f269dfa..289bcc6b58 100644 --- a/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.8_SevenSigns/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -603,6 +603,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -641,14 +648,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -705,6 +722,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -809,9 +833,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -820,8 +844,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/config/Character.ini index 2e6fc7f1ad..b2a66873c8 100644 --- a/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.9.5_Saviors/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/Config.java index 5af9968164..144184db7f 100644 --- a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1734,6 +1736,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 2e6f269dfa..289bcc6b58 100644 --- a/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.9.5_Saviors/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -603,6 +603,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -641,14 +648,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -705,6 +722,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -809,9 +833,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -820,8 +844,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/config/Character.ini index 9a8abb2114..cada0889fa 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/Config.java index 515464c802..96cb68270e 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1727,6 +1729,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 2e6f269dfa..289bcc6b58 100644 --- a/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_2.9_SecretOfEmpire/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -603,6 +603,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -641,14 +648,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -705,6 +722,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -809,9 +833,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -820,8 +844,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini index ddbf0197f5..1d19948d51 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_3.0_TheKamael/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java index dd75c0fbf0..e3d04445ab 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/Config.java @@ -201,6 +201,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1734,6 +1736,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index e037875de0..cf0a0fcfca 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -597,6 +597,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -635,14 +642,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -699,6 +716,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -803,9 +827,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -814,8 +838,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini b/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini index c05b72ca72..4d0b8276a9 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = True # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java index e18c69c269..a5368e19ce 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java @@ -200,6 +200,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1725,6 +1727,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", true); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 80); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index c6c6d7d4f6..84093e76a1 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -562,6 +562,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -600,14 +607,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !player.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!player.hasSkillReuse(skill.getReuseHashCode())) { - player.addTimeStamp(skill, equipDelay); - player.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + player.addTimeStamp(skill, equipDelay); + player.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -664,6 +681,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -765,9 +789,9 @@ public abstract class Inventory extends ItemContainer } player.addSkill(itemSkill, false); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!player.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !player.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -776,8 +800,16 @@ public abstract class Inventory extends ItemContainer player.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && player.hasEnteredWorld()) + { + player.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini index 3284949889..e3405940ef 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/dist/game/config/Character.ini @@ -158,6 +158,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java index 565ba4fdcf..61a4ddcf16 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/Config.java @@ -203,6 +203,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1757,6 +1759,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 100); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index 539a59253a..70abc6519f 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -621,6 +621,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -704,14 +711,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !playable.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!playable.hasSkillReuse(skill.getReuseHashCode())) { - playable.addTimeStamp(skill, equipDelay); - playable.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + playable.addTimeStamp(skill, equipDelay); + playable.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -771,6 +788,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -918,9 +942,9 @@ public abstract class Inventory extends ItemContainer } playable.addSkill(itemSkill); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!playable.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !playable.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -929,8 +953,16 @@ public abstract class Inventory extends ItemContainer playable.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini index f43a259f4e..96c135c6f2 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini +++ b/L2J_Mobius_Essence_5.2_FrostLord/dist/game/config/Character.ini @@ -226,6 +226,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java index f97822bb5d..4a9cbe22e2 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/Config.java @@ -205,6 +205,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1856,6 +1858,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 100); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index f5ce89255c..16c4609a2e 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -630,6 +630,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -713,14 +720,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !playable.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!playable.hasSkillReuse(skill.getReuseHashCode())) { - playable.addTimeStamp(skill, equipDelay); - playable.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + playable.addTimeStamp(skill, equipDelay); + playable.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -780,6 +797,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -927,9 +951,9 @@ public abstract class Inventory extends ItemContainer } playable.addSkill(itemSkill); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!playable.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !playable.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -938,8 +962,16 @@ public abstract class Inventory extends ItemContainer playable.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/config/Character.ini b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/config/Character.ini index 1eefccaf1f..5213c44a7a 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/dist/game/config/Character.ini +++ b/L2J_Mobius_Essence_6.2_Vanguard/dist/game/config/Character.ini @@ -226,6 +226,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java index 9da715d50c..acd53da860 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/Config.java @@ -207,6 +207,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1878,6 +1880,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 100); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index f5ce89255c..16c4609a2e 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -630,6 +630,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -713,14 +720,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !playable.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!playable.hasSkillReuse(skill.getReuseHashCode())) { - playable.addTimeStamp(skill, equipDelay); - playable.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + playable.addTimeStamp(skill, equipDelay); + playable.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -780,6 +797,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -927,9 +951,9 @@ public abstract class Inventory extends ItemContainer } playable.addSkill(itemSkill); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!playable.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !playable.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -938,8 +962,16 @@ public abstract class Inventory extends ItemContainer playable.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } } diff --git a/L2J_Mobius_Essence_6.3_Crusader/dist/game/config/Character.ini b/L2J_Mobius_Essence_6.3_Crusader/dist/game/config/Character.ini index 1eefccaf1f..5213c44a7a 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/dist/game/config/Character.ini +++ b/L2J_Mobius_Essence_6.3_Crusader/dist/game/config/Character.ini @@ -226,6 +226,16 @@ CalculateMagicSuccessBySkillMagicLevel = False # Default: 100 BlowRateChanceLimit = 100 +# Disables active, non offensive, item skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 300000 (5 minutes). +ItemEquipActiveSkillReuse = 300000 + +# Disables active, non offensive, armor set skills for a fixed time upon equip. +# Use 0 to disable. +# Default: 60000 (1 minute). +ArmorSetEquipActiveSkillReuse = 60000 + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/Config.java index 9da715d50c..acd53da860 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/Config.java @@ -207,6 +207,8 @@ public class Config public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL; public static int BLOW_RATE_CHANCE_LIMIT; + public static int ITEM_EQUIP_ACTIVE_SKILL_REUSE; + public static int ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1878,6 +1880,8 @@ public class Config MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); CALCULATE_MAGIC_SUCCESS_BY_SKILL_MAGIC_LEVEL = characterConfig.getBoolean("CalculateMagicSuccessBySkillMagicLevel", false); BLOW_RATE_CHANCE_LIMIT = characterConfig.getInt("BlowRateChanceLimit", 100); + ITEM_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ItemEquipActiveSkillReuse", 300000); + ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE = characterConfig.getInt("ArmorSetEquipActiveSkillReuse", 60000); LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true); DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true); ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false); diff --git a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java index f5ce89255c..16c4609a2e 100644 --- a/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java +++ b/L2J_Mobius_Essence_6.3_Crusader/java/org/l2jmobius/gameserver/model/itemcontainer/Inventory.java @@ -630,6 +630,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -713,14 +720,24 @@ public abstract class Inventory extends ItemContainer addedSkills.put(skill.getId(), skill); } - if (skill.isActive() && !playable.hasSkillReuse(skill.getReuseHashCode())) + if (skill.isActive()) { - final int equipDelay = item.getEquipReuseDelay(); - if (equipDelay > 0) + if (!playable.hasSkillReuse(skill.getReuseHashCode())) { - playable.addTimeStamp(skill, equipDelay); - playable.disableSkill(skill, equipDelay); + final int equipDelay = item.getEquipReuseDelay(); + if (equipDelay > 0) + { + playable.addTimeStamp(skill, equipDelay); + playable.disableSkill(skill, equipDelay); + } } + + // Active, non offensive, skills start with reuse on equip. + if (!skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimestamp = true; } } @@ -780,6 +797,13 @@ public abstract class Inventory extends ItemContainer { addedSkills.put(skill.getId(), skill); } + + // Active, non offensive, skills start with reuse on equip. + if (skill.isActive() && !skill.isBad() && (Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(skill, Config.ITEM_EQUIP_ACTIVE_SKILL_REUSE); + updateTimestamp = true; + } } } @@ -927,9 +951,9 @@ public abstract class Inventory extends ItemContainer } playable.addSkill(itemSkill); - if (itemSkill.isActive() && (item != null)) + if (itemSkill.isActive()) { - if (!playable.hasSkillReuse(itemSkill.getReuseHashCode())) + if ((item != null) && !playable.hasSkillReuse(itemSkill.getReuseHashCode())) { final int equipDelay = item.getEquipReuseDelay(); if (equipDelay > 0) @@ -938,8 +962,16 @@ public abstract class Inventory extends ItemContainer playable.disableSkill(itemSkill, equipDelay); } } + + // Active, non offensive, skills start with reuse on equip. + if (!itemSkill.isBad() && (Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE > 0) && playable.getActingPlayer().hasEnteredWorld()) + { + playable.addTimeStamp(itemSkill, Config.ARMOR_SET_EQUIP_ACTIVE_SKILL_REUSE); + } + updateTimeStamp = true; } + update = true; } }