Addition of vampiric skill configurations.
This commit is contained in:
@@ -151,6 +151,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -188,6 +188,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1737,6 +1739,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
@@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,6 +151,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -195,6 +195,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1757,6 +1759,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,6 +151,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -195,6 +195,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1770,6 +1772,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
@@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,6 +151,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -195,6 +195,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1757,6 +1759,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,6 +151,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -202,6 +202,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1766,6 +1768,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
@@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,6 +151,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -202,6 +202,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1773,6 +1775,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -203,6 +203,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1808,6 +1810,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
@@ -4620,14 +4620,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -203,6 +203,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1816,6 +1818,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1789,6 +1791,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1791,6 +1793,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1791,6 +1793,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,6 +155,12 @@ FakeDeathUntarget = True
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = False
|
FakeDeathDamageStand = False
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = True
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = True
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static boolean ENABLE_ALTER_SKILLS;
|
public static boolean ENABLE_ALTER_SKILLS;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1791,6 +1793,8 @@ public class Config
|
|||||||
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
ENABLE_ALTER_SKILLS = characterConfig.getBoolean("EnableAlterSkills", true);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+18
-12
@@ -4619,14 +4619,17 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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 ((skill == null) || Config.VAMPIRIC_ATTACK_WORKS_WITH_SKILLS)
|
||||||
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min(absorbHpPercent * damage, _stat.getMaxRecoverableHp() - _status.getCurrentHp());
|
final double absorbHpPercent = getStat().getValue(Stat.ABSORB_DAMAGE_PERCENT, 0) * target.getStat().getValue(Stat.ABSORB_DAMAGE_DEFENCE, 1);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentHp());
|
if ((absorbHpPercent > 0) && (Rnd.nextDouble() < _stat.getValue(Stat.ABSORB_DAMAGE_CHANCE)))
|
||||||
if (absorbDamage > 0)
|
|
||||||
{
|
{
|
||||||
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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
||||||
{
|
{
|
||||||
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
if ((skill != null) || Config.MP_VAMPIRIC_ATTACK_WORKS_WITH_MELEE)
|
||||||
if (absorbMpPercent > 0)
|
|
||||||
{
|
{
|
||||||
int absorbDamage = (int) Math.min((absorbMpPercent / 100.) * damage, _stat.getMaxRecoverableMp() - _status.getCurrentMp());
|
final double absorbMpPercent = _stat.getValue(Stat.ABSORB_MANA_DAMAGE_PERCENT, 0);
|
||||||
absorbDamage = Math.min(absorbDamage, (int) target.getCurrentMp());
|
if (absorbMpPercent > 0)
|
||||||
if (absorbDamage > 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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1725,6 +1727,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1729,6 +1731,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1729,6 +1731,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1729,6 +1731,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4623,7 +4623,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1734,6 +1736,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4623,7 +4623,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -196,6 +196,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1740,6 +1742,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4622,7 +4622,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -195,6 +195,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1732,6 +1734,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4610,7 +4610,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -198,6 +198,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1760,6 +1762,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4635,7 +4635,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -198,6 +198,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1763,6 +1765,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4642,7 +4642,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -198,6 +198,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1763,6 +1765,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4642,7 +4642,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,6 +144,12 @@ FakeDeathUntarget = False
|
|||||||
# Stand when fake death is active and taking damage.
|
# Stand when fake death is active and taking damage.
|
||||||
FakeDeathDamageStand = True
|
FakeDeathDamageStand = True
|
||||||
|
|
||||||
|
# Vampiric attack work with skills.
|
||||||
|
VampiricAttackWorkWithSkills = False
|
||||||
|
|
||||||
|
# MP vampiric attacks work with melee.
|
||||||
|
MpVampiricAttackWorkWithMelee = False
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Class, Sub-class and skill learning options
|
# Class, Sub-class and skill learning options
|
||||||
|
|||||||
@@ -198,6 +198,8 @@ public class Config
|
|||||||
public static long EFFECT_TICK_RATIO;
|
public static long EFFECT_TICK_RATIO;
|
||||||
public static boolean FAKE_DEATH_UNTARGET;
|
public static boolean FAKE_DEATH_UNTARGET;
|
||||||
public static boolean FAKE_DEATH_DAMAGE_STAND;
|
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 LIFE_CRYSTAL_NEEDED;
|
||||||
public static boolean DIVINE_SP_BOOK_NEEDED;
|
public static boolean DIVINE_SP_BOOK_NEEDED;
|
||||||
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
public static boolean ALT_GAME_SUBCLASS_WITHOUT_QUESTS;
|
||||||
@@ -1763,6 +1765,8 @@ public class Config
|
|||||||
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
EFFECT_TICK_RATIO = characterConfig.getLong("EffectTickRatio", 666);
|
||||||
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
FAKE_DEATH_UNTARGET = characterConfig.getBoolean("FakeDeathUntarget", true);
|
||||||
FAKE_DEATH_DAMAGE_STAND = characterConfig.getBoolean("FakeDeathDamageStand", false);
|
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);
|
LIFE_CRYSTAL_NEEDED = characterConfig.getBoolean("LifeCrystalNeeded", true);
|
||||||
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
DIVINE_SP_BOOK_NEEDED = characterConfig.getBoolean("DivineInspirationSpBookNeeded", true);
|
||||||
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
ALT_GAME_SUBCLASS_WITHOUT_QUESTS = characterConfig.getBoolean("AltSubClassWithoutQuests", false);
|
||||||
|
|||||||
+2
-2
@@ -4642,7 +4642,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
|
|||||||
final boolean isPvP = isPlayable() && target.isPlayable();
|
final boolean isPvP = isPlayable() && target.isPlayable();
|
||||||
if (!isPvP || Config.VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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);
|
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 ((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.
|
// Absorb MP from the damage inflicted.
|
||||||
if (!isPvP || Config.MP_VAMPIRIC_ATTACK_AFFECTS_PVP)
|
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.
|
if (Rnd.get(10) < 3) // Classic: Static 30% change.
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user