Addition of balancer EnergyAttack configurations.
This commit is contained in:
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1143,6 +1143,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2953,6 +2957,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1150,6 +1150,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2969,6 +2973,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1163,6 +1163,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2991,6 +2995,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1150,6 +1150,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2966,6 +2970,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1145,6 +1145,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2966,6 +2970,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1145,6 +1145,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2966,6 +2970,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1167,6 +1167,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -3009,6 +3013,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1173,6 +1173,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -3023,6 +3027,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1087,6 +1087,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2838,6 +2842,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1091,6 +1091,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2844,6 +2848,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1091,6 +1091,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2844,6 +2848,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1091,6 +1091,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2845,6 +2849,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
+6
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1096,6 +1096,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2854,6 +2858,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1100,6 +1100,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2863,6 +2867,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
@@ -46,6 +46,12 @@ PvpBlowSkillDamageMultipliers =
|
|||||||
PveBlowSkillDefenceMultipliers =
|
PveBlowSkillDefenceMultipliers =
|
||||||
PvpBlowSkillDefenceMultipliers =
|
PvpBlowSkillDefenceMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDamageMultipliers =
|
||||||
|
PvpEnergySkillDamageMultipliers =
|
||||||
|
|
||||||
|
PveEnergySkillDefenceMultipliers =
|
||||||
|
PvpEnergySkillDefenceMultipliers =
|
||||||
|
|
||||||
PlayerHealingSkillMultipliers =
|
PlayerHealingSkillMultipliers =
|
||||||
|
|
||||||
SkillMasteryChanceMultipliers =
|
SkillMasteryChanceMultipliers =
|
||||||
|
|||||||
Vendored
+11
-4
@@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.Config;
|
||||||
import org.l2jmobius.gameserver.enums.ShotType;
|
import org.l2jmobius.gameserver.enums.ShotType;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Attackable;
|
import org.l2jmobius.gameserver.model.actor.Attackable;
|
||||||
@@ -81,9 +82,7 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
final PlayerInstance attacker = effector.getActingPlayer();
|
final PlayerInstance attacker = effector.getActingPlayer();
|
||||||
|
|
||||||
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
final int charge = Math.min(_chargeConsume, attacker.getCharges());
|
||||||
|
|
||||||
if (!attacker.decreaseCharges(charge))
|
if (!attacker.decreaseCharges(charge))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
final SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED_DUE_TO_UNSUITABLE_TERMS);
|
||||||
@@ -98,7 +97,6 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
}
|
}
|
||||||
|
|
||||||
double defence = effected.getPDef() * _pDefMod;
|
double defence = effected.getPDef() * _pDefMod;
|
||||||
|
|
||||||
if (!_ignoreShieldDefence)
|
if (!_ignoreShieldDefence)
|
||||||
{
|
{
|
||||||
final byte shield = Formulas.calcShldUse(attacker, effected);
|
final byte shield = Formulas.calcShldUse(attacker, effected);
|
||||||
@@ -152,8 +150,17 @@ public class EnergyAttack extends AbstractEffect
|
|||||||
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
damage = baseMod * ssmod * critMod * weaponTraitMod * generalTraitMod * weaknessMod * attributeMod * energyChargesBoost * pvpPveMod;
|
||||||
}
|
}
|
||||||
|
|
||||||
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1));
|
double balanceMod = 1;
|
||||||
|
if (attacker.isPlayable())
|
||||||
|
{
|
||||||
|
balanceMod = effected.isPlayable() ? Config.PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.getOrDefault(attacker.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
if (effected.isPlayable())
|
||||||
|
{
|
||||||
|
defence *= attacker.isPlayable() ? Config.PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f) : Config.PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.getOrDefault(effected.getActingPlayer().getClassId(), 1f);
|
||||||
|
}
|
||||||
|
|
||||||
|
damage = Math.max(0, damage * effector.getStat().getValue(Stat.PHYSICAL_SKILL_POWER, 1)) * balanceMod;
|
||||||
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
effector.doAttack(damage, effected, skill, false, false, critical, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1105,6 +1105,10 @@ public class Config
|
|||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVE_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PVP_BLOW_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
|
public static Map<ClassId, Float> PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
public static Map<ClassId, Float> EXP_AMOUNT_MULTIPLIERS = new ConcurrentHashMap<>();
|
||||||
@@ -2869,6 +2873,62 @@ public class Config
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
final String[] pveEnergySkillDamageMultipliers = ClassBalance.getString("PveEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDamageMultipliers = ClassBalance.getString("PvpEnergySkillDamageMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDamageMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDamageMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DAMAGE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pveEnergySkillDefenceMultipliers = ClassBalance.getString("PveEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pveEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pveEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVE_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final String[] pvpEnergySkillDefenceMultipliers = ClassBalance.getString("PvpEnergySkillDefenceMultipliers", "").trim().split(";");
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.clear();
|
||||||
|
if (pvpEnergySkillDefenceMultipliers.length > 0)
|
||||||
|
{
|
||||||
|
for (String info : pvpEnergySkillDefenceMultipliers)
|
||||||
|
{
|
||||||
|
final String[] classInfo = info.trim().split("[*]");
|
||||||
|
if (classInfo.length == 2)
|
||||||
|
{
|
||||||
|
final String id = classInfo[0].trim();
|
||||||
|
PVP_ENERGY_SKILL_DEFENCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
final String[] playerHealingSkillMultipliers = ClassBalance.getString("PlayerHealingSkillMultipliers", "").trim().split(";");
|
||||||
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
PLAYER_HEALING_SKILL_MULTIPLIERS.clear();
|
||||||
if (playerHealingSkillMultipliers.length > 0)
|
if (playerHealingSkillMultipliers.length > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user