Skill mastery related changes.

Contributed by NviX.
This commit is contained in:
MobiusDevelopment 2019-10-19 14:38:22 +00:00
parent 62c1efce6a
commit bee9a4c890
137 changed files with 382 additions and 172 deletions

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1328,7 +1328,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1340,7 +1340,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -49,7 +49,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -186,7 +186,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -410,13 +410,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -356,7 +356,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

View File

@ -149,7 +149,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -1971,7 +1971,7 @@
<value level="3">85</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="StatUp">

View File

@ -1136,6 +1136,7 @@ public class Config
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> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
public static boolean MULTILANG_ENABLE;
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
public static String MULTILANG_DEFAULT;
@ -2939,6 +2940,20 @@ public class Config
}
}
}
final String[] skillMasteryChanceMultipliers = ClassBalance.getString("SkillMasteryChanceMultipliers", "").trim().split(";");
SKILL_MASTERY_CHANCE_MULTIPLIERS.clear();
if (skillMasteryChanceMultipliers.length > 0)
{
for (String info : skillMasteryChanceMultipliers)
{
final String[] classInfo = info.trim().split("[*]");
if (classInfo.length == 2)
{
final String id = classInfo[0].trim();
SKILL_MASTERY_CHANCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
}
}
}
// Load CommunityBoard config file (if exists)
final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE);

View File

