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 c47e6b113b..c17bf25714 100644 --- a/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini +++ b/L2J_Mobius_01.0_Ertheia/dist/game/config/Character.ini @@ -151,6 +151,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 236afb3e6e..43d5bb19e2 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/Config.java @@ -188,6 +188,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1737,6 +1739,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2df8cc48ca..5c05bf1f52 100644 --- a/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_01.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4635,14 +4638,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 b8b456b61d..c81747f8ca 100644 --- a/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini +++ b/L2J_Mobius_02.5_Underground/dist/game/config/Character.ini @@ -151,6 +151,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 a85fe469ab..1c69312384 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/Config.java @@ -195,6 +195,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; 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 ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2df8cc48ca..5c05bf1f52 100644 --- a/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_02.5_Underground/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4635,14 +4638,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 b8b456b61d..c81747f8ca 100644 --- a/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini +++ b/L2J_Mobius_03.0_Helios/dist/game/config/Character.ini @@ -151,6 +151,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 efb0dbd080..e95c564e69 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/Config.java @@ -195,6 +195,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1770,6 +1772,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2df8cc48ca..5c05bf1f52 100644 --- a/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_03.0_Helios/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4635,14 +4638,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 88ff94a68e..9890bb9608 100644 --- a/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini +++ b/L2J_Mobius_04.0_GrandCrusade/dist/game/config/Character.ini @@ -151,6 +151,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 79ee02edfb..bde7419abc 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/Config.java @@ -195,6 +195,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; 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 ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java index 2df8cc48ca..5c05bf1f52 100644 --- a/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_04.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4635,14 +4638,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 8893100fde..53eb33f37a 100644 --- a/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini +++ b/L2J_Mobius_05.0_Salvation/dist/game/config/Character.ini @@ -151,6 +151,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 be6bfde003..df77f2990c 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/Config.java @@ -202,6 +202,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; 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 ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8873751889..e46e3066e3 100644 --- a/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.0_Salvation/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4635,14 +4638,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 8893100fde..53eb33f37a 100644 --- a/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini +++ b/L2J_Mobius_05.5_EtinasFate/dist/game/config/Character.ini @@ -151,6 +151,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 b9ab417c9f..3b2620f209 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/Config.java @@ -202,6 +202,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1773,6 +1775,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8873751889..e46e3066e3 100644 --- a/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_05.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4635,14 +4638,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 b8361f927a..807e35c0eb 100644 --- a/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini +++ b/L2J_Mobius_06.0_Fafurion/dist/game/config/Character.ini @@ -155,6 +155,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 56cd73f678..9602239e3d 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/Config.java @@ -203,6 +203,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1808,6 +1810,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java index 8873751889..e46e3066e3 100644 --- a/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_06.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4635,14 +4638,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 6c4e7cc33b..04f79214c5 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini +++ b/L2J_Mobius_07.0_PreludeOfWar/dist/game/config/Character.ini @@ -155,6 +155,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 4577b10773..b27acb609d 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/Config.java @@ -203,6 +203,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1816,6 +1818,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java index f013a0100d..5fe2273d82 100644 --- a/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_07.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4634,14 +4637,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 aff251a888..827dacbb73 100644 --- a/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini +++ b/L2J_Mobius_08.2_Homunculus/dist/game/config/Character.ini @@ -155,6 +155,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 68d7209ffe..8235e92647 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1789,6 +1791,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java index a4cdfbc1b0..1a53838b08 100644 --- a/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_08.2_Homunculus/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4634,14 +4637,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 768dae0042..97a50f5faa 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/dist/game/config/Character.ini @@ -155,6 +155,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 967b771028..cc535db5cb 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1791,6 +1793,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java index a4cdfbc1b0..1a53838b08 100644 --- a/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_09.2_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4634,14 +4637,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } diff --git a/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini b/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini index 768dae0042..97a50f5faa 100644 --- a/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini +++ b/L2J_Mobius_10.1_MasterClass/dist/game/config/Character.ini @@ -155,6 +155,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java index eeb62448ce..20328fb63b 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1791,6 +1793,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6fc79d2b8e..ccf17e63fe 100644 --- a/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.1_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4634,14 +4637,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 768dae0042..97a50f5faa 100644 --- a/L2J_Mobius_10.2_MasterClass/dist/game/config/Character.ini +++ b/L2J_Mobius_10.2_MasterClass/dist/game/config/Character.ini @@ -155,6 +155,12 @@ FakeDeathUntarget = True # Stand when fake death is active and taking damage. FakeDeathDamageStand = False +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = True + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = True + # --------------------------------------------------------------------------- # 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 eeb62448ce..20328fb63b 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static boolean ENABLE_ALTER_SKILLS; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1791,6 +1793,8 @@ public class Config ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java index 6fc79d2b8e..ccf17e63fe 100644 --- a/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_10.2_MasterClass/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); - if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { - int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); - if (absorbDamage > 0) + final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); + if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) { - setCurrentHp(_status.getCurrentHp() + absorbDamage); + int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp()); + if (absorbDamage > 0) + { + setCurrentHp(_status.getCurrentHp() + absorbDamage); + } } } } @@ -4634,14 +4637,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); - if (absorbMpPercent > 0) + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { - int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); - absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); - if (absorbDamage > 0) + final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0); + if (absorbMpPercent > 0) { - setCurrentMp(_status.getCurrentMp() + absorbDamage); + int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp()); + absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp()); + if (absorbDamage > 0) + { + setCurrentMp(_status.getCurrentMp() + absorbDamage); + } } } } 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 7e57f9a222..69066a87d6 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 @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # 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 a3c697c46c..46d1be44dc 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 @@ -196,6 +196,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; 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 EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java index bb14b1c669..8adb556efe 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4628,7 +4628,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { diff --git a/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini index 14b8a3fba4..51c69f6a84 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.1_Zaken/dist/game/config/Character.ini @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java index 4c1dd3855a..697d87a3fc 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1729,6 +1731,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java index bb14b1c669..8adb556efe 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4628,7 +4628,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { diff --git a/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini index 2ce6ac9e6e..cedf27ebd4 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.2_Antharas/dist/game/config/Character.ini @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java index 4c1dd3855a..697d87a3fc 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1729,6 +1731,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java index 557d489cee..fb46d959b5 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4628,7 +4628,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini index 2ce6ac9e6e..cedf27ebd4 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.3_SevenSigns/dist/game/config/Character.ini @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java index 4c1dd3855a..697d87a3fc 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1729,6 +1731,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java index 81138a3df4..60ba0c07e2 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4623,7 +4623,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4641,7 +4641,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini index d50a078cdb..971469c69a 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/dist/game/config/Character.ini @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java index 7c4c5b84f1..5628323961 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/Config.java @@ -196,6 +196,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; 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 EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java index 81138a3df4..60ba0c07e2 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4623,7 +4623,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4641,7 +4641,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { 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 04b850b395..33698861c4 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 @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # 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 1408cab8b2..03da33645a 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 @@ -196,6 +196,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1740,6 +1742,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java index c64adeb2d9..43bf5e881f 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4622,7 +4622,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4640,7 +4640,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { diff --git a/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini b/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini index a6eb2fa173..87223e78f2 100644 --- a/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini +++ b/L2J_Mobius_Classic_Interlude/dist/game/config/Character.ini @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # 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 1f9cccf577..841cf6c555 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/Config.java @@ -195,6 +195,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; 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 EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java index bb14b1c669..8adb556efe 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4628,7 +4628,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { 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 c4f319bdd7..ed63d4e74b 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 @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # 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 818564280c..640198eb5d 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 @@ -198,6 +198,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1760,6 +1762,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java index 537fd7c285..27e70e7f9f 100644 --- a/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_4.2_DwellingOfSpirits/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4635,7 +4635,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4653,7 +4653,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { 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 c4f319bdd7..ed63d4e74b 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 @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # 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 a77b7d280e..23b021c246 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 @@ -198,6 +198,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1763,6 +1765,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java index cb076b8b6d..89a7b53215 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4642,7 +4642,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4660,7 +4660,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini index c4f319bdd7..ed63d4e74b 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/dist/game/config/Character.ini @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # Class, Sub-class and skill learning options diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java index a77b7d280e..23b021c246 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/Config.java @@ -198,6 +198,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1763,6 +1765,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java index d5c719d2b9..b116eab9cd 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4642,7 +4642,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4660,7 +4660,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. { 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 c4f319bdd7..ed63d4e74b 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 @@ -144,6 +144,12 @@ FakeDeathUntarget = False # Stand when fake death is active and taking damage. FakeDeathDamageStand = True +# Vampiric attack work with skills. +VampiricAttackWorkWithSkills = False + +# MP vampiric attacks work with melee. +MpVampiricAttackWorkWithMelee = False + # --------------------------------------------------------------------------- # 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 c28768a8bd..b8d238baec 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 @@ -198,6 +198,8 @@ public class Config public static long EFFECT_TICK_RATIO; public static boolean FAKE_DEATH_UNTARGET; public static boolean FAKE_DEATH_DAMAGE_STAND; + public static boolean VAMPIRIC_ATTACK_WORKS_WITH_SKILLS; + public static boolean MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE; public static boolean LIFE_CRYSTAL_NEEDED; public static boolean DIVINE_SP_BOOK_NEEDED; public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS; @@ -1763,6 +1765,8 @@ public class Config EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666); FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true); FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false); + VAMPIRIC_ATTACK_WORKS_WITH_SKILLS = characterConfig.getBoolean("VampiricAttackWorkWithSkills", true); + MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE = characterConfig.getBoolean("MpVampiricAttackWorkWithMelee", false); 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/actor/Creature.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java index d5c719d2b9..b116eab9cd 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/actor/Creature.java @@ -4642,7 +4642,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe final boolean isPvP = isPlayable() && target.isPlayable(); if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill == null) // Classic: Skills counted with the Vampiric Rage effect was introduced on GoD chronicles. + if ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS) { final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1); if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE))) @@ -4660,7 +4660,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe // Absorb MP from the damage inflicted. if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP) { - if (skill != null) // Classic: Used to reduce skill MP consumption. See Orfen's Earring. + if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE) { if (Rnd.get(10) < 3) // Classic: Static 30% change. {