@ -960,7 +960,7 @@ public class Formulas
final double chance = BaseStats.values()[val].calcBonus(actor) * actor.getStat().getValue(Stats.SKILL_CRITICAL_PROBABILITY, 1);
return ((Rnd.nextDouble() * 100.) < chance);
return ((Rnd.nextDouble() * 100.) < (chance * Config.SKILL_MASTERY_CHANCE_MULTIPLIERS.getOrDefault(actor.getActingPlayer().getClassId(), 1f)));
}
/**

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1328,7 +1328,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1340,7 +1340,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -49,7 +49,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -186,7 +186,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -421,13 +421,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -363,7 +363,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

View File

@ -149,7 +149,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -2343,7 +2343,7 @@
<value level="3">85</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="StatUp">

View File

@ -1143,6 +1143,7 @@ public class Config
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> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
public static boolean MULTILANG_ENABLE;
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
public static String MULTILANG_DEFAULT;
@ -2956,6 +2957,20 @@ public class Config
}
}
}
final String[] skillMasteryChanceMultipliers = ClassBalance.getString("SkillMasteryChanceMultipliers", "").trim().split(";");
SKILL_MASTERY_CHANCE_MULTIPLIERS.clear();
if (skillMasteryChanceMultipliers.length > 0)
{
for (String info : skillMasteryChanceMultipliers)
{
final String[] classInfo = info.trim().split("[*]");
if (classInfo.length == 2)
{
final String id = classInfo[0].trim();
SKILL_MASTERY_CHANCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
}
}
}
// Load CommunityBoard config file (if exists)
final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE);

View File

@ -960,7 +960,7 @@ public class Formulas
final double chance = BaseStats.values()[val].calcBonus(actor) * actor.getStat().getValue(Stats.SKILL_CRITICAL_PROBABILITY, 1);
return ((Rnd.nextDouble() * 100.) < chance);
return ((Rnd.nextDouble() * 100.) < (chance * Config.SKILL_MASTERY_CHANCE_MULTIPLIERS.getOrDefault(actor.getActingPlayer().getClassId(), 1f)));
}
/**

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1328,7 +1328,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1340,7 +1340,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -49,7 +49,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -186,7 +186,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -421,13 +421,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -387,7 +387,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

View File

@ -149,7 +149,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -2342,7 +2342,7 @@
<value level="3">85</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="StatUp">

View File

@ -1156,6 +1156,7 @@ public class Config
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> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
public static boolean MULTILANG_ENABLE;
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
public static String MULTILANG_DEFAULT;
@ -2980,6 +2981,20 @@ public class Config
}
}
}
final String[] skillMasteryChanceMultipliers = ClassBalance.getString("SkillMasteryChanceMultipliers", "").trim().split(";");
SKILL_MASTERY_CHANCE_MULTIPLIERS.clear();
if (skillMasteryChanceMultipliers.length > 0)
{
for (String info : skillMasteryChanceMultipliers)
{
final String[] classInfo = info.trim().split("[*]");
if (classInfo.length == 2)
{
final String id = classInfo[0].trim();
SKILL_MASTERY_CHANCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
}
}
}
// Load CommunityBoard config file (if exists)
final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE);

View File

@ -960,7 +960,7 @@ public class Formulas
final double chance = BaseStats.values()[val].calcBonus(actor) * actor.getStat().getValue(Stats.SKILL_CRITICAL_PROBABILITY, 1);
return ((Rnd.nextDouble() * 100.) < chance);
return ((Rnd.nextDouble() * 100.) < (chance * Config.SKILL_MASTERY_CHANCE_MULTIPLIERS.getOrDefault(actor.getActingPlayer().getClassId(), 1f)));
}
/**

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1328,7 +1328,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1340,7 +1340,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -49,7 +49,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -186,7 +186,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -447,13 +447,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -378,7 +378,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

View File

@ -149,7 +149,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -2300,7 +2300,7 @@
<value level="3">85</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="StatUp">

View File

@ -1143,6 +1143,7 @@ public class Config
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> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
public static boolean MULTILANG_ENABLE;
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
public static String MULTILANG_DEFAULT;
@ -2954,6 +2955,20 @@ public class Config
}
}
}
final String[] skillMasteryChanceMultipliers = ClassBalance.getString("SkillMasteryChanceMultipliers", "").trim().split(";");
SKILL_MASTERY_CHANCE_MULTIPLIERS.clear();
if (skillMasteryChanceMultipliers.length > 0)
{
for (String info : skillMasteryChanceMultipliers)
{
final String[] classInfo = info.trim().split("[*]");
if (classInfo.length == 2)
{
final String id = classInfo[0].trim();
SKILL_MASTERY_CHANCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
}
}
}
// Load CommunityBoard config file (if exists)
final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE);

View File

@ -960,7 +960,7 @@ public class Formulas
final double chance = BaseStats.values()[val].calcBonus(actor) * actor.getStat().getValue(Stats.SKILL_CRITICAL_PROBABILITY, 1);
return ((Rnd.nextDouble() * 100.) < chance);
return ((Rnd.nextDouble() * 100.) < (chance * Config.SKILL_MASTERY_CHANCE_MULTIPLIERS.getOrDefault(actor.getActingPlayer().getClassId(), 1f)));
}
/**

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1328,7 +1328,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1340,7 +1340,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -92,7 +92,7 @@
<item>BLUNT</item>
</weaponType>
</effect>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="Accuracy">

View File

@ -192,7 +192,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -476,13 +476,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -378,7 +378,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

View File

@ -149,7 +149,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -2300,7 +2300,7 @@
<value level="3">85</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="StatUp">

View File

@ -1139,6 +1139,7 @@ public class Config
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> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
public static boolean MULTILANG_ENABLE;
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
public static String MULTILANG_DEFAULT;
@ -3030,6 +3031,20 @@ public class Config
}
}
}
final String[] skillMasteryChanceMultipliers = ClassBalance.getString("SkillMasteryChanceMultipliers", "").trim().split(";");
SKILL_MASTERY_CHANCE_MULTIPLIERS.clear();
if (skillMasteryChanceMultipliers.length > 0)
{
for (String info : skillMasteryChanceMultipliers)
{
final String[] classInfo = info.trim().split("[*]");
if (classInfo.length == 2)
{
final String id = classInfo[0].trim();
SKILL_MASTERY_CHANCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
}
}
}
// Load CommunityBoard config file (if exists)
final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE);

View File

@ -960,7 +960,7 @@ public class Formulas
final double chance = BaseStats.values()[val].calcBonus(actor) * actor.getStat().getValue(Stats.SKILL_CRITICAL_PROBABILITY, 1);
return ((Rnd.nextDouble() * 100.) < chance);
return ((Rnd.nextDouble() * 100.) < (chance * Config.SKILL_MASTERY_CHANCE_MULTIPLIERS.getOrDefault(actor.getActingPlayer().getClassId(), 1f)));
}
/**

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1328,7 +1328,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1340,7 +1340,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -92,7 +92,7 @@
<item>BLUNT</item>
</weaponType>
</effect>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="Accuracy">

View File

@ -192,7 +192,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -476,13 +476,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -378,7 +378,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

View File

@ -149,7 +149,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -2300,7 +2300,7 @@
<value level="3">85</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="StatUp">

View File

@ -1139,6 +1139,7 @@ public class Config
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> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
public static boolean MULTILANG_ENABLE;
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
public static String MULTILANG_DEFAULT;
@ -3030,6 +3031,20 @@ public class Config
}
}
}
final String[] skillMasteryChanceMultipliers = ClassBalance.getString("SkillMasteryChanceMultipliers", "").trim().split(";");
SKILL_MASTERY_CHANCE_MULTIPLIERS.clear();
if (skillMasteryChanceMultipliers.length > 0)
{
for (String info : skillMasteryChanceMultipliers)
{
final String[] classInfo = info.trim().split("[*]");
if (classInfo.length == 2)
{
final String id = classInfo[0].trim();
SKILL_MASTERY_CHANCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
}
}
}
// Load CommunityBoard config file (if exists)
final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE);

View File

@ -960,7 +960,7 @@ public class Formulas
final double chance = BaseStats.values()[val].calcBonus(actor) * actor.getStat().getValue(Stats.SKILL_CRITICAL_PROBABILITY, 1);
return ((Rnd.nextDouble() * 100.) < chance);
return ((Rnd.nextDouble() * 100.) < (chance * Config.SKILL_MASTERY_CHANCE_MULTIPLIERS.getOrDefault(actor.getActingPlayer().getClassId(), 1f)));
}
/**

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1336,7 +1336,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1348,7 +1348,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -92,7 +92,7 @@
<item>BLUNT</item>
</weaponType>
</effect>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="Accuracy">

View File

@ -192,7 +192,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -500,13 +500,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -382,7 +382,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

View File

@ -149,7 +149,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -2370,7 +2370,7 @@
<value level="3">85</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="StatUp">

View File

@ -1161,6 +1161,7 @@ public class Config
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> PLAYER_HEALING_SKILL_MULTIPLIERS = new ConcurrentHashMap<>();
public static Map<ClassId, Float> SKILL_MASTERY_CHANCE_MULTIPLIERS = new ConcurrentHashMap<>();
public static boolean MULTILANG_ENABLE;
public static List<String> MULTILANG_ALLOWED = new ArrayList<>();
public static String MULTILANG_DEFAULT;
@ -3073,6 +3074,20 @@ public class Config
}
}
}
final String[] skillMasteryChanceMultipliers = ClassBalance.getString("SkillMasteryChanceMultipliers", "").trim().split(";");
SKILL_MASTERY_CHANCE_MULTIPLIERS.clear();
if (skillMasteryChanceMultipliers.length > 0)
{
for (String info : skillMasteryChanceMultipliers)
{
final String[] classInfo = info.trim().split("[*]");
if (classInfo.length == 2)
{
final String id = classInfo[0].trim();
SKILL_MASTERY_CHANCE_MULTIPLIERS.put(Util.isDigit(id) ? ClassId.getClassId(Integer.parseInt(id)) : Enum.valueOf(ClassId.class, id), Float.parseFloat(classInfo[1].trim()));
}
}
}
// Load CommunityBoard config file (if exists)
final PropertiesParser CommunityBoard = new PropertiesParser(CUSTOM_COMMUNITY_BOARD_CONFIG_FILE);

View File

@ -960,7 +960,7 @@ public class Formulas
final double chance = BaseStats.values()[val].calcBonus(actor) * actor.getStat().getValue(Stats.SKILL_CRITICAL_PROBABILITY, 1);
return ((Rnd.nextDouble() * 100.) < chance);
return ((Rnd.nextDouble() * 100.) < (chance * Config.SKILL_MASTERY_CHANCE_MULTIPLIERS.getOrDefault(actor.getActingPlayer().getClassId(), 1f)));
}
/**

View File

@ -47,3 +47,5 @@ PveBlowSkillDefenceMultipliers =
PvpBlowSkillDefenceMultipliers =
PlayerHealingSkillMultipliers =
SkillMasteryChanceMultipliers =

View File

@ -1336,7 +1336,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
</effects>
@ -1348,7 +1348,7 @@
<operateType>P</operateType>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
</effects>

View File

@ -92,7 +92,7 @@
<item>BLUNT</item>
</weaponType>
</effect>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="Accuracy">

View File

@ -194,7 +194,7 @@
<value level="10">110</value>
</magicLvl>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -45,7 +45,7 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="PAtk">

View File

@ -500,13 +500,8 @@
</magicLvl>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
<weaponType>
<item>BOW</item>
<item>CROSSBOW</item>
<item>TWOHANDCROSSBOW</item>
</weaponType>
</effect>
<effect name="PAtk">
<amount>10</amount>

View File

@ -53,7 +53,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="MAtk">

View File

@ -382,7 +382,7 @@
<magicCriticalRate>5</magicCriticalRate>
<operateType>P</operateType>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>INT</stat>
</effect>
<effect name="PAtk">

View File

@ -47,7 +47,7 @@
</magicLvl>
<magicCriticalRate>5</magicCriticalRate>
<effects>
<effect name="StatBonusSkillCritical">
<effect name="SkillCritical">
<stat>STR</stat>
</effect>
<effect name="TriggerSkillByAttack">

Some files were not shown because too many files have changed in this diff Show